5. サンプルプログラム
5.2 サンプルプログラムの詳細
5.2.1 GX/GP/GMのチャネルを読み出す
2 秒周期で GX/GP/GM のチャネル 0001 ~ 0010 の値を読み出し、MELSEC-Q のデータレ ジスタ D0 ~ D19 に格納します。
以下のレジスタとファンクションコードを使います。
GX/GP/GMのレジスタ
項目 レジスタ レジスタ相対番号 型
チャネル 0001 のデータ 下位ワード 300001 0 INT32 チャネル 0001 のデータ 上位ワード 300002 1 INT32
: : : :
チャネル 0010 のデータ 下位ワード 300019 18 INT32 チャネル 0010 のデータ 上位ワード 300020 19 INT32
ファンクションコード:4 MELSEC-Qのデータレジスタ
項目 レジスタ
チャネル 0001 のデータ 下位ワード DO チャネル 0001 のデータ 上位ワード D1
: :
チャネル 0010 のデータ 下位ワード D18 チャネル 0010 のデータ 上位ワード D19
[動作]
・ 内部リレー M100 が 0 から 1 に変化したときに、GX/GP/GM とのコネクションをオー プンして通信を開始します。
・ 2 秒周期で、読み出し命令を送信、GX/GP/GM からのレスポンスの受信を繰り返します。
・ 内部リレー M101 が 0 から 1 に変化したときに、GX/GP/GM とのコネクションをクロー ズして通信を終了します。
0 SM413 秒 2 クロッ ク
SET M2029 示 指 D N E S
* 開始指示 3 M100
開始指示1PLS
SD1282.0 オープン完了信号
SET M2000 示 指 N E P O
RST M2020 相手機器よりクロ ーズ
RST M2021 示 指 E S O L C
RST M2024 令 命 E S O L C 実行中
RST M2029 示 指 D N E S
RST M2039 指 E V I E C E R 示
MOV K0 D1300
エラーコード
* 終了指示 4 1 M101
終了指示1PLS
SET M2021 示 指 E S O L C
5. 通信
5-5
* OPEN(コネクションNo.1)
<実行/完了タイプを0にセット >
7 1 M2000
示 指 N E P O
SD1282.0 オープン完了信号
SD1284.0 オープン要求信号
SD1288.A 蔵 内 Ethe rnetポー 状 続 接 ト態
MOVP H0 D2001 令 命 N E P Oコントロ ールデータ
SP.SOCOPEN "U0" K1 D2001 令 命 N E P Oコントロ ールデータ
M2001 令 命 N E P O完了
時 了 完 行 実 令 命 N E P O
*
<正常OPEN >
1 5 M2001
令 命 N E P O完了
M2002 令 命 N E P O異常
SET M2003 令 命 N E P O正常完了
<異常OPEN >
M2002 令 命 N E P O異常
SET M2004 令 命 N E P O異常完了
RST M2000 示 指 N E P O
* CLOSE(コネクションNo.1) 3
7 SD1282.0 オープン完了信号
SD1284.0 オープン要求信号
SET M2020 相手機器よりクロ ーズ
7 7 M2021
示 指 E S O L C
SD1282.0 オープン完了信号
M2024 令 命 E S O L C 実行中
SP.SOCCLOSE "U0" K1 D2022 令 命 E S O L C コントロ ールデータ
M2022 令 命 E S O L C 完了
M2020 相手機器よりクロ ーズ
SET M2024 令 命 E S O L C 実行中
4 9 M2022
令 命 E S O L C 完了
M2023 令 命 E S O L C 異常
SET M2025
令 命 E S O L C 正常完了
<異常CLOSE >
M2023 令 命 E S O L C 異常
SET M2026
令 命 E S O L C 異常完了
RST M2020
相手機器よりクロ ーズ
RST M2021
示 指 E S O L C
RST M2024
令 命 E S O L C 実行中
5. 通信
5-7
* SEND(コネクションNo.1)
<送信データ長 >
9 1
1 M2029 示 指 D N E
S MOV K12 D1000
信
送 デー
長 タ
<転送ID >
MOV H0 D1001
信
送 デー
タ1
<プロトコルID >
MOV H0 D1002
信
送 デー
タ2
<バイト数 >
MOV H600 D1003
信
送 デー
タ3
<ユニットID,ファンクションコード >
MOV H4FF D1004
信
送 デー
タ4
<開始レジスタ相対番号 >
MOV H0 D1005
信
送 デー
タ5
<レジスタ数 >
MOV K20 D1006
信
送 デー
タ6
<レジスタ数を格納 >
MOV D1006 信
送 デー
タ6
D1510 レジスタ数
<上位バイト下位バイトの入替 >
SWAP D1006 信
送 デー
タ6
8 2
2 S END指示 オープン 完了信号
SP.SOCSND "U0" K1 D2030 令 命 D N E S コントロ ールデータ
D1000 信
送 デー
長 タ
M2030 令 命 D N E S 完了
時 了 完 行 実 令 命 D N E S
* <正常SEND >
2 4
2 M2030 令 命 D N E S 完了
M2031 令 命 D N E S 異常
SET M2032
令 命 D N E S 正常完了
<異常SEND >
M2031 令 命 D N E S 異常
SET M2033
令 命 D N E S 異常完了
SET M2039
指 E V I E C E R 示
* RECEIVE(コネクションNo.1) 4
6
2 M2039 指 E V I E C E R 示
SD1282.0 オープン完了信号
SD1286.0 受信状態信号
M2040 命 E V I E C E R 令完了
SP.SOCRCV "U0" K1 D2040 命 E V I E C E R コント 令ロールデ ータ
D1100 信
受 デー
長 タ
M2040 命 E V I E C E R 令完了
5. 通信
5-9
時 了 完 行 実 令 命 E V I E C E R
* <正常RECEIVE >
1 8
2 M2040 命 E V I E C E R 令完了
M2041 命 E V I E C E R 令異常
SET M2042
命 E V I E C E R 令正常完 了
<エラーチェック >
CALL P2 <受信データの移動 >
M2050 エラーコド
ー 受信
CALL P0
<異常RECEIVE >
M2041 命 E V I E C E R 令異常
SET M2043
命 E V I E C E R 令異常完 了
RST M2029
示 指 D N E S
RST M2039
指 E V I E C E R 示
2 3
3 FEND
信 受
* データの移動
<受信データのオフセット >
3 3
P0 3 SM400 時
常 OPEN MOV K0 Z0
<データ移動先のオフセット >
MOV K0 Z1
7 6
3 FOR D1510
レジスタ数
9 6
3 常時OPEN MOV D1105Z0
信
受 デー
タ5
D1500 WORK1
MOV D1106Z0 信
受 デー
タ6
D1501 WORK2
<下位1バイトをマスク >
WAND H0FF00 D1500 WORK1
<上位1バイトをマスク >
WAND H0FF D1501 WORK2
<結合 >
WOR D1500
WORK1 D1501 WORK2
MOV D1501
WORK2 D0Z1 チャネル001の
0 下
タ ー デ 位
INC Z0
INC Z1
5 1
4 NEXT
6 1
4 RET
5. 通信
5-11
* エラーチェック 7 1
P2 4 SM400 時
常 OPEN MOV D1104
信 受 デー タ4
D1500 WORK1
<下位1バイトをマスク >
WAND H0FF00 D1500 WORK1
<上位バイト下位バイトの入替 >
SWAP D1500 WORK1
<= H80 D1500
WORK1 SET M2050
エラーコド ー 受信
MOV D1105 信 受 デー タ5
D1501 WORK2
<上位1バイトをマスク >
WAND H0FF D1501 WORK2
MOV D1501
WORK2 D1300 エラーコード
> H80 D1500
WORK1 RST M2050
エラーコド ー 受信
3 8
4 RET
4 8
4 END