nkd
2020年12月21日 14時18分
WMS-PE1NというModbus製品を2台つなげた時、
2台目と通信するとmodbus_read_input_registersがタイムアウトとなってしまいます。
たまに通信成功となります。
1台だけつなげた際には発生しません。
at14では発生しません。
at16の影響のようなのですが
何が問題でしょうか。
コメント
at_syunya.ohshio
2021年1月6日 18時53分
大塩です。
> 回答いたします。
> ・rs485の設定:19200bps、パリティなし、ストップビット1、データ長8bit となります。
> ・接続方法:G3L-WMS-WMS を全長で1メートルほど有線で接続しています。
情報ありがとうございます。
追加のご質問なのですが、以下の情報をいただけますでしょうか。
・各WMSのスレーブID
・modbus_read_input_registers がエラーとなるWMS(終端抵抗のついているWMS or 中間のWMS)
・「2台目と通信するとmodbus_read_input_registersがタイムアウトとなってしまいます。」との情報ですが、2台つながっている場合でも、1台目とは通信が必ず成功するか。
以上です。
nkd
2021年1月8日 9時39分
回答いたします。
> ・各WMSのスレーブIDは
WMS(1):スレーブID=1
WMS(2):スレーブID=2
としています。
> ・modbus_read_input_registers がエラーとなるWMS(終端抵抗のついているWMS or 中間のWMS)
終端抵抗のついているWMSとは限りません。
G3LからはスレーブIDの小さい順に通信を行うようにしていて
エラーとなるのは必ずスレーブIDが大きい側となります。
WMS(1)のスレーブIDを3とすると、今度はWMS(1)でエラーが発生するようになります。
> ・「2台目と通信するとmodbus_read_input_registersがタイムアウトとなってしまいます。」との情報ですが、2台つながっている場合でも、1台目とは通信が必ず成功するか。
そのとおりです。1台目との通信は必ず成功します。
以上よろしくお願いいたします。
at_syunya.ohshio
2021年1月14日 11時47分
大塩です。
> 回答いたします。
> > ・各WMSのスレーブIDは
> WMS(1):スレーブID=1
> WMS(2):スレーブID=2
> としています。
>
> > ・modbus_read_input_registers がエラーとなるWMS(終端抵抗のついているWMS or 中間のWMS)
> 終端抵抗のついているWMSとは限りません。
> G3LからはスレーブIDの小さい順に通信を行うようにしていて
> エラーとなるのは必ずスレーブIDが大きい側となります。
> WMS(1)のスレーブIDを3とすると、今度はWMS(1)でエラーが発生するようになります。
>
> > ・「2台目と通信するとmodbus_read_input_registersがタイムアウトとなってしまいます。」との情報ですが、2台つながっている場合でも、1台目とは通信が必ず成功するか。
> そのとおりです。1台目との通信は必ず成功します。
情報ありがとうございます。
渡辺電機製 WMB-D108R を用いて再現試験を行いましたが、
at16 環境下で スレーブ1、スレーブ2共にレスポンスが返ってくることを確認しました。
試験に使用したテストプログラムを送付致しますので、
こちらで同様の現象が発生するかご確認いただけますでしょうか。
■使用方法
・libmodbus_test.tar.gz を以下コマンドで解凍し、ディレクトリに入ります。
tar zxf libmodbus_test.tar.gz cd libmodbus_test
・libmodbus_test.c 内の REGISTER_ADDRESS
定数を、読み込みたいアドレスに変更します。
・必要に応じて、modbus_read_input_registers
の読み込みバイト数を変更します。
・make
コマンド で実行ファイルを生成し、以下コマンドでコードを実行します。
./libmodbus_test /dev/ttymxc1
以上です。
ファイル | ファイルの説明 |
---|---|
libmodbus_test.tar.gz |
nkd
2021年1月14日 14時50分
大塩様
ご確認ありがとうございます。
WMB-DIO8Rでの確認ありがとうございました。
WMB-DIO8Rはこちらでも確認していて問題ないことが分かっております。
WMS-PE1Nで問題が発生するのです。
状況を整理しますと
1.WMS-PE1Nを2台つなげた時、1台目は正常、2台目はエラーになる。(たまに正常)
2.1台目というのはModbusIDが小さいほう(先に通信しているほう)でエラーは一度も発生しない。
3.接続状況や機器を変更せず、G3Lをat14に戻すとエラーは発生しない。
4.WMB-DIO8Rなどほかの機器では発生しない。
引き続きよろしくお願いいたします。
at_syunya.ohshio
2020年12月24日 17時10分
大塩です。
> WMS-PE1NというModbus製品を2台つなげた時、
> 2台目と通信するとmodbus_read_input_registersがタイムアウトとなってしまいます。
> たまに通信成功となります。
> 1台だけつなげた際には発生しません。
> at14では発生しません。
>
> at16の影響のようなのですが
> 何が問題でしょうか。
情報ありがとうございます。
いただいた情報を基に調査いたします。
念の為、以下内容についてお教えいただけますでしょうか。
・ご利用のG3L でmodbus 通信をする際のrs485 設定
・G3Lと2台のWMS-PE1Nとの接続方法
以上です。