Lettura variabili di tipo REAL da PLC SlimLine
Home › Forum › Terminali operatore (Weintek) › Lettura variabili di tipo REAL da PLC SlimLine
- Questo topic ha 7 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 4 anni, 6 mesi fa da
Sergio Bertana.
-
AutorePost
-
Marzo 11, 2013 alle 8:25 am #35336
Paolo
PartecipanteBuongiorno, sono nuovo del mondo dei PLC. Sto realizzando un sistema di controllo temperatura, gestione pompe di calore e allarmi con un PLC SlimLine ARM7 full RS485, modulo espansione analogico 10 ingressi, modulo espansione con uscite a relè e terminale MT6050i.
Sul PLC eseguo la lettura delle temperature tramite gli appositi blocchi funzione ed in uscita ho già il valore in gradi centigradi con quattro cifre dopo il punto. A ciascun valore di temperatura assegno una variabile mappata ad esempio TEMP1 %MD100.16. Sul programma del terminale inserisco una finestra di visualizzazione numerica e punto alla variabile X3 40008 ma visualizzo solo asterischi.
Le domande sono due: Come posso approssimare la temperatura ad una sola cifra dopo il punto ? Perché non riesco a leggere le temperature ? Ho il dubbio che ci siano degli errori nella assegnazione del tipo di variabili oppure è un limite del bus ? La connessione utilizzata tra PLC e HMI é RS232.
Marzo 11, 2013 alle 11:20 am #37590Sergio Bertana
Amministratore del forumIl terminale Weintek può acquisire anche le variabili REAL dal PLC senza alcun problema, il formato delle variabili REAL sia sul pannello che sui sistemi SlimLine segue lo standard IEEE 754-1985 in singola precisione a 32 bit (Vedi post). La rappresentazione in memoria sui sistemi SlilLine è in Little-Endian ed è direttamente acquisita dal terminale.
Il fatto che leggi asterischi è perchè il valore della variabile è fuori dal range di visualizzazione dell’oggetto, probabilmente non hai settato correttamente il formato numerico della variabile. Essendo una variabile a virgola mobile devi definire il tipo 32-bit Float (Screenshot). Come vedi nella stessa finestra di impostazione puoi definire anche il numero di cifre intere e decimali che deve avere il numero visualizzato.
Ho realizzato un piccolo progetto (PLC e terminale) che esegue l’acquisizione di un valore analogico 0-10 Volt e lo visualizza sul terminale (Download progetto). Nel progetto la variabile REAL è allocata alo stesso indirizzo MD 100.16 che tu hai citato e quindi l’indirizzo da definire sul pannello è 40008.
Ricordo che le variabili REAL vanno sempre allocate in memoria ad indirizzi divisibili per 4, quindi MD 100.16, MD 100.20, MD 100.24, ecc.
Aprile 21, 2020 alle 1:03 pm #54773Fabio Romani
PartecipanteAvrei bisogno di un esempio per visualizzare un valore analogico 0-10 sul terminale weintek MT8051iP da un PLC SimLine settato con indirizzo auto e possibile dichiarare la variabile REAL lasciando l’indirizzo su auto?
Aprile 21, 2020 alle 1:13 pm #54776Sergio Bertana
Amministratore del forumL’esempio del post precedente al tuo fà già esattamente quello che hai chiesto.
Per poter visulizzare variabili sul pannello HMI devi dichiarare la variabili globale mappandola nella DB100 all’indirizzo che preferisci.
Ricorda che le variabili a 2 bytes INT, UINT, WORD devono sempre essere allocate ad indirizzi divisibili per 2 (Esempio DB100.2, DB100.8, DB100.100, ecc…).
Le variabili a 4 bytes DINT, UDINT, DWORD devono sempre essere allocate ad indirizzi divisibili per 4 (Esempio DB100.4, DB100.8, DB100.256, ecc…).
Sul terminale HMI devi indirizzare la variabile usando l’indirizzo di allocazione diviso per 2 sommato a 40000. Se ad esempio la variabile è allocata a DB100.256 sul terminale dovrai indicare indirizzo 40128.
Guarda questo topic dove trovi un esempio di progetto PLC e HMI.
Maggio 5, 2020 alle 2:31 pm #54956Edi
PartecipanteVolevo un informazione su una prova che sto facendo, ovvero: vorrei visualizzare il valore di un potenziometro collegato sull’ingresso analogico A00 del modulo di espansione dello SlimLine MPS046B sul programma EasyBuilderPro.
Sul programma SlimLine nelle variabili globali ho messo MD 100.16 come valore REAL, mentre su EasyBuilderPro ho messo un oggetto numerico con indirizzo 3x 40008.
Quando avvio la simulazione, sul software dello SlimLine si vede chiaramente la variazione di tensione in modalità “watch”, invece su EasyBuilderPro rimane fisso sullo 0.00 eppure non mi esce il messaggio “PLC no response” quindi credo che i due dispositivi comunichino.
Maggio 5, 2020 alle 2:36 pm #54964Sergio Bertana
Amministratore del forumMa hai provato il progetto che trovi qualche post prima del tuo, fà esattamente quello che cerchi di fare tu.
Dove è l’errore… quello che hai scritto mi sembra tutto corretto ma i dubbi sono:
Che tipo di protocollo hai impostato, perchè se usi lo ZeroAddressing hai un errore sull’offset.
Hai mica modificato l’endianness di lettura, le variabili REAL usano 2 words e quindi è importante avere l’endianness corretto. Si imposta nella definizione del protocollo. Ti consiglio di provare prima con una variabile UINT che essendo a 16 bits non ha problemi di endianness.
Nella definizione della variabile sul pannello hai definito che è una variabile float ed hai definito il suo range di valori.
Ottobre 21, 2020 alle 10:15 am #58007Marcooo
PartecipanteNell’utilizzare Easybuilder Pro sto riscontrando alcuni problemi. Compilo il progetto, lo scarico su HMI e nel visualizzarlo, continua a comparirmi la scritta “Device no response”.
Penso che il problema sia dovuto all’ oggetto numerico, perché ho due pagine, in una ci sono solo pulsanti e funziona, se invece passo all’altra pagina, dedicata alla visualizzazione di temperature, mi compare la scritta. Gli oggetti numerici vanno indirizzati RW o LW?
C’è un blocco dedicato solo alla lettura di numeri ?
Ottobre 21, 2020 alle 10:25 am #58013Sergio Bertana
Amministratore del forumMi parli di RW ed LW, ma questi sono i riferimenti alle variabili interne al pannello, quando leggi variabili dal PLC devi fare riferimento alla sintassi del PLC che stai utilizzando.
Se usi un nostro sistema SlimLine con protocollo Elsist modbus per le variabili numeriche devi utilizzare il tipo MW se variabili a 16 bits o MDW se variabili a 32 bits (Screenshot). Il protocollo Modbus agisce sulle variabili allocate nella DB100 e come indirizzo devi usare l’indirizzo di allocazione diviso per 2 cui sommi 40000.
Poi cosa intendi per blocco dedicato solo alla lettura di numeri, l’oggetto Numeric fà proprio questo.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.