0

シリアル ポートと RTU Modbus を使用してデバイスに接続しようとしています。デバイスは可変周波数コントローラーです。

ここに画像の説明を入力

次のRS485からUSBへのコンバーターを介してラップトップに接続されています。

https://www.amazon.co.uk/gp/product/B01E8JRL6O/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

以下に示すように、Modbus を使用してデータを読み取るための使用例を提供するために、接続しているデバイスの手順を示します。ここに画像の説明を入力

上記を使用して、以下のコードで読み取り要求を実行しようとしました。

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
modbus = ModbusClient(method='rtu', port='/dev/tty.usbserial-AQ00BYCR', baudrate=9600, timeout=1)
modbus.connect()
test = modbus.read_holding_registers(1, 1, unit=1)
print (test)

上記の行は次のようになります。

test = modbus.read_holding_registers(1, 1, unit=1)

は、レジスタ アドレス 1 が、1 つの読み取りフレームに対して、デバイス ID 1 に対して読み取られることを意味します。私の理解では、この要求は上記の命令例に対応します。残念ながら、しかし、私は一貫してエラーメッセージを受け取ります:

Modbus エラー: [入力/出力] Modbus エラー: [無効なメッセージ] 不完全なメッセージを受信しました。少なくとも 2 バイトが必要です (1 受信)

このエラーが発生する理由を知っている人はいますか? 次に、CRC は pymodbus によってオンザフライで計算されますか? または、これをどのように計算して含めることになっていますか?

どんな助けでも大歓迎です!

4

1 に答える 1