Vai al contenuto

Utilizzo variabili BOOL in LogicLab e HMI Weintek

Home Forum Informazioni ambiente di sviluppo LogicLab Utilizzo variabili BOOL in LogicLab e HMI Weintek

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #84801
    Flavio Battagini
    Partecipante

    Sono 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?

    #84806
    Sergio Bertana
    Amministratore del forum

    Iniziamo 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.

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.