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
を実行し、反映させます。


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

2013年1月3日木曜日

明けましておめでとうございます

明けましておめでとうございます。
今年の目標は、、、うーん、まだ決まっていません。

2013年始まってからの流れ。
1/1 実家でノンビリ
1/2 家でノンビリ
1/3 働くか! <-今ここ

~~~
早い年明けとなりまして、libmodbusで詰まっています。
broadcastの使い方が分かっていません。
broadcastでメッセージを発行した場合、関数からの戻りが遅くなってしまう!
slaveIDの設定は、MODBUS_BROADCAST_ADDRESSという定義でやれ、との指示があるのですが、ライブラリ内をみても、あんまり使われてはいない模様?
うーん、もう少し調べてみます。