Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1,111 a 1,125 (di 4,309 totali)
  • Autore
    Post
  • in risposta a: Supporto a mouse esterno USB #58902
    Sergio Bertana
    Amministratore del forum

    Il mouse USB è supportato da tutti i terminali.

    Utilizzando im mouse è possibile muovere il cursore sullo schermo ed agendo sul pulsante del mouse effettuare il click sull’oggetto puntato proprio come toccandolo sullo schermo con il dito.

    in risposta a: Comunicazione Modbus RTU con Energy meter SDM120 #58898
    Sergio Bertana
    Amministratore del forum

    Un pò di ordine tra le idee… e una occhiata a questo post potrebbe essere utile.

    I dati in lettura e scrittura sul meter sono sempre in float 32 bit IEE754, che in IEC61131 si identificano con il formato REAL. Quindi con la funzione VarSwap non fai nessuna conversione. Usi questa funzione perchè essendo il valore espresso su 32 bits si utilizzano 2 registri Modbus per la lettura/scrittura e siccome il protocollo Modbus non specifica l’endiannes sui valori multiregistro ognuno fà come vuole.

    La funzione VarSwap sistema proprio l’endiannes dei dati quindi puoi usarla sia per convertire i dati in lettura che quelli in scrittura. Quindi per scrivere un valore sul meter appoggi il dato REAL nel buffer del FB ModbusMaster (Che definirei di tipo DWORD) utilizzando la funzione VarSwap.

    in risposta a: Definizione valore NaN su variabili REAL #58891
    Sergio Bertana
    Amministratore del forum

    Si passa per un puntatore per “fregare” il compilatore, se assegnassi il valore 16#7F8FFFFF (Decimale 2.140.143.615) ad una variabile REAL essa assumerebbe il valore 16#4EFF2000 (Come puoi verificare con un convertitore come questo).

    Per poter impostare un valore esadecimale devo avere una variabile di tipo DWORD, nel linguaggio ST non c’è il costrutto UNION che permette di unire variabili di tipo diverso, quindi l’unico escamotage che ho trovato è utilizzare un puntatore.

    Ma magari nel forum c’è qualcuno che ha una idea migliore.

    in risposta a: Acquisire SDM120 in Modbus da PC con Toolly #58888
    Sergio Bertana
    Amministratore del forum

    Come vedi nello screenshot devi configurare un nuovo dispositivo MODBUS RTU (Hex Addressing), configurato sulla porta seriale RS485 con i parametri di comunicazione 2400, n, 8, 1 e nodo Modbus 1.

    Siccome devi gestire variabili REAL a 32 bits devi sincronizzare l’endiannes sull’acquisizione, attiva con il tasto Data Conversion e metti il tick sulla voce corrispondente.

    Ora puoi nella finestra del terminale inserire un oggetto di visualizzazione numerica, definendo l’origine dei dati da protocollo Modbus indicando il modo 3x_Double con indirizzo 0. E nel formato dati il formato 32-bit Float.

    in risposta a: Acquisire SDM120 in Modbus da PC con Toolly #58883
    Sergio Bertana
    Amministratore del forum

    Ho ricreato la prova in laboratorio, vediamo intanto le connessioni Modbus:

    • Il segnale RS485- và collegato con il morsetto 9 dello strumento
    • Il segnale RS485+ và collegato con il morsetto 10 dello strumento
    • I parametri di comunicazione di default sono 2400, n, 8, 1

    Utilizzando Toolly menù Utilities -> Modbus master, ecco come si presenta la prova (Screenshot). Come si vede ho eseguito la lettura con il comando 04 Read Input Registers di 2 registri partendo da indirizzo 0 (Ricordo che Modbus ha offset 1 ecco spiegata la discordanza tra il manuale SDM120 che cita indirizzo 1).

    Tutti i dati letti dallo strumento sono espressi in float IEE754 a 32 bit, il valore letto è quindi 0x4368333 che in decimale (Puoi utilizzare un convertitore on-line come questo) equivale a 232.199 Volts.

    in risposta a: Simulazione programma dimostrativo pagine web #58879
    Sergio Bertana
    Amministratore del forum

    Il PTP128 è un vecchio dimostrativo, per prendere pratica con le pagine web ti rimando a questo articolo dove puoi eseguire il download di alcuni esempi.

    Ricordo che il simulatore su PC permette di eseguire programmi logici e matematici, non è gestito dal simulatore tutto quello che riguarda la comunicazione sia seriale che TCP.

    Inoltre il simulatore non ha un server HTTP attivo, quindi per provare le pagine web devi necessariamente utilizzare un modulo CPU SlimLine.

    in risposta a: Definizione valore NaN su variabili REAL #58874
    Sergio Bertana
    Amministratore del forum

    La definizione NaN è un acronimo che indica “Not A Number”. I valore NAN per una variabile REAL in formato IEE754 è un valore che ha tutti gli 8 bit di esponente a “1” e la mantissa diversa da “0”, il segno non importa.

    Quindi se lo rappresentiamo in esadecimale sarà un numero del tipo 16#7F8FFFFF, ma qualsiasi altro numero che mantenga tutti gli 8 bit di esponente a “1” e la mantissa diversa da “0” verrà indicato cone un NaN. Risulta quindi evidente che non c’è un numero univoco per rappresentare il NaN, se vuoi settare una variabile a NaN puoi utilizzare una definizione del tipo:

    VAR
        APtr : @DWORD;
        RVars : ARRAY[0..3] OF REAL;
    END_VAR
    
        // Definizione valori REAL in esadecimale. Vedi sito:
        // https://www.binaryconvert.com/convert_float.html
    
        APtr:=ADR(RVars[0]);
        @APtr:=16#41280000; //10.5
    
        APtr:=ADR(RVars[1]);
        @APtr:=16#42C80000; //100.0
    
        APtr:=ADR(RVars[2]);
        @APtr:=16#7F8FFFFF; //NaN (Not a number)
    
        APtr:=ADR(RVars[3]);
        @APtr:=16#7F800001; //NaN (Not a number)

    Come vedi dall’esempio sia il valore 16#7F8FFFFF che 16#7F800001 sono riconosciuti come NaN. Da quanto espresso si deduce che non è possibile fare comparazioni sul valore NaN, e certamente potrebbero servire due cose:

    • Una definizione di NaN per settare il valore in una variabile.
    • Una funzione di verifica se un numero REAL e NAN. La funzione deve verificare se il numero ha gli 8 bit di esponente a “1” e la mantissa diversa da “0”.
    in risposta a: Collegamento termoresistenze Pt100/Pt1000 #58869
    Sergio Bertana
    Amministratore del forum

    La lettura delle termoresistenze viene effettuata con una corrente (Generata da IExc) di 200uA, che su una resistenza da 100 Ohm danno una tensione di 20mV. La corrente è mantenuta così bassa per non riscaldare l’elemento resistivo, ma è evidente che eseguendo la lettura di valori di tensionre dell’ordine di mV è molto facile acquisisre anche i disturbi a 50Hz captati dai cavi.

    Il firmware della scheda acquisisce gli ingressi alla massima velocità possibile quindi può succedere che lasciando gli ingressi “appesi” vengano acquisiti anche i disturbi.

    Come suggerimento posso dirti di controllare l’uscita di Fault e utilizzando un timer considerare il valore acquisito corretto solo se l’uscita è disattiva per un tempo.

    in risposta a: Allocazione in memoria delle variabili strutturate #58864
    Sergio Bertana
    Amministratore del forum

    Il problema è dovuto ad un errore nella libreria eLLabXTargetAdjLib, è errata la definizione di eNULL, ho provveduto a creare la nuova versione di libreria si può scaricare dal sito.

    in risposta a: HMI Master collegato a rete di HMI slave #58856
    Sergio Bertana
    Amministratore del forum

    Si puoi farlo e sul pannello cMT puoi aggiungere i pannelli MT80(5/7)1IP quindi il PLC come remoto cosi da poter prelevare direttamente i dati con le nomenclature del PLC e poi passarli in OPC UA.

    in risposta a: Utilizzo protocollo DMX, errore in compilazione #58852
    Sergio Bertana
    Amministratore del forum

    Mi cospargo il capo di cenere…

    Ho commesso un errore nella copia dell’esempio, mi sono dimenticato di definire il file pointer (Stream di comunicazione) che deve utilizzare il FB SysDMXMng. Ho corretto l’esempio, in pratica sulla chiamata del FB devi definire il file pointer.

    FBDMX(File:=Sp.File); //DMX manager
    in risposta a: Gestire un controllo motore NTT460 #58849
    Sergio Bertana
    Amministratore del forum

    Se utilizzi Modbus RTU puoi utilizzare un MPS054, comunicando a 57600 puoi trasferire oltre 5000 caratteri al secondo. Quindi il tempo di rinfresco dei dati dipenderà da quanti caratteri devi trasmettere per la richiesta e ricevere per la risposta Modbus.

    Se invece vuoi utilizzare CANOpen devi utilizzare un modulo MPS055 dove puoi configurare i PDU da ricevere e probabilmente sei più veloce rispetto al Modbus ma è un po più complesso da configurare.

    in risposta a: Utilizzo protocollo DMX, errore in compilazione #58838
    Sergio Bertana
    Amministratore del forum

    L’errore che riporti indica che non viene trovato il FB SysDMXMng che è un FB di sistema quindi sicuramente presente.

    Nel frattempo ho riportato nel manuale on-line la spiegazione del FB SysDMXMng, ti consiglio di  provare ad utilizzare l’esempio riportato nella pagina.

    in risposta a: Allocazione in memoria delle variabili strutturate #58824
    Sergio Bertana
    Amministratore del forum

    C’è stata una versione di LogicLab che aveva questo problema ma sull’ultima versione scaricabile dal nostro sito il problema dovrebbe essere risolto. Io ho provato con questa versione e non ho riscontrato il problema, la mia versione è:

    Version: 3.1.1.0
    Build Jul 10 2020 17:0007 – 5.12.0.36

    Puoi verficare la versione che stai utilizzando?

    in risposta a: Realizzare una comunicazione TCP/IP con protocollo libero #58813
    Sergio Bertana
    Amministratore del forum

    Puoi provare a creare 2 macro per inviare 2000 caratteri per volta che richiamerai in modalita sincrona dalla tua macro. Credo che il tutto possa funzionare senza troppe latenze.

    SYNC_TRIG_MACRO: Triggers the execution of a macro synchronously in a running macro. The current macro will pause until the end of execution of this called macro.

Stai visualizzando 15 post - dal 1,111 a 1,125 (di 4,309 totali)