Ich versuche Daten von GE-PQM II Energiezähler zu lesen. Energiezähler unterstützt Echtzeitüberwachung über 2-Draht-RS-485-MODBUS-Verbindung. Ich benutze die Bibliothek libmodbus in c, um Modbus-Register zu lesen.Modbus Hex Adresse Konvertierung
Im GE-Kommunikationshandbuch (https://www.ccontrols.com/support/dp/GEK-113532.pdf) wird die Adresse des Registers in hexadezimal angegeben. Ich habe Hexadezimal in Dezimal konvertiert.
Ich versuche, Werte von Modbusregister (02F0,02F1) zu lesen - entsprechenden Dezimalwerte 752.753 sind
Mein Code:
rc = modbus_read_registers(ctx, 752, 753, clock);
Ausgang:
ERROR Too many registers requested (753 > 125)
Too many data
Alles falsch in Hex-Konvertierung? Oder irgendwo anders?
Haben Sie eigentlich die [Dokumentation für modbus_read_registers] lesen (http : //www.unix.com/man-page/debian/3/modbus_read_registers/)? Wenn ein Fehler auftritt, sollten Sie zuerst die Dokumentation konsultieren. Überprüfen Sie, was der dritte Parameter sein soll. – kaylum
Wenn Sie diesen [libmodbus] (http://libmodbus.org/) verwenden, so im Funktionsaufruf 'int modbus_read_registers (modbus_t * ctx, int adr, ** int nb **, uint16_t * dest);' Parameter 'nb 'ist Nummer des Registers zum Lesen und es muss gleich 2 sein und nicht 753. – imbearr
Danke für die Antwort !! – Leaner