2016-07-02 25 views
0

GE-PQM IIエネルギーメーターからデータを読み込もうとしています。エネルギー計は、2線RS-485 MODBUS接続によるリアルタイムモニタリングをサポートしています。私はcでlibmodbusライブラリを使用して、modbusレジスタを読み込みます。modbus 16進アドレス変換

GEコミュニケーションガイド(https://www.ccontrols.com/support/dp/GEK-113532.pdf)では、レジスタのアドレスが16進数で示されています。私は16進数を10進数に変換しました。

私はMODBUSレジスタ(02F0,02F1)から値を読み取るしようとしています - 対応する小数点以下の値は、私のコード752753

GE-PQM sample

です:

rc = modbus_read_registers(ctx, 752, 753, clock); 

出力:

ERROR Too many registers requested (753 > 125) 
Too many data 

16進変換で何か間違っていますか?または他にどこですか?

+0

あなたが実際に[modbus_read_registersのドキュメント]を読みました(HTTP ://www.unix.com/man-page/debian/3/modbus_read_registers/)?エラーが発生した場合、最初に行うことはドキュメントを参照することです。 3番目のパラメータが何を想定しているか確認してください。 – kaylum

+0

このlibmodbus(http://libmodbus.org/)を使用すると、関数呼び出し 'int modbus_read_register(modbus_t * ctx、int addr、** int nb **、uint16_t * dest);'パラメータ 'nb 'は読み込みのためのレジスタの数であり、753ではなく2でなければなりません。 – imbearr

+0

答えをありがとう!! – Leaner

答えて

0

あなたはこのlibmodbusを使用する場合は、

int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);
パラメータ nbは、読み取り用のレジスタの数であり、2とない753に等しくなければならない関数呼び出しのよう - imbearr

関連する問題