バージョン:
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
を実行し、反映させます。
ただ、実環境では動かない場合がありました。(原因調査は時間切れです。。。)