Armadilloフォーラム

Node-REDでのModbus TCP通信について

akinori_h

2025年1月16日 19時26分

==========
製品型番:Armadillo-IoT A6E
Debian/ABOSバージョン:3.20.3-at.4
カーネルバージョン:
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

お世話になっております。
Node-REDを使用しModbus TCP通信にてスレイブからレジスタの読み取りを行いたいのですが、
クライアントからサーバーへの接続にエラーが出るためご相談させていただきました。

機器構成は開発用PCと本機、Modbus TCP通信に対応したデータロガー(グラフテック社製GL860)をそれぞれスイッチングハブにてEthernet接続し、
本機をマスター、データロガーをスレイブとして入力レジスタを読み取る構成となります。

Node-RED上でModbus Readノードを追加し、データロガーの通信仕様に基づきサーバーを設定。
IPアドレスはロガー側で設定した固定IPを設定しているのですが、デプロイして実行しても以下の通りエラーが出る状況です。

"Error: Client Not Ready To Read At State init"

補足として開発用PCにてVS CodeでPythonコード作成、実行してPCからスレイブへリクエストを送信した場合、
レジスタの返信があり値を取得することが出来ることを確認しております。
上記のコードとUnit-ID,FCやアドレスの設定は同じにしているため通信仕様に基づく設定は間違っていないと思われます。

他にトラブルシュートに必要な情報があればお教えください。

以上、よろしくお願いいたします。

コメント

アットマークテクノの古賀です。

akinori_hさん:
>Node-REDを使用しModbus TCP通信にてスレイブからレジスタの読み取りを行いたいのですが、
>クライアントからサーバーへの接続にエラーが出るためご相談させていただきました。
>
>機器構成は開発用PCと本機、Modbus TCP通信に対応したデータロガー(グラフテック社製GL860)をそれぞれスイッチングハブにてEthernet接続し、
>本機をマスター、データロガーをスレイブとして入力レジスタを読み取る構成となります。
>
>Node-RED上でModbus Readノードを追加し、データロガーの通信仕様に基づきサーバーを設定。
>IPアドレスはロガー側で設定した固定IPを設定しているのですが、デプロイして実行しても以下の通りエラーが出る状況です。
>
>"Error: Client Not Ready To Read At State init"

要因が Node-RED のノードやフローにあるのか Armadillo にあるのか切り分けするために、以下の Python コードを Armadillo で実行した場合に対向 Modbus 機器のレジスタ値を取得できるかどうか、確認してみるのは、いかがでしょうか?

>補足として開発用PCにてVS CodeでPythonコード作成、実行してPCからスレイブへリクエストを送信した場合、
>レジスタの返信があり値を取得することが出来ることを確認しております。
>上記のコードとUnit-ID,FCやアドレスの設定は同じにしているため通信仕様に基づく設定は間違っていないと思われます。

以上、ひとまずのコメントです。