Modbusレジスタ仕様言語

モジュール: typhoon.api.modbus

Modbus APIには、複数の入力/保持レジスタへの書き込みと、保持レジスタからの読み出しを行うための高度な関数がいくつかあります。これらの高度な関数はすべて、読み出しまたは書き込みを行うレジスタを指定するために、同じシンプルな言語を使用しています。

入力レジスタと保持レジスタは 16 ビット長ですが (Modbus プロトコルで定義されているとおり)、複数のレジスタをグループ化して、異なるタイプの 32 ビット レジスタと 64 ビット レジスタを表すことができます。

レジスタは以下の表に示すように定義できます。

グループに登録する

レジスタータイプ

アドレス値

1(16ビット)

符号なし整数または符号付き整数

任意の正の整数値

2 (32ビット)

符号なし整数、符号付き整数、浮動小数点数

連続する2つの整数値のリスト

4(64ビット)

符号なし整数、符号付き整数、浮動小数点数

連続する4つの整数値のリスト

これがどのように見えるかを説明するために、保持レジスタのさまざまな構成を以下に示します。

  1. すべてのレジスタは16ビットで、さまざまなタイプがあります: '0u、1u、2i、3u、4i、5i、6i、7u'

  2. すべてのレジスタは32ビットで、さまざまなタイプがあります: '[0,1]u、[2,3]i、[4,5]f、[6,7]i、[8,9]i、[10,11]f'

  3. すべてのレジスタは64ビットで、さまざまなタイプがあります: '[0,1,2,3]f、[4,5,6,7]u、[8,9,10,11]i、[12,13,14,15]f'

  4. レジスタにはさまざまな長さとタイプがあります: '[0,1]f, 2u, 3i, [4,5,6,7]f, 8, [9,10]i, [11,12,13,14]u'

レジスタの長さを指定するには、適切な数のアドレスを角括弧で囲むだけです。

レジスタの種類を指定するには、次のように記述します。 あなた (符号なし整数の場合)、 (整数の場合)または f (浮動小数点の場合) アドレス値の後に続きます。

注記

型が明示的に指定されていない場合、レジスタは符号なし整数として定義されます。

注記

レジスタが 32 ビットまたは 64 ビットの場合、閉じ括弧の後にタイプを指定する必要があります。

注記

16 ビット長のレジスタは浮動小数点として定義できません。

例:

から typhoon.api.modbus.例外 import ModbusError try : # int16、uint32、int64、float レジスタに書き込みますmodbus_client . write_registers_adv ( "501i,[502,503]u,[504,505,506,507]i,[125,126]f" , [ - 55 , 233 , - 45558444 , 256.36 ]) except ModbusError as ex : print ( ex ) try : # int16、uint32、int64、float レジスタを読み取りますvalues = modbus_client . read_holding_registers_adv ( "501i,[502,503]u,[504,505,506,507]i,[125,126]f" ) ModbusError除く: print ( ex )