READ_VAR: lettura di dati da un dispositivo Modbus
Il blocco funzionale READ_VAR legge i dati da un dispositivo esterno nel protocollo Modbus.
READ_VAR - Descrizione specifica del parametro
Ingresso |
Tipo |
Commento |
---|---|---|
ObjType |
ObjectType |
ObjType è il tipo di oggetto da leggere (MW, I, IW, Q). |
FirstObj |
DINT |
FirstObj è l'indice del primo oggetto da leggere. |
Quantity |
UINT |
Quantity è il numero di oggetti da leggere: o1...125: registri (tipi MW e IW) o1...2000: bit (tipi I e Q) |
Buffer |
POINTER TO BYTE |
Indirizzo del puntatore all'array che contiene i dati ricevuti che sono stati letti dal dispositivo di destinazione. L'array deve essere uguale o maggiore dei dati che devono essere letti. Ad esempio, la lettura di 4 registri richiede un array di 4 parole e la lettura di 32 bit richiede un array di 2 parole o 4 byte, nei quali ciascun bit è impostato sul valore corrispondente del dispositivo remoto. È necessario utilizzare la funzione ADR per passare l'indirizzo del primo byte dell'array (vedere il grafico CFC nell'esempio). |
NOTA: Per evitare la violazione di accesso alla memoria causata da un accesso puntatore non valido (fuori limiti), occorre accertarsi che la dimensione dell'array collegato all'ingresso Buffer sia uguale o superiore ai dati che verranno ricevuti dal dispositivo di destinazione. È buona prassi collegare la Quantity di dati definita da leggere nella dichiarazione del buffer come spiegato nel seguente esempio.
Questo esempio mostra l'implementazione del blocco funzione READ_VAR in combinazione con il blocco funzione ADDM per leggere due registri a partire dall'indirizzo 1 di uno slave Modbus. Lo slave Modbus è specificato con indirizzo 8 e deve essere accessibile tramite l'interfaccia seriale 1. Un presupposto è che Modbus Manager sia configurato come master nell'interfaccia di linea seriale 1.
Questa figura mostra la dichiarazione e l'utilizzo della funzione READ_VAR: