Utilizzando il blocco funzione ModbusAscii di cui allego estratto manuale, è possibile inserire nel programma un gestore di protocollo modbus personalizzato. In pratica il blocco funzione permette di definire su che area di memoria opera il comando modbus, definendone la posizione di allocazione e la dimensione in bytes.
E’ anche possibile definire oltre all’indirizzo di nodo anche l’offset di indirizzamento modbus, questo permette di personalizzare anche la gestione del protocollo. Il blocco funzione può essere connesso a qualsiasi stream di I/O, quindi sia una porta seriale che un socket TCP/IP.
Siccome il FB gestisce sia i comandi modbus di lettura che di scrittura, se si desidera che alcune variabili dell’area accessibile siano in sola lettura, occorrerà provvedere da programma utente a copiare su queste variabili il valore reale trasferendolo dalle variabili realmente utilizzate nel programma.
Ho realizzato un semplice progetto in cui è attivato il protocollo modbus over IP sulla porta 2000, l’indirizzo di nodo è 1 ed è possibile accedere ad un array di dati di 32 registri WORD. Stampa programma e download programma sorgente.