Utilizzo variabili BOOL in LogicLab e HMI Weintek
Home › Forum › Informazioni ambiente di sviluppo LogicLab › Utilizzo variabili BOOL in LogicLab e HMI Weintek
- Questo topic ha 1 risposta, 2 partecipanti ed è stato aggiornato l'ultima volta 15 ore, 28 minuti fa da
Sergio Bertana.
-
AutorePost
-
Marzo 9, 2026 alle 1:44 pm #84801
Flavio Battagini
PartecipanteSono programmatore di PLC da lunga data, ma solo ora sto muovendo i primi passi con Elsist. Sto sviluppando il mio primo piccolo progetto con PLC serie SlimLine (LogicLab) e HMI Weintek.
Lo scambio dati con Weintek è tramite DB100 e protocollo Modbus (TCP nel mio caso). Come mappare la corrispondenza delle variabili in DB100 con i registri Modbus del Weintek mi è chiaro. Non mi è chiaro invece l’utilizzo delle variabili booleane.
Nel PLC potrei assegnare a variabili booleane indirizzi tipo: %MX100.16.0, %MX100.16.1, e via di seguito. E HMI può accedere ai singoli bit. Provato, e funziona.
Nei progetti di esempio di Elsist però, vedo sempre che anche per variabili booleane si utilizza l’intera DWord, e le variabili booleane vengono mappate come %MX100.16, %MX100.17, e via di seguito. Qual è il motivo di questa scelta?
Inoltre, perché, sempre negli esempi, non vengono mai utilizzati indirizzi inferiori a %MX100.16?
Marzo 9, 2026 alle 4:21 pm #84806Sergio Bertana
Amministratore del forumIniziamo con il dire che le uniche variabili accessibili dal terminale HMI con il protocollo Modbus sono quelle allocate nella DB100.
Storicamente nell’ambiente di sviluppo LogicLab non era permessa la definizione dei bit di una variabile come non era possibile accedervi da programma ed è questa la ragione percui in tutti gli esempi le variabili booleane sono definite di tipo BOOL ed occupano un byte di memoria.
Per acquisire le variabili BOOL il pannello utilizza i comandi Modbus 16#01 Read coil status, 16#02 Read input status, leggendo più stati booleani al minimo 16 consecutivi, il pannello ottimizza l’indirizzamento puntando a cavallo dell’indirizzo reale da leggere. Quindi se si definisce una variabile BOOL ad indirizzi compresi tra 100.0 e 100.7 il pannello invierebbe un comando di lettura di 16 BOOL con indirizzo inferiore a 100.0 e lo SlimLine risponderebbe con un errore di indirizzo. Quindi per correggere questa anomalia nella gestione del protocollo da parte di Weintek tutte le variabili BOOL sono allocate a partire da 100.16.
Per facilitare la connessione dei pannelli al programma LogicLab abbiamo realizzato il tool Symbols converter che permette di esportare le variabili mnemoniche globali (Tags) in un file formato csv che potrà essere importato dall’ambiente di sviluppo dell’HMI collegandole ai relativi simboli grafici.
Volendo utilizzare l’assegnazione a bit occorerà definire nelle variabili globali variabili di tipo MW in DB100 assegnando ad ogni bit della word il relativo valore mnemonico. Queste variabili con al Symbol converter potranno essere poi importate nel pannello che vi accederà con l’operando MW_Bit. Ecco la definizione di alcuni bit in due variabili WORD consecutive.
VAR_GLOBAL W16_Bit00 AT %MW100.16.0 : BOOL; (* Dummy text *) W16_Bit01 AT %MW100.16.1 : BOOL; (* Dummy text *) W16_Bit15 AT %MW100.16.15 : BOOL; (* Dummy text *) W18_Bit00 AT %MW100.18.0 : BOOL; (* Dummy text *) W18_Bit15 AT %MW100.18.15 : BOOL; (* Dummy text *) END_VAR
Ed ecco come saranno esportate nel file di TAGs.csv per il pannello Weintek
W16_Bit15,SlimLine,%MW_Bit,4000815,Dummy text,Bit W16_Bit00,SlimLine,%MW_Bit,4000800,Dummy text,Bit W16_Bit01,SlimLine,%MW_Bit,4000801,Dummy text,Bit W18_Bit15,SlimLine,%MW_Bit,4000915,Dummy text,Bit W18_Bit00,SlimLine,%MW_Bit,4000900,Dummy text,Bit
Come si vede l’indirizzamento delle WORD nel programma LogicLab è a multiplo di 2 mentre nel pannello si definisce l’indirizzo LogicLab diviso per 2 a cui si somma l’offset 40000.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.