MODBUS RTU 通信時の配線例 ( 例 )FPΣ と弊社製温調器 KT シリーズ通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブの KT シリーズのデータを読み出し 書き込みを行います マスタ データ書き込み スレーブ データ読み出し RS485 FPΣ の通信カセットは COM3 カセット (FPG-COM3) もしくは COM4 カセット (FPG-COM4) の COM1(RS485) ポートを用います COM3 カセット (FPG-COM3) をご使用の場合 COM4 カセット (FPG-COM4) をご使用の場合 KT 側 KT 側 +- + - E -1-
MODBUS RTU 通信フォーマット設定 ( 例 )FPΣ と弊社製温調器 KT シリーズ通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブの KT シリーズのデータを読み出し 書き込みを行います 配線完了後 FPΣ(COM1 ポート ) と温調器 (KT シリーズ通信ポート ) の通信設定を合わせます ( 通信設定が異なると 通信不可になります ) マスタ データ書き込み スレーブ FPWN GR の PLC システムレジスタにて設定 COM1 データ読み出し RS485 本体のスイッチにて設定 通信モード 通信速度 伝送フォーマットデータ長パリティチェックストップビット :MODBUSRTU : 19200 bps :8 ビット : 奇数 :1 同じ設定! 局番 通信モード 通信速度 伝送フォーマットデータ長パリティチェックストップビット :1 :MODBUSRTU : 19200 bps :8 ビット : 奇数 :1-2-
MODBUS RTU 通信フォーマット設定 (FPΣ COM ポート設定方法 ) 下図のように COM1 ポートで KT シリーズと通信をする際の設定方法について説明します マスタ データ書き込み データ読み出し スレーブ 局番 通信モード 通信速度 伝送フォーマットデータ長パリティチェックストップビット :1 :MODBUSRTU : 19200 bps :8 ビット : 奇数 :1 COM1 RS485 FPΣ COM ポートの設定は FPWIN GR PLC システムレジスタ設定 にて行います FPWIN GR を起動し ( メニュー ) オプション PLC システムレジスタ設定を選択 COM1 ポート設定をクリックし スレーブ機器 (KT シリーズ ) の設定に合わせます -3-
MODBUS RTU 通信フォーマット設定 (KT シリーズ通信ポート設定方法 ) 続いて KT シリーズの通信設定方法について説明します マスタ データ書き込み データ読み出し スレーブ 局番 通信モード 通信速度 伝送フォーマットデータ長パリティチェックストップビット :1 :MODBUSRTU : 19200 bps :8 ビット : 奇数 :1 COM1 RS485 KT シリーズの通信設定は本体の SW にて行います 詳細は KT 温調器ユーザーズマニュアルをご参照下さい 補助機能設定モードへの移行 PV/SV 表示モードで [ ] を押しながら [MODE] キーを押して下さい + MODE MODE 2 回 MODE MODE 通信プロトコル設定 ModR を選択 局番設定 1 を選択 MODE MODE MODE MODE 通信応答時間選択 5 ( 初期値 ) を選択 ストップビット選択 1 を選択 -4- データ長 / パリティ選択 8odd を選択 通信速度設定 192 を選択
MODBUS マスタデータ送信プログラム ( 例 )FPΣ と弊社製温調器 KT4H で通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブ ( 局番 1) の KT4H の設定値を書き込みます マスタ スレーブ 局番 1 設定値書き込み COM1 RS485 MODBUS RTU 通信時 スレーブ機器へのデータ書き込みは次のようなコマンドを送信する必要があります (Hex) 01 06 00 00 12 34 84 BD スレーブ局番 01 機能コード 06 ( レジスタ単点プリセット ) 書込先アドレス 0000 CRC(F70 命令などで算出 ) 書込データ 1234 (H 1234) -5-
MODBUS マスタデータ送信プログラム ( 例 )FPΣ と弊社製温調器 KT4H で通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブの KT4H の設定値を書き込みます マスタ スレーブ 局番 1 KT4H の各データエリアには MODBUS RTU 通信用のアドレスが割付られています 設定値書き込み アドレス 0001H SV1 データ項目 設定値 データ COM1 RS485 0002H 0003H 未使用 AT/ オートリセット設定 0: 解除 1: 実行 右上の表より KT4H の設定値は 0001H というアドレスであることがわかります 今回のように局番 1 の設定値エリア (0001H) に K100 を書き込む場合は 次のようなコマンドを送信します (Hex) 01 06 00 01 00 64 81 16 スレーブ局番 01 機能コード 06 ( レジスタ単点プリセット ) 書込先アドレス 0001 CRC(F70 命令などで算出 ) 書込データ 0064 (K100) -6-
MODBUS マスタデータ送信プログラム ( 例 )FPΣ と弊社製温調器 KT4H で通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブの KT4H の設定値を書き込みます 実行条件 R100 が ON すると FPΣ の DT20 の値を KT4H の設定値エリア (0001H) に書き込みます マスタ R100 ON スレーブ 局番 1 DT20 書き込み 0001H COM1 RS485 通常 設定値書き込みには前頁のようなコマンドが必要ですが マスタに FPΣ のような MODBUS マスタ機能搭載機種をご使用頂くと 煩わしいコマンドを考えて頂くことはありません 下図のように専用命令を使用して簡単にデータの書き込みプログラムを作成できます! MODBUS マスタデータ書き込みプログラム 専用命令 F145 SEND -7-
MODBUS マスタデータ受信プログラム ( 例 )FPΣ と弊社製温調器 KT4H で通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブ ( 局番 1) の KT4H の経過値を読み出します マスタ スレーブ 局番 1 経過値読み出し COM1 RS485 MODBUS RTU 通信時 スレーブ機器へのデータ読み出しは次のようなコマンドを送信する必要があります (Hex) 01 03 00 00 00 01 78 3C スレーブ局番 01 機能コード 03 ( 保持レジスタ読み出し ) 読出元アドレス 0000 CRC(F70 命令などで算出 ) 読出し個数 0001 (1 ワード ) -8-
MODBUS マスタデータ受信プログラム ( 例 )FPΣ と弊社製温調器 KT4H で通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブ ( 局番 1) の KT4H の経過値を読み出します マスタ スレーブ 局番 1 KT4H の各データエリアには MODBUS RTU 通信用のアドレスが割付られています 経過値読み出し アドレス 0080H データ項目 PV( プロセス値 ) データ COM1 RS485 0081H 0082H OUT1 操作量 OUT2 操作量経過値 右上の表より KT4H の経過値は 0080H というアドレスであることがわかります 今回のように局番 1 の経過値エリア (0080H) の値を読み込む場合は 次のようなコマンドを送信します (Hex) 01 03 00 80 00 01 B8 15 スレーブ局番 01 機能コード 03 ( 保持レジスタ読み出し ) 読出元アドレス 0080 CRC(F70 命令などで算出 ) 読出個数 0001 (1 個 ) -9-
MODBUS マスタデータ受信プログラム ( 例 )FPΣ と弊社製温調器 KT4H で通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブ ( 局番 1) の KT4H の経過値を読み出します 実行条件 R200 が ON すると KT4H の経過値エリア (0080H) の値を FPΣ の DT30 に読み出します マスタ R200 ON スレーブ 局番 1 DT30 読出し 0080H COM1 RS485 通常 設定値書き込みには前頁のようなコマンドが必要ですが マスタに FPΣ のような MODBUS マスタ機能搭載機種をご使用頂くと 煩わしいコマンドを考えて頂くことはありません 下図のように専用命令を使用して簡単にデータの書き込みプログラムを作成できます! MODBUS マスタデータ読出しプログラム 専用命令 F146 RECV -10-
PLCシリアル通信 MODBUS 通信データ送信 / 受信プログラム例 MODBUSマスタデータ送信 F145(SEND) 命令について F145(SEND) データの送信 (MODBUS マスタモードの場合 ) 指定のデータをユニットのシリアルポートから他のPLCやコンピュータに送信します ラダー表記 [ S1 ] [ S2 ] [ D ] [ N ] 動作説明 指定するユニットのシリアルポート (COM1 もしくは COM2) に MODBUS コマンド受信可能なユニットを接続し MODBUS モード時にコマンドを送信を行うときに使用します (MODBUS コマンド 05 06 15 16) プログラム動作 内部リレー R0 が ON のとき DT10+DT11 の 2 ワードに格納されたコントロールコードに従って DT20 に格納されているデータを相手局の DT100 に送信します -11-
PLCシリアル通信 MODBUS 通信データ送信 / 受信プログラム例 MODBUSマスタデータ送信 F145(SEND) 命令について 各項目の設定 (1)[S1] [S1+1] の2ワードに格納するコントロールコードを作成します 1[S1] 転送単位 ( ワード単位 ビット単位 ) 転送方法を16 進数 (H ) にて指定 ワード単位で送信時 [S1] H0 H0 H0 H1 ワード単位転送 送信ワード数を指定 (H001~H07F) MODBUS プロトコル上の制限による ビット単位で送信時 [S1] H8 H0 H0 固定 H1 ビット単位転送 送信データ格納エリア ( 自局 ) のビット No.(H0~HF) 送信先エリア ( 相手局 ) のビット No.(H0~HF) 2[S1+1] 相手局の指定 (16 進数 H ) H0 [S1+1] H1 H0 固定 H1 COMポート選択 COM1:H 1 COM2:H 2 相手先のユニット No.(H 00~H 63) (0~99) -12-
PLCシリアル通信 MODBUS 通信データ送信 / 受信プログラム例 MODBUSマスタデータ送信 F145(SEND) 命令について 各項目の設定 (2)[S2] に送信元データ格納エリアを指定 (3)[D] [N] で相手局のデータ送信先エリアを指定 [D] にはメモリエリアの種類を指定 デバイス番号は 0 を指定 [N] には [D] で指定したメモリエリアのアドレスを指定 ( 例 ) 送信先エリアが DT100 の場合 [D] DT0 [N] K100 S1][S1+1],[S2],[D],[N] で指定されたオペランドに従って MODBUS コマンドを作成します ワード単位転送時 : コマンド 06(DT1 ワード書き込み ) コマンド 15(Y R 複数点書き込み ) コマンド 16(DT 複数ワード書き込み ) 送信可能 ビット単位転送時 : コマンド 05(Y R 単点書き込み ) 送信可能 MODBUS コマンド作成後に終端に CRC を 2 バイト付加して送信します -13-
MODBUS マスタデータ送信 F145(SEND) 命令について F145 使用時の注意点 使用する COM ポートの動作モードは MODBUS RTU を指定して下さい 同一の通信ポートに対して 複数の SEND 命令 (F145) や RECV 命令 (F146) を同時に実行することは出来ません 特殊内部リレーの SEND/RECV 実行可フラグ (R9044 R904A) が ON の時に実行されるようプログラムして下さい SEND/RECV 実行可フラグ R9044 (COM1) R904A (COM2) 0 : 実行不可 (SEND/RECV 命令実行中 ) 1 : 実行可 0 : 実行不可 (SEND/RECV 命令実行中 ) 1 : 実行可 下記のように使用します データ送信の実行条件 R100 が ON した時 COM1 ポート用実行可フラグ (R9044) が ON ならば データ送信 (F145 命令実行 ) COM1 ポート用実行可フラグ -14-
MODBUS マスタデータ送信 F145(SEND) 命令について F145 使用時の注意点 SEND 命令では送信要求を行うだけで 実際の処理は ED 命令時に行います 送信が完了したかどうかは 下記 SEND/RECV 完了フラグを使用して確認してください R9045 (C0M1) DT90124 (C0M1) R904B (C0M2) DT90125 (C0M2) 0: 正常終了 1: 異常終了 ( エラーコードはDT90124) 異常終了時 (R9045:ON) 異常内容 ( エラーコード ) を格納 0: 正常終了 1: 異常終了 ( エラーコードはDT90125) 異常終了時 (R904B:ON) 異常内容 ( エラーコード ) を格納 エラーコードの内容については エラーコード一覧表をご参照ください 例えば エラーコードが H73 の場合は レスポンス待ちタイムアウトです タイムアウト時間は システムレジスタ No.32 の設定で 10.0ms~81.9s (2.5ms 単位 ) の範囲で変更できます デフォルト値では 10s に設定されています コード (HEX) 73 異常内容レスポンス待ちタイムアウトエラー グローバル転送 ( ユニット No. に H00 を指定して行う送信 ) の場合は 送信完了後も 最大スキャン時間程度待ってから送信されるようにプログラムしてください 特殊内部リレー (R9000~) 及び 特殊データレジスタ (DT90000~) ファイルレジスタFLへのF145 F146の実行はできません -15-
PLCシリアル通信 MODBUS 通信データ送信 / 受信プログラム例 MODBUSマスタデータ受信 F146(RECV) 命令について F146(RECV) データの受信 (MODBUS マスタモードの場合 ) 指定のデータを他のPLCやコンピュータのシリアルポートからユニットに受信します ラダー表記 [S1 ] [S2 ] [N] [D] 動作説明 指定するユニットのシリアルポート (COM1 もしくは COM2) に MODBUS コマンド受信可能なユニットを接続し MODBUS モード時にコマンドを送信を行うときに使用します (MODBUS コマンド 01 02 03 04) プログラム動作 内部リレー R0 が ON のとき DT10+DT11 の 2 ワードに格納されたコントロールコードに従って 相手局の DT100 のデータを受信し DT50( 自局 ) に格納します -16-
PLCシリアル通信 MODBUS 通信データ送信 / 受信プログラム例 MODBUSマスタデータ受信 F146(RECV) 命令について 各項目の設定 (1)[S1] [S1+1] の2ワードに格納するコントロールコードを作成します 1[S1] 転送単位 ( ワード単位 ビット単位 ) 転送方法を16 進数 (H ) にて指定 ワード単位で送信時 [S1] H0 H0 H0 H1 ワード単位転送 受信ワード数を指定 (H001~H07F) MODBUS プロトコル上の制限による ビット単位で送信時 [S1] H8 H0 H0 固定 H1 ビット単位転送 受信データ格納エリア ( 自局 ) のビット No.(H0~HF) 受信元エリア ( 相手局 ) のビット No.(H0~HF) 2[S1+1] 相手局の指定 (16 進数 H ) H0 [S1+1] H1 H0 固定 H1 COMポート選択 COM1:H 1 COM2:H 2 相手先のユニット No.(H 00~H 63) (0~99) -17-
MODBUS マスタデータ受信 F146(RECV) 命令について 各項目の設定 (2)[S2] [N] で相手局のデータ受信元エリアを指定 [S2] にはメモリエリアの種類を指定 デバイス番号は 0 を指定 [N] には [S2] で指定したメモリエリアのアドレスを指定 ( 例 ) 送信先エリアが DT100 の場合 [S2] DT0 [N] K100 (3)[D] に受信したデータの格納エリアを指定 S1][S1+1],[S2],[N],[D] で指定されたオペランドに従って MODBUS コマンドを作成します ワード単位転送時 : コマンド 01(Y R コイル読み出し ) コマンド 02(X 接点読み出し ) コマンド 03(DT 読み出し ) コマンド 04(WL LD 読み出し ) 送信可能 ビット単位転送時 : コマンド 01(Y R コイル読み出し ) コマンド 02(X 接点読み出し ) 送信可能 MODBUS コマンド作成後に終端に CRC を 2 バイト付加して送信します -18-
MODBUS マスタデータ受信 F146(RECV) 命令について F146 使用時の注意点 使用する COM ポートの動作モードは MODBUS RTU を指定して下さい 同一の通信ポートに対して 複数の SEND 命令 (F145) や RECV 命令 (F146) を同時に実行することは出来ません 特殊内部リレーの SEND/RECV 実行可フラグ (R9044 R904A) が ON の時に実行されるようプログラムして下さい SEND/RECV 実行可フラグ R9044 (COM1) R904A (COM2) 0 : 実行不可 (SEND/RECV 命令実行中 ) 1 : 実行可 0 : 実行不可 (SEND/RECV 命令実行中 ) 1 : 実行可 下記のように使用します データ受信の実行条件 R200 が ON した時 COM1 ポート用実行可フラグ (R9044) が ON ならば データ受信 (F146 命令実行 ) COM1 ポート用実行可フラグ -19-
PLCシリアル通信 MODBUS 通信データ送信 / 受信プログラム例 MODBUSマスタデータ受信 F146(RECV) 命令について F146 使用時の注意点 エラー発生時 下記のSEND/RECV 完了フラグがONになり エラーコードが特殊 DTに格納されます R9045 (C0M1) DT90124 (C0M1) R904B (C0M2) DT90125 (C0M2) 0: 正常終了 1: 異常終了 ( エラーコードはDT90124) 異常終了時 (R9045:ON) 異常内容 ( エラーコード ) を格納 0: 正常終了 1: 異常終了 ( エラーコードはDT90125) 異常終了時 (R904B:ON) 異常内容 ( エラーコード ) を格納 エラーコードの内容については エラーコード一覧表をご参照ください 例えば エラーコードが H73 の場合は レスポンス待ちタイムアウトです タイムアウト時間は システムレジスタ No.32 の設定で 10.0ms~81.9s (2.5ms 単位 ) の範囲で変更できます デフォルト値では 10s に設定されています コード (HEX) 73 異常内容レスポンス待ちタイムアウトエラー グローバル転送 ( ユニット No. に H00 を指定して行う送信 ) の場合は 送信完了後も 最大スキャン時間程度待ってから送信されるようにプログラムしてください 特殊内部リレー (R9000~) 及び 特殊データレジスタ (DT90000~) ファイルレジスタ FL への F145 F146 の実行はできません -20-