Modbus API

モジュール: typhoon.api.modbus

Modbusクライアントの初期化

TCPベースのModbusクライアントを初期化するには、まずオブジェクトを作成する必要があります。 TCPModbusクライアント() クラス

Modbus クライアント オプションの多くは、コンストラクターで直接設定することも、後で専用の関数を使用して設定することもできます。

輸入 typhoon.api.modbus として modbus # Modbus TCP クライアントのインスタンスを作成します# 引数が無効な場合は ValueError 例外が発生しますtry : modbus_client = modbus . TCPModbusClient ( host = "192.168.0.250" , port = 502 , auto_open = True ) except ValueError : print ( "Invalid argument..." )

Modbus クライアントを作成し、専用関数を使用してオプションを設定します。

輸入 typhoon.api.modbus として modbus # Modbus TCP クライアントのインスタンスを作成します# 引数が無効な場合は ValueError 例外が発生しますtry : modbus_client = modbus.TCPModbusClient ( ) except ValueError : print ( " Invalid argument..." ) # ホストを設定しますmodbus_client.set_host ( " 192.168.0.250" ) # ポートを設定しますmodbus_client.set_port ( 502 ) #自動オープン機能を有効にますmodbus_client.set_auto_open ( True )

ほぼすべての Modbus API 関数は、発生する可能性のあるさまざまなエラーを区別するために、1 つ以上の例外を発生させます。

Modbus 例外階層は以下に表示されます。

_images/modbus_exceptions.png

Modbusの例外をすべてキャッチしたい場合は、baseをキャッチする必要があります。 Modbusエラー 例外:

から typhoon.api.modbus.例外 ModbusErrorインポートして試してください: modbus_client.read_input_registers_adv ( " 501i,[502,503]u,[504,505,506,507]f" ) ModbusErrorをexとして除外します: print ( ex )

異なるエラーを区別したい場合は、個別にキャッチする必要があります。

から typhoon.api.modbus.例外 import ModbusError  ModbusNotConnected  ModbusInvalidRegSpec try : modbus_client . read_input_registers_adv ( "501i,[502,503]u,[504,505,506,507]f) except ModbusNotConnected as ex : print ( ex ) # 接続が開かれていない場合は何かを実行しますexcept ModbusInvalidRegSpec as ex : print ( ex ) # 指定されたレジスタの仕様が無効な場合は何かを実行しますexcept ModbusError as ex : print ( ex ) # 読み取りエラーが発生した場合は何かを実行します

APIリファレンス

クラス TCPModbusClient (ホスト= 'localhost'ポート= 502unit_id = 1タイムアウト= 30.0デバッグ= Falseauto_open = Trueauto_close = False )

TCP ベースの Modbus クライアントの機能を実装するクラス。

このクラス自体は、追加機能を備えた PyModbusTCP ライブラリ ( http://pythonhosted.org/pyModbusTCP/package/class_ModbusClient.html ) の ModbusClent() クラスへのプロキシです。

__init__ (ホスト= 'localhost'ポート= 502unit_id = 1タイムアウト= 30.0デバッグ= Falseauto_open = Trueauto_close = False )

TCPModbusClientのインスタンスを作成します。クライアントパラメータはここで設定することも、後で適切な関数(set_host(), set_port() 等)

パラメータ:
  • host ( str ) – ホスト名またはIPv4/IPv6アドレスサーバアドレス(オプション)

  • port ( int ) – TCPポート番号(オプション)

  • unit_id ( int ) – ユニットID(オプション)

  • timeout ( float ) – ソケットのタイムアウト(秒)(オプション)

  • auto_open ( bool ) – 最初のリクエストで自動的にTCP接続する(オプション)

  • auto_close ( bool ) – 各リクエスト後の自動TCPクローズ(オプション)

戻り値:

TCPModbusClientオブジェクト

戻り値の型:

TCPModbusクライアント

昇給

ValueError – 入力パラメータの値が正しくない場合

modbus ( )

ラップされた ModbusClent オブジェクトを返します。

戻り値:

ModbusClentオブジェクト

戻り値の型:

Modbusクライアント

エンディアンネス( )

現在設定されているエンディアンを返します:return:

set_endianness (エンディアンタイプ)

複数の16ビットレジスタの値を1つの32ビットまたは64ビットの数値にマージするために使用されるエンディアンを設定します。

パラメータ:

エンディアンタイプリトルエンディアン または ビッグエンディアン または適切な定数を使用することもできます。

  • TCPModbusClient.BIG_ENDIAN

  • TCPModbusClient.LITTLE_ENDIAN

昇給

ModbusError – エンディアンタイプがサポートされていない場合

auto_close ( )

自動TCPクローズモードのステータスを返します。:returns: 自動クローズモードのステータス (真実 有効化または 間違い 非アクティブ) :rtype: bool

set_auto_close (状態)

自動TCPクローズモードを設定します。このモードが有効な場合、各リクエストの後に接続が閉じられます。

パラメータ:

state ( bool ) – 自動クローズモードの有効化/無効化

auto_open ( )

自動TCP接続モードのステータスを返します。:returns: 自動オープンモードのステータス (真実 有効化または 間違い 非アクティブ) :rtype: bool

set_auto_open (状態)

自動TCP接続モードを設定します。このモードがアクティブな場合、最初のリクエストで接続が開かれます。

パラメータ:

state ( bool ) – 自動オープンモードの有効化/無効化

近い

TCP 接続を閉じます。

戻り値:

クローズステータス(真実 接続が正常に終了した場合、または なし 接続がすでに閉じられている場合)

戻り値の型:

bool または None

開ける

Modbusサーバーに接続する(TCP接続を開く)

戻り値:

接続ステータス(真実 接続が正常に確立された場合は戻り、そうでない場合は 間違い)

戻り値の型:

ブール

デバッグ( )

デバッグ モードのステータスを返します。

戻り値:

デバッグモードのステータス(真実 有効化または 間違い 無効化)

戻り値の型:

ブール

set_debug (状態)

デバッグモードを設定します。

注記

デバッグ モードがアクティブな間、デバッグ情報がコンソールに書き込まれます。

パラメータ:

state ( bool ) – デバッグモードを有効/無効にする

ホスト

現在のホストを返します。

戻り値:

ホスト名

戻り値の型:

str

set_host (ホスト名)

ホストを設定する(IPv4/IPv6アドレスまたは「plc.domain.net」のようなホスト名)

パラメータ:

ホスト名( str ) – ホスト名またはIPv4/IPv6アドレス

昇給

ModbusError – ホスト名が無効または設定できない場合

ポート( )

現在の TCP ポートを返します。

戻り値:

TCPポート値

戻り値の型:

整数

set_port (ポート)

TCP ポートを設定します。

パラメータ:

port ( int ) – TCPポート番号

昇給

ModbusError – ポートが無効または設定できない場合

タイムアウト

現在のタイムアウトを返します。

戻り値:

ソケットタイムアウト値

戻り値の型:

フロート

set_timeout (タイムアウト= None )

ソケットのタイムアウトを設定します。

パラメータ:

timeout ( float ) – ソケットのタイムアウト(秒数)(0~3600)

昇給

ModbusError – タイムアウトが無効または設定できない場合

ユニットID ( )

現在のユニット ID を返します。

戻り値:

ユニットID値

戻り値の型:

整数

set_unit_id ( unit_id = None )

ユニット ID フィールドを設定します。

パラメータ:

unit_id ( int ) – ユニットID (0~255)

昇給

ModbusError – ユニットIDが無効または設定できない場合

is_open ( )

TCP 接続のステータスを取得します。

戻り値:

状態 (真実 接続が開かれている場合は戻り、そうでない場合は戻ります 間違い)

戻り値の型:

ブール

read_coils ( bit_addr , bit_nb = 1 , to_int = False )

Modbus関数READ_COILS(0x01)の実装。

読む ビット数 連続するアドレスの数 ビットアドレス 住所。

パラメータ:
  • bit_addr ( int ) – ビットアドレス (0 ~ 65535)

  • bit_nb ( int ) – 読み取るビット数(1~2000)

  • to_int – コイルの値を整数に変換する

注記

読み取った値 ビットアドレス アドレスはMSBとして扱われる

戻り値:

ブール値のリスト(真実 または 間違い)または整数の場合 to_int==True

戻り値の型:

ブール値のリスト

昇給
  • ModbusError (基本例外) – コイルの読み取り中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

read_discrete_inputs ( bit_addr , bit_nb = 1 , to_int = False )

Modbus関数READ_DISCRETE_INPUTS(0x02)の実装

読む ビット数 連続するアドレスの数 ビットアドレス 住所。

パラメータ:
  • bit_addr ( int ) – ビットアドレス (0 ~ 65535)

  • bit_nb ( int ) – 読み取るビット数(1~2000)

  • to_int – コイルの値を整数に変換する

注記

読み取った値 ビットアドレス アドレスはMSBとして扱われる

戻り値:

整数のリスト(1 または 0)または整数の場合 to_int==True

戻り値の型:

ブール値のリスト

昇給
  • ModbusError (基本例外) – ディスクリート入力の読み取り中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

read_input_registers ( reg_addr , reg_nb = 1 )

Modbus関数READ_INPUT_REGISTERS(0x04)の実装

パラメータ:
  • reg_addr ( int ) – レジスタアドレス (0~65535)

  • reg_nb ( int ) – 読み取るレジスタの数 (1~125)

戻り値:

レジスタリスト

戻り値の型:

intのリスト

昇給
  • ModbusError (基本例外) – 入力レジスタの読み取り中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

read_holding_registers ( reg_addr , reg_nb = 1 )

Modbus関数READ_HOLDING_REGISTERS(0x03)の実装

パラメータ:
  • reg_addr ( int ) – レジスタアドレス (0~65535)

  • reg_nb ( int ) – 読み取るレジスタの数 (1~125)

戻り値:

レジスタリスト

戻り値の型:

intのリスト

昇給
  • ModbusError (基本例外) – 保持レジスタの読み取り中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

read_input_registers_adv ( read_spec )

入力レジスタを読み取るための高度な関数。

パラメータ:

read_spec – レジスタ仕様の文字列

注記

レジスタ仕様を指定するには、特別なシンプルな言語が使用されます。 レジスタ仕様言語 読むことができます ここ.

戻り値:

指定されたレジスタタイプに変換された値を含むデータリスト

戻り値の型:

読み取り仕様に応じた符号なし/符号付き整数または浮動小数点数値のリスト

昇給
  • ModbusError (基本例外) – 入力レジスタの読み取り中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

  • ModbusInvalidRegSpec – レジスタの指定の場合(読み取り仕様)は正しくありません

read_holding_registers_adv ( read_spec )

保持レジスタを読み取るための高度な機能。

パラメータ:

read_spec – レジスタ仕様の文字列

注記

レジスタ仕様を指定するには、特別なシンプルな言語が使用されます。 レジスタ仕様言語 読むことができます ここ.

戻り値:

指定されたレジスタタイプに変換された値を含むデータリスト

戻り値の型:

読み取り仕様に応じた符号なし/符号付き整数または浮動小数点数値のリスト

昇給
  • ModbusError (基本例外) – 入力レジスタの読み取り中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

  • ModbusInvalidRegSpec – レジスタの指定の場合(読み取り仕様)は正しくありません

write_single_coil ( bit_addr , bit_value )

Modbus関数WRITE_SINGLE_COIL(0x05)の実装

書く ビット値 価値オン ビットアドレス 住所。

パラメータ:
  • bit_addr ( int ) – ビットアドレス (0 ~ 65535)

  • bit_value ( bool ) – 書き込むビット値

昇給
  • ModbusError (基本例外) – 単一コイルの書き込み中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

write_single_register ( reg_addr , reg_value )

Modbus関数WRITE_SINGLE_REGISTER(0x06)の実装

書く 登録値 価値オン reg_addr 住所。

パラメータ:
  • reg_addr ( int ) – レジスタアドレス (0~65535)

  • reg_value ( int ) – 書き込むレジスタ値

昇給
  • ModbusError (基本例外) – 単一レジスタの書き込み中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

write_multiple_coils (ビットアドレスビット値)

Modbus関数WRITE_MULTIPLE_COILS(0x0F)の実装

書く ビット値 値は以下から始まる ビットアドレス 住所。

パラメータ:
  • bits_addr ( int ) – ビットアドレス (0 ~ 65535)

  • ビット値(リスト) – 書き込むビット値

昇給
  • ModbusError (基本例外) – 複数のコイルへの書き込み中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

write_multiple_registers ( regs_addr , regs_value )

Modbus関数WRITE_MULTIPLE_REGISTERS(0x10)の実装

書く regs_value 値は以下から始まる regs_addr 住所。

パラメータ:
  • regs_addr ( int ) – レジスタアドレス (0~65535)

  • regs_value (リスト) – 書き込むレジスタ値

昇給
  • ModbusError (基本例外) – 複数のレジスタへの書き込み中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

write_registers_adv ( write_spec , regs_values )

複数のレジスタに書き込むための高度な機能。

パラメータ:

write_spec – レジスタ仕様の文字列

注記

レジスタ仕様を指定するには、特別なシンプルな言語が使用されます。 レジスタ仕様言語 読むことができます ここ.

パラメータ:

regs_values (書き込み仕様に応じてunsigned/signed intまたはfloat 数値リスト) - 書き込むレジスタ値。

昇給
  • ModbusError (基本例外) – 複数のレジスタへの書き込み中にエラーが発生した場合

  • ModbusNotConnected – この関数が呼び出される前に接続が開かれていない場合

  • ModbusInvalidRegSpec – レジスタの指定の場合(書き込み仕様)は正しくありません

  • ModbusInvalidData – 指定されたレジスタ値がレジスタタイプと互換性がない場合

ユーティリティモジュール

bool_list_to_int ( bool_list )

指定されたboolリストをint数値に変換します。指定されたboolリストの最初の要素がMSBとして使用されます。

パラメータ:

bool_list ( list ) – ブール値のリスト。

戻り値:

整数。

uint16_to_int16 ( uint16 , big_endian = True )

unsigned int (16 ビット) 数値を signed int (16 ビット) 数値に変換します。

パラメータ:
  • uint16 ( int ) – 符号なし整数(16ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号付き整数(16ビット)数値

戻り値の型:

整数

uint32_to_int32 ( uint32 , big_endian = True )

unsigned int (32 ビット) 数値を signed int (32 ビット) 数値に変換します。

パラメータ:
  • uint32 ( int ) – 符号なし整数(32ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号付き整数(32ビット)数値

戻り値の型:

整数

uint64_to_int64 ( uint64 , big_endian = True )

unsigned int (64 ビット) 数値を signed int (64 ビット) 数値に変換します。

パラメータ:
  • uint64 ( int ) – 符号なし整数(64ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号付き整数(64ビット)数値

戻り値の型:

整数

uint32_to_float ( uint32 , big_endian = True )

unsigned int (32 ビット) 数値を float 数値に変換します。

パラメータ:
  • uint32 ( int ) – 符号なし整数(32ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

浮動小数点数

戻り値の型:

フロート

uint64_to_double ( uint64 , big_endian = True )

unsigned int (64 ビット) 数値を float (64 ビット) 数値に変換します。

パラメータ:
  • uint64 ( int ) – 符号なし整数(64ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

浮動小数点数(64ビット)

戻り値の型:

フロート

float_to_uint32 ( float_num , big_endian = True )

float 数を unsigned int (32 ビット) 数に変換します。

パラメータ:
  • float_num ( float ) – 浮動小数点数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

整数値

戻り値の型:

整数

double_to_uint64 ( double_num , big_endian = True )

float 数値 (64 ビット) を unsigned int 数値 (64 ビット) に変換します。

パラメータ:
  • double_num ( float ) – 浮動小数点数 (64 ビット)

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

整数値

戻り値の型:

整数

int16_to_uint16 ( int16 , big_endian = True )

符号付き整数 (16 ビット) 数値を符号なし整数 (16 ビット) 数値に変換します。

パラメータ:
  • int16 ( int ) – 符号付き整数(16ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号なし整数(16ビット)数値

戻り値の型:

整数

int32_to_uint32 ( int32 , big_endian = True )

signed int (32 ビット) 数値を unsigned int (32 ビット) 数値に変換します。

パラメータ:
  • int32 ( int ) – 符号付き整数(32ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号なし整数(32ビット)数値

戻り値の型:

整数

int64_to_uint64 ( int64 , big_endian = True )

符号付き整数 (64 ビット) 数値を符号なし整数 (64 ビット) 数値に変換します。

パラメータ:
  • int64 ( int ) – 符号付き整数(64ビット)数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号なし整数(64ビット)数値

戻り値の型:

整数

int32_to_uint16_list ( int32 , big_endian = True )

符号付き整数 (32 ビット) 数値を 2 つの符号なし整数 (16 ビット) 数値のリストに変換します。

パラメータ:
  • int32 ( int ) – 符号付き整数(32ビット)

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

2つのunsigned int(16ビット)値を持つリスト

戻り値の型:

リスト

int64_to_uint16_list ( int64 , big_endian = True )

符号付き整数 (64 ビット) 数値を 4 つの符号なし整数 (16 ビット) 数値のリストに変換します。

パラメータ:
  • int64 ( int ) – 符号付き整数(64ビット)

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

4つのunsigned int(16ビット)値のリスト

戻り値の型:

リスト

uint32_to_uint16_list ( uint32 , big_endian = True )

unsigned int 数値 (32 ビット) を 2 つの unsigned int (16 ビット) 数値のリストに変換します。

パラメータ:
  • uint32 ( int ) – 符号なし整数(32ビット)

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

2つのunsigned int(16ビット)値を持つリスト

戻り値の型:

リスト

uint64_to_uint16_list ( uint64 , big_endian = True )

unsigned int 数値 (64 ビット) を 4 つの unsigned int (16 ビット) 数値のリストに変換します。

パラメータ:
  • uint64 ( int ) – 符号なし整数(64ビット)

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

4つのunsigned int(16ビット)値のリスト

戻り値の型:

リスト

float_to_uint16_list ( float_num , big_endian = True )

浮動小数点数を 2 つの unsigned int (16 ビット) 数値のリストに変換します。

パラメータ:
  • float_num ( float ) – 浮動小数点数値

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

2つのunsigned int(16ビット)値を持つリスト

戻り値の型:

リスト

double_to_uint16_list ( double_num , big_endian = True )

float 数値 (64 ビット) を 4 つの unsigned int (16 ビット) 数値のリストに変換します。

パラメータ:
  • double_num ( float ) – 浮動小数点数 (64 ビット)

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

4つのunsigned int(16ビット)値のリスト

戻り値の型:

リスト

uint16_list_to_float ( int_listbig_endian = True )

2 つの unsigned int (16 ビット) 数値のリストを float 数値に変換します。

パラメータ:
  • int_list (リスト) – 2つの符号なし整数(16ビット)値を持つリスト

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

浮動小数点数

戻り値の型:

フロート

uint16_list_to_double ( int_listbig_endian = True )

4 つの unsigned int (16 ビット) 数値のリストを float 数値 (64 ビット) に変換します。

パラメータ:
  • int_list (リスト) – 4つの符号なし整数(16ビット)値のリスト

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

浮動小数点数(64ビット)

戻り値の型:

フロート

uint16_list_to_int32 ( int_list , big_endian = True )

2 つの unsigned int (16 ビット) 数値のリストを signed int (32 ビット) に変換します。

パラメータ:
  • int_list (リスト) – 2つの符号なし整数(16ビット)値を持つリスト

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号付き整数(32ビット)

戻り値の型:

整数

uint16_list_to_int64 ( int_list , big_endian = True )

4 つの unsigned int (16 ビット) 数値のリストを signed int 数値 (64 ビット) に変換します。

パラメータ:
  • int_list (リスト) – 4つの符号なし整数(16ビット)値のリスト

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号付き整数(64ビット)

戻り値の型:

整数

uint16_list_to_uint32 ( int_list , big_endian = True )

2 つの unsigned int (16 ビット) 数値のリストを unsigned int (32 ビット) 数値に変換します。

パラメータ:
  • int_list (リスト) – 2つの符号なし整数(16ビット)値を持つリスト

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号なし整数(32ビット)

戻り値の型:

整数

上げる

ValueError: の場合 int_リスト 長さは != 2 です

uint16_list_to_uint64 ( int_listbig_endian = True )

4 つの unsigned int (16 ビット) 数値のリストを unsigned int (64 ビット) 数値に変換します。

パラメータ:
  • int_list (リスト) – 4つの符号なし整数(16ビット)値のリスト

  • big_endian ( bool ) – ビッグエンディアンの場合はTrue、リトルエンディアンの場合はFalse(オプション)

戻り値:

符号なし整数(64ビット)

戻り値の型:

整数

上げる

ValueError: の場合 val_list 長さは != 4