Wie können wir helfen?
Auslesen des Spulenstatus 0x (FC=01) in Modbus RTU mit HMI
Dieses Tutorial behandelt nur die Modbus-Master-Funktion des HMI FC01. Es handelt sich dabei um eine spezielle Funktion für Sonderfälle und Experten.
Funktionscode Read Coil Status 0x (FC=01) im Modbus der HMI
Standardmäßig liest der Funktionscode Read Coil Status 0x (FC=01) im Modbus der HMI das Bitregister in Bytes.
Das bedeutet, dass die HMI, um das Bit in Register 34 zu lesen, eine Anfrage „Read Coil Status FC01“ sendet, um Register 32 (INT(34/8)*8) mit einer Länge von 8 Bit (d. h. die Bits 32 bis 40) zu lesen. Anschließend ruft er das Bit 34 ab.
Um also die Bits 33, 34, 35 und 36 desselben Bildschirms zu lesen, wird er eine einzige Anfrage senden (Register 32 Länge 8)
Einige Geräte unterstützen diese Art des Lesens jedoch nicht.
Nur die angeforderten Bits lesen, nicht byteweise
Im Bild rechts können wir sehen, dass wir das Register 34 der Spule nur für die Länge 1 auslesen.
- Kopieren Sie diese beiden Dateien (modbus_rtu_master.dll und modbus_rtu_master.so) in ihre jeweiligen Verzeichnisse, in denen sich die HMI-Tool-Software befindet (C:\Program Files (x86)\NHMITool7.0)

- Fügen Sie dieses Makro in „Init Script“ ein.
#include "MacroInit.h"
void Macro_main(IN *p)
{
MarcoInit
//ToDo
//RemoveHMIError = 0;// Für den richtigen "ReadCoilStatus FC=01": Fügen Sie die Dateien modbus_rtu_master.dll und modbus_rtu_master.so hinzu
LocalWord[50100]=1; // Auf 1 setzen, um einen "ReadCoilStatus FC=01" zu erhalten, der nach Bit und nicht nach Byte liest
}
- Stellen Sie sicher, dass sich die Symbole (Bit Lamp,…) für die Bits, die Sie lesen wollen, auf einem anderen Bildschirm als dem Startbildschirm befinden (es muss ein Bildschirmwechsel stattfinden, damit dies wirksam wird)
- Laden Sie das Projekt und testen Sie es!