2013年1月7日月曜日

libmodbusのブロードキャストについて

libmodbusのブロードキャストの方法について、暫定的に行った方法についてまとめておきます。

バージョン:
libmodbus-3.0.3

現状:
ブロードキャストでmodbus_write_registers()を使った場合、関数からの戻りが大変遅い。
ブロードキャストの設定は、modbus_set_slave()で指示通り、MODBUS_BROADCAST_ADDRESSを使った。

対応:
src/modbus.c:1253行目あたりに以下を追加した。


rc = send_msg(ctx, req, req_length);

if(ctx->slave == 0){
//printf("slave ID:0 -> return:%d\n",rc);
return rc;
}

if (rc > 0) {
uint8_t rsp[MAX_MESSAGE_LENGTH];


slaveIDが0の場合、ブロードキャストであると判断して、receiveの処理を行わないように変更しています。

上記変更後、
 make
 make install
を実行し、反映させます。


ただ、実環境では動かない場合がありました。(原因調査は時間切れです。。。)

0 件のコメント:

コメントを投稿