Come possiamo aiutarti?
Lettura dello stato della bobina 0x (FC=01) in Modbus RTU con HMI
Questa esercitazione riguarda solo la funzione di master Modbus dell’interfaccia HMI FC01. Si tratta di una funzione speciale per casi particolari ed esperti.
Codice funzione Lettura stato bobina 0x (FC=01) nell’HMI Modbus
Per impostazione predefinita, il codice funzione Read Coil Status 0x (FC=01) nell’HMI Modbus legge il registro dei bit in byte.
Ciò significa che per leggere il bit nel registro 34, l’HMI invierà una richiesta “Read Coil Status FC01” per leggere il registro 32 (INT(34/8)*8) con una lunghezza di 8 bit (cioè i bit da 32 a 40). Quindi recupera il bit 34.
Quindi, per leggere i bit 33, 34, 35 e 36 della stessa schermata, invierà un’unica richiesta (registro 32 lunghezza 8)
Tuttavia, alcuni dispositivi non supportano questo tipo di lettura.
Leggere solo i bit richiesti, non i byte
Nell’immagine a destra, si può notare che stiamo leggendo il registro 34 dalla bobina solo per la lunghezza 1.
- Copiare questi 2 file (modbus_rtu_master.dll e modbus_rtu_master.so) nelle rispettive directory in cui si trova il software HMI-Tool (C:\NProgram Files (x86)\NHMITool7.0)
- Aggiungere questa macro a “Init Script”.
#include "MacroInit.h"
void Macro_main(IN *p)
{
MarcoInit
//Offrire
//RemoveHMIError = 0;// Per il corretto "ReadCoilStatus FC=01": aggiungere i file modbus_rtu_master.dll e modbus_rtu_master.so
LocalWord[50100]=1; // Impostare a 1 per avere un "ReadCoilStatus FC=01" che legge per bit e non per byte
}
- Assicuratevi che i simboli (Bit Lamp,…) per i bit che volete leggere siano in una schermata diversa da quella di avvio (deve esserci un cambio di schermata perché questo abbia effetto)
- Caricare il progetto e testarlo!