説明
MODBUS TCP/IPはイーサネット物理層上で動作し、Modbus RTUはシリアルレベルプロトコルです。Milesight URルーターはModbus RTUからModbus TCPへの変換機能を備えており、Modbus RTUデバイスからModbusデータを読み取り、サーバーへModbus TCPデータとして公開します(逆方向も同様)。詳細な設定方法については、記事MilesightルーターでのModbus RTUからModbus TCPへの設定方法をご参照ください。本記事では、Milesightルーター上でModbus TCPクライアントからModbus RTUデバイスデータを要求できなかった場合のトラブルシューティング手順を説明します。
解決策
ステップ1: まずMilesightルーターのシリアルDTU透過モードをテストしてください。成功した場合、スレーブとルーター間の接続は正常です。ステップ4へ進んでください。失敗した場合は、ステップ2と3に従って接続を確認してください。

ステップ2: 使用中のケーブルが正常に動作していることを確認してください。配線時は配線順序に注意し、各ピンの定義についてはマニュアルを参照してください。
注意:
- RS232/RS485接続において、TX/AとRX/Bが逆接続されていないか確認してください。
- RS232の接地はCOMではなくGNDであることに注意してください。
ステップ3: Maintenance->Tool->Ping に移動し、Modbus TCPクライアントにpingを送信します。フェイルの場合は、ルーターとサーバー間のネットワーク接続を確認してください。また、ファイアウォールによってポートがブロックされていないことを確認してください。
ステップ4: Milesightルーターが正しいModbusコマンドでスレーブデバイスを読み取れるか確認します。
シリアルポートモードをModbusマスターに設定し、Industrial -> Modbus Master -> ChannelでModbus RTUチャネルを設定後、Readをクリックしてスレーブデータを取得できます。
ステップ5: 機能コード03での読み取りが成功しているにもかかわらず、機能コード06での書き込みがタイムアウトエラーでフェイルする場合は、シリアルポート設定で応答タイムアウトを50msに設定してください。