2016-07-02 24 views
0

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

GE-PQM sample

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?

+0

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

+0

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

+0

Danke für die Antwort !! – Leaner

Antwort

0

Wenn Sie diese libmodbus, so in Funktionsaufruf

int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);
Parameter nb ist die Anzahl der Register für Lese- und es muss 753. gleich 2 und nicht - imbearr