FP_MODBUS_MASTER

スレーブへのデータ書き込みまたはスレーブからのデータの読み出し

この命令は、使用するポートのシステムレジスタで定義されたModbus RTUプロトコルを使用して、通信ポートを介したマスターからスレーブへのデータの書き込みまたはスレーブからのデータの読み出しに使用します。 マスターとスレーブに同じプロトコルが設定されていることを確認してください。

パラメータ

入力

Port (WORD, INT, UINT)

通信ポートの指定(PLC機種による):

  • COMポート 例:SYS_COM0_PORT

  • Ethernetポート 例: SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU、例:16#xx01 (xx =スロット番号) COM01

SlaveAddress (WORD, INT, UINT)

スレーブの局番

  • FP7のみ:

    • ファンクションコード05、06、15、16:0~247

      SCUを使用し、スレーブユニットNo.に0を指定すると、グローバル転送が実行されます。このとき、スレーブユニットからの応答メッセージはありません。

    • ファンクションコード01、02、03、04:1~247

  • 他のPLC機種:

    • ファンクションコード05、06、15、16:0~99

      スレーブユニットNo.に0を指定すると、グローバル転送が実行されます。このとき、スレーブユニットからの応答メッセージはありません。

    • ファンクションコード01、02、03、04:1~99

SYS_ETHERNET_USER_CONNECTION_xxを入力Portに割り付けるには、1をセットします。

FunctionCode* (WORD, INT, UINT)

SYS_MODBUS_01_READ_COIL

SYS_MODBUS_02_READ_INPUT

SYS_MODBUS_03_READ_HOLDING_REGISTER

SYS_MODBUS_04_READ_INPUT_REGISTERS

SYS_MODBUS_05_FORCE_COIL

SYS_MODBUS_06_PRESET_REGISTER

SYS_MODBUS_15_FORCE_COILS

SYS_MODBUS_16_PRESET_REGISTERS

StartRegister (WORD, INT, UINT)

先頭アドレス(0~65535)。FunctionCode*で指定されたコマンドによるアドレスタイプ。

NumberOfRegisters* (WORD, INT, UINT)

送信ビット数または送信ワード数

  • 1(ファンクションコード05、06の場合)

  • 1–2040(ファンクションコード01、02の場合)

  • 2–2040(ファンクションコード15の場合)

  • 1–127(ファンクションコード03、04の場合)

  • 2–127(ファンクションコード16の場合)

MasterData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

スレーブに書き込まれるデータのマスター側のソースアドレス

出力

Result (WORD, INT, UINT)

FP7のみ:全エラーコードについては、Modbus/MEWTOCOL通信エラーコード表を参照してください。

他のPLC機種: 0に設定

タイムチャート

  1.  (1) マスター通信送信可フラグ 例:sys_bIsEthernetUserConnection1MasterCommunication
  2.  (2) マスター通信の送信可フラグがTRUEであることを確認し、マスター通信の送信フラグがFALSEであることを確認します。
  3.  (3) マスター通信の送信フラグ 例:sys_bIsEthernetUserConnection1MasterCommunicationActive

    送信時マスター通信の送信フラグTRUEです

    送信完了時マスター通信の送信フラグFALSEです

  4.  (4) この命令の実行
  5.  (5) マスター通信の送信完了フラグ 例:sys_bIsEthernetUserConnection1CommunicationError

    正常完了FALSE

    異常完了TRUE

  6.  (6) データ送信
  7.  (7) 受信した応答の処理

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)
  • インデックス修飾時にエリアを超えたとき

  • スレーブまたはマスターデータが、アドレスの有効範囲を超えているとき
  • 通信モードがMEWTOCOL-COMマスター/スレーブまたはModbus RTUマスター/スレーブに設定されていないとき
  • 選択されたCOMポートが、装着されていない通信カセットを必要としているとき
sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)
  • インデックス修飾時にエリアを超えたとき

  • スレーブまたはマスターデータが、アドレスの有効範囲を超えているとき
  • 通信モードがMEWTOCOL-COMマスター/スレーブまたはModbus RTUマスター/スレーブに設定されていないとき
  • 選択されたCOMポートが、装着されていない通信カセットを必要としているとき

SYS_MODBUS_01_READ_COIL

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。

  • Y (出力)

  • R (内部リレー)

Modbusコマンド01の実行:Modbusスレーブの先頭レジスタ56 (変数StartRegisterで指定)から1ビットを読み出します。次にそのコマンドは、その1ビットをマスターに格納します(変数bBool2で設定されたアドレスから開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、先頭レジスタ56は、出力Y38 (3*16+8=56)に対応します。

SYS_MODBUS_02_READ_INPUT

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。

  • X (入力)

Modbusコマンド02の実行:Modbusスレーブの先頭レジスタ66 (変数StartRegisterで指定)から1ビットを読み出します。次にそのコマンドは、その1ビットをマスターに格納します(変数bBool2で設定されたアドレスから開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、先頭レジスタ66は、入力X42(4*16+2=66)に対応します。

SYS_MODBUS_03_READ_HOLDING_REGISTER

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。

  • DT (データレジスタ)

Modbusコマンド03の実行:Modbusスレーブの先頭レジスタ100 (変数StartRegisterで指定)から2ワードを読み出します。Modbusマスター2のアドレス(変数rCount2)から2ワードを格納します。スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、先頭レジスタ100は、データレジスタDT100に対応します。

最大レジスタ数: 127

SYS_MODBUS_04_READ_INPUT_REGISTERS

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。

  • WL0–WL127 (リンクリレー)

  • LD0–LD256 (リンクレジスタ)

Modbusコマンド04の実行:Modbusスレーブの先頭レジスタ2018 (変数StartRegisterで指定)から7ワードを読み出します。マスターのアドレスLD25(変数MasterDataで指定)から7ワードを格納します。スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、先頭レジスタ2018は、データレジスタLD18に対応します。

最大レジスタ数: 127

SYS_MODBUS_05_FORCE_COIL

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

Modbus RTUモードで接続されているスレーブが当社PLCの場合、1ビットまたは複数ビットを書き込みます。

  • Y (出力)

  • R (内部リレー)

Modbusコマンド05の実行:1ビットをModbusスレーブに書き込みます。先頭アドレスWY1は変数MasterDataで設定されます。次にそのコマンドは、その1ビットをModbusスレーブに格納します(変数StartRegisterで設定された先頭レジスタ35)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、アドレス35は、出力Y23(2*16+3=35)に対応します。

複数ビットデータを書き込むときは、SYS_MODBUS_15_FORCE_COILS定数を使用してください。

最大レジスタ数:1

SYS_MODBUS_06_PRESET_REGISTER

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

Modbus RTUモードで接続されているスレーブが当社PLCの場合、1ビットまたは複数ビットを書き込みます。

  • DT (データレジスタ)

Modbusコマンド 06の実行:Modbusスレーブへ1ワードを書き込みます。先頭アドレスDT14は変数MasterDataで設定されます。次にそのコマンドは、その1ワードをModbusスレーブに格納します(変数StartRegisterで設定された先頭レジスタ21)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、先頭レジスタ21は、データレジスタDT21に対応します。

複数ビットデータを書き込むときは、SYS_MODBUS_15_FORCE_COILS定数を使用してください。

最大レジスタ数:1

SYS_MODBUS_15_FORCE_COILS

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

Modbus RTUモードで接続されているスレーブが当社PLCの場合、1ビットまたは複数ビットを書き込みます。

  • Y (出力)

  • R (内部リレー)

Modbusコマンド15の実行:64ビットをModbusスレーブに書き込みます。先頭アドレスWY1は変数MasterDataで設定されます。Modbusスレーブに64ビットを格納します。先頭レジスタは48、変数StartRegisterにセットします。スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、アドレス48は、出力Y30(3*16=48)に対応します。

SYS_MODBUS_16_PRESET_REGISTERS

この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。

Modbus RTUモードで接続されているスレーブが当社PLCの場合、1ビットまたは複数ビットを書き込みます。

  • DT (データレジスタ)

Modbusコマンド16の実行:Modbusスレーブへ書き込みます。先頭アドレスは変数rCount1で設定されます。Modbusスレーブ2にデータを格納します。先頭レジスタは100、変数StartRegisterにセットします。スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。

接続されているスレーブが当社PLCの場合は、先頭レジスタ100は、データレジスタDT100に対応します。

最大レジスタ数: 127

最終修正日: 2025-01-24このページに関するフィードバックお問い合わせ窓口