スレーブへのデータ書き込みまたはスレーブからのデータ読み出し
指定できるファンクションコードとプログラム例
SYS_MODBUS_03_READ_HOLDING_REGISTER
SYS_MODBUS_04_READ_INPUT_REGISTERS
SYS_MODBUS_16_PRESET_REGISTERS
この命令は、使用するポートのシステムレジスタで定義されたModbus RTUプロトコルを使用して、通信ポートを介したマスターからスレーブへのデータの書き込みまたはスレーブからのデータの読み出しに使用します。マスターとスレーブに同じプロトコルが設定されていることを確認してください。
入力
通信ポートの指定(PLC機種による):
COMポート、例:SYS_COM0_PORT
Ethernetポート 例: SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU、例:16#xx01 (xx =スロット番号) COM01
スレーブの局番 (0–255)
SYS_ETHERNET_USER_CONNECTION_xxを入力Portに割り付けるには、1をセットします。
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
先頭アドレス(0~65535)。FunctionCode*で指定されたコマンドによるアドレスタイプ。
送信ビット数または送信ワード数
1–2040 (ファンクションコード01、02の場合)
2–2040 (ファンクションコード15の場合)
1–127 (ファンクションコード03、04の場合)
2–127 (ファンクションコード16の場合)
スレーブに書き込まれるデータのマスター側のソースアドレス
出力
0: 正常完了
1: 通信ポートがマスタ通信に使用されている
2: 通信ポートがスレーブ通信で使用されている
3: 同時に実行できるマスタ通信命令数を超えている
4: 送信タイムアウト
5:レスポンス受信タイムアウト
6:受信データエラー
通信モード |
SCUまたはET-LANの使用時 |
---|---|
MODBUS |
1-247 |
Modbusでの接続の場合は"1"を指定してください。宛先はIPアドレスによって決まります。
通信モード |
アドレス範囲 |
---|---|
MODBUS |
0~65535 (16#FFFF) |
転送方式 |
送信データ数 |
使用するコマンド |
---|---|---|
ワード送信 |
1~127ワード |
|
ビット送信 |
1~2040ビット |
|
CPUユニットのCOM1ポートからコマンドを送信して、外部デバイス(局番1)のデータエリアDT400–DT401からデータを読み取り、PLCのデータレジスタDT100–DT101に書き込みます。
マスター通信の送信可フラグがTRUE (XC)であり、同じポート(YC)で送信が進行中でないことを確認し、SEND命令を実行します。
RECV命令を実行するには、相手局番号(U1)、開始アドレス(DT400)、データ量(U2)、およびデータを格納するためのPLCの開始アドレス(DT100)を指定します。
マスター通信は、MEWTOCOLまたはMODBUSが選択されているときにのみ有効です。マスター通信の送信可フラグ(XC–XE)が、対応するチャンネルについてTRUEであることを確認し、SEND/RECV命令を実行します。
マスター通信が進行中の通信ポートに対して、別のSEND/RECV命令を実行することはできません。マスター通信の送信フラグ(YC–YE)がFALSEであることを確認し、命令を実行します。
スレーブ通信が進行中のポートに対して、SEND/RECV命令を実行することはできません。
レスポンスがない場合、CPUコンフィグレーションで設定されたタイムアウト時間の間、マスター通信の送信フラグ(YC–YE)はTRUEのままになります。
各COMポートに対して、最大16個のSEND/RECV命令を同時に実行することができます。
COMポート番号 |
名前 |
説明 |
||
1 |
2 |
0 |
||
XC |
XD |
XE |
マスター通信送信可フラグ |
MEWTOCOL-COM、MEWTOCOL7またはMODBUS-RTUが通信モードとして設定され、PLCがRUNモードになっている場合にTRUEになります。 |
YC |
YD |
YE |
マスター通信の送信フラグ |
SENDおよびRECV命令によってデータが送信されている間、TRUEになります。送信が完了するとFALSEになります。 |
Y0 |
Y1 |
Y2 |
マスター通信の送信完了フラグ |
プログラム制御通信またはマスター通信による送信が正常に完了したときにTRUEになり、送信が異常終了したときにFALSEになります。 |
接点を使用して動作ステータスを読み出します。ユーザプログラムによる書き込みは行わないでください。
CPUユニットのLANポートからコマンドを送信して、外部デバイスのデータエリアDT400–DT401からデータを読み取り、PLCのデータレジスタDT100–DT101に書き込みます。
コネクション1のマスター通信の送信可フラグがTRUE (X90)であり、同じポート(Y90)で送信が進行中でないことを確認し、送信命令を実行します。
RECV命令を実行するには、相手局番号(U1)、開始アドレス(DT400)、データ量(U2)、およびデータを格納するためのPLCの開始アドレス(DT100)を指定します。
マスター通信は、MEWTOCOLまたはMODBUSが選択されているときにのみ有効です。マスター通信の送信可フラグ(X90–X9F)が、対応する接続についてTRUEであることを確認し、SEND/RECV命令を実行します。
マスター通信が進行中の接続に対して、別のSEND/RECV命令を実行することはできません。マスター通信の送信フラグ(Y90–Y9F)がFALSEであることを確認して、命令を実行します。
スレーブ通信が進行中の接続に対して、SEND/RECV命令を実行することはできません。
各ポートに対して、最大16個のSEND/RECV命令を同時に実行することができます。
FP7のLANポート間の通信では、相手局番号に「U1」を指定します。宛先はIPアドレスによって決定されます。
送信時:マスター通信の送信フラグはTRUEです
送信完了時:マスター通信の送信フラグはFALSEです
正常完了:FALSE
異常完了:TRUE
I/O番号 |
名称 |
説明 |
X90–X9F |
マスター通信送信可フラグ |
MEWTOCOL-COM、MEWTOCOL7またはMODBUS-RTUが通信モードとして設定され、PLCがRUNモードになっている場合にTRUEになります。 |
Y90–Y9F |
マスター通信の送信フラグ |
SENDおよびRECV命令によってデータが送信されている間、TRUEになります。送信が完了するとFALSEになります。 |
Y70–Y7F |
マスター通信の送信完了フラグ |
プログラム制御通信またはマスター通信による送信が正常に完了したときにTRUEになり、送信が異常終了したときにFALSEになります。 |
接点を使用して動作ステータスを読み出します。ユーザプログラムによる書き込みは行わないでください。
この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。
接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。
Y (出力)
R (内部リレー)
Modbusコマンド01の実行:Modbusスレーブの先頭レジスタ56 (変数StartRegisterで指定)から1ビットを読み出します。次にそのコマンドは、その1ビットをマスターに格納します(変数bBool2で設定されたアドレスから開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。
接続されているスレーブが当社PLCの場合は、先頭レジスタ56は、出力Y38 (3*16+8=56)に対応します。
この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。
接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。
Modbusコマンド02の実行:Modbusスレーブの先頭レジスタ66 (変数StartRegisterで指定)から1ビットを読み出します。次にそのコマンドは、その1ビットをマスターに格納します(変数bBool2で設定されたアドレスから開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。
接続されているスレーブが当社PLCの場合は、先頭レジスタ66は、入力X42 (4*16+2=66)に対応します。
この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。
接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。
Modbusコマンド03の実行:Modbusスレーブの先頭レジスタ100 (変数StartRegisterで指定)から2ワードを読み出します。次にそのコマンドは、その2ワードをModbusマスター2に格納します(変数rCount2で設定されたアドレスから開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。
接続されているスレーブが当社PLCの場合は、先頭レジスタ100は、データレジスタDDT100に対応します。
最大レジスタ数: 127
この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。
接続するスレーブがシステムレジスタでModbus RTUスレーブに設定している当社PLCの場合は、1ビットまたは複数ビットを読み出します。
WL0–WL127 (リンクリレー)
LD0–LD256 (リンクレジスタ)
Modbusコマンド04の実行:Modbusスレーブの先頭レジスタ2018 (変数StartRegisterで指定)から7ワードを読み出します。次にそのコマンドは、その7ワードをマスターに格納します(変数MasterDataで設定されたLD25から開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。
接続されているスレーブが当社PLCの場合は、先頭レジスタ2018は、データレジスタLD18に対応します。
最大レジスタ数: 127
この定数を入力パラメータ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
この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。
Modbus RTUモードで接続されているスレーブが当社PLCの場合、1ビットまたは複数ビットを書き込みます。
Modbusコマンド 06の実行:Modbusスレーブへ1ワードを書き込みます。先頭アドレスDT14は変数MasterDataで設定されます。次にそのコマンドは、その1ワードをModbusスレーブに格納します(変数StartRegisterで設定された先頭レジスタ21)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。
接続されているスレーブが当社PLCの場合は、先頭レジスタ21は、データレジスタDT21に対応します。
複数ビットデータを書き込むときは、ファンクションコードSYS_MODBUS_15_FORCE_COILSを使用してください。
最大レジスタ数: 1
この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。
Modbus RTUモードで接続されているスレーブが当社PLCの場合、1ビットまたは複数ビットを書き込みます。
Y (出力)
R (内部リレー)
Modbusコマンド15の実行:64ビットをModbusスレーブに書き込みます。先頭アドレスWY1は変数MasterDataで設定されます。次にそのコマンドは、その64ビットをModbusスレーブに格納します(変数StartRegisterで設定された先頭レジスタ48から開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。
接続されているスレーブが当社PLCの場合は、アドレス48は、出力Y30 (3*16=48)に対応します。
この定数を入力パラメータFunctionCode*に適用すると、対応するModbusコマンドが実行されます。
Modbus RTUモードで接続されているスレーブが当社PLCの場合、1ビットまたは複数ビットを書き込みます。
Modbusコマンド16の実行:Modbusスレーブへ書き込みます。先頭アドレスは変数rCount1で設定されます。次にそのコマンドは、そのデータをModbusスレーブ2に格納します(変数StartRegisterで設定された先頭レジスタ100から開始)。 スレーブの先頭アドレスは、各デバイス毎のModbus仕様に従って、デバイス固有のアドレスに変換されます。
接続されているスレーブが当社PLCの場合は、先頭レジスタ100は、データレジスタDDT100に対応します。
最大レジスタ数: 127