Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1,351 a 1,365 (di 4,482 totali)
  • Autore
    Post
  • in risposta a: Acquisizione encoder #58310
    Sergio Bertana
    Amministratore del forum

    Se utilizzi il counter hardware non occorre campionare velocemente gli ingressi digitali ci pensa il circuito hardware a gestire il conteggio. Come dici tu la necessità di campionare velocemente gli ingressi digitali serve solo nel caso utilizzi un conteggio software o l’FB IOEncoder di acquisizione encoder su I/O.

    La quadratura encoder è una feature implementata nel core Cortex M7 ma che al momento non è ancora gestita dal nostro sistema.

    in risposta a: Acquisizione encoder #58279
    Sergio Bertana
    Amministratore del forum

    Attualmente non è ancora gestita l’acquisizione encoder sul modulo CPU CortexM7.

    Certo puoi utilizzare un ingresso di counter per acquisisre uno dei canali dell’encoder ed eseguirne il conteggio. Se usi il counter del modulo CPU potrai acquisire segnali fino ad un massimo di 10kHz, ma attenzione utilizzando un solo ingresso senza la quadratura quando l’encoder si arresta a cavallo della tacca rischi di avere un conteggio anche se in trealtà l’encoder è fermo.

    in risposta a: Conversione numeri esadecimali in stringa #58274
    Sergio Bertana
    Amministratore del forum

    Per la conversione di numeri in stringa si utilizzano le funzioni SysVsnprintf e SysCVsnprintf, in base alla definizione impostata nel segnaposto avrai una stringa con il valore decimale o esadecimale.

    Ti ho preparato un esempio (Screenshot) dove ci sono due tipi di soluzione al tuo problema, nel primo caso stampo i 4 bytes accodando il risultato della stampa in una stringa.

    Nel secondo caso ho creato una variabili DWORD con  il valore dei 4 bytes e poi ne ho effettuato la stampa.

    in risposta a: Modificare il tempo di loop di una task #58268
    Sergio Bertana
    Amministratore del forum

    Anche sui sistemi ARM è possibile impostare il tempo di loop della task Fast a 100uS, naturalmente devi controllare che ad eseguire il codice non venga impiegato un tempo molto vicino (Se non addirittura superiore) al tempo di loop, variabile SysTFastExTm.

    Se è molto vicino non viene lasciato al processore molto tempo per eseguire la task Slow e la Back i cui tempi di esecuzione si allungheranno di conseguenza. Se è superiore si perderanno esecuzioni della task ma comunque il programma continuerà ad essere eseguito.

    Nota, Siccome l’accesso ai moduli su bus di estensione richiede tempi dell’ordine dei 200uS nel caso siano eseguiti FB di accesso alle schede periferiche, se il tempo di loop della task Fast è inferiore ai 500uS questi FB sono automaticamente disabilitati, continuano a funzionare solo se agiscono sul modulo CPU, indirizzo di modulo 255.

    in risposta a: Come gestire motori passo/passo con i vostri prodotti #58264
    Sergio Bertana
    Amministratore del forum

    La prima considerazione è che la frequenza massima generabile dall’uscita PWM come puoi leggere nei post precedenti è di 2kHz, quindi devi verificare se soddisfa le tue necessità.

    I moduli CPU Cortex hanno 2 uscite PWM indipendenti, quindi  per gestire più motori devi parallelare su tutti i drivers il clock ed abilitare con una uscita specifica per ogni driver il driver che deve comandare il motore.

    Quindi se nella tua applicazione non hai mai più di 2 motori che si muovono contemporaneamente, o se puoi muovere più motori contemporaneamente con lo stesso segnale di clock direi che è possibile.

    in risposta a: Inversione automatica senso di rotazione motore #58257
    Sergio Bertana
    Amministratore del forum

    Una possibile soluzione è quella di programmare un uscita come funzione overload e collegarla ad un ingresso digitale con funzione jog. Vediamo il funzionamento:

    Al superamento della corrente impostata, si attiva l’uscita che comanda l’ingresso di jog e mantiene lo stato per 20 secondi. Di seguito i parametri:

    P05.02: 5 Ingresso S2 funzione Jog indietro
    P05.17: 20 Tempo mantenimento funzione ingresso S2
    P06.03: 14 Uscita con funzione overload
    P11.09: Soglia di corrente oltre la quale l’inverter va in overload (% riferita agli A nominali motore)
    P11.10: Tempo di tolleranza superamento soglia overload

    in risposta a: Inviare dati JSON in GET o POST ad un servizio REST #58254
    Sergio Bertana
    Amministratore del forum

    Da quello che dici credo tu abbia fatto un copia incolla dell’esempio riportato nel manuale, come vedi quell’esempio utilizza diversi blocchi funzioni:

    FIFOFile_v1;
    RESTClient_v3;
    HTTPClient_v2;
    JSONDecode_v2;
    JSONEncode_v1;

    Quindi una volta eseguito il copia incolla come indicato qui, devi anche importare nel tuo progetto tutti gli oggetti (Funzioni e blocchi funzione) richiesti dalle varie librerie, vedi capitolo Importazione oggetto in questa pagina.

    in risposta a: Gestione riproduzione suoni su eventi #58210
    Sergio Bertana
    Amministratore del forum

    No purtroppo il suono ripetuto continuamente e/o intermittente può solo essere quello del buzzer che è predefinito nel terminale.

    in risposta a: Oggetti sovrapposti tra pagine diverse #58206
    Sergio Bertana
    Amministratore del forum

    Ricordo che la pagina 4 Common Window è visualizzata sempre sotto a ogni altra pagina, quindi se hai messo oggetti in questa pagina saranno visibili anche in qualsiasi altra pagini tu visualizzi.

    Ma non credo sia questo il tuo problema, piuttosto nella pagina dove vedi gli oggetti sovrapposti credo tu abbia definito come Underlay window l’altra pagina (Vedi screenshot).

    in risposta a: Gestire display LCD SainSmart compatibile Arduino #58199
    Sergio Bertana
    Amministratore del forum

    Gli oggetti come la SysGetAnInp sono embedded quindi vanno solo istanziati, mentre per gli altri oggetti li devi importare dalla relativa libreria. A quanto dici tu hai inserito nel progetto l’intera libreria eLLabUtyLib, come soluzione può essere utilizzata ma per le librerie come la eLLabUtyLib è preferibile solo importare gli oggetti che ti servono per non appesantire il programma sorgente con oggetti inutili (Vedi articolo).

    Se la libreria è stata importata correttamente come dici non capisco il problema, per usare le FB occorre istanziarle, cioè creare una variabile di tipo del FB da utilizzare e poi inserire nel programma la variabile creata.

    in risposta a: Utilizzare Toolly per scambio dati tra sockets TCP #58196
    Sergio Bertana
    Amministratore del forum

    La soluzione del problema arriva dalla nostra utility Toolly, grazie alla funzione XConnect è possibile attivare sullo Stream A un server in ascolto sulla porta 10000 e sullo Stream B un client verso la porta 10000 del tuo sistema SlimLine (Screenshot) (Ho scelto la porta 10000 perchè gli esempi utilizzano quella porta ma puoi scegliere qualsiasi porta libera).

    Sullo SlimLine MPS053 dovrai modificare il programma ST_TCPDataExchClient per connettersi alla porta 10000 all’indirizzo IP del PC dove è in esecuzione Toolly. Esegui il programma sullo SlimLine ed attivando lo start della applicazione XConnect la comunicazione potrà avvenire e nella finestra centrale del programma vedrai i dati in scambio tra i sue sistemi (Devi attivare la modalità Hex).

    In pratica Toolly sul tuo PC fungerà da triangolatore dei pacchetti tra le istanze Client e Server del sistema SlimLine. Naturalmente ci sarà una riduzione di prestazioni rispetto al funzionamento reale tra due sistemi SlimLine, nelle mie prove il valore di TxTime della struttura TCPDEXCHNODEDEFS riportava un tempo di 45mS.

    in risposta a: Gestire display LCD SainSmart compatibile Arduino #58194
    Sergio Bertana
    Amministratore del forum

    Scusa ma non ho ben capito cosa non ti funziona… La parte difficile era fare funzionare il display LCD per l’acquisizione analogica è tuto molto semplice devi utilizzare il FB SysGetAnInp definendo l’indirizzo del modulo, il canale di acquisizione sul modulo ed il modo di acquisizione.

    Il FB SysGetAnInp è un FB embedded non devi utilizzare nessuna libreria. Ma siccome mi parli di libreria da caricare mi viene il dubbio che stia facendo qualcosa di diverso da quello che io immagino.

    in risposta a: Gestione shutdown e UPS #58187
    Sergio Bertana
    Amministratore del forum

    Sul sistema Raspberry è utilizzato il file system ext4 che ha il journaling attivo e questo garantisce una buona protezione sulla corruzione dei dati su disco. Ad ulteriore protezione nella formattazione della SDCard abbiamo creato due partizioni, una con il sistema operativo e la partizione data dove sono memorizzati i dati.

    Tutti questi accorgimenti anche se non garantiscono al 100% l’integrità dei dati ai power off improvvisi da prove eseguite con un cliclatore in grado di accendere e spegnere il sistema con tempi random abbiamo rilevato che il sistema continua a funzionare anche dopo svariate migliaia di cicli.

    Stiamo lavorando su una nuova versione di firmware che implementa i comandi di shutdown e reboot gestibili da programma LogicLab. In questo modo è possibile abbinare al sistema un alimentatore UPS e gestire lo shutdown.

    in risposta a: Check comunicazione con protocolli BACnet MSTP #58185
    Sergio Bertana
    Amministratore del forum

    Purtroppo sul protocollo MSTP non esiste un modo per testare lo stato del nodo.

    in risposta a: Libreria per comunicazione tra sistemi su Internet #58182
    Sergio Bertana
    Amministratore del forum

    Ho svelato l’arcano, sui sistemi ARM7 non viene gestito il localhost “127.0.0.1” ecco perchè non riesci a testare il programma su di un unico sistema, cosa invece che è fattibile sui sistemi basati su CortexM7 come l’MPS54 od il nuovo modulo compact MPS056 che sostituisce l’MPS053.

    Per quanto riguarda l’aggiornamento di un sistema basato su ARM7 a XUnified qui trovi le informazioni per eseguire l’upgrade, ho pubblicato la nuova versione del sistema operativo. Conviene fare l’upgrade se ti serve sfruttare le nuove caratteristiche.

Stai visualizzando 15 post - dal 1,351 a 1,365 (di 4,482 totali)