SIMATIC
TIA ポータルの説明 S7-1200/1500

プログラミング/操作マニュアル

12/2020

ライブラリの例

1

非同期命令

2

基本命令

3

拡張命令

4

テクノロジー5

通信6

法律上の注意
警告事項
本書には、ユーザーの安全性を確保し製品の損傷を防止するうえ守るべき注意事項が記載されています。ユーザーの安全性に関する注意事項は、安全警告サインで強調表示されています。このサインは、物的損傷に関する注意事項には表示されません。以下に表示された注意事項は、危険度によって等級分けされています。
危険
回避しなければ、直接的な死または重傷に至る危険状態を示します。
警告
回避しなければ、死または重傷に至るおそれのある危険な状況を示します。
注意
回避しなければ、軽度または中度の人身傷害を引き起こすおそれのある危険な状況を示します。
通知
回避しなければ、物的損傷を引き起こすおそれのある危険な状況を示します。
複数の危険レベルに相当する場合は、通常、最も危険度の高い事項が表示されることになっています。安全警告サ
イン付きの人身傷害に関する注意事項があれば、物的損傷に関する警告が付加されます。

有資格者
本書が対象とする製品 / システムは必ず有資格者が取り扱うものとし、各操作内容に関連するドキュメント、特に安全上の注意及び警告が遵守されなければなりません。有資格者とは、訓練内容及び経験に基づきながら当該製品 / シ
ステムの取り扱いに伴う危険性を認識し、発生し得る危害を事前に回避できる者をいいます。

シーメンス製品を正しくお使いいただくために
以下の事項に注意してください。
警告
シーメンス製品は、カタログおよび付属の技術説明書の指示に従ってお使いください。他社の製品または部品との併用は、弊社の推奨もしくは許可がある場合に限ります。製品を正しく安全にご使用いただくには、適切な運搬、保管、組み立て、据え付け、配線、始動、操作、保守を行ってください。ご使用になる場所は、許容された範囲を必ず守ってください。付属の技術説明書に記述されている指示を遵守してください。

商標®マークのついた称号はすべて Siemens AG の商標です。本書に記載するその他の称号は商標であり、第三者が自己の目的において使用した場合、所有者の権利を侵害することになります。

免責事項
本書のハードウェアおよびソフトウェアに関する記述と、実際の製品内容との一致については検証済みです。 しかしなお、本書の記述が実際の製品内容と異なる可能性もあり、完全な一致が保証されているわけではありません。 記
載内容については定期的に検証し、訂正が必要な場合は次の版て更新いたします。

Siemens AG
Digital Industries
Postfach 48 48
90026 NÜRNBERG
ドイツⓅ 12/2020 変更する権利を留保

Copyright © Siemens AG 2020.
無断複写・転載を禁じます

目次
1

2

ライブラリの例 ............................................................................................................................. 25
1.1

Sample Library for Instructions..................................................................................... 25

1.2

Library of General Functions ........................................................................................ 27

非同期命令 .................................................................................................................................... 29
2.1

3

同期命令と非同期命令の相違 ...................................................................................... 29

基本命令 ........................................................................................................................................ 33
3.1
3.1.1
3.1.1.1
3.1.1.2
3.1.1.3
3.1.1.4
3.1.1.5
3.1.1.6
3.1.1.7
3.1.1.8
3.1.1.9
3.1.1.10
3.1.1.11
3.1.1.12
3.1.1.13
3.1.1.14
3.1.1.15
3.1.1.16
3.1.1.17
3.1.1.18
3.1.1.19
3.1.2
3.1.2.1
3.1.2.2
3.1.2.3
3.1.2.4
3.1.2.5
3.1.2.6
3.1.2.7
3.1.2.8
3.1.2.9

LAD............................................................................................................................. 33
ビット論理演算........................................................................................................... 33---| |---:ノーマルオープン ................... 33---| / |---: ノーマルクローズ .......................................................................................... 34--|NOT|--: RLO の反転 ................................................................................................... 36---( )---: 割り当て........................................................................................................ 36--( / )--:否定割り当て.................................................................................................... 37---( R )---: 出力のリセット ............................................................................................ 38---( S )---: 出力のセット................................................................................................ 39
SET_BF:ビットフィールドのセット.............................................................................. 40
RESET_BF:ビットフィールドのリセット ...................................................................... 42
SR: フリップフロップのセット/リセット ..................................................................... 43
RS: フリップフロップのリセット/セット ..................................................................... 45--|P|--:立ち上がりエッジのオペランドスキャン ........................................................... 47--|N|--:立ち下がりエッジのオペランドスキャン........................................................... 49--(P)--:信号立ち上がりエッジのオペランドの設定 ....................................................... 51--(N)--:信号立ち下がりエッジのオペランドの設定 ....................................................... 52
P_TRIG: 立ち上がりエッジの RLO スキャン .................................................................. 53
N_TRIG: 立ち下がりエッジの RLO スキャン ................................................................. 55
R_TRIG: 信号立ち上がりエッジを検出.......................................................................... 56
F_TRIG: 信号立ち下がりエッジの検出.......................................................................... 57
タイマの動作 .............................................................................................................. 59
TP:パルスの生成.......................................................................................................... 59
TON:オンディレータイマ ............................................................................................ 63
TOF:オフディレータイマ............................................................................................. 68
TONR: タイムアキュムレータ ...................................................................................... 73---( TP )---:パルスタイマの起動..................................................................................... 79---( TON )---:オンディレータイマの起動 ....................................................................... 83---( TOF )---:オフディレータイマの起動........................................................................ 87---( TONR )---:タイムアキュムレータ ............................................................................ 91---( RT )---:タイマのリセット ........................................................................................ 95

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3目次

3.1.2.10
3.1.2.11
3.1.3
3.1.3.1
3.1.3.2
3.1.3.3
3.1.3.4
3.1.4
3.1.4.1
3.1.4.2
3.1.4.3
3.1.4.4
3.1.4.5
3.1.4.6
3.1.4.7
3.1.4.8
3.1.4.9
3.1.4.10
3.1.4.11
3.1.5
3.1.5.1
3.1.5.2
3.1.5.3
3.1.5.4
3.1.5.5
3.1.5.6
3.1.5.7
3.1.5.8
3.1.5.9
3.1.5.10
3.1.5.11
3.1.5.12
3.1.5.13
3.1.5.14
3.1.5.15
3.1.5.16
3.1.5.17
3.1.5.18
3.1.5.19
3.1.5.20
3.1.5.21
3.1.5.22
3.1.5.23
3.1.5.24
3.1.5.25

4---( PT )---:持続時間のロード ........................................................................................ 97
レガシー ................................................................................................................... 100
カウンタ演算 ............................................................................................................ 126
CTU: カウントアップ................................................................................................. 126
CTD: カウントダウン................................................................................................. 129
CTUD: カウントアップ/カウントダウン ..................................................................... 132
レガシー ................................................................................................................... 137
比較演算 ................................................................................................................... 148
CMP ==:等価 ............................................................................................................. 148
CMP <>:不等価 .......................................................................................................... 153
CMP >=:以上 ............................................................................................................. 159
CMP <=:以下 ............................................................................................................. 162
CMP >:超過 ............................................................................................................... 164
CMP <:未満 ............................................................................................................... 167
IN_RANGE:範囲内の値 ............................................................................................... 169
OUT_RANGE:範囲外の値............................................................................................ 171----I OK I----:有効性のチェック.................................................................................... 172----I NOT_OK I----:無効性のチェック ........................................................................... 173
VARIANT.................................................................................................................... 174
四則演算 ................................................................................................................... 190
CALCULATE:計算........................................................................................................ 190
ADD:加算 .................................................................................................................. 194
SUB:減算 ................................................................................................................... 196
MUL:乗算 .................................................................................................................. 197
DIV:除算 .................................................................................................................... 199
MOD:除算の剰余を返す............................................................................................. 200
NEG:2 の補数の作成.................................................................................................. 201
INC:インクリメント .................................................................................................. 203
DEC:デクリメント ..................................................................................................... 204
ABS:絶対値の形成 ..................................................................................................... 206
MIN:最小値の取得 ..................................................................................................... 207
MAX:最大値の取得 .................................................................................................... 209
LIMIT:制限値の設定 ................................................................................................... 211
SQR:2 乗値の形成...................................................................................................... 214
SQRT:平方根の形成 ................................................................................................... 216
LN:自然対数の形成.................................................................................................... 217
EXP:指数値の形成 ..................................................................................................... 219
SIN:正弦値の形成 ...................................................................................................... 220
COS:余弦値の形成 ..................................................................................................... 222
TAN:正接値の形成 ..................................................................................................... 223
ASIN:逆正弦値の形成 ................................................................................................ 225
ACOS:逆余弦値の形成 ............................................................................................... 226
ATAN:逆正接値の形成................................................................................................ 228
FRAC:小数部を返す ................................................................................................... 230
EXPT:累乗.................................................................................................................. 231
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

3.1.6
3.1.6.1
3.1.6.2
3.1.6.3
3.1.6.4
3.1.6.5
3.1.6.6
3.1.6.7
3.1.6.8
3.1.6.9
3.1.6.10
3.1.6.11
3.1.6.12

ムーブ操作................................................................................................................ 233
MOVE:移動値 ............................................................................................................ 233
Deserialize: 逆シリアル化 .......................................................................................... 241
Serialize:シリアル化: ................................................................................................. 247
MOVE_BLK:ブロックの移動 ....................................................................................... 253
MOVE_BLK_VARIANT:ブロックの移動 ........................................................................ 256
UMOVE_BLK:割り込みなしブロック転送 ................................................................... 262
FILL_BLK:フィル命令 ................................................................................................. 265
UFILL_BLK:割り込み不可フィル命令 .......................................................................... 269
SCATTER:ビットシーケンスを個々のビットに解析 .................................................... 274
SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析 ......... 279
GATHER:個々のビットをビットシーケンスに結合 ..................................................... 285
GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合 ... 290

3.1.6.14
3.1.6.15
3.1.6.16
3.1.6.17
3.1.6.18
3.1.7
3.1.7.1
3.1.7.2
3.1.7.3
3.1.7.4
3.1.7.5
3.1.7.6
3.1.7.7
3.1.7.8
3.1.8
3.1.8.1
3.1.8.2
3.1.8.3
3.1.8.4
3.1.8.5
3.1.8.6
3.1.8.7
3.1.9
3.1.9.1
3.1.9.2
3.1.9.3
3.1.9.4
3.1.9.5
3.1.9.6
3.1.9.7
3.1.9.8

SWAP:スワップ.......................................................................................................... 297
配列 DB ..................................................................................................................... 299
VARIANT.................................................................................................................... 313
ARRAY[*]................................................................................................................... 319
レガシー ................................................................................................................... 322
変換操作 ................................................................................................................... 338
CONVERT: 値の変換 ................................................................................................... 338
ROUND: 数値の四捨五入 ........................................................................................... 341
CEIL:浮動小数点数から次に大きい整数を生成 ........................................................... 342
FLOOR:浮動小数点数から次に小さい整数を生成 ....................................................... 344
TRUNC: 数値の切り捨て ............................................................................................ 345
SCALE_X: スケール.................................................................................................... 347
NORM_X: 正規化 ....................................................................................................... 349
レガシー ................................................................................................................... 352
プログラム制御演算.................................................................................................. 358---( JMP ):RLO = 1 ならばジャンプ.............................................................................. 358---( JMPN ):RLO = 0 ならばジャンプ ........................................................................... 359
LABEL:ジャンプラベル .............................................................................................. 360
JMP_LIST:ジャンプリストの定義................................................................................ 362
SWITCH:ディストリビュータにジャンプ.................................................................... 364--(RET):Return............................................................................................................ 367
ランタイム制御......................................................................................................... 369
ワード論理演算......................................................................................................... 393
AND: AND 演算.......................................................................................................... 393
OR: OR 論理和演算 .................................................................................................... 395
XOR: EXCLUSIVE OR 排他的論理和演算 ...................................................................... 397
INVERT: 1 の補数の作成............................................................................................. 398
DECO: デコード......................................................................................................... 400
ENCO: エンコード ..................................................................................................... 401
SEL: 選択 ................................................................................................................... 402
MUX: 多重化 ............................................................................................................. 405

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

5

目次

6

3.1.9.9
3.1.103.1.10.1
3.1.10.2
3.1.10.3
3.1.10.4
3.1.11
3.1.11.1
3.1.11.2
3.1.11.3
3.1.11.4
3.1.11.5
3.1.11.6
3.1.11.7
3.1.11.8
3.1.11.9

DEMUX: 逆多重化...................................................................................................... 409
シフトとローテーション........................................................................................... 412
SHR:右へシフト......................................................................................................... 412
SHL:左へシフト ......................................................................................................... 415
ROR:右へローテーション........................................................................................... 417
ROL:左へローテーション........................................................................................... 419
レガシー ................................................................................................................... 422
DRUM:PLC 実行 ......................................................................................................... 422
DCAT:ディスクリート制御タイマアラーム................................................................. 430
MCAT:モータ制御タイマアラーム.............................................................................. 434
IMC:入力ビットをマスクビットと比較 ...................................................................... 439
SMC:スキャンマトリックスの比較 ............................................................................ 442
LEAD_LAG:リード/ラグアルゴリズム ........................................................................ 445
SEG:7 セグメント表示のビットパターンの作成......................................................... 448
BCDCPL:10 の補数の作成........................................................................................... 450
BITSUM:セットビット数カウント .............................................................................. 452

3.2
3.2.1
3.2.1.1
3.2.1.2
3.2.1.3
3.2.1.4
3.2.1.5
3.2.1.6
3.2.1.7
3.2.1.8
3.2.1.9
3.2.1.10
3.2.1.11
3.2.1.12
3.2.1.13
3.2.1.14
3.2.1.15
3.2.1.16
3.2.1.17
3.2.1.18
3.2.1.19
3.2.1.20
3.2.1.21
3.2.1.22
3.2.1.23
3.2.1.24
3.2.2
3.2.2.1

FBD ........................................................................................................................... 453
ビット論理演算......................................................................................................... 453&: AND 演算............................................................................................................... 453
論理積の真理値表 ..................................................................................................... 454>=1: OR 論理和演算 .................................................................................................. 455
論理和の真理値表 ..................................................................................................... 456
X: EXCLUSIVE OR 排他的論理和演算........................................................................... 457
排他的論理和の真理値表........................................................................................... 458
入力の挿入................................................................................................................ 459
RLO の反転................................................................................................................ 460=:割り当て ................................................................................................................ 460/=: 否定割り当て ....................................................................................................... 461
R: 出力のリセット ..................................................................................................... 462
S:出力設定 ................................................................................................................ 463
SET_BF: ビットフィールドのセット........................................................................... 464
RESET_BF: ビットフィールドのリセット ................................................................... 466
SR: フリップフロップのセット/リセット ................................................................... 468
RS: フリップフロップのリセット/セット ................................................................... 469
P: 立ち上がりエッジのオペランドスキャン ............................................................... 471
N: 立ち下がりエッジのオペランドスキャン .............................................................. 473
P=: 立ち上がりエッジのオペランド設定.................................................................... 474
N=: 信号立ち下がりエッジのオペランドの設定......................................................... 476
P_TRIG:立ち上がりエッジの RLO スキャン................................................................. 477
N_TRIG:立ち下がりエッジの RLO スキャン ................................................................ 478
R_TRIG:信号立ち上がりエッジを検出 ........................................................................ 480
F_TRIG:信号立ち下がりエッジを検出 ........................................................................ 481
タイマの動作 ............................................................................................................ 482
TP: パルスの生成....................................................................................................... 482

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

3.2.2.2
3.2.2.3
3.2.2.4
3.2.2.5
3.2.2.6
3.2.2.7
3.2.2.8
3.2.2.9
3.2.2.10
3.2.2.11
3.2.3
3.2.3.1
3.2.3.2
3.2.3.3
3.2.3.4
3.2.4
3.2.4.1
3.2.4.2
3.2.4.3
3.2.4.4
3.2.4.5
3.2.4.6
3.2.4.7
3.2.4.8
3.2.4.9
3.2.4.10
3.2.4.11
3.2.5
3.2.5.1
3.2.5.2
3.2.5.3
3.2.5.4
3.2.5.5
3.2.5.6
3.2.5.7
3.2.5.8
3.2.5.9
3.2.5.10
3.2.5.11
3.2.5.12
3.2.5.13
3.2.5.14
3.2.5.15
3.2.5.16
3.2.5.17

TON: オンディレータイマ ......................................................................................... 487
TOF: オフディレータイマ .......................................................................................... 492
TONR: タイムアキュムレータ .................................................................................... 497
TP: パルスタイマの起動 ............................................................................................ 502
TON: オンディレータイマの起動 ............................................................................... 507
TOF: オフディレータイマの起動................................................................................ 511
TONR: タイムアキュムレータ .................................................................................... 515
RT: タイマのリセット ................................................................................................ 519
PT: 持続時間のロード ................................................................................................ 522
レガシー ................................................................................................................... 525
カウンタ演算 ............................................................................................................ 551
CTU: カウントアップ................................................................................................. 551
CTD: カウントダウン................................................................................................. 554
CTUD: カウントアップ/カウントダウン ..................................................................... 557
レガシー ................................................................................................................... 562
比較演算 ................................................................................................................... 573
CMP ==:等価 ............................................................................................................. 573
CMP <>:不等価 .......................................................................................................... 578
CMP >=:以上 ............................................................................................................. 584
CMP <=:以下 ............................................................................................................. 586
CMP >:超過 ............................................................................................................... 589
CMP <:未満 ............................................................................................................... 591
IN_RANGE:範囲内の値 ............................................................................................... 593
OUT_RANGE:範囲外の値............................................................................................ 594
OK:有効性のチェック................................................................................................ 596
NOT_OK:無効性のチェック ....................................................................................... 597
VARIANT.................................................................................................................... 598
四則演算 ................................................................................................................... 612
CALCULATE: 計算....................................................................................................... 612
ADD: 加算 ................................................................................................................. 617
SUB: 減算 .................................................................................................................. 619
MUL: 乗算 ................................................................................................................. 621
DIV: 除算 ................................................................................................................... 623
MOD: 除算の剰余を返す............................................................................................ 624
NEG: 2 の補数の作成 ................................................................................................. 626
INC: インクリメント.................................................................................................. 628
DEC: デクリメント .................................................................................................... 629
ABS: 絶対値の形成 .................................................................................................... 631
MIN: 最小値の取得 .................................................................................................... 632
MAX: 最大値の取得 ................................................................................................... 634
LIMIT: 制限値の設定 ........................................................ ........................................ 637
SQR: 2 乗値の形成..................................................................................................... 640
SQRT: 平方根の形成................................................................................................... 641
LN: 自然対数の形成................................................................................................... 643
EXP: 指数値の形成..................................................................................................... 644

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

7

目次

8

3.2.5.18
3.2.5.19
3.2.5.20
3.2.5.21
3.2.5.22
3.2.5.23
3.2.5.24
3.2.5.25
3.2.6
3.2.6.1
3.2.6.2
3.2.6.3
3.2.6.4
3.2.6.5
3.2.6.6
3.2.6.7
3.2.6.8
3.2.6.9
3.2.6.10
3.2.6.11
3.2.6.12

SIN: 正弦値の形成 ..................................................................................................... 645
COS: 余弦値の形成 .................................................................................................... 647
TAN: 正接値の形成 .................................................................................................... 648
ASIN: 逆正弦値の形成................................................................................................ 650
ACOS: 逆余弦値の形成............................................................................................... 651
ATAN: 逆正接値の形成............................................................................................... 653
FRAC: 小数部を返す................................................................................................... 654
EXPT: 累乗................................................................................................................. 656
ムーブ操作................................................................................................................ 658
MOVE: 値のムーブ .................................................................................................... 658
Deserialize:逆シリアル化........................................................................................... 666
Serialize:シリアル化: ................................................................................................. 672
MOVE_BLK: ブロックムーブ ...................................................................................... 678
MOVE_BLK_VARIANT: ブロックムーブ ....................................................................... 681
UMOVE_BLK: 割り込み不可能なブロックムーブ ........................................................ 687
FILL_BLK: フィル命令................................................................................................. 690
UFILL_BLK: 割り込み不可能なフィル命令 .................................................................. 695
SCATTER:ビットシーケンスを個々のビットに解析 .................................................... 700
SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析 ......... 705
GATHER:個々のビットをビットシーケンスに結合 ..................................................... 711
GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合 ... 716

3.2.6.14
3.2.6.15
3.2.6.16
3.2.6.17
3.2.6.18
3.2.7
3.2.7.1
3.2.7.2
3.2.7.3
3.2.7.4
3.2.7.5
3.2.7.6
3.2.7.7
3.2.7.8
3.2.8
3.2.8.1
3.2.8.2
3.2.8.3
3.2.8.4
3.2.8.5
3.2.8.6
3.2.8.7
3.2.9

SWAP: スワップ......................................................................................................... 723
配列 DB ..................................................................................................................... 725
VARIANT.................................................................................................................... 739
ARRAY[*]................................................................................................................... 745
レガシー ................................................................................................................... 748
変換操作 ................................................................................................................... 764
CONVERT:変換データ ................................................................................................ 764
ROUND:数値の四捨五入 ............................................................................................ 766
CEIL:浮動小数点数から次に大きい整数を生成 ........................................................... 768
FLOOR:浮動小数点数から次に小さい整数を生成 ....................................................... 769
TRUNC:値の切り捨て................................................................................................. 771
SCALE_X:スケール..................................................................................................... 772
NORM_X:正規化 ........................................................................................................ 775
レガシー ................................................................................................................... 778
プログラム制御演算.................................................................................................. 784
JMP: RLO = 1 ならばジャンプ .................................................................................... 784
JMPN: RLO = 0 ならばジャンプ .................................................................................. 785
LABEL: ジャンプラベル ............................................................................................. 786
JMP_LIST: ジャンプリストの定義............................................................................... 787
SWITCH: ディストリビュータにジャンプ ................................................................... 789
RET: 戻り値 ............................................................................................................... 793
ランタイム制御......................................................................................................... 795
ワード論理演算......................................................................................................... 818

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

3.2.9.1
3.2.9.2
3.2.9.3
3.2.9.4
3.2.9.5
3.2.9.6
3.2.9.7
3.2.9.8
3.2.9.9
3.2.103.2.10.1
3.2.10.2
3.2.10.3
3.2.10.4
3.2.11
3.2.11.1
3.2.11.2
3.2.11.3
3.2.11.4
3.2.11.5
3.2.11.6
3.2.11.7
3.2.11.8
3.2.11.9

AND: AND 演算.......................................................................................................... 818
OR: OR 論理和演算 .................................................................................................... 820
XOR: EXCLUSIVE OR 排他的論理和演算 ...................................................................... 822
INVERT: 1 の補数の作成............................................................................................. 824
DECO: デコード......................................................................................................... 825
ENCO: エンコード ..................................................................................................... 827
SEL: 選択 ................................................................................................................... 828
MUX: 多重化 ............................................................................................................. 831
DEMUX: 逆多重化...................................................................................................... 835
シフトとローテーション........................................................................................... 839
SHR:右へシフト......................................................................................................... 839
SHL:左へシフト ......................................................................................................... 841
ROR:右へローテーション........................................................................................... 843
ROL:左へローテーション........................................................................................... 845
レガシー ................................................................................................................... 848
DRUM:PLC 実行 ......................................................................................................... 848
DCAT:ディスクリート制御タイマアラーム................................................................. 856
MCAT:モータ制御タイマアラーム.............................................................................. 860
IMC:入力ビットをマスクビットと比較 ...................................................................... 865
SMC:スキャンマトリックスの比較 ............................................................................ 868
LEAD_LAG:リード/ラグアルゴリズム ........................................................................ 871
SEG:7 セグメント表示のビットパターンの作成......................................................... 874
BCDCPL:10 の補数の作成........................................................................................... 876
BITSUM:セットビット数カウント .............................................................................. 878

3.3
3.3.1
3.3.1.1
3.3.1.2
3.3.2
3.3.2.1
3.3.2.2
3.3.2.3
3.3.2.4
3.3.2.5
3.3.2.6
3.3.3
3.3.3.1
3.3.3.2
3.3.3.3
3.3.4
3.3.4.1
3.3.4.2
3.3.5
3.3.5.1

STL............................................................................................................................ 879
ビット論理演算......................................................................................................... 879
R_TRIG: 信号立ち上がりエッジの検出........................................................................ 879
F_TRIG: 信号立ち下がりエッジの検出........................................................................ 880
タイマの動作 ............................................................................................................ 881
TP: パルスの生成....................................................................................................... 881
TON: オンディレータイマ ......................................................................................... 885
TOF: オフディレータイマ .......................................................................................... 889
TONR: タイムアキュムレータ .................................................................................... 893
RESET_TIMER: タイマのリセット ............................................................................... 897
PRESET_TIMER: 持続時間のロード ............................................................................. 900
カウンタ演算 ............................................................................................................ 903
CTU: カウントアップ................................................................................................. 903
CTD: カウントダウン................................................................................................. 906
CTUD: カウントアップ/カウントダウン ..................................................................... 909
比較演算 ................................................................................................................... 913
CompType:タグ構造のデータタイプを比較 ............................................................... 913
VARIANT.................................................................................................................... 919
四則演算 ................................................................................................................... 933
MIN: 最小値の取得 .................................................................................................... 933

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

9

目次

10

3.3.5.2
3.3.5.3
3.3.6
3.3.6.1
3.3.6.2
3.3.6.3
3.3.6.4
3.3.6.5
3.3.6.6
3.3.6.7
3.3.6.8
3.3.6.9
3.3.6.10
3.3.6.11
3.3.6.12

MAX: 最大値の取得 ................................................................................................... 934
LIMIT: 制限値の設定 ................................................................................................. 936
移動操作 ................................................................................................................... 938
MOVE: 値のムーブ .................................................................................................... 938
Deserialize: 逆シリアル化 .......................................................................................... 941
Serialize: シリアル化 ................................................................................................. 948
MOVE_BLK: ブロックムーブ ...................................................................................... 953
MOVE_BLK_VARIANT: ブロックムーブ ....................................................................... 955
UMOVE_BLK: 割り込み不可能なブロックムーブ ........................................................ 961
FILL_BLK: フィル命令................................................................................................. 963
UFILL_BLK: 割り込み不可能なフィル命令 .................................................................. 967
SCATTER:ビットシーケンスを個々のビットに解析 .................................................... 971
SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析 ......... 973
GATHER:個々のビットをビットシーケンスに結合 ..................................................... 978
GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合 ... 980

3.3.6.14
3.3.6.15
3.3.6.16
3.3.6.17
3.3.6.18
3.3.7
3.3.7.1
3.3.7.2
3.3.7.3
3.3.7.4
3.3.8
3.3.8.1
3.3.9
3.3.9.1
3.3.9.2
3.3.9.3
3.3.103.3.10.1
3.3.10.2
3.3.10.3
3.3.10.4
3.3.10.5
3.3.10.6
3.3.10.7
3.3.10.8
3.3.10.9
3.3.11
3.3.11.1
3.3.11.2

配列 DB ..................................................................................................................... 985
読み取り/書き込みアクセス ...................................................................................... 997
VARIANT.................................................................................................................. 1017
ARRAY[*]................................................................................................................. 1021
レガシー ................................................................................................................. 1024
変換操作 ................................................................................................................. 1035
SCALE_X: スケール.................................................................................................. 1035
NORM_X: 正規化 ..................................................................................................... 1037
VARIANT.................................................................................................................. 1039
レガシー ................................................................................................................. 1045
プログラム制御演算................................................................................................ 1051
ランタイム制御....................................................................................................... 1051
ワード論理演算....................................................................................................... 1072
DECO: デコード....................................................................................................... 1072
ENCO: エンコード ................................................................................................... 1073
SEL: 選択 ................................................................................................................. 1074
レガシー ................................................................................................................. 1076
DRUM:PLC 実行 ....................................................................................................... 1076
DCAT:ディスクリート制御タイマアラーム............................................................... 1085
MCAT:モータ制御タイマアラーム............................................................................ 1089
IMC:入力ビットをマスクビットと比較 .................................................................... 1093
SMC:スキャンマトリックスの比較 .......................................................................... 1099
LEAD_LAG:リード/ラグアルゴリズム ...................................................................... 1105
SEG:7 セグメント表示のビットパターンの作成....................................................... 1108
BCDCPL:10 の補数の作成......................................................................................... 1110
BITSUM:セットビット数カウント ............................................................................ 1111
STL ニーモニック .................................................................................................... 1112
ビット論理演算....................................................................................................... 1112
タイマの動作 .......................................................................................................... 1134

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

3.3.11.3
3.3.11.4
3.3.11.5
3.3.11.6
3.3.11.7
3.3.11.8
3.3.11.9
3.3.11.10
3.3.11.11

カウンタ演算 .......................................................................................................... 1150
比較演算 ................................................................................................................. 1157
四則演算 ................................................................................................................. 1163
ロードと転送 .......................................................................................................... 1185
変換操作 ................................................................................................................. 1199
プログラム制御演算................................................................................................ 1213
ワード論理演算....................................................................................................... 1247
シフトとローテーション......................................................................................... 1257
追加の命令.............................................................................................................. 1273

3.4
3.4.1
3.4.1.1
3.4.1.2
3.4.2
3.4.2.1
3.4.2.2
3.4.2.3
3.4.2.4
3.4.2.5
3.4.2.6
3.4.2.7
3.4.2.8
3.4.3
3.4.3.1
3.4.3.2
3.4.3.3
3.4.3.4
3.4.3.5
3.4.4
3.4.4.1
3.4.4.2
3.4.4.3
3.4.4.4
3.4.5
3.4.5.1
3.4.5.2
3.4.5.3
3.4.5.4
3.4.5.5
3.4.5.6
3.4.5.7
3.4.5.8
3.4.5.9
3.4.5.10

SCL.......................................................................................................................... 1279
ビット論理演算....................................................................................................... 1279
R_TRIG:信号立ち上がりエッジを検出 ...................................................................... 1279
F_TRIG:信号立ち下がりエッジを検出 ...................................................................... 1280
タイマの動作 .......................................................................................................... 1281
IEC タイマの呼び出し.............................................................................................. 1281
TP: パルスの生成..................................................................................................... 1286
TON: オンディレータイマ ....................................................................................... 1291
TOF: オフディレータイマ ........................................................................................ 1296
TONR: タイムアキュムレータ .................................................................................. 1301
RESET_TIMER: タイマのリセット ............................................................................. 1306
PRESET_TIMER: 持続時間のロード ........................................................................... 1308
レガシー ................................................................................................................. 1311
カウンタ演算 .......................................................................................................... 1326
IEC カウンタの呼び出し .......................................................................................... 1326
CTU: カウントアップ............................................................................................... 1331
CTD: カウントダウン............................................................................................... 1334
CTUD: カウントアップ/カウントダウン ................................................................... 1337
レガシー ................................................................................................................. 1340
比較演算 ................................................................................................................. 1346
TypeOf: VARIANT タグのデータタイプのチェック.................................................... 1346
TypeOfElements: VARIANT タグの配列要素のデータタイプのチェック .................... 1348
IS_ARRAY: 配列のチェック....................................................................................... 1349
TypeOfDB:DB の照会データタイプ........................................................................... 1350
四則演算 ................................................................................................................. 1352
ABS:絶対値の形成 ................................................................................................... 1352
MIN:最小値の取得 ................................................................................................... 1353
MAX:最大値の取得 .................................................................................................. 1356
LIMIT:制限値の設定 ............................................................................................... 1358
SQR:2 乗値の形成.................................................................................................... 1361
SQRT:平方根の形成 ................................................................................................. 1362
LN:自然対数の形成.................................................................................................. 1363
EXP:指数値の形成 ................................................................................................... 1364
SIN:正弦値の形成 .................................................................................................... 1365
COS:余弦値の形成 ................................................................................................... 1365

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

11

目次

12

3.4.5.11
3.4.5.12
3.4.5.13
3.4.5.14
3.4.5.15
3.4.6
3.4.6.1
3.4.6.2
3.4.6.3
3.4.6.4
3.4.6.5
3.4.6.6
3.4.6.7
3.4.6.8
3.4.6.9
3.4.6.10
3.4.6.11

TAN:正接値の形成 ................................................................................................... 1366
ASIN:逆正弦値の形成 .............................................................................................. 1367
ACOS:逆余弦値の形成 ............................................................................................. 1368
ATAN:逆正接値の形成.............................................................................................. 1369
FRAC:小数部を返す ................................................................................................. 1370
ブロック転送操作 ................................................................................................... 1372
Deserialize: 逆シリアル化 ........................................................................................ 1372
Serialize: シリアル化 ............................................................................................... 1378
MOVE_BLK:ブロック転送......................................................................................... 1384
MOVE_BLK_VARIANT:ブロック転送.......................................................................... 1387
UMOVE_BLK:割り込みなしブロック転送 ................................................................. 1391
FILL_BLK:フィル命令 ............................................................................................... 1395
UFILL_BLK:割り込み不可能なフィル命令 ................................................................. 1399
SCATTER:ビットシーケンスを個々のビットに解析 .................................................. 1403
SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析 ....... 1407
GATHER:個々のビットをビットシーケンスに結合 ................................................... 1412
GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合 . 1416

3.4.6.13
3.4.6.14
3.4.6.15
3.4.6.16
3.4.6.17
3.4.6.18
3.4.7
3.4.7.1
3.4.7.2
3.4.7.3
3.4.7.4
3.4.7.5
3.4.7.6
3.4.7.7

SWAP:スワップ........................................................................................................ 1422
配列 DB ................................................................................................................... 1424
読み取り/書き込みアクセス .................................................................................... 1436
VARIANT.................................................................................................................. 1457
配列[*].................................................................................................................... 1462
レガシー ................................................................................................................. 1465
変換操作 ................................................................................................................. 1476
CONVERT:変換データ .............................................................................................. 1476
ROUND:数値の四捨五入 .......................................................................................... 1478
CEIL:浮動小数点数から次に大きい整数を生成 ......................................................... 1479
FLOOR:浮動小数点数から次に小さい整数を生成 ..................................................... 1480
TRUNC:値の切り捨て............................................................................................... 1482
SCALE_X:スケール................................................................................................... 1484
NORM_X:正規化 ...................................................................................................... 1487

3.4.7.9
3.4.7.10
3.4.8
3.4.8.1
3.4.8.2
3.4.8.3
3.4.8.4
3.4.8.5
3.4.8.6
3.4.8.7
3.4.8.8
3.4.8.9

VARIANT.................................................................................................................. 1490
レガシー ................................................................................................................. 1496
プログラム制御演算................................................................................................ 1502
IF:条件実行 ............................................................................................................. 1502
CASE:多岐分岐の作成.............................................................................................. 1504
FOR:カウントループの実行 ..................................................................................... 1507
WHILE:条件が有効ならば実行.................................................................................. 1511
REPEAT:条件が有効でなければ実行.......................................................................... 1512
CONTINUE:ループ条件の再チェック........................................................................ 1514
EXIT:ループを直ちに終了 ........................................................................................ 1514
GOTO:ジャンプ ....................................................................................................... 1515
RETURN:ブロック終了 ............................................................................................. 1516

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

3.4.8.10
3.4.8.11
3.4.8.12
3.4.8.13
3.4.9
3.4.9.1
3.4.9.2
3.4.9.3
3.4.9.4
3.4.9.5
3.4.103.4.10.1
3.4.10.2
3.4.10.3
3.4.10.4
3.4.11
3.4.11.1
3.4.11.2
3.4.11.3
3.4.11.4
3.4.11.5
3.4.11.6
3.4.11.7
3.4.11.8
3.4.11.9(*...*): コメントセクションを挿入 .......................................................................... 1517(/*...*/):多言語コメントの挿入 ................................................................................ 1517
REGION:プログラムコードの構造化......................................................................... 1518
ランタイム制御....................................................................................................... 1519
ワード論理演算....................................................................................................... 1541
DECO:デコード........................................................................................................ 1541
ENCO:エンコード .................................................................................................... 1543
SEL:選択.................................................................................................................. 1544
MUX:多重化 ............................................................................................................ 1546
DEMUX:逆多重化..................................................................................................... 1549
シフトとローテーション......................................................................................... 1552
SHR:右へシフト....................................................................................................... 1552
SHL:左へシフト ....................................................................................................... 1554
ROR:右へローテーション......................................................................................... 1556
ROL:左へローテーション......................................................................................... 1558
レガシー ................................................................................................................. 1560
DRUM:PLC 実行 ....................................................................................................... 1560
DCAT:ディスクリート制御タイマアラーム............................................................... 1569
MCAT:モータ制御タイマアラーム............................................................................ 1572
IMC:入力ビットをマスクビットと比較 .................................................................... 1577
SMC:スキャンマトリックスの比較 .......................................................................... 1580
LEAD_LAG:リード/ラグアルゴリズム ....................................................................... 1582
SEG:7 セグメント表示のビットパターンの作成....................................................... 1586
BCDCPL:10 の補数の作成......................................................................................... 1588
BITSUM:セットビット数カウント ............................................................................ 1589

3.5
3.5.1
3.5.1.1
3.5.1.2
3.5.1.3
3.5.1.4
3.5.1.5
3.5.1.6
3.5.1.7
3.5.1.8
3.5.2
3.5.2.1
3.5.2.2
3.5.2.3
3.5.2.4
3.5.2.5
3.5.2.6
3.5.2.7
3.5.2.8

GRAPH..................................................................................................................... 1590
グラフ構成 ............................................................................................................. 1590
ステップと移行....................................................................................................... 1590
ステップ ................................................................................................................. 1591
移行 ........................................................................................................................ 1592
シーケンス終了....................................................................................................... 1592
ステップにジャンプ................................................................................................ 1593
代替分岐 ................................................................................................................. 1593
同時分岐 ................................................................................................................. 1594
分岐を閉じる .......................................................................................................... 1595
GRAPH 操作 ............................................................................................................ 1595
タイマの動作 .......................................................................................................... 1595
カウンタ演算 .......................................................................................................... 1612
四則演算 ................................................................................................................. 1621
ムーブ操作.............................................................................................................. 1640
変換操作 ................................................................................................................. 1704
プログラム制御演算................................................................................................ 1721
ワード論理演算....................................................................................................... 1737
シフトとローテーション......................................................................................... 1747

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

13

目次

4

14

3.5.2.9
3.5.3
3.5.3.1
3.5.3.2
3.5.3.3
3.5.3.4
3.5.3.5
3.5.4
3.5.4.1
3.5.4.2
3.5.4.3
3.5.4.4
3.5.4.5

レガシー ................................................................................................................. 1755
LAD 命令比較演算 .................................................................................................. 1790
全般的 LAD 命令 ..................................................................................................... 1790
CMP>T: ステップ有効化時間よりも長い .................................................................. 1797
CMP>U: 割り込みなしステップの有効化時間よりも長い ......................................... 1798
CMP>T_MAX: 最大ステップ有効化時間よりも長い ................................................. 1800
CMP>T_WARN: 警告時間よりも長い ........................................................................ 1801FBD 命令比較演算 ......................................................... ......................................... 1803
全般的 FBD 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............................................ 1803
CMP>T: ステップ有効化時間よりも長い .................................................................. 1810
CMP>U: 割り込みなしステップの有効化時間よりも長い ......................................... 1811
CMP>T_MAX: 最大ステップ有効化時間よりも長い ................................................. 1813
CMP>T_WARN: 警告時間よりも長い ........................................................................ 1814

3.6
3.6.1
3.6.2
3.6.2.1
3.6.2.2
3.6.2.3
3.6.3
3.6.3.1
3.6.3.2
3.6.3.3
3.6.4
3.6.4.1
3.6.4.2
3.6.4.3

CEM ........................................................................................................................ 1815
CEM 内での全般的 FBD 命令.................................................................................... 1815
交点のアクション ................................................................................................... 1816
N:原因がアクティブである限り設定する................................................................. 1816
S:常に 1 にセットする............................................................................................. 1818
R:常に 0 にセットする............................................................................................. 1819
エフェクトの説明 ................................................................................................... 1822
割り当て ................................................................................................................. 1822
R:出力のリセット.................................................................................................... 1823
S:出力設定 .............................................................................................................. 1824
時間 ........................................................................................................................ 1825
OnDelay:アクティベーションを遅らせる................................................................. 1825
OffDelay:ディアクティベーションを遅らせる.......................................................... 1827
Pulse:制限時間の有効化 .......................................................................................... 1828

拡張命令 .................................................................................................................................... 1831
4.1
4.1.1

拡張命令に関する一般的な注記 .............................................................................. 1831
I/O アクセスを行う命令の LADDR 入力パラメータ................................................... 1831

4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7
4.2.7.1
4.2.7.2
4.2.7.3
4.2.7.4
4.2.7.5

日付と時刻.............................................................................................................. 1832
T_COMP: 時間タグ比較............................................................................................ 1832
T_CONV: 時間の変換と抽出 ..................................................................................... 1834
T_ADD: 時間加算 ..................................................................................................... 1836
T_SUB: 時間の減算 .................................................................................................. 1839
T_DIFF: 時間差 ........................................................................................................ 1842
T_COMBINE: 時間結合 ............................................................................................ 1844
時刻のファンクション ............................................................................................ 1846
WR_SYS_T: 日時の設定 ............................................................................................ 1846
RD_SYS_T: 時刻の読み出し ...................................................................................... 1850
RD_LOC_T: 現地時間読み出し .................................................................................. 1852
WR_LOC_T: ローカル時刻の書き込み ....................................................................... 1854
SET_TIMEZONE:タイムゾーン設定 ........................................................................... 1858

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

4.2.7.6
4.2.7.7
4.2.7.8

SNC_RTCB:スレーブクロックの同期 ........................................................................ 1869
TIME_TCK: システム時間の読み出し ........................................................................ 1871
RTM: ランタイムメータ........................................................................................... 1872

4.3
4.3.1
4.3.2
4.3.3
4.3.4
4.3.5
4.3.6
4.3.7
4.3.8
4.3.9
4.3.9.1
4.3.9.2
4.3.104.3.10.1
4.3.10.2
4.3.11
4.3.124.3.134.3.144.3.154.3.164.3.174.3.184.3.194.3.204.3.21
4.3.224.3.22.1
4.3.22.2
4.3.22.3
4.3.22.4
4.3.22.5

String + Char ........................................................................................................... 1876
S_MOVE: 文字列移動 ............................................................................................... 1876
S_COMP: 文字列比較 ............................................................................................... 1877
S_CONV: 文字列変換 ............................................................................................... 1880
STRG_VAL: 文字列を数値に変換............................................................................... 1884
VAL_STRG: 数値を文字列に変換............................................................................... 1888
Strg_TO_Chars: 文字列を CHAR 配列に変換.............................................................. 1895
Chars_TO_Strg: CHAR 配列を文字列に変換 .............................................................. 1899
MAX_LEN:文字列長の定義 ....................................................................................... 1902
JOIN:複数の文字列の結合........................................................................................ 1904
JOIN:複数の文字列の結合........................................................................................ 1904
JOIN のプログラム例............................................................................................... 1910
SPLIT:文字配列の複数文字列への分割...................................................................... 1920
SPLIT:文字の配列を複数の文字列に分割 .................................................................. 1920
SPLIT のプログラム例 .............................................................................................. 1929
ATH: ASCII 文字列を 16 進数に変換 ......................................................................... 1940
HTA: 16 進数を ASCII 文字列に変換 ......................................................................... 1944
LEN: 文字列長の定義 ............................................................................................... 1947
CONCAT: 文字列の結合............................................................................................ 1949
左: 文字列の左文字の読み出し ................................................................................ 1951
右: 文字列の右文字の読み出し ................................................................................ 1952
MID: 文字列の中央の文字の読み出し ...................................................................... 1954
削除: 文字列の文字の削除 ....................................................................................... 1956
INSERT:文字列への文字の挿入 ................................................................................. 1959
REPLACE: 文字列の文字置換 .................................................................................... 1961
FIND: 文字列から文字を検索 ................................................................................... 1963
ランタイム情報....................................................................................................... 1965
GetSymbolName: 入力パラメータのタグの読み出し ............................................... 1965
GetSymbolPath:パス呼び出しの最初の実パラメータの照会..................................... 1969
GetInstanceName:読み出されたインスタンスの名前の読み出し ............................. 1973
GetInstancePath:ブロックインスタンスのクエリ複合グローバル名......................... 1975
GetBlockName: ブロックの名前の読み出し ............................................................. 1981

4.4
4.4.1
4.4.2
4.4.3
4.4.4

プロセスイメージ ................................................................................................... 1983
UPDAT_PI:プロセスイメージ入力の更新................................................................... 1983
UPDAT_PO:プロセスイメージ出力の更新 ................................................................. 1986
SYNC_PI:プロセスイメージ入力の同期 .................................................................... 1990
SYNC_PO:プロセスイメージ出力の同期................................................................... 1993

4.5
4.5.1
4.5.2

リモート I/O ............................................................................................................ 1995
データレコードのタイプの概要 .............................................................................. 1995
RDREC:Read data record (データレコードの読み出し).............................................. 2005

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

15

目次

4.5.2.1
4.5.2.2
4.5.2.3
4.5.3
4.5.3.1
4.5.3.2
4.5.3.3
4.5.4
4.5.5
4.5.6
4.5.7
4.5.8
4.5.9
4.5.104.5.10.1
4.5.10.2
4.5.10.3
4.5.10.4
4.5.10.5
4.5.10.6
4.5.11
4.5.124.5.12.1
4.5.12.2
4.5.134.5.13.1
4.5.13.2
4.5.13.3
4.5.13.4
4.5.13.5
4.5.13.6
4.5.13.7

RDREC:Read data record (データレコードの読み出し).............................................. 2005
読み出し RDREC を使用した I&M データレコードのプログラム例............................ 2009
RDREC を使用した診断データレコードの読み出しプログラム例 ............................. 2013
WRREC:Write data record (データレコードの書き込み) ............................................ 2026
WRREC:Write data record (データレコードの書き込み) ............................................ 2026
WRREC および RDREC を用いたパラメータデータレコードのプログラム例の使用 ... 2030
WRREC および RDREC を用いた制御データレコードのプログラム例の使用.............. 2040
GETIO:サブモジュールのすべての入力の読み取り................................................... 2049
SETIO:サブモジュールのすべての入力の書き込み ................................................... 2051
GETIO および SETIO のプログラム例........................................................................ 2053
GETIO_PART:サブモジュールの入力の読み取り........................................................ 2061
SETIO_PART:サブモジュールの入力の書き込み ........................................................ 2063
GETIO_PART および SETIO_PART のプログラム例 ..................................................... 2066
RALRM:割り込みの受信 ........................................................................................... 2076
RALRM の説明 ......................................................................................................... 2076
パラメータ STATUS.................................................................................................. 2079
パラメータ TINFO ................................................................................................... 2084
パラメータ AINFO ................................................................................................... 2113
コピー先の領域 TINFO および AINFO....................................................................... 2123
RALRM のプログラム例 ........................................................................................... 2124
D_ACT_DP:DP スレーブの有効化/無効化 .................................................................. 2130
ReconfigIOSystem:IO システムの再構成................................................................... 2135
ReconfigIOSystem: IO システムの再構成.................................................................. 2135
ReconfigIOSystem のプログラム例........................................................................... 2144
その他..................................................................................................................... 2157
RD_REC:I/O からデータレコードの読み出し............................................................. 2157
WR_REC: データレコードを I/O に書き込み.............................................................. 2163
DPRD_DAT:DP スレーブの整合性のあるデータ読み出し ........................................... 2164
DPWR_DAT:DP スレーブのコンスタントデータの書き込み....................................... 2166
iDevice/iSlave .......................................................................................................... 2169
PROFIBUS ................................................................................................................ 2192
ASI .......................................................................................................................... 2208

4.6
4.6.1
4.6.2
4.6.2.1
4.6.2.2
4.6.2.3
4.6.2.4
4.6.2.5
4.6.3
4.6.3.1

PROFIenergy............................................................................................................ 2218
PROFIenergy の説明 ................................................................................................ 2218
IO コントローラ ...................................................................................................... 2220
PE_START_END: 省電力モードの開始と終了............................................................. 2220
PE_CMD: 省電力モードの開始と終了/ステータス情報の読み取り ............................ 2226
PE_DS3_Write_ET200S: 電源モジュールの切り替え動作を設定します。 .................. 2232
PE_WOL:WakeOnLan を介した省電力モードの開始と停止 ....................................... 2233
PROFIenergy コマンド ............................................................................................. 2249
iDevice/iSlave .......................................................................................................... 2266
PE_I_DEV: I デバイスでの PROFIenergy コマンドの制御 ..........................................2266「PE_I_DEV」命令の補助ブロック ............................................................................ 2271

4.6.3.2

16

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

4.7
4.7.1
4.7.2
4.7.3
4.7.4
4.7.5

モジュールパラメータ割り当て .............................................................................. 2290
データレコードの書き込みと読み出し .................................................................... 2290
RD_DPAR:モジュールデータレコードの読み出し ..................................................... 2291
RD_DPARA:モジュールデータレコードの非同期読み出し......................................... 2298
RD_DPARM:構成されたシステムデータからデータレコード読み出し ...................... 2301
WR_DPARM:データレコードの転送.......................................................................... 2304

4.8
4.8.1
4.8.2
4.8.3
4.8.3.1

割り込み ................................................................................................................. 2307
ATTACH:割り込みイベントに OB を追加 .................................................................. 2307
DETACH:割り込みイベントから OB を削除............................................................... 2312
周期割り込み .......................................................................................................... 2318
SET_CINT: 周期割り込みパラメータの設定...............................................................2318

4.8.3.2
4.8.3.3
4.8.4
4.8.4.1
4.8.4.2
4.8.4.3
4.8.4.4
4.8.4.5
4.8.4.6
4.8.5
4.8.5.1
4.8.5.2
4.8.5.3
4.8.5.4
4.8.5.5
4.8.6
4.8.6.1
4.8.6.2
4.8.6.3
4.8.6.4
4.8.6.5
4.8.7
4.8.7.1
4.8.7.2
4.8.7.3
4.8.7.4
4.8.7.5
4.8.7.6

QRY_CINT: 周期割り込みパラメータの問い合わせ ................................................... 2320
周期割り込みファンクションのプログラム例.......................................................... 2322
時刻割り込み .......................................................................................................... 2328
SET_TINT: 時刻割り込みの設定 ................................................................................ 2328
SET_TINTL: 時刻割り込みの設定 .............................................................................. 2331
CAN_TINT: 時刻割り込みのキャンセル .................................................................... 2334
ACT_TINT: 時刻割り込み有効化................................................................................ 2336
QRY_TINT: 時刻割り込みのステータス問い合わせ ................................................... 2337
時刻割り込みファンクションのプログラム例.......................................................... 2339
遅延割り込み .......................................................................................................... 2347
時間遅延割り込みの使用......................................................................................... 2347
SRT_DINT: 遅延割り込み起動 ................................................................................... 2349
CAN_DINT: 遅延割り込みキャンセル ....................................................................... 2351
QRY_DINT: 遅延割り込みステータスの問い合わせ ................................................... 2352
遅延割り込みファンクションのプログラム例.......................................................... 2353
同期エラー.............................................................................................................. 2360
同期エラーイベントのマスク .................................................................................. 2360
MSK_FLT: 同期エラーイベントのマスク................................................................... 2367
DMSK_FLT: 非同期エラーイベントのマスク解除 ...................................................... 2369
READ_ERR: イベントステータスレジスタ読み出し................................................... 2370
同期エラーイベントのプログラム例 ....................................................................... 2371
非同期エラーイベント ............................................................................................ 2385
DIS_IRT: 割り込みイベント無効化 ............................................................................ 2385
EN_IRT: 割り込みイベント有効化............................................................................. 2387
DIS_IRT & EN_IRT のプログラム例 ............................................................................ 2389
DIS_AIRT: 高優先度割り込みと非同期エラーイベント実行の遅延............................. 2395
EN_AIRT: 高優先度割り込みと非同期エラーイベント実行の有効化.......................... 2396
DIS_AIRT & EN_AIRT のプログラム例........................................................................ 2397

4.9
4.9.1
4.9.2

アラーム ................................................................................................................. 2409
Program_Alarm:関連値を含むプログラムアラームを生成 ........................................ 2409
Get_AlarmState:アラームステータスの出力............................................................. 2418

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

17

目次

18

4.9.3
4.9.4
4.9.5
4.9.6
4.9.6.1
4.9.6.2

Gen_UsrMsg:ユーザー診断アラームの生成.............................................................. 2425
Get_Alarm:保留中のアラームを読み出し................................................................. 2431
Ack_Alarms:アラームの確認 .................................................................................... 2439
Get_Alarm & Ack_Alarms のプログラム例 ................................................................ 2441
Get_Alarm & Ack_Alarms のプログラム例 - パート 1 ................................................ 2441
Get_Alarm & Ack_Alarms のプログラム例 - パート 2 ................................................ 2460

4.10
4.10.14.10.24.10.34.10.44.10.54.10.64.10.74.10.84.10.94.10.104.10.114.10.124.10.13

診断 ........................................................................................................................ 2470
RD_SINFO:現在の OB 起動情報読み出し .................................................................. 2470
RT_INFO:ランタイム統計情報の読み出し ................................................................ 2484
LED :LED ステータス読み出し.................................................................................. 2492
Get_IM_Data:識別およびメンテナンスデータの読み出し ........................................ 2496
GET_NAME:IO デバイスまたは DP スレーブの名前の読み出し ................................. 2502
GetStationInfo: IO デバイスの情報の読み取り ......................................................... 2507
GetChecksum:チェックサムを読み出し ................................................................... 2515
GetSMCinfo:SIMATIC メモリカードに関する情報の読み出し.................................... 2519
GetClockStatus:CPU クロックのステータスの読み出し ............................................ 2529
DeviceStates: IO システムのモジュールステータス情報の読み取り ......................... 2533
ModuleStates:モジュールのモジュールステータス情報読み出し ............................. 2540
GEN_DIAG:診断情報の生成...................................................................................... 2545
GET_DIAG:診断情報読み出し ................................................................................... 2548

4.11
4.11.1
4.11.2

パルス..................................................................................................................... 2565
CTRL_PWM:パルス幅変調 ........................................................................................ 2565
CTRL_PTO:プリセットされた周波数のパルスシーケンスを出力 ............................... 2568

4.12
4.12.14.12.1.1
4.12.1.2
4.12.1.3
4.12.1.4
4.12.1.5
4.12.24.12.2.1
4.12.2.2
4.12.2.3
4.12.2.4
4.12.2.5
4.12.2.6
4.12.2.7
4.12.2.8
4.12.2.9

レシピおよびデータロギング .................................................................................. 2570
レシピファンクション ............................................................................................ 2570
レシピファンクション - 概要................................................................................... 2570
RecipeExport:レシピのエクスポート ....................................................................... 2572
RecipeImport:レシピのインポート........................................................................... 2575
レシピ DB の構造 .................................................................................................... 2579
レシピファンクションのサンプルプログラム.......................................................... 2583
データロギング....................................................................................................... 2591
データロギング - 概要 ............................................................................................. 2591
DataLogCreate:データログ作成 ............................................................................... 2598
DataLogOpen:データログを開く ............................................................................. 2608
DataLogClear: データログを空にする ...................................................................... 2614
DataLogWrite: データログ書き込み ......................................................................... 2616
DataLogClose: データログのクローズ...................................................................... 2619
DataLogDelete: データログの削除 ........................................................................... 2621
DataLogNewFile: 新規ファイルのデータログ........................................................... 2623
データログを使った作業のサンプルプログラム ...................................................... 2628

4.13
4.13.14.13.2

データブロックのファンクション ........................................................................... 2648
CREATE_DB:データブロックの作成 .......................................................................... 2648
READ_DBL: ロードメモリのデータブロックからの読み出し..................................... 2654

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

5

4.13.34.13.44.13.54.13.6

WRIT_DBL:ロードメモリのデータブロックへの書き込み ......................................... 2658
ATTR_DB: データブロック属性読み出し................................................................... 2665
DELETE_DB:データブロック削除.............................................................................. 2670
CREATE ファンクションのプログラム例 .................................................................. 2672

4.14
4.14.14.14.24.14.34.14.44.14.54.14.64.14.74.14.84.14.8.1
4.14.8.2
4.14.8.3
4.14.8.4
4.14.8.5

アドレス指定 .......................................................................................................... 2682
アドレス変換の命令................................................................................................ 2682
GEO2LOG:スロットのハードウェア識別子の識別 .................................................... 2683
LOG2GEO:ハードウェア識別子からのスロットの識別 ............................................. 2686
LOG2MOD: STEP 7 V5.5 SPx のアドレス指定からのハードウェア識別子の識別........ 2689
IO2MOD:IO アドレスからのハードウェア識別子の識別........................................... 2691
RD_ADDR:ハードウェア識別子からの IO アドレスの識別 ........................................ 2694
システムデータタイプ GEOADDR ............................................................................ 2697
レガシー ................................................................................................................. 2698
GEO_LOG: スロットのハードウェア識別子の識別 ................................................... 2698
LOG_GEO: ハードウェア識別子からのスロットの識別 ............................................ 2700
RD_LGADR:ハードウェア識別子からの IO アドレスの識別....................................... 2702
GADR_LGC: ユーザーデータアドレス領域のスロットおよびオフセットからのハード
ウェア識別子の識別................................................................................................ 2704
LGC_GADR: ハードウェア識別子からのスロットの識別 ........................................... 2706

4.15
4.15.14.15.24.15.34.15.4

ファイル操作 .......................................................................................................... 2707
FileReadC:メモリカードからのファイルの読み取り................................................. 2707
FileWriteC:メモリカードでファイルを書き込み ....................................................... 2711
FileReadC & FileWriteC のプログラム例.................................................................... 2714
FileDelete:メモリカードでファイルを削除 .............................................................. 2719

4.16
4.16.1

R/H システム ........................................................................................................... 2721
RH_CTRL:R/H システム内のシーケンスへの効果....................................................... 2721

テクノロジー ............................................................................................................................. 2725
5.1
5.1.1
5.1.1.1
5.1.1.2
5.1.1.3
5.1.1.4
5.1.1.5
5.1.1.6
5.1.1.7
5.1.1.8
5.1.1.9
5.1.1.10
5.1.2
5.1.2.1
5.1.2.2

モーションコントロール......................................................................................... 2725
S7-1200 モーションコントロール ........................................................................... 2725
MC_Power ............................................................................................................... 2725
MC_Reset ................................................................................................................ 2731
MC_Home ............................................................................................................... 2733
MC_Halt .................................................................................................................. 2737
MC_MoveAbsolute................................................................................................... 2741
MC_MoveRelative .................................................................................................... 2745
MC_MoveVelocity .................................................................................................... 2749
MC_MoveJog........................................................................................................... 2754
MC_CommandTable................................................................................................. 2758
MC_ChangeDynamic ............................................................................................... 2761
S7-1500 モーションコントロール ........................................................................... 2764
MC_Power ............................................................................................................... 2764
MC_Home ............................................................................................................... 2771

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

19

目次

20

5.1.2.3
5.1.2.4
5.1.2.5
5.1.2.6
5.1.2.7
5.1.2.8

MC_MoveJog........................................................................................................... 2777
MC_MoveVelocity .................................................................................................... 2782
MC_MoveRelative .................................................................................................... 2788
MC_MoveAbsolute................................................................................................... 2793
MC_Halt .................................................................................................................. 2798
MC_Reset ................................................................................................................ 2802

5.2
5.2.1
5.2.2

高速カウンタ .......................................................................................................... 2804
CTRL_HSC: 高速カウンタの制御............................................................................... 2804
CTRL_HSC_EXT: 高速カウンタの制御(拡張) .............................................................. 2808

5.3
5.3.1
5.3.1.1
5.3.2
5.3.2.1

カウントと測定....................................................................................................... 2811
High_Speed_Counter............................................................................................... 2811
High_Speed_Counter............................................................................................... 2811
SSI_Absolute_Encoder ............................................................................................. 2825
SSI_Absolute_Encoder ............................................................................................. 2825

5.4
5.4.1
5.4.1.1
5.4.1.2
5.4.1.3
5.4.1.4
5.4.1.5
5.4.1.6
5.4.1.7
5.4.1.8
5.4.1.9
5.4.1.10
5.4.2
5.4.2.1
5.4.2.2
5.4.2.3
5.4.2.4
5.4.2.5
5.4.2.6
5.4.2.7
5.4.2.8
5.4.2.9
5.4.2.10
5.4.2.11
5.4.2.12

PID 制御 .................................................................................................................. 2834
PID_Compact........................................................................................................... 2834
PID_Compact の説明................................................................................................ 2834
PID_Compact の入力パラメータ .............................................................................. 2838
PID_Compact の出力パラメータ .............................................................................. 2839
PID_Compact の静的変数......................................................................................... 2840
パラメータ State および sRet.i_Mode ...................................................................... 2847
Error パラメータ ..................................................................................................... 2851
Reset パラメータ..................................................................................................... 2852
変数 sd_warning ..................................................................................................... 2853
変数 i_Event_SUT .................................................................................................... 2854
変数 i_Event_TIR...................................................................................................... 2855
PID_3Step................................................................................................................ 2855
PID_3Step の説明 .................................................................................................... 2855
PID_3Step の動作原理 ............................................................................................. 2860
PID_3Step の入力パラメータ ................................................................................... 2863
PID_3Step の出力パラメータ ................................................................................... 2866
PID_3Step 静的変数 ................................................................................................. 2868
State および Retain.Mode パラメータ...................................................................... 2877
ErrorBits パラメータ ................................................................................................ 2886
Reset パラメータ..................................................................................................... 2889
ActivateRecoverMode 変数 ...................................................................................... 2889
警告変数 ................................................................................................................. 2892
SUT.State 変数......................................................................................................... 2893
TIR.State 変数 .......................................................................................................... 2893

5.5
5.5.1
5.5.1.1
5.5.1.2

Time-based IO ......................................................................................................... 2894
Time-based IO ......................................................................................................... 2894
TIO_SYNC: TIO モジュールを同期 ............................................................................ 2894
TIO_IOLink_IN: タイムスタンプによる入力信号の読み出しプロセス........................ 2898

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

6

5.5.1.3
5.5.1.4
5.5.1.5
5.5.1.6

TIO_DI:デジタル入力および関連するタイムスタンプでのエッジの読み出し............ 2903
TIO_IOLink_OUT: 出力時刻制御されたプロセス出力信号 ......................................... 2908
TIO_DQ:デジタル出力で時間制御された出力エッジ ................................................ 2914
UDT "TIO_SYNC_Data".............................................................................................. 2921

5.6

ファンクションモジュール ..................................................................................... 2922

5.7

SINAMICS - TO_BasicPos........................................................................................... 2922

通信........................................................................................................................................... 2923
6.1
6.1.1
6.1.2
6.1.3
6.1.4
6.1.5
6.1.5.1
6.1.5.2
6.1.5.3
6.1.5.4
6.1.5.5
6.1.5.6

S7 通信 ................................................................................................................... 2923
データの一貫性....................................................................................................... 2923
S7 通信用の命令の共通パラメータ.......................................................................... 2925
GET:リモート CPU からデータを読み取ります。 ..................................................... 2929
PUT: リモート CPU にデータを書き込みます。 ........................................................ 2935
その他..................................................................................................................... 2942
USEND: 未調整データの送信 ................................................................................... 2942
URCV: 未調整のデータ受信...................................................................................... 2945
USEND & URCV のプログラム例 ............................................................................... 2947
BSEND: セグメントのデータ送信............................................................................. 2953
BRCV: セグメントのデータ受信 ............................................................................... 2956
BSEND & BRCV のプログラム例................................................................................ 2959

6.2
6.2.1
6.2.2
6.2.2.1
6.2.2.2
6.2.3
6.2.3.1
6.2.3.2
6.2.4
6.2.5
6.2.5.1
6.2.5.2
6.2.5.3
6.2.5.4
6.2.5.5
6.2.5.6
6.2.5.7
6.2.5.8
6.2.5.9
6.2.5.10
6.2.6
6.2.6.1
6.2.6.2
6.2.6.3

オープンユーザーコミュニケーション.................................................................... 2966
データの整合性....................................................................................................... 2966
TSEND_C:接続の確立とデータの送信 ...................................................................... 2966
TSEND_C: イーサネット経由のデータ送信............................................................... 2966
TSEND_C:接続の確立とデータの送信 ...................................................................... 2972
TRCV_C:接続の確立とデータの受信......................................................................... 2984
TRCV_C: イーサネット経由のデータ受信送信 .......................................................... 2984
TRCV_C:接続の確立とデータの受信......................................................................... 2992
送信ファンクションのプログラム例 ....................................................................... 3004
TMAIL_C:電子メールの転送 ..................................................................................... 3012
TMAIL_C の説明 ...................................................................................................... 3012
説明 TMAIL_C (バージョン V4.0 以降)...................................................................... 3018
バージョン V5.0 以降の TMAIL_C の説明 ................................................................. 3020
バージョン V6.0 以降の TMAIL_C の説明 ................................................................. 3025
TO_S および CC パラメータ..................................................................................... 3028
MAIL_ADDR_PARAM パラメータ .............................................................................. 3029
バージョン 4.0 以降の TMAIL_C のパラメータ MAIL_ADDR_PARAM ......................... 3034
DONE、BUSY、および ERROR パラメータ................................................................ 3043
STATUS パラメータ.................................................................................................. 3044
例: TMAIL_C による電子メールの送信 ..................................................................... 3050
その他..................................................................................................................... 3053
TCON:通信接続の確立 ............................................................................................. 3053
TDISCON: 通信接続の終了 ......................................................... ............................. 3067
TSEND:通信接続経由のデータ送信 .......................................................................... 3070

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

21

目次

22

6.2.6.4
6.2.6.5
6.2.6.6
6.2.6.7
6.2.6.8
6.2.6.9
6.2.6.10
6.2.6.11
6.2.7
6.2.7.1
6.2.7.2
6.2.7.3
6.2.7.4
6.2.7.5
6.2.7.6

TRCV:通信接続経由のデータ受信............................................................................. 3079
TCON、TDISCON、TSEND & TRCV のプログラム例 ................................................... 3093
イーサネット(UDP)または FDL によるデータの送信と受信...................................... 3107
T_RESET: 接続のリセット ........................................................................................ 3129
T_RESET のプログラム例 ......................................................................................... 3131
T_DIAG: 接続のチェック.......................................................................................... 3135
T_DIAG のプログラム例........................................................................................... 3143
T_CONFIG:インターフェースの設定 ........................................................................ 3146
通信命令の変更....................................................................................................... 3168
OUC ライブラリのバージョン V3.x 以前とバージョン V4.1 以降の相違................... 3168
TSEND_C 命令での変更 ........................................................................................... 3169
TRCV_C 命令での変更.............................................................................................. 3171
TCON 命令での変更................................................................................................. 3173
TSEND/TUSEND 命令での変更 .................................................................................. 3175
TRCV/TURCV 命令での変更....................................................................................... 3177

6.3
6.3.1
6.3.1.1
6.3.1.2
6.3.1.3
6.3.1.4
6.3.1.5
6.3.1.6
6.3.1.7
6.3.1.8
6.3.1.9
6.3.2
6.3.2.1

O P C U A .............................................................................................................. 3181
クライアント命令 ................................................................................................... 3181
O P C U A C l i e n t . . . . . . . . . . . . . . . . . . . . . . ..................................................................... 3181
データ交換の準備 ................................................................................................... 3181
データ交換.............................................................................................................. 3244
データ交換の終了 ................................................................................................... 3282
診断 ........................................................................................................................ 3300
メソッド ................................................................................................................. 3308
OPC UA クライアント命令のシステムデータタイプ................................................. 3341
エラーコード .......................................................................................................... 3351
OPC UA クライアントのプログラム例 ..................................................................... 3373
サーバー命令 .......................................................................................................... 3418
メソッド ................................................................................................................. 3418

6.4
6.4.1
6.4.1.1
6.4.1.2

Web サーバー.......................................................................................................... 3432
WWW:ユーザーページの同期 .................................................................................. 3432
WWW:ユーザーページの同期 .................................................................................. 3432
WWW のプログラム例 ............................................................................................. 3435

6.5
6.5.1
6.5.2
6.5.2.1
6.5.2.2
6.5.2.3
6.5.2.4
6.5.2.5
6.5.2.6
6.5.2.7
6.5.2.8

通信プロセッサ....................................................................................................... 3443
SIMATIC NET CM/CP ................................................................................................. 3443
ポイントツーポイント ............................................................................................ 3443
フリーポート通信の概要......................................................................................... 3443
命令の使用.............................................................................................................. 3446
フリーポート操作の一般パラメータ ....................................................................... 3447
Port_Config: PtP 通信ポートを設定 .......................................................................... 3450
Send_Config PtP 送信元を設定................................................................................. 3454
Receive_Config: PtP 受信先を設定............................................................................ 3456
P3964_Config: 3964(R)プロトコルの設定................................................................ 3463
Send_P2P:データ送信.............................................................................................. 3465

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

目次

6.5.2.9
6.5.2.10
6.5.2.11
6.5.2.12
6.5.2.13
6.5.2.14
6.5.2.15
6.5.2.16
6.5.3
6.5.3.1
6.5.3.2
6.5.3.3
6.5.3.4
6.5.3.5
6.5.3.6
6.5.3.7
6.5.3.8
6.5.4
6.5.4.1
6.5.4.2
6.5.4.3
6.5.4.4
6.5.4.5
6.5.4.6
6.5.5
6.5.5.1

通信操作に対する BUFFER および LENGTH パラメータの使用.................................. 3469
Receive_P2P:データ受信 .......................................................................................... 3470
Receive_Reset: 受信バッファのクリア ..................................................................... 3473
Signal_Get: ステータスの読み出し .......................................................................... 3474
Signal_Set: 付属信号の設定 ..................................................................................... 3476
Get_Features: 拡張ファンクションを取得 ............................................................... 3478
Set_Features: 拡張ファンクションの設定 ................................................................ 3479
エラーメッセージ ................................................................................................... 3481
USS ......................................................................................................................... 3501
USS 通信の概要 ....................................................................................................... 3501
USS プロトコル使用の必要条件............................................................................... 3503
USS_Port_Scan / USS_Port_Scan_31:USS ネットワークによる通信 ........................... 3506
USS_Drive_Control / USS_Drive_Control_31:ドライブ用のデータの準備と表示 ........ 3510
USS_Read_Param / USS_Read_Param_31:データをドライブから読み出す ................ 3515
USS_Write_Param / USS_Write_Param_31:ドライブのデータを変更.......................... 3518
ドライブのセットアップにつぃての一般情報.......................................................... 3521
エラーメッセージ ................................................................................................... 3526
MODBUS (RTU) ........................................................................................................ 3546
Modbus RTU 通信の概要.......................................................................................... 3546
Modbus_Comm_Load: Modbus 用の通信モジュールを設定 ..................................... 3548
Modbus_Master: Modbus マスタとして通信 ............................................................ 3553
Modbus_Slave: Modbus スレーブとして通信 ........................................................... 3563
フレーム構造 .......................................................................................................... 3570
エラーメッセージ ................................................................................................... 3581
E T 2 0 0 S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..................................................................... 3602
S7-1500 の使用に関する注 ..................................................................................... 3602

6.5.6
6.5.6.1
6.5.6.2
6.5.6.3
6.5.6.4
6.5.6.5
6.5.6.6
6.5.6.7
6.5.6.8
6.5.6.9
6.5.7
6.5.7.1
6.5.7.2
6.5.7.3
6.5.7.4
6.5.7.5
6.5.7.6
6.5.7.7

ポイントツーポイント ............................................................................................ 3603
PORT_CFG: 動的に通信パラメータを設定 ................................................................ 3603
SEND_CFG: 動的にシリアル伝送パラメータを設定 .................................................. 3606
RCV_CFG: 動的にシリアル受信パラメータを設定 .................................................... 3609
SEND_PTP: 送信バッファデータの送信 .................................................................... 3619
RCV_PTP: 受信メッセージの有効化 .......................................................................... 3622
RCV_RST:受信バッファの削除.................................................................................. 3623
SGN_GET: RS-232 信号の問い合わせ........................................................................ 3624
SGN_SET: RS-232 信号の設定................................................................................... 3626
通信ブロックの全般的なステータス情報................................................................. 3628
USS ......................................................................................................................... 3629
USS 命令の概要 ....................................................................................................... 3629
USS プロトコル使用の必要条件............................................................................... 3630
USS_PORT: USS ネットワーク経由の通信編集 .......................................................... 3634
USS_DRIVE: データとドライブをスワップ ............................................................... 3635
USS_RPM: ドライブからパラメータの読み出し ....................................................... 3640
USS_WPM: ドライブのパラメータ変更 .................................................................... 3642
USS 命令のパラメータ STATUS ................................................................................ 3645

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

23

目次

6.5.8
6.5.8.1
6.5.8.2
6.5.8.3
6.5.9
6.5.9.1
6.5.9.2

MODBUS (RTU) ........................................................................................................ 3647
MB_COMM_LOAD: MODBUS RTU の PtP モジュールの設定ポート ............................ 3647
MB_MASTER: PtP ポート経由で Modbus マスタとして通信 ...................................... 3651
MB_SLAVE: Modbus スレーブとして PtP ポート経由の通信 ..................................... 3661
MODBUS (TCP) ........................................................................................................ 3670
S7-1200 CPU のライブラリバージョン V2.1 および V3.x 用の MODBUS (TCP) .......... 3670
S7-1200 CPU のライブラリバージョン V4.0 以降および S7-1500 CPU の V3.x 以降用の MODBUS (TCP) .................................................................................................... 3696

6.6
6.6.1
6.6.1.1
6.6.1.2
6.6.1.3

TeleService .............................................................................................................. 3730
TM_MAIL:電子メールの転送 .................................................................................... 3730
TM_MAIL の説明...................................................................................................... 3730
パラメータ TO_S、CC、および FROM...................................................................... 3736
STATUS および SFB_STATUS パラメータ ................................................................... 3736

索引........................................................................................................................................... 3741

24

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1

ライブラリの例
1.1

Sample Library for Instructions「Sample Library for Instructions」は、STEP 7 (TIA Portal)内の命令を使用するプログラム例のグローバルライブラリです。このライブラリは、プログラミング言語 LAD でのコンパ
クトかつ分かりやすいプログラム例で、プログラミングをサポートします。1 つ以上の CPU
が SIMATIC S7-1200 / S7-1500 シリーズの CPU であることが、このライブラリを使用するための前提条件です。

7,$ኺዙኜወ␔ቑ✌ⅳ√

዆ኁኳ዆዇ቋሺ቉✌ⅳቑኒዐኴወ዆ኁኳ዆዇

亰㢢
✌ⅳ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020㕰㇄
✌ⅳኣኌካዊንዙ

抩≰25

ライブラリの例
1.1 Sample Library for Instructions

TIA Portal 情報システムでのプログラミング例「Sample Library for Instructions」のプログラミング例は、TIA Portal 情報システム内のプ
ログラミング例で使用されている説明と同じです。つまり、各プログラミング例のドキュメントを TIA Portal のヘルプ(<F1>)経由で呼び出せます。
7,$ኺዙኜወ␔ቑኴዊኍ዆ኽ

7,$ኺዙኜወ㍔⫀ኔኖኣኽኦኊዂኾዐእ቎ኴዊኍ዆ኽ√ቑ崻㢝ሯ岧憘ሸቯ቉ሧቡሼᇭ

)዆ኁኳ዆዇቎ቒᇬኦኊዂኾዐእ቎岧憘ሸቯ቉ሧቮኴዊኍ዆ኽ√ሯ⚺ቡቯ቉ሧቡሼᇭ

26

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ライブラリの例
1.2 Library of General Functions

ライブラリのダウンロード「Sample Library for Instructions」は、FAQ のページ (https://
support.industry.siemens.com/cs/jp/ja/view/109476781/en)に記載されています。
注記
プログラム例をプロジェクトに正しく追加する方法
前提条件やファンクションの違いにより、プログラム例はプログラムブロックだけでなく、その他のコンポーネント(PLC タグ、PLC データタイプ、ウォッチテーブルなど)も含んでいない場合があります。特殊なハードウェア(複数の CPU、リモート I/O、入力モジュールなど)を櫃お湯とするプログラム例もあります。
以下のルールに従ってください。
• すべてのプログラム例、または「Sample Library for Instructions」フォルダを CPU に単純に追加することは、絶対におやめください。
• 対応するプログラム例が、複数の CPU 向けのコンポーネントで構成されていないことを確認してください。
• 必ず、プログラム例の個々のコンポーネントを 1 つずつ、適切なプロジェクトフォルダに追加してください。必ず、適切な CPU を選択してください。

1.2

Library of General Functions「Library of General Functions」は、STEP 7 (TIA Portal)内の命令の補助ファンクションのグ
ローバルライブラリです。このライブラリは、命令のスコープを拡張するための、オートメーションプロジェクトで頻繁に必要とされる便利な基本ファンクションを提供します。
SIMATIC S7-1200(F) / S7-1500(F)シリーズの CPU で、このライブラリのすべてのコンテンツを使用できます。

*HQHULFIXQFWLRQV([DPSOHV

DVOLEUDU\ /*) /LEUDU\RI*HQHUDO)XQFWLRQV'DWD
KDQGOLQJ&RQYHUVLRQIXQFWLRQVTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

0DWK
IXQFWLRQV'DWHDQGWLPH
IXQFWLRQV

6LJQDOJHQHUDWRUV2WKHUIXQFWLRQV

27

ライブラリの例
1.2 Library of General Functions

一般ファンクション「Library of General Functions」の一般的なファンクションは、SCL プログラミング言語ではブロックとして提供されます。このライブラリには、次のファンクションが含まれています:FIFO、検索ファンクション、マトリックス計算、アストロクロック。これらのファンクションはパラメータ割り当てによってすぐに使用でき、汎用的に実装できます。

ライブラリのダウンロード「Library of General Functions」は、FAQ のページに掲載されています。

28

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2

非同期命令
2.1

同期命令と非同期命令の相違

非同期命令
プログラム処理で、同期命令と非同期命令の間の差別化が行われます。
「同期」および「非同期」プロパティは、命令の呼び出しと実行の間の一時的な関係に関連しています。
• 同期命令には、以下が適用されます。同期命令の呼び出しが終了するとき、その実行も終了します。
• これは、非同期命令の場合と異なります。非同期命令の実行は、複数の呼び出しにわ
たって、行われることがあります。CPU は、サイクリックユーザープログラムと並列に非同期命令を処理します。非同期命令は、処理されている間、CPU のリソースを占有します。
非同期命令は、通常、データ(モジュール用のデータレコード、通信データ、診断データ)を転送する命令です。
非同期命令に関する追加情報は、SIMATIC S7-1500 / ET 200MP マニュアル集 (https://
support.industry.siemens.com/cs/ww/en/view/86140384)『システムマニュアル』の「プログラム処理の基本|非同期命令」を参照してください。

ジョブの識別1 つの命令を複数の呼び出しにわたって実行するには、CPU がその命令の実行中のジョブに後続の呼び出しを一意に割り当てることが必要です。呼び出しをジョブに割り当てるために、命令のタイプに応じて、CPU は以下の 2 つの機構のどちらかを使用します。
• 命令のインスタンス(タイプ「SFB」システムファンクションブロックの場合)• ジョブを識別する命令の入力パラメータ
非同期命令を使用して、プロセス割り込みのトリガ、DP スレーブへの制御コマンドの出力、データ転送の開始、または設定されていない接続の中止を実行した後、現在のジョブが完了する前に再びその命令を呼び出す場合、その命令の応答は、2 番目の呼び出しに同じジョブが含まれているかどうかによって異なります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

29

非同期命令2.1 同期命令と非同期命令の相違

非同期で実行されるプログラムブロックへのパラメータの引き渡し
アクセスタイプが異なる(「標準」および「最適化」)コードブロック(FB/FC)およびデータブ
ロック(DB)を作成できます。コードブロックでは、任意の命令を呼び出すことができます。
いくつかの命令(たとえば、「WRIT_DBL」および「READ_DBL」)は非同期で実行されます。
TEMP のタグは実行中に変更してはいけないため、これらのブロックに提供することはできません。
これらの命令は、アクセスタイプの異なるコードブロックが交互に呼び出されるプログラ
ムでは、使用しないようにしてください。該当のプログラムでこれらの命令を使用すると、以下が生じます。
• 標準データブロックの構造体が直接または間接的に最適化コードブロックに渡され、最適化ブロックはこの構造体を上記のブロックの 1 つに直接または間接的に転送します。
• 逆の場合には、最適化コードブロックの構造体が直接または間接的に標準データブロックに渡され、標準データブロックはこの構造体を上記のプログラムブロックの 1 つに直接または間接的に転送します。
上記のどちらでもない場合は、引き渡されたデータの非表示のコピーが TEMP に作成され、それが負の確認を返す非同期のプログラムブロックを生成します。

パラメータ REQ
入力パラメータ REQ(request)は、ジョブの開始にのみ使用されます。
• 入力パラメータ REQ を「1」にセットすることによって、ジョブをトリガします(ケース1)。
• 特定のジョブが開始されてまだ完了していないときに、同じジョブを実行するために再び命令を呼び出す場合(たとえば周期割り込み OB で)、その命令では REQ は評価されません(ケース 2)。
• ジョブが完了しても、入力パラメータ REQ がまだ「1」にセットされていると、そのジョブは直ちに再度開始されます。
注記
REQ ビット = 「1」REQ ビットがセットされているとき、直前の呼び出しが完了した後、非同期の命令は再び開始されることに注意してください。これは望ましくない場合があります。このため、プロジェクトの維持をより明確で容易にするために、可能な限り早く REQ ビットを「0」にリセットすることをお奨めします。

30

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

非同期命令2.1 同期命令と非同期命令の相違

パラメータ RET_VAL および BUSY
出力パラメータ RET_VAL および BUSY はジョブのステータスを示します。
次のセクションの注記に留意してください。AUTOHOTSPOT• ケース 1 (REQ = 1 による最初の呼び出し)では、システムリソースが使用可能で、入力
パラメータの指定が正しい場合、コード W#16#7001 が RET_VAL に入力され、BUSY が「1」にセットされます。
必要なシステムリソースが現在使用されているか、入力パラメータにエラーがある場合は、対応するエラーコードが RET_VAL に入力され、BUSY の値が 0 になります。
注記
システムリソースが割り当て済みのときの REQ = 0 による呼び出し
S7-1500 CPU の場合に、REQ = 0 の非同期命令が呼び出されると、すべての使用可能なリソースがこの時点で割り当てられ、この呼び出しは、既に実行中のジョブの中間呼び
出しではなく、エラーコード W#16#80C3 (一時的なリソースエラー)が RET_VAL に入力されます。
S7-300 CPU の場合、エラーコード W#16#7000 (REQ = 0 による最初の呼び出し)が、こ
れらの境界条件で、RET_VAL に入力されます。
• ケース 2 (中間呼び出し)では、コード W#16#7002 が RET_VAL に入力され(これは、その呼び出しが現在まだ処理中ですというメッセージに対応します)、BUSY が「1」にセットされます。
• ジョブの最後の呼び出しには、以下が適用されます。
– 命令「DPNRM_DG (ページ 2199)」については、データ伝送にエラーがなければ、データ数(バイト単位)が整数として RET_VAL に入力されます。この場合、BUSY の値は「0」になります。
エラーがある場合は、エラー情報が RET_VAL に入力されます。この場合は、BUSY を評価してはなりません。
– その他のすべての命令では、ジョブがエラーなしで実行済みで、BUSY が値「0」を受け取る場合、「0」が RET_VAL に入力されます。エラーが存在する場合、エラーコー
ドが RET_VAL に入力され、BUSY が「0」を受け取ります。
注記
最初の呼び出しと最後の呼び出しが同一の場合は、RET_VAL および BUSY に対する応答は最後の呼び出しの場合と同じです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

31非同期命令2.1 同期命令と非同期命令の相違

概要
以下の表に、上記で説明した関係の概要を示します。特に、命令の呼び出しが完了したのにジョブの実行が完了していない場合の出力パラメータの可能な値を示します。
注記
各呼び出しの後に、プログラムで関連する出力パラメータを評価する必要があります。
「実行中の」ジョブにおける呼び出し、REQ、RET_VAL、および BUSY の関係。
呼び出し 呼び出しの REQ
の
タイプ
番号

RET_VAL

BUSY

DONE

ERROR

1

最初の呼び 1

W#16#7001

1

0

0

出し

エラーコード0

0

1

W#16#7002

100

最後の呼び 対象外

エラーが発生していない場合は

0

1

0

出し

W#16#0000(例外:RD_REC (ペー

エラーが発生した場合はエラーコー 0012～(n - 1) 中間呼び出 対象外
しn

ジ 2157)および RD_DPARA (ページ 2298):正常に呼び出されたデータの長さは、パラメータ STATUS に書
き込まれます。)
ド

32

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3

基本命令
3.1

LAD

3.1.1

ビット論理演算3.1.1.1---| |---:ノーマルオープン

説明ノーマルオープンの有効/無効は、関連するオペランドのシグナル状態によって変わります。オペランドのシグナル状態が「1」の場合、ノーマルオープンが閉じ、出力のシグナル
状態は入力のシグナル状態に設定されます。
オペランドのシグナル状態が「0」の場合、ノーマルオープンが有効にならず、命令の出力がシグナル状態「0」にリセットされます。
直列接続の場合、2 つ以上のノーマルオープンはビット単位で AND によって連結されます。
直列接続では、すべての接点を閉じる時に電力潮流が発生します。
並列接続の場合、ノーマルオープンは OR によって連結されます。並列接続では、いずれかの接点が閉じる時に電力潮流が発生します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200<Operand> Input

BOOL

S7-1500

I、Q、M、 I、Q、M、 シグナル状態を
D、L

D、L、T、 問い合わせるオC

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

ペランド。

33

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
この目的のために、以下の内容を持つグローバルデータブロックを作成します。
ブロックの名前:SLI_gDB_NOContact
名前データタイプstart1

BOOL

start2BOOL

start3BOOL

startOut

BOOL

以下のプログラムコードを書き込みます。
ಯ6/,BJ'%B ಯ6/,BJ'%B
12&RQWDFWಯ 12&RQWDFWಯVWDUWVWDUW

ಯ6/,BJ'%B
12&RQWDFWಯVWDUW2XW

ಯ6/,BJ'%B
12&RQWDFWಯVWDUW

次のいずれかの条件を満たす場合、オペランド"SLI_gDB_NOContact".startOut が設定されます。
• オペランド"SLI_gDB_NOContact".start1 および"SLI_gDB_NOContact".start2 のシグナル
状態が「1」であること。
• オペランド"SLI_gDB_NOContact".start3 のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.2---| / |---: ノーマルクローズ

説明
ノーマルクローズの有効/無効は、関連するオペランドのシグナル状態によって変わります。オペランドのシグナル状態が「1」の場合、ノーマルクローズが開き、命令の出力がシグナル状態「0」にリセットされます。

34

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
オペランドのシグナル状態が「0」の場合、ノーマルクローズが有効にならず、入力のシグナル状態が出力に転送されます。
直列接続の場合、2 つ以上のノーマルクローズはビット単位で AND によって連結されます。
直列接続では、すべての接点を閉じる時に電力潮流が発生します。
並列接続の場合、ノーマルクローズは OR によって連結されます。並列接続では、いずれかの接点が閉じる時に電力潮流が発生します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ<Operand>

宣言
Input

データ
タイプ

メモリ領域

説明

S7-1200

S7-1500

BOOL

I、Q、M、D、L

I、Q、M、D、シグナル状態

L、T、C

を問い合わせるオペラン
ド。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ7DJ2XWಯಯ7DJ,QBಯ

次のいずれかの条件が満たされている場合、オペランド「TagOut」がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

35

基本命令
3.1 LAD

3.1.1.3--|NOT|--: RLO の反転

説明「RLO の反転」命令を使用し、論理演算の結果(RLO)のシグナル状態を反転します。命令の入力時のシグナル状態が「1」の場合、命令の出力のシグナル状態は「0」になります。命令の入力時のシグナル状態が「0」の場合、命令の出力のシグナル状態は「1」です。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

127

ಯ7DJ2XWಯಯ7DJ,QBಯ ಯ7DJ,QBಯ

次のいずれかの条件が満たされている場合、オペランド「TagOut」がリセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• オペランド「TagIn_2」および「TagIn_3」のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.4---( )---: 割り当て

説明
「割り当て」命令を使って、指定したオペランドのビットを設定できます。コイルの入力の論理演算(RLO)の結果がシグナル状態「1」の場合、指定したオペランドがシグナル状態「1」にセットされます。コイルの入力におけるシグナル状態が「0」の場合、指定されたオペランドのビットが「0」にリセットされます。
この命令は、RLO に影響を与えません。コイルの入力における RLO は、直接出力に送信さ
れます。

36

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「割り当て」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L RLO が割り当てられるオ
ペランド。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ7DJ2XWBಯಯ7DJ,QBಯ

ಯ7DJ2XWBಯ

次のいずれかの条件が満たされている場合、オペランド「TagOut_1」がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。
次のいずれかの条件が満たされている場合、オペランド「TagOut_2」がセットされます。
• オペランド「TagIn_1」、「TagIn_2」および「TagIn_4」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であり、オペランド「TagIn_4」のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.5--( / )--:否定割り当て

説明「否定割り当て」命令は、論理演算の結果(RLO)を反転し、指定したオペランドに割り当てます。コイルの入力における RLO が「1」の場合、オペランドはリセットされます。コイルの入力における RLO が「0」の場合、オペランドは「1」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

37

基本命令
3.1 LADパラメータ
次の表に、「割り当てを無効にする」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L RLO が割り当てられるオ
ペランド。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ7DJ2XWBಯಯ7DJ,QBಯ

ಯ7DJ2XWBಯ

次のいずれかの条件が満たされている場合、オペランド「TagOut_1」がリセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.6---( R )---: 出力のリセット

説明「出力のリセット」命令を使って、指定したオペランドのシグナル状態を「0」にリセットできます。
この命令は、コイルの入力における論理演算の結果(RLO)が「1」の場合にのみ実行されます。コイルへの電力潮流が発生した場合(RLO が「1」)、指定したオペランドが「0」にリセットされます。コイルの入力における RLO が「0」の場合 (コイルへの信号流れが発生しない場合)、指定したオペランドのシグナル状態は変更されません。

38

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「出力のリセット」命令のパラメータを示します。
パラメータ 宣言<Operand> Output

データタイプ
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、

RLO = 「1」の場

M、D、L

D、L、T、C

合にリセットされるオペランド。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ
5

ಯ7DJ,QBಯ

次のいずれかの条件が満たされている場合、オペランド「TagOut」がリセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.7---( S )---: 出力のセット

説明「出力のセット」命令を使用すると、指定したオペランドのシグナル状態を「1」にセットすることができます。
この命令は、コイルの入力における論理演算の結果(RLO)が「1」の場合にのみ実行されます。コイルへの電力潮流が発生した場合(RLO が「1」)、指定したオペランドは「1」にセットされます。コイルの入力における RLO が「0」の場合 (コイルへの信号流れが発生しない場合)、指定したオペランドのシグナル状態は変更されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

39

基本命令
3.1 LADパラメータ
次の表に、「出力のセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L RLO =「1」を使用してセットされるオペランド例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ
6

ಯ7DJ,QBಯ

次のいずれかの条件が満たされている場合、オペランド「TagOut」がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.8

SET_BF:ビットフィールドのセット

説明「ビットフィールドのセット」命令を使って、特定のアドレスから開始する複数のビットを設定します。
<Operand1>の値を使用して、セット対象となるビット数を決めます。セットする最初のビットのアドレスは、<Operand2>によって定義されます。<Operand1>の値は、選択したバイトのビット数を超えてはいけません。この値がビット数より大きい場合、命令は実行されず、エラーメッセージ「インデックス<Operand1>の範囲違反」が表示されます。セットされたビットは、別の命令によって明示的にリセットされるまで、セットされたままです。
命令の下のオペランドプレースホルダに<Operand1>を指定します。命令の上のオペラン
ドプレースホルダに<Operand2>を指定します。

40

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
この命令は、コイルの入力における論理演算の結果(RLO)が「1」の場合にのみ実行されます。コイルの入力における RLO が「0」の場合、命令は実行されません。

タイプ PLC データタイプ、STRUCT、または ARRAY のビットフィールドタイプ PLC データタイプ、STRUCT、または ARRAY の構造体では、構造体に含まれるビッ
ト数は、リセットできる最大ビット数を示します。
• たとえば、<Operand1>で値「20」を指定し、構造体が 10 ビットのみを含むと、これらの 10 ビットのみがセットされます。
• たとえば、<Operand1>で値「5」を指定し、構造体が 10 ビットを含むと、ちょうど 5
ビットがセットされます。

パラメータ
次の表に、「ビットフィールドのセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

UINT

定数

セットするビットの数

BOOL

I、Q、M

セットする最初のビット

DB または IDB

へのポインタ。

><Operand2 Output>の場合、BOOLの ARRAY[..]のエレメント

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ0\'%ಯ0\%RRO$UUD\>@
6(7B%)

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、オペランド"MyDB".MyBoolArray[4]のアドレスで始まる 5 つのビットがセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

41

基本命令
3.1 LAD

3.1.1.9

RESET_BF:ビットフィールドのリセット

説明「ビットフィールドのリセット」命令を使って、特定のアドレスから開始する複数のビットをリセットします。
<Operand1>の値を使用して、リセット対象となるビット数を決めます。リセットする最初のビットのアドレスは<Operand2>で定義します。<Operand1>の値は、選択したバイトのビット数を超えてはいけません。この値がビット数より大きい場合、命令は実行されず、
エラーメッセージ「インデックス<Operand1>の範囲違反」が表示されます。セットされたビットは、別の命令によって明示的にリセットされるまで、セットされたままです。
命令の下のオペランドプレースホルダに<Operand1>を指定します。命令の上のオペラン
ドプレースホルダに<Operand2>を指定します。
この命令は、コイルの入力における論理演算の結果(RLO)が「1」の場合にのみ実行されます。コイルの入力における RLO が「0」の場合、命令は実行されません。

タイプ PLC データタイプ、STRUCT、または ARRAY のビットフィールドタイプ PLC データタイプ、STRUCT、または ARRAY の構造体では、構造体に含まれるビッ
ト数は、セットできる最大ビット数を示します。
• たとえば、<Operand1>で値「20」」を指定し、構造体が 10 ビットのみを含むと、これらの 10 ビットのみがリセットされます。
• たとえば、<Operand1>で値「5」を指定し、構造体が 10 ビットを含むと、ちょうど 5
ビットがリセットされます。

42

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

パラメータ
次の表に、
「ビットフィールドのリセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

UINT

定数

リセットするビットの数

BOOL

I、Q、M

リセットする最初のビッDB またはイントへのポインタ。

><Operand2 Output>

スタンス DB
で、ARRAY[..]of BOOL のエレ
メント

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

ಯ0\'%ಯ0\%RRO$UUD\>@
5(6(7B%)


オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、オペランド"MyDB".MyBoolArray[4]のアドレスで始まる 5 つのビットがリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.10

SR: フリップフロップのセット/リセット

説明「フリップフロップのリセット/セット」命令を使用し、入力 S および R1 のシグナル状態に応じて、指定されたオペランドのビットをセットまたはリセットします。入力 S のシグナル
状態が「1」で、入力 R1 のシグナル状態が「0」の場合、指定したオペランドは「1」にセットされます。入力 S のシグナル状態が「0」で、入力 R1 のシグナル状態が「1」の場
合、指定したオペランドが「0」にリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

43

基本命令
3.1 LAD
入力 R1 が入力 S よりも優先します。入力 S および R1 の両方でシグナル状態が「1」の場
合、指定したオペランドがシグナル状態「0」にリセットされます。
2 つの入力 S と R1 のシグナル状態が「0」の場合、この命令は実行されません。この場合、オペランドのシグナル状態は変更されません。
オペランドの現在のシグナル状態は出力 Q に転送されるため、そこで照会できます。

パラメータ
次の表に、「フリップフロップのセット/リセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

S

Input

BOOL

R1

Input

S7-1500

I、Q、M、 I、Q、
D、L

BOOL

説明
セットの有効化

M、D、L

I、Q、M、 I、Q、D、L

リセットの有効化

M、D、
L、T、C

<Operand> InOut

BOOL

I、Q、M、 I、Q、セットまたはリセ

D、Lットされるオペラ

M、D、L

ンド。
Q

Output

BOOL

I、Q、M、 I、Q、オペランドのシグ

D、L

ナル状態

M、D、L

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ65ಯ
ಯ7DJ,QBಯ

6

65

4

ಯ7DJ2XWಯಯ7DJ,QBಯ
5

次の条件が満たされている場合、オペランド「TagSR」および「TagOut」がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• オペランド「TagIn_2」のシグナル状態が「0」であること。

44

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次のいずれかの条件が満たされている場合、オペランド「TagSR」および「TagOut」がリセットされます。
• オペランド「TagIn_1」のシグナル状態が「0」であり、オペランド「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.11

RS: フリップフロップのリセット/セット

説明「フリップフロップのリセット/セット」命令を使って、入力 R および S1 のシグナル状態に基づいて指定されたオペランドのビットをセットまたはリセットします。入力 R のシグナル
状態が「1」で、入力 S1 のシグナル状態が「0」の場合、指定したオペランドが「0」にリセットされます。入力 R のシグナル状態が「0」で、入力 S1 のシグナル状態が「1」の場合、指定したオペランドは「1」にセットされます。
入力 S1 が入力 R よりも優先します。入力 R と S1 のシグナル状態がどちらも「1」の場合、指定したオペランドのシグナル状態が「1」にセットされます。
2 つの入力 R と S1 のシグナル状態が「0」の場合、この命令は実行されません。この場合、オペランドのシグナル状態は変更されません。
オペランドの現在のシグナル状態は出力 Q に転送されるため、そこで照会できます。

パラメータ
次の表に、「フリップフロップのリセット/セット」命令のパラメータを示します。
パラメータ 宣言
R
S1

Input
Input

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

データタイプ
BOOL
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、

I、Q、M、

M、D、L

D、L

I、Q、

I、Q、M、

M、D、L

D、L、T、C

説明
リセットの有効化
セットの有効化45

基本命令
3.1 LAD
パラメータ 宣言

データタイプ<Operand> InOut

BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、

リセットまたはセ

M、D、L

D、L

ットされるオペラ
ンド。

Q

Output

BOOL

I、Q、

I、Q、M、オペランドのシグ

M、D、L

D、L

ナル状態

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ56ಯ
ಯ7DJ,QBಯ

5

56

4

ಯ7DJ2XWಯಯ7DJ,QBಯ
6

次の条件が満たされている場合、オペランド「TagRS」および「TagOut」がリセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• オペランド「TagIn_2」のシグナル状態が「0」であること。
次のいずれかの条件が満たされている場合、オペランド「TagRS」および「TagOut」がセットされます。
• オペランド「TagIn_1」のシグナル状態が「0」であり、オペランド「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

46

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.1.12--|P|--:立ち上がりエッジのオペランドスキャン

説明「立ち上がりエッジのオペランドスキャン」命令を使用すると、指定したオペランド(<Operand1>)で「0」から「1」へのシグナル状態の切り替えが発生したかどうかを判断することができます。この命令は、エッジメモリビット(<Operand2>)に保存されている以前のスキャンのシグナル状態と、<Operand1> の現在のシグナル状態を比較します。この命令が論理演算(RLO)の結果の「0」から「1」への切り替えを検出した場合、正の信号立ち上
がりエッジがあります。
次の図に、信号立ち下がりエッジおよび信号立ち上がりエッジの場合のシグナル状態の切り替えを示します。
ኔኍኧወ䕅㏚≰⚆䵚ቄₙሯቭኅአን

≰⚆䵚ቄₚሯቭኅአን




ኜኁኻ

命令が実行されるたびに、信号立ち上がりエッジが照会されます。信号立ち上がりエッジが検出された場合、1 プログラムサイクルの間<Operand1>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。
命令の上のオペランドのプレースホルダで、照会されるオペランド(<Operand1>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand2>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

47

基本命令
3.1 LADパラメータ
次の表に、「立ち上がりエッジのオペランドスキャン」命令のパラメータを示します。
パラメータ 宣言<Operand1 Input

データタイプ
BOOL

>

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 スキャン対象の信

M、D、L

D、L、T、

号

C<Operand2 InOut

BOOL

>

I、Q、

I、Q、M、 以前のクエリのシ

M、D、L

D、L

グナル状態が保存されているエッジ
メモリビット例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ2XWಯ
3
ಯ7DJB0ಯ

次の条件が満たされている場合、オペランド「TagOut」がセットされます。
• オペランド「TagIn_1」、「TagIn_2」および「TagIn_3」のシグナル状態が「1」であること。
• オペランド「TagIn_4」に立ち上がりエッジが発生していること。前のスキャンのシグ
ナル状態がエッジメモリビット「Tag_M」に保存されています。
• オペランド「TagIn_5」のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

48

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.1.13--|N|--:立ち下がりエッジのオペランドスキャン

説明「立ち下がりエッジのオペランドスキャン」命令を使用すると、指定したオペランド(<Operand1>)で「1」から「0」へのシグナル状態の切り替えが発生したかどうかを判断することができます。この命令は、<Operand1>の現在のシグナル状態と、エッジメモリビット(<operand2>)に保存された前のスキャンのシグナル状態を比較します。この命令が論
理演算(RLO)の結果の「1」から「0」への切り替えを検出した場合、負の信号立ち下がり
エッジがあります。
次の図に、信号立ち下がりエッジおよび信号立ち上がりエッジの場合のシグナル状態の切り替えを示します。
ኔኍኧወ䕅㏚≰⚆䵚ቄₙሯቭኅአን

≰⚆䵚ቄₚሯቭኅአን




ኜኁኻ

命令が実行されるたびに、信号立ち下がりエッジが照会されます。信号立ち下がりエッジが検出された場合、1 プログラムサイクルの間<Operand1>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。
命令の上のオペランドのプレースホルダで、照会されるオペランド(<Operand1>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand2>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

49

基本命令
3.1 LADパラメータ
次の表に、「立ち下がりエッジのオペランドスキャン」命令のパラメータを示します。
パラメータ 宣言<Operand1 Input

データタイプ

BOOL

>

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 スキャン対象の信号

M、D、 D、L、T、<Operand2 InOut

BOOL

>

L

C

I、Q、

I、Q、M、 以前のクエリのシグ

M、D、 D、Lナル状態が保存されLているエッジメモリビット

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ2XWಯ
1
ಯ7DJB0ಯ

次の条件が満たされている場合、オペランド「TagOut」がセットされます。
• オペランド「TagIn_1」、「TagIn_2」および「TagIn_3」のシグナル状態が「1」であること。
• オペランド「TagIn_4」に信号立ち下りエッジが発生していること。前のスキャンのシグナル状態がエッジメモリビット「Tag_M」に保存されています。
• オペランド「TagIn_5」のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

50

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.1.14--(P)--:信号立ち上がりエッジのオペランドの設定

説明「立ち上がりエッジのオペランド設定」命令を使用し、論理演算の結果(RLO)で「0」から「1」への切り替えがあった場合に、指定したオペランド(<Operand1>)をセットすることができます。この命令は、現在の RLO と、エッジメモリビット(<Operand2>)に保存された
以前のクエリからの RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出すると、信号立ち上がりエッジが存在します。
命令が実行されるたびに、信号立ち上がりエッジが照会されます。信号立ち上がりエッジが検出された場合、1 プログラムサイクルの間<Operand1>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。
命令の上のオペランドのプレースホルダで、設定されるオペランド(<Operand1>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand2>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

パラメータ
次の表に、「立ち上がりエッジのオペランド設定」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域<Operand1 Output

BOOL

I、Q、M、D、L 立ち上がりエッジによっ><Operand2 InOut

説明て設定されたオペランド

BOOL

I、Q、M、D、L エッジメモリビット>

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

51

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ2XWಯ
3
ಯ7DJB0ಯಯ7DJ,QBಯ

コイルの入力におけるシグナル状態が「0」から「1」に切り替わると(信号立ち下がりエッジ)、1 回のプログラムサイクルの間にオペランド「TagOut」がセットされます。それ以外のすべての場合、オペランド「TagOut」のシグナル状態は「0」です。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.15--(N)--:信号立ち下がりエッジのオペランドの設定

説明「信号立ち下がりエッジのオペランドの設定」命令を使用し、論理演算の結果(RLO)で「1」から「0」への切り替えがあった場合に、指定したオペランド(<Operand1>)をセットすることができます。この命令は、現在の RLO と、エッジメモリビット(<Operand2>)に保存
された以前のクエリからの RLO を比較します。命令が RLO の「1」から「0」への切り替
えを検出すると、信号立ち下がりエッジが存在します。
命令が実行されるたびに、信号立ち下がりエッジが照会されます。信号立ち下がりエッジが検出された場合、1 プログラムサイクルの間<Operand1>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。
命令の上のオペランドのプレースホルダで、設定されるオペランド(<Operand1>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand2>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

52

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

パラメータ
次の表に、
「信号立ち下がりエッジのオペランドの設定」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域<Operand1 Output

BOOL

I、Q、M、D、L 立ち下がりエッジによっ>説明て設定されたオペランド<Operand2 InOut

BOOL

I、Q、M、D、L エッジメモリビット>例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ ಯ7DJ,QBಯ ಯ7DJ2XWಯ
1
ಯ7DJB0ಯಯ7DJ,QBಯ

コイルの入力におけるシグナル状態が「1」から「0」に切り替わると(信号立ち下がりエッジ)、1 回のプログラムサイクルの間にオペランド「TagOut」がセットされます。それ以外のすべての場合、オペランド「TagOut」のシグナル状態は「0」です。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.16

P_TRIG: 立ち上がりエッジの RLO スキャン

説明
「立ち上がりエッジの RLO スキャン」命令を使用して、論理演算の結果(RLO)のシグナル状
態での「0」から「1」への切り替えを照会します。この命令は、RLO の現在のシグナル状
態と、エッジメモリビット(<Operand>)に保存された前に照会されたシグナル状態を比較します。命令が RLO の「0」から「1」への切り替えを検出すると、信号立ち上がりエッジが存在します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

53

基本命令
3.1 LAD
命令が実行されるたびに、信号立ち上がりエッジが照会されます。信号立ち上がりエッジが検出されると直ちに、プログラムサイクルの長さの間に命令の出力 Q がシグナル状態「1」を返します。それ以外のすべての場合、出力はシグナル状態「0」を返します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

パラメータ
次の表に、「立ち上がりエッジの RLO スキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CLK

Input

BOOL

I、Q、M、D、L 現在の RLO<Operand> InOut

BOOL

M、D

以前のクエリの RLO が保存されているエッジメモ
リビット。

Q

Output

BOOL

I、Q、M、D、L エッジ評価の結果

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

3B75,*
&/.

4

&$6
-03

ಯ7DJB0ಯಯ7DJ,QBಯ

以前のクエリの RLO は、エッジメモリビット「Tag_M」に保存されています。RLO のシグ
ナル状態で「0」から「1」の切り替えが検出された場合、プログラムがジャンプラベル
CAS1 にジャンプします。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

54

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.1.17

N_TRIG: 立ち下がりエッジの RLO スキャン

説明
「立ち下がりエッジの RLO スキャン」命令を使用して、論理演算の結果(RLO)のシグナル状
態での「1」から「0」への切り替えを照会します。この命令は、RLO の現在のシグナル状
態と、エッジメモリビット(<Operand>)に保存された前に照会されたシグナル状態を比較します。命令が RLO の「1」から「0」への切り替えを検出すると、信号立ち下がりエッジが存在します。
命令が実行されるたびに、信号立ち下がりエッジが照会されます。信号立ち下がりエッジが検出されると直ちに、プログラムサイクルの長さの間に命令の出力 Q がシグナル状態「1」を返します。それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

パラメータ
次の表に、「立ち下がりエッジの RLO スキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CLK

Input

BOOL

I、Q、M、D、L 現在の RLO<Operand> InOut

BOOL

M、D

以前のクエリの RLO が保存されているエッジメモ
リビット。

Q

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL

I、Q、M、D、L エッジ評価の結果

55

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

1B75,*
&/.

4

&$6
-03

ಯ7DJB0ಯಯ7DJ,QBಯ

以前のクエリの RLO は、エッジメモリビット「Tag_M」に保存されています。RLO のシグ
ナル状態で「1」から「0」の切り替えが検出された場合、プログラムがジャンプラベル
CAS1 にジャンプします。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.18

R_TRIG: 信号立ち上がりエッジを検出

説明「信号立ち上がりエッジの検出」命令を使用して、CLK 入力で「0」から「1」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前のクエリ(エッジメ
モリビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「0」から「1」への状態変化を検出すると、Q 出力で信号立ち上がりエッジが生成されます。つまり、
正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

パラメータ
次の表に、「信号立ち上がりエッジの検出」命令のパラメータを示します。

56

パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

CLK

BOOL

I、Q、M、D、エッジが照会される受信

L、または定数

信号

Q

Input
Output

BOOL

I、Q、M、D、L エッジ評価の結果

例
次の例で、命令がどのように動作するかを示します。
'%
ಯ5B75,*B'%ಯ

5B75,*

ಯ7DJ,QBಯ

(1

(12

&/.

4

ಯ7DJ,QBಯ
ಯ7DJ2XWB4ಯಯ7DJ,QBಯ

CLK 入力のタグでの前の状態は、「R_TRIG_DB」タグに保存されます。「0」から「1」へのシグナル状態の変化が「TagIn_1」および「TagIn_2」オペランド または「TagIn_3」オペ
ランドで検出されると、「TagOut_Q」出力のシグナル状態は 1 サイクルについて「1」になります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.1.19

F_TRIG: 信号立ち下がりエッジの検出

説明「信号立ち下がりエッジの検出」命令を使用して、CLK 入力で「1」から「0」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前のクエリ(エッジメ
モリビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「1」から「0」への状態変化を検出すると、Q 出力で信号立ち下がりエッジが生成されます。つまり、
正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

57

基本命令
3.1 LADパラメータ
次の表に、「信号立ち下がりエッジの検出」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

CLK

Input

BOOL

I、Q、M、D、エッジが照会さL、または定数

れる受信信号

Q

OutputBOOL

説明

I、Q、M、D、L エッジ評価の結果例
次の例で、命令がどのように動作するかを示します。
'%ಯ)B75,*B'%ಯ

)B75,*

ಯ7DJ,QBಯ

(1

(12

&/.

4

ಯ7DJ,QBಯ
ಯ7DJ2XWB4ಯಯ7DJ,QBಯ

CLK 入力のタグでの前の状態は、「F_TRIG_DB」タグに保存されます。「1」から「0」へのシグナル状態の変化が「TagIn_1」および「TagIn_2」オペランド または「TagIn_3」オペ
ランドで検出されると、「TagOut_Q」出力のシグナル状態は 1 サイクルについて「1」になります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

58

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.2

タイマの動作

3.1.2.1

TP:パルスの生成説明「パルス生成」命令を使用して、プログラムされた持続時間の出力 Q を設定できます。入力
IN で論理演算の結果(RLO)が「0」から「1」(立ち上がりエッジ)に切り替わると、命令が開始します。命令が開始されると、プログラムされた時間 PT が開始します。その後の入力信号に関係なく、出力 Q が持続時間 PT の間セットされます。時間 PT の経過中、IN 入力での新しい信号立ち上がりエッジの検出は Q 出力のシグナル状態に影響を与えません。
ET 出力での現在の時間値をスキャンできます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。時間 PT が経過し、入力 IN のシグナル状態が「0」の場合、ET
出力がリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET 出力は時間 PT の期限が切れるとすぐに定数値を返します。
「パルスタイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。この前に、論理演算が必要となります。
「パルス生成」命令の各呼び出しは、インスタンスデータが保存される IEC タイマに割り当てる必要があります。

S7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TP_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TP_TIME」または「IEC_TIMER」のローカ
ルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TP_TIME、または TP_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TP_TIME、TP_LTIME、IEC_TIMER、またはIEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

59

基本命令
3.1 LAD

インスタンスデータ内の現在値の更新「パルスタイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「パルスタイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「パルスタイマ」
命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「パルスタイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

60

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「パルス生成」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200 S7-1500 S7-1200

S7-1500

BOOL

I、Q、

I、Q、M、 開始入力

M、D、

D、L、P、

BOOL

L、または または定数
定数
PT

Input

TIME

TIME,

I、Q、

I、Q、M、 パルスの持続

LTIME

M、D、

D、L、P、

時間

L、または または定数 PT パラメータ定数の値は正の値であることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

61

基本命令
3.1 LAD
パラメータ 宣言
Q
ET

データタイプ

OutputOutput

メモリ領域

説明

S7-1200 S7-1500 S7-1200

S7-1500

BOOL

I、Q、

I、Q、M、 パルス出力

M、D、L

D、L、P

TIME,

I、Q、

I、Q、M、 現在の時間値

LTIME

M、D、L

D、L、P

TIME

BOOL

パルスタイミング図
次の図に、「パルスタイマ」命令のパルスタイミング図を示します。
,1

4

37

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ73B'%ಯ

ಯ7DJB6WDUWಯಯ7DJB3UHVHW7LPHಯ

62

73
7,0(
,1

4

37

(7

ಯ7DJB6WDWXVಯಯ7DJB(ODSVHG7LPHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 => 「1」PT

Tag_PresetTime

T#10s

Q

Tag_Status

TRUE

ET

Tag_ElapsedTime

T#0s から => T#10s「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わるときに、PT パラメータに対してプログラムされた時間が開始され、「Tag_Status」オペランドが「1」にセットされます。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。その時間が経過すると、「Tag_Status」オペランドがシグナル状態「0」にリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.2.2

TON:オンディレータイマ

説明「オンディレータイマ」命令を使用して、プログラムされた時間 Q だけ PT 出力のセットを遅延させることができます。入力 IN で論理演算の結果(RLO)が「0」から「1」(立ち上がりエッジ)に切り替わると、命令が開始します。命令が開始されると、プログラムされた時
間 PT が開始します。時間 PT が経過すると、出力 Q のシグナル状態は「1」になります。
出力 Q は、開始入力が「1」の間はセットされた状態が続きます。開始入力のシグナル状態
が「1」から「0」に切り替わると、Q 出力がリセットされます。開始入力で信号の新しい立ち上がりエッジが検出されると、タイマファンクションが再開されます。
現在の時間値は、ET 出力で照会できます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。IN 入力がシグナル状態「0」に切り替わると、ET 出力が直ちにリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET
出力は時間 PT の期限が切れるとすぐに定数値を返します。
「オンディレータイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。
この前に、論理演算が必要となります。
「オンディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

63

基本命令
3.1 LADS7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TON_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TON_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TON_TIME、または TON_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TON_TIME、TON_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

64

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

インスタンスデータ内の現在値の更新「オンディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オンディレータイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「オンディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オンディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

65

基本命令
3.1 LAD

危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オンディレータイマ」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、

I、Q、M、 開始入力

M、D、

D、L、P、

L、また

または定数

は定数
PT

Input

TIME

TIME,

I、Q、

I、Q、M、 オンディレ

LTIME

M、D、

D、L、P、

L、またまたは定数 間は定数ーの持続時
PT パラメ
ータの値は
正の値であ
ることが必
要です。

66

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言
Q

データタイプ

Output

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、

I、Q、M、 時間 PT のM、D、L D、L、P

経過時にセ
ットされる
出力。

ET

Output

TIME

TIME,

I、Q、

I、Q、M、 現在の時間

LTIME

M、D、L D、L、P

値

パルスタイミング図
次の図に、「オンディレータイマ」命令のパルスタイミング図を示します。
,1

4

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ721B'%ಯ

ಯ7DJB6WDUWಯಯ7DJB3UHVHW7LPHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

721
7,0(
,1

4

37

(7

ಯ7DJB6WDWXVಯಯ7DJB(ODSVHG7LPHಯ

67

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 => 「1」PT

Tag_PresetTime

T#10s

Q

Tag_Status

FALSE; 10 秒後=> TRUE

ET

Tag_ElapsedTime

T#0s から => T#10s「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、PT パラメータに対してプログラムされた時間が開始されます。時間が経過すると、「Tag_Status」オペ
ランドのシグナル状態が「1」にセットされます。Tag_Start オペランドのシグナル状態が「1」である限り、Tag_Status オペランドは「1」にセットされたままです。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。オペランド「Tag_Start」のシグナル状態
が「1」から「0」に切り替わると、「Tag_Status」オペランドがリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.2.3

TOF:オフディレータイマ

説明「オフディレータイマ」命令を使用して、プログラムされた時間 Q だけ PT 出力のリセッ
トを遅延させることができます。Q 出力は、入力 IN で論理演算の結果(RLO)が「1」から「0」に切り替わった場合(立ち下がりエッジ)に設定されます。入力 IN がシグナル状態「1」に戻ると、プログラムされた時間 PT が開始します。持続時間 PT の間、出力 Q がセットされた状態が継続します。PT 持続時間が経過すると、Q 出力がリセットされます。持続時間 PT が経過する前に入力 IN のシグナル状態が「1」に切り替わると、タイマがリセッ
トされます。出力 Q のシグナル状態は、「1」のままになります。
現在の時間値は、ET 出力で照会できます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。PT 持続時間が経過すると、入力 IN が「1」に戻るまで、ET 出力は現在値にセットされたままです。持続時間 PT が経過する前に入力 IN が「1」に切り替わると、ET 出力が値 T#0s にリセットされます。命令がプログラム内で、たとえば、スキッ
プされて呼び出されない場合、ET 出力はこの時間が経過するとすぐに定数値を返します。
「オフディレータイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。
この前に、論理演算が必要となります。
「オフディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。

68

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADS7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TOF_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TOF_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TOF_TIME、または TOF_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TOF_TIME、TOF_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

69

基本命令
3.1 LAD

インスタンスデータ内の現在値の更新「オフディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オフディレータイマ」命令は、現在の RLO と、インスタンスデータの IN パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が開始されます。「オフディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、 Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オフディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

70

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、
「オフディレータイマ」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、

I、Q、M、 開始入力

M、D、

D、L、P、

L、また

または定数

は定数
PT

Input

TIME

TIME,

I、Q、

I、Q、M、 オフディレ

LTIME

M、D、

D、L、P、

L、またまたは定数 間は定数ーの持続時
PT パラメ
ータの値は
正の値であ
ることが必
要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

71

基本命令
3.1 LAD
パラメータ 宣言
Q

データタイプ

Output

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、

I、Q、M、 時間 PT がM、D、L D、L、P

経過したと
き、リセッ
トされる出
力。

ET

Output

TIME

TIME,

I、Q、

I、Q、M、 現在の時間

LTIME

M、D、L D、L、P

値

パルスタイミング図
次の図に、「オフディレータイマ」命令のパルスタイミング図を示します。
,1

4
37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ72)B'%ಯ

ಯ7DJB6WDUWಯಯ7DJB3UHVHW7LPHಯ

72

72)
7,0(
,1

4

37

(7

ಯ7DJB6WDWXVಯಯ7DJB(ODSVHG7LPHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 =>「1」; シグナル移行「1」 =>「0」

PT

Tag_PresetTime

T#10s

Q

Tag_Status

TRUE

ET

Tag_ElapsedTime

T#10s から => T#0s

オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わると、「Tag_Status」
オペランドがシグナル状態「1」にセットされます。「Tag_Start」オペランドのシグナル状
態が「1」から「0」に切り替わると、PT パラメータに対してプログラムされた時間が開始されます。その時間が継続中の場合は、「Tag_Status」オペランドは TRUE にセットされたままです。その時間が経過すると、「Tag_Status」オペランドは FALSE にリセットされます。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.2.4

TONR: タイムアキュムレータ

説明「タイムアキュムレータ」命令を使用して、PT パラメータによってセットされた時間内の時間値を累積します。IN 入力のシグナル状態が「0」から「1」に切り替わると(信号立ち上
がりエッジ)、時間測定が実行され、時間 PT が開始します。その時間 PT が継続中は、IN
入力のシグナル状態が「1」のときに記録された時間値が累積されます。累積された時間は
ET 出力に書き込まれ、そこから照会できます。持続時間 PT の期限が切れると、出力 Q のシグナル状態は「1」です。IN パラメータのシグナル状態が「1」から「0」(立ち下がりエッジ)に切り替わった場合でも、Q パラメータは「1」にセットされた状態が継続します。
開始入力のシグナル状態に関わりなく、R 入力は、ET および Q 出力をリセットします。
「タイムアキュムレータ」命令は、ネットワーク内またはネットワークの終端に配置できます。この前に、論理演算が必要となります。
「タイムアキュムレータ」命令の各呼び出しは、インスタンスデータが格納される IEC タ
イマに割り当てられる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

73

基本命令
3.1 LADS7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TONR_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TONR_TIME」または「IEC_TIMER」のローカルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TONR_TIME、または TONR_LTIMEの構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TONR_TIME、TONR_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「タイムアキュムレータ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「タイムアキュムレータ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が続行されます。命令がRLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が中断されます。「タイムアキュムレータ」命令が処理されると、IN パラメー
タの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。

74

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD• R 入力入力 R での信号「1」は、時間測定をリセットおよびブロックします。IN 入力でのエッジは無視されます。入力 R での信号「0」は、時間測定を再度有効にします。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「タイムアキュムレータ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。
危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

75

基本命令
3.1 LADパラメータ
次の表に、「タイムアキュムレータ」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

S7-1200

S7-1500

S7-1200 S7-1500

BOOL

BOOL

I、Q、

I、Q、

説明
開始入力

M、D、 M、D、L、また L、P、ま
R

Input

BOOL

BOOL

は定数

たは定数

I、Q、

I、Q、

リセット入力M、D、 M、D、L、また L、P、ま
PT

Input

TIME

は定数

たは定数

TIME,

I、Q、

I、Q、

LTIME

M、D、 M、D、

持続時間

L、また L、P、まPT パラメータのは定数

値は正の値であたは定数

時間記録の最大ることが必要です。
QET

OutputOutput

BOOL

TIME

BOOL

I、Q、

I、Q、

時間 PT が経過しM、D、 M、D、たときにセット

L

L、P

される出力。

TIME,

I、Q、

I、Q、

累積時間

LTIME

M、D、 M、D、
L

76

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

パルスタイミング図
次の図に、「タイムアキュムレータ」命令のパルスタイミング図を示します。
,1

5

4

37

(7

例
次の例で、命令がどのように動作するかを示します。
ಯ7215B'%ಯ

ಯ7DJB6WDUWಯ

7215
7,0(
,1

4

ಯ7DJB5HVHWಯ

5(7

ಯ7DJB3UHVHW7LPHಯ

37

ಯ7DJB6WDWXVಯಯ7DJB(ODSVHG7LPHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 => 「1」PT

Tag_PresetTime

T#10s

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

77

基本命令
3.1 LAD
パラメータ

オペランド

値

Q

Tag_Status

FALSE; 10 秒後=> TRUE

ET

Tag_ElapsedTime

シグナル移行「0」 => 「1」時間 T#10s が経過。
5 秒後、シグナル移行「1」=> 「0」:「Tag_ElapsedTime」オペラ
ンドの時間は T#5s のままです。
約 2 秒後、更新されたシグナル移行「0」 => 「1」:「Tag_ElapsedTime」オペラ
ンドの時間は、T#5s で経過し続けます。

「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、PT パラメータに対してプログラムされた時間が開始されます。「Tag_Start」オペランドのシグナル状態が「1」である限り、時間が経過し続けます。「Tag_Start」オペランドのシグナル状態が「1」から「0」に切り替わると、時間が停止し、Tag_ElapsedTime オペランドの現在の時間値が記録されます。「Tag_Start」オペランドのシグナル状態が再び「0」から「1」に切り替わ
ると、時間は、「1」から「0」への移行時に記録された時間値から始めて、経過し続けます。PT パラメータに対して指定されている時間値に達すると、「Tag_Status」オペランド
がシグナル状態「1」にセットされます。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

78

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.2.5---( TP )---:パルスタイマの起動

説明「パルスタイマの起動」命令を使用して、パルスとして指定された持続時間分、IEC タイマ
を起動します。IEC タイマは、論理演算の結果(RLO)が「0」から「1」へ変わった場合(立ち上がりエッジ)に起動されます。RLO がその後に切り替わるかどうかに関係なく、IEC タイ
マは指定された時間分、実行されます。IEC タイマを実行しても、新しい立ち上がりエッジの検出に影響ありません。IEC タイマを実行している限り、タイマステータスが「1」であるか問い合わせると、シグナル状態が「1」に戻ります。IEC タイマの期限が切れると、
タイマステータスがシグナル状態「0」に戻ります。
現在のタイマステータスは IEC タイマの Q 構造体コンポーネントに保存されます。ノーマ
ルオープンを使用してタイマ状態が「1」かどうかを問い合わせ、ノーマルクローズを使用
して「0」かどうかを問い合わせることができます。
命令の<Operand1> (持続時間)でパルスの持続時間を指定し、命令の<Operand2> (IEC タイマ)で開始する IEC タイマを指定します。
「パルスタイマの起動」命令の実行は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、さまざまな実行
レベルで開始し、IEC タイマを照会することが可能です。

S7-1200 CPU の場合「パルスタイマの起動」命令は、データタイプ IEC_TIMER または TP_TIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TP_TIME」または「IEC_TIMER」のローカ
ルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

79

基本命令
3.1 LAD

S7-1500 CPU の場合「パルスタイマの起動」命令は、データタイプ IEC_TIMER、IEC_LTIMER、TP_TIME、またはTP_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TP_TIME、TP_LTIME、IEC_TIMER、またはIEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「パルスタイマの起動」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「パルスタイマの起動」命令は、現在の RLO と、インスタンスデータの IN パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「パルスタイマの起動」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「パルスタイマの起動」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

80

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「パルスタイマの起動」命令のパラメータを示します。
パラメータ 宣言
<持続時間> Input

データタイプS7-1200

S7-1500

TIME

TIME, LTIME

メモリ領域 説明
I、Q、M、

IEC タイマ

D、L、また が動作する<IEC タイマ InOut

IEC_TIMER,

IEC_TIMER,>

TP_TIME

IEC_LTIMER,

は定数

時間。

D、L

起動される
IEC タイマ。

TP_TIME,
TP_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

81

基本命令
3.1 LAD

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

4

37

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJB,QSXWಯಯ'%ಯ
0\,(&B7,0(573ಯ7DJ7LPHಯ

「パルスタイマの起動」命令は、オペランド Tag_Input のシグナル状態が「0」から「1」に切り替わると実行されます。タイマ "DB1".MyIEC_TIMER は、オペランド「TagTime」内に格納された時間で開始されます。
ಯ'%ಯ
0\,(&B7,0(54ಯ7DJB2XWSXWಯ

タイマ "DB1".MyIEC_TIMER が実行中である限り、タイマステータス("DB1".MyIEC_TIMER.Q)のシグナル状態は「1」であり、オペランド「Tag_Output」がセットされます。IEC タイマの期限が切れると、時間ステータスがシグナル状態「0」に戻り
Tag_Output、オペランドがリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

82

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.2.6---( TON )---:オンディレータイマの起動

説明「オンディレータイマの起動」命令を使用して、オンディレーとして指定された持続時間
分、IEC タイマを起動します。IEC タイマは、論理演算の結果(RLO)が「0」から「1」へ変わった場合(立ち上がりエッジ)に起動されます。IEC タイマは指定された時間、実行します。命令の入力時の RLO のシグナル状態が「1」の場合、出力はシグナル状態は「1」を返します。期限が切れる前に RLO が「0」に切り替わる場合、IEC タイマがリセットされます。この場合、タイマステータスの照会はシグナル状態「0」を返します。命令の入力において次の立ち上がりエッジを検出すると、IEC タイマが再起動します。
現在のタイマステータスは IEC タイマの「Q」構造体コンポーネントに保存されます。ノーマルオープンを使用してタイマ状態が「1」かどうかを問い合わせ、ノーマルクローズを使用して「0」かどうかを問い合わせることができます。
「オンディレータイマの起動」命令は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
命令の<Operand1> (持続時間)でオンディレーの持続時間を指定し、命令の<Operand2>(IEC タイマ)で開始する IEC タイマを指定します。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、さまざまな実行
レベルで開始し、IEC タイマを照会することが可能です。

S7-1200 CPU の場合「オンディレータイマの起動」命令がそのデータをデータタイプ IEC_TIMER または
TON_TIME の構造体に保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TON_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

83

基本命令
3.1 LAD

S7-1500 CPU の場合「オンディレータイマの起動」命令は、データタイプ IEC_TIMER、IEC_LTIMER、
TON_TIME、または TON_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TON_TIME、TON_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「オンディレータイマの起動」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オンディレータイマの起動」命令は、現在の RLO と、インスタンスデータの IN パラ
メータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間が開始されます。「オンディレータイマの起動」命令が処理されると、IN パラメータの値がインス
タンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オンディレータイマの起動」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれる、または初期化されると、時間計算が正確ではなくなります。

84

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

危険現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オンディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言
<持続時間> Input

データタイプS7-1200

S7-1500

メモリ領
域

TIME

TIME, LTIME

I、Q、M、 IEC タイマが<IEC タイマ InOut

IEC_TIMER,

IEC_TIMER,>

TON_TIME

IEC_LTIMER,

説明

D、L、ま

動作する時

たは定数

間。

D、L

起動される
IEC タイマ。

TON_TIME,
TON_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

85

基本命令
3.1 LAD

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

4

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJB,QSXWಯ

ಯ0\,(&B7,0(5ಯ

721
ಯ7DJ7LPHಯ

「オンディレータイマの起動」命令は、オペランド「Tag_Input」のシグナル状態が「0」から「1」に切り替わると実行されます。
「MyIEC_TIMER」タイマは、オペランド「TagTime」
内に格納された時間で開始されます。
ಯ0\,(&B7,0(5ಯ4

ಯ7DJB2XWSXWಯ

タイマ「MyIEC_TIMER」の期限が切れ、オペランド「Tag_Input」のシグナル状態が「1」の場合、タイマステータス("MyIEC_TIMER).Q を照会すると、シグナル状態「1」が返され、オペランド「Tag_Output」が設定されます。オペランド「Tag_Input」がシグナル状態「0」に切り替わった場合、タイマステータスを照会するとシグナル状態「0」が返され、オペランド「Tag_Output」がリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

86

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.2.7---( TOF )---:オフディレータイマの起動

説明「オフディレータイマの起動」命令を使用して、オンディレーとして指定された持続時間
分、IEC タイマを起動します。命令の入力での論理演算の結果(RLO)のシグナル状態が「1」の場合、タイマステータスの照会は、シグナル状態「1」を返します。RLO が「1」から「0」(立ち下がりエッジ)に切り替わると、指定された計測時間の IEC タイマが起動します。
IEC タイマが実行している限り、タイマステータスのシグナル状態は「1」のままです。タ
イマの期限が切れ、命令の入力の RLO のシグナル状態が「0」の場合、タイマステータス
はシグナル状態「0」にセットされます。期限が切れる前に RLO が「1」に切り替わる場
合、IEC タイマがリセットされ、タイマステータスのシグナル状態は「1」のままになります。
現在のタイマステータスは IEC タイマの Q 構造体コンポーネントに保存されます。ノーマ
ルオープンを使用してタイマ状態が「1」かどうかを問い合わせ、ノーマルクローズを使用
して「0」かどうかを問い合わせることができます。
命令の<Operand1> (持続時間)でオフディレーの持続時間を指定し、命令の<Operand2>(IEC タイマ)で開始する IEC タイマを指定します。
「オフディレータイマの起動」命令は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、さまざまな実行
レベルで開始し、IEC タイマを照会することが可能です。

S7-1200 CPU の場合「オンディレータイマの起動」命令がそのデータをデータタイプ IEC_TIMER または
TOF_TIME の構造体に保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TOF_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

87

基本命令
3.1 LAD

S7-1500 CPU の場合「オフディレータイマの起動」命令は、データタイプ IEC_TIMER、IEC_LTIMER、
TOF_TIME、または TOF_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TOF_TIME、TOF_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「オフディレータイマの起動」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オフディレータイマの起動」命令は、現在の RLO と、インスタンスデータの IN パラ
メータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が開始されます。「オフディレータイマの起動」命令が処理されると、IN パラメータの値がイン
スタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって「IN」パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オフディレータイマの起動」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

88

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オフディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言
<持続時間> Input

データタイプS7-1200

S7-1500

メモリ領
域

TIME

TIME, LTIME

I、Q、M、 IEC タイマが<IEC タイマ InOut

IEC_TIMER,

IEC_TIMER,>

TOF_TIME

IEC_LTIMER,

説明

D、L、ま

動作する時

たは定数

間。

D、L

起動される
IEC タイマ。

TOF_TIME,TOF_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

89

基本命令
3.1 LAD

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

4
37

37

(7
37

例
タイマ#MyIEC_TIMER が作動している限り、時間のステータス(#MyIEC_TIMER.Q)を照会す
るとシグナル状態「1」が返され、オペランド「Tag_Output」が設定されます。タイマの期限が切れ、オペランド「Tag_Input」がシグナル状態「0」になった場合、タイマステー
タスを照会するとシグナル状態「0」が返されます。オペランド「Tag_Input」のシグナル
状態が「1」に切り替わってからタイマ#MyIEC_TIMER の期限が切れる場合、タイマはリセットされます。オペランド「Tag_Input」のシグナル状態が「1」の場合、タイマステー
タスを照会するとシグナル状態「1」が返されます。
次の例で、命令がどのように動作するかを示します。
ಯ7DJB,QSXWಯ

0\,(&B7,0(572)ಯ7DJ7LPHಯ

「オフディレータイマの起動」命令は、オペランド「Tag_Input」のシグナル状態が「1」から「0」に切り替わると実行されます。タイマ#MyIEC_TIMER は、オペランド「TagTime」
内に格納された時間で開始されます。
0\,(&B7,0(5490ಯ7DJB2XWSXWಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.2.8---( TONR )---:タイムアキュムレータ

説明「タイムアキュムレータ」命令を使用し、命令「1」の入力時の信号の長さを記録することが可能です。時間測定は、入力での論理演算の結果(RLO)が「0」から「1」へ変わった場合(立ち上がりエッジ)に開始されます。時間は、RLO が「1」である限り記録されます。RLO が「0」に切り替わると、時間の記録は停止します。RLO が「1」に戻ると、時間の記録が継続されます。記録された時間が指定された持続時間値を超え、コイルの入力での RLO が「1」の場合、「1」のタイマステータスを照会するとシグナル状態「1」が返されます。
現在のタイマステータスは IEC タイマの「Q」構造体コンポーネントに保存されます。ノーマルオープンを使用してタイマ状態が「1」かどうかを問い合わせ、ノーマルクローズを使用して「0」かどうかを問い合わせることができます。
「タイマのリセット」命令を使用して、タイマステータス Q および現在記録されているタイマ「ET」を「0」にリセットできます。
命令の<Operand1> (持続時間)で持続時間を指定し、命令の<Operand2> (IEC タイマ)で開始する IEC タイマを指定します。
「タイムアキュムレータ」命令は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、さまざまな実行
レベルで開始し、IEC タイマを照会することが可能です。

S7-1200 CPU の場合「タイムアキュムレータ」命令がそのデータをデータタイプ IEC_TIMER または TONR_TIMEの構造体に保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TONR_TIME」または「IEC_TIMER」のローカルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

91

基本命令
3.1 LAD

S7-1500 CPU の場合「タイムアキュムレータ」命令は、データタイプ IEC_TIMER、IEC_LTIMER、TONR_TIME、または TONR_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TONR_TIME、TONR_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「タイムアキュムレータ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「タイムアキュムレータ」命令は、現在の RLO と、インスタンスデータの「IN」パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が続行されます。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がり
エッジが存在し、時間測定が中断されます。「タイムアキュムレータ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモ
リビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。

92

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD• R 入力入力 R での信号「1」は、時間測定をリセットおよびブロックします。IN 入力でのエッジは無視されます。入力 R での信号「0」は、時間測定を再度有効にします。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「タイムアキュムレータ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。
危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

93

基本命令
3.1 LADパラメータ
次の表に、「タイムアキュムレータ」命令のパラメータを示します。
パラメータ 宣言
<持続時間> Input

データタイプS7-1200

S7-1500

メモリ領
域

説明

TIME

TIME, LTIME

I、Q、

IEC タイマが

M、D、

動作する時

L、または 間。
定数
<IEC タイマ InOut

IEC_TIMER,

IEC_TIMER,>TONR_TIME

IEC_LTIMER,

D、L

起動される
IEC タイマ。

TONR_TIME,TONR_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

5

4

37

(7

94

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJB,QSXWಯ

ಯ0\,(&B7,0(5ಯ

7215
ಯ7DJ7LPHಯ

「タイムアキュムレータ」命令は RLO の立ち上がりエッジで実行されます。オペランド「Tag_Input」のシグナル状態が「1」である限り、時間が記録されます。
ಯ0\,(&B7,0(5ಯ4

ಯ7DJB2XWSXWಯ

記録された時間がオペランド「TagTime」の値を超えている場合、タイマステータス("MyIEC_TIMER".Q)を照会するとシグナル状態「1」が返され、オペランド「Tag_Output」がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.2.9---( RT )---:タイマのリセット

説明「タイマのリセット」命令を使用し、IEC タイマを「0」にリセットすることが可能です。
この命令は、コイルの入力における論理演算の結果(RLO)が「1」の場合にのみ実行されます。電流がコイルに流れる場合(RLO は「1」)、指定されたデータブロックにおけるタイマの構造体コンポーネントが「0」にリセットされます。命令の入力における RLO が「0」の場
合、タイマは未変更のままです。
この命令は、RLO に影響を与えません。コイルの入力における RLO は、直接コイルの出力に送信されます。
プログラムで宣言された IEC タイマに「タイマのリセット」命令を割り当てます。

現在値の更新命令のデータは命令が呼び出されるときのみ更新され、割り当てられた IEC タイマがアクセスされるたびには更新されません。データを問い合わせる場合、命令の呼び出しから次の命令の呼び出しまでのみ同一になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

95

基本命令
3.1 LAD

危険現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「タイマのリセット」命令のパラメータを示します。
パラメータ 宣言

データタイプS7-1200

S7-1500

メモリ領域<IEC タイマ Output

IEC_TIMER,

IEC_TIMER,

D、L>

TP_TIME,

IEC_LTIMER,

TON_TIME,

TP_TIME,TOF_TIME,

TP_LTIME,TONR_TIMETON_TIME,

説明
リセットされる IEC タイマ

TON_LTIME,TOF_TIME,TOF_LTIME,TONR_TIME,TONR_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

96

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ721B'%ಯ
721
7,0(

ಯ7DJB,QSXWBಯಯ7DJB37ಯ

ಯ7DJB6WDWXVಯ

,1

4

37

(7

ಯ7DJB(7ಯ「オンディレー生成」命令は、オペランド「Tag_Input_1」のシグナル状態が「0」から「1」に切り替わると実行されます。「TON_DB」インスタンスデータブロックに保存されたタイ
マは、オペランド Tag_PT によって指定された持続時間分、実行を開始します。
ಯ7DJB,QSXWBಯ ಯ7DJB,QSXWBಯ

ಯ721B'%ಯ

57

オペランド「Tag_Input_2」と「Tag_Input_3」のシグナル状態が「1」の場合、「タイマのリセット」命令が実行され、「TON_DB」データブロックに保存されたタイマがリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.2.10---( PT )---:持続時間のロード

説明「持続時間のロード」命令を使用して、IEC タイマの時間を設定することが可能です。命令の入力において、論理演算の結果(RLO)のシグナル状態が「1」の場合、サイクルごとにこの命令を実行します。この命令を実行すると、指定された IEC タイマの構造体に指定された
時間を書き込みます。
命令の<Operand1> (持続時間)でロードされる持続時間を指定し、命令の<Operand2> (IEC
タイマ)で開始する IEC タイマを指定します。
プログラムで宣言した IEC タイマを「持続時間のロード」命令に割り当てます。
注記
命令の実行中に、指定された IEC タイマが動作している場合、指定された IEC タイマの現在の時刻が上書きされます。これによって、IEC タイマのタイマステータスを変更できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

97

基本命令
3.1 LAD

現在値の更新命令のデータは命令が呼び出されるとき、および割り当てられた IEC タイマがアクセスされるたびにのみ更新されます。Q または ET (たとえば"MyTimer".Q または"MyTimer".ET)で照会すると、IEC_TIMER 構造体が更新されます。
危険
現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

98

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「持続時間のロード」命令のパラメータを示します。
パラメータ 宣言

データタイプ<持続時間> Input

S7-1200

S7-1500

メモリ領
域

説明

TIME

TIME, LTIME

I、Q、

IEC タイマが

M、D、

動作する時

L、または 間。
定数
<IEC タイマ Output

IEC_TIMER,

IEC_TIMER,

D、L>

TP_TIME,

IEC_LTIMER,

定する IEC タ

TON_TIME,

TP_TIME,イマ

TOF_TIME,

TP_LTIME,TONR_TIMETON_TIME,

持続時間を設TON_LTIME,TOF_TIME,TOF_LTIME,TONR_TIME,TONR_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ721B'%ಯ
721
7,0(

ಯ7DJB,QSXWBಯಯ7DJB37ಯ

ಯ7DJB6WDWXVಯ

,1

4

37

(7

ಯ7DJB(7ಯ「オンディレー生成」命令は、オペランド「Tag_Input_1」のシグナル状態が「0」から「1」に切り替わると実行されます。インスタンスデータブロック「TON_DB」に保存された IEC
タイマは、オペランド「Tag_PT」で指定された持続時間で起動します。
ಯ7DJB,QSXWBಯ

ಯ721B'%ಯ

37
ಯ7DJB37Bಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

99

基本命令
3.1 LAD「持続時間のロード」命令は、オペランド「Tag_Input_2」のシグナル状態が「1」の場合に実行されます。この命令は、インスタンスデータブロック「TON_DB」に持続時間「Tag_PT_2」を書き込み、同時にデータブロック内のオペランド「Tag_PT」の値を上書きします。タイマステータスのシグナル状態は、次のクエリ時、または "MyTimer".Q または"MyTimer"."ET へのアクセス時に変化する可能性があります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.2.11

レガシー

S_PULSE:パルスタイマパラメータの割り当てと開始

説明「パルスタイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。入力 S のシグナル状態が「1」になると、タイマでプログラミ
ングされた時間(TV)の期限がすぐに切れます。プログラミングされた時間の期限が切れる前に、入力 S がシグナル状態「0」に切り替わった場合、タイマが停止します。この場合、
出力 Q のシグナル状態は「0」です。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値が変更される時間を示します。現在の時間値は、出力 BI で
BI コード化され、出力 BCD で BCD コード化されます。
タイマが動作していて、かつ入力 R のシグナル状態が「1」に切り替わった場合、現在の時間値およびタイムベースともに 0 にセットされます。タイマが動作していない場合、R
入力のシグナル状態が「1」であっても効果はありません。
「パルスタイマパラメータの割り当てと開始」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置できます。

100

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
命令データは、アクセスのたびに更新されます。このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルの構築方法の例については、関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「パルスタイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言<Timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、D、L 開始入力

TV

Input

S5TIME, WORD

I、Q、M、D、

プリセット時間値

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、または定数
BI

Output

WORD

I、Q、M、D、

現在の時間値(BI コード)

L、P
BCD
Q

OutputOutput

WORD
BOOL

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、L タイマのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

101

基本命令
3.1 LAD

パルスタイミング図
下図は、命令「パルスタイマパラメータの割り当てと開始」のパルスタイミング図です。
W

W

W

5/2DWLQSXW6

5/2DWLQSXW5

7LPHUXQQLQJ

4XHU\ಯಯ

4XHU\ಯಯ

W SURJUDPPHGWLPH例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯಯ7DJ,QBಯ
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ,QBಯ

6B38/6(

ಯ7DJ2XWಯ

6

4

79

%,

ಯ7DJ9DOXHBಯ

5%&'

ಯ7DJ9DOXHBಯ

タイマ「Timer_1」は、オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替
わると起動します。オペランド「TagIn_1」のシグナル状態が「1」である限り、タイマはオペランド「TagIn_Number」の時間値によって期限が切れます。オペランド「TagIn_1」

102

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADのシグナル状態が、タイマの期限が切れる前に「1」から「0」に切り替わった場合、タイマ「Timer_1」が停止します。この場合、オペランド「TagOut」が「0」にリセットされます。
タイマが実行中であり、オペランド「TagIn_1」のシグナル状態が「1」である限り、オペ
ランド「TagOut」のシグナル状態は「1」です。タイマの期限が切れるか、またはリセッ
トされると、オペランド「TagOut」が「0」にリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
L: タイマ値のロード (ページ 1135)

S_PEXT:拡張パルスタイマパラメータを割り当てと起動
説明「拡張パルスタイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。入力 S がシグナル状態「0」に切り替わっても、タイマでプログラムされた持続時間(TV)の期限が切れます。タイマが実行中である限り、出力 Q のシグ
ナル状態は「1」です。タイマの期限が切れると、出力 Q が「0」にリセットされます。タ
イマの実行中に入力 S のシグナル状態が「0」から「1」に切り替わると、タイマは入力 TV
でプログラミングされた時間によって再開されます。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値が変更される時間を示します。現在の時間値は、出力 BI で
BI コード化され、出力 BCD で BCD コード化されます。
タイマが動作していて、かつ入力 R のシグナル状態が「1」に切り替わった場合、現在の時間値およびタイムベースともに 0 にセットされます。タイマが動作していない場合、R
入力のシグナル状態が「1」であっても効果はありません。
「拡張パルスタイマパラメータの割り当てと開始」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

103

基本命令
3.1 LAD
命令データは、アクセスのたびに更新されます。このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルの構築方法の例については、関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「拡張パルスタイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言<Timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、D、L 開始入力

TV

Input

S5TIME, WORD

I、Q、M、D、

プリセット時間値

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、または定数
BI

Output

WORD

I、Q、M、D、

現在の時間値(BI コード)

L、P
BCD
Q

OutputOutput

WORD
BOOL

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、L タイマのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

104

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

パルスタイミング図
次の図に、「拡張パルスタイマパラメータの割り当てと開始」命令のパルスタイミング図を
示します。
W

W

W

⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻሯ⸮嫛₼ቊሼ⟞ሧ⚗ቲሾ

⟞ሧ⚗ቲሾ
W ኴዊኍ዆ኽሸቯቂኜኁኻ

例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯಯ7DJ,QBಯ
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ,QBಯ

6B3(;7

ಯ7DJ2XWಯ

6

4

79

%,

ಯ7DJ9DOXHBಯ

5%&'

ಯ7DJ9DOXHBಯ

タイマ「Timer_1」は、オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替
わると起動します。タイマは、入力 S での立ち下がりエッジによる影響を受けずに、オペ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

105

基本命令
3.1 LAD
ランド「TagIn_Number」の時間値によって期限が切れます。オペランド「TagIn_1」のシグナル状態が、タイマの期限が切れる前に「0」から「1」に切り替わった場合、タイマは再開します。
タイマが実行中である限り、オペランド「TagOut」のシグナル状態は「1」です。タイマの期限が切れるか、またはリセットされると、オペランド「TagOut」が「0」にリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
L: タイマ値のロード (ページ 1135)

S_ODT:オンディレータイマパラメータの割り当てと開始

説明「オンディレータイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果
で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。入力 S のシグナル状態が「1」になると、タイマでプログラミングされた時間(TV)の期限がすぐに切れます。タイマの時間が正常に経過し、さらに入力
S のシグナル状態が「1」のままである場合、出力 Q がシグナル状態「1」を返します。タ
イマの実行中に入力 S のシグナル状態が「1」から「0」に切り替わると、タイマは停止します。この場合、出力 Q がシグナル状態「0」にリセットされます。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値が変更される時間を示します。現在の時間値は、出力 BI で
BI コード化され、出力 BCD で BCD コード化されます。
タイマが動作していて、かつ入力 R のシグナル状態が「0」から「1」に切り替わった場合、現在の時間値およびタイムベースともに 0 にセットされます。この場合、出力 Q のシグ
ナル状態は「0」です。タイマが実行中でなく、入力 S の RLO が「1」の場合でも、R 入力のシグナル状態が「1」の場合、タイマがリセットされます。
ボックスの上のプレースホルダーで、命令のタイマを指定します。タイマは、データタイプ
TIMER で宣言する必要があります。

106

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「オンディレータイマパラメータの割り当てと開始」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置できます。
命令データは、アクセスのたびに更新されます。このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルの構築方法の例については、関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「オンディレータイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言<Timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、D、L 開始入力

TV

Input

S5TIME, WORD

I、Q、M、D、

プリセット時間値

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、または定数
BI

Output

WORD

I、Q、M、D、

現在の時間値(BI コード)

L、P
BCD
Q

OutputOutput

WORD
BOOL

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、L タイマのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

107

基本命令
3.1 LAD

パルスタイミング図
次の図に、「オンディレータイマパラメータの割り当てと開始」命令のパルスタイミング図を示します。
W

W

W⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻሯ⸮嫛₼ቊሼ⟞ሧ⚗ቲሾ

⟞ሧ⚗ቲሾ
W ኴዊኍ዆ኽሸቯቂኜኁኻ

例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯಯ7DJ,QBಯ
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ,QBಯ

6B2'7

ಯ7DJ2XWಯ

6

4

79

%,

ಯ7DJ9DOXHBಯ

5%&'

ಯ7DJ9DOXHBಯ

タイマ「Timer_1」は、オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替
わると起動します。オペランド「TagIn_Number」の時間値によって、タイマの期限が切れます。タイマの期限が切れてオペランドのシグナル状態が「1」の場合、オペランド「TagOut」が「1」にセットされます。オペランド「TagIn_1」のシグナル状態が、タイマの108

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
期限が切れる前に「1」から「0」に切り替わった場合、タイマは停止します。この場合、オペランド「TagOut」のシグナル状態は「0」です。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
L: タイマ値のロード (ページ 1135)

S_ODTS:保持型オンディレータイマパラメータの割り当てと開始
説明「保持型オンディレータイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラ
ミングされたタイマを起動します。入力 S がシグナル状態「0」に切り替わっても、タイマでプログラムされた持続時間(TV)の期限が切れます。タイマの期限が切れた場合、「Q」
出力は、入力「S」でのシグナル状態に関わらずシグナル状態「1」を返します。タイマの実行中に入力 S のシグナル状態が「0」から「1」に切り替わると、タイマは入力(TV)でプ
ログラミングされた時間によって再開されます。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値が変更される時間を示します。現在の時間値は、出力 BI で
BI コード化され、出力 BCD で BCD コード化されます。
入力 R のシグナル状態「1」は、開始入力 S でのシグナル状態に関わらず、現在の時間値
およびタイムベースを「0」にリセットします。この場合、出力 Q のシグナル状態は「0」です。
「保持型オンディレータイマパラメータの割り当てと開始」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

109

基本命令
3.1 LAD
命令データは、アクセスのたびに更新されます。このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルの構築方法の例については、関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「保持型オンディレータイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言<Timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、D、L 開始入力

TV

Input

S5TIME, WORD

I、Q、M、D、

プリセット時間値

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、または定数
BI

Output

WORD

I、Q、M、D、

現在の時間値(BI コード)

L、P
BCD
Q

OutputOutput

WORD
BOOL

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、L タイマのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

110

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

パルスタイミング図
次の図に、「保持型オンディレータイマパラメータの割り当てと開始」命令のパルスタイ
ミング図を示します。
W

W

W⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻሯ⸮嫛₼ቊሼ⟞ሧ⚗ቲሾ
⟞ሧ⚗ቲሾ
W ኴዊኍ዆ኽሸቯቂኜኁኻ

例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯಯ7DJ,QBಯ
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ,QBಯ

6B2'76

ಯ7DJ2XWಯ

6

4

79

%,

ಯ7DJ9DOXHBಯ

5%&'

ಯ7DJ9DOXHBಯ

タイマ「Timer_1」は、オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替
わると起動します。オペランド「TagIn_1」がシグナル状態「0」に切り替わっても、タイマはオペランド「TagIn_Number」の時間値によって期限が切れます。タイマの期限が切れ
ると、オペランド「TagOut」が「1」にセットされます。タイマの実行中にオペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わった場合、タイマは再開します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

111

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
L: タイマ値のロード (ページ 1135)

S_OFFDT:オフディレータイマパラメータの割り当てと開始

説明「オフディレータイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果
で「1」から「0」への切り替え(信号立ち下がりエッジ)が検出されると、プログラミングされたタイマを起動します。タイマは、プログラムされた時間(TV)によって期限が切れます。タイマが動作している場合、または入力 S がシグナル状態「1」を返す場合は、入力 Qのシグナル状態は「1」となります。タイマの期限が切れ、入力 S のシグナル状態が「0」の場合、出力 Q がシグナル状態「0」にリセットされます。タイマの実行中に入力 S のシグナル状態が「0」から「1」に切り替わると、タイマは停止します。タイマは、入力 S で信号の立ち下がりエッジが検出された後にのみ再開されます。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値が変更される時間を示します。現在の時間値は、出力 BI で
BI コード化され、出力 BCD で BCD コード化されます。
入力 R でのシグナル状態「1」は、現在の時間値およびタイムベースを「0」にリセットします。この場合、出力 Q のシグナル状態は「0」です。
「オフディレータイマパラメータの割り当てと開始」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置できます。

112

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
命令データは、アクセスのたびに更新されます。このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルの構築方法の例については、関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「オフディレータイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言<Timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、D、L 開始入力

TV

Input

S5TIME, WORD

I、Q、M、D、

プリセット時間値

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、または定数
BI

Output

WORD

I、Q、M、D、

現在の時間値(BI コード)

L、P
BCD
Q

OutputOutput

WORD
BOOL

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、L タイマのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

113

基本命令
3.1 LAD

パルスタイミング図
次の図に、「オフディレータイマパラメータの割り当てと開始」命令のパルスタイミング図を示します。
W

W

W

W⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻሯ⸮嫛₼ቊሼ⟞ሧ⚗ቲሾ

⟞ሧ⚗ቲሾ
W ኴዊኍ዆ኽሸቯቂኜኁኻ

例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯಯ7DJ,QBಯ
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ,QBಯ

6B2))'7

ಯ7DJ2XWಯ

6

4

79

%,

ಯ7DJ9DOXHBಯ

5%&'

ಯ7DJ9DOXHBಯ

タイマ「Timer_1」は、オペランド「TagIn_1」のシグナル状態が「1」から「0」に切り替
わると起動します。オペランド「TagIn_Number」の時間値によって、タイマの期限が切れます。タイマが実行中のときにオペランド「TagIn_1」のシグナル状態が「0」の場合、オペランド「TagOut」が「1」にセットされます。タイマの実行中にオペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わった場合、タイマがリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

114

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

下記も参照
L: タイマ値のロード (ページ 1135)---( SP ):パルスタイマの起動

説明「パルスタイマの起動」命令は、論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。タイ
マは、RLO のシグナル状態が「1」である限り、指定された時間の間実行されます。タイ
マが実行されている限り、タイマステータス「1」を照会するとシグナル状態「1」が返されます。時間値の期限が切れる前に、RLO で「1」から「0」への切り替えがあった場合、タイマが停止します。この場合、「1」に対するタイマステータスをクエリすると、シグナル
状態「0」が返されます。
この時間は、内部で時間値とタイムベースから構成されます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。タイムベースは、時間値が変更される時間を示します。
オペランドプレースホルダ<Operand1> (持続時間)で時間が停止する持続時間を指定し、命令の<Operand2>で開始する時間を指定します。
「パルスタイマの起動」命令は、エッジ評価のために事前の論理演算が必要であり、ネッ
トワークの右側にのみ配置できます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルの構築方法の例については、関連項目「L:タイマ値のロード」。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

115

基本命令
3.1 LADパラメータ
次の表に、「パルスタイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

S5TIME, WORD

I、Q、M、D、タイマの期限が切れる時>

L、または定数間。

<Operand2 InOut/Input TIMER

T

開始されるタイマ>

タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯኪአእዌዙኌ
ಯ7LPHUBಯ

ಯ7LPHUBಯ
63
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ2XWಯኪአእዌዙኌ
ಯ7DJ,QBಯ

ಯ7LPHUBಯ
5「TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「Timer_1」が開始されます。タイマは、「TagIn_1」オペランドのシグナル状態が「1」である限り、「TagIn_Number」オペランドの時間値で期限切れになります。オペランド「TagIn_1」のシグナル状態が、タイマの期限が切れる前に「1」から「0」に切り替わった場合、タイ
マは停止します。タイマの実行中は、オペランド「TagOut」がシグナル状態「1」を返します。オペランド「TagIn_2」のシグナル状態が「0」から「1」に切り替わると、タイマがリセットされ、それによってタイマが停止し、現在の時間値が「0」にセットされます。
次の図に、タイマ図の例を示します。

116

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD栚ⱚ

ಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
L: タイマ値のロード (ページ 1135)---( SE ):拡張パルスタマの起動

説明「拡張パルスタイマの起動」命令は、論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。RLO
がシグナル状態「0」に変わっても、タイマが指定された時間実行されます。タイマが実行されている限り、タイマステータス「1」を照会するとシグナル状態「1」が返されます。
タイマの実行中に RLO が「0」から「1」に切り替わると、プログラムされた時間でタイマが再開されます。「1」に対するタイマステータスをクエリすると、タイマの期限が切れるときにシグナル状態「0」が返されます。
この時間は、内部で時間値とタイムベースから構成されます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。タイムベースは、時間値が変更される時間を示します。
オペランドプレースホルダ<Operand1> (持続時間)で時間が停止する持続時間を指定し、命令の<Operand2>で開始する時間を指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

117

基本命令
3.1 LAD「拡張パルスタイマの起動」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワークの右側にのみ配置できます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)を参照してください。

パラメータ
次の表に、「拡張パルスタイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

S5TIME, WORD

I、Q、M、D、タイマの期限が切れる時>

L、または定数間。

<Operand2 InOut/Input TIMER

T

開始されるタイマ>

タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯኪአእዌዙኌ
ಯ7LPHUBಯ

ಯ7LPHUBಯ
6(
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ2XWಯኪአእዌዙኌ
ಯ7DJ,QBಯ

ಯ7LPHUBಯ
5「TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「Timer_1」が開始されます。タイマは、オペランド「TagIn_Number」の時間値で期限が切れます。RLO の信号立ち下がりエッジには影響されません。タイマの実行中は、オペランド「TagOut」が118

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
シグナル状態「1」を返します。オペランド「TagIn_1」のシグナル状態が、タイマの期限が切れる前に「0」から「1」に再び切り替わった場合、タイマは再起動されます。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

---( SD ):オンディレータイマの起動

説明「オンディレータイマの起動」命令は、シグナル状態「1」が検出されると、プログラミン
グされたタイマを起動します。シグナル状態が「1」である限り、タイマは指定された持続時間で期限切れになります。タイマが期限切れになり、開始入力のシグナル状態もまだ「1」の場合、タイマステータスのクエリも「1」を返します。開始入力のシグナルが「0」の場合、タイマはリセットされています。この場合、タイマステータスのクエリはシグナル
状態「0」を返します。開始入力のシグナルが「1」に再び切り替わるとすぐに、タイマが再び動き始めます。
タイマ出力のシグナル状態は、開始入力のシグナル状態と同じです。開始入力は、その出力に直接に相互接続され、タイマにはリンクされません。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

119

基本命令
3.1 LAD
オペランドプレースホルダ<Operand1> (持続時間)で時間が停止する持続時間を指定し、命令の<Operand2>で開始する時間を指定します。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)を参照してください。

パラメータ
次の表に、「オンディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

S5TIME, WORD

I、Q、M、D、タイマの期限が切れる時>

L、または定数間。

<Operand2 InOut/Input TIMER

T

開始されるタイマ>

タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯኪአእዌዙኌ
ಯ7LPHUBಯ

ಯ7LPHUBಯ
6'
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ2XWಯኪአእዌዙኌ
ಯ7DJ,QBಯ

ಯ7LPHUBಯ
5

ネットワーク 1:

120

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「#TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「#Timer_1」が開始されます。オペランド「#TagIn_Number」の値でタイマの期限が切れます。
「#TagIn_1」オペランドのシグナル状態が、タイマの期限が切れる前に「1」から「0」に切り替わった場合、タイマはリセットされます。
ネットワーク 2:
タイマが期限切れのとき、開始入力の#TagIn_1 オペランドのシグナル状態が「1」でタイマがリセットされていない場合、#TagOut オペランドは「1」です。
ネットワーク 3:#TagIn_2 オペランドのシグナル状態が「1」のとき、タイマ#Timer_1 と出力#TagOut は
リセットされています。
#Timer_1 を再起動する場合は、#TagIn_2 オペランドのシグナル状態が「0」で、かつ、開始入力#TagIn_1 のシグナル状態が「0」から「1」に切り替わることが必要です。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

---( SS ):保持型オンディレータイマの起動

説明「保持型オンディレータイマの起動」命令は、論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。RLO がシグナル状態「0」に切り替わった場合でも、タイマは指定された時間によって期限が切れます。「1」に対するタイマステータスをクエリすると、タイマの期限が切れるときにシグナル状態「1」が返されます。タイマの期限が切れた後、タイマは明示的にリセットした場合にのみ再起動できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

121

基本命令
3.1 LAD
この時間は、内部で時間値とタイムベースから構成されます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。タイムベースは、時間値が変更される時間を示します。
オペランドプレースホルダ<Operand1> (持続時間)で時間が停止する持続時間を指定し、命令の<Operand2>で開始する時間を指定します。
「保持型オンディレータイマの起動」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワークの右側にのみ配置できます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)を参照してください。

パラメータ
次の表に、「保持型オンディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

S5TIME, WORD

I、Q、M、D、タイマの期限が切れる時>

L、または定数間。

<Operand2 InOut/Input TIMER

T

開始されるタイマ>

タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

122

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯ

ಯ7LPHUBಯ
66
ಯ7DJ,QB1XPEHUಯ

ኪአእዌዙኌ
ಯ7LPHUBಯಯ7DJ2XWಯኪአእዌዙኌ
ಯ7DJ,QBಯ

ಯ7LPHUBಯ
5

タイマ「Timer_1」は、オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替
わると起動します。オペランド「TagIn_Number」の時間値によって、タイマの期限が切れます。タイマの期限が切れると、オペランド「TagOut」が「1」にセットされます。タイ
マの実行中にオペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わった場合、タイマは再開します。オペランド「TagIn_2」のシグナル状態が「1」の場合、タイマ「Timer_1」がリセットされ、それによってタイマが停止し、現在の時間値が「0」にセットされます。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

123

基本命令
3.1 LAD---( SF ):オフディレータイマの起動

説明「オフディレータイマの起動」命令は、論理演算(RLO)の結果で「1」から「0」への切り替え(信号立ち下がりエッジ)が検出されると、プログラミングされたタイマを起動します。
タイマは、指定された時間によって期限が切れます。タイマが実行されている限り、タイマステータス「1」を照会するとシグナル状態「1」が返されます。タイマの実行中に RLOが「0」から「1」に切り替わった場合、タイマが停止します。RLO が「1」から「0」に切り替わると、タイマは必ず再起動されます。
この時間は、内部で時間値とタイムベースから構成されます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。タイムベースは、時間値が変更される時間を示します。
タイマステータスが「1」かどうかのクエリでは、命令実行時の論理操作結果のシグナル状
態が「1」の場合、クエリ結果「1」が返されます。RLO が「0」の場合、タイマステータ
スが「1」かどうかのクエリでは、クエリ結果「0」が返されます。
オペランドプレースホルダ<Operand1> (持続時間)で時間が停止する持続時間を指定し、命令の<Operand2>で開始する時間を指定します。
「オフディレータイマの起動」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワークの右側にのみ配置できます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルの構築方法の例については、関連項目「L:タイマ値のロード」。

124

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「オフディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

S5TIME, WORD

I、Q、M、D、タイマの期限が切れる時>

L、または定数間。

<Operand2 InOut/Input TIMER

T

開始されるタイマ>

タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯኪአእዌዙኌ
ಯ7LPHUBಯ

ಯ7LPHUBಯ
6)
ಯ7DJ,QB1XPEHUಯ
ಯ7DJ2XWಯኪአእዌዙኌ
ಯ7DJ,QBಯ

ಯ7LPHUBಯ
5「TagIn_1」オペランドのシグナル状態が「1」から「0」に切り替わると、「Timer_1」が開始されます。オペランド「TagIn_Number」の時間値によって、タイマの期限が切れます。
タイマの実行中は、オペランド「TagOut」が「1」にセットされます。タイマの実行中にオペランド「TagIn_1」のシグナル状態が「1」から「0」に切り替わると、タイマが再起動します。「TagIn_2」オペランドのシグナル状態が「1」の場合、「Timer_1」がリセットされます。すなわち、タイマが停止し、現在の時間値が「0」にセットされます。
次の図に、タイマ図の例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

125

基本命令
3.1 LAD栚ⱚ

ಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ
W⒉┪

W

ಯ7DJ2XWಯW ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
L: タイマ値のロード (ページ 1135)

3.1.3

カウンタ演算3.1.3.1

CTU: カウントアップ

説明
出力 CV の値のインクリメントには、「カウントアップ」命令を使用できます。CU 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、この命令が実行され、CV 出力のカウンタ現在値が 1 ずつインクリメントされます。立ち上がりエッジを検出するたびに、CV 出力において指定されたデータタイプの上限値に達するまで、カウンタ
値がインクリメントされます。上限値に達すると、CU 入力のシグナル状態はこの命令に影響を与えなくなります。
Q 出力でカウンタステータスを照会することができます。Q 出力のシグナル状態は、PV パ
ラメータによって決まります。カウンタ現在値が PV パラメータ値以上の場合、Q 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、Q 出力のシグナル状態は「0」になります。

126

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
入力 R のシグナル状態が「1」に切り替わると、CV 出力の値がゼロにリセットされます。R
入力のシグナル状態が「1」である限り、CU 入力のシグナル状態は命令に影響しません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

S7-1200 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTU_SINT / CTU_USINT• IEC_COUNTER / IEC_UCOUNTER• CTU_INT / CTU_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTU_DINT / CTU_UDINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER

S7-1500 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTU_SINT / CTU_USINT• IEC_COUNTER / IEC_UCOUNTER• CTU_INT / CTU_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTU_DINT / CTU_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTU_LINT / CTU_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTERTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

127

基本命令
3.1 LADIEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTU_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyIEC_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化ブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化ブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカ
ルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロックイン
ターフェース内で、保持型として定義されます。
「カウントアップ」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワ
ーク内またはネットワークの終端に配置できます。

パラメータ
次の表に、「カウントアップ」命令のパラメータを示します。
パラメータ 宣言
CU

R

Input

Input

データタイプ
BOOL

BOOL

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L、また

D、L、または定数

は定数

I、Q、M、

I、Q、M、

説明
カウント入力リセット入力

D、L、P、ま T、C、D、
たは定数

L、P、また
は定数

PV

Q
CV

Input

OutputOutput

整数

I、Q、M、

I、Q、M、

出力 Q がセッ

D、L、P、ま D、L、P、

トされる値。

たは定数

または定数

I、Q、M、

I、Q、M、

カウンタステ

D、L

D、L

ータス

整数、CHAR、I、Q、M、

I、Q、M、カウンタ現在WCHAR、DATE

D、L、P

D、L、P

値

BOOL

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

128

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ&78B'%ಯ
&78
ಯ7DJ,QBಯ

,17
&8

4

5

&9

ಯ7DJ,QBಯಯ7DJB39ಯ

ಯ7DJ2XWಯಯ7DJB&9ಯ

39「TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「カウントアッ
プ」命令が実行され、「Tag_CV」カウンタ現在値が 1 インクリメントされます。それ以降、
信号立ち上がりエッジが検出されるたびに、データタイプの上限値(INT = 32767)に達するまで、カウンタ値がインクリメントされます。
PV パラメータの値が「TagOut」出力を確定する限度として採用されます。カウンタ現在値
がオペランド「Tag_PV」の値以上の場合、「TagOut」出力のシグナル状態は「1」になります。それ以外のすべての場合、「TagOut」出力のシグナル状態は「0」になります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.3.2

CTD: カウントダウン

説明「カウントダウン」命令を使用して、出力 CV の値をデクリメントします。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、この命令が実行され、CV 出力のカウンタ現在値が 1 ずつデクリメントされます。指定されたデータタイプの下限値に達するまで、信号の立ち上がりエッジが検出されるたびにカウンタがデクリメントされます。下限値に達すると、CD 入力のシグナル状態はこの命令に影響を与えなくなります。
Q 出力でカウンタステータスを照会することができます。カウンタ現在値がゼロ以下の場
合、Q 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、Q 出力のシグナル状態は「0」になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

129

基本命令
3.1 LADLD 入力のシグナル状態が「1」に切り替わると、CV 出力の値が PV パラメータの値にセットされます。LD 入力のシグナル状態が「1」である限り、CD 入力のシグナル状態は命令に影響しません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントダウン」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

S7-1200 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTD_SINT / CTD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTD_INT / CTD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTD_DINT / CTD_UDINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER

S7-1500 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTD_SINT / CTD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTD_INT / CTD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTD_DINT / CTD_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTD_LINT / CTD_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER

130

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADIEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTD_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyIEC_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化ブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化ブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカ
ルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロックイン
ターフェース内で、保持型として定義されます。
「カウントダウン」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワ
ーク内またはネットワークの終端に配置できます。

パラメータ
次の表に、「カウントダウン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

CD

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、M、 カウント入力
D、L、また D、L、ま
は定数

LD

Input

BOOL

たは定数

I、Q、M、 I、Q、M、 ロード入力
D、L、P、T、C、D、

または定数 L、P、また
は定数
PV

Input

整数

I、Q、M、 I、Q、M、 CV 出力が LD = 1
D、L、P、

D、L、P、 にセットされる

または定数 または定数 値。
Q

Output

BOOL

I、Q、M、 I、Q、M、 カウンタステー
D、LCV

Output

D、Lタス

整数、CHAR、I、Q、M、 I、Q、M、 カウンタ現在値

WCHAR、DATE

D、L、P

D、L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

131

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ᇷ&7'B'%ᇸ
&7'
ᇷ7DJ,QBᇸ
ᇷ7DJ,QBᇸᇷ7DJB39ᇸ

,17
&'

4

/'

&9

ᇷ7DJ2XWᇸᇷ7DJB&9ᇸ

39「TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、命令が実行され、「Tag_CV」出力の値が 1 デクリメントされます。それ以降、信号立ち上がりエッジが検出されるたびに、指定したデータタイプの下限値(INT = -32768)に達するまで、カウンタ値がデクリメントされます。
カウンタ現在値がゼロ以下である限り、「TagOut」出力のシグナル状態は「1」になります。
それ以外のすべての場合、「TagOut」出力のシグナル状態は「0」になります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.3.3

CTUD: カウントアップ/カウントダウン

説明「カウントアップ/カウントダウン」命令を使用して、CV 出力のカウンタ値のインクリメ
ント、およびデクリメントが可能です。CU 入力のシグナル状態が「0」から「1」に切り替
わった場合(立ち上がりエッジ)、カウンタ現在値が 1 インクリメントされ、CV 出力に格納されます。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、CV 出力のカウンタ値が 1 デクリメントされます。1 つのプログラムサイクル内で CU
および CD 入力に立ち上がりエッジが発生した場合、CV 出力のカウンタ現在値は変わりません。
カウンタ値は、CV 出力で指定したデータタイプの上限値に達するまでインクリメントすることができます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値
はインクリメントされなくなります。カウンタ値は、指定されたデータタイプの下限値に達するとデクリメントされなくなります。
LD 入力のシグナル状態が「1」に切り替わると、CV 出力のカウンタ値が PV パラメータの値にセットされます。LD 入力のシグナル状態が「1」である限り、CU および CD 入力のシグナル状態は命令に影響しません。

132

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADR 入力のシグナル状態が「1」に切り替わると、カウンタ値がゼロに設定されます。R 入力のシグナル状態が「1」である限り、CU、CD、および LD 入力のシグナル状態が切り替わっても「カウントアップ/カウントダウン」命令には影響を与えません。
QU 出力でアップカウンタのステータスを照会することができます。カウンタ現在値が PV
パラメータ値以上の場合、QU 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、QU 出力のシグナル状態は「0」になります。
QD 出力でダウンカウンタのステータスを照会することができます。カウンタ現在値がゼロ以下の場合、QD 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、
QD 出力のシグナル状態は「0」になります。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ/カウントダウン」命令の各呼び出しは、命令データが格納される IEC カ
ウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイ
プを持つ構造体です。

S7-1200 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTUD_SINT / CTUD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTUD_INT / CTUD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTUD_DINT / CTUD_UDINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTERTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

133

基本命令
3.1 LAD

S7-1500 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTUD_SINT / CTUD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTUD_INT / CTUD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTUD_DINT / CTUD_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTUD_LINT / CTUD_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER

IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTUD_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyIEC_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化ブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化ブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカ
ルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロックイン
ターフェース内で、保持型として定義されます。
「カウントアップ/カウントダウン」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワーク内またはネットワークの終端に配置できます。

134

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「カウントアップ/カウントダウン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

CU

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、M、 カウントアップ
D、L、また D、L、また 入力
は定数

CD

Input

BOOL

は定数

I、Q、M、 I、Q、M、 カウントダウン
D、L、また D、L、また 入力
は定数

R

Input

BOOL

は定数

I、Q、M、 I、Q、M、 リセット入力
D、L、P、T、C、D、

または定数 L、P、また
は定数
LD

Input

BOOL

I、Q、M、 I、Q、M、 ロード入力
D、L、P、T、C、D、

または定数 L、P、また
は定数
PV

Input

整数

I、Q、M、 I、Q、M、 QU 出力がセット
D、L、P、

D、L、P、されるときのまたは定数 または定数 値/LD = 1 のときに CV 出力がセットされる値。
QU

Output

BOOL

I、Q、M、 I、Q、M、 アップカウンタ
D、L

QD

OutputBOOL

Outputのステータス

I、Q、M、 I、Q、M、 カウントダウン
D、L

CV

D、L
D、L

のステータス

整数、CHAR、I、Q、M、 I、Q、M、 カウンタ現在値

WCHAR、DATE

D、L、P

D、L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

135

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ᇷ&78'B'%ᇸ
&78',17

ᇷ7DJ,QBᇸ

ᇷ7DJ2XWᇸ

&8

48

&'

4'

ᇷ7DJ2XWB4'
ᇸ

5

&9

ᇷ7DJB&9ᇸ

ᇷ7DJ,QBᇸ
ᇷ7DJ,QBᇸ
ᇷ7DJ,QBᇸ/'ᇷ7DJB39ᇸ

39「TagIn_1」または「TagIn_2」入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、「カウントアップ/カウントダウン」命令が実行されます。「TagIn_1」
入力で立ち上がりエッジが発生する場合、カウンタ現在値は 1 ずつインクリメントされ、「Tag_CV」出力に保存されます。「TagIn_2」入力で立ち上がりエッジが発生する場合、カウンタ値は 1 ずつデクリメントされ、「Tag_CV」出力に保存されます。CU 入力で信号立ち上がりエッジが発生した場合、上限値 32767 に達するまでカウンタ値がインクリメントされます。入力 CD で信号立ち上がりエッジが発生した場合、下限値(INT = -32768)に達するまでカウンタ値がデクリメントされます。
カウンタ現在値が「Tag_PV」入力の値以上である限り、「TagOut」出力のシグナル状態は「1」になります。それ以外のすべての場合、「TagOut」出力のシグナル状態は「0」になります。
カウンタ現在値がゼロ以下である限り、「TagOut_QD」出力のシグナル状態は「1」になります。それ以外のすべての場合、「TagOut_QD」出力のシグナル状態は「0」になります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

136

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.3.4

レガシー

S_CU:パラメータおよびカウントアップの割り当て

説明「パラメータおよびカウントアップの割り当て」命令を使用して、カウンタ値のインクリメントが可能です。CU 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、現在のカウンタ値が 1 インクリメントされます。現在のカウンタ値は、出力CV に 16 進数値で出力され、出力 CV_BCD で BCD コード化されます。カウンタ値は、制限値の「999」に達するまでインクリメントできます。制限値に達すると、信号立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。
入力 S のシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタが設定され、入力 CU の RLO が「1」の場合、信号エッジで切り替えが検出されていない場合でも、カウンタはその次のスキャンサイクルで適宜カウン
トします。
R 入力のシグナル状態が「1」に切り替わると、カウンタ値がゼロに設定されます。R 入力のシグナル状態が「1」である限り、CU および S 入力のシグナル状態の処理はこのカウン
タ値には影響を与えません。
カウンタ値がゼロよりも大きい場合、出力 Q のシグナル状態は「1」となります。カウンタ
値がゼロに等しい場合、出力 Q のシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「パラメータおよびカウントアップの割り当て」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

137

基本命令
3.1 LADパラメータ
次の表に、「パラメータおよびカウントアップの割り当て」命令のパラメータを示します。
パラメータ 宣言<Counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

命令のカウンタ
カウンタの数は CPU によって異なります。

CU

Input

BOOL

I、Q、M、D、L カウントアップ入力

S

Input

BOOL

I、Q、M、D、カウンタのプリセット用

L、T、C、また

の入力

は定数
PV
R

Input

WORD

Input

BOOL

I、Q、M、D、

カウンタ値のプリセット

L、または定数(C#0～C#999)

I、Q、M、D、

リセット入力

L、T、C、または定数
BI

Output

WORD, S5TIME, I、Q、M、D、L カウンタ現在値(16 進数)
DATE

BCD

Output

WORD, S5TIME, I、Q、M、D、L 現在のカウンタ値(BCD フ
DATEQ

Output

BOOLォーマット)
I、Q、M、D、L カウンタのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ&RXQWHUBಯ
6B&8

ಯ7DJ,QBಯ
&8

ಯ7DJ2XWಯ
4

ಯ7DJ,QBಯ
6
ಯ7DJ3UHVHW9DOXHಯ
ಯ7DJ,QBಯ

138

39

&9

ಯ7DJ9DOXHBಯ

5&9B%&'

ಯ7DJ9DOXHBಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「TagIn_1」入力のシグナル状態が「0」から「1」に切り替わり(立ち上がりエッジ)、現在のカウンタ値が「999」未満の場合、カウンタ値が 1 インクリメントされます。入力「TagIn_2」のシグナル状態が「0」から「1」に切り替わると、カウンタ値がオペランド「TagPresetValue」の値にセットされます。オペランド「TagIn_3」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
現在のカウンタ値は、オペランド「TagValue_1」に 16 進数値で保存され、オペランド「TagValue_2」で BCD コード化されます。
現在のカウンタ値が「0」と等しくない場合、「TagOut」出力のシグナル状態は「1」です。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

S_CD:パラメータおよびカウントダウンの割り当て

説明「パラメータおよびカウントダウンの割り当て」命令を使用して、カウンタ値のデクリメントが可能です。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、現在のカウンタ値が 1 デクリメントされます。現在のカウンタ値は、出力 CVに 16 進数値で出力され、出力 CV_BCD で BCD コード化されます。カウンタ値は、下限値「0」に達するまでデクリメントされます。下限値に達すると、立ち上がりエッジでカウンタ
値はそれ以上デクリメントされません。
入力 S のシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタが設定され、入力 CD の RLO が「1」の場合、信号エッジで切り替えが検出されていない場合でも、カウンタはその次のスキャンサイクルで適宜カウン
トします。
R 入力のシグナル状態が「1」に切り替わると、カウンタ値がゼロに設定されます。R 入力のシグナル状態が「1」である限り、CD および S 入力のシグナル状態の処理はこのカウン
タ値には影響を与えません。
カウンタ値がゼロよりも大きい場合、出力 Q のシグナル状態は「1」となります。カウンタ
値がゼロに等しい場合、出力 Q のシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

139

基本命令
3.1 LAD「パラメータおよびカウントダウンの割り当て」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置できます。

パラメータ
次の表に、
「パラメータおよびカウントダウンの割り当て」命令のパラメータを示します。
パラメータ 宣言<Counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

命令のカウンタ
カウンタの数は CPU によって異なります。

CD

Input

BOOL

I、Q、M、D、

カウントダウン入力

L、または定数
S

Input

BOOL

I、Q、M、D、カウンタのプリセット用

L、T、C、また

の入力

は定数
PV
R

Input
Input

WORD
BOOL

I、Q、M、D、

カウンタ値のプリセット

L、または定数(C#0～C#999)

I、Q、M、D、

リセット入力

L、T、C、または定数
BI

Output

WORD, S5TIME, I、Q、M、D、L カウンタ現在値(16 進数)
DATE

BCD

Output

WORD, S5TIME, I、Q、M、D、L 現在のカウンタ値(BCD フ
DATEQ

Output

BOOLォーマット)
I、Q、M、D、L カウンタのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

140

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ&RXQWHUBಯ
6B&'

ಯ7DJ,QBಯ&'

ಯ7DJ2XWಯ
4

ಯ7DJ,QBಯ
6
ಯ7DJ3UHVHW9DOXHಯ
ಯ7DJ,QBಯ

39&9

ಯ7DJ9DOXHBಯ

5&9B%&'

ಯ7DJ9DOXHBಯ「TagIn_1」入力のシグナル状態が「0」から「1」に切り替わり(信号立ち上がりエッジ)、
現在のカウンタ値が「0」よりも大きい場合、カウンタ値が 1 デクリメントされます。入力「TagIn_2」のシグナル状態が「0」から「1」に切り替わると、カウンタ値がオペランド「TagPresetValue」の値にセットされます。オペランド「TagIn_3」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
現在のカウンタ値は、オペランド「TagValue_1」に 16 進数値で保存され、オペランド「TagValue_2」で BCD コード化されます。
現在のカウンタ値が「0」と等しくない場合、「TagOut」出力のシグナル状態は「1」です。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

S_CUD:パラメータおよびカウントアップ/カウントダウンの割り当て
説明「パラメータおよびカウントアップ/カウントダウンの割り当て」命令を使用して、カウンタ
値のインクリメントおよびデクリメントが可能です。CU 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、現在のカウンタ値が 1 インクリメントされます。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、
現在のカウンタ値が 1 デクリメントされます。現在のカウンタ値は、出力 CV に 16 進数値で出力され、出力 CV_BCD で BCD コード化されます。1 つのプログラムサイクル内で CU
および CD 入力に立ち上がりエッジが発生した場合、カウンタ値は変わりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

141

基本命令
3.1 LAD
カウンタ値は、上限値の「999」に達するまでインクリメントできます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。下限値「0」に達すると、それ以降、カウンタ値はデクリメントされません。
入力 S のシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタが設定され、入力 CU および CD の RLO が「1」の場合、信号エッジで切り替えが検出されなかった場合でも、カウンタはその次のスキャンサイクルで適宜カウントします。
R 入力のシグナル状態が「1」に切り替わると、カウンタ値がゼロに設定されます。R 入力のシグナル状態が「1」である限り、CU、CD および S 入力のシグナル状態の処理はこのカウンタ値には影響を与えません。
カウンタ値がゼロよりも大きい場合、出力 Q のシグナル状態は「1」となります。カウンタ
値がゼロに等しい場合、出力 Q のシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「パラメータおよびカウントアップ/カウントダウンの割り当て」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワーク内またはネットワークの最後に配置でき
ます。

パラメータ
次の表に、「パラメータおよびカウントアップ/カウントダウンの割り当て」命令のパラメータを示します。
パラメータ 宣言<Counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

命令のカウンタ
カウンタの数は CPU によって異なります。

CU

Input

BOOL

I、Q、M、D、L カウントアップ入力

CD

Input

BOOL

I、Q、M、D、

カウントダウン入力

L、T、C、また
は定数
S

Input

BOOL

I、Q、M、D、カウンタのプリセット用

L、T、C、また

の入力

は定数

142

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

PV

WORD

I、Q、M、D、

カウンタ値のプリセット

L、または定数(C#0～C#999)

I、Q、M、D、

リセット入力

R

Input
Input

BOOL

L、T、C、または定数
BI

Output

WORD, S5TIME, I、Q、M、D、L カウンタ現在値(16 進数)
DATE

BCD

Output

WORD, S5TIME, I、Q、M、D、L 現在のカウンタ値(BCD フ
DATEQ

Outputォーマット)BOOL

I、Q、M、D、L カウンタのステータス

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ&RXQWHUBಯ
6B&8'

ಯ7DJ,QBಯ
&8
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ
ಯ7DJ3UHVHW9DOXHಯ

ಯ7DJ2XWಯ
4

&'
6

&9

ಯ7DJ9DOXHBಯ

39&9B%&'

ಯ7DJ9DOXHBಯಯ7DJ,QBಯ
5「TagIn_1"」または「TagIn_2」入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、「パラメータおよびカウントアップ/カウントダウンの割り当て」命令が実行されます。「TagIn_1」入力で立ち上がりエッジが発生し、現在のカウンタ値が「999」未満の場合、カウンタ値が 1 インクリメントされます。「TagIn_2」入力で立ち上がりエッジが発生し、現在のカウンタ値が「0」よりも大きい場合、カウンタ値が 1 デクリ
メントされます。
入力「TagIn_3」のシグナル状態が「0」から「1」に切り替わると、カウンタ値がオペラ
ンド「TagPresetValue」の値にセットされます。オペランド「TagIn_4」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

143

基本命令
3.1 LAD
現在のカウンタ値は、オペランド「TagValue_1」に 16 進数値で保存され、オペランド「TagValue_2」で BCD コード化されます。
現在のカウンタ値が「0」と等しくない場合、「TagOut」出力のシグナル状態は「1」です。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

---( SC ):カウンタ値の設定

説明「カウンタ値のセット」命令を使用して、カウンタの値を設定できます。入力における論
理演算の結果(RLO)が「0」から「1」に切り替わると、命令が実行されます。命令が実行されると、カウンタは指定されたカウンタ値に設定されます。
命令の下のオペランドプレースホルダ<Operand1>にカウンタがプリセットされる持続時間を指定し、命令の上の<Operand2>でカウンタを指定します。
「カウンタ値のセット」命令には、前にエッジ評価のための論理演算が必要で、ネットワ
ークの右側エッジのみに配置することができます。

パラメータ
次の表に、「カウンタ値のセット」命令のパラメータをリストします。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

WORD

I、Q、M、D、カウンタがプリセットさ

L、または定数れる BCD フォーマットの>値。
(C#0～C#999)<Operand2 InOut/Input COUNTER>

C

プリセットされるカウン
タ。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

144

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,Qಯಯ&RXQWHUBಯ
6&
&

「TagIn」オペランドのシグナル状態が「0」から「1」に切り替わると、カウンタ「Counter_1」が値「100」で開始されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

---( CU ):カウントアップ

説明「カウントアップ」命令を使用する、論理演算の結果(RLO)で信号立ち上がりエッジが検出された場合に、指定されたカウンタを 1 つずつインクリメントできます。カウンタ値は、制限値の「999」に達するまでインクリメントできます。制限値に達すると、信号立ち上
がりエッジが発生しても、カウンタ値はインクリメントされなくなります。
「カウントアップ」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワ
ークの右側にのみ配置できます。

パラメータ
次の表に、「カウントアップ」命令のパラメータを示します。
パラメータ 宣言<Counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

値がインクリメントされるカウンタ。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

145

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ

ಯ7DJ,QBಯಯ&RXQWHUBಯ
6&
&

ኪአእዌዙኌ

ಯ7DJ,QBಯಯ&RXQWHUBಯ&8ኪአእዌዙኌ

ಯ7DJ,QBಯಯ&RXQWHUBಯ
5

オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると(立ち上がりエッジ)、カウンタ「Counter_1」が値「100」でプリセットされます。
オペランド「TagIn_2」のシグナル状態が「0」から「1」に切り替わると、カウンタ「Counter_1」の値は、1 つずつインクリメントされます。
オペランド「TagIn_3」のシグナル状態が「1」の場合、カウンタ「Counter_1」の値が「0」にリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

---( CD ):カウントダウン

説明「カウントダウン」命令を使用する、論理演算の結果(RLO)で信号立ち上がりエッジが検出された場合に、指定されたカウンタを 1 つずつインクリメントできます。カウンタ値は、制限値の「0」に達するまでデクリメントできます。制限値に達すると、信号立ち上がり
エッジが発生しても、カウンタ値は変更されなくなります。
「カウントダウン」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワ
ークの右側にのみ配置できます。

146

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「カウントダウン」命令のパラメータを示します。
パラメータ 宣言<Counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

値がデクリメントされるカウンタ。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ

ಯ7DJ,QBಯಯ&RXQWHUBಯ
6&
&

ኪአእዌዙኌ

ಯ7DJ,QBಯಯ&RXQWHUBಯ&'ኪአእዌዙኌ

ಯ7DJ,QBಯಯ&RXQWHUBಯ
5

オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると(立ち上がりエッジ)、カウンタ「Counter_1」が値「100」でプリセットされます。
オペランド「TagIn_2」のシグナル状態が「0」から「1」に切り替わると、カウンタ「Counter_1」の値は、1 つずつデクリメントされます。
オペランド「TagIn_3」のシグナル状態が「1」の場合、カウンタ「Counter_1」の値が「0」にリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

147

基本命令
3.1 LAD

3.1.4

比較演算

3.1.4.1

CMP ==:等価

説明「等価」命令を使用して、第 1 の比較値(<Operand1>)が第 2 の比較値(<Operand2>)と等しいかどうかを確認します。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダで、最初の比較値(<Operand1>)を指定します。命令よりも下のオペランドプレースホルダの 2 番目の比較値(<Operand2>)を指定します。
IEC チェックが有効になっている場合、比較するオペランドが同じデータタイプであることが必要です。IEC チェックが有効になっていない場合、オペランドの幅が同じであることが必要です。

浮動小数点数の比較
データタイプ REAL または LREAL を比較する場合は、命令「CMP ==:等価」の代わりに、推奨命令「IN_RANGE:範囲内の値」を使用します。
浮動小数点数を比較する場合、IEC チェックの設定とは関係なく、比較対象のオペランドのデータタイプが同じであることが必要です。
未定義の結果(たとえば、-1 のルート)である無効な浮動小数点数の特別なビットパターン(NaN)は比較できません。すなわち、オペランドの 1 つが値 NaN を持つと、命令「CMP ==:等価」の結果は FALSE です。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。

148

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表は、文字比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'AA'

'AA'

1

'Hello World''HelloWorld'

0

'AA'

'aa'

0

'aa'

'aaa'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
無効なタイマ、日付と時刻のビットパターン(たとえば、
DT#2015-13-33-25:62:99.999_999_999)は比較できません。すなわち、オペランドの 1
つが無効な値を持つと、命令「CMP ==:等価」の結果は FALSE です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

ハードウェアデータタイプの比較
PORT データタイプのオペランドを比較するには、命令ボックスのドロップダウンリスト
から WORD データタイプを選択する必要があります。
2 つのハードウェアデータタイプ HW_IO と HW_DEVICE を比較する場合は、最初にブロックインターフェースのセクション[Temp]でデータタイプ HW_ANY のタグを作成した後、TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

149

基本命令
3.1 LADLADDR (データタイプ HW_DEVICE の)をそのタグにコピーします。これで、HW_ANY と
HW_IO を比較することができます。

構造体の比較
注記
構造体の比較の可用性
構造体を比較するオプションは、S7-1200 シリーズの CPU でファームウェアバージョン
4.2 以降の場合および S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。
両方のタグが同じ構造体データタイプを持つとき、2 つの構造化されたオペランドの値を比較できます。構造体を比較する場合、IEC チェックの設定とは関係なく、比較対象のオ
ペランドのデータタイプが同じであることが必要です。例外は、2 つのオペランドの 1 つがVARIANT または ANY である場合の比較です。プログラム作成時、データタイプがまだ既知でない場合は、VARIANT データタイプを使用できます。この場合、そのオペランドを、任意のデータタイプの構造化されたタグと比較することもできます。データタイプ VARIANTまたは ANY の 2 つのタグを相互に比較することもできます。
構造体の比較では、命令ボックスのドロップダウンリストからデータタイプ VARIANT を選択できます。以下のデータタイプが可能です。
• PLC データタイプ• STRUCT (データタイプ STRUCT の構造体は PLC データタイプに(UDT)に含まれる必要があります、または比較する 2 つの構造体は ARRAY of STRUCT の 2 つの要素です。匿名の構造体は許可されません。)• ANY が指しているタグ• VARIANT が指しているタグ
VARIANT が選択された状態でデータタイプ ARRAY の 2 つのタグを比較するには、以下の要件を満たす必要があります。
• 各エレメントが同じデータタイプを持つこと。
• 2 つの ARRAY が同じ次元を持つこと。
• すべての次元が同じエレメント数を持つこと。ARRAY 固定制限値は一致する必要はあ
りません。

150

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

注記
ARRAY of BOOL
データタイプ ARRAY of BOOL の 2 つのオペランドを相互に比較するとき、ドロップダウンリストからデータイプを VARIANT を選択し、エレメント数が 8 で割り切れない場合は、FILL ビットも比較されます。これは、比較結果に影響を及ぼす場合があります。
比較する構造体内のエレメントが無効な STRING/WSTRING、無効な時刻または日付、無効な浮動小数点数の場合、RLO (論理操作の結果)の比較結果は、シグナル状態「0」を返します。
下の表に、構造体の比較の例を示します。
<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ A の タグ値

1

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ B の タグ値

0

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

TRUE

INT

2

INT

3

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

VARIANT (データタ タグ値

1

グ <PLC データタイ

イプ A のタグに割

プ>

り当て)
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

151

基本命令
3.1 LADパラメータ
次の表に、「等価」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

ビット列、整I、Q、M、D、最初の比較値>

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ<Operand2 Input

ビット列、整I、Q、M、D、>数、浮動小数点 L、P、または定

第 2 の比較値

数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
前記で詳述したように、データタイプ ARRAY、STRUCT (PLC データタイプ内の)、
VARIANT、ANY、および PLC データタイプ(UDT)は、ファームウェアバージョン 2.0 または 4.2 以降の場合のみ使用できます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

152

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB9DOXHಯ
,17

ಯ7DJ2XWಯ
6

ಯ7DJB9DOXHಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 「Tag_Value1」 = 「Tag_Value2」の場合に、比較命令の条件が満たされていること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.4.2

CMP <>:不等価

説明「不等価」命令を使用して、第 1 の比較値(<Operand1>)が第 2 の比較値(<Operand2>)と等しくないかどうかを確認します。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダで、最初の比較値(<Operand1>)を指定します。命令よりも下のオペランドプレースホルダの 2 番目の比較値(<Operand2>)を指定します。
IEC チェックが有効になっている場合、比較するオペランドが同じデータタイプであることが必要です。IEC チェックが有効になっていない場合、オペランドの幅が同じであることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

153

基本命令
3.1 LAD

浮動小数点数の比較
データタイプ REAL または LREAL を比較する場合は、命令「CMP <>:次の値に等しくない」の代わりに、推奨命令「OUT_RANGE:範囲外の値」を使用します。
浮動小数点数を比較する場合、IEC チェックの設定に関わらず比較するオペランドは同じ
データタイプであることが必要です。
未定義の結果(たとえば、-1 のルート)である無効な浮動小数点数の特別なビットパターン(NaN)は比較できません。すなわち、オペランドの 1 つが値 NaN を持つと、命令「CMP <>:
次の値に等しくない」の結果は FALSE です。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。
次の表は、文字比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'AA'

'aa'

1

'Hello World''HelloWorld'

1

'AA'

'AA'

0

'aa'

'aaa'

1

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
無効なタイマ、日付と時刻のビットパターン(たとえば、
DT#2015-13-33-25:62:99.999_999_999)は比較できません。すなわち、オペランドの 1
つが無効な値を持つと、命令「CMP <>:次の値に等しくない」の結果は FALSE です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較
されます。

154

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

ハードウェアデータタイプの比較
PORT データタイプのオペランドを比較するには、命令ボックスのドロップダウンリスト
から WORD データタイプを選択する必要があります。
2 つのハードウェアデータタイプ HW_IO と HW_DEVICE を比較する場合は、最初にブロックインターフェースのセクション[Temp]でデータタイプ HW_ANY のタグを作成した後、
LADDR (データタイプ HW_DEVICE の)をそのタグにコピーします。これで、HW_ANY と
HW_IO を比較することができます。

構造体の比較
注記
構造体の比較の可用性
構造体を比較するオプションは、S7-1200 シリーズの CPU でファームウェアバージョン
4.2 以降の場合および S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。
両方のタグが同じ構造体データタイプを持つとき、2 つの構造化されたオペランドの値を比較できます。構造体を比較する場合、IEC チェックの設定とは関係なく、比較対象のオ
ペランドのデータタイプが同じであることが必要です。例外は、2 つのオペランドの 1 つがVARIANT または ANY である場合の比較です。プログラム作成時、データタイプがまだ既知でない場合は、VARIANT データタイプを使用できます。この場合、そのオペランドを、任意のデータタイプの構造化されたタグと比較することもできます。データタイプ VARIANTまたは ANY の 2 つのタグを相互に比較することもできます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

155

基本命令
3.1 LAD構造体の比較では、命令ボックスのドロップダウンリストからデータタイプ VARIANT を選択できます。以下のデータタイプが可能です。
• PLC データタイプ• STRUCT (データタイプ STRUCT の構造体は PLC データタイプに(UDT)に含まれる必要があります、または比較する 2 つの構造体は ARRAY of STRUCT の 2 つの要素です。匿名の構造体は許可されません。
)• ANY が指しているタグ• VARIANT が指しているタグ
VARIANT が選択された状態でデータタイプ ARRAY の 2 つのタグを比較するには、以下の要件を満たす必要があります。
• 各エレメントが同じデータタイプを持つこと。
• 2 つの ARRAY が同じ次元を持つこと。
• すべての次元が同じエレメント数を持つこと。ARRAY 固定制限値は一致する必要はありません。
注記
ARRAY of BOOL
データタイプ ARRAY of BOOL の 2 つのオペランドを相互に比較するとき、ドロップダウンリストからデータイプを VARIANT を選択し、エレメント数が 8 で割り切れない場合は、FILL ビットも比較されます。これは、比較結果に影響を及ぼす場合があります。
比較する構造体内のエレメントが無効な STRING/WSTRING、無効な時刻または日付、無効な浮動小数点数の場合、RLO (論理操作の結果)の比較結果は、シグナル状態「0」を返します。
下の表に、構造体の比較の例を示します。

156<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ A の タグ値

0

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ B の タグ値

1

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

TRUE

INT

2

INT

3

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

VARIANT (データタ タグ値

0

グ <PLC データタイ

イプ A のタグに割

プ>

り当て)
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

157

基本命令
3.1 LADパラメータ
次の表に、「不等価」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

ビット列、整I、Q、M、D、最初の比較値>

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ<Operand2 Input

ビット列、整I、Q、M、D、>数、浮動小数点 L、P、または定

第 2 の比較値

数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
前記で詳述したように、データタイプ ARRAY、STRUCT (PLC データタイプ内の)、
VARIANT、ANY、および PLC データタイプ(UDT)は、ファームウェアバージョン 2.0 または 4.2 以降の場合のみ使用できます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

158

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB9DOXHಯ!
,17

ಯ7DJ2XWಯ
6

ಯ7DJB9DOXHಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 「Tag_Value1」 <> 「Tag_Value2」の場合、比較命令の条件が満たされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.4.3

CMP >=:以上

説明「以上」命令を使用して、第 1 の比較値(<Operand1>)が第 2 の比較値(<Operand2>)以上かどうかを確認します。比較対象となる 2 つの値は、同じデータタイプである必要があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダで、最初の比較値(<Operand1>)を指定します。命令よりも下のオペランドプレースホルダの 2 番目の比較値(<Operand2>)を指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

159

基本命令
3.1 LAD

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、長い方の文字列が大きいと見なされます。
次の表は、文字比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'BB'

'AA'

1

'AAA'

'AA'

1

'Hello World''Hello World'

1'Hello World''HelloWorld'

0

'AA'

'aa'

0

'AAA'

'a'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
時間値を比較する場合、<Operand1>の時間ポイントが<Operand2>の時間ポイントよりも大きい(より最新)か等しい場合、命令の RLO は「1」です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

160

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「以上」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

ビット列、整I、Q、M、D、最初の比較値>

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時刻<Operand2 Input

ビット列、整I、Q、M、D、>数、浮動小数点 L、P、または定

第 2 の比較値

数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB9DOXHಯ
!
,17

ಯ7DJ2XWಯ
6

ಯ7DJB9DOXHಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 「Tag_Value1」 >= 「Tag_Value2」の場合、比較命令の条件が満たされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

161

基本命令
3.1 LAD

3.1.4.4

CMP <=:以下

説明「以下」命令を使用して、第 1 の比較値(<Operand1>)が第 2 の比較値(<Operand2>)以下かどうかを確認します。比較対象となる 2 つの値は、同じデータタイプである必要があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダで、最初の比較値(<Operand1>)を指定します。命令よりも下のオペランドプレースホルダの 2 番目の比較値(<Operand2>)を指定します。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、短い方の文字列が小さいと見なされます。
次の表は、文字比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'AA'

'aa'

1

'AAA'

'a'

1

'Hello World''Hello World'

1'HelloWorld''Hello World'

0

'BB'

'AA'

0

'AAA'

'AA'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

162

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

タイマ、日付と時刻の比較
時間値を比較する場合、<Operand1>の時間ポイントが<Operand2>の時間ポイントよりも小さい(より前)か等しい場合、命令の RLO は「1」です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

パラメータ
次の表に、「以下」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

ビット列、整I、Q、M、D、最初の比較値>

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時刻<Operand2 Input

ビット列、整I、Q、M、D、>数、浮動小数点 L、P、または定

第 2 の比較値

数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

163

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB9DOXHಯ
,17

ಯ7DJ2XWಯ
6

ಯ7DJB9DOXHಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 「Tag_Value1」 <= 「Tag_Value2」の場合、比較命令の条件が満たされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.4.5

CMP >:超過説明「超過」命令を使用して、第 1 の比較値(<Operand1>)が第 2 の比較値(<Operand2>)よりも大きいかどうかを確認します。比較対象となる 2 つの値は、同じデータタイプである必要があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダで、最初の比較値(<Operand1>)を指定します。命令よりも下のオペランドプレースホルダの 2 番目の比較値(<Operand2>)を指定します。

164

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、長い方の文字列が大きいと見なされます。
次の表は、文字比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'BB'

'AA'

1

'AAA'

'AA'

1

'AA'

'aa'

0

'AAA'

'a'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
時間値を比較する場合、<Operand1>の時間ポイントが<Operand2>の時間ポイントよりも大きければ(より最新)、命令の RLO は「1」です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

165

基本命令
3.1 LADパラメータ
次の表に、「超過」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

ビット列、整I、Q、M、D、最初の比較値>

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時刻<Operand2 Input

ビット列、整I、Q、M、D、>数、浮動小数点 L、P、または定

第 2 の比較値

数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB9DOXHಯ
!
,17

ಯ7DJ2XWಯ
6

ಯ7DJB9DOXHಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 「Tag_Value1」 > 「Tag_Value2」の場合、比較命令の条件が満たされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

166

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.4.6

CMP <:未満

説明「未満」命令を使用して、第 1 の比較値(<Operand1>)が第 2 の比較値(<Operand2>)未満であるかどうかを確認します。比較対象となる 2 つの値は、同じデータタイプである必要があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダで、最初の比較値(<Operand1>)を指定します。命令よりも下のオペランドプレースホルダの 2 番目の比較値(<Operand2>)を指定します。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、短い方の文字列が小さいと見なされます。
次の表は、文字比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'AA'

'aa'

1

'AAA'

'a'

1

'BB'

'AA'

0

'AAA'

'AA'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

167

基本命令
3.1 LAD

タイマ、日付と時刻の比較
時間値を比較する場合、<Operand1>の時間ポイントが<Operand2>の時間ポイントよりも小さければ(より前)、命令の RLO は「1」です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

パラメータ
次の表に、「未満」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

ビット列、整I、Q、M、D、最初の比較値>

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時刻<Operand2 Input

ビット列、整I、Q、M、D、>数、浮動小数点 L、P、または定

第 2 の比較値

数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

168

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB9DOXHಯ
,17

ಯ7DJ2XWಯ
6

ಯ7DJB9DOXHಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 「Tag_Value1」 < 「Tag_Value2」の場合、比較命令の条件が満たされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.4.7

IN_RANGE:範囲内の値

説明「範囲内の値」命令を使って、入力 VAL の値が特定の値の範囲内にあるか照会できます。
MIN および MAX 入力で値の範囲の限度を指定します。「範囲内の値」命令は、VAL 入力の値と、MIN および MAX 入力の値を比較し、結果をボックス出力に送信します。入力 VAL の値が、比較 MIN <= VAL または VAL <= MAX を満たしている場合、ボックス出力のシグナル
状態は「1」です。比較の条件が満たされない場合、ボックス出力のシグナル状態は「0」です。
ボックス入力のシグナル状態が「0」の場合、「範囲内の値」命令は実行されません。
比較ファンクションは、比較対象の値が同じデータタイプでボックス入力が相互接続されている場合にのみ実行できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

169

基本命令
3.1 LADパラメータ
次の表に、「範囲内の値」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

Box input

Input

BOOL

I、Q、M、D、L 直前の論理演算の結果

MIN

Input

整数、浮動小数 I、Q、M、D、

Input

整数、浮動小数 I、Q、M、D、

Input

Box output

整数、浮動小数 I、Q、M、D、

Output

比較値

L、または定数

点数
MAX

値の範囲の下限値

L、または定数

点数
VAL

説明

値の範囲の上限値

点数

L、または定数BOOL

I、Q、M、D、L 比較の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ ಯ7DJ,QBಯಯ7DJB0LQಯ
ಯ7DJB9DOXHಯ
ಯ7DJB0D[ಯ,1B5$1*(
5($/

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

0,1
9$/
0$;

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「Tag_Value」の値が、オペランド「Tag_Min」および「Tag_Max」(MIN <=VAL または VAL <= MAX)の現在値で指定された値の範囲内になっています。
• オペランド「TagIn_3」のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

170

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.4.8

OUT_RANGE:範囲外の値

説明「範囲外の値」命令を使って、入力 VAL の値が特定の値の範囲外にあるか照会できます。
MIN および MAX 入力で値の範囲の限度を指定します。「範囲外の値」命令は、入力 VAL の値と、入力 MIN および MAX の値を比較し、結果をボックス出力に送信します。入力 VALの値が、比較 MIN > VAL または VAL > MAX を満たしている場合、ボックス出力のシグナル
状態は「1」です。REAL のデータタイプを持つ指定したオペランドが無効な値を示す場合
も、ボックス出力のシグナル状態は「1」です。
入力 VAL の値が MIN > VAL または VAL > MAX の条件を満たさない場合、ボックス出力がシグナル状態「0」を返します。
ボックス入力のシグナル状態が「0」の場合、「範囲外の値」命令は実行されません。
比較ファンクションは、比較対象の値が同じデータタイプでボックス入力が相互接続されている場合にのみ実行できます。

パラメータ
次の表に、「範囲外の値」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

Box input

Input

BOOL

I、Q、M、D、L 直前の論理演算の結果

MIN

Input

整数、浮動小数 I、Q、M、D、
点数

VAL

Input

MAX
Box output

Input
Output値の範囲の下限値

L、または定数

整数、浮動小数 I、Q、M、D、
点数

説明

比較値

L、または定数

整数、浮動小数 I、Q、M、D、値の範囲の上限値

点数

L、または定数BOOL

I、Q、M、D、L 比較の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

171

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ ಯ7DJ,QBಯಯ7DJB0LQಯ
ಯ7DJB9DOXHಯ
ಯ7DJB0D[ಯ287B5$1*(
5($/

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

0,1
9$/
0$;

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「Tag_Value」の値が、オペランド「Tag_Min」および「Tag_Max」(MIN >VAL または VAL > MAX)の現在値で指定された値の範囲外にあります。
• オペランド"TagIn_3"のシグナル状態が「1」であること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.4.9----I OK I----:有効性のチェック

説明「有効性チェック」命令を使って、オペランド(<operand>)の値が有効な浮動小数点数であるかチェックできます。クエリは、命令の入力のシグナル状態が「1」であると、各プロ
グラムサイクルで開始されます。
オペランドの値にクエリの実行時、有効な浮動小数点数である場合、命令の出力のシグナル
状態は「1」になり、命令の入力のシグナル状態は「1」になります。それ以外のすべての場合、「有効性チェック」命令の出力のシグナル状態は「0」です。
「有効性チェック」命令は、EN 機能と一緒に使用することができます。命令ボックスを EN
イネーブル入力に接続すると、このイネーブル入力は有効性クエリの結果が正である場合にのみセットされます。このファンクションを使用して、指定したオペランドの値が有効な浮動小数点数である場合のみ、この命令を有効にすることができます。

172

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「有効性チェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、L クエリ対象の値

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJB9DOXHಯ
2.

ಯ7DJB9DOXHಯ
2.

08/
5($/
(1
(12

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

オペランド「Tag_Value1」と「Tag_Value2」の値が有効な浮動小数点数である場合、「乗算」命令が実行されます。オペランド「Tag_Value1」の値に、オペランド「Tag_Value2」の値が乗算されます。この後、乗算の積がオペランド「Tag_Result」に書き込まれます。
この命令がエラーなしで実行されると、「ENO」イネーブル出力の TagOut オペランドはシグナル状態「1」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.4.10----I NOT_OK I----:無効性のチェック

説明「無効性チェック」命令を使って、オペランド(<operand>)の値が無効な浮動小数点数であるかチェックできます。クエリは、命令の入力のシグナル状態が「1」であると、各プロ
グラムサイクルで開始されます。
オペランドの値にクエリの実行時、無効な浮動小数点数である場合、命令の出力のシグナル
状態は「1」になり、命令の入力のシグナル状態は「1」になります。それ以外のすべての場合、「無効性のチェック」命令の出力のシグナル状態は「0」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

173

基本命令
3.1 LAD

パラメータ
次の表に、
「無効性チェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、L クエリ対象の値

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
029(

ಯ7DJ,QB9DOXHಯ
127

127B2.

ಯ7DJ,QB9DOXHಯ

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

オペランド「TagIn_Value」の値が無効な浮動小数点数の場合、命令「値のムーブ」は実行されません。ENO イネーブル出力の「TagOut」オペランドがシグナル状態「0」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.4.11

VARIANTEQ_Type:EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較

説明「EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較」命令を使用して、
VARIANT が指すタグのデータタイプを照会できます。ブロックインターフェースで宣言したタグ(<Operand1>)のデータタイプと、タグ(<Operand2>)のデータタイプを「等しい」かどうか比較します。
<Operand1>のデータタイプは VARIANT であることが必要です。<Operand2>は、基本データタイプであるか、または PLC データタイプである場合があります。

174

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダに<Operand1>を指定します。命令の下のオペラン
ドプレースホルダに<Operand2>を指定します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP ==」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。
構造体の比較に関する追加情報は、CMP ==:等価 (ページ 148)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

175

基本命令
3.1 LAD

パラメータ
次の表に、
「EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較」命令のパラメータを示します。
パラメータ 宣言<Operand1 Input

データタイプVARIANT

>

メモリ領域

説明

S7-1200

S7-1500

L (ブロック

L (ブロック 最初のオペラン

インターフ

インターフ ドェースの[一 ェースの時]セクショ [一時]セク
ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。)

I、Q、M、

I、Q、M、 2 番目のオペラ<Operand2 Input

ビット列、整>数、浮動小数点 D、L

D、L、P

ンド

数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ7DJB2SHUDQG
(4B7\SHಯ7DJ2XWಯ
6

ಯ7DJB2SHUDQGಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「#Tag_Operand1」オペランド
が 「Tag_Operand2」と等しいこと。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

176

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

NE_Type:UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較
説明「UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較」命令を使用
して、VARIANT が指すタグが所有しないデータタイプを照会できます。ブロックインター
フェースで宣言したタグ(<Operand1>)のデータタイプと、タグ(<Operand2>)のデータタ
イプを「等しくない」かどうか比較します。
<Operand1>のデータタイプは VARIANT であることが必要です。<Operand2>は、基本データタイプであるか、または PLC データタイプである場合があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダに<Operand1>を指定します。命令の下のオペラン
ドプレースホルダに<Operand2>を指定します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP <>」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。
構造体の比較に関する追加情報は、CMP <>:不等価 (ページ 153)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

177

基本命令
3.1 LADパラメータ
次の表に、「UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較」
命令のパラメータを示します。
パラメータ 宣言<Operand1 Input

データタイプVARIANT

>

メモリ領域

説明

S7-1200

S7-1500

L (ブロック

L (ブロック

最初のオペラ

インターフ

インターフ

ンド

ェースの[一 ェースの[一時]セクショ 時]セクショ
ンでの宣言

ンでの宣言

は可能では

は可能では

ありませ

ありませ

ん。)

ん。)

I、Q、M、

I、Q、M、

2 番目のオペ

D、L、P

ランド

<Operand2 Input

ビット列、整>数、浮動小数点 D、L数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ7DJB2SHUDQG
1(B7\SHಯ7DJ2XWಯ
6

ಯ7DJB2SHUDQGಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「#Tag_Operand1」オペランド
が「Tag_Operand2」と等しくないこと。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

178

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADEQ_ElemType: EQUAL (等しい)かどうか配列要素のデータタイプをタグのデータタイプと比較

説明「EQUAL (等しい)かどうか配列エレメントのデータタイプをタグのデータタイプと比較」命令を使用して、VARIANT が指すタグのデータタイプを照会できます。ブロックインターフ
ェースで宣言したタグ(<Operand1>)のデータタイプと、タグ(<Operand2>)のデータタイ
プを「等しい」かどうか比較します。
<Operand1>のデータタイプは VARIANT であることが必要です。<Operand2>は、基本データタイプであるか、または PLC データタイプである場合があります。
VARIANT タグ(<Operand1>)のデータタイプが ARRAY の場合、ARRAY エレメントのデータ
タイプが比較されます。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダに<Operand1>を指定します。命令の下のオペラン
ドプレースホルダに<Operand2>を指定します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP ==」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

179

基本命令
3.1 LAD構造体の比較に関する追加情報は、CMP ==:等価 (ページ 148)を参照してください。

パラメータ
次の表に、
「EQUAL (等しい)かどうか配列エレメントのデータタイプをタグのデータタイ
プと比較」命令のパラメータを示します。
パラメータ 宣言<Operand1 Input

データタイプ

メモリ領域

VARIANT>

説明

S7-1200

S7-1500

L (ブロック

L (ブロック 最初のオペラン

インターフ

インターフ ドェースの[一 ェースの時]セクショ [一時]セク
ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。)

I、Q、M、

I、Q、M、 2 番目のオペラ<Operand2 Input

ビット列、整>数、浮動小数点 D、L

D、L、P

ンド

数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ7DJB2SHUDQG
(4B(OHP7\SHಯ7DJ2XWಯ
6

ಯ7DJB2SHUDQGಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「#Tag_Operand1」オペランド
が 「Tag_Operand2」と等しいこと。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

180

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

NE_ElemType: UNEQUAL (等しくない)かどうか配列要素のデータタイプをタグのデータタイプと比較

説明「UNEQUAL (等しくない)かどうか配列エレメントのデータタイプをタグのデータタイプと比較」命令を使用して、VARIANT が指すタグが所有しないデータタイプを照会できます。
ブロックインターフェースで宣言したタグ(<Operand1>)のデータタイプと、タグ(<Operand2>)のデータタイプを「等しくない」かどうか比較します。
<Operand1>のデータタイプは VARIANT であることが必要です。<Operand2>は、基本データタイプであるか、または PLC データタイプである場合があります。
VARIANT タグ(<Operand1>)のデータタイプが ARRAY の場合、ARRAY エレメントのデータ
タイプが比較されます。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダに<Operand1>を指定します。命令の下のオペラン
ドプレースホルダに<Operand2>を指定します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP <>」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

181

基本命令
3.1 LAD構造体の比較に関する追加情報は、CMP <>:不等価 (ページ 153)を参照してください。

パラメータ
次の表に、
「UNEQUAL (等しくない)かどうか配列エレメントのデータタイプをタグのデー
タタイプと比較」命令のパラメータを示します。
パラメータ 宣言<Operand1 Input

データタイプ

メモリ領域

VARIANT>

説明

S7-1200

S7-1500

L (ブロック

L (ブロック 最初のオペラン

インターフ

インターフ ドェースの[一 ェースの時]セクショ [一時]セク
ンでの宣言

ションでの

は可能では

宣言は可能

ありません。) ではありません。)<Operand2 Input

ビット列、整I、Q、M、>数、浮動小数点 D、L

I、Q、M、 2 番目のオペラ
D、L、P

ンド

数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ7DJB2SHUDQG
1(B(OHP7\SHಯ7DJ2XWಯ
6

ಯ7DJB2SHUDQGಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「#Tag_Operand1」オペランド
が「Tag_Operand2」と等しくないこと。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

182

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADIS_NULL: EQUALS NULL ポインタのチェック
説明「EQUALS NULL ポインタのチェック」命令を使用して、VARIANT が NULL ポインタをポイ
ントし、そのためオブジェクトをポイントしないかどうかを照会することができます。
<Operand>のデータタイプは、VARIANT であることが必要です。
注記
VARIANT タグは、ANY ポインタを指します。
VARIANT タグが ANY ポインタを指す場合、この命令は常に(ANY ポインタが NULL である
場合でも)、結果 RLO = 「0」を返します。

パラメータ
次の表に、「EQUALS NULL ポインタのチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

VARIANT

L (ブロックイン EQUALS NULL (NULL に等
ターフェースの しい)かどうかで比較され[一時]セクショ

るオペランドンでの宣言は可能ではありません。)
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

7DJB2SHUDQG,6B18//

ಯ7DJ2XWಯ
6

183

基本命令
3.1 LAD
次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされていること。すなわち、#Tag_Operand オペランドが、オブジェクトを指していないこと。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

NOT_NULL: UNEQUALS NULL ポインタのチェック
説明「UNEQUALS NULL ポインタのチェック」命令を使用して、が NULL ポインタをポイントせず、VARIANT そのためオブジェクトをポイントするかどうかを照会することができます。
<Operand>のデータタイプは、VARIANT であることが必要です。
注記
VARIANT タグは、ANY ポインタを指します。
VARIANT タグが ANY ポインタを指す場合、この命令は常に(ANY ポインタが NULL である
場合でも)、結果 RLO = 「1」を返します。

パラメータ
次の表に、「UNEQUALS NULL ポインタのチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域<Operand> Input

VARIANT

L (ブロックイン UNEQUALS NULL (NULL

説明

ターフェースの に等しくない)かどうかで[一時]セクショ

比較されるオペランド

ンでの宣言は可能ではありません。)
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

184

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ7DJB2SHUDQG
127B18//

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされていること。すなわち、#Tag_Operand オペランドが、オブジェクトを指していること。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

IS_ARRAY:配列のチェック

説明「配列のチェック」命令を使用して、VARIANT が ARRAY データタイプのタグを指すかどうかを照会できます。
<Operand>のデータタイプは、VARIANT であることが必要です。

パラメータ
次の表に、「配列のチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

VARIANT

L (ブロックイン ARRAY に関するクエリがターフェースの 行われるオペランド「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

185

基本命令
3.1 LAD
有効なデータタイプの追加情報については、「関連項目」を参照してください。
注記
配列データブロックのチェック
ArrayDB とともに IS_ARRAY 命令を使用し、DB_ANY_TO_VARIANT によって VARIANT 入力
パラメータを生成する場合、その ArrayDB が、データタイプ VARIANT の仮パラメータの実パラメータとしてプログラム内のどこかでシンボリックに使用されている必要があります。
正しく動作するには、使用場所がダウンロードされていれば十分です。これは、実行には必要ありません。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ7DJB9$5,$17
7R$UUD\,6B$55$<

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされます。すなわち「#Tag_VARIANTToArray」オペランドが
ARRAY データタイプになります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

EQ_TypeOfDB:EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較

説明「EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較」命令を使用して、DB_ANY データタイプのタグがアドレス指定する、データブロックにあるデータタイプを照会します。タグ<Operand1>によってアドレス指定される DB のデータタ
イプと、他のタグのデータタイプ、または直接データタイプ(<Operand2>)とを「Equal」
であるかどうか比較します。
<Operand1>のデータタイプは DB_ANY であることが必要です。たとえば、<Operand2>はPLC データタイプ、システムデータタイプ、軸、または FB などの場合があります。

186

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダに<Operand1>を指定します。命令の下のオペラン
ドプレースホルダに<Operand2>を指定します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域
S7-1200<Operand1> Input

DB_ANY説明S7-1500

L (ブロックインターフェー 最初のオペラ
スの「Input」、「InOut」、お ンド
よび「Temp」セクション内
で宣言可能。)<Operand2> Input

TYPE_ID

I、Q、M、

I、Q、M、

2 番目のオペ

D、L

D、L、P

ランド

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ,QSXW'%$Q\(4B7\SH2I'%

ಯ7DJ2XWಯ
6

72B6SHHG$[LV

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされます。つまり、DB をアドレス指定する#InputDBAny オペラ
ンドのデータタイプは、TO_SpeedAxis データタイプと等しくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

187

基本命令
3.1 LAD
次の条件が満たされている場合、「TagOut」出力がセットされません。
• データブロックの番号が「0」の場合。
• データブロックが存在しません。
• データブロックが配列 DB でない場合。
• データブロックにデータタイプ UDT (PLC データタイプ)のタグが含まれている場合。

NE_TypeOfDB:UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較

説明「UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較」
命令を使用して、DB_ANY データタイプのタグがアドレス指定する、データブロックにはないデータタイプを照会します。タグ(<Operand1>)によってアドレス指定される DB のデータタイプと他のタグのデータタイプを比較、または「Not equal」のデータタイプ(<Operand2>)を直接比較します。
<Operand1>のデータタイプは DB_ANY であることが必要です。たとえば、<Operand2>はPLC データタイプ、システムデータタイプ、軸、または FB などの場合があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。命令の RLO は、次のよ
うにラング全体の RLO と論理的に組み合わされます。
• AND で連結(比較命令が直列で接続されている場合)。
• OR で連結(比較命令が並列で接続されている場合)。
命令の上のオペランドプレースホルダに<Operand1>を指定します。命令の下のオペラン
ドプレースホルダに<Operand2>を指定します。

188

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域
S7-1200<Operand1> Input

DB_ANY説明S7-1500

L (ブロックインターフェー 最初のオペラ
スの「Input」、「InOut」、お ンド
よび「Temp」セクション内
で宣言可能。)<Operand2> Input

TYPE_ID

I、Q、M、

I、Q、M、

2 番目のオペ

D、L

D、L、P

ランド

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ,QSXW'%$Q\
1(B7\SH2I'%

ಯ7DJ2XWಯ
6

72B6SHHG$[LV

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされます。つまり、DB をアドレス指定する#InputDBAny オペラ
ンドのデータタイプは、TO_SpeedAxis データタイプと等しくありません。
次の条件が満たされている場合、「TagOut」出力がセットされません。
• データブロックの番号が「0」の場合。
• データブロックが存在しません。
• データブロックが配列 DB でない場合。
• データブロックにデータタイプ UDT (PLC データタイプ)のタグが含まれている場合。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

189

基本命令
3.1 LAD

3.1.5

四則演算

3.1.5.1

CALCULATE:計算

説明「計算」命令を使用して、選択したデータタイプに応じた数学演算および複雑な論理演算の計算のための式を定義し、実行します。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。選択
したデータタイプに応じて、一定の命令のファンクションを組み合わせて、複雑な計算を実行できます。計算する式は、命令ボックスの上部にある「計算機」アイコンで開くことができるダイアログで指定します。式には、入力パラメータの名前と命令の構文を入れることができます。オペランド名とオペランドのアドレスは指定できません。
初期状態では、この命令ボックスには少なくとも 2 つの入力(IN1 および IN2)が含まれています。入力数は拡張できます。挿入された入力は、ボックス内で昇順に番号付けされます。
入力の値は、指定された式を実行するのに使われます。定義済み入力のすべてを式に使用する必要はありません。この命令の実行結果は出力 OUT に転送されます。
注記
式の算術演算の 1 つでエラーが発生すると、結果は出力 OUT に転送されず、イネーブル出
力 ENO はシグナル状態「1」を返します。
ボックス内で使用できない式に入力を使用すると、その入力が自動的に挿入されます。式に新たに定義される入力は、番号が飛んでいてはいけません。たとえば、式に IN4 入力を使用できません。ただし、IN3 入力が定義されている場合は除きます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 「計算」命令の結果が、OUT 出力で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。
• 式のいずれかの命令の実行中に、エラーが発生していること。

190

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、選択したデータタイプに応じて、命令「計算」の式で組み合わせて実行が可能な命令を示します。
データタイプ

命令

構文

例

ビット列

AND:AND 論理積演算

AND

IN1 AND IN2

OR:OR 論理和演算

OR

OR IN3

XOR:EXCLUSIVE OR 論理演算

XOR

INV:1 の補数の作成

NOT

SWAP:スワップ 1)

SWAP

ADD:加算+(IN1 + IN2) *SUB:減算-IN3;

MUL:乗算*(ABS(IN2)) *DIV:除算/MOD:除算の剰余を返す

MOD

INV:1 の補数の作成

NOT

NEG:2 の補数の作成-(in1)

ABS:絶対値の形成

ABS( )

整数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020(ABS(IN1))

191

基本命令
3.1 LAD
データタイプ

命令

構文例

浮動小数点数ADD:加算+((SIN(IN2) *SUB:減算-SIN(IN2) +MUL:乗算*DIV:除算/EXPT:累乗**

ABS:絶対値の形成

ABS( )+

SQR:2 乗値の形成

SQR( )(SQR(COS(IN3)

SQRT:平方根の形成

SQRT( )

) / IN2))

LN:自然対数の形成

LN( )EXP:指数値の形成

EXP( )

FRAC:小数部を返す

FRAC( )

SIN:正弦値の形成

SIN( )

COS:余弦値の形成

COS( )

TAN:正接値の形成

TAN( )

ASIN:逆正弦値の形成

ASIN( )

ACOS:逆余弦値の形成

ACOS( )

ATAN:逆正接値の形成

ATAN( )

NEG:2 の補数の作成-(in1)TRUNC:値の切り捨て

TRUNC( )ROUND:数値の四捨五入

ROUND( )(SIN(IN3) *SIN(IN3)) /IN3));(SQR(SIN(IN2))

CEIL:浮動小数点数から次に大きい整 CEIL( )数を生成
FLOOR:浮動小数点数から次に小さい FLOOR( )整数を生成
データタイプ BYTE では使用不可。

1)

パラメータ
次の表に、「計算」命令のパラメータを示します。

192

パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

ビット列、整I、Q、M、D、最初に利用可能な入力

Input

数、浮動小数点 L、P、または定
IN2

Input

数

数

ビット列、整I、Q、M、D、2 番目に使用可能な入力数、浮動小数点 L、P、または定
INn

Input

数

数

ビット列、整I、Q、M、D、追加で挿入された入力数、浮動小数点 L、P、または定OUT

Output数数

ビット列、整I、Q、M、D、

最終結果の転送先の出力。

数、浮動小数点 L、P数
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
&$/&8/$7(,17

ಯ7DJB,QSXWಯಯ7DJB2XWSXWಯ

(1

(12

ಯ7DJB9DOXHBಯ

,1

,1,1 ,1 ,1
287

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value_1

4

IN2

Tag_Value_2

4

IN3

Tag_Value_3

3

IN4

Tag_Value_4

2

OUT

Tag_Result

12

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

193

基本命令
3.1 LAD「Tag_Input」入力のシグナル状態が「1」の場合、「計算」命令が実行されます。オペラン
ド「Tag_Value_1」の値がオペランド「Tag_Value_2」の値に加算されます。合計は、オペ
ランド「Tag_Value_3」の値で乗算します。積は、オペランド「Tag_Value_4」の値で除算されます。商は、命令の OUT 出力のオペランド「Tag_Result」に終了結果として転送されます。命令がエラーなく実行されると、イネーブル出力 ENO とオペランド「Tag_Output」
が「1」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.2

ADD:加算説明「加算」命令を使って、入力 IN1 の値と入力 IN2 の値を加算し、出力 OUT (OUT := IN1+IN2)
で合計を照会できます。
初期状態では、命令ボックスに最低 2 入力(IN1 と IN2)が含まれます。入力数は拡張できます。挿入された入力は、ボックス内で昇順に番号付けされます。命令を実行する場合、
入力パラメータに使用できるすべての値が加算されます。合計は OUT 出力に保存されます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 命令の結果が、OUT 出力で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「加算」命令のパラメータを示します。

194

パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、

Input

点数

メモリ領域

説明
加算する最初の数

L、P、または定
数

IN2

Input

整数、浮動小数 I、Q、M、D、点数加算する 2 番目の数

L、P、または定
数

INn

Input

整数、浮動小数 I、Q、M、D、点数

加算対象のオプションの

L、P、または定 入力値
数

OUT

Output整数、浮動小数 I、Q、M、D、
点数

合計

L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ

$''
,17
(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

(12

287

ಯ7DJ2XWಯ
6

ಯ7DJB5HVXOWಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「加算」命令が実行されます。オペ
ランド「Tag_Value1」の値がオペランド「Tag_Value2」の値に加算されます。加算の結果がオペランド「Tag_Result」に保存されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

195

基本命令
3.1 LAD

3.1.5.3

SUB:減算説明「減算」命令を使って、入力 IN2 の値を入力 IN1 から減算し、出力 OUT (OUT := IN1-IN2)での差分を照会します。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 命令の結果が、OUT 出力で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「減算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

整数、浮動小数 I、Q、M、D、
点数

説明

被減数

L、P、または定
数

IN2

Input

整数、浮動小数 I、Q、M、D、
点数

減算

L、P、または定数

OUT

Output整数、浮動小数 I、Q、M、D、
点数

差

L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

196

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ

68%
,17
(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

ಯ7DJ2XWಯ
6

(12

287

ಯ7DJB5HVXOWಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「減算」命令が実行されます。オペ
ランド「Tag_Value2」の値が、オペランド「Tag_Value1」の値から減算されます。減算の結果がオペランド「Tag_Result」に保存されます。この命令がエラーなしで実行された場
合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.4

MUL:乗算説明「乗算」命令を使って、入力 IN1 の値を入力 IN2 の値で乗算し、出力 OUT (OUT := IN1 *IN2)での積を照会します。
入力の数は、命令ボックスで拡張できます。追加された入力は、ボックスで昇順に番号付
けされます。命令が実行されると、すべての使用可能な入力パラメータの値が乗算されます。積は OUT 出力に格納されます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN 入力のシグナル状態が「0」であること。
• 結果が、出力 OUT で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

197

基本命令
3.1 LADパラメータ
次の表に、「乗算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

整数、浮動小数 I、Q、M、D、
点数

説明

乗数

L、P、または定
数

IN2

Input

整数、浮動小数 I、Q、M、D、点数乗算される数値

L、P、または定
数

INn

Input

整数、浮動小数 I、Q、M、D、点数乗算できるオプションの

L、P、または定 入力値を以下に示します。
数

OUT

Output整数、浮動小数 I、Q、M、D、
点数

製品

L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ

08/
5($/
(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

(12

287

ಯ7DJ2XWಯ
6

ಯ7DJB5HVXOWಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「乗算」命令が実行されます。オペ
ランド「Tag_Value1」の値に、オペランド「Tag_Value2」の値が乗算されます。乗算の結果がオペランド「Tag_Result」に保存されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

198

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.5.5

DIV:除算説明「除算」命令を使って、入力 IN1 の値を入力 IN2 の値で除算し、出力 OUT (OUT := IN1/IN2)
での商を照会します。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 命令の結果が、OUT 出力で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「除算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

整数、浮動小数 I、Q、M、D、
点数

説明

被除数

L、P、または定
数

IN2

Input

整数、浮動小数 I、Q、M、D、
点数

除数

L、P、または定数

OUT

Output整数、浮動小数 I、Q、M、D、
点数

商の値

L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

199

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
',9
5($/

ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

ಯ7DJ2XWಯ
6

(12

287

ಯ7DJB5HVXOWಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「除算」命令が実行されます。オペ
ランド「Tag_Value1」の値が、オペランド「Tag_Value2」の値で除算されます。除算の結果がオペランド「Tag_Result」に保存されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.6

MOD:除算の剰余を返す

説明「除算の剰余を返す」命令を使用して、入力 IN1 の値を入力 IN2 の値で除算し、出力 OUT
で除算の余りを照会します。

パラメータ
次の表に、「除算の剰余を返す」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

整数

I、Q、M、D、被除数

L、P、または定
数200

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN2

整数

I、Q、M、D、

除数

Input

L、P、または定数
OUT

Output

整数

I、Q、M、D、

除算の余り

L、P
命令ボックスの[Auto (???)]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
02'
ಯ7DJ,Qಯ

',17(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

(12

287

ಯ7DJ2XWಯ
6

ಯ7DJB5HVXOWಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「除算の剰余を返す」命令が実行されます。オペランド「Tag_Value1」の値が、オペランド「Tag_Value2」の値で除算されます。除算の余りはオペランド「Tag_Result」に格納されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.7

NEG:2 の補数の作成

説明「2 の補数の作成」命令を使用して、IN 入力の値の符号を変更し、OUT 出力で結果をクエリできます。たとえば、入力 IN に正の値がある場合、この値をマイナスにした値が出力
OUT に出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

201

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 命令の結果が、OUT 出力で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「2 つの補数の作成」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

メモリ領
域

説明

BOOL

BOOL

I、Q、M、 イネーブル入力
D、L

ENO

Output

BOOL

BOOL

I、Q、M、 イネーブル出力
D、L

IN

Input

SINT、

SINT、

I、Q、M、 入力値

INT、

INT、

D、L、P、

DINT、浮

DINT、

または定

動小数点数 LINT、浮

数

動小数点
数
OUT

Output

SINT、

SINT、

I、Q、M、 入力値の 2 の補数

INT、

INT、

D、L、P

DINT、浮

DINT、

動小数点数 LINT、浮動小数点数
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

202

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

1(*
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「2 の補数の作成」命令が実行されます。入力「TagIn_Value」での値の符号は変更され、結果は出力「TagOut_Value」で提供されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態
が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.8

INC:インクリメント

説明「インクリメント」命令を使って、IN/OUT パラメータのオペランドの値を次の大きな値に変更し、結果を照会します。「インクリメント」命令は、EN イネーブル入力のシグナル状態
が「1」の場合にのみ実行されます。実行中にオーバーフローエラーが発生しなければ、ENO イネーブル出力のシグナル状態も「1」になります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 浮動小数点数の値が無効であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

203

基本命令
3.1 LAD

パラメータ
次の表に、
「インクリメント」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN/OUT

InOut

整数

I、Q、M、D、L インクリメントされる値

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
,1&
ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB,Q2XWಯ

,17
(1

(12

ಯ7DJ2XWಯ

,1 287

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、オペランド「Tag_InOut」の値が 1 ずつインクリメントされ、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.9

DEC:デクリメント

説明「デクリメント」命令を使って、IN/OUT パラメータのオペランドの値を次の小さな値に変更
し、結果を照会します。「デクリメント」命令は、EN イネーブル入力のシグナル状態が「1」の場合にのみ実行されます。処理中に選択したデータタイプの値の範囲を超えなけれ
ば、ENO 出力のシグナル状態も「1」になります。

204

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「デクリメント」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN/OUT

InOut

整数

I、Q、M、D、L デクリメントされる値

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
'(&
ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB,Q2XWಯ

,17
(1

(12

ಯ7DJ2XWಯ

,1 287

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、オペランド「Tag_InOut」の値が 1 ずつデクリメントされ、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

205

基本命令
3.1 LAD

3.1.5.10

ABS:絶対値の形成

説明「絶対値の形成」命令を使って、入力 IN で指定した値の絶対値を計算します。命令の結果
は、OUT 出力に送信され、そこから照会できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「絶対値の形成」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

メモリ領
域

BOOL

BOOL

I、Q、

説明
イネーブル入力

M、D、L
ENO

Output

BOOL

BOOL

I、Q、

イネーブル出力

M、D、L
IN

Input

SINT、

SINT、

I、Q、

INT、

INT、

M、D、

DINT、浮

DINT、

L、P、ま

動小数点

LINT、浮

たは定数

数

動小数点

入力値

数
OUT

Output

SINT、

SINT、

I、Q、

INT、

INT、

M、D、

DINT、浮

DINT、

L、P

動小数点

LINT、浮数

動小数点

入力値の絶対値数
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

206

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

$%6
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value-6.234OUT

TagOut_Value

6.234

オペランド「TagIn」のシグナル状態が「1」の場合、「絶対値の形成」命令が実行されます。
この命令は、入力「TagIn_Value」の値の絶対値を計算し、結果を出力「TagOut_Value」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.11

MIN:最小値の取得

説明「最小値の取得」命令は、使用可能な入力の値を比較し、最小値を出力 OUT に書き込みます。入力の数は、追加入力によって、命令ボックスで拡張できます。入力は、ボックスで昇順に番号付けされます。
命令を実行するには、2 つの入力の最小値と 100 の入力の最大値を指定する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

207

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、ENO イネーブル出力のシグナル状態は「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「最小値の取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

整数、浮動小数 I、Q、M、D、点数、DTL、DT

説明

最初の入力値

L、P、または定
数

IN2

Input

整数、浮動小数 I、Q、M、D、点数、DTL、DT

2 番目の入力値

L、P、または定
数

INn

Input

整数、浮動小数 I、Q、M、D、点数、DTL、DT

値が比較される追加挿入

L、P、または定 された入力数

OUT

Output整数、浮動小数 I、Q、M、D、点数、DTL、DT

結果

L、P

IEC チェックが有効でない場合、命令のデータタイプと同一の長さのビット列または整数を選択することによって、データタイプ TIME、LTIME、TOD、LTOD、DATE、および LDTのタグを使用することもできます(たとえば、TIME の代わりに => DINT、UDINT、またはDWORD = 32 ビット)。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

208

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

0,1,17

ಯ7DJ2XWಯ

(1(12

ಯ7DJ,QB9DOXHಯ

,1

287

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

IN3

TagIn_Value3

13333

OUT

TagOut_Value

12222

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、指定されたオペランドの値を比較し、最小値(「TagIn_Value1」)を出力「TagOut_Value」にコピーします。この命令がエラーなしで実行された場合、「TagOut」出
力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.12

MAX:最大値の取得

説明「最大値の取得」命令は、使用可能な入力の値を比較し、最大値を出力 OUT に書き込みます。入力の数は、追加入力によって、命令ボックスで拡張できます。入力は、ボックスで昇順に番号付けされます。
命令を実行するには、2 つの入力の最小値と 100 の入力の最大値を指定する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

209

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、ENO イネーブル出力のシグナル状態は「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「最大値の取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

整数、浮動小数 I、Q、M、D、点数、DTL、DT

説明

最初の入力値

L、P、または定
数

IN2

Input

整数、浮動小数 I、Q、M、D、点数、DTL、DT

2 番目の入力値

L、P、または定
数

INn

Input

整数、浮動小数 I、Q、M、D、点数、DTL、DT

値が比較される追加挿入

L、P、または定 された入力数

OUT

Output整数、浮動小数 I、Q、M、D、点数、DTL、DT

結果

L、P

IEC チェックが有効でない場合、命令のデータタイプと同一の長さのビット列または整数を選択することによって、データタイプ TIME、LTIME、TOD、LTOD、DATE、および LDTのタグを使用することもできます(たとえば、TIME の代わりに => DINT、UDINT、またはDWORD = 32 ビット)。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

210

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

0$;,17

ಯ7DJ2XWಯ

(1(12

ಯ7DJ,QB9DOXHಯ

,1

287

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

IN3

TagIn_Value3

13333

OUT

TagOut_Value

14444

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、指定されたオペランドの値を比較し、最大値(「TagIn_Value2」)を出力「TagOut_Value」にコピーします。この命令がエラーなしで実行された場合、「TagOut」出
力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.13

LIMIT:制限値の設定

説明「制限値の設定」命令を使用して入力 IN の値を入力 MN および MX の値に制限することができます。IN 入力の値が MN 条件<= IN <= MX を満たす場合、この値は OUT 出力にコピーされます。条件が満たされず入力値 IN が下限値 MN を下回る場合、出力 OUT は MN 入
力の値にセットされます。上限値 MX を超えると、OUT 出力が MX 入力の値にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

211

基本命令
3.1 LAD
MN 入力の値が MX 入力の値より大きい場合、その結果は IN パラメータで指定された値になり、イネーブル出力 ENO は「0」です。
次のいずれかの条件が満たされる場合、ENO イネーブル出力のシグナル状態は「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 指定された複数のタグが同じデータタイプでないこと。
• オペランドの値が無効である。
• MN 入力の値が MX 入力の値よりも大きいこと。

パラメータ
次の表に、「制限値の設定」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域 説明
I、Q、M、 イネーブル入力
D、L

ENO

Output

BOOL

BOOL

I、Q、M、 イネーブル出力
D、L

MN

Input

整数、浮動 整数、浮動 I、Q、M、 下限値
小数点数、 小数点数、 D、L、P、
TIME、

TIME、

TOD、

LTIME、

DATE、DTL

TOD、

または定数

LTOD、
DATE、
LDT、
DTL、DT212

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプS7-1200

IN

Input

メモリ領域 説明S7-1500

整数、浮動 整数、浮動 I、Q、M、 入力値
小数点数、 小数点数、 D、L、P、
TIME、

TIME、

TOD、

LTIME、

DATE、DTL

TOD、

または定数

LTOD、
DATE、
LDT、
DTL、DTMX

Input

整数、浮動 整数、浮動 I、Q、M、 上限値
小数点数、 小数点数、 D、L、P、
TIME、

TIME、

TOD、

LTIME、

DATE、DTL

TOD、

または定数

LTOD、
DATE、
LDT、
DTL、DT
OUT

Output整数、浮動 整数、浮動 I、Q、M、 結果
小数点数、 小数点数、 D、L、P
TIME、

TIME、

TOD、

LTIME、

DATE、DTL

TOD、
LTOD、
DATE、
LDT、
DTL、DT

データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

213

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

/,0,7
,17
(1

(12

ಯ7DJB01ಯ

01

287

ಯ7DJB9DOXHಯ

,1

ಯ7DJB0;ಯ

0;ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MN

Tag_MN

12000

IN

Tag_Value

8000

MX

Tag_MX

16000

OUT

Tag_Result

12000

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。オペランド「Tag_Value」の値が、オペランド「Tag_MN」および「Tag_MX」の値と比較されます。オペランド「Tag_Value」の値が下限値未満であるため、オペランド「Tag_MN」の値が「Tag_Result」出力にコピーされます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.14

SQR:2 乗値の形成

説明「2 乗値の形成」命令を使用して、入力 IN の浮動小数点数の値を二乗し、結果を出力 OUTに書き込みます。

214

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。

パラメータ
次の表に、「2 乗値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数
OUT

Output浮動小数点数

I、Q、M、D、

入力値の 2 乗値

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

645
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

5.0

OUT

Tag_Result

25.0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

215

基本命令
3.1 LAD
オペランド「TagIn」のシグナル状態が「1」の場合、「2 乗値の形成」命令が実行されます。
この命令は、オペランド「Tag_Value」の値を 2 乗し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.15

SQRT:平方根の形成

説明「平方根の形成」命令を使用して、入力 IN の浮動小数点数の値の平方根を形成し、結果を
出力 OUT に書き込みます。この命令は、入力値がゼロよりも大きい場合に正の結果になります。入力値がゼロ未満の場合、出力 OUT が無効な浮動小数点数を返します。入力 IN の値が「0」の場合、結果も「0」になります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。
• 入力 IN の値が負。

パラメータ
次の表に、「平方根の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数
OUT

Output浮動小数点数

I、Q、M、D、

入力値の平方根L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

216

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

6457
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

25.0

OUT

Tag_Result

5.0

オペランド「TagIn」のシグナル状態が「1」の場合、「平方根の形成」命令が実行されます。
この命令は、オペランド「Tag_Value」の平方根を計算し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.16

LN:自然対数の形成

説明「自然対数の形成」命令を使用して、入力 IN の値の底 e (e=2.718282)に対する自然対数を計算できます。その結果は、出力 OUT に送信され、そこで照会できます。この命令は、入力値がゼロよりも大きい場合に正の結果になります。入力値がゼロ未満の場合、出力 OUT
が無効な浮動小数点数を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

217

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。
• 入力 IN の値が負。

パラメータ
次の表に、「自然対数の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数
OUT

Output浮動小数点数

I、Q、M、D、

入力値の自然対数

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

/1
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「自然対数の形成」命令が実行されます。この命令は、入力「Tag_Value」の値の自然対数を形成し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

218

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.5.17

EXP:指数値の形成

説明「指数値の形成」命令を使用して、底 e (e=2.718282)および入力 IN で指定された値から指数を計算できます。出力 OUT で提供される結果を照会できます(OUT = eIN)。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。

パラメータ
次の表に、「指数値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数
OUT

Output浮動小数点数

I、Q、M、D、

入力値 IN の指数値

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

219

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
(;3
5($/

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

オペランド「TagIn」のシグナル状態が「1」の場合、「指数値の形成」命令が実行されます。
この命令は、底 e とオペランド「Tag_Value」の値から指数を形成し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.18

SIN:正弦値の形成

説明
角の正弦を計算するには、「正弦値の形成」命令を使用します。角度のサイズが、IN 入力
でラジアン単位で指定されます。命令の結果は、OUT 出力に送信され、そこから照会できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。

パラメータ
次の表に、「正弦値の形成」命令のパラメータを示します。

220

パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

Input

L、P、または定 イズ
数
OUT

Output浮動小数点数

I、Q、M、D、指定された角度の正弦

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

6,1
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value+1.570796 (π/2)

OUT

Tag_Result

1.0

オペランド「TagIn」のシグナル状態が「1」の場合、「正弦値の形成」命令が実行されます。
この命令は、「Tag_Value」入力で指定された角度の正弦を計算し、結果を「Tag_Result」
出力に保存します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

221

基本命令
3.1 LAD

3.1.5.19

COS:余弦値の形成

説明
角の余弦を計算するには、「余弦値の形成」命令を使用します。角度のサイズが、IN 入力
でラジアン単位で指定されます。命令の結果は、OUT 出力に送信され、そこから照会できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。

パラメータ
次の表に、「余弦値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P、または定 イズ
数
OUT

Output浮動小数点数

I、Q、M、D、指定された角度の余弦

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

222

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

&26
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value+1.570796 (π/2)

OUT

Tag_Result

0

オペランド「TagIn」のシグナル状態が「1」の場合、「余弦値の形成」命令が実行されます。
この命令は、「Tag_Value」入力で指定された角度の余弦を計算し、結果を「Tag_Result」
出力に保存します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.20

TAN:正接値の形成

説明
角の正接を計算するには、「正接値の形成」命令を使用します。角度のサイズが、IN 入力
でラジアン単位で指定されます。命令の結果は、OUT 出力に送信され、そこから照会できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

223

基本命令
3.1 LADパラメータ
次の表に、「正接値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P、または定 イズ
数
OUT

Output浮動小数点数

I、Q、M、D、指定された角度の正接

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

(ಯ7DJB9DOXHಯ

7$1
5($/
(1

287

,1

(12

ಯ7DJB5HVXOWಯ$

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value+3.141593 (π)

OUT

Tag_Result

0「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、「Tag_Value」入力で指定された角度の正接を計算し、結果を「Tag_Result」出力に保存します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

224

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.5.21

ASIN:逆正弦値の形成

説明「逆正弦値の形成」命令を使用すると、この値と対応する入力 IN で指定された逆正弦値から角度の大きさを計算できます。範囲-1～+1 の有効な浮動小数点数のみを IN 入力に指定できます。計算された角度の大きさは、弧度法を使用して OUT 出力に出力され、-π/2～+π/2の範囲の値を取ることができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。
• IN 入力の値が許容範囲外であること(-1～+1)。

パラメータ
次の表に、「逆正弦値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、正弦値

L、P、または定数
OUT

Output浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

225

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

$6,1
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

1.0

OUT

Tag_Result+1.570796 (π/2)

オペランド「TagIn」のシグナル状態が「1」の場合、「逆正弦値の形成」命令が実行されます。この命令は、「Tag_Value」入力の正弦値に対応する角度のサイズを計算します。命令の結果は、「Tag_Result」出力に保存されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.22

ACOS:逆余弦値の形成

説明「逆余弦値の形成」命令を使用すると、この値と対応する入力 IN で指定された余弦値から角度の大きさを計算できます。範囲-1～+1 の有効な浮動小数点数のみを IN 入力に指定できます。計算された角度の大きさは、弧度法を使用して OUT 出力に出力され、0～+π の範
囲の値を取ることができます。

226

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。
• IN 入力の値が許容範囲外であること(-1～+1)。

パラメータ
次の表に、「逆余弦値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

余弦値

L、P、または定数
OUT

Output浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

$&26
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

227

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value0

OUT

Tag_Result+1.570796 (π/2)

オペランド「TagIn」のシグナル状態が「1」の場合、「逆余弦値の形成」命令が実行されます。この命令は、「Tag_Value」入力の余弦値に対応する角度のサイズを計算します。命令の結果は、「Tag_Result」出力に保存されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.23

ATAN:逆正接値の形成

説明「逆正接値の形成」命令を使用すると、この値と対応する入力 IN で指定された正接値から角度の大きさを計算できます。入力 IN には、有効な浮動小数点数(または-NaN/+NaN)のみを指定することができます。計算された角度の大きさは、弧度法を使用して OUT 出力に出力され、-π/2～+π/2 の範囲の値を取ることができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。

パラメータ
次の表に、「逆正接値の形成」命令のパラメータを示します。

228

パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

浮動小数点数

I、Q、M、D、

正接値

Input

L、P、または定数
OUT

Output浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJB9DOXHಯ

$7$1
5($/
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

1.0

OUT

Tag_Result+0.785398 (π/4)

オペランド「TagIn」のシグナル状態が「1」の場合、「逆正接値の形成」命令が実行されます。この命令は、入力「Tag_Value」に対応する正接値の角度の大きさを計算します。命令の結果は、「Tag_Result」出力に保存されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

229

基本命令
3.1 LAD

3.1.5.24

FRAC:小数部を返す

説明「小数部を返す」命令を使用して、IN 入力の値の小数位を求めることができます。クエリの結果は OUT 出力に保存され、そこからクエリできます。たとえば、IN 入力の値が123.4567 の場合、OUT 出力が値 0.4567 を返します。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• IN 入力の値が有効な浮動小数点数でないこと。

パラメータ
次の表に、「小数部を返す」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

小数点以下の桁数を求め

L、P、または定 る値
数
OUT

Output浮動小数点数

I、Q、M、D、IN 入力の値の小数位

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

230

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

ಯ7DJ,QBಯಯ7DJB9DOXHಯ

)5$&
5($/

ಯ7DJ2XWಯ

(1

(12

,1

287

ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

2.555

OUT

Tag_Result

0.555

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、「小数部を返す」
命令が開始します。オペランド「Tag_Value」の値の小数位が、オペランド「Tag_Result」にコピーされます。この命令がエラーなしで実行された場合、ENO 出力は「1」のシグナル状態になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.5.25

EXPT:累乗

説明「累乗」命令を使って、IN1 入力の値を IN2 入力の値で指定された指数で累乗することができます。命令の結果は、OUT 出力に与えられ、そこで照会できます(OUT = IN1IN2)。
IN1 入力には、有効な浮動小数点数のみを割り当てることができます。IN2 入力には、整数も割り当てることができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 命令の実行中に、オーバーフローなどのエラーが発生していること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

231

基本命令
3.1 LADパラメータ
次の表に、「累乗」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

浮動小数点数

I、Q、M、D、

底の値

L、P、または定
数
IN2

Input

整数、浮動小数 I、Q、M、D、底の値が累乗される値

L、P、または定

点数

数
OUT

Output浮動小数点数

I、Q、M、D、

結果

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
(;37
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ

5($/

5($/

(1

(12

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、「累乗」命令が開始します。オペランド「Tag_Value1」の値をオペランド「Tag_Value2」の値で指定された数で累乗できます。結果が「Tag_Result」出力に保存されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

232

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6

ムーブ操作

3.1.6.1

MOVE:移動値

説明「値の移動」命令を使用し、IN 入力のオペランドの内容を OUT1 出力のオペランドに転送します。この転送は、常にアドレスの昇順方向に行われます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• IN パラメータのデータタイプが、OUT1 パラメータで指定されたデータタイプと一致しません。
次の表に、S7-1200 CPU シリーズで使用可能な転送方法をリストします。
転送元(IN)
BYTE

宛先(OUT1)
IEC チェックあり

IEC チェックなし

BYTE, WORD, DWORD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD, CHAR

WORD

WORD, DWORD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD, CHAR

DWORD

DWORD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, REAL, TIME, DATE, TOD, CHAR

SINT

SINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

USINTUSINT, UINT, UDINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

INT

INT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

UINTUINT, UDINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

DINT

DINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

233

基本命令
3.1 LAD
転送元(IN)UDINT

宛先(OUT1)
IEC チェックあり

IEC チェックなし

UDINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

REAL

REAL

DWORD, REAL

LREAL

LREAL

LREAL

TIME

TIME

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME

DATE

DATE

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, DATE

TOD

TOD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TOD

DTL

DTL

DTL

CHAR

CHAR

BYTE, WORD, DWORD、CHAR、文字列の文字 1)

WCHAR

WCHAR

BYTE、WORD、DWORD、CHAR、WCHAR、文字列の文字 1)

文字列の文字CHAR、WCHAR、文字列の文字

ARRAY2)

ARRAY

ARRAY

STRUCT

STRUCT

STRUCT

PLC データタ

PLC データタイプ(UDT)PLC データタイプ(UDT)IEC_TIMER

IEC_TIMER

文字列の文
字

1)

イプ(UDT)
IEC_TIMER

IEC_SCOUNTE IEC_SCOUNTER

IEC_SCOUNTERR
IEC_USCOUN

IEC_USCOUNTER

IEC_USCOUNTERTER
IEC_COUNTER IEC_COUNTER

IEC_COUNTER

IEC_UCOUNT

IEC_UCOUNTER

IEC_UCOUNTER

IEC_DCOUNTER

IEC_DCOUNTER

IEC_UDCOUN IEC_UDCOUNTER

IEC_UDCOUNTERER
IEC_DCOUNT
ER
TER

234

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、S7-1500 CPU シリーズで使用可能な転送方法をリストします。
転送元(IN)
BYTE

宛先(OUT1)
IEC チェックあり

IEC チェックなし

BYTE, WORD, DWORD,

BYTE, WORD, DWORD, LWORD, SINT, USINT,

LWORD

INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE ,TOD, LTOD, CHAR

WORD

WORD, DWORD, LWORD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, S5TIME,
TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR

DWORD

DWORD, LWORD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, REAL,
TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR

LWORD

LWORD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LREAL,
TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR

SINT

SINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

USINT

USINT, UINT, UDINT,BYTE, WORD, DWORD, LWORD, SINT, USINT,ULINT

INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

INT

INT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

UINT

UINT, UDINT, ULINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD. LTOD

DINT

DINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

UDINT

UDINT, ULINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

LINT

LINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

235

基本命令
3.1 LAD
転送元(IN)
ULINT

宛先(OUT1)
IEC チェックあり

IEC チェックなし

ULINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

REAL

REAL

DWORD, REAL

LREAL

LREAL

LWORD, LREAL

S5TIME

S5TIME

WORD, S5TIME

TIME

TIME

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME

LTIME

LTIME

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LTIME

DATE

DATE

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, DATE

DT

DT

DT

LDT

LDT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LDT

TOD

TOD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TOD

LTOD

LTOD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LTOD

DTL

DTL

DTL

CHAR

CHAR

BYTE, WORD, DWORD, LWORD、CHAR、文字列の文字 1)

WCHAR

WCHAR

BYTE、WORD、DWORD、LWORD、CHAR、
WCHAR、文字列の文字 1)

文字列の文字CHAR、WCHAR、文字列の文字

ARRAY2)

ARRAY

ARRAY

STRUCT

STRUCT

STRUCT

COUNTER

COUNTER, WORD, INT

WORD, DWORD, INT, UINT, DINT, UDINTTIMER

TIMER, WORD, INT

WORD, DWORD, INT, UINT, DINT, UDINT

PLC データタ

PLC データタイプ(UDT)PLC データタイプ(UDT)

文字列の文
字

1)

イプ(UDT)

236

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
転送元(IN)

宛先(OUT1)
IEC チェックあり

IEC チェックなし

IEC_TIMER

IEC_TIMER

IEC_TIMER

IEC_LTIMER

IEC_LTIMER

IEC_LTIMER

IEC_SCOUNTE IEC_SCOUNTER

IEC_SCOUNTERR
IEC_USCOUN

IEC_USCOUNTER

IEC_USCOUNTERTER
IEC_COUNTER IEC_COUNTER

IEC_COUNTER

IEC_UCOUNT

IEC_UCOUNTER

IEC_UCOUNTER

IEC_DCOUNTER

IEC_DCOUNTER

IEC_UDCOUN IEC_UDCOUNTER

IEC_UDCOUNTERER
IEC_DCOUNTER
TER
IEC_LCOUNTE IEC_LCOUNTER

IEC_LCOUNTERR
IEC_ULCOUN

IEC_ULCOUNTER

IEC_ULCOUNTER

TER
1)「値のムーブ」命令を使用して、文字列の個々の文字を CHAR または WCHAR データタ

イプのオペランドに転送することもできます。転送する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を転送します。データタイプ CHAR または WCHAR のオペランドを文字列の個々の文字に転送することも可能です。文字列の特定の文字を別の文字列の文字と置換することもできます。
2)

配列(ARRAY)全体の転送は、入力 IN および出力 OUT1 のオペランドの配列コンポーネン

トが同じデータタイプの場合のみ可能です。
IN 入力のデータタイプのビット長が OUT1 出力のデータタイプのビット長を超えると、転送元の値の上位ビットが失われます。入力 IN のデータタイプのビット長が出力 OUT1 の
データタイプのビット長を下回る場合、転送先の値の上位ビットはゼロで上書きされます。
初期状態では、命令ボックスには 1 出力が含まれています(OUT1)。出力数は拡張できます。
追加された出力は、ボックスで昇順に番号付けされます。この命令の実行中、入力 IN のオペランドの内容が、使用できるすべての出力に転送されます。構造体データタイプ(DTL、STRUCT、ARRAY)または文字列の文字が転送される場合、命令ボックスは拡張できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

237

基本命令
3.1 LAD「ブロックの移動」(MOVE_BLK)および「割り込み不可能なブロックの移動」(UMOVE_BLK)命令を使用して、ARRAY データタイプのオペランドを移動することもできます。データタ
イプ STRING または WSTRING のオペランドは、「文字列のムーブ」(S_MOVE)を使用してコピーすることができます。

パラメータ
次の表に、「値の移動」命令のパラメータを示します。
パラメータ
EN
ENO

238

宣言
Input
Output

データタイプS7-1200

S7-1500

BOOL

BOOL

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L

力

I、Q、M、

イネーブル出D、L力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ

宣言

データタイプS7-1200

IN

Input

メモリ領域

説明

S7-1500

ビット列、整 ビット列、整 I、Q、M、

ソース値

数、浮動小数 数、浮動小数 D、L、また
点数、タイ

点数、タイ

は定数

マ、日付と時 マ、日付と時刻、CHAR、刻、CHAR、

WCHAR、

WCHAR、

STRUCT、

STRUCT、

ARRAY、IEC

ARRAY、

データタイ

TIMER、

プ、PLC デー COUNTER、タタイプ

IEC データタ(UDT)

イプ、PLC デ
ータタイプ
(UDT)

OUT1

Output

ビット列、整 ビット列、整 I、Q、M、

ソースで値が数、浮動小数 数、浮動小数 D、L転送されるオ

点数、タイ

ペランド

点数、タイ

マ、日付と時 マ、日付と時刻、CHAR、刻、CHAR、

WCHAR、

WCHAR、

STRUCT、

STRUCT、

ARRAY、IEC

ARRAY、

データタイ

TIMER、

プ、PLC デー COUNTER、タタイプ

IEC データタ(UDT)

イプ、PLC デ
ータタイプ
(UDT)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

239

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

029(
(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0011 1111 1010 1111

OUT1

TagOut_Value

0011 1111 1010 1111

「TagIn」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。この命令
は、オペランド「TagIn_Value」の内容をオペランド「TagOut_Value」にコピーし、出力「TagOut」のシグナル状態を「1」にセットします。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。
注記
MOVE 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照してく
ださい。:
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

下記も参照
MOVE_BLK:ブロックの移動 (ページ 253)
UMOVE_BLK:割り込みなしブロック転送 (ページ 262)
S_MOVE: 文字列移動 (ページ 1876)

240

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6.2

Deserialize: 逆シリアル化

説明「逆シリアル化」命令を使用して、PLC データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>のシーケンシャル表示を逆変換し、その内容全体を表示することができます。
PLC データタイプ(UDT)、STRUCT、または<データタイプ>配列のシーケンシャル表示が存在するメモリ領域のデータタイプは BYTE 配列または CHAR 配列であり、バージョン 1.0 の
標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたメモリ領域も許可されます。標準メモリ領域の容量は 64 KB です。変換の前に、十分なメモリ領域が存在することを確認してください。メモリ領域への入力が命令「シリアル化」を使用して行われ、FILL バイトが挿入された可能性がある場合、それらの変換は有効なものとは見なされません。
ARRAY の下限値を「0」で定義することを推奨します。これによって、ARRAY 内のインデックスが POS パラメータの値に対応するためです(たとえば、ARRAY[0] = POS 0)。下記の説明と例は、これに基づいて作成されました。
この命令では、変換されたデータの複数のシーケンシャル表示をそれらの元の状態に、順を追って変換し直すことができます。
PLC データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>の単一のシーケンシャル表示のみを変換して元に戻す場合は、直接に命令「TRCV:通信接続経由のデータ受信」
を指示することもできます。

メモリ領域のサイズ
これらの配置ルールに従うと、最適化されたメモリ領域内のシンプルな構造体は Filling バ
イトを含みません。これによって、最適化されたメモリ領域内の構造体は、標準メモリ領域内の構造体よりサイズが小さくなります。構造体配列、およびネストされた構造体には、FILLER バイトが含まれます。複合構造体がより多くの容量を必要とするメモリ領域に関する一般的なルールは存在しません。
S7-1500 シリーズの CPU への適用事項:
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、BOOL の
長さは 1 バイトです。このため、大部分がデータタイプ BOOL から構成される構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが大きい可能性

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

241

基本命令
3.1 LADがあります。BOOL データタイプの割合が低い複合構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが小さくなっています。
注記
CPU S7-1200 での複数の構造体のシリアル化
CPU S7-1200 のバッファ内で複数の構造体をシリアル化し、それら(制御システムや CPU
S7-1500 など)と通信する場合は、戻り値(POS パラメータのインデックス)が偶数であるかをチェックする必要があります。偶数でない場合は、1 番目の構造体が FILLER バイトで埋められていないため、2 番目の構造体をシリアル化する前に戻り値を 1 インクリメントする必要があります。
例:
1 つの DWORD および 1 つの BYTE で構成される構造体
次にシリアル化されているバッファ内の構造体の開始アドレスは 5 です。開始アドレスが偶数になるように、1 を追加します。

最適化されたメモリ領域
S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および S7-1500 シ
リーズの CPU でファームウェアバージョン 2.0 以降の場合、大きい構造体を逆シリアル化するために、アクセスが最適化されたシーケンシャル表示用のメモリ領域を宣言することができます。標準メモリ領域に関しては、シーケンシャル表示の内容は変わらないままです。ARRAY のバイトに対してはシンボルアクセスのみが可能です。

パラメータ
次の表に、「逆シリアル化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、または定数ENO

242

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

SRC_ARRAY Input

ARRAY[*] of

I、Q、D、FB の 逆シリアル化されるデー

BYTE

ブロックインタ タストリームが保存され

1)

または
ARRAY of CHAR

ーフェース(セク る BYTE 配列またはション Input、CHAR 配列です。

Output、S7-1500:

Static、およびパフォーマンスを最適化

Temp を使用可
能)。
I/O データなし
DEST_VARI

InOut

ABLE

説明

するには、パラメータに
VARIANT ポインタを付加しないでください。

すべてのデータ I、Q、D、FB の 逆シリアル化されるデータイプ

ブロックインタ タが書き込まれるタグ。
ーフェース

S7-1500:

I/O データなし

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

POS

InOut

DINT

I、Q、M、D、L POS パラメータのオペラ
ンドには、変換済みカス
タマデータで占有されるバイト数に基づく最初のバイトのインデックスが格納されます。POS パラ
メータは、ゼロベースで計算されます。

RET_VAL1)

Output

INT

I、Q、M、D、L エラー情報

S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および S7-1500

シリーズの CPU でファームウェアバージョン 2.0 以降の場合に可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

243

基本命令
3.1 LADRET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

80B0

SRC_ARRAY パラメータと DEST_VARIABLE パラメータのためのメモリ領域がオーバーラップしています。

8136

SRC_ARRAY パラメータのタグは、標準アクセスのブロック内には存在しませ
ん。

8150

SRC_ARRAY パラメータの VARIANT データタイプは 0 ポインタを含みます。

8151

SRC_ARRAY パラメータに有効なリファレンスがありません

8153

SRC_ARRAY パラメータのメモリの空き領域が不足しています。

8154

SRC_ARRAY パラメータのデータタイプが無効です

8250

パラメータ DEST_VARIABLE で NULL ポインタが渡されました

8251

DEST_VARIABLE パラメータに有効なリファレンスがありません

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)8136

SRC_ARRAY パラメータのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:「逆シリアル化」命令 (バージョン 2.1)のパフォーマンスを向上するため、SRC_ARRAY お
よび DEST_VARIABLE パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。

244

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

FB または FC のブロックイ
ンターフェースの[入力]セクションで。

BufferPos

DINTFB または FC のブロックイ

Error

INT

ンターフェースの[一時]セク

Label

STRING[4]ションで。

次の表に、PLC データタイプの宣言を示します。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]Client次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

TargetClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

BufferTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Bill

INT の配列[0..10]

Field

バイトの配列[0..294]

245

基本命令
3.1 LAD
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:

029(

'HVHULDOL]H

(1

(12

,1

287

(12

(1
%XIIHU3RV

ಯ%XIIHUಯ)LHOG
%XIIHU3RV

5(7B9$/

65&B$55$<
326'(67B9$5,$%/(

(UURUಯ7DUJHWಯ&OLHQW「値のムーブ」命令は、値「0」を#BufferPos オペランドへ移動します。「逆シリアル化」命
令は、「Buffer」タグのカスタマデータのシーケンシャル表示を逆シリアル化し、「Target」
タグに書き込みます。#BufferPos オペランドには、変換済みカスタマデータで占有されるバイト数に基づく最初のバイトのインデックスが格納されます。
ネットワーク 2:'HVHULDOL]H(1
ಯ%XIIHUಯ)LHOG
%XIIHU3RV

65&B$55$<326'HVHULDOL]H

DUWL
(12
5(7B9$/

(UURU'(67B9$5,$%/(

/DEHO

ಯ%XIIHUಯ)LHOG

/DEHO

%XIIHU3RV

5(7B9$/

65&B$55$<'(67B9$5,$%/(

326'HVHULDOL]H

%LOO

(12

(1

675,1*
/DEHO(12(1675,1*

ಯ%XIIHUಯ)LHOG
%XIIHU3RV

5(7B9$/

65&B$55$<
326'(67B9$5,$%/(「逆シリアル化」命令は、「Buffer」タグの、カスタマデータの後にシーケンシャル表示で保存されたセパレータシートのシーケンシャル表示を逆シリアル化し、これらの文字を#Label オペランドに書き込みます。これらの文字は、比較命令「arti」および「Bill」を使用して比較されます。「arti」用の比較が TRUE の場合、これらの文字は、逆シリアル化され、「Target」タグに書き込まれた製品データです。「Bill」用の比較が TRUE の場合、これ
らの文字は、逆シリアル化され、「Target」タグに書き込まれた課金データです。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

246

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6.3

Serialize:シリアル化:

説明「シリアル化」命令を使用して、データタイプの構造体の部分を失うことなく、複数の PLC
データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>を 1 つのシーケンシャル
表示に変換することができます。
この命令を使用して、ユーザプログラムの複数の構造体データ項目を一時的にバッファ(グローバルデータブロックを推奨)に保存し、別の CPU に送信します。変換済みデータを格納するメモリ領域のデータタイプは BYTE 配列または CHAR 配列、かつバージョン 1.0 の標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたデータも許可されます。ソースデータ領域の FILLER データは、ターゲット配列内では未定義です。これらは、データ領域の FILLER バイトまたは FILLER ビット(たとえば、ARRAY、STRUCT、または PLC データタイプ(UDT))、または現在使用中でない文字列の文字とすることができます。
標準メモリ領域の容量は 64 KB です。DEST_ARRAY パラメータのオペランドが標準メモリ
領域内に存在する場合、標準メモリ領域用のルールに従って、64 KB より大きい構造体はシリアル化できません。
ARRAY の下限値を「0」で定義することを推奨します。これによって、ARRAY 内のインデックスが POS パラメータの値に対応するためです(たとえば、ARRAY[0] = POS 0)。下記の説明と例は、これに基づいて作成されました。
POS パラメータのオペランドには、そのデータによって使用されるバイト数に関する情報が収納されています。
単一の PLC データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>を送信する場
合、直接に命令「TSEND:通信接続経由のデータ送信」を呼び出すことができます。
注記
構造体の比較
構造体を比較するには、最初に構造体をシリアル化する必要があります。代わりに、「CMP」命令を使用します。
追加情報は、セクション「比較演算子」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

247

基本命令
3.1 LAD

メモリ領域のサイズ
これらの配置ルールに従うと、最適化されたメモリ領域内のシンプルな構造体は Filling バ
イトを含みません。これによって、最適化されたメモリ領域内の構造体は、標準メモリ領域内の構造体よりサイズが小さくなります。構造体配列、およびネストされた構造体には、FILLER バイトが含まれます。複合構造体がより多くの容量を必要とするメモリ領域に関する一般的なルールは存在しません。
S7-1500 シリーズの CPU への適用事項:
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、データ
タイプ BOOL の長さは以降のデータタイプによって異なります。たとえば BYTE が続く場合
は、データタイプ BOOL の長さは 1 バイトとなります。たとえば WORD が続く場合は、データタイプ BOOL の長さは 2 バイトとなります。このため、大部分がデータタイプ BOOLから構成される構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが大きい可能性があります。BOOL データタイプの割合が低い複合構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが小さくなっています。
このため、シリアル化を行うソースデータ領域は、大きなデータタイプで開始し、Boolean
エレメントで終了することを推奨します。これにより、FILLER ビットを大幅に削減できます。
注記
CPU S7-1200 での複数の構造体のシリアル化
CPU S7-1200 のバッファ内で複数の構造体をシリアル化し、それら(制御システムや CPU
S7-1500 など)と通信する場合は、戻り値(POS パラメータのインデックス)が偶数であるかをチェックする必要があります。偶数でない場合は、1 番目の構造体が FILLER バイトで埋められていないため、2 番目の構造体をシリアル化する前に戻り値を 1 インクリメントする必要があります。
例:
1 つの DWORD および 1 つの BYTE で構成される構造体
次にシリアル化されているバッファ内の構造体の開始アドレスは 5 です。開始アドレスが偶数になるように、1 を追加します。

最適化されたメモリ領域
S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および S7-1500 シ
リーズの CPU でファームウェアバージョン 2.0 以降の場合、大きい構造体をシリアル化するために、アクセスが最適化されたメモリ領域を宣言することができます。標準メモリ領域に関しては、シーケンシャル表示は変わらないままです。

248

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「シリアル化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、または定数
ENO

OutputBOOL

SRC_VARIA

Input

すべてのデータ I、Q、D、FB の シリアル化されるタグ。

BLE

タイプ

I、Q、M、D、L イネーブル出力
ブロックインタ S7-1500:
ーフェース
パフォーマンスを最適化
I/O データなし するには、パラメータに
VARIANT ポインタを付加しないでください。

DEST_ARRA InOut

BYTE 配列またI、Q、D、FB の 生成されたデータストリ

Y

は CHAR 配列

ブロックインタ ームが格納される配列。
ーフェース(セク S7-1500:
ション Input、
Output、
Static、および
Temp を使用可
能)。

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

I/O データなし
POS

InOut

DINT

I、Q、M、D、L POS パラメータのオペラ
ンドには、変換済みカス
タマデータが占有する合計バイト数に基づく最初のバイトのインデックスが格納されます。POS パ
ラメータは、ゼロベースで計算されます。

RET_VAL

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

INT

I、Q、M、D、L エラー情報

249

基本命令
3.1 LADRET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

80B0

SRC_VARIABLE パラメータと DEST_ARRAY パラメータのためのメモリ領域がオーバーラップしています。

8150

SRC_VARIABLE パラメータの VARIANT データタイプは 0 ポインタを含みます。

8151

SRC_VARIABLE パラメータに有効なリファレンスがありません

8236

SRC_ARRAY パラメータのタグは、標準アクセスのブロック内には存在しませ
ん。

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_ARRAY パラメータに有効なリファレンスがありません

8253

パラメータ DEST_ARRAY のタグは、パラメータ SRC_VARIABLE のタグの内容に対して十分なメモリスペースを提供しません。パラメータ POS のタグの入力値により、使用可能なメモリスペースが減少します。パラメータ POS の入力値により、パラメータ DEST_ARRAY のタグ内での開始位置が決定します。

8254

DEST_ARRAY パラメータの無効なデータタイプ

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)
8236

DEST_ARRAY パラメータのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:

250

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「シリアル化」命令(バージョン 2.1)のパフォーマンスを向上するため、SRC_VARIABLE お
よび DEST_ARRAY パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:

029(



6HULDOL]H

(1

(12

,1

287

(12

(1
%XIIHU3RVಯ6RXUFHಯ&OLHQW
%XIIHU3RV

5(7B9$/

65&B9$5,$%/('(67B$55$<

326

(UURU
ಯ%XIIHUಯ)LHOG「値のムーブ」命令は、値「0」を#BufferPos オペランドへ移動します。「シリアル化」命令
は、「Source」タグのカスタマデータをシリアル化し、シーケンシャル表示を「Buffer」タ
グに書き込みます。"Buffer".Field オペランドの次の書き込まれていないバイトのインデッ
クスが、#BufferPos オペランドに保存されます。
ネットワーク 2:

6B029(ಭDUWLಫ

(1

(12

,1

287

6HULDOL]H(1
/DEHO

/DEHO
%XIIHU3RV

65&B9$5,$%/(
326(12
5(7B9$/'(67B$55$<

(UURU
ಯ%XIIHUಯ)LHOG

後でのシーケンシャル表示の逆シリアル化を容易にするために、その時点では、一種のセパレータシートが挿入されます。「文字列のムーブ」命令は、「arti」文字を#Label オペラ
ンドに移動します。「シリアル化」命令は、これらの文字を「Buffer」タグのカスタマデー
タの後に書き込みます。これに応じて、#BufferPos オペランドの値がインクリメントされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

251

基本命令
3.1 LAD
ネットワーク 3:

6HULDOL]H(12(1
ಯ6RXUFHಯ$UWLFOH>'HOLYHU3RV@
%XIIHU3RV

5(7B9$/

65&B9$5,$%/('(67B$55$<

326

(UURU
ಯ%XIIHUಯ)LHOG「シリアル化」命令は、「Source」タグの特定の製品データをシリアル化し(ランタイム時に計算されます)、シーケンシャル表示で「Buffer」タグの「arti」文字の後に書き込みます。
次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

ブロックインターフェースの「入力」セクションで宣言

BufferPos

DINT

ブロックインターフェースの「一時」セクションで宣言

Error

INT

ブロックインターフェースの「一時」セクションで宣言

Label

STRING[4]ブロックインターフェースの「一時」セクションで宣言

次の表に、PLC データタイプの宣言を示します。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]Client252

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

SourceClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

BufferField

バイトの配列[0..294]

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.6.4

MOVE_BLK:ブロックの移動

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。ターゲット範囲に移動するエレメントの数は、入力 COUNT
で指定します。移動するエレメントの幅は、入力 IN のエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 IN または出力 OUT で使用可能のデータよりも多くのデータが移動された。
ARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、定義された n 個のエレメント(n = パラメータ COUNT の値によって決まります)の内容をソース範囲からターゲット範囲へコピーします(指定されたインデックスから始めて)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

253

基本命令
3.1 LAD

パラメータ
次の表に、
「ブロックの移動」命令のパラメータを示します。
パラメータ
EN
ENO
IN

1)

COUNT

宣言
Input
Output
Input

Input

データタイプS7-1200

S7-1500

BOOL

BOOL

BOOL
2 進数、整BOOL
2 進数、整メモリ領域

説明

I、Q、M、

イネーブル入D、L

力

I、Q、M、

イネーブル出

D、L

力

D、L

コピーされる数、浮動小数 数、浮動小数

ソース領域の

点数、タイ

点数、タイ

最初のエレメマ、DATE、マ、DATE、

ント

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD

TOD、LTODUSINT, UINT,

USINT, UINT,

UDINT

UDINT, ULINT D、L、P、ま らターゲット

I、Q、M、
たは定数

ソース範囲か範囲に移動するエレメントの数。

OUT 1)

1)

Output2 進数、整2 進数、整D、L

ソース範囲の数、浮動小数 数、浮動小数

内容がコピー

点数、タイ

点数、タイ

されているタマ、DATE、マ、DATE、ーゲット範囲

CHAR、

CHAR、

の最初のエレWCHAR、

WCHAR、

メント

TOD

TOD、LTOD指定されたデータタイプは、ARRAY 構造体のエレメントとしてしか使用できません。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

254

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯDBDUUD\>@ಯ7DJB&RXQWಯ

029(B%/.
(1

(12

,1

287

ಯ7DJ2XWಯEBDUUD\>@&2817

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは Array [0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは Array [0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エ
レメントを選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態
が「1」になり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

255

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。
注記
MOVE_BLK 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照してください。:
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.1.6.5

MOVE_BLK_VARIANT:ブロックの移動

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。配列全体または配列のエレメントを同じデータタイプの別の配列にコピーすることができます。ソース配列と宛先配列のサイズ(エレメントの数)は異なる場合があります。配列内の複数エレメントまたは単一エレメントをコピーすることができます。
コピーするエレメント数は、選択したソース範囲またはターゲット範囲を超えてはいけま
せん。
ブロックの作成中にこの命令を使用する場合、VARIANT ごとにソースおよびターゲットが転送されるため、ARRAY はまだ既知である必要はありません。
SRC_INDEX および DEST_INDEX パラメータでのカウントは、配列の後の宣言に関係なく、常に下限値「0」から開始します。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• コピーされるデータが使用可能なデータよりも多いこと。

256

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「ブロックの移動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、または定数
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

SRC

Input 2)

VARIANT (配列L (ブロックイン コピー元のソースブロッ

または個々の配 ターフェースの ク
列エレメントを 「Input」、
ポイントする)、「InOut」、およ<Data_type>のび「Temp」セ

配列

クション内で宣
言可能。)

COUNT

Input

UDINT

I、Q、M、D、コピーされるエレメント

L、または定数数
ARRAY がパラメータ SRCまたはパラメータ DESTで指定されていない場合
は、値「1」をパラメー
タ COUNT に割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

257

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

SRC_INDEX Input

DINT

I、Q、M、D、コピーする最初のエレメ

L、または定数

ントを定義します:• SRC_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ SRC で指定されると、パラメ
ータ SRC_INDEX の整数はコピー元のソース
領域内の最初のエレメ
ントを指定します。宣
言された配列の制限値には関係ありません。
• ARRAY がパラメータ
SRC で指定されない
か、または配列の 1 つの単一エレメントのみが指定された場合、パラメータ SRC_INDEXに値「0」を割り当てます。

DEST_INDE
X

Input

DINT

I、Q、M、D、

宛先メモリ領域の開始をL、または定数

定義します:• DEST_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ DEST で指定されると、パラメ
ータ DEST_INDEX の整数が、コピー先のターゲット範囲内の最初のエレメントを指定します。宣言された配列の制限値には関係ありません。
• ARRAY が DEST パラメータで指定されていな
い場合は、
DEST_INDEX パラメー
タに値「0」を割り当
てます。

258

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

DEST

VARIANT

L (ブロックイン ソースブロックの内容がOutput 1)

説明

ターフェースの コピーされる宛先領域。
「Input」、「InOut」、および「Temp」セクション内で宣言可能。)
RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

1) データがタグに流れるため、DEST パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
2) SRC パラメータでは、データタイプ BOOL および ARRAY of BOOL は許可されません。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

データタイプが一致していません。ARRAY of Struct の代わりに、PLC データ
タイプ(UDT)の ARRAY を使用してください。

8151

SRC パラメータにアクセスできません。

8152

SRC パラメータのオペランドが入力されていません。

8153

SRC パラメータのコード生成エラー

8154

SRC パラメータのオペランドのデータタイプが BOOL です。

8281

COUNT パラメータの値が無効です

8382

SRC_INDEX パラメータの値が、ゼロ未満です。

8383

SRC_INDEX の値が、ARRAY の上限値外です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

259

基本命令
3.1 LAD
エラーコ
ード*

説明

(W#16#..
.)
8482

DEST_INDEX パラメータの値が、ARRAY 制限値外です。

8483

DEST パラメータがポイントする ARRAY が、コピーされるデータに対して小さすぎます。

8534

DEST パラメータが書き込み保護されています

8551

DEST パラメータにアクセスできません。

8552

DEST パラメータのオペランドが入力されていません。

8553

DEST パラメータのコード生成エラー

8554

DEST パラメータのオペランドのデータタイプが BOOL です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ6UF)LHOG
ಯ7DJB&RXQWಯ

260

029(B%/.B9$5,$17(1(12

ಯ7DJ2XWಯ

65&
&2817

ಯ7DJB6UFB,QGH[ಯ65&B,1'(;

ಯ7DJB'HVWB,QGH[ಯ'(67B,1'(;5(7B9$/'(67

ಯ7DJB5HVXOWಯ'HVW)LHOG

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

SRC

Input

ローカルオペランド#SrcField#SrcField は、ブロックのプログラミング
時にはまだ不明であった PLC データタイ
プを使用します。
(ARRAY[0..10] of「MOVE_UDT」)
COUNT

Input

Tag_Count2

SRC_INDEX

Input

Tag_Src_Index

3

DEST_INDEX

Input

Tag_Dest_Index

3

DEST

InOut

#DestField

ローカルオペランド#DestField は、ブロックのプログラミン
グ時にはまだ不明であった PLC データタ
イプを使用します。
(ARRAY[10..20] of「MOVE_UDT」)「TagIn」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。ARRAY[0..10] of MOVE_UDT の 4 番目のエレメントから始めて、2 つのエレメントが、ソース範囲
からターゲット範囲へ移動されます。コピーは、4 番目のエレメントから始めて、ARRAY[10..20] of MOVE_UDT に貼り付けられます。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

261

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。
注記
MOVE_BLK_VARIANT 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照してください。
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

下記も参照
VariantGet:VARIANT タグ値の読み出し (ページ 313)

3.1.6.6

UMOVE_BLK:割り込みなしブロック転送

説明「割り込み不可能なブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。この命令に割り込みをかけることはできません。ターゲット範囲に移動するエレメントの数は、COUNT パラメータで指定します。移動するエレメントの幅は、入力 IN のエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込みなしブロック転送」命令の実行中には CPU の割
り込み応答時間が長くなります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 IN または出力 OUT で使用可能のデータよりも多くのデータが移動された。

262

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、定義された n 個のエレメント(n = パラメータ COUNT の値によって決まります)の内容をソース範囲からターゲット範囲へコピーします(指定されたインデックスから始
めて)。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動します。この場合、CPU 固有の制限に注意してください。

パラメータ
次の表に、「割り込みなしブロック転送」命令のパラメータを示します。
パラメータ
EN
ENO
IN 1)

COUNT

宣言
Input
Output
Input

Input

データタイプS7-1200

S7-1500

BOOL

BOOL

BOOL
2 進数、整BOOL
2 進数、整メモリ領域

説明

I、Q、M、

イネーブル入D、L

力

I、Q、M、

イネーブル出

D、L

力

D、L

コピーされる数、浮動小数 数、浮動小数

ソース領域の

点数、タイ

点数、タイ

最初のエレメマ、DATE、マ、DATE、

ント

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD

TOD、LTODUSINT, UINT,

USINT, UINT,

UDINT

UDINT, ULINT D、L、P、ま らターゲット

I、Q、M、
たは定数

ソース範囲か範囲に移動するエレメントの数。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

263

基本命令
3.1 LAD
パラメータ
OUT 1)

1)

宣言

データタイプ

Output

S7-1200

S7-1500

2 進数、整2 進数、整

メモリ領域

説明

D、L

ソース範囲の数、浮動小数 数、浮動小数

内容がコピー

点数、タイ

点数、タイ

されているタマ、DATE、マ、DATE、ーゲット範囲

CHAR、

CHAR、

の最初のエレWCHAR、

WCHAR、

メント

TOD

TOD、LTOD指定されたデータタイプは、ARRAY 構造体のエレメントとしてしか使用できません。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯDBDUUD\>@ಯ7DJB&RXQWಯ

8029(B%/.
(1

(12

,1

287

ಯ7DJ2XWಯEBDUUD\>@&2817

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは Array [0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは Array [0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エ

264

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
レメントを選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込
みをかけることはできません。この命令がエラーなしで実行された場合、ENO 出力は「1」のシグナル状態になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。
注記
UMOVE_BLK 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照
してください。
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.1.6.7

FILL_BLK:フィル命令

説明「フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。ターゲット範囲は、OUT 出力で指定されたアドレスから始めて埋められます。コ
ピー操作の繰り返し回数は、COUNT パラメータで指定します。この命令が実行されると、
入力 IN の値が、COUNT パラメータの値によって指定された回数だけ、ターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 変更される最大エレメント数が ARRAY または構造体内のエレメント数である場合。OUT
出力に存在するエレメントより多くのデータをコピーした場合、意図しない結果を生じます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

265

基本命令
3.1 LADARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、ソース範囲の選択したエレメントの内容を読み取り、この内容を宛先に n 回(n = パラメータ COUNT の値によって決まります)コピーします(指定したインデックスから始めて)。

構造体のフィル処理
ARRAY のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数のエレメントを同一の値でフィルすることもできます。そのエレメントをユーザーがフィルする構造体は、同じ基本データタイプの個々のエレメントのみを含む必要があります。ただし、構造体自体
を別の構造体に組み込むことができます。

パラメータ
次の表に、「フィル」命令のパラメータを示します。
パラメータ

EN
ENO
IN

宣言

Input
OutputInput

データタイプS7-1200

S7-1500

BOOL

BOOL

BOOL
2 進数、整BOOL
2 進数、整メモリ領域

説明

I、Q、M、

イネーブル入D、L

力

I、Q、M、

イネーブル出D、L

力

I、Q、M、

ターゲット範

数、浮動小数 数、浮動小数 D、L、P、ま 囲をフィルす

266

点数、タイ

点数、タイ

たは定数

るために使用マ、DATE、マ、DATE、されるエレメ

TOD、

CHAR、

ント

CHAR、

WCHAR、

WCHAR

TOD、LTOD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ

COUNT

宣言

データタイプ

Input

メモリ領域

説明

I、Q、M、

ムーブ操作のS7-1200

S7-1500

USINT, UINT,

USINT, UINT,

UDINT

UDINT, ULINT D、L、P、ま 繰り返し回数
たは定数

OUT

Output2 進数、整2 進数、整D、L

フィル処理が数、浮動小数 数、浮動小数開始されるタ

点数、タイ

点数、タイ

ーゲット範囲マ、DATE、マ、DATE、

のアドレス

TOD、

CHAR、

CHAR、

WCHAR、

WCHAR

TOD、LTOD

有効なデータタイプの追加情報については、「関連項目」を参照してください。

ARRAY を使用した例
次の例は、ARRAY をフィルするときにこの命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ)LOO9DOXH
ಯ7DJB&RXQWಯ

),//B%/.
(1

(12

,1

287

ಯ7DJ2XWಯ7DUJHW$UHD>@&2817

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。それは、データ
タイプ INT の 5 つのエレメントから構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、オペランド#FillValue の値を#TargetArea 出力タグに 3 回コピーしま
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

267

基本命令
3.1 LADす(最初のエレメントから始めて)。この命令がエラーなしで実行されると、「ENO」イネーブル出力の TagOut オペランドはシグナル状態「1」にセットされます。

構造体を使用した例
次の例は、構造体をフィルするときにこの命令がどのように動作するかを示します。
以下のエレメントを使用してグローバルデータブロックを作成:
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

STRUCT

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

以下のプログラムコードを生成して、MyStruct1 タグをアドレス指定:

268

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD),//B%/.
(1

ಯ7DJ2XWಯ

(12



,1



&2817

287

ಯ'DWDBEORFNBಯ
0\6WUXFW
0HPEHUB

以下のプログラムコードを生成して、MyStruct2 タグをアドレス指定:),//B%/.
(1


,1



&2817

ಯ7DJ2XWಯ

(12287

ಯ'DWDBEORFNBಯ0\6WUXFW
6XE$UUD\>@1HVWHG6WUXFW
0HPEHUB

2 つのそれぞれの例で、IN パラメータの値 10 は、OUT パラメータのオペランドに 2 回コ
ピーされます(エレメント Member_2 から始めて)。すなわち、値 10 はエレメント
Member_2 および Member_3 へコピーされます。他の 2 つのエレメント Member_1 および Member_4 は変更されません。この命令がエラーなしで実行されると、TagOut オペラ
ンドがシグナル状態「1」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.6.8

UFILL_BLK:割り込み不可フィル命令

説明「割り込み不可フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。この命令に割り込みをかけることはできません。ターゲット範囲は、OUT 出力で指定されたアドレスから始めて埋められます。コピー操作の繰り返し回数は、
COUNT パラメータで指定します。この命令が実行されると、入力 IN の値が、COUNT パ
ラメータの値によって指定された回数だけ、ターゲット範囲に移動されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

269

基本命令
3.1 LAD
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込み不可能なフィル」命令の実行中には、CPU のアラーム応答時間が長くなります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 変更される最大エレメント数が ARRAY または構造体内のエレメント数である場合。OUT
出力に存在するエレメントより多くのデータをコピーした場合、意図しない結果を生じます。
ARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、ソース範囲の選択したエレメントの内容を読み取り、この内容を宛先に n 回(n = パラメータ COUNT の値によって決まります)コピーします(指定したインデックスから始めて)。
「割り込み不可フィル」命令を使用して、最大 16 KB を移動します。この場合、CPU 固有の制限に注意してください。

構造体のフィル処理
ARRAY のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数のエレメントを同一の値でフィルすることもできます。そのエレメントをユーザーがフィルする構造体は、同じ基本データタイプの個々のエレメントのみを含む必要があります。ただし、構造体自体
を別の構造体に組み込むことができます。

270

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「割り込み不可能なフィル」命令のパラメータを示します。
パラメータ
EN

宣言

データタイプ

Input

ENO

OutputIN

Input

S7-1200

S7-1500

BOOL

BOOL

BOOL

BOOL

2 進数、整2 進数、整メモリ領域

説明

I、Q、M、

イネーブル入D、L

力

I、Q、M、

イネーブル出D、L

力

I、Q、M、

ターゲット範

数、浮動小数 数、浮動小数 D、L、P、ま 囲をフィルす

COUNT

Input

点数、タイ

点数、タイ

たは定数

マ、DATE、マ、DATE、されるエレメ

CHAR、

CHAR、

ント。

WCHAR、

WCHAR、

TOD

TOD、LTODUSINT, UINT,

USINT, UINT,

UDINT

UDINT, ULINT D、L、P、ま 繰り返し回数

I、Q、M、るために使用

ムーブ操作のたは定数
OUT

Output2 進数、整2 進数、整D、L

フィル処理が数、浮動小数 数、浮動小数開始されるタ

点数、タイ

点数、タイ

ーゲット範囲マ、DATE、マ、DATE、のアドレス。

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD

TOD、LTOD

有効なデータタイプの追加情報については、「関連項目」を参照してください。

ARRAY を使用した例
次の例は、ARRAY をフィルするときにこの命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ)LOO9DOXH
ಯ7DJB&RXQWಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20208),//B%/.
(1

(12

,1

287

ಯ7DJ2XWಯ7DUJHW$UHD>@

&2817

271

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。それは、データ
タイプ INT の 5 つのエレメントから構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、オペランド#FillValue の値を#TargetArea 出力タグに 3 回コピーします(最初のエレメントから始めて)。他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。この命令がエラーなしで実行されると、「ENO」イネーブル出力の TagOut オペランドはシグナル状態「1」にセットされます。

構造体を使用した例
次の例は、構造体をフィルするときにこの命令がどのように動作するかを示します。
以下のエレメントを使用してグローバルデータブロックを作成:
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

272

STRUCT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

以下のプログラムコードを生成して、MyStruct1 タグをアドレス指定:8),//B%/.
(1


,1



&2817

ಯ7DJ2XWಯ

(12287

ಯ'DWDBEORFNBಯ
0\6WUXFW
0HPEHUB

以下のプログラムコードを生成して、MyStruct2 タグをアドレス指定:8),//B%/.
(1


,1



&2817

ಯ7DJ2XWಯ

(12287

ಯ'DWDBEORFNBಯ0\6WUXFW
6XE$UUD\>@1HVWHG6WUXFW
0HPEHUB

2 つのそれぞれの例で、IN パラメータの値 10 は、OUT パラメータのオペランドに 2 回コ
ピーされます(エレメント Member_2 から始めて)。すなわち、値 10 はエレメント
Member_2 および Member_3 へコピーされます。他の 2 つのエレメント Member_1 および Member_4 は変更されません。この命令がエラーなしで実行されると、TagOut オペラ
ンドがシグナル状態「1」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

273

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.6.9

SCATTER:ビットシーケンスを個々のビットに解析

説明「ビットシーケンスを個々のビットに解析」命令は、BYTE、WORD、DWORD、またはLWORD データタイプのタグを個々のビットに解析し、それらを BOOL 配列、匿名
STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。
注記
BOOL の多次元配列「ビットシーケンスを個々のビットに解析」命令では、多次元 BOOL 配列は使用できません。
注記
ARRAY、STRUCT、または PLC データタイプの長さ
ARRAY、匿名 STRUCT、または PLC データタイプは、ビットシーケンスで指定された数と同じ数のエレメントを持つ必要があります。
これは、たとえば、データタイプ BYTE の場合、この ARRAY、STRUCT、または PLC データ
タイプはちょうど 8 つのエレメントを持つ必要がある(WORD = 16、DWORD = 32、および
LWORD = 64)ことを示します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
この方法で、たとえば、ステータスワードを解析し、インデックスを使用して個々のビットのステータスの読み取り/変更を行うことができます。GATHER を使用して、これらのビットをもう 1 度ビットシーケンスに結合することができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ARRAY、STRUCT、または PLC データタイプが十分な BOOL エレメントを提供していない。

274

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L

力

BYTE, WORD, BYTE,

I、Q、M、解析されるビ

DWORD

D、L

ットシーケン

WORD,
DWORD,ス。

LWORD

値が I/O 領域
内、またはテクノロジーオ
ブジェクトのDB 内にあってはなりません。

OUT

Output

BOOL のBOOL のI、Q、M、個々のビットARRAY[*]、ARRAY[*]

D、Lが格納される

STRUCT、ま、ARRAY、

たは PLC デー STRUCT、

STRUCT、まタタイプ

または PLC

たは PLC デー*:8、16、

データタイ

タタイプ

32、またはプ

64 個のエレ*:8、16、メント

32、または 64 個のエレメント

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

275

基本命令
3.1 LADARRAY を使用した例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceWord

WORD

EnableOut

BOOL

出力

DestinationArrayARRAY[0..15] of BOOL

次の例で、命令がどのように動作するかを示します。

(QDEOH
6RXUFH:RUG

6&$77(5
:25'
(1

(12

,1

287

(QDEOH2XW
6
'HVWLQDWLRQ$UUD\

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceWord

WORD (16 ビット)

OUT

DestinationArray

オペランド「DestinationArray」のデー
タタイプは ARRAY[0..15] of
BOOL です。それは 16 個のエレメントから構成されるため、解析される WORD と同じ大きさです。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。データタイプ WORD のオペランド#SourceWord が個々のビット(16)に解析され、#DestinationArray オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)を参照してください。

276

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

PLC データタイプでの例
PLC データタイプ「myBits」の作成:

ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceWord

WORD

EnableOut

BOOL

出力

DestinationUDT「myBits」

次の例で、命令がどのように動作するかを示します。

(QDEOH
6RXUFH:RUG

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

6&$77(5
:25'
(1

(12

,1

287

(QDEOH2XW
6
'HVWLQDWLRQ8'7

277

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceWord

WORD (16 ビット)

OUT

DestinationUDT「DestinationUDT」オペラン
ドは PLC データタイプ(UDT)です。それは 16 個のエレメントから構成されるため、解析される WORD と同じ大きさです。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。データタイプ WORD の#SourceWord オペランドが個々のビット(16)に解析され、#DestinationArray オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。

278

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6.10

SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析

説明「ビットシーケンス配列のエレメントを個々のビットに解析」命令は、BYTE、WORD、
DWORD、または LWORD 配列の 1 つ以上のエレメントを個々のビットに解析し、それらをBOOL 配列、匿名 STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。COUNT_IN パラメータで、ソース ARRAY のエレメントを解析するエレメント数を指定します。IN パラメータのソース ARRAY が、COUNT_IN パラメータで指定されたエレメ
ント数より多くのエレメントを持つ場合があります。BOOL 配列、匿名 STRUCT、またはPLC データタイプは、解析されたビットシーケンスのビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先メモリ領域がこれよりも大きいことがあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:IN パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。OUT パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。WORD 配列は、48の個別のビットに解析されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

279

基本命令
3.1 LAD
注記
ターゲット配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは、常に、BYTE、WORD、DWORD、またはLWORD の制限値から開始する必要があります。すなわち、インデックスは、ARRAY の下限値から開始して計算する必要があります。次の式は、この計算の原理として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例は、下記に説明します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
この方法で、たとえば、ステータスワードを解析し、インデックスを使用して個々のビットのステータスの読み取り/変更を行うことができます。GATHER を使用して、これらのビットをもう 1 度ビットシーケンスに結合することができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ソース ARRAY のエレメント数が、 COUNT_IN パラメータで指定されたエレメント数未満であること。
• 宛先 ARRAY のインデックスが、BYTE、WORD、DWORD、または LWORD の制限値から開始されないこと。この場合、結果は ARRAY of BOOL に書き込まれません。
• BOOL の ARRAY[*]、STRUCT、または PLC データタイプが、必要なエレメント数を提供しない場合。
– S7-1500-CPU:この場合、可能な限り多くのビット列が解析され、BOOL 配列、匿名
STRUCT、または PLC データタイプに書き込まれます。残りビットシーケンスは考慮の対象になりません。
– S7-1200-CPU:コピー手順はありません。

280

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれま
せん。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L力<ビットシー<ビットシ

I、Q、M、解析される<

ケンス>の

ーケンス>

D、L

ビットシーケARRAY[*]の

の

ンス>の

エレメント

ARRAY[*]ARRAY。

のエレメン

値が I/O 領域

ト内、またはテクノロジーオ
ブジェクトのDB 内にあってはなりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

281

基本命令
3.1 LAD
パラメータ
COUNT_IN

宣言

データタイプ

Input

メモリ領域

説明

S7-1200

S7-1500

USINT, UINT,

USINT,

I、Q、M、解析されるソ

UDINT

UINT,

D、L

ース配列のエUDINT,

レメント数の

ULINT

カウンタ。
値が I/O 領域
内、またはテクノロジーオ
ブジェクトのデータベース内にあってはなりません。

OUT

Output

BOOL のBOOL のI、Q、M、個々のビットARRAY[*]、ARRAY[*]

D、Lが格納される

STRUCT、ま、ARRAY、

たは PLC デー STRUCT、

STRUCT、まタタイプのエ または PLC

たは PLC デー

レメント

タタイプ

データタイ
プのエレメ
ント

命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayWord

ARRAY[0..5] of WORD

CounterInput

UDINT

EnableOut

BOOL

出力

DestinationArrayBool

ARRAY[0..95] of BOOL

次の例で、命令がどのように動作するかを示します。

282

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD(QDEOH
6RXUFH$UUD\:RUG>@&RXQWHU,QSXW

6&$77(5B%/.
:25'
(1

(12

,1

287

(QDEOH2XW
6
'HVWLQDWLRQ$UUD\%RRO>@&2817B,1

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。
)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD すなわち
48 ビットが解析されます。
すなわち、少なくとも 48 ビットが宛先 ARRAY で使用できることが必要です。)

OUT

DestinationArrayBool[0]オペランド「DestinationArrayBool」のデータタイプは
ARRAY[0..95] of BOOL です。すなわち、それは 96 個の BOOL エレメントを提供します。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayWord オペランドの 3 番目、4 番目、および 5 番目の WORD
がその個々のビット(48)に解析され、1 番目のエレメントの場合と同様に、#DestinationArrayBool オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナ
ル状態「0」を返します。

下限値が「-2」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayWord

ARRAY[0..5] of WORD

CounterInput

UDINT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

283

基本命令
3.1 LAD
タグ

セクション

データタイプ

EnableOut

出力

BOOL

DestinationArrayBool

ARRAY[-2..93] of BOOL

次の例で、命令がどのように動作するかを示します。

(QDEOH
6RXUFH$UUD\:RUG>@&RXQWHU,QSXW

6&$77(5B%/.
:25'
(1

(12

(QDEOH2XW
6

,1

287

'HVWLQDWLRQ$UUD\%RRO>@&2817B,1

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。
)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD すなわち
48 ビットが解析されます。
すなわち、少なくとも 48 ビットが宛先 ARRAY で使用できることが必要です。)

OUT

DestinationArrayBool[14]オペランド「DestinationArrayBool」のデータタイプは
ARRAY[-2..93] of BOOL です。すなわち、それは 96 個の BOOL エレメントを提供します。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayWord オペランドの 3 番目、4 番目、および 5 番目の WORD
がその個々のビット(48)に解析され、16 番目のエレメントの場合と同様に、#DestinationArrayBool オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナ
ル状態「0」を返します。残りの 32 ビットは書き込まれません。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)を参照してください。

284

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6.11

GATHER:個々のビットをビットシーケンスに結合

説明「個々のビットをビットシーケンスに結合」命令は、BOOL 配列、匿名 STRUCT、またはBoolean エレメントのみの PLC データタイプのビットをビットシーケンスに結合します。
このビットシーケンスは、データタイプ BYTE、WORD、DWORD、または LWORD のタグに保存されます。
注記
BOOL の多次元配列「個々のビットをビットシーケンスに結合」命令では、多次元 BOOL 配列は使用できません。
注記
ARRAY、STRUCT、または PLC データタイプの長さ
ARRAY、STRUCT、または PLC データタイプは、ビットシーケンスで指定された数と同じ数のエレメントを持つ必要があります。
これは、たとえば、データタイプ BYTE の場合、この ARRAY、匿名 STRUCT、または PLC
データタイプはちょうど 8 つのエレメントを持つ必要がある(WORD = 16、DWORD = 32、および LWORD = 64)ことを示します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ARRAY、匿名 STRUCT、または PLC データタイプ(UDT)の BOOL エレメントが、ビットシーケンスで指定された数よりも少ない、または多い。この場合、BOOL エレメントは転送されません。
• 使用可能なビット数が、必要なビット数よりも少ない。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

285

基本命令
3.1 LADパラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L力

BOOL のBOOL のI、Q、M、

ARRAY、

ARRAY[*]、ARRAY[*]

D、L

STRUCT、まSTRUCT、ま、たは PLC デー

たは PLC デー STRUCT、

タタイプ、ビタタイプ

または PLC

ットシーケン*:8、16、

データタイスに結合され32、またはプるビット。

64 個のエレ*:8、16、

値が I/O 領域

メント

32、また

内、またはテは 64 個のクノロジーオ

エレメント

ブジェクトのDB 内にあってはなりません。

OUT

Output

BYTE, WORD, BYTE,

I、Q、M、結合されたビ

DWORD

D、L

ットシーケン

WORD,
DWORD,

ス、タグ内に

LWORD

保存

命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

286

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADARRAY を使用した例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArray

BOOL 配列[0～15]

EnableOut

BOOL

出力

DestinationWord

WORD

次の例で、命令がどのように動作するかを示します。

(QDEOH
6RXUFH$UUD\*$7+(5
:25'
(1

(12

,1

287

(QDEOH2XW
6
'HVWLQDWLRQ:RUG

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArray

オペランド「SourceArray」のデータタイプは
ARRAY[0..15] of BOOL です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

DestinationWord

WORD (16 ビット)

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArray オペランドのビットが、WORD に結合されます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

287

基本命令
3.1 LAD

PLC データタイプ(UDT)での例
PLC データタイプ「myBits」の作成:

ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceUDT「myBits」

EnableOut

BOOL

出力

DestinationWord

WORD

次の例で、命令がどのように動作するかを示します。

(QDEOH
6RXUFH8'7

288*$7+(5
:25'
(1

(12

,1

287

(QDEOH2XW
6
'HVWLQDWLRQ:RUG

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceUDT「SourceUDT」オペランドは
PLC データタイプ(UDT)です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

DestinationWord

WORD (16 ビット)

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceUDT オペランドのビットが、WORD に結合されます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

289

基本命令
3.1 LAD

3.1.6.12

GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合

説明「個々のビットをビットシーケンス配列のマルチエレメントに結合」命令は、BOOL 配列、
匿名 STRUCT、または Boolean エレメントのみの PLC データタイプを<ビットシーケンス>
配列の 1 つまたは複数のエレメントに結合します。COUNT_OUT パラメータでは、書き込
む宛先 ARRAY のエレメント数を指定します。このステップでは、必要な BOOL 配列、匿名
STRUCT、PLC データタイプのエレメント数も暗黙的に指定します。OUT パラメータの宛先
ARRAY が、COUNT_OUT パラメータで指定されたエレメント数より多くのエレメントを持つ場合があります。<ビットシーケンス>配列は、結合されるビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先 ARRAY のほうが大きい場合もあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:OUT パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。IN パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。BOOL 配列から、48 の個別のビットが結合されます。

290

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
注記
ソース配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは、常に、BYTE、WORD、DWORD、またはLWORD の制限値から開始する必要があります。すなわち、インデックスは、ARRAY の下限値から開始して計算する必要があります。次の式は、この計算の原理として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例は、下記に説明します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ソース ARRAY のインデックスが、BYTE、WORD、DWORD、または LWORD の制限値から開始されないこと。この場合、結果は<ビットシーケンス>配列に書き込まれません。
• <ビットシーケンス>の ARRAY[*]が、必要なエレメント数を提供しない場合。
– S7-1500-CPU:この場合、可能な限り多くのビットシーケンスが結合され、<ビット
シーケンス>配列に書き込まれます。残りビットは考慮の対象になりません。
– S7-1200-CPU:コピー手順はありません。
注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

291

基本命令
3.1 LADパラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L力

BOOL のBOOL のI、Q、M、ビットが結合ARRAY[*]、ARRAY[*]

D、Lされる BOOLSTRUCT、ま、配列、

たは PLC デー STRUCT、

STRUCT、まタタイプのエ または PLC

たは PLC デー

レメント

データタイ

タタイプ(ソ

プのエレメ

ース配列)

ント

値が I/O 領域
内、またはテクノロジーオ
ブジェクトのDB 内にあってはなりません。

292

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ
COUNT_OUT

宣言

データタイプ

Input

メモリ領域

説明

S7-1200

S7-1500

USINT, UINT,

USINT,

I、Q、M、記述されるタ

UDINT

UINT,

D、L

ーゲット

UDINT,ARRAY のエレ

ULINT

メント数のカウンタ。
値が I/O 領域
内、またはテクノロジーオ
ブジェクトのデータベース内にあってはなりません。

OUT

Output<ビットシー<ビットシ

I、Q、M、

ビットが保存

ケンス>の

ーケンス>

D、L

される<ビッARRAY[*]ののトシーケンスエレメント

ARRAY[*]>配列(宛先配

のエレメン

列)

ト
命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayBool

ARRAY[0..95] of BOOLCounterOutput

UDINT

EnableOut

出力

DestinationArrayWord

BOOL
ARRAY[0..5] of WORD

次の例で、命令がどのように動作するかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

293

基本命令
3.1 LAD(QDEOH
6RXUFH$UUD\%RRO>@&RXQWHU2XWSXW*$7+(5B%/.
:25'
(1

(12

(QDEOH2XW
6

,1

287

'HVWLQDWLRQ$UUD\:RUG>@&2817B287

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[0]オペランド「SourceArrayBool」のデー
タタイプは ARRAY[0..95] of
BOOL です。すなわち、それは、もう 1 度 WORD に結合できる 96 個の BOOL エレメ
ントを提供します。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD が書き込まれます。すなわち、48 ビ
ットがソース ARRAY で使用できることが必要です。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」のデータタイプは ARRAY[0..5]of WORD です。すなわち、6個の WORD エレメントが使用できます。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayBool オペランドの 1 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先 ARRAY の開始位置は、3 番目のエレメントです。すなわち、最初の 16 ビットが宛先配列の 3 番目のワードに、2 番目の
16 ビットが 4 番目のワードに、3 番目の 16 ビットが 5 番目のワードに書き込まれます。
この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO
で、シグナル状態「0」を返します。

294

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

下限値が「-2」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayBool

ARRAY[-2..93] of BOOLCounterOutput

UDINT

EnableOut

BOOL

出力

DestinationArrayWord

ARRAY[0..5] of WORD

次の例で、命令がどのように動作するかを示します。

(QDEOH
6RXUFH$UUD\%RRO>@&RXQWHU2XWSXWTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020*$7+(5B%/.
:25'
(1

(12

(QDEOH2XW
6

,1

287

'HVWLQDWLRQ$UUD\:RUG>@&2817B287

295

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[14]オペランド「SourceArrayBool」のデー
タタイプは ARRAY[-2..93]
of BOOL です。開始位置が16 番目のエレメントであるため、再度ワードに結合できる 80 個の BOOL エレメン
トのみを使用できます。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD が書き込まれます。すなわち、48 ビ
ットがソース ARRAY で使用できることが必要です。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」のデータタイプは ARRAY[0..5]of WORD です。すなわち、6個の WORD エレメントが使用できます。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayBool オペランドの 16 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先 ARRAY の開始位置は、3 番目のエレメントです。すなわち、ソース ARRAY の最初の 16 ビットは無視されます。2 番目の
16 ビットが宛先配列の 3 番目のワードに、3 番目の 16 ビットが 4 番目のワードに、4 番
目の 16 ビットが 5 番目のワードに書き込まれます。ソース ARRAY の残りの 64 ビットは考慮されません。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イ
ネーブル出力 ENO で、シグナル状態「0」を返します。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)を参照してください。

296

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6.14

SWAP:スワップ

説明「スワップ」命令を使用して、入力 IN のバイトの順番を変更し、出力 OUT で結果を照会することができます。
次の図に、DWORD データタイプのオペランドのバイトが、「スワップ」命令を使用してスワップされる様子を示します。


,1

 

 
 

 

 

 

 



 

 

 

 

 

 

 



TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

 

 



 





 

 


 



 
 






287

 







 

 

 

 



 



 





 

 


 

 

 



297

基本命令
3.1 LADパラメータ
次の表に、「スワップ」命令のパラメータをリストします。
パラメータ 宣言
EN

データタイプ

Input

S7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入力

D、L
ENO

Output

BOOL

BOOL

I、Q、M、

イネーブル出力

D、L
IN

Input

OUT

Output

WORD,

WORD,

I、Q、M、

DWORD

DWORD,

D、L、また るオペランド

LWORD

は P 定数

WORD,

WORD,

I、Q、M、

DWORD

DWORD,

D、L、P

バイトがスワップされ

結果

LWORD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6:$3
:25'

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

(1

(12

ಯ7DJ2XWಯ
6

,1

287

ಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0000 1111 0101 0101

OUT

TagOut_Value

0101 0101 0000 1111

オペランド「TagIn」のシグナル状態が「1」の場合、「スワップ」命令が実行されます。バイトの順序が変更され、オペランド「TagOut_Value」に保存されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

298

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6.15

配列 DB

ReadFromArrayDB:ARRAY データブロックからの読み出し

説明
命令「ARRAY データブロックからの読み出し」は、インデックスが参照する ARRAY DB ブ
ロックタイプのデータブロックからエレメントを読み出し、そのエレメントの値をターゲット範囲に書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態 FALSE を返します。
• イネーブル入力 EN がシグナル状態 FALSE を返す場合。
• 命令の実行中にエラーが発生した場合。

パラメータ
次の表に、「ARRAY データブロックからの読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

DB

Input

DB_ANY

I、Q、M、D、L 読み出されるデータブロ
ック

INDEX

Input

DINT

I、Q、M、D、

読み出される DB のエレ

L、P、または定 メント。定数、グローバ
数

ルタグ、またはインデッ
クス値を指定できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

299

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

VALUE

VARIANT

L (ブロックイン 読み出されて出力される

Output 1)

説明

ターフェースの 値[一時]セクショ
ンでの宣言は可能ではありません。)
RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

1) データがタグに流れるため、VALUE パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、書き込み保護されているか、またはロードメモリ内に存在します。

300

8135

配列データブロックに無効な値が含まれます。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、ARRAY の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8452

コード生成エラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
エラーコ
ード*

説明

(W#16#..
.)
8453

エラーの 2 つの考えられる原因があります。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。
• 2 つのタグが、アクセスが最適化されたメモリ領域内に存在しません。メ
モリ領域アクセスタイプに関する追加情報は、AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
5HDG)URP$UUD\'%ಯ7DJ,QBಯಯ$UUD\'%ಯ
ಯ7DJ2XWಯ

(1

(12

'%

5(7B9$/

ಯ7DJ5HWB9DOಯ

9$/8(

ಯ7DUJHW)LHOGಯ

,1'(;

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

「TagIn1」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。2 番目のエレメントが「ArrayDB」から読み出され、「TargetField」オペランドへ書き込まれます。
この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

301

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

WriteToArrayDB:ARRAY データブロックへの書き込み
説明

命令「ARRAY データブロックへの書き込み」は、インデックスが参照するエレメントを、
ARRAY DB ブロックタイプのデータブロックへ書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態 FALSE を返します。
• イネーブル入力 EN がシグナル状態 FALSE を返す場合。
• 命令の実行中にエラーが発生した場合。

パラメータ
次の表に、「ARRAY データブロックへの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

DB

Input

DB_ANY

I、Q、M、D、L データが書き込まれるデータブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグ、または
インデックス値を指定で
きます。

302

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

VALUE

VARIANT

L (ブロックイン 書き込まれる値

Input

説明

ターフェースの[一時]セクショ
ンでの宣言は可能ではありません。)
RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8134

データブロックが書き込み保護されています。

8135

データブロックが配列データブロックではありません。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、ARRAY の制限値外です。

8350

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8352

コード生成エラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

303

基本命令
3.1 LAD
エラーコ
ード*

説明

(W#16#..
.)
8353

エラーの 2 つの考えられる原因があります。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。
• 2 つのタグが、アクセスが最適化されたメモリ領域内に存在しません。メ
モリ領域アクセスタイプに関する追加情報は、AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
:ULWH7R$UUD\'%ಯ7DJ,QBಯಯ$UUD\'%ಯ

ಯ7DJ2XWಯ

(1

(12

'%

5(7B9$/

,1'(;

ಯ6RXUFH)LHOGಯ

9$/8(

ಯ7DJ5HWB9DOಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

「TagIn1」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
「SourceField」オペランドの値は、ARRAY DB の 2 番目のエレメントに書き込まれます。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。

304

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

ReadFromArrayDBL:ロードメモリの ARRAY データブロックからの読み出し
説明

命令「ロードメモリの ARRAY データブロックからの読み出し」は、インデックスが参照するエレメントを、ロードメモリの ARRAY DB ブロックタイプのデータブロックから読み出し、それをターゲット範囲に書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。この命令は、BUSY パラメータで信号立ち下がりエッジが検出された場合に終了します。1 プログラムサイクルの間、DONE
パラメータのシグナル状態が「1」になり、このサイクル内に、読み取られた値が VALUE
パラメータに出力されます。他のすべてのプログラムサイクルでは、VALUE パラメータの値は変更されません。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態 FALSE を返します。
• イネーブル入力 EN がシグナル状態 FALSE を返す場合。
• 命令の実行中にエラーが発生した場合。

パラメータ
次の表に、「ロードメモリの ARRAY データブロックからの読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

305

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、

REQ =「1」:配列 DB の読

L、または定数

み出しから開始

Input

DB 1)

Input

DB_ANY

I、Q、M、D、L 読み出される ARRAY デー
タブロック。

INDEX

Input

DINT

I、Q、M、D、

読み出される DB のエレ

L、P、または定 メント。定数、グローバ
数

ルタグ、またはインデッ
クス値を指定できます。

VALUE

1)

InOut

VARIANTD (グローバルデ 読み出されるワークメモ
ータブロックの リの DB へのポインタとエレメント)

書き込まれる値

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、[一時]セクショ

使用する必要がありませンでの宣言は可 ん。
能ではありません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ読み出し中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)306[最適化]ブロックプロパティを使用して、データブロックを作成する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、ARRAY の制限値外です。

8750

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
命令「READ_DBL」および「WRIT_DBL」によってトリガされるエラーコードについては、命令の対応する説明部分を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

307

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ5HDG)URP$UUD\'%/B'%ಯ
5HDG)URP$UUD\'%/ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

(1(12

ಯ7DJ5HTಯ

5(4

%86<

ಯ7DJ%XV\ಯಯ$UUD\'%ಯ

'%

'21(

ಯ7DJ'RQHಯ



,1'(;

(5525

ಯ7DJ(UURUಯಯ7DUJHW)LHOGಯ

9$/8(

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDoneBOOL「TagIn1」オペランドのシグナル状態が「1」のときに、「TagReq」オペランドで立ち上がりエッジが検出されると、その命令が実行されます。2 番目のエレメントが「ArrayDB」か
ら読み出され、「VALUE」パラメータに出力されます。「TagBusy」オペランドで信号立ち下
がりエッジが検出された場合、すぐに命令は終了し、VALUE パラメータの値は変更されません。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態がTRUE になり、「TagOut」出力がセットされます。この命令が処理された後、「TagDone」
オペランドのシグナル状態は TRUE になります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

308

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

下記も参照
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
同期命令と非同期命令の相違 (ページ 29)

WriteToArrayDBL:ロードメモリの ARRAY データブロックへの書き込み
説明

命令「ロードメモリの ARRAY データブロックへの書き込み」は、インデックスが参照するエレメントを、ロードメモリの ARRAY DB ブロックタイプのデータブロックに書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。BUSY パラメータで信号立ち下がり
エッジが検出された場合、命令は終了し、VALUE パラメータの値がデータブロックに書き込まれます。DONE1 パラメータで信号立ち下がりエッジが検出された場合、命令は終了し、パラメータの値がデータブロックに書き込まれます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 命令の実行中にエラーが発生した場合。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

309

基本命令
3.1 LADパラメータ
次の表に、「ロードメモリの ARRAY データブロックへの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

REQ

Input

BOOL

I、Q、M、D、

REQ =「1」:配列 DB へのL、または定数

書き込みを開始

DB 1)

Input

DB_ANY

説明

I、Q、M、D、L データが書き込まれる
ARRAY データブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグ、または
インデックス値を指定できます。

VALUE 1)Input

VARIANTD (グローバルデ 読み出されるワークメモ
ータブロックの リの DB へのポインタとエレメント)

書き込まれる値

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、[一時]セクショ

使用する必要がありませンでの宣言は可 ん。
能ではありません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ書き込み中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)

310[最適化]ブロックプロパティを使用して、データブロックを作成する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8234

データブロックが書き込み保護されています。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、ARRAY の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
命令「READ_DBL」および「WRIT_DBL」によってトリガされるエラーコードについては、命令の対応する説明部分を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

311

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ:ULWH7R$UUD\'%/B'%ಯ
:ULWH7R$UUD\'%/ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

(1(12

ಯ7DJ5HTಯ

5(4

%86<

ಯ7DJ%XV\ಯಯ$UUD\'%ಯ

'%

'21(

ಯ7DJ'RQHಯ



,1'(;

(5525

ಯ7DJ(UURUಯಯ6RXUFH)LHOGಯ

9$/8(

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDoneBOOL「TagIn1」オペランドのシグナル状態が「1」のときに、「TagReq」オペランドで立ち上がりエッジが検出されると、その命令が実行されます。「TagBusy」オペランドで信号立ち下
がりエッジが検出されるとすぐに、命令は終了し、VALUE パラメータの値が「ArrayDB」の2 番目のエレメントに書き込まれます。この命令がエラーなしで実行された場合、イネー
ブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。この命令が処理された後、「TagDone」オペランドのシグナル状態は TRUE になります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

312

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

下記も参照
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
同期命令と非同期命令の相違 (ページ 29)

3.1.6.16

VARIANT

VariantGet:VARIANT タグ値の読み出し

説明「VARIANT タグ値の読み出し」命令を使用して、SRC パラメータの VARIANT が指すタグの値を読み出し、その値を DST パラメータのタグに書き込むことができます。
SRC パラメータのデータタイプは、VARIANT です。DST パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。
DST パラメータのタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および配列をコピーする場合、「MOVE_BLK_VARIANT:ブロックムーブ」命令を使用できます。追加情報については、「関連項目」を参照してください。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• データタイプが一致しないこと(値は転送されません)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

313

基本命令
3.1 LADパラメータ
次の表に、「VARIANT タグ値の読み出し」命令のパラメータを示します。
パラメータ 宣言
EN

データタイプ

Input

ENO

BOOL

Output

SRC

Input

BOOL
VARIANT

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、 イネーブル入力

D、L

D、L

I、Q、M、

I、Q、M、 イネーブル出力

D、L

D、L

L (ブロック

L (ブロック 読み出されるタ

インターフ

インターフ グェースの[一 ェースの時]セクショ [一時]セク

DST

Output

ビット列、整

ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。)

I、Q、M、

I、Q、M、 命令の結果

数、浮動小数点 D、L

D、L、P

数、タイマ、日
付と時刻、文字列、配列エレメ
ント、PLC デー
タタイプ
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ7DJ,QB6RXUFH

9DULDQW*HW(1(12ಯ7DJ2XWಯ
6

65&

'67

ಯ7DJ2XWB'HVWಯ

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。
「#TagIn_Source」オペランドの VARIANT が指すタグの値が読み出され、「TagOut_Dest」
オペランドに書き込まれます。

314

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
MOVE_BLK_VARIANT:ブロックの移動 (ページ 256)

VariantPut:VARIANT タグ値の書き込み
説明「VARIANT タグ値の書き込み」命令を使用して、SRC パラメータのタグの値を、VARIANT が指す DST パラメータのメモリに書き込むことができます。
DST パラメータのデータタイプは、VARIANT です。SRC パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。
SRC パラメータのタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および ARRAY をコピーするには、「MOVE_BLK_VARIANT 命令:ブロックムーブ」命令を使用できます。追加情報については、「関連項目」を参照してください。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• データタイプが一致していません。(値は転送されません。)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

315

基本命令
3.1 LADパラメータ
次の表に、「VARIANT タグ値の書き込み」命令のパラメータを示します。
パラメータ 宣言
EN

データタイプ

Input

ENO

BOOL

Output

SRC

Input

BOOL
ビット列、整メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、 イネーブル入力

D、L

D、L

I、Q、M、

I、Q、M、 イネーブル出力

D、L

D、L

I、Q、M、

I、Q、M、 読み出されるタ

数、浮動小数点 D、L

D、L、P

グ

数、タイマ、日
付と時刻、文字列、配列エレメ
ント、PLC デー
タタイプ
DST

Input

VARIANT

L (ブロック

L (ブロック 命令の結果

インターフ

インターフ

ェースの[一 ェースの時]セクショ [一時]セク
ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ

9DULDQW3XW(1316

ಯ7DJ,QB6RXUFHಯ

65&

7DJ,QB'HVW

'67

(12

ಯ7DJ2XWಯ
6

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「TagIn」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
「TagIn_Source」オペランドの値が、「#TagIn_Dest」オペランドの VARIANT が指すタグに書き込まれます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
MOVE_BLK_VARIANT:ブロックの移動 (ページ 256)

CountOfElements:ARRAY エレメントの数を取得
説明「ARRAY エレメントの数を取得」命令を使用して、VARIANT が指すタグが所有する ARRAYのエレメント数を照会します。
それが多次元の ARRAY の場合、ARRAY のエレメント数が結果として出力されます。(上限値と下限値+1 の差)。それが多次元の ARRAY の場合、すべての次元の数が結果として出力されます。
注記
インスタンス
VARIANT ポインタはインスタンスを指すことはできないため、複数インスタンスまたは複数インスタンスの ARRAY も指すことができません。
注記
データブロック内の ARRAY
データブロック内に存在する ARRAY のエレメント数を照会する場合は、このブロックで、
ブロック属性「デバイス内のデータブロックは書き込み禁止」を有効にしてはいけません。
この属性を有効にすると、ARRAY が含むエレメント数に関係なく、RET_VAL パラメータは
結果「0」を返します。
VARIANT タグが ARRAY でない場合も、その結果は「0」です。
VARIANT が ARRAY of BOOL を指す場合、FILL エレメントはカウントに含まれます。(たとえば、ARRAY[0..1] of BOOL の場合、8 が返されます)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

317

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• VARIANT タグが ARRAY でないこと。(結果は「0」です。
)

パラメータ
次の表に、「ARRAY エレメント数の取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

VARIANT

L (ブロックイン 照会するタグ
ターフェースの[一時]セクショ
ンでの宣言は可能ではありません。)

RET_VAL

Output

UDINT

I、Q、M、D、L 命令の結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ7DJ,QB6RXUFH&RXQW2I(OHPHQWV
(1

(12

,1

5(7B9$/

ಯ7DJ2XWಯ
6
ಯ7DJ2XWB5HW9DOಯ

「TagIn」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
「#TagIn_Source」オペランドの VARIANT が指すタグの ARRAY エレメント数が読み出され、「TagOut_RetVal」オペランドに出力されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

318

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.6.17

ARRAY[*]

LOWER_BOUND:ARRAY の下限値の読み出し

説明

ファンクションブロックまたはファンクションのブロックインターフェースで、データタ
イプ ARRAY[*]のタグを宣言することができます。これらのローカルタグの場合、ARRAY の
制限値を読み出すことができます。DIM パラメータで、必要な次元を指定する必要があります。
「ARRAY 下限値の読み出し」命令は、ARRAY の変数下限値を読み出すために使用されます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 DIM で指定された次元が存在しないこと。
注記
この命令の可用性
この命令は、S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および
S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。

パラメータ
次の表に、「ARRAY 下限値の読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

ARR

Input

ARRAY[*]

FB => セクショ

その変数下限値が読み出

ン[InOut]

される ARRAY。

FC => セクショ
ン[入力]および[InOut]TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

319

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

DIM

UDINT

I、Q、M、D、

その変数下限値が読み出

Input

L、P、または定 される ARRAY の次元。
数
OUT

OutputDINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
/2:(5B%281'
ಯ(QDEOHB6WDUWಯ

(1

$55$<B$

$55



',0

(12

ಯ(QDEOHB2XWಯ
6287

ಯ5HVXOWಯ「Enable_Start」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
命令は、2 番目の次元から、ARRAY #ARRAY_A の変数下限値を読み出します。この命令がエラーなしで実行されると、その結果がオペランド「Enable_Out」に書き込まれ、オペラ
ンド「Result」がセットされます。

UPPER_BOUND:ARRAY の上限値の読み出し
説明
ファンクションブロックまたはファンクションのブロックインターフェースで、データタ
イプ ARRAY[*]のタグを宣言することができます。これらのローカルタグの場合、ARRAY の
制限値を読み出すことができます。DIM パラメータで、必要な次元を指定する必要があります。
命令「ARRAY 上限値の読み出し」は、ARRAY の変数上限値を読み出すために使用されます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 DIM で指定された次元が存在しないこと。

320

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

注記
この命令の可用性
この命令は、S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および
S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。

パラメータ
次の表に、「ARRAY 上限値の読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

ARR

Input

ARRAY[*]

FB => セクショ

その変数上限値が読み出

ン[InOut]

される ARRAY。

FC => セクショ
ン[入力]および[InOut]
DIM

Input

UDINT

I、Q、M、D、

その変数上限値が読み出

L、P、または定 される ARRAY の次元。
数
OUT

OutputDINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
833(5B%281'
ಯ(QDEOHB6WDUWಯ

(1

$55$<B$

$55



',0

(12

ಯ(QDEOHB2XWಯ
6287

ಯ5HVXOWಯ「Enable_Start」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
命令は、2 番目の次元から、ARRAY #ARRAY_A の変数上限値を読み出します。この命令がエラーなしで実行されると、その結果がオペランド「Enable_Out」に書き込まれ、オペラ
ンド「Result」がセットされます。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

321

基本命令
3.1 LAD

3.1.6.18

レガシー

FieldRead: フィールドの読み出し
説明「フィールドの読み出し」命令を使用して、入力 MEMBER で指定されたフィールドから特定のコンポーネントを読み出して、その内容を出力 VALUE でタグに転送することができます。入力 INDEX で読み取るフィールドコンポーネントのインデックスを指定します。読み取りが発生するフィールドの最初のコンポーネントを入力 MEMBER で指定します。
パラメータ MEMBER のフィールドコンポーネントのデータタイプ、パラメータ VALUE のインデックスおよびタグは、暗黙的変換が不可能なため「フィールドの読み出し」命令のデータタイプに対応する必要があります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 入力 INDEX で指定されたフィールドコンポーネントが出力 MEMBER で指定されたフィールドで定義されていないこと。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「フィールドの読み出し」命令のパラメータを示します。
パラメータ
EN
ENO

322

宣言
Input
Output

データタイプS7-1200

S7-1500

BOOL

BOOL

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L

力

I、Q、M、

イネーブル出D、L力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ
INDEX

宣言
Input

データタイプS7-1200

S7-1500

DINT

DINT

メモリ領域

説明

I、Q、M、

内容が読み出D、L、P、ま されるフィー
たは定数

ルドコンポー
ネントのインデックス

MEMBER

Input

ARRAY タグ

ARRAY タグ

D、L

読み取りが発のコンポーネ のコンポーネ

生するフィーントとしての ントとしてのルドの最初の2 進数、整コンポーネン

2 進数、整数、浮動小数 数、浮動小数
点数、タイ

点数、タイ

マ、DATE、マ、DATE、

TOD、

TOD、

CHAR、およLTOD、

び WCHAR

CHAR、およト。

び WCHAR
VALUE

Output2 進数、整2 進数、整I、Q、M、

フィールドコ数、浮動小数 数、浮動小数 D、L、P

ンポーネント

点数、タイ

点数、タイ

の内容が転送マ、DATE、マ、DATE、されるオペラ

TOD、

TOD、

ンド

CHAR、

LTOD、

WCHAR

CHAR、
WCHAR

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

323

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
)LHOG5HDG
5($/(1
DBLQGH[ಯ'%Bಯ
0DLQB)LHOG>@

,1'(;

4b

(12
9$/8(

DBUHDO

0(0%(5

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ タグ値

INDEX

a_index

4

MEMBER"DB_1".Main_Field[-10]"DB_1"データブロックの"Main_Field[-10..10] of REAL"フィールドの最初のコンポーネント

VALUE

a_real「Main_Field[-10..10] of REAL」フィール
ドのインデックス 4 のコンポーネント

インデックス 4 のフィールドコンポーネントが「Main_Field[-10...10] of REAL」フィールドから読み取られ、「a_real」タグに書き込まれます。読み取られるフィールドコンポーネ
ントは、入力 INDEX の値で指定されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

FieldWrite: フィールドの書き込み
説明「フィールドの書き込み」命令を使用して、VALUE 入力のタグの内容を MEMBER 出力のフィールドの特定のコンポーネントに転送します。INDEX 入力の値を使用し、記述されるフィールドコンポーネントのインデックスを指定することができます。MEMBER 出力で、書き込まれるフィールドの最初のコンポーネントを入力します。

324

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ MEMBER のフィールドコンポーネントのデータタイプ、パラメータ VALUE のインデックスおよびタグは、暗黙的変換が不可能なため「フィールドの読み出し」命令のデータタイプに対応する必要があります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 入力 INDEX で指定されたフィールドコンポーネントが出力 MEMBER で指定されたフィールドで定義されていないこと。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「フィールドの書き込み」命令のパラメータを示します。
パラメータ
EN
ENO
INDEX

宣言
Input
OutputInput

データタイプS7-1200

S7-1500

BOOL

BOOL

BOOL
DINT

BOOL
DINT

メモリ領域

説明

I、Q、M、

イネーブル入D、L

力

I、Q、M、

イネーブル出D、L

力

I、Q、M、

VALUE の内

D、L、P、ま 容とともに書たは定数き込まれているフィールドコンポーネントのインデックス。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

325

基本命令
3.1 LAD
パラメータ
VALUE

宣言

データタイプ

Input

S7-1200

S7-1500

2 進数、整2 進数、整メモリ領域

説明

I、Q、M、

内容がコピー

数、浮動小数 数、浮動小数 D、L、P、ま されるオペラ
点数、タイ

点数、タイ

マ、DATE、マ、DATE、

TOD、

TOD、

CHAR、

LTOD、

WCHAR

CHAR、

たは定数

ンド。

D、L

VALUE の内WCHAR
MEMBER

OutputARRAY タグ

ARRAY タグのコンポーネ のコンポーネ

容が書き込まントとしての ントとしてのれるフィール2 進数、整ドの最初のコ2 進数、整数、浮動小数 数、浮動小数

ンポーネン

点数、タイ

点数、タイ

ト。

マ、DATE、マ、DATE、

TOD、

TOD、

CHAR、およLTOD、

び WCHAR

CHAR、および WCHAR

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
)LHOG:ULWH
5($/
(1

326

DBLQGH[,1'(;

DBUHDO

9$/8(

4b

(12
0(0%(5

ಯ'%Bಯ
0DLQB)LHOG>@TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ オペランド

値

INDEX

a_index

4

VALUE

a_real

10.54

MEMBER"DB_1".Main_Field[-10]"DB_1"データブロックの"Main_Field[-10..10] of REAL"フィールドの最初のコンポーネント

タグ「a_real」の値「10.54」が、Main_Field[-10..10] of REAL フィールドのインデックス
4 のフィールドコンポーネントに書き込まれます。タグ「a_real」の内容が転送されるフィールドコンポーネントのインデックスは、入力 INDEX の値によって指定されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

BLKMOV:ブロックの移動
説明「ブロックの移動」命令を使用して、メモリ領域(ソース領域)の内容を別のメモリ領域(宛先領域)に移動することができます。ムーブ操作は、アドレスの昇順方向に行われます。
VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効化されていないメモリ領域内でのみ使用できます。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、この命令のタグが保持設定[IDB に設定]で宣言された場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。
次の図に、ムーブ操作の原理を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

327

基本命令
3.1 LAD'%'%:$%'%'%:&''%'%:()'%'%:

*

+

䲊╤
䲊╤㝜⇫ቒᇬቿኦዉኖቑ㢖檕㡈⚠቎嫛ቲቯቡሼᇭ

0:

$

%

0:

&

'

0:

(

)

0:

*

+

ኾ኿዇檧⩮

ソース領域および宛先領域の整合性「ブロックムーブ」命令の実行中にソースデータが変更されないことを確認してください。
変更があった場合、宛先データの整合性は保証できません。

割り込み機能ネストレベルに対する制限はありません。

メモリ領域「ブロックの移動」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。ソース領域と宛先領域の長さが異なる
場合、小さな領域の長さのみが移動します。

328

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。
宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。

文字列の移動のルール
STRING データタイプの移動元および移動先の領域の移動に「ブロックの移動」命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報も、宛先領域に書き込まれます。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文
字列の現在の長さが、実際に移動する文字数にセットされます。
文字列の最大長および実際の長さに関する情報を移動するには、SRCBLK および DSTBLK パ
ラメータにバイト単位で領域を指定します。

パラメータ
次の表に、「ブロックの移動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

SRCBLK

Input

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがRET_VAL

Output

INT

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

329

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

DSTBLK

VARIANT

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定

Output 1)

します。
1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

8092

ソース領域または宛先領域は、ロードメモリのみに存在します。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
SRCBLK パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
%/.029
ಯ7DJ,Qಯ
30%<7(330

9DULDQW(165&%/.

(12

ಯ7DJ2XWಯ

5(7B9$/

ಯ7DJB5HW9DOಯ

'67%/.

3'%'%;%<7(TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ムーブ操作中にエラーが発生した場合、「Tag_RetVal」タグにエラーコードが出力されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

UBLKMOV:割り込みなしブロック転送
説明「割り込みなしブロック転送」命令を使用して、メモリ領域(ソース領域)の内容を別のメ
モリ領域(宛先領域)に移動することができます。ムーブ操作は、アドレスの昇順方向に行われます。VARIANT を使用して、ソース領域と宛先領域を定義します。
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。その結果、「割り込み不可能なブロックムーブ」命令の実行中に、CPU の割り込み応答時間が長くなる場合があります。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効化されていないメモリ領域内でのみ使用できます。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、この命令のタグが保持設定[IDB に設定]で宣言された場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。

メモリ領域「割り込みなしブロック転送」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

331

基本命令
3.1 LAD• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則「割り込みなしブロック転送」命令の実行中は、ソース領域および宛先領域が重複してはなりません。ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
仮パラメータとして定義された宛先領域またはソース領域が、DSTBLK または SRCBLK パ
ラメータで指定された宛先領域またはソース領域よりも小さい場合、データは転送されません。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。

文字列の移動のルール
STRING データタイプのソース領域および宛先領域の移動に「割り込みなしブロック転送」
命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報は、宛先領域には書き込まれません。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文字列の現在の長さが、実際に移動する文字数にセットされます。STRING データタイプの領域を移動する場合、領域の長さとして「1」を指定します。

パラメータ
次の表に、「割り込みなしブロック転送」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

332

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

SRCBLK

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがRET_VAL

Input
Output

INT

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。
DSTBLK

Output 1)

VARIANT

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定します。

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー
ド*(W#16#...)

説明

0000

エラーなし

8091

ソース領域または宛先領域は、ロードメモリのみに存在します。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
SRCBLK パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

一般エラー

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

333

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
8%/.029
ಯ7DJ,Qಯ
30%<7(9DULDQW(165&%/.

(12

ಯ7DJ2XWಯ

5(7B9$/

ಯ7DJB5HW9DOಯ

'67%/.

3'%'%;%<7(「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ムーブ操作中にエラーが発生した場合、「Tag_RetVal」タグにエラーコードが出力されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

FILL:フィル命令
説明「フィル」命令を使用して、メモリ領域(宛先領域)を別のメモリ領域(ソース領域)の内容によって埋めることができます。「フィル」命令は、宛先領域がすべて書き込まれるまでソース領域の内容を宛先領域に移動します。ムーブ操作は、アドレスの昇順方向に行われます。

334

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADVARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効化されていないメモリ領域内でのみ使用できます。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、この命令のタグが保持設定[IDB に設定]で宣言された場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。
「最適化ブロックアクセス」属性を持つブロックの場合、命令「FILL_BLK:フィル」命令を使用できます。
次の図に、ムーブ操作の原理を示します。
),//

%9$/

$

%

0:

$

%

0:

&

'

0:

&

'

0:

(

)

0:

(

)

0:

*

+

0:

*

+

0:

$

%

0:

&

'

0:

(

)

0:

*

+

0:

$

%

0:

&

'

0:

%/.

例:MW100～MW118 の範囲の内容は、メモリワード MW14～MW20 の内容で事前割り当てされます。

ソース領域および宛先領域の整合性「フィル」命令の実行中は、宛先データの整合性を保証するため、ソースデータは変更されないことに注意してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

335

基本命令
3.1 LAD

メモリ領域「フィル」命令を使用して、以下のメモリ領域を移動することができます。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。プリセットする宛先領域が入力パラメ
ータ BVAL の長さの整数倍ではなくても、宛先領域は最後のバイトまで書き込まれます。
プリセットする宛先領域がソース領域よりも小さい場合は、ソース領域に含まれているデータのうち、宛先領域に書き込める量のみがコピーされます。
実際に存在する宛先領域またはソース領域がソース領域または宛先領域に割り当てられた
メモリ領域よりも小さい場合(BVAL、BLK パラメータ)、データは転送されません。
ANY ポインタ(ソースまたは宛先)がデータタイプ BOOL の場合、これを絶対アドレス指定する必要があり、かつ指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行されません。
宛先領域が STRING データタイプの場合、この命令は管理情報を含む文字列全体を書き込みます。

構造体移動のルール
構造体を入力パラメータとして転送するとき、構造体の長さが常に偶数バイト数になっているように注意する必要があります。構造体を奇数バイトによって宣言する場合は、追加の1 バイトが必要になります。

パラメータ
次の表に、
「フィル」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

336

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

BVAL

VARIANT

I、Q、M、D、その内容に内容が BLK パ

L、P

ラメータの宛先領域を埋Inputめるのに使用されるメモ
リ領域(ソース領域)の指定。
RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

BLK

Output 1)

VARIANT

I、Q、M、D、

ソース領域の内容で埋めL、Pられるメモリ領域の指定。

1) データがタグに流れるため、BLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

8092

ソース領域または宛先領域は、ロードメモリのみに存在します。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、BVAL
パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、BLK
パラメータではサポートされていません。

一般エラ

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

337

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
),//
ಯ7DJ,Qಯ
30:25'

9DULDQW
(1
%9$/

(12
5(7B9$/%/.

ಯ7DJ2XWಯಯ7DJB5HW9DOಯ

30:25'「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、ソース領域 MW14～MW20 をコピーし、BVAL パラメータのメモリ領域に含まれる 4 ワー
ドの内容で宛先領域 MW100～MW118 を埋めます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

3.1.7

変換操作

3.1.7.1

CONVERT: 値の変換

説明
「データの変換」命令は、IN パラメータの内容を読み出し、命令ボックスで選択されたデータタイプに従って変換します。変換された値は、OUT 出力で出力されます。
実行可能な変換に関する情報は、「関連項目」の「明示的な変換」のセクションを参照してください。

338

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次のいずれかの条件が満たされると、イネーブル出力 ENO のシグナル状態が「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

ビット列の変換オプション
BYTE および WORD ビット列は、命令ボックスで選択できません。ただし、入力オペラン
ドと出力オペランドの長さが一致する場合は、命令のパラメータでデータタイプ DWORDまたは LWORD のオペランドを指定できます。次にオペランドは、入力パラメータまたは
出力パラメータのデータタイプに応じてビット列のデータタイプによって解釈され、暗黙的に変換されます。たとえば、データタイプ DWORD は DINT/UDINT として解釈され、
LWORD は LINT/ULINT として解釈されます。これらの変換オプションは、「IEC チェック」
が有効なときも使用できます。
注記
S7-1500 シリーズの CPU の場合:データタイプ DWORD および LWORD は、データタイプ
REAL または LREAL との間でのみ変換できます。
変換時に、ソース値のビットパターンは、ターゲットデータタイプへ変更なしで、右揃えで転送されます。変換中にエラーが発生しない場合は、イネーブル出力 ENO のシグナル状態
は 1 になり; 処理中にエラーが発生すると、イネーブル出力 ENO のシグナル状態 0 になり
ます。

パラメータ
次の表に、「値の変換」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

339

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

ビット列、整I、Q、M、D、

変換する値

Input

数、浮動小数点 L、P、または定数、CHAR、数

WCHAR、
BCD16、BCD32
OUT

Output

ビット列、整I、Q、M、D、変換の結果

数、浮動小数点 L、P
数、CHAR、
WCHAR、
BCD16、BCD32
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例は、整数(16 ビット)から別の整数(32 ビット)への変換を示します。
&219
ಯ7DJ,Qಯಯ,QSXWB,17ಯ

,17

WR

',17

(1

(12

,1

287

ಯ7DJ2XWಯಯ2XWSXWB',17ಯ

次の例は、 バイト(8 ビット)から整数 SINT (8 ビット)への変換を示します。
&219
ಯ7DJ,Qಯಯ,QSXWB%<7(ಯ6,17 WR

6,17

(1

(12

,1

287

ಯ7DJ2XWಯಯ2XWSXWB6,17ಯ

次の例は、バイト(8 ビット)から符号なし整数 USINT (8 ビット)への変換を示します。
&219
ಯ7DJ,Qಯಯ,QSXWB%<7(ಯ86,17 WR 86,17
(1

(12

,1

287

ಯ7DJ2XWಯಯ2XWSXWB86,17ಯ

これらの変換は、2 つのオペランドの長さが同じであるため可能です。

340

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.7.2

ROUND: 数値の四捨五入

説明「数値の四捨五入」命令を使用して、入力 IN の値を近似の整数に四捨五入することができます。この命令は、入力 IN の値を浮動小数点数として解釈し、データタイプ DINT の整数に変換します。入力値が偶数と奇数のちょうど間にある場合、偶数が選択されます。命令の結果は、OUT 出力に送信され、そこから照会できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「数値の四捨五入」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、四捨五入される入力値

L、P、または定数
OUT

Output整数、浮動小数 I、Q、M、D、
点数

丸めの結果

L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

341

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
5281'
ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

5($/

WR

',17

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

1.50000000-1.50000000

OUT

TagOut_Value

2-2「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。入力「TagIn_Value」の浮動小数点数は、最も近い偶数の整数に四捨五入され、出力「TagOut_Value」に送信されます。この命令がエラーなしで実行された場合、「TagOut」出
力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.7.3

CEIL:浮動小数点数から次に大きい整数を生成

説明「浮動小数点数から次に大きい整数を生成」命令を使用して、入力 IN の値を次に大きい整数に切り上げることができます。この命令は、IN 入力の値を浮動小数点数として解釈し、次に大きい整数に変換します。命令の結果は、OUT 出力に送信され、そこから照会できます。出力値は、入力値以上になることがあります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

342

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「浮動小数点数から次に大きい整数を生成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数
OUT

Output整数、浮動小数 I、Q、M、D、点数

L、P

次に大きい整数の場合の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
&(,/
ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

5($/

WR

',17

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0.50000000-0.50000000

OUT

TagOut_Value

1

0「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。
「TagIn_Value」入力の浮動小数点数が、次に大きい整数に四捨五入され、「TagOut_Value」
出力に送信されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

343

基本命令
3.1 LAD

3.1.7.4

FLOOR:浮動小数点数から次に小さい整数を生成

説明「浮動小数点数から次に小さい整数を生成」命令を使用して、入力 IN の値を次に小さい整数に切り下げることができます。この命令は、入力 IN の値を浮動小数点数として解釈し、浮動小数点数の値を次に小さい整数に変換します。命令の結果は、OUT 出力に送信され、そこから照会できます。出力値は、入力値以下になります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「浮動小数点数から次に小さい整数を生成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数
OUT

Output整数、浮動小数 I、Q、M、D、
点数

L、P

次に小さい整数の場合の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

344

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
)/225
ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

5($/

WR

',17

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0.50000000-0.50000000

OUT

TagOut_Value

0-1「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。入力「TagIn_Value」の浮動小数点数が、次に小さい整数に四捨五入され、出力「TagOut_Value」に送信されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.7.5

TRUNC: 数値の切り捨て

説明「数値を切り捨てる」命令を使用して、IN 入力の値から整数を形成することができます。IN
入力の値は、浮動小数点数として解釈されます。この命令は、浮動小数点数の整数部のみを選択し、小数位なしで OUT 出力に送信します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

345

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、
「数値を切り捨てる」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

浮動小数点数

I、Q、M、D、

入力値

L、または定数
OUT

Output整数、浮動小数 I、Q、M、D、L 入力値の整数部
点数

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
7581&
ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

5($/

WR

',17

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

346

パラメータ

オペランド

値

IN

TagIn_Value

1.50000000-1.50000000

OUT

TagOut_Value

1-1
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。
「TagIn_Value」入力の浮動小数点数の整数部が、整数に変換され、「TagOut_Value」出力に送信されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.7.6

SCALE_X: スケール

説明
「スケール」命令を使用して、VALUE 入力の値を指定した値の範囲にマッピングしてスケーリングすることができます。「スケール」命令が実行されると、VALUE 入力の浮動小数点値が、MIN および MAX パラメータによって定義された値の範囲にスケーリングされます。スケーリングの結果は整数になり、OUT 出力に保存されます。
次の図に、値をどのようにスケーリングできるかを示します。

0$;
287
0,1



⊳

「スケール」命令は、以下の等式で機能します。
OUT = [VALUE ∗ (MAX – MIN)] + MIN

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

347

基本命令
3.1 LAD
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• MIN 入力の値が MAX 入力の値以上であること。
• 指定した浮動小数点数の値が、IEEE-754 に従い正規化された数の範囲外であること。
• オーバーフローが発生していること。
• VALUE 入力の値が NaN (Not a Number = 無効な算術演算の結果)であること。
注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

パラメータ
次の表に、「スケール」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

MIN

Input

整数、浮動小数 I、Q、M、D、

VALUE

Input

説明

値の範囲の下限値

点数

L、または定数

浮動小数点数

I、Q、M、D、

スケーリングされる値

L、または定数定数を入力する場合は、それを宣言する必要があ
ります。

MAX

Input

整数、浮動小数 I、Q、M、D、
点数

OUT

Output値の範囲の上限値

L、または定数

整数、浮動小数 I、Q、M、D、L スケーリングの結果
点数

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

348

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
6&$/(B;
ಯ7DJ,Qಯ

5($/

WR

',17

(1

(12

ಯ7DJB0,1ಯ

0,1

287

ಯ7DJB9DOXHಯ

9$/8(

ಯ7DJB0$;ಯ

0$;ಯ7DJ2XWಯ
6
ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MIN

Tag_MIN

10

VALUE

Tag_Value

0.5

MAX

Tag_MAX30

OUT

Tag_Result

20「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。
「Tag_Value」入力の値が、「Tag_MIN」および「Tag_MAX」入力の値によって定義された値の範囲にスケーリングされます。結果が「Tag_Result」出力に保存されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.7.7

NORM_X: 正規化

説明「正規化」命令を使用して、VALUE 入力のタグの値をリニアスケーリングにマッピングして正規化することができます。MIN および MAX パラメータを使用し、スケーリングに適用する値の範囲の限界を定義できます。OUT 出力の結果が計算され、正規化される値のこの値の範囲内の位置に応じて、浮動小数点数として保存されます。正規化される値が MIN 入力の値に等しい場合、OUT 出力の値は「0.0」になります。正規化する値が入力 MAX の値と等しい場合、出力 OUT が値「1.0」を返します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

349

基本命令
3.1 LAD
次の図に、値が正規化される例を示します。


287

0,1

0$;
⊳

「正規化」命令は、以下の等式で機能します。
OUT = (VALUE – MIN) / (MAX – MIN)
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• MIN 入力の値が MAX 入力の値以上であること。
• 指定した浮動小数点数の値が、IEEE-754 に従い正規化された数の範囲外であること。
• VALUE 入力の値が NaN(無効な算術演算の結果)であること。
注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

パラメータ
次の表に、「正規化」命令のパラメータを示します。

350

パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

MIN 1)

整数、浮動小数 I、Q、M、D、

Input
Input
Input

OUT
1)

値の範囲の下限値

整数、浮動小数 I、Q、M、D、正規化する値

L、または定数点数
MAX 1)

説明

L、または定数点数
VALUE 1)

メモリ領域

整数、浮動小数 I、Q、M、D、

Output値の範囲の上限値

点数

L、または定数

浮動小数点数

I、Q、M、D、L 正規化の結果

これらの 3 つのパラメータで定数を使用する場合は、そのいずれかを宣言するのみで済みます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
1250B;
ಯ7DJ,Qಯ

',17

WR

5($/

(1

(12

ಯ7DJB0,1ಯ

0,1

287

ಯ7DJB9DOXHಯ

9$/8(

ಯ7DJB0$;ಯ

0$;ಯ7DJ2XWಯ
6
ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MIN

Tag_MIN

10

VALUE

Tag_Value

20

MAX

Tag_MAX30

OUT

Tag_Result

0.5「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。
「Tag_Value」入力の値が、「Tag_MIN」および「Tag_MAX」入力の値によって定義された値の範囲にマッピングされます。「Tag_Value」入力のタグ値が、定義された値の範囲に正規化されます。結果が、浮動小数点数として「Tag_Result」出力に保存されます。この命令

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

351

基本命令
3.1 LADがエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.7.8

レガシー

SCALE:スケール

説明「スケール」命令は、IN パラメータの整数を下限値と上限値間の物理単位でスケーリングが可能な浮動小数点数に変換します。LO_LIM および HI_LIM パラメータを使用して、入力値をスケーリングする範囲の下限値と上限値を指定することができます。命令の結果は、OUT
パラメータに出力されます。
「スケール」命令は、以下の等式で機能します。
OUT = [((FLOAT (IN) – K1) / (K2 – K1)) ∗ (HI_LIM – LO_LIM)] + LO_LIM
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値がバイポーラであり、値範囲-27648 ～ 27648 内にあることが仮定されています。この場合、「K1」定数は値「-27648.0」を持ち、「K2」定数は値「+27648.0」を持ちます。
• シグナル状態「0」:IN パラメータの値がユニポーラであり、値範囲 0 ～ 27648 内にあることが仮定されています。この場合、「K1」定数は値「0.0」を持ち、「K2」定数は値「+27648.0」を持ちます。
IN パラメータの値が定数値「K2」よりも大きい場合、命令の結果が上限値(HI_LIM)にセッ
トされ、エラーが出力されます。
IN パラメータの値が定数値「K1」未満の場合、命令の結果が下限値(LO_LIM)にセットされ、エラーが出力されます。
示された下限値が上限値よりも大きい(LO_LIM > HI_LIM)場合、結果は入力値に反比例してスケーリングされます。

352

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「スケール」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

INT

I、Q、M、D、

スケーリングす

L、P、または定 る入力値。
数
HI_LIM

Input

REAL

I、Q、M、D、上限値

L、P、または定数
LO_LIM

Input

REAL

I、Q、M、D、下限値

L、P、または定
数BIPOLAR

Input

BOOL

I、Q、M、D、IN パラメータのL、または定数値をバイポーラ
として解釈する
か、またはユニ
ポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

OUT

OutputREAL

I、Q、M、D、

命令の結果

L、P
RET_VAL

Output

WORD

I、Q、M、D、

エラー情報

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

353

基本命令
3.1 LADRET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

0008

IN パラメータの値が定数値「K2」を超えているか、または定数値「K1」未満になっています。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6&$/(
ಯ7DJ,Qಯ

(1(12

ಯ7DJB,QSXW9DOXHಯ

,1

5(7B9$/

ಯ7DJB+LJK/LPLWಯ

+,B/,0ಯ7DJB/RZ/LPLWಯ

/2B/,0ಯ7DJB%LSRODUಯ

287

ಯ7DJ2XWಯಯ7DJB2XWSXW9DOXHಯ
ಯ7DJB(UURU&RGHಯ

%,32/$5

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

354

パラメータ

オペランド

値

IN

Tag_InputValue

22

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

OUT

Tag_OutputValue

50.03978588

RET_VAL

Tag_ErrorCode

W#16#0000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

UNSCALE:スケール解除
説明「スケール解除」命令を使用して、IN パラメータの浮動小数点数を下限値と上限値間の物
理単位にスケーリング解除し、それらを整数に変換します。LO_LIM および HI_LIM パラメータを使用し、入力値をスケーリング解除する範囲の下限値と上限値を指定します。命令の結果は、OUT パラメータに出力されます。
「スケール解除」命令は、以下の等式で機能します。
OUT = [ ((IN – LO_LIM) / (HI_LIM – LO_LIM)) ∗ (K2 – K1) ] + K1
「K1」および「K2」定数の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値がバイポーラであり、値範囲-27648 ～ 27648 内にあることが仮定されています。この場合、「K1」定数は値「-27648.0」を持ち、「K2」定数は値「+27648.0」を持ちます。
• シグナル状態「0」:IN パラメータの値がユニポーラであり、値範囲 0 ～ 27648 内にあることが仮定されています。この場合、「K1」定数は値「0.0」を持ち、「K2」定数は値「+27648.0」を持ちます。
パラメータ IN の値が、HI_LIM および LO_LIM によって定義された制限値内にないとき、エラーが出力されます。
示された下限値が上限値よりも大きい(LO_LIM > HI_LIM)場合、結果は入力値に反比例してスケーリングされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

355

基本命令
3.1 LADパラメータ
次の表に、「スケール解除」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Input

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

REAL

I、Q、M、D、整数値にスケー

L、P、または定 リング解除する
HI_LIM

Input

REAL

数

入力値。

I、Q、M、D、上限値

L、P、または定数
LO_LIM

Input

REAL

I、Q、M、D、下限値

L、P、または定
数BIPOLAR

Input

BOOL

I、Q、M、D、IN パラメータのL、または定数値をバイポーラ
として解釈する
か、またはユニ
ポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

OUT

Output

INT

I、Q、M、D、

命令の結果

L、P
RET_VAL

Output

WORD

I、Q、M、D、

エラー情報

L、P

356

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADRET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

0008

IN パラメータの値が上限値(HI_LIM)を超えているか、または下限値(LO_LIM)未満になっています。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、AUTOHOTSPOT を参照してください。

例
次の例で、命令がどのように動作するかを示します。
816&$/(
ಯ7DJ,Qಯ

(1(12

ಯ7DJB,QSXW9DOXHಯ

,1

5(7B9$/

ಯ7DJB+LJK/LPLWಯ

+,B/,0ಯ7DJB/RZ/LPLWಯ

/2B/,0ಯ7DJB%LSRODUಯ

287

ಯ7DJ2XWಯಯ7DJB(UURU&RGHಯ
ಯ7DJB2XWSXW9DOXHಯ

%,32/$5

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_InputValue

50.03978588

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

OUT

Tag_OutputValue

22

RET_VAL

Tag_ErrorCode

W#16#0000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

357

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

3.1.8

プログラム制御演算

3.1.8.1---( JMP ):RLO = 1 ならばジャンプ

説明「RLO = 1 ならばジャンプ」命令を使用して、プログラムのリニア実行を中断し、別のネットワークで再開できます。宛先ネットワークは、ジャンプラベル(LABEL)で識別する必要があります。このジャンプラベルの名前は、命令の上のプレースホルダに指定されます。
指定したジャンプラベルは、命令が実行されるブロックと同じブロックにあることが必要です。指定する名前はブロック内で固有でなければなりません。1 つのネットワークで使用できるジャンピングコイルは 1 つのみです。
命令の入力でのボックス入力の論理演算の結果(RLO)が「1」の場合、指定されたジャンプ
ラベルで識別されたネットワークへのジャンプが実行されます。ジャンプ方向は、大きいまたは小さいネットワーク番号の方向になります。
命令の入力での条件が満たされない場合(RLO = 0)、プログラムの実行は次のネットワークで続行されます。

358

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯኪአእዌዙኌ
ಯ7DJ,QBಯ

&$6
-03

ಯ7DJ2XWBಯ
5ኪአእዌዙኌ
&$6
ಯ7DJ,QBಯ

ಯ7DJ2XWBಯ
5

オペランド「TagIn_1」のシグナル状態が「1」の場合、「RLO = 1 ならばジャンプ」命令が実行されます。プログラムの線形実行が中断され、ジャンプラベル CAS1 で識別されるネットワーク 3 で続行されます。「TagIn_3」入力のシグナル状態が「1」の場合、「TagOut_3」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.8.2---( JMPN ):RLO = 0 ならばジャンプ

説明「RLO = 0 ならばジャンプ」命令を使用し、命令の入力での論理演算の結果が「0」の場合、プログラムの線形実行に割り込み、それを別のネットワークで再開することができます。
宛先ネットワークは、ジャンプラベル(LABEL)で識別する必要があります。このジャンプ
ラベルの名前は、命令の上のプレースホルダに指定されます。
指定したジャンプラベルは、命令が実行されるブロックと同じブロックにあることが必要です。指定する名前はブロック内で固有でなければなりません。1 つのネットワークで使用できるジャンピングコイルは 1 つのみです。
命令の入力でのボックス入力の論理演算の結果(RLO)が「0」の場合、指定されたジャンプ
ラベルで識別されたネットワークへのジャンプが実行されます。ジャンプ方向は、大きいまたは小さいネットワーク番号の方向になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

359

基本命令
3.1 LAD
命令の入力での論理演算の結果が「1」の場合、プログラムの実行は、次のネットワークで継続します。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯኪአእዌዙኌ
ಯ7DJ,QBಯ

&$6
-031

ಯ7DJ2XWBಯ
5ኪአእዌዙኌ
&$6
ಯ7DJ,QBಯ

ಯ7DJ2XWBಯ
5

オペランド「TagIn_1」のシグナル状態が「0」の場合、「RLO = 0 ならばジャンプ」命令が実行されます。プログラムの線形実行が中断され、ジャンプラベル CAS1 で識別されるネットワーク 3 で続行されます。「TagIn_3」入力のシグナル状態が「1」の場合、「TagOut_3」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.8.3

LABEL:ジャンプラベル

説明
ジャンプラベルを使用して、ジャンプが実行されるときにプログラムの実行が再開される
宛先ネットワークを識別することができます。
ジャンプラベルとジャンプラベルを指定する命令は、同じブロックに置く必要があります。
ジャンプラベルの名前は、ブロック内で 1 回のみ割り当てることができます。CPU S7-1200
を使用している場合は最大で 32 のジャンプラベル、CPU S7-1500 を使用している場合は最大で 256 のジャンプラベルを宣言できます。
ネットワークに置くことのできるジャンプラベルは 1 つのみです。各ジャンプラベルから複数の位置にジャンプできます。

360

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
ジャンプラベルについては、以下の文法ルールを遵守してください。
• 文字(a～z、A～Z)• 文字および数字の組み合わせ。その順序に注意してください。最初に文字を設定し、次に数字を設定します(a ～ z、A ～ Z、0 ～ 9)。
• 特殊文字、または逆の順序の文字および数字の組み合わせを使用してはいけません。すなわち、最初に数字を設定し、次に文字を設定すること(0 ～ 9、a ～ z、A ～ Z)はできません。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ7DJ,QBಯኪአእዌዙኌ
ಯ7DJ,QBಯ

&$6
-03

ಯ7DJ2XWBಯ
5ኪአእዌዙኌ
&$6
ಯ7DJ,QBಯ

ಯ7DJ2XWBಯ
5

オペランド「TagIn_1」のシグナル状態が「1」の場合、「RLO = 1 ならばジャンプ」命令が実行されます。プログラムの線形実行が中断され、ジャンプラベル CAS1 で識別されるネットワーク 3 で続行されます。「TagIn_3」入力のシグナル状態が「1」の場合、「TagOut_3」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

361

基本命令
3.1 LAD

3.1.8.4

JMP_LIST:ジャンプリストの定義

説明「ジャンプリストの定義」を使って、複数の条件ジャンプを定義できます。また、K パラ
メータの値に基づいて、指定したネットワーク内でプログラム実行を継続できます。
ジャンプはジャンプラベル(LABEL)を使用して定義します。ジャンプラベルは、命令ボッ
クスの出力で指定します。出力の数は、命令ボックスで拡張できます。CPU S7-1200 を使用している場合は最大で 32 の出力、CPU S7-1500 を使用している場合は最大で 256 の出力を宣言できます。
出力の番号付けは、値「0」から開始され、それぞれの新しい出力で昇順に継続されます。
命令の出力では、ジャンプラベルのみを指定できます。命令またはオペランドを指定することはできません。
K パラメータの値は、プログラム実行が再開される出力の番号、その結果、ジャンプラベ
ルを指定します。K パラメータの値が、使用可能な出力の数より大きい場合、プログラム
実行は、ブロックの次のネットワークで再開されます。
「ジャンプリストの定義」命令は、EN イネーブル入力のシグナル状態が「1」の場合にのみ実行されます。

パラメータ
次の表に、「ジャンプリストの定義」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

K

Input

UINT

I、Q、M、D、

出力の番号、ひいては実L、または定数

行されるジャンプを指定
します。

DEST0

-

-

-

最初のジャンプラベル

DEST1

-

-

-

2 番目のジャンプラベル

DESTn

-

-

-

オプションのジャンプラ
ベル

有効なデータタイプの追加情報については、「関連項目」を参照してください。

362

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJB,QSXWಯಯ7DJB9DOXHಯ

-03B/,67
(1
.

'(67

/$%(/

'(67/$%(/

'(67/$%(/

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド/ジャンプラベル 値

K

Tag_Value

1

Dest0

LABEL0

ジャンプラベル「LABEL0」で識別されるネットワークにジャンプします。

Dest1

LABEL1

ジャンプラベル「LABEL1」
で識別されるネットワークにジャンプします。

Dest2

LABEL2

ジャンプラベル「LABEL2」で識別されるネットワークにジャンプします。

オペランド「Tag_Input」のシグナル状態が「1」の場合、「ジャンプリスト定義」命令が実行されます。プログラムの実行は、ジャンプラベル「LABEL1」で識別されるネットワー
クのオペランド「Tag_Value」の値に基づいて継続されます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

363

基本命令
3.1 LAD

3.1.8.5

SWITCH:ディストリビュータにジャンプ

説明「ディストリビュータジャンプ」命令を使用して複数のプログラムジャンプを定義し、1 つ以上の比較命令の結果に応じて実行することができます。
K パラメータで比較される値を指定します。この値は、さまざまな入力によって提供される値と比較されます。個々の入力に対して、比較方法を選択できます。さまざまな比較命令の可用性は、命令のデータタイプに応じて異なります。
次の表に、選択されたデータタイプに応じて使用可能な比較命令を示します。
データタイプS7-1200

S7-1500

ビット列

ビット列

命令

構文

等価

==

不等価

<>
==

整数、浮動小数 整数、浮動小数 等価
点数、TIME、点数、TIME、

DATE、TODLTIME、DATE、
TOD、LTOD、
LDT

不等価

<>

以上

>=

以下

<=

超過

>

未満

<

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。比較命令を選択し、その命令のデータタイプがまだ定義されていない場合、「???」ドロップダウンリストには、選択した比較命令で許可されたデータタイプが表示されます。
命令の実行は、最初の比較で開始し、比較条件が満たされるまで実行します。比較条件が満たされている場合、その後の比較条件は考慮されません。指定した条件のいずれも満たされていない場合、出力 ELSE でジャンプが実行されます。ELSE 出力でプログラムジャンプが定義されていない場合、次のネットワークでプログラムの実行が続行されます。
出力の数は、命令ボックスで拡張できます。出力の番号付けは、値「0」から開始され、それぞれの新しい出力で昇順に継続されます。命令の出力でジャンプラベル(LABEL)を指定します。命令の出力で、命令またはオペランドを指定することはできません。
追加された出力に対し、自動的に入力が挿入されます。対応する入力の比較条件が満たされている場合、出力でプログラミングされたジャンプが実行されます。

364

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「ディストリビュータジャンプ」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

メモリ領
域

BOOL

BOOL

I、Q、

説明
イネーブル入力

M、D、L
K

Input

UINT

UINT

I、Q、

比較する値を指定し

M、D、

ます。

L、または
定数
<Comparis

Input

on values>

ビット列、

ビット列、

I、Q、

パラメータ K の値と

整数、浮動

整数、浮動

M、D、

比較される入力値

小数点数、

小数点数、

L、または

TIME、

TIME、

定数

DATE、TODLTIME、
DATE、
TOD、
LTOD、LDT

DEST0

-

-

-

-

最初のジャンプラベ
ル

DEST1

-

-

-

-

2 番目のジャンプラ
ベル

DEST(n)

-

-

-

-

オプションのジャンプラベル:• S7-1200:n = 2 ～32• S7-1500:n = 2 ～
256

ELSE

-

-

-

-

いずれの比較条件も満たされない場合に実行されるプログラ
ムジャンプ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

365

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
6:,7&+
8,17

ಯ7DJB,QSXWಯ(1
ಯ7DJB9DOXHಯ

.

ಯ7DJB9DOXHBಯ

'(67/$%(/

ಯ7DJB9DOXHBಯ

!

'(67

/$%(/

ಯ7DJB9DOXHBಯ



'(67

/$%(/

(/6(/$%(/

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド/ジャンプラベル 値

K

Tag_Value

23==

Tag_Value_1

20>

Tag_Value_2

21<

Tag_Value_3

19

DEST0

LABEL0

パラメータ K の値が 20 と等しい場合、ジャンプラベル「LABEL0」にジャンプ。

DEST1

LABEL1

パラメータ K の値が 21 よりも大きい場合、ジャンプラ
ベル「LABEL1」にジャンプ。

DEST2

LABEL2

パラメータ K の値が 19 未満の場合、ジャンプラベル「LABEL2」にジャンプ。

ELSE

LABEL3

どの比較条件も満たされない場合、ジャンプラベル「LABEL3」にジャンプします。

オペランド「Tag_Input」のシグナル状態が「1」になった場合、「ディストリビュータジ
ャンプ」命令を実行。ジャンプラベル「LABEL1」で識別されるネットワークでプログラ
ムの実行を継続。

366

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.8.6--(RET):Return

説明「Return」命令を使用して、プログラムブロックの実行を条件付きまたは無条件で停止します。プログラムブロックが終了したとき、戻り値(オペランド)のシグナル状態が、呼び出しプログラムブロックのイネーブル出力 ENO にマッピングされます。
プログラムブロックの実行を終了する 3 つの方法があります。
プログラムブロックの終了

説明

この命令の呼び出しなプログラムブロックは、最後のネットワークの実行後に終了しします。呼び出しプログラムブロックのイネーブル出力 ENO が、
シグナル状態「1」にセットされます。

事前の論理演算による事前の論理演算が満たされると、現在呼び出されているプログ

この命令の呼び出し(例 ラムブロックのプログラム実行が終了し、このプログラムブロ
を参照)

ックが終了します。(条件付きプログラムブロック終了) プログ
ラムブロック呼び出し後、プログラム実行が、呼び出しプログ
ラムブロック(たとえば、OB)で続けられます。呼び出しプログ
ラムブロックのイネーブル出力 ENO は、そのオペランドに対応します。

事前の論理演算なしのプログラムブロックは無条件で終了します。(絶対プログラムブ

この命令の呼び出し、ロック終了) 呼び出しプログラムブロックのイネーブル出力

またはこの命令が直接ENO は、そのオペランドに対応します。

に左のパワーレールに接続されます。
オーガニゼーションブロック(OB)が終了すると、別のプログラムブロックが実行レベルシ
ステムによって選択され、開始されるか、実行が続けられます。
• OB プログラムサイクルが終了すると、そのサイクルが再起動されます。
• 別のプログラムブロックに割り込んだ OB (たとえば、割り込み OB)が終了すると、割り込まれたプログラムブロック(たとえば、プログラムサイクル OB)の実行が続けられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

367

基本命令
3.1 LAD

注記
RET 命令と JMP および JMPN との関係
ネットワークが既に「JMP:RLO = 1 ならばジャンプ」または「JMPN:RLO = 0 ならばジャンプ」命令を含む場合、「RET:Return」命令を使用してはいけません。1 つのネットワークでは、1 つのジャンプコイルのみを使用できます。

戻り値(オペランド)の可能な設定
この命令の戻り値は、以下の値を持つことができます。
• Ret (RLO、論理演算の結果 RLO に対応します。条件が TRUE の場合だけ、RET 命令は条件付き命令として実行されるため、シグナル状態「1」は呼び出しプログラムブロックのイネーブル出力 ENO に提供されます。)• Ret True または Ret False (定数のそれぞれの値、TRUE または FALSE が、呼び出しプロ
グラムブロックに提供されます。)• Ret 値(BOOL タグ<Operand>の値が、呼び出しプログラムブロックに提供されます。)
この命令の戻り値をセットするには、命令の小さい黄色の三角形をクリックして、ドロッ
プダウンリストで必要な値を選択します。
次の表に、呼び出されたプログラムブロック内のネットワークでこの命令がプログラムされているときの呼び出しプログラムブロックのステータスを示します。
[RLO]

戻り値

呼び出しプログラムブロックの ENO

1

[RLO]

1

TRUE

1

FALSE

0

<Operand><Operand>

可能なメモリ領域 I、Q、M、
D、L、T、および C での
BOOL タグ
0[RLO]

プログラム実行は、呼び出されたプロ

TRUE

グラムブロックの次のネットワークでFALSE

続けられます。

<Operand>368

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,Qಯ

)$/6(
5(7「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。プログラム
実行は、呼び出されたプログラムブロックで終了し、呼び出しプログラムブロックで続けられます。呼び出しプログラムブロックのイネーブル出力 ENO は、シグナル状態「0」にリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.8.7

ランタイム制御

ENDIS_PW:パスワードの適正化の制限および有効化

説明「パスワード正当性の制限および有効化」命令を使用して、設定されたパスワードを CPU に対して正当化できるかどうかを指定します。正しいパスワードがわかっている場合でも、正規の接続を防止することができます。
コマンド呼び出し時に REQ パラメータのシグナル状態が「0」の場合、現在設定されている状態のみが、出力パラメータに表示されます。入力パラメータに変更を加えても、変更は
出力パラメータに転送されません。
この命令が呼び出され、REQ パラメータのシグナル状態が「1」のとき、パスワードに関するシグナル状態が入力パラメータ(F_PWD、FULL_PWD、R_PWD、HMI_PWD)から取得されます。
• シグナル状態「0」が存在する場合、パスワードによる承認が許可されません。
• シグナル状態「1」が存在する場合、パスワードを使用できます。
パスワードの有効化または無効化を個別に許可または禁止することができます。たとえば、
フェールセーフパスワードを除く、すべてのパスワードを禁止することができます。したがって、アクセスオプションを小さいユーザーグループに制限することができます。出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

369

基本命令
3.1 LAD
パラメータ(F_PWD_ON、FULL_PWD_ON、R_PWD_ON、HMI_PWD_ON)は、REQ パラメー
タに関係なく、常にパスワード使用の現在のステータスを示します。
設定済みでないパスワードの場合、入力のシグナル状態が TRUE でなければならず、出力にTRUE シグナル状態を返します。フェールセーフパスワードは、F-CPU の場合のみ設定できるため、標準 CPU では、常に TRUE シグナル状態と相互接続する必要があります。命令
がエラーを返す場合、呼び出しは効果がないままです。すなわち、直前のロックが有効なままです。
無効なパスワードは、以下の条件で再度有効にすることができます。
• CPU が工場出荷時設定にリセットされること。
• S7-1500 CPU のフロントパネルが、パスワードを再度有効にすることができる適切なメニューに移動することができるダイアログをサポートしていること。
• 「パスワードの適正化の制限および有効化」命令を呼び出す場合、目的のパスワードの
入力パラメータのシグナル状態が「1」であること。
• 動作モードスイッチを STOP にセットします。このスイッチの設定を RUN に戻すと直ちに、パスワードの適正化に対する制限が再確立されます。
• S7-1200 CPU への空きメモリカード(転送カードまたはプログラムカード)の挿入。
• S7-1200 CPU では、電源オフから電源オンへの移行によって、保護が無効になります。
この場合、プログラム(たとえば、スタートアップ OB)で、再度、「パスワード正当性の制限および有効化」命令を呼び出す必要があります。
注記「パスワード正当性の制限および有効化」命令は、HMI パスワードが有効にされていない場
合、HMI システムへのアクセスをブロックします。
注記
既存の適正化された接続はアクセス権を保持し、「パスワードの適正化の制限および有効化」命令を使用してそれらを制限することはできません。

S7-1500 CPU での偶発的なロックアウトの防止
S7-1500 CPU のフロントパネルで同じ設定を行うことができ、CPU は最新の設定を保存します。
偶発的なロックアウトを防止するには、S7-1500 CPU でモードセレクタを STOP に設定することによって保護を無効にすることができます。モードセレクタを RUN に設定するこ370

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADとによって、「パスワードの適正化の制限および有効化」命令を再度呼び出したり、フロ
ントパネルで追加の操作を実行したりせずに、保護が自動的に再度有効になります。

S7-1200 CPU での偶発的なロックアウトの防止
S7-1200 CPU には動作モードスイッチが存在しないため、電源オフから電源オンへの移行
時の保護は無効です。このため、ユーザープログラム内の特定のプログラムシーケンスを使用して偶発的なロックアウトを防止することをお奨めします。
これを行うには、サイクリック割り込み OB、または、メイン OB (OB 1)のタイマのどちらかを使用して、時間制御をプログラミングします。これは、電源オフから電源オンへの移行後に、遅延なく、該当 OB (OB 1 または OB 35)で、「パスワード正当性の制限および有効化」命令を再度呼び出すオプションを提供します。アプリケーションが動作していない
時間ウィンドウの表示時間を可能なかぎり短くし、パスワードの正当性に制限が存在しな
いようにするには、スタートアップ OB (OB 100)でこの命令を呼び出します。この手順は、未許可のアクセスに対する可能な最大限の保護を提供します。
意図しないロックアウトが発生した場合は、スタートアップ OB での呼び出しをスキップし(たとえば、入力パラメータを照会することによって)、ロックが再び有効になる前に、CPUへ接続確立する時間(たとえば、10 秒～1 分)を設定することができます。
ユーザープログラムコードにタイマを設定していない場合にロックアウトされたときは、空の転送カードまたはプログラムカードを CPU に挿入します。空の転送カードまたはプロ
グラムカードは、CPU の内部ロードメモリを削除します。この後、ユーザープログラムを再び STEP 7 から CPU にロードする必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

371

基本命令
3.1 LADS7-1200 CPU でパスワードが失われた場合の手順
パスワード保護された S7-1200 CPU のパスワードを紛失した場合は、空の転送カードまたはプログラムカードを使用して、パスワード保護されたプログラムを削除します。空の転送カードまたはプログラムカードは、CPU の内部ロードメモリを削除します。その後、新しいユーザープログラムを STEP 7 Basic から CPU にロードすることができます。
警告
空の転送カードの挿入
ランタイム中に CPU にトランスファカードを挿入すると、CPU は STOP モードに切り替わります。動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
転送カードを取り出した後、転送カードの内容は内部ロードメモリに存在します。この時
点に、カードにプログラムが含まれていないことを確認してください。
警告
空のプログラムカードの挿入
ランタイム中に CPU にプログラムカードを挿入すると、CPU は STOP モードに移行します。動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
プログラムカードが空であることを確認してください。内部ロードメモリが空のプログ
ラムカードにコピーされます。以前は空であったプログラムカードを取り出した後、内部
ロードメモリは空です。
CPU を RUN モードに切り替える前に、転送カードまたはプログラムカードを取り出す必要があります。

372

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

動作モードへのパスワードの使用の影響
次の表に、「パスワードの適正化の制限および有効化」命令によるパスワードの使用が動作モードと対応するユーザーの操作に与える影響を示します。
アクション

命令によるパスワードの保護

その後の基本状態

無効• STOP への動作モードの切り替え(制限なし)• メモリの手動リセット(PG、切り替え、MC(モーションコントロール)の変更)• 工場出荷時設定へのリセット• S7-1200-CPU:
ロックは無効で、プログラム(たとえば、スタートアップ OB)で再びこの命令を呼び出す必要があります。

電源オン後の基本状態• S7-1500 CPU:
有効(電源オフの前にロックが有効になった場合).パスワードの不許可のオ
プションは保持型です。
動作モードの移行 RUN/STARTUP/HOLD -> STOP 有効(命令、エラーまたは通信の終了によって)また パスワードはまだ使用できません。
は STOP -> STARTUP/RUN/HOLD

パラメータ
次の表に、「パスワードの適正化の制限および有効化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

REQ

Input

BOOL

I、Q、M、D、REQ パラメータのシグナ

L、または定数ル状態が「0」の場合
は、現在設定されているパスワードのシグナル状
態が照会されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

373

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

F_PWD

BOOL

I、Q、M、D、

フェールセーフなどの読

L、または定数

み取り/書き込みアクセス

Input• F_PWD = "0":パスワー
ドを許可しない• F_PWD = "1":パスワー
ドを許可する
FULL_PWD

Input

BOOL

I、Q、M、D、

読み取り/書き込みアクセ

L、または定数ス• FULL_PWD = "0":パス
ワードを許可しない• FULL_PWD = "1":パス
ワードを許可する

R_PWD

Input

BOOL

I、Q、M、D、

読み取りアクセス

L、または定数• R_PWD = "0":パスワー
ドを許可しない• R_PWD = "1":パスワー
ドを許可する

HMI_PWD

Input

BOOL

I、Q、M、D、HMI アクセス

L、または定数• HMI_PWD = "0":パスワードを許可しない• HMI_PWD = "1":パスワードを許可する

F_PWD_ON Output

BOOL

I、Q、M、D、L フェールセーフなどの読
み取り/書き込みアクセス• F_PWD_ON = "0":パス
ワードを許可しない• F_PWD_ON = "1":パス
ワードを許可する

FULL_PWD_ Output
ON

BOOL

I、Q、M、D、L 読み取り/書き込みアクセ
スステータス• FULL_PWD_ON = "0":パスワードを許可しない• FULL_PWD_ON = "1":
パスワードを許可する

374

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

R_PWD_ON Output

BOOL

I、Q、M、D、L 読み取りアクセスステー
タス• R_PWD_ON = "0":パス
ワードを許可しない• R_PWD_ON = "1":パス
ワードを許可する

HMI_PWD_

Output

BOOL

I、Q、M、D、L HMI アクセスステータス

ON• HMI_PWD_ON = "0":パスワードを許可しない• HMI_PWD_ON = "1":パスワードを許可する

RET_VAL

Output

WORD

I、Q、M、D、L エラー情報

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

8090

「パスワードの適正化の制限および有効化」命令はサポートされていません

80D0

フェールセーフのパスワードが未設定です。標準 CPU では、シグナル状態はTRUE であることが必要です。.

80D1

読み取り/書き込みアクセスが未設定です

80D2

読み取りアクセスが未設定です

80D3

HMI アクセスが未設定です*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

375

基本命令
3.1 LADPC システム
SHUT_DOWN:ターゲットシステムのシャットダウン

説明
命令「SHUT_DOWN:ターゲットシステムのシャットダウン」を使用して、PC ベースのオートメーションシステムをシャットダウンし、PC ベースのオートメーションシステム上のS7 ソフトウェアコントローラ CPU 150xS または Windows を再起動することができます。
この命令は、[命令]タスクカードの[基本命令|プログラム制御|ランタイム制御]で使用できます。
再起動は、たとえば、以下の場合に推奨されます。
• 産業用 UPS (無停電電源装置)がデジタル入力経由で電源異常を報告する場合• Windows が応答を停止するか、「ブルースクリーン」を表示する場合• ユーザープログラムで呼び出されるエラー OB が多すぎる場合

376

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
以下の表に、「ターゲットシステムのシャットダウン」命令のパラメータを示します。
パラメー 宣言

データ

タ

タイプ

MODE

入力

UINT

メモリ領域

説明

I、Q、M、D、L、

MODE = 1:CPU 150xS および Windows のシャットダ

または定数

ウン
CPU が STOP に移行し、保持データを保存します。
その後、CPU および Windows がシャットダウンされます。システムを手動で再起動する必要があります。
MODE = 2:CPU 150xS の再起動
CPU が STOP に移行し、保持データを保存します。
その後、CPU がシャットダウンされ、再起動されます。
MODE = 3:Windows の再起動。CPU は RUN のままになります。Windows が再起動されます(TIA ポータ
ル V14 以降では、MODE 3 は下位互換性のためだけに保持されます。MODE 4 または MODE 5 を使用することをお勧めします)。
MODE = 4:Windows が正常にシャットダウンされ、再起動されます。CPU は RUN のままになります。
MODE = 5:Windows の再起動(MODE 3 と同等。例
外:MODE 5 は、Windows がクラッシュした場合にのみ使用してください)。

COMMEN 入力

STRING

I、Q、M、D、LT

モード = 1、3 および 4 では、再起動の理由を指定できます。理由は Windows イベントログに出力されます。

Ret_Val

戻り値

WORD

Q、M、D、L

Ret_Val = 0:障害なし
Ret_Val = 8090:MODE に渡された値はサポートされていません。
Ret_Val = 8091:Windows が Shut_Down 命令の呼び出しに応答しません(モード 3 および 4 に対してのみ
有効)。
Ret_Val = 8092:このエラーが発生した場合は、SIMATIC カスタマーサポートに連絡してください(モード 3 および 4 に対してのみ有効)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

377

基本命令
3.1 LAD

RE_TRIGR:サイクルタイムモニタのリスタート

説明「サイクルタイムモニタのリスタート」命令は、CPU のサイクルモニタ時間のリスタートに使用します。この場合、ユーザーが CPU 構成で設定した時間でサイクルモニタ時間が再起動します。
この命令が、ハードウェア割り込みまたは診断エラー割り込みなど、優先度の高いブロッ
クで呼び出された場合、この命令は実行されず、イネーブル出力 ENO がシグナル状態「0」を返します。
この命令は、呼び出し数に関わりなく、一定期間(最大プログラムサイクルの 10 倍)以内に完全に実行されます。時間が期限切れになると、プログラムサイクルは延長できなくなります。

この命令の呼び出し
以下の呼び出し条件が適用されます。
• S7-1200 シリーズの CPU には以下が適用されます。
ファームウェアバージョン 2.2 より前のバージョンでは、優先度 1 のプログラムサイ
クルオーガニゼーションブロックでのみこの命令を呼び出すことができます。これは、すべてのオーガニゼーションブロックの中の最小優先度に対応します。優先度が高い
オーガニゼーションブロックでこの命令を呼び出すと、命令は実行されず、結果(BR ビット、イネーブル出力 ENO)は常に「0」です。
ファームウェアバージョン 2.2 以降の場合、優先度に関わりなく、すべてのオーガニ
ゼーションブロックでこの命令を呼び出すことができます。
• S7-1500 シリーズの CPU には以下が適用されます。
優先度に関わりなく、すべてのオーガニゼーションブロックでこの命令を呼び出すことができます。

パラメータ「サイクルタイムモニタのリスタート」命令には、パラメータはありません。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

378

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

STP:プログラム終了
説明「プログラムの終了」命令を使用し、CPU を STOP モードに設定してプログラムの実行を終了します。RUN から STOP への移行時の効果は CPU の構成によって異なります。
この命令の入力での論理演算の結果(RLO)が「1」の場合、CPU は「STOP」モードに切り替
わり、プログラムの実行が終了します。命令の出力のシグナル状態は評価されません。
命令の入力の RLO が「0」の場合、命令は実行されません。

パラメータ「プログラムの終了」命令にはパラメータはありません。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

GET_ERROR:ローカルでエラーを取得
説明「ローカルでエラーを取得」命令は、プログラムブロック内でのエラーの発生を照会するために使用されます。これは、通常、プログラミングまたはアクセスエラーを含みます。
システムがプログラムブロックの実行中にエラーを報告した場合、命令の最後の実行の後、このエラーがブロックの実行中に発生した最初のエラーの場合、詳細情報が、ERROR 出力のオペランドに格納されます。
ERROR 出力では、「ErrorStruct」システムデータタイプのオペランドのみを指定できます。
「ErrorStruct」システムデータタイプは、エラー情報が保存されている正確な構造体を指定します。追加の命令を使用することで、この構造体とプログラムが適切な応答をするかを評価できます。プログラムブロックで複数のエラーが発生した場合、発生した最初のエラ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

379

基本命令
3.1 LADーが修復された後にのみ、発生した次のエラーに関するエラー情報が命令によって出力されます。
注記
出力 ERRORERROR 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。
• イネーブル出力 ENO を照会する。

イネーブル入力 EN がシグナル状態「1」を返し、エラー情報が存在する場合のみ、イネーブル出力 ENO がセットされます。これらの条件の 1 つが満たされない場合、残りのプ
ログラム実行はこの命令の影響を受けません。
注記
ローカルエラー処理の有効化
この命令をプログラムブロックのプログラムコードに挿入すると直ちに、このローカルエ
ラー処理が有効になり、エラーが発生したとき、既定のシステム応答は無視されます。

エラー処理のオプション
エラー処理のオプションの概要は、AUTOHOTSPOT を参照してください。
複数のエラー処理オプションを含むローカルエラー処理の詳細な例は、AUTOHOTSPOT を参照してください。

パラメータ
次の表に、「ローカルでエラーを取得」命令のパラメータを示します。

380

パラメータ 宣言

データタイプ

メモリ領域

説明

ERROR

ErrorStruct

D、L

エラー情報

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

データタイプ「ErrorStruct」「ErrorStruct」データタイプは、グローバルデータブロックまたはブロックインターフェースに挿入することができます。挿入する都度、データ構造体に対して異なる名前を割り当
てると、そのデータタイプを複数回挿入することができます。そのデータ構造体の名前と、個々の構造体エレメントの名前は変更できません。エラー情報をグローバルデータブロッ
クに保存すると、他のプログラムブロックがエラー情報を読み出すこともできます。
次の表に、「ErrorStruct」データタイプの構造体を示します。
構造体コンポーネント

データタイプ説明

ERROR_ID

WORD

エラー ID

FLAGS

BYTE

エラーがプログラムブロック呼び出
し中に発生したかどうかを示します。
16#01:プログラムブロック呼び出し中のエラー
16#00:プログラムブロック呼び出し
中のエラーなし

REACTION

BYTE

既定の応答
0:無視(書き込みエラー)
1:代替値「0」で続行(読み取りエラー)
2:命令をスキップ(システムエラー)

CODE_ADDRESS

CREFプログラムブロックのアドレスおよびタイプに関する情報

BLOCK_TYPE

BYTE

エラーが発生したプログラムブロッ
クのタイプ:
1:オーガニゼーションブロック(OB)2:ファンクション(FC)3:ファンクションブロック(FB)

CB_NUMBER

UINT

プログラムブロックの番号

OFFSET

UDINT

内部メモリへの参照

MODE

BYTE

オペランドのアドレスに関する情報

OPERAND_NUMBER

UINT

マシンコマンドのオペランド番号

POINTER_NUMBER_LOCATIUINT(A) 内部ポインタ

ON

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

381

基本命令
3.1 LAD
構造体コンポーネント

データタイプ説明

SLOT_NUMBER_SCOPE

UINT(B) 内部メモリの記憶領域

DATA_ADDRESS

NREF

オペランドのアドレスに関する情報

BYTE(C) メモリ領域

AREA

L:16#40...16#7F、16#86、16#87、
16#8E、16#8F、16#C0...16#FF
I:16#81
Q:16#82
M:16#83
DB:16#40、16#84、16#85、
16#8A、16#8B
PI:16#01
PQ:16#02
テクノロジーオブジェクト:16#04
DB_NUMBER

UINT(D) データブロックの番号

OFFSET

UDINT(E) オペランドの相対アドレス

構造体コンポーネント「ERROR_ID」
次の表に、構造体コンポーネント「ERROR_ID」で出力できる値を示します。

382

ID*
(16 進数)ID*(10 進)

説明

0

0

エラーなし

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADID*(16 進数)ID*(10 進)

説明

2533

9523

無効なリファレンスが使用されました

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が間違っているか、またはファンクションが存在しま
せん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が間違っているか、またはファンクションブロックが存在しません。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

2576

9590

ローカルデータ配布のエラー

25A0

9632

TP の内部エラー

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

383

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
08/$XWR 5HDO)LHOG>LQGH[@

7DJ2XWB(QDEOHG

!
5($/


(1

(12

)LHOG>LQGH[@

,1

287



,1

(UURU5($&7,21*(7B(5525
(1

(12
(5525

%<7(
(UURU7DJ2XW

7DJ2XWB(QDEOHG
5

#Field[#index]タグへのアクセスでエラーが発生しました。「乗算」命令および#TagOut_Enabled オペランドのイネーブル出力 ENO のシグナル状態は、読み取り/アクセ
スエラーに関係なく「1」になり、乗算は「0.0」の値を使用して実行されます。このエラ
ーシナリオが発生した場合は、エラーを取得するために、「乗算」命令の後に「ローカルでエラーを取得」命令をプログラミングすることを推奨します。「ローカルでエラーを取得」
命令によって供給されるエラー情報は、比較命令「等しい」を使用して評価されます。
「#Error.REACTION」構造コンポーネントの値が「1」の場合、これは読み取り/アクセスエ
ラーが関係しており、#TagOut_Enabled 出力がリセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

GET_ERR_ID:ローカルでエラー ID を取得
説明「ローカルでエラー ID を取得」命令は、ブロック内のエラーの発生のクエリに使用されます。これは、通常、アクセスエラーによって生じます。この命令の最後の実行の後に、システムがブロック処理中にブロック実行に関するエラーを報告すると、タグで発生した最初のエラーのエラー ID が ID 出力に格納されます。

384

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
ID 出力では、WORD データタイプのオペランドのみを指定できます。ブロックで複数のエラーが発生した場合、発生した最初のエラーが修復された後にのみ、命令で発生した次のエラーのエラー ID が出力されます。
注記
ID 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。
• イネーブル出力 ENO を照会する。

命令「ローカルでエラー ID を取得」のイネーブル出力 ENO は、イネーブル入力 EN がシグナル状態「1」を返し、エラー情報が存在する場合のみ設定されます。これらの条件の 1つが満たされない場合、残りのプログラム実行は「ローカルでエラー ID を取得」命令の影
響を受けません。
この命令を他のトラブルシューティングオプションと組み合わせて実装する方法の例は、「関連項目」を参照してください。
注記「ローカルでエラー ID を取得」命令は、ブロック内のローカルエラー処理を可能にします。
「ローカルでエラー ID を取得」命令がブロックのプログラムコードに挿入されている場合、エラー発生時に、あらかじめ定義されたすべてのシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要は、AUTOHOTSPOT を参照してください。
複数のエラー処理オプションを含むローカルエラー処理の詳細な例は、AUTOHOTSPOT を参照してください。

パラメータ
次の表に、「ローカルでエラー ID を取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

ID

WORD

I、Q、M、D、L エラー ID

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

385

基本命令
3.1 LADID パラメータ
次の表に、ID パラメータに出力できる値を示します。
ID*(16 進数)ID*(10 進)

説明

0

0

エラーなし

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

無効なリファレンスが使用されました

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が間違っているか、またはファンクションが存在しま
せん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が間違っているか、またはファンクションブロックが存在しません。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

386

9632

TP の内部エラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADID*(16 進数)ID*(10 進)

説明

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
08/$XWR 5HDO)LHOG>LQGH[@

7DJ2XWB(QDEOHG

!
5($/


(1

(12

)LHOG>LQGH[@

,1

287



,1

7DJ,'*(7B(55B,'
(1

(12
,'

7DJ2XW

029(,17
7DJ,'





(1

(12

,1

287

7DJ2XW#Field[#index]タグへのアクセスでエラーが発生しました。「乗算」命令および#TagOut_Enabled オペランドのイネーブル出力 ENO のシグナル状態は、読み取り/アクセ
スエラーに関係なく「1」になり、乗算は「0.0」の値を使用して実行されます。このエラ
ーシナリオが発生した場合は、エラーを取得するために、「乗算」命令の後に「ローカルでエラー ID を取得」命令をプログラミングすることを推奨します。「ローカルでエラー IDを取得」命令によって供給されるエラー情報は、比較命令「等しい」を使用して評価されます。#TagID オペランドが ID 2522 を返す場合、これは読み取り/アクセスエラーが関係しており、値「100.0」が#TagOut 出力に書き込まれます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

387

基本命令
3.1 LADINIT_RD:すべての保持データの初期化

説明「すべての保持データを初期化」命令を使用して、すべてのデータブロック、ビットメモ
リ、および SIMATIC タイマとカウンタの保持データを同時にリセットできます。この命令は、実行するとプログラムサイクル持続時間を超過する場合があるため、スタートアップ
OB 内でのみ実行が可能です。

パラメータ
次の表に、「すべての保持データを初期化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

REQ

Input

BOOL

I、Q、M、D、

入力「REQ」のシグナル

L、T、C、また状態が「1」の場合、すは定数

べての保持データがリセットされます。

RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

388

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADRET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

80B5

この命令はスタートアップ OB 内にプログラムされていないため、実行でき
ません。

一般エラ

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
,1,7B5'
ಯ7DJ,QBಯಯ7DJB5(4ಯ

(1
5(4

(12
5(7B9$/

ಯ7DJ2XWಯಯ7DJB5HVXOWಯ

オペランド「TagIn_1」および「Tag_REQ」のシグナル状態が「1」の場合、命令が実行されます。すべてのデータブロック、ビットメモリ、および SIMATIC タイマとカウンタの保持データがリセットされます。命令がエラーなく実行されると、ENO イネーブル出力のシグナル状態が「1」となります。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

389

基本命令
3.1 LADWAIT:遅延時間の設定

説明「遅延時間の設定」命令は、指定された時間の間プログラム実行を一時停止します。命令のWT パラメータに、マイクロ秒で時間を指定します。
遅延時間は、-32768 から最大+32767 マイクロ秒 (μs)が設定可能です。可能な限り最短の遅延時間は CPU に応じて決まり、この命令の実行時間に対応します。
この命令の実行は、優先度の高いイベントによって割り込まれる場合があり、その場合は、エラー情報を返しません。
注記
負の遅延時間パラメータ WT で負の遅延時間を指定すると、イネーブル出力 ENO または RLO と BR ビットが、シグナル状態 FALSE を返します。負の遅延時間は CPU には影響しません。イネー
ブル出力 ENO にリンクされた以下の命令は、LAD または FBD では実行されません。

パラメータ
次の表に、「遅延時間の設定」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

WT

Input

INT

I、Q、M、D、

遅延時間(μs)

L、P、または定数
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

390

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADRUNTIME:プログラムランタイムの測定

説明「プログラムランタイムの測定」命令を使用して、プログラム全体、個々のブロック、またはコマンドシーケンスのランタイムを測定します。
プログラム全体のランタイムを測定する場合は、「プログラムランタイムの測定」命令をOB1 で呼び出します。最初の呼び出しでランタイムの測定が開始され、2 回目の呼び出し後に出力 RET_VAL がプログラムのランタイムを返します。測定されたランタイムには、たとえば上位レベルのイベントや通信による割り込みなど、プログラム実行中に発生する可能性のあるすべての CPU プロセスが含まれます。「プログラムランタイムの測定」命令はCPU の内部カウンタを読み取り、値を IN-OUT パラメータ MEM に書き込みます。この命令
は、内部カウンタ周波数に基づいて現在のプログラムランタイムを計算し、出力 RET_VALに書き込みます。
個々のブロック、または個々のコマンドシーケンスのランタイムを測定する場合、3 つの個別のネットワークが必要です。プログラム内の個々のネットワークで、「プログラムラ
ンタイムの測定」命令を呼び出します。命令のこの最初の呼び出しでランタイム測定の開始位置を設定します。その後、次のネットワーク内で目的のプログラムブロック、または
コマンドシーケンスを呼び出します。他のネットワーク内で、「プログラムランタイムの測定」命令の 2 回目の呼び出しを行い、命令の最初の呼び出しで行ったように同じメモリを
IN-OUT パラメータ MEM に割り当てます。3 番目のネットワークの「プログラムランタイ
ムの測定」命令は内部 CPU カウンタを読み取り、内部カウンタ周波数に基づいてプログ
ラムブロック、またはコマンドシーケンスの現在のランタイムを計算し、それを出力
RET_VAL に書き込みます。
「プログラムランタイムの測定」命令は、内部の高周波数カウンタを使用して時間を計算します。カウンタがオーバーフローすると、この命令は 0.0 以下の値を返します。S7-1200
CPU でファームウェアバージョン V4.2 より前のバージョンの場合、これが最大で分あたり
1 回起きる場合があります。これらのランタイム値は無視してください。
注記
コマンドシーケンスのランタイムは、正確に測定することはできません。これは、コマン
ドシーケンス内の命令のシーケンスが、プログラムを最適にコンパイルする過程で変更されるためです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

391

基本命令
3.1 LADパラメータ
次の表に、「プログラムランタイムの測定」命令のパラメータをリストします。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

MEM

InOut

LREAL

I、Q、M、D、L 内容は、内部目的専用です。

RET_VAL

Output

LREAL

I、Q、M、D、L 測定したランタイムを秒単位で返します例
次の例は、命令がプログラムブロックのランタイム計算に基づいてどのように動作するかを示します。
ネットワーク 1:
5817,0(
ಯ7DJ,Qಯಯ7DJ0HPRU\ಯ

(1

(12

0(0

5(7B9$/

ಯ7DJB5HVXOWಯ

ネットワーク 2:
'%
ಯ%HVWBEHIRUHBGDWHB'%ಯ
)%
ಯ%HVWBEHIRUHBGDWHಯ

(1

(12

ネットワーク 3:5817,0(
ಯ7DJ,Qಯಯ7DJ0HPRU\ಯ

392

(1
0(0

(12
5(7B9$/

ಯ7DJ5HVXOWB5XQWLPHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
ネットワーク 1 の「TagIn1」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令の最初の呼び出しでランタイムの測定が開始され、TagMemory オペ
ランドでの命令の 2 回目の呼び出しの参照先としてバッファリングされます。
ネットワーク 2 で、「Best_before_date」プログラムブロック FB1 が呼び出されます。
FB1 プログラムブロックの実行が終了し、「TagIn1」オペランドのシグナル状態が「1」の場合、ネットワーク 3 の命令が実行されます。命令の 2 回目の呼び出しにより、プログ
ラムブロックのランタイムが計算され、結果が出力 RET_VAL に書き込まれます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。
プログラムの合計サイクルタイムを測定する方法の詳細な例は、Siemens Industry Online
Support の次のエントリ ID を参照してください。87668055 (https://
support.industry.siemens.com/cs/ww/en/view/87668055)

3.1.9

ワード論理演算

3.1.9.1

AND: AND 演算

説明「論理積(AND)演算」命令を使用して、IN1 入力の値と IN2 入力の値を 1 ビットずつ AND
論理によって結合し、結果を OUT 出力で照会できます。
命令が実行されると、IN1 入力の値のビット 0 と IN2 入力の値のビット 0 が論理的に AND
演算されます。結果は出力 OUT のビット 0 に格納されます。同じ論理演算が、指定された値の他のすべてのビットに実行されます。
入力の数は、命令ボックスで拡張できます。追加された入力は、ボックスで昇順に番号付
けされます。命令が実行されると、すべての使用可能な入力パラメータの値が、AND 論理
で結合(AND 演算)されます。結果が、OUT 出力に保存されます。
論理演算の両方のビットのシグナル状態が「1」になる場合のみ、結果ビットのシグナル状
態が「1」になります。論理演算の 2 つのビットの 1 つのシグナル状態が「0」の場合、対応する結果ビットはリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

393

基本命令
3.1 LADパラメータ
次の表に、「AND 演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

ビット列

I、Q、M、D、

論理演算の最初の値

L、P、または定
数
IN2

Input

I、Q、M、D、

ビット列

論理演算の 2 番目の値

L、P、または定
数
INn

Input

I、Q、M、D、

ビット列

値が論理的に結合される

L、P、または定 その他の入力
数
OUT

Output

I、Q、M、D、

ビット列

命令の結果

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ

$1'
:25'
(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

ಯ7DJ2XWಯ

(12
287

ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

394

パラメータ

オペランド

値

IN1

Tag_Value1

0101 0101 0101 0101

IN2

Tag_Value20000 0000 0000 1111

OUT

Tag_Result

0000 0000 0000 0101

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「Tag_Value1」の値とオペランド「Tag_Value2」の値が AND 演算されます。結果は 1 ビッ
トずつマッピングされ、オペランド「Tag_Result」に出力されます。イネーブル出力 ENO
および出力「TagOut」のシグナル状態が「1」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.9.2

OR: OR 論理和演算

説明「論理和(OR)演算」命令を使用して、IN1 入力の値と IN2 入力の値を 1 ビットずつ OR 論理
によって結合し、結果を OUT 出力で照会できます。
命令が実行されると、IN1 入力の値のビット 0 と IN2 入力の値のビット 0 が OR 論理和演算によって結合されます。結果は出力 OUT のビット 0 に格納されます。同じ論理演算が、指定されたタグのすべてのビットについて実行されます。
入力の数は、命令ボックスで拡張できます。追加された入力は、ボックスで昇順に番号付
けされます。命令が実行されると、すべての使用可能な入力パラメータの値が、OR 論理で結合(OR 演算)されます。結果が、OUT 出力に保存されます。
論理演算の 2 つのビットのうち少なくとも 1 つのシグナル状態が「1」ならば、結果ビットのシグナル状態は「1」になります。論理演算の両方のビットのシグナル状態が「0」の場合、対応する結果ビットがリセットされます。

パラメータ
次の表に、「OR 演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

ビット列

I、Q、M、D、

論理演算の最初の値

L、P、または定
数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

395

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN2

ビット列

I、Q、M、D、

論理演算の 2 番目の値

Input

L、P、または定
数
INn

Input

I、Q、M、D、

ビット列

値が論理的に結合される

L、P、または定 その他の入力
数
OUT

Output

I、Q、M、D、

ビット列

命令の結果

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ

25
:25'
(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

ಯ7DJ2XWಯ

(12
287

ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value1

0101 0101 0101 0101

IN2

Tag_Value20000 0000 0000 1111

OUT

Tag_Result

0101 0101 0101 1111

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「Tag_Value1」の値とオペランド「Tag_Value2」の値が OR 演算されます。結果は 1 ビッ
トずつマッピングされ、オペランド「Tag_Result」に出力されます。イネーブル出力 ENO
および出力「TagOut」のシグナル状態が「1」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

396

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.9.3

XOR: EXCLUSIVE OR 排他的論理和演算

説明「排他的論理和演算」命令を使用して、IN1 入力の値と IN2 入力の値を 1 ビットずつ排他的OR 論理によって結合し、結果を OUT 出力で照会することができます。
命令が実行されると、IN1 入力の値のビット 0 と IN2 入力の値のビット 0 が排他的 OR 論
理和演算によって結合されます。結果は出力 OUT のビット 0 に格納されます。同じ論理演算が、指定された値のすべての他のビットについて実行されます。
入力の数は、命令ボックスで拡張できます。追加された入力は、ボックスで昇順に番号付
けされます。命令が実行されると、すべての使用可能な入力パラメータの値が、排他的 OR
論理で結合されます。結果が、OUT 出力に保存されます。
論理演算の 2 つのビットのうち 1 つのシグナル状態が「1」の場合、結果ビットのシグナル
状態は「1」になります。論理演算の両方のビットのシグナル状態が「1」または「0」の場合、対応する結果ビットがリセットされます。

パラメータ
次の表に、「排他的論理和演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN1

Input

ビット列

I、Q、M、D、

論理演算の最初の値

L、P、または定
数
IN2

Input

ビット列

I、Q、M、D、

論理演算の 2 番目の値

L、P、または定
数
INn

Input

ビット列

I、Q、M、D、値が論理的に結合される

L、P、または定 その他の入力
数
OUT

Output

ビット列

I、Q、M、D、

命令の結果

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

397

基本命令
3.1 LAD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯ

;25
:25'
(1

ಯ7DJB9DOXHಯ

,1

ಯ7DJB9DOXHಯ

,1

ಯ7DJ2XWಯ

(12
287

ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value1

0101 0101 0101 0101

IN2

Tag_Value20000 0000 0000 1111

OUT

Tag_Result

0101 0101 0101 1010

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「Tag_Value1」の値とオペランド「Tag_Value2」の値が、排他的 OR 論理によって結合されます。結果は 1 ビットずつマッピングされ、オペランド「Tag_Result」に出力されます。
イネーブル出力 ENO および出力「TagOut」のシグナル状態が「1」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.9.4

INVERT: 1 の補数の作成

説明「1 の補数の作成」命令を使用して、入力 IN のビットのシグナル状態を反転します。この命令が処理されると、16 進数マスク(16 ビットの数では W#16#FFFF、または 32 ビットの数では DW#16#FFFF FFFF)によって入力 IN の値が排他的 OR にリンクされます。これによって、個々のビットのシグナル状態を反転させ、出力 OUT に格納します。

398

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「1 の補数の作成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

ビット列、整数 I、Q、M、D、

入力値

L、P、または定数
OUT

Output

ビット列、整数 I、Q、M、D、

入力 IN の値の 1 の補数

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
,19
:25'

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

W#16#000F

W#16#7E

OUT

TagOut_Value

W#16#FFF0

W#16#81「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、入力「TagIn_Value」の個々のビットのシグナル状態を反転させ、結果を出力「TagOut_Value」に書き込みます。イネーブル出力 ENO および出力「TagOut」のシグナル
状態が「1」にセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

399

基本命令
3.1 LAD

3.1.9.5

DECO: デコード

説明
「デコード」命令を使用して、入力値で指定されたビットを出力値にセットできます。
「デコード」命令は、IN 入力の値を読み出し、そのビットを出力値にセットします。そのビット位置は、読み出された値に対応します。出力値の他のビットはゼロで埋められます。
IN 入力の値が 31 よりも大きい場合、剰余 32 命令が実行されます。

パラメータ
次の表に、「デコード」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

UINT

I、Q、M、D、設定される出力値のビッ

L、P、または定 ト位置
数
OUT

Output

ビット列

I、Q、M、D、

出力値

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
'(&2
ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

8,17

WR ':25'

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。

400

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADಯ7DJ,QB9DOXHಯ

ಯ7DJ2XWB9DOXHಯ

 



 「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令はオペランド「TagIn_Value」の値からビット番号「3」を入力で読み取り、出力で 3 番目のビットをオペランド「TagOut_Value」の値にセットします。
この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.9.6

ENCO: エンコード

説明「エンコード」命令を使用して、入力値の最下位ビットのビット番号を読み出し、OUT 出力に送信できます。
「エンコード」命令は、IN 入力の値の最下位ビットを選択し、そのビット番号を OUT 出力のタグに書き込みます。

パラメータ
次の表に、「エンコード」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

ビット列

I、Q、M、D、

入力値

L、P、または定数
OUT

Output

INT

I、Q、M、D、

出力値

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

401

基本命令
3.1 LAD
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
(1&2
':25'

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

(1

(12

,1

287

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。

ಯ7DJ,QB9DOXHಯ
ಯ7DJ2XWB9DOXHಯ

 



 

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、「TagIn_Value」入力の最下位ビットを選択し、ビット位置「3」を「TagOut_Value」出力のタグに書き込みます。
この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.9.7

SEL: 選択説明
スイッチ(G 入力)に応じて、「選択」命令は、入力 IN0 または IN1 の 1 つを選択し、その内容を OUT 出力にコピーします。入力 G のシグナル状態が「0」の場合、入力 IN0 の値が移動されます。入力 G のシグナル状態が「1」の場合、入力 IN1 の値が出力 OUT に移動されます。
すべてのパラメータのすべてのタグは、同じデータタイプであることが必要です。

402

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「選択」命令のパラメータを示します。
パラメー
タ

宣言

EN

Input

データタイプ

メモリ領域

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、

I、Q、

説明
イネーブル入力

M、D、L M、D、L
ENO

Output

BOOL

BOOL

I、Q、

I、Q、

イネーブル出力

M、D、L M、D、L
G

Input

BOOL

BOOL

I、Q、

I、Q、

M、D、

M、D、

L、また

L、T、C、

は定数

または定

スイッチ

数
IN0

Input

ビット列、 ビット

I、Q、

I、Q、

整数、浮動 列、整

M、D、

M、D、

小数点数、 数、浮動

L、P、ま L、P、ま

タイマ、

小数点

たは定数 たは定数

TOD、

数、タイ

CHAR、

マ、

WCHAR、

TOD、

DATE

LTOD、

最初の入力値LDT、
CHAR、
WCHAR、DATE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

403

基本命令
3.1 LAD
パラメー
タ

宣言

IN1

Input

データタイプS7-1200

S7-1500

メモリ領域
S7-1200

S7-1500

ビット列、 ビット

I、Q、

I、Q、

整数、浮動 列、整

M、D、

M、D、

小数点数、 数、浮動

L、P、ま L、P、ま

タイマ、

小数点

たは定数 たは定数

TOD、

数、タイ

CHAR、

マ、

WCHAR、

TOD、

DATE

LTOD、

説明
2 番目の入力値

LDT、
CHAR、
WCHAR、
DATE
OUT

Output

ビット列、 ビット

I、Q、

I、Q、

整数、浮動 列、整

M、D、

M、D、

小数点数、 数、浮動

L、P

L、P

タイマ、

小数点

TOD、

数、タイ

CHAR、

マ、

WCHAR、

TOD、

DATE

LTOD、

結果

LDT、
CHAR、
WCHAR、
DATE
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

404

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJ,QB*ಯ

6(/
:25'
(1

(12

*

287

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ2XWಯಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

G

TagIn_G

01

IN0

TagIn_Value0

W#16#0000

W#16#4C

IN1

TagIn_Value1

W#16#FFFF

W#16#5E

OUT

TagOut_Value

W#16#0000

W#16#5E「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。「TagIn_G」
入力のシグナル状態に基づいて、「TagIn_Value0」または「TagIn_Value1」入力の値が選択され、「TagOut_Value」出力に移動されます。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.9.8

MUX: 多重化

説明「多重化」命令を使用して、選択した入力の内容を出力 OUT にコピーします。命令ボック
スの選択可能な入力の数は拡張できます。最大 32 の入力を宣言できます。
入力はボックスで自動的に割り当てられます。番号の割り当ては IN0 から開始され、新しい入力ごとに継続的にインクリメントされます。K パラメータを使用して、その内容が OUT
出力にコピーされる入力を定義できます。K パラメータの値が使用可能な入力の数よりも大TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

405

基本命令
3.1 LAD
きい場合、ELSE パラメータの内容が OUT 出力にコピーされ、ENO イネーブル出力にシグ
ナル状態「0」が割り当てられます。
「多重化」命令は、すべての入力と OUT 出力のタグが同じデータタイプの場合にのみ実行できます。K パラメータは、指定できるのが整数のみであるため、例外です。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• K パラメータの入力は、使用可能な入力の外側にあります。これは、ELSE 入力が使用されるかどうかに関わらず適用されます。OUT 出力の値は変更されたままになります。
• 命令の実行中にエラーが発生していること。

パラメータ
次の表に、
「多重化」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域 説明S7-1200

S7-1500

BOOL

BOOL

I、Q、M、 イネーブル入力
D、L

ENO

Output

BOOL

BOOL

I、Q、M、 イネーブル出力
D、L

K

Input

整数

I、Q、M、 内容がコピーされる

整数

D、L、P、入力を指定します。

または定数 • K = 0 ならば、パラメータ IN0• K = 1 ならば、パラメータ IN1 など
IN0

Input

2 進数、整2 進数、整 I、Q、M、 最初の入力値数、浮動小数、浮動小 D、L、P、

数点数、タ

数点数、タ または定数

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、DATE

TOD、
LTOD、
DATE、LDT406

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言
IN1

Input

データタイプ

メモリ領域 説明S7-1200

S7-1500

2 進数、整2 進数、整 I、Q、M、 2 番目の入力値数、浮動小数、浮動小 D、L、P、

数点数、タ

数点数、タ または定数

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、DATE

TOD、
LTOD、
DATE、LDT

INn

Input

2 進数、整2 進数、整 I、Q、M、 オプションの入力値数、浮動小数、浮動小 D、L、P、

数点数、タ

数点数、タ または定数

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、DATE

TOD、
LTOD、
DATE、LDT

ELSE

Input

2 進数、整2 進数、整 I、Q、M、 K > n の場合コピーす数、浮動小数、浮動小 D、L、P、

数点数、タ

数点数、タ または定数

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、DATE

TOD、る値を指定します。

LTOD、
DATE、LDTOUT

Output2 進数、整2 進数、整 I、Q、M、 値がコピーされる出数、浮動小数、浮動小 D、L、P

数点数、タ

数点数、タ

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、DATE

TOD、

力

LTOD、
DATE、LDTTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

407

基本命令
3.1 LAD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJB,QSXWಯ

08;
':25'
(1

(12

ಯ7DJB1XPEHUಯ

.

287

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

(/6(

ಯ7DJB2XWSXWಯ
6
ಯ7DJB5HVXOWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

K

Tag_Number

1

IN0

Tag_Value_0

DW#16#00000000

IN1

Tag_Value_1

DW#16#003E4A7D

ELSE

Tag_Value_2

DW#16#FFFF0000

OUT

Tag_Result

DW#16#003E4A7D「Tag_Input」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペ
ランド「Tag_Number」の値に応じて、入力「Tag_Value_1」の値がコピーされ、出力「Tag_Result」のオペランドに割り当てられます。この命令がエラーなしで実行された場合、「ENO」および「Tag_Output」イネーブル出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

408

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.9.9

DEMUX: 逆多重化

説明
「逆多重化」命令を使用して、選択した出力に入力 IN の内容をコピーできます。選択可能な
出力数は命令ボックスで拡張できます。このボックスで、出力は自動的に番号付けされます。番号の割り当ては OUT0 から開始され、新しい出力ごとに継続します。K パラメータを使用して、IN 入力の内容がコピーされる出力を定義できます。その他の出力は、変更されません。パラメータ K の値が使用可能な出力の数より大きい場合、入力 IN の内容がパラメータ ELSE にコピーされ、イネーブル出力 ENO にシグナル状態「0」が割り当てられます。
「逆多重化」命令は、入力 IN とすべての出力のタグが同じデータタイプの場合のみ実行できます。K パラメータは、指定できるのが整数のみであるため、例外です。
次のいずれかの条件が満たされると、イネーブル出力 ENO がリセットされます。
• EN イネーブル入力のシグナル状態が「0」であること。
• K パラメータの値が、使用可能な出力の数を超えていること。
• 命令の実行中にエラーが発生していること。

パラメータ
次の表に、「逆多重化」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域 説明
I、Q、M、 イネーブル入力
D、L

ENO

Output

BOOL

BOOL

I、Q、M、 イネーブル出力
D、L

K

Input

整数

整数

I、Q、M、 入力値(IN)がコピーされ
D、L、P、る出力を指定します。

または定数 • K = 0 ならば、パラメ
ータ OUT0• K = 1 ならば、パラメ
ータ OUT1 など

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

409

基本命令
3.1 LAD
パラメータ 宣言
IN

Input

データタイプ

メモリ領域 説明S7-1200

S7-1500

2 進数、

2 進数、整 I、Q、M、 入力値

整数、浮 数、浮動

D、L、P、

動小数点 小数点または定数

数、タイ 数、タイ
マ、

マ、

CHAR、

CHAR、

WCHAR、 WCHAR、
TOD、

TOD、

DATE

LTOD、
DATE、
LDT

OUT0

Output2 進数、

2 進数、整 I、Q、M、 最初の出力

整数、浮 数、浮動

D、L、P

動小数点 小数点数、タイ 数、タイ
マ、

マ、

CHAR、

CHAR、

WCHAR、 WCHAR、
TOD、

TOD、

DATE

LTOD、
DATE、
LDT

OUT1

Output2 進数、

2 進数、整 I、Q、M、 2 番目の出力

整数、浮 数、浮動

D、L、P

動小数点 小数点数、タイ 数、タイ
マ、

マ、

CHAR、

CHAR、

WCHAR、 WCHAR、
TOD、

TOD、

DATE

LTOD、
DATE、
LDT

410

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言
OUTn

データタイプ

Output

メモリ領域 説明S7-1200

S7-1500

2 進数、

2 進数、整 I、Q、M、 オプションの出力

整数、浮 数、浮動

D、L、P

動小数点 小数点数、タイ 数、タイ
マ、

マ、

CHAR、

CHAR、

WCHAR、 WCHAR、
TOD、

TOD、

DATE

LTOD、
DATE、
LDT

ELSE

Output2 進数、

2 進数、整 I、Q、M、 K > n の場合に入力値

整数、浮 数、浮動

D、L、P

動小数点 小数点(IN)がコピーされる出力。

数、タイ 数、タイ
マ、

マ、

CHAR、

CHAR、

WCHAR、 WCHAR、
TOD、

TOD、

DATE

LTOD、
DATE、
LDT

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
使用可能なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
'(08;
ಯ7DJB,QSXWಯ

':25'

ಯ7DJB2XWSXWಯ
6

(1

(12

ಯ7DJB1XPEHUಯ

.

287

ಯ7DJB2XWSXWBಯಯ7DJB9DOXHಯ

,1

287

ಯ7DJB2XWSXWBಯ

(/6(

ಯ7DJB2XWSXWBಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

411

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
表 3-1

ネットワーク実行前の「逆多重化」命令の入力値

パラメータ

オペランド

K

Tag_Number

1

4

IN

Tag_Value

DW#16#FFFFFFFF

DW#16#003E4A7D

表 3-2

値

ネットワーク実行後の「逆多重化」命令の出力値

パラメータ

オペランド

値

OUT0

Tag_Output_0

不変

不変

OUT1

Tag_Output_1

DW#16#FFFFFFFF

不変

ELSE

Tag_Output_2

不変

DW#16#003E4A7D「Tag_Input」のシグナル状態が「1」の場合、この命令が実行されます。オペランド「Tag_Number」の値に応じて、入力「IN」の値が対応する出力にコピーされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.10

シフトとローテーション

3.1.10.1

SHR:右へシフト

説明「右へシフト」命令を使用して、入力 IN のオペランドの内容を 1 ビットずつ右へシフトし、結果を OUT 出力で照会できます。N パラメータを使用し、指定された値をシフトするビ
ット位置の数を指定します。
パラメータ N の値が「0」の場合、入力 IN の値が出力 OUT のオペランドにコピーされます。
パラメータ N の値がビット位置の数より大きい場合、入力 IN のオペランド値が使用可能なビット位置の数だけ右にシフトされます。

412

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
符号なしの値がシフトされると、オペランド領域の左側の解放されたビット位置はゼロで埋められます。指定された値に符号が存在する場合、解放されたビット位置は符号ビットのシグナル状態で埋められます。
次の図に、整数データタイプのオペランドの内容が、どのように 4 ビット位置右へシフトされるかを示します。


,1



1

䶵⚆
ኰአእ

287



 













































世㓏

























ሶቯቬቑኰአእ
ቒ⯀ቲቯቡሼᇭ

屲㟍ሸቯቂኰአእ⇜函ቒᇬ䶵⚆ኰአእቑ
≰⚆䕅㏚ቊ⩚ቤቬቯቡሼᇭ

パラメータ
次の表に、「右へシフト化」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

メモリ領
域

BOOL

BOOL

I、Q、

説明
イネーブル入力

M、D、L
ENO

Output

BOOL

BOOL

I、Q、

イネーブル出力

M、D、L
IN

Input

ビット列、整 ビット列、

I、Q、

数

M、D、

整数

シフトされる値

L、または定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

413

基本命令
3.1 LAD
パラメータ 宣言
N

Input

データタイプ

メモリ領域

説明S7-1200

S7-1500

USINT, UINT,

USINT, UINT, I、Q、

値がシフトされる

UDINT

UDINT,

M、D、

ビット位置の数

ULINT

L、または
定数

OUT

Output

ビット列、整 ビット列、

I、Q、

数

M、D、L

整数

命令の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6+5
:25'

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ
ಯ7DJB1XPEHUಯ

(1

,1

1

(12

287


ಯ7DJ2XWಯ
6
ಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0011 1111 1010 1111

N

Tag_Number

3

OUT

TagOut_Value

0000 0111 1111 0101

オペランド「TagIn」のシグナル状態が「1」の場合、「右へシフト」命令が実行されます。
オペランド「TagIn_Value」の内容が、3 ビット位置右へシフトされます。結果が「TagOut_Value」出力に送信されます。この命令がエラーなしで実行された場合、ENO イ
ネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

414

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.10.2

SHL:左へシフト

説明「左へシフト」命令を使用して、入力 IN のオペランドの内容を 1 ビットずつ左へシフトし、結果を OUT 出力で照会できます。N パラメータを使用し、指定された値をシフトするビ
ット位置の数を指定します。
パラメータ N の値が「0」の場合、入力 IN の値が出力 OUT のオペランドにコピーされます。
パラメータ N の値がビット位置の数より大きい場合、入力 IN のオペランド値が使用可能なビット位置の数だけ右にシフトされます。
シフトによって解放されたオペランド領域の右側のビット位置は、ゼロで埋められます。
次の図に、WORD データタイプのオペランドの内容が、どのように 6 ビット位置左へシフ
トされるかを示します。


,1 




1

287



















































世㓏

     ሶቯቬቑኰአእ
ቒ⯀ቲቯቡሼᇭ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020











屲㟍ሸቯቂኰአእ
⇜函ቒᇬኙዊቊ⩚ቤቬቯቡሼᇭ

415

基本命令
3.1 LADパラメータ
次の表に、「左へシフト」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

メモリ領
域

BOOL

BOOL

I、Q、

説明
イネーブル入力

M、D、L
ENO

Output

BOOL

BOOL

I、Q、

イネーブル出力

M、D、L
IN

Input

ビット列、整 ビット列、

I、Q、

数

M、D、

整数

シフトされる値

L、または
定数
N

Input

USINT, UINT, USINT, UINT, I、Q、

値がシフトされるビ

UDINT

ット位置の数UDINT,

M、D、

ULINT

L、または
定数

OUT

Output

ビット列、整 ビット列、

I、Q、

数

M、D、L

整数

命令の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6+/
:25'

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ
ಯ7DJB1XPEHUಯ

416

(1

,1

1

(12

287


ಯ7DJ2XWಯ
6
ಯ7DJ2XWB9DOXHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0011 1111 1010 1111

N

Tag_Number

4

OUT

TagOut_Value

1111 1010 1111 0000

オペランド「TagIn」のシグナル状態が「1」の場合、「左へシフト」命令が実行されます。
オペランド「TagIn_Value」の内容は、4 ビット位置左へシフトされます。結果が「TagOut_Value」出力に送信されます。この命令がエラーなしで実行された場合、ENO イ
ネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.10.3

ROR:右へローテーション

説明「右へローテーション」命令を使用して、IN 入力のオペランドの内容を 1 ビットずつ右へ
ローテーションし、結果を OUT 出力で照会できます。N パラメータを使用して、指定された値をローテーションするビット位置の数を指定します。ローテーションによって解放されたビット位置は、押し出されたビット位置で埋められます。
パラメータ N の値が「0」の場合、入力 IN の値が出力 OUT のオペランドにコピーされます。
使用可能なビット位置の数よりもパラメータ N の値が大きい場合でも、指定されたビット位置の数だけ IN 入力のオペランド値がローテーションされます。
次の図に、DWORD データタイプのオペランドの内容が、どのように 3 ビット位置右へローテーションされるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

417

基本命令
3.1 LAD
,1 

       

1

世㓏

287

        
ኔኲእሸቯቂቇቑኰአእቑ≰⚆䕅㏚ሯ屲㟍ሸቯቂ⫃㓏቎㗎⏴ሸቯቡሼᇭ

パラメータ
次の表に、「右へローテーション」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

メモリ領
域

BOOL

BOOL

I、Q、

説明
イネーブル入力

M、D、L
ENO

Output

BOOL

BOOL

I、Q、

イネーブル出力

M、D、L
IN

Input

ビット列、

ビット列、

I、Q、

ローテーションされ

整数

整数

M、D、

る値

L、または
定数
N

Input

USINT, UINT, USINT, UINT, I、Q、

値がローテーション

UDINT

されるビット位置のUDINT,

M、D、

ULINT

L、または 数定数

OUT

Output

ビット列、

ビット列、

I、Q、

整数

整数

M、D、L

命令の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

418

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
525
:25'

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ
ಯ7DJB1XPEHUಯ

(1

,1

1

(12

287


ಯ7DJ2XWಯ
6
ಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0000 1111 1001 0101

N

Tag_Number

5

OUT

TagOut_Value

1010 1000 0111 1100

オペランド「TagIn」のシグナル状態が「1」の場合、「右へローテーション」命令が実行されます。オペランド「TagIn_Value」の内容が、5 ビット位置右へローテーションされます。
結果が「TagOut_Value」出力に送信されます。この命令がエラーなしで実行された場合、ENO イネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.10.4

ROL:左へローテーション

説明「左へローテーション」命令を使用して、IN 入力のオペランドの内容を 1 ビットずつ左へ
ローテーションし、結果を OUT 出力で照会できます。N パラメータを使用して、指定された値をローテーションするビット位置の数を指定します。ローテーションによって解放されたビット位置は、押し出されたビット位置で埋められます。
パラメータ N の値が「0」の場合、入力 IN の値が出力 OUT のオペランドにコピーされます。
使用可能なビット位置の数よりもパラメータ N の値が大きい場合でも、指定されたビット位置の数だけ IN 入力のオペランド値がローテーションされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

419

基本命令
3.1 LAD
次の図に、DWORD データタイプのオペランドの内容が、どのように 3 ビット位置左へローテーションされるかを示します。


,1 

       

1

287



㫐

        
ኔኲእሸቯቂኰአእቑ≰⚆䕅㏚ቒ䴉ቑ㫐቎㗎⏴ሸቯቡሼᇭ

パラメータ
次の表に、「左へローテーション」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域 説明
I、Q、M、 イネーブル入力
D、L

ENO

Output

BOOL

BOOL

I、Q、M、 イネーブル出力
D、L

IN

Input

ビット列、

ビット列、整 I、Q、M、 ローテーションさ

整数

数

D、L、ま

れる値

たは定数
N

Input

USINT, UINT, USINT, UINT, I、Q、M、 値がローテーショ
UDINT

UDINT, ULINT D、L、ま
たは定数

OUT

Output

ンされるビット位
置の数

ビット列、

ビット列、整 I、Q、M、 命令の結果

整数

数

D、L

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

420

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
52/
:25'

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ
ಯ7DJB1XPEHUಯ

(1

,1

1

(12

287


ಯ7DJ2XWಯ
6
ಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

1010 1000 1111 0110

N

Tag_Number

5

OUT

TagOut_Value

0001 1110 1101 0101

入力「TagIn」のシグナル状態が「1」の場合、「左へローテーション」命令が実行されます。
オペランド「TagIn_Value」の内容が、5 ビット位置左へローテーションされます。結果が「TagOut_Value」出力に送信されます。この命令がエラーなしで実行された場合、ENO イ
ネーブル出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

421

基本命令
3.1 LAD

3.1.11レガシー

3.1.11.1

DRUM:PLC 実行

説明「PLC の実装」命令を使用して、対応するステップの OUT_VAL パラメータのプログラム済
みの値をプログラム済み出力ビット(OUT1～OUT16)および出力ワード(OUT_WORD)に割り当てることができます。そのため、この命令が特定のステップに留まっている間は、このステップは S_MASK パラメータでプログラムされた許可マスクの条件を満たす必要があります。このステップのイベントが真(TRUE)になっていて現在のステップのプログラムされた
時間が経過した場合、または JOG パラメータの値が「0」から「1」に切り替わった場合、この命令は次のステップに進みます。RESET パラメータのシグナル状態が「1」に切り替わると、この命令はリセットされます。これによって、プリセットされたステップ(DSP)と現在のステップが等しくなります。
このステップで消費された時間の量は、プリセットタイムベース(DTBP)と各ステップのプ
リセットカウンタ値(S_PRESET)の積によって計算されます。新しいステップの開始時に、この計算値が DCC パラメータにロードされます。このパラメータには、現在のステップの残り時間が含まれています。たとえば、DTBP パラメータの値が「2」で、最初のステップのプリセット値が「100」(100 ミリ秒)の場合、DCC パラメータの値は「200」(200 ミリ秒)になります。
ステップは、タイマ値、イベント、またはその両方を使用してプログラム可能です。イベ
ントビットおよびタイマ値「0」を持つステップは、イベントビットのシグナル状態が「1」になると直ちに次のステップに進みます。タイマ値のみによってプログラムされたステッ
プは時間を直ちに開始します。「0」よりも大きいイベントビットおよびタイマ値を使用してプログラムされたステップは、イベントビットのシグナル状態が「1」になると時間を開始します。イベントビットは、シグナル状態「1」で初期化されます。
プログラムされた最後のステップ(LST_STEP)の実行中にこのステップに割り当てられた時間が経過した場合、Q パラメータのシグナル状態は「1」にセットされ、それ以外の場合は「0」にセットされます。Q パラメータがセットされると、この命令はリセットされるまで
このステップに留まります。
設定可能なマスク(S_MASK)で、出力ワード(OUT_WORD)の個々のビットを選択し、出力ビット(OUT1 ～ OUT16)を出力値(OUT_VAL)によってセット/リセットできます。設定可能なマスクのビットのシグナル状態が「1」のとき、OUT_VAL 値は対応するビットをセット/リ
セットします。設定可能なマスクビットのシグナル状態が「0」の場合、対応するビットは422

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
変更されません。16 のステップすべてに設定可能なマスクのすべてのビットは、シグナル
状態「1」で初期化されます。
OUT1 パラメータの出力ビットは、出力ワード(OUT_WORD)の最下位ビットに対応します。
OUT16 パラメータの出力ビットは、出力ワード(OUT_WORD)の最上位ビットに対応します。

パラメータ
次の表に、「PLC 実装」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

RESET

Input

BOOL

I、Q、M、D、シグナル状態「1」は、L、または定数リセット条件を示します。

I、Q、M、D、シグナル状態が「0」かL、または定数

ら「1」に切り替わる

JOG

Input

BOOL

説明

と、命令が次のステップに進みます。
DRUM_EN

Input

BOOL

I、Q、M、D、シグナル状態が「1」にL、または定数

なると、PLC はイベント
および時間条件に基づいて進むことができます。

LST_STEP

Input

BYTE

I、Q、M、D、

最大ステップ番号

L、または定数(例:LST_STEP = 16#08; 最大 8 つのステップが可能です。)

EVENT(i),

Input

BOOL

1 ≤ i ≤ 16

I、Q、M、D、

イベントビット(i);L、または定数初期シグナル状態は「1」。

OUT(j),

Output

BOOL

I、Q、M、D、L 出力ビット(j)Output

BOOL

I、Q、M、D、L シグナル状態「1」は、

1 ≤ j ≤ 16
Q

最後のステップに割り当てられた時間が経過したことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

423

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

OUT_WORD Output

WORD

I、Q、M、D、PLC が出力値を書き込む

L、P

ワードアドレス。

I、Q、M、D、

エラー情報

ERR_CODE

Output

WORD

L、P
JOG_HIS

Static

BOOL

I、Q、M、D、L JOG パラメータの履歴ビットEODStatic

BOOL

I、Q、M、D、シグナル状態「1」は、L、または定数

最後のステップに割り当てられた時間が経過したことを示します。

DSP

StaticBYTE

I、Q、M、D、PLC のプリセットされた

L、P、または定 ステップ数
DSC

StaticBYTE

I、Q、M、D、PLC の現在のステップ

L、P、または定
数
DCC

Static

DWORD

I、Q、M、D、PLC の現在の数値

L、P、または定
数
DTBP

Static

WORD

I、Q、M、D、PLC のプリセットタイム

L、P、または定 ベース
数
PrevTime

Static

TIME

I、Q、M、D、前のシステム時間

L、または定数
S_PRESET

StaticARRAY[1..16] of I、Q、M、D、

1 クロックパルス = 1 ミ

WORD

リ秒の場合の各ステップ

L、または定数[1～16]のプリセットされたカウンタ値。
OUT_VAL
S_MASK

StaticStaticARRAY[1..16,

I、Q、M、D、各ステップの出力値[1～0..15] of BOOL

L、または定数16, 0～15]。

ARRAY[1..16,

I、Q、M、D、各ステップの設定可能な

0..15] of BOOL

L、または定数

マスク[1～16, 0～15]。
初期シグナル状態は
「1」。

424

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
ERR_COD 説明
E*
W#16#00 エラーなし
00
W#16#00 LST_STEP パラメータの値が 1 未満であるか、または 16 を超えています。
0B
W#16#00 DSC パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を0C

超えています。

W#16#00 DSP パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を超0Dえています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、命令は、ステップ 1 からステップ 2 へ進みます。出力ビット(OUT1 ～ OUT16)および出力ワード(OUT_WORD)は、ステップ 2 で設定されたマスクと OUT_VAL パラメー
タの値に従って設定されます。
注記
静的なパラメータをデータブロックで初期化できます。

ಯ'580B'%ಯ
'580

ಯ7DJ,Qಯ
(1
ಯ7DJB5HVHWಯಯ7DJB,QSXWB-2*ಯ
ಯ7DJB'580B(1ಯಯ/DVW6WHSಯ

5(6(7
-2*
'580B(1/67B67(3ಯ0\(YHQWಯ

(9(17

ಯ7DJ2XWಯ
(12287

4
287B:25'(55B&2'(

ಯ0\2XWSXWಯ
ಯ7DJB2XWSXWB4ಯಯ7DJB2XWSXWB:25'ಯ
ಯ7DJB(UURU&RGHಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

425

基本命令
3.1 LAD

処理前
この例では、入力パラメータの初期化には以下の値が使用されます。
パラメータ

オペランド

アドレス

値

RESET

Tag_Reset

M0.0

FALSE

JOG

Tag_Input_JOG

M0.1

FALSE

DRUM_EN

Tag_Input_DrumEN

M0.2

TRUE

LST_STEP

Tag_Number_LastSt

MB1

B#16#08

ep
EVENT2MyTag_Event_2

M20.0

FALSE

EVENT4MyTag_Event_4

M20.1

FALSE

EVENT6MyTag_Event_6

M20.2

FALSE

EVENT8MyTag_Event_8

M20.3

FALSE

EVENT10MyTag_Event_10

M20.4

FALSE

EVENT12MyTag_Event_12

M20.5

FALSE

EVENT14MyTag_Event_14

M20.6

FALSE

EVENT16MyTag_Event_16

M20.7

FALSE

以下の値が命令の「DRUM_DB」インスタンスデータブロックに保存されます。

426

パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

DSP

DBB13

W#16#0001

DSC

DBB14

W#16#0001

DCC

DBD16

DW#16#0000000A

DTBP

DBW20

W#16#0001

S_PRESET[1]DBW26

W#16#0064

S_PRESET[2]DBW28

W#16#00C8

OUT_VAL[1,0]DBX58.0

TRUE

OUT_VAL[1,1]

DBX58.1

TRUE

OUT_VAL[1,2]

DBX58.2

TRUE

OUT_VAL[1,3]

DBX58.3

TRUE

OUT_VAL[1,4]DBX58.4

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ

アドレス

値

OUT_VAL[1,5]DBX58.5

TRUE

OUT_VAL[1,6]

DBX58.6

TRUE

OUT_VAL[1,7]

DBX58.7

TRUE

OUT_VAL[1,8]DBX59.0

TRUE

OUT_VAL[1,9]DBX59.1

TRUE

OUT_VAL[1,10]

DBX59.2

TRUE

OUT_VAL[1,11]

DBX59.3

TRUE

OUT_VAL[1,12]

DBX59.4

TRUE

OUT_VAL[1,13]

DBX59.5

TRUE

OUT_VAL[1,14]

DBX59.6

TRUE

OUT_VAL[1,15]

DBX59.7

TRUE

OUT_VAL[2,0]DBX60.0

FALSE

OUT_VAL[2,1]

DBX60.1

FALSE

OUT_VAL[2,2]

DBX60.2

FALSE

OUT_VAL[2,3]

DBX60.3

FALSE

OUT_VAL[2,4]

DBX60.4

FALSE

OUT_VAL[2,5]

DBX60.5

FALSE

OUT_VAL[2,6]

DBX60.6

FALSE

OUT_VAL[2,7]

DBX60.7

FALSE

OUT_VAL[2,8]DBX61.0

FALSE

OUT_VAL[2,9]DBX61.1

FALSE

OUT_VAL[2,10]

DBX61.2

FALSE

OUT_VAL[2,11]

DBX61.3

FALSE

OUT_VAL[2,12]

DBX61.4

FALSE

OUT_VAL[2,13]

DBX61.5

FALSE

OUT_VAL[2,14]

DBX61.6

FALSE

OUT_VAL[2,15]

DBX61.7

FALSE

S_MASK[2,0]DBX92.0

FALSE

S_MASK[2,1]

DBX92.1

TRUE

S_MASK[2,2]

DBX92.2

TRUE

S_MASK[2,3]

DBX92.3

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

427

基本命令
3.1 LAD
パラメータ

アドレス

値

S_MASK[2,4]DBX92.4

TRUE

S_MASK[2,5]DBX92.5

FALSE

S_MASK[2,6]

DBX92.6

TRUE

S_MASK[2,7]

DBX92.7

TRUE

S_MASK[2,8]DBX93.0

FALSE

S_MASK[2,9]DBX93.1

FALSE

S_MASK[2,10]

DBX93.2

TRUE

S_MASK[2,11]

DBX93.3

TRUE

S_MASK[2,12]

DBX93.4

TRUE

S_MASK[2,13]

DBX93.5

TRUE

S_MASK[2,14]

DBX93.6

FALSE

S_MASK[2,15]

DBX93.7

TRUE

出力パラメータは、命令の実行前に以下の値にセットされます。

428

パラメータ

オペランド

アドレス

値

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#FFFFOUT1MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

TRUE

OUT3

MyTag_Output_3

M4.2

TRUE

OUT4

MyTag_Output_4

M4.3

TRUE

OUT5

MyTag_Output_5

M4.4

TRUE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

TRUE

OUT8

MyTag_Output_8

M4.7

TRUE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

TRUE

OUT12

MyTag_Output_12

M5.3

TRUE

OUT13

MyTag_Output_13

M5.4

TRUE

OUT14

MyTag_Output_14

M5.5

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ

オペランド

アドレス

値

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

TRUE

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

アドレス

値

OUT1

MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

FALSE

OUT3

MyTag_Output_3

M4.2

FALSE

OUT4

MyTag_Output_4

M4.3

FALSE

OUT5

MyTag_Output_5

M4.4

FALSE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

FALSE

OUT8

MyTag_Output_8

M4.7

FALSE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

FALSE

OUT12

MyTag_Output_12

M5.3

FALSE

OUT13

MyTag_Output_13

M5.4

FALSE

OUT14

MyTag_Output_14

M5.5

FALSE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

FALSE

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#4321

ERR_CODE

Tag_ErrorCode

MW10

W#16#0000

命令の実行後、以下の値が命令のインスタンスデータブロック「DRUM_DB」で変更され
ます。
パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

429

基本命令
3.1 LAD
パラメータ

アドレス

値

DSC

DBB14

W#16#0002

DCC

DBD16

DW#16#000000C8

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.11.2

DCAT:ディスクリート制御タイマアラーム

説明「ディスクリート制御タイマアラーム」を使用して、CMD パラメータが開くまたは閉じる
ためのコマンドを発行した時点からの時間をカウントします。時間は、指定した時間内でプリセット時間(PT)を超えるか、またはデバイスの開閉に関する情報を受信するまで蓄積します(O_FB または C_FB)。デバイスの開閉に関する情報を受信する前にプリセット済み
時間が経過すると、対応するアラームが有効になります。プリセット済み時間の前にコマ
ンド入力のシグナル状態が切り替わると、この時間経過が再開します。
「ディスクリート制御タイマアラーム」命令は入力条件に対して以下のように応答します。
• CMD パラメータのシグナル状態が「0」から「1」へ切り替わったとき、パラメータ Q、
CMD_HIS、ET (ET < PT の場合のみ)、OA、および CA のシグナル状態が以下のように影響を受けます。
– Q および CMD_HIS パラメータが「1」にセットされます。
– ET、OA および CA パラメータが「0」にリセットされます。
• パラメータ CMD のシグナル状態が「1」から「0」に切り替わると、パラメータ Q、ET
(ET < PT の場合のみ)、OA、CA、および CMD_HIS が「0」にリセットされます。
• パラメータ CMD および CMD_HIS のシグナル状態が「1」で、パラメータ O_FB が「0」にセットされると、命令が最後に実行されてからの時間差(ms)がパラメータ ET の値に加算されます。ET パラメータの値が PT パラメータの値を超えると、OA パラメータのシグナル状態が「1」にセットされます。ET パラメータの値が PT パラメータの値を超えないと、OA パラメータのシグナル状態が「0」にリセットされます。CMD_HIS パラ
メータの値が、CMD パラメータの値にリセットされます。

430

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD• パラメータ CMD、CMD_HIS、および O_FB のシグナル状態が「1」にセットされ、パラメータ C_FB の値が「0」の場合、パラメータ OA のシグナル状態が「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。O_FB パラメータのシグナル状態「0」に切り替わると、命令が次回実行されるときにアラームがセットされます。CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS および C_FB パラメータの値が「0」の場合、命令が最後に実行されてからの時間差(ms)が ET パラメータの値に加算されます。ET パラメータの値が PT パラ
メータの値を超えると、パラメータのシグナル状態が CA「1」にリセットされます。PT
パラメータの値を超えなければ、CA パラメータのシグナル状態は「0」です。CMD_HIS
パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS および O_FB パラメータのシグナル状態が「0」のときに C_FB パラメ
ータが「1」にセットされると、CA パラメータが「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。C_FB パラメータのシグナル状態「0」に切り替わると、命令が次回実行されるときにアラームがセットされます。
CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• O_FB および C_FB パラメータのシグナル状態が同時に「1」の場合、両方のアラーム出力のシグナル状態が「1」にセットされます。
「ディスクリート制御タイマアラーム」命令にエラー情報がありません。

パラメータ
次の表に、「ディスクリート制御タイマアラーム」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

CMD

Input

BOOL

I、Q、M、D、シグナル状態「0」は、L、または定数 「閉じる」コマンドを示します。
シグナル状態「1」は、「開く」コマンドを示しま
す。
O_FB
C_FB

Input
Input

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL
BOOL

I、Q、M、D、開くときにフィードバッ

L、または定数ク入力

I、Q、M、D、閉じるときにフィードバ

L、または定数

ック入力

431

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

Q

BOOL

I、Q、M、D、L CMD パラメータのステー

Output説明
タスを示しますOA

Output

BOOL

I、Q、M、D、L 開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L 閉じるときにアラーム出力ET

StaticDINT

D、L、または定 現在の経過時間、1 クロックパルス = 1 ミリ秒

数PT

StaticDINT

D、L、または定 プリセットタイマ値(1 ク
ロックパルス = 1 ミリ秒)

数
PREV_TIME

Static

DWORD

D、L、または定 前のシステム時間
数

CMD_HIS

StaticBOOL

D、L、または定 CMD の履歴ビット数

例
次の例では、パラメータ CMD が「0」から「1」に切り替わります。命令の実行後、パラメータ Q が「1」にセットされ、2 つのアラーム出力 OA および CA のシグナル状態は「0」になります。インスタンスデータブロックの CMD_HIS パラメータがシグナル状態「1」にセットされ、ET パラメータが「0」にリセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

ಯ'&$7B'%ಯ
'&$7

ಯ7DJ,Qಯ
(1

ಯ7DJ2XWಯ
(12

ಯ7DJB,QSXWB&0'ಯ
&0'4

ಯ7DJB2XWSXWB4ಯ

2B)%

2$

ಯ7DJB2XWSXWB2$ಯ

&B)%

&$

ಯ7DJB2XWSXWB&$ಯಯ7DJB,QSXWB2B)%ಯ
ಯ7DJB,QSXWB&B)%ಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前

432

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

CMD

Tag_Input_CMD

TRUE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

Q

Tag_Output_Q

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#12

PT

DBD8

L#222

CMD_HIS

DBX16.0

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

Q

Tag_Output_Q

TRUE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#0

CMD_HIS

DBX16.0

TRUE

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

433

基本命令
3.1 LAD

3.1.11.3

MCAT:モータ制御タイマアラーム

説明「モータ制御タイマアラーム」命令を使用して、コマンド入力(開または閉)のいずれかのスイッチがオンにされる時点から、時間を累積します。時間はプリセット済み時間が経過するまで、または関連のフィードバック入力が、デバイスが指定された時間内に要求された操作を実行したことを示す場合に蓄積されます。フィードバックが受信される前にプリセ
ット済み時間が経過すると、対応するアラームがトリガされます。

パラメータ
次の表に、「モータ制御タイマアラーム」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

O_CMD

Input

BOOL

I、Q、M、D、[開]コマンド入力

L、または定数
C_CMD

Input

BOOL

I、Q、M、D、[閉]コマンド入力

L、または定数
S_CMD

Input

BOOL

I、Q、M、D、[停止]コマンド入力

L、または定数
O_FB
C_FB

Input
Input

BOOL
BOOL

I、Q、M、D、開くときにフィードバッ

L、または定数ク入力

I、Q、M、D、閉じるときにフィードバ

L、または定数

ック入力

OO

Output

BOOL

I、Q、M、D、L [開]出力CO

Output

BOOL

I、Q、M、D、L [閉]出力

OA

Output

BOOL

I、Q、M、D、L 開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L 閉じるときにアラーム出力

Q

Output

BOOL

I、Q、M、D、L シグナル状態「0」は、エラー条件を示します。

434

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

ET

DINT

D、L、または定 1 カウント= 1 ms のとき

Static

説明

数PT

StaticDINTの現在の経過時間

D、L、または定 プリセットタイマ値(1 ク
ロックパルス = 1 ミリ秒)

数
PREV_TIME

Static

DWORD

D、L、または定 前のシステム時間
数

O_HIS

StaticBOOL

D、L、または定 [開]履歴ビット
数

C_HIS

StaticBOOL

D、L、または定 [閉]履歴ビット数「モータ制御タイマアラーム」命令の実行
次の表に、さまざまな入力条件に対する「モータ制御タイマアラーム」命令の応答を示します。
入力パラメータETX

出力パラメータ

O_H C_H O_C C_C S_C

O_F C_F

IS

IS

MD

MD

MD

B

B

1

1

X

X

X

X

X

OO
0

CO
0

OA
1

CA
1

ET
PT

O_H C_H Q

ステータ

IS

IS

ス

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

X

1

1

0

0

1

1

PT

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

1

X

X

0

0

0

0

X

0

0

1

Stop (停止)

X

X

X

1

1

X

X

X

0

0

0

0

X

0

0

1

Stop (停止)

X

0

X

1

0

0

X

X

1

0

0

0

0

1

0

1

Start
opening
(開き始め
る)

<PT

1

0

X

0

0

0

X

1

0

0

0

INC

1

0

1

Open (開
く)

X

1

0

X

0

0

1

0

0

0

0

0

PT

1

0

1

Opened(開いた)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

435

基本命令
3.1 LAD
入力パラメータ>=P 1

0

出力パラメータ
X

0

0

0

X

0

0

1

0

PT

1

0

0

T

Opening
alarm (ア
ラームを
開いてい
る)

X

X

0

0

1

0

X

X

0

1

0

0

0

0

1

1

Start
closing (閉
じ始める)

<PT

0

1

0

X

0

X

0

0

1

0

0

INC

0

1

1

Close (閉
じる)

X

0

1

0

X

0

0

1

0

0

0

0

PT

0

1

1

Closed (閉
じた)

>=P 0

1

0

X

0

X

0

0

0

0

1

PT

0

1

0

T

Closing
alarm (ア
ラームを
閉じてい
る)

X

0

0

0

0

0

X

X

0

0

0

0

X

0

0

1

Stopped
(停止)

凡例:
INC

FB から ET への最後に処理されてからの時間差(ms)を追加します。

PT

PT は ET と同じ値にセットされます。

X

使用不可

<PT

ET < PT

436

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
入力パラメータ>=PT

出力パラメータ

ET >= PT

入力パラメータ O_HIS および C_HIS のシグナル状態が両方とも「1」の場合、これらのパラメータのシグ
ナル状態が直ちに「0」にセットされます。この場合、上記の表の最後の行(X)が有効になります。入力パ
ラメータ O_HIS および C_HIS のシグナル状態が「1」であるかどうかをチェックすることができなくなる
ため、この場合の出力パラメータは以下のようにセットされます。
OO = FALSE
CO = FALSEOA = FALSE
CA = FALSEET = PT
Q = TRUE「モータ制御タイマアラーム」命令は、エラー情報を返しません。

例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

ಯ0&$7B'%ಯ
ಯ7DJ,Qಯ

0&$7
(1

(12

ಯ7DJ2XWಯಯ7DJB,QSXWB2B&0'ಯ
2B&0'

22

ಯ7DJB2XWSXW2SHQಯ

&B&0'

&2

ಯ7DJB2XWSXW&ORVHGಯ

6B&0'

2$

ಯ7DJB2XWSXWB2$ಯ

2B)%

&$

ಯ7DJB2XWSXWB&$ಯ

&B)%

4

ಯ7DJB2XWSXWB4ಯಯ7DJB,QSXWB&B&0'ಯ
ಯ7DJB,QSXWB6B&0'ಯ
ಯ7DJB,QSXWB2B)%ಯ
ಯ7DJB,QSXWB&B)%ಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

437

基本命令
3.1 LAD
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

O_CMD

Tag_Input_O_CMD

TRUE

C_CMD

Tag_Input_C_CMD

FALSE

S_CMD

Tag_Input_S_CMD

FALSE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

OO

Tag_OutputOpen

FALSE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

FALSE

以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#2

PT

DBD8

L#22

O_HIS

DBX16.0

TRUE

C_HIS

DBX16.1

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。

438

パラメータ

オペランド

値

OO

Tag_OutputOpen

TRUE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#0

O_HIS

DBX16.0

TRUE

CMD_HIS

DBX16.1

FALSE

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.11.4

IMC:入力ビットをマスクビットと比較

説明「入力ビットをマスクビットと比較」命令を使用して、対応するマスクビットと最大 16 のプログラム済み入力ビット(IN_BIT0～IN_BIT15)のシグナル状態を比較できます。最大 16のマスク付きのステップをプログラムできます。IN_BIT0 パラメータの値が、マスク
CMP_VAL[x,0] (ここで、「x」はステップ番号を示します)の値と比較されます。CMP_STEP
パラメータで、比較で使用されるステップ番号を指定します。プログラムされた値は、すべて同じ方法で比較されます。プログラムされていない入力ビットやマスクビットは、デフォルトのシグナル状態である FALSE になります。
比較で一致が検出されると、OUT パラメータのシグナル状態が「1」にセットされます。
それ以外の場合、OUT パラメータが「0」にセットされます。
CMP_STEP パラメータの値が 15 よりも大きい場合、この命令は実行されません。
ERR_CODE パラメータでエラーメッセージが出力されます。

パラメータ
次の表に、「入力ビットをマスクビットと比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN_BIT0

Input

BOOL

I、Q、M、D、

入力ビット 0 がマスクビ

L、または定数

ット 0 と比較されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

439

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN_BIT1

BOOL

I、Q、M、D、

入力ビット 1 がマスクビ

L、または定数

ット 1 と比較されます。

I、Q、M、D、

入力ビット 2 がマスクビ

L、または定数

ット 2 と比較されます。

I、Q、M、D、

入力ビット 3 がマスクビ

L、または定数

ット 3 と比較されます。

I、Q、M、D、

入力ビット 4 がマスクビ

L、または定数

ット 4 と比較されます。

I、Q、M、D、

入力ビット 5 がマスクビ

L、または定数

ット 5 と比較されます。

I、Q、M、D、

入力ビット 6 がマスクビ

L、または定数

ット 6 と比較されます。

I、Q、M、D、

入力ビット 7 がマスクビ

L、または定数

ット 7 と比較されます。

I、Q、M、D、

入力ビット 8 がマスクビ

L、または定数

ット 8 と比較されます。

I、Q、M、D、

入力ビット 9 がマスクビ

L、または定数

ット 9 と比較されます。

I、Q、M、D、

入力ビット 10 がマスク

L、または定数

ビット 10 と比較されま

IN_BIT2
IN_BIT3
IN_BIT4
IN_BIT5
IN_BIT6
IN_BIT7
IN_BIT8
IN_BIT9
IN_BIT10

Input
Input
Input
Input
Input
Input
Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL

す。
IN_BIT11

Input

BOOL

I、Q、M、D、

入力ビット 11 がマスク

L、または定数

ビット 11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、

入力ビット 12 がマスク

L、または定数

ビット 12 と比較されます。

IN_BIT13

Input

BOOL

I、Q、M、D、

入力ビット 13 がマスク

L、または定数

ビット 13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、

入力ビット 14 がマスク

L、または定数

ビット 14 と比較されます。

440

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN_BIT15

BOOL

I、Q、M、D、

入力ビット 15 がマスク

L、または定数

ビット 15 と比較されま

Input

す。
CMP_STEP

Input

BYTE

I、Q、M、D、比較に使用されるマスク

L、P、または定 のステップ番号。
数
OUT

Output

BOOL

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

ERR_CODE

Output

WORD

I、Q、M、D、

エラー情報

L、P
CMP_VAL

StaticARRAY OF WORD I、Q、M、D、

比較マスク[0～15, 0～

L、または定数15]:インデックスの最初の番号はステップ番号
で、2 番目の番号はマス
クビット番号です。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

000A

CMP_STEP パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

441

基本命令
3.1 LAD

3.1.11.5

SMC:スキャンマトリックスの比較

説明「スキャンマトリックスの比較」命令を使用して、最大 16 のプログラムされた入力ビット(IN_BIT0 ～ IN_BIT15)のシグナル状態をステップごとの比較マスクの対応ビットと比較できます。処理はステップ 1 から開始し、プログラムされた最後のステップ(LAST)まで、または一致が検出されるまで続行されます。IN_BIT0 パラメータの入力ビットが、マスク
CMP_VAL[x,0]の値と比較されます。「x」はステップ番号を示しています。プログラムされた値は、すべて同じ方法で比較されます。一致が検出されると、OUT パラメータのシ
グナル状態が「1」にセットされ、一致するマスクのステップ番号が OUT_STEP パラメー
タに書き込まれます。プログラムされていない入力ビットやマスクビットは、デフォルトのシグナル状態である FALSE になります。複数のステップに一致するマスクが存在する場
合、最初に検出されたマスクのみが OUT_STEP パラメータに示されます。一致が検出されないと、OUT パラメータのシグナル状態が「0」にセットされます。この場合、OUT_STEP
パラメータの値は LAST パラメータの値よりも「1」だけ大きくなります。

パラメータ
次の表に、「スキャンマトリックスの比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN_BIT0

Input

BOOL

I、Q、M、D、

入力ビット 0 がマスクビ

L、または定数

ット 0 と比較されます。

I、Q、M、D、

入力ビット 1 がマスクビ

L、または定数

ット 1 と比較されます。

I、Q、M、D、

入力ビット 2 がマスクビ

L、または定数

ット 2 と比較されます。

I、Q、M、D、

入力ビット 3 がマスクビ

L、または定数

ット 3 と比較されます。

I、Q、M、D、

入力ビット 4 がマスクビ

L、または定数

ット 4 と比較されます。

IN_BIT1
IN_BIT2
IN_BIT3
IN_BIT4

442

Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL

説明

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN_BIT5

BOOL

I、Q、M、D、

入力ビット 5 がマスクビ

L、または定数

ット 5 と比較されます。

I、Q、M、D、

入力ビット 6 がマスクビ

L、または定数

ット 6 と比較されます。

I、Q、M、D、

入力ビット 7 がマスクビ

L、または定数

ット 7 と比較されます。

I、Q、M、D、

入力ビット 8 がマスクビ

L、または定数

ット 8 と比較されます。

I、Q、M、D、

入力ビット 9 がマスクビ

L、または定数

ット 9 と比較されます。

I、Q、M、D、

入力ビット 10 がマスク

L、または定数

ビット 10 と比較されま

IN_BIT6
IN_BIT7
IN_BIT8
IN_BIT9
IN_BIT10

Input
Input
Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL
BOOL

す。
IN_BIT11

Input

BOOL

I、Q、M、D、

入力ビット 11 がマスク

L、または定数

ビット 11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、

入力ビット 12 がマスク

L、または定数

ビット 12 と比較されます。

IN_BIT13

Input

BOOL

I、Q、M、D、

入力ビット 13 がマスク

L、または定数

ビット 13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、

入力ビット 14 がマスク

L、または定数

ビット 14 と比較されます。

IN_BIT15

Input

BOOL

I、Q、M、D、

入力ビット 15 がマスク

L、または定数

ビット 15 と比較されます。

OUT

Output

BOOL

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

443

基本命令
3.1 LAD
パラメータ 宣言

データタイプ

メモリ領域

説明

ERR_CODE

WORD

I、Q、M、D、

エラー情報

Output

L、P
OUT_STEP

Output

BYTE

I、Q、M、D、一致するマスクを持つス

L、P

テップの番号が含まれているか、または一致が検出されない場合は、LAST
パラメータの値よりも「1」だけ大きいステップ
番号が含まれています。

LAST

StaticBYTE

I、Q、M、D、一致するマスクをスキャ

L、P、または定 ンする最後のステップの数

ステップ番号を指定します。

CMP_VAL

StaticARRAY OF WORD I、Q、M、D、

比較マスク[0～15, 0～

L、または定数15]:インデックスの最初の番号はステップ番号
で、2 番目の番号はマス
クビット番号です。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

000E

LAST パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

444

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD

3.1.11.6

LEAD_LAG:リード/ラグアルゴリズム

説明「リード/ラグアルゴリズム」命令を使用してアナログタグによってシグナルを処理できま
す。GAIN パラメータのゲイン値はゼロよりも大きくなければなりません。「リード/ラグ
アルゴリズム」命令の結果は、以下の等式を使用して計算されます。
287

/'B7,0(6$03/(B7/*B7,0(/'B7,0(,1*$,135(9B287*$,1/*B7,0(6$03/(B7/*B7,0(6$03/(B7/*B7,0(6$03/(B735(9B,1「リード/ラグアルゴリズム」命令は、処理を固定プログラムサイクルで行う場合のみ正しい
結果が得られます。LD_TIME、LG_TIME、および SAMPLE_T パラメータには同じ単位を指定する必要があります。LG_TIME > 4 + SAMPLE_T の場合、この命令は以下の関数を実行します。
OUT = GAIN * ((1 + LD_TIME * s) / (1 + LG_TIME * s)) * IN
GAIN パラメータの値がゼロ以下の場合、計算は実行されず、ERR_CODE パラメータでエラー情報が出力されます。
「リード/ラグアルゴリズム」命令をダイナミックフィードフォワード制御でループと共に補償器として使用できます。この命令は、2 つの操作から成ります。「リード」操作は OUT
出力のフェーズをシフトして、出力が入力の前に来るようにします。一方「ラグ」操作は出力をシフトして、出力が入力の後になるようにします。「ラグ」演算は積分に相当する
ため、ノイズサプレッサやローパスフィルタとして使用できます。「リード」演算は微分と同等なため、ハイパスフィルタとして使用できます。2 つの演算(リードおよびラグ)をまとめて実行すると、低周波域では出力フェーズが入力フェーズよりも遅れ、高周波域では
出力フェーズが入力フェーズに先行します。つまり「リード/ラグアルゴリズム」命令は帯域フィルタとして使用できます。

パラメータ
次の表に、「リード/ラグアルゴリズム」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

445

基本命令
3.1 LAD
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

REAL

I、Q、M、D、処理対象の現在

L、P、または定 のサンプル時間
数(サイクルタイム)の入力値。
IN パラメータには定数も指定できます。

SAMPLE_T

Input

INT

I、Q、M、D、

サンプル時間L、P、または定 SAMPLE_T パラ
数
メータには定数も指定できます。
OUT

OutputREAL

I、Q、M、D、L 命令の結果

ERR_CODE

Output

WORD

I、Q、M、D、L エラー情報

LD_TIME

Static

REAL

I、Q、M、D、

サンプル時間と

L、P、または定 しての同一ユニ
数

ット内のリード
タイム。

LG_TIME

Static

REAL

I、Q、M、D、

サンプル時間と

L、P、または定 しての同一ユニ
数

ット内のラグタイム。

GAIN

Static

REAL

I、Q、M、D、% / %で表される

L、P、または定 ゲイン(定常状態数時の出力の切り替えと入力の切り替えとの比率)。

PREV_IN

Static

REAL

I、Q、M、D、

前の入力

L、P、または定数
PREV_OUT

Static

REAL

I、Q、M、D、前の出力

L、P、または定
数446

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

0009

GAIN パラメータの値がゼロ以下である。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

ಯ/($'B/$*B'%ಯ
/($'B/$*
ಯ7DJ,Qಯಯ7DJB,QSXWಯಯ7DJB,QSXWB6$03/(B7ಯಯ7DJ2XWಯ
(1

(12

,1

287

6$03/(B7(55B&2'(

ಯ7DJB2XWSXWB5HVXOWಯಯ7DJB(UURU&RGHಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前
この例では、入力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

IN

Tag_Input

2.0

SAMPLE_T

Tag_InputSampleTime

10

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

447

基本命令
3.1 LAD以下の値が命令の「LEAD_LAG_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

LD_TIME

DBD12

2.0

LG_TIME

DBD16

2.0

GAIN

DBD20

1.0

PREV_IN

DBD24

6.0

PREV_OUT

DBD28

6.0

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OUT

Tag_Output_Result

2.0

以下の値が命令のインスタンスデータブロック「LEAD_LAD_DB」に保存されます。
パラメータ

オペランド

値

PREV_IN

DBD24

2.0

PREV_OUT

DBD28

2.0

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.11.7

SEG:7 セグメント表示のビットパターンの作成

説明「7 セグメント表示のビットパターンの作成」命令を使用して、指定されたソースワードの
4 つの各 16 進数(IN)を 7 セグメント表示の相当するビットパターンに変換します。命令の結果は、OUT パラメータにダブルワードで出力されます。

448

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LAD
16 進数と 7 セグメント(a、b、c、d、e、f、g)の割り当ての間には、以下の関係がありま
す。
入力する数

セグメントの割 表示

値り当て(バイナリ)‑gfedcba

0000

00111111

00001

000001101

7 セグメント表示(16 進数)

0010

01011011

2

0011

01001111

3

0100

01100110

4

0101

01101101

5

0110

01111101

6

0111

00000111

7

1000

01111111

8

1001

01100111

9

1010

01110111

A

1011

01111100B

110000111001

C

1101

01011110D

1110

01111001

E

1111

01110001

F

D
I

E
J

H

F
G

パラメータ
次の表に、「7 セグメント表示のビットパターンの作成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

WORD

I、Q、M、D、4 つの 16 進数のソース

L、P、または定 ワード
数
OUT

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

DWORD

I、Q、M、D、

7 セグメント表示のビッ

L、P

トパターン

449

基本命令
3.1 LAD例
次の例で、命令がどのように動作するかを示します。
6(*
ಯ7DJ,Qಯಯ7DJ2XWಯಯ7DJB,QSXWಯ

(1

(12

,1

287

ಯ7DJB2XWSXWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

16 進数

2 進数

IN

Tag_Input

W#16#1234

0001 0010 0011 0100

OUT

Tag_Output

DW#16065B4F66

000 00110 0101 1011
0100 1111 0110 0110
表示:1234

詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.1.11.8

BCDCPL:10 の補数の作成

説明「10 の補数の作成」命令を使用して、IN パラメータで指定された 7 桁の BCD 数の 10 の補数を作成できます。この命令は、次の数式を使用して計算します。
10000000 (BCD として)
– 7 桁の BCD 数---------------------------------------10 の補数(BCD として)

450

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.1 LADパラメータ
次の表に、「10 の補数の作成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

ビット列

I、Q、M、D、

7 桁の BCD 数

L、P、または定数
ERR_CODE

Output

DWORD

I、Q、M、D、

命令の結果

L、P

例
次の例で、命令がどのように動作するかを示します。
%&'&3/
ಯ7DJ,Qಯಯ7DJB,QSXWಯಯ7DJ2XWಯ
(1

(12

,1

(55B&2'(

ಯ7DJB2XWSXWಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値*

IN

Tag_Input

DW#16#01234567

ERR_CODE

Tag_Output

DW#16#08765433*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

451

基本命令
3.1 LAD

3.1.11.9

BITSUM:セットビット数カウント

説明「セットビット数カウント」命令を使用して、シグナル状態「1」にセットされるオペラン
ドのビット数をカウントします。ビットをカウントするオペランドは、 IN パラメータで指定されます。命令の結果は、RET_VAL パラメータに出力されます。

パラメータ
次の表に、「セットビット数カウント」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

DWORD

I、Q、M、D、

セットビット数をカウン

L、P、または定 トするオペランド
数
RET_VAL

Output

INT

I、Q、M、D、セットするビットの数

L、P例
次の例で、命令がどのように動作するかを示します。
%,7680
ಯ7DJ,Qಯಯ7DJB,QSXWಯ

452

ಯ7DJ2XWಯ
(1

(12

,1

5(7B9$/

ಯ7DJB2XWSXWಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値*

IN

Tag_Input

DW#16#12345678

RET_VAL

Tag_Output

W#16#000D (13 ビット)

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
詳細情報と、上記の名前付きの例のプログラムコードは、Sample Library for Instructions(ページ 25)を参照してください。

3.2

FBD

3.2.1

ビット論理演算3.2.1.1&: AND 演算

説明「AND 演算」命令を使って、複数の指定されたオペランドのシグナル状態を照会でき、これらを AND 真理値表に基づいて評価できます。
すべてのオペランドのシグナル状態が「1」の場合、条件は満たされ、この命令が結果「1」を返します。 いずれかのオペランドのシグナル状態が「0」の場合、条件は満たされず、この命令が結果「0」を生成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

453

基本命令
3.2 FBD

パラメータ
次の表に、「AND 演算」命令のパラメータを示します。
パラメータ 宣言<Operand> Input

データタイプ
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 オペランドはシグ

M、D、L

D、L、T、ナル状態がクエリ

Cされるビットを示しています。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ
ಯ7DJ2XWಯಯ7DJ,QBಯ

出力「TagOut」は、オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合にセットされ、オペランド「TagIn_1」および「TagIn_2」が「0」の場合にリセット
されます。

下記も参照
論理積の真理値表 (ページ 454)
入力の挿入 (ページ 459)

3.2.1.2

論理積の真理値表

論理演算の結果
次の表に、2 つのオペランドの論理積演算から得られる結果を示します。

454

最初のオペランドのシグナ
ル状態

2 番目のオペランドのシグナ 論理演算の結果
ル状態

1

1

1

0

1

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
最初のオペランドのシグナ
ル状態

2 番目のオペランドのシグナ 論理演算の結果
ル状態

1

0

0

0

0

0

下記も参照
&: AND 演算 (ページ 453)

3.2.1.3>=1: OR 論理和演算

説明「OR 演算」命令を使って、複数の指定されたオペランドのシグナル状態を照会でき、これらを OR 真理値表に基づいて評価できます。
いずれかのオペランドのシグナル状態が「1」の場合、条件は満たされ、この命令が結果「1」を返します。 すべてのオペランドのシグナル状態が「0」の場合、条件は満たされず、この命令が結果「0」を生成します。

パラメータ
次の表に、「OR 演算」命令のパラメータを示します。
パラメータ 宣言<Operand> Input

データタイプ
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 オペランドはシグ

M、D、L D、L、T、ナル状態がクエリ

Cされるビットを示しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

455

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ! 

ಯ7DJ2XWಯಯ7DJ,QBಯ

オペランド「TagIn_1」または「TagIn_2」のシグナル状態が「1」のとき、出力「TagOut」が設定されます。

下記も参照
論理和の真理値表 (ページ 456)
入力の挿入 (ページ 459)

3.2.1.4

論理和の真理値表

論理演算の結果
次の表に、2 つのオペランドの論理和演算から得られる結果を示します。
最初のオペランドのシグナ
ル状態

2 番目のオペランドのシグナ 論理演算の結果
ル状態

1

0

1

0

1

1

1

1

1

0

0

0

下記も参照
>=1: OR 論理和演算 (ページ 455)

456

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.1.5

X: EXCLUSIVE OR 排他的論理和演算

説明「排他的論理和演算」命令を使って、排他的論理和演算真理値表に基づいてシグナル状態
照会の結果を照会することができます。
「排他的論理和演算」命令では、2 つの指定されたオペランドのいずれかのシグナル状態が「1」の場合、シグナル状態は「1」です。 3 つ以上のオペランドを照会した場合、奇数の照会されたオペランドが結果「1」を返すと共通の RLO が「1」となります。

パラメータ
次の表に、「排他的論理和演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-1200 S7-1500<Operand> Input

BOOL

I、Q、

I、Q、

オペランドはシグナ

M、D、L M、D、ル状態がクエリされ

L、T、C

るビットを示しています。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ;

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」のとき、出力「TagOut」が設定されます。 両方のオペランドがシグナル状態「1」または「0」を返した場合、出力「TagOut」がリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

457

基本命令
3.2 FBD

下記も参照
排他的論理和の真理値表 (ページ 458)
入力の挿入 (ページ 459)

3.2.1.6

排他的論理和の真理値表

論理演算の結果
次の表に、2 つのオペランドの排他的論理和演算から得られる結果を示します。
最初のオペランドのシグナ
ル状態

2 番目のオペランドのシグナ 論理演算の結果
ル状態

1

0

1

0

1

1

1

1

0

0

0

0

次の表に、3 つのオペランドの排他的論理和演算から得られる結果を示します。
最初のオペランドの 2 番目のオペランド 3 番目のオペランド 論理演算の結果
シグナル状態のシグナル状態のシグナル状態
1

0

0

1

0

1

1

0

0

1

0

1

1

0

1

0

0

0

1

1

1

1

0

0

1

1

1

1

0

0

0

0

下記も参照
X: EXCLUSIVE OR 排他的論理和演算 (ページ 457)

458

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.1.7

入力の挿入

説明「入力の挿入」命令を使って、次の命令のいずれかのボックスに入力を追加します。
• "論理積演算• "論理和演算• "排他的論理和演算
命令ボックスの拡張によって、複数のオペランドのシグナル状態を照会できます。

パラメータ
次の表に、「入力の挿入」命令のパラメータを示します。
パラメータ 宣言<Operand> Input

データタイプ

BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、

オペランドはシグナ

M、D、 M、D、ル状態がクエリされLるビットを示してい

L、T、C

ます。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

ಯ7DJ2XWಯಯ7DJ,QBಯ「AND 演算」命令のボックスがオペランド「TagIn_3」のシグナル状態が照会される追加の入力によって拡張されています。「TagOut」出力が設定されていると、オペランド「TagIn_1」および「TagIn_2」および「TagIn_3」がシグナル状態「1」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

459

基本命令
3.2 FBD

下記も参照&: AND 演算 (ページ 453)>=1: OR 論理和演算 (ページ 455)
X: EXCLUSIVE OR 排他的論理和演算 (ページ 457)

3.2.1.8

RLO の反転説明「RLO の反転」命令を使用し、論理演算の結果(RLO)のシグナル状態を反転します。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ! 


ಯ7DJ2XWಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• 入力「TagIn_1」および/または「TagIn_2」のシグナル状態が「0」であること。
• 入力「TagIn_3」および/または「TagIn_4」のシグナル状態が「0」であるか、または入力「TagIn_5」のシグナル状態が「1」であること。

3.2.1.9=:割り当て説明「割り当て」命令を使って、指定したオペランドのビットを設定できます。ボックス入力の論理演算(RLO)の結果がシグナル状態「1」の場合、指定したオペランドがシグナル状態「1」にセットされます。ボックス入力のシグナル状態が「0」の場合、指定したオペラン
ドのビットが「0」にリセットされます。
この命令は、RLO に影響を与えません。ボックス入力の RLO は、割り当てボックスの上のオペランドに直接割り当てられます。

460

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「割り当て」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L RLO が割り当てられるオ
ペランド。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ! 
ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

次のいずれかの条件が満たされている場合、オペランド「TagOut」が「割り当て」命令の出力に設定されます。
• 入力「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• 入力「TagIn_3」のシグナル状態が「0」であること。

3.2.1.10/=: 否定割り当て

説明「否定割り当て」命令は、論理演算(RLO)の結果を反転し、これをボックスの上のオペラン
ドに割り当てます。 ボックス入力の RLO が「1」の場合、バイナリオペランドはリセットされます。 ボックス入力における RLO が「0」の場合、オペランドは「1」にセットされ
ます。

パラメータ
次の表に、「割り当てを無効にする」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L 否定された RLO が割り当てられるオペランド。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

461

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ! 

ಯ7DJ,QBಯ
ಯ7DJ2XWಯಯ7DJ,QBಯ

次の条件が満たされている場合、オペランド「TagOut」はリセットされます。
• オペランド「TagIn_1」または「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。

3.2.1.11

R: 出力のリセット

説明「出力のリセット」命令を使って、指定したオペランドのシグナル状態を「0」にリセットできます。
この命令は、ボックス入力の論理演算の結果(RLO)が「1」の場合のみ実行されます。 ボックス入力のシグナル状態が「1」の場合、指定したオペランドが「0」にリセットされます。 ボックス入力の RLO が「0」の場合、指定したオペランドのシグナル状態は変更さ
れません。

パラメータ
次の表に、「出力のリセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-120 S7-1500
0<Operand> Output

462

BOOL

I、Q、

I、Q、

RLO =「1」の場合に

M、

M、D、

リセットされるオペ

D、L

L、T、C

ランド。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ! 
ಯ7DJ2XWಯಯ7DJ,QBಯ

5

次のいずれかの条件が満たされている場合、オペランド「TagOut」がリセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。

3.2.1.12

S:出力設定説明「出力のセット」命令を使用すると、指定したオペランドのシグナル状態を「1」にセットすることができます。
この命令は、ボックス入力の論理演算の結果(RLO)が「1」の場合のみ実行されます。 ボックス入力のシグナル状態が「1」の場合、指定したオペランドが「1」にセットされます。 ボックス入力の RLO が「0」の場合、指定したオペランドのシグナル状態は変更され
ません。

パラメータ
次の表に、「出力のセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L RLO =「1」を使用してセットされるオペランド

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

463

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ7DJ,QBಯ! 
ಯ7DJ2XWಯಯ7DJ,QBಯ

6

次のいずれかの条件が満たされている場合、オペランド「TagOut」がセットされます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「0」であること。

3.2.1.13

SET_BF: ビットフィールドのセット

説明「ビットフィールドのセット」命令を使って、特定のアドレスから開始する複数のビットを設定します。
セットするビットの数は、N 入力の定数の値で指定します。セットする最初のビットのア
ドレスは、<Operand>で定義されます。<Operand>の値は、選択したバイトのビット数を超えてはいけません。この値がビット数より大きい場合、命令は実行されず、エラーメッ
セージ「インデックス<Operand1>の範囲違反」が表示されます。セットされたビットは、別の命令によって明示的にリセットされるまで、セットされたままです。
この命令は、イネーブル入力 EN のシグナル状態が「1」の場合のみ実行されます。

タイプ PLC データタイプ、STRUCT、または ARRAY のビットフィールドタイプ PLC データタイプ、STRUCT、または ARRAY の構造体では、構造体に含まれるビッ
ト数は、リセットできる最大ビット数を示します。
• たとえば、N 入力で値「20」を指定し、構造体が 10 ビットのみを含むと、これらの 10
ビットのみがセットされます。
• たとえば、N 入力で値「5」を指定し、構造体が 10 ビットを含むと、固定値 5 ビットがセットされます。

464

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「ビットフィールドのセット」命令のパラメータを示します。
パラメータ 宣言

EN

データタイプ

Input

BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 イネーブル入力

M、D、 D、L、T、
N

Input

UINT

L

C

定数

定数

セットするビットの数<Operand> Output

BOOL

I、Q、

I、Q、M

セットする最初のビM

DB またはットへのポインタ。

DB また IDB の場
は IDB

合、ブール

の場

の配列[..]

合、ブ

のエレメン

ールの

ト。

配列[..]のエレメント。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ0\'%ಯ0\%RRO$UUD\>@ಯ7DJ,QBಯ

6(7B%)(1


1

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、オペランド"MyDB".MyBoolArray[4]のアドレスで始まる 5 つのビットがセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

465

基本命令
3.2 FBD

3.2.1.14

RESET_BF: ビットフィールドのリセット

説明「ビットフィールドのリセット」命令を使って、特定のアドレスから開始する複数のビットをリセットします。
リセットするビットの数は、N 入力の定数の値で指定します。リセットする最初のビットのアドレスは、<Operand>で定義されます。定数の値は、選択したバイトのビット数を超えてはいけません。この値がビット数より大きい場合、命令は実行されず、エラーメッセージ「インデックス<Operand1>の範囲違反」が表示されます。セットされたビットは、別の命令によって明示的にリセットされるまで、セットされたままです。
この命令は、イネーブル入力 EN のシグナル状態が「1」の場合のみ実行されます。

タイプ PLC データタイプ、STRUCT、または ARRAY のビットフィールドタイプ PLC データタイプ、STRUCT、または ARRAY の構造体では、構造体に含まれるビッ
ト数は、セットできる最大ビット数を示します。
• たとえば、N 入力で値「20」を指定し、構造体が 10 ビットのみを含むと、これらの 10
ビットのみがリセットされます。
• たとえば、N 入力で値「5」を指定し、構造体が 10 ビットを含むと、固定値 5 ビットがリセットされます。

466

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「ビットフィールドのリセット」命令のパラメータを示します。
パラメータ 宣言
EN

データタイプ

Input

BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 イネーブル入力

M、D、L D、L、T、
C
N

Input

UINT

定数

定数

リセットするビッ
トの数<Operand> Output

BOOL

I、Q、M

I、Q、M

リセットする最初

DB また

DB またはのビットへのポイ

は IDB の IDB の場

ンタ。

場合、ブ 合、ブールールの配 の配列[..]
列[..]のエ のエレメン
レメン

ト。

ト。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ

ಯ0\'%ಯ0\%RRO$UUD\>@
5(6(7B%)

ಯ7DJ,QBಯ

(1


1

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、オペランド"MyDB".MyBoolArray[4]のアドレスで始まる 5 つのビットがリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

467

基本命令
3.2 FBD

3.2.1.15

SR: フリップフロップのセット/リセット

説明「フリップフロップのセット/リセット」命令を使って、入力 S および R1 のシグナル状態に基づいて指定されたオペランドのビットをセットまたはリセットします。 入力 S のシグ
ナル状態が「1」で、入力 R1 のシグナル状態が「0」の場合、指定したオペランドが「1」にセットされます。 入力 S のシグナル状態が「0」で、入力 R1 のシグナル状態が「1」の場合、指定したオペランドが「0」にリセットされます。
入力 R1 が入力 S よりも優先されます。 入力 S および R1 の両方でシグナル状態が「1」の場合、指定したオペランドのシグナル状態が「0」にリセットされます。
2 つの入力 S と R1 のシグナル状態が「0」の場合、この命令は実行されません。 この場合、オペランドのシグナル状態は変更されません。
オペランドの現在のシグナル状態は出力 Q に転送されるため、そこで照会できます。

パラメータ
次の表に、「フリップフロップのセット/リセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-1200 S7-1500
S

Input

BOOL

I、Q、

I、Q、

セットの有効化

M、D、L M、D、
L、T、C
R1

Input

BOOL

I、Q、

I、Q、

リセットの有効化

M、D、L M、D、
L、T、C
<Operand> InOut

BOOL

I、Q、

I、Q、

セットまたはリセッ

M、D、

M、D、L

トされるオペランド

I、Q、

I、Q、

オペランドのシグナ

M、D、

M、D、L

ル状態

L
Q

Output

BOOL

L

468

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ65ಯ
ಯ7DJ,QBಯ

65
6
ಯ7DJ2XWಯಯ7DJ,QBಯ5

4

次の条件が満たされている場合、オペランド「TagSR」および「TagOut」がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• オペランド「TagIn_2」のシグナル状態が「0」であること。
次のいずれかの条件が満たされている場合、オペランド「TagSR」および「TagOut」がリセットされます。
• オペランド「TagIn_1」のシグナル状態が「0」であり、オペランド「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。

3.2.1.16

RS: フリップフロップのリセット/セット

説明「フリップフロップのリセット/セット」命令を使って、入力 R および S1 のシグナル状態に基づいて指定されたオペランドのビットをセットまたはリセットします。 入力 R のシグ
ナル状態が「1」で、入力 S1 のシグナル状態が「0」の場合、指定したオペランドが「0」にリセットされます。 入力 R のシグナル状態が「0」で、入力 S1 のシグナル状態が「1」の場合、指定したオペランドが「1」にセットされます。
入力 S1 が入力 R よりも優先されます。 入力 R および S1 の両方でシグナル状態が「1」の場合、指定したオペランドのシグナル状態が「1」にセットされます。
2 つの入力 R と S1 のシグナル状態が「0」の場合、この命令は実行されません。 この場合、オペランドのシグナル状態は変更されません。
オペランドの現在のシグナル状態は出力 Q に転送されるため、そこで照会できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

469

基本命令
3.2 FBD

パラメータ
次の表に、「フリップフロップのリセット/セット」命令のパラメータを示します。
パラメータ 宣言R

データタイプ

Input

BOOL

メモリ領域
S7-1200

S7-1500

I、Q、

I、Q、

説明

リセットの有効化

M、D、 M、D、
S1

Input

BOOL

L

L、T、C

I、Q、

I、Q、

セットの有効化

M、D、 M、D、<Operand> InOut

BOOL

L

L、T、C

I、Q、

I、Q、

M、D、 M、D、L

リセットまたはセッ
トされるオペランド。

L
Q

Output

BOOL

I、Q、

I、Q、

M、D、 M、D、L

オペランドのシグナ
ル状態

L例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ56ಯ
ಯ7DJ,QBಯ

56
5
ಯ7DJ2XWಯಯ7DJ,QBಯ6

4

次の条件が満たされている場合、オペランド「TagRS」および「TagOut」がリセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• オペランド「TagIn_2」のシグナル状態が「0」であること。

470

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の条件が満たされている場合、オペランド「TagRS」および「TagOut」がセットされます。
• オペランド「TagIn_1」のシグナル状態が「0」であり、オペランド「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。

3.2.1.17

P: 立ち上がりエッジのオペランドスキャン

説明「立ち上がりエッジのオペランドスキャン」命令を使用して、指定したオペランド(<Operand1>)のシグナル状態が「0」から「1」に切り替わったかどうかを識別できます。
この命令は、エッジメモリビット(<Operand2>)に保存されている以前のスキャンのシグ
ナル状態と、<Operand1> の現在のシグナル状態を比較します。この命令が論理演算(RLO)の結果の「0」から「1」への切り替えを検出した場合、正の信号立ち上がりエッジがあります。
次の図に、信号立ち下がりエッジおよび信号立ち上がりエッジの場合のシグナル状態の切り替えを示します。
ኔኍኧወ䕅㏚≰⚆䵚ቄₙሯቭኅአን

≰⚆䵚ቄₚሯቭኅአን




ኜኁኻ

命令が実行されるたびに、信号立ち上がりエッジが照会されます。信号立ち上がりエッジが検出された場合、1 プログラムサイクルの間<Operand1>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

471

基本命令
3.2 FBD
命令の上のオペランドのプレースホルダで、照会されるオペランド(<Operand1>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand2>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。これがエッジ評価に影響を与え、結果が不定になります。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ
領域にあることが必要です。

パラメータ
次の表に、「立ち上がりエッジのオペランドスキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ<Operand1 Input

BOOL

>

メモリ領域
S7-1200

S7-1500

I、Q、

I、Q、

説明

スキャン対象の信号

M、D、 M、D、<Operand2 InOut
>

BOOL

L

L、T、C

I、Q、

I、Q、

前のスキャンのシグ

M、D、 M、D、L

ナル状態が保存されLるエッジメモリビッ
ト。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
3
ಯ7DJB0ಯ

ಯ7DJ2XWಯಯ7DJ,QBಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• 入力「TagIn_1」に信号立ち上がりエッジがあります。
• オペランド「TagIn_2」のシグナル状態が「1」であること。

472

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.1.18

N: 立ち下がりエッジのオペランドスキャン

説明「立ち下がりエッジのオペランドスキャン」命令を使用して、指定したオペランド(<Operand1>)のシグナル状態が「1」から「0」に切り替わったかどうかを識別できます。
この命令は、エッジメモリビット(<Operand2>)に保存されている以前のスキャンのシグ
ナル状態と、<Operand1> の現在のシグナル状態を比較します。この命令が論理演算(RLO)の結果の「1」から「0」への切り替えを検出した場合、負の信号立ち下がりエッジがあります。
次の図に、信号立ち下がりエッジおよび信号立ち上がりエッジの場合のシグナル状態の切り替えを示します。
ኔኍኧወ䕅㏚≰⚆䵚ቄₙሯቭኅአን

≰⚆䵚ቄₚሯቭኅአን




ኜኁኻ

命令が実行されるたびに、信号立ち下がりエッジが照会されます。信号立ち下がりエッジが検出された場合、1 プログラムサイクルの間<Operand1>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。
命令の上のオペランドのプレースホルダで、照会されるオペランド(<Operand1>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand2>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。これがエッジ評価に影響を与え、結果が不定になります。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ
領域にあることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

473

基本命令
3.2 FBD

パラメータ
次の表に、「立ち下がりエッジのオペランドスキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-120 S7-1500
0<Operand1 Input

BOOL><Operand2 InOut

BOOL

>

I、Q、

I、Q、

M、

M、D、

D、L

L、T、C

I、Q、

I、Q、

前のスキャンのシグ

M、

M、D、L

ナル状態が保存されD、L

スキャン対象の信号

るエッジメモリビッ
ト。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
1
ಯ7DJB0ಯ

ಯ7DJ2XWಯಯ7DJ,QBಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• 入力「TagIn_1」に信号立ち下がりエッジがあります。
• オペランド「TagIn_2」のシグナル状態が「1」であること。

3.2.1.19

P=: 立ち上がりエッジのオペランド設定

説明「立ち上がりエッジのオペランド設定」命令を使用して、論理演算の結果(RLO)が「0」から「1」に切り替わった場合、指定されたオペランド(<Operand2>)を設定します。この命令
は、現在の RLO と、エッジメモリビット(<Operand1>)に保存された以前のクエリからのRLO を比較します。命令が RLO の「0」から「1」への切り替えを検出すると、信号立ち上
がりエッジが存在します。

474

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
命令が実行されるたびに、信号立ち上がりエッジが照会されます。立ち上がりエッジが検出された場合、1 プログラムサイクルの間<Operand2>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。
命令の上のオペランドのプレースホルダで、設定されるオペランド(<Operand2>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand1>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。これがエッジ評価に影響を与え、結果が不定になります。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ
領域にあることが必要です。

パラメータ
次の表に、「立ち上がりエッジのオペランド設定」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域<Operand2 Output

BOOL

I、Q、M、D、L 立ち上がりエッジがある>

説明
場合に設定されるオペラ
ンド。

<Operand1 InOut

BOOL

I、Q、M、D、L エッジメモリビット>例
次の例で、ブロックパラメータのタイプを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

ಯ7DJ2XWಯ
3
ಯ7DJB0ಯ

命令ボックスの入力のシグナル状態が「0」から「1」に変わる(立ち上がりエッジ)と、「TagOut」出力が 1 プログラムサイクルの間に設定されます。それ以外のすべての場合、「TagOut」出力のシグナル状態は「0」になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

475

基本命令
3.2 FBD

3.2.1.20

N=: 信号立ち下がりエッジのオペランドの設定

説明「信号立ち下がりエッジのオペランド設定」命令を使用して、論理演算の結果(RLO)が「1」から「0」に切り替わった場合、指定されたオペランド(<Operand1>)を設定します。この命令は、現在の RLO と、エッジメモリビット(<Operand2>)に保存された以前のクエリからの RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出すると、信号立
ち下がりエッジが存在します。
命令が実行されるたびに、信号立ち下がりエッジが照会されます。信号立ち下がりエッジが検出された場合、1 プログラムサイクルの間<Operand1>がシグナル状態「1」にセットされます。それ以外のすべての場合、オペランドのシグナル状態は「0」です。
命令の上のオペランドのプレースホルダで、設定されるオペランド(<Operand1>)を指定します。命令の下のオペランドプレースホルダにエッジメモリビット(<Operand2>)を指定します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。これがエッジ評価に影響を与え、結果が不定になります。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ
領域にあることが必要です。

パラメータ
次の表に、「信号立ち下がりエッジのオペランドの設定」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明<Operand1>

Output

BOOL

I、Q、M、D、L 立ち下がりエッジがある場合に設定されるオペランド。

<Operand2>

InOut

BOOL

I、Q、M、D、L エッジメモリビ
ット

476

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

ಯ7DJ2XWಯ
1
ಯ7DJB0ಯ

命令ボックスの入力のシグナル状態が「1」から「0」に切り替わった場合(立ち下がりエッジ)、オペランド「TagOut」が 1 プログラムサイクルの間に設定されます。それ以外のすべての場合、オペランド「TagOut」のシグナル状態は「0」です。

3.2.1.21

P_TRIG:立ち上がりエッジの RLO スキャン

説明
「立ち上がりエッジの RLO スキャン」命令を使用して、論理演算の結果(RLO)のシグナル状
態での「0」から「1」への切り替えを照会します。この命令は、RLO の現在のシグナル状
態と、エッジメモリビット(<Operand>)に保存された前に照会されたシグナル状態を比較します。命令が RLO の「0」から「1」への切り替えを検出すると、信号立ち上がりエッジが存在します。
命令が実行されるたびに、信号立ち上がりエッジが照会されます。信号立ち上がりエッジが検出されると直ちに、プログラムサイクルの長さの間に命令の出力 Q がシグナル状態「1」を返します。それ以外のすべての場合、出力はシグナル状態「0」を返します。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。これがエッジ評価に影響を与え、結果が不定になります。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ
領域にあることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

477

基本命令
3.2 FBD

パラメータ
次の表に、「立ち上がりエッジの RLO スキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CLK

Input

BOOL

I、Q、M、D、L 現在の RLO<Operand> InOut

BOOL

M、D

以前のクエリの RLO が保存されているエッジメモ
リビット。

Q

Output

BOOL

I、Q、M、D、L エッジ評価の結果

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ! 

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

3B75,*
&/.
4

&$6
-03

ಯ7DJB0ಯ

前のビット論理演算の RLO は、エッジメモリビット「Tag_M」に保存されます。RLO のシグナル状態で「0」から「1」の切り替えが検出された場合、プログラムがジャンプラベル
CAS1 にジャンプします。

3.2.1.22

N_TRIG:立ち下がりエッジの RLO スキャン

説明
「立ち下がりエッジの RLO スキャン」命令を使用して、論理演算の結果(RLO)のシグナル状
態での「1」から「0」への切り替えを照会します。この命令は、RLO の現在のシグナル状
態と、エッジメモリビット(<Operand>)に保存された前に照会されたシグナル状態を比較します。命令が RLO の「1」から「0」への切り替えを検出すると、信号立ち下がりエッジが存在します。

478

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
命令が実行されるたびに、信号立ち下がりエッジが照会されます。信号立ち下がりエッジが検出されると直ちに、プログラムサイクルの長さの間に命令の出力 Q がシグナル状態「1」を返します。それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。これがエッジ評価に影響を与え、結果が不定になります。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ
領域にあることが必要です。

パラメータ
次の表に、「立ち下がりエッジの RLO スキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CLK

Input

BOOL

I、Q、M、D、L 現在の RLO<Operand> InOut

BOOL

M、D

以前のクエリの RLO が保存されているエッジメモ
リビット。

Q

Output

BOOL

I、Q、M、D、L エッジ評価の結果

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ! 

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ

1B75,*
&/.
4

&$6
-03

ಯ7DJB0ಯ

前のビット論理演算の RLO は、エッジメモリビット「Tag_M」に保存されます。RLO のシグナル状態で「1」から「0」の切り替えが検出された場合、プログラムがジャンプラベル
CAS1 にジャンプします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

479

基本命令
3.2 FBD

3.2.1.23

R_TRIG:信号立ち上がりエッジを検出

説明「信号立ち上がりエッジの検出」命令を使用して、CLK 入力で「0」から「1」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前のクエリ(エッジメ
モリビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「0」から「1」への状態変化を検出すると、Q 出力で信号立ち上がりエッジが生成されます。つまり、
正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

パラメータ
次の表に、「信号立ち上がりエッジの検出」命令のパラメータを示します。
パラメータ 宣言
EN
ENO
CLK

Input
OutputInput

データタイプ
BOOL
BOOL
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

イネーブル入D、L

D、L、T、C

力

I、Q、M、

I、Q、M、

イネーブル出

D、L

D、L

力

I、Q、M、

I、Q、M、エッジが照会

D、L、またD、L、T、される受信信は定数

C、または定 号
数Q

480

Output

BOOL

I、Q、M、

I、Q、M、

エッジ評価の

D、L

D、L

結果

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ

'%
ಯ5B75,*B'%ಯ

! 

5B75,*

ಯ7DJ,QBಯ
ಯ7DJ,Qಯಯ7DJ,QBಯ

(1

4

&/.

(12

ಯ7DJ2XWಯCLK 入力のタグでの前の状態は、「R_TRIG_DB」タグに保存されます。「0」から「1」へのシグナル状態の変化が「TagIn_1」および「TagIn_2」オペランド または「TagIn_3」オペ
ランドで検出されると、「TagOut_Q」出力のシグナル状態は 1 サイクルについて「1」になります。

3.2.1.24

F_TRIG:信号立ち下がりエッジを検出

説明「信号立ち下がりエッジの検出」命令を使用して、CLK 入力で「1」から「0」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前のクエリ(エッジメ
モリビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「1」から「0」への状態変化を検出すると、Q 出力で信号立ち下がりエッジが生成されます。つまり、
正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

パラメータ
次の表に、「信号立ち下がりエッジの検出」命令のパラメータを示します。
パラメータ
EN
ENO

宣言
Input
OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

データタイプ
BOOL
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

イネーブル入D、L

D、L、T、C

力

I、Q、M、

I、Q、M、

イネーブル出

D、L

D、L

力

481

基本命令
3.2 FBD
パラメータ
CLK

宣言

データタイプ

Input

BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、エッジが照会

D、L、またD、L、T、される受信信は定数

C、または定 号
数

Q

Output

BOOL

I、Q、M、

I、Q、M、

エッジ評価の

D、L

D、L

結果

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ'%
ಯ)B75,*B'%ಯ

! )B75,*

ಯ7DJ,QBಯ
ಯ7DJ,Qಯಯ7DJ,QBಯ

(1

4

&/.

(12

ಯ7DJ2XWಯCLK 入力のタグでの前の状態は、「F_TRIG_DB」タグに保存されます。「1」から「0」へのシグナル状態の変化が「TagIn_1」および「TagIn_2」オペランド または「TagIn_3」オペ
ランドで検出されると、「TagOut_Q」出力のシグナル状態は 1 サイクルについて「1」に
なります。

3.2.2

タイマの動作

3.2.2.1

TP: パルスの生成

説明「パルス生成」命令を使用して、プログラムされた持続時間の出力 Q を設定できます。入力
IN で論理演算の結果(RLO)が「0」から「1」(立ち上がりエッジ)に切り替わると、命令が開始します。命令が開始されると、プログラムされた時間 PT が開始します。その後の入力信号に関係なく、出力 Q が持続時間 PT の間セットされます。時間 PT の経過中、IN 入力での新しい信号立ち上がりエッジの検出は Q 出力のシグナル状態に影響を与えません。
ET 出力で、現在のタイマ値を照会できます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。時間 PT が経過し、入力 IN のシグナル状態が「0」の場合、ET 出力482

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
がリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない
場合、ET 出力は時間 PT の期限が切れるとすぐに定数値を返します。
「パルスタイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。この前に、論理演算が必要となります。
「パルス生成」命令の各呼び出しは、インスタンスデータが保存される IEC タイマに割り当てる必要があります。

S7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TP_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TP_TIME」または「IEC_TIMER」のローカ
ルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TP_TIME、または TP_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TP_TIME、TP_LTIME、IEC_TIMER、またはIEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

483

基本命令
3.2 FBD

インスタンスデータ内の現在値の更新「パルスタイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「パルスタイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「パルスタイマ」
命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「パルスタイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

484

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「パルス生成」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、M、 I、Q、M、 開始入力
D、L、ま

D、L、T、

たは定数

C、P、ま
たは定数

PT

Input

TIME

TIME,

I、Q、M、 I、Q、M、 パルスの持

LTIME

D、L、ま

D、L、P、 続時間。

たは定数または定数 PT パラメ
ータの値は
正の値であ
ることが必
要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

485

基本命令
3.2 FBD
パラメータ 宣言
Q

データタイプ

Output

メモリ領域

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 パルス出力
D、L

ET

Output説明

TIME

S7-1500
D、L、P

TIME,

I、Q、M、 I、Q、M、 現在のタイ

LTIME

D、L

D、L、P

マ値

パルスタイミング図
次の図に、「パルスタイマ」命令のパルスタイミング図を示します。
,1

4

37

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ73B'%ಯ
73
7,0(

486

ಯ7DJB6WDUWಯ

,1

4

ಯ7DJB6WDWXVಯಯ7DJB3UHVHW7LPHಯ

37(7

ಯ7DJB(ODSVHG7LPHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 => 「1」PT

Tag_PresetTime

T#10s

Q

Tag_Status

TRUE

ET

Tag_ElapsedTime

T#0s から => T#10s「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わるときに、PT パラメータに対してプログラムされた時間が開始され、「Tag_Status」オペランドが「1」にセットされます。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。その時間が経過すると、「Tag_Status」オペランドがシグナル状態「0」にリセットされます。

3.2.2.2

TON: オンディレータイマ

説明「オンディレータイマ」命令を使用し、PT 時間で設定された持続時間によって Q 出力のセットを遅延することができます。入力 IN で論理演算の結果(RLO)が「0」から「1」(立ち上がりエッジ)に切り替わると、命令が開始します。命令が開始されると、プログラムされた
時間 PT が開始します。時間 PT が経過すると、出力 Q のシグナル状態は「1」になります。
出力 Q は、開始入力が「1」の間はセットされた状態が続きます。開始入力のシグナル状態
が「1」から「0」に切り替わると、Q 出力がリセットされます。開始入力で信号の新しい立ち上がりエッジが検出されると、タイマファンクションが再開されます。
現在の時間値は、出力 ET で照会できます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。IN 入力がシグナル状態「0」に切り替わると、ET 出力が直ちにリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET
出力は時間 PT の期限が切れるとすぐに定数値を返します。
「オンディレータイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。
この前に、論理演算が必要となります。
「オンディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

487

基本命令
3.2 FBD

S7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TON_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TON_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TON_TIME、または TON_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TON_TIME、TON_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)
命令データは、以下の場合に更新されます。
• 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。出力が相互接続されていない場合、出力 ET の現在のタイマ値は更新されません。
• Q または ET 出力へのアクセス時。

488

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

インスタンスデータ内の現在値の更新「オンディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オンディレータイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「オンディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オンディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

489

基本命令
3.2 FBD

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オンディレータイマ」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、M、 I、Q、M、 開始入力
D、L、ま

D、L、T、

たは定数

C、P、ま
たは定数

PT

Input

TIME

TIME,

I、Q、M、 I、Q、M、 オンディレ

LTIME

D、L、ま

D、L、P、 ーの持続時

たは定数

または定数 間。
PT パラメ
ータの値は
正の値であ
ることが必
要です。

490

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言
Q

データタイプ

Output

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 時間 PT のD、L

S7-1500
D、L、P

経過時にセ
ットされる
出力。

ET

Output

TIME

TIME,

I、Q、M、 I、Q、M、 現在のタイ

LTIME

D、L

D、L、P

マ値

パルスタイミング図
次の図に、「オンディレータイマ」命令のパルスタイミング図を示します。
,1

4

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ721B'%ಯ
721
7,0(
ಯ7DJB6WDUWಯ

,1

4

ಯ7DJB6WDWXVಯಯ7DJB3UHVHW7LPHಯ

37(7

ಯ7DJB(ODSVHG7LPHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

491

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 => 「1」PT

Tag_PresetTime

T#10s

Q

Tag_Status

FALSE; 10 秒後=> TRUE

ET

Tag_ElapsedTime

T#0s から => T#10s「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、PT パラメータに対してプログラムされた時間が開始されます。時間が経過すると、「Tag_Status」オペ
ランドのシグナル状態が「1」にセットされます。Tag_Start オペランドのシグナル状態が「1」である限り、Tag_Status オペランドは「1」にセットされたままです。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。オペランド「Tag_Start」のシグナル状態
が「1」から「0」に切り替わると、「Tag_Status」オペランドがリセットされます。

3.2.2.3

TOF: オフディレータイマ

説明「オフディレータイマ」命令を使用し、PT 時間で設定された持続時間によって Q 出力のセットを遅延することができます。Q 出力は、入力 IN で論理演算の結果(RLO)が「1」から「0」に切り替わった場合(立ち下がりエッジ)に設定されます。入力 IN でシグナル状態が「1」に戻る(信号立ち下がりエッジ)と、設定された時間 PT が開始します。持続時間 PT の間、出力 Q がセットされた状態が継続します。PT 持続時間が経過すると、Q 出力がリセ
ットされます。持続時間 PT が経過する前に入力 IN のシグナル状態が「1」に切り替わると、タイマがリセットされます。出力 Q のシグナル状態は、「1」のままになります。
現在の時間値は、出力 ET で照会できます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。PT 持続時間が経過すると、入力 IN が「1」に戻るまで、ET 出力は現在値にセットされたままです。持続時間 PT が経過する前に入力 IN が「1」に切り替わると、ET 出力が値 T#0s にリセットされます。命令がプログラム内で、たとえば、スキッ
プされて呼び出されない場合、ET 出力はこの時間が経過するとすぐに定数値を返します。
「オフディレータイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。
この前に、論理演算が必要となります。
「オフディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。

492

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

S7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TOF_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TOF_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TOF_TIME、または TOF_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TOF_TIME、TOF_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

493

基本命令
3.2 FBD

インスタンスデータ内の現在値の更新「オフディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オフディレータイマ」命令は、現在の RLO と、インスタンスデータの IN パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が開始されます。「オフディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、 Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オフディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

494

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オフディレータイマ」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、M、 I、Q、M、 開始入力
D、L、ま

D、L、T、

たは定数

C、P、ま
たは定数

PT

Input

TIME

TIME,

I、Q、M、 I、Q、M、 オフディレ

LTIME

D、L、ま

D、L、P、 ーの持続時

たは定数

または定数 間PT パラメ
ータの値は
正の値であ
ることが必
要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

495

基本命令
3.2 FBD
パラメータ 宣言
Q

データタイプ

Output

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 タイマ PT
D、L

S7-1500
D、L、P

の期限が切
れたときに
リセットさ
れる出力。

ET

Output

TIME

TIME,

I、Q、M、 I、Q、M、 現在のタイ

LTIME

D、L

D、L、P

マ値

パルスタイミング図
次の図に、「オフディレータイマ」命令のパルスタイミング図を示します。
,1

4
37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ72)B'%ಯ
72)
7,0(

496

ಯ7DJB6WDUWಯ

,1

4

ಯ7DJB6WDWXVಯಯ7DJB3UHVHW7LPHಯ

37(7

ಯ7DJB(ODSVHG7LPHಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 =>「1」; シグナル移行「1」 =>「0」

PT

Tag_PresetTime

T#10s

Q

Tag_Status

TRUE

ET

Tag_ElapsedTime

T#10s から => T#0s

オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わると、「Tag_Status」
オペランドがシグナル状態「1」にセットされます。「Tag_Start」オペランドのシグナル状
態が「1」から「0」に切り替わると、PT パラメータに対してプログラムされた時間が開始されます。その時間が継続中の場合は、「Tag_Status」オペランドは TRUE にセットされたままです。その時間が経過すると、「Tag_Status」オペランドは FALSE にリセットされます。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。

3.2.2.4

TONR: タイムアキュムレータ

説明「タイムアキュムレータ」命令を使用して、PT パラメータによってセットされた時間内の時間値を累積します。入力 IN での論理演算の結果(RLO)が「0」から「1」に切り替わると(信号立ち上がりエッジ)、時間測定が開始され、設定された時間 PT が開始します。その時
間 PT が継続中は、IN 入力のシグナル状態が「1」のときに記録された時間値が累積されます。累積された時間は ET 出力に書き込まれ、そこから照会できます。現在の時間値 PTに到達すると、出力 Q のシグナル状態が「1」になります。入力 IN がシグナル状態「0」に変わっても、出力 Q は「1」にセットされた状態が継続します。
開始入力のシグナル状態に関係なく、R 入力が出力 ET と Q をリセットします。
「タイムアキュムレータ」命令は、ネットワーク内またはネットワークの終端に配置できます。この前に、論理演算が必要となります。
「タイムアキュムレータ」命令の各呼び出しは、インスタンスデータが格納される IEC タ
イマに割り当てられる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

497

基本命令
3.2 FBD

S7-1200 CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TONR_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TONR_TIME」または「IEC_TIMER」のローカルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TONR_TIME、または TONR_LTIMEの構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TONR_TIME、TONR_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「タイムアキュムレータ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「タイムアキュムレータ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が続行されます。命令がRLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が中断されます。「タイムアキュムレータ」命令が処理されると、IN パラメー
タの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。

498

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD• R 入力入力 R での信号「1」は、時間測定をリセットおよびブロックします。IN 入力でのエッジは無視されます。入力 R での信号「0」は、時間測定を再度有効にします。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「タイムアキュムレータ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。
危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

499

基本命令
3.2 FBD

パラメータ
次の表に、「タイムアキュムレータ」命令のパラメータを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、M、 I、Q、M、 開始入力
D、L、ま

D、L、T、

たは定数

C、P、ま
たは定数

R

PT

Input

Input

BOOL

TIME

BOOL

I、Q、M、 I、Q、M、 リセット入
D、L、ま

D、L、P、 力

たは定数

または定数

TIME,

I、Q、M、 I、Q、M、 時間記録の

LTIME

D、L、ま

D、L、P、 最大継続時

たは定数

または定数 間。
PT パラメ
ータの値は
正の値であ
ることが必
要です。

Q

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 時間 PT が
D、L

D、L、P

経過したと
きにセット
される出
力。

ET

500

Output

TIME

TIME,

I、Q、M、 I、Q、M、 現在のタイ

LTIME

D、L

D、L、P

マ値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パルスタイミング図
次の図に、「タイムアキュムレータ」命令のパルスタイミング図を示します。
,1

5

4

37

(7

例
次の例で、命令がどのように動作するかを示します。
ಯ7215B'%ಯ
7215
7,0(
ಯ7DJB6WDUWಯ

,1

4

ಯ7DJB6WDWXVಯಯ7DJB5HVHWಯ

5(7

ಯ7DJB(ODSVHG7LPHಯ

ಯ7DJB3UHVHW7LPHಯ

37

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Start

シグナル移行「0」 => 「1」PT

Tag_PresetTime

T#10s

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

501

基本命令
3.2 FBD
パラメータ

オペランド

値

Q

Tag_Status

FALSE; 10 秒後=> TRUE

ET

Tag_ElapsedTime

シグナル移行「0」 => 「1」時間 T#10s が経過。
5 秒後、シグナル移行「1」=> 「0」:「Tag_ElapsedTime」オペラ
ンドの時間は T#5s のままです。
約 2 秒後、更新されたシグナル移行「0」 => 「1」:「Tag_ElapsedTime」オペラ
ンドの時間は、T#5s で経過し続けます。

「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、PT パラメータに対してプログラムされた時間が開始されます。「Tag_Start」オペランドのシグナル状態が「1」である限り、時間が経過し続けます。「Tag_Start」オペランドのシグナル状態が「1」から「0」に切り替わると、時間が停止し、Tag_ElapsedTime オペランドの現在の時間値が記録されます。「Tag_Start」オペランドのシグナル状態が再び「0」から「1」に切り替わ
ると、時間は、「1」から「0」への移行時に記録された時間値から始めて、経過し続けます。PT パラメータに対して指定されている時間値に達すると、「Tag_Status」オペランド
がシグナル状態「1」にセットされます。現在の時間値が「Tag_ElapsedTime」オペランドに保存されます。

3.2.2.5

TP: パルスタイマの起動

説明「パルスタイマの起動」命令を使用して、パルスとして指定された持続時間分、IEC タイマ
を起動します。IEC タイマは、論理演算の結果(RLO)が「0」から「1」へ変わった場合(立ち上がりエッジ)に起動されます。RLO がその後に変化するかどうかに関係なく、IEC タイマは指定された持続時間分、実行されます。IEC タイマの期限切れも、新しい信号立ち上がり
エッジの検出には影響されません。IEC タイマを実行している限り、タイマステータスが「1」であるか問い合わせると、シグナル状態が「1」に戻ります。IEC タイマの期限が切れ
ると、タイマステータスがシグナル状態「0」に戻ります。

502

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
現在のタイマステータスは IEC タイマの Q 構造体コンポーネントに保存されます。タイマ
ステータスは、バイナリ論理演算を使って照会できます。
「パルスタイマの起動」命令の実行は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、IEC タイマの開始と照会の期限切れのレベルが異なる可能性があります。

S7-1200 CPU の場合「パルスタイマの起動」命令は、データタイプ IEC_TIMER または TP_TIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TP_TIME」または「IEC_TIMER」のローカ
ルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合「パルスタイマの起動」命令は、データタイプ IEC_TIMER、IEC_LTIMER、TP_TIME、またはTP_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TP_TIME、TP_LTIME、IEC_TIMER、またはIEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

503

基本命令
3.2 FBD

インスタンスデータ内の現在値の更新「パルスタイマの起動」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「パルスタイマの起動」命令は、現在の RLO と、インスタンスデータの IN パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「パルスタイマの起動」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「パルスタイマの起動」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

504

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「パルスタイマの起動」命令のパラメータを示します。
パラメータ
VALUE

<IEC timer>

宣言
Input

InOut

データタイプS7-1200

S7-1500

TIME

TIME, LTIME

IEC_TIMER,

IEC_TIMER,

TP_TIME

IEC_LTIMER,

メモリ領域

説明

I、Q、M、

IEC タイマがD、L、また

動作する時

は定数

間。

D、L

開始される
IEC タイマ。

TP_TIME,
TP_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

505

基本命令
3.2 FBD

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

4

37

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ'%ಯ
0\,(&B7,0(5ಯ7DJB,QSXWಯಯ7DJB7,0(ಯ

73
7,0(
9$/8(

「パルスタイマの起動」命令は、オペランド Tag_Input のシグナル状態が「0」から「1」に切り替わると実行されます。タイマ "DB1".MyIEC_TIMER は、オペランド「TagTime」内に格納された時間で開始されます。
ಯ7DJB2XWSXWಯಯ'%ಯ0\,(&B
7,0(54タイマ "DB1".MyIEC_TIMER が実行中である限り、タイマステータス("DB1".MyIEC_TIMER.Q)のシグナル状態は「1」であり、オペランド「Tag_Output」がセットされます。IEC タイマの期限が切れると、時間ステータスがシグナル状態「0」に戻り
Tag_Output、オペランドがリセットされます。

506

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.2.6

TON: オンディレータイマの起動

説明「オンディレータイマの起動」命令を使用して、オンディレーとして指定された持続時間
分、IEC タイマを起動します。IEC タイマは、論理演算の結果(RLO)が「0」から「1」へ変わった場合(立ち上がりエッジ)に起動されます。IEC タイマが、指定された持続時間の間、作動します。命令の入力時の RLO のシグナル状態が「1」の場合、出力はシグナル状態は「1」を返します。タイマの期限が切れる前に RLO が「0」に切り替わると、動作中の IEC
タイマがリセットされます。この場合、タイマステータスの照会はシグナル状態「0」を返します。命令の入力で次の立ち上がりエッジが検出されると、IEC タイマが再起動します。
現在のタイマステータスは IEC タイマの「Q」構造体コンポーネントに保存されます。タイマステータスは、バイナリ論理演算を使って照会できます。
「オンディレータイマの起動」命令は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、IEC タイマの開始と照会の期限切れのレベルが異なる可能性があります。

S7-1200 CPU の場合「オンディレータイマの起動」命令がそのデータをデータタイプ IEC_TIMER または
TON_TIME の構造体に保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TON_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

S7-1500 CPU の場合「オンディレータイマの起動」命令は、データタイプ IEC_TIMER、IEC_LTIMER、
TON_TIME、または TON_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TON_TIME、TON_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

507

基本命令
3.2 FBD

インスタンスデータ内の現在値の更新「オンディレータイマの起動」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オンディレータイマの起動」命令は、現在の RLO と、インスタンスデータの IN パラ
メータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「オンディレータイマの起動」命令が処理されると、IN パラメータの値がイン
スタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オンディレータイマの起動」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

508

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オンディレータイマの起動」命令のパラメータを示します。
パラメータ
VALUE

<IEC timer>

宣言
Input

InOut

データタイプS7-1200

S7-1500

TIME

TIME, LTIME

IEC_TIMER,

IEC_TIMER,

TON_TIME

IEC_LTIMER,

メモリ領域

説明

I、Q、M、

IEC タイマがD、L、また

動作する時

は定数

間。

D、L

開始される
IEC タイマ。

TON_TIME,
TON_LTIME
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

509

基本命令
3.2 FBD

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

4

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
ಯ0\,(&B7,0(5ಯಯ7DJB,QSXWಯಯ7DJB7,0(ಯ

721
7,0(
9$/8(

「オンディレータイマの起動」命令は、オペランド「Tag_Input」のシグナル状態が「0」から「1」に切り替わると実行されます。MyIEC_TIMER タイマは、オペランド「Tag_TIME」
内に格納された時間で開始されます。
ಯ7DJB2XWSXWಯಯ0\,(&B7,0(5ಯ4

タイマ「MyIEC_TIMER」の期限が切れ、オペランド「Tag_Input」のシグナル状態が「1」の場合、タイマステータス("MyIEC_TIMER".Q を照会すると、シグナル状態「1」が返され、オペランド「Tag_Output」がセットされます。オペランド「Tag_Input」がシグナル状態「0」に切り替わった場合、タイマステータスを照会するとシグナル状態「0」が返され、オペランド「Tag_Output」がリセットされます。

510

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.2.7

TOF: オフディレータイマの起動

説明「オフディレータイマの起動」命令を使用して、オフディレーとして指定された持続時間
分、IEC タイマを起動します。命令の入力での論理演算の結果(RLO)のシグナル状態が「1」の場合、タイマステータスの照会は、シグナル状態「1」を返します。RLO が「1」から「0」(立ち下がりエッジ)に切り替わると、指定された持続時間の IEC タイマが起動します。
IEC タイマが実行している限り、タイマステータスのシグナル状態は「1」のままです。タ
イマの期限が切れ、命令の入力の RLO のシグナル状態が「0」の場合、タイマステータス
はシグナル状態「0」にセットされます。タイマの期限が切れる前に RLO が「1」に切り替
わった場合、動作中の IEC タイマがリセットされ、タイマステータスがシグナル状態「1」のママになります。
「オフディレータイマの起動」命令は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
現在のタイマステータスは IEC タイマの「Q」構造体コンポーネントに保存されます。タイマステータスは、バイナリ論理演算を使って照会できます。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、IEC タイマの開始と照会の期限切れのレベルが異なる可能性があります。

S7-1200 CPU の場合「オンディレータイマの起動」命令がそのデータをデータタイプ IEC_TIMER または
TOF_TIME の構造体に保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TOF_TIME」または「IEC_TIMER」のロー
カルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

511

基本命令
3.2 FBD

S7-1500 CPU の場合「オフディレータイマの起動」命令は、データタイプ IEC_TIMER、IEC_LTIMER、
TOF_TIME、または TOF_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TOF_TIME、TOF_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「オフディレータイマの起動」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オフディレータイマの起動」命令は、現在の RLO と、インスタンスデータの IN パラ
メータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が開始されます。「オフディレータイマの起動」命令が処理されると、IN パラメータの値がイン
スタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって「IN」パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オフディレータイマの起動」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

512

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オフディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言
VALUE

Input

データタイプ

メモリ領域

説明
IEC タイマが動作すS7-1200

S7-1500

TIME

TIME,

I、Q、M、LTIME

D、L、または る時間。
定数

<IEC timer> InOut

IEC_TIMER, IEC_TIMER, D、L開始される IEC タ

TOF_TIME

イマ。

IEC_LTIMER,TOF_TIME,TOF_LTIME

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

513

基本命令
3.2 FBD

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

4
37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
0\,(&B7,0(572)ಯ7DJB,QSXWಯಯ7DJB7,0(ಯ

7,0(
9$/8(

「オフディレータイマの起動」命令は、オペランド「Tag_Input」のシグナル状態が「1」から「0」に切り替わると実行されます。#MyIEC_TIMER タイマは、オペランド「Tag_TIME」
内に格納された時間で開始されます。
ಯ7DJB2XWSXWಯ0\,(&B7,0(5タイマ#MyIEC_TIMER が作動している限り、時間のステータス(#MyIEC_TIMER.Q)を照会す
るとシグナル状態「1」が返され、オペランド「Tag_Output」が設定されます。タイマの期限が切れ、オペランド「Tag_Input」がシグナル状態「0」になった場合、タイマステー
タスを照会するとシグナル状態「0」が返されます。オペランド「Tag_Input」のシグナル
状態が「1」に切り替わってからタイマ#MyIEC_TIMER の期限が切れる場合、タイマはリ

514

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
セットされます。オペランド「Tag_Input」のシグナル状態が「1」の場合、タイマステー
タスを照会するとシグナル状態「1」が返されます。

3.2.2.8

TONR: タイムアキュムレータ

説明「タイムアキュムレータ」命令を使用し、命令「1」の入力時の信号の長さを記録することが可能です。時間測定は、入力での論理演算の結果(RLO)が「0」から「1」へ変わった場合(立ち上がりエッジ)に開始されます。時間は、RLO が「1」である限り記録されます。RLO が「0」に切り替わると、時間の記録は停止します。RLO が「1」に戻ると、時間の記録が継続されます。記録された時間が指定された持続時間値を超え、コイルの入力での RLO が「1」の場合、「1」のタイマステータスを照会するとシグナル状態「1」が返されます。
現在のタイマステータスは IEC タイマの「Q」構造体コンポーネントに保存されます。ノーマルオープンを使用してタイマ状態が「1」かどうかを問い合わせ、ノーマルクローズを使用して「0」かどうかを問い合わせることができます。
「タイマのリセット」命令を使用して、タイマステータス Q および現在記録されているタイマ「ET」を「0」にリセットできます。
命令の<Operand1> (持続時間)で持続時間を指定し、命令の<Operand2> (IEC タイマ)で開始する IEC タイマを指定します。
「タイムアキュムレータ」命令は、ネットワークの終端にのみ配置できます。この前に、論理演算が必要となります。
注記
出力 Q または ET を照会するたびに IEC_TIMER 構造体が更新されるため、IEC タイマの開始と照会の期限切れのレベルが異なる可能性があります。

S7-1200 CPU の場合「タイムアキュムレータ」命令がそのデータをデータタイプ IEC_TIMER または TONR_TIMEの構造体に保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER のデータブロックの宣言(「MyIEC_TIMER」など)• ブロックの「Static」セクション内のタイプ「TONR_TIME」または「IEC_TIMER」のローカルタグとしての宣言(#MyIEC_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

515

基本命令
3.2 FBD

S7-1500 CPU の場合「タイムアキュムレータ」命令は、データタイプ IEC_TIMER、IEC_LTIMER、TONR_TIME、または TONR_LTIME の構造体にデータを保存します。構造体は、次のように宣言できます。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TONR_TIME、TONR_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

インスタンスデータ内の現在値の更新「タイムアキュムレータ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「タイムアキュムレータ」命令は、現在の RLO と、インスタンスデータの「IN」パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が続行されます。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がり
エッジが存在し、時間測定が中断されます。「タイムアキュムレータ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモ
リビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。

516

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD• R 入力入力 R での信号「1」は、時間測定をリセットおよびブロックします。IN 入力でのエッジは無視されます。入力 R での信号「0」は、時間測定を再度有効にします。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「タイムアキュムレータ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。
危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

517

基本命令
3.2 FBD

パラメータ
次の表に、「タイムアキュムレータ」命令のパラメータを示します。
パラメータ
VALUE

宣言
Input

データタイプ

メモリ領域

S7-1200

S7-1500

TIME

TIME, LTIME

説明

I、Q、M、D、L、 IEC タ
または定数

イマが
動作す
る時間。

<IEC timer>

InOut

IEC_TIMER,

IEC_TIMER,

D、L

TONR_TIME

IEC_LTIMER,れる

TONR_TIME,IEC タ

TONR_LTIME

イマ。

開始さ

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
,1

5

4

37

(7

518

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ0\,(&B7,0(5ಯ

7215

ಯ7DJB,QSXWಯಯ7DJB7,0(ಯ

7,0(
9$/8(

RLO に立ち上がりエッジがある場合、「タイムアキュムレータ」命令が実行されます。オ
ペランド「Tag_Input」のシグナル状態が「1」である限り、時間が記録されます。
ಯ7DJB2XWSXWಯಯ0\,(&B7,0(5ಯ4記録された時間がオペランド「Tag_TIME」の値を超えている場合、タイマステータス("MyIEC_TIMER".Q)を照会するとシグナル状態「1」が返され、オペランド「Tag_Output」がセットされます。

下記も参照
RT: タイマのリセット (ページ 519)

3.2.2.9

RT: タイマのリセット

説明「タイマのリセット」命令を使用し、IEC タイマを「0」にリセットすることが可能です。
リセットする IEC タイマは、IEC タイマの構造体を含むデータブロックの名前を命令の上にあるプレースホルダに入力して指定します。
この命令は、ボックス入力の論理演算の結果(RLO)が「1」の場合のみ実行されます。この命令が実行されると、指定したデータブロックで IEC タイマの構造体コンポーネントが「0」にリセットされます。ボックス入力の RLO が「0」の場合、この命令は実行されません。
この命令は、RLO に影響を与えません。ボックス入力の RLO は、ボックス出力に直接転送されます。
プログラムで宣言された IEC タイマを「タイマのリセット」命令に割り当てる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

519

基本命令
3.2 FBD

現在値の更新命令のデータは命令が呼び出されるときのみ更新され、割り当てられた IEC タイマがアクセスされるたびには更新されません。データの照会は、命令の呼び出しから命令の次の呼び出しまでのみ同一になります。

危険現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

520

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「タイマのリセット」命令のパラメータを示します。
パラメータ

宣言

<IEC timer>

データタイプ

InOut

メモリ領域

説明

D、L

リセットされS7-1200

S7-1500

IEC_TIMER,

IEC_TIMER,

TP_TIME,

IEC_LTIMER,

る IEC タイTON_TIME,

TP_TIME,マ。

TOF_TIME,

TP_LTIME,TONR_TIMETON_TIME,
TON_LTIME,TOF_TIME,TOF_LTIME,TONR_TIME,TONR_LTIME

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ721B'%ಯ
721
7,0(
ಯ7DJB,QSXWBಯ

,1(7

ಯ7DJB37ಯ

374

ಯ7DJB(7ಯಯ7DJB6WDWXVಯ

「オンディレー生成」命令は、オペランド「Tag_Input_1」のシグナル状態が「0」から「1」に切り替わると実行されます。インスタンスデータブロック「TON_DB」に保存された IEC
タイマは、オペランド「Tag_PT」で指定された持続時間で起動します。
ಯ7DJB,QSXWBಯ

ಯ721B'%ಯ

ಯ7DJB,QSXWBಯ

57

オペランド「Tag_Input_2」および「Tag_Input_3」のシグナル状態が「1」の場合、「タイマのリセット」命令が実行され、データブロック「TON_DB」に格納された IEC タイマがリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

521

基本命令
3.2 FBD

3.2.2.10

PT: 持続時間のロード

説明「時間の長さのロード」命令を使って、IEC タイマの持続時間を設定します。命令の入力において、論理演算の結果(RLO)のシグナル状態が「1」の場合、サイクルごとにこの命令を実行します。この命令は、指定された IEC タイマの構造体に、指定された持続時間を書き込みます。
プログラムで宣言した IEC タイマを「持続時間のロード」命令に割り当てます。
注記
実行中に、指定した IEC タイマが作動している場合、この命令が指定した IEC タイマの現在の持続時間を上書きします。その結果、IEC タイマのタイマステータスが変わる場合があ
ります。

522

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

現在値の更新命令のデータは命令が呼び出されるとき、および割り当てられた IEC タイマがアクセスされるたびに更新されます。Q または ET (たとえば"MyTimer".Q または"MyTimer".ET)で照会すると、IEC_TIMER 構造体が更新されます。
危険
現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

523

基本命令
3.2 FBD

パラメータ
次の表に、「時間の長さのロード」命令のパラメータを示します。
パラメータ

宣言

PT

データタイプ

Input

S7-1200

S7-1500

TIME

TIME, LTIME

メモリ領域

説明

I、Q、M、

持続時間

D、L、または定数<IEC timer>

InOut

IEC_TIMER,

IEC_TIMER,

D、L

TP_TIME,

IEC_LTIMER,

定する IEC タ

TON_TIME,

TP_TIME,イマ

TOF_TIME,

TP_LTIME,TONR_TIMETON_TIME,

持続時間を設TON_LTIME,TOF_TIME,TOF_LTIME,TONR_TIME,TONR_LTIME
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ721B'%ಯ
721
7,0(
ಯ7DJB,QSXWBಯ

,1(7

ಯ7DJB37ಯ

374

ಯ7DJB(7ಯಯ7DJB6WDWXVಯ

「オンディレー生成」命令は、オペランド「Tag_Input_1」のシグナル状態が「0」から「1」に切り替わると実行されます。インスタンスデータブロック「TON_DB」に保存された IEC
タイマは、オペランド「Tag_PT」で指定された持続時間で起動します。
ಯ721B'%ಯ

37

ಯ7DJB,QSXWBಯಯ7DJB37Bಯ

524

37

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD「時間の長さのロード」命令は、オペランド「Tag_Input_2」のシグナル状態が「1」の場合に実行されます。この命令は、インスタンスデータブロック「TON_DB」に持続時間「Tag_PT_2」を書き込み、同時にデータブロック内のオペランド「Tag_PT」の値を上書きします。結果的にタイマステータスのシグナル状態は、次の照会時、または "MyTimer".Qまたは "MyTimer".ET へのアクセス時に変化する可能性があります。
注記
Tag_Input_2 は、その持続時間が 1 プログラムサイクルのみで読み込まれるように、パルスフラグとして実行されます。

3.2.2.11

レガシー

S_PULSE: パルスタイマパラメータの割り当てと起動

説明「パルスタイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。 入力 S のシグナル状態が「1」の場合は、タイマでプログラミ
ングされた時間(TV)の期限が切れます。 プログラミングされた時間の期限が切れる前に、
入力 S がシグナル状態「0」に切り替わった場合、タイマが停止します。 この場合、出力 Qのシグナル状態は「0」です。
この時間は、内部で時間値とタイムベースから構成され、パラメータ TV でプログラミン
グされます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。 タイムベースは、時間値の時間を決定します。 現在の時間値は、出力 BI
でバイナリコード化され、出力 BCD で BCD コード化されます。
タイマが動作していて、かつ入力 R のシグナル状態が「1」に切り替わった場合、現在の時間値およびタイムベースも 0 にセットされます。 タイマが動作していない場合、R 入力のシグナル状態が「1」であっても効果はありません。
「パルスタイマパラメータの割り当てと開始」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

525

基本命令
3.2 FBD
命令データはアクセスのたびに更新されます。 このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。 このデクリメン
トは、ユーザープログラムに対して非同期的に行われます。 このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。 関連項目「L: タイマ値のロード」。

パラメータ
次の表に、「パルスタイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言
<timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、ま
たは定数
BI
BCD
Q

OutputOutputOutput

WORD
WORD
BOOL

I、Q、M、D、

現在の時間値(バイナリコ

L、P

ード)

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、

タイマのステータス

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

526

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パルスタイミング図
次の図に、「パルスタイマパラメータの割り当てと開始」命令のパルスタイミング図を示し
ます。
7

7

7

⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻ⸮嫛₼⟞ሧ⚗ቲሾ

⟞ሧ⚗ቲሾ

W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯ
6B38/6(
ಯ7DJ,QBಯ

6%,

ಯ7DJ9DOXHBಯಯ7DJ,QB1XPEHUಯ

79

%&'

ಯ7DJ9DOXHBಯಯ7DJ,QBಯ

54

ಯ7DJ2XWಯ

"オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると「Timer_1」が開始します。 「TagIn_1」オペランドのシグナル状態「1」である限り、「TagIn_Number」

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

527

基本命令
3.2 FBD
オペランドの時間値の間、タイマが実行されます。 オペランド「TagIn_1」のシグナル状態
が、タイマの期限が切れる前に「1」から「0」に切り替わった場合、タイマ「Timer_1」が停止します。 オペランド「TagOut」は、シグナル状態「0」にリセットされます。
タイマが実行中でオペランド「TagIn_1」のシグナル状態が「1」である間は、オペランド「TagOut」のシグナル状態は「1」です。 時間の期限が切れるかリセットされた場合、オペランド「TagOut」が「0」にリセットされます。

下記も参照
L: タイマ値のロード (ページ 1135)

S_PEXT: 拡張パルスタイマパラメータを割り当てと起動
説明「拡張パルスタイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。 入力 S がシグナル状態「0」に切り替わっても、タイマでプログラムされた持続時間(TV)の期限が切れます。 タイマが実行中である限り、出力 Q のシグナル状態は「1」です。 タイマの時間が経過すると、出力 Q が「0」にリセットされます。 タイマの実行中に入力 S のシグナル状態が「0」から「1」に切り替わると、タイマは入力 TV でプログラミングされた時間によって再開されます。
この時間は、内部で時間値とタイムベースから構成され、パラメータ TV でプログラミン
グされます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。 タイムベースは、時間値の時間を決定します。 現在の時間値は、出力 BI
でバイナリコード化され、出力 BCD で BCD コード化されます。
タイマが動作していて、かつ入力 R のシグナル状態が「1」に切り替わった場合、現在の時間値およびタイムベースも 0 にセットされます。 タイマが動作していない場合、R 入力のシグナル状態が「1」であっても効果はありません。
「拡張パルスタイマパラメータの割り当てと開始」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することができます。

528

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
命令データはアクセスのたびに更新されます。 このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。 このデクリメン
トは、ユーザープログラムに対して非同期的に行われます。 このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。 関連項目「L: タイマ値のロード」。

パラメータ
次の表に、「拡張パルスタイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言
<timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、ま
たは定数
BI
BCD
Q

OutputOutputOutput

WORD
WORD
BOOL

I、Q、M、D、

現在の時間値(バイナリコ

L、P

ード)

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、

タイマのステータス

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

529

基本命令
3.2 FBD

パルスタイミング図
次の図に、「拡張パルスタイマパラメータの割り当てと開始」命令のパルスタイミング図を
示します。
7

7

7

⏴┪6ቊቑ5/2⏴┪5ቊቑ5/2

ኜኁኻ⸮嫛₼

䏶↩

䏶↩
W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯ
6B3(;7
ಯ7DJ,QBಯ

6%,

ಯ7DJ9DOXHBಯಯ7DJ,QB1XPEHUಯ

79

%&'

ಯ7DJ9DOXHBಯಯ7DJ2XWಯಯ7DJ,QBಯ

5

4"オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると「Timer_1」が開始します。 「TagIn_Number」オペランドの時間値の間タイマが実行されます。S 入力の

530

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
立ち下がりエッジには影響されません。 タイマの期限が切れる前にオペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると、タイマが再起動します。
タイマの実行中は、オペランド「TagOut」のシグナル状態は「1」です。 時間の期限が切れるかリセットされた場合、オペランド「TagOut」が「0」にリセットされます。

下記も参照
L: タイマ値のロード (ページ 1135)

S_ODT: オンディレータイマパラメータの割り当てと開始
説明「オンディレータイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果
で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。 入力 S のシグナル状態が「1」の場合は、タイマでプログラミングされた時間(TV)の期限が切れます。 タイマの時間が正常に経過し、さらに入力 S のシグナル状態が「1」のままである場合、出力 Q がシグナル状態「1」を返します。 タイマの実行中に入力 S のシグナル状態が「1」から「0」に切り替わると、タイマは停止します。 この場合、出力 Q がシグナル状態「0」にリセットされます。
この時間は、内部で時間値とタイムベースから構成され、パラメータ TV でプログラミン
グされます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。 タイムベースは、時間値の時間を決定します。 現在の時間値は、出力 BI
でバイナリコード化され、出力 BCD で BCD コード化されます。
タイマが動作していて、かつ入力 R のシグナル状態が「0」から「1」に切り替わった場合、現在の時間値およびタイムベースも 0 にセットされます。 この場合、出力 Q のシグナル状
態は「0」です。 タイマが実行中でなく、入力 S の RLO が「1」の場合でも、R 入力のシグナル状態が「1」の場合、タイマがリセットされます。
「オンディレータイマパラメータの割り当てと開始」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

531

基本命令
3.2 FBD
命令データはアクセスのたびに更新されます。 このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。 このデクリメン
トは、ユーザープログラムに対して非同期的に行われます。 このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。 関連項目「L: タイマ値のロード」。

パラメータ
次の表に、「オンディレータイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言
<timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、ま
たは定数
BI
BCD
Q

OutputOutputOutput

WORD
WORD
BOOL

I、Q、M、D、

現在の時間値(バイナリコ

L、P

ード)

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、

タイマのステータス

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

532

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パルスタイミング図
次の図に、「オンディレータイマパラメータの割り当てと開始」命令のパルスタイミング図を示します。
7

7

7⏴┪6ቊቑ5/2⏴┪5ቊቑ5/2

ኜኁኻ⸮嫛₼

䏶↩

䏶↩
W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯ
6B2'7
ಯ7DJ,QBಯ

6%,

ಯ7DJ9DOXHBಯಯ7DJ,QB1XPEHUಯ

79

%&'

ಯ7DJ9DOXHBಯಯ7DJ,QBಯ

54

ಯ7DJ2XWಯ

"オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると「Timer_1」が開始します。 オペランド「TagIn_Number」の値でタイマの期限が切れます。 タイマの期限が切れてオペランドのシグナル状態が「1」の場合、「TagOut」オペランドが「1」にセットされます。 タイマの期限が切れる前にオペランド「TagIn_1」のシグナル状態が「1」か

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

533

基本命令
3.2 FBD
ら「0」に切り替わると、タイマは停止します。 オペランド「TagOut」のシグナル状態は「0」です。

下記も参照
L: タイマ値のロード (ページ 1135)

S_ODTS: 保持型オンディレータイマパラメータの割り当てと開始
説明「保持型オンディレータイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラ
ミングされたタイマを起動します。 入力 S がシグナル状態「0」に切り替わっても、タイマでプログラムされた持続時間(TV)の期限が切れます。 タイマの期限が切れた場合、「Q」
出力は、入力「S」でのシグナル状態に関わらずシグナル状態「1」を返します。 タイマの実行中に入力 S のシグナル状態が「0」から「1」に切り替わると、タイマは入力(TV)でプ
ログラミングされた時間によって再開されます。
この時間は、内部で時間値とタイムベースから構成され、パラメータ TV でプログラミン
グされます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。 タイムベースは、時間値の時間を決定します。 現在の時間値は、出力 BI
でバイナリコード化され、出力 BCD で BCD コード化されます。
入力 R のシグナル状態「1」は、開始入力 S でのシグナル状態に関わらず、現在の時間値
およびタイムベースを「0」にリセットします。 この場合、出力 Q のシグナル状態は「0」です。
「保持型オンディレータイマパラメータの割り当てと開始」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することがで
きます。

534

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
命令データはアクセスのたびに更新されます。 このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。 このデクリメン
トは、ユーザープログラムに対して非同期的に行われます。 このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。 関連項目「L: タイマ値のロード」。

パラメータ
次の表に、「保持型オンディレータイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言
<timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、ま
たは定数
BI
BCD
Q

OutputOutputOutput

WORD
WORD
BOOL

I、Q、M、D、

現在の時間値(バイナリコ

L、P

ード)

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、

タイマのステータス

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

535

基本命令
3.2 FBD

パルスタイミング図
次の図に、「保持型オンディレータイマパラメータの割り当てと開始」命令のパルスタイ
ミング図を示します。
77

7⏴┪6ቊቑ5/2⏴┪5ቊቑ5/2

ኜኁኻ⸮嫛₼䏶↩䏶↩W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯ
6B2'76
ಯ7DJ,QBಯ

6%,

ಯ7DJ9DOXHBಯಯ7DJ,QB1XPEHUಯ

79

%&'

ಯ7DJ9DOXHBಯಯ7DJ,QBಯ

54

ಯ7DJ2XWಯ

"オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると「Timer_1」が開始します。 タイマは、「TagIn_1」オペランドのシグナル状態が「0」になっても、「TagIn_Number」オペランドの時間値で期限切れになります。 時間の期限が切れると、オペランド「TagOut」が「1」にリセットされます。 タイマの実行中にオペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると、タイマが再起動します。

536

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

下記も参照
L: タイマ値のロード (ページ 1135)

S_OFFDT: オフディレータイマパラメータの割り当てと開始
説明「オフディレータイマパラメータの割り当てと開始」命令は、入力 S の論理演算(RLO)の結果
で「1」から「0」への切り替え(信号立ち下がりエッジ)が検出されると、プログラミングされたタイマを起動します。 タイマは、プログラムされた時間(TV)によって期限が切れます。 タイマが動作している場合、または入力 S がシグナル状態「1」を返す場合は、入力 Qのシグナル状態は「1」となります。 タイマの時間が経過し、かつシグナル状態が「0」の場合は、出力 Q がシグナル状態「0」にリセットされます。 タイマの実行中に入力 S のシグナル状態が「0」から「1」に切り替わると、タイマは停止します。 タイマは、入力 S で信号の立ち下がりエッジが検出された後にのみ再開されます。
この時間は、内部で時間値とタイムベースから構成され、パラメータ TV でプログラミン
グされます。この命令が開始されると、プログラムされた時間値がゼロの方向にカウントダウンされます。 タイムベースは、時間値の時間を決定します。 現在の時間値は、出力 BI
でバイナリコード化され、出力 BCD で BCD コード化されます。
入力 R でのシグナル状態「1」は、現在の時間値およびタイムベースを「0」にリセットします。 この場合、出力 Q のシグナル状態は「0」です。
「オフディレータイマパラメータの割り当てと開始」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することができます。
命令データはアクセスのたびに更新されます。 このため、サイクルの最初のデータのク
エリは、サイクルの最後のデータと異なる値を返す可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。 このデクリメン
トは、ユーザープログラムに対して非同期的に行われます。 このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。 関連項目「L: タイマ値のロード」。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

537

基本命令
3.2 FBD

パラメータ
次の表に、「オフディレータイマパラメータの割り当てと開始」命令のパラメータを示します。
パラメータ 宣言
<timer>

データタイプ

InOut/Input TIMER

メモリ領域

説明

T

命令の時間
タイマの数は CPU によって異なります。

S

Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数
R

Input

BOOL

I、Q、M、T、

リセット入力

C、D、L、P、ま
たは定数
BI
BCD
Q

OutputOutputOutput

WORD
WORD
BOOL

I、Q、M、D、

現在の時間値(バイナリコ

L、P

ード)

I、Q、M、D、

現在の時間値(BCD フォー

L、P

マット)

I、Q、M、D、

タイマのステータス

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

538

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パルスタイミング図
次の図に、「オフディレータイマパラメータの割り当てと開始」命令のパルスタイミング図を示します。
77

7

7⏴┪6ቊቑ5/2⏴┪5ቊቑ5/2

ኜኁኻ⸮嫛₼

䏶↩

䏶↩
W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
ಯ7LPHUBಯ
6B2))'7
ಯ7DJ,QBಯ

6%,

ಯ7DJ9DOXHBಯಯ7DJ,QB1XPEHUಯ

79

%&'

ಯ7DJ9DOXHBಯಯ7DJ2XWಯಯ7DJ,QBಯ

5

4"オペランド「TagIn_1」のシグナル状態が「1」から「0」に切り替わると「Timer_1」が開始します。 オペランド「TagIn_Number」の値でタイマの期限が切れます。 タイマが実行中であるかオペランド「TagIn_1」のシグナル状態が「0」の場合、オペランド「TagOut」が「1」にセットされます。 タイマの実行中にオペランド「TagIn_1」のシグナ
ル状態が「0」から「1」に切り替わると、タイマがリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

539

基本命令
3.2 FBD

下記も参照
L: タイマ値のロード (ページ 1135)

SP: パルスタイマの起動

説明「パルスタイマの起動」命令は、初期入力における論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。タイマは、RLO のシグナル状態が「1」である限り、指定された時間の間実行されます。タイマが実行されている限り、タイマステータス「1」を照会するとシグナル状態「1」が返されます。時間値の期限が切れる前に、RLO で「1」から「0」への切り替えがあった場合、タイマが停止します。この場合、タイマステータス「1」を照会するとシグナル状態「0」が返されます。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値の時間を決定します。
「パルスタイマの起動」命令は、エッジ評価のために事前の論理演算が必要であり、ネッ
トワークの右側にのみ配置できます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

540

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「パルスタイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数<Timer>InOut/Input TIMER

T

開始されるタイマ
タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:
7LPHUB
6,

7DJ,QB
7DJ,QB1XPEHU

7:「#TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「#Timer_1」が開始されます。タイマは、「#TagIn_1」オペランドのシグナル状態が「1」である限り、「#TagIn_Number」オペランドの時間値で期限切れになります。タイマの期限が切れる前にオペランド「#TagIn_1」のシグナル状態が「1」から「0」に切り替わると、タイマは停止します。
ネットワーク 2:

7DJ2XW
7LPHUB

タイマの実行中は、オペランド「#TagOut」がシグナル状態「1」を返します。
ネットワーク 3:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

541

基本命令
3.2 FBD
7LPHUB7DJ,QB

5

オペランド「#TagIn_2」のシグナル状態が「0」から「1」に切り替わると、タイマがリセットされ、それによってタイマが停止し、現在の時間値が「0」にセットされます。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

下記も参照
L: タイマ値のロード (ページ 1135)

SE: 拡張パルスタイマの起動

説明「拡張パルスタイマの起動」命令は、初期入力における論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。RLO がシグナル状態「0」に変わっても、タイマが指定された時間実行されます。タイマが実行されている限り、タイマステータス「1」を照会するとシグナル状態「1」が返されます。タイマの実行中に RLO が「0」から「1」に切り替わると、プログラ
ムされた時間でタイマが再開されます。「1」に対するタイマステータスをクエリすると、タイマの期限が切れるときにシグナル状態「0」が返されます。

542

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値の時間を決定します。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)を参照してください。

パラメータ
次の表に、「拡張パルスタイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数<Timer>InOut/Input TIMER

T

開始されるタイマ
タイマの数は CPU によって異なります。

例
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:
7LPHUB
69

7DJ,QB
7DJ,QB1XPEHU

7:「#TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「#Timer_1」が開始されます。タイマは、オペランド「#TagIn_Number」の時間値で期限が切れます。RLOの信号立ち下がりエッジには影響されません。
ネットワーク 2:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

543

基本命令
3.2 FBD

7DJ2XW
7LPHUB

タイマの実行中は、オペランド「#TagOut」がシグナル状態「1」を返します。
ネットワーク 3:
7LPHUB7DJ,QB

5

オペランド「#TagIn_1」のシグナル状態が、タイマの期限が切れる前に「0」から「1」に再び切り替わった場合、タイマは再起動されます。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

SD: オンディレータイマの起動

説明「オンディレータイマの起動」命令は、シグナル状態「1」が検出されると、プログラミン
グされたタイマを起動します。シグナル状態が「1」である限り、タイマは指定された持続時間で期限切れになります。タイマが期限切れになり、開始入力のシグナル状態もまだ「1」の場合、タイマステータスのクエリも「1」を返します。開始入力のシグナルが「0」の場合、タイマはリセットされています。この場合、タイマステータスのクエリはシグナル
状態「0」を返します。開始入力のシグナルが「1」に再び切り替わるとすぐに、タイマが再び動き始めます。
タイマ出力のシグナル状態は、開始入力のシグナル状態と同じです。開始入力は、その出力に直接に相互接続され、タイマにはリンクされません。

544

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)を参照してください。

パラメータ
次の表に、「オンディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数<Timer>InOut/Input TIMER

T

開始されるタイマ
タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:
7LPHUB
6(

7DJ,QB
7DJ,QB1XPEHU

7:「#TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「#Timer_1」が開始されます。オペランド「#TagIn_Number」の値でタイマの期限が切れます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

545

基本命令
3.2 FBD「#TagIn_1」オペランドのシグナル状態が、タイマの期限が切れる前に「1」から「0」に切り替わった場合、タイマはリセットされます。
ネットワーク 2:

7DJ2XW
7LPHUB

タイマが期限切れのとき、開始入力の#TagIn_1 オペランドのシグナル状態が「1」でタイマがリセットされていない場合、#TagOut オペランドは「1」です。
ネットワーク 3:
7LPHUB7DJ,QB

5#TagIn_2 オペランドのシグナル状態が「1」のとき、タイマ#Timer_1 と出力#TagOut は
リセットされています。
#Timer_1 を再起動する場合は、#TagIn_2 オペランドのシグナル状態が「0」で、かつ、開始入力#TagIn_1 のシグナル状態が「0」から「1」に切り替わることが必要です。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

546

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

SS: 拡張オンディレータイマの起動
説明「保持型オンディレータイマの起動」命令は、初期入力における論理演算(RLO)の結果で「0」から「1」への切り替え(信号立ち上がりエッジ)が検出されると、プログラミングされたタイマを起動します。RLO がシグナル状態「0」に変わっても、タイマが指定された時間実行されます。タイマの期限が切れた場合、タイマステータス「1」をクエリするとシグナル状態「1」が返されます。タイマの期限が切れた場合、タイマは明示的にリセット
した場合のみ再起動できます。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値の時間を決定します。
「保持型オンディレータイマの起動」命令には、前にエッジ評価のための論理演算が必要で、ネットワークの右側エッジのみに配置することができます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)を参照してください。

パラメータ
次の表に、「保持型オンディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数<Timer>InOut/Input TIMER

T

開始されるタイマ
タイマの数は CPU によって異なります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

547

基本命令
3.2 FBD
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

「TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「Timer_1」が開始されます。オペランド「TagIn_Number」の値でタイマの期限が切れます。時間の期限が切れると、オペランド「TagOut」が「1」にリセットされます。タイマの実行中にオペラ
ンド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると、タイマが再起動します。「TagIn_2」オペランドのシグナル状態が「1」に切り替わると、「Timer_1」がリセットされます。つまり、タイマが停止し、現在の時間値が「0」にセットされます。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ

⒉┪

ಯ7DJ2XWಯ

W

W ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

SF:オフディレータイマの起動

説明「オフディレータイマの起動」命令は、初期入力おける論理演算(RLO)の結果で「1」から「0」への切り替え(信号立ち下がりエッジ)が検出されると、プログラミングされたタイマを起動します。タイマは、指定された時間によって期限が切れます。タイマが実行されている
限り、タイマステータス「1」を照会するとシグナル状態「1」が返されます。タイマの実
行中に RLO が「0」から「1」に切り替わった場合、タイマが停止します。RLO が「1」から「0」に切り替わると、タイマは必ず再起動されます。
持続時間は内部的に時間値とタイムベースから構成され、パラメータ TV でプログラムされます。この命令を開始すると、プログラムされた時間値がゼロまでカウントダウンされます。タイムベースは、時間値が変更される時間を示します。

548

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
タイマステータスが「1」かどうかのクエリでは、命令実行時の論理操作結果のシグナル状
態が「1」の場合、クエリ結果「1」が返されます。RLO が「0」の場合、タイマステータ
スが「1」かどうかのクエリでは、クエリ結果「0」が返されます。
「オフディレータイマの起動」命令は、エッジ評価のために事前の論理演算が必要であり、ネットワークの右側にのみ配置できます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)を参照してください。

パラメータ
次の表に、「オフディレータイマの起動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L、PTV

Input

S5TIME, WORD

I、Q、M、D、

持続時間

L、または定数<Timer>InOut/Input TIMER

T

開始されるタイマ
タイマの数は CPU によって異なります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:
7LPHUB
6$

7DJ,QB
7DJ,QB1XPEHU

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

7:

549

基本命令
3.2 FBD「#TagIn_1」オペランドのシグナル状態が「1」から「0」に切り替わると、「#Timer_1」が開始されます。オペランド「#TagIn_Number」の値でタイマの期限が切れます。
ネットワーク 2:

7DJ2XW
7LPHUB

タイマの実行中は、オペランド「#TagOut」が「1」にセットされます。
ネットワーク 3:
7LPHUB7DJ,QB

5

タイマの実行中にオペランド「#TagIn_1」のシグナル状態が「1」から「0」に切り替わると、タイマが再起動します。オペランド「#TagIn_2」のシグナル状態が「1」の場合、タイマ「#Timer_1」がリセットされ、それによってタイマが停止し、現在の時間値が「0」にセットされます。
次の図に、タイマ図の例を示します。
栚ⱚಯ7DJ,QBಯ዇ኘአእ

ಯ7DJ,QBಯኜኁኻಯ7LPHUBಯ
W⒉┪

W

ಯ7DJ2XWಯW ኴዊኍ዆ኼዐኍሸቯቂ㖐倩㣑栢

550

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.3

カウンタ演算3.2.3.1

CTU: カウントアップ

説明
出力 CV の値のインクリメントには、「カウントアップ」命令を使用できます。CU 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、この命令が実行され、CV 出力のカウンタ現在値が 1 ずつインクリメントされます。立ち上がりエッジを検出するたびに、CV 出力において指定されたデータタイプの上限値に達するまで、カウンタ
値がインクリメントされます。上限値に達すると、CU 入力のシグナル状態はこの命令に影響を与えなくなります。
Q 出力でカウンタステータスを照会することができます。Q 出力のシグナル状態は、PV パ
ラメータによって決まります。カウンタ現在値が PV パラメータ値以上の場合、Q 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、Q 出力のシグナル状態は「0」になります。PV パラメータには定数も指定できます。
入力 R のシグナル状態が「1」に切り替わると、CV 出力の値が「0」にリセットされ、エッジメモリビットに保存されます。R 入力のシグナル状態が「1」である限り、CU 入力のシグナル状態は命令に影響しません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

551

基本命令
3.2 FBD

S7-1200 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTU_SINT / CTU_USINT• IEC_COUNTER / IEC_UCOUNTER• CTU_INT / CTU_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTU_DINT / CTU_UDINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER

S7-1500 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTU_SINT / CTU_USINT• IEC_COUNTER / IEC_UCOUNTER• CTU_INT / CTU_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTU_DINT / CTU_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTU_LINT / CTU_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER

IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTU_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyIEC_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化ブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化ブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカ
ルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロックイン
ターフェース内で、保持型として定義されます。

552

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD「カウントアップ」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワ
ーク内またはネットワークの終端に配置できます。

パラメータ
次の表に、「カウントアップ」命令のパラメータを示します。
パラメータ 宣言
CU

データタイプ

Input

R

BOOL

Input

BOOL

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L、また

D、L、または定数

は定数

I、Q、M、

I、Q、M、

説明
カウント入力リセット入力

D、L、P、ま T、C、D、
たは定数

L、P、また
は定数

PV

Input

整数

I、Q、M、

I、Q、M、

出力 Q がセッ

D、L、P、ま D、L、P、ま トされる値。
Q

Output

CV

たは定数

たは定数

I、Q、M、

I、Q、M、

カウンタステ

D、L

D、L

ータス

整数、CHAR、I、Q、M、

I、Q、M、カウンタ現在WCHAR、DATE

D、L、P

D、L、P

値

BOOL

Output命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。
ಯ&78B'%ಯ
&78,17

ಯ7DJ,QBಯ

&8

ಯ7DJ,QBಯ

5&9

ಯ7DJB&9ಯ

ಯ7DJB39ಯ

394

ಯ7DJ2XWಯ「TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、「カウントアッ
プ」命令が実行され、「Tag_CV」カウンタ現在値が 1 インクリメントされます。信号立ち上

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

553

基本命令
3.2 FBD
がりエッジが検出されるたびにカウント値がインクリメントされ、指定されたデータタイ
プの上限値(INT = 32767)に達するまでインクリメントされます。
PV パラメータの値が「TagOut」出力を確定する限度として採用されます。カウンタ現在値
がオペランド「Tag_PV」の値以上の場合、「TagOut」出力のシグナル状態は「1」になります。それ以外のすべての場合、「TagOut」出力はシグナル状態「0」を返します。

3.2.3.2

CTD: カウントダウン

説明「カウントダウン」命令を使用して、出力 CV の値をデクリメントします。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、この命令が実行され、CV 出力のカウンタ現在値が 1 ずつデクリメントされます。指定されたデータタイプの下限値に達するまで、信号の立ち上がりエッジが検出されるたびにカウンタがデクリメントされます。下限値に達すると、CD 入力のシグナル状態はこの命令に影響を与えなくなります。
Q 出力でカウンタステータスを照会することができます。カウンタ現在値が「0」以下である場合、Q 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、Q 出
力のシグナル状態は「0」になります。PV パラメータには定数も指定できます。
LD 入力のシグナル状態が「0」から「1」になると、CV 出力の値が PV パラメータの値に設定され、エッジメモリビットに保存されます。LD 入力のシグナル状態が「1」である限
り、CD 入力のシグナル状態は命令に影響しません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントダウン」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

554

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

S7-1200 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTD_SINT / CTD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTD_INT / CTD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTD_DINT / CTD_UDINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER

S7-1500 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTD_SINT / CTD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTD_INT / CTD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTD_DINT / CTD_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTD_LINT / CTD_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER

IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTD_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyIEC_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化ブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化ブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカ
ルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロックイン
ターフェース内で、保持型として定義されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

555

基本命令
3.2 FBD「カウントダウン」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワ
ーク内またはネットワークの終端に配置できます。

パラメータ
次の表に、「カウントダウン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

CD

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、

カウント入力

D、L、また M、D、
L、または

は定数

定数
LD

Input

BOOL

I、Q、M、 I、Q、
D、L、P、

ロード入力

M、T、

または定数 C、D、
L、P、ま
たは定数
PV

Input

整数

I、Q、M、 I、Q、CV 出力が LD = 1

D、L、P、にセットされる

M、D、または定数 L、P、ま

値。

たは定数
Q
CV

OutputOutput

BOOL

I、Q、M、 I、Q、

カウンタステータ

D、L

ス

M、D、L

整数、CHAR、I、Q、M、 I、Q、

WCHAR、DATE

D、L、P

カウンタ現在値

M、D、L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

556

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ᇷ&7'B'%ᇸ
&7',17
ᇷ7DJ,QBᇸ&'

ᇷ7DJ,QBᇸ

/'&9

ᇷ7DJB&9ᇸ

ᇷ7DJB39ᇸ

394

ᇷ7DJ2XWᇸ「TagIn_1」オペランドのシグナル状態が「0」から「1」に切り替わると、命令が実行され、「Tag_CV」出力の値が 1 デクリメントされます。それ以降、信号立ち上がりエッジが検出されるたびに、指定したデータタイプの下限値(INT = -32768)に達するまで、カウンタ値がデクリメントされます。
PV パラメータの値が「TagOut」出力を確定する限度として採用されます。カウンタ現在値
が「0」以下である限り、「TagOut」出力のシグナル状態は「1」になります。それ以外のすべての場合、「TagOut」出力はシグナル状態「0」を返します。

3.2.3.3

CTUD: カウントアップ/カウントダウン

説明「カウントアップ/カウントダウン」命令を使用して、CV 出力のカウンタ値のインクリメ
ント、およびデクリメントが可能です。CU 入力のシグナル状態が「0」から「1」に切り替
わった場合(立ち上がりエッジ)、カウンタ現在値が 1 インクリメントされ、CV 出力に格納されます。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、CV 出力のカウンタ現在値が 1 デクリメントされます。1 つのプログラムサイクル内でCU および CD 入力に立ち上がりエッジが発生した場合、CV 出力のカウンタ現在値は変わりません。
カウンタ値は、CV 出力で指定したデータタイプの上限値に達するまでインクリメントすることができます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値
はインクリメントされなくなります。カウンタ値は、指定されたデータタイプの下限値に達するとデクリメントされなくなります。
LD 入力のシグナル状態が「1」に切り替わると、CV 出力のカウンタ値が PV パラメータの値に設定され、エッジメモリビットに格納されます。LD 入力のシグナル状態が「1」である
限り、CU および CD 入力のシグナル状態は命令に影響しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

557

基本命令
3.2 FBD
入力 R のシグナル状態が「1」に切り替わると、カウンタ値が「0」にセットされ、エッジメモリビットに格納されます。R 入力のシグナル状態が「1」である限り、CU、CD、および LD 入力のシグナル状態が切り替わっても「カウントアップ/カウントダウン」命令には影響を与えません。
QU 出力でアップカウンタのステータスを照会することができます。カウンタ現在値が PV
パラメータ値以上の場合、QU 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、QU 出力のシグナル状態は「0」になります。PV パラメータには定数も指定できます。
QD 出力でダウンカウンタのステータスを照会することができます。カウンタ現在値がゼロ以下の場合、QD 出力がシグナル状態「1」にセットされます。それ以外のすべての場合、
QD 出力のシグナル状態は「0」になります。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ/カウントダウン」命令の各呼び出しは、命令データが格納される IEC カ
ウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイ
プを持つ構造体です。

S7-1200 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTUD_SINT / CTUD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTUD_INT / CTUD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTUD_DINT / CTUD_UDINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER

558

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

S7-1500 CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTUD_SINT / CTUD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTUD_INT / CTUD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTUD_DINT / CTUD_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTUD_LINT / CTUD_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER

IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTUD_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyIEC_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化ブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化ブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカ
ルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロックイン
ターフェース内で、保持型として定義されます。
「カウントアップ/カウントダウン」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワーク内またはネットワークの終端に配置できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

559

基本命令
3.2 FBD

パラメータ
次の表に、「カウントアップ/カウントダウン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

CU

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、

カウントアップ入

D、L、ま

M、D、

力

たは定数

L、または
定数

CD

Input

BOOL

I、Q、M、 I、Q、

カウントダウン入

D、L、ま

M、D、

力

たは定数

L、または
定数

R

Input

BOOL

I、Q、M、 I、Q、リセット入力

D、L、P、 M、T、
または定数 C、D、
L、P、ま
たは定数
LD

Input

BOOL

I、Q、M、 I、Q、

ロード入力

D、L、P、 M、T、
または定数 C、D、
L、P、ま
たは定数
PV

Input

整数

I、Q、M、 I、Q、

QU 出力がセット

D、L、P、 M、D、されるときの値/LD

または定数 L、P、ま= 1 のときに CV 出

たは定数

力がセットされる
値。

QU
QD
CV

OutputOutputOutput

BOOL
BOOL

I、Q、M、 I、Q、

カウントアップの

D、L

ステータス

M、D、L

I、Q、M、 I、Q、

カウントダウンの

D、L

ステータス

M、D、L

整数、CHAR、I、Q、M、 I、Q、

WCHAR、DATE

D、L、P

カウンタ現在値

M、D、L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

560

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ᇷ&78'B'%ᇸ
&78',17
ᇷ7DJ,QB&8
ᇸᇷ7DJ,QB&'ᇸ

&8

ᇷ7DJ,QB5
ᇸ

54'

ᇷ7DJ2XWB4'ᇸᇷ7DJ,QB/'ᇸ

/'&9

ᇷ7DJB&9ᇸ

ᇷ7DJB39ᇸ

39

48

ᇷ7DJ2XWB48
ᇸ&'「TagIn_CU」または「TagIn_CD」入力のシグナル状態が「0」から「1」に切り替わった場
合(立ち上がりエッジ)、「カウントアップ/カウントダウン」命令が実行されます。
「TagIn_CU」入力で立ち上がりエッジが発生する場合、カウンタ現在値は 1 ずつインクリ
メントされ、「Tag_CV」出力に保存されます。「TagIn_CD」入力で立ち上がりエッジが発生する場合、カウンタ値は 1 ずつデクリメントされ、「Tag_CV」出力に保存されます。CU 入
力で立ち上がりエッジが発生した場合、上限値(INT = 32767)に達するまでカウンタ値がイ
ンクリメントされます。入力 CD で信号立ち上がりエッジが発生した場合、下限値(INT =-32768)に達するまでカウンタ値がデクリメントされます。
カウンタ現在値が「Tag_PV」入力の値以上である限り、「TagOut_GU」出力のシグナル状態
は「1」になります。それ以外のすべての場合、「TagOut_QU」出力はシグナル状態「0」を返します。
カウンタ現在値が「0」以下である限り、「TagOut_QD」出力のシグナル状態は「1」になります。それ以外のすべての場合、「TagOut_QD」出力のシグナル状態は「0」になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

561

基本命令
3.2 FBD

3.2.3.4

レガシー

S_CU:パラメータおよびカウントアップの割り当て
説明「パラメータおよびカウントアップの割り当て」命令を使用して、カウンタ値のインクリメントが可能です。CU 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、現在のカウンタ値が 1 インクリメントされます。現在のカウンタ値は、出力CV に 16 進数値で出力され、出力 CV_BCD で BCD コード化されます。カウンタ値は、上限値の「999」に達するまでインクリメントされます。制限値に達すると、信号立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。
入力 S のシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタが設定され、入力 CU の RLO が「1」の場合、信号エッジで切り替えが検出されていない場合でも、カウンタはその次のスキャンサイクルで適宜カウン
トします。
R 入力のシグナル状態が「1」に切り替わると、カウンタ値がゼロに設定されます。R 入力のシグナル状態が「1」である限り、CU および S 入力のシグナル状態の処理はこのカウン
タ値には影響を与えません。
カウンタ値がゼロよりも大きい場合、出力 Q のシグナル状態は「1」となります。カウンタ
値がゼロに等しい場合、出力 Q のシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「パラメータおよびカウントアップの割り当て」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することができます。

562

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「パラメータおよびカウントアップの割り当て」命令のパラメータを示します。
パラメータ 宣言
<counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

命令のカウンタ
カウンタの数は CPU によって異なります。

CU

Input

BOOL

I、Q、M、D、

カウントアップ入力

L、T、C
S

Input

BOOL

I、Q、M、D、カウンタのプリセット用

L、T、C、また

の入力

は定数
PV

Input

R

WORD

Input

BOOL

I、Q、M、D、

カウンタ値のプリセット

L、または定数(C#0～C#999)

I、Q、M、D、

リセット入力

L、T、C、または定数
CV

Output

WORD, S5TIME, I、Q、M、D、L カウンタ現在値(16 進数)
DATE

CV_BCD

Output

WORD, S5TIME, I、Q、M、D、L 現在のカウンタ値(BCD フ
DATEQ

Output

BOOLォーマット)
I、Q、M、D、L カウンタのステータス

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ&RXQWHUBಯ
6B&8
ಯ7DJ,QBಯ

&8

ಯ7DJ,QBಯ

6&9

ಯ7DJ9DOXHBಯಯ7DJ3UHVHW9DOXHಯ

39&9B%&'

ಯ7DJ9DOXHBಯಯ7DJ,QBಯ

5

4

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ಯ7DJ2XWಯ

563

基本命令
3.2 FBD「TagIn_1」入力のシグナル状態が「0」から「1」に切り替わり(立ち上がりエッジ)、現在のカウンタ値が「999」未満の場合、カウンタ値が 1 インクリメントされます。「TagIn_2」
入力のシグナル状態が「0」から「1」に切り替わると、カウンタ値がオペランド「TagPresetValue」の値にセットされます。オペランド「TagIn_3」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
現在のカウンタ値は、オペランド「TagValue_1」では 16 進数、オペランド「TagValue_2」
では BCD 符号化になります。
現在のカウンタ値が「0」と等しくない場合、「TagOut」出力のシグナル状態は「1」です。

S_CD:パラメータおよびカウントダウンの割り当て

説明「パラメータおよびカウントダウンの割り当て」命令を使用して、カウンタ値のデクリメントが可能です。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、現在のカウンタ値が 1 デクリメントされます。現在のカウンタ値は、出力 CVに 16 進数値で出力され、出力 CV_BCD で BCD コード化されます。カウンタ値は、下限値の「0」に達するまでデクリメントされます。下限値に達すると、立ち上がりエッジでカウンタ値はそれ以上デクリメントされません。
入力 S のシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタが設定され、入力 CD の RLO が「1」の場合、信号エッジで切り替えが検出されていない場合でも、カウンタはその次のスキャンサイクルで適宜カウン
トします。
R 入力のシグナル状態が「1」に切り替わると、カウンタ値がゼロに設定されます。R 入力のシグナル状態が「1」である限り、CD および S 入力のシグナル状態の処理はこのカウン
タ値には影響を与えません。
カウンタ値がゼロよりも大きい場合、出力 Q のシグナル状態は「1」となります。カウンタ
値がゼロに等しい場合、出力 Q のシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「パラメータおよびカウントダウンの割り当て」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することができます。

564

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「パラメータおよびカウントダウンの割り当て」命令のパラメータを示します。
パラメータ 宣言
<counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

命令のカウンタ
カウンタの数は CPU によって異なります。

CD

Input

BOOL

I、Q、M、D、

カウントダウン入力

L、または定数
S

Input

BOOL

I、Q、M、D、カウンタのプリセット用

L、T、C、また

の入力

は定数
PV

Input

R

WORD

Input

BOOL

I、Q、M、D、

カウンタ値のプリセット

L、または定数(C#0～C#999)

I、Q、M、D、

リセット入力

L、T、C、または定数
CV

Output

WORD, S5TIME, I、Q、M、D、L カウンタ現在値(16 進数)
DATE

CV_BCD

Output

WORD, S5TIME, I、Q、M、D、L 現在のカウンタ値(BCD フ
DATEQ

Output

BOOLォーマット)
I、Q、M、D、L カウンタのステータス

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ&RXQWHUBಯ
6B&'
ಯ7DJ,QBಯ&'

ಯ7DJ,QBಯ

6&9

ಯ7DJ9DOXHBಯಯ7DJ3UHVHW9DOXHಯ

39&9B%&'

ಯ7DJ9DOXHBಯಯ7DJ,QBಯ

5

4

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ಯ7DJ2XWಯ

565

基本命令
3.2 FBD「TagIn_1」入力のシグナル状態が「0」から「1」に切り替わり(信号立ち上がりエッジ)、
現在のカウンタ値が「0」よりも大きい場合、カウンタ値が 1 デクリメントされます。
「TagIn_2」入力のシグナル状態が「0」から「1」に切り替わると、カウンタ値がオペラン
ド「TagPresetValue」の値にセットされます。オペランド「TagIn_3」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
現在のカウンタ値は、オペランド「TagValue_1」では 16 進数、オペランド「TagValue_2」
では BCD 符号化になります。
現在のカウンタ値が「0」と等しくない場合、「TagOut」出力のシグナル状態は「1」です。

S_CUD:パラメータおよびカウントアップ/カウントダウンの割り当て
説明「パラメータおよびカウントアップ/カウントダウンの割り当て」命令を使用して、カウンタ
値のインクリメントおよびデクリメントが可能です。CU 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、現在のカウンタ値が 1 インクリメントされます。CD 入力のシグナル状態が「0」から「1」に切り替わった場合(立ち上がりエッジ)、
現在のカウンタ値が 1 デクリメントされます。現在のカウンタ値は、出力 CV に 16 進数値で出力され、出力 CV_BCD で BCD コード化されます。1 つのプログラムサイクル内で CU
および CD 入力に立ち上がりエッジが発生した場合、カウンタ値は変わりません。
カウンタ値は、上限値の「999」に達するまでインクリメントされます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。下限の「0」に到達すると、カウンタ値はそれ以上デクリメントされません。
入力 S のシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタが設定され、入力 CU および CD の RLO が「1」の場合、信号エッジで切り替えが検出されない場合でも、カウンタはその次のスキャンサイクルで適宜カウントします。
R 入力のシグナル状態が「1」に切り替わると、カウンタ値がゼロに設定されます。R 入力のシグナル状態が「1」である限り、CU、CD および S 入力のシグナル状態の処理はこのカウンタ値には影響を与えません。

566

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
カウンタ値がゼロよりも大きい場合、出力 Q のシグナル状態は「1」となります。カウンタ
値がゼロに等しい場合、出力 Q のシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「パラメータおよびカウントアップ/カウントダウンの割り当て」命令には、前にエッジ評価のための論理演算が必要で、ネットワーク内またはネットワークの最後に配置することが
できます。

パラメータ
次の表に、「パラメータおよびカウントアップ/カウントダウンの割り当て」命令のパラメータを示します。
パラメータ 宣言
<counter>

データタイプ

InOut/Input COUNTER

メモリ領域

説明

C

命令のカウンタ
カウンタの数は CPU によって異なります。

CU

Input

BOOL

I、Q、M、D、

カウントアップ入力

L、T、C
CD

Input

BOOL

I、Q、M、D、

カウントダウン入力

L、T、C、また
は定数
S

Input

BOOL

I、Q、M、D、カウンタのプリセット用

L、T、C、また

の入力

は定数
PV
R

Input
Input

WORD
BOOL

I、Q、M、D、

カウンタ値のプリセット

L、または定数(C#0～C#999)

I、Q、M、D、

リセット入力

L、T、C、または定数
CV

Output

WORD, S5TIME, I、Q、M、D、L カウンタ現在値(16 進数)
DATE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

567

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

CV_BCD

WORD, S5TIME, I、Q、M、D、L 現在のカウンタ値(BCD フ

Output

メモリ領域

DATE
Q

Output

BOOL

説明ォーマット)

I、Q、M、D、L カウンタのステータス

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ&RXQWHUBಯ6B&8'
ಯ7DJ,QBಯ

&8

ಯ7DJ,QBಯ&'

ಯ7DJ,QBಯ

6&9

ಯ7DJ9DOXHBಯಯ7DJ3UHVHW9DOXHಯ

39&9B%&'

ಯ7DJ9DOXHBಯಯ7DJ,QBಯ

54

ಯ7DJ2XWಯ入力「TagIn_1」または「TagIn_2」のシグナル状態が「0」から「1」に切り替わった(立ち上がりエッジ)場合、命令「パラメータおよびカウントアップ/カウントダウンの割り当て」が実行されます。「TagIn_1」入力で立ち上がりエッジが発生し、現在のカウンタ値が「999」未満の場合、カウンタ値が 1 インクリメントされます。「TagIn_2」入力で立ち上がりエッジが発生し、現在のカウンタ値が「0」よりも大きい場合、カウンタ値が 1 デクリ
メントされます。
「TagIn_3」入力のシグナル状態が「0」から「1」に切り替わると、カウンタ値がオペラン
ド「TagPresetValue」の値にセットされます。オペランド「TagIn_4」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
現在のカウンタ値は、オペランド「TagValue_1」では 16 進数、オペランド「TagValue_2」
では BCD 符号化になります。
現在のカウンタ値が「0」と等しくない場合、「TagOut」出力のシグナル状態は「1」です。

568

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

SC:カウンタ値の設定

説明「カウンタ値のセット」命令を使用して、カウンタの値を設定できます。この命令は、命令の開始入力での論理演算の結果(RLO)が「0」から「1」へ変わった場合(立ち上がりエッジ)に実行されます。命令が実行されると、カウンタは指定されたカウンタ値に設定されます。
「カウンタ値のセット」命令には、前にエッジ評価のための論理演算が必要で、ネットワ
ークの右側エッジのみに配置することができます。

パラメータ
次の表に、「カウンタ値のセット」命令のパラメータをリストします。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L
PV

Input

WORD

I、Q、M、D、カウンタがプリセットさ

L、または定数れる BCD フォーマットの値。
(C#0～C#999)<counter>

InOut/Input COUNTER

C

プリセットされるカウン
タ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ&RXQWHUBಯಯ7DJ,Qಯ
&

6&
&9

「TagIn」オペランドのシグナル状態が「0」から「1」に切り替わると、カウンタ「Counter_1」が値「100」で開始されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

569

基本命令
3.2 FBD

CU:カウントアップ

説明「カウントアップ」命令を使用し、指定したカウンタの値を開始入力の立ち上がりエッジで
1 カウント分インクリメントします。カウンタ値は、上限値の「999」に達するまでインクリメントされます。制限値に達すると、信号立ち上がりエッジが発生しても、カウンタ値
はインクリメントされなくなります。
「カウントアップ」命令には、前にエッジ評価のための論理演算が必要で、ネットワークの右側エッジのみに配置することができます。

パラメータ
次の表に、「カウントアップ」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L
<counter>

InOut/Input COUNTER

C

値がインクリメントされるカウンタ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

570

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ&RXQWHUBಯ
6&

ಯ7DJ,QBಯ
&

39

ኪአእዌዙኌ
ಯ&RXQWHUBಯ
&8

ಯ7DJ,QBಯኪአእዌዙኌ
ಯ&RXQWHUBಯಯ7DJ,QBಯ

5

オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると(立ち上がりエッジ)、カウンタ「Counter_1」が値「100」でプリセットされます。
オペランド「TagIn_2」のシグナル状態が「0」から「1」に切り替わると、「Counter_1」の値が 1 カウントインクリメントされます。
オペランド「TagIn_3」がシグナル状態「1」を返すと、「Counter_1」の値が「0」にリセットされます。

CD:カウントダウン

説明「カウントダウン」命令を使用し、指定したカウンタの値を開始入力の立ち上がりエッジで
1 カウント分デクリメントします。カウンタ値は、下限値の「0」に達するまでデクリメントされます。制限値に達すると、信号立ち上がりエッジが発生しても、カウンタ値は変更
されなくなります。
「カウントダウン」命令には、前にエッジ評価のための論理演算が必要で、ネットワークの右側エッジのみに配置することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

571

基本命令
3.2 FBD

パラメータ
次の表に、「カウントダウン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、T、

開始入力

C、D、L
<counter>

InOut/Input COUNTER

C

値がデクリメントされるカウンタ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ
ಯ&RXQWHUBಯ
6&

ಯ7DJ,QBಯ
&

39

ኪአእዌዙኌ
ಯ&RXQWHUBಯಯ7DJ,QBಯ&'ኪአእዌዙኌ
ಯ&RXQWHUBಯಯ7DJ,QBಯ

5

オペランド「TagIn_1」のシグナル状態が「0」から「1」に切り替わると(立ち上がりエッジ)、カウンタ「Counter_1」が値「100」でプリセットされます。
オペランド「TagIn_2」のシグナル状態が「0」から「1」に切り替わると、「Counter_1」の値が 1 カウントインクリメントされます。
オペランド「TagIn_3」がシグナル状態「1」を返すと、「Counter_1」の値が「0」にリセットされます。

572

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.4

比較演算

3.2.4.1

CMP ==:等価

説明「等価」命令を使用して、入力 IN1 の値が入力 IN2 の値と等しいかどうかを照会できます。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。
IEC チェックが有効になっている場合、比較するオペランドが同じデータタイプであることが必要です。IEC チェックが有効になっていない場合、オペランドの幅が同じであることが必要です。

浮動小数点数の比較
データタイプ REAL または LREAL を比較する場合は、命令「CMP ==:等価」の代わりに、推奨命令「IN_RANGE:範囲内の値」を使用します。
浮動小数点数を比較する場合、IEC チェックの設定に関わらず比較するオペランドは同じ
データタイプであることが必要です。
未定義の結果(たとえば、-1 のルート)である無効な浮動小数点数の特別なビットパターン(NaN)は比較できません。すなわち、オペランドの 1 つが値 NaN を持つと、命令「CMP ==:等価」の結果は FALSE です。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。
次の表は、文字比較の例を示しています。
IN1

IN2

命令の RLO

'AA'

'AA'

1

'Hello World''HelloWorld'

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

573

基本命令
3.2 FBD
IN1

IN2

命令の RLO

'AA'

'aa'

0

'aa'

'aaa'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
無効なタイマ、日付と時刻のビットパターン(たとえば、
DT#2015-13-33-25:62:99.999_999_999)は比較できません。すなわち、オペランドの 1
つが無効な値を持つと、命令「CMP ==:等価」の結果は FALSE です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

ハードウェアデータタイプの比較
PORT データタイプのオペランドを比較するには、命令ボックスのドロップダウンリスト
から WORD データタイプを選択する必要があります。
2 つのデータタイプを比較する場合、最初にブロックインターフェースの[一時]セクショ
ンでデータタイプ HW_ANY のタグを作成した後、LADDR (データタイプ HW_DEVICE から)をそのタグにコピーします。これで、HW_ANY と HW_IO を比較することができます。

574

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

構造体の比較
注記
構造体の比較の可用性
構造体を比較するオプションは、S7-1200 シリーズの CPU でファームウェアバージョン
4.2 以降の場合および S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。
両方のタグが同じ構造体データタイプを持つとき、2 つの構造化されたオペランドの値を比較できます。構造体を比較する場合、IEC チェックの設定とは関係なく、比較対象のオ
ペランドのデータタイプが同じであることが必要です。例外は、2 つのオペランドの 1 つがVARIANT または ANY である場合の比較です。プログラム作成時、データタイプがまだ既知でない場合は、VARIANT データタイプを使用できます。この場合、そのオペランドを、任意のデータタイプの構造化されたタグと比較することもできます。データタイプ VARIANTまたは ANY の 2 つのタグを相互に比較することもできます。
構造体の比較では、命令ボックスのドロップダウンリストからデータタイプ VARIANT を選択できます。以下のデータタイプが可能です。
• PLC データタイプ• STRUCT (データタイプ STRUCT の構造体は PLC データタイプに(UDT)に含まれる必要があります、または比較する 2 つの構造体は ARRAY of STRUCT の 2 つの要素です。匿名の構造体は許可されません。)• ANY が指しているタグ• VARIANT が指しているタグ
VARIANT が選択された状態でデータタイプ ARRAY の 2 つのタグを比較するには、以下の要件を満たす必要があります。
• 各エレメントが同じデータタイプを持つこと。
• 2 つの ARRAY が同じ次元を持つこと。
• すべての次元が同じエレメント数を持つこと。ARRAY 固定制限値は一致する必要はありません。
注記
ARRAY of BOOL
データタイプ ARRAY of BOOL の 2 つのオペランドを相互に比較するとき、ドロップダウンリストからデータイプを VARIANT を選択し、エレメント数が 8 で割り切れない場合は、FILL ビットも比較されます。これは、比較結果に影響を及ぼす場合があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

575

基本命令
3.2 FBD
比較する構造体内のエレメントが無効な STRING/WSTRING、無効な時刻または日付、無効な浮動小数点数の場合、RLO (論理操作の結果)の比較結果は、シグナル状態「0」を返します。
下の表に、構造体の比較の例を示します。

576<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ A の タグ値

1

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ B の タグ値

0

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

TRUE

INT

2

INT

3

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

VARIANT (データタ タグ値

1

グ <PLC データタイ

イプ A のタグに割

プ>

り当て)
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「等価」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

ビット列、整I、Q、M、D、最初の比較値

Input

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
IN2

Input

ビット列、整I、Q、M、D、第 2 の比較値

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
前記で詳述したように、データタイプ ARRAY、STRUCT (PLC データタイプ内の)、
VARIANT、ANY、および PLC データタイプ(UDT)は、ファームウェアバージョン 2.0 または 4.2 以降の場合のみ使用できます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

577

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。

,17
ಯ7DJB9DOXHಯಯ7DJB9DOXHಯ

,1
,1

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• 「Tag_Value1」 = 「Tag_Value2」の場合に、比較命令の条件が満たされていること。

3.2.4.2

CMP <>:不等価

説明「等しくない」命令を使用して、入力 IN1 の値が入力 IN2 の値と等しくないか照会します。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。
IEC チェックが有効になっている場合、比較するオペランドが同じデータタイプであることが必要です。IEC チェックが有効になっていない場合、オペランドの幅が同じであることが必要です。

浮動小数点数の比較
データタイプ REAL または LREAL を比較する場合は、命令「CMP <>:次の値に等しくない」の代わりに、推奨命令「OUT_RANGE:範囲外の値」を使用します。
浮動小数点数を比較する場合、IEC チェックの設定に関わらず比較するオペランドは同じ
データタイプであることが必要です。
未定義の結果(たとえば、-1 のルート)である無効な浮動小数点数の特別なビットパターン(NaN)は比較できません。すなわち、オペランドの 1 つが値 NaN を持つと、命令「CMP <>:
次の値に等しくない」の結果は FALSE です。

578

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。
次の表は、文字比較の例を示しています。
IN1

IN2

命令の RLO

'AA'

'aa'

1

'Hello World''HelloWorld'

1

'AA'

'AA'

0

'aa'

'aaa'

1

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
無効なタイマ、日付と時刻のビットパターン(たとえば、
DT#2015-13-33-25:62:99.999_999_999)は比較できません。すなわち、オペランドの 1
つが無効な値を持つと、命令「CMP <>:次の値に等しくない」の結果は FALSE です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

579

基本命令
3.2 FBD

ハードウェアデータタイプの比較「次の値に等しくない」命令を使用して「PORT」データタイプのオペランドを比較するには、命令ボックスのドロップダウンリストで WORD データタイプを選択する必要があります。
2 つのハードウェアデータタイプ HW_IO と HW_DEVICE を比較する場合は、最初にブロックインターフェースのセクション[Temp]でデータタイプ HW_ANY のタグを作成した後、
LADDR (データタイプ HW_DEVICE の)をそのタグにコピーします。これで、HW_ANY と
HW_IO を比較することができます。

構造体の比較
注記
構造体の比較の可用性
構造体を比較するオプションは、S7-1200 シリーズの CPU でファームウェアバージョン
4.2 以降の場合および S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。
両方のタグが同じ構造体データタイプを持つとき、2 つの構造化されたオペランドの値を比較できます。構造体を比較する場合、IEC チェックの設定とは関係なく、比較対象のオ
ペランドのデータタイプが同じであることが必要です。例外は、2 つのオペランドの 1 つがVARIANT または ANY である場合の比較です。プログラム作成時、データタイプがまだ既知でない場合は、VARIANT データタイプを使用できます。この場合、そのオペランドを、任意のデータタイプの構造化されたタグと比較することもできます。データタイプ VARIANTまたは ANY の 2 つのタグを相互に比較することもできます。
構造体の比較では、命令ボックスのドロップダウンリストからデータタイプ VARIANT を選択できます。以下のデータタイプが可能です。
• PLC データタイプ• STRUCT (データタイプ STRUCT の構造体は PLC データタイプに(UDT)に含まれる必要があります、または比較する 2 つの構造体は ARRAY of STRUCT の 2 つの要素です。匿名の構造体は許可されません。)• ANY が指しているタグ• VARIANT が指しているタグ

580

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
VARIANT が選択された状態でデータタイプ ARRAY の 2 つのタグを比較するには、以下の要件を満たす必要があります。
• 各エレメントが同じデータタイプを持つこと。
• 2 つの ARRAY が同じ次元を持つこと。
• すべての次元が同じエレメント数を持つこと。ARRAY 固定制限値は一致する必要はありません。
注記
ARRAY of BOOL
データタイプ ARRAY of BOOL の 2 つのオペランドを相互に比較するとき、ドロップダウンリストからデータイプを VARIANT を選択し、エレメント数が 8 で割り切れない場合は、FILL ビットも比較されます。これは、比較結果に影響を及ぼす場合があります。
比較する構造体内のエレメントが無効な STRING/WSTRING、無効な時刻または日付、無効な浮動小数点数の場合、RLO (論理操作の結果)の比較結果は、シグナル状態「0」を返します。
下の表に、構造体の比較の例を示します。
<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ A の タグ値

0

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ B の タグ値

1

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

TRUE

INT

2

INT

3

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

581

基本命令
3.2 FBD

582<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

VARIANT (データタ タグ値

0

グ <PLC データタイ

イプ A のタグに割

プ>

り当て)
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「不等価」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

ビット列、整I、Q、M、D、最初の比較値

Input

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
IN2

Input

ビット列、整I、Q、M、D、第 2 の比較値

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付時刻、ARRAY of <データタイプ>(固定 ARRAY 制
限値および変数ARRAY 制限値付き)、STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
前記で詳述したように、データタイプ ARRAY、STRUCT (PLC データタイプ内の)、
VARIANT、ANY、および PLC データタイプ(UDT)は、ファームウェアバージョン 2.0 または 4.2 以降の場合のみ使用できます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

583

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
!
,17
ಯ7DJB9DOXHಯಯ7DJB9DOXHಯ

,1
,1

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• 「Tag_Value1」 <> 「Tag_Value2」の場合、比較命令の条件が満たされます。

3.2.4.3

CMP >=:以上

説明「以上」命令を使用して、入力 IN1 の値が入力 IN2 の値以上か照会します。比較対象となる2 つの値は、同じデータタイプである必要があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、長い方の文字列が大きいと見なされます。
次の表は、文字比較の例を示しています。

584

IN1

IN2

命令の RLO

'BB'

'AA'

1

'AAA'

'AA'

1

'Hello World''Hello World'

1'Hello World''HelloWorld'

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
IN1

IN2

命令の RLO

'AA'

'aa'

0

'AAA'

'a'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
タイマ値の比較では、入力 IN1 のタイマが入力 IN2 のタイマよりも大きい(より最近)か、等
しい場合、命令の RLO は「1」です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

585

基本命令
3.2 FBD

パラメータ
次の表に、
「以上」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

ビット列、整I、Q、M、D、最初の比較値

Input

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
IN2

Input

I、Q、M、D、

ビット列、整第 2 の比較値

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。
!
,17
ಯ7DJB9DOXHಯಯ7DJB9DOXHಯ

,1
,1

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• 「Tag_Value1」 >= 「Tag_Value2」の場合、比較命令の条件が満たされます。

3.2.4.4

CMP <=:以下

説明「以下」命令を使用して、入力 IN1 の値が入力 IN2 の値以下か照会します。比較対象となる2 つの値は、同じデータタイプである必要があります。

586

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、短い方の文字列が小さいと見なされます。
次の表は、文字比較の例を示しています。
IN1

IN2

命令の RLO

'AA'

'aa'

1

'AAA'

'a'

1

'Hello World''Hello World'

1'HelloWorld''Hello World'

0

'BB'

'AA'

0

'AAA'

'AA'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
タイマ値の比較では、入力 IN1 のタイマが入力 IN2 のタイマよりも小さい(より古い)、または等しい場合、命令の RLO は「1」です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

587

基本命令
3.2 FBD

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

パラメータ
次の表に、「以下」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

ビット列、整I、Q、M、D、最初の比較値

Input

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
IN2

Input

I、Q、M、D、

ビット列、整第 2 の比較値

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。
,17
ಯ7DJB9DOXHಯಯ7DJB9DOXHಯ

,1
,1

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• 「Tag_Value1」 <= 「Tag_Value2」の場合、比較命令の条件が満たされます。

588

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.4.5

CMP >:超過説明「超過」命令を使用して、入力 IN1 の値が入力 IN2 の値よりも大きいか照会します。比較
対象となる 2 つの値は、同じデータタイプである必要があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、長い方の文字列が大きいと見なされます。
次の表は、文字比較の例を示しています。
IN1

IN2

命令の RLO

'BB'

'AA'

1

'AAA'

'AA'

1

'AA'

'aa'

0

'AAA'

'a'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
タイマ値の比較では、入力 IN1 のタイマが入力 IN2 のタイマよりも大きい(より最近)場合、命令の RLO は「1」です。
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

589

基本命令
3.2 FBD
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

パラメータ
次の表に、「超過」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

ビット列、整I、Q、M、D、最初の比較値

Input

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
IN2

Input

I、Q、M、D、

ビット列、整第 2 の比較値

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。
!
,17
ಯ7DJB9DOXHಯಯ7DJB9DOXHಯ

590

,1
,1

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ
6

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• 「Tag_Value1」 > 「Tag_Value2」の場合、比較命令の条件が満たされます。

3.2.4.6

CMP <:未満

説明「未満」命令を使用して、入力 IN1 の値が入力 IN2 の値未満であるかを照会します。比較
対象となる 2 つの値は、同じデータタイプである必要があります。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。長い方の文字列の左の部分が、短い方の文字列と同一の場合、短い方の文字列が小さいと見なされます。
次の表は、文字比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'AA'

'aa'

1

'AAA'

'a'

1

'BB'

'AA'

0

'AAA'

'AA'

0

文字列の個々の文字を比較することもできます。比較する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を比較します。

タイマ、日付と時刻の比較
タイマ値の比較では、入力 IN1 のタイマが入力 IN2 のタイマよりも小さい(より古い)場合、命令の RLO は「1」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

591

基本命令
3.2 FBD
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

WORD データタイプのタグと S5TIME データタイプのタグの比較
WORD データタイプのタグと S5TIME データタイプのタグを比較するとき、両方のタグはTIME データタイプに変換されます。WORD タグは、S5TIME 値として解釈されます。2 つのタグの 1 つが変換できない場合、比較は実行されず、比較結果は FALSE になります。変換が成功すると、比較が、選択した比較命令に基づいて実行されます。

パラメータ
次の表に、「未満」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

ビット列、整I、Q、M、D、最初の比較値

Input

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
IN2

Input

ビット列、整I、Q、M、D、第 2 の比較値

数、浮動小数点 L、P、または定数、文字列、タ 数
イマ、日付と時
刻
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

592

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
,17
ಯ7DJB9DOXHಯಯ7DJB9DOXHಯ

,1
,1

ಯ7DJ,QBಯ

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn_1」のシグナル状態が「1」であること。
• 「Tag_Value1」 < 「Tag_Value2」の場合、比較命令の条件が満たされます。

3.2.4.7

IN_RANGE:範囲内の値

説明「範囲内の値」命令を使って、VAL 入力の値が特定の値の範囲内にあるか照会できます。
MIN および MAX 入力で値の範囲の限度を指定します。「範囲内の値」命令は、入力 VAL の値と、入力 MIN および MAX の値を比較し、結果をボックス出力に送信します。入力 VALの値が、比較 MIN <= VAL または VAL <= MAX を満たしている場合、ボックス出力のシグ
ナル状態は「1」です。比較の条件が満たされない場合、出力ボックスのシグナル状態は「0」です。
この比較ファンクションは、比較対象となる値が同じデータタイプである場合のみ実行で
きます。

パラメータ
次の表に、「範囲内の値」命令のパラメータを示します。
パラメータ 宣言

データタイプMIN

整数、浮動小数 I、Q、M、D、

Input

点数
VAL

Input

Box output

Input
OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明値の範囲の下限値

L、または定数

整数、浮動小数 I、Q、M、D、
点数

MAX

メモリ領域

比較値

L、または定数

整数、浮動小数 I、Q、M、D、値の範囲の上限値

点数

L、または定数BOOL

I、Q、M、D、L 比較の結果

593

基本命令
3.2 FBD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ! 

ಯ7DJ,QBಯ
ಯ7DJ,QBಯ,1B5$1*(
5($/
ಯ7DJB0LQಯ
ಯ7DJB9DOXHಯ
ಯ7DJB0D[ಯ

0,1
9$/
0$;

ಯ7DJ2XWಯ

次の条件が満たされている場合、出力「TagOut」が設定されます。
• オペランド「TagIn_1」または「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「1」であること。
• オペランド「Tag_Value」の値が、オペランド「Tag_Min」および「Tag_Max」(MIN <=VAL または VAL <= MAX)の現在値で指定された値の範囲内になっています。

3.2.4.8

OUT_RANGE:範囲外の値

説明「範囲外の値」命令を使って、入力 VAL の値が特定の値の範囲外にあるか照会できます。
MIN および MAX 入力で値の範囲の限度を指定します。「範囲外の値」命令は、入力 VAL の値と、入力 MIN および MAX の値を比較し、結果をボックス出力に送信します。入力 VALの値が、比較 MIN > VAL または VAL > MAX を満たしている場合、ボックス出力のシグナル
状態は「1」です。データタイプ REAL の指定したオペランドの値が不正な場合、ボックス
出力のシグナル状態は「1」です。
入力 VAL の値が MIN > VAL または VAL > MAX の条件を満たさない場合、ボックス出力がシグナル状態「0」を返します。
この比較ファンクションは、比較対象となる値が同じデータタイプである場合のみ実行で
きます。

594

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「範囲外の値」命令のパラメータを示します。
パラメータ 宣言

データタイプMIN

整数、浮動小数 I、Q、M、D、

Input
Input

整数、浮動小数 I、Q、M、D、

Input

Box output

Output値の範囲の下限値
比較値

L、または定数

点数
MAX

説明

L、または定数

点数
VAL

メモリ領域

整数、浮動小数 I、Q、M、D、値の範囲の上限値

点数

L、または定数BOOL

I、Q、M、D、L 比較の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ! 

ಯ7DJ,QBಯ
ಯ7DJ,QBಯ
287B5$1*(
5($/
ಯ7DJB0LQಯ
ಯ7DJB9DOXHಯ
ಯ7DJB0D[ಯ

0,1
9$/
0$;

ಯ7DJ2XWಯ

次の条件が満たされている場合、出力「TagOut」が設定されます。
• オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」であること。
• オペランド「TagIn_3」のシグナル状態が「1」であること。
• オペランド「Tag_Value」の値が、オペランド「Tag_Min」および「Tag_Max」(MIN >VAL または VAL > MAX)の現在値で指定された値の範囲外にあります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

595

基本命令
3.2 FBD

3.2.4.9

OK:有効性のチェック

説明「有効性チェック」命令を使って、オペランド(<operand>)の値が有効な浮動小数点数であるかチェックできます。このチェックは、各プログラムサイクルで実行されます。照会した時点でオペランドの値が有効な浮動小数点数である場合、出力ボックスがシグナル状態「1」を返します。それ以外のすべての場合、「有効性チェック」命令の出力のシグナル状態
は「0」です。
「有効性チェック」命令は、EN 機能と一緒に使用することができます。命令ボックスを EN
イネーブル入力に接続すると、このイネーブル入力は有効性クエリの結果が正である場合にのみセットされます。このファンクションを使用して、指定したオペランドの値が有効な浮動小数点数である場合のみ、この命令を有効にすることができます。

パラメータ
次の例で、
「有効性チェック」命令がどのように動作するかを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、L チェック対象の値

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJB9DOXHಯ
2.
ಯ7DJB9DOXHಯ

08/
5($/

2.

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

オペランド「Tag_Value1」と「Tag_Value2」の値が有効な浮動小数点数である場合、「乗算」命令が実行されます。オペランド「Tag_Value1」の値が、オペランド「Tag_Value2」の値と乗算されます。この後、乗算の積がオペランド「Tag_Result」に書き込まれます。
この命令がエラーなしで実行されると、「ENO」イネーブル出力の TagOut オペランドはシグナル状態「1」にセットされます。

596

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.4.10

NOT_OK:無効性のチェック

説明「無効性チェック」命令を使って、オペランド(<operand>)の値が無効な浮動小数点数であるかチェックできます。このチェックは、各プログラムサイクルで実行されます。照会した時点でオペランドの値が有効な浮動小数点数である場合、出力ボックスがシグナル状態「1」を返します。それ以外のすべての場合、出力ボックスのシグナル状態は「0」です。

パラメータ
次の表に、「無効性チェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、L チェック対象の値

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QB9DOXHಯ
127B2.

029(
(1

287

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯಯ7DJ,QB9DOXHಯ

オペランド「TagIn_Value」の値が無効な浮動小数点数の場合、命令「値のムーブ」は実行されません。ENO イネーブル出力の「TagOut」オペランドがシグナル状態「0」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

597

基本命令
3.2 FBD

3.2.4.11

VARIANTEQ_Type: EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較
説明「EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較」命令を使用して、
VARIANT が指すタグのデータタイプを照会できます。ブロックインターフェースで宣言した IN1 パラメータのタグのデータタイプと、IN2 パラメータのタグのデータタイプを「等しい」かどうか比較しています。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP ==」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。
構造体の比較に関する追加情報は、CMP ==:等価 (ページ 573)を参照してください。

598

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

IN1

Input

VARIANT

説明

S7-1500

L (ブロックイ L (ブロック 最初のオペラン
ンターフェー インターフ ドスの[一時]セ ェースのクションでの [一時]セク宣言は可能で ションでの
はありませ

宣言は可能

ん。)

ではありま
せん。)

IN2

Input

ビット列、整I、Q、M、数、浮動小数点 D、L

I、Q、M、 2 番目のオペラ
D、L、P

ンド

数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。
(4B7\SH
7DJ

,1

ಯ7DJಯ

,1 287

ಯ7DJ,Qಯಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「Variable1」オペランドの値 =「Variable2」が成り立ちます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

599

基本命令
3.2 FBD

NE_Type: UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較

説明「UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較」命令を使用
して、VARIANT が指すタグが所有しないデータタイプを照会できます。ブロックインター
フェースで宣言した IN1 パラメータのタグのデータタイプと、IN2 パラメータのタグのデータタイプを「次の値に等しくない」かどうか比較しています。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP <>」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。
構造体の比較に関する追加情報は、CMP <>:不等価 (ページ 578)を参照してください。

600

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較」
命令のパラメータを示します。
パラメータ 宣言
IN1

データタイプ

Input

メモリ領域

VARIANT

説明

S7-1200

S7-1500

L (ブロック

L (ブロック 最初のオペラン

インターフ

インターフ ドェースの[一 ェースの時]セクショ [一時]セク

IN2

Input

ビット列、整

ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。)

I、Q、M、

I、Q、M、

2 番目のオペラ

D、L、P

ンド

数、浮動小数点 D、L数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。
1(B7\SH
7DJ

,1

ಯ7DJಯ

,1 287

ಯ7DJ,Qಯಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「Variable1」オペランドの値が「Variable2」の値と等しくないこと。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

601

基本命令
3.2 FBD

EQ_ElemType: EQUAL (等しい)かどうか配列要素のデータタイプをタグのデータタイプと比較

説明「EQUAL (等しい)かどうか配列エレメントのデータタイプをタグのデータタイプと比較」命令を使用して、VARIANT が指すタグのデータタイプを照会できます。ブロックインターフ
ェースで宣言した IN1 パラメータのタグのデータタイプと、IN2 パラメータのタグのデー
タタイプを「等しい」かどうか比較しています。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。
VARIANT タグのデータタイプが ARRAY の場合、ARRAY エレメントのデータタイプが比較されます。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP ==」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。
構造体の比較に関する追加情報は、CMP ==:等価 (ページ 573)を参照してください。

602

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「EQUAL (等しい)かどうか配列エレメントのデータタイプをタグのデータタイ
プと比較」命令のパラメータを示します。
パラメータ 宣言
IN1

データタイプInput

VARIANT

メモリ領域

説明

S7-1200

S7-1500

L (ブロック

L (ブロック 最初のオペラン

インターフ

インターフ ドェースの[一 ェースの[一時]セクショ 時]セクショ

IN2

Input

ビット列、整

ンでの宣言

ンでの宣言

は可能では

は可能では

ありませ

ありませ

ん。)

ん。)

I、Q、M、

I、Q、M、

2 番目のオペラ

D、L、P

ンド

数、浮動小数点 D、L数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。
(4B(OHP7\SH
7DJ

,1

ಯ7DJಯ

,1

287

ಯ7DJ,Qಯಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「Variable1」オペランドの値 =「Variable2」が成り立ちます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

603

基本命令
3.2 FBD

NE_ElemType: UNEQUAL (等しくない)かどうか配列要素のデータタイプをタグのデータタイプと比較

説明「UNEQUAL (等しくない)かどうか配列エレメントのデータタイプをタグのデータタイプと比較」命令を使用して、VARIANT が指すタグが所有しないデータタイプを照会できます。
ブロックインターフェースで宣言した IN1 パラメータのタグのデータタイプと、IN2 パラ
メータのタグのデータタイプを「次の値に等しくない」かどうか比較しています。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。
VARIANT タグのデータタイプが ARRAY の場合、ARRAY エレメントのデータタイプが比較されます。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

タイマ、日付と時刻の比較
S5TIME などのすべての時刻が直接に相互に比較できるとは限りません。この場合、それらの時刻は、比較できるように、暗黙的に別の時刻(たとえば、TIME)に変換されます。
さまざまなデータタイプの日付および時刻を比較する場合は、小さい日付または時刻デー
タタイプの値が、暗黙的に大きい日付または時刻データタイプに変換されます。すなわち、
たとえば、2 つの日付および時刻データタイプ DATE および DTL が、DTL に基づいて比較されます。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較では、命令「CMP <>」を使用できます。匿名の構造体は、同一の ARRAY の
一部でない限り、一般的に比較できません。
構造体の比較に関する追加情報は、CMP <>:不等価 (ページ 578)を参照してください。

604

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「UNEQUAL (等しくない)かどうか配列エレメントのデータタイプをタグのデー
タタイプと比較」命令のパラメータを示します。
パラメータ 宣言
IN1

データタイプ

Input

メモリ領域

VARIANT

説明

S7-1200

S7-1500

L (ブロック

L (ブロック 最初のオペラン

インターフ

インターフ ドェースの[一 ェースの時]セクショ [一時]セク

IN2

Input

ビット列、整

ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。)

I、Q、M、

I、Q、M、 2 番目のオペラ

数、浮動小数点 D、L

D、L、P

ンド

数、タイマ、日
付と時刻、文字列、配列、PLC
データタイプ例
次の例で、命令がどのように動作するかを示します。
1(B(OHP7\SH
7DJ

,1

ಯ7DJಯ

,1

287

ಯ7DJ,Qಯಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn」のシグナル状態が「1」であること。
• その比較命令の条件が満たされていること。すなわち、「Variable1」オペランドの値が「Variable2」の値と等しくないこと。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

605

基本命令
3.2 FBD

IS_NULL: EQUALS NULL ポインタのチェック

説明
命令「EQUALS NULL ポインタの問い合わせ」を使用して、VARIANT が NULL ポインタを指し、そのためオブジェクトを指さないかどうかを照会することができます。
<Operand>のデータタイプは、VARIANT であることが必要です。
注記
VARIANT タグは、ANY ポインタを指します。
VARIANT タグが ANY ポインタを指す場合、この命令は常に(ANY ポインタが NULL である
場合でも)、結果 RLO = 「0」を返します。

パラメータ
次の表に、「EQUALS NULL ポインタのチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域<Operand> Input

VARIANT

L (ブロックイン EQUALS NULL (NULL に等

説明

ターフェースの しい)かどうかで比較され[一時]セクショ

るオペランドンでの宣言は可能ではありません。)
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
7DJB2SHUDQG,6B18//
287
ಯ7DJB,Qಯಯ7DJ2XWಯಯ7DJB,Qಯ

606

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「Tag_In1」および「Tag_In2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされていること。すなわち、#Tag_Operand オペランドが、オブジェクトを指していないこと。

NOT_NULL: UNEQUALS NULL ポインタのチェック
説明「UNEQUALS NULL ポインタのチェック」命令を使用して、が NULL ポインタをポイントせず、VARIANT そのためオブジェクトをポイントするかどうかを照会することができます。
<Operand>のデータタイプは、VARIANT であることが必要です。
注記
VARIANT タグは、ANY ポインタを指します。
VARIANT タグが ANY ポインタを指す場合、この命令は常に(ANY ポインタが NULL である
場合でも)、結果 RLO = 「1」を返します。

パラメータ
次の表に、「UNEQUALS NULL ポインタのチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

VARIANT

L (ブロックイン UNEQUALS NULL (NULL
ターフェースの に等しくない)かどうかで[一時]セクショ

比較されるオペランド

ンでの宣言は可能ではありません。)
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

607

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
7DJB2SHUDQG
127B18//287
ಯ7DJ2XWಯಯ7DJB,Qಯಯ7DJB,Qಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「Tag_In1」および「Tag_In2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされていること。すなわち、#Tag_Operand オペランドが、オブジェクトを指していること。

IS_ARRAY: 配列のチェック

説明「配列のチェック」命令を使用して、VARIANT が ARRAY データタイプのタグを指すかどうかを照会できます。
<Operand>のデータタイプは、VARIANT であることが必要です。

パラメータ
次の表に、「配列のチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

VARIANT

L (ブロックイン ARRAY に関するクエリがターフェースの 行われるオペランド「Input」、「InOut」、および「Temp」セクション内で宣
言可能。)

OUT

608

Output

BOOL

I、Q、M、D、L 比較の結果

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
有効なデータタイプの追加情報については、「関連項目」を参照してください。
注記
配列データブロックのチェック
ArrayDB とともに IS_ARRAY 命令を使用し、DB_ANY_TO_VARIANT によって VARIANT 入力
パラメータを生成する場合、その ArrayDB が、データタイプ VARIANT の仮パラメータの実パラメータとしてプログラム内のどこかでシンボリックに使用されている必要があります。
正しく動作するには、使用場所がダウンロードされていれば十分です。これは、実行には必要ありません。

例
次の例で、命令がどのように動作するかを示します。
7DJB9$5,$17
7R$UUD\,6B$55$<287
ಯ7DJB,Qಯಯ7DJ2XWಯಯ7DJB,Qಯ

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「Tag_In1」および「Tag_In2」のシグナル状態が「1」であること。
• 比較命令の条件が満たされます。すなわち「#Tag_VARIANTToArray」オペランドが
ARRAY データタイプになります。

EQ_TypeOfDB:EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較

説明「EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較」命令を使用して、DB_ANY データタイプのタグがアドレス指定する、データブロックにあるデータタイプを照会します。IN1 パラメータのタグによってアドレス指定される DB のデー
タタイプと、他のタグのデータタイプ、または直接 IN2 パラメータのデータタイプとを「Equal」であるかどうか比較します。
IN1 パラメータのタグのデータタイプは、DB_ANY であることが必要です。IN2 パラメー
タのタグは、たとえば PLC データタイプ、システムデータタイプ、軸、FB などにすることが可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

609

基本命令
3.2 FBD
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域
S7-1200

IN1

Input

DB_ANY説明S7-1500

L (ブロックインターフェー 最初のオペラ
スの「Input」、「InOut」、お ンド
よび「Temp」セクション内
で宣言可能。)

IN2
OUT

Input

TYPE_ID

Output

BOOL

I、Q、M、

I、Q、M、

2 番目のオペ

D、L

D、L、P

ランド

I、Q、M、

I、Q、M、

比較の結果

D、L

D、L

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
(4B7\SH2I'%
,QSXW'%$Q\,1

72B6SHHG$[LV,1

ಯ7DJ,Qಯ
287

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn」のシグナル状態が「1」であること。
• 比較命令の条件が満たされます。つまり、DB をアドレス指定する#InputDBAny オペラ
ンドのデータタイプは、TO_SpeedAxis データタイプと等しくなります。
次の条件が満たされている場合、「TagOut」出力がセットされません。
• データブロックの番号が「0」の場合。
• データブロックが存在しません。
• データブロックが配列 DB でない場合。
• データブロックにデータタイプ UDT (PLC データタイプ)のタグが含まれている場合。

610

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

NE_TypeOfDB:UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較

説明「UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較」
命令を使用して、DB_ANY データタイプのタグがアドレス指定する、データブロックにはないデータタイプを照会します。IN1 パラメータのタグによってアドレス指定される DB の
データタイプと、他のタグのデータタイプ、または直接 IN2 パラメータのデータタイプとを「Not equal」であるかどうか比較します。
IN1 パラメータのタグのデータタイプは、DB_ANY であることが必要です。IN2 パラメー
タのタグは、たとえば PLC データタイプ、システムデータタイプ、軸、FB などにすることが可能です。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域
S7-1200

IN1

Input

DB_ANY説明S7-1500

L (ブロックインターフェー 最初のオペラ
スの「Input」、「InOut」、お ンド
よび「Temp」セクション内
で宣言可能。)

IN2
OUT

Input
OutputTYPE_ID
BOOL

I、Q、M、

I、Q、M、

2 番目のオペ

D、L

D、L、P

ランド

I、Q、M、

I、Q、M、

比較の結果

D、L

D、L

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

611

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
1(B7\SH2I'%
,QSXW'%$Q\,1

72B6SHHG$[LV,1

ಯ7DJ,Qಯ
287

ಯ7DJ2XWಯ6

次の条件が満たされている場合、「TagOut」出力がセットされます。
• オペランド「TagIn」のシグナル状態が「1」であること。
• 比較命令の条件が満たされます。つまり、DB をアドレス指定する#InputDBAny オペラ
ンドのデータタイプは、TO_SpeedAxis データタイプと等しくありません。
次の条件が満たされている場合、「TagOut」出力がセットされません。
• データブロックの番号が「0」の場合。
• データブロックが存在しません。
• データブロックが配列 DB でない場合。
• データブロックにデータタイプ UDT (PLC データタイプ)のタグが含まれている場合。

3.2.5

四則演算

3.2.5.1

CALCULATE: 計算

説明「計算」命令を使用して、選択したデータタイプに応じた数学演算および複雑な論理演算の計算のための式を定義し、実行します。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。選択
したデータタイプに基づいて、特定の命令の機能を組み合わせて複雑な計算を実行できます。計算する式は、命令ボックスの上部にある「計算機」アイコンで開くことができるダイアログで指定します。式には、入力パラメータの名前と命令の構文が含めることができます。オペランド名またはオペランドアドレスの指定は許可されていません。

612

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
初期状態では、この命令ボックスには少なくとも 2 つの入力(IN1 および IN2)が含まれています。入力数は拡張できます。挿入された入力は、ボックス内で昇順に番号付けされます。
入力の値は、指定された式を実行するのに使われます。定義済み入力のすべてを式に使用する必要はありません。命令の結果は、ボックス出力 OUT に転送されます。
注記
式の算術演算の 1 つでエラーが発生すると、結果は OUT 出力に転送されず、ENO イネー
ブル出力のシグナル状態が「1」になります。
式にボックスで使用できない入力を使用すると、これらの入力は自動的に挿入されます。
ただし、式で新たに定義される入力の番号に途切れがないことが条件です。たとえば、入力
IN3 が定義されていない場合、式で入力 IN4 を使います。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 「計算」命令の結果または暫定結果が、出力 OUT で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。
• 式で指定されたいずれかの命令の実行中にエラーが発生していること。
次の表に、選択したデータタイプに基づいて「計算」命令の式で組み合わせて実行できる命令を示します。
データタイプ

命令

構文

例

ビット列

AND:AND 論理積演算

AND

IN1 AND IN2

OR:OR 論理和演算

OR

OR IN3

XOR:EXCLUSIVE OR 論理演算

XOR

INV:1 の補数の作成

NOT

SWAP:スワップ 1)

SWAP

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

613

基本命令
3.2 FBD614

データタイプ

命令

構文

例

整数

ADD:加算+(IN1 + IN2) *SUB:減算-IN3;

MUL:乗算*(ABS(IN2)) *DIV:除算/MOD:除算の剰余を返す

MOD

INV:1 の補数の作成

NOT

NEG:2 の補数の作成-(in1)

ABS:絶対値の形成

ABS( )(ABS(IN1))

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
データタイプ

命令

構文例

浮動小数点数ADD:加算+((SIN(IN2) *SUB:減算-SIN(IN2) +MUL:乗算*DIV:除算/EXPT:累乗**

ABS:絶対値の形成

ABS( )+

SQR:2 乗値の形成

SQR( )(SQR(COS(IN3)

SQRT:平方根の形成

SQRT( )

) / IN2))

LN:自然対数の形成

LN( )EXP:指数値の形成

EXP( )

FRAC:小数部を返す

FRAC( )

SIN:正弦値の形成

SIN( )

COS:余弦値の形成

COS( )

TAN:正接値の形成

TAN( )

ASIN:逆正弦値の形成

ASIN( )

ACOS:逆余弦値の形成

ACOS( )

ATAN:逆正接値の形成

ATAN( )

NEG:2 の補数の作成-(in1)TRUNC:値の切り捨て

TRUNC( )ROUND:数値の四捨五入

ROUND( )(SIN(IN3) *SIN(IN3)) /IN3));(SQR(SIN(IN2))

CEIL:浮動小数点数から次に大きい整 CEIL( )数を生成
FLOOR:浮動小数点数から次に小さい FLOOR( )整数を生成
データタイプ BYTE では使用不可。

1)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

615

基本命令
3.2 FBD

パラメータ
次の表に、「計算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、
D、L

イネーブル入力

M、D、
L、T、C

ENO

Output

BOOL

I、Q、M、 I、Q、
D、L

IN1

Input

イネーブル出力

M、D、L

ビット列、整I、Q、M、 I、Q、最初に利用可能な入数、浮動小数

D、L、P、

力

点数

または定数 L、P、ま

M、D、
たは定数

IN2

Input

ビット列、整I、Q、M、 I、Q、

2 番目に使用可能な数、浮動小数

D、L、P、

入力

点数

または定数 L、P、ま

M、D、
たは定数

INn

Input

ビット列、整I、Q、M、 I、Q、追加で挿入された入数、浮動小数

D、L、P、

力

点数

または定数 L、P、ま

M、D、
たは定数

OUT

Output

ビット列、整I、Q、M、 I、Q、

最終結果の転送先の数、浮動小数

D、L、P

出力。

点数

M、D、
L、P

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

616

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
&$/&8/$7(,17
ಯ7DJB,QSXWಯ

(1
287

,1,1 ,1 ,1

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

,1

287

ಯ7DJB9DOXHBಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJB2XWSXWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value_1

4

IN2

Tag_Value_2

4

IN3

Tag_Value_3

3

IN4

Tag_Value_4

2

OUT

Tag_Result

12「Tag_Input」のシグナル状態が「1」の場合、この命令が実行されます。オペランド「Tag_Value_1」の値がオペランド「Tag_Value_2」の値に加算されます。合計がオペランド「Tag_Value_3」の値で乗算されます。積がオペランド「Tag_Value_4」の値で除算されます。商は、命令の OUT 出力のオペランド「Tag_Result」に終了結果として転送されます。
個々の命令の実行中にエラーが発生しない場合、出力 ENO およびオペランド「Tag_Output」が「1」にセットされます。

3.2.5.2

ADD: 加算

説明「加算」命令を使って、入力 IN1 の値を入力 IN2 の値に加算し、出力 OUT (OUT := IN1+IN2)
で合計を照会できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

617

基本命令
3.2 FBD
初期状態では、この命令ボックスには 2 つ以上の入力(IN1 および IN2)が含まれています。
入力数は拡張できます。 挿入された入力は、ボックス内で昇順に番号付けされます。 この命令の実行中に、すべての使用可能な入力パラメータの値が加算されます。 合計は出力
OUT に格納されます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 命令の結果が、出力 OUT で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「加算」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 許可入力

M、D、L

D、L、T、
C

ENO
IN1

Output
Input

BOOL

I、Q、

I、Q、M、 許可出力

M、D、L

D、L

整数、浮動小数 I、Q、
点数

I、Q、M、 加算する最初の数

M、D、D、L、P、

L、P、ま

または定数

たは定数
IN2

Input

整数、浮動小数 I、Q、
点数

I、Q、M、 加算する 2 番目の

M、D、D、L、P、 数

L、P、ま

または定数

たは定数
INn

Input

整数、浮動小数 I、Q、
点数

I、Q、M、 加算されるオプシ

M、D、

D、L、P、 ョンの入力値。

L、P、ま

または定数

たは定数
OUT

Output整数、浮動小数 I、Q、
点数

I、Q、M、 合計

M、D、

D、L、P

L、P

618

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
$'',17

ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 オペランド「Tag_Value1」の値がオペランド「Tag_Value2」の値に加算されます。 加算の結果はオペ
ランド「Tag_Result」に格納されます。この命令がエラーなしで実行された場合、許可出力
ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

3.2.5.3

SUB: 減算

説明「減算」命令を使って、入力 IN2 の値を入力 IN1 から減算し、出力 OUT (OUT := IN1-IN2)での差分を照会します。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 命令の結果が、出力 OUT で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

619

基本命令
3.2 FBD

パラメータ
次の表に、「減算」命令のパラメータを示します。
パラメータ 宣言
EN

データタイプ

Input

BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 許可入力

M、D、L

D、L、T、
C

ENO
IN1

Output
Input

BOOL

I、Q、

I、Q、M、 許可出力

M、D、L

D、L

整数、浮動小数 I、Q、
点数

I、Q、M、 被減数

M、D、

D、L、P、

L、P、ま

または定数

たは定数
IN2

Input

整数、浮動小数 I、Q、
点数

I、Q、M、 減数

M、D、

D、L、P、

L、P、ま

または定数

たは定数
OUT

Output整数、浮動小数 I、Q、
点数

I、Q、M、 差

M、D、

D、L、P

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
68%,17

ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 オペランド「Tag_Value2」の値が、オペランド「Tag_Value1」の値から減算されます。 減算の結果は

620

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
オペランド「Tag_Result」に格納されます。この命令がエラーなしで実行された場合、許可出力 ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

3.2.5.4

MUL: 乗算

説明「乗算」命令を使って、入力 IN1 の値を入力 IN2 の値で乗算し、出力 OUT (OUT := IN1 *IN2)での積を照会します。
初期状態では、この命令ボックスには 2 つ以上の入力(IN1 および IN2)が含まれています。
入力数は拡張できます。 挿入された入力は、ボックス内で昇順に番号付けされます。 命令が実行されると、すべての使用可能な入力パラメータの値が乗算されます。 積は OUT 出力に格納されます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 結果が、出力 OUT で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「乗算」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、

I、Q、

M、D、L

M、D、

説明
許可入力

L、T、C
ENO
IN1

Output
Input

BOOL

I、Q、

M、D、L

M、D、L

整数、浮動小数 I、Q、

I、Q、

M、D、

M、D、

L、P、ま

L、P、ま

たは定数

たは定数

点数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

I、Q、

許可出力
乗算の最初の値

621

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

IN2

Input

INn

Input

I、Q、

M、D、

M、D、

L、P、ま

L、P、ま

たは定数

たは定数

Output

乗算の 2 番目の値

整数、浮動小数 I、Q、I、Q、乗算されるオプシ

M、D、

M、D、

ョンの入力値。

L、P、ま

L、P、ま

たは定数

たは定数

点数

OUT

S7-1500

整数、浮動小数 I、Q、
点数

説明

整数、浮動小数 I、Q、

I、Q、

M、D、

M、D、

L、P

L、P

点数

製品

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
08/
5($/

ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ
6「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 オペランド「Tag_Value1」の値をオペランド「Tag_Value2」の値で乗算します。 乗算の結果はオペラ
ンド「Tag_Result」に格納されます。この命令がエラーなしで実行された場合、許可出力
ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

622

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.5.5

DIV: 除算

説明「除算」命令を使って、入力 IN1 の値を入力 IN2 の値で除算し、出力 OUT (OUT := IN1/IN2)
での商を照会します。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 命令の結果が、出力 OUT で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「除算」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 許可入力

M、D、L D、L、T、
C
ENO

Output

BOOL

I、Q、

I、Q、M、 許可出力

M、D、L D、L
IN1

Input

整数、浮動小数 I、Q、
点数

M、D、

I、Q、M、 被除数
D、L、P、

L、P、ま または定たは定数 数
IN2

Input

整数、浮動小数 I、Q、
点数

M、D、

I、Q、M、 除数
D、L、P、

L、P、ま または定たは定数 数OUT

Output整数、浮動小数 I、Q、
点数

M、D、

I、Q、M、 商の値
D、L、P

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

623

基本命令
3.2 FBD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
',9
5($/

ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ
6「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 オペランド「Tag_Value1」の値が、オペランド「Tag_Value2」の値で除算されます。 除算の結果はオ
ペランド「Tag_Result」に格納されます。この命令がエラーなしで実行された場合、許可
出力 ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

3.2.5.6

MOD: 除算の剰余を返す

説明「除算の剰余を返す」命令を使用して、入力 IN1 の値を入力 IN2 の値で除算し、出力 OUT
で除算の余りを照会します。

パラメータ
次の表に、「除算の剰余を返す」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、

I、Q、

説明
許可入力

M、D、L M、D、
L、T、C
ENO

Output

BOOL

I、Q、

I、Q、

許可出力

M、D、L M、D、L

624

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言
IN1

データタイプ

Input

整数

メモリ領域
S7-1200

S7-1500

I、Q、

I、Q、

M、D、

M、D、

説明
被除数

L、P、ま L、P、または定数 たは定数
IN2

Input

整数

I、Q、

I、Q、

M、D、

M、D、

除数

L、P、ま L、P、または定数 たは定数
OUT

Output

整数

I、Q、

I、Q、

M、D、

M、D、

L、P

L、P

除算の余り

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
02'
',17

ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ
6「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 オペランド「Tag_Value1」の値が、オペランド「Tag_Value2」の値で除算されます。 除算の余りはオ
ペランド「Tag_Result」に格納されます。この命令がエラーなしで実行された場合、許可
出力 ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

625

基本命令
3.2 FBD

3.2.5.7

NEG: 2 の補数の作成

説明「2 の補数の作成」命令を使用して、入力 IN の値の符号を変更し、出力 OUT で結果を照会します。 たとえば、入力 IN に正の値がある場合、この値をマイナスにした値が出力 OUTに出力されます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 命令の結果が、出力 OUT で指定されたデータタイプに許可されている範囲外であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「2 つの補数の作成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-1200 S7-1500 S7-1200 S7-1500
EN

Input

BOOL

BOOL

I、Q、

I、Q、

許可入力

M、D、 M、D、ENO

Output

BOOL

BOOL

L

L、T、C

I、Q、

I、Q、

許可出力

M、D、 M、D、L
L

626

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-1200 S7-1500 S7-1200 S7-1500
IN

Input

SINT、

SINT、

I、Q、

INT、

INT、

M、D、 M、D、

DINT、

DINT、

L、P、

L、P、ま

浮動小数 LINT、浮 または

たは定数

点数

I、Q、

入力値

動小数点 定数数

OUT

Output

SINT、

SINT、

I、Q、

I、Q、

INT、

INT、

M、D、 M、D、

DINT、

DINT、

L、P

入力値の 2 の補数

L、P浮動小数 LINT、浮
点数

動小数点
数

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
1(*5($/
ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 入力「TagIn_Value」での値の符号は変更され、結果は出力「TagOut_Value」に格納されます。
この命令がエラーなしで実行された場合、許可出力 ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

627

基本命令
3.2 FBD

3.2.5.8

INC: インクリメント

説明「インクリメント」命令を使って、パラメータ IN/OUT のオペランドの値を次の大きな値に変更し、結果を照会します。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「インクリメント」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-1200 S7-1500
EN

Input

BOOL

I、Q、

I、Q、M、 許可入力

M、D、L D、L、T、
C
ENO

Output

BOOL

I、Q、

I、Q、M、 許可出力

M、D、L D、L
IN/OUT

InOut

整数

I、Q、

I、Q、M、 インクリメントされM、D、L D、Lる値

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

628

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯಯ7DJB,Q2XWಯ

,1&
,17
(1
,1287

ಯ7DJ2XWಯ
(12

オペランド TagIn_1 および TagIn_2 のシグナル状態が「1」の場合、オペランド「Tag_InOut」の値が 1 インクリメントされ、出力「TagOut」が設定されます。

3.2.5.9

DEC: デクリメント

説明「デクリメント」命令を使って、パラメータ IN/OUT のオペランドの値を次の小さな値に変更し、結果を照会します。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 浮動小数点数の値が無効であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

629

基本命令
3.2 FBD

パラメータ
次の表に、「デクリメント」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

S7-120 S7-1500
0
EN

Input

ENO

BOOL

Output

BOOL

I、Q、

I、Q、M、 許可入力

M、

D、L、T、

D、L

C

I、Q、

I、Q、M、 許可出力

M、

D、L

D、L
IN/OUT

InOut

整数

I、Q、

I、Q、M、 デクリメントされる

M、

D、L

値

D、L
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯಯ7DJB,Q2XWಯ

'(&
,17
(1
,1287

ಯ7DJ2XWಯ
(12

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、オペランド「Tag_InOut」の値が 1 デクリメントされ、出力「TagOut」が設定されます。

630

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.5.10

ABS: 絶対値の形成

説明「絶対値の形成」命令を使って、入力 IN で指定した値の絶対値を計算します。 命令の結果
は、OUT 出力で出力され、そこで照会できます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「絶対値の形成」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

IN

Input

D、L

SINT、

SINT、

I、Q、M、 I、Q、M、 入力値

INT、

INT、

D、L、P、 D、L、P、

DINT、浮DINT、または定数 または定数

動小数点数 LINT、浮動
小数点数
OUT

Output

SINT、

SINT、

I、Q、M、 I、Q、M、 入力値の絶

INT、

INT、

D、L、P

DINT、浮

DINT、

D、L、P

対値

動小数点数 LINT、浮動小数点数
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

631

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
$%65($/
ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value-6.234OUT

TagOut_Value

6.234「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、入力「TagIn_Value」の値の絶対値を計算し、結果を出力「TagOut_Value」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

3.2.5.11

MIN: 最小値の取得

説明「最小値の取得」命令は、使用可能な入力の値を比較し、最小値を出力 OUT に書き込みます。入力の数は、追加入力によって、命令ボックスで拡張できます。入力は、ボックスで昇順に番号付けされます。
初期状態では、この命令ボックスには 100 つ以上の入力(IN1 および IN2)が含まれています。
次のいずれかの条件が満たされると、イネーブル出力 ENO のシグナル状態が「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「最小値の取得」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 イネーブル入力

M、D、L

D、L、T、
C

ENO
IN1

Output
Input

BOOL

I、Q、

I、Q、M、 イネーブル出力

M、D、L

D、L

整数、浮動小数 I、Q、点数、DTL、DT

I、Q、M、 最初の入力値

M、D、

D、L、P、

L、P、ま

または定数

たは定数
IN2

Input

整数、浮動小数 I、Q、点数、DTL、DT

I、Q、M、 2 番目の入力値

M、D、

D、L、P、

L、P、ま

または定数

たは定数
INn

Input

整数、浮動小数 I、Q、

I、Q、M、 値が比較される追

M、D、D、L、P、 加挿入された入力

L、P、ま

または定数

点数、DTL、DT

たは定数
OUT

Output整数、浮動小数 I、Q、点数、DTL、DT

M、D、

I、Q、M、 結果
D、L、P

L、P
IEC チェックが有効でない場合、データタイプと同一の長さのビット列を選択すること
によって、データタイプ TIME、LTIME、TOD、LTOD、DATE、および LDT のタグを使用することもできます(たとえば、TIME の代わりに => DINT、UDINT、または DWORD = 32 ビ
ット)。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

633

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

0,1
,17
(1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ,QB9DOXHಯ

,1

287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ

ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

IN3

TagIn_Value3

13333

OUT

TagOut_Value

12222

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、指定されたオペランドの値を比較し、最小値(「TagIn_Value1」)を出力「TagOut_Value」にコピーします。この命令がエラーなしで実行された場合、「TagOut」出
力がセットされます。

3.2.5.12

MAX: 最大値の取得

説明「最大値の取得」命令は、使用可能な入力の値を比較し、最大値を出力 OUT に書き込みます。入力の数は、追加入力によって、命令ボックスで拡張できます。入力は、ボックスで昇順に番号付けされます。
初期状態では、この命令ボックスには 100 つ以上の入力(IN1 および IN2)が含まれています。

634

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次のいずれかの条件が満たされると、イネーブル出力 ENO のシグナル状態が「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「最大値の取得」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、

I、Q、M、 イネーブル入力

M、D、L

D、L、T、
C

ENO
IN1

Output
Input

BOOL

Input

Input

Output

D、L
D、L、P、

L、P、ま

または定

たは定数

数
I、Q、M、 2 番目の入力値

M、D、

D、L、P、

L、P、ま

または定

たは定数

数
I、Q、M、 値を比較する追加

M、D、

D、L、P、 で挿入された入

L、P、ま

または定

たは定数

数

整数、浮動小数 I、Q、点数、DTL、DT

I、Q、M、 最初の入力値

M、D、整数、浮動小数 I、Q、点数、DTL、DT

OUT

M、D、L

整数、浮動小数 I、Q、点数、DTL、DT

INn

I、Q、M、 イネーブル出力

整数、浮動小数 I、Q、点数、DTL、DT

IN2

I、Q、

M、D、

力。

I、Q、M、 結果
D、L、P

L、P
IEC チェックが有効でない場合、データタイプと同一の長さのビット列を選択すること
によって、データタイプ TIME、LTIME、TOD、LTOD、DATE、および LDT のタグを使用することもできます(たとえば、TIME の代わりに => DINT、UDINT、または DWORD = 32 ビ
ット)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

635

基本命令
3.2 FBD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

0$;
,17
(1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJ,QB9DOXHಯ

,1

287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ

ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

IN3

TagIn_Value3

13333

OUT

TagOut_Value

14444

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、指定されたオペランドの値を比較し、最大値(「TagIn_Value2」)を出力「TagOut_Value」にコピーします。この命令がエラーなしで実行された場合、「TagOut」出
力がセットされます。

636

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.5.13

LIMIT: 制限値の設定

説明「制限値の設定」命令を使用して入力 IN の値を入力 MN および MX の値に制限することができます。IN 入力の値が MN 条件<= IN <= MX を満たす場合、この値は OUT 出力にコピーされます。条件が満たされず入力値 IN が下限値 MN を下回ると、出力 OUT は入力 MNの値にセットされます。上限値 MX を超えると、OUT 出力が MX 入力の値にセットされます。
MN 入力の値が MX 入力の値より大きい場合、その結果は IN パラメータで指定された値になり、イネーブル出力 ENO は「0」です。
次のいずれかの条件が満たされると、イネーブル出力 ENO のシグナル状態が「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 指定された複数のタグが同じデータタイプでないこと。
• オペランドの値が無効である。
• MN 入力の値が MX 入力の値よりも大きいこと。

パラメータ
次の表に、「制限値の設定」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

S7-1500
D、L、T、

入力

C
ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

D、L

出力

637

基本命令
3.2 FBD
パラメータ 宣言

データタイプS7-1200

MN

Input

S7-1500

メモリ領域
S7-1200

説明S7-1500

整数、浮 整数、浮動 I、Q、M、 I、Q、M、 下限値
動小数点 小数点数、 D、L、P、
数、

TIME、

TIME、

LTIME、

TOD、

TOD、

DATE、

LTOD、

DTL

DATE、

D、L、P、

または定数 または定数

LDT、
DTL、DTIN

Input

整数、浮 整数、浮動 I、Q、M、 I、Q、M、 入力値
動小数点 小数点数、 D、L、P、
数、

TIME、

TIME、

LTIME、

TOD、

TOD、

DATE、

LTOD、

DTL

DATE、

D、L、P、

または定数 または定数

LDT、
DTL、DTMX

Input

整数、浮 整数、浮動 I、Q、M、 I、Q、M、 上限値
動小数点 小数点数、 D、L、P、
数、

TIME、

TIME、

LTIME、

TOD、

TOD、

DATE、

LTOD、

DTL

DATE、

D、L、P、

または定数 または定数

LDT、
DTL、DT

638

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプS7-1200

OUT

Output

S7-1500

メモリ領域
S7-1200

説明S7-1500

整数、浮 整数、浮動 I、Q、M、 I、Q、M、 結果
動小数点 小数点数、 D、L、P
数、

TIME、

TIME、

LTIME、

TOD、

TOD、

DATE、

LTOD、

DTL

DATE、

D、L、P

LDT、
DTL、DT
データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
/,0,7

ಯ7DJ,QBಯ

,17
ಯ7DJ,QBಯ(1287

ಯ7DJB01ಯ

01(12

ಯ7DJB9DOXHಯ

,1

ಯ7DJB0;ಯ

0;ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MN

Tag_MN

12000

IN

Tag_Value

8000

MX

Tag_MX

16000

OUT

Tag_Result

12000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

639

基本命令
3.2 FBD
オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。オペランド「Tag_Value」の値が、オペランド「Tag_MN」および「Tag_MX」の値と比較されます。「Tag_Value」 オペランドの値が下限値未満であるため、「Tag_MN」オ
ペランドの値が「Tag_Result」出力にコピーされます。この命令がエラーなしで実行された
場合、「TagOut」出力がセットされます。

3.2.5.14

SQR: 2 乗値の形成

説明「2 乗値の形成」命令を使用して、入力 IN の浮動小数点数の値を二乗し、結果を出力 OUTに書き込みます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。

パラメータ
次の表に、「2 乗値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、M、 許可入力
D、L、T、

D、LC
ENO

Output

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

D、L
IN

Input

浮動小数点数

I、Q、M、 I、Q、M、 入力値
D、L、P、 D、L、P、

OUT

Output浮動小数点数

または定

または定

数

数

I、Q、M、 I、Q、M、 入力値の 2 乗値
D、L、P

D、L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

640

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
645
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

5.0

OUT

Tag_Result

25.0「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、オペランド「Tag_Value」の値を 2 乗し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

3.2.5.15

SQRT: 平方根の形成

説明「平方根の形成」命令を使用して、入力 IN の浮動小数点数の値の平方根を形成し、結果を
出力 OUT に書き込みます。 この命令は、入力値がゼロよりも大きい場合に正の結果になります。 入力値がゼロ未満の場合、出力 OUT が無効な浮動小数点数を返します。 入力 INの値が「0」の場合、結果も「0」になります。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。
• 入力 IN の値が負。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

641

基本命令
3.2 FBD

パラメータ
次の表に、「平方根の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、M、 許可入力
D、L

D、L、T、
C

ENO

Output

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

IN

Input

浮動小数点数

D、L

I、Q、M、 I、Q、M、 入力値
D、L、P、 D、L、P、
または定

または定数

数
OUT

Output浮動小数点数

I、Q、M、 I、Q、M、 入力値の平方根
D、L

D、L

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6457
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

25.0

OUT

Tag_Result

5.0「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、オペランド「Tag_Value」の平方根を計算し、結果を出力「Tag_Result」に送信します。
この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

642

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.5.16

LN: 自然対数の形成

説明「自然対数の形成」命令を使用して、入力 IN の値の底 e (e=2.718282)に対する自然対数を計算できます。 結果は出力 OUT に送信され、そこで照会できます。 この命令は、入力値がゼロよりも大きい場合に正の結果になります。 入力値がゼロ未満の場合、出力 OUT が無効な浮動小数点数を返します。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。
• 入力 IN の値が負。

パラメータ
次の表に、「自然対数の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

S7-1500

I、Q、M、 I、Q、
D、L

説明
許可入力

M、D、
L、T、C

ENO

Output

BOOL

I、Q、M、 I、Q、
D、L

IN

Input

浮動小数点数

許可出力

M、D、L

I、Q、M、 I、Q、

入力値

D、L、P、 M、D、または定数 L、P、ま
たは定数
OUT

Output浮動小数点数

I、Q、M、 I、Q、
D、L、P

入力値の自然対数

M、D、L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

643

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
/15($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、入力「Tag_Value」の値の自然対数を形成し、結果を出力「Tag_Result」に送信します。
この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

3.2.5.17

EXP: 指数値の形成

説明「指数値の形成」命令を使用して、底 e (e=2.718282)および入力 IN で指定された値から指数を計算できます。 出力 OUT で提供される結果を照会できます(OUT = eIN)。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。

パラメータ
次の表に、「指数値の形成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

説明

S7-1500

I、Q、M、 I、Q、M、 許可入力
D、L

D、L、T、
C

ENO

Output

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

644

D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

IN

Input

浮動小数点数説明

S7-1500

I、Q、M、 I、Q、M、 入力値
D、L、P、 D、L、P、
または定

または定数

数
OUT

Output浮動小数点数

I、Q、M、 I、Q、M、 入力値 IN の指数
D、L、P

D、L、P

値

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
(;35($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令は、底 e とオペランド「Tag_Value」の値から指数を形成し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

3.2.5.18

SIN: 正弦値の形成

説明「正弦値の形成」命令を使って、角度の正弦を計算できます。 角度の大きさは、入力 IN で弧度法を使って指定します。 命令の結果は、OUT 出力で出力され、そこで照会できます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

645

基本命令
3.2 FBD

パラメータ
次の表に、「正弦値の形成」命令のパラメータを示します。
パラメータ

宣言

EN

Input

ENO

OutputIN

Input

データタイプ
BOOL
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

説明
許可入力
許可出力
ラジアン単位

D、L、P、ま D、L、P、ま の角度のサイ
たは定数
OUT

Output浮動小数点数 I、Q、M、
D、L、P

たは定数

ズ

I、Q、M、指定された角

D、L、P

度の正弦

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6,1
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value+1.570796 (π/2)

OUT

Tag_Result

1.0「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、入力「Tag_Value」で指定され角度の正弦を計算し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

646

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.5.19

COS: 余弦値の形成

説明「余弦値の形成」命令を使って、角度の余弦を計算できます。 角度の大きさは、入力 IN で弧度法を使って指定します。 命令の結果は、OUT 出力で出力され、そこで照会できます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。

パラメータ
次の表に、「余弦値の形成」命令のパラメータを示します。
パラメータ
EN
ENO
IN

宣言
Input
OutputInput

データタイプ
BOOL
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

説明
許可入力
許可出力
ラジアン単位

D、L、P、ま D、L、P、ま の角度のサイ
たは定数
OUT

Output浮動小数点数 I、Q、M、
D、L、P

たは定数

ズ

I、Q、M、指定された角

D、L、P

度の余弦

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

647

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
&26
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value+1.570796 (π/2)

OUT

Tag_Result

0「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、入力「Tag_Value」で指定され角度の余弦を計算し、結果を出力「Tag_Result」に送信します。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

3.2.5.20

TAN: 正接値の形成

説明「正接値の形成」命令を使って、角度の正接を計算できます。角度の大きさは、入力 IN で弧度法を使って指定します。命令の結果は、出力 OUT で提供され、そこで照会できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO の信号状態は「0」になります。
• イネーブル入力 EN の信号状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。

648

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「正接値の形成」命令のパラメータを示します。
パラメータ

宣言

EN

データタイプ

Input

ENO

BOOL

Output

IN

BOOL

Input

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

イネーブル入D、L

D、L、T、C

力

I、Q、M、

I、Q、M、

イネーブル出

D、L

D、L

力

I、Q、M、

ラジアン単位浮動小数点数 I、Q、M、

D、L、P また D、L、P また の角度のサイは定数
OUT

Output浮動小数点数 I、Q、M、
D、L、P

は定数

ズ

I、Q、M、指定された角

D、L、P

度の正接

命令ボックスの「<???>」ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように機能するかを示します。
7$1
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように機能するかを示します。
パラメータ

オペランド

値

IN

Tag_Value+3.141593 (π)

OUT

Tag_Result

0

オペランド「TagIn」の信号状態が「1」の場合、「正接値の形成」命令が実行されます。
この命令は、入力「Tag_Value」で指定され角度の正接を計算し、結果を出力「Tag_Result」に送信します。 この命令の実行中にエラーが発生しなかった場合、出力「TagOut」が設定されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

649

基本命令
3.2 FBD

3.2.5.21

ASIN: 逆正弦値の形成

説明「逆正弦値の形成」命令を使用すると、この値と対応する入力 IN で指定された正弦値から角度の大きさを計算できます。 入力 IN で、-1～+1 の範囲の有効な浮動小数点数のみを指定できます。計算された角度の大きさは、弧度法を使用して OUT 出力に出力され、-π/2～+π/
2 の範囲の値を取ることができます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。
• 入力 IN の値が許容範囲外(-1～+1)。

パラメータ
次の表に、「逆正弦値の形成」命令のパラメータを示します。
パラメータ
EN
ENO
IN

宣言
Input
OutputInput

データタイプ
BOOL
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

説明
許可入力
許可出力
正弦値

D、L、P、ま D、L、P、ま
たは定数
OUT

Output浮動小数点数 I、Q、M、
D、L、P

たは定数
I、Q、M、

ラジアン単位

D、L、Pの角度のサイズ

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

650

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
$6,1
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

1.0

OUT

Tag_Result+1.570796 (π/2)

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、入力「Tag_Value」に対応する正弦値の角度の大きさを計算します。 命令の結果は、「Tag_Result」出力に格納されます。この命令がエラーなしで実行された場合、「TagOut」
出力がセットされます。

3.2.5.22

ACOS: 逆余弦値の形成

説明「逆余弦値の形成」命令を使用すると、この値と対応する入力 IN で指定された余弦値から角度の大きさを計算できます。 入力 IN で、-1～+1 の範囲の有効な浮動小数点数のみを指定できます。 計算された角度の大きさは、弧度法を使用して OUT 出力に出力され、0～+π の範囲の値を取ることができます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。
• 入力 IN の値が許容範囲外(-1～+1)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

651

基本命令
3.2 FBD

パラメータ
次の表に、「逆余弦値の形成」命令のパラメータを示します。
パラメータ

宣言

EN

Input

ENO

OutputIN

Input

データタイプ
BOOL
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

説明
許可入力
許可出力
余弦値

D、L、P、ま D、L、P、ま
たは定数
OUT

Output浮動小数点数 I、Q、M、
D、L、P

たは定数
I、Q、M、

ラジアン単位

D、L、Pの角度のサイズ

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
$&26
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value0

OUT

Tag_Result+1.570796 (π/2)

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、入力「Tag_Value」に対応する余弦値の角度の大きさを計算します。 命令の結果は、「Tag_Result」出力に格納されます。この命令がエラーなしで実行された場合、「TagOut」
出力がセットされます。

652

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.5.23

ATAN: 逆正接値の形成

説明「逆正接値の形成」命令を使用すると、この値と対応する入力 IN で指定された正接値から角度の大きさを計算できます。 入力 IN には、有効な浮動小数点数(または-NaN/+NaN)のみを指定することができます。 計算された角度の大きさは、弧度法を使用して OUT 出力に出力され、-π/2～+π/2 の範囲の値を取ることができます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 IN の値が有効な浮動小数点数でない。

パラメータ
次の表に、「逆正接値の形成」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ
BOOL

メモリ領域
S7-1200

S7-1500

I、Q、

I、Q、

M、D、L

M、D、

説明
許可入力

L、T、C
ENO
IN

OUT

OutputInput

Output

BOOL
浮動小数点数

浮動小数点数

I、Q、

I、Q、

M、D、L

M、D、L

I、Q、

I、Q、

M、D、

M、D、

L、P、ま

L、P、ま

たは定数

たは定数

I、Q、

I、Q、

ラジアン単位の角

M、D、

M、D、

度のサイズ

L、P

L、P

許可出力
正接値

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

653

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
$7$1
5($/
ಯ7DJ,Qಯ

(1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

1.0

OUT

Tag_Result+0.785398 (π/4)

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、入力「Tag_Value」に対応する正接値の角度の大きさを計算します。 命令の結果は、「Tag_Result」出力に格納されます。この命令がエラーなしで実行された場合、「TagOut」
出力がセットされます。

3.2.5.24

FRAC: 小数部を返す

説明「小数部を返す」命令を使用して、IN 入力の値の小数位を求めることができます。 照会の結果は出力 OUT に格納され、そこで照会できます。 たとえば、入力 IN の値が 123.4567の場合、出力 OUT の値が 0.4567 となります。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• この命令の実行中にエラーが発生した場合、たとえば入力に有効な浮動小数点数がない
場合。

654

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「小数部を返す」命令のパラメータを示します。
パラメータ
EN

宣言

データタイプ

Input

ENO

BOOL

Output

IN

BOOL

Input

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

説明
許可入力
許可出力
小数点以下の

D、L、P、ま D、L、P、ま 桁数を確定す
たは定数
OUT

Output浮動小数点数 I、Q、M、
D、L、P

たは定数

る入力値。

I、Q、M、

入力 IN の入D、L、P

力値の小数位命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯಯ7DJB9DOXHಯ

)5$&
5($/
(1

287

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

2.555

OUT

Tag_Result

0.555

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が開始されます。 オペランド「Tag_Value」の値からの小数位が、オペランド「Tag_Result」にコ
ピーされます。この命令がエラーなしで実行された場合、許可出力 ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

655

基本命令
3.2 FBD

3.2.5.25

EXPT: 累乗

説明
「累乗」命令を使って、入力 IN1 の値を入力 IN2 の値で指定された指数で累乗することができます。命令の結果は、出力 OUT に格納され、そこから照会できます(OUT = IN1IN2)。
入力 IN1 の値は、有効な浮動小数点数であることが必要です。入力 IN2 の設定では、整数も許可されます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• この命令の処理中にエラーが発生した場合、たとえばオーバーフローが発生した場合。

パラメータ
次の表に、「累乗」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイ
プ

メモリ領域
S7-1200

S7-1500

BOOL

I、Q、

I、Q、M、 イネーブル入力

説明

M、D、L D、L、T、
C
ENO

Output

BOOL

I、Q、

I、Q、M、 イネーブル出力

M、D、L D、L
IN1

Input

浮動小数点

I、Q、

I、Q、M、 底の値

数

M、D、

D、L、P、

L、P、ま または定数
たは定数

656

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言
IN2

Input

データタイ
プ

メモリ領域

説明

S7-1200

S7-1500

整数、浮動

I、Q、

I、Q、M、 底の値が累乗される値

小数点数

M、D、

D、L、P、

L、P、ま または定数
たは定数
OUT

Output

浮動小数点

I、Q、

I、Q、M、 結果

数

M、D、

D、L、P

L、P
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

5($/

(;37

5($/

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、「累乗」命令が実行されます。オペランド「Tag_Value1」の値が、オペランド「Tag_Value2」の値で累乗されます。結果は出力「Tag_Result」に格納されます。この命令がエラーなしで実行された
場合、イネーブル出力 ENO のシグナル状態が「1」になり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

657

基本命令
3.2 FBD

3.2.6

ムーブ操作

3.2.6.1

MOVE: 値のムーブ

説明「値の移動」命令を使用し、IN 入力のオペランドの内容を OUT1 出力のオペランドに転送します。この転送は、常にアドレスの昇順方向に行われます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• IN パラメータのデータタイプが、OUT1 パラメータで指定されたデータタイプと一致しません。
次の表に、S7-1200 CPU シリーズで使用可能な転送方法をリストします。
転送元(IN)
BYTE

宛先(OUT1)
IEC チェックあり

IEC チェックなし

BYTE, WORD, DWORD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE ,TOD, CHAR

WORD

WORD, DWORD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD, CHAR

DWORD

DWORD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, REAL, TIME, DATE, TOD, CHAR

SINT

SINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

USINTUSINT, UINT, UDINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

INT

INT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

UINTUINT, UDINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

DINT

DINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

658

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
転送元(IN)UDINT

宛先(OUT1)
IEC チェックあり

IEC チェックなし

UDINT

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME, DATE, TOD

REAL

REAL

DWORD, REAL

LREAL

LREAL

LREAL

TIME

TIME

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TIME

DATE

DATE

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, DATE

TOD

TOD

BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, TOD

DTL

DTL

DTL

CHAR

CHAR

BYTE, WORD, DWORD、CHAR、文字列の文字 1)

WCHAR

WCHAR

BYTE、WORD、DWORD、CHAR、WCHAR、文字列の文字 1)

文字列の文字CHAR、WCHAR、文字列の文字

ARRAY2)

ARRAY

ARRAY

STRUCT

STRUCT

STRUCT

PLC データタ

PLC データタイプ(UDT)PLC データタイプ(UDT)IEC_TIMER

IEC_TIMER

文字列の文
字

1)

イプ(UDT)
IEC_TIMER

IEC_SCOUNTE IEC_SCOUNTER

IEC_SCOUNTERR
IEC_USCOUN

IEC_USCOUNTER

IEC_USCOUNTERTER
IEC_COUNTER IEC_COUNTER

IEC_COUNTER

IEC_UCOUNT

IEC_UCOUNTER

IEC_UCOUNTER

IEC_DCOUNTER

IEC_DCOUNTER

IEC_UDCOUN IEC_UDCOUNTER

IEC_UDCOUNTERER
IEC_DCOUNTERTERTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

659

基本命令
3.2 FBD
次の表に、S7-1500 CPU シリーズで使用可能な転送方法をリストします。
転送元(IN)
BYTE

宛先(OUT1)
IEC チェックあり

IEC チェックなし

BYTE, WORD, DWORD,

BYTE, WORD, DWORD, LWORD, SINT, USINT,

LWORD

INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE ,TOD, LTOD, CHAR

WORD

WORD, DWORD, LWORD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, S5TIME,
TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR

DWORD

DWORD, LWORD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, REAL,
TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR

LWORD

LWORD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LREAL,
TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR

SINT

SINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

USINT

USINT, UINT, UDINT,BYTE, WORD, DWORD, LWORD, SINT, USINT,ULINT

INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

INT

INT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

UINT

UINT, UDINT, ULINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD. LTOD

DINT

DINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

UDINT

UDINT, ULINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

LINT

LINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

660

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
転送元(IN)
ULINT

宛先(OUT1)
IEC チェックあり

IEC チェックなし

ULINT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME,LTIME, LDT, DATE, TOD, LTOD

REAL

REAL

DWORD, REAL

LREAL

LREAL

LWORD, LREAL

S5TIME

S5TIME

WORD, S5TIME

TIME

TIME

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TIME

LTIME

LTIME

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LTIME

DATE

DATE

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, DATE

DT

DT

DT

LDT

LDT

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LDT

TOD

TOD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, TOD

LTOD

LTOD

BYTE, WORD, DWORD, LWORD, SINT, USINT,
INT, UINT, DINT, UDINT, LINT, ULINT, LTOD

DTL

DTL

DTL

CHAR

CHAR

BYTE, WORD, DWORD, LWORD、CHAR、文字列の文字 1)

WCHAR

WCHAR

BYTE、WORD、DWORD、LWORD、CHAR、
WCHAR、文字列の文字 1)

文字列の文字CHAR、WCHAR、文字列の文字

ARRAY2)

ARRAY

ARRAY

STRUCT

STRUCT

STRUCT

COUNTER

COUNTER, WORD, INT

WORD, DWORD, INT, UINT, DINT, UDINTTIMER

TIMER, WORD, INT

WORD, DWORD, INT, UINT, DINT, UDINT

PLC データタ

PLC データタイプ(UDT)PLC データタイプ(UDT)

文字列の文
字

1)

イプ(UDT)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

661

基本命令
3.2 FBD
転送元(IN)

宛先(OUT1)
IEC チェックあり

IEC チェックなし

IEC_TIMER

IEC_TIMER

IEC_TIMER

IEC_LTIMER

IEC_LTIMER

IEC_LTIMER

IEC_SCOUNTE IEC_SCOUNTER

IEC_SCOUNTERR
IEC_USCOUN

IEC_USCOUNTER

IEC_USCOUNTERTER
IEC_COUNTER IEC_COUNTER

IEC_COUNTER

IEC_UCOUNT

IEC_UCOUNTER

IEC_UCOUNTER

IEC_DCOUNTER

IEC_DCOUNTER

IEC_UDCOUN IEC_UDCOUNTER

IEC_UDCOUNTERER
IEC_DCOUNTER
TER
IEC_LCOUNTE IEC_LCOUNTER

IEC_LCOUNTERR
IEC_ULCOUN

IEC_ULCOUNTER

IEC_ULCOUNTER

TER
1)「値のムーブ」命令を使用して、文字列の個々の文字を CHAR または WCHAR データタ

イプのオペランドに転送することもできます。転送する文字番号は、オペランド名の隣の角括弧内に指定します。たとえば、「MyString[2]」は「MyString」文字列の 2 番目の文字を転送します。データタイプ CHAR または WCHAR のオペランドを文字列の個々の文字に転送することも可能です。文字列の特定の文字を別の文字列の文字と置換することもできます。
2)

配列(ARRAY)全体の転送は、入力 IN および出力 OUT1 のオペランドの配列コンポーネン

トが同じデータタイプの場合のみ可能です。
IN 入力のデータタイプのビット長が OUT1 出力のデータタイプのビット長を超えると、転送元の値の上位ビットが失われます。入力 IN のデータタイプのビット長が出力 OUT1 の
データタイプのビット長を下回る場合、転送先の値の上位ビットはゼロで上書きされます。
初期状態では、命令ボックスには 1 出力が含まれています(OUT1)。出力数は拡張できます。
追加された出力は、ボックスで昇順に番号付けされます。この命令の実行中、入力 IN のオペランドの内容が、使用できるすべての出力に転送されます。構造体データタイプ(DTL、STRUCT、ARRAY)または文字列の文字が転送される場合、命令ボックスは拡張できません。

662

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD「ブロックの移動」(MOVE_BLK)および「割り込み不可能なブロックの移動」(UMOVE_BLK)命令を使用して、ARRAY データタイプのオペランドを移動することもできます。データタ
イプ STRING または WSTRING のオペランドは、「文字列のムーブ」(S_MOVE)を使用してコピーすることができます。

パラメータ
次の表に、「値の移動」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

S7-1500
D、L、T、 入力
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

D、L

出力

663

基本命令
3.2 FBD
パラメータ 宣言

データタイプS7-1200

IN

Input

S7-1500

メモリ領域
S7-1200

説明S7-1500

ビット列、 ビット列、 I、Q、M、 I、Q、M、 移動先アド
整数、浮動 整数、浮動 D、L、ま

D、L、ま

レスの上書

小数点数、 小数点数、 たは定数

たは定数

きに使用す

タイマ、日 タイマ、日るエレメン

付と時刻、 付と時刻、

ト。

CHAR、

CHAR、

WCHAR、

WCHAR、

STRUCT、

STRUCT、

ARRAY、

ARRAY、

IEC データ TIMER、タイプ、

COUNTERPLC データ 、IEC デー
タイプ

タタイプ、

(UDT)

PLC データ
タイプ
(UDT)

OUT1

Output

ビット列、 ビット列、 I、Q、M、 I、Q、M、 宛先アドレ
整数、浮動 整数、浮動 D、LD、Lス

小数点数、 小数点数、タイマ、日 タイマ、日
付と時刻、 付と時刻、
CHAR、

CHAR、

WCHAR、

WCHAR、

STRUCT、

STRUCT、

ARRAY、

ARRAY、

IEC データ TIMER、タイプ、

COUNTERPLC データ 、IEC デー
タイプ

タタイプ、

(UDT)

PLC データタイプ(UDT)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

664

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
029(
ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0011 1111 1010 1111

OUT1

TagOut_Value

0011 1111 1010 1111

「TagIn」オペランドがシグナル状態 TRUE を返す場合、この命令が実行されます。この命令
は、「TagIn_Value」オペランドの内容を「TagOut_Value」オペランドに移動します。この命令がエラーなしで実行された場合、「ENO」および「TagOut」イネーブル出力がシグナル
状態 TRUE にセットされます。
注記
MOVE 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照してく
ださい。:
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

下記も参照
MOVE_BLK: ブロックムーブ (ページ 678)
UMOVE_BLK: 割り込み不可能なブロックムーブ (ページ 687)
S_MOVE: 文字列移動 (ページ 1876)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

665

基本命令
3.2 FBD

3.2.6.2

Deserialize:逆シリアル化

説明「逆シリアル化」命令を使用して、PLC データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>のシーケンシャル表示を逆変換し、その内容全体を表示することができます。
PLC データタイプ(UDT)、STRUCT、または<データタイプ>配列のシーケンシャル表示が存在するメモリ領域のデータタイプは BYTE 配列または CHAR 配列であり、バージョン 1.0 の
標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたメモリ領域も許可されます。標準メモリ領域の容量は 64 KB です。変換の前に、十分なメモリ領域が存在することを確認してください。メモリ領域への入力が命令「シリアル化」を使用して行われ、FILL バイトが挿入された可能性がある場合、それらの変換は有効なものとは見なされません。
ARRAY の下限値を「0」で定義することを推奨します。これによって、ARRAY 内のインデックスが POS パラメータの値に対応するためです(たとえば、ARRAY[0] = POS 0)。下記の説明と例は、これに基づいて作成されました。
この命令では、変換されたデータの複数のシーケンシャル表示をそれらの元の状態に、順を追って変換し直すことができます。
PLC データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>の単一のシーケンシャル表示のみを変換して元に戻す場合は、直接に命令「TRCV:通信接続経由のデータ受信」
を指示することもできます。

メモリ領域のサイズ
これらの配置ルールに従うと、最適化されたメモリ領域内のシンプルな構造体は Filling バ
イトを含みません。これによって、最適化されたメモリ領域内の構造体は、標準メモリ領域内の構造体よりサイズが小さくなります。構造体配列、およびネストされた構造体には、FILLER バイトが含まれます。複合構造体がより多くの容量を必要とするメモリ領域に関する一般的なルールは存在しません。
S7-1500 シリーズの CPU への適用事項:
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、BOOL の
長さは 1 バイトです。このため、大部分がデータタイプ BOOL から構成される構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが大きい可能性

666

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDがあります。BOOL データタイプの割合が低い複合構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが小さくなっています。
注記
CPU S7-1200 での複数の構造体のシリアル化
CPU S7-1200 のバッファ内で複数の構造体をシリアル化し、それら(制御システムや CPU
S7-1500 など)と通信する場合は、戻り値(POS パラメータのインデックス)が偶数であるかをチェックする必要があります。偶数でない場合は、1 番目の構造体が FILLER バイトで埋められていないため、2 番目の構造体をシリアル化する前に戻り値を 1 インクリメントする必要があります。
例:
1 つの DWORD および 1 つの BYTE で構成される構造体
次にシリアル化されているバッファ内の構造体の開始アドレスは 5 です。開始アドレスが偶数になるように、1 を追加します。

最適化されたメモリ領域
S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および S7-1500 シ
リーズの CPU でファームウェアバージョン 2.0 以降の場合、大きい構造体を逆シリアル化するために、アクセスが最適化されたシーケンシャル表示用のメモリ領域を宣言することができます。標準メモリ領域に関しては、シーケンシャル表示の内容は変わらないままです。ARRAY のバイトに対してはシンボルアクセスのみが可能です。

パラメータ
次の表に、「逆シリアル化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、または定数
ENO

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL

I、Q、M、D、L イネーブル出力

667

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

SRC_ARRAY Input

ARRAY[*] of

I、Q、D、FB の 逆シリアル化されるデー

BYTE

ブロックインタ タストリームが保存され

1)

または
CHAR 配列ーフェース(セク る BYTE 配列またはション Input、CHAR 配列です。

Output、S7-1500:

Static、およびパフォーマンスを最適化

Temp を使用可
能)。

InOut

ABLE

するには、パラメータに
VARIANT ポインタを付加

I/O データなし
DEST_VARI

説明

しないでください。

すべてのデータ I、Q、D、FB の 逆シリアル化されるデータイプ

ブロックインタ タが書き込まれるタグ。
ーフェース

S7-1500:

I/O データなし

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

POS

InOut

DINT

I、Q、M、D、L POS パラメータのオペラ
ンドには、変換済みカス
タマデータで占有されるバイト数に基づく最初のバイトのインデックスが格納されます。POS パラ
メータは、ゼロベースで計算されます。

RET_VAL1)

Output

INT

I、Q、M、D、L エラー情報

S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および S7-1500

シリーズの CPU でファームウェアバージョン 2.0 以降の場合に可能です。

668

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

80B0

SRC_ARRAY パラメータと DEST_VARIABLE パラメータのためのメモリ領域がオーバーラップしています。

8136

SRC_ARRAY パラメータのタグは、標準アクセスのブロック内には存在しませ
ん。

8150

SRC_ARRAY パラメータの VARIANT データタイプは 0 ポインタを含みます。

8151

SRC_ARRAY パラメータに有効なリファレンスがありません

8153

SRC_ARRAY パラメータのメモリの空き領域が不足しています。

8154

SRC_ARRAY パラメータのデータタイプが無効です

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_VARIABLE パラメータに有効なリファレンスがありません

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)8136

SRC_ARRAY パラメータのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:「逆シリアル化」命令 (バージョン 2.1)のパフォーマンスを向上するため、SRC_ARRAY お
よび DEST_VARIABLE パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

669

基本命令
3.2 FBD
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

FB または FC のブロックイ
ンターフェースの[入力]セクションで。

BufferPos

DINTFB または FC のブロックイ

Error

INT

ンターフェースの[一時]セク

Label

STRING[4]ションで。

次の表に、PLC データタイプの宣言を示します。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]Client次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

TargetClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

Buffer670

Bill

INT の配列[0..10]

Field

バイトの配列[0..294]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:
029(

'HVHULDOL]H

(1

(12

,1

287

(12

(1
%XIIHU3RV

ಯ%XIIHUಯ)LHOG
%XIIHU3RV

5(7B9$/

65&B$55$<'(67B9$5,$%/(

326

(UURUಯ7DUJHWಯ&OLHQW「値のムーブ」命令は、値「0」を#BufferPos オペランドへ移動します。「逆シリアル化」命
令は、「Buffer」タグのカスタマデータのシーケンシャル表示を逆シリアル化し、「Target」
タグに書き込みます。#BufferPos オペランドには、変換済みカスタマデータで占有されるバイト数に基づく最初のバイトのインデックスが格納されます。
ネットワーク 2:'HVHULDOL]H
ಯ%XIIHUಯ
)LHOG
%XIIHU3RV(12(1
65&B$55$<326

5(7B9$/

(UURU'(67B9$5,$%/(

/DEHO

675,1*DUWL
/DEHO'HVHULDOL]H,1
,1
ಯ%XIIHUಯ)LHOG
%XIIHU3RV675,1*
5HFK
/DEHO(12(1

5(7B9$/

65&B$55$<'(67B9$5,$%/(

326'HVHULDOL]H

,1
,1

(12

(1
ಯ%XIIHUಯ)LHOG
%XIIHU3RV

65&B$55$<326

5(7B9$/'(67B9$5,$%/(「逆シリアル化」命令は、「Buffer」タグの、カスタマデータの後にシーケンシャル表示で保存されたセパレータシートのシーケンシャル表示を逆シリアル化し、これらの文字を#Label オペランドに書き込みます。これらの文字は、比較命令「arti」および「Bill」を使用して比較されます。「arti」用の比較が TRUE の場合、これらの文字は、逆シリアル化され、「Target」タグに書き込まれた製品データです。「Bill」用の比較が TRUE の場合、これ
らの文字は、逆シリアル化され、「Target」タグに書き込まれた課金データです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

671

(UURUಯ7DUJHWಯ%LOO>'HOLY基本命令
3.2 FBD

3.2.6.3

Serialize:シリアル化:

説明「シリアル化」命令を使用して、データタイプの構造体の部分を失うことなく、複数の PLC
データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>を 1 つのシーケンシャル
表示に変換することができます。
この命令を使用して、ユーザプログラムの複数の構造体データ項目を一時的にバッファ(グローバルデータブロックを推奨)に保存し、別の CPU に送信します。変換済みデータを格納するメモリ領域のデータタイプは BYTE 配列または CHAR 配列、かつバージョン 1.0 の標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたデータも許可されます。ソースデータ領域の FILLER データは、ターゲット配列内では未定義です。これらは、データ領域の FILLER バイトまたは FILLER ビット(たとえば、ARRAY、STRUCT、または PLC データタイプ(UDT))、または現在使用中でない文字列の文字とすることができます。
標準メモリ領域の容量は 64 KB です。DEST_ARRAY パラメータのオペランドが標準メモリ
領域内に存在する場合、標準メモリ領域用のルールに従って、64 KB より大きい構造体はシリアル化できません。
ARRAY の下限値を「0」で定義することを推奨します。これによって、ARRAY 内のインデックスが POS パラメータの値に対応するためです(たとえば、ARRAY[0] = POS 0)。下記の説明と例は、これに基づいて作成されました。
POS パラメータのオペランドには、変換済みデータによって使用されるバイト数に関する情報が収納されています。
単一の PLC データタイプ(UDT)、STRUCT、または ARRAY of <データタイプ>を送信する場
合、直接に命令「TSEND:通信接続経由のデータ送信」を呼び出すことができます。
注記
構造体の比較
構造体を比較するには、最初に構造体をシリアル化する必要があります。代わりに、「CMP」命令を使用します。
追加情報は、セクション「比較演算子」を参照してください。

672

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

メモリ領域のサイズ
これらの配置ルールに従うと、最適化されたメモリ領域内のシンプルな構造体は Filling バ
イトを含みません。これによって、最適化されたメモリ領域内の構造体は、標準メモリ領域内の構造体よりサイズが小さくなります。構造体配列、およびネストされた構造体には、FILLER バイトが含まれます。複合構造体がより多くの容量を必要とするメモリ領域に関する一般的なルールは存在しません。
S7-1500 シリーズの CPU への適用事項:
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、データ
タイプ BOOL の長さは以降のデータタイプによって異なります。たとえば BYTE が続く場合
は、データタイプ BOOL の長さは 1 バイトとなります。たとえば WORD が続く場合は、データタイプ BOOL の長さは 2 バイトとなります。このため、大部分がデータタイプ BOOLから構成される構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが大きい可能性があります。BOOL データタイプの割合が低い複合構造体は、標準メモリ領域の場合より最適化されたメモリ領域の場合のほうがサイズが小さくなっています。
このため、シリアル化を行うソースデータ領域は、大きなデータタイプで開始し、Boolean
エレメントで終了することを推奨します。これにより、FILLER ビットを大幅に削減できます。
注記
CPU S7-1200 での複数の構造体のシリアル化
CPU S7-1200 のバッファ内で複数の構造体をシリアル化し、それら(制御システムや CPU
S7-1500 など)と通信する場合は、戻り値(POS パラメータのインデックス)が偶数であるかをチェックする必要があります。偶数でない場合は、1 番目の構造体が FILLER バイトで埋められていないため、2 番目の構造体をシリアル化する前に戻り値を 1 インクリメントする必要があります。
例:
1 つの DWORD および 1 つの BYTE で構成される構造体
次にシリアル化されているバッファ内の構造体の開始アドレスは 5 です。開始アドレスが偶数になるように、1 を追加します。

最適化されたメモリ領域
S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および S7-1500 シ
リーズの CPU でファームウェアバージョン 2.0 以降の場合、大きい構造体をシリアル化するために、アクセスが最適化されたメモリ領域を宣言することができます。標準メモリ領域に関しては、シーケンシャル表示は変わらないままです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

673

基本命令
3.2 FBD

パラメータ
次の表に、「シリアル化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、または定数
ENO

OutputBOOL

SRC_VARIA

Input

すべてのデータ D、FB のブロッ シリアル化されるタグ。

BLE

タイプ

I、Q、M、D、L イネーブル出力
クインターフェ S7-1500:
ース、I/O デー
パフォーマンスを最適化
タなし
するには、パラメータに
VARIANT ポインタを付加しないでください。

DEST_ARRA InOut

ARRAY of BYTE

D、FB のブロッ 生成されたデータストリ

Yまたは ARRAY

クインターフェ ームが格納される配列。

of CHARース(セクション S7-1500:[入力]、[出力]、[Static]、
および[一時]が可能です。)

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

I/O データなし
POS

InOut

DINT

I、Q、M、D、L POS パラメータのオペラ
ンドには、変換済みカス
タマデータが占有する合計バイト数に基づく最初のバイトのインデックスが格納されます。POS パ
ラメータは、ゼロベースで計算されます。

RET_VAL674

Output

INT

I、Q、M、D、L エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

80B0

SRC_VARIABLE パラメータと DEST_ARRAY パラメータのためのメモリ領域がオーバーラップしています。

8150

SRC_VARIABLE パラメータの VARIANT データタイプは 0 ポインタを含みます。

8151

SRC_VARIABLE パラメータに有効なリファレンスがありません

8236

SRC_ARRAY パラメータのタグは、標準アクセスのブロック内には存在しませ
ん。

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました

8251

DEST_ARRAY パラメータに有効なリファレンスがありません

8253

パラメータ DEST_ARRAY のタグは、パラメータ SRC_VARIABLE のタグの内容に対して十分なメモリスペースを提供しません。パラメータ POS のタグの入力値により、使用可能なメモリスペースが減少します。パラメータ POS の入力値により、パラメータ DEST_ARRAY のタグ内での開始位置が決定します。

8254

DEST_ARRAY パラメータの無効なデータタイプ

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)
8236

DEST_ARRAY パラメータのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

675

基本命令
3.2 FBD「シリアル化」命令(バージョン 2.1)のパフォーマンスを向上するため、SRC_VARIABLE お
よび DEST_ARRAY パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の例で、命令がどのように動作するかを示します。
ネットワーク 1:
029(



6HULDOL]H

(1

(12

,1

287

(12

(1
%XIIHU3RVಯ6RXUFHಯ&OLHQW
%XIIHU3RV

5(7B9$/

65&B9$5,$%/('(67B$55$<

326

(UURU
ಯ%XIIHUಯ)LHOG「値のムーブ」命令は、値「0」を#BufferPos オペランドへ移動します。「シリアル化」命令
は、「Source」タグのカスタマデータをシリアル化し、シーケンシャル表示を「Buffer」タ
グに書き込みます。"Buffer".Field オペランドの次の書き込まれていないバイトのインデッ
クスが、#BufferPos オペランドに保存されます。
ネットワーク 2:
6B029(ಭDUWLಫ

(1

(12

,1

287

6HULDOL]H(12(1
/DEHO

/DEHO
%XIIHU3RV

65&B9$5,$%/(
326

5(7B9$/'(67B$55$<

(UURU
ಯ%XIIHUಯ)LHOG

後でのシーケンシャル表示の逆シリアル化を容易にするために、その時点では、一種のセパレータシートが挿入されます。「文字列のムーブ」命令は、「arti」文字を#Label オペラ
ンドに移動します。「シリアル化」命令は、これらの文字を「Buffer」タグのカスタマデー
タの後に書き込みます。これに応じて、#BufferPos オペランドの値がインクリメントされます。
ネットワーク 3:

676

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
6HULDOL]H(12(1
ಯ6RXUFHಯ$UWLFOH>'HOLYHU3RV@
%XIIHU3RV

5(7B9$/

65&B9$5,$%/('(67B$55$<

326

(UURU
ಯ%XIIHUಯ)LHOG「シリアル化」命令は、「Source」タグの特定の製品データをシリアル化し(ランタイム時に計算されます)、シーケンシャル表示で「Buffer」タグの「arti」文字の後に書き込みます。
次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

ブロックインターフェースの「入力」セクションで宣言

BufferPos

DINT

ブロックインターフェースの「一時」セクションで宣言

Error

INT

ブロックインターフェースの「一時」セクションで宣言

Label

STRING[4]ブロックインターフェースの「一時」セクションで宣言

次の表に、PLC データタイプの宣言を示します。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]ClientTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

677

基本命令
3.2 FBD
次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

SourceClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

Buffer

3.2.6.4

Field

バイトの配列[0..294]

MOVE_BLK: ブロックムーブ

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。ターゲット範囲に移動するエレメントの数は、COUNT パラ
メータで指定します。移動するエレメントの幅は、入力 IN のエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 IN または出力 OUT で使用可能のデータよりも多くのデータが移動された。
ARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、定義された n 個のエレメント(n = パラメータ COUNT の値によって決まります)の内容をソース範囲からターゲット範囲へコピーします(指定されたインデックスから始
めて)。

678

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「ブロックの移動」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

S7-1500
D、L、T、 入力
C

ENO
IN

1)

Output
Input

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

D、L

出力

2 進数、整 2 進数、整 D、L

D、L

コピーされ

数、浮動小 数、浮動小

るソース領

数点数、タ 数点数、タ

域の最初の

イマ、

イマ、

エレメント

DATE、

DATE、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD

TOD、
LTOD

COUNT

Input

USINT、

USINT、

I、Q、M、 I、Q、M、 ソース範囲

UINT、

UINT、

D、L、P、 D、L、P、 からターゲ

UDINT

UDINT、

または定数 または定数 ット範囲に

ULINT

コピーする
エレメント
の数

OUT 1)

Output2 進数、整 2 進数、整 D、L

D、L

ソース範囲

数、浮動小 数、浮動小の内容がコ

数点数、タ 数点数、タ

ピーされて

イマ、

イマ、

いるターゲ

DATE、

DATE、

ット範囲の

CHAR、

CHAR、

最初のエレ

WCHAR、

WCHAR、

メント

TOD

TOD、
LTOD

1)

指定されたデータタイプは、ARRAY 構造体のエレメントとしてしか使用できません。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

679

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

029(B%/.
(1

DBDUUD\>@,1

ಯ7DJB&RXQWಯ

&2817 (12287

EBDUUD\>@ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY [0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY [0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エ
レメントを選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピ

680

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDーします。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態
が「1」になり、「TagOut」出力がセットされます。
注記
MOVE_BLK 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照してください。:
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.2.6.5

MOVE_BLK_VARIANT: ブロックムーブ

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。配列全体または配列のエレメントを同じデータタイプの別の配列にコピーすることができます。ソースおよびターゲット ARRAY のサイズ(エレメント数)は異なる場合があります。配列内の複数エレメントまたは単一エレメントをコピーすることができます。
コピーするエレメント数は、選択したソース範囲またはターゲット範囲を超えてはいけま
せん。
ブロックの作成中にこの命令を使用する場合、VARIANT ごとにソースおよびターゲットが転送されるため、ARRAY はまだ既知である必要はありません。
SRC_INDEX および DEST_INDEX パラメータでのカウントは、配列の後の宣言に関係なく、常に下限値「0」から開始します。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• コピーされるデータが使用可能なデータよりも多いこと。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

681

基本命令
3.2 FBD

パラメータ
次の表に、「ブロックの移動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、または定数
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

SRC

Input 2)

VARIANT (配列L (ブロックイン コピー元のソースブロッ

または個々の配 ターフェースの ク
列エレメントを 「Input」、
ポイントする)、「InOut」、およ<Data_type>のび「Temp」セ

配列

クション内で宣
言可能。)

COUNT

Input

UDINT

I、Q、M、D、コピーされるエレメント

L、または定数数
ARRAY がパラメータ SRCまたはパラメータ DESTで指定されていない場合
は、値「1」をパラメー
タ COUNT に割り当てます。

682

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

SRC_INDEX Input

DINT

I、Q、M、D、コピーする最初のエレメ

L、または定数

ントを定義します:• SRC_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ SRC で指定されると、パラメ
ータ SRC_INDEX の整数はコピー元のソース
領域内の最初のエレメ
ントを指定します。宣
言された配列の制限値には関係ありません。
• ARRAY がパラメータ
SRC で指定されない
か、または配列の 1 つの単一エレメントのみが指定された場合、パラメータ SRC_INDEXに値「0」を割り当てます。

DEST_INDE

Input

X

DINT

I、Q、M、D、

宛先メモリ領域の開始をL、または定数

定義します:• DEST_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ DEST で指定されると、パラメ
ータ DEST_INDEX の整数が、コピー先のターゲット範囲内の最初のエレメントを指定します。宣言された配列の制限値には関係ありません。
• ARRAY が DEST パラメータで指定されていな
い場合は、
DEST_INDEX パラメー
タに値「0」を割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

683

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

DEST

VARIANT

L (ブロックイン ソースブロックの内容がOutput 1)

説明

ターフェースの コピーされる宛先領域。
「Input」、「InOut」、および「Temp」セクション内で宣言可能。)
RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

1) データがタグに流れるため、DEST パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
2) SRC パラメータでは、データタイプ BOOL および ARRAY of BOOL は許可されません。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

データタイプが一致していません。ARRAY of Struct の代わりに、PLC データ
タイプ(UDT)の ARRAY を使用してください。

684

8151

SRC パラメータにアクセスできません。

8152

SRC パラメータのオペランドが入力されていません。

8153

SRC パラメータのコード生成エラー

8154

SRC パラメータのオペランドのデータタイプが BOOL です。

8281

COUNT パラメータの値が無効です

8382

SRC_INDEX パラメータの値が、ゼロ未満です。

8383

SRC_INDEX の値が、ARRAY の上限値外です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
エラーコ
ード*

説明

(W#16#..
.)
8482

DEST_INDEX パラメータの値が、ARRAY 制限値外です。

8483

DEST パラメータがポイントする ARRAY が、コピーされるデータに対して小さすぎます。

8534

DEST パラメータが書き込み保護されています

8551

DEST パラメータにアクセスできません。

8552

DEST パラメータのオペランドが入力されていません。

8553

DEST パラメータのコード生成エラー

8554

DEST パラメータのオペランドのデータタイプが BOOL です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
029(B%/.B9$5,$17
ಯ7DJ,Qಯ

(16UF)LHOG

65&

ಯ7DJB&RXQWಯ

&2817

ಯ7DJB6UFB,QGH[ಯ65&B,1'(;

ಯ7DJB'HVWB,QGH[ಯ'(67B,1'(;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ಯ7DJ2XWಯ

(12

5(7B9$/'(67

ಯ7DJB5HVXOWಯ'HVW)LHOG

685

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

SRC

Input

ローカルオペランド#SrcField#SrcField は、ブロックのプログラミング
時にはまだ不明であった PLC データタイ
プを使用します。
(ARRAY[0..10] of「MOVE_UDT」)
COUNT

Input

Tag_Count2

SRC_INDEX

Input

Tag_Src_Index

3

DEST_INDEX

Input

Tag_Dest_Index

3

DEST

InOut

#DestField

ローカルオペランド#DestField は、ブロックのプログラミン
グ時にはまだ不明であった PLC データタ
イプを使用します。
(ARRAY[10..20] of「MOVE_UDT」)「TagIn」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。ARRAY[0..10] of MOVE_UDT の 4 番目のエレメントから始めて、2 つのエレメントが、ソース範囲
からターゲット範囲へ移動されます。コピーは、4 番目のエレメントから始めて、ARRAY[10..20] of MOVE_UDT に貼り付けられます。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。
注記
MOVE_BLK_VARIANT 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照してください。
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

686

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

下記も参照
VariantGet:VARIANT タグ値の読み出し (ページ 739)

3.2.6.6

UMOVE_BLK: 割り込み不可能なブロックムーブ

説明「割り込み不可能なブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。この命令に割り込みをかけることはできません。ターゲット範囲に移動するエレメントの数は、COUNT パラメータで指定します。移動するエレメントの幅は、入力 IN のエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込みなしブロック転送」命令の実行中には CPU の割
り込み応答時間が長くなります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 IN または出力 OUT で使用可能のデータよりも多くのデータが移動された。
ARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、定義された n 個のエレメント(n = パラメータ COUNT の値によって決まります)の内容をソース範囲からターゲット範囲へコピーします(指定されたインデックスから始
めて)。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動します。この場合、CPU 固有の制限に注意してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

687

基本命令
3.2 FBD

パラメータ
次の表に、「割り込みなしブロック転送」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

S7-1500
D、L、T、 入力
C

ENO
IN

1)

Output
Input

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

D、L

出力

2 進数、整 2 進数、整 D、L

D、L

コピーされ

数、浮動小 数、浮動小

るソース領

数点数、タ 数点数、タ

域の最初の

イマ、

イマ、

エレメント

DATE、

DATE、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD

TOD、
LTOD

COUNT

Input

USINT,USINT,

I、Q、M、 I、Q、M、 ソース範囲

UINT,

UINT,

D、L、P、 D、L、P、 からターゲ

UDINT

UDINT,

または定数 または定数 ット範囲に

ULINT

コピーする
エレメント
の数

OUT 1)

Output2 進数、整 2 進数、整 D、L

D、L

ソース範囲

数、浮動小 数、浮動小の内容がコ

数点数、タ 数点数、タ

ピーされて

イマ、

イマ、

いるターゲ

DATE、

DATE、

ット範囲の

CHAR、

CHAR、

最初のエレ

WCHAR、

WCHAR、

メント

TOD

TOD、
LTOD

1)

指定されたデータタイプは、Array 構造体のエレメントとしてしか使用できません。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

688

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
ಯ7DJ,QBಯ

8029(B%/.
(1

DBDUUD\>@,1

ಯ7DJB&RXQWಯ

&2817 (12287

EBDUUD\>@ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY[0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY[0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エ
レメントを選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

689

基本命令
3.2 FBD
みをかけることはできません。この命令がエラーなしで実行された場合、イネーブル出力
ENO のシグナル状態が「1」になり、「TagOut」出力がセットされます。
注記
UMOVE_BLK 命令に関する詳細は、Siemens Industry Online Support の次の項目を参照
してください。
STEP 7 (TIA ポータル)で、メモリ領域および構造化データを 1 つのデータブロックから別のデータブロックにコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.2.6.7

FILL_BLK: フィル命令

説明「フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。ターゲット範囲は、OUT 出力で指定されたアドレスから始めて埋められます。コ
ピー操作の繰り返し回数は、COUNT パラメータで指定します。この命令が実行されると、
入力 IN の値が、COUNT パラメータの値によって指定された回数だけ、ターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 変更される最大エレメント数が ARRAY または構造体内のエレメント数である場合。OUT
出力に存在するエレメントより多くのデータをコピーした場合、意図しない結果を生じ
ます。

690

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、ソース範囲の選択したエレメントの内容を読み取り、この内容を宛先に n 回(n = パラメータ COUNT の値によって決まります)コピーします(指定したインデックスから始めて)。

構造体のフィル処理
ARRAY のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数のエレメントを同一の値でフィルすることもできます。そのエレメントをユーザーがフィルする構造体は、同じ基本データタイプの個々のエレメントのみを含む必要があります。ただし、構造体自体
を別の構造体に組み込むことができます。

パラメータ
次の表に、「フィル」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

BOOL

BOOL

I、Q、

I、Q、M、 イネーブル入

M、D、L D、L、T、 力
C
ENO

Output

BOOL

BOOL

I、Q、

I、Q、M、 イネーブル出

M、D、L D、L
IN

Input

力

2 進数、整 2 進数、整 I、Q、

I、Q、M、 ターゲット範

数、浮動小 数、浮動小 M、D、

D、L、P、 囲をフィルす

数点数、タ 数点数、タ L、P、ま または定るために使用イマ、イマ、されるエレメ

DATE、

DATE、

TOD、

CHAR、

CHAR、

WCHAR、

WCHAR

TOD、

たは定数 数ント

LTOD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

691

基本命令
3.2 FBD
パラメータ 宣言
COUNT

OUT

データタイプ

Input

Output

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

USINT,USINT,

I、Q、

I、Q、M、 ムーブ操作の

UINT,

UINT,

M、D、

D、L、P、 繰り返し回数

UDINT

UDINT,

L、P、ま または定ULINT

たは定数 数

2 進数、整 2 進数、整 D、L

D、L

フィル処理が数、浮動小 数、浮動小開始されるタ

数点数、タ 数点数、ターゲット範囲

イマ、

イマ、

のアドレス

DATE、

DATE、

TOD、

CHAR、

CHAR、

WCHAR、

WCHAR

TOD、
LTOD

有効なデータタイプの追加情報については、「関連項目」を参照してください。

ARRAY を使用した例
次の例は、ARRAY をフィルするときにこの命令がどのように動作するかを示します。
ಯ7DJ,QBಯ
),//B%/.

ಯ7DJ,QBಯ

(1)LOO9DOXH

,1

287

7DUJHW$UHD>@ಯ7DJ2XWಯಯ7DJB&RXQWಯ

692&2817 (12

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。それは、データ
タイプ INT の 5 つのエレメントから構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、オペランド#FillValue の値を#TargetArea 出力タグに 3 回コピーします(最初のエレメントから始めて)。この命令がエラーなしで実行されると、「ENO」イネーブル出力の TagOut オペランドはシグナル状態「1」にセットされます。

構造体を使用した例
次の例は、構造体をフィルするときにこの命令がどのように動作するかを示します。
以下のエレメントを使用してグローバルデータブロックを作成:
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRUCT693

基本命令
3.2 FBD
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

以下のプログラムコードを生成して、MyStruct1 タグをアドレス指定:),//B%/.
(1


,1



&2817

287

ಯ'DWDBEORFNBಯ
0\6WUXFW
0HPEHUB

(12

ಯ7DJ2XWಯ

以下のプログラムコードを生成して、MyStruct2 タグをアドレス指定:),//B%/.
(1


,1



&2817

287

ಯ'DWDBEORFNBಯ0\6WUXFW
6XE$UUD\>@1HVWHG6WUXFW
0HPEHUB

(12

ಯ7DJ2XWಯ

2 つのそれぞれの例で、IN パラメータの値 10 は、OUT パラメータのオペランドに 2 回コ
ピーされます(エレメント Member_2 から始めて)。すなわち、値 10 はエレメント
Member_2 および Member_3 へコピーされます。他の 2 つのエレメント Member_1 および Member_4 は変更されません。この命令がエラーなしで実行されると、TagOut オペラ
ンドがシグナル状態「1」にセットされます。

694

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.6.8

UFILL_BLK: 割り込み不可能なフィル命令

説明「割り込み不可フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。この命令に割り込みをかけることはできません。ターゲット範囲は、OUT 出力で指定されたアドレスから始めて埋められます。コピー操作の繰り返し回数は、
COUNT パラメータで指定します。この命令が実行されると、入力 IN の値が、COUNT パ
ラメータの値によって指定された回数だけ、ターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込み不可能なフィル」命令の実行中には、CPU のアラーム応答時間が長くなります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 変更される最大エレメント数が ARRAY または構造体内のエレメント数である場合。OUT
出力に存在するエレメントより多くのデータをコピーした場合、意図しない結果を生じます。
ARRAY of BOOL がコピーされると、ARRAY 構造体のバイト制限値を超えるまで、オーバー
フローのイネーブル出力 ENO が「1」にセットされます。COUNT 入力の値によって ARRAY
構造体のバイト制限値を超えた場合、ENO イネーブル出力が「0」にリセットされます。
注記
ARRAY の使用
この命令は、ソース範囲の選択したエレメントの内容を読み取り、この内容を宛先に n 回(n = パラメータ COUNT の値によって決まります)コピーします(指定したインデックスから始めて)。
「割り込み不可フィル」命令を使用して、最大 16 KB を移動します。この場合、CPU 固有の制限に注意してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

695

基本命令
3.2 FBD

構造体のフィル処理
ARRAY のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数のエレメントを同一の値でフィルすることもできます。そのエレメントをユーザーがフィルする構造体は、同じ基本データタイプの個々のエレメントのみを含む必要があります。ただし、構造体自体
を別の構造体に組み込むことができます。

パラメータ
次の表に、「割り込み不可能なフィル」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

S7-1500
D、L、T、 入力
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 イネーブル
D、L

IN

Input

D、L

出力

2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 ターゲット数、浮動小 数、浮動小 D、L、P、 D、L、P、 範囲をフィ
数点数、タ 数点数、タ または定数 または定数 ルするため
イマ、

イマ、

に使用され

DATE、

DATE、

るエレメン

CHAR、

CHAR、

ト

WCHAR、

WCHAR、

TOD

TOD、
LTOD

696

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言
COUNT

データタイプ

Input

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

USINT、

USINT、

I、Q、M、 I、Q、M、 ムーブ操作

UINT、

UINT、

D、L、P、 D、L、P、 の繰り返し

UDINT

UDINT、

または定数 または定数 回数

ULINT
OUT

Output2 進数、整 2 進数、整 D、L

D、L

フィル処理

数、浮動小 数、浮動小が開始され

数点数、タ 数点数、タ

るターゲッ

イマ、

イマ、

ト範囲のア

DATE、

DATE、

ドレス

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD

TOD、
LTOD

有効なデータタイプの追加情報については、「関連項目」を参照してください。

ARRAY を使用した例
次の例は、ARRAY をフィルするときにこの命令がどのように動作するかを示します。
ಯ7DJ,QBಯ8),//B%/.

ಯ7DJ,QBಯ

(1)LOO9DOXH

,1

287

7DUJHW$UHD>@ಯ7DJ2XWಯಯ7DJB&RXQWಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020&2817 (12

697

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。それは、データ
タイプ INT の 5 つのエレメントから構成されます。

オペランド「TagIn_1」および「TagIn_2」のシグナル状態が「1」の場合、命令が実行されます。この命令は、オペランド#FillValue の値を#TargetArea 出力タグに 3 回コピーします(最初のエレメントから始めて)。他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。この命令がエラーなしで実行されると、「ENO」イネーブル出力の TagOut オペランドはシグナル状態「1」にセットされます。

構造体を使用した例
次の例は、構造体をフィルするときにこの命令がどのように動作するかを示します。
以下のエレメントを使用してグローバルデータブロックを作成:
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

698

STRUCT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

以下のプログラムコードを生成して、MyStruct1 タグをアドレス指定:8),//B%/.
(1


,1



&2817

287

ಯ'DWDBEORFNBಯ
0\6WUXFW
0HPEHUB

(12

ಯ7DJ2XWಯ

以下のプログラムコードを生成して、MyStruct2 タグをアドレス指定:8),//B%/.
(1


,1



&2817

287

ಯ'DWDBEORFNBಯ0\6WUXFW
6XE$UUD\>@1HVWHG6WUXFW
0HPEHUB

(12

ಯ7DJ2XWಯ

2 つのそれぞれの例で、IN パラメータの値 10 は、OUT パラメータのオペランドに 2 回コ
ピーされます(エレメント Member_2 から始めて)。すなわち、値 10 はエレメント
Member_2 および Member_3 へコピーされます。他の 2 つのエレメント Member_1 および Member_4 は変更されません。この命令がエラーなしで実行されると、TagOut オペラ
ンドがシグナル状態「1」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

699

基本命令
3.2 FBD

3.2.6.9

SCATTER:ビットシーケンスを個々のビットに解析

説明「ビットシーケンスを個々のビットに解析」命令は、BYTE、WORD、DWORD、またはLWORD データタイプのタグを個々のビットに解析し、それらを BOOL 配列、匿名
STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。
注記
BOOL の多次元配列「ビットシーケンスを個々のビットに解析」命令では、多次元 BOOL 配列は使用できません。
注記
ARRAY、STRUCT、または PLC データタイプの長さ
ARRAY、匿名 STRUCT、または PLC データタイプは、ビットシーケンスで指定された数と同じ数のエレメントを持つ必要があります。
これは、たとえば、データタイプ BYTE の場合、この ARRAY、STRUCT、または PLC データ
タイプはちょうど 8 つのエレメントを持つ必要がある(WORD = 16、DWORD = 32、および
LWORD = 64)ことを示します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
この方法で、たとえば、ステータスワードを解析し、インデックスを使用して個々のビットのステータスの読み取り/変更を行うことができます。GATHER を使用して、これらのビットをもう 1 度ビットシーケンスに結合することができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ARRAY、STRUCT、または PLC データタイプが十分な BOOL エレメントを提供していない。

700

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L

力

BYTE, WORD, BYTE,

I、Q、M、解析されるビ

DWORD

D、L

ットシーケン

WORD,
DWORD,ス。

LWORD

値が I/O 領域
内、またはテクノロジーオ
ブジェクトのDB 内にあってはなりません。

OUT

Output

BOOL のBOOL のI、Q、M、個々のビットARRAY[*]、ARRAY[*]

D、Lが格納される

STRUCT、ま、ARRAY、

たは PLC デー STRUCT、

STRUCT、まタタイプ

または PLC

たは PLC デー*:8、16、

データタイ

タタイプ

32、またはプ

64 個のエレ*:8、16、メント

32、または 64 個のエレメント

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

701

基本命令
3.2 FBDARRAY を使用した例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceWord

WORD

EnableOut

BOOL

出力

DestinationArrayARRAY[0..15] of BOOL

次の例で、命令がどのように動作するかを示します。
6&$77(5:25'(QDEOH(1287

6RXUFH:RUG

,1

(12

'HVWLQDWLRQ$UUD\
(QDEOH2XW

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceWord

WORD (16 ビット)

OUT

DestinationArray

オペランド「DestinationArray」のデー
タタイプは ARRAY[0..15] of
BOOL です。それは 16 個のエレメントから構成されるため、解析される WORD と同じ大きさです。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。データタイプ WORD のオペランド#SourceWord が個々のビット(16)に解析され、#DestinationArray オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。

702

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

PLC データタイプ(UDT)での例
PLC データタイプ「myBits」の作成:

ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceWord

WORD

EnableOut

出力

DestinationUDT

BOOL「myBits」

次の例で、命令がどのように動作するかを示します。
6&$77(5:25'(QDEOH(1287

6RXUFH:RUG

,1

(12

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

'HVWLQDWLRQ8'7
(QDEOH2XW

703

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceWord

WORD (16 ビット)

OUT

DestinationUDT「DestinationUDT」オペラン
ドは PLC データタイプ(UDT)です。それは 16 個のエレメントから構成されるため、解析される WORD と同じ大きさです。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。データタイプ WORD の#SourceWord オペランドが個々のビット(16)に解析され、#DestinationArray オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。

704

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.6.10

SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析

説明「ビットシーケンス配列のエレメントを個々のビットに解析」命令は、BYTE、WORD、
DWORD、または LWORD 配列の 1 つ以上のエレメントを個々のビットに解析し、それらをBOOL 配列、匿名 STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。COUNT_IN パラメータで、ソース ARRAY のエレメントを解析するエレメント数を指定します。IN パラメータのソース ARRAY が、COUNT_IN パラメータで指定されたエレメ
ント数より多くのエレメントを持つ場合があります。BOOL 配列、匿名 STRUCT、またはPLC データタイプは、解析されたビットシーケンスのビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先メモリ領域がこれよりも大きいことがあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:IN パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。OUT パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。WORD 配列は、48の個別のビットに解析されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

705

基本命令
3.2 FBD
注記
ターゲット配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは、常に、BYTE、WORD、DWORD、またはLWORD の制限値から開始する必要があります。すなわち、インデックスは、ARRAY の下限値から開始して計算する必要があります。次の式は、この計算の原理として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例は、下記に説明します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
この方法で、たとえば、ステータスワードを解析し、インデックスを使用して個々のビットのステータスの読み取り/変更を行うことができます。GATHER を使用して、これらのビットをもう 1 度ビットシーケンスに結合することができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ソース ARRAY のエレメント数が、 COUNT_IN パラメータで指定されたエレメント数未満であること。
• 宛先 ARRAY のインデックスが、BYTE、WORD、DWORD、または LWORD の制限値から開始されないこと。この場合、結果は ARRAY of BOOL に書き込まれません。
• BOOL の ARRAY[*]、STRUCT、または PLC データタイプが、必要なエレメント数を提供しない場合。
– S7-1500-CPU:この場合、可能な限り多くのビット列が解析され、BOOL 配列、匿名
STRUCT、または PLC データタイプに書き込まれます。残りビットシーケンスは考慮の対象になりません。
– S7-1200-CPU:コピー手順はありません。

706

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれま
せん。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L力<ビットシー<ビットシ

I、Q、M、解析される<

ケンス>の

ーケンス>

D、L

ビットシーケARRAY[*]の

の

ンス>の

エレメント

ARRAY[*]ARRAY。

のエレメン

値が I/O 領域

ト内、またはテクノロジーオ
ブジェクトのDB 内にあってはなりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

707

基本命令
3.2 FBD
パラメータ
COUNT_IN

宣言

データタイプ

Input

メモリ領域

説明

S7-1200

S7-1500

USINT, UINT,

USINT,

I、Q、M、解析されるソ

UDINT

UINT,

D、L

ース配列のエUDINT,

レメント数の

ULINT

カウンタ。
値が I/O 領域
内、またはテクノロジーオ
ブジェクトのデータベース内にあってはなりません。

OUT

Output

BOOL のBOOL のI、Q、M、個々のビットARRAY[*]、ARRAY[*]

D、Lが格納される

STRUCT、ま、ARRAY、

たは PLC デー STRUCT、

STRUCT、まタタイプのエ または PLC

たは PLC デー

レメント

タタイプ

データタイ
プのエレメ
ント

命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayWord

ARRAY[0..5] of WORD

CounterInput

UDINT

EnableOut

BOOL

出力

DestinationArrayBool

ARRAY[0..95] of BOOL

次の例で、命令がどのように動作するかを示します。

708

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
6&$77(5B%/.
:25'
(QDEOH(1287

6RXUFH$UUD\:RUG>@

,1

(12

&RXQWHU,QSXW'HVWLQDWLRQ$UUD\%RRO>@(QDEOH2XW&2817B,1

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。
)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD すなわち
48 ビットが解析されます。
すなわち、少なくとも 48 ビットが宛先 ARRAY で使用できることが必要です。)

OUT

DestinationArrayBool[0]オペランド「DestinationArrayBool」のデータタイプは
ARRAY[0..95] of BOOL です。すなわち、それは 96 個の BOOL エレメントを提供します。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayWord オペランドの 3 番目、4 番目、および 5 番目の WORD
がその個々のビット(48)に解析され、1 番目のエレメントの場合と同様に、#DestinationArrayBool オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナ
ル状態「0」を返します。

下限値が「-2」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayWord

ARRAY[0..5] of WORD

CounterInput

UDINT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

709

基本命令
3.2 FBD
タグ

セクション

データタイプ

EnableOut

出力

BOOL

DestinationArrayBool

ARRAY[-2..93] of BOOL

次の例で、命令がどのように動作するかを示します。
6&$77(5B%/.
:25'
(QDEOH(1287

6RXUFH$UUD\:RUG>@

,1

(12

&RXQWHU,QSXW'HVWLQDWLRQ$UUD\%RRO>@(QDEOH2XW&2817B,1

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。
)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD すなわち
48 ビットが解析されます。
すなわち、少なくとも 48 ビットが宛先 ARRAY で使用できることが必要です。)

OUT

DestinationArrayBool[14]オペランド「DestinationArrayBool」のデータタイプは
ARRAY[-2..93] of BOOL です。すなわち、それは 96 個の BOOL エレメントを提供します。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayWord オペランドの 3 番目、4 番目、および 5 番目の WORD
がその個々のビット(48)に解析され、16 番目のエレメントの場合と同様に、#DestinationArrayBool オペランドの個々のエレメントに割り当てられます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナ
ル状態「0」を返します。残りの 32 ビットは書き込まれません。

710

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.6.11

GATHER:個々のビットをビットシーケンスに結合

説明「個々のビットをビットシーケンスに結合」命令は、BOOL 配列、匿名 STRUCT、またはBoolean エレメントのみの PLC データタイプのビットをビットシーケンスに結合します。
このビットシーケンスは、データタイプ BYTE、WORD、DWORD、または LWORD のタグに保存されます。
注記
BOOL の多次元配列「個々のビットをビットシーケンスに結合」命令では、多次元 BOOL 配列は使用できません。
注記
ARRAY、STRUCT、または PLC データタイプの長さ
ARRAY、STRUCT、または PLC データタイプは、ビットシーケンスで指定された数と同じ数のエレメントを持つ必要があります。
これは、たとえば、データタイプ BYTE の場合、この ARRAY、匿名 STRUCT、または PLC
データタイプはちょうど 8 つのエレメントを持つ必要がある(WORD = 16、DWORD = 32、および LWORD = 64)ことを示します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ARRAY、匿名 STRUCT、または PLC データタイプ(UDT)の BOOL エレメントが、ビットシーケンスで指定された数よりも少ない、または多い。この場合、BOOL エレメントは転送されません。
• 使用可能なビット数が、必要なビット数よりも少ない。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

711

基本命令
3.2 FBD

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L力

BOOL のBOOL のI、Q、M、

ARRAY、

ARRAY[*]、ARRAY[*]

D、L

STRUCT、まSTRUCT、ま、たは PLC デー

たは PLC デー STRUCT、

タタイプ、ビタタイプ

または PLC

ットシーケン*:8、16、

データタイスに結合され32、またはプるビット。

64 個のエレ*:8、16、

値が I/O 領域

メント

32、また

内、またはテは 64 個のクノロジーオ

エレメント

ブジェクトのDB 内にあってはなりません。

OUT

Output

BYTE, WORD, BYTE,

I、Q、M、結合されたビ

DWORD

D、L

ットシーケン

WORD,
DWORD,

ス、タグ内に

LWORD

保存

命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

712

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDARRAY を使用した例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArray

BOOL 配列[0～15]

EnableOut

出力

DestinationWord

BOOL
WORD

次の例で、命令がどのように動作するかを示します。
*$7+(5:25'
(QDEOH(1287

6RXUFH$UUD\

,1

(12

'HVWLQDWLRQ:RUG
(QDEOH2XW

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArray

オペランド「SourceArray」のデータタイプは
ARRAY[0..15] of BOOL です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

DestinationWord

WORD (16 ビット)

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArray オペランドのビットが、WORD に結合されます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

713

基本命令
3.2 FBD

PLC データタイプ(UDT)での例
PLC データタイプ「myBits」の作成:

ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceUDT「myBits」

EnableOut

BOOL

出力

DestinationWord

WORD

次の例で、命令がどのように動作するかを示します。
*$7+(5:25'714

(QDEOH(1287

6RXUFH8'7

,1

(12

'HVWLQDWLRQ:RUG
(QDEOH2XW

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceUDT「SourceUDT」オペランドは
PLC データタイプ(UDT)です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

DestinationWord

WORD (16 ビット)

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceUDT オペランドのビットが、WORD に結合されます。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO で、シグナル状態「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

715

基本命令
3.2 FBD

3.2.6.12

GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合

説明「個々のビットをビットシーケンス配列のマルチエレメントに結合」命令は、BOOL 配列、
匿名 STRUCT、または Boolean エレメントのみの PLC データタイプを<ビットシーケンス>
配列の 1 つまたは複数のエレメントに結合します。COUNT_OUT パラメータでは、書き込
む宛先 ARRAY のエレメント数を指定します。このステップでは、必要な BOOL 配列、匿名
STRUCT、PLC データタイプのエレメント数も暗黙的に指定します。OUT パラメータの宛先
ARRAY が、COUNT_OUT パラメータで指定されたエレメント数より多くのエレメントを持つ場合があります。<ビットシーケンス>配列は、結合されるビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先 ARRAY のほうが大きい場合もあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:OUT パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。IN パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。BOOL 配列から、48 の個別のビットが結合されます。

716

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
注記
ソース配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは、常に、BYTE、WORD、DWORD、またはLWORD の制限値から開始する必要があります。すなわち、インデックスは、ARRAY の下限値から開始して計算する必要があります。次の式は、この計算の原理として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例は、下記に説明します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• ソース ARRAY のインデックスが、BYTE、WORD、DWORD、または LWORD の制限値から開始されないこと。この場合、結果は<ビットシーケンス>配列に書き込まれません。
• <ビットシーケンス>の ARRAY[*]が、必要なエレメント数を提供しない場合。
– S7-1500-CPU:この場合、可能な限り多くのビットシーケンスが結合され、<ビット
シーケンス>配列に書き込まれます。残りビットは考慮の対象になりません。
– S7-1200-CPU:コピー手順はありません。
注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

717

基本命令
3.2 FBD

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
EN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

イネーブル入D、L、または 力
定数
ENO
IN

Output
Input

BOOL

BOOL

I、Q、M、

イネーブル出D、L力

BOOL のBOOL のI、Q、M、ビットが結合ARRAY[*]、ARRAY[*]

D、Lされる BOOLSTRUCT、ま、配列、

たは PLC デー STRUCT、

STRUCT、まタタイプのエ または PLC

たは PLC デー

レメント

データタイ

タタイプ(ソ

プのエレメ

ース配列)

ント

値が I/O 領域
内、またはテクノロジーオ
ブジェクトのDB 内にあってはなりません。

718

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ
COUNT_OUT

宣言

データタイプ

Input

メモリ領域

説明

S7-1200

S7-1500

USINT, UINT,

USINT,

I、Q、M、記述されるタ

UDINT

UINT,

D、L

ーゲット

UDINT,ARRAY のエレ

ULINT

メント数のカウンタ。
値が I/O 領域
内、またはテクノロジーオ
ブジェクトのデータベース内にあってはなりません。

OUT

Output<ビットシー<ビットシ

I、Q、M、

ビットが保存

ケンス>の

ーケンス>

D、L

される<ビッARRAY[*]ののトシーケンスエレメント

ARRAY[*]>配列(宛先配

のエレメン

列)

ト
命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayBool

ARRAY[0..95] of BOOLCounterOutput

UDINT

EnableOut

出力

DestinationArrayWord

BOOL
ARRAY[0..5] of WORD

次の例で、命令がどのように動作するかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

719

基本命令
3.2 FBD*$7+(5B%/.
:25'
(QDEOH(1287

6RXUFH$UUD\%RRO>@

,1

(12

&RXQWHU2XWSXW'HVWLQDWLRQ$UUD\:RUG>@(QDEOH2XW&2817B287

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[0]オペランド「SourceArrayBool」のデー
タタイプは ARRAY[0..95] of
BOOL です。すなわち、それは、もう 1 度 WORD に結合できる 96 個の BOOL エレメ
ントを提供します。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD が書き込まれます。すなわち、48 ビ
ットがソース ARRAY で使用できることが必要です。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」のデータタイプは ARRAY[0..5]of WORD です。すなわち、6個の WORD エレメントが使用できます。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayBool オペランドの 1 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先 ARRAY の開始位置は、3 番目のエレメントです。すなわち、最初の 16 ビットが宛先配列の 3 番目のワードに、2 番目の
16 ビットが 4 番目のワードに、3 番目の 16 ビットが 5 番目のワードに書き込まれます。
この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イネーブル出力 ENO
で、シグナル状態「0」を返します。

720

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

下限値が「-2」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

有効

入力

BOOL

SourceArrayBool

ARRAY[-2..93] of BOOLCounterOutput

UDINT

EnableOut

BOOL

出力

DestinationArrayWord

ARRAY[0..5] of WORD

次の例で、命令がどのように動作するかを示します。
*$7+(5B%/.
:25'
(QDEOH(1287

6RXUFH$UUD\%RRO>@

,1

(12

&RXQWHU2XWSXWTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

'HVWLQDWLRQ$UUD\:RUG>@(QDEOH2XW&2817B287

721

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[14]オペランド「SourceArrayBool」のデー
タタイプは ARRAY[-2..93]
of BOOL です。開始位置が16 番目のエレメントであるため、再度ワードに結合できる 80 個の BOOL エレメン
トのみを使用できます。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD が書き込まれます。すなわち、48 ビ
ットがソース ARRAY で使用できることが必要です。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」のデータタイプは ARRAY[0..5]of WORD です。すなわち、6個の WORD エレメントが使用できます。

オペランド#Enable が、イネーブル入力 EN で、シグナル状態「1」を返すと、この命令が実行されます。#SourceArrayBool オペランドの 16 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先 ARRAY の開始位置は、3 番目のエレメントです。すなわち、ソース ARRAY の最初の 16 ビットは無視されます。2 番目の
16 ビットが宛先配列の 3 番目のワードに、3 番目の 16 ビットが 4 番目のワードに、4 番
目の 16 ビットが 5 番目のワードに書き込まれます。ソース ARRAY の残りの 64 ビットは考慮されません。この命令の実行中にエラーが発生すると、オペランド#EnableOut が、イ
ネーブル出力 ENO で、シグナル状態「0」を返します。

722

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.6.14

SWAP: スワップ

説明
「スワップ」命令を使用して、入力 IN のタグ内のバイトの順番を変更し、出力 OUT で結果を照会することができます。
次の図に、「スワップ」命令を使って DWORD データタイプオペランドのバイトを交換する方法を示します。


,1

 

 
 

 

 

 

 



 



 

 

 

 

 

 



 







 

 

 



 
 

 




287

 



 





 

 

 



 

 



 







 

 

 

 

 





パラメータ
次の表に、「スワップ」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

D、L

723

基本命令
3.2 FBD
パラメータ 宣言
IN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

WORD,

WORD,

I、Q、M、 I、Q、M、 バイトがス

DWORD

DWORD,

D、L、P、 D、L、P、 ワップされ

LWORD

または定数 または定数 るオペラン
ド

OUT

Output

WORD,

WORD,

I、Q、M、 I、Q、M、 結果

DWORD

DWORD,

D、L、P

D、L、P

LWORD
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

ಯ7DJ,Qಯಯ7DJ,QB9DOXHಯ

6:$3
:25'
287
(1

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

,1

(12

6

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0000 1111 0101 0101

OUT

TagOut_Value

0101 0101 0000 1111

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 バイトの整列が変更され、オペランド「TagOut_Value」に格納されます。

724

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.6.15

配列 DB

ReadFromArrayDB:ARRAY データブロックからの読み出し

説明
命令「ARRAY データブロックからの読み出し」は、インデックスが参照する ARRAY DB ブ
ロックタイプのデータブロックからエレメントを読み出し、そのエレメントの値をターゲット範囲に書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態 FALSE を返します。
• イネーブル入力 EN がシグナル状態 FALSE を返す場合。
• 命令の実行中にエラーが発生した場合。

パラメータ
次の表に、「ARRAY データブロックからの読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

DB

Input

DB_ANY

I、Q、M、D、L 読み出されるデータブロ
ック

INDEX

Input

DINT

I、Q、M、D、

読み出される DB のエレ

L、P、または定 メント。定数、グローバ
数

ルタグ、またはインデッ
クス値を指定できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

725

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

VALUE

VARIANT

L (ブロックイン 読み出されて出力される

Output 1)

説明

ターフェースの 値[一時]セクショ
ンでの宣言は可能ではありません。)
RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

1) データがタグに流れるため、VALUE パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、書き込み保護されているか、またはロードメモリ内に存在します。

726

8135

配列データブロックに無効な値が含まれます。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、ARRAY の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8452

コード生成エラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
エラーコ
ード*

説明

(W#16#..
.)
8453

エラーの 2 つの考えられる原因があります。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。
• 2 つのタグが、アクセスが最適化されたメモリ領域内に存在しません。メ
モリ領域アクセスタイプに関する追加情報は、AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
5HDG)URP$UUD\'%ಯ7DJ,QBಯ(1

ಯ$UUD\'%ಯ

'%



,1'(;

5(7B9$/
9$/8(

ಯ7DJ5HWB9DOಯ
ಯ7DUJHW)LHOGಯ ಯ7DJ2XWಯ

(12

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

「TagIn1」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。2 番目のエレメントが「ArrayDB」から読み出され、「TargetField」オペランドへ書き込まれます。
この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

727

基本命令
3.2 FBD

WriteToArrayDB:ARRAY データブロックへの書き込み

説明
命令「ARRAY データブロックへの書き込み」は、インデックスが参照するエレメントを、
ARRAY DB ブロックタイプのデータブロックへ書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態 FALSE を返します。
• イネーブル入力 EN がシグナル状態 FALSE を返す場合。
• 命令の実行中にエラーが発生した場合。

パラメータ
次の表に、「ARRAY データブロックへの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

DB

Input

DB_ANY

I、Q、M、D、L データが書き込まれるデ説明

ータブロック
INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグ、または
インデックス値を指定で
きます。

728

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

VALUE

VARIANT

L (ブロックイン 書き込まれる値

Input

説明

ターフェースの[一時]セクショ
ンでの宣言は可能ではありません。)
RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8134

データブロックが書き込み保護されています。

8135

データブロックが配列データブロックではありません。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、ARRAY の制限値外です。

8350

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8352

コード生成エラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

729

基本命令
3.2 FBD
エラーコ
ード*

説明

(W#16#..
.)
8353

エラーの 2 つの考えられる原因があります。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。
• 2 つのタグが、アクセスが最適化されたメモリ領域内に存在しません。メ
モリ領域アクセスタイプに関する追加情報は、AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
:ULWH7R$UUD\'%ಯ7DJ,QBಯ(1

ಯ$UUD\'%ಯ

'%



,1'(;

5(7B9$/

ಯ6RXUFH)LHOGಯ

9$/8(

(12

ಯ7DJ5HWB9DOಯ ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

「TagIn1」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
「SourceField」オペランドの値は、ARRAY DB の 2 番目のエレメントに書き込まれます。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。

730

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

ReadFromArrayDBL:ロードメモリの ARRAY データブロックからの読み出し
説明
命令「ロードメモリの ARRAY データブロックからの読み出し」は、インデックスが参照するエレメントを、ロードメモリの ARRAY DB ブロックタイプのデータブロックから読み出し、それをターゲット範囲に書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。この命令は、BUSY パラメータで信号立ち下がりエッジが検出された場合に終了します。1 プログラムサイクルの間、DONE
パラメータのシグナル状態が「1」になり、このサイクル内に、読み取られた値が VALUE
パラメータに出力されます。他のすべてのプログラムサイクルでは、VALUE パラメータの値は変更されません。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 命令の実行中にエラーが発生した場合。

パラメータ
次の表に、「ロードメモリの ARRAY データブロックからの読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

REQ

Input

BOOL

I、Q、M、D、

REQ =「1」:配列 DB の読

L、または定数

み出しから開始

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

731

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

DB 1)

DB_ANY

I、Q、M、D、L 読み出される ARRAY デー

Input

説明
タブロック。

INDEX

Input

DINT

I、Q、M、D、

読み出される DB のエレ

L、P、または定 メント。定数、グローバ
数

ルタグ、またはインデッ
クス値を指定できます。

VALUE 1)InOut

VARIANTD (グローバルデ 読み出されるワークメモ
ータブロックの リの DB へのポインタとエレメント)

書き込まれる値

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、[一時]セクショ

使用する必要がありませンでの宣言は可 ん。
能ではありません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ読み出し中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)732[最適化]ブロックプロパティを使用して、データブロックを作成する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、ARRAY の制限値外です。

8750

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー8753

パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
命令「READ_DBL」および「WRIT_DBL」によってトリガされるエラーコードについては、命令の対応する説明部分を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

733

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ5HDG)URP$UUD\'%/B'%ಯ
5HDG)URP$UUD\'%/ಯ7DJ,QBಯ

(1

ಯ7DJ5HTಯ

5(4

%86<

ಯ7DJ%XV\ಯಯ$UUD\'%ಯ

'%

'21(

ಯ7DJ'RQHಯ



,1'(;

(5525

ಯ7DJ(UURUಯಯ7DUJHW)LHOGಯ

9$/8(

(12

ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDoneBOOL「TagIn1」オペランドのシグナル状態が「1」のときに、「TagReq」オペランドで立ち上がりエッジが検出されると、その命令が実行されます。2 番目のエレメントが「ArrayDB」か
ら読み出され、「VALUE」パラメータに出力されます。「TagBusy」オペランドで信号立ち下
がりエッジが検出された場合、すぐに命令は終了し、VALUE パラメータの値は変更されません。この命令がエラーなしで実行された場合、イネーブル出力 ENO のシグナル状態がTRUE になり、「TagOut」出力がセットされます。この命令が処理された後、「TagDone」
オペランドのシグナル状態は TRUE になります。

734

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

下記も参照
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
同期命令と非同期命令の相違 (ページ 29)

WriteToArrayDBL:ロードメモリの ARRAY データブロックへの書き込み
説明
命令「ロードメモリの ARRAY データブロックへの書き込み」は、インデックスが参照するエレメントを、ロードメモリの ARRAY DB ブロックタイプのデータブロックに書き込むために使用されます。
ARRAY データブロックは、ちょうど 1 つの ARRAY of <データタイプ>から構成されるデー
タブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタ
イプにすることができます。その ARRAY のカウントは、常に下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。BUSY パラメータで信号立ち下がり
エッジが検出された場合、命令は終了し、VALUE パラメータの値がデータブロックに書き込まれます。DONE1 パラメータで信号立ち下がりエッジが検出された場合、命令は終了し、パラメータの値がデータブロックに書き込まれます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 命令の実行中にエラーが発生した場合。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

735

基本命令
3.2 FBD

パラメータ
次の表に、「ロードメモリの ARRAY データブロックへの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

REQ

Input

BOOL

I、Q、M、D、

REQ =「1」:配列 DB へのL、または定数

書き込みを開始

DB 1)

Input

DB_ANY

説明

I、Q、M、D、L データが書き込まれる
ARRAY データブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグ、または
インデックス値を指定できます。

VALUE 1)Input

VARIANTD (グローバルデ 読み出されるワークメモ
ータブロックの リの DB へのポインタとエレメント)

書き込まれる値

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、[一時]セクショ

使用する必要がありませンでの宣言は可 ん。
能ではありません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ書き込み中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)736[最適化]ブロックプロパティを使用して、データブロックを作成する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8234

データブロックが書き込み保護されています。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、ARRAY の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
命令「READ_DBL」および「WRIT_DBL」によってトリガされるエラーコードについては、命令の対応する説明部分を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

737

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ:ULWH7R$UUD\'%/B'%ಯ
:ULWH7R$UUD\'%/ಯ7DJ,QBಯ

(1

ಯ7DJ5HTಯ

5(4

%86<

ಯ7DJ%XV\ಯಯ$UUD\'%ಯ

'%

'21(

ಯ7DJ'RQHಯ



,1'(;

(5525

ಯ7DJ(UURUಯಯ6RXUFH)LHOGಯ

9$/8(

(12

ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ Array [0 to 10]
of INT の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDoneBOOL「TagIn1」オペランドのシグナル状態が「1」のときに、「TagReq」オペランドで立ち上がりエッジが検出されると、その命令が実行されます。「TagBusy」オペランドで信号立ち下
がりエッジが検出されるとすぐに、命令は終了し、VALUE パラメータの値が「ArrayDB」の2 番目のエレメントに書き込まれます。この命令がエラーなしで実行された場合、イネー
ブル出力 ENO のシグナル状態が TRUE になり、「TagOut」出力がセットされます。この命令が処理された後、「TagDone」オペランドのシグナル状態は TRUE になります。

738

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

下記も参照
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
同期命令と非同期命令の相違 (ページ 29)

3.2.6.16

VARIANT

VariantGet:VARIANT タグ値の読み出し

説明「VARIANT タグ値の読み出し」命令を使用して、SRC パラメータの VARIANT が指すタグの値を読み出し、その値を DST パラメータのタグに書き込むことができます。
SRC パラメータのデータタイプは、VARIANT です。DST パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。
DST パラメータで指定されたタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および ARRAY をコピーするには、「MOVE_BLK_VARIANT 命令:ブロックムーブ」命令を使用できます。追加情報については、「関連項目」を参照してください。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO のシグナル状態は「0」になります。
• イネーブル入力 EN のシグナル状態が「0」であること。
• データタイプが一致しないこと(値は転送されません)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

739

基本命令
3.2 FBD

パラメータ
次の表に、「VARIANT タグ値の読み出し」命令のパラメータを示します。
パラメータ 宣言
EN

データタイプ

Input

ENO

BOOL

Output

SRC

BOOL

Input

VARIANT

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、 イネーブル入力

D、L

D、L

I、Q、M、

I、Q、M、 イネーブル出力

D、L

D、L

L (ブロック

L (ブロック 読み出されるタ

インターフ

インターフ グェースの[一 ェースの時]セクショ [一時]セク

DST

Output

ビット列、整

ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。
)

I、Q、M、

I、Q、M、 命令の結果

数、浮動小数点 D、L

D、L、P

数、タイマ、日
付と時刻、文字列、配列エレメ
ント、PLC デー
タタイプ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
9DULDQW*HWಯ7DJ,Qಯ7DJ,QB6RXUFH

(1

(12

ಯ7DJ2XWಯ

65&'67

ಯ7DJ2XWB'HVWಯ

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。
「#TagIn_Source」オペランドの VARIANT が指すタグの値が読み出され、「TagOut_Dest」
オペランドに書き込まれます。

740

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

下記も参照
MOVE_BLK_VARIANT: ブロックムーブ (ページ 681)

VariantPut:VARIANT タグ値の書き込み
説明「VARIANT タグ値の書き込み」命令を使用して、SRC パラメータのタグの値を、VARIANT が指す DST パラメータのメモリに書き込むことができます。
DST パラメータのデータタイプは、VARIANT です。SRC パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。
SRC パラメータのタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および ARRAY をコピーするには、「MOVE_BLK_VARIANT 命令:ブロックムーブ」命令を使用できます。追加情報については、「関連項目」を参照してください。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• データタイプが一致していません。(値は転送されません。)

パラメータ
次の表に、「VARIANT タグ値の書き込み」命令のパラメータを示します。
パラメータ 宣言
EN
ENO

Input
OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

データタイプ
BOOL
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、 イネーブル入力

D、L

D、L

I、Q、M、

I、Q、M、 イネーブル出力

D、L

D、L

741

基本命令
3.2 FBD
パラメータ 宣言
SRC

データタイプ

Input

ビット列、整メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、 読み出されるタ

数、浮動小数点 D、L

D、L、P

グ

数、タイマ、日
付と時刻、文字列、配列エレメ
ント、PLC デー
タタイプ
DST

Input

VARIANT

L (ブロック

L (ブロック 命令の結果

インターフ

インターフ

ェースの[一 ェースの時]セクショ [一時]セク
ンでの宣言

ションでの

は可能では

宣言は可能

ありませ

ではありま

ん。)

せん。)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
9DULDQW3XW
ಯ7DJ,Qಯ

(1

ಯ7DJ,QB6RXUFHಯ

65&

7DJ,QB'HVW

'67

(12

ಯ7DJ2XWಯ「TagIn」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
「TagIn_Source」オペランドの値が、「#TagIn_Dest」オペランドの VARIANT が指すタグに書き込まれます。

下記も参照
MOVE_BLK_VARIANT: ブロックムーブ (ページ 681)

742

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDCountOfElements:ARRAY エレメントの数を取得
説明「ARRAY エレメントの数を取得」命令を使用して、VARIANT が指すタグが所有する ARRAYのエレメント数を照会します。
それが多次元の ARRAY の場合、ARRAY のエレメント数が結果として出力されます。(上限値と下限値+1 の差)。それが多次元の ARRAY の場合、すべての次元の数が結果として出力されます。
注記
インスタンス
VARIANT ポインタはインスタンスを指すことはできないため、複数インスタンスまたは複数インスタンスの ARRAY も指すことができません。
注記
データブロック内の ARRAY
データブロック内に存在する ARRAY のエレメント数を照会する場合は、このブロックで、
ブロック属性「デバイス内のデータブロックは書き込み禁止」を有効にしてはいけません。
この属性を有効にすると、ARRAY が含むエレメント数に関係なく、RET_VAL パラメータは
結果「0」を返します。
VARIANT タグが ARRAY でない場合も、その結果は「0」です。
VARIANT が ARRAY of BOOL を指す場合、FILL エレメントはカウントに含まれます。(たとえば、ARRAY[0..1] of BOOL の場合、8 が返されます)。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• VARIANT タグが ARRAY でないこと。(結果は「0」です。)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

743

基本命令
3.2 FBD

パラメータ
次の表に、「ARRAY エレメント数の取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

VARIANT

L (ブロックイン 照会するタグ
ターフェースの[一時]セクショ
ンでの宣言は可能ではありません。)

RET_VAL

Output

UDINT

I、Q、M、D、L 命令の結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
&RXQW2I(OHPHQWV
ಯ7DJ,Qಯ

(1(12

7DJ,QB6RXUFH,1

5(7B9$/

ಯ7DJ2XWಯಯ7DJ2XWB5HW9DOಯ

「TagIn」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
「#TagIn_Source」オペランドの VARIANT が指すタグの ARRAY エレメント数が読み出され、「TagOut_RetVal」オペランドに出力されます。

744

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.6.17

ARRAY[*]

LOWER_BOUND:ARRAY の下限値の読み出し

説明
ファンクションブロックまたはファンクションのブロックインターフェースで、データタ
イプ ARRAY[*]のタグを宣言することができます。これらのローカルタグの場合、ARRAY の
制限値を読み出すことができます。DIM パラメータで、必要な次元を指定する必要があります。
「ARRAY 下限値の読み出し」命令は、ARRAY の変数下限値を読み出すために使用されます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 DIM で指定された次元が存在しないこと。
注記
この命令の可用性
この命令は、S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および
S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。

パラメータ
次の表に、「ARRAY 下限値の読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

ARR

Input

ARRAY[*]

FB => セクショ

その変数下限値が読み出

ン[InOut]

される ARRAY。

FC => セクショ
ン[入力]および[InOut]TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

745

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

DIM

UDINT

I、Q、M、D、

その変数下限値が読み出

Input

L、P、または定 される ARRAY の次元。
数
OUT

OutputDINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
/2:(5B%281'
ಯ(QDEOHB6WDUWಯ

(1

$55$<B$

$55



',0

(12

ಯ(QDEOHB2XWಯ

287

ಯ5HVXOWಯ「Enable_Start」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
命令は、2 番目の次元から、ARRAY #ARRAY_A の変数下限値を読み出します。この命令がエラーなしで実行されると、その結果がオペランド「Enable_Out」に書き込まれ、オペラ
ンド「Result」がセットされます。

UPPER_BOUND:ARRAY の上限値の読み出し
説明
ファンクションブロックまたはファンクションのブロックインターフェースで、データタ
イプ ARRAY[*]のタグを宣言することができます。これらのローカルタグの場合、ARRAY の
制限値を読み出すことができます。DIM パラメータで、必要な次元を指定する必要があります。
命令「ARRAY 上限値の読み出し」は、ARRAY の変数上限値を読み出すために使用されます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は、シグナル状態「0」を返します。
• イネーブル入力 EN のシグナル状態が「0」であること。
• 入力 DIM で指定された次元が存在しないこと。

746

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

注記
この命令の可用性
この命令は、S7-1200 シリーズの CPU でファームウェアバージョン 4.2 以降の場合および
S7-1500 シリーズの CPU でファームウェアバージョン 2.0 以降の場合に使用できます。

パラメータ
次の表に、「ARRAY 上限値の読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

ARR

Input

ARRAY[*]

FB => セクショ

その変数上限値が読み出

ン[InOut]

される ARRAY。

FC => セクショ
ン[入力]および[InOut]
DIM

Input

UDINT

I、Q、M、D、

その変数上限値が読み出

L、P、または定 される ARRAY の次元。
数
OUT

OutputDINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
833(5B%281'
ಯ(QDEOHB6WDUWಯ

(1

$55$<B$

$55



',0

(12

ಯ(QDEOHB2XWಯ

287

ಯ5HVXOWಯ「Enable_Start」オペランドがシグナル状態「1」を返す場合、この命令が実行されます。
命令は、2 番目の次元から、ARRAY #ARRAY_A の変数上限値を読み出します。この命令がエラーなしで実行されると、その結果がオペランド「Enable_Out」に書き込まれ、オペラ
ンド「Result」がセットされます。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

747

基本命令
3.2 FBD

3.2.6.18

レガシー

FieldRead: フィールドの読み出し
説明「フィールドの読み出し」命令を使用して、MEMBER パラメータで指定されたフィールドから特定のコンポーネントを読み出して、その内容を VALUE パラメータでタグに転送することができます。 INDEX パラメータを使用し、読み出すフィールドコンポーネントのインデックスを定義します。 MEMBER パラメータで、読み出すフィールドの最初のコン
ポーネントを指定します。
パラメータ MEMBER のフィールドコンポーネントのデータタイプ、パラメータ VALUE のインデックスおよびタグは、暗黙的変換が不可能なため「フィールドの読み出し」命令のデータタイプに対応する必要があります。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• INDEX パラメータで指定されたフィールドコンポーネントが MEMBER パラメータで指定されたフィールドで定義されていない。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「フィールドの読み出し」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

748

D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言
INDEX

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

S7-1500

DINT

DINT

I、Q、M、 I、Q、M、 内容が読み
D、L、P、 D、L、P、 出されるフまたは定数 または定数 ィールドコ
ンポーネン
トのインデ
ックス

MEMBER

Input

ARRAY タARRAY タ

D、L

D、L

読み出され

グのコンポ グのコンポるフィール

ーネントと ーネントと

ドの最初の

しての 2

しての 2

コンポーネ

進数、整

進数、整

ント

数、浮動小 数、浮動小
数点数、タ 数点数、タ
イマ、

イマ、

DATE、

DATE、

TOD、

TOD、

CHAR、おLTOD、

よび

CHAR、お

WCHAR

よび
WCHAR

VALUE

Output2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 フィールド
数、浮動小 数、浮動小 D、L、P

D、L、P

コンポーネ

数点数、タ 数点数、タ

ントの内容

イマ、

イマ、

の転送先の

DATE、

DATE、

オペラン

TOD、

TOD、

ド。

CHAR、

LTOD、

WCHAR

CHAR、
WCHAR

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

749

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
)LHOG5HDG
5($/
ಯ7DJ,QಯDBLQGH[ಯ'%Bಯ
0DLQB)LHOG>@

(1
,1'(;

9$/8(

DBUHDOಯ7DJ2XWಯ

0(0%(5(12次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ タグ値

INDEX

a_index

4

MEMBER"DB_1".Main_Field[-10]"DB_1"データブロックの"Main_Field[-10..10] of REAL"フィールドの最初のコンポーネント

VALUE

a_real「Main_Field[-10..10] of REAL」フィール
ドのインデックス 4 のコンポーネント

インデックス 4 のフィールドコンポーネントが「Main_Field[-10...10] of REAL」フィールドから読み取られ、「a_real」タグに書き込まれます。 読み出されるフィールドコンポー
ネントは、INDEX パラメータの値で定義されます。

FieldWrite: フィールドの書き込み
説明「フィールドの書き込み」命令を使用して、VALUE 入力のタグの内容を MEMBER 出力のフィールドの特定のコンポーネントに転送します。 INDEX 入力の値を使用し、記述されるフィールドコンポーネントのインデックスを指定します。 MEMBER 出力で、書き込まれるフィールドの最初のコンポーネントを入力します。
パラメータ MEMBER のフィールドコンポーネントのデータタイプ、パラメータ VALUE のインデックスおよびタグは、暗黙的変換が不可能なため「フィールドの読み出し」命令のデータタイプに対応する必要があります。

750

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 INDEX で指定されたフィールドコンポーネントが出力 MEMBER で指定されたフィールドで定義されていないこと。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「フィールドの書き込み」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

INDEX

Input

DINT

DINT

D、L

I、Q、M、 I、Q、M、 VALUE の
D、L、P、 D、L、P、 内容で書きまたは定数 または定数 込まれるフ
ィールドコ
ンポーネン
トのインデ
ックス

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

751

基本命令
3.2 FBD
パラメータ 宣言

データタイプS7-1200

VALUE

Input

S7-1500

メモリ領域
S7-1200

説明S7-1500

2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 内容のコピ数、浮動小 数、浮動小 D、L、P、 D、L、P、 ー元のオペ
数点数、タ 数点数、タ または定数 または定数 ランド
イマ、

イマ、

DATE、

DATE、

TOD、

TOD、

CHAR、

LTOD、

WCHAR

CHAR、
WCHAR

MEMBER

OutputARRAY タARRAY タ

D、L

D、L

VALUE のグのコンポ グのコンポ

内容が書きーネントと ーネントと

込まれるフ

しての 2

しての 2

ィールドの

進数、整

進数、整

最初のコン

数、浮動小 数、浮動小

ポーネン

数点数、タ 数点数、タ

ト。

イマ、

イマ、

DATE、

DATE、

TOD、

TOD、

CHAR、おLTOD、

よび

CHAR、お

WCHAR

よび
WCHAR

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
)LHOG:ULWH
5($/
ಯ7DJ,Qಯ

752(1

DBLQGH[,1'(;

DBUHDO

9$/8(0(0%(5

ಯ'%Bಯ
0DLQB)LHOG>@ಯ7DJ2XWಯ

(12

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ オペランド

値

INDEX

a_index

4

VALUE

a_real

10.54

MEMBER"DB_1".Main_Field[-10]"DB_1"データブロックの"Main_Field[-10..10] of REAL"フィールドの最初のコンポーネント

タグ「a_real」の値「10.54」が、Main_Field[-10 ... 10] of REAL フィールドのインデックス
4 のフィールドコンポーネントに書き込まれます。 タグ「a_real」の内容が転送されるフィールドコンポーネントのインデックスは、入力 INDEX の値によって指定されます。

BLKMOV:ブロックの移動
説明「ブロックの移動」命令を使用して、メモリ領域(ソース領域)の内容を別のメモリ領域(宛先領域)に移動することができます。ムーブ操作は、アドレスの昇順方向に行われます。
VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効化されていないメモリ領域内でのみ使用できます。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、この命令のタグが保持設定[IDB に設定]で宣言された場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。
次の図に、ムーブ操作の原理を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

753

基本命令
3.2 FBD'%'%:$%'%'%:&''%'%:()'%'%:

*

+

䲊╤
䲊╤㝜⇫ቒᇬቿኦዉኖቑ㢖檕㡈⚠቎嫛ቲቯቡሼᇭ

0:

$

%

0:

&

'

0:

(

)

0:

*

+

ኾ኿዇檧⩮

ソース領域および宛先領域の整合性「ブロックムーブ」命令の実行中にソースデータが変更されないことを確認してください。
変更があった場合、宛先データの整合性は保証できません。

割り込み機能ネストレベルに対する制限はありません。

メモリ領域「ブロックの移動」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。ソース領域と宛先領域の長さが異なる
場合、小さい方の領域の長さのみが移動します。

754

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。
宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。

文字列の移動のルール
STRING データタイプの移動元および移動先の領域の移動に「ブロックの移動」命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報も、宛先領域に書き込まれます。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文
字列の現在の長さが、実際に移動する文字数にセットされます。
文字列の最大長および実際の長さに関する情報を移動するには、SRCBLK および DSTBLK パ
ラメータに対してバイト単位の領域を指定します。

パラメータ
次の表に、「ブロックムーブ」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

SRCBLK

Input

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがRET_VAL

Output

INT

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

755

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

DSTBLK

VARIANT

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定

Output 1)

します。
1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

8092

ソース領域または宛先領域は、ロードメモリのみに存在します。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
SRCBLK パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
%/.029
9DULDQWಯ7DJ,Qಯ
30%<7((1

5(7B9$/

ಯ7DJB5HW9DOಯ

65&%/.

'67%/.

3'%'%;%<7(ಯ7DJ2XWಯ

(12756

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ムーブ操作中にエラーが発生した場合、「Tag_RetVal」タグにエラーコードが出力されます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 809)

UBLKMOV:割り込みなしブロック転送
説明「割り込みなしブロック転送」命令を使用して、メモリ領域(ソース領域)の内容を別のメ
モリ領域(宛先領域)に移動することができます。ムーブ操作は、アドレスの昇順方向に行われます。VARIANT を使用して、ソース領域と宛先領域を定義します。
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。その結果、「割り込み不可能なブロックムーブ」命令の実行中に、CPU の割り込み応答時間が長くなる場合があります。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効化されていないメモリ領域内でのみ使用できます。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、この命令のタグが保持設定[IDB に設定]で宣言された場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。

メモリ領域「割り込みなしブロック転送」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

757

基本命令
3.2 FBD

移動全般の規則「割り込みなしブロック転送」命令の実行中は、ソース領域および宛先領域が重複してはなりません。ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
仮パラメータとして定義されたソース領域または宛先領域が、SRCBLK または DSTBLK パ
ラメータで指定された宛先領域またはソース領域よりも小さい場合、データは転送されません。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。

文字列の移動のルール
STRING データタイプのソース領域および宛先領域の移動に「割り込みなしブロック転送」
命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報は、宛先領域には書き込まれません。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文字列の現在の長さが、実際に移動する文字数にセットされます。STRING データタイプの領域を移動する場合、領域の長さとして「1」を指定します。

パラメータ
次の表に、「割り込みなしブロック転送」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C

758

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

SRCBLK

Input

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

RET_VAL

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがOutput

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。
DSTBLK

Output 1)

VARIANT

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定します。

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド
(W#16#...)
0000

エラーなし

8091

ソース領域または宛先領域は、ロードメモリのみに存在します。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
SRCBLK パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

759

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
8%/.029
9DULDQWಯ7DJ,Qಯ
30%<7((1

5(7B9$/

ಯ7DJB5HW9DOಯ

65&%/.

'67%/.

3'%'%;%<7(ಯ7DJ2XWಯ

(12「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ムーブ操作中にエラーが発生した場合、「Tag_RetVal」タグにエラーコードが出力されます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 809)

FILL:フィル命令
説明「フィル」命令を使用して、メモリ領域(宛先領域)を別のメモリ領域(ソース領域)の内容によって埋めることができます。「フィル」命令は、宛先領域がすべて書き込まれるまでソース領域の内容を宛先領域に移動します。ムーブ操作は、アドレスの昇順方向に行われます。
VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効化されていないメモリ領域内でのみ使用できます。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、この命令のタグが保持設定[IDB に設定]で宣言された場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。
「最適化ブロックアクセス」属性を持つブロックの場合、命令「FILL_BLK:フィル」命令を使用できます。

760

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の図に、ムーブ操作の原理を示します。
),//

%9$/

$

%

0:

$

%

0:

&

'

0:

&

'

0:

(

)

0:

(

)

0:

*

+

0:

*

+

0:

$

%

0:

&

'

0:

(

)

0:

*

+

0:

$

%

0:

&

'

0:

%/.

ソース領域および宛先領域の整合性「フィル」命令の実行中は、宛先データの整合性を保証するため、ソースデータは変更されないことに注意してください。

メモリ領域「フィル」命令を使用して、以下のメモリ領域を移動することができます。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。プリセットする宛先領域が BVAL 入力
パラメータの長さの整数倍ではなくても、宛先領域は最後のバイトまで書き込まれます。
プリセットする宛先領域がソース領域よりも小さい場合は、ソース領域に含まれているデータのうち、宛先領域に書き込める量のみがコピーされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

761

基本命令
3.2 FBD
実際に存在する宛先領域またはソース領域がソース領域または宛先領域に割り当てられた
メモリ領域よりも小さい場合(BVAL、BLK パラメータ)、データは転送されません。
ANY ポインタ(ソースまたは宛先)がデータタイプ BOOL の場合、これを絶対アドレス指定する必要があり、かつ指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行されません。
宛先領域が STRING データタイプの場合、この命令は管理情報を含む文字列全体を書き込みます。

構造体移動のルール
構造体を入力パラメータとして転送するとき、構造体の長さが常に偶数バイト数になっているように注意する必要があります。構造体を奇数バイトによって宣言する場合は、追加の1 バイトが必要になります。

パラメータ
次の表に、「フィル」命令のパラメータを示します。
パラメータ 宣言

データタイプ

EN

BOOL

Input

メモリ領域
I、Q、M、D、

説明
イネーブル入力

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

BVAL

Input

VARIANT

I、Q、M、D、その内容に内容が BLK パ

L、P

ラメータの宛先領域を埋めるのに使用されるメモ
リ領域(ソース領域)の指定。

RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

BLK

Output 1)

VARIANT

I、Q、M、D、

ソース領域の内容で埋めL、Pられるメモリ領域の指定。

1) データがタグに流れるため、BLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

762

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー
ド*(W#16#...)

説明

0000

エラーなし

8092

ソース領域または宛先領域は、ロードメモリのみに存在します。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
BVAL パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
BLK パラメータではサポートされていません。WSTRING、WCHAR、およびBOOL データタイプはサポートされていません。

一般エラー

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
),//
9DULDQWಯ7DJ,Qಯ
30:25'

(1
%9$/

5(7B9$/%/.

ಯ7DJB5HW9DOಯ
30:25'ಯ7DJ2XWಯ

(12「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令は、ソース領域 MW14～MW20 をコピーし、BVAL パラメータのメモリ領域に含まれる 4 ワー
ドの内容で宛先領域 MW100～MW118 を埋めます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 809)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

763

基本命令
3.2 FBD

3.2.7

変換操作

3.2.7.1

CONVERT:変換データ

説明「データの変換」命令は、IN パラメータの内容を読み出し、命令ボックスで設定されたデータタイプに従って変換します。変換された値は、OUT 出力で出力されます。
次のいずれかの条件が満たされると、イネーブル出力 ENO のシグナル状態が「0」になります。
• EN イネーブル入力のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

ビット列の変換オプション
ビット列 BYTE および WORD は、命令ボックスで選択できません。ただし、入力オペラン
ドと出力オペランドの長さが一致する場合は、命令のパラメータでデータタイプ DWORDまたは LWORD のオペランドを指定できます。次にオペランドは、入力パラメータまたは
出力パラメータのデータタイプに応じてビット列のデータタイプから暗黙的に変換されます。たとえば、データタイプ DWORD は DINT/UDINT として解釈され、LWORD は LINT/ULINT として解釈されます。これらの変換オプションは、「IEC チェック」が有効なときも使用できます。
注記
S7-1500 シリーズの CPU の場合:データタイプ DWORD および LWORD は、データタイプ
REAL または LREAL との間でのみ変換できます。
変換時に、ソース値のビットパターンは、ターゲットデータタイプへ変更なしで、右揃えで転送されます。変換中にエラーが発生しない場合は、イネーブル出力 ENO のシグナル状態
は 1 になり; 処理中にエラーが発生すると、イネーブル出力 ENO のシグナル状態 0 になり
ます。

764

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「値の変換」命令のパラメータを示します。
パラメータ 宣言
EN

データタイプ

Input

BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、 イネーブル入力

D、L

D、L、T、
C

ENO

Output

IN

Input

BOOL
ビット列、整I、Q、M、

I、Q、M、 イネーブル出力

D、L

D、L

I、Q、M、

I、Q、M、 変換する値

数、浮動小数点 D、L、P、

D、L、P、

数、CHAR、

または定数

または定数

I、Q、M、

I、Q、M、 変換の結果

WCHAR、
BCD16、BCD32
OUT

Output

ビット列、整数、浮動小数点 D、L、P

D、L、P

数、CHAR、
WCHAR、
BCD16、BCD32
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。

例
次の例は、整数(16 ビット)から別の整数(32 ビット)への変換を示します。
&219
,17

WR

',17

ಯ7DJ,Qಯ

(1(12

ಯ,QSXWB,17ಯ

,1

287

ಯ7DJ2XWಯಯ2XWSXWB',17ಯ

次の例は、 バイト(8 ビット)から整数 SINT (8 ビット)への変換を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

765

基本命令
3.2 FBD&219
6,17 WR

6,17

ಯ7DJ,Qಯ

(1(12

ಯ,QSXWB%<7(ಯ

,1

287

ಯ7DJ2XWಯಯ2XWSXWB6,17ಯ

次の例は、バイト(8 ビット)から符号なし整数 USINT (8 ビット)への変換を示します。
&219
86,17 WR 86,17
ಯ7DJ,Qಯ

(1(12

ಯ,QSXWB%<7(ಯ

,1

287

ಯ7DJ2XWಯಯ2XWSXWB86,17ಯ

これらの変換は、2 つのオペランドの長さが同じであるため可能です。

3.2.7.2

ROUND:数値の四捨五入

説明「数値の四捨五入」命令を使用して、入力 IN の値を近似の整数に四捨五入することができます。 この命令は、入力 IN の値を浮動小数点数として解釈し、これを最も近い整数に変換します。 入力値が偶数と奇数のちょうど間にある場合、偶数が変換されます。 命令の結果
は、OUT 出力で出力され、そこで照会できます。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

766

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「数値の四捨五入」命令のパラメータを示します。
パラメータ
EN

宣言
Input

ENO

OutputIN

Input

データタイプ
BOOL
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

許可入力
許可出力
四捨五入され

D、L、P、ま D、L、P、ま る入力値
たは定数
OUT

Output整数、浮動小 I、Q、M、
数点数

D、L、P

たは定数
I、Q、M、四捨五入の結

D、L、P

果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
5281'
5($/ WR ',17
ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

1.50000000-1.50000000

OUT

TagOut_Value

2-2「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 入力「TagIn_Value」の浮動小数点数は、最も近い偶数の整数に四捨五入され、出力「TagOut_Value」に送信されます。この命令がエラーなしで実行された場合、「TagOut」出
力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

767

基本命令
3.2 FBD

3.2.7.3

CEIL:浮動小数点数から次に大きい整数を生成

説明「浮動小数点数から次に大きい整数を生成」命令を使用して、入力 IN の値を次に大きい整数に切り上げることができます。 この命令は、入力 IN の値を浮動小数点数として解釈し、これを次に大きい整数に変換します。 命令の結果は、OUT 出力で出力され、そこで照会できます。 出力値は、入力値以上になることがあります。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「浮動小数点数から次に大きい整数を生成」命令のパラメータを示します。
パラメータ
EN
ENO
IN

宣言
Input
OutputInput

データタイプ メモリ領域
BOOL
BOOL

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

許可入力
許可出力
浮動小数点数

D、L、P、ま D、L、P、ま としての入力
たは定数
OUT

Output整数、浮動小 I、Q、M、
数点数

D、L、P

たは定数

値

I、Q、M、次に大きい整

D、L、P

数の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

768

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
&(,/
5($/

WR

',17

ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0.50000000-0.50000000

OUT

TagOut_Value

1

0「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 入力「TagIn_Value」が次に大きな整数に切り上げられ、出力「TagOut_Value」に送信されます。
この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

3.2.7.4

FLOOR:浮動小数点数から次に小さい整数を生成

説明「浮動小数点数から次に小さい整数を生成」命令を使用して、入力 IN の値を次に小さい整数に切り下げることができます。 この命令は、入力 IN の値を浮動小数点数として解釈し、浮動小数点数の値を次に小さい整数に変換します。 命令の結果は、OUT 出力で提供され、そこで照会できます。 出力値は、入力値以下になります。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

769

基本命令
3.2 FBD

パラメータ
次の表に、「浮動小数点数から次に小さい整数を生成」命令のパラメータを示します。
パラメータ
EN

宣言

データタイプ

Input

ENO

Output

IN

Input

BOOL
BOOL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

浮動小数点数 I、Q、M、I、Q、M、

許可入力
許可出力
浮動小数点数

D、L、P、ま D、L、P、ま としての入力
たは定数
OUT

Output整数、浮動小 I、Q、M、
数点数

D、L、P

たは定数

値

I、Q、M、

次に小さい整

D、L、P

数の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

5($/

)/225
WR ',17

ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0.50000000-0.50000000

OUT

TagOut_Value

0-1「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 入力「TagIn_Value」の浮動小数点数は、次に小さい整数に切り下げられ、出力「TagOut_Value」に送信されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされ
ます。

770

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.7.5

TRUNC:値の切り捨て

説明「数値を切り捨てる」命令を使って、入力 IN の値から整数を形成します。 入力 IN の値は、浮動小数点数として解釈されます。 この命令は、浮動小数点数の整数部分のみを選択し、これを小数点なしで出力 OUT に送信します。
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 実行中にオーバーフローなどのエラーが発生した。

パラメータ
次の表に、「数値を切り捨てる」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、L 許可入力

ENO

Output

BOOL

I、Q、M、D、L 許可出力

IN

Input

浮動小数点数

I、Q、M、D、

浮動小数点数としての入L、または定数

力値

OUT

Output説明

整数、浮動小数 I、Q、M、D、L 浮動小数点数の整数部分の結果

点数

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

5($/

7581&
WR ',17

ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

771

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

1.50000000-1.50000000

OUT

TagOut_Value

1-1「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 入力「TagIn_Value」の浮動小数点数の整数部分が整数に変換され、出力「TagOut_Value」に送信されます。この命令がエラーなしで実行された場合、「TagOut」出力がセットされます。

3.2.7.6

SCALE_X:スケール

説明「スケール」命令を使用して、VALUE 入力の値を指定した値の範囲にマッピングしてスケーリングすることができます。 「スケール」命令が実行されると、入力 VALUE の浮動小数点値が、パラメータ MIN および MAX によって定義された値の範囲にスケーリングされます。 スケーリングの結果は整数で、これは出力 OUT に格納されます。
次の図に、値をどのようにスケーリングできるかを示します。

0$;
287
0,1



⊳

「スケール」命令は、以下の等式で機能します。

772

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDOUT = [VALUE ∗ (MAX – MIN)] + MIN
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 MIN の値が入力 MAX の値以上であること。
• 指定した浮動小数点数の値が、IEEE-754 に従い正規化された数の範囲外であること。
• オーバーフローが発生していること。
• 入力 VALUE の値が NaN (非数値 = 無効な数学演算の結果)あること。
注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

パラメータ
次の表に、「スケール」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

ENO

Output

BOOL

Input

VALUE

Input

許可出力

D、L

整数、浮動小 I、Q、M、 I、Q、M、
数点数

許可入力

D、L、T、C

I、Q、M、 I、Q、M、
D、L

MIN

S7-1500

I、Q、M、 I、Q、M、
D、L

説明

値の範囲の下

D、L、ま

D、L、または 限値

たは定数

定数

浮動小数点数 I、Q、M、 I、Q、M、

スケーリング

D、L、ま

D、L、または される値

たは定数

定数

定数を入力する場合は、それを宣言する
必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

773

基本命令
3.2 FBD
パラメータ

宣言

データタイプ

メモリ領域
S7-1200

MAX

Input

OUT

S7-1500

整数、浮動小 I、Q、M、 I、Q、M、
数点数

Output値の範囲の上

D、L、ま

D、L、または 限値

たは定数

定数

整数、浮動小 I、Q、M、 I、Q、M、
D、L

数点数

説明

D、L

スケーリングの結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6&$/(B;
5($/

WR

',17

ಯ7DJ,Qಯ

(1

ಯ7DJB0,1ಯ

0,1

ಯ7DJB9DOXHಯ

9$/8(

287

ಯ7DJB0$;ಯ

0$;

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ6

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MIN

Tag_MIN

10

VALUE

Tag_Value

0.5

MAX

Tag_MAX30

OUT

Tag_Result

20「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 入力「Tag_Value」の値が、入力「Tag_MIN」および「Tag_MAX」の値で定義された値の範囲にスケーリングされます。 結果は出力「Tag_Result」に格納されます。 この命令がエラーなしで実行された場合、ENO 許可出力のシグナル状態が「1」になり、「TagOut」出力がセットされます。

774

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.7.7

NORM_X:正規化

説明「正規化」命令を使用して、VALUE 入力のタグの値をリニアスケーリングにマッピングして正規化することができます。 MIN および MAX パラメータを使用し、スケーリングに適用する値の範囲の限界を定義できます。 この値の範囲の正規化された値の位置に応じて、出力 OUT で結果が計算され、浮動小数点数として格納されます。 正規化する値が入力 MIN の値と等しい場合、出力 OUT が値「0.0」を返します。 正規化する値が入力 MAX の値と等しい場合、出力 OUT が値「1.0」を返します。
次の図に、値が正規化される例を示します。


287

0,1

0$;
⊳

「正規化」命令は、以下の等式で機能します。
OUT = (VALUE – MIN) / (MAX – MIN)
次のいずれかの条件が満たされると、許可出力 ENO のシグナル状態が「0」になります。
• 許可入力 EN のシグナル状態が「0」であること。
• 入力 MIN の値が入力 MAX の値以上であること。
• 指定した浮動小数点数の値が、IEEE-754 に従い正規化された数の範囲外であること。
• 入力 VALUE の値が NaN (無効な数学演算の結果)であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

775

基本命令
3.2 FBD

注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

パラメータ
次の表に、「正規化」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

ENO

Output

BOOL

Input

I、Q、M、 I、Q、M、

VALUE

1)

Input

MAX 1)Input

OUT

Output

D、L、または 限値

たは定数

定数

D、L、ま

D、L、または

たは定数

定数

整数、浮動小 I、Q、M、 I、Q、M、
数点数

正規化する値

値の範囲の上

D、L、ま

D、L、または 限値

たは定数

定数

浮動小数点数 I、Q、M、 I、Q、M、
D、L

1)

値の範囲の下

D、L、ま

整数、浮動小 I、Q、M、 I、Q、M、
数点数

許可出力

D、L

整数、浮動小 I、Q、M、 I、Q、M、
数点数

許可入力

D、L、T、C

D、L
MIN 1)

S7-1500

I、Q、M、 I、Q、M、
D、L

説明

正規化の結果D、Lこれらの 3 つのパラメータで定数を使用する場合は、そのいずれかを宣言するのみで済みます。
命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

776

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
1250B;
',17

WR

5($/

ಯ7DJ,Qಯ

(1

ಯ7DJB0,1ಯ

0,1

ಯ7DJB9DOXHಯ

9$/8(

287

ಯ7DJB0$;ಯ

0$;

(12

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ6

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MIN

Tag_MIN

10

VALUE

Tag_Value

20

MAX

Tag_MAX30

OUT

Tag_Result

0.5「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 入力「Tag_Value」の値が、入力「Tag_MIN」および「Tag_MAX」の値で定義された値の範囲に割り当てられます。 入力「Tag_Value」のタグ値が定義された値の範囲に対応して正規化されます。 結果は出力「Tag_Result」で浮動小数点数として格納されます。この命令がエラーなしで実行された場合、ENO 許可出力のシグナル状態が「1」となり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

777

基本命令
3.2 FBD

3.2.7.8

レガシー

SCALE:スケール
説明「"スケール」命令を使用して、IN パラメータの整数を下限値と上限値間の物理単位でスケーリングが可能な浮動小数点数に変換します。LO_LIM および HI_LIM パラメータを使用
し、入力値をスケーリングする範囲の下限値と上限値を指定します。 命令の結果は、OUT
パラメータに出力されます。
「スケール」命令は、以下の等式で機能します。
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」: IN パラメータの値がバイポーラであり、-27648 から 27648 の範囲の値にあると想定されます。この場合、定数「K1」の値は-27648.0 となり、定数「K2」の値は+27648.0 となります。
• シグナル状態「0」: IN パラメータの値がユニポーラであり、0 から 27648 の範囲の値にあると想定されます。この場合、定数「K1」の値は 0.0 となり、定数「K2」の値は+27648.0 となります。
IN パラメータの値が定数値「K2」よりも大きい場合、命令の結果が上限値(HI_LIM)にセッ
トされ、エラーが出力されます。
IN パラメータの値が定数値「K1」未満の場合、命令の結果が下限値(LO_LIM)にセットされ、エラーが出力されます。
示された下限値が上限値よりも大きい場合(LO_LIM > HI_LIM)、結果は入力値に逆の割合でスケーリングされます。

778

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「スケール」命令のパラメータを示します。
パラメータ
EN
ENO
IN

宣言
Input
OutputInput

データタイプ
BOOL
BOOL
INT

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

I、Q、M、

I、Q、M、

説明
許可入力
許可出力
スケーリング

D、L、P、ま D、L、P、ま する入力値。
HI_LIM

Input

REAL

たは定数

たは定数

I、Q、M、

I、Q、M、

上限値

D、L、P、ま D、L、P、まLO_LIM

Input

REAL

たは定数

たは定数

I、Q、M、

I、Q、M、

下限値

D、L、P、ま D、L、P、まBIPOLAR

Input

BOOL

たは定数

たは定数

I、Q、M、

I、Q、M、IN パラメー

D、L、また

D、L、また

タの値をバイは定数は定数ポーラとして解釈するか、またはユニポーラとして解釈するかを示します。 以下のパラメー
タ値が想定されます。
1: バイポーラ
0: ユニポーラ

OUT
RET_VAL

OutputOutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

REAL
WORD

I、Q、M、

I、Q、M、

D、L、P

D、L、P

I、Q、M、

I、Q、M、

D、L、P

D、L、P

命令の結果
エラー情報

779

基本命令
3.2 FBD

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

0008

IN パラメータの値が「K2」定数値を超えているか、または「K1」定数値未満になっています。

一般エラー 関連項目: "GET_ERR_ID: ローカルでエラー ID を取得
情報*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。 表示形式の変更についての情報は、「関連項目」に記載されています。

例
次の例で、命令がどのように動作するかを示します。
6&$/(
ಯ7DJ,Qಯ

(1

ಯ7DJB,QSXW9DOXHಯ

,1

ಯ7DJB+LJK/LPLWಯ

+,B/,05(7B9$/

ಯ7DJB/RZ/LPLWಯ

/2B/,0287

ಯ7DJB%LSRODUಯ

%,32/$5

ಯ7DJB(UURU&RGHಯ
ಯ7DJB2XWSXW9DOXHಯ
ಯ7DJ2XWಯ(12

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

780

パラメータ

オペランド

値

IN

Tag_InputValue

22

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

OUT

Tag_OutputValue

50.03978588

RET_VAL

Tag_ErrorCode

W#16#0000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 809)

UNSCALE:スケール解除
説明「スケール解除」命令を使用して、IN パラメータの浮動小数点数を下限値と上限値間の物
理単位にスケーリング解除し、それらを整数に変換します。LO_LIM および HI_LIM パラメータを使用し、入力値をスケーリング解除する範囲の下限値と上限値を指定します。命令の結果は、OUT パラメータに出力されます。
「スケール解除」命令は、以下の等式で機能します。
OUT = [ ((IN–LO_LIM)/(HI_LIM–LO_LIM)) ∗ (K2–K1) ] + K1
「K1」および「K2」定数の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値がバイポーラであり、値範囲-27648 ～ 27648 内にあることが仮定されています。この場合、定数「K1」は値-27648.0 を持ち、定数「K2」は値+27648.0 を持ちます。
• シグナル状態「0」:IN パラメータの値がユニポーラであり、値範囲 0 ～ 27648 内にあることが仮定されています。この場合、定数「K1」は値 0.0 を持ち、定数「K2」は値+27648.0 を持ちます。
パラメータ IN の値が、HI_LIM および LO_LIM によって定義された制限値内にないとき、エラーが出力され、その結果は直近の制限値にセットされます。
示された下限値が上限値より大きいとき、その結果は、入力値に反比例してスケーリング
されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

781

基本命令
3.2 FBD

パラメータ
次の表に、「スケール解除」命令のパラメータを示します。
パラメータ
EN
ENO
IN

宣言
Input
Input
Input

データタイプ
BOOL
BOOL
REAL

メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

イネーブル入D、L

D、L、T、C

力

I、Q、M、

I、Q、M、

イネーブル出

D、L

D、L

力

I、Q、M、

I、Q、M、整数値にスケ

D、L、P、ま D、L、P、ま ーリング解除
HI_LIM

Input

REAL

たは定数

たは定数

する入力値。

I、Q、M、

I、Q、M、

上限値

D、L、P、ま D、L、P、まLO_LIM

Input

REAL

たは定数

たは定数

I、Q、M、

I、Q、M、

下限値

D、L、P、ま D、L、P、まBIPOLAR

Input

BOOL

たは定数

たは定数

I、Q、M、

I、Q、M、IN パラメー

D、L、また

D、L、また

タの値をバイは定数は定数ポーラとして解釈するか、またはユニポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

OUT
RET_VAL

782

OutputOutputINT
WORD

I、Q、M、

I、Q、M、

D、L、P

D、L、P

I、Q、M、

I、Q、M、

D、L、P

D、L、P

命令の結果
エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

0008

IN パラメータの値が上限値(HI_LIM)を超えているか、または下限値(LO_LIM)未満になっています。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、AUTOHOTSPOT を参照してください。

例
次の例で、命令がどのように動作するかを示します。
816&$/(
ಯ7DJ,Qಯ

(1

ಯ7DJB,QSXW9DOXHಯ

,1

ಯ7DJB+LJK/LPLWಯ

+,B/,05(7B9$/

ಯ7DJB/RZ/LPLWಯ

/2B/,0287

ಯ7DJB%LSRODUಯ

%,32/$5

ಯ7DJB(UURU&RGHಯ
ಯ7DJB2XWSXW9DOXHಯ
ಯ7DJ2XWಯ(12

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_InputValue

50.03978588

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

OUT

Tag_OutputValue

22

RET_VAL

Tag_ErrorCode

W#16#0000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

783

基本命令
3.2 FBD

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 809)

3.2.8

プログラム制御演算

3.2.8.1

JMP: RLO = 1 ならばジャンプ

説明「RLO = 1 ならばジャンプ」命令を使用して、プログラムのリニア実行を中断し、別のネットワークで再開できます。 宛先ネットワークをジャンプラベル(LABEL)で識別する必要があります。 ジャンプラベルの記述は、命令ボックスの上にあるプレースホルダに入力します。
指定したジャンプラベルは、命令が実行されるブロックと同じブロックにあることが必要です。 指定する名前はブロック内で固有であることが必要です。 1 つのネットワークで使用できるジャンピングコイルは 1 つのみです。
命令の入力でのボックス入力の論理演算の結果(RLO)が「1」の場合、ジャンプラベルで識別されたネットワークへのジャンプが実行されます。 ジャンプ方向は、大きいまたは小さいネットワーク番号の方向になります。
命令の入力での条件が満たされない場合(RLO = 0)、プログラムの実行は次のネットワークで続行されます。

784

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ

&$6
ಯ7DJ,QBಯኪአእዌዙኌ

-03
ಯ7DJ2XWBಯಯ7DJ,QBಯ

5ኪአእዌዙኌ
&$6
ಯ7DJ2XWBಯಯ7DJ,QBಯ

5

「TagIn_1」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 プログ
ラムの線形実行が中断され、ジャンプラベル CAS1 で識別されるネットワーク 3 で続行されます。 入力「TagIn_3」のシグナル状態が「1」の場合、出力「TagOut_3」がリセットされます。

3.2.8.2

JMPN: RLO = 0 ならばジャンプ

説明「RLO = 0 ならばジャンプ」命令を使用し、命令の入力での論理演算の結果が「0」の場合、プログラムの線形実行に割り込み、それを別のネットワークで再開することができます。
宛先ネットワークをジャンプラベル(LABEL)で識別する必要があります。 ジャンプラベルの
記述は、命令ボックスの上にあるプレースホルダに入力します。
指定したジャンプラベルは、命令が実行されるブロックと同じブロックにあることが必要です。 指定する名前はブロック内で固有であることが必要です。 1 つのネットワークで使用できるジャンピングコイルは 1 つのみです。
命令の入力でのボックス入力の論理演算の結果(RLO)が「0」の場合、ジャンプラベルで識別されたネットワークへのジャンプが実行されます。 ジャンプ方向は、大きいまたは小さいネットワーク番号の方向になります。
命令の入力での論理演算の結果 RLO が「1」の場合、プログラムの実行は、次のネットワークで継続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

785

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ

&$6
ಯ7DJ,QBಯኪአእዌዙኌ

-031
ಯ7DJ2XWBಯಯ7DJ,QBಯ

5ኪአእዌዙኌ
&$6
ಯ7DJ2XWBಯಯ7DJ,QBಯ

5

「TagIn_1」オペランドのシグナル状態が「0」の場合、この命令が実行されます。プログ
ラムの線形実行が中断され、ジャンプラベル CAS1 で識別されるネットワーク 3 で続行されます。入力「TagIn_3」のシグナル状態が「1」の場合、出力「TagOut_3」がリセットされます。

3.2.8.3

LABEL: ジャンプラベル

説明
ジャンプラベルは、ジャンプ命令の実行後にプログラムの実行を再開できる宛先ネットワークを識別します。
ジャンプラベルとジャンプラベルを指定する命令は、同じブロックに置く必要があります。
ジャンプラベルの名前は、ブロック内で 1 回のみ割り当てることができます。CPU S7-1200
を使用している場合は最大で 32 のジャンプラベル、CPU S7-1500 を使用している場合は最大で 256 のジャンプラベルを宣言できます。
ネットワークに置くことのできるジャンプラベルは 1 つのみです。各ジャンプラベルから複数の位置にジャンプできます。

786

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
ジャンプラベルについては、以下の文法ルールを遵守してください。
• 文字(a～z、A～Z)• 文字および数字の組み合わせ。その順序が正しいことをチェックしてください。最初に文字を設定し、次に数字を設定します(a ～ z、A ～ Z、0 ～ 9)。
• 特殊文字、または逆の順序の文字および数字の組み合わせを使用してはいけません。すなわち、最初に数字を設定し、次に文字を設定すること(0 ～ 9、a ～ z、A ～ Z)はできません。

例
次の例で、命令がどのように動作するかを示します。
ኪአእዌዙኌ

&$6
ಯ7DJ,QBಯኪአእዌዙኌ

-03
ಯ7DJ2XWBಯಯ7DJ,QBಯ

5ኪአእዌዙኌ
&$6
ಯ7DJ2XWBಯಯ7DJ,QBಯ

5

「TagIn_1」オペランドのシグナル状態が「1」の場合、この命令が実行されます。プログ
ラムの線形実行が中断され、ジャンプラベル CAS1 で識別されるネットワーク 3 で続行されます。「TagIn_3」入力のシグナル状態が「1」の場合、出力「TagOut_3」がリセットされます。

3.2.8.4

JMP_LIST: ジャンプリストの定義

説明「ジャンプリストの定義」を使って、複数の条件ジャンプを定義できます。また、K パラ
メータの値に基づいて、指定したネットワーク内でプログラム実行を継続できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

787

基本命令
3.2 FBD
ジャンプはジャンプラベル(LABEL)を使用して定義します。ジャンプラベルは、命令ボッ
クスの出力で指定します。出力の数は、命令ボックスで拡張できます。CPU S7-1200 を使用している場合は最大で 32 の出力、CPU S7-1500 を使用している場合は最大で 256 の出力を宣言できます。
出力の番号付けは、値「0」から開始され、それぞれの新しい出力で昇順に継続されます。
命令の出力では、ジャンプラベルのみを指定できます。命令またはオペランドを指定することはできません。
K パラメータの値は、プログラム実行が再開される出力の番号、その結果、ジャンプラベ
ルを指定します。K パラメータの値が、使用可能な出力の数より大きい場合、プログラム
実行は、ブロックの次のネットワークで再開されます。
「ジャンプリストの定義」命令は、EN イネーブル入力のシグナル状態が「1」の場合にのみ実行されます。

パラメータ
次の表に、
「ジャンプリストの定義」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、L、D イネーブル入力

K

Input

UINT

I、Q、M、L、

出力の番号、ひいては実D、または定数

行されるジャンプを指定
します。

DEST0

-

-

-

最初のジャンプラベル

DEST1

-

-

-

2 番目のジャンプラベル

DESTn

-

-

-

オプションのジャンプラ
ベル

有効なデータタイプの追加情報については、「関連項目」を参照してください。

788

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
-03B/,67
ಯ7DJB,QSXWಯ(1

ಯ7DJB9DOXHಯ

.

'(67

/$%(/

'(67/$%(/

'(67/$%(/

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド/ジャンプラベル 値

K

Tag_Value

1

DEST0

LABEL0

ジャンプラベル「LABEL0」で識別されるネットワークにジャンプします。

DEST1

LABEL1

ジャンプラベル「LABEL1」
で識別されるネットワークにジャンプします。

DEST2

LABEL2

ジャンプラベル「LABEL2」で識別されるネットワークにジャンプします。

「Tag_Input」オペランドのシグナル状態が「1」の場合、この命令が実行されます。プロ
グラムの実行は、ジャンプラベル「LABEL1」で識別されるネットワークのオペランド「Tag_Value」の値に基づいて継続されます。

3.2.8.5

SWITCH: ディストリビュータにジャンプ

説明「ディストリビュータジャンプ」命令を使用して複数のプログラムジャンプを定義し、1 つ以上の比較命令の結果に応じて実行することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

789

基本命令
3.2 FBD
K パラメータで比較される値を指定します。この値は、さまざまな入力によって提供される値と比較されます。個々の入力に対して、比較方法を選択できます。さまざまな比較命令の可用性は、命令のデータタイプに応じて異なります。
次の表に、選択されたデータタイプに応じて使用可能な比較命令を示します。
データタイプS7-1200

S7-1500

ビット列

ビット列

命令

構文

等価

==

不等価

<>

整数、浮動小数 整数、浮動小数 等価==

点数、TIME、点数、TIME、

不等価<>

DATE、TODLTIME、DATE、

以上

>=

以下

<=

超過

>

未満

<

TOD、LTOD、
LDT

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。比較命令を選択し、その命令のデータタイプがまだ定義されていない場合、「???」ドロップダウンリストには、選択した比較命令で許可されたデータタイプが表示されます。
命令の実行は、最初の比較で開始し、比較条件が満たされるまで実行します。比較条件が満たされている場合、その後の比較条件は考慮されません。指定した条件のいずれも満たされていない場合、出力 ELSE でジャンプが実行されます。出力 ELSE でジャンプラベルが定義されていない場合、プログラムの線形実行は割り込まれず、次のネットワークで続行します。
初期状態では、この命令ボックスには 2 つ以上の出力(DEST0 および DEST1)が含まれています。出力数は拡張できます。出力の番号付けは、値「0」から開始され、それぞれの新しい出力で昇順に継続されます。命令の出力でジャンプラベル(LABEL)を指定します。命令の出力で、命令またはオペランドを指定することはできません。
追加された出力に対し、自動的に入力が挿入されます。対応する入力の比較条件が満たされている場合、出力でプログラミングされたジャンプが実行されます。

790

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「ディストリビュータジャンプ」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域 説明
I、Q、M、 イネーブル入力
D、L

K

Input

UINT

UINT

I、Q、M、 比較する値を指定
D、L、ま

します。

たは定数
<Comparis

Input

on values>

ビット列、整 ビット列、整 I、Q、M、 パラメータ K の値
数、浮動小数 数、浮動小数 D、L、まと比較される入力

点数、TIME、 点数、

たは定数

値

-

最初のジャンプラ

DATE、TOD

TIME、
LTIME、
DATE、
TOD、
LTOD、LDT

DEST0

-

-

-

ベル
DEST1

-

-

-

-

2 番目のジャンプラベル

DEST(n)

-

-

-

-

オプションのジャンプラベル:• S7-1200:n = 2～ 32• S7-1500:n = 2
～ 256

ELSE

-

-

-

-

いずれの比較条件
も満たされない場
合に実行されるプ
ログラムジャン
プ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

791

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
6:,7&+
8,17
ಯ7DJB,QSXWಯ(1

ಯ7DJB9DOXHಯ

.

ಯ7DJB9DOXHBಯ

'(67/$%(/

ಯ7DJB9DOXHBಯ

!

'(67

/$%(/

ಯ7DJB9DOXHBಯ



'(67

/$%(/

(/6(/$%(/

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド/ジャンプラベル 値

K

Tag_Value

23==

Tag_Value_1

20>

Tag_Value_2

21<

Tag_Value_3

19

DEST0

LABEL0

パラメータ K の値が 20 と等しい場合、ジャンプラベル「LABEL0」にジャンプ。

DEST1

LABEL1

パラメータ K の値が 21 よりも大きい場合、ジャンプラ
ベル「LABEL1」にジャンプ。

DEST2

LABEL2

パラメータ K の値が 19 未満の場合、ジャンプラベル「LABEL2」にジャンプ。

ELSE

LABEL3

どの比較条件も満たされない場合、ジャンプラベル「LABEL3」にジャンプします。

「Tag_Input」オペランドのシグナル状態が「1」の場合、この命令が実行されます。ジャンプラベル「LABEL1」で識別されるネットワークでプログラムの実行を継続。

792

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.8.6

RET: 戻り値

説明「Return」命令を使用して、プログラムブロックの実行を条件付きまたは無条件で停止します。プログラムブロックが終了したとき、戻り値(オペランド)のシグナル状態が、呼び出しプログラムブロックのイネーブル出力 ENO にマッピングされます。
プログラムブロックの実行を終了する 3 つの方法があります。
プログラムブロックの終了

説明

この命令の呼び出しなプログラムブロックは、最後のネットワークの実行後に終了しします。呼び出しプログラムブロックのイネーブル出力 ENO が、
シグナル状態「1」にセットされます。

事前の論理演算による事前の論理演算が満たされると、現在呼び出されているプログ

この命令の呼び出し(例 ラムブロックのプログラム実行が終了し、このプログラムブロ
を参照)

ックが終了します。(条件付きプログラムブロック終了) プログ
ラムブロック呼び出し後、プログラム実行が、呼び出しプログ
ラムブロック(たとえば、OB)で続けられます。呼び出しプログ
ラムブロックのイネーブル出力 ENO は、そのオペランドに対応します。

事前の論理演算なしのプログラムブロックは無条件で終了します。(絶対プログラムブ

この命令の呼び出し、ロック終了) 呼び出しプログラムブロックのイネーブル出力

またはこの命令が直接ENO は、そのオペランドに対応します。

に左のパワーレールに接続されます。
オーガニゼーションブロック(OB)が終了すると、別のプログラムブロックが実行レベルシ
ステムによって選択され、開始されるか、実行が続けられます。
• OB プログラムサイクルが終了すると、そのサイクルが再起動されます。
• 別のプログラムブロックに割り込んだ OB (たとえば、割り込み OB)が終了すると、割り込まれたプログラムブロック(たとえば、プログラムサイクル OB)の実行が続けられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

793

基本命令
3.2 FBD

注記
RET 命令と JMP および JMPN との関係
ネットワークが既に「JMP:RLO = 1 ならばジャンプ」または「JMPN:RLO = 0 ならばジャンプ」命令を含む場合、「RET:Return」命令を使用してはいけません。1 つのネットワークでは、1 つのジャンプコイルのみを使用できます。

戻り値(オペランド)の可能な設定
この命令の戻り値は、以下の値を持つことができます。
• Ret (RLO、論理演算の結果 RLO に対応します。条件が TRUE の場合だけ、RET 命令は条件付き命令として実行されるため、シグナル状態「1」は呼び出しプログラムブロックのイネーブル出力 ENO に提供されます。)• Ret True または Ret False (定数のそれぞれの値、TRUE または FALSE が、呼び出しプロ
グラムブロックに提供されます。)• Ret 値(BOOL タグ<Operand>の値が、呼び出しプログラムブロックに提供されます。)
この命令の戻り値をセットするには、命令の小さい黄色の三角形をクリックして、ドロッ
プダウンリストで必要な値を選択します。
次の表に、呼び出されたプログラムブロック内のネットワークでこの命令がプログラムされているときの呼び出しプログラムブロックのステータスを示します。
[RLO]

戻り値

呼び出しプログラムブロックの ENO

1

[RLO]

1

TRUE

1

FALSE

0

<Operand><Operand>

可能なメモリ領域 I、Q、M、
D、L、T、および C での
BOOL タグ
0[RLO]

プログラム実行は、呼び出されたプロ

TRUE

グラムブロックの次のネットワークでFALSE

続けられます。

<Operand>794

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
ಯ7DJ,QBಯ! 

ಯ7DJ,QBಯ

)$/6(
5(7

オペランド「TagIn_1」または「TagIn_2」のいずれかのシグナル状態が「1」の場合、命令が実行されます。プログラム実行は、呼び出されたプログラムブロックで終了し、呼び出しプログラムブロックで続けられます。呼び出しプログラムブロックのイネーブル出力
ENO は、シグナル状態「0」にリセットされます。

3.2.8.7

ランタイム制御

ENDIS_PW: パスワードの適正化の制限および有効化

説明「パスワード正当性の制限および有効化」命令を使用して、設定されたパスワードを CPU に対して正当化できるかどうかを指定します。このため、正しいパスワードがわかっている
場合でも、正規の接続を防止することができます。
命令呼び出し時に REQ パラメータのシグナル状態が「0」の場合、現在設定されている状態
が、出力パラメータに表示されます。入力パラメータに変更を加えても、変更は出力パラメータに転送されません。
この命令が呼び出され、REQ パラメータのシグナル状態が「1」のとき、パスワードに関するシグナル状態が入力パラメータ(F_PWD、FULL_PWD、R_PWD、HMI_PWD)から取得されます。
• シグナル状態「0」が存在する場合、パスワードによる承認が許可されません。
• シグナル状態「1」が存在する場合、パスワードを使用できます。
パスワードの有効化または無効化を個別に許可または禁止することができます。たとえば、
フェールセーフパスワードを除く、すべてのパスワードを禁止することができます。したがって、アクセスオプションを小さいユーザーグループに制限することができます。出力パラメータ(F_PWD_ON、FULL_PWD_ON、R_PWD_ON、HMI_PWD_ON)は、REQ パラメー
タに関係なく、常にパスワード使用の現在のステータスを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

795

基本命令
3.2 FBD
設定済みでないパスワードの場合、入力のシグナル状態が TRUE でなければならず、出力にシグナル状態 TRUE を返します。フェールセーフパスワードは、F-CPU の場合のみ設定できるため、標準 CPU では、常にシグナル状態 TRUE と相互接続する必要があります。命令がエラーを返す場合、この呼び出しには効果がなく、直前のロックがまだ有効です。
無効なパスワードは、以下の条件で再度有効にすることができます。
• CPU が工場出荷時設定にリセットされること。
• S7-1500 CPU のフロントパネルが、パスワードを再度有効にすることができる適切なメニューに移動することができるダイアログをサポートしていること。
• 「パスワードの適正化の制限および有効化」命令を呼び出す場合、目的のパスワードの
入力パラメータのシグナル状態が「1」であること。
• モードセレクタを STOP に設定すること。このスイッチの設定を RUN に戻すと直ちに、
パスワードの適正化に対する制限が再確立されます。
• S7-1200 CPU への空きメモリカード(転送モジュールまたはプログラムカード)の差し込
み。
• S7-1200 CPU では、電源オフから電源オンへの移行によって、保護が無効になります。
この場合、プログラム(たとえば、スタートアップ OB)で、再度、「パスワード正当性の制限および有効化」命令を呼び出す必要があります。
注記「パスワード正当性の制限および有効化」命令は、HMI パスワードが有効にされていない場
合、HMI システムからのアクセスをブロックします。
注記
既存の適正化された接続はアクセス権を保持し、「パスワードの適正化の制限および有効化」命令を使用してそれらを制限することはできません。

S7-1500 CPU での意図しないロックアウトの防止
CPU のフロントパネルで設定を行うことができ、CPU は最新の設定を保存します。
偶発的なロックアウトを防止するには、S7-1500 CPU でモードセレクタを STOP に設定することによって保護を無効にすることができます。モードセレクタを RUN に設定することによって、「パスワードの適正化の制限および有効化」命令を再度呼び出したり、フロ
ントパネルで追加の操作を実行したりせずに、保護が自動的に再度有効になります。

796

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

S7-1200 CPU での意図しないロックアウトの防止
S7-1200 CPU にはモードスイッチが存在しないため、電源オフから電源オンへの移行時の保護は無効です。このため、ユーザープログラム内の特定のプログラムシーケンスによって偶発的なロックアウトを防止することをお奨めします。
これを行うには、サイクリック割り込み OB、またはメイン OB (OB 1)のタイマのいずれかを使用して、時間制御をプログラミングします。これによって、電源オフから電源オンへの移行と、関連する保護の無効化の後、比較的迅速に、各 OB (たとえば、OB 1 または OB 35)
内で「パスワード正当性の制限および有効化」命令を呼び出すオプションが可能になります。スタートアップ OB (OB 100)でこの命令を呼び出して、この命令が無効で、パスワード
正当化の制限が存在しない時間帯を比較的小さなものに保ちます。この手順は、未許可のアクセスに対する可能な最大限の保護を提供します。
偶発的なロックアウトが発生した場合は、スタートアップ OB での呼び出しをスキップし(たとえば、入力パラメータを照会することによって)、ロックが再び有効になる前に、CPUへ接続確立する時間(たとえば、10 秒～1 分)を設定することができます。
ユーザープログラムコードにタイマが存在しない場合にロックアウトが発生した場合は、空の転送カードまたはプログラムカードを CPU に挿入します。空の転送カードまたはプロ
グラムカードは、CPU の内部ロードメモリを削除します。この後、ユーザープログラムを再び STEP 7 から CPU にダウンロードする必要があります。

S7-1200 CPU でパスワードが失われた場合の手順
パスワード保護された S7-1200 CPU のパスワードを紛失した場合は、空の転送カードまたはプログラムカードを使用して、パスワード保護されたプログラムを削除します。空の転送カードまたはプログラムカードは、CPU の内部ロードメモリを削除します。その後、新しいユーザープログラムを STEP 7 Basic から CPU にロードすることができます。
警告
空の転送カードの挿入
ランタイム中に CPU にトランスファカードを挿入すると、CPU は STOP モードに切り替わります。動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
転送カードを取り出すと、転送カードの内容が内部ロードメモリで使用可能になります。
この時点に、カードにプログラムが含まれていないことを確認してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

797

基本命令
3.2 FBD
警告
空のプログラムカードの挿入
ランタイム中に CPU にプログラムカードを挿入すると、CPU は STOP モードに移行します。動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
プログラムカードが空であることを確認してください。内部ロードメモリが空のプログ
ラムカードにコピーされます。直前に空であったプログラムカードを取り出すと、内部ロードメモリは空になります。
CPU を RUN モードに切り替える前に、転送カードまたはプログラムカードを取り出す必要があります。

動作モードへのパスワードの使用の影響
次の表に、「パスワードの適正化の制限および有効化」命令によるパスワードの使用が動作モードと対応するユーザーの操作に与える影響を示します。
アクション

命令によるパスワードの保護

その後の基本状態

無効• STOP への動作モードの切り替え(制限なし)• メモリの手動リセット(PG、切り替え、MC(モーションコントロール)の変更)• 工場出荷時設定へのリセット
電源オン後の基本状態• S7-1200-CPU:
ロックは無効で、プログラム(たとえば、スタートアップ OB)で再びこの命令を呼び出す必要があります。
• S7-1500 CPU:
有効(電源オフの前にロックが有効になった場合).パスワードの不許可のオ
プションは保持型です。

動作モードの移行 RUN/STARTUP/HOLD -> STOP 有効(命令、エラーまたは通信の終了によって)また パスワードはまだ使用できません。
は STOP -> STARTUP/RUN/HOLD

798

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「パスワードの適正化の制限および有効化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

Input

BOOL

I、Q、M、D、L イネーブル入力

ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

REQ

Input

BOOL

I、Q、M、D、REQ パラメータのシグナ

L、または定数ル状態が「0」の場合
は、現在設定されているパスワードのシグナル状
態が照会されます。

F_PWD

Input

BOOL

I、Q、M、D、

フェールセーフなどの読

L、または定数

み取り/書き込みアクセス• F_PWD = "0":パスワー
ドを許可しない• F_PWD = "1":パスワー
ドを許可する

FULL_PWD

Input

BOOL

I、Q、M、D、

読み取り/書き込みアクセ

L、または定数ス• FULL_PWD = "0":パス
ワードを許可しない• FULL_PWD = "1":パス
ワードを許可する

R_PWD

Input

BOOL

I、Q、M、D、

読み取りアクセス

L、または定数• R_PWD = "0":パスワー
ドを許可しない• R_PWD = "1":パスワー
ドを許可する

HMI_PWD

Input

BOOL

I、Q、M、D、HMI アクセス

L、または定数• HMI_PWD = "0":パスワードを許可しない• HMI_PWD = "1":パスワードを許可する

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

799

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

F_PWD_ON Output

BOOL

I、Q、M、D、L フェールセーフなどの読
み取り/書き込みアクセス• F_PWD_ON = "0":パス
ワードを許可しない• F_PWD_ON = "1":パス
ワードを許可する

FULL_PWD_ Output

BOOL

I、Q、M、D、L 読み取り/書き込みアクセ

ON

スステータス• FULL_PWD_ON = "0":パスワードを許可しない• FULL_PWD_ON = "1":
パスワードを許可する

R_PWD_ON Output

BOOL

I、Q、M、D、L 読み取りアクセスステー
タス• R_PWD_ON = "0":パス
ワードを許可しない• R_PWD_ON = "1":パス
ワードを許可する

HMI_PWD_

Output

BOOL

I、Q、M、D、L HMI アクセスステータス

ON• HMI_PWD_ON = "0":パスワードを許可しない• HMI_PWD_ON = "1":パスワードを許可する

RET_VAL

Output

WORD

I、Q、M、D、L エラー情報

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)

800

0000

エラーなし

8090

「パスワードの適正化の制限および有効化」命令はサポートされていません

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
エラーコ
ード*

説明

(W#16#..
.)
80D0

フェールセーフのパスワードが未設定です。標準 CPU では、シグナル状態はTRUE であることが必要です。

80D1

読み取り/書き込みアクセスが未設定です

80D2

読み取りアクセスが未設定です

80D3

HMI アクセスが未設定です*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

PC システム
SHUT_DOWN:ターゲットシステムのシャットダウン

説明
命令「SHUT_DOWN:ターゲットシステムのシャットダウン」を使用して、PC ベースのオートメーションシステムをシャットダウンし、PC ベースのオートメーションシステム上のS7 ソフトウェアコントローラ CPU 150xS または Windows を再起動することができます。
この命令は、[命令]タスクカードの[基本命令|プログラム制御|ランタイム制御]で使用できます。
再起動は、たとえば、以下の場合に推奨されます。
• 産業用 UPS (無停電電源装置)がデジタル入力経由で電源異常を報告する場合• Windows が応答を停止するか、「ブルースクリーン」を表示する場合• ユーザープログラムで呼び出されるエラー OB が多すぎる場合

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

801

基本命令
3.2 FBD

パラメータ
以下の表に、「ターゲットシステムのシャットダウン」命令のパラメータを示します。
パラメー 宣言

データ

タ

タイプ

MODE

入力

UINT

メモリ領域

説明

I、Q、M、D、L、

MODE = 1:CPU 150xS および Windows のシャットダ

または定数

ウン
CPU が STOP に移行し、保持データを保存します。
その後、CPU および Windows がシャットダウンされます。システムを手動で再起動する必要があります。
MODE = 2:CPU 150xS の再起動
CPU が STOP に移行し、保持データを保存します。
その後、CPU がシャットダウンされ、再起動されます。
MODE = 3:Windows の再起動。CPU は RUN のままになります。Windows が再起動されます(TIA ポータ
ル V14 以降では、MODE 3 は下位互換性のためだけに保持されます。MODE 4 または MODE 5 を使用することをお勧めします)。
MODE = 4:Windows が正常にシャットダウンされ、再起動されます。CPU は RUN のままになります。
MODE = 5:Windows の再起動(MODE 3 と同等。例
外:MODE 5 は、Windows がクラッシュした場合にのみ使用してください)。

COMMEN 入力

STRING

I、Q、M、D、LT

モード = 1、3 および 4 では、再起動の理由を指定できます。理由は Windows イベントログに出力されます。

Ret_Val

戻り値

WORD

Q、M、D、L

Ret_Val = 0:障害なし
Ret_Val = 8090:MODE に渡された値はサポートされていません。
Ret_Val = 8091:Windows が Shut_Down 命令の呼び出しに応答しません(モード 3 および 4 に対してのみ
有効)。
Ret_Val = 8092:このエラーが発生した場合は、SIMATIC カスタマーサポートに連絡してください(モード 3 および 4 に対してのみ有効)。

802

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

RE_TRIGR: サイクルタイムモニタのリスタート
説明「サイクルタイムモニタのリスタート」命令は、CPU のサイクルモニタ時間のリスタートに使用します。この場合、ユーザーが CPU 構成で設定した時間でサイクルモニタ時間が再起動します。
この命令が、ハードウェア割り込みまたは診断エラー割り込みなど、優先度の高いブロッ
クで呼び出された場合、この命令は実行されず、イネーブル出力 ENO がシグナル状態「0」を返します。
この命令は、呼び出し数に関わりなく、一定期間(最大プログラムサイクルの 10 倍)以内に完全に実行されます。時間が期限切れになると、プログラムサイクルは延長できなくなります。

この命令の呼び出し
以下の呼び出し条件が適用されます。
• S7-1200 シリーズの CPU には以下が適用されます。
ファームウェアバージョン 2.2 より前のバージョンでは、優先度 1 のプログラムサイ
クルオーガニゼーションブロックでのみこの命令を呼び出すことができます。これは、すべてのオーガニゼーションブロックの中の最小優先度に対応します。優先度が高い
オーガニゼーションブロックでこの命令を呼び出すと、命令は実行されず、結果(BR ビット、イネーブル出力 ENO)は常に「0」です。
ファームウェアバージョン 2.2 以降の場合、優先度に関わりなく、すべてのオーガニ
ゼーションブロックでこの命令を呼び出すことができます。
• S7-1500 シリーズの CPU には以下が適用されます。
優先度に関わりなく、すべてのオーガニゼーションブロックでこの命令を呼び出すことができます。

パラメータ「サイクルタイムモニタのリスタート」命令には、パラメータはありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

803

基本命令
3.2 FBD

STP: プログラム終了

説明「プログラムの終了」命令を使って、CPU を STOP モードに設定し、プログラムの実行を終了します。 RUN から STOP への変更の影響は CPU の構成によって異なります。
命令の入力の(RLO)が「1」の場合、CPU が STOP モードに移行し、プログラムの実行が終了します。 命令の出力のシグナル状態は評価されません。
命令の入力の RLO が「0」の場合、命令は実行されません。

パラメータ「プログラムの終了」命令にはパラメータはありません。

GET_ERROR:ローカルでエラーを取得
説明「ローカルでエラーを取得」命令は、プログラムブロック内でのエラーの発生を照会するために使用されます。これは、通常、プログラミングまたはアクセスエラーを含みます。
システムがプログラムブロックの実行中にエラーを報告した場合、命令の最後の実行の後、このエラーがブロックの実行中に発生した最初のエラーの場合、詳細情報が、ERROR 出力のオペランドに格納されます。
ERROR 出力では、「ErrorStruct」システムデータタイプのオペランドのみを指定できます。
「ErrorStruct」システムデータタイプは、エラー情報が保存されている正確な構造体を指定します。追加の命令を使用することで、この構造体とプログラムが適切な応答をするかを評価できます。プログラムブロックで複数のエラーが発生した場合、発生した最初のエラ

804

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBDーが修復された後にのみ、発生した次のエラーに関するエラー情報が命令によって出力されます。
注記
出力 ERRORERROR 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。
• イネーブル出力 ENO を照会する。

イネーブル入力 EN がシグナル状態「1」を返し、エラー情報が存在する場合のみ、イネーブル出力 ENO がセットされます。これらの条件の 1 つが満たされない場合、残りのプ
ログラム実行はこの命令の影響を受けません。
注記
ローカルエラー処理の有効化
この命令をプログラムブロックのプログラムコードに挿入すると直ちに、このローカルエ
ラー処理が有効になり、エラーが発生したとき、既定のシステム応答は無視されます。

エラー処理のオプション
エラー処理のオプションの概要は、AUTOHOTSPOT を参照してください。
複数のエラー処理オプションを含むローカルエラー処理の詳細な例は、AUTOHOTSPOT を参照してください。

パラメータ
次の表に、「ローカルでエラーを取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

ERROR

ErrorStruct

D、L

エラー情報

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

805

基本命令
3.2 FBD

データタイプ「ErrorStruct」「ErrorStruct」データタイプは、グローバルデータブロックまたはブロックインターフェースに挿入することができます。挿入する都度、データ構造体に対して異なる名前を割り当
てると、そのデータタイプを複数回挿入することができます。そのデータ構造体の名前と、個々の構造体エレメントの名前は変更できません。エラー情報をグローバルデータブロッ
クに保存すると、他のプログラムブロックがエラー情報を読み出すこともできます。
次の表に、「ErrorStruct」データタイプの構造体を示します。
構造体コンポーネント

データタイプ説明

ERROR_ID

WORD

エラー ID

FLAGS

BYTE

エラーがプログラムブロック呼び出
し中に発生したかどうかを示します。
16#01:プログラムブロック呼び出し中のエラー
16#00:プログラムブロック呼び出し
中のエラーなし

REACTION

BYTE

既定の応答
0:無視(書き込みエラー)
1:代替値「0」で続行(読み取りエラー)
2:命令をスキップ(システムエラー)

CODE_ADDRESS

CREFプログラムブロックのアドレスおよびタイプに関する情報

BLOCK_TYPE

BYTE

エラーが発生したプログラムブロッ
クのタイプ:
1:オーガニゼーションブロック(OB)2:ファンクション(FC)3:ファンクションブロック(FB)

CB_NUMBER

UINT

プログラムブロックの番号

OFFSET

UDINT

内部メモリへの参照

MODE

BYTE

オペランドのアドレスに関する情報

OPERAND_NUMBER

UINT

マシンコマンドのオペランド番号

POINTER_NUMBER_LOCATIUINT(A) 内部ポインタ

ON

806

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
構造体コンポーネント

データタイプ説明

SLOT_NUMBER_SCOPE

UINT(B) 内部メモリの記憶領域

DATA_ADDRESS

NREF

オペランドのアドレスに関する情報

BYTE(C) メモリ領域

AREA

L:16#40...16#7F、16#86、16#87、
16#8E、16#8F、16#C0...16#FF
I:16#81
Q:16#82
M:16#83
DB:16#40、16#84、16#85、
16#8A、16#8B
PI:16#01
PQ:16#02
テクノロジーオブジェクト:16#04
DB_NUMBER

UINT(D) データブロックの番号

OFFSET

UDINT(E) オペランドの相対アドレス

構造体コンポーネント「ERROR_ID」
次の表に、構造体コンポーネント「ERROR_ID」で出力できる値を示します。
ID*(16 進数)ID*(10 進)

説明

0

0

エラーなし

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

807

基本命令
3.2 FBDID*(16 進数)ID*(10 進)

説明

2533

9523

無効なリファレンスが使用されました

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が間違っているか、またはファンクションが存在しま
せん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が間違っているか、またはファンクションブロックが存在しません。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

9632

TP の内部エラー

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

808

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
!
5HDO

08/
$XWR 5HDO)LHOG>LQGH[@

,1



,1

(1

)LHOG>LQGH[@

,1

287



,1

(12

7DJ2XW

7DJ2XWB(QDEOHG*(7B(5525(5525(1

(UURU(12
%<7(

(UURUB5($&7,21

,1



,1

7DJ2XWB(QDEOHG
5#Field[#index]タグへのアクセスでエラーが発生しました。「乗算」命令および#TagOut_Enabled オペランドのイネーブル出力 ENO のシグナル状態は、読み取り/アクセ
スエラーに関係なく「1」になり、乗算は「0.0」の値を使用して実行されます。このエラ
ーシナリオが発生した場合は、エラーを取得するために、「乗算」命令の後に「ローカルでエラーを取得」命令をプログラミングすることを推奨します。「ローカルでエラーを取得」
命令によって供給されるエラー情報は、比較命令「等しい」を使用して評価されます。
「#Error.REACTION」構造コンポーネントの値が「1」の場合、これは読み取り/アクセスエ
ラーが関係しており、#TagOut_Enabled 出力がリセットされます。

GET_ERR_ID: ローカルでエラー ID を取得
説明「ローカルでエラー ID を取得」命令は、ブロック内のエラーの発生のクエリに使用されます。これは、通常、アクセスエラーによって生じます。この命令の最後の実行の後に、システムがブロック処理中にブロック実行に関するエラーを報告すると、タグで発生した最初のエラーのエラー ID が ID 出力に格納されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

809

基本命令
3.2 FBD
ID 出力では、WORD データタイプのオペランドのみを指定できます。ブロックで複数のエラーが発生した場合、発生した最初のエラーが修復された後にのみ、命令で発生した次のエラーのエラー ID が出力されます。
注記
ID 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。
• イネーブル出力 ENO を照会する。

命令「ローカルでエラー ID を取得」のイネーブル出力 ENO は、イネーブル入力 EN がシグナル状態「1」を返し、エラー情報が存在する場合のみ設定されます。これらの条件の 1つが満たされない場合、残りのプログラム実行は「ローカルでエラー ID を取得」命令の影
響を受けません。
この命令を他のトラブルシューティングオプションと組み合わせて実装する方法の例は、「関連項目」を参照してください。
注記「ローカルでエラー ID を取得」命令は、ブロック内のローカルエラー処理を可能にします。
「ローカルでエラー ID を取得」命令がブロックのプログラムコードに挿入されている場合、エラー発生時に、あらかじめ定義されたすべてのシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要は、AUTOHOTSPOT を参照してください。
複数のエラー処理オプションを含むローカルエラー処理の詳細な例は、AUTOHOTSPOT を参照してください。

パラメータ
次の表に、「ローカルでエラー ID を取得」命令のパラメータを示します。

810

パラメータ 宣言

データタイプ

メモリ領域

ID

WORD

I、Q、M、D、L エラー ID

Output説明

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

ID パラメータ
次の表に、ID パラメータに出力できる値を示します。
ID*(16 進数)ID*(10 進)

説明

0

0

エラーなし

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

無効なリファレンスが使用されました

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が間違っているか、またはファンクションが存在しま
せん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が間違っているか、またはファンクションブロックが存在しません。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

9632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

TP の内部エラー

811

基本命令
3.2 FBDID*(16 進数)ID*(10 進)

説明

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
!
5HDO

08/
$XWR 5HDO)LHOG>LQGH[@

,1



,1

(1

)LHOG>LQGH[@

,1

287



,1

(12

7DJ2XW

7DJ2XWB(QDEOHG*(7B(55B,','(1

7DJ,'(12
,17
7DJ,',1

,1

029(



(1

287

,1

(12

7DJ2XW#Field[#index]タグへのアクセスでエラーが発生しました。「乗算」命令および#TagOut_Enabled オペランドのイネーブル出力 ENO のシグナル状態は、読み取り/アクセ
スエラーに関係なく「1」になり、乗算は「0.0」の値を使用して実行されます。このエラ
ーシナリオが発生した場合は、エラーを取得するために、「乗算」命令の後に「ローカルでエラー ID を取得」命令をプログラミングすることを推奨します。「ローカルでエラー IDを取得」命令によって供給されるエラー情報は、比較命令「等しい」を使用して評価されます。#TagID オペランドが ID 2522 を返す場合、これは読み取り/アクセスエラーが関係しており、値「100.0」が#TagOut 出力に書き込まれます。

812

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

INIT_RD: すべての保持データの初期化
説明「すべての保持データを初期化」命令を使用すると、すべてのデータブロック、ビットメ
モリ、および SIMATIC タイマとカウンタの保持データが同時にリセットされます。 この命
令は、実行するとプログラムサイクル持続時間を超過するため、スタートアップ OB 内でのみ実行が可能です。

パラメータ
次の表に、「すべての保持データを初期化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

許可入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L 許可出力

REQ

Input

BOOL

I、Q、M、D、

入力「REQ」のシグナル

L、T、C、また状態が「1」の場合、すは定数

べての保持データがリセットされます。

RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

813

基本命令
3.2 FBD

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B5

この命令はスタートアップ OB 内にプログラムされていないため、実行でき
ません。

一般エラ

関連項目:"GET_ERR_ID: ローカルでエラー ID を取得

ー情報*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。 表示形式の変更についての情報は、「関連項目」に記載されています。

例
次の例で、命令がどのように動作するかを示します。
,1,7B5'
ಯ7DJ2XWಯಯ7DJ,QBಯ

(1

ಯ7DJB5(4ಯ

5(4(12
5(7B9$/

ಯ7DJB5HVXOWಯ

オペランド「TagIn_1」および「Tag_REQ」のシグナル状態が「1」の場合、命令が実行されます。 すべてのデータブロック、ビットメモリ、および SIMATIC タイマの保持データとカウンタがリセットされます。 この命令がエラーなしで実行されると、ENO 許可出力のシグナル状態は「1」となります。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 809)

814

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

WAIT: 遅延時間の設定
説明「遅延時間の設定」命令は、指定された時間の間プログラム実行を一時停止します。命令のWT パラメータに、マイクロ秒で時間を指定します。
遅延時間は、-32768 から最大+32767 マイクロ秒 (μs)が設定可能です。可能な限り最短の遅延時間は CPU に応じて決まり、この命令の実行時間に対応します。
この命令の実行は、優先度の高いイベントによって割り込まれる場合があり、その場合は、エラー情報を返しません。
注記
負の遅延時間パラメータ WT で負の遅延時間を指定すると、イネーブル出力 ENO または RLO と BR ビットが、シグナル状態 FALSE を返します。負の遅延時間は CPU には影響しません。イネー
ブル出力 ENO にリンクされた以下の命令は、LAD または FBD では実行されません。

パラメータ
次の表に、「遅延時間の設定」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

WT

Input

INT

I、Q、M、D、

遅延時間(μs)

L、P、または定
数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

815

基本命令
3.2 FBD

RUNTIME: プログラムランタイムの測定

説明「プログラムランタイムの測定」命令を使用して、プログラム全体、個々のブロック、またはコマンドシーケンスのランタイムを測定します。
プログラム全体のランタイムを測定する場合は、「プログラムランタイムの測定」命令をOB1 で呼び出します。最初の呼び出しでランタイムの測定が開始され、2 回目の呼び出し後に出力 RET_VAL がプログラムのランタイムを返します。測定されたランタイムには、たとえば上位レベルのイベントや通信による割り込みなど、プログラム実行中に発生する可能性のあるすべての CPU プロセスが含まれます。「プログラムランタイムの測定」命令はCPU の内部カウンタを読み取り、値を IN-OUT パラメータ MEM に書き込みます。この命令
は、内部カウンタ周波数に基づいて現在のプログラムランタイムを計算し、出力 RET_VALに書き込みます。
個々のブロック、または個々のコマンドシーケンスのランタイムを測定する場合、3 つの個別のネットワークが必要です。プログラム内の個々のネットワークで、「プログラムラ
ンタイムの測定」命令を呼び出します。命令のこの最初の呼び出しでランタイム測定の開始位置を設定します。その後、次のネットワーク内で目的のプログラムブロック、または
コマンドシーケンスを呼び出します。他のネットワーク内で、「プログラムランタイムの測定」命令の 2 回目の呼び出しを行い、命令の最初の呼び出しで行ったように同じメモリを
IN-OUT パラメータ MEM に割り当てます。3 番目のネットワークの「プログラムランタイ
ムの測定」命令は内部 CPU カウンタを読み取り、内部カウンタ周波数に基づいてプログ
ラムブロック、またはコマンドシーケンスの現在のランタイムを計算し、それを出力
RET_VAL に書き込みます。
「プログラムランタイムの測定」命令は、内部の高周波数カウンタを使用して時間を計算します。カウンタがオーバーフローすると、この命令は 0.0 以下の値を返します。S7-1200
CPU でファームウェアバージョン V4.2 より前のバージョンの場合、これが最大で分あたり
1 回起きる場合があります。これらのランタイム値は無視してください。
注記
コマンドシーケンスのランタイムは、正確に測定することはできません。これは、コマン
ドシーケンス内の命令のシーケンスが、プログラムを最適にコンパイルする過程で変更されるためです。

816

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「プログラムランタイムの測定」命令のパラメータをリストします。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

MEM

InOut

LREAL

I、Q、M、D、L 内容は、内部目的専用です。

RET_VAL

Output

LREAL

I、Q、M、D、L 測定したランタイムを秒単位で返します例
次の例は、命令がプログラムブロックのランタイム計算に基づいてどのように動作するかを示します。
ネットワーク 1:
5817,0(
ಯ7DJ,Qಯಯ7DJ0HPRU\ಯ

(1

(12

0(0

5(7B9$/

ಯ7DJ5HVXOWಯ

ネットワーク 2:
'%
ಯ%HVWBEHIRUHBGDWHB'%ಯ
)%
ಯ%HVWBEHIRUHBGDWHಯ

(1

(12

ネットワーク 3:5817,0(
ಯ7DJ,Qಯಯ7DJ0HPRU\ಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

(1
0(0

(12
5(7B9$/

ಯ7DJ5HVXOWB5XQWLPHಯ

817

基本命令
3.2 FBD
ネットワーク 1 の「TagIn1」オペランドのシグナル状態が「1」の場合、この命令が実行されます。この命令の最初の呼び出しでランタイムの測定が開始され、TagMemory オペ
ランドでの命令の 2 回目の呼び出しの参照先としてバッファリングされます。
ネットワーク 2 で、「Best_before_date」プログラムブロック FB1 が呼び出されます。
FB1 プログラムブロックの実行が終了し、「TagIn1」オペランドのシグナル状態が「1」の場合、ネットワーク 3 の命令が実行されます。命令の 2 回目の呼び出しにより、プログ
ラムブロックのランタイムが計算され、結果が出力 RET_VAL に書き込まれます。
プログラムの合計サイクルタイムを測定する方法の詳細な例は、Siemens Industry Online
Support の次のエントリ ID を参照してください。87668055 (https://
support.industry.siemens.com/cs/ww/en/view/87668055)

3.2.9

ワード論理演算

3.2.9.1

AND: AND 演算

説明「AND 演算」命令を使用し、入力 IN1 の値を入力 IN2 の値に AND ロジックでビットごとにリンクし、結果を出力 OUT で照会します。
この命令が実行されると、入力 IN1 の値のビット 0 が AND ロジックで入力 IN2 の値のビ
ット 0 にリンクされます。 結果は出力 OUT のビット 0 に格納されます。 同じ論理演算が、指定された値の他のすべてのビットに実行されます。
初期状態では、この命令ボックスには 2 つ以上の入力(IN1 および IN2)が含まれています。
入力数は拡張できます。 挿入された入力は、ボックス内で昇順に番号付けされます。 この命令の実行中に、すべての使用可能な入力パラメータの値が AND ロジックでリンクされます。 結果は出力「OUT」に格納されます。
論理演算の両方のビットのシグナル状態が「1」になる場合のみ、結果ビットのシグナル状
態は「1」です。 論理演算の 2 つのビットの 1 つのシグナル状態が「0」の場合、対応する
結果ビットはリセットされます。

818

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「AND 演算」命令のパラメータを示します。
パラメータ
EN

宣言

データタイプ

Input

ENO
IN1

BOOL

Output
Input

BOOL
ビット列

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

I、Q、M、

I、Q、M、

説明
許可入力
許可出力
論理演算の最

D、L、P、ま D、L、P、ま 初の値
IN2

Input

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、

論理演算の 2

D、L、P、ま D、L、P、ま 番目の値
INn

Input

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、オプションの

D、L、P、ま D、L、P、ま 入力値
OUT

Output

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、

D、L、P

D、L、P

命令の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
$1':25'
ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

819

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value1

0101 0101 0101 0101

IN2

Tag_Value20000 0000 0000 1111

OUT

Tag_Result

0000 0000 0000 0101

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「Tag_Value1」の値が、AND によってオペランド「Tag_Value2」の値にリンクされます。
結果はビット単位でマッピングされ、オペランド「Tag_Result」に送信されます。 許可出力
ENO および出力「TagOut」のシグナル状態が「1」にセットされます。

3.2.9.2

OR: OR 論理和演算

説明「OR 演算」命令を使用し、入力 IN1 の値を入力 IN2 の値に OR ロジックでビットごとにリンクし、結果を出力 OUT で照会します。
この命令が実行されると、入力 IN1 の値のビット 0 が OR ロジックで入力 IN2 の値のビッ
ト 0 にリンクされます。 結果は出力 OUT のビット 0 に格納されます。 同じ論理演算が、指定されたタグのすべてのビットについて実行されます。
初期状態では、この命令ボックスには 2 つ以上の入力(IN1 および IN2)が含まれています。
入力数は命令ボックスで拡張できます。 挿入された入力は、ボックス内で昇順に番号付けされます。 この命令の実行中に、すべての使用可能な入力パラメータの値が OR ロジックでリンクされます。 結果は出力「OUT」に格納されます。
論理演算の 2 つのビットのうち少なくとも 1 つのシグナル状態が「1」ならば、結果ビットのシグナル状態は「1」になります。 論理演算の両方のビットのシグナル状態が「0」の場合、対応する結果ビットがリセットされます。

820

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「OR 演算」命令のパラメータを示します。
パラメータ
EN

宣言

データタイプ

Input

ENO
IN1

BOOL

Output
Input

BOOL
ビット列

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

I、Q、M、

I、Q、M、

説明
許可入力
許可出力
論理演算の最

D、L、P、ま D、L、P、ま 初の値
IN2

Input

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、

論理演算の 2

D、L、P、ま D、L、P、ま 番目の値
INn

Input

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、オプションの

D、L、P、ま D、L、P、ま 入力値
OUT

Output

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、

D、L、P

D、L、P

命令の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
25:25'
ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

821

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value1

0101 0101 0101 0101

IN2

Tag_Value20000 0000 0000 1111

OUT

Tag_Result

0101 0101 0101 1111

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「Tag_Value1」の値が、OR によってオペランド「Tag_Value2」の値にリンクされます。結果はビット単位でマッピングされ、オペランド「Tag_Result」に送信されます。許可出力
ENO および出力「TagOut」のシグナル状態が「1」にセットされます。

3.2.9.3

XOR: EXCLUSIVE OR 排他的論理和演算

説明「排他的論理和演算」命令を使用して、入力 IN1 の値を入力 IN2 の値に排他的 OR ロジッ
クでビットごとにリンクし、結果を出力 OUT で照会することができます。
この命令が実行されると、入力 IN1 の値のビット 0 が排他的 OR ロジックで入力 IN2 の値のビット 0 にリンクされます。 結果は出力 OUT のビット 0 に格納されます。 同じ論理演算
が、指定された値のすべての他のビットについて実行されます。
初期状態では、この命令ボックスには 2 つ以上の入力(IN1 および IN2)が含まれています。
入力数は命令ボックスで拡張できます。 挿入された入力は、ボックス内で昇順に番号付けされます。 この命令の実行中に、すべての使用可能な入力パラメータの値が排他的 OR ロ
ジックでリンクされます。結果は出力「OUT」に格納されます。
論理演算の 2 つのビットのうち 1 つのシグナル状態が「1」の場合、結果ビットのシグナル
状態は「1」になります。 論理演算の両方のビットのシグナル状態が「1」または「0」の場合、対応する結果ビットがリセットされます。

822

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「排他的論理和演算」命令のパラメータを示します。
パラメータ
EN

宣言

データタイプ

Input

ENO
IN1

BOOL

Output
Input

BOOL
ビット列

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

I、Q、M、

I、Q、M、

説明
許可入力
許可出力
論理演算の最

D、L、P、ま D、L、P、ま 初の値
IN2

Input

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、

論理演算の 2

D、L、P、ま D、L、P、ま 番目の値
INn

Input

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、オプションの

D、L、P、ま D、L、P、ま 入力値
OUT

Output

ビット列

たは定数

たは定数

I、Q、M、

I、Q、M、

D、L、P

D、L、P

命令の結果

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
;25:25'
ಯ7DJ,Qಯ

(1

ಯ7DJB9DOXHಯ

,1

287

ಯ7DJB9DOXHಯ

,1

(12

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ಯ7DJB5HVXOWಯಯ7DJ2XWಯ

823

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value1

0101 0101 0101 0101

IN2

Tag_Value20000 0000 0000 1111

OUT

Tag_Result

0101 0101 0101 1010

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 オペランド「Tag_Value1」の値が、排他的 OR によってオペランド「Tag_Value2」の値にリンクされます。結果はビット単位でマッピングされ、オペランド「Tag_Result」に送信されます。
許可出力 ENO および出力「TagOut」のシグナル状態が「1」にセットされます。

3.2.9.4

INVERT: 1 の補数の作成

説明「1 の補数の作成」命令を使用して、入力 IN のビットのシグナル状態を反転します。 この命令が処理されると、16 進数マスク(16 ビットの数では W#16#FFFF、または 32 ビットの数では DW#16#FFFF FFFF)によって入力 IN の値が排他的 OR にリンクされます。 これによって、個々のビットのシグナル状態を反転させ、出力 OUT に格納します。

パラメータ
次の表に、「1 の補数の作成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

EN

Input

BOOL

ENO

Output

BOOL

許可入力

D、L、T、C

I、Q、M、 I、Q、M、
D、L

824

S7-1500

I、Q、M、 I、Q、M、
D、L

説明

許可出力

D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域
S7-1200

IN

説明

S7-1500

ビット列、整数 I、Q、M、 I、Q、M、

Input

D、L、P、

入力値

D、L、P、

または定数 または定数
OUT

Output

ビット列、整数 I、Q、M、 I、Q、M、
D、L、P

D、L、P

入力 IN の値の 1の補数

命令ボックスの[<???>]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように機能するかを示します。
,19,17

ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の表に、命令が特定のオペランド値を使用してどのように機能するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

W#16#000F

W#16#7E

OUT

TagOut_Value

W#16#FFF0

W#16#81

オペランド「TagIn」のシグナル状態が「1」の場合、「1 の補数の作成」命令が実行されます。 この命令は、入力「TagIn_Value」の個々のビットのシグナル状態を反転させ、結果を出力「TagOut_Value」に書き込みます。 許可出力 ENO および出力「TagOut」のシグナ
ル状態が「1」にセットされます。

3.2.9.5

DECO: デコード

説明
「デコード」命令を使用して、入力値で指定されたビットを出力値にセットします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

825

基本命令
3.2 FBD「デコード」命令は、IN 入力の値を読み出し、そのビットを出力値にセットします。そのビット位置は、読み出された値に対応します。 出力値の他のビットはゼロで埋められます。 入力 IN の値が 31 よりも大きい場合、モジュロ 32 命令が実行されます。

パラメータ
次の表に、「デコード」命令のパラメータを示します。
パラメータ

宣言

EN

データタイプ

Input

ENO

BOOL

Output

IN

BOOL

Input

UINT

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

I、Q、M、

I、Q、M、

説明
許可入力
許可出力
設定される出D、L、P、ま D、L、P、ま 力値のビット
OUT

Output

ビット列

たは定数

たは定数

位置

I、Q、M、

I、Q、M、

出力値

D、L、P

D、L、P

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
'(&2
8,17

WR

':25'

ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。
ಯ7DJ,QB9DOXHಯ 
ಯ7DJ2XWB9DOXHಯ

826 



 

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
はオペランド「TagIn_Value」の値からビット番号「3」を読み取り、3 番目のビットをオ
ペランド「TagOut_Value」の値にセットします。
命令の実行中にエラーが発生しなかった場合、出力 ENO のシグナル状態は「1」となり、
出力「TagOut」が設定されます。

3.2.9.6

ENCO: エンコード

説明「エンコード」命令を使用し、入力値の最下位ビットのビット番号を読み出し、それを出力
OUT に出力します。
「エンコード」命令は、IN 入力の値の最下位ビットを選択し、そのビット番号を出力 OUTのタグに書き込みます。

パラメータ
次の表に、「エンコード」命令のパラメータを示します。
パラメータ
EN
ENO
IN

宣言
Input
OutputInput

データタイプ
BOOL
BOOL
ビット列

メモリ領域
S7-1200

S7-1500

I、Q、M、

I、Q、M、

D、L

D、L、T、C

I、Q、M、

I、Q、M、

D、L

D、L

I、Q、M、

I、Q、M、

説明
許可入力
許可出力
入力値

D、L、P、ま D、L、P、まOUT

Output

INT

たは定数

たは定数

I、Q、M、

I、Q、M、

D、L、P

D、L、P

出力値

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

827

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
(1&2
':25'
ಯ7DJ,Qಯ

(1287

ಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。

ಯ7DJ,QB9DOXHಯ
ಯ7DJ2XWB9DOXHಯ

 



 

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 この命令
は、ビット位置「3」を入力「TagIn_Value」の最下位ビットとして選択し、値「3」を出力「TagOut_Value」のタグに書き込みます。
この命令がエラーなしで実行された場合、許可出力 ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

3.2.9.7

SEL: 選択説明
スイッチ(入力 G)のシグナル状態に応じて、「選択」命令は入力 IN0 または IN1 のいずれかを選択し、その内容を出力 OUT に移動します。 入力 G のシグナル状態が「0」の場合、入力 IN0 の値が移動されます。 入力 G のシグナル状態が「1」の場合、入力 IN1 の値が出
力 OUT に移動されます。
命令は、許可入力 EN のシグナル状態が「1」であり、かつすべてのパラメータのタグが同じデータタイプである場合にのみ実行できます。

828

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

パラメータ
次の表に、「選択」命令のパラメータを示します。
パラメー
タ

宣言

EN

Input

データタイプ

メモリ領域

S7-1200

S7-1500

S7-1200 S7-1500

BOOL

BOOL

I、Q、

説明

I、Q、M、 許可入力

M、D、L D、L
ENO

Output

BOOL

BOOL

I、Q、

I、Q、M、 許可出力

M、D、L D、L
G

IN0

Input

Input

BOOL

BOOL

I、Q、

I、Q、M、 スイッチ

M、D、

D、L、T、

L、また

C、または

は定数

定数

ビット

ビット

I、Q、

I、Q、M、 最初の入力値

列、整

列、整

M、D、

D、L、P、数、浮動数、浮動L、P、ま または定数

小数点

小数点

たは定数

数、タイ

数、タイ

マ、

マ、

TOD、

TOD、

DATE、

LTOD、

CHAR、

DATE、

WCHAR

TDT、
CHAR、
WCHAR

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

829

基本命令
3.2 FBD
パラメー
タ

宣言

IN1

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200 S7-1500

ビット

ビット

I、Q、

I、Q、M、 2 番目の入力値

列、整

列、整

M、D、

D、L、P、数、浮動数、浮動L、P、ま または定数

小数点

小数点

たは定数

数、タイ

数、タイ

マ、

マ、

TOD、

TOD、

DATE、

LTOD、

CHAR、

DATE、

WCHAR

TDT、
CHAR、
WCHAR

OUT

Output

ビット

ビット

I、Q、

I、Q、M、 結果

列、整

列、整

M、D、

D、L、P

数、浮動

数、浮動

L、P

小数点

小数点

数、タイ

数、タイ

マ、

マ、

TOD、

TOD、

DATE、

LTOD、

CHAR、

DATE、

WCHAR

TDT、
CHAR、
WCHAR

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

830

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
6(/:25'
ಯ7DJ,Qಯ

(1

ಯ7DJ,QB*ಯ*ಯ7DJ2XWಯಯ7DJ,QB9DOXHಯ

,1

(12

ಯ7DJ,QB9DOXHಯ

,1

287

ಯ7DJ2XWB9DOXHಯ

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

G

TagIn_G

01

IN0

TagIn_Value0

W#16#0000

W#16#4C

IN1

TagIn_Value1

W#16#FFFF

W#16#5E

OUT

TagOut_Value

W#16#0000

W#16#5E「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。入力「TagIn_G」のシグナル状態に応じて、入力「TagIn_Value0」または「TagIn_Value1」の値が選択され、出力「TagOut_Value」にコピーされます。この命令がエラーなしで実行された場合、許可出力 ENO のシグナル状態が「1」となり、「TagOut」出力がセットされます。

3.2.9.8

MUX: 多重化

説明「多重化」命令を使用して、選択した入力の内容を出力 OUT にコピーします。 初期状態では、この命令ボックスには 2 つ以上の入力(IN0 および IN1)が含まれています。 命令ボッ
クスの選択可能な入力の数は拡張できます。 最大 32 の入力を宣言できます。
入力はボックスで自動的に割り当てられます。 番号の割り当ては IN0 から開始され、新しい入力ごとに継続的にインクリメントされます。 K パラメータを使用し、内容が OUT 出力にコピーされる入力を定義します。 使用可能な入力数よりもパラメータ K の値が大きい場
合、パラメータ ELSE の内容は出力 OUT にコピーされ、許可出力 ENO にシグナル状態「0」が割り当てられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

831

基本命令
3.2 FBD「多重化」命令は、すべての入力と OUT 出力のタグが同じデータタイプの場合にのみ実行できます。 K パラメータは、指定できるのが整数のみであるため、例外です。
次のいずれかの条件が満たされると、許可出力 ENO がリセットされます。
• 許可入力 EN のシグナル状態が「0」であること。
• K パラメータの入力は、使用可能な入力の外側にあります。 これは、ELSE 入力が使用されるかどうかに関係ない応答です。 OUT 出力の値は変更されません。
• 命令の実行中にエラーが発生していること。

パラメータ
次の表に、「多重化」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

K

Input

整数

整数

D、L

I、Q、M、 I、Q、M、 内容がコピ
D、L、P、 D、L、P、 ーされる入または定数 または定数 力を指定します。
• K=0な
らば、
パラメ
ータ
IN0
• K=1な
らば、
パラメ
ータ
IN1 な
ど

832

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプS7-1200

IN0

Input

S7-1500

メモリ領域
S7-1200

説明S7-1500

2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 最初の入力数、浮動小 数、浮動小 D、L、P、 D、L、P、 値
数点数、タ 数点数、タ または定数 または定数
イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、

TOD、

DATE

LTOD、
DATE、LDT

IN1

Input

2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 2 番目の入数、浮動小 数、浮動小 D、L、P、 D、L、P、 力値
数点数、タ 数点数、タ または定数 または定数
イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、

TOD、

DATE

LTOD、
DATE、LDT

INn

Input

2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 オプション
数、浮動小 数、浮動小 D、L、P、 D、L、P、 の入力値
数点数、タ 数点数、タ または定数 または定数
イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、

TOD、

DATE

LTOD、
DATE、LDTTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

833

基本命令
3.2 FBD
パラメータ 宣言

データタイプS7-1200

ELSE

Input

S7-1500

メモリ領域
S7-1200

説明S7-1500

2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 K > n の場
数、浮動小 数、浮動小 D、L、P、 D、L、P、 合コピーす
数点数、タ 数点数、タ または定数 または定数 る値を指定
イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、

TOD、

DATE

LTOD、

します。

DATE、LDTOUT

Output2 進数、整 2 進数、整 I、Q、M、 I、Q、M、 値がコピー数、浮動小 数、浮動小 D、L、P

D、L、P

される出力

数点数、タ 数点数、タ
イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、

TOD、

DATE

LTOD、
DATE、LDT

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
08;
':25'

834

ಯ7DJB,QSXWಯ(1

ಯ7DJB1XPEHUಯ.

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

,1

ಯ7DJB9DOXHBಯ

(/6(

287

ಯ7DJB5HVXOWಯಯ7DJB2XWSXWಯ

(12

6

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

K

Tag_Number

1

IN0

Tag_ValueI_0

DW#16#00000000

IN1

Tag_Value_1

DW#16#003E4A7D

ELSE

Tag_Value_2

DW#16#FFFF0000

OUT

Tag_Result

DW#16#003E4A7D「Tag_Input」オペランドのシグナル状態が「1」の場合、この命令が実行されます。 オペ
ランド「Tag_Number」の値に応じて、入力「Tag_Value_1」の値がコピーされ、出力「Tag_Result」のオペランドに割り当てられます。 この命令の実行中にエラーが発生しなかった場合、出力 ENO および「Tag_Output」が設定されます。

3.2.9.9

DEMUX: 逆多重化

説明
「逆多重化」命令を使用して、選択した出力に入力 IN の内容をコピーできます。初期状態
では、この命令ボックスには 2 つ以上の出力(OUT0 および OUT1)が含まれています。選
択可能な出力数は命令ボックスで拡張できます。このボックスで、出力は自動的に番号付けされます。番号の割り当ては OUT0 から開始され、新しい出力ごとに継続します。K パ
ラメータを使用して、IN 入力の内容がコピーされる出力を定義します。その他の出力は、変更されません。パラメータ K の値が使用可能な出力の数より大きい場合、入力 IN の内容
がパラメータ ELSE にコピーされ、イネーブル出力 ENO にシグナル状態「0」が割り当てられます。
「逆多重化」命令は、入力 IN とすべての出力のタグが同じデータタイプの場合のみ実行できます。K パラメータは、指定できるのが整数のみであるため、例外です。
次のいずれかの条件が満たされると、イネーブル出力 ENO がリセットされます。
• イネーブル入力 EN のシグナル状態が「0」であること。
• K パラメータの値が、使用可能な出力の数を超えていること。
• 命令の実行中にエラーが発生していること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

835

基本命令
3.2 FBD

パラメータ
次の表に、「逆多重化」命令のパラメータを示します。
パラメー 宣言タ

S7-1200

S7-1500

S7-1200

S7-1500

EN

BOOL

BOOL

I、Q、

I、Q、

M、D、L

M、D、

Input

データタイプ

メモリ領域

説明
イネーブル入力

L、T、C
ENO
K

Output
Input

BOOL
整数

BOOL
整数

I、Q、

I、Q、

M、D、L

M、D、L

I、Q、

I、Q、

入力値(IN)がコ

M、D、

M、D、

ピーされる出力

L、P、ま

L、P、ま

を指定します。

たは定数

たは定数

• K = 0 ならば、パラメ
ータ OUT0

イネーブル出力• K = 1 ならば、パラメ
ータ OUT1
など
IN

Input

2 進数、整 2 進数、整 I、Q、I、Q、数、浮動小 数、浮動小 M、D、M、D、

数点数、タ 数点数、タ L、P、ま

L、P、ま

イマ、

イマ、

たは定数

CHAR、

CHAR、

WCHAR、

WCHAR、

たは定数

入力値

TOD、DATE TOD、
LTOD、
DATE、LDTOUT0

Output2 進数、整 2 進数、整 I、Q、I、Q、数、浮動小 数、浮動小 M、D、M、D、

数点数、タ 数点数、タ L、P

L、P

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

最初の出力

TOD、DATE TOD、
LTOD、
DATE、LDT

836

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメー 宣言タ

S7-1200

OUT1

2 進数、整 2 進数、整 I、Q、I、Q、数、浮動小 数、浮動小 M、D、M、D、

数点数、タ 数点数、タ L、PL、P

Output

データタイプS7-1500

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

メモリ領域
S7-1200

説明S7-1500
2 番目の出力

TOD、DATE TOD、
LTOD、
DATE、LDT
OUTn

Output2 進数、整 2 進数、整 I、Q、

I、Q、

オプションの出数、浮動小 数、浮動小 M、D、

M、D、

力

数点数、タ 数点数、タ L、P

L、P

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD、DATE TOD、
LTOD、
DATE、LDT
ELSE

Output2 進数、整 2 進数、整 I、Q、I、Q、

K > n の場合に数、浮動小 数、浮動小 M、D、

M、D、

入力値(IN)がコ

数点数、タ 数点数、タ L、PL、P

ピーされる出

イマ、

イマ、

CHAR、

CHAR、

WCHAR、

WCHAR、力。

TOD、DATE TOD、
LTOD、
DATE、LDT
命令ボックスの[<???>]ドロップダウンリストから、命令のデータタイプを選択できます。
使用可能なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

837

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
'(08;
':25'
ಯ7DJB,QSXWಯ

(1

287

ಯ7DJB2XWSXWBಯಯ7DJB1XPEHUಯ

.

287

ಯ7DJB2XWSXWBಯಯ7DJB9DOXHಯ

,1

(/6(

ಯ7DJB2XWSXWBಯಯ7DJB2XWSXWಯ(126

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
表 3-3

ネットワーク実行前の「逆多重化」命令の入力値

パラメータ

オペランド

K

Tag_Number

1

4

IN

Tag_Value

DW#16#FFFFFFFF

DW#16#003E4A7D

表 3-4

値

ネットワーク実行後の「逆多重化」命令の出力値

パラメータ

オペランド

値

OUT0

Tag_Output_0

不変

不変

OUT1

Tag_Output_1

DW#16#FFFFFFFF

不変

ELSE

Tag_Output_2

不変

DW#16#003E4A7D"Tag_Input"入力のシグナル状態が「1」の場合、「逆多重化」命令が実行されます。オペラ
ンド「Tag_Number」の値に応じて、入力「IN」の値が対応する出力にコピーされます。

838

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.10

シフトとローテーション

3.2.10.1

SHR:右へシフト

説明「右へシフト」命令を使用して、入力 IN のオペランドの内容を 1 ビットずつ右へシフトし、結果を OUT 出力で照会できます。 入力 N は、指定した値を移動するビット位置の数の指定に使用されます。
入力 N の値が「0」の場合、IN 入力の値が OUT 出力のオペランドにコピーされます。
使用可能なビット位置の数よりも入力 N の値が大きい場合、使用可能なビット位置の数だ
け IN 入力のオペランド値が右にシフトされます。
符号なしの値がシフトされると、オペランドの左側の解放されたビット位置はゼロで埋められます。 指定された値に符号が存在する場合、解放されたビット位置は符号ビットのシグナル状態で埋められます。
次の図に、整数データタイプのオペランドの内容が、どのように 4 ビット位置右へシフトされるかを示します。


,1



1

䶵⚆
ኰአእ

287



 













































世㓏







栚㟍ሸቯቂኰአእ⇜函ቒ䶵⚆ኰአእቑ
≰⚆䕅㏚ቊ⩚ቤቬቯቮᇭ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020



















ሶቯቬቑኰአእቒ
⯀ቲቯቮᇭ

839

基本命令
3.2 FBD

パラメータ
次の表に、「右へシフト」命令のパラメータを示します。
パラメータ 宣言
EN

データタイプ

Input

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

IN

Input

ビット列、 I、Q、M、 I、Q、M、 シフトされビット

列、整数 整数

D、L、また D、L、また る値
は定数

N

Input

D、L

は定数

USINT,USINT,

I、Q、M、 I、Q、M、 値がシフト

UINT,

UINT,

D、L、また D、L、また されるビッUDINT

UDINT,

は定数

は定数

ト位置の数

ULINT
OUT

Output

ビット列、 I、Q、M、 I、Q、M、 命令の結果

ビット

列、整数 整数

D、L

D、L

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
6+5
:25'

840

ಯ7DJ,Qಯ

(1

ಯ7DJ,QB9DOXHಯ

,1

287

ಯ7DJB1XPEHUಯ

1(12

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ
6

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0011 1111 1010 1111

N

Tag_Number

3

OUT

TagOut_Value

0000 0111 1111 0101

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「TagIn_Value」の内容が、3 ビット位置右へシフトされます。 結果が「TagOut_Value」出
力に出力されます。 この命令がエラーなしで実行された場合、ENO 許可出力のシグナル状
態が「1」になり、「TagOut」出力がセットされます。

3.2.10.2

SHL:左へシフト

説明「左へシフト」命令を使用して、入力 IN のオペランドの内容を 1 ビットずつ左へシフトし、結果を OUT 出力で照会できます。 入力 N は、指定した値を移動するビット位置の数の指定に使用されます。
入力 N の値が「0」の場合、IN 入力の値が OUT 出力のオペランドにコピーされます。
使用可能なビット位置の数よりも入力 N の値が大きい場合、使用可能なビット位置の数だ
け IN 入力のオペランド値が左へシフトされます。
シフトによって解放されたオペランドの右側のビット位置は、ゼロで埋められます。
次の図に、WORD データタイプのオペランドの内容が、どのように 6 ビット位置左へシフ
トされるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

841

基本命令
3.2 FBD
,1 










1

287









































世㓏

     















栚㟍ሸቯቂኰአእ⇜函ቒኙዊቊ⩚ቤቬቯቮᇭ

ሶቯቬቑኰአእቒ
⯀ቲቯቡሼᇭ

パラメータ
次の表に、「左へシフト」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

IN

Input

ビット

ビット列、 I、Q、M、 I、Q、M、 シフトされ

列、整数

整数

D、L、また D、L、また る値
は定数

N

Input

D、L

は定数

USINT,USINT,

I、Q、M、 I、Q、M、 値がシフト

UINT,

UINT,

D、L、また D、L、また されるビッUDINT

UDINT,

は定数

は定数

ト位置の数

ULINT
OUT

Outputビット

ビット列、 I、Q、M、 I、Q、M、 命令の結果

列、整数

整数

D、L

D、L

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

842

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
6+/:25'
ಯ7DJ,Qಯ

(1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJB1XPEHUಯ

1

287

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ(126

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0011 1111 1010 1111

N

Tag_Number

4

OUT

TagOut_Value

1111 1010 1111 0000

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「TagIn_Value」の内容は、4 ビット位置左へシフトされます。 結果が「TagOut_Value」出
力に出力されます。この命令がエラーなしで実行された場合、ENO 許可出力のシグナル状
態が「1」となり、「TagOut」出力がセットされます。

3.2.10.3

ROR:右へローテーション

説明「右へローテーション」命令を使用して、IN 入力のオペランドの内容を 1 ビットずつ右へ
ローテーションし、結果を OUT 出力で照会できます。 入力 N を使って、指定した値をローテーションするビット位置の数を指定します。 ローテーションによって左側に解放されたビット位置は、左側に押し出されたビット位置の実位置で埋められます。
入力 N の値が「0」の場合、IN 入力の値が OUT 出力のオペランドにコピーされます。
使用可能なビット位置の数よりも N パラメータの値が大きい場合でも、IN 入力にあるオ
ペランド値は、指定されたビット位置の数でローテーションされます。
次の図に、DWORD データタイプのオペランドの内容が、どのように 3 ビット位置右へローテーションされるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

843

基本命令
3.2 FBD
,1 

       

1

世㓏

287

        
ቇቑኔኲእሸቯቂኰአእቑ
≰⚆䕅㏚ሯ栚㟍ሸቯቂ⇜函቎㗎⏴ሸቯቮᇭ

パラメータ
次の表に、「右へローテーション」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

IN

Input

ビット

ビット

I、Q、M、 I、Q、M、 ローテーシ

列、整数

列、整数

D、L、また D、L、また ョンされる
は定数

N

Input

D、L

は定数

USINT,USINT,

I、Q、M、 I、Q、M、 値がローテ

UINT,

UINT,

D、L、また D、L、また ーションさUDINT

UDINT,

は定数

は定数

ULINT
OUT

Output

値

れるビット
位置の数

ビット

ビット

I、Q、M、 I、Q、M、 命令の結果

列、整数

列、整数

D、L

D、L

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

844

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
525:25'
ಯ7DJ,Qಯ

(1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJB1XPEHUಯ

1

287

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ(126

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

0000 1111 1001 0101

N

Tag_Number

5

OUT

TagOut_Value

1010 1000 0111 1100

「TagIn」オペランドのシグナル状態が「1」の場合、この命令が実行されます。オペランド「TagIn_Value」の内容は、5 ビット位置右へローテーションされます。 結果が「TagOut_Value」出力に出力されます。この命令がエラーなしで実行された場合、ENO 許可出力のシグナル状態が「1」となり、「TagOut」出力がセットされます。

3.2.10.4

ROL:左へローテーション

説明「左へローテーション」命令を使用して、IN 入力のオペランドの内容を 1 ビットずつ左へ
ローテーションし、結果を OUT 出力で照会できます。 入力 N を使って、指定した値をローテーションするビット位置の数を指定します。 ローテーションによって右側に解放されたビット位置は、左側に押し出されたビット位置の実位置で埋められます。
入力 N の値が「0」の場合、IN 入力の値が OUT 出力のオペランドにコピーされます。
使用可能なビット位置の数よりも N パラメータの値が大きい場合でも、IN 入力にあるオ
ペランド値は、指定されたビット位置の数でローテーションされます。
次の図に、DWORD データタイプのオペランドの内容が、どのように 3 ビット位置左へローテーションされるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

845

基本命令
3.2 FBD
,1 

       

1

287



世㓏

        
ቇቑኔኲእሸቯቂኰአእቑ
≰⚆䕅㏚ሯ栚㟍ሸቯቂ⇜函቎㗎⏴ሸቯቮᇭ

パラメータ
次の表に、「左へローテーション」命令のパラメータを示します。
パラメータ 宣言
EN

Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

S7-1200

BOOL

BOOL

I、Q、M、 I、Q、M、 許可入力
D、L

S7-1500
D、L、T、
C

ENO

Output

BOOL

BOOL

I、Q、M、 I、Q、M、 許可出力
D、L

IN

Input

ビット

ビット

I、Q、M、 I、Q、M、 ローテーシ

列、整数

列、整数

D、L、また D、L、また ョンされる
は定数

N

Input

D、L

は定数

USINT,USINT,

I、Q、M、 I、Q、M、 値がローテ

UINT,

UINT,

D、L、また D、L、また ーションさUDINT

UDINT,

は定数

は定数

ULINT
OUT

Output

値

れるビット
位置の数

ビット

ビット

I、Q、M、 I、Q、M、 命令の結果

列、整数

列、整数

D、L

D、L

命令ボックスの[???]ドロップダウンリストから、命令のデータタイプを選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

846

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD例
次の例で、命令がどのように動作するかを示します。
52/
':25'
ಯ7DJ,Qಯ

(1

ಯ7DJ,QB9DOXHಯ

,1

ಯ7DJB1XPEHUಯ

1

287

ಯ7DJ2XWB9DOXHಯ
ಯ7DJ2XWಯ(126

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_Value

1010 1000 1111 0110

N

Tag_Number

5

OUT

TagOut_Value

0001 1110 1101 0101

「TagIn」のシグナル状態が「1」の場合、この命令が実行されます。オペランド「TagIn_Value」の内容は、左に 5 ビット位置ローテーションされます。 結果が「TagOut_Value」出力に出力されます。この命令がエラーなしで実行された場合、ENO 許可出力のシグナル状態が「1」となり、「TagOut」出力がセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

847

基本命令
3.2 FBD

3.2.11レガシー

3.2.11.1

DRUM:PLC 実行

説明「PLC の実装」命令を使用して、対応するステップの OUT_VAL パラメータのプログラム済
みの値をプログラム済み出力ビット(OUT1～OUT16)および出力ワード(OUT_WORD)に割り当てることができます。そのため、この命令が特定のステップに留まっている間は、このステップは S_MASK パラメータでプログラムされた許可マスクの条件を満たす必要があります。このステップのイベントが真(TRUE)になっていて現在のステップのプログラムされた
時間が経過した場合、または JOG パラメータの値が「0」から「1」に切り替わった場合、この命令は次のステップに進みます。RESET パラメータのシグナル状態が「1」に切り替わると、この命令はリセットされます。これによって、プリセットされたステップ(DSP)と現在のステップが等しくなります。
このステップで消費された時間の量は、プリセットタイムベース(DTBP)と各ステップのプ
リセットカウンタ値(S_PRESET)の積によって計算されます。新しいステップの開始時に、この計算値が DCC パラメータにロードされます。このパラメータには、現在のステップの残り時間が含まれています。たとえば、DTBP パラメータの値が「2」で、最初のステップのプリセット値が「100」(100 ミリ秒)の場合、DCC パラメータの値は「200」(200 ミリ秒)になります。
ステップは、タイマ値、イベント、またはその両方を使用してプログラム可能です。イベ
ントビットおよびタイマ値「0」を持つステップは、イベントビットのシグナル状態が「1」になると直ちに次のステップに進みます。タイマ値のみによってプログラムされたステッ
プは時間を直ちに開始します。「0」よりも大きいイベントビットおよびタイマ値を使用してプログラムされたステップは、イベントビットのシグナル状態が「1」になると時間を開始します。イベントビットは、シグナル状態「1」で初期化されます。
プログラムされた最後のステップ(LST_STEP)の実行中にこのステップに割り当てられた時間が経過した場合、Q パラメータのシグナル状態は「1」にセットされ、それ以外の場合は「0」にセットされます。Q パラメータがセットされると、この命令はリセットされるまで
このステップに留まります。
設定可能なマスク(S_MASK)で、出力ワード(OUT_WORD)の個々のビットを選択し、出力ビット(OUT1 ～ OUT16)を出力値(OUT_VAL)によってセット/リセットできます。設定可能なマスクのビットのシグナル状態が「1」のとき、OUT_VAL 値は対応するビットをセット/リ
セットします。設定可能なマスクビットのシグナル状態が「0」の場合、対応するビットは

848

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
変更されません。16 のステップすべてに設定可能なマスクのすべてのビットは、シグナル
状態「1」で初期化されます。
OUT1 パラメータの出力ビットは、出力ワード(OUT_WORD)の最下位ビットに対応します。
OUT16 パラメータの出力ビットは、出力ワード(OUT_WORD)の最上位ビットに対応します。

パラメータ
次の表に、「PLC 実装」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

RESET

Input

BOOL

I、Q、M、D、シグナル状態「1」は、L、または定数リセット条件を示します。

I、Q、M、D、シグナル状態が「0」かL、または定数

ら「1」に切り替わる

JOG

Input

BOOL

と、命令が次のステップに進みます。
DRUM_EN

Input

BOOL

I、Q、M、D、シグナル状態が「1」にL、または定数

なると、PLC はイベント
および時間条件に基づいて進むことができます。

LST_STEP

Input

BYTE

I、Q、M、D、

最大ステップ番号

L、または定数(例:LST_STEP = 16#08; 最大 8 つのステップが可能です。)

EVENT(i),

Input

BOOL

1 ≤ i ≤ 16

I、Q、M、D、

イベントビット(i);L、または定数初期シグナル状態は「1」。

OUT(j),

Output

BOOL

I、Q、M、D、L 出力ビット(j)Output

BOOL

I、Q、M、D、L シグナル状態「1」は、

1 ≤ j ≤ 16
Q

最後のステップに割り当てられた時間が経過したことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

849

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

OUT_WORD Output

WORD

I、Q、M、D、PLC が出力値を書き込む

L、P

ワードアドレス。

I、Q、M、D、

エラー情報

ERR_CODE

Output

WORD

L、P
JOG_HISEOD

StaticStaticBOOL
BOOL

I、Q、M、D、JOG パラメータの履歴ビ

L、または定数ット

I、Q、M、D、シグナル状態「1」は、L、または定数

最後のステップに割り当てられた時間が経過したことを示します。

DSP

StaticBYTE

I、Q、M、D、PLC のプリセットされた

L、P、または定 ステップ数
DSC

StaticBYTE

I、Q、M、D、PLC の現在のステップ

L、P、または定
数
DCC

Static

DWORD

I、Q、M、D、PLC の現在の数値

L、P、または定
数
DTBP

Static

WORD

I、Q、M、D、PLC のプリセットタイム

L、P、または定 ベース
数
PrevTime

Static

TIME

I、Q、M、D、前のシステム時間

L、または定数
S_PRESET

StaticARRAY[1..16] of I、Q、M、D、

1 クロックパルス = 1 ミ

WORD

リ秒の場合の各ステップ

L、または定数[1～16]のプリセットされたカウンタ値。
OUT_VAL
S_MASK

StaticStaticARRAY[1..16,

I、Q、M、D、各ステップの出力値[1～0..15] of BOOL

L、または定数16, 0～15]。

ARRAY[1..16,

I、Q、M、D、各ステップの設定可能な

0..15] of BOOL

L、または定数

マスク[1～16, 0～15]。
初期シグナル状態は
「1」。

850

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
ERR_COD 説明
E*
W#16#00 エラーなし
00
W#16#00 LST_STEP パラメータの値が 1 未満であるか、または 16 を超えています。
0B
W#16#00 DSC パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を0C

超えています。

W#16#00 DSP パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を超0Dえています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、命令は、ステップ 1 からステップ 2 へ進みます。出力ビット(OUT1 ～ OUT16)および出力ワード(OUT_WORD)は、ステップ 2 で設定されたマスクと OUT_VAL パラメー
タの値に従って設定されます。
注記
静的なパラメータをデータブロックで初期化できます。

ಯ'580B'%ಯ
'580
ಯ7DJ,Qಯ

(1

ಯ7DJB5HVHWಯಯ7DJB,QSXWB-2*ಯ
ಯ7DJB'580B(1ಯಯ/DVW6WHSಯ

5(6(7
-2*
'580B(1/67B67(3ಯ0\(YHQWಯ

(9(17

(12287
4
287B:25'(55B&2'(

ಯ7DJ2XWಯ
ಯ0\2XWSXWಯ
ಯ7DJB2XWSXWB4ಯಯ7DJB2XWSXWB:25'ಯ
ಯ7DJB(UURU&RGHಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

851

基本命令
3.2 FBD

処理前
この例では、入力パラメータの初期化には以下の値が使用されます。
パラメータ

オペランド

アドレス

値

RESET

Tag_Reset

M0.0

FALSE

JOG

Tag_Input_JOG

M0.1

FALSE

DRUM_EN

Tag_Input_DrumEN

M0.2

TRUE

LST_STEP

Tag_Number_LastSt

MB1

B#16#08

ep
EVENT2MyTag_Event_2

M20.0

FALSE

EVENT4MyTag_Event_4

M20.1

FALSE

EVENT6MyTag_Event_6

M20.2

FALSE

EVENT8MyTag_Event_8

M20.3

FALSE

EVENT10MyTag_Event_10

M20.4

FALSE

EVENT12MyTag_Event_12

M20.5

FALSE

EVENT14MyTag_Event_14

M20.6

FALSE

EVENT16MyTag_Event_16

M20.7

FALSE

以下の値が命令の「DRUM_DB」インスタンスデータブロックに保存されます。

852

パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

DSP

DBB13

W#16#0001

DSC

DBB14

W#16#0001

DCC

DBD16

DW#16#0000000A

DTBP

DBW20

W#16#0001

S_PRESET[1]DBW26

W#16#0064

S_PRESET[2]DBW28

W#16#00C8

OUT_VAL[1,0]DBX58.0

TRUE

OUT_VAL[1,1]

DBX58.1

TRUE

OUT_VAL[1,2]

DBX58.2

TRUE

OUT_VAL[1,3]

DBX58.3

TRUE

OUT_VAL[1,4]DBX58.4

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ

アドレス

値

OUT_VAL[1,5]DBX58.5

TRUE

OUT_VAL[1,6]

DBX58.6

TRUE

OUT_VAL[1,7]

DBX58.7

TRUE

OUT_VAL[1,8]DBX59.0

TRUE

OUT_VAL[1,9]DBX59.1

TRUE

OUT_VAL[1,10]

DBX59.2

TRUE

OUT_VAL[1,11]

DBX59.3

TRUE

OUT_VAL[1,12]

DBX59.4

TRUE

OUT_VAL[1,13]

DBX59.5

TRUE

OUT_VAL[1,14]

DBX59.6

TRUE

OUT_VAL[1,15]

DBX59.7

TRUE

OUT_VAL[2,0]DBX60.0

FALSE

OUT_VAL[2,1]

DBX60.1

FALSE

OUT_VAL[2,2]

DBX60.2

FALSE

OUT_VAL[2,3]

DBX60.3

FALSE

OUT_VAL[2,4]

DBX60.4

FALSE

OUT_VAL[2,5]

DBX60.5

FALSE

OUT_VAL[2,6]

DBX60.6

FALSE

OUT_VAL[2,7]

DBX60.7

FALSE

OUT_VAL[2,8]DBX61.0

FALSE

OUT_VAL[2,9]DBX61.1

FALSE

OUT_VAL[2,10]

DBX61.2

FALSE

OUT_VAL[2,11]

DBX61.3

FALSE

OUT_VAL[2,12]

DBX61.4

FALSE

OUT_VAL[2,13]

DBX61.5

FALSE

OUT_VAL[2,14]

DBX61.6

FALSE

OUT_VAL[2,15]

DBX61.7

FALSE

S_MASK[2,0]DBX92.0

FALSE

S_MASK[2,1]

DBX92.1

TRUE

S_MASK[2,2]

DBX92.2

TRUE

S_MASK[2,3]

DBX92.3

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

853

基本命令
3.2 FBD
パラメータ

アドレス

値

S_MASK[2,4]DBX92.4

TRUE

S_MASK[2,5]DBX92.5

FALSE

S_MASK[2,6]

DBX92.6

TRUE

S_MASK[2,7]

DBX92.7

TRUE

S_MASK[2,8]DBX93.0

FALSE

S_MASK[2,9]DBX93.1

FALSE

S_MASK[2,10]

DBX93.2

TRUE

S_MASK[2,11]

DBX93.3

TRUE

S_MASK[2,12]

DBX93.4

TRUE

S_MASK[2,13]

DBX93.5

TRUE

S_MASK[2,14]

DBX93.6

FALSE

S_MASK[2,15]

DBX93.7

TRUE

出力パラメータは、命令の実行前に以下の値にセットされます。

854

パラメータ

オペランド

アドレス

値

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#FFFFOUT1MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

TRUE

OUT3

MyTag_Output_3

M4.2

TRUE

OUT4

MyTag_Output_4

M4.3

TRUE

OUT5

MyTag_Output_5

M4.4

TRUE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

TRUE

OUT8

MyTag_Output_8

M4.7

TRUE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

TRUE

OUT12

MyTag_Output_12

M5.3

TRUE

OUT13

MyTag_Output_13

M5.4

TRUE

OUT14

MyTag_Output_14

M5.5

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ

オペランド

アドレス

値

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

TRUE

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

アドレス

値

OUT1

MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

FALSE

OUT3

MyTag_Output_3

M4.2

FALSE

OUT4

MyTag_Output_4

M4.3

FALSE

OUT5

MyTag_Output_5

M4.4

FALSE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

FALSE

OUT8

MyTag_Output_8

M4.7

FALSE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

FALSE

OUT12

MyTag_Output_12

M5.3

FALSE

OUT13

MyTag_Output_13

M5.4

FALSE

OUT14

MyTag_Output_14

M5.5

FALSE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

FALSE

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#4321

ERR_CODE

Tag_ErrorCode

MW10

W#16#0000

命令の実行後、以下の値が命令のインスタンスデータブロック「DRUM_DB」で変更され
ます。
パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

855

基本命令
3.2 FBD

3.2.11.2

パラメータ

アドレス

値

DSC

DBB14

W#16#0002

DCC

DBD16

DW#16#000000C8

DCAT:ディスクリート制御タイマアラーム

説明「ディスクリート制御タイマアラーム」を使用して、CMD パラメータが開くまたは閉じる
ためのコマンドを発行した時点からの時間をカウントします。時間は、指定した時間内でプリセット時間(PT)を超えるか、またはデバイスの開閉に関する情報を受信するまで蓄積します(O_FB または C_FB)。デバイスの開閉に関する情報を受信する前にプリセット済み
時間が経過すると、対応するアラームが有効になります。プリセット済み時間の前にコマ
ンド入力のシグナル状態が切り替わると、この時間経過が再開します。
「ディスクリート制御タイマアラーム」命令は入力条件に対して以下のように応答します。
• CMD パラメータのシグナル状態が「0」から「1」へ切り替わったとき、パラメータ Q、
CMD_HIS、ET (ET < PT の場合のみ)、OA、および CA のシグナル状態が以下のように影響を受けます。
– Q および CMD_HIS パラメータパラメータが「1」にセットされます。
– ET、OA、および CA パラメータが「0」にリセットされます。
• CMD パラメータのシグナル状態が「1」から「0」に切り替わると、Q、ET (ET < PT の場合のみ)、OA、CA、および CMD_HIS パラメータが「0」にリセットされます。
• CMD および CMD_HIS パラメータのシグナル状態が「1」で、パラメータ O_FB が「0」にセットされると、命令が最後に実行されてからの時間差(ms)がパラメータ ET の値に加算されます。ET パラメータの値が PT パラメータの値を超えると、OA パラメータのシグナル状態が「1」にセットされます。ET パラメータの値が PT パラメータの値を超えないと、OA パラメータのシグナル状態が「0」にリセットされます。CMD_HIS パラ
メータの値が、CMD パラメータの値にリセットされます。
• パラメータ CMD、CMD_HIS、および O_FB のシグナル状態が「1」にセットされ、パラメータ C_FB の値が「0」の場合、パラメータ OA のシグナル状態が「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。O_FB パラメータのシグナル状態「0」に切り替わると、命令が次回実行されるときにアラームがセットされます。CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。

856

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD• CMD、CMD_HIS および C_FB パラメータがシグナル状態「0」を返す場合、命令が最後に実行されてからの時間差(ms)が ET パラメータの値に加算されます。ET パラメータの値が PT パラメータの値を超えると、パラメータのシグナル状態が CA「1」にリセットされます。PT パラメータの値を超えなければ、CA パラメータのシグナル状態は「0」です。CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS および O_FB パラメータのシグナル状態が「0」のときに C_FB パラメ
ータが「1」にセットされると、CA パラメータが「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。C_FB パラメータのシグナル状態「0」に切り替わると、命令が次回実行されるときにアラームがセットされます。
CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• O_FB および C_FB パラメータのシグナル状態が同時に「1」の場合、両方のアラーム出力のシグナル状態が「1」にセットされます。
「ディスクリート制御タイマアラーム」命令にエラー情報がありません。

パラメータ
次の表に、「ディスクリート制御タイマアラーム」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

EN

Input

BOOL

I、Q、M、D、 イネーブル入
L、T、C

ENO

Output

BOOL

Input

BOOL

力

I、Q、M、D、 イネーブル出
L

CMD

説明

力

I、Q、M、D、 シグナル状態
L、または定数 「0」は、「閉じる」コマンドを示します。
シグナル状態「1」は、「開く」コマンドを示します。

O_FB

Input

BOOL

I、Q、M、D、 開くときにフL、または定数 ィードバック
入力

C_FB

Input

BOOL

I、Q、M、D、 閉じるときにL、または定数 フィードバック入力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

857

基本命令
3.2 FBD
パラメータ

宣言

データタイプ

メモリ領域

Q

Output

BOOL

I、Q、M、D、 CMD パラメー
L

説明
タのステータスを示しますOA

Output

BOOL

I、Q、M、D、 開くときにア
L

CA
ET

OutputStatic

BOOL

ラーム出力

I、Q、M、D、 閉じるときに

DINT

L

アラーム出力

D、L、または

現在の経過時

定数間、1 カウン
ト=1 ミリ秒。

PT

StaticDINT

D、L、またはプリセットタ定数

イマ値(1 クロックパルス = 1
ミリ秒)

PREV_TIME
CMD_HIS

StaticStatic

DWORD
BOOL

D、L、または前のシステム

定数

時間

D、L、または

CMD の履歴ビ

定数ット

例
次の例では、パラメータ CMD が「0」から「1」に切り替わります。命令の実行後、パラメータ Q が「1」にセットされ、2 つのアラーム出力 OA および CA のシグナル状態は「0」になります。インスタンスデータブロックの CMD_HIS パラメータがシグナル状態「1」にセットされ、ET パラメータが「0」にリセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

858

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
ಯ'&$7B'%ಯ
'&$7
ಯ7DJ,Qಯ

(1

4

ಯ7DJB2XWSXWB4ಯಯ7DJB,QSXWB&0'ಯ

&0'

2$

ಯ7DJB2XWSXWB2$ಯ

ಯ7DJB,QSXWB2B)%ಯ

2B)%

&$

ಯ7DJB2XWSXWB&$ಯಯ7DJB,QSXWB&B)%ಯ

&B)%

(12

ಯ7DJ2XWಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

CMD

Tag_Input_CMD

TRUE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

Q

Tag_Output_Q

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#12

PT

DBD8

L#222

CMD_HIS

DBX16.0

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

Q

Tag_Output_Q

TRUE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

859

基本命令
3.2 FBD
以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。

3.2.11.3

パラメータ

アドレス

値

ET

DBD4

L#0

CMD_HIS

DBX16.0

TRUE

MCAT:モータ制御タイマアラーム

説明「モータ制御タイマアラーム」命令を使用して、コマンド入力(開または閉)のいずれかのスイッチがオンにされる時点から、時間を累積します。時間はプリセット済み時間が経過するまで、または関連のフィードバック入力が、デバイスが指定された時間内に要求された操作を実行したことを示す場合に蓄積されます。フィードバックが受信される前にプリセ
ット済み時間が経過すると、対応するアラームがトリガされます。
「モータ制御タイマアラーム」命令は、エラー情報を返しません。

パラメータ
次の表に、「モータ制御タイマアラーム」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

O_CMD

Input

BOOL

I、Q、M、D、[開]コマンド入力

L、または定数
C_CMD

Input

BOOL

I、Q、M、D、[閉]コマンド入力

L、または定数
S_CMD

Input

BOOL

I、Q、M、D、[停止]コマンド入力

L、または定数
O_FB

860

Input

BOOL

I、Q、M、D、開くときにフィードバッ

L、または定数

ク入力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

C_FB

BOOL

I、Q、M、D、閉じるときにフィードバ

L、または定数

ック入力

Input

OO

Output

BOOL

I、Q、M、D、L [開]出力CO

Output

BOOL

I、Q、M、D、L [閉]出力

OA

Output

BOOL

I、Q、M、D、L 開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L 閉じるときにアラーム出力

Q

Output

BOOL

I、Q、M、D、L シグナル状態「0」は、エラー条件を示します。

ET

StaticDINT

D、L、または定 1 カウント= 1 ms のとき
数

PT

StaticDINTの現在の経過時間

D、L、または定 プリセットタイマ値(1 ク
ロックパルス = 1 ミリ秒)

数
PREV_TIME

Static

DWORD

D、L、または定 前のシステム時間
数

O_HIS

StaticBOOL

D、L、または定 [開]履歴ビット
数

C_HIS

StaticBOOL

D、L、または定 [閉]履歴ビット数「モータ制御タイマアラーム」命令の実行
次の表に、さまざまな入力条件に対する「モータ制御タイマアラーム」命令の応答を示します。
入力パラメータETX

出力パラメータ

O_H C_H O_C C_C S_C

O_F C_F

IS

IS

MD

MD

MD

B

B

1

1

X

X

X

X

X

OO
0

CO
0

OA
1

CA
1

ET
PT

O_H C_H Q

ステータ

IS

IS

ス

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

X

1

1

0

0

1

1

PT

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

1

X

X

0

0

0

0

X

0

0

1

Stop (停止)

X

X

X

1

1

X

X

X

0

0

0

0

X

0

0

1

Stop (停止)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

861

基本命令
3.2 FBD
入力パラメータX

0X

出力パラメータ
1

0

0

X

X

1

0

0

0

0

1

0

1

Start
opening
(開き始め
る)

<PT

1

0

X

0

0

0

X

1

0

0

0

INC

1

0

1

Open (開
く)

X

1

0

X

0

0

1

0

0

0

0

0

PT

1

0

1

Opened
(開いた)

>=P 1

0

X

0

0

0

X

0

0

1

0

PT

1

0

0

T

Opening
alarm (ア
ラームを
開いてい
る)

X

X

0

0

1

0

X

X

0

1

0

0

0

0

1

1

Start
closing (閉
じ始める)

<PT

0

1

0

X

0

X

0

0

1

0

0

INC

0

1

1

Close (閉
じる)

X

0

1

0

X

0

0

1

0

0

0

0

PT

0

1

1

Closed (閉
じた)

>=P 0

1

0

X

0

X

0

0

0

0

1

PT

0

1

0

T

Closing
alarm (ア
ラームを
閉じてい
る)

X

0

0

0

0

0

X

X

0

0

0

0

X

0

0

1

Stopped
(停止)

凡例:
INC

FB から ET への最後に処理されてからの時間差(ms)を追加します。

PT

PT は ET と同じ値にセットされます。

X

使用不可

<PT

ET < PT

862

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
入力パラメータ>=PT

出力パラメータ

ET >= PT

入力パラメータ O_HIS および C_HIS のシグナル状態が両方とも「1」の場合、これらのパラメータのシグ
ナル状態が直ちに「0」にセットされます。この場合、上記の表の最後の行(X)が有効になります。入力パ
ラメータ O_HIS および C_HIS のシグナル状態が「1」であるかどうかをチェックすることができなくなる
ため、この場合の出力パラメータは以下のようにセットされます。
OO = FALSE
CO = FALSEOA = FALSE
CA = FALSEET = PT
Q = TRUE例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

ಯ0&$7B'%ಯ
0&$7
(1

22

ಯ7DJB2XWSXW2SHQಯಯ7DJB,QSXWB2B&0'ಯ

2B&0'

&2

ಯ7DJB2XWSXW&ORVHGಯ

ಯ7DJB,QSXWB&B&0'ಯ

&B&0'

2$

ಯ7DJB2XWSXWB2$ಯ

ಯ7DJB,QSXWB6B&0'ಯ

6B&0'

&$

ಯ7DJB2XWSXWB&$ಯಯ7DJB,QSXWB2B)%ಯ

2B)%

4

ಯ7DJB2XWSXWB4ಯಯ7DJB,QSXWB&B)%ಯ

&B)%

(12

ಯ7DJ,Qಯಯ7DJ2XWಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

863

基本命令
3.2 FBD
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

O_CMD

Tag_Input_O_CMD

TRUE

C_CMD

Tag_Input_C_CMD

FALSE

S_CMD

Tag_Input_S_CMD

FALSE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

OO

Tag_OutputOpen

FALSE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

FALSE

以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#2

PT

DBD8

L#22

O_HIS

DBX16.0

TRUE

C_HIS

DBX16.1

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。

864

パラメータ

オペランド

値

OO

Tag_OutputOpen

TRUE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。

3.2.11.4

パラメータ

アドレス

値

ET

DBD4

L#0

O_HIS

DBX16.0

TRUE

CMD_HIS

DBX16.1

FALSE

IMC:入力ビットをマスクビットと比較

説明「入力ビットをマスクビットと比較」命令を使用して、対応するマスクビットと最大 16 のプログラム済み入力ビット(IN_BIT0～IN_BIT15)のシグナル状態を比較できます。最大 16のマスク付きのステップをプログラムできます。IN_BIT0 パラメータの値が、マスク
CMP_VAL[x,0] (ここで、「x」はステップ番号を示します)の値と比較されます。CMP_STEP
パラメータで、比較で使用されるステップ番号を指定します。プログラムされた値は、すべて同じ方法で比較されます。プログラムされていない入力ビットやマスクビットは、デフォルトのシグナル状態である FALSE になります。
比較で一致が検出されると、OUT パラメータのシグナル状態が「1」にセットされます。
一致しない場合、OUT パラメータは「0」にセットされます。
CMP_STEP パラメータの値が 15 よりも大きい場合、この命令は実行されません。
ERR_CODE パラメータでエラーメッセージが出力されます。

パラメータ
次の表に、「入力ビットをマスクビットと比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN_BIT0

Input

BOOL

I、Q、M、D、

入力ビット 0 がマスクビ

L、または定数

ット 0 と比較されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

865

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN_BIT1

BOOL

I、Q、M、D、

入力ビット 1 がマスクビ

L、または定数

ット 1 と比較されます。

I、Q、M、D、

入力ビット 2 がマスクビ

L、または定数

ット 2 と比較されます。

I、Q、M、D、

入力ビット 3 がマスクビ

L、または定数

ット 3 と比較されます。

I、Q、M、D、

入力ビット 4 がマスクビ

L、または定数

ット 4 と比較されます。

I、Q、M、D、

入力ビット 5 がマスクビ

L、または定数

ット 5 と比較されます。

I、Q、M、D、

入力ビット 6 がマスクビ

L、または定数

ット 6 と比較されます。

I、Q、M、D、

入力ビット 7 がマスクビ

L、または定数

ット 7 と比較されます。

I、Q、M、D、

入力ビット 8 がマスクビ

L、または定数

ット 8 と比較されます。

I、Q、M、D、

入力ビット 9 がマスクビ

L、または定数

ット 9 と比較されます。

I、Q、M、D、

入力ビット 10 がマスク

L、または定数

ビット 10 と比較されま

IN_BIT2
IN_BIT3
IN_BIT4
IN_BIT5
IN_BIT6
IN_BIT7
IN_BIT8
IN_BIT9
IN_BIT10

Input
Input
Input
Input
Input
Input
Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL

す。
IN_BIT11

Input

BOOL

I、Q、M、D、

入力ビット 11 がマスク

L、または定数

ビット 11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、

入力ビット 12 がマスク

L、または定数

ビット 12 と比較されます。

IN_BIT13

Input

BOOL

I、Q、M、D、

入力ビット 13 がマスク

L、または定数

ビット 13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、

入力ビット 14 がマスク

L、または定数

ビット 14 と比較されます。

866

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN_BIT15

BOOL

I、Q、M、D、

入力ビット 15 がマスク

L、または定数

ビット 15 と比較されま

Input

す。
CMP_STEP

Input

BYTE

I、Q、M、D、比較に使用されるマスク

L、P、または定 のステップ番号。
数
OUT

Output

BOOL

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

ERR_CODE

Output

WORD

I、Q、M、D、

エラー情報

L、P
CMP_VAL

StaticARRAY OF WORD I、Q、M、D、

比較マスク[0～15, 0～

L、または定数15]:インデックスの最初の番号はステップ番号
で、2 番目の番号はマス
クビット番号です。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

000A

CMP_STEP パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

867

基本命令
3.2 FBD

3.2.11.5

SMC:スキャンマトリックスの比較

説明「スキャンマトリックスの比較」命令を使用して、最大 16 のプログラムされた入力ビット(IN_BIT0 ～ IN_BIT15)のシグナル状態をステップごとの比較マスクの対応ビットと比較できます。処理はステップ 1 から開始し、プログラムされた最後のステップ(LAST)まで、または一致が検出されるまで続行されます。IN_BIT0 パラメータの入力ビットが、マスク
CMP_VAL[x,0]の値と比較されます。「x」はステップ番号を示しています。プログラムされた値は、すべて同じ方法で比較されます。一致が検出されると、OUT パラメータのシ
グナル状態が「1」にセットされ、一致するマスクのステップ番号が OUT_STEP パラメー
タに書き込まれます。プログラムされていない入力ビットやマスクビットは、デフォルトのシグナル状態である FALSE になります。複数のステップに一致するマスクが存在する場
合、最初に検出されたマスクのみが OUT_STEP パラメータに示されます。一致が検出されないと、OUT パラメータのシグナル状態が「0」にセットされます。この場合、OUT_STEP
パラメータの値は LAST パラメータの値よりも「1」だけ大きくなります。

パラメータ
次の表に、「スキャンマトリックスの比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN_BIT0

Input

BOOL

I、Q、M、D、

入力ビット 0 がマスクビ

L、または定数

ット 0 と比較されます。

I、Q、M、D、

入力ビット 1 がマスクビ

L、または定数

ット 1 と比較されます。

I、Q、M、D、

入力ビット 2 がマスクビ

L、または定数

ット 2 と比較されます。

I、Q、M、D、

入力ビット 3 がマスクビ

L、または定数

ット 3 と比較されます。

I、Q、M、D、

入力ビット 4 がマスクビ

L、または定数

ット 4 と比較されます。

IN_BIT1
IN_BIT2
IN_BIT3
IN_BIT4

868

Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN_BIT5

BOOL

I、Q、M、D、

入力ビット 5 がマスクビ

L、または定数

ット 5 と比較されます。

I、Q、M、D、

入力ビット 6 がマスクビ

L、または定数

ット 6 と比較されます。

I、Q、M、D、

入力ビット 7 がマスクビ

L、または定数

ット 7 と比較されます。

I、Q、M、D、

入力ビット 8 がマスクビ

L、または定数

ット 8 と比較されます。

I、Q、M、D、

入力ビット 9 がマスクビ

L、または定数

ット 9 と比較されます。

I、Q、M、D、

入力ビット 10 がマスク

L、または定数

ビット 10 と比較されま

IN_BIT6
IN_BIT7
IN_BIT8
IN_BIT9
IN_BIT10

Input
Input
Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL
BOOL

す。
IN_BIT11

Input

BOOL

I、Q、M、D、

入力ビット 11 がマスク

L、または定数

ビット 11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、

入力ビット 12 がマスク

L、または定数

ビット 12 と比較されます。

IN_BIT13

Input

BOOL

I、Q、M、D、

入力ビット 13 がマスク

L、または定数

ビット 13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、

入力ビット 14 がマスク

L、または定数

ビット 14 と比較されます。

IN_BIT15

Input

BOOL

I、Q、M、D、

入力ビット 15 がマスク

L、または定数

ビット 15 と比較されます。

OUT

Output

BOOL

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

869

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

ERR_CODE

WORD

I、Q、M、D、

エラー情報

Output

L、P
OUT_STEP

Output

BYTE

I、Q、M、D、一致するマスクを持つス

L、P

テップ番号を含むか、または一致が検出されない
場合は、LAST パラメータの値よりも「1」だけ大きいステップ番号を含み
ます。

LAST

StaticBYTE

I、Q、M、D、一致するマスクをスキャ

L、P、または定 ンする最後のステップの数

ステップ番号を指定します。

CMP_VAL

StaticARRAY OF WORD I、Q、M、D、

比較マスク[0～15, 0～

L、または定数15]:インデックスの最初の番号はステップ番号
で、2 番目の番号はマス
クビット番号です。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

000E

LAST パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

870

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

3.2.11.6

LEAD_LAG:リード/ラグアルゴリズム

説明「リード/ラグアルゴリズム」命令を使用してアナログタグによってシグナルを処理できま
す。GAIN パラメータのゲイン値はゼロよりも大きくなければなりません。「リード/ラグ
アルゴリズム」命令の結果は、以下の等式を使用して計算されます。
287

/'B7,0(6$03/(B7/*B7,0(/'B7,0(,1*$,135(9B287*$,1/*B7,0(6$03/(B7/*B7,0(6$03/(B7/*B7,0(6$03/(B735(9B,1「リード/ラグアルゴリズム」命令は、処理を固定プログラムサイクルで行う場合のみ正しい
結果が得られます。LD_TIME、LG_TIME、および SAMPLE_T パラメータには同じ単位を指定する必要があります。LG_TIME > 4 + SAMPLE_T の場合、この命令は以下の関数を実行します。
OUT = GAIN * ((1 + LD_TIME * s) / (1 + LG_TIME * s)) * IN
GAIN パラメータの値がゼロ以下の場合、計算は実行されず、ERR_CODE パラメータでエラー情報が出力されます。
「リード/ラグアルゴリズム」命令をダイナミックフィードフォワード制御でループと共に補償器として使用できます。この命令は、2 つの操作から成ります。「リード」操作は OUT
出力のフェーズをシフトして、出力が入力の前に来るようにします。一方「ラグ」操作は出力をシフトして、出力が入力の後になるようにします。「ラグ」演算は積分に相当する
ため、ノイズサプレッサやローパスフィルタとして使用できます。「リード」演算は微分と同等なため、ハイパスフィルタとして使用できます。これらの 2 つの命令(リードおよびラグ)を併用すると、低周波域では出力フェーズが入力フェーズよりも遅れ、高周波域では
出力フェーズが入力フェーズに先行します。つまり「リード/ラグアルゴリズム」命令は帯域フィルタとして使用できます。

パラメータ
次の表に、「リード/ラグアルゴリズム」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL

I、Q、M、D、L イネーブル出力

871

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

REAL

I、Q、M、D、処理対象の現在のサンプ

Input

L、P、または定 ル時間(サイクルタイム)
SAMPLE_T

Input

INT

数

の入力値。

I、Q、M、D、

サンプル時間L、P、または定数
OUT

OutputREAL

I、Q、M、D、

命令の結果

L、P
ERR_CODE

Output

WORD

I、Q、M、D、

エラー情報

L、P
LD_TIME

Static

REAL

I、Q、M、D、

サンプル時間としての同

L、P、または定 一ユニット内のリードタ
LG_TIME

Static

REAL

数

イム。

I、Q、M、D、

サンプル時間としての同

L、P、または定 一ユニット内のラグタイ
GAIN

Static

REAL

数

ム。

I、Q、M、D、% / %で表されるゲイン(定L、P、または定 常状態時の出力の切り替
数

えと入力の切り替えとの比率)。

PREV_IN

Static

REAL

I、Q、M、D、

前の入力

L、P、または定数
PREV_OUT

Static

REAL

I、Q、M、D、前の出力

L、P、または定
数872

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

0009

GAIN パラメータの値がゼロ以下である。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

ಯ/($'B/$*B'%ಯ
/($'B/$*
ಯ7DJ,Qಯ

(1

287

ಯ7DJB,QSXWಯ

,1(55B&2'(

ಯ7DJB,QSXWB6$03/(B7ಯ

6$03/(B7(12

ಯ7DJB2XWSXWB5HVXOWಯಯ7DJB(UURU&RGHಯ
ಯ7DJ2XWಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前
この例では、入力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

IN

Tag_Input

2.0

SAMPLE_T

Tag_InputSampleTime

10

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

873

基本命令
3.2 FBD
以下の値が命令の「LEAD_LAG_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

LD_TIME

DBD12

2.0

LG_TIME

DBD16

2.0

GAIN

DBD20

1.0

PREV_IN

DBD24

6.0

PREV_OUT

DBD28

6.0

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OUT

Tag_Output_Result

2.0

以下の値が命令のインスタンスデータブロック「LEAD_LAD_DB」に保存されます。

3.2.11.7

パラメータ

オペランド

値

PREV_IN

DBD24

2.0

PREV_OUT

DBD28

2.0

SEG:7 セグメント表示のビットパターンの作成

説明「7 セグメント表示のビットパターンの作成」命令を使用して、指定されたソースワードの
4 つの各 16 進数(IN)を 7 セグメント表示の相当するビットパターンに変換します。命令の結果は、OUT パラメータにダブルワードで出力されます。

874

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD
16 進数と 7 セグメント(a、b、c、d、e、f、g)の割り当ての間には、以下の関係がありま
す。
入力する数

セグメントの割 表示

値り当て(バイナリ)‑gfedcba

0000

00111111

00001

000001101

7 セグメント表示(16 進数)

0010

01011011

2

0011

01001111

3

0100

01100110

4

0101

01101101

5

0110

01111101

6

0111

00000111

7

1000

01111111

8

1001

01100111

9

1010

01110111

A

1011

01111100B

110000111001

C

1101

01011110D

1110

01111001

E

1111

01110001

F

D
I

E
J

H

F
G

パラメータ
次の表に、「7 セグメント表示のビットパターンの作成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL

I、Q、M、D、L イネーブル出力

875

基本命令
3.2 FBD
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

WORD

I、Q、M、D、4 つの 16 進数のソース

Input

L、P、または定 ワード
数
OUT

Output

DWORD

I、Q、M、D、

7 セグメント表示のビッ

L、P

トパターン

例
次の例で、命令がどのように動作するかを示します。
6(*
ಯ7DJ,Qಯ

(1

287

ಯ7DJB2XWSXWಯಯ7DJB,QSXWಯ

,1

(12

ಯ7DJ2XWಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

16 進数

2 進数

IN

Tag_Input

W#16#1234

0001 0010 0011 0100

OUT

Tag_Output

DW#16065B4F66

00000110 01011011
01001111 01100110
表示:1234

3.2.11.8

BCDCPL:10 の補数の作成

説明「10 の補数の作成」命令を使用して、IN パラメータで指定された 7 桁の BCD 数の 10 の補数を作成できます。この命令は、次の数式を使用して計算します。
10000000 (BCD として)
– 7 桁の BCD 数

876

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.2 FBD---------------------------------------10 の補数(BCD として)

パラメータ
次の表に、「10 の補数の作成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

ビット列

I、Q、M、D、

7 桁の BCD 数

L、P、または定数
ERR_CODE

Output

DWORD

I、Q、M、D、

命令の結果

L、P

例
次の例で、命令がどのように動作するかを示します。
%&'&3/
ಯ7DJ,Qಯ

(1(55B&2'(

ಯ7DJB,QSXWಯ

,1

(12

ಯ7DJB2XWSXWಯಯ7DJ2XWಯ

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値*

IN

Tag_Input

DW#16#01234567

ERR_CODE

Tag_Output

DW#16#08765433*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

877

基本命令
3.2 FBD

3.2.11.9

BITSUM:セットビット数カウント

説明「セットビット数カウント」命令を使用して、シグナル状態「1」にセットされるオペラン
ドのビット数をカウントします。ビットをカウントするオペランドは、IN パラメータで指定されます。命令の結果は、RET_VAL パラメータに出力されます。

パラメータ
次の表に、「セットビット数カウント」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

EN

BOOL

I、Q、M、D、

イネーブル入力

Input

L、T、C
ENO

Output

BOOL

I、Q、M、D、L イネーブル出力

IN

Input

DWORD

I、Q、M、D、

セットビット数をカウン

L、P、または定 トするオペランド。
数
RET_VAL

Output

INT

I、Q、M、D、セットするビットの数

L、P例
次の例で、命令がどのように動作するかを示します。
%,7680878

ಯ7DJ,Qಯ(1

5(7B9$/

ಯ7DJB,QSXWಯ

,1

(12

ಯ7DJB2XWSXWಯಯ7DJ2XWಯTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値*

IN

Tag_Input

DW#16#12345678

RET_VAL

Tag_Output

W#16#000D (13 ビット)

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

3.3

STL

3.3.1

ビット論理演算3.3.1.1

R_TRIG: 信号立ち上がりエッジの検出

説明「信号立ち上がりエッジの検出」命令を使用して、CLK 入力で「0」から「1」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前の照会(エッジメモ
リビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「0」から「1」への状態変化を検出すると、Q 出力で信号立ち上がりエッジが生成されます。つまり、正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

パラメータ
次の表に、「信号立ち上がりエッジの検出」命令のパラメータを示します。
パラメータ 宣言

データタイプ

CLK

BOOL

Q

Input
OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL

メモリ領域

説明

I、Q、M、D、エッジが照会される受信

L、または定数

信号

I、Q、M、D、L エッジ評価の結果

879

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL R_TRIG, "R_TRIG_DB"// 命令が呼び出されます。

CLK := "TagIn"// 信号立ち上がりエッジが検出される。

Q := "TagOut"// 信号立ち上がりエッジのシグナル状態が「1」。

CLK 入力のタグでの前の状態は、「R_TRIG_DB」タグに保存されます。シグナル状態の「0」から「1」への変化が「TagIn」オペランドで検出される場合、1 つのサイクルに対する「TagOut」出力のシグナル状態は「1」になります。

3.3.1.2

F_TRIG: 信号立ち下がりエッジの検出

説明「信号立ち下がりエッジの検出」命令を使用して、CLK 入力で「1」から「0」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前の照会(エッジメモ
リビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「1」から「0」への状態変化を検出すると、Q 出力で信号立ち下がりエッジが生成されます。つまり、正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

パラメータ
次の表に、「信号立ち下がりエッジの検出」命令のパラメータを示します。
パラメータ

宣言

データタイプ

CLK

Input

BOOL

Q

Output

BOOL

メモリ領域

説明

I、Q、M、D、エッジが照会さL、または定数

れる受信信号

I、Q、M、D、L エッジ評価の結果例
次の例で、命令がどのように動作するかを示します。

880

STL

説明

CALL F_TRIG, "F_TRIG_DB"// 命令が呼び出されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

CLK := "TagIn"// 信号立ち下がりエッジが検出される。

Q := "TagOut"// 信号立ち下がりエッジのシグナル状態が「1」。

CLK 入力のタグでの前の状態は、「F_TRIG_DB」タグに保存されます。「TagIn」オペランド
で「1」から「0」へのシグナル状態の変化が検出されると、TagOut 出力のシグナル状態は
1 サイクルについて「1」になります。

3.3.2

タイマの動作

3.3.2.1

TP: パルスの生成

説明「パルス生成」命令を使用して、プログラムされた持続時間の出力 Q を設定できます。この
命令は、IN パラメータの論理演算結果(RLO)が「0」から「1」(信号の立ち上がりエッジ)に切り替わるときに開始されます。命令が開始されると、プログラムされた時間 PT が開始します。以降の入力信号の切り替えに関わらず、Q パラメータが時間 PT に対してセットされます。時間 PT の経過中、IN 入力での新しい信号立ち上がりエッジの検出は Q 出力のシグナル状態に影響を与えません。
ET 出力で現在時間値を照会できます。時間値は T#0s で開始し、時間 PT の値に達すると終了します。時間 PT が経過して入力 IN のシグナル状態が「0」の場合、ET 出力がリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET 出
力はこの時間が経過するとすぐに定数値を返します。
オペレーティングシステムは、コールドリスタート中に「パルス生成」命令のインスタン
スをリセットします。ウォームリスタート後に命令のインスタンスを初期化するには、PT
パラメータに値「0」をセットして、初期化するインスタンスをスタートアップ OB で呼び出します。「パルス生成」命令が別のブロック内にある場合は、上位レベルブロックを初期化することによってこれらのインスタンスをリセットできます。
プログラムコードで「ブロック呼び出し」(CALL)命令を使用して「パルス生成」命令を呼び出します。
[???]ドロップダウンリストからデータタイプを選択した後、[呼び出しオプション]ダイア
ログが開きます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

881

基本命令
3.3 STL「パルス生成」命令の各呼び出しは、インスタンスデータが保存される IEC タイマに割り当てる必要があります。IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TP_TIME、または TP_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ「TP_TIME」または「TP_LTIME」のローカ
ルタグとしての宣言(#MyTP_TIMER など)

インスタンスデータ内の現在値の更新「パルスタイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「パルスタイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「パルスタイマ」
命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– ET または Q 出力が相互接続されている場合に命令が呼び出されたとき。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「パルスタイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

882

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「パルス生成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

パルスの持続時間。

L、P、または定 PT パラメータの値は正の数値であることが必要です。
Q

Output

BOOL

I、Q、M、D、

パルス出力

L、P
ET

Output

TIME, LTIME

I、Q、M、D、

現在のタイマ値

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

883

基本命令
3.3 STL

パルスタイミング図
次の図に、開始後の「パルス生成」命令の動作を示します。
,1

4

37

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL TP, "TP_DB"// 命令が呼び出されます。「TP_DB」データブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

884

IN := "Tag_Start"// 命令がオペランドの信号立ち上がりエッジで実行される。

PT := "Tag_PresetTIME"// パルスの持続時間

Q := "Tag_Output"// このオペランドはオペランド「Tag_PresetTIME」によって指定された持続時間にセットされる。

ET := "Tag_ElapsedTIME"// 現在のタイマ値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.2.2

TON: オンディレータイマ

説明「オンディレータイマ」命令を使用して、プログラムされた時間 PT だけ Q 出力のセットを遅延させることができます。この命令は、IN パラメータの論理演算結果(RLO)が「0」から「1」(信号の立ち上がりエッジ)に切り替わるときに開始されます。命令が開始されると、プログラムされた時間 PT が開始します。持続時間 PT が経過すると、Q パラメータはシグナル状態「1」を返します。Q パラメータは、開始入力 IN が「1」の間はセットされた状態が続きます。開始入力のシグナル状態が「1」から「0」に切り替わると、Q パラメータがリセットされます。開始入力で信号の新しい立ち上がりエッジが検出されると、タイマファンクションが再開されます。
ET 出力で現在時間値を照会できます。時間値は T#0s で開始し、時間 PT の値に達すると終了します。IN パラメータがシグナル状態「0」に切り替わると、ET パラメータは直ちにリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない場合、
ET 出力は時間 PT の期限が切れるとすぐに定数値を返します。
プログラムコード内で「ブロック呼び出し」(CALL)命令を使用して「オンディレータイマ」
命令を呼び出します。
[???]ドロップダウンリストからデータタイプを選択した後、[呼び出しオプション]ダイア
ログが開きます。
「オンディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。IEC タイマは、データタイプ IEC_TIMER、
IEC_LTIMER、TON_TIME、または TON_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ「TON_TIME」または「TON_LTIME」のローカルタグとしての宣言(#MyTON_TIMER など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

885

基本命令
3.3 STL

インスタンスデータ内の現在値の更新「オンディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オンディレータイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「オンディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– ET または Q 出力が相互接続されている場合に命令が呼び出されたとき。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オンディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

886

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オンディレータイマ」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

オンディレーの持続時間

L、P、または定 PT パラメータの値は正の数値であることが必要です。
Q
ET

OutputOutput

BOOL
TIME, LTIME

I、Q、M、D、

時間 PT によって遅延さL、Pれるシグナル状態

I、Q、M、D、

現在のタイマ値

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

887

基本命令
3.3 STL

パルスタイミング図
次の図に、開始後の「オンディレータイマ」命令の動作を示します。
,1

4

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL "TON", "TON_DB"// 命令が呼び出されます。「TON_DB」データブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := "Tag_Start"// 命令がオペランドの信号立ち上がりエッジで実行される。

PT := "Tag_PresetTIME"// IN パラメータの信号立ち上がりエッジによって時間を指定する。

Q := "Tag_Output"// オペランドは「Tag_PresetTIME」タグによって指定された持続時間
PT が期限切れになるとセットされる。
// Q パラメータは「Tag_Start」変数が「1」である限り、セットされた状態が継続する。
// 開始入力のシグナル状態が「1」から「0」に切り替わると、Q パラメータのオペランドがリセットされる。

ET := "Tag_ElapsedTIME"

888// 現在のタイマ値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.2.3

TOF: オフディレータイマ

説明「オフディレータイマ」命令を使用して、プログラムされた時間 PT だけ Q 出力のリセッ
トを遅延させることができます。Q パラメータは、IN パラメータで論理演算の結果(RLO)が「1」から「0」に切り替わった場合(信号立ち下がりエッジ)に設定されます。IN パラメー
タのシグナル状態が「1」に戻ると、プログラムされた時間 PT が開始します。時間 PT が継続している限り、Q パラメータはセットされたままです。時間 PT が経過すると、Q パ
ラメータはリセットされます。時間 PT の期限が切れる前に、IN パラメータのシグナル状態
が「1」に切り替わると、タイマはリセットされます。Q パラメータのシグナル状態は「1」にセットされた状態が継続します。
現在の時間値は、ET パラメータ内で照会することができます。時間値は T#0s で開始し、時間 PT の値に達すると終了します。時間 PT が経過すると、ET パラメータは、IN パラメータが「1」に戻るまで、現在の値がセットされた状態が続きます。持続時間 PT が経過する前に入力 IN が「1」に切り替わると、ET 出力が値 T#0s にリセットされます。命令がプ
ログラム内で、たとえば、スキップされて呼び出されない場合、ET 出力はこの時間が経過するとすぐに定数値を返します。
プログラムコード内で「ブロック呼び出し」(CALL)命令を使用して「オフディレータイマ」
命令を呼び出します。
[???]ドロップダウンリストからデータタイプを選択した後、[呼び出しオプション]ダイア
ログが開きます。
「オフディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。IEC タイマは、データタイプ IEC_TIMER、
IEC_LTIMER、TOF_TIME、または TOF_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ「TOF_TIME」または「TOF_LTIME」のロー
カルタグとしての宣言(#MyTOF_TIMER など)
オペレーティングシステムは、コールドリスタート中に「オフディレータイマ」命令のイ
ンスタンスをリセットします。ウォームリスタート後に命令のインスタンスを初期化するには、PT パラメータに値「0」をセットして、初期化するインスタンスをスタートアップ
OB で呼び出します。「オフディレータイマ」命令が別のブロック内にある場合は、上位レ
ベルブロックを初期化することによってこれらのインスタンスをリセットできます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

889

基本命令
3.3 STL

インスタンスデータ内の現在値の更新「オフディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オフディレータイマの起動」命令は、現在の RLO と、インスタンスデータの IN パラ
メータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が開始されます。「オフディレータイマの起動」命令が処理されると、IN パラメータの値がイン
スタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって「IN」パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オフディレータイマの起動」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

890

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「オフディレータイマ」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

オフディレーの持続時間

L、P、または定 PT パラメータの値は正の数値であることが必要です。
Q
ET

OutputOutput

BOOL
TIME, LTIME

I、Q、M、D、

時間 PT によって遅延さL、Pれるシグナル状態

I、Q、M、D、

現在のタイマ値

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

891

基本命令
3.3 STL

パルスタイミング図
次の図に、開始後の「オフディレータイマ」命令の動作を示します。
,1

4
37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL TOF, "TOF_DB"// 命令が呼び出されます。「TOF_DB」データブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := "Tag_Start"// 命令がオペランドの信号立ち上がりエッジで実行される。

PT := "Tag_PresetTIME"// IN パラメータの信号立ち下がりエッジによって時間を指定する。

Q := "Tag_Output"// オペランドは、IN パラメータの信号立ち上がりエッジによって命令が開始されるとセットされる。
// IN パラメータの値が「1」から「0」に切り替わると、「Tag_Output」オペランドは、「Tag_PresetTIME」タグによって指定された時間が継続中である限り、セットされた状態のままである。
// PT パラメータの時間が期限切れになると、オペランドはリセットされる。

ET := "Tag_ElapsedTIME"

892// 現在のタイマ値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.2.4

TONR: タイムアキュムレータ

説明「タイムアキュムレータ」命令を使用して、PT パラメータによってセットされた時間内の時間値を累積します。IN 入力のシグナル状態が「0」から「1」に切り替わると(信号立ち上
がりエッジ)、時間測定が実行され、時間 PT が開始します。時間 PT が経過している間、IN
入力のシグナル状態が「1」のときに記録された時間値が累積されます。累積時間は ET 出
力に書き込まれ、そこで照会できます。持続時間 PT が経過すると、出力 Q のシグナル状態
は「1」になります。IN パラメータのシグナル状態が「1」から「0」(立ち下がりエッジ)に切り替わった場合でも、Q パラメータは「1」にセットされた状態が継続します。
開始入力のシグナル状態に関係なく、R 入力が出力 ET と Q をリセットします。
「タイムアキュムレータ」命令は、ネットワーク内またはネットワークの終端に配置できます。この前に、論理演算が必要となります。
プログラムコード内で「ブロック呼び出し」(CALL)命令を使用して「タイムアキュムレー
タ」命令を呼び出します。
「タイムアキュムレータ」命令の各呼び出しは、インスタンスデータが格納される IEC タ
イマに割り当てられる必要があります。IEC タイマは、データタイプ IEC_TIMER、
IEC_LTIMER、TONR_TIME、または TONR_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ「TONR_TIME」または「TONR_LTIME」のローカルタグとしての宣言(#MyTONR_TIMER など)[???]ドロップダウンリストからデータタイプを選択した後、[呼び出しオプション]ダイア
ログが開きます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

893

基本命令
3.3 STL

インスタンスデータ内の現在値の更新「タイムアキュムレータ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「タイムアキュムレータ」命令は、現在の RLO と、インスタンスデータの「IN」パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が続行されます。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がり
エッジが存在し、時間測定が中断されます。「タイムアキュムレータ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモ
リビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• R 入力入力 R での信号「1」は、時間測定をリセットおよびブロックします。IN 入力でのエッジは無視されます。入力 R での信号「0」は、時間測定を再度有効にします。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– ET または Q 出力が相互接続されている場合に命令が呼び出されたとき。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「タイムアキュムレータ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

894

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、「タイムアキュムレータ」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
R

Input

BOOL

I、Q、M、D、

リセット入力

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

時間記録の最大持続時間

L、P、または定 PT パラメータの値は正の数値であることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

895

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

説明

Q

BOOL

I、Q、M、D、

時間 PT の経過時にセッ

L、P

トされる出力。

I、Q、M、D、

累積時間

ET

OutputOutput

TIME, LTIME

L、P

パルスタイミング図
次の図に、「タイムアキュムレータ」命令のパルスタイミング図を示します。
,1

5

4

37

(7

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL TONR, "TONR_DB"// 命令が呼び出されます。「TONR_DB」データブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := "Tag_Start"// 命令がオペランドの信号立ち上がりエッジで実行され、PT 入力で持続時間が開始される。
時間 PT が経過している間、IN 入力のシグナル状態が「1」のときに記録された時間値が累積されます。

896

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

R := "Tag_Reset"// 開始入力のシグナル状態に関係なく、R 入力が出力 ET と Q をリセットする。

PT := "Tag_PresetTIME"// 時間値を累積する時間を指定する。

Q := "Tag_Output"// PT の期限が切れると、オペランドがセットされる。
// IN パラメータのシグナル状態が「1」から「0」(立ち下がりエッジ)に切り替わった場合でさえも、Q パラメータは「1」にセットされた状態となる。

ET := "Tag_ElapsedTIME"

3.3.2.5// 累積時間は、出力 ET に書き込まれ、そこで照会可能。

RESET_TIMER: タイマのリセット

説明「タイマのリセット」命令を使用し、IEC タイマを「0」にリセットすることが可能です。
指定されたデータブロック内のタイマの構造体コンポーネントが「0」にリセットされます。
この命令は、RLO に影響を与えません。TIMER パラメータで、「タイマのリセット」命令に、プログラムで宣言された IEC タイマが割り当てられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

897

基本命令
3.3 STL

現在値の更新命令のデータは命令が呼び出されるときのみ更新され、割り当てられた IEC タイマがアクセスされるたびには更新されません。データを照会する場合、命令の呼び出しから次の命令の呼び出しまでのみ同一になります。
危険現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

898

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「タイマのリセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

TIMER

IEC_TIMER,

D、L

リセットされる IEC タイ

Output

IEC_LTIMER,マ

TP_TIME,
TP_LTIME,TON_TIME,
TON_LTIME,TOF_TIME,TOF_LTIME,TONR_TIME,TONR_LTIME
命令のデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL TON, "TON_DB"// 命令が呼び出されます。「TON_DB」インスタンスデータブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := "Tag_Start"// 命令がオペランド「Tag_Start」の信号立ち上がりエッジで実行される。

PT := "Tag_PresetTIME"// インスタンスデータブロック「TON_DB」に保存された IEC タイマ
が、オペランド「Tag_PresetTIME」で指定された持続時間で起動する。

Q := "Tag_Output"// オペランド「Tag_Output」は、オペランド「Tag_PresetTIME」
によって指定された持続時間 PT が期限切れになるとセットされます。
// オペランド「Tag_Start」のシグナル状態が「1」である限り、パラ
メータ Q はセットされた状態となる。
// 開始入力のシグナル状態が「1」から「0」に切り替わると、Q パラメータのオペランドがリセットされる。

ET := "Tag_ElapsedTIME"// 現在のタイマ値

A "Tag_Input_1"// オペランド「Tag_Input_1」および

A "Tag_Input_2"// オペランド「Tag_Input_2」がシグナル状態が「1」を返す。

CALL RESET_TIMER// 「タイマのリセット」命令が呼び出される。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

899

基本命令
3.3 STL

3.3.2.6

STL

説明

TIMER := "TON_DB"// IEC タイマがリセットされる。

PRESET_TIMER: 持続時間のロード

説明「持続時間のロード」命令を使用して、IEC タイマの時間を設定することが可能です。この命令は各サイクルで実行されます。この命令を実行すると、指定された IEC タイマの構造体に指定された時間を書き込みます。
プログラムで宣言した IEC タイマを「持続時間のロード」命令に割り当てます。
注記
命令の実行中に、指定された IEC タイマが動作している場合、指定された IEC タイマの現在の時刻が上書きされます。これによって、IEC タイマのタイマステータスを変更できます。

900

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

現在値の更新命令のデータは命令が呼び出されるとき、および割り当てられた IEC タイマがアクセスされるたびにのみ更新されます。Q または ET (たとえば"MyTimer".Q または"MyTimer".ET)で照会すると、IEC_TIMER 構造体が更新されます。
危険
現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

901

基本命令
3.3 STL

パラメータ
次の表に、「持続時間のロード」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

<Time

TIME, LTIME

I、Q、M、D、

IEC タイマが動作する時

L、または定数

間

D、L

長さがセットされる IEC

Input

duration><IEC timer> Output

IEC_TIMER,
IEC_LTIMER,

タイマ

TP_TIME,
TP_LTIME,TON_TIME,
TON_LTIME,TOF_TIME,TOF_LTIME,TONR_TIME,TONR_LTIME
命令のデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL TON, "TON_DB"// 命令が呼び出されます。「TON_DB」インスタンスデータブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := "Tag_Start"// 命令がオペランド「Tag_Start」の信号立ち上がりエッジで実行される。

PT := "Tag_PresetTIME"// インスタンスデータブロック「TON_DB」に保存された IEC タイマ
が、オペランド「Tag_PresetTIME」で指定された持続時間で起動する。

Q := "Tag_Output"// オペランド「Tag_Output」は、オペランド「Tag_PresetTIME」
によって指定された持続時間 PT が期限切れになるとセットされます。
// オペランド「Tag_Start」のシグナル状態が「1」である限り、パラ
メータ Q はセットされた状態となる。
// 開始入力のシグナル状態が「1」から「0」に切り替わると、Q パラメータのオペランドがリセットされる。

902

ET := "Tag_ElapsedTIME"// 現在のタイマ値

A "Tag_Input_1"// オペランド「Tag_Input_1」および

A "Tag_Input_2"// オペランド「Tag_Input_2」がシグナル状態が「1」を返す。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL説明CALL PRESET_TIMER// 「タイムアキュムレータ」命令が呼び出される。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

PT := "Tag_PresetTIME_new"// この命令が持続時間「Tag_PresetTIME_new」をインスタンスデー
タブロック「TON_DB」に書き込む。これにより、インスタンスデータブ
ロック内のオペランド「Tag_PresetTIME」の時間値が上書きされる。
タイマステータスのシグナル状態は、次の照会時、または "MyTimer".Qまたは "MyTimer".ET へのアクセス時に変化する可能性があります。

TIMER := "TON_DB"// IEC タイマがリセットされる。

3.3.3

カウンタ演算3.3.3.1

CTU: カウントアップ

説明
CV パラメータの値のインクリメントには、「カウントアップ」命令を使用できます。CU パ
ラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わるとこの命令が実行され、CV パラメータのカウンタ現在値が 1 インクリメントされます。立ち上がりエッジを検出するたびに、出力 CV において指定されたデータタイプの上限値に達するまで、カウンタ値がインクリメントされます。上限値に達すると、CU パラメータのシグ
ナル状態は命令に影響しなくなります。
Q パラメータのカウンタステータスを照会できます。Q パラメータのシグナル状態は、PV
パラメータによって決まります。カウンタ現在値が PV パラメータの値以上の場合、Q パ
ラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、Q パラメー
タのシグナル状態は「0」です。
R パラメータのシグナル状態が「1」に切り替わると、CV パラメータの値はゼロにリセッ
トされます。R パラメータのシグナル状態が「1」である限り、CU パラメータのシグナル状態はこの命令には影響を与えません。
プログラムコード内で「ブロック呼び出し」(CALL)命令を使用して「カウントアップ」命令を呼び出します。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

903

基本命令
3.3 STL「カウントアップ」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。
オペレーティングシステムは、コールドリスタート中に「カウントアップ」命令のインス
タンスをリセットします。ウォームリスタート後に命令のインスタンスを初期化するには、この命令の R パラメータに値「1」をセットして、初期化するインスタンスをスタートア
ップ OB で呼び出します。「カウントアップ」命令が別のブロック内にある場合は、上位レ
ベルブロックを初期化することによってこれらのインスタンスをリセットできます。

システムデータタイプ IEC_<Counter>のインスタンスデータブロック(共有 DB/シングルインスタンス)
インスタンスデータブロックのシステムデータタイプは命令のデータタイプから取得されます。
命令のデータタイプ

インスタンスデータブロック(共有 DB)のシ
ステムデータタイプ

SINT / USINT

IEC_SCOUNTER / IEC_USCOUNTER

INT / UINT

IEC_COUNTER / IEC_UCOUNTERDINT / UDINT

IEC_DCOUNTER / IEC_UDCOUNTER

LINT / ULINT

IEC_LCOUNTER / IEC_ULCOUNTER

シングルインスタンス内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。
インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照
してください。

ローカルタグ(マルチインスタンス)
ローカルタグのデータタイプは命令のデータタイプから取得されます。
命令のデータタイプ

ローカルタグのデータタイプ

SINT / USINTCTU_SINT / CTU_USINT / IEC_SCOUNTER /IEC_USCOUNTER

INT / UINT

CTU_INT / CTU_UINT / IEC_COUNTER /IEC_UCOUNTER

904

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
命令のデータタイプ

ローカルタグのデータタイプ

DINT / UDINT

CTU_DINT / CTU_UDINT / IEC_DCOUNTER /IEC_UDCOUNTER

LINT / ULINT

CTU_LINT / CTU_ULINT / IEC_LCOUNTER /IEC_ULCOUNTER「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをマ
ルチインスタンスとしてセットアップすると、このカウンタは、ブロックインターフェース
内で、保持型として定義されます。

IEC カウンタの宣言[???]ドロップダウンリストからデータタイプを選択した後、[呼び出しオプション]ダイア
ログが開きます。次に、IEC カウンタを以下のように宣言できます。
• 単一インスタンスシステムデータタイプ IEC_<Counter>のインスタンスデータブロックの宣言(たとえば、「MyIEC_COUNTER」)• マルチインスタンスブロックの「Static」セクションでの、タイプ CTU_<Data type>または IEC_<Counter>のローカルタグとしての宣言(たとえば、#MyCTU_COUNTER)

パラメータ
次の表に、「カウントアップ」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CU

BOOL

I、Q、M、D、

カウント入力Input

L、または定数
R

Input

BOOL

I、Q、M、D、

リセット入力

L、P、または定
数
PV

Input

整数

I、Q、M、D、Q 出力がセットされる値。

L、P、または定
数QOutput

BOOL

I、Q、M、D、L カウンタステータス

CV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

カウンタ現在値905

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL CTU, "CTU_DB"// 命令が呼び出されます。「CTU_DB」データブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

CU := "Tag_StartCTU"//「Tag_StartCTU」オペランドのシグナル状態が「0」から「1」に切り替わると、命令が実行され、「Tag_CounterValue」オペランドのカウ
ンタ現在値が 1 インクリメントされます。
// カウンタ値は、INT の上限値 = 32767 に達するまで、インクリメン
トされる。

3.3.3.2

R := "Tag_ResetCounter"// オペランド「Tag_ResetCounter」のシグナル状態が「1」に切り替
わると、オペランド「Tag_CounterValue」は「0」にリセットされる。

PV := "Tag_PresetValue"// このオペランドは Q パラメータのオペランドがセットされる値を定義する。

Q := "Tag_CounterStatus"// オペランドは、カウンタ現在値が PV パラメータの値以上である限り、セットされる。

CV := "Tag_CounterValue"// カウンタ現在値

CTD: カウントダウン

説明「カウントダウン」命令は、CV パラメータのデクリメントに使用します。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わるとこの命令が実行され、CV パラメータのカウンタ現在値が 1 デクリメントされます。指定されたデータタ
イプの下限値に達するまで、信号の立ち上がりエッジが検出されるたびにカウンタがデクリメントされます。下限値に達すると、CD パラメータのシグナル状態は命令に影響しなくなります。
Q パラメータのカウンタステータスを照会できます。カウンタ現在値がゼロ以下の場合、Q
パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、Q パラメータのシグナル状態は「0」です。
CV パラメータの値は、LD パラメータのシグナル状態が「1」に切り替わると PV パラメー
タの値にセットされます。LD パラメータのシグナル状態が「1」である限り、CD パラメータのシグナル状態はこの命令には影響を与えません。

906

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
プログラムコード内で「ブロック呼び出し」(CALL)命令を使用して「カウントダウン」命令を呼び出します。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントダウン」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。
オペレーティングシステムは、コールドリスタート中に「カウントダウン」命令のインス
タンスをリセットします。ウォームリスタート後に命令のインスタンスを初期化するには、この命令の LD パラメータに値「1」をセットして、初期化するインスタンスをスタート
アップ OB で呼び出します。この場合、CV パラメータの必要な初期値を PV パラメータで指定します。「カウントダウン」命令が別のブロック内にある場合は、上位レベルブロッ
クを初期化することによってこれらのインスタンスをリセットできます。

システムデータタイプ IEC_<Counter>のインスタンスデータブロック(共有 DB/シングルインスタンス)
インスタンスデータブロックのシステムデータタイプは命令のデータタイプから取得されます。
命令のデータタイプ

インスタンスデータブロック(共有 DB)のシ
ステムデータタイプ

SINT / USINT

IEC_SCOUNTER / IEC_USCOUNTER

INT / UINT

IEC_COUNTER / IEC_UCOUNTERDINT / UDINT

IEC_DCOUNTER / IEC_UDCOUNTER

LINT / ULINT

IEC_LCOUNTER / IEC_ULCOUNTER

シングルインスタンス内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。
インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照
してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

907

基本命令
3.3 STL

ローカルタグ(マルチインスタンス)
ローカルタグのデータタイプは命令のデータタイプから取得されます。
命令のデータタイプ

ローカルタグのデータタイプ

SINT / USINTCTD_SINT / CTD_USINT / IEC_SCOUNTER /IEC_USCOUNTER

INT / UINTCTD_INT / CTD_UINT / IEC_COUNTER /IEC_UCOUNTERDINT / UDINTCTD_DINT / CTD_UDINT / IEC_DCOUNTER /IEC_UDCOUNTER

LINT / ULINT

CTD_LINT / CTD_ULINT / IEC_LCOUNTER /IEC_ULCOUNTER「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをマ
ルチインスタンスとしてセットアップすると、このカウンタは、ブロックインターフェース
内で、保持型として定義されます。

IEC カウンタの宣言[???]ドロップダウンリストからデータタイプを選択した後、[呼び出しオプション]ダイア
ログが開きます。次に、IEC カウンタを以下のように宣言できます。
• 単一インスタンスシステムデータタイプ IEC_<Counter>のインスタンスデータブロックの宣言(たとえば、「MyIEC_COUNTER」)• マルチインスタンスブロックの「Static」セクションでの、タイプ CTD_<Data_type>または IEC_<Counter>のローカルタグとしての宣言(たとえば、#MyCTD_COUNTER)

パラメータ
次の表に、「カウントダウン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CD

BOOL

I、Q、M、D、

カウント入力Input

L、または定数
LD

Input

BOOL

I、Q、M、D、

ロード入力

L、P、または定
数908

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

説明

PV

整数

I、Q、M、D、CV 出力が LD = 1 にセッ

Input

L、P、または定 トされる値。
数
Q

Output

BOOL

I、Q、M、D、L カウンタステータス

CV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL CTD, "CTD_DB"// 命令が呼び出されます。「CTD_DB」データブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

CD := "Tag_StartCTD"//「Tag_StartCTD」オペランドのシグナル状態が「0」から「1」に切り替わると、命令が実行され、「Tag_CounterValue」オペランドのカウ
ンタ現在値が 1 デクリメントされます。
// CV パラメータのカウンタ値は、INT の下限値 = -32768 に達するまで、デクリメントされる。

3.3.3.3

LD := "Tag_LoadPV"// オペランド「Tag_LoadPV」のシグナル状態が「1」に切り替わると、オペランド「Tag_CounterValue」はオペランド「Tag_PresetValue」の値にセットされる。

PV := "Tag_PresetValue"// LD パラメータでシグナル状態が「1」のときにセットされるカウンタ
値を指定する。

Q := "Tag_CounterStatus"// カウンタ現在値がゼロ以下になると、オペランドがセットされる。

CV := "Tag_CounterValue"// カウンタ現在値

CTUD: カウントアップ/カウントダウン

説明
CV パラメータでのカウンタ値のインクリメント、またはデクリメントには、「カウントア
ップ/カウントダウン」命令を使用します。CU パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、カウンタ現在値が 1 インクリメントされ、CVパラメータに保存されます。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、CV パラメータのカウンタ値が 1 デクリメントされます。
プログラムサイクル内の CU および CD 入力で信号の立ち上がりエッジが存在すると、CVパラメータのカウンタ現在値は変化しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

909

基本命令
3.3 STL
カウンタ値は、CV パラメータで指定したデータタイプの上限値に達するまでインクリメ
ントすることができます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。カウンタ値は、指定されたデータタイプの下限値に達するとデクリメントされなくなります。
LD パラメータのシグナル状態が「1」に切り替わると、CV パラメータのカウンタ値が PV
パラメータの値にセットされます。LD パラメータのシグナル状態が「1」である限り、CU
入力および CD 入力のシグナル状態は命令に対する効力を持ちません。
R パラメータのシグナル状態が「1」に切り替わると、カウンタ値は 0 にセットされます。R
パラメータのシグナル状態が「1」である限り、CU、CD パラメータおよび LD パラメータのシグナル状態の変化は「カウントアップ/カウントダウン」命令に影響しません。
QU パラメータでアップカウンタのステータスを照会できます。カウンタ現在値が PV パ
ラメータの値以上の場合、QU パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、QU パラメータのシグナル状態は「0」です。PV パラメータには定数も指定できます。
QD パラメータでダウンカウンタのステータスを照会できます。カウンタ現在値がゼロ以下の場合、QD パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、
QD パラメータのシグナル状態は「0」です。
プログラムコード内で「ブロック呼び出し」(CALL)命令を使用して「カウントアップ/カ
ウントダウン」命令を呼び出します。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ/カウントダウン」命令の各呼び出しは、命令データが格納される IEC カ
ウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイ
プを持つ構造体です。
オペレーティングシステムは、コールドリスタート中に「カウントアップ/カウントダウン」
命令のインスタンスをリセットします。ウォームリスタート後に命令のインスタンスを初期化する場合、スタートアップ OB の次のパラメータ値で初期化するインスタンスを呼び出す必要があります。
• R パラメータの値は、アップカウンタとして使用する場合、「1」にセットする必要があります。
• LD パラメータの値は、ダウンカウンタとして使用する場合、「1」にセットする必要があります。この場合、CV パラメータの必要な初期値を PV パラメータに指定します。

910

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL「カウントアップ/カウントダウン」命令のインスタンスが他のブロックに位置している場
合、たとえば上位レベルのブロックを初期化するなどしてこれらのインスタンスをリセットすることができます。

システムデータタイプ IEC_<Counter>のインスタンスデータブロック(共有 DB/シングルインスタンス)
インスタンスデータブロックのシステムデータタイプは命令のデータタイプから取得されます。
命令のデータタイプ

インスタンスデータブロック(共有 DB)のシ
ステムデータタイプ

SINT / USINT

IEC_SCOUNTER / IEC_USCOUNTER

INT / UINT

IEC_COUNTER / IEC_UCOUNTERDINT / UDINT

IEC_DCOUNTER / IEC_UDCOUNTER

LINT / ULINT

IEC_LCOUNTER / IEC_ULCOUNTER

シングルインスタンス内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。
インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照
してください。

ローカルタグ(マルチインスタンス)
ローカルタグのデータタイプは命令のデータタイプから取得されます。
命令のデータタイプ

ローカルタグのデータタイプ

SINT / USINT

CTUD_SINT / CTUD_USINT / IEC_SCOUNTER /IEC_USCOUNTER

INT / UINT

CTUD_INT / CTUD_UINT / IEC_COUNTER /IEC_UCOUNTERDINT / UDINT

CTUD_DINT / CTUD_UDINT /IEC_DCOUNTER / IEC_UDCOUNTER

LINT / ULINT

CTUD_LINT / CTUD_ULINT / IEC_LCOUNTER /IEC_ULCOUNTERTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

911

基本命令
3.3 STL「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをマ
ルチインスタンスとしてセットアップすると、このカウンタは、ブロックインターフェース
内で、保持型として定義されます。

IEC カウンタの宣言[???]ドロップダウンリストからデータタイプを選択した後、[呼び出しオプション]ダイア
ログが開きます。次に、IEC カウンタを以下のように宣言できます。
• 単一インスタンスシステムデータタイプ IEC_<Counter>のインスタンスデータブロックの宣言(たとえば、「MyIEC_COUNTER」)• マルチインスタンスブロックの「Static」セクションでの、タイプ CTUD_<Data type>または IEC_<Counter>のローカルタグとしての宣言(たとえば、#MyCTUD_COUNTER)

パラメータ
次の表に、「カウントアップ/カウントダウン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CU

BOOL

I、Q、M、D、

カウントアップ入力

Input

L、または定数
CD

Input

BOOL

I、Q、M、D、

カウントダウン入力

L、または定数
R

Input

BOOL

I、Q、M、D、

リセット入力

L、P、または定
数
LD

Input

BOOL

I、Q、M、D、

ロード入力

L、P、または定
数
PV

Input

整数

I、Q、M、D、QU 出力がセットされる

L、P、または定 値/CV 出力がセットされる値(LD = 1 の場合に)。

数
QU

Output

BOOL

I、Q、M、D、L アップカウンタのステー
タス

QD

Output

BOOL

I、Q、M、D、L カウントダウンのステー
タス

CV

912

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL CTUD, "CTUD_DB"// 命令が呼び出されます。「CTUD_DB」データブロックが命令に割り当てられる。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

CU := "Tag_StartCTU"//「Tag_StartCTU」オペランドのシグナル状態が「0」から「1」に切り替わると、命令が実行され、「Tag_CounterValue」オペランドのカウ
ンタ現在値が 1 インクリメントされます。
// カウンタ値は、CU パラメータの信号立ち上がりエッジで、INT の上
限値 = 32767 に達するまでインクリメントされる。

CD := "Tag_StartCTD"//「Tag_StartCTD」オペランドのシグナル状態が「0」から「1」に切り替わると、命令が実行され、「Tag_CounterValue」オペランドのカウ
ンタ現在値が 1 デクリメントされます。
// CV パラメータのカウンタ値は、下限値 = -32768 に達するまで、デクリメントされる。

R := "Tag_ResetCounter"// オペランド「Tag_ResetCounter」のシグナル状態が「1」に切り替
わると、オペランド「Tag_CounterValue」は「0」にリセットされる。

LD := "Tag_LoadPV"// オペランド「Tag_LoadPV」のシグナル状態が「1」に切り替わると、オペランド「Tag_CounterValue」はオペランド「Tag_PresetValue」の値にセットされる。

PV := "Tag_PresetValue"// LD パラメータでシグナル状態が「1」のときにセットされるカウンタ
値を指定する。

QU := "Tag_CounterStatus"// オペランドは、カウンタ現在値が PV パラメータの値以上である限り、セットされる。

QD := "Tag_CounterStatus"// カウンタ現在値がゼロ以下になると、オペランドがセットされる。

CV := "Tag_CounterValue"// カウンタ現在値

3.3.4

比較演算

3.3.4.1

CompType:タグ構造のデータタイプを比較

説明「タグ構造のデータタイプを比較」命令を使用して、構造化されたタグの第 1 の比較値(IN1)が別の構造化されたタグの第 2 の比較値(IN2)と等しいかどうかを確認します。
比較条件が満たされている場合、この命令は OUT パラメータで論理演算の結果(RLO)「1」を返します。比較条件が満たされていない場合、この命令は RLO「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

913

基本命令
3.3 STL

浮動小数点数の比較
浮動小数点数を比較する場合、IEC チェックの設定とは関係なく、比較対象のオペランドのデータタイプが同じであることが必要です。
未定義の結果(たとえば、-1 のルート)である無効な浮動小数点数(NaN)の特殊なビットパ
ターンは比較できません。これは、一方のオペランドの値が NaN の場合に「CompType
EQ」命令と「CompType NE」命令の両方が結果として FALSE を返すことを意味します。

文字列の比較
文字列を比較する際には、個々の文字はそれらのコードによって比較されます(たとえば、「a」は「A」よりも大きい)。比較は左から右に実行されます。最初に異なる文字が、比較の結果を決定します。
次の表は、EQ 文字列比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'AA'

'AA'

1

'Hello World''HelloWorld'

0

'AA'

'aa'

0

'aa'

'aaa'

0

次の表は、NE 文字列比較の例を示しています。
<Operand1><Operand2>

命令の RLO

'AA'

'aa'

1

'Hello World''HelloWorld'

1

'AA'

'AA'

0

'aa'

'aaa'

1

文字列の個々の文字を比較することもできます。比較する文字数は、オペランド名の隣の角括弧内で指定されます。たとえば「MyString[2]」は、「MyString」文字列の第 2 の文字を比較します。

914

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

タイマ/日付/時刻の比較
無効なタイマ/日付/時刻のビットパターン(たとえば、
DT#2015-13-33-25:62:99.999_999_999)を比較することはできません。これは、一方のオ
ペランドの値が無効である場合に「CompType EQ」命令と「CompType NE」命令の両方が結果として FALSE を返すことを意味します。
すべての時刻を直接互いに比較できるとは限りません(S5TIME など)。この場合、比較できるように時刻が別の時刻に暗黙的に変換されます(たとえば、TIME に)。
異なるデータタイプの日付および時刻を比較する場合は、小さい日付/時刻データタイプの値が大きい日付/時刻データタイプに暗黙的に変換されます。これは、たとえば、2 つの日
付/時刻データタイプ DATE および DTL は DTL に基づいて比較されることを意味します。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
注記
構造体の比較の可用性
構造体を比較するためのオプションは、ファームウェアバージョン 2.0 以降の S7-1500 シ
リーズの CPU で使用できます。
2 つの構造化されたオペランドの値は、両方のタグの構造化されたデータタイプが同じである場合に比較することが可能です。構造体を比較する場合、IEC チェックの設定とは関係なく、比較対象のオペランドのデータタイプが同じであることが必要です。例外は、2 つのオペランドの一方が VARIANT または ANY である場合の比較です。プログラムの作成時にデータタイプがまだ既知ではない場合、VARIANT データタイプを使用することができます。この場合、任意のデータタイプの構造化されたタグとオペランドを比較することもできます。データタイプ VARIANT または ANY の 2 つのタグを互いに比較することもできます。
以下のデータタイプを使用できます。
• PLC データタイプ• STRUCT (データタイプ STRUCT の構造体が PLC データタイプ(UDT)に含まれているか、
比較対象の 2 つの構造体が STRUCT の ARRAY の 2 つのエレメントである必要があります。匿名構造体は許可されません。
)• ANY が指しているタグ• VARIANT が指しているタグ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

915

基本命令
3.3 STL
データタイプ ARRAY の 2 つのタグを比較するには、以下の要件を満たす必要があります。
• エレメントのデータタイプが同じである必要があります。
• 2 つの ARRAY の次元が同じである必要があります。
• すべての次元で、エレメント数が同じである必要があります。正確な ARRAY 制限値と一致する必要はありません。
次の表は、「等しい」かどうか構造体を比較する例を示しています。

916<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ A の タグ値

1

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ B の タグ値

0

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

TRUE

INT

2

INT

3

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

VARIANT (データタ タグ値

1

グ <PLC データタイ

イプ A のタグを提

プ>

供される)
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表は、「等しくないかどうか構造体を比較する例を示しています。
<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ A の タグ値

0

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

データタイプ B の タグ値

1

グ <PLC データタイ

タグ <PLC データ

プ>

タイプ>
BOOL

FALSE

BOOL

TRUE

INT

2

INT

3

<Operand1><Operand2>

命令の RLO

データタイプ A のタ タグ値

VARIANT (データタ タグ値

0

グ <PLC データタイ

イプ A のタグを提

プ>

供される)
BOOL

FALSE

BOOL

FALSE

INT

2

INT

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

917

基本命令
3.3 STL

パラメータ
次の表は、「タグ構造のデータタイプを比較」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN1

2 進数、整数、I、Q、M、D、最初の比較値

Input

浮動小数点数、 L、P
文字列、タイマ、日付と時
刻、固定/可変ARRAY 制限値を含む<データタイプ>の
ARRAY、
STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
IN2

Input

2 進数、整数、I、Q、M、D、第 2 の比較値

浮動小数点数、 L、P
文字列、タイマ、日付と時
刻、固定/可変ARRAY 制限値を含む<データタイプ>の
ARRAY、
STRUCT、
VARIANT、
ANY、PLC デー
タタイプ
OUT

Output

BOOL

I、Q、M、D、L 命令の結果

上記のように、データタイプ ARRAY、STRUCT (PLC データタイプでの)、VARIANT、
ANY、および PLC データタイプ(UDT)はファームウェアバージョン 2.0 以降でのみ使用可
能です。

918

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL CompType// 命令が呼び出されます。
// 必要なファンクション(「EQ」または「NE」のいずれか)をドロッ
プダウンリストから選択します。

3.3.4.2

IN1 := "Tag_Operand1"// 第 1 の比較値

IN2 := "Tag_Operand2"// 第 2 の比較値

OUT := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」出力はシグナル状態「1」を返します。つまり、「Tag_Operand1」オペランド
が「Tag_Operand2」に等しくなります。

VARIANTEQ_Type: EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較

説明「EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較」命令を使用して、
VARIANT が指すタグのデータタイプを照会できます。ブロックインターフェースで宣言した IN1 パラメータのタグのデータタイプと、IN2 パラメータのタグのデータタイプを「等しい」かどうか比較します。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。

タイマ/日付/時刻の比較
すべての時刻を直接互いに比較できるとは限りません(S5TIME など)。この場合、比較できるように時刻が別の時刻に暗黙的に変換されます(たとえば、TIME に)。
異なるデータタイプの日付および時刻を比較する場合は、小さい日付/時刻データタイプの値が大きい日付/時刻データタイプに暗黙的に変換されます。これは、たとえば、2 つの日
付/時刻データタイプ DATE および DTL は DTL に基づいて比較されることを意味します。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

919

基本命令
3.3 STL

構造体の比較
構造体の比較で、命令「CompType」を使用できます。一般に匿名構造体は、同じ ARRAYの一部でない場合には比較できません。
構造体の比較に関する追加情報については、CompType:タグ構造のデータタイプを比較 (ページ 913)を参照してください。

パラメータ
次の表に、
「EQUAL (等しい)かどうかデータタイプをタグのデータタイプと比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN1

VARIANT

L (ブロックイン 最初のオペランド

Input

説明

ターフェースの「一時」セクシ
ョンでの宣言はできません。)
IN2

Input

2 進数、整数、I、Q、M、D、

2 番目のオペランド

浮動小数点数、 L、P
タイマ、日付と時刻、文字列、
配列、PLC デー
タタイプ
RET_VAL

Output

BOOL

I、Q、M、D、L 命令の結果

例
次の例で、命令がどのように動作するかを示します。

920

STL

説明

CALL EQ_Type// 命令が呼び出されます。

IN1 := #Tag_Operand1// 比較する第 1 のオペランド

IN2 := "Tag_Operand2"// 比較する第 2 のオペランド

RET_VAL := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」出力
はシグナル状態「1」を返します。つまり、#Tag_Operand1 オペ
ランドが「Tag_Operand2」に等しくなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

NE_Type: UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較
説明「UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較」命令を使用
して、VARIANT が指すタグが所有しないデータタイプを照会できます。ブロックインター
フェースで宣言した IN1 パラメータのタグのデータタイプと、IN2 パラメータのタグのデータタイプを「等しくない」かどうか比較します。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。

タイマ/日付/時刻の比較
すべての時刻を直接互いに比較できるとは限りません(S5TIME など)。この場合、比較できるように時刻が別の時刻に暗黙的に変換されます(たとえば、TIME に)。
異なるデータタイプの日付および時刻を比較する場合は、小さい日付/時刻データタイプの値が大きい日付/時刻データタイプに暗黙的に変換されます。これは、たとえば、2 つの日
付/時刻データタイプ DATE および DTL は DTL に基づいて比較されることを意味します。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較で、命令「CompType」を使用できます。一般に匿名構造体は、同じ ARRAYの一部でない場合には比較できません。
構造体の比較に関する追加情報については、CompType:タグ構造のデータタイプを比較 (ページ 913)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

921

基本命令
3.3 STL

パラメータ
次の表に、「UNEQUAL (等しくない)かどうかデータタイプをタグのデータタイプと比較」
命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN1

VARIANT

L (ブロックイン 最初のオペランド

Input

説明

ターフェースの「一時」セクシ
ョンでの宣言はできません。)
IN2

Input

2 進数、整数、I、Q、M、D、

2 番目のオペランド

浮動小数点数、 L、P
タイマ、日付と時刻、文字列、
配列、PLC デー
タタイプ
RET_VAL

Output

BOOL

I、Q、M、D、L 命令の結果

結果
次の例で、命令がどのように動作するかを示します。
STL

922

説明

CALL NE_Type// 命令が呼び出されます。

IN1 := #Tag_Operand1// 比較する第 1 のオペランド

IN2 := "Tag_Operand2"// 比較する第 2 のオペランド

RET_VAL := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」出力はシグナル状態「1」を返します。つまり、#Tag_Operand1 オペラン
ドが「Tag_Operand2」に等しくなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

EQ_ElemType: EQUAL (等しい)かどうか配列要素のデータタイプをタグのデータタイプと比較
説明「EQUAL (等しい)かどうか配列要素のデータタイプをタグのデータタイプと比較」命令を使用して、VARIANT が指すタグのデータタイプを照会できます。ブロックインターフェース
で宣言した IN1 パラメータのタグのデータタイプと、IN2 パラメータのタグのデータタイ
プを「等しい」かどうか比較します。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。
VARIANT タグのデータタイプが ARRAY の場合、ARRAY エレメントのデータタイプが比較されます。

タイマ/日付/時刻の比較
すべての時刻を直接互いに比較できるとは限りません(S5TIME など)。この場合、比較できるように時刻が別の時刻に暗黙的に変換されます(たとえば、TIME に)。
異なるデータタイプの日付および時刻を比較する場合は、小さい日付/時刻データタイプの値が大きい日付/時刻データタイプに暗黙的に変換されます。これは、たとえば、2 つの日
付/時刻データタイプ DATE および DTL は DTL に基づいて比較されることを意味します。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較で、命令「CompType」を使用できます。一般に匿名構造体は、同じ ARRAYの一部でない場合には比較できません。
構造体の比較に関する追加情報については、CompType:タグ構造のデータタイプを比較 (ページ 913)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

923

基本命令
3.3 STL

パラメータ
次の表に、
「EQUAL (等しい)かどうか配列要素のデータタイプをタグのデータタイプと比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN1

VARIANT

L (ブロックイン 最初のオペランド

Input

説明

ターフェースの「一時」セクシ
ョンでの宣言はできません。)
IN2

Input

2 進数、整数、I、Q、M、D、

2 番目のオペランド

浮動小数点数、 L、P
タイマ、日付と時刻、文字列、
配列、PLC デー
タタイプ
RET_VAL

Output

BOOL

I、Q、M、D、L 命令の結果

結果
次の例で、命令がどのように動作するかを示します。

924

STL

説明

CALL EQ_ElemType// 命令が呼び出されます。

IN1 := #Tag_Operand1// 比較する第 1 のオペランド

IN2 := "Tag_Operand2"// 比較する第 2 のオペランド

RET_VAL := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」
出力はシグナル状態「1」を返します。つまり、#Tag_Operand1 オペランドが「Tag_Operand2」に等しく
なくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

NE_ElemType: UNEQUAL (等しくない)かどうか配列要素のデータタイプをタグのデータタイプと比較

説明「UNEQUAL (等しくない)かどうか配列要素のデータタイプをタグのデータタイプと比較」
命令を使用して、VARIANT が指すタグが所有しないデータタイプを照会できます。ブロックインターフェースで宣言した IN1 パラメータのタグのデータタイプと、IN2 パラメータのタグのデータタイプを「等しくない」かどうか比較します。
IN1 パラメータのタグのデータタイプは、VARIANT であることが必要です。IN2 パラメー
タのタグは、基本データタイプまたは PLC データタイプです。
VARIANT タグのデータタイプが ARRAY の場合、ARRAY エレメントのデータタイプが比較されます。

タイマ/日付/時刻の比較
すべての時刻を直接互いに比較できるとは限りません(S5TIME など)。この場合、比較できるように時刻が別の時刻に暗黙的に変換されます(たとえば、TIME に)。
異なるデータタイプの日付および時刻を比較する場合は、小さい日付/時刻データタイプの値が大きい日付/時刻データタイプに暗黙的に変換されます。これは、たとえば、2 つの日
付/時刻データタイプ DATE および DTL は DTL に基づいて比較されることを意味します。
暗黙的な変換が失敗すると、比較結果は FALSE になります。

構造体の比較
構造体の比較で、命令「CompType」を使用できます。一般に匿名構造体は、同じ ARRAYの一部でない場合には比較できません。
構造体の比較に関する追加情報については、CompType:タグ構造のデータタイプを比較 (ページ 913)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

925

基本命令
3.3 STL

パラメータ
次の表に、「UNEQUAL (等しくない)かどうか配列要素のデータタイプをタグのデータタイ
プと比較」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN1

VARIANT

L (ブロックイン 最初のオペランド

Input

説明

ターフェースの「一時」セクシ
ョンでの宣言はできません。)
IN2

Input

2 進数、整数、I、Q、M、D、

2 番目のオペランド

浮動小数点数、 L、P
タイマ、日付と時刻、文字列、
配列、PLC デー
タタイプ
RET_VAL

Output

BOOL

I、Q、M、D、L 命令の結果

結果
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL NE_ElemType// 命令が呼び出されます。

IN1 := #Tag_Operand1// 比較する第 1 のオペランド

IN2 := "Tag_Operand2"// 比較する第 2 のオペランド

RET_VAL := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」出力はシグナル状態「1」を返します。つまり、#Tag_Operand1 オペラ
ンドが「Tag_Operand2」に等しくなくなります。

IS_NULL:EQUALS NULL ポインタの問い合わせ
説明「EQUALS NULL ポインタの問い合わせ」命令を使用して、VARIANT が NULL ポインタを指すかどうか(そのためオブジェクトを指さないかどうか)を照会します。

926

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
OPERAND パラメータのタグのデータタイプは、VARIANT であることが必要です。
注記
VARIANT タグは、ANY ポインタを指します。
VARIANT タグが ANY ポインタを指す場合、この命令は常に(ANY ポインタが NULL である
場合でも)、結果 RLO = 「0」を返します。

パラメータ
次の表は、「EQUALS NULL ポインタの問い合わせ」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

OPERAND

VARIANT

L (ブロックイン EQUALS NULL (NULL に等

Input

説明

ターフェースの しい)かどうかで比較され「一時」セクシるオペランドョンでの宣言はできません。)
RET_VAL

Output

BOOL

I、Q、M、D、L 命令の結果

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL IS_NULL// 命令が呼び出されます。

OPERAND := #Tag_Operand// 比較するオペランド

RET_VAL := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」出力
はシグナル状態「1」を返します。つまり、#Tag_Operand オペ
ランドがオブジェクトを指しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

927

基本命令
3.3 STLNOT_NULL:UNEQUALS NULL ポインタの問い合わせ説明「UNEQUALS NULL ポインタの問い合わせ」命令を使用して、VARIANT が NULL ポインタを指さないかどうか(そのためオブジェクトを指すかどうか)を照会します。
OPERAND パラメータのタグのデータタイプは、VARIANT であることが必要です。
注記
VARIANT タグは、ANY ポインタを指します。
VARIANT タグが ANY ポインタを指す場合、この命令は常に(ANY ポインタが NULL である
場合でも)、結果 RLO = 「1」を返します。

パラメータ
次の表は、「UNEQUALS NULL ポインタの問い合わせ」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

OPERAND

VARIANT

L (ブロックイン UNEQUALS NULL (NULL

Input

説明

ターフェースの に等しくない)かどうかで「一時」セクシ比較されるオペランド

ョンでの宣言はできません。)
RET_VAL

Output

BOOL

I、Q、M、D、L 命令の結果

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

928

STL

説明

CALL NOT_NULL// 命令が呼び出されます。

OPERAND := #Tag_Operand// 比較するオペランド

RET_VAL := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」出力
はシグナル状態「1」を返します。つまり、#Tag_Operand オペ
ランドがオブジェクトを指しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

IS_ARRAY: 配列のチェック

説明「配列のチェック」命令を使用して、VARIANT が ARRAY データタイプのタグを指すかどうかを照会できます。
OPERAND パラメータのタグのデータタイプが VARIANT です。照会の結果は、RET_VAL パ
ラメータに出力されます。

パラメータ
次の表に、「配列のチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

OPERAND

VARIANT

L (ブロックイン ARRAY に関する照会が行

Input

説明

ターフェースの われるオペランド「Input」、「InOut」、および「Temp」セクション内で宣言可能。)
RET_VAL

Output

BOOL

I、Q、M、D、L 命令の結果

有効なデータタイプの追加情報については、「関連項目」を参照してください。
注記
配列データブロックのチェック
ArrayDB とともに IS_ARRAY 命令を使用し、DB_ANY_TO_VARIANT によって VARIANT 入力
パラメータを生成する場合、その ArrayDB が、データタイプ VARIANT の仮パラメータの実パラメータとしてプログラム内のどこかでシンボリックに使用されている必要があります。
正しく動作するには、使用場所がダウンロードされていれば十分です。これは、実行には必要ありません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL IS_ARRAY// 命令が呼び出されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

929

基本命令
3.3 STL
STL

説明

OPERAND := #Tag_Input// ARRAY で照会されるオペランド

RET_VAL := "Tag_Result"// 比較命令の条件が満たされている場合、「Tag_Result」出力はシグナル状態「1」を返します。 // つまり、#Tag_Input オペランドでのVARIANT が ARRAY を指します。

EQ_TypeOfDB:EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較

説明「EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較」命令を使用して、DB_ANY データタイプのタグがアドレス指定する、データブロックにあるデータタイプを照会します。IN1 パラメータのタグによってアドレス指定される DB のデー
タタイプと、他のタグのデータタイプ、または直接 IN2 パラメータのデータタイプとを「Equal」であるかどうか比較します。
IN1 パラメータのタグのデータタイプは、DB_ANY であることが必要です。IN2 パラメー
タのタグは、たとえば PLC データタイプ、システムデータタイプ、軸、FB などにすることが可能です。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN1

Input

DB_ANY

L (ブロックイン 最初のオペラン
ターフェースの ド「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

IN2
RET_VAL

Input
OutputTYPE_ID
BOOL

I、Q、M、D、

2 番目のオペラ

L、P

ンド

I、Q、M、D、L 比較の結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

930

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL EQ_TypeOfDB// 命令呼び出し

IN1 := #InputDBAny// DB_ANY を照会するオペランド

IN2 := TO_SpeedAxis// DB をアドレス指定する#InputDBAny オペランドのデータタイプがデータタイプ TO_SpeedAxis と等しい
場合、比較命令の条件が満たされます。

RET_VAL := "TagOut"// 比較結果

次の条件が満たされている場合、「TagOut」出力がセットされません。
• データブロックの番号が「0」の場合。
• データブロックが存在しません。
• データブロックが配列 DB でない場合。
• データブロックにデータタイプ UDT (PLC データタイプ)のタグが含まれている場合。

NE_TypeOfDB:UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較

説明「UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較」
命令を使用して、DB_ANY データタイプのタグがアドレス指定する、データブロックにはないデータタイプを照会します。IN1 パラメータのタグによってアドレス指定される DB の
データタイプと、他のタグのデータタイプ、または直接 IN2 パラメータのデータタイプとを「Not equal」であるかどうか比較します。
IN1 パラメータのタグのデータタイプは、DB_ANY であることが必要です。IN2 パラメー
タのタグは、たとえば PLC データタイプ、システムデータタイプ、軸、FB などにすることが可能です。
比較条件が満たされている場合、この命令は論理操作(RLO)の結果「1」を返します。比較
条件が満たされていない場合、この命令は RLO「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

931

基本命令
3.3 STL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN1

Input

DB_ANY

L (ブロックイン 最初のオペラン
ターフェースの ド「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

IN2
RET_VAL

Input
OutputTYPE_ID
BOOL

I、Q、M、D、

2 番目のオペラ

L、P

ンド

I、Q、M、D、L 比較の結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL NE_TypeOfDB// 命令呼び出し

IN1 := #InputDBAny// DB_ANY を照会するオペランド

IN2 := TO_SpeedAxis// DB をアドレス指定する#InputDBAny オペランドのデータタイプがデータタイプ TO_SpeedAxis と等しくない場合、比較命令の条件が満たされます。

RET_VAL := "TagOut"// 比較結果

次の条件が満たされている場合、「TagOut」出力がセットされません。
• データブロックの番号が「0」の場合。
• データブロックが存在しません。
• データブロックが配列 DB でない場合。
• データブロックにデータタイプ UDT (PLC データタイプ)のタグが含まれている場合。

932

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.5

四則演算

3.3.5.1

MIN: 最小値の取得

説明「最小値の取得」命令は入力 IN1、IN2 および IN3 の値を比較し、最小値を OUT 出力に書き込みます。命令は、すべての入力のタグが同じデータタイプの場合にのみ実行されます。
OUT パラメータの値は、次の条件の 1 つが満たされると無効です。
• 指定された複数のタグが同じデータタイプでないこと。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「最小値の取得」命令のパラメータを示します。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、

Input

点数

メモリ領域

説明
最初の入力値

L、P、または定
数

IN2

Input

整数、浮動小数 I、Q、M、D、
点数

2 番目の入力値

L、P、または定
数

IN3

Input

整数、浮動小数 I、Q、M、D、
点数

3 番目の入力値

L、P、または定数

OUT

Output整数、浮動小数 I、Q、M、D、
点数

結果

L、P

IEC チェックが有効でない場合も、等しい長さのビット列または整数を命令のデータタ
イプとして選択することによって、データタイプ TIME、LTIME、TOD、LTOD、DATE お
よび LDT のタグを使用することができます(TIME => DINT の代わりに、UDINT または
DWORD = 32 ビットなど)。
[???]ドロップダウンリストからパラメータ INn および OUT のデータタイプを選択できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

933

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL MIN// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN1 := "TagIn_Value1"// 最初の入力値が比較される。

IN2 := "TagIn_Value2"// 比較される 2 番目の入力値。

IN3 := "TagIn_Value3"// 比較される 3 番目の入力値。

OUT := "Tag_Minimum"「Tag_Minimum」オペランドは「TagIn_Value1」オペランドの値で書き込まれます(この値が最小値であるため)。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.3.5.2

パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

IN3

TagIn_Value3

13333

OUT

Tag_Minimum

12222

MAX: 最大値の取得

説明「最大値の取得」命令は、入力 IN1、IN2 および IN3 の値を比較し、最大値を OUT 出力に書き込みます。命令は、すべての入力のタグが同じデータタイプの場合にのみ実行されます。
OUT 出力の値は、次の条件の 1 つが満たされると無効です。
• 指定された複数のタグが同じデータタイプでないこと。
• 浮動小数点数の値が無効であること。

934

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「最大値の取得」命令のパラメータを示します。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、

Input

メモリ領域

説明
最初の入力値

L、P、または定

点数

数
IN2

Input

整数、浮動小数 I、Q、M、D、

2 番目の入力値

L、P、または定

点数

数
IN3

Input

整数、浮動小数 I、Q、M、D、

3 番目の入力値

L、P、または定

点数

数
OUT

Output整数、浮動小数 I、Q、M、D、

結果

L、P

点数

IEC チェックが有効でない場合も、等しい長さのビット列または整数を命令のデータタ
イプとして選択することによって、データタイプ TIME、LTIME、TOD、LTOD、DATE お
よび LDT のタグを使用することができます(TIME => DINT の代わりに、UDINT または
DWORD = 32 ビットなど)。
[???]ドロップダウンリストからパラメータ INn および OUT のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL MAX// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN1 := "TagIn_Value1"// 最初の入力値が比較される。

IN2 := "TagIn_Value2"// 比較される 2 番目の入力値。

IN3 := "TagIn_Value3"// 比較される 3 番目の入力値。

OUT := "Tag_Maximum"// 「TagIn_Value2」オペランドは「Tag_Maximum」オペランドの値で書き込まれます(この値が最大値であるため)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

935

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.3.5.3

パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

IN3

TagIn_Value3

13333

OUT

Tag_Maximum

14444

LIMIT: 制限値の設定

説明「制限値の設定」命令を使用して、IN 入力の値を入力 MN と MX の値に制限することができます。IN 入力の値が MN 条件<= IN <= MX を満たす場合、この値は OUT 出力にコピーされます。条件が満たされず IN 入力値が下限値 MN を下回ると、OUT 出力は MN 入力の値にセットされます。上限値 MX を超える場合、OUT 出力は MX 入力の値にセットされます。
命令は、入力のすべてのタグが同じデータタイプの場合のみ実行されます。
MN 入力の値が MX 入力の値よりも大きい場合、結果は IN パラメータで指定された値になります。
OUT 出力の値は、次の条件の 1 つが満たされると無効です。
• 指定された複数のタグが同じデータタイプでないこと。
• オペランドの値が無効である。
• MN パラメータの値が MX パラメータの値よりも大きいこと。

936

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「制限値の設定」命令のパラメータを示します。
パラメータ 宣言

データタイプMN

整数、浮動小数 I、Q、M、D、

Input

メモリ領域

点数、TIME、L、P、または定LTIME、TOD、

数

説明
下限値

LTOD、DATE、
LDT
IN

Input

整数、浮動小数 I、Q、M、D、点数、TIME、L、P、または定LTIME、TOD、数

入力値

LTOD、DATE、
LDT
MX

Input

整数、浮動小数 I、Q、M、D、点数、TIME、L、P、または定LTIME、TOD、数

上限値

LTOD、DATE、
LDT
OUT

Output整数、浮動小数 I、Q、M、D、点数、TIME、

結果

L、P

LTIME、TOD、LTOD、DATE、
LDT
データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
[???]ドロップダウンリストからパラメータ MN、IN、MX、および OUT のデータタイプを選択できます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL LIMIT// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

MN := "Tag_LowLimit"// 下限値

IN := "Tag_InputValue"// 入力値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

937

基本命令
3.3 STL
STL

説明

MX := "Tag_HighLimit"// 上限値OUT := "Tag_Result"// 「Tag_Result」オペランドは「Tag_LowLimit」オペランドの値で書き込まれます(「Tag_InputValue」オペランドの値が定義制限値範囲外であるため)。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MN

Tag_LowLimit

12000

IN

Tag_InputValue

8000

MX

Tag_HighLimit

16000

OUT

Tag_Result

12000

3.3.6

移動操作

3.3.6.1

MOVE: 値のムーブ

説明「値のムーブ」命令を使用して、IN 入力のオペランドの内容を OUT 出力のオペランドに転送します。入力 IN および出力 OUT のオペランドのデータタイプは同一である必要があります。
次の表に、可能な転送を示します。

938

転送元(IN)

宛先(OUT)

BYTE

BYTE

WORD

WORD

DWORD

DWORD

LWORD

LWORD

SINT

SINT

USINT

USINT

INT

INT

UINT

UINT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
転送元(IN)

宛先(OUT)

DINT

DINT

UDINT

UDINT

LINT

LINT

ULINT

ULINT

REAL

REAL

LREAL

LREAL

S5TIME

S5TIME

TIME

TIME

LTIME

LTIME

DATE

DATE

DT

DT

LDT

LDT

TOD

TOD

LTOD

LTOD

DTL

DTL

CHAR

CHAR

WCHAR

WCHAR

文字列の文字 1)

文字列の文字

ARRAY

ARRAY

STRUCT

STRUCT

PLC データタイプ(UDT)PLC データタイプ(UDT)IEC_TIMER

IEC_TIMER

IEC_LTIMER

IEC_LTIMER

IEC_SCOUNTER

IEC_SCOUNTER

IEC_USCOUNTER

IEC_USCOUNTER

IEC_COUNTER

IEC_COUNTER

IEC_UCOUNTER

IEC_UCOUNTER

IEC_DCOUNTER

IEC_DCOUNTER

IEC_UDCOUNTER

IEC_UDCOUNTER

IEC_LCOUNTER

IEC_LCOUNTERTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

939

基本命令
3.3 STL
転送元(IN)

宛先(OUT)

IEC_ULCOUNTER

IEC_ULCOUNTER

DB_ANY

DB_ANY

1)「値のムーブ」命令を使用して、文字列の個々の文字を CHAR または WCHAR データタ

イプのオペランドに転送することもできます。転送する文字数は、オペランド名の隣の角
括弧内で指定されます。たとえば「MyString[2]」は、「MyString」文字列の第 2 の文字を転送します。データタイプ CHAR のオペランドから文字列の個々の文字を転送することもできます。文字列の特定の文字を別の文字列の文字と置換することもできます。
「ブロックムーブ」(MOVE_BLK)、「割り込み不可能なブロックムーブ」(UMOVE_BLK)、および「ブロックムーブ」(MOVE_BLK_VARIANT)命令を使用して、ARRAY データタイプのオ
ペランドを移動することができます。STRING データタイプのオペランドを「文字列移動」
命令(S_MOVE)で移動することができます。

パラメータ
次の表に、
「値の移動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BIT 文字列、整I、Q、M、D、宛先アドレスの上書きに

Input

数、浮動小数点 L、または定数使用するエレメント

数、タイマ、日
付と時刻、文字列、配列、IEC
データタイプ、
PLC データタイプ(UDT)、
DB_ANYOUT

Output

BIT 文字列、整I、Q、M、D、L 宛先アドレス

数、浮動小数点
数、タイマ、日
付と時刻、文字列、配列、IEC
データタイプ、
PLC データタイプ(UDT)、
DB_ANY
有効なデータタイプの追加情報については、「関連項目」を参照してください。

940

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL MOVE// 命令が呼び出されます。

IN := "TagIn_LREAL"// オペランド「TagIn_LREAL」の内容が移動される。

OUT := "TagOut_LREAL"// さらに、オペランド「TagOut_LREAL」に転送される。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

TagIn_LREAL

1.23456789098e55

OUT

TagOut_LREAL

1.23456789098e55

注記
MOVE 命令の詳細については、Siemens Industry Online Support の以下の記事を参照してください。
STEP 7 (TIA ポータル)でメモリ領域と構造化データをデータブロック間でコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.3.6.2

Deserialize: 逆シリアル化

説明「逆シリアル化」命令を使用して、PLC データタイプ(UDT)、STRUCT、または<データタイプ>の ARRAY のシーケンシャル表示を変換して元に戻し、その内容全体を表示することができます。
PLC データタイプ(UDT)、STRUCT、または<データタイプ>配列のシーケンシャル表示が存在するメモリ領域のデータタイプは BYTE 配列または CHAR 配列であり、バージョン 1.0 の
標準アクセスで宣言する必要があります。最適化されたメモリ領域は、バージョン 2.0 以降でも許可されます。標準メモリ領域の容量は 64 KB です。変換の前に、十分なメモリ領域が存在することを確認してください。「シリアル化」命令を使用してメモリ領域が埋められ、
フィルバイトが挿入された可能性がある場合、それらの変換は考慮されません。
ARRAY の下限値を「0」で定義することが推奨されます。そうすれば、ARRAY 内のインデックスが POS パラメータの値に対応するからです(たとえば、ARRAY[0] = POS 0)。以下の説明と例は、これに基づいています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

941

基本命令
3.3 STL
この命令では、変換されたデータの複数のシーケンシャル表示をそれらの元の状態に、順を追って変換し直すことができます。
PLC データタイプ(UDT)、STRUCT、または<データタイプ>の ARRAY の単一のシーケンシャ
ル表示のみを変換して元に戻す場合は、命令「TRCV:通信接続経由のデータ受信」を直接使用することもできます。

メモリ領域のサイズ
アライメントルールは、最適化されたメモリ領域内の単純な構造体にフィルバイトが含まれないということを意味します。これにより、最適化されたメモリ領域内の構造体が標準
メモリ領域よりも小さくなります。構造体配列、およびネストされた構造体には、FILLER
バイトが含まれます。複合構造体がより多くのスペースを必要とするメモリ領域に関する一般ルールはありません。
S7-1500 シリーズの CPU への適用事項
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、BOOL の
長さは 1 バイトです。そのため、ほとんどがデータタイプ BOOL で構成される構造体は、標準メモリ領域よりも最適化されたメモリ領域で大きくなることができます。BOOL デー
タタイプの割合が低い複合構造体は、標準メモリ領域よりも最適化されたメモリ領域で小さくなります。

最適化されたメモリ領域大きい構造体を逆シリアル化するために、ファームウェアバージョン 4.2 以降の S7-1200
シリーズの CPU とファームウェアバージョン 2.0 以降の S7-1500 シリーズの CPU で、最適化されたアクセスを使用するシーケンシャル表示のためのメモリ領域を宣言することができます。シーケンシャル表示の内容は変更なしのままです(標準メモリ領域の場合と同様)。ARRAY 内のバイトへのシンボルアクセスのみ可能です。

942

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「逆シリアル化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

SRC_ARRAY Input

ARRAY[*] of

I、Q、D、FB の 逆シリアル化されるデー

BYTE

ブロックインタ タストリームが保存され

1)

または
ARRAY of CHAR

ーフェース(セク る BYTE 配列またはション Input、CHAR 配列です。

Output、S7-1500:

Static、およびパフォーマンスを最適化

Temp を使用可
能)。
I/O データなし
DEST_VARI

InOut

ABLE

説明

するには、パラメータに
VARIANT ポインタを付加しないでください。

すべてのデータ I、Q、D、FB の 逆シリアル化されるデータイプ

ブロックインタ タが書き込まれるタグ。
ーフェース。

S7-1500:

I/O データなし

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

POS

InOut

DINT

I、Q、M、D、L POS パラメータのオペラ
ンドは、変換されたカスタマデータによって占有されるバイト数に基づいて最初のバイトのインデックスを保存します。
POS パラメータは、ゼロ
ベースで計算されます。

RET_VAL1)

Output

INT

I、Q、M、D、L エラー情報

ファームウェアバージョン 4.2 以降の S7-1200 シリーズの CPU とファームウェアバー

ジョン 2.0 以降の S7-1500 シリーズの CPU で可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

943

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B0

SRC_ARRAY パラメータと DEST_VARIABLE パラメータのためのメモリ領域がオーバーラップしています。

8136

SRC_ARRAY パラメータのタグが標準アクセスによるブロック内にありません。

8150

VARIANT データタイプ(SRC_ARRAY パラメータの)にゼロポインタが含まれて
います。

8151

SRC_ARRAY パラメータの無効な参照

8153

SRC_ARRAY パラメータのメモリの空き領域が不足しています。

8154

SRC_ARRAY パラメータの無効なデータタイプ

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_VARIABLE パラメータの無効な参照

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)8136

SRC_ARRAY パラメータでのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:「逆シリアル化」命令 (バージョン 2.1)のパフォーマンスを向上するため、SRC_ARRAY お
よび DEST_VARIABLE パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。

944

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

FB または FC のブロックイ
ンターフェースの「入力」セクションで宣言。

BufferPos

DINTFB または FC のブロックイ

Error

INT

ンターフェースの「一時」セ

Label

STRING[4]

cmp

BOOL

クションで宣言。

次の表は、PLC データタイプの宣言を示しています。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]Client次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

TargetClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

BufferTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Bill

INT の配列[0..10]

Field

バイトの配列[0..294]

945

基本命令
3.3 STL
次の例で、命令がどのように動作するかを示します。
STL

説明

L 0

// 値「0」がアキュムレータ 1 に読み込まれます。

T #BufferPos// 値「0」が#BufferPos オペランドに転送される。

CALL Deserialize// 命令が呼び出されます。

SRC_ARRAY := "Buffer".Field// 「Buffer」タグのカスタマデータが逆シリアル化されます。

RET_VAL := #Error// エラー情報

DEST_VARIABLE := "Target".Client// 逆シリアル化されたカスタマデータが「Target」タ
グに書き込まれます。

POS := #BufferPos// #BufferPos オペランドは、変換されたカスタマデ
ータによって占有されるバイト数に基づいて最初のバイ
トのインデックスを保存します。

AN BR// 命令の実行中にエラーが発生すると、プログラムの処理が終了までジャンプします。

JC endCALL Deserialize// 命令が呼び出されます。

SRC_ARRAY := "Buffer".Field// 「Buffer」タグのセパレータシートが逆シリアル化されます。カスタマデータのわかりやすい区別を可能とするために、セパレータシートが「arti」または「Bill」文字形式で挿入されました。

RET_VAL := #Error// エラー情報

DEST_VARIABLE := #Label// セパレータシートの逆シリアル化された文字が、「#Label」オペランドに書き込まれます。

POS := #BufferPos// 変換済み文字で使用されるバイト数は、#BufferPos
オペランドに格納されます。

AN BR// 命令の実行中にエラーが発生すると、プログラムの処理が終了までジャンプします。

JC endCALL S_COMP// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプ
を選択します。

IN1 := 'arti'
IN2 := #Label946// 文字「arti」と、#Label オペランドに格納された文字の比較。

OUT := #cmp// 命令の結果

A #cmpJCN noarticle// この比較がシグナル状態「0」を返す場合、#Label
オペランドの文字が「arti」文字でなく、プログラムの処理は「noarticle」ジャンプラベルにジャンプします。

CALL Deserialize// 比較の結果が「1」の場合、命令を呼び出す。

SRC_ARRAY := "Buffer".Field// アーティクルデータが逆シリアル化されます。

RET_VAL := #Error// エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

DEST_VARIABLE :="Target".Article[#DeliverPos]// 逆シリアル化されたアーティクルデータが「Target」タグに書き込まれます。

POS := #BufferPos// 変換済みアーティクルデータで使用されるバイト数
は、「#BufferPos」オペランドに格納されます。

AN BR// 処理中にエラーが発生しなかった場合、ブロック終了です。

JC endBEnoarticle:NOP 0// 「arti」かどうかの比較の結果が = 「0」の場合、プログラムの処理はここに続きます。

CALL S_COMP// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプ
を選択します。

IN1 := 'Bill'IN2 := #Label// 文字「Bill」と、#Label オペランドに格納された文字の比較。

OUT := #cmp// 命令の結果

A #cmpJCN end// この比較がシグナル状態「1」を返す場合、#Label
オペランドの文字は「'Bill」文字で、プログラムの処理が続行します。

CALL Deserialize// 比較の結果が「1」の場合、命令を呼び出す。

SRC_ARRAY := "Buffer".Field// ビルデータが逆シリアル化されます。

RET_VAL := #Error// エラー情報

DEST_VARIABLE :="Target".Bill[#DeliverPos]// 逆シリアル化されたカスタマデータが「Target」タ
グに書き込まれます。

POS := #BufferPos// 変換済みアーティクルデータで使用されるバイト数
は、「#BufferPos」オペランドに格納されます。

AN BR// 処理中にエラーが発生しなかった場合、ブロック終了です。

JC endBE
end: CLR// エラーの場合、ジャンプラベル「end」へのジャンプが実行されます。

SAVE// RLO が BR ビットに保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

947

基本命令
3.3 STL

3.3.6.3

Serialize: シリアル化

説明「シリアル化」命令を使用して、複数の PLC データタイプ(UDT)、STRUCT、または<データタイプ>の ARRAY を 1 つのシーケンシャル表示に変換することができます(それらの構造体の部分を失うことなく)。
この命令を使用して、ユーザプログラムの複数の構造体データ項目を一時的にバッファ(グローバルデータブロックを推奨)に保存し、別の CPU に送信します。変換済みデータを格納するメモリ領域のデータタイプは BYTE 配列または CHAR 配列、かつバージョン 1.0 の標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたデータも許可されます。ソースデータ領域の FILLER データは、ターゲット配列内では未定義です。これらは、データ領域の FILLER バイトまたは FILLER ビット(たとえば、ARRAY、STRUCT、または PLC データタイプ(UDT))、または現在使用中でない文字列の文字とすることができます。
標準メモリ領域の容量は 64 KB です。DEST_ARRAY パラメータのオペランドが標準メモリ領域にある場合、標準メモリ領域に関するルールに従って、64 KB より大きい構造体をシリアル化することはできません。
ARRAY の下限値を「0」で定義することが推奨されます。そうすれば、ARRAY 内のインデックスが POS パラメータの値に対応するからです(たとえば、ARRAY[0] = POS 0)。以下の説明と例は、これに基づいています。
POS パラメータのオペランドには、変換済みデータによって使用されるバイト数に関する情報が含まれています。
単一の PLC データタイプ(UDT)、STRUCT、または<データタイプ>の ARRAY を送信する場
合、直接に命令「TSEND:通信接続経由のデータ送信」を呼び出すことができます。

メモリ領域のサイズ
アライメントルールは、最適化されたメモリ領域内の単純な構造体にフィルバイトが含まれないということを意味します。これにより、最適化されたメモリ領域内の構造体が標準
メモリ領域よりも小さくなります。構造体配列、およびネストされた構造体には、FILLER
バイトが含まれます。複合構造体がより多くのスペースを必要とするメモリ領域に関する一般ルールはありません。
S7-1500 シリーズの CPU への適用事項
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、データ
タイプ BOOL の長さは以降のデータタイプによって異なります。たとえば BYTE が続く場合
は、データタイプ BOOL の長さは 1 バイトとなります。たとえば WORD が続く場合は、デ

948

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
ータタイプ BOOL の長さは 2 バイトとなります。そのため、ほとんどがデータタイプ BOOLで構成される構造体は、標準メモリ領域よりも最適化されたメモリ領域で大きくなることができます。BOOL データタイプの割合が低い複合構造体は、標準メモリ領域よりも最適化
されたメモリ領域で小さくなります。
このため、シリアル化を行うソースデータ領域は、大きなデータタイプで開始し、Boolean
エレメントで終了することを推奨します。これにより、FILLER ビットを大幅に削減できます。

最適化されたメモリ領域大きい構造体をシリアル化するために、ファームウェアバージョン 4.2 以降の S7-1200 シ
リーズの CPU とファームウェアバージョン 2.0 以降の S7-1500 シリーズの CPU で、最適化されたアクセスを使用するメモリ領域を宣言することができます。シーケンシャル表示は変更なしのままです(標準メモリ領域の場合と同様)。

パラメータ
次の表は、「シリアル化」命令のパラメータを示しています。
パラメータ 宣言

データタイプSRC_VARIA

すべてのデータ I、Q、D、FB の シリアル化されるタグ。

Input

BLE

タイプ

メモリ領域

説明

ブロックインタ S7-1500:
ーフェース、I/O
パフォーマンスを最適化
データなしするには、パラメータに
VARIANT ポインタを付加しないでください。

DEST_ARRA InOut

ARRAY of BYTE

I、Q、D、FB の 生成されたデータストリ

Yまたは ARRAY

ブロックインタ ームが格納される配列。

of CHARーフェース(セク S7-1500:
ション Input、
Output、
Static、および
Temp を使用可
能)。

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

I/O データなし

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

949

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

POS

DINT

I、Q、M、D、L POS パラメータのオペラ

InOut

説明
ンドは、変換されたカスタマデータが占有したバイトの総数に基づいて最初のバイトのインデックスを保存します。POS パ
ラメータは、ゼロベースで計算されます。

RET_VAL

Output

INT

I、Q、M、D、L エラー情報

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B0

SRC_VARIABLE パラメータと DEST_ARRAY パラメータのためのメモリ領域がオーバーラップしています。

8150

SRC_VARIABLE データタイプ(VARIANT パラメータの)にゼロポインタが含まれ
ています。

8151

SRC_VARIABLE パラメータの無効な参照

8236

SRC_ARRAY パラメータのタグが標準アクセスによるブロック内にありません。

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_ARRAY パラメータの無効な参照

8253

パラメータ DEST_ARRAY のタグは、パラメータ SRC_VARIABLE のタグの内容に対して十分なメモリスペースを提供しません。パラメータ POS のタグの入力値により、使用可能なメモリスペースが減少します。パラメータ POS の入力値により、パラメータ DEST_ARRAY のタグ内での開始位置が決定します。

8254

DEST_ARRAY パラメータの無効なデータタイプ

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

950

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)
8236

DEST_ARRAY パラメータでのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:「シリアル化」命令(バージョン 2.1)のパフォーマンスを向上するため、SRC_VARIABLE お
よび DEST_ARRAY パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L 0

// 値「0」がアキュムレータ 1 に読み込まれます。

T #BufferPos// 値「0」が#BufferPos オペランドに転送される。

CALL Serialize// 命令が呼び出されます。

SRC_VARIABLE := "Source".Client// 「Source」タグのカスタマデータがシリアル化されます。

RET_VAL := #Error// エラー情報

DEST_ARRAY := "Buffer".Field// シーケンシャル表示が「Buffer」タグに書き込まれます。

POS := #BufferPos// 「Buffer」の次の未書き込みバイトのインデックス。
Field が#BufferPos オペランドに格納されます。

CALL S_MOVE// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := 'arti'// 'arti'文字が#Label オペランドにコピーされます。

OUT := #Label

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

951

基本命令
3.3 STLSTL説明CALL Serialize// 命令が呼び出されます。

SRC_VARIABLE := #Label/ / 文字がシリアル化されます。

RET_VAL := #Error// エラー情報

DEST_ARRAY := "Buffer".Field// シーケンシャル表示が「Buffer」に書き込まれます。カ
スタマデータの後の Field タグ。

POS := #BufferPos// #BufferPos オペランドの値が適宜インクリメントされます。

CALL Serialize// 命令が呼び出されます。

SRC_VARIABLE :="Source".Article[#DeliverPos]// 「Source」タグの特定アーティクルのデータがシリアル化されます。

RET_VAL := #Error// エラー情報

DEST_ARRAY := "Buffer".Field// シーケンシャル表示が「'arti'」タグに書き込まれます(Buffer 文字の後に)。

POS := #BufferPos// バイト数

次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

ブロックインターフェースの「入力」セクションで宣言

BufferPos

DINT

ブロックインターフェースの「一時」セクションで宣言

Error

INT

ブロックインターフェースの「一時」セクションで宣言

Label

STRING[4]ブロックインターフェースの「一時」セクションで宣言

次の表は、PLC データタイプの宣言を示しています。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]Client952

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

SourceClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

Buffer

3.3.6.4

Field

バイトの配列[0..294]

MOVE_BLK: ブロックムーブ

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動することができます。ターゲット範囲に移動されるエレメントの数
は、COUNT パラメータで指定されます。移動されるエレメントの幅は、IN パラメータのエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
OUT 出力の値は、IN パラメータまたは OUT パラメータで使用可能にされたよりも多くのデータが移動された場合、無効です。
注記
ARRAY の使用
この命令は、定義された n 個のエレメント(n はパラメータ COUNT の値に対応)の内容を
ソース範囲からターゲット範囲にコピーします(指定されたインデックスから始めて)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

953

基本命令
3.3 STL

パラメータ
次の表に、「ブロックの移動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

2 進数、整数、D、L

コピーされるソース領域

1)

Input

浮動小数点数、の最初のエレメント

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
COUNTOUT 1)

Input

OutputUSINT, UINT,

I、Q、M、D、UDINT, ULINT

L、P、または定 ト範囲にコピーされるエ

2 進数、整数、

ソース範囲からターゲッ

数

レメントの数

D、L

ソース範囲の内容がコピ浮動小数点数、ーされるターゲット範囲

タイマ、TOD、の最初のエレメント

LTOD、DATE、
CHAR、WCHAR
1)

指定されたデータタイプは、Array 構造体のエレメントとしてしか使用できません。

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL MOVE_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

954

IN := #a_array[2]// 移動される最初のエレメント。

COUNT := "Tag_Count"// ソース範囲からターゲット範囲に移動されるエレメントの数。

OUT := #b_array[1]// 移動先の最初のエレメント。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY[0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY[0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エレメント
を選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。
注記
MOVE_BLK 命令の詳細については、Siemens Industry Online Support の以下の記事を参照してください。
STEP 7 (TIA ポータル)でメモリ領域と構造化データをデータブロック間でコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.3.6.5

MOVE_BLK_VARIANT: ブロックムーブ

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動することができます。配列全体または配列のエレメントを同じデー
タタイプの別の配列にコピーすることができます。ソース配列と宛先配列のサイズ(エレメントの数)は異なる場合があります。配列内の複数エレメントまたは単一エレメントをコピーすることができます。
コピーされるエレメントの数が、選択されたソース範囲またはターゲット範囲を上回ることは許されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

955

基本命令
3.3 STL
ブロックの作成時にこの命令を使用する場合、VARIANT ごとにソースおよびターゲットが転送されるため、ARRAY はまだ既知である必要はありません。
SRC_INDEX および DEST_INDEX パラメータでのカウントは、配列の後の宣言に関係なく、常に下限値「0」から開始します。
コピーされるデータが使用可能なデータよりも多い場合、この命令は実行されません。

パラメータ
次の表に、「ブロックの移動」命令のパラメータを示します。
パラメータ 宣言
SRC

Input

2)

データタイプ

メモリ領域

説明

VARIANT (配列L (ブロックイン コピー元のソースブロッ

または個々の配 ターフェースの ク
列エレメントを 「Input」、
ポイントする)、「InOut」、およ<Data_type>のび「Temp」セ

配列

クション内で宣
言可能。)

COUNT

Input

UDINT

I、Q、M、D、コピーされるエレメント

L、または定数数
COUNT パラメータに値「1」を割り当てます(ARRAY が SRC パラメー
タまたは DEST パラメー
タで指定されていない場
合)。

956

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

説明

SRC_INDEX Input

DINT

I、Q、M、D、コピーされる最初のエレ

L、または定数

メントを定義します。
• SRC_INDEX パラメー
タは、ゼロベースで計算されます。ARRAYが SRC パラメータで指定されると、
SRC_INDEX パラメー
タの整数はコピー元のソース領域内の最初のエレメントを指定します。宣言された配列の制限値には関係ありません。
• ARRAY がパラメータ
SRC で指定されない
か、または配列の 1 つの単一エレメントのみが指定された場合、パラメータ SRC_INDEXに値「0」を割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

957

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

説明

DEST_INDE

DINT

I、Q、M、D、

宛先メモリ領域の開始をL、または定数

定義します。

Input

X• DEST_INDEX パラメー
タは、ゼロベースで計算されます。ARRAYが DEST パラメータで指定されると、
DEST_INDEX パラメー
タの整数はコピー先のターゲット範囲内の最初のエレメントを指定します。宣言された配列の制限値には関係ありません。
• ARRAY が DEST パラメータで指定されていな
い場合は、
DEST_INDEX パラメー
タに値「0」を割り当
てます。
DEST

Output 1)

VARIANT

L (ブロックイン ソースブロックの内容がターフェースの コピーされる宛先領域。
「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

1) データがタグに流れるため、DEST パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
2) SRC パラメータでは、データタイプ BOOL および BOOL の ARRAY は許可されません。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

958

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

データタイプが一致していません。ARRAY of Struct の代わりに、PLC データ
タイプ(UDT)の ARRAY を使用してください。

8151

SRC パラメータにアクセスできません。

8152

SRC パラメータのオペランドが入力されていません。

8153

SRC パラメータのコード生成エラー

8154

SRC パラメータのオペランドのデータタイプが BOOL です。

8281

COUNT パラメータの値が無効です

8382

SRC_INDEX パラメータの値が、ゼロ未満です。

8383

SRC_INDEX の値が ARRAY の上限値外です。

8482

DEST_INDEX パラメータの値が、ARRAY 制限値外です。

8483

DEST パラメータがポイントする ARRAY が、コピーされるデータに対して小さすぎます。

8534

DEST パラメータが書き込み保護されています

8551

DEST パラメータにアクセスできません。

8552

DEST パラメータのオペランドが入力されていません。

8553

DEST パラメータのコード生成エラー

8554

DEST パラメータのオペランドのデータタイプが BOOL です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL MOVE_BLK_VARIANT// 命令が呼び出されます。

SRC := #SrcField// 移動される最初のエレメント

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

959

基本命令
3.3 STLSTL説明COUNT := "Tag_Count"// ソース範囲からターゲット範囲に移動されるエレメントの数。

SRC_INDEX := "Tag_Src_Index"// 移動される SRC パラメータの最初のエレメント

DEST_INDEX := "Tag_Dest_Index"// 移動される DEST パラメータの最初のエレメント

DEST := #DestField// 移動される移動元領域の最初のエレメント。

RET_VAL := "Tag_Result"// エラー情報

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

SRC

Input

ローカルオペランド#SrcField#SrcField は、ブロックのプログラミング
時にはまだ不明であった PLC データタイ
プを使用します。
「MOVE_UDT」の(
ARRAY[0..10])
COUNT

Input

Tag_Count2

SRC_INDEX

Input

Tag_Src_Index

3

DEST_INDEX

Input

Tag_Dest_Index

3

DEST

InOut

#DestField

ローカルオペランド#DestField は、ブロックのプログラミン
グ時にはまだ不明であった PLC データタ
イプを使用します。
「MOVE_UDT」の(
ARRAY[10..20])

960

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
MOVE_UDT の ARRAY [0..10]の 4 番目のエレメントから始めて、2 つのエレメントがソース
範囲からターゲット範囲に移動されます。コピーが、4 番目のエレメントから始めて、
MOVE_UDT の ARRAY [10..20]に貼り付けられます。
注記
MOVE_BLK_VARIANT 命令の詳細については、Siemens Industry Online Support の以下の記事を参照してください。
STEP 7 (TIA ポータル)でメモリ領域と構造化データをデータブロック間でコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.3.6.6

UMOVE_BLK: 割り込み不可能なブロックムーブ

説明「割り込み不可能なブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。この命令に割り込みをかけることはできません。ターゲット範囲に移動されるエレメントの数は、COUNT パラメータで指定されます。移動するエレメントの幅は、入力 IN のエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込みなしブロック転送」命令の実行中には CPU の割
り込み応答時間が長くなります。
OUT 出力の値は、IN パラメータまたは OUT パラメータで使用可能にされたよりも多くのデータが移動された場合、無効です。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。
注記
ARRAY の使用
この命令は、定義された n 個のエレメント(n はパラメータ COUNT の値に対応)の内容を
ソース範囲からターゲット範囲にコピーします(指定されたインデックスから始めて)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

961

基本命令
3.3 STL

パラメータ
次の表に、「割り込みなしブロック転送」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

2 進数、整数、D、L

コピーされるソース領域

1)

Input

浮動小数点数、の最初のエレメント

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
COUNTOUT 1)

Input

OutputUSINT, UINT,

I、Q、M、D、UDINT, ULINT

L、P、または定 ト範囲にコピーされるエ

2 進数、整数、

ソース範囲からターゲッ

数

レメントの数

D、L

ソース範囲の内容がコピ浮動小数点数、ーされるターゲット範囲

タイマ、TOD、の最初のエレメント

LTOD、DATE、
CHAR、WCHAR
1)

指定されたデータタイプは、Array 構造体のエレメントとしてしか使用できません。

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL UMOVE_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

962

IN := #a_array[2]// 移動される最初のエレメント。

COUNT := "Tag_Count"// ソース範囲からターゲット範囲に移動されるエレメントの数。

OUT := #b_array[1]// 移動先の最初のエレメント。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY[0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY[0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エレメント
を選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。
注記
UMOVE_BLK 命令の詳細については、Siemens Industry Online Support の以下の記事を参照してください。
STEP 7 (TIA ポータル)でメモリ領域と構造化データをデータブロック間でコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

3.3.6.7

FILL_BLK: フィル命令

説明「フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。ターゲット範囲は、OUT 出力で指定されたアドレスから開始して埋められます。
コピー操作の繰り返し回数は、COUNT パラメータの値で指定されます。この命令が実行された場合、入力 IN の値が、COUNT パラメータの値で指定された回数だけターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

963

基本命令
3.3 STL
変更されるエレメントの最大数は ARRAY または構造体にあるエレメントの数です。OUT 出
力に存在するエレメントよりも多くのデータをコピーすると、意図しない結果が生じます。
注記
ARRAY の使用
この命令は、選択されたエレメントの内容をソース範囲から読み出し、その内容を n 回(nはパラメータ COUNT の値に対応)宛先にコピーします(指定されたインデックスから始めて)。

構造体のフィル
ARRAY のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数のエレメントを同じ値で埋めることもできます。埋めるエレメントの構造体には、同じ基本データタイプの個々のエレメントのみが含まれている必要があります。ただし、構造体自体を別の構造体に埋め込むこともできます。

パラメータ
次の表に、「フィル」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

2 進数、整数、I、Q、M、D、

ターゲット範囲を埋める

Input

浮動小数点数、 L、P、または定 ために使用されるエレメ
タイマ、TOD、 数

ント

LTOD、DATE、
CHAR、WCHAR
COUNT

Input

USINT, UINT,

I、Q、M、D、UDINT, ULINT

L、P、または定 数

ムーブ操作の繰り返し回数
OUT

Output2 進数、整数、浮動小数点数、D、Lフィルが開始するターゲット範囲のアドレス

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

964

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLARRAY を使用する例
次の例は、ARRAY を埋める場合に命令がどのように機能するのかを示しています。
STL

説明

CALL FILL_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := #FillValue// コピーされる値

COUNT := "Tag_Count"// コピー操作の繰り返し回数

OUT := #TargetArea[1]// ターゲット範囲は、INT の ARRAY #TargetArea[1..5]の最初のエレメントから埋められます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

TargetArea オペランドのデータタイプは ARRAY[1..5]of INT です。これは、データ
タイプ INT の 5 つのエレメントで構成されます。

この命令は、最初のエレメントから始めて、#FillValue オペランドの値を#TargetArea 出力
タグに 3 回コピーします。

構造体を使用する例
次の例は、構造体を埋める場合に命令がどのように機能するのかを示しています。
以下のエレメントを含むグローバルデータブロックを作成します。
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRUCT965

基本命令
3.3 STL
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct1 タグをアドレス指定するための以下のプログラムコードを生成します。
STL

説明

CALL FILL_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := 10// コピーされる値

COUNT := 2// コピー操作の繰り返し回数

OUT :=// 構造体が Member_2 から埋められます。つまり、Member_1 と"Data_block_1".MyStruct1.Memb Member_4 は変更されません。
er_2

MyStruct2 タグをアドレス指定するための以下のプログラムコードを生成します。
STL

説明

CALL FILL_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := 10COUNT := 2
OUT :="Data_block_1".MyStruct2.

// コピーされる値// コピー操作の繰り返し回数// 構造体が Member_2 から埋められます。つまり、Member_1 とMember_4 は変更されません。

SubArray[1].Member_2

966

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.6.8

UFILL_BLK: 割り込み不可能なフィル命令

説明「割り込み不可フィル命令」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。この命令に割り込みをかけることはできません。ターゲット範囲
は、OUT 出力で指定されたアドレスから開始して埋められます。コピー操作の繰り返し回
数は、COUNT パラメータの値で指定されます。この命令が実行された場合、入力 IN の値
が、COUNT パラメータの値で指定された回数だけターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込み不可能なフィル」命令の実行中には、CPU のアラーム応答時間が長くなります。
変更されるエレメントの最大数は ARRAY または構造体にあるエレメントの数です。OUT 出
力に存在するエレメントよりも多くのデータをコピーすると、意図しない結果が生じます。
注記
ARRAY の使用
この命令は、選択されたエレメントの内容をソース範囲から読み出し、その内容を n 回(nはパラメータ COUNT の値に対応)宛先にコピーします(指定されたインデックスから始めて)。
「割り込み不可フィル」命令を使用して、最大 16 KB を移動することができます。この場合、CPU 固有の制限に注意してください。

構造体のフィル
ARRAY のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数のエレメントを同じ値で埋めることもできます。埋めるエレメントの構造体には、同じ基本データタイプの個々のエレメントのみが含まれている必要があります。ただし、構造体自体を別の構造体に埋め込むこともできます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

967

基本命令
3.3 STL

パラメータ
次の表に、「割り込み不可能なフィル」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

2 進数、整数、I、Q、M、D、

ターゲット範囲を埋める

Input

浮動小数点数、 L、P、または定 ために使用されるエレメ
タイマ、TOD、 数

ント

LTOD、DATE、
CHAR、WCHAR
COUNT

Input

USINT, UINT,

I、Q、M、D、UDINT, ULINT

L、P、または定 数

ムーブ操作の繰り返し回数
OUT

Output2 進数、整数、D、L

フィルが開始するターゲ

浮動小数点数、ット範囲のアドレス

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

ARRAY を使用する例
次の例は、ARRAY を埋める場合に命令がどのように機能するのかを示しています。
STL

説明

CALL UFILL_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

968

IN := #FillValue// コピーされる値

COUNT := "Tag_Count"// コピー操作の繰り返し回数

OUT := #TargetArea[1]// ターゲット範囲は、INT の ARRAY #TargetArea[1..5]の最初のエレメントから埋められます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

TargetArea オペランドのデータタイプは ARRAY[1..5]of INT です。これは、データ
タイプ INT の 5 つのエレメントで構成されます。

この命令は、最初のエレメントから始めて、#FillValue オペランドの値を#TargetArea 出力
タグに 3 回コピーします。他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。

構造体を使用する例
次の例は、構造体を埋める場合に命令がどのように機能するのかを示しています。
以下のエレメントを含むグローバルデータブロックを作成します。
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRUCT969

基本命令
3.3 STL
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct1 タグをアドレス指定するための以下のプログラムコードを生成します。
STL

説明

CALL UFILL_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := 10// コピーされる値

COUNT := 2// コピー操作の繰り返し回数

OUT :=// 構造体が Member_2 から埋められます。つまり、Member_1 と"Data_block_1".MyStruct1.Memb Member_4 は変更されません。
er_2

MyStruct2 タグをアドレス指定するための以下のプログラムコードを生成します。
STL

説明

CALL UFILL_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := 10COUNT := 2
OUT :="Data_block_1".MyStruct2.

// コピーされる値// コピー操作の繰り返し回数// 構造体が Member_2 から埋められます。つまり、Member_1 とMember_4 は変更されません。

SubArray[1].Member_2

970

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.6.9

SCATTER:ビットシーケンスを個々のビットに解析

説明「ビットシーケンスを個々のビットに解析」命令は、BYTE、WORD、DWORD、またはLWORD データタイプのタグを個々のビットに分解し、それらのビットを BOOL の ARRAYに保存します。
注記
ARRAY の長さ
BOOL の ARRAY は、ビットシーケンスで指定されている数のエレメントを正確に持つ必要があります。
つまり、たとえばデータタイプ BYTE の場合、ARRAY が正確に 8 個のエレメントを持つ必要があります(WORD の場合は 16 個、DWORD の場合は 32 個、LWORD の場合は 64 個)。
注記
S7-1500 CPU での命令の可用性
この命令は、ファームウェアバージョン 4.2 以降の S7-1200 シリーズの CPU とファーム
ウェアバージョン 2.1 以降の S7-1500 シリーズの CPU で使用できます。
この方法では、たとえば、ステータスワードの解析、インデックスを使用した個々のビットのステータスの読み取りと変更が可能です。GATHER を使用すると、ビットを再び結合
してビットシーケンスにすることができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

971

基本命令
3.3 STL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

IN

入力

BYTE、WORD、 I、Q、M、D、L 解析されるビッDWORD、説明
トシーケンスLWORDOUTBOOL の

出力

I、Q、M、D、L 個々のビットがARRAY[*]

保存される*:8 個、16 個、

ARRAY

32 個、または64 個のエレメン
ト
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceWord

入力

WORD

DestinationArray

出力

BOOL の ARRAY[0..15]

次の例で、命令がどのように動作するかを示します。
STL
CALL SCATTER// 命令の呼び出し// [???]ドロップダウンリストから必要なデータタイプ
を選択します。

IN := #SourceWord
OUT := #DestinationArray972

データタイプ WORD の#SourceWord オペランドが個々のビット(16 個)に解析され、#DestinationArray オ
ペランドの個々のエレメントを割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceWord

WORD (16 ビット)

OUT

DestinationArray「DestinationArray」オペラ
ンドのデータタイプは、BOOL の ARRAY[0..15]です。このオペランドは 16 個のエレメントで構成されるため、解析される WORD と同じ大きさです。

3.3.6.10

SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析

説明「ビットシーケンス配列のエレメントを個々のビットに解析」命令は、BYTE、WORD、
DWORD、または LWORD 配列の 1 つ以上のエレメントを個々のビットに解析し、それらをBOOL 配列、匿名 STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。COUNT_IN パラメータで、解析されるソース ARRAY のエレメントの数を指定します。IN パラメータのソース ARRAY は、COUNT_IN パラメータで指定された数よりも多くのエレメントを持つことができます。BOOL 配列、匿名 STRUCT、または PLC データタイ
プは、解析されたビットシーケンスのビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先メモリ領域がこれよりも大きいことがあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:IN パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。OUT パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。WORD 配列は、48の個別のビットに解析されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

973

基本命令
3.3 STL
注記
ターゲット配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは必ず BYTE、WORD、または DWORD 制限値
から開始する必要があります。つまり、ARRAY の下限値で始まるインデックスを計算する必要があります。この計算の基礎として以下の式が使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

下記の例を参照してください。
注記
この命令の可用性
この命令は、ファームウェアバージョン 2.1 以降の S7-1500 シリーズの CPU で使用できます。
この方法では、たとえば、ステータスワードの解析、インデックスを使用した個々のビットのステータスの読み取りと変更が可能です。GATHER を使用すると、ビットを再び結合
してビットシーケンスにすることができます。

974

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

<ビットシーケ

I、Q、M、D、L 解析される<ビンス>のットシーケンス

ARRAY[*]のエレ>の ARRAY。

メント

値が I/O 領域
内、またはテクノロジーオブジェクトの DB 内にあってはなりません。

COUNT_IN

Input

USINT, UINT,

I、Q、M、D、L 解析されるソー

UDINT, ULINT

ス配列のエレメ
ント数のカウン
タ。
値が I/O 領域
内、またはテクノロジーオブジ
ェクトのデータ
ベース内にあってはなりません。

OUT

Output

BOOL のI、Q、M、D、L 個々のビットがARRAY[*]、

格納される

STRUCT、またARRAY、

は PLC データタ

STRUCT、またイプのエレメンは PLC データタ

ト

イプ

必要なビットシーケンスを命令ボックスの[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

975

基本命令
3.3 STL

下限値が「0」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayWord

入力

WORD の ARRAY[0..5]CounterInput
DestinationArrayBool

UDINT
BOOL の ARRAY[0..95]

出力

次の例で、命令がどのように動作するかを示します。
STL// 命令呼び出しCALL SCATTER_BLK// [???]ドロップダウンリストから必要なデータタイプ
を選択します。
In := #SourceArrayWord[2]// #SourceArrayWord オペランドの 3 番目、4 番
目、および 5 番目の WORD が個々のビット(48 個)に解析されます。

COUNT_IN := #CounterInput// 3 個のワードが解析されます。

OUT := DestinationArrayBool[0]// #DestinationArrayBool オペランドの 1 番目のエレメント以降の個々のエレメントに割り当てます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord

WORD の ARRAY[0..5] (96個のビットを解析できます。)

COUNT_IN

CounterInput = 3

UDINT3 (3 個の WORD または 48 個のビットが解析されます。つまり、少なくとも48 個のビットが宛先 ARRAY
で使用可能でなければなり
ません。)

OUT

DestinationArrayBool[0]「DestinationArrayBool」オ
ペランドのデータタイプ
は、BOOL の ARRAY[0..95]です。これは、このオペラ
ンドが 96 個の BOOL エレメ
ントを提供することを意味
します。

976

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

下限値が「-2」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayWord

入力

WORD の ARRAY[0..5]CounterInput
DestinationArrayBool

UDINT
BOOL の ARRAY[-2..93]

出力

次の例で、命令がどのように動作するかを示します。
STL// 命令呼び出しCALL SCATTER_BLK// [???]ドロップダウンリストから必要なデータタイプ
を選択します。
In := #SourceArrayWord[2]// #SourceArrayWord オペランドの 3 番目、4 番
目、および 5 番目の WORD が個々のビット(48 個)に解析されます。

COUNT_IN := #CounterInput// 3 個のワードが解析されます。

OUT := DestinationArrayBool[14]// さらに、#DestinationArrayBool オペランドの
16 番目のエレメント以降の個々のエレメントに割り当てます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]WORD の ARRAY[0..5] (96個のビットを解析できます。)

COUNT_IN

CounterInput = 3

UDINT3 (3 個の WORD または 48 個のビットが解析されます。つまり、少なくとも48 個のビットが宛先 ARRAY
で使用可能でなければなり
ません。)

OUT

DestinationArrayBool[14]「DestinationArrayBool」オ
ペランドのデータタイプ
は、BOOL の ARRAY[-2..93]です。これは、このオペラ
ンドが 96 個の BOOL エレメ
ントを提供することを意味します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

977

基本命令
3.3 STL

3.3.6.11

GATHER:個々のビットをビットシーケンスに結合

説明「個々のビットをビットシーケンスに結合」命令は、BOOL の ARRAY のビットを組み合わせてビットシーケンスにします。このビットシーケンスは、データタイプ BYTE、WORD、
DWORD、または LWORD のタグに保存されます。
注記
ARRAY の長さ
BOOL の ARRAY は、ビットシーケンスで指定されている数のエレメントを正確に持つ必要があります。
つまり、たとえばデータタイプ BYTE の場合、ARRAY が正確に 8 個のエレメントを持つ必要があります(WORD の場合は 16 個、DWORD の場合は 32 個、LWORD の場合は 64 個)。
注記
S7-1500 CPU での命令の可用性
この命令は、ファームウェアバージョン 4.2 以降の S7-1200 シリーズの CPU とファーム
ウェアバージョン 2.1 以降の S7-1500 シリーズの CPU で使用できます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

入力

BOOL のI、Q、M、D、L そのビットがビ

ARRAY[*]

ットシーケンス*:8 個、16 個、に組み合わされ32 個、またはる ARRAY

64 個のエレメン
ト
OUT

出力

BYTE、WORD、 I、Q、M、D、L 組み合わされビ
DWORD、

ットシーケンス

LWORD

がタグに保存されます。

978

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
必要なビットシーケンスを命令ボックスの[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArray

入力

WORD

DestinationWord

出力

BOOL の ARRAY[0..15]

次の例で、命令がどのように動作するかを示します。
STL// 命令の呼び出し

CALL GATHER// [???]ドロップダウンリストから必要なデータタイプ
を選択します。
IN := #SourceArray// #SourceArray オペランドのビットが WORD に組み合わされます。

OUT := #DestinationWord// 16 個の組み合わされたビットが#DestinationWord オペランドに保存されます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArray「SourceArray」オペランドのデータタイプは、BOOL のARRAY[0..15]です。このオ
ペランドは 16 個のエレメントで構成されるため、ビットが組み合わされる WORDと同じ大きさです。

OUT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

DestinationWord

WORD (16 ビット)

979

基本命令
3.3 STL

3.3.6.12

GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合

説明「個々のビットをビットシーケンス配列のマルチエレメントに結合」命令は、BOOL 配列、
匿名 STRUCT、または Boolean エレメントのみの PLC データタイプを<ビットシーケンス>
配列の 1 つまたは複数のエレメントに結合します。COUNT_OUT パラメータで、書き込まれる宛先 ARRAY のエレメントの数を指定します。このステップでは、必要な BOOL 配列、
匿名 STRUCT、PLC データタイプのエレメント数も暗黙的に指定します。OUT パラメータの宛先 ARRAY は、COUNT_OUT パラメータで指定された数よりも多くのエレメントを持つことができます。<ビットシーケンス>配列は、結合されるビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先 ARRAY がこれよりも大きいことがあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:OUT パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。IN パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。BOOL 配列から、48 の個別のビットが結合されます。
注記
ソース配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは必ず BYTE、WORD、または DWORD 制限値
から開始する必要があります。つまり、ARRAY の下限値で始まるインデックスを計算する必要があります。この計算の基礎として以下の式が使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

下記の例を参照してください。

980

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
注記
この命令の可用性
この命令は、ファームウェアバージョン 2.1 以降の S7-1500 シリーズの CPU で使用でき
ます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

BOOL のI、Q、M、D、L ビットが結合さ

ARRAY[*]、れる BOOL 配

STRUCT、また列、STRUCT、

は PLC データタ

または PLC デー

イプのエレメンタタイプ(ソース

ト

配列)
値が I/O 領域
内、またはテクノロジーオブジェクトの DB 内にあってはなりません。

COUNT_OUT

Input

USINT, UINT,
UDINT, ULINT

I、Q、M、D、L 記述されるター
ゲット ARRAYのエレメント数のカウンタ。
値が I/O 領域
内、またはテクノロジーオブジ
ェクトのデータ
ベース内にあってはなりません。

OUT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Output<ビットシーケ

I、Q、M、D、L ビットが保存さンス>のれる<ビットシARRAY[*]のエレーケンス>配列

メント(宛先配列)981

基本命令
3.3 STL
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayBool

入力

BOOL の ARRAY[0..95]

CounterOutput
DestinationArrayWord

UDINT
WORD の ARRAY[0..5]

出力

次の例で、命令がどのように動作するかを示します。
STL
CALL GATHER_BLK// 命令呼び出し// [???]ドロップダウンリストから必要なデータタイプ
を選択します。

982

IN := SourceArrayBool[0]// #SourceArrayBool オペランドの 1 番目のエレメ
ント以降、48 ビットが#DestinationArrayWord オペ
ランドに結合されます。

COUNT_OUT := #CounterOutput// 3 個のワードが結合されます

OUT := DestinationArrayWord[2]// 宛先 ARRAY の開始位置は 3 番目のエレメントです。
すなわち、最初の 16 ビットが宛先配列の 3 番目のワードに、2 番目の 16 ビットが 4 番目のワードに、3 番目の
16 ビットが 5 番目のワードに書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[0]「SourceArrayBool」オペラ
ンドのデータタイプは、BOOL の ARRAY[0..95]です。すなわち、それは、もう 1 度 WORD に結合できる
96 個の BOOL エレメントを提供します。

COUNT_OUTCounterOutput = 3

UDINT3 (3 個のワードが書き込まれます。つまり、48 個のビットがソース ARRAY で使用可能でなければなりま
せん。)

OUT

DestinationArrayWord[2]「DestinationArrayWord」オ
ペランドのデータタイプ
は、WORD の ARRAY[0..5]です。つまり、6 個のWORD エレメントを使用できます。

下限値が「-2」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayBool

入力

BOOL の ARRAY[-2..93]

CounterOutput
DestinationArrayWord

UDINT
WORD の ARRAY[0..5]

出力

次の例で、命令がどのように動作するかを示します。
STL
CALL GATHER_BLK// 命令呼び出し// [???]ドロップダウンリストから必要なデータタイプ
を選択します。

IN := SourceArrayBool[14]TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020// #SourceArrayBool オペランドの 16 番目のエレメ
ント以降、48 ビットが#DestinationArrayWord オペ
ランドに結合されます。

983

基本命令
3.3 STL
STL
COUNT_OUT := #CounterOutput// 3 個のワードが結合されます

OUT := DestinationArrayWord[2]// 宛先 ARRAY の開始位置は 3 番目のエレメントです。
つまり、ソース ARRAY の最初の 16 ビットは無視されます。2 番目の 16 ビットが宛先配列の 3 番目のワードに、3 番目の 16 ビットが 4 番目のワードに、4 番目の 16 ビ
ットが 5 番目のワードに書き込まれます。ソース ARRAYの残りの 64 ビットは考慮されません。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[14]「SourceArrayBool」オペラ
ンドのデータタイプは、BOOL の ARRAY[-2..93]です。開始位置が 16 番目のエレメントであるため、再度ワードに結合できる 80 個のBOOL エレメントのみを使用できます。

COUNT_OUTCounterOutput = 3

UDINT3 (3 個のワードが書き込まれます。つまり、48 個のビットがソース ARRAY で使用可能でなければなりま
せん。)

OUT

DestinationArrayWord[2]「DestinationArrayWord」オ
ペランドのデータタイプ
は、WORD の ARRAY[0..5]です。つまり、6 個のWORD エレメントを使用で
きます。

984

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.6.14

配列 DB

ReadFromArrayDB:ARRAY データブロックからの読み出し

説明「ARRAY データブロックからの読み出し」命令を使用して、インデックスが参照する ARRAY
DB ブロックタイプのデータブロックからエレメントを読み出し、そのエレメントの値をターゲット範囲に書き込みます。
ARRAY データブロックは、1 つの<データタイプ>の ARRAY のみで構成されるデータブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。ARRAY のカウントは常に、下限値「0」から始まります。

パラメータ
次の表は、「ARRAY データブロックからの読み出し」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

DB

DB_ANY

I、Q、M、D、L 読み出されるデータブロ

Input

説明
ック

INDEX

Input

DINT

I、Q、M、D、

読み出される DB 内のエ

L、P、または定 レメント。定数、グロー数

バルタグ、またはインデックス値を指定できます。

VALUE

Output 1)

VARIANT

L (ブロックイン 読み出されて出力されるターフェースの 値「一時」セクシ
ョンでの宣言はできません。)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

985

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

説明

RET_VAL

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがOutput

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。
1) データがタグに流れるため、VALUE パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、書き込み保護されているか、またはロードメモリ内に存在します。

986

8135

配列データブロックに無効な値が含まれます。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、ARRAY の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8452

コード生成エラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
エラーコ
ード*

説明

(W#16#..
.)
8453

考えられるエラーの原因は以下の 2 つです。
• VALUE パラメータのサイズが、ARRAY データブロックのエレメントの長さと一致しません。
• 2 つのタグが、最適化されたアクセスを使用するメモリ領域にありません。メモリ領域アクセスタイプに関する追加情報については、
AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL ReadFromArrayDB// 命令の呼び出し

DB := "ArrayDB"// データの読み出し元データブロック。

INDEX := "ArrayDB".THIS[2]// データブロックから 2 番目のデータが読み出されます。

RET_VAL := "TagRet_Val"// エラー情報

VALUE := "TargetField"// 読み出し値は、VALUE パラメータで提供されます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ INT の配列[0to 10]の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

2 番目のエレメントが「ArrayDB」から読み出され、「TargetField」オペランドに書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

987

基本命令
3.3 STL

WriteToArrayDB:ARRAY データブロックへの書き込み

説明「ARRAY データブロックへの書き込み」命令を使用して、インデックスが参照するエレメ
ントを ARRAY DB ブロックタイプのデータブロックに書き込みます。
ARRAY データブロックは、1 つの<データタイプ>の ARRAY のみで構成されるデータブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。ARRAY のカウントは常に、下限値「0」から始まります。

パラメータ
以下の表は、「ARRAY データブロックへの書き込み」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

DB

DB_ANY

I、Q、M、D、L データが書き込まれるデ

Input

説明
ータブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグ、または
インデックス値を指定で
きます。

VALUE

Input

VARIANT

L (ブロックイン 書き込まれる値
ターフェースの「一時」セクシ
ョンでの宣言はできません。)

RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

988

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8134

データブロックが書き込み保護されています。

8135

データブロックが配列データブロックではありません。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、ARRAY の制限値外です。

8350

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8352

コード生成エラー

8353

考えられるエラーの原因は以下の 2 つです。
• VALUE パラメータのサイズが、ARRAY データブロックのエレメントの長さと一致しません。
• 2 つのタグが、最適化されたアクセスを使用するメモリ領域にありません。メモリ領域アクセスタイプに関する追加情報については、
AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL WriteToArrayDB// 命令の呼び出し

DB := "ArrayDB"// データが書き込まれるデータブロック

INDEX := 2// 値が、データブロックのエレメント[2]に書き込まれます。

RET_VAL := "TagRet_Val"// エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

989

基本命令
3.3 STLSTL

説明VALUE := "SourceField"// データブロックに書き込まれる値。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ INT の配列[0to 10]の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

「SourceField」オペランドの値が ARRAY DB の 2 番目のエレメントに書き込まれます。

ReadFromArrayDBL: ロードメモリの配列データブロックからの読み出し
説明「ロードメモリの ARRAY データブロックからの読み出し」命令を使用して、インデックスが参照するエレメントを ARRAY DB ブロックタイプのデータブロックからロードメモリに読み出し、そのエレメントをターゲット範囲に書き込みます。
ARRAY データブロックは、1 つの<データタイプ>の ARRAY のみで構成されるデータブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。ARRAY のカウントは常に、下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。この命令は、BUSY パラメータで信号立ち下がりエッジが検出された場合に終了します。1 プログラムサイクルの間、DONE
パラメータのシグナル状態が「1」になり、このサイクル内に、読み取られた値が VALUE
パラメータに出力されます。他のすべてのプログラムサイクルでは、VALUE パラメータの値は変更されません。

990

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表は、「ロードメモリの ARRAY データブロックからの読み出し」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、

REQ =「1」:配列 DB の読

L、または定数

み出しから開始

DB 1)

Input
Input

DB_ANY

I、Q、M、D、L 読み出される ARRAY デー
タブロック

INDEX

Input

DINT

I、Q、M、D、

読み出される DB 内のエ

L、P、または定 レメント。定数、グロー数

バルタグ、またはインデックス値を指定できます。

VALUE 1)InOut

VARIANTD (グローバルデ 読み出し元のワークメモ
ータブロックの リの DB へのポインタ
エレメント)と、書き込まれる値。

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、「一時」セクシ

使用する必要がありませョンでの宣言は ん。
できません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ読み出し中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)

データブロックは、「最適化された」ブロックプロパティを使用して作成する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

991

基本命令
3.3 STLERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、ARRAY の制限値外です。

8750

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、ARRAY データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
「READ_DBL」命令および「WRIT_DBL」命令によってトリガされるエラーコードについて
は、これらの命令の対応する説明を参照してください。

例
次の例で、命令がどのように動作するかを示します。

992

STL

説明

CALL ReadFromArrayDBL,"ReadFromArrayDBL_DB"// 命令の呼び出し

REQ := "TagReg"// この命令は、信号の立ち上がりエッジ時に実行されます。

DB := "ArrayDB"// データの読み出し元データブロック。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL説明

INDEX := 2// データブロックからエレメント[2]が読みだされます。

VALUE := "TargetField"// 読み出し値は、VALUE パラメータで提供されます。

BUSY := "TagBusy"// 命令がまだ処理中であるかどうかを示します。

DONE := "TagDone"// 命令が終了しているかどうかを示します。

ERROR := "TagError"// エラー情報

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ INT の ARRAY[0 to 10]の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDone

BOOL

この命令は、「TagReq」オペランドで信号立ち上がりエッジが検出されたときに実行されます。2 番目のエレメントが「ArrayDB」から読み出され、VALUE パラメータに出力されます。「TagBusy」オペランドで信号立ち下がりエッジが検出された場合、すぐに命令は終了し、VALUE パラメータの値は変更されません。この命令が処理された後、「TagDone」オ
ペランドのシグナル状態は TRUE になります。

下記も参照
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

993

基本命令
3.3 STL

WriteToArrayDBL:ロードメモリの配列データブロックへの書き込み

説明「ロードメモリの ARRAY データブロックへの書き込み」命令を使用して、インデックスが参照するエレメントをロードメモリの ARRAY DB ブロックタイプのデータブロックに書き込
みます。
ARRAY データブロックは、1 つの<データタイプ>の ARRAY のみで構成されるデータブロックです。ARRAY のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。ARRAY のカウントは常に、下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。BUSY パラメータで信号立ち下がり
エッジが検出された場合、命令は終了し、VALUE パラメータの値がデータブロックに書き込まれます。DONE1 パラメータで信号立ち下がりエッジが検出された場合、命令は終了し、パラメータの値がデータブロックに書き込まれます。

パラメータ
以下の表は、「ロードメモリの ARRAY データブロックへの書き込み」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、

REQ =「1」:配列 DB へのL、または定数

書き込みを開始

DB 1)

Input
Input

DB_ANY

I、Q、M、D、L データが書き込まれる
ARRAY データブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグ、または
インデックス値を指定で
きます。

994

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

VALUE 1)VARIANTD (グローバルデ 読み出し元のワークメモ

Input

説明

ータブロックの リの DB へのポインタ
エレメント)と、書き込まれる値。

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、「一時」セクシ

使用する必要がありませョンでの宣言は ん。
できません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ書き込み中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)

データブロックは、「最適化された」ブロックプロパティを使用して作成する必要があります。

ERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8234

データブロックが書き込み保護されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

995

基本命令
3.3 STL
エラーコ
ード*

説明

(W#16#..
.)
8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、ARRAY の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、ARRAY データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
「READ_DBL」命令および「WRIT_DBL」命令によってトリガされるエラーコードについて
は、これらの命令の対応する説明を参照してください。

例
次の例で、命令がどのように動作するかを示します。

996

STL

説明

CALL WriteToArrayDBL,"WriteToArrayDBL_DB"// 命令の呼び出し

REQ := "TagReg"// この命令は、信号の立ち上がりエッジ時に実行されます。

DB := "ArrayDB"// データの読み出し元データブロック。

INDEX := 2// データブロックからエレメント[2]が読みだされます。

VALUE := "SourceField"// 読み出し値は、VALUE パラメータで提供されます。

BUSY := "TagBusy"// 命令がまだ処理中であるかどうかを示します。

DONE := "TagDone"// 命令が終了しているかどうかを示します。

ERROR := "TagError"// エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプ INT の ARRAY[0 to 10]の ARRAY DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDone

BOOL

この命令は、「TagReq」オペランドで信号立ち上がりエッジが検出されたときに実行されます。「TagBusy」オペランドで信号立ち下がりエッジが検出された場合、すぐに命令は終了し、VALUE パラメータの値が「ArrayDB」の 2 番目のエレメントに書き込まれます。この命令が処理された後、「TagDone」オペランドのシグナル状態は TRUE になります。

下記も参照
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
同期命令と非同期命令の相違 (ページ 29)

3.3.6.15

読み取り/書き込みアクセス

PEEK: メモリアドレスの読み取り

説明「メモリアドレスの読み取り」命令を使用して、データタイプを指定しないでメモリアドレスを標準メモリ領域から読み取ります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

997

基本命令
3.3 STL

メモリ領域 16#84 の使用:DB
データブロックをメモリ領域として使用し、プログラムコードの作成中にデータブロック
がまだ既知ではない場合、EN/ENO メカニズムを使用して、可能なアクセスエラーを認識することができます。

CALL PEEKAREA := 16#84
DBNUMBER := 1
BYTEOFFSET := 2
RET_VAL := #Peeker
JBI end
L 16#ffff
T #Peeker
end:NOP 0

パラメータ
次の表に、「メモリアドレスの読み取り」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

AREA

BYTE

I、Q、M、D

以下の領域を選択できま

Input

す。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#1:I/O 入力
DBNUMBER Input

DINT, DB_ANY

I、Q、M、D

AREA = DB ならばデータブロックの番号、それ以外は「0」BYTEOFFSE Input

DINT

I、Q、M、DT

読み取り元のアドレス
16 個の最下位ビットのみが使用されます。

RET_VAL

998

Output

ビット列

I、Q、M、D

命令の結果

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
命令のデータタイプを[???]ドロップダウンリストから選択できます。
注記
入力、出力またはビットメモリ領域からメモリアドレスを読み取る場合、DBNUMBER パ
ラメータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL PEEK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

AREA := "Tag_Area"// データブロック領域が選択されました

DBNUMBER := "Tag_DBNumber"// データブロックの番号

BYTEOFFSET := "Tag_Byte"// 読み取り元のアドレス

RET_VAL := "Tag_Result"// 結果

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte

20

RET_VAL

Tag_Result

バイト値「20」

この命令は、データブロック「5」の「Tag_Byte」オペランドからアドレス「20」の値を読み取り、結果を「Tag_Result」オペランドに返します。

PEEK_BOOL: メモリビットの読み取り

説明「メモリビットの読み取り」命令を使用して、データタイプを指定することなくメモリビ
ットを標準メモリ領域から読み取ります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

999

基本命令
3.3 STL

メモリ領域 16#84 の使用:DB
データブロックをメモリ領域として使用し、プログラムコードの作成中にデータブロック
がまだ既知ではない場合、EN/ENO メカニズムを使用して、可能なアクセスエラーを認識することができます。

CALL PEEK_BOOL
AREA := 16#84
DBNUMBER := 1
BYTEOFFSET := 2
BITOFFSET := 1
RET_VAL := #Peeker_BOOLSPBI end
L 16#ffff
T #Peeker_BOOL
end:NOP 0

パラメータ
次の表に、
「メモリビットの読み取り」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

AREA

BYTE

I、Q、M、D

以下の領域を選択できま

Input

す。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#1:I/O 入力
DBNUMBER Input

DINT, DB_ANY

I、Q、M、D

AREA = DB ならばデータブロックの番号、それ以外は「0」BYTEOFFSE Input

DINT

I、Q、M、DT

読み取り元のアドレス
16 個の最下位ビットのみが使用されます。

1000

BITOFFSET

Input

INT

I、Q、M、D

読み取り元のビット

RET_VAL

Output

BOOL

I、Q、M、D

命令の結果

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
命令のデータタイプを[???]ドロップダウンリストから選択できます。
注記
入力、出力またはビットメモリ領域からメモリビットを読み取る場合、DBNUMBER パラ
メータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL PEEK_BOOL// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

AREA := "Tag_Area"// データブロック領域が選択されました

DBNUMBER := "Tag_DBNumber"// データブロックの番号

BYTEOFFSET := "Tag_Byte"// 読み取り元のアドレス

BITOFFSET := "Tag_Bit"// 読み取り元のビット

RET_VAL := "Tag_Result"// 結果

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte

20

BITOFFSET

Tag_Bit3

RET_VAL

Tag_Result3

この命令は、データブロック「5」のバイト「20」で「Tag_Bit」オペランドからメモリビ
ット「3」の値を読み取り、結果を「Tag_Result」オペランドに返します。

POKE: メモリアドレスの書き込み

説明「メモリアドレスの書き込み」命令を使用して、データタイプを指定することなくメモリアドレスを標準メモリ領域に書き込みます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1001

基本命令
3.3 STL

メモリ領域 16#84 の使用:DB
データブロックをメモリ領域として使用し、プログラムコードの作成中にデータブロック
がまだ既知ではない場合、EN/ENO メカニズムを使用して、可能なアクセスエラーを認識することができます。

パラメータ
次の表に、「メモリアドレスの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

AREA

BYTE

I、Q、M、D

以下の領域を選択できま

Input

す。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#2:I/O 出力
DBNUMBER Input

DINT, DB_ANY

I、Q、M、D

AREA = DB ならばデータブロックの番号、それ以外は「0」BYTEOFFSE Input

DINT

I、Q、M、DT

書き込まれるアドレス
16 個の最下位ビットのみが使用されます。

VALUE

Input

ビット列

I、Q、M、D書き込まれる値

命令のデータタイプを[???]ドロップダウンリストから選択できます。
注記
入力、出力またはビットメモリ領域にメモリアドレスを書き込む場合、DBNUMBER パラ
メータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL POKE// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

1002

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

AREA := "Tag_Area"// データブロック領域が選択されました

DBNUMBER := "Tag_DBNumber"// データブロックの番号

BYTEOFFSET := "Tag_Byte"// 読み取り元のアドレス

VALUE := "Tag_Value"// 書き込まれる値

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte

20

VALUE

Tag_Value

16#11

この命令は、データブロック「5」内のメモリ領域「20」を値「16#11」で上書きします。

POKE_BOOL: メモリビットの書き込み

説明「メモリビットの書き込み」命令を使用して、データタイプを指定することなくメモリビ
ットを標準メモリ領域に書き込みます。

メモリ領域 16#84 の使用:DB
データブロックをメモリ領域として使用し、プログラムコードの作成中にデータブロック
がまだ既知ではない場合、EN/ENO メカニズムを使用して、可能なアクセスエラーを認識することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1003

基本命令
3.3 STL

パラメータ
次の表に、「メモリビットの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

AREA

BYTE

I、Q、M、D

以下の領域を選択できま

Input

す。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#2:I/O 出力
DBNUMBER Input

DINT, DB_ANY

I、Q、M、D

AREA = DB ならばデータブロックの番号、それ以外は「0」BYTEOFFSE Input

DINT

I、Q、M、DT

書き込まれるアドレス
16 個の最下位ビットのみが使用されます。

BITOFFSET

Input

INT

I、Q、M、D書き込まれるビット

VALUE

Input

BOOL

I、Q、M、D書き込まれる値

命令のデータタイプを[???]ドロップダウンリストから選択できます。
注記
入力、出力またはビットメモリ領域にメモリビットを書き込む場合、DBNUMBER パラメ
ータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL POKE_BOOL// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

1004

AREA := "Tag_Area"// データブロック領域が選択されました

DBNUMBER := "Tag_DBNumber"// データブロックの番号

BYTEOFFSET := "Tag_Byte"// 読み取り元のアドレス

BITOFFSET := "Tag_Bit"// 読み取り元のビット

VALUE := "Tag_Value"// 書き込まれる値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte

20

BITOFFSET

Tag_Bit3

VALUE

Tag_Value

M0.0

この命令は、バイト「20」内のデータブロック「5」のメモリビット「3」を値「M0.0」で上書きします。

POKE_BLK: メモリ領域の書き込み

説明「メモリ領域の書き込み」命令を使用して、データタイプを指定することなくメモリ領域を異なる標準メモリ領域に書き込みます。

メモリ領域 16#84 の使用:DB
データブロックをメモリ領域として使用し、プログラムコードの作成中にデータブロック
がまだ既知ではない場合、EN/ENO メカニズムを使用して、可能なアクセスエラーを認識することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1005

基本命令
3.3 STL

パラメータ
次の表は、「メモリ領域の書き込み」命令のパラメータを示しています。
パラメータ

宣言

データタイプ

メモリ領域

説明

AREA_SRC

Input

BYTE

I、Q、M、D

ソースのメモリ領域で、以下の領域を選択できます。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB

DBNUMBER_ Input

DINT, DB_ANY

1)

I、Q、M、D

SRC

AREA = DB ならばソースのメモリ領域内のデータブロックの番号、それ以外は「0」BYTEOFFSET Input

DINT

I、Q、M、D_SRC

書き込まれるソースのメ
モリ領域のアドレス
16 個の最下位ビットのみが使用されます。

AREA_DEST

Input

BYTE

I、Q、M、D

宛先のメモリ領域で、以下の領域を選択できます。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB

DBNUMBER_ Input

DINT, DB_ANY 1) I、Q、M、D

DEST

AREA = DB ならば宛先のメモリ領域内のデータブ
ロックの番号、それ以外
は「0」16 個の最下位ビットのみが使用されます。

BYTEOFFSET Input
_DEST

DINT

I、Q、M、D書き込まれる宛先のメモ
リ領域のアドレス
16 個の最下位ビットのみが使用されます。

1006

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ

宣言

データタイプ

メモリ領域

説明

COUNT

Input

DINT

I、Q、M、D

移動されるバイト数

1)

DBNUMBER_SRC パラメータと DBNUMBER_DEST パラメータのデータタイプは同じでなければなりません。つまり、両方のタグがデータタイプ DINT またはデータタイプ
DB_ANY のいずれかでなければなりません。
命令のデータタイプを[???]ドロップダウンリストから選択できます。
注記
入力、出力またはビットメモリ領域にメモリアドレスを書き込む場合、DBNUMBER パラ
メータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL POKE_BLK// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

AREA_SRC := "Tag_Source_Area" // ソースメモリ領域でデータブロック領域が選択されました
DBNUMBER_SRC :="Tag_Source_DBNumber"// ソースメモリ領域のデータブロックの番号

BYTEOFFSET_SRC :="Tag_Source_Byte"// ソースメモリ領域の読み取り元のアドレス

AREA_DEST :="Tag_Source_Area"// 宛先メモリ領域でデータブロック領域が選択されました

DBNUMBER_DEST :="Tag_Source_DBNumber"// 宛先メモリ領域のデータブロックの番号

BYTEOFFSET_DEST :="Tag_Source_Byte"// 宛先メモリ領域の読み取り元のアドレス

COUNT := "Tag_Count"// 移動されるバイト数

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA_SRC

Tag_Source_Area

16#84

DBNUMBER_SRC

Tag_Source_DBNumber

5

BYTEOFFSET_SRC

Tag_Source_Byte

20

AREA_DEST

Tag_Destination_Area

16#83

DBNUMBER_DEST

Tag_Destination_DBNumber 0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1007

基本命令
3.3 STL
パラメータ

オペランド

値

BYTEOFFSET_DEST

Tag_Destination_Byte

30

COUNT

Tag_Count100

この命令は、アドレス「30」から始まるビットメモリのメモリ領域内で、アドレス「20」から始まるデータブロック「5」から 100 バイトを書き込みます。

READ_LITTLE: リトルエンディアン形式のデータの読み出し

説明「リトルエンディアン形式のデータの読み出し命令を使用し、メモリ領域からデータを読み出して、これをリトルエンディアンバイトシーケンスで単一のタグに書き込みます。リト
ルエンディアン形式では、最下位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_ARRAY および DEST_VARIABLE パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
DEST_VARIABLE パラメータの VARIANT は、基本データタイプであることが必要です。
SRC_ARRAY パラメータの VARIANT は読み出し元のメモリ領域を指し、これは ARRAY of
BYTE であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE の変数 ARRAY インデックスの実パラメー
タを使用することもできます。
POS パラメータのオペランドは、読み出しが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの読み出し
VARIANT が指すタグを読み出す場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを読み出す場合、「スライスアクセス」を使用します。

1008

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「リトルエンディアン形式のデータの読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

SRC_ARRAY Input

ARRAY of BYTE

I、Q、M、D、L 読み出し元のメモリ領域

OUT

Output

INT

I、Q、M、D、L エラー情報

DEST_VARI

Output

ビット文字列、 I、Q、M、D、L 読み出し値

ABLE

説明

整数、浮動小数
点数、タイマ、LDT、TOD、LTOD、DATE、
CHAR、
WCHAR、
BCD16、BCD32

POS

InOut

DINT

I、Q、M、D、L 読み出しが開始される位置を決定します。POS パ
ラメータは、ゼロベースで計算されます。

OUT パラメータ
次の表に、OUT パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

8382

POS パラメータの値が、ARRAY の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1009

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL READ_LITTLE// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

SRC_ARRAY := #SourceField// 整数 1_295_788_826 が、メモリ領域#SourceField から読み取られます。

OUT := "Tag_Error"// エラー情報

DEST_VARIABLE :=#DINTVariable// 整数が#DINTVariable オペランドにリトルエンディアン形式で書き込まれます。DEST_VARIABLE パラメータのデータタイプは、読み出すバイト数を指定します。

POS := #TagPos// 個数 4 が「#TagPos」オペランドに保存されます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_ARRAY#SourceField

BYTE の ARRAY [0..3]:= 16#1A、16#2B、
16#3C、16#4D

DEST_VARIABLE#DINTVariable

1295788826
16#4D3C2B1A

POS#TagPos

0 => 4

WRITE_LITTLE: リトルエンディアン形式のデータの書き込み

説明「リトルエンディアン形式のデータの書き込み」命令を使用して、リトルエンディアンバ
イトシーケンスの単一のタグのデータをメモリ領域に書き込みます。リトルエンディアン
形式では、最下位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_VARIABLE および DEST_ARRAY パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
SRC_VARIABLE パラメータの VARIANT は、基本データタイプを指す必要があります。
DEST_ARRAY パラメータの VARIANT が、データが書き込まれるメモリ領域をポイントしているため、これはバイトの配列であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE の変数 ARRAY インデックスの実パラメー
タを使用することもできます。

1010

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLPOS パラメータのオペランドは、書き込みが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの書き込み
VARIANT が指すタグを書き込む場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを書き込む場合、「スライスアクセス」を使用します。

パラメータ
次の表に、「リトルエンディアン形式のデータの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプSRC_VARIA

ビット文字列、 I、Q、M、D、L 書き込み元のタグ

Input

BLE

メモリ領域

説明

整数、浮動小数
点数、タイマ、LDT、TOD、LTOD、DATE、
CHAR、
WCHAR、
BCD16、BCD32

OUT

Output

DEST_ARRA InOut

INT

I、Q、M、D、L エラー情報

バイトの配列I、Q、M、D、L データが書き込まれるメ

Y
POS

モリ領域
InOut

DINT

I、Q、M、D、L 書き込みが開始される位置を決定します。POS パ
ラメータは、ゼロベースで計算されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1011

基本命令
3.3 STL

OUT パラメータ
次の表に、OUT パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

8382

POS パラメータの値が、ARRAY の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL WRITE_LITTLE// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

SRC_VARIABLE :=#DINTVariable// #DINTVariable オペランドから整数 1_295_788_826 がメモリ領域#TargetField に、リトルエンディアン形式で書き込まれます。
SRC_VARIABLE パラメータのデータタイプは、読み出すバイト数を指定します。

OUT := "Tag_Error"// エラー情報

DEST_ARRAY := #TargetField// メモリ領域

POS := #TagPos// 個数 4 が「#TagPos」オペランドに保存されます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_VARIABLE#DINTVariable

1295788826
16#4D3C2B1A

DEST_ARRAY#TargetField

BYTE の ARRAY [0..10]= 16#1A、16#2B、16#3C、
16#4D

POS

1012

#TagPos

0 => 4

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

READ_BIG: ビッグエンディアン形式のデータの読み出し

説明「リトルエンディアン形式のデータの読み出し命令を使用し、メモリ領域からデータを読み出して、これをビッグエンディアンバイトシーケンスで単一のタグに書き込みます。ビッ
グエンディアン形式では、最上位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_ARRAY および DEST_VARIABLE パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
DEST_VARIABLE パラメータの VARIANT は、基本データタイプであることが必要です。
SRC_ARRAY パラメータの VARIANT が、データが読み出されるメモリ領域をポイントしているため、これはバイトの配列であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE の変数 ARRAY インデックスの実パラメー
タを使用することもできます。
POS パラメータのオペランドは、読み出しが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの読み出し
VARIANT が指すタグを読み出す場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを読み出す場合、「スライスアクセス」を使用します。

パラメータ
次の表に、「ビッグエンディアン形式のデータの読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

SRC_ARRAY Input

バイトの配列I、Q、M、D、L 読み出し元のメモリ領域

OUT

INT

I、Q、M、D、L エラー情報

OutputTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

1013

基本命令
3.3 STL
パラメータ 宣言

データタイプ

DEST_VARI

ビット文字列、 I、Q、M、D、L 読み出し値

Output

ABLE

メモリ領域

説明

整数、浮動小数
点数、タイマ、LDT、TOD、LTOD、DATE、
CHAR、
WCHAR、
BCD16、BCD32

POS

InOut

DINT

I、Q、M、D、L 読み出しが開始される位置を決定します。POS パ
ラメータは、ゼロベースで計算されます。

OUT パラメータ
次の表に、OUT パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

8382

POS パラメータの値が、ARRAY の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL READ_BIG// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

1014

SRC_ARRAY := #SourceField// 整数 439_041_101 が、メモリ領域#SourceField から読み取られます。

OUT := "Tag_Error"// エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

DEST_VARIABLE :=#DINTVariable// 整数が#DINTVariable オペランドにビッグエンディアン形式で書き込まれます。DEST_VARIABLE パラメータのデータタイプは、読み出すバイト数を指定します。

POS := #TagPos// 個数 4 が「#TagPos」オペランドに保存されます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_ARRAY#SourceField

BYTE の ARRAY [0..10]:= 16#1A、16#2B、
16#3C、16#4D

DEST_VARIABLE#DINTVariable

439041101
16#1A2B3C4D

POS#TagPos

0 => 4

WRITE_BIG: ビッグエンディアン形式のデータの書き込み

説明「ビッグエンディアン形式のデータの書き込み」命令を使用して、ビッグエンディアンバ
イトシーケンスの単一のタグのデータをメモリ領域に書き込みます。ビッグエンディアン
形式では、最上位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_VARIABLE および DEST_ARRAY パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
SRC_VARIABLE パラメータの VARIANT は、基本データタイプを指す必要があります。
DEST_ARRAY パラメータの VARIANT が、データが書き込まれるメモリ領域をポイントしているため、これはバイトの配列であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE の変数 ARRAY インデックスの実パラメー
タを使用することもできます。
POS パラメータのオペランドは、書き込みが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの書き込み
VARIANT が指すタグを書き込む場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを書き込む場合、「スライスアクセス」を使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1015

基本命令
3.3 STL

パラメータ
次の表に、「ビッグエンディアン形式のデータの書き込み」命令のパラメータを示します。
パラメータ 宣言

データタイプSRC_VARIA

ビット文字列、 I、Q、M、D、L 書き込み元のタグ

Input

BLE

メモリ領域

説明

整数、浮動小数
点数、タイマ、LDT、TOD、LTOD、DATE、
CHAR、
WCHAR、
BCD16、BCD32

OUT

Output

DEST_ARRA InOut

INT

I、Q、M、D、L エラー情報

バイトの配列I、Q、M、D、L データが書き込まれるメ

Y
POS

モリ領域
InOut

DINT

I、Q、M、D、L 書き込みが開始される位置を決定します。POS パ
ラメータは、ゼロベースで計算されます。

OUT パラメータ
次の表に、OUT パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

8382

POS パラメータの値が、ARRAY の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

1016

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL WRITE_BIG// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

SRC_VARIABLE :=#DINTVariable// #DINTVariable オペランドから整数 439_041_101 がメモリ領域#TargetField に、ビッグエンディアン形式で書き込まれます。
SRC_VARIABLE パラメータのデータタイプは、読み出すバイト数を指定します。

OUT := "Tag_Error"// エラー情報

DEST_ARRAY := #TargetField// メモリ領域

POS := #TagPos// 個数 4 が「#TagPos」オペランドに保存されます。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_VARIABLE#DINTVariable

439041101
16#1A2B3C4D

DEST_ARRAY#TargetField

BYTE の ARRAY [0..10]= 16#1A、16#2B、16#3C、
16#4D

POS

3.3.6.16#TagPos

0 => 4

VARIANT

VariantGet: VARIANT タグ値の読み出し

説明「VARIANT タグ値の読み出し」命令を使用して、SRC パラメータの VARIANT が指すタグの値を読み出し、その値を DST パラメータのタグに書き込むことができます。
SRC パラメータのデータタイプは、VARIANT です。DST パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1017

基本命令
3.3 STLDST パラメータで指定されたタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および配列をコピーする場合、「MOVE_BLK_VARIANT 命令:ブロックムーブ」命令を使用できます。追加情報については、「関連項目」を参照してください。

パラメータ
次の表に、「VARIANT タグ値の読み出し」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

SRC

VARIANT

L (ブロックイン 読み出されるタグ

Input

説明

ターフェースの「一時」セクシ
ョンでの宣言はできません。)
DST

Output

ビット列、整I、Q、M、D、命令の結果

数、浮動小数点 L、P数、タイマ、日
付と時刻、文字列、配列要素、PLC データタイ
プ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

1018

STL

説明

CALL VariantGet// 命令が呼び出されます。

SRC := #TagIn_Source// #TagIn_Source オペランドの VARIANT が指すタグの値が、読み取られます。

DST := "TagOut_Dest"

タグの内容が、「TagOut_Dest」オペランドに書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

VariantPut: VARIANT タグ値の書き込み
説明「VARIANT タグ値の書き込み」命令を使用して、SRC パラメータのタグの値を DST パラメータ(VARIANT が指す)のメモリに書き込むことができます。
DST パラメータのデータタイプは、VARIANT です。SRC パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。
SRC パラメータのタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および配列をコピーする場合、「MOVE_BLK_VARIANT 命令:ブロックムーブ」命令を使用できます。追加情報については、「関連項目」を参照してください。

パラメータ
次の表は、「VARIANT タグ値の書き込み」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

説明

SRC

ビット列、整I、Q、M、D、

読み出されるタグ

Input

数、浮動小数点 L、P数、タイマ、日
付と時刻、文字列、配列要素、PLC データタイ
プ
DST

Input

VARIANT

L (ブロックイン 命令の結果
ターフェースの「一時」セクシ
ョンでの宣言はできません。)

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1019

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL VariantPut// 命令が呼び出されます。

SRC := "TagIn_Source"// 「TagIn_Source」オペランドの値が読み取られます...

DST := #TagIn_Dest// #TagIn_Dest オペランドの VARIANT が指すタグに、書き込まれ
ます。

下記も参照
MOVE_BLK_VARIANT: ブロックムーブ (ページ 955)

CountOfElements: 配列要素の数を取得
説明「配列エレメントの数を取得」命令を使用して、 VARIANT が指すタグが所有する ARRAY エ
レメントの数を照会します。
多次元の ARRAY の場合、ARRAY エレメントの数が結果として出力されます(上限値と下限値の差+1)。多次元の ARRAY の場合、すべての次元の数が結果として出力されます。
注記
インスタンス
VARIANT ポインタがインスタンスを指さないことがあり、そのためマルチインスタンスまたはマルチインスタンスの ARRAY を指さないこともあります。
注記
データブロック内の ARRAY
データブロック内にある ARRAY のエレメント数を照会する場合、ブロック属性「デバイス内のデータブロックは書き込み禁止」をこのブロックで有効にすることはできません。有効にすると、ARRAY に含まれるエレメントの数に関係なく、RET_VAL パラメータが結果「0」を返します。
VARIANT タグが ARRAY でない場合も結果は「0」になります。

1020

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
VARIANT が ARRAY of BOOL を指す場合、FILL エレメントはカウントに含まれます(たとえば、ARRAY[0..1] of BOOL の場合、8 が返されます)。

パラメータ
次の表に、「ARRAY エレメント数の取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN

VARIANT

L (ブロックイン 照会するタグ

Input

説明

ターフェースの「一時」セクシ
ョンでの宣言はできません。)
RET_VAL

Output

UDINT

I、Q、M、D、L 命令の結果

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

3.3.6.17

STL

説明

CALL CountOfElements// 命令が呼び出されます。

IN := #TagIn_Source// #TagIn_Source オペランドの VARIANT が指すタ
グの配列要素の数が、読み取られます...

RET_VAL := "TagOut_RetVal"// 「TagOut_RetVal」オペランドに出力します。

ARRAY[*]

LOWER_BOUND:ARRAY 下限値の読み出し

説明
ファンクションブロックまたはファンクションのブロックインターフェースでデータタイプ
ARRAY[*]のタグを宣言できます。これらのローカルタグの場合、ARRAY の制限値を読み出すことができます。必要な次元を DIM パラメータで指定する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1021

基本命令
3.3 STL「ARRAY 最小値の読み出し」命令を使用して、ARRAY の可変下限値を読み出します。
注記
命令の可用性
この命令は、ファームウェアバージョン 2.0 以降の S7-1500 シリーズの CPU で使用でき
ます。

パラメータ
次の表は、「ARRAY 最小値の読み出し」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

説明

ARR

ARRAY[*]

FB => セクショ

可変下限値が読み出されン InOut

る ARRAY。

Input

FC => セクショ
ン Input および
InOut
DIM

Input

UDINT

I、Q、M、D、

可変下限値が読み出され

L、P、または定 る ARRAY の次元。
数
OUT

OutputDINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
STL

1022

説明

CALL LOWER_BOUND// 命令が呼び出されます。

ARR := #ARRAY_A// ARRAY #ARRAY_A の可変下限値が読み出されます。

DIM := 2// 2 番目の次元の可変下限値が読み出されます。

OUT := "Result"// 命令の結果

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLUPPER_BOUND:ARRAY 最大値の読み出し

説明
ファンクションブロックまたはファンクションのブロックインターフェースでデータタイプ
ARRAY[*]のタグを宣言できます。これらのローカルタグの場合、ARRAY の制限値を読み出すことができます。必要な次元を DIM パラメータで指定する必要があります。
「ARRAY 最大値の読み出し」命令を使用して、ARRAY の可変上限値を読み出します。
注記
命令の可用性
この命令は、ファームウェアバージョン 2.0 以降の S7-1500 シリーズの CPU で使用でき
ます。

パラメータ
次の表は、「ARRAY 最大値の読み出し」命令のパラメータを示しています。
パラメータ 宣言

データタイプ

メモリ領域

説明

ARR

ARRAY[*]

FB => セクショ

可変上限値が読み出されン InOut

る ARRAY。

Input

FC => セクショ
ン Input および
InOut
DIM

Input

UDINT

I、Q、M、D、

可変上限値が読み出され

L、P、または定 る ARRAY の次元。
数
OUT

OutputDINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL UPPER_BOUND// 命令が呼び出されます。

ARR := #ARRAY_A// ARRAY #ARRAY_A の可変上限値が読み出されます。

DIM := 2// 2 番目の次元の可変上限値が読み出されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1023

基本命令
3.3 STL

3.3.6.18

STL

説明

OUT := "Result"// 命令の結果

レガシー

BLKMOV:ブロックの移動

説明「ブロックの移動」命令を使用して、メモリ領域(ソース領域)の内容を別のメモリ領域(宛先領域)に移動することができます。ムーブ操作は、アドレスの昇順方向に行われます。
VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域内でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に当てはまります。
ただし、この命令のタグが保持型の設定「IDB に設定」で宣言されている場合は、このタグを「最適化ブロックアクセス」属性が有効になっているメモリ領域内で使用することもできます。
次の図に、ムーブ操作の原理を示します。

1024

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL'%'%:$%'%'%:&''%'%:()'%'%:

*

+

䲊╤
䲊╤㝜⇫ቒᇬቿኦዉኖቑ㢖檕㡈⚠቎嫛ቲቯቡሼᇭ

0:

$

%

0:

&

'

0:

(

)

0:

*

+

ኾ኿዇檧⩮

ソース領域および宛先領域の整合性「ブロックムーブ」命令の実行中にソースデータが変更されないことを確認してください。
変更があった場合、宛先データの整合性は保証できません。

割り込み機能ネストレベルに対する制限はありません。

メモリ領域「ブロックの移動」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。ソース領域と宛先領域の長さが異なる
場合、小さな領域の長さのみが移動します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1025

基本命令
3.3 STL
ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。
宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。

文字列の移動のルール
STRING データタイプの移動元および移動先の領域の移動に「ブロックの移動」命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報も、宛先領域に書き込まれます。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文
字列の現在の長さが、実際に移動する文字数にセットされます。
文字列の最大長および実際の長さに関する情報を移動するには、SRCBLK および DSTBLK パ
ラメータにバイト単位で領域を指定します。

パラメータ
次の表に、「ブロックの移動」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

SRCBLK

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがRET_VAL

Input
Output

INT

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。
DSTBLK

Output 1)

VARIANT

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定します。

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

1026

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー
ド*(W#16#...)

説明

0000

エラーは発生していません。

8092

ソース領域またはターゲット領域は、ロードメモリのみで使用できます。

8152

データタイプ WSTRING、WCHAR、BOOL、および ARRAY of STRING は
SRCBLK パラメータでサポートされていません。

8352

データタイプ WSTRING、WCHAR、BOOL、および ARRAY of STRING は
DSTBLK パラメータでサポートされていません。

一般エラー

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL BLKMOV// 「ブロックの移動」命令が呼び出される。

SRCBLK := P#M100.0 BYTE 10// MB100 から開始して 10 バイト移動される。

RET_VAL := "Tag_ErrorCode"// ムーブ操作中にエラーが発生した場合、変数「Tag_ErrorCode」に
エラーコードが出力される。

DSTBLK := P#M200.0 BYTE 10// 移動されるバイトは MB200 から開始して 10 バイトに書き込まれる

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1065)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1027

基本命令
3.3 STLUBLKMOV:割り込みなしブロック転送

説明「割り込みなしブロック転送」命令を使用して、メモリ領域(ソース領域)の内容を別のメ
モリ領域(宛先領域)に移動することができます。ムーブ操作は、アドレスの昇順方向に行われます。VARIANT を使用して、ソース領域と宛先領域を定義します。
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。その結果、「割り込み不可能なブロックムーブ」命令の実行中に、CPU の割り込み応答時間が長くなる場合があります。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域内でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に当てはまります。
ただし、この命令のタグが保持型の設定「IDB に設定」で宣言されている場合は、このタグを「最適化ブロックアクセス」属性が有効になっているメモリ領域内で使用することも
できます。

メモリ領域
「割り込みなしブロック転送」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則「割り込みなしブロック転送」命令の実行中は、ソース領域および宛先領域が重複してはなりません。ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。

1028

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
仮パラメータとして定義されたソース領域または宛先領域が、SRCBLK または DSTBLK パ
ラメータで指定された宛先領域またはソース領域よりも小さい場合、データは転送されません。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。

文字列の移動のルール
STRING データタイプのソース領域および宛先領域の移動に「割り込みなしブロック転送」
命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報は、宛先領域には書き込まれません。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文字列の現在の長さが、実際に移動する文字数にセットされます。STRING データタイプの領域を移動する場合、領域の長さとして「1」を指定します。

パラメータ
次の表に、「割り込みなしブロック転送」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

SRCBLK

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがRET_VAL

Input
Output

INT

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。
DSTBLK

Output 1)

VARIANT

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定します。

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1029

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

8091

ソース領域またはターゲット領域は、ロードメモリのみで使用できます。

8152

データタイプ WSTRING、WCHAR、BOOL、および ARRAY of STRING は
SRCBLK パラメータでサポートされていません。

8352

データタイプ WSTRING、WCHAR、BOOL、および ARRAY of STRING は
DSTBLK パラメータでサポートされていません。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL UBLKMOV// 「割り込みなしブロック転送」命令が呼び出される。

SRCBLK := P#M100.0 BYTE 10// MB100 から開始して 10 バイト移動される。

RET_VAL := "Tag_ErrorCode"// ムーブ操作中にエラーが発生した場合、変数「Tag_ErrorCode」に
エラーコードが出力される。

DSTBLK := P#M200.0 BYTE 10// 移動されるバイトは MB200 から開始して 10 バイトに書き込まれる

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1065)

1030

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

FILL:フィル命令
説明「フィル」命令を使用して、メモリ領域(宛先領域)を別のメモリ領域(ソース領域)の内容によって埋めることができます。「フィル」命令は、宛先領域がすべて書き込まれるまでソース領域の内容を宛先領域に移動します。ムーブ操作は、アドレスの昇順方向に行われます。
VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域内でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に当てはまります。
ただし、この命令のタグが保持型の設定「IDB に設定」で宣言されている場合は、このタグを「最適化ブロックアクセス」属性が有効になっているメモリ領域内で使用することもできます。
「最適化したブロックアクセス属性を持つブロックの場合、命令「FILL_BLK:フィル」命令を使用できます。
次の図に、ムーブ操作の原理を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1031

基本命令
3.3 STL
),//

%9$/

$

%

0:

$

%

0:

&

'

0:

&

'

0:

(

)

0:

(

)

0:

*

+

0:

*

+

0:

$

%

0:

&

'

0:

(

)

0:

*

+

0:

$

%

0:

&

'

0:

%/.

例:MW100～MW118 の範囲の内容は、メモリワード MW14～MW20 の内容で事前割り当てされます。

ソース領域および宛先領域の整合性「フィル」命令の実行中は、宛先データの整合性を保証するため、ソースデータは変更されないことに注意してください。

メモリ領域「フィル」命令を使用して、以下のメモリ領域を移動することができます。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。プリセットする宛先領域が BVAL 入力
パラメータの長さの整数倍ではなくても、宛先領域は最後のバイトまで書き込まれます。

1032

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
プリセットする宛先領域がソース領域よりも小さい場合は、ソース領域に含まれているデータのうち、宛先領域に書き込める量のみがコピーされます。
実際に存在する宛先領域またはソース領域がソース領域または宛先領域に割り当てられた
メモリ領域よりも小さい場合(BVAL、BLK パラメータ)、データは転送されません。
ANY ポインタ(ソースまたは宛先)がデータタイプ BOOL の場合、これを絶対アドレス指定する必要があり、かつ指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行されません。
宛先領域が STRING データタイプの場合、この命令は管理情報を含む文字列全体を書き込みます。

構造体移動のルール
構造体を入力パラメータとして転送するとき、構造体の長さが常に偶数バイト数になっているように注意する必要があります。構造体を奇数バイトによって宣言する場合は、追加の1 バイトが必要になります。

パラメータ
次の表に、「フィル」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

BVAL

VARIANT

I、Q、M、D、その内容が BLK パラメー

L、P

タの宛先領域を埋めるた

Input

めに使用されるメモリ領域(ソース領域)の指定。
RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

BLK

Output 1)

VARIANT

I、Q、M、D、

ソース領域の内容で埋めL、Pられるメモリ領域の指定。

1) データがタグに流れるため、BLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1033

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

8092

ソース領域またはターゲット領域は、ロードメモリのみで使用できます。

8152

データタイプ WSTRING、WCHAR、BOOL、および ARRAY of STRING は
BVAL パラメータでサポートされていません。

8352

データタイプ WSTRING、WCHAR、BOOL、および ARRAY of STRING は BLK
パラメータでサポートされていません。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL FILL// 「フィル」命令が呼び出される。

BVAL := P#M14.0 WORD 4// 領域が MW14 から MW20 に移動される

RET_VAL := "Tag_ErrorCode"// エラー情報

BLK := P#M100.0 WORD 10// メモリ領域 MW100～MW118 が BVAL パラメータのメモリ領域に含まれる 4 ワードの内容によって埋められる

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1065)

1034

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.7

変換操作

3.3.7.1

SCALE_X: スケール

説明
「スケール」命令を使用して、VALUE 入力の値を指定した値の範囲にマッピングしてスケーリングすることができます。「スケール」命令が実行されると、VALUE 入力の浮動小数点値が、MIN および MAX パラメータによって定義された値の範囲にスケーリングされます。スケーリングの結果は整数になり、RET_VAL 出力に保存されます。
次の図に、値をどのようにスケーリングできるかを示します。

0$;
287
0,1



⊳

「スケール」命令は、以下の等式で機能します。
OUT = [VALUE ∗ (MAX – MIN)] + MIN
注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1035

基本命令
3.3 STL

パラメータ
次の表に、「スケール」命令のパラメータを示します。
パラメータ 宣言

データタイプMIN

整数、浮動小数 I、Q、M、D、

VALUE

Input
Input

メモリ領域

説明
値の範囲の下限値

点数

L、または定数

浮動小数点数

I、Q、M、D、

スケーリングされる値

L、または定数定数を入力する場合は、それを宣言する必要があ
ります。

MAX

Input

整数、浮動小数 I、Q、M、D、L、または定数点数
RET_VAL

Output値の範囲の上限値

整数、浮動小数 I、Q、M、D、L スケーリングの結果
点数

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL SCALE_X// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

MIN := "Tag_Minimum"// 下限値VALUE := "Tag_Value"// 浮動小数点値

MAX := "Tag_Maximum"// 上限値

RET_VAL := "Tag_Result"// 命令の結果

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1036

パラメータ

オペランド

値

MIN

Tag_Minimum

10

VALUE

Tag_Value

0.5

MAX

Tag_Maximum

30

OUT

Tag_Result

20

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL「Tag_Value」入力の値が、「Tag_Minimum」および「Tag_Maximum」入力の値によって定義された値の範囲にスケーリングされます。結果が「Tag_Result」出力に保存されます。

3.3.7.2

NORM_X: 正規化

説明「正規化」命令を使用して、VALUE 入力のタグの値をリニアスケーリングにマッピングして正規化することができます。MIN および MAX パラメータを使用し、スケーリングに適用する値の範囲の制限を定義できます。RET_VAL 出力の結果が計算され、正規化される値のこの値の範囲内の位置に応じて、浮動小数点数として保存されます。正規化される値が MIN
入力の値に等しい場合、OUT 出力の値は「0.0」になります。正規化する値が入力 MAX の値と等しい場合、出力 OUT が値「1.0」を返します。
次の図に、値が正規化される例を示します。


287

0,1

0$;
⊳

「正規化」命令は、以下の等式で機能します。
OUT = (VALUE – MIN) / (MAX – MIN)
注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1037

基本命令
3.3 STL

パラメータ
次の表に、「正規化」命令のパラメータを示します。
パラメータ 宣言

データタイプMIN

整数、浮動小数 I、Q、M、D、L 値の範囲の下限値

1)

Input

メモリ領域

説明

点数
VALUE 1)

Input

整数、浮動小数 I、Q、M、D、L 正規化する値
点数

MAX 1)

Input

整数、浮動小数 I、Q、M、D、L 値の範囲の上限値
点数

RET_VAL1)

Output浮動小数点数

I、Q、M、D、L 正規化の結果

これらの 3 つのパラメータで定数を使用する場合は、そのいずれかを宣言するのみで済みます。
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL NORM_X// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

MIN := "Tag_Minimum"// 下限値VALUE := "Tag_Value"// 浮動小数点値

MAX := "Tag_Maximum"// 上限値

RET_VAL := "Tag_Result"// 命令の結果

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1038

パラメータ

オペランド

値

MIN

Tag_Minimum

10

VALUE

Tag_Value

20

MAX

Tag_Maximum

30

RET_VAL

Tag_Result

0.5

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL「Tag_Value」入力の値が、「Tag_Minimum」および「Tag_Maximum」入力の値によって定義された値の範囲にマッピングされます。「Tag_Value」入力のタグ値が、定義された値の範囲に正規化されます。結果が、浮動小数点数として「Tag_Result」出力に保存されます。

3.3.7.3

VARIANTVARIANT_TO_DB_ANY: VARIANT の DB_ANY への変換

説明
「VARIANT の DB_ANY への変換」命令を使用して、IN パラメータがアドレス指定するオペ
ランドのデータブロック番号を照会します。インスタンスデータブロックまたは配列デー
タブロックにすることはできません。IN パラメータのオペランドはデータタイプ VARIANTです。つまり、プログラムの作成時に照会する番号のデータブロックのデータタイプが既知である必要があります。データブロック番号はランタイム中に読み取られ、RET_VAL パラ
メータで指定されたオペランドに書き込まれます。

要件
必要条件が満たされる場合、命令が実行されます。必要条件が満たされない場合、データ
ブロック番号として「0」が出力されます。
出力タグ...

原点復帰...

変換オプション

VARIANT...データブロックであり、出力タグをデータブロック

PLC データタイプまたはシス 番号に変換できます。
テムデータタイプ(SDT)のイ
ンスタンスデータブロック。
VARIANT...配列 DB であるデータブロ 出力タグをデータブロックック。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

番号に変換できます。

1039

基本命令
3.3 STL
出力タグ...

原点復帰...

変換オプション

VARIANT...基本データタイプのタグ。 データブロックを 1 つの基
本データタイプのみで構成することはできないため、出力タグをデータベース番
号に変換できません。

VARIANT...データブロック内の構造

これはデータブロック内の体。

一部にすぎないため、出力タグをデータベース番号に変換できません。

パラメータ
次の表に、「VARIANT の DB_ANY への変換」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN

VARIANT

L (ブロックイン 読み出されるタグ。

Input

説明

ターフェースの 「DB_ANY_TO_VARIANT(「Input」、」命令のファンクション「InOut」、およ値)。IN パラメータでロび「Temp」セーカルタグまたはグロー

クション内で宣 バルタグを使用できます。
言可能。)
RET_VAL

Output

DB_ANY

I、Q、M、D、L 結果:DB の番号

ERR

Output

INT

I、Q、M、D、L エラー情報

有効なデータタイプの追加情報については、「関連項目」を参照してください。

1040

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLERR パラメータ
次の表に、ERR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

252CIN パラメータの VARIANT データタイプの値は「0」であり、CPU が STOP モ
ードに切り替わります。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8130

IN パラメータのデータタイプは ANY です。

8131

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8132

データブロックが小さすぎるか、または配列データブロックではありません。

8150

IN パラメータのデータタイプ VARIANT が、値「0」を提供します。このエラーメッセージを受信するには、「ブロック内でのエラー処理」ブロックプロ
パティが有効であることが必要です。有効でない場合、CPU が STOP モードに切り替わり、エラーコード 16#252C を送信します。

8153

IN パラメータの VARIANT データタイプが配列データブロックの開始を指していないか、または VARIANT の長さがデータブロックの長さと一致しません。

8154

データブロックのデータタイプが不正です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL VARIANT_TO_DB_ANY// 命令が呼び出されます。

IN := #tempVARIANT// tempVARIANT オペランドで指定されたデータブロッ
クの番号が読み出されます。オペランドのデータタイプがVARIANT であるため、プログラムの作成中にタグのデー
タタイプを知っている必要はありません。

RET_VAL := "OutputDBNumber"// この番号が、データタイプが DB_ANY である「OutputDBNumber」タグに書き込まれます。

ERR := "Tag_Error"// エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1041

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

IN

Input

tempVARIANT-

RET_VAL

OutputOutputDBNumber

11

DB_ANY_TO_VARIANT: DB_ANY の VARIANT への変換
説明
「DB_ANY の VARIANT への変換」命令を使用して、以下にリストした要件を満たすデータ
ブロックから VARIANT タグを生成します。IN パラメータのオペランドはデータタイプ
DB_ANY です。つまり、プログラムの作成時にデータブロックが既知である必要はありま
せん。データブロックが番号がランタイム中に読み取られます。

要件
必要条件が満たされる場合、命令が実行されます。要件が満たされない場合またはデータ
ブロックが存在しない場合、RET_VAL パラメータで値 NULL が出力されます。RET_VAL タ
グによるその他すべてのアクセスは失敗します。
データタイプの入力タグ...

原点復帰...

変換オプション

DB_ANY...データブロックであり、変換が可能です。

PLC データタイプまたはシス
テムデータタイプ(SDT)のイ
ンスタンスデータブロック。
DB_ANY...配列 DB であるデータブロ 変換が可能です。
ック。

DB_ANY...ファンクションブロックの 変換が不可能です。
インスタンスデータブロッ
クまたはグローバルデータ
ブロックであるデータブロ
ック。

1042

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「DB_ANY の VARIANT への変換」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN

DB_ANY

I、Q、M、D、L 番号が読み出されるデー

Input

説明
タブロック。IN パラメー
タでローカルタグまたは
グローバルタグを使用できます。

RET_VAL

Output 1)

VARIANT

L (ブロックイン データブロックの番号
ターフェースの「一時」セクシ
ョンでの宣言はできません。)

ERR

Output

INT

I、Q、M、D、L エラー情報

1) データがタグに流れるため、RET_VAL パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

ERR パラメータ
次の表に、ERR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

8130

データブロックの番号が「0」です

8131

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8132

データブロックが小さすぎるか、または配列データブロックではありません。

8134

データブロックが書き込み保護されています。

8154

データブロックのデータタイプが不正です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1043

基本命令
3.3 STL
エラーコ
ード*

説明

(W#16#..
.)
8155

データブロックのデータタイプが不明です。1)*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
1)

エラーコード#8155 が出力される理由は以下のとおりです。

A PLC データタイプ(UDT1)が宣言され、データタイプ「UDT1」のデータブロック(DB2)が作成されました。タグテーブルにデータタイプ DB_ANY のタグ(3)が含まれています。次に「DB_ANY_TO_VARIANT」命令がプログラムブロック(4)で呼び出され、IN パラメータでタグ(3)を提供されました。実行中に「DB_ANY_TO_VARIANT」命令がエラーコード 16#8155
を返します。
このエラーコードを解決するには、次の手順を実行します。
1. ファンクション(FC5)を作成し、データタイプ VARIANT のタグを InOut インターフェースで宣言します。
2. 追加のファンクション(FC6)を作成し、そのファンクションで FC5 を呼び出します。
3. データタイプ「UDT1」のタグ(7)を「一時」インターフェースの FC6 で作成します。
4. FC5 の InOut インターフェースにタグ(7)を提供します。
5. 2 つのブロック(FC5 および FC6)をコンパイルし、CPU にダウンロードします。これらのブロック(FC5 および FC6)をユーザープログラムで呼び出す必要はありません。

結果:
これでユーザープログラムがデータタイプを認識したため、エラーコード 16#8155 は出力されなくなります。
この手順は、2 つの命令「VariantGet」または「VariantPut」の一方を呼び出す「DB_ANY_TO_VARIANT」命令を呼び出した後で)場合は不要です。
(

例
次の例で、命令がどのように動作するかを示します。

1044

STL

説明

CALL DB_ANY_TO_VARIANT// 命令が呼び出されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

IN := "InputDB"// 「InputDB」オペランドで指定された任意のデータブロ
ックの番号が、そのデータブロックをアドレス指定するデー
タタイプ VARIANT のタグの生成に使用されます。IN パラ
メータのオペランドのデータタイプは DB_ANY であるため、ランタイム中に使用されるデータブロックはプログラムの作成時に既知である必要はありません(データブロックの名前も番号も不明でかまいません)。

RET_VAL := #tempVARIANT// RET_VAL パラメータのオペランドのデータタイプは
VARIANT であるため、プログラムの作成時にデータブロッ
クのデータタイプが既知である必要はありません。

ERR := "Tag_Error"// エラー情報

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.3.7.4

パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

IN

Input

InputDB11

RET_VAL

Temp

tempVARIANT

-

レガシー

SCALE: スケール

説明
「スケール」命令は、IN パラメータの整数を下限値と上限値間の物理単位でスケーリングが可能な浮動小数点数に変換します。LO_LIM および HI_LIM パラメータを使用して、入力値をスケーリングする範囲の下限値と上限値を指定することができます。命令の結果は、OUT
パラメータに出力されます。
「スケール」命令は、以下の等式で機能します。
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値がバイポーラで、-27648～27648 の範囲の値にあると想定されます。この場合、定数「K1」の値は「-27648.0」となり、定数「K2」の値は「+27648.0」となります。
• シグナル状態「0」:IN パラメータの値がユニポーラで、0～27648 の範囲の値にあると想定されます。この場合、定数「K1」の値は「0.0」となり、定数「K2」の値は「+27648.0」となります。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1045

基本命令
3.3 STL
IN パラメータの値が定数値「K2」よりも大きい場合、命令の結果が上限値(HI_LIM)にセッ
トされ、エラーが出力されます。
IN パラメータの値が定数値「K1」未満の場合、命令の結果が下限値(LO_LIM)にセットされ、エラーが出力されます。
示された下限値が上限値よりも大きい(LO_LIM > HI_LIM)場合、結果は入力値に反比例してスケーリングされます。

パラメータ
次の表に、「スケール」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

INT

I、Q、M、D、

スケーリングする入力値

Input

L、P、または定数
HI_LIM

Input

REAL

I、Q、M、D、上限値

L、P、または定数
LO_LIM

Input

REAL

I、Q、M、D、下限値

L、P、または定
数BIPOLAR

Input

BOOL

I、Q、M、D、IN パラメータの値をバイ

L、または定数

ポーラとして解釈する
か、またはユニポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

RET_VAL

Output

WORD

I、Q、M、D、

エラー情報

L、P
OUT

OutputREAL

I、Q、M、D、

命令の結果

L、P

1046

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

0008

IN パラメータの値が定数値「K2」を超えているか、または定数値「K1」未満になっています。

一般エラ

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL SCALE// 命令が呼び出されます。

IN := "Tag_InputValue"// 変換およびスケーリングされる値を指定する

HI_LIM := "Tag_HighLimit"// 上限値

LO_LIM := "Tag_LowLimit"// 下限値BIPOLAR := "Tag_Bipolar"// IN パラメータの値をバイポーラとして解釈するか、またはユニポーラとして解釈するかを示す。

RET_VAL := "Tag_ErrorCode"// エラー情報

OUT := "Tag_OutputValue"// 命令の結果

次の表に、実行前の各種オペランドの値を示します。
パラメータ

オペランド

値

IN

Tag_InputValue

22

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue

0.0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1047

基本命令
3.3 STL
次の表に、実行後の各種オペランドの値を示します。
パラメータ

オペランド

値

IN

Tag_InputValue

22

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue

50.03978588

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1065)

UNSCALE:スケール解除

説明「スケール解除」命令を使用して、IN パラメータの浮動小数点数を下限値と上限値間の物
理単位にスケーリング解除し、それらを整数に変換します。LO_LIM および HI_LIM パラメータを使用し、入力値をスケーリング解除する範囲の下限値と上限値を指定します。命令の結果は、OUT パラメータに出力されます。
「スケール解除」命令は、以下の等式で機能します。
OUT = [((IN–LO_LIM)/(HI_LIM–LO_LIM)) ∗ (K2–K1) ] + K1
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値がバイポーラで、-27648～27648 の範囲の値にあると想定されます。この場合、定数「K1」の値は「-27648.0」となり、定数「K2」の値は「+27648.0」となります。
• シグナル状態「0」:IN パラメータの値がユニポーラで、0～27648 の範囲の値にあると想定されます。この場合、定数「K1」の値は「0.0」となり、定数「K2」の値は「+27648.0」となります。
パラメータ IN の値が、HI_LIM および LO_LIM で定義された制限値外の場合、エラーが出力され、結果が直近の制限値にセットされます。

1048

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
示された下限値が上限値よりも大きい場合(LO_LIM > HI_LIM)、結果は入力値に逆の割合でスケーリングされます。

パラメータ
次の表に、「スケール解除」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

REAL

I、Q、M、D、整数値にスケーリング解Input

L、P、または定 除する入力値
数
HI_LIM

Input

REAL

I、Q、M、D、上限値

L、P、または定数
LO_LIM

Input

REAL

I、Q、M、D、下限値

L、P、または定
数BIPOLAR

Input

BOOL

I、Q、M、D、IN パラメータの値をバイ

L、または定数

ポーラとして解釈する
か、またはユニポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

RET_VAL

Output

WORD

I、Q、M、D、

エラー情報

L、P
OUT

Output

INT

I、Q、M、D、

命令の結果

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1049

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード(W#16#..
.)
0000

エラーは発生していません。

0008

IN パラメータの値が上限値(HI_LIM)を超えているか、または下限値(LO_LIM)
未満になっています。

一般エラ

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、AUTOHOTSPOT を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL UNSCALE// 命令が呼び出されます。

IN := "Tag_InputValue"// スケーリング解除する値を指定する

HI_LIM := "Tag_HighLimit"// 上限値

LO_LIM := "Tag_LowLimit"// 下限値BIPOLAR := "Tag_Bipolar"// IN パラメータの値をバイポーラとして解釈するか、またはユニポーラとして解釈するかを示す。

RET_VAL := "Tag_ErrorCode"// エラー情報

OUT := "Tag_OutputValue"// 命令の結果

次の表に、実行前の各種オペランドの値を示します。

1050

パラメータ

オペランド

値

IN

Tag_InputValue

50.03978588

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue

0.0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、実行後の各種オペランドの値を示します。
パラメータ

オペランド

値

IN

Tag_InputValue

50.03978588

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue

22

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1065)

3.3.8

プログラム制御演算

3.3.8.1

ランタイム制御

ENDIS_PW: パスワードの適正化の制限および有効化

説明「パスワード正当性の制限および有効化」命令を使用して、設定されたパスワードを CPU に対して正当化できるかどうかを指定します。このため、正しいパスワードがわかっている
場合でも、正規の接続を防止することができます。
命令呼び出し時に REQ パラメータのシグナル状態が「0」の場合、現在設定されている状態
が、出力パラメータに表示されます。入力パラメータに変更を加えても、変更は出力パラメータに転送されません。
命令呼び出し時に REQ パラメータのシグナル状態が「1」の場合、シグナル状態は入力パラメータ(F_PWD、FULL_PWD、R_PWD、HMI_PWD)から取得されます。
• シグナル状態「0」が存在する場合、パスワードによる承認は許可されません。
• シグナル状態「1」が存在する場合、パスワードを使用できます。
パスワードの有効化または無効化を個別に許可または禁止することができます。たとえば、
フェールセーフパスワードを除く、すべてのパスワードを禁止することができます。したTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1051

基本命令
3.3 STL
がって、アクセスオプションを小さいユーザーグループに制限することができます。出力パラメータ(F_PWD_ON、FULL_PWD_ON、R_PWD_ON、HMI_PWD_ON)は、REQ パラメー
タに関係なく、常にパスワード使用の現在のステータスを示します。
設定済みでないパスワードの場合、入力のシグナル状態が TRUE でなければならず、出力にシグナル状態 TRUE を返します。フェールセーフパスワードは、F-CPU の場合のみ設定できるため、標準 CPU では、常にシグナル状態 TRUE と相互接続する必要があります。命令がエラーを返す場合、この呼び出しには効果がなく、直前のロックがまだ有効です。
無効なパスワードは、以下の条件で再度有効にすることができます。
• CPU が工場出荷時設定にリセットされること。
• S7-1500 CPU のフロントパネルが、パスワードを再度有効にすることができる適切なメニューに移動することができるダイアログをサポートしていること。
• 「パスワードの適正化の制限および有効化」命令を呼び出す場合、目的のパスワードの
入力パラメータのシグナル状態が「1」であること。
• モードセレクタを STOP に設定すること。このスイッチの設定を RUN に戻すと直ちに、
パスワードの適正化に対する制限が再確立されます。
• S7-1200 CPU への空きメモリカード(転送カードまたはプログラムカード)の差し込み。
• S7-1200 CPU では、電源オフから電源オンへの移行によって、保護が無効になります。
この場合、プログラム(たとえば、スタートアップ OB)で、再度、「パスワード正当性の制限および有効化」命令を呼び出す必要があります。
注記「パスワード正当性の制限および有効化」命令は、HMI パスワードが有効にされていない場
合、HMI システムからのアクセスをブロックします。
注記
既存の適正化された接続はアクセス権を保持し、「パスワードの適正化の制限および有効化」命令を使用してそれらを制限することはできません。

S7-1500 CPU の偶発的なロックアウトの防止
CPU のフロントパネルで設定を行うことができ、CPU は最新の設定を保存します。
偶発的なロックアウトを防止するには、S7-1500 CPU でモードセレクタを STOP に設定することによって保護を無効にすることができます。モードセレクタを RUN に設定することによって、「パスワードの適正化の制限および有効化」命令を再度呼び出したり、フロ
ントパネルで追加の操作を実行したりせずに、保護が自動的に再度有効になります。

1052

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

S7-1200 CPU の偶発的なロックアウトの防止
S7-1200 CPU にはモードセレクタが存在しないため、電源オフから電源オンへの移行時の保護は無効です。このため、ユーザープログラム内の特定のプログラムシーケンスによって偶発的なロックアウトを防止することをお奨めします。
これを行うには、サイクリック割り込み OB、またはメイン OB (OB 1)のタイマのいずれかを使用して、時間制御をプログラミングします。これによって、電源オフから電源オンへの移行と、関連する保護の無効化の後、比較的迅速に、各 OB (たとえば、OB 1 または OB 35)
内で「パスワード正当性の制限および有効化」命令を呼び出すオプションが可能になります。スタートアップ OB (OB 100)でこの命令を呼び出して、この命令が無効で、パスワード
正当化の制限が存在しない時間帯を比較的小さなものに保ちます。この手順は、未許可のアクセスに対する可能な最大限の保護を提供します。
偶発的なロックアウトが発生した場合は、スタートアップ OB での呼び出しをスキップし(たとえば、入力パラメータを照会することによって)、ロックが再び有効になる前に、CPUへ接続確立する時間(たとえば、10 秒～1 分)を設定することができます。
ユーザープログラムコードにタイマが存在しない場合にロックアウトが発生した場合は、空の転送カードまたはプログラムカードを CPU に挿入します。空の転送カードまたはプロ
グラムカードは、CPU の内部ロードメモリを削除します。この後、ユーザープログラムを再び STEP 7 から CPU にダウンロードする必要があります。

S7-1200 CPU でパスワードが失われた場合の手順
パスワード保護された S7-1200 CPU のパスワードを紛失した場合は、空の転送カードまたはプログラムカードを使用して、パスワード保護されたプログラムを削除します。空の転送カードまたはプログラムカードは、CPU の内部ロードメモリを削除します。その後、新しいユーザープログラムを STEP 7 Basic から CPU にロードすることができます。
警告
空の転送カードの挿入
ランタイム中に CPU に転送カードを挿入すると、CPU は STOP モードに切り替わります。
動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
転送カードを取り出すと、転送カードの内容が内部ロードメモリで使用可能になります。
この時点に、カードにプログラムが含まれていないことを確認してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1053

基本命令
3.3 STL
警告
空のプログラムカードの挿入
ランタイム中に CPU にプログラムカードを挿入すると、CPU は STOP モードに移行します。動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
プログラムカードが空であることを確認してください。内部ロードメモリが空のプログ
ラムカードにコピーされます。直前に空であったプログラムカードを取り出すと、内部ロードメモリは空になります。
CPU を RUN モードに切り替える前に、転送カードまたはプログラムカードを取り出す必要があります。

動作モードへのパスワードの使用の影響
次の表に、「パスワードの適正化の制限および有効化」命令によるパスワードの使用が動作モードと対応するユーザーの操作に与える影響を示します。
操作

命令によるパスワードの保護

その後の基本状態

無効• STOP への動作モードの切り替え(制限なし)• メモリの手動リセット(PG、切り替え、MC(モーションコントロール)の変更)• 工場出荷時設定へのリセット
電源オン後の基本状態• S7-1200-CPU:
ロックは無効で、プログラム(たとえば、スタートアップ OB)で再びこの命令を呼び出す必要があります。
• S7-1500 CPU:
有効(電源オフの前にロックが有効になった場合).パスワードの不許可のオ
プションは保持型です。

動作モードの移行 RUN/STARTUP/HOLD -> STOP 有効(命令、エラーまたは通信の終了によって)また パスワードはまだ使用できません。
は STOP -> STARTUP/RUN/HOLD

1054

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「パスワードの適正化の制限および有効化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、REQ パラメータのシグナ

L、または定数ル状態が「0」の場合

Input

は、現在設定されているパスワードのシグナル状
態が照会されます。
F_PWD

Input

BOOL

I、Q、M、D、

フェールセーフなどの読

L、または定数

み取り/書き込みアクセス• F_PWD = "0":パスワー
ドを許可しない• F_PWD = "1":パスワー
ドを許可する

FULL_PWD

Input

BOOL

I、Q、M、D、

読み取り/書き込みアクセ

L、または定数ス• FULL_PWD = "0":パス
ワードを許可しない• FULL_PWD = "1":パス
ワードを許可する

R_PWD

Input

BOOL

I、Q、M、D、

読み取りアクセス

L、または定数• R_PWD = "0":パスワー
ドを許可しない• R_PWD = "1":パスワー
ドを許可する

HMI_PWD

Input

BOOL

I、Q、M、D、HMI アクセス

L、または定数• HMI_PWD = "0":パスワードを許可しない• HMI_PWD = "1":パスワードを許可する

F_PWD_ON Output

BOOL

I、Q、M、D、L フェールセーフなどの読
み取り/書き込みアクセス• F_PWD_ON = "0":パス
ワードを許可しない• F_PWD_ON = "1":パス
ワードを許可する

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1055

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

FULL_PWD_ Output

BOOL

I、Q、M、D、L 読み取り/書き込みアクセ

ON

説明
スステータス• FULL_PWD_ON = "0":パスワードを許可しない• FULL_PWD_ON = "1":
パスワードを許可する

R_PWD_ON Output

BOOL

I、Q、M、D、L 読み取りアクセスステー
タス• R_PWD_ON = "0":パス
ワードを許可しない• R_PWD_ON = "1":パス
ワードを許可する

HMI_PWD_

Output

BOOL

I、Q、M、D、L HMI アクセスステータス

ON• HMI_PWD_ON = "0":パスワードを許可しない• HMI_PWD_ON = "1":パスワードを許可する

RET_VAL

Output

WORD

I、Q、M、D、L エラー情報

有効なデータタイプの追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

8090「パスワードの適正化の制限および有効化」命令はサポートされていません

80D0

フェールセーフのパスワードが未設定です。標準 CPU では、シグナル状態はTRUE であることが必要です。

1056

80D1

読み取り/書き込みアクセスが未設定です

80D2

読み取りアクセスが未設定です

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
エラーコ
ード*

説明

(W#16#..
.)
80D3

HMI アクセスが未設定です*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

PC システム
SHUT_DOWN:ターゲットシステムのシャットダウン

説明
命令「SHUT_DOWN:ターゲットシステムのシャットダウン」を使用して、PC ベースのオートメーションシステムをシャットダウンし、PC ベースのオートメーションシステム上のS7 ソフトウェアコントローラ CPU 150xS または Windows を再起動することができます。
この命令は、[命令]タスクカードの[基本命令|プログラム制御|ランタイム制御]で使用できます。
再起動は、たとえば、以下の場合に推奨されます。
• 産業用 UPS (無停電電源装置)がデジタル入力経由で電源異常を報告する場合• Windows が応答を停止するか、「ブルースクリーン」を表示する場合• ユーザープログラムで呼び出されるエラー OB が多すぎる場合

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1057

基本命令
3.3 STL

パラメータ以下の表に、「ターゲットシステムのシャットダウン」命令のパラメータを示します。
パラメー 宣言

データ

タ

タイプ

MODE

入力

UINT

メモリ領域

説明

I、Q、M、D、L、

MODE = 1:CPU 150xS および Windows のシャットダ

または定数

ウン
CPU が STOP に移行し、保持データを保存します。
その後、CPU および Windows がシャットダウンされます。システムを手動で再起動する必要があります。
MODE = 2:CPU 150xS の再起動
CPU が STOP に移行し、保持データを保存します。
その後、CPU がシャットダウンされ、再起動されます。
MODE = 3:Windows の再起動。CPU は RUN のままになります。Windows が再起動されます(TIA ポータ
ル V14 以降では、MODE 3 は下位互換性のためだけに保持されます。MODE 4 または MODE 5 を使用することをお勧めします)。
MODE = 4:Windows が正常にシャットダウンされ、再起動されます。CPU は RUN のままになります。
MODE = 5:Windows の再起動(MODE 3 と同等。例
外:MODE 5 は、Windows がクラッシュした場合にのみ使用してください)。

COMMEN 入力

STRING

I、Q、M、D、LT

モード = 1、3 および 4 では、再起動の理由を指定できます。理由は Windows イベントログに出力されます。

Ret_Val

戻り値

WORD

Q、M、D、L

Ret_Val = 0:障害なし
Ret_Val = 8090:MODE に渡された値はサポートされていません。
Ret_Val = 8091:Windows が Shut_Down 命令の呼び出しに応答しません(モード 3 および 4 に対してのみ
有効)。
Ret_Val = 8092:このエラーが発生した場合は、SIMATIC カスタマーサポートに連絡してください(モード 3 および 4 に対してのみ有効)。

1058

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

RE_TRIGR: サイクルタイムモニタのリスタート

説明「サイクルタイムモニタのリスタート」命令は、CPU のサイクルモニタ時間のリスタートに使用します。サイクルモニタ時間が、CPU 構成で設定した時間で再開されます。
この命令は、呼び出しの数に関係なく期間内に完全に実行されます(最大プログラムサイ
クルの 10 倍)。時間が期限切れになると、プログラムサイクルは延長できなくなります。

命令の呼び出しこの命令は、すべてのオーガニゼーションブロックで優先度に関係なく呼び出すことがで
きます。

パラメータ
「サイクルタイムモニタのリスタート」命令にはパラメータがなく、エラー情報は提供されません。

STP: プログラム終了

説明「プログラムの終了」命令を使用し、CPU を STOP モードに設定してプログラムの実行を終了します。RUN から STOP への変更の影響は CPU の構成によって異なります。

パラメータ「プログラムの終了」命令にはパラメータがなく、エラー情報は返されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1059

基本命令
3.3 STL

GET_ERROR: ローカルでエラーを取得

説明「ローカルでエラーを取得」命令を使用して、プログラムブロック内のエラーの発生を照会します。これには通常、プログラミングエラーまたはアクセスエラーが含まれます。シス
テムがプログラムブロックの実行中にエラーを報告した場合、命令の最後の実行の後、このエラーがブロックの実行中に発生した最初の該当エラーであれば、詳細情報が OUT 出力のオペランドに格納されます。
OUT 出力では、「ErrorStruct」システムデータタイプのオペランドのみを指定できます。
「ErrorStruct」システムデータタイプは、エラー情報が保存されている正確な構造体を指定します。追加の命令を使用することで、この構造体とプログラムが適切な応答をするかを評価できます。プログラムブロックで複数のエラーが発生した場合、発生した最初のエラーが修復された後にのみ、発生した次のエラーに関するエラー情報が命令によって出力されます。
注記
出力 OUTOUT 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後に出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。

注記
ローカルエラー処理の有効化
プログラムブロックのプログラムコードに命令を挿入すると、直ちにローカルエラー処理が有効になり、エラー発生時に既定のシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要については、AUTOHOTSPOT を参照してください。
複数のエラー処理オプションを含むローカルエラー処理の詳細な例については、
AUTOHOTSPOT を参照してください。

1060

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「ローカルでエラーを取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

OUT

ErrorStruct

D、L

エラー情報

Output

データタイプ「ErrorStruct」「ErrorStruct」データタイプをグローバルデータブロックまたはブロックインターフェースに挿入できます。毎回データ構造に異なる名前を割り当てれば、データタイプを複数回挿入することが可能です。個々の構造体エレメントのデータ構造と名前を変更することはできません。エラー情報をグローバルデータブロックに保存すると、他のプログラムブロ
ックによってその情報を読み出すこともできます。
次の表に、「ErrorStruct」データタイプの構造体を示します。
構造体コンポーネント

データタイプ説明

ERROR_ID

WORD

エラー ID

FLAGS

BYTE

エラーがプログラムブロック呼び出
し中に発生したのかどうかを示します。
16#01:プログラムブロック呼び出し中のエラー
16#00:プログラムブロック呼び出し
中のエラーなし

REACTION

BYTE

既定の応答
0:無視(書き込みエラー)
1:代替値「0」で続行(読み取りエラー)
2:命令をスキップ(システムエラー)

CODE_ADDRESS

CREFプログラムブロックのアドレスおよびタイプに関する情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1061

基本命令
3.3 STL
構造体コンポーネント
BLOCK_TYPE

データタイプ

説明

BYTE

エラーが発生したプログラムブロッ
クタイプ
1:オーガニゼーションブロック(OB)2:ファンクション(FC)3:ファンクションブロック(FB)

CB_NUMBER

UINT

プログラムブロックの番号

OFFSET

UDINT

内部メモリへの参照

MODE

BYTE

オペランドのアドレスに関する情報

OPERAND_NUMBER

UINT

マシンコマンドのオペランド番号

POINTER_NUMBER_LOCATIO UINT

(A) 内部ポインタ

N
SLOT_NUMBER_SCOPE

UINT(B) 内部メモリの記憶領域

DATA_ADDRESS

NREF

オペランドのアドレスに関する情報

BYTE(C) メモリ領域

AREA

L:16#40...16#7F、16#86、16#87、
16#8E、16#8F、16#C0...16#FF
I:16#81
Q:16#82
M:16#83
DB:16#40、16#84、16#85、
16#8A、16#8B
PI:16#01
PQ:16#02
テクノロジーオブジェクト:16#04

1062

DB_NUMBER

UINT(D) データブロックの番号

OFFSET

UDINT(E) オペランドの相対アドレス

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

構造体コンポーネント「ERROR_ID」
次の表に、構造体コンポーネント「ERROR_ID」で出力可能な値を示します。
ID*(16 進数)ID*(10 進)

説明

00

エラーは発生していません。

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

使用されている参照が無効

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が誤っているか、またはファンクションが存在しませ
ん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が誤っているか、またはファンクションブロックが存在しません。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

9632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

TP の内部エラー

1063

基本命令
3.3 STLID*(16 進数)ID*(10 進)

説明

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LABEL:L #Field[#index]// #Field[#index]タグへのアクセス

L 40.5// 値 40.5 の読み込み*R// タグの値と値 40.5 の乗算を行う。

T#TagOut// 積をオペランド#TagOut に転送。

CALL GET_ERROR// 命令が呼び出されます。

OUT := #Error// エラーが発生すると、詳細情報が#Error オペランドに格納される。

T#Error.REACTION// 構造体コンポーネント#Error.REACTION が読み出される。

L 1// 値 1 の読み込み==I// 構造体コンポーネントの値が値 1 と比較される。

JC LABEL// 2 つの値の比較が正の場合、プログラム実行はジャンプラベル LABEL に戻ります。

#Field[#index]タグへのアクセスでエラーが発生しました。#TagOut オペランドは、読み取り/アクセスエラーに関わらずシグナル状態「1」を返し、乗算は値「0.0」によって実行されます。I このエラーシナリオが発生する場合は、エラーを取得するために、乗算の後に、「ローカルでエラーを取得」命令をプログラムすることを推奨します。「ローカルでエラーを取得」命令によって供給されるエラー情報は、比較を使用して評価されます。
#Error.REACTION 構造コンポーネントの値が「1」の場合、読み取り/アクセスエラーが発生しており、プログラム実行はジャンプラベル LABEL で再び開始します。

1064

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

GET_ERR_ID: ローカルでエラー ID を取得

説明「ローカルでエラー ID を取得」命令は、ブロック内のエラーの発生のクエリに使用されます。これは、通常、アクセスエラーによって生じます。この命令の最後の実行の後に、システムがブロック処理中にブロック実行に関するエラーを報告すると、タグで発生した最初のエラーのエラー ID が RET_VAL 出力に格納されます。
RET_VAL 出力では、WORD データタイプのオペランドのみを指定できます。ブロックで複数のエラーが発生した場合、発生した最初のエラーが修復された後にのみ、命令で発生した
次のエラーのエラー ID が出力されます。
注記
RET_VAL 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後に出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。

「ローカルでエラー ID を取得」命令の出力は、エラー情報が存在する場合のみ設定されます。これらの条件の 1 つが満たされない場合、残りのプログラム実行は「ローカルでエラー
ID を取得」命令の影響を受けません。
この命令を他のトラブルシューティングオプションと組み合わせて実装する方法の例は、「関連項目」を参照してください。
注記「ローカルでエラー ID を取得」命令は、ブロック内のローカルエラー処理を可能にします。
「ローカルでエラー ID を取得」命令がブロックのプログラムコードに挿入されている場合、エラー発生時に、あらかじめ定義されたすべてのシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要については、AUTOHOTSPOT を参照してください。
複数のエラー処理オプションを含むローカルエラー処理の詳細な例については、
AUTOHOTSPOT を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1065

基本命令
3.3 STL

パラメータ
次の表に、「ローカルでエラー ID を取得」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

RET_VAL

WORD

I、Q、M、D、L エラー ID

Output

説明

RET_VAL パラメータ
次の表に、RET_VAL パラメータで出力できる値を示します。
RET_VAL*(16 進数)RET_VAL*(10 進数)説明

0

0

エラーは発生していません。

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

使用されている参照が無効

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が誤っているか、またはファンクションが存在しませ
ん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が誤っているか、またはファンクションブロックが存在しません。

1066

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
RET_VAL*(16 進数)RET_VAL*(10 進数)

説明

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

9632

TP の内部エラー

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L #Field[#index]// #Field[#index]タグへのアクセス

L 40.5// 値 40.5 の読み込み*R// タグの値と値 40.5 の乗算を行う。

T#TagOut// 積をオペランド#TagOut に転送。

CALL GET_ERR_ID// 命令が呼び出されます。

RET_VAL := #TagID// エラーが発生すると、エラー ID が#TagID オペランドに格納される。

T#TagID// #TagID オペランドのエラー ID が読み出される。

L 16#2522// 値 16#2522 の読み込み==I// エラー ID の値が値 16#2522 と比較される。

CALL MOVE// 命令が呼び出されます。

IN := 100.0// 値 100.0 が#TagOut オペランドにコピーされる。

OUT := #TagOut// 命令の出力#Field[#index]タグへのアクセスでエラーが発生しました。#TagOut オペランドは、読み取り/アクセスエラーに関わらずシグナル状態「1」を返し、乗算は値「0.0」によって実行されます。I このエラーシナリオが発生する場合は、エラーを取得するために、乗算の後に、「ローカルでエラー ID を取得」命令をプログラムすることを推奨します。「ローカルでエTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1067

基本命令
3.3 STL
ラー ID を取得」命令によって供給されるエラー ID は、比較を使用して評価されます。
#TagID オペランドが ID 16#2522 を返す場合、読み取り/アクセスエラーが発生しており、
値「100.0」が#TagOut 出力に移動します。

INIT_RD: すべての保持データの初期化

説明「すべての保持データを初期化」命令を使用すると、すべてのデータブロック、ビットメ
モリ、および SIMATIC タイマとカウンタの保持データが同時にリセットされます。この命
令は、実行するとプログラムサイクル持続時間を超過するため、スタートアップ OB 内でのみ実行が可能です。

パラメータ
次の表に、「すべての保持データを初期化」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、

入力「REQ」のシグナル

L、または定数

状態が「1」の場合、すInput

べての保持データがリセットされます。
RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

1068

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B5

この命令はスタートアップ OB 内にプログラムされていないため、実行でき
ません。

一般エラ

関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL INIT_RD// 命令が呼び出されます。

REQ := "Tag_REQ"

オペランド「Tag_REQ」のシグナル状態が「1」の場合、すべての保持データがリセットされます。

RET_VAL := "Tag_RET_VAL"// エラーコード「Tag_REQ」オペランドのシグナル状態が「1」の場合、この命令が実行されます。すべてのデータブロック、ビットメモリ、および SIMATIC タイマの保持データとカウンタがリセットされます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1065)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1069

基本命令
3.3 STL

WAIT: 遅延時間の設定

説明「遅延時間の設定」命令を使用して、指定された時間の間プログラム実行を一時停止します。この命令の WT パラメータにマイクロ秒単位で時間を指定します。
遅延時間は、-32768 から最大 32767 マイクロ秒 (μs)が設定可能です。設定可能な最短の遅延時間は CPU に依存し、この命令の実行時間に対応します。
この命令の実行は、さらに優先度の高いイベントによって割り込まれることがあり、エラー
情報を返しません。
注記
負の遅延時間負の遅延時間をパラメータ WT で指定すると、イネーブル出力 ENO または RLO および BR
ビットがシグナル状態 FALSE を返します。負の遅延時間は CPU に影響を及ぼしません。イ
ネーブル出力 ENO にリンクされた以下の命令は LAD または FBD で実行されません。

パラメータ
次の表に、「遅延時間の設定」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

WT

INT

I、Q、M、D、

遅延時間(μs)

Input

L、P、または定数

RUNTIME: プログラムランタイムの測定

説明「プログラムランタイムの測定」命令を使用して、プログラム全体、個々のブロック、またはコマンドシーケンスのランタイムを測定します。
プログラム全体のランタイムを測定する場合は、「プログラムランタイムの測定」命令をOB1 で呼び出します。最初の呼び出しでランタイムの測定が開始され、2 回目の呼び出し後

1070

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLに出力 RET_VAL がプログラムのランタイムを返します。測定されたランタイムには、たとえば上位レベルのイベントや通信による割り込みなど、プログラム実行中に発生する可能性のあるすべての CPU プロセスが含まれます。「プログラムランタイムの測定」命令はCPU の内部カウンタを読み取り、値を IN-OUT パラメータ MEM に書き込みます。この命令
は、内部カウンタ周波数に基づいて現在のプログラムランタイムを計算し、出力 RET_VALに書き込みます。
個々のブロック、または個々のコマンドシーケンスのランタイムを測定する場合、3 つの個別のネットワークが必要です。プログラム内の個々のネットワークで、「プログラムラ
ンタイムの測定」命令を呼び出します。命令のこの最初の呼び出しでランタイム測定の開始位置を設定します。その後、次のネットワーク内で目的のプログラムブロック、または
コマンドシーケンスを呼び出します。他のネットワーク内で、「プログラムランタイムの測定」命令の 2 回目の呼び出しを行い、命令の最初の呼び出しで行ったように同じメモリを
IN-OUT パラメータ MEM に割り当てます。3 番目のネットワークの「プログラムランタイ
ムの測定」命令は内部 CPU カウンタを読み取り、内部カウンタ周波数に基づいてプログ
ラムブロック、またはコマンドシーケンスの現在のランタイムを計算し、それを出力
RET_VAL に書き込みます。
注記
コマンドシーケンスのランタイムは、正確に測定することはできません。これは、コマン
ドシーケンス内の命令のシーケンスが、プログラムを最適にコンパイルする過程で変更されるためです。

パラメータ
次の表に、「プログラムランタイムの測定」命令のパラメータをリストします。
パラメータ 宣言

データタイプ

メモリ領域

RET_VAL

LREAL

I、Q、M、D、L 測定したランタイムを秒

Output

説明
単位で返します

MEM

InOut

LREAL

I、Q、M、D、L 内容は内部の目的のためだけです。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1071

基本命令
3.3 STL例
次の例で、命令がプログラムブロックのランタイム計算に基づいてどのように動作するかを
示します。
STL

説明

CALL RUNTIME// 命令が呼び出されます。

RET_VAL := "TagResult"// 中間結果

MEM := "TagMemory"// ランタイム測定の開始位置を保存する。

CALL "Best_before_date","Best_before_date_DB"// 「Best_before_date」ブロックが呼び出され、処理される。

CALL RUNTIME// 命令が再び呼び出されます。

RET_VAL := "TagResult"// 命令の結果

MEM := "TagMemory"// ランタイム測定の基準として、ランタイム測定の開始点を使用する。

この命令の最初の呼び出しでランタイムの測定が開始され、TagMemory オペランドでの命
令の 2 回目の呼び出しの参照先としてバッファリングされます。
「Best_before_date」プログラムブロック FB1 が呼び出されます。
プログラムブロック FB1 が処理されると、命令の 2 回目の実行が行われます。命令の 2 回
目の呼び出しにより、プログラムブロックのランタイムが計算され、結果が RET_VAL 出力の TagResult オペランドに書き込まれます。
プログラムの合計サイクルタイムを測定する方法の詳細な例については、Siemens Industry
Online Support を以下のエントリ ID で参照してください。87668055 (https://
support.industry.siemens.com/cs/ww/en/view/87668055)

3.3.9

ワード論理演算

3.3.9.1

DECO: デコード

説明
「デコード」命令は、入力値で指定されたビットを出力値にセットします。
「デコード」命令は、IN パラメータの値を読み取り、読み取った値とビット位置が一致する
OUT パラメータにそのビットをセットします。出力値の他のビットはゼロで埋められます。
IN パラメータの値が 31 よりも大きい場合、モジュロ 32 演算が実行されます。

1072

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「デコード」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

UINT

I、Q、M、D、設定される出力値のビッ

Input

L、P、または定 ト位置
数
OUT

Output

ビット列

I、Q、M、D、

出力値

L、P
OUT パラメータのデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL DECO// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := "Tag_Input"// 出力値にセットされるビットを指定する入力値

OUT := "Tag_Output"// 結果

次の表に、命令が特定の値を使用してどのように動作するかを示します。
7DJB,QSXW

7DJB2XWSXW 



 

この命令はオペランド「Tag_Input」の値からビット番号「3」を読み取り、3 番目のビットをオペランド「Tag_Output」の値にセットします。

3.3.9.2

ENCO: エンコード

説明「エンコード」命令を使用して、入力値の最下位ビットのビット番号を読み出し、それをパラメータ OUT に出力します。
「エンコード」命令は IN パラメータの値の最下位ビットを選択し、そのビット番号を OUT
パラメータのオペランドに書き込みます。IN パラメータに値 DW#16#00000001 またはDW#16#00000000 が含まれる場合、値「0」が OUT パラメータに出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1073

基本命令
3.3 STL

パラメータ
次の表に、「エンコード」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

ビット列

I、Q、M、D、

入力値

Input

L、P、または定数
OUT

Output

INT

I、Q、M、D、

出力値

L、P
IN パラメータのデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL ENCO// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

IN := "Tag_Input"// 最下位ビットの入力値が読み取られる。

OUT := "Tag_Output"// 最下位ビットのビット番号が入力値にセットされる。

次の表に、命令が特定の値を使用してどのように動作するかを示します。


 



ಯ7DJB,QSXWಯ  
ಯ7DJB2XWSXWಯ 

この命令は変数「Tag_Input」のセットされた最下位ビットを選択し、そのビット位置「3」を変数「Tag_Output」に書き込みます。

3.3.9.3

SEL: 選択説明
スイッチ(G 入力)に応じて、「選択」命令は、入力 IN0 または IN1 の 1 つを選択し、その内容を OUT 出力にコピーします。G 入力のシグナル状態が「0」の場合、IN0 入力の値が移動されます。入力 G のシグナル状態が「1」である場合、入力 IN1 の値が出力 OUT にコピーされます。
命令は、すべてのパラメータのタグが同じデータタイプの場合のみ実行されます。

1074

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「選択」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

G

BOOL

I、Q、M、D、

スイッチ

Input

L、または定数
IN0

Input

ビット列、整I、Q、M、D、最初の入力値

数、浮動小数点 L、P、または定数、タイマ、

数

CHAR、
WCHAR、TOD、LTOD、DATE、DT、LDT
IN1

Input

ビット列、整I、Q、M、D、

2 番目の入力値

数、浮動小数点 L、P、または定数、タイマ、

数

CHAR、
WCHAR、TOD、LTOD, DATE、DT、LDT
OUT

Output

ビット列、整I、Q、M、D、

結果

数、浮動小数点 L、P数、タイマ、
CHAR、
WCHAR、TOD、LTOD, DATE、DT、LDT
パラメータ INn および OUT のデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL SEL// 命令が呼び出されます。
// [???]ドロップダウンリストから必要なデータタイプを選択します。

G := "Tag_Input_G"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020// スイッチのシグナル状態

1075

基本命令
3.3 STL
STL

説明

IN0 := "Tag_Input0"// 最初の入力値

IN1 := "Tag_Input1"// 2 番目の入力値

OUT := "Tag_Output"// 選択した入力の値

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

G

Tag_Input_G

1

IN0

Tag_Input0

W#16#0000

IN1

Tag_Input1

W#16#FFFFOUT

Tag_Output

W#16#FFFF

3.3.10レガシー

3.3.10.1

DRUM:PLC 実行

説明「PLC の実装」命令を使用して、プログラムされた出力ビット(OUT1～ OUT16)および出力
ワード(OUT_WORD)に関連するステップの OUT_VAL パラメータのプログラム値を割り当てます。そのため、この命令が特定のステップに留まっている間は、このステップは
S_MASK パラメータでプログラムされた許可マスクの条件を満たす必要があります。この
ステップのイベントが真(TRUE)になっていて現在のステップのプログラムされた時間が経過した場合、または JOG パラメータの値が「0」から「1」に切り替わった場合、この命令は次のステップに進みます。RESET パラメータのシグナル状態が「1」に切り替わると、この命令はリセットされます。これによって、プリセットされたステップ(DSP)と現在のステップが等しくなります。
このステップで消費された時間の量は、プリセットタイムベース(DTBP)と各ステップのプ
リセットカウンタ値(S_PRESET)の積によって計算されます。新しいステップの開始時に、この計算値が DCC パラメータにロードされます。このパラメータには、現在のステップの残り時間が含まれています。たとえば、DTBP パラメータの値が「2」で、最初のステップのプリセット値が「100」(100 ミリ秒)の場合、DCC パラメータの値は「200」(200 ミリ秒)になります。
ステップは、タイマ値、イベント、またはその両方を使用してプログラム可能です。イベ
ントビットおよびタイマ値「0」を持つステップは、イベントビットのシグナル状態が「1」になると直ちに次のステップに進みます。タイマ値のみによってプログラムされたステッ

1076

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
プは時間を直ちに開始します。「0」よりも大きなイベントビットおよび時間値を使用してプログラムされたステップは、イベントビットのシグナル状態が「1」になると時間を開始します。イベントビットは、シグナル状態「1」で初期化されます。
プログラムされた最後のステップ(LST_STEP)の実行中にこのステップに割り当てられた時間が経過した場合、Q パラメータのシグナル状態は「1」にセットされ、それ以外の場合は「0」にセットされます。Q パラメータがセットされると、この命令はリセットされるまで
このステップに留まります。
設定可能なマスク(S_MASK)で、出力ワード(OUT_WORD)の個々のビットを選択し、出力値(OUT_VAL)によって出力ビット(OUT1～OUT16)をセットまたはリセットできます。設定可
能なマスクのビットのシグナル状態が「1」の場合、OUT_VAL 値は対応するビットをセッ
ト/リセットします。設定可能なマスクビットのシグナル状態が「0」の場合、対応するビットは変更されません。16 のステップすべてに設定可能なマスクのすべてのビットは、シグナル状態「1」で初期化されます。
OUT1 パラメータの出力ビットは、出力ワード(OUT_WORD)の最下位ビットに対応します。
OUT16 パラメータの出力ビットは、出力ワード(OUT_WORD)の最上位ビットに対応します。

パラメータ
次の表に、「PLC 実装」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

RESET

BOOL

I、Q、M、D、シグナル状態「1」は、L、または定数リセット条件を示します。

I、Q、M、D、シグナル状態が「0」かL、または定数

ら「1」に切り替わる

JOG

Input
Input

BOOL

と、命令が次のステップに進みます。
DRUM_EN

Input

BOOL

I、Q、M、D、シグナル状態が「1」にL、または定数

なると、PLC はイベント
および時間条件に基づいて進むことができます。

LST_STEP

Input

BYTE

I、Q、M、D、

最大ステップ番号

L、または定数(例:LST_STEP = 16#08; 最大 8 つのステップが可能です。)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1077

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

説明

EVENT(i),BOOL

I、Q、M、D、

イベントビット(i);L、または定数初期シグナル状態はInput

1 ≤ i ≤ 16

「1」。
OUT(j),

Output

BOOL

I、Q、M、D、L 出力ビット(j)Output

BOOL

I、Q、M、D、L シグナル状態「1」は、

1 ≤ j ≤ 16
Q

最後のステップに割り当てられた時間が経過したことを示します。
OUT_WORD Output
ERR_CODE

Output

WORD
WORD

I、Q、M、D、PLC が出力値を書き込む

L、P

ワードアドレス。

I、Q、M、D、

エラー情報

L、P
JOG_HISEOD

StaticStaticBOOL
BOOL

I、Q、M、D、JOG パラメータの履歴ビ

L、または定数ット

I、Q、M、D、シグナル状態「1」は、L、または定数

最後のステップに割り当てられた時間が経過したことを示します。

DSP

StaticBYTE

I、Q、M、D、PLC のプリセットされた

L、P、または定 最初のステップ(1～16)
数
DSC

StaticBYTE

I、Q、M、D、PLC の現在のステップ

L、P、または定
数
DCC

Static

DWORD

I、Q、M、D、

現在のステップの残り処

L、P、または定 理時間
数
DTBP

Static

WORD

I、Q、M、D、PLC のプリセットタイム

L、P、または定 ベース
数
PrevTime

1078

Static

TIME

I、Q、M、D、

前回の呼び出しのシステ

L、または定数

ム時刻

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ 宣言

データタイプ

S_PRESETARRAY[1..16] of I、Q、M、D、

1 クロックパルス = 1 ミ

WORD

リ秒の場合の各ステップ

Static

メモリ領域
L、または定数説明[1～16]のプリセットされたカウンタ値。
OUT_VAL
S_MASK

StaticStaticARRAY[1..16,

I、Q、M、D、各ステップの出力値[1～0..15] of BOOL

L、または定数16, 0～15]。

ARRAY[1..16,

I、Q、M、D、各ステップの設定可能な

0..15] of BOOL

L、または定数

マスク[1～16, 0～15]。
初期シグナル状態は「1」。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
ERR_COD 説明
E*
W#16#00 エラーは発生していません。
00
W#16#00 LST_STEP パラメータの値が 1 未満であるか、または 16 を超えています。
0B
W#16#00 DSC パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を0C

超えています。

W#16#00 DSP パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を超0Dえています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で命令はステップ 1 からステップ 2 に進みます。出力ビット(OUT1～OUT16)および
出力ワード(OUT_WORD)はステップ 2 に構成されたマスクおよび OUT_VAL パラメータの値によってセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1079

基本命令
3.3 STLSTL説明CALL DRUM, "DRUM_DB"// 「PLC の実装」命令が呼び出され、インスタンスデータブロック「DRUM_DB」が作成される。

RESET := "Tag_Reset"// リセット入力

JOG := "Tag_Input_Jog"// 信号立ち上がりエッジで命令は次のステップに進む。

DRUM_EN := "Tag_Input_DrumEN" // シグナル状態が「1」になると、PLC はイベントおよび時間条件に基づいて進むことができます。

1080

LST_STEP :="Tag_Number_LastStep"// プログラムされた最後のステップの番号

EVENT1 := "MyTag_Event_1"// イベントビット 1

EVENT2 := "MyTag_Event_2"// イベントビット 2

EVENT3 := "MyTag_Event_3"// イベントビット 3

EVENT4 := "MyTag_Event_4"// イベントビット 4

EVENT5 := "MyTag_Event_5"// イベントビット 5

EVENT6 := "MyTag_Event_6"// イベントビット 6

EVENT7 := "MyTag_Event_7"// イベントビット 7

EVENT8 := "MyTag_Event_8"// イベントビット 8

EVENT9 := "MyTag_Event_9"// イベントビット 9

EVENT10 := "MyTag_Event_10"// イベントビット 10

EVENT11 := "MyTag_Event_11"// イベントビット 11

EVENT12 := "MyTag_Event_12"// イベントビット 12

EVENT13 := "MyTag_Event_13"// イベントビット 13

EVENT14 := "MyTag_Event_14"// イベントビット 14

EVENT15 := "MyTag_Event_15"// イベントビット 15

EVENT16 := "MyTag_Event_16"// イベントビット 16

OUT1 := "MyTag_Output_1"// 出力ビット 1

OUT2 := "MyTag_Output_2"// 出力ビット 2

OUT3 := "MyTag_Output_3"// 出力ビット 3

OUT4 := "MyTag_Output_4"// 出力ビット 4

OUT5 := "MyTag_Output_5"// 出力ビット 5

OUT6 := "MyTag_Output_6"// 出力ビット 6

OUT7 := "MyTag_Output_7"// 出力ビット 7

OUT8 := "MyTag_Output_8"// 出力ビット 8

OUT9 := "MyTag_Output_9"// 出力ビット 9

OUT10 := "MyTag_Output_10"// 出力ビット 10

OUT11 := "MyTag_Output_11"// 出力ビット 11

OUT12 := "MyTag_Output_12"// 出力ビット 12

OUT13 := "MyTag_Output_13"// 出力ビット 13

OUT14 := "MyTag_Output_14"// 出力ビット 14

OUT15 := "MyTag_Output_15"// 出力ビット 15

OUT16 := "MyTag_Output_16"// 出力ビット 16

Q := "Tag_Output_Q"// シグナル状態「1」は、最後のステップの時間が経過したことを示します。

OUT_WORD := "Tag_OutputWord"// PLC が出力値を書き込むワードアドレス

ERR_CODE := "Tag_ErrorCode"// エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータの初期化には以下の値が使用されます。
パラメータ

オペランド

アドレス

値

RESET

Tag_Reset

M0.0

FALSE

JOG

Tag_Input_JOG

M0.1

FALSE

DRUM_EN

Tag_Input_DrumEN

M0.2

TRUE

LST_STEP

Tag_Number_LastSt

MB1

B#16#08

ep
EVENT2MyTag_Event_2

M20.0

FALSE

EVENT4MyTag_Event_4

M20.1

FALSE

EVENT6MyTag_Event_6

M20.2

FALSE

EVENT8MyTag_Event_8

M20.3

FALSE

EVENT10MyTag_Event_10

M20.4

FALSE

EVENT12MyTag_Event_12

M20.5

FALSE

EVENT14MyTag_Event_14

M20.6

FALSE

EVENT16MyTag_Event_16

M20.7

FALSE

以下の値が命令の「DRUM_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

DSP

DBB13

W#16#0001

DSC

DBB14

W#16#0001

DCC

DBD16

DW#16#0000000A

DTBP

DBW20

W#16#0001

S_PRESET[1]DBW26

W#16#0064

S_PRESET[2]DBW28

W#16#00C8

OUT_VAL[1,0]DBX58.0

TRUE

OUT_VAL[1,1]

DBX58.1

TRUE

OUT_VAL[1,2]

DBX58.2

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1081

基本命令
3.3 STL

1082

パラメータ

アドレス

値

OUT_VAL[1,3]

DBX58.3

TRUE

OUT_VAL[1,4]DBX58.4

TRUE

OUT_VAL[1,5]DBX58.5

TRUE

OUT_VAL[1,6]

DBX58.6

TRUE

OUT_VAL[1,7]

DBX58.7

TRUE

OUT_VAL[1,8]DBX59.0

TRUE

OUT_VAL[1,9]DBX59.1

TRUE

OUT_VAL[1,10]

DBX59.2

TRUE

OUT_VAL[1,11]

DBX59.3

TRUE

OUT_VAL[1,12]

DBX59.4

TRUE

OUT_VAL[1,13]

DBX59.5

TRUE

OUT_VAL[1,14]

DBX59.6

TRUE

OUT_VAL[1,15]

DBX59.7

TRUE

OUT_VAL[2,0]DBX60.0

FALSE

OUT_VAL[2,1]

DBX60.1

FALSE

OUT_VAL[2,2]

DBX60.2

FALSE

OUT_VAL[2,3]

DBX60.3

FALSE

OUT_VAL[2,4]

DBX60.4

FALSE

OUT_VAL[2,5]

DBX60.5

FALSE

OUT_VAL[2,6]

DBX60.6

FALSE

OUT_VAL[2,7]

DBX60.7

FALSE

OUT_VAL[2,8]DBX61.0

FALSE

OUT_VAL[2,9]DBX61.1

FALSE

OUT_VAL[2,10]

DBX61.2

FALSE

OUT_VAL[2,11]

DBX61.3

FALSE

OUT_VAL[2,12]

DBX61.4

FALSE

OUT_VAL[2,13]

DBX61.5

FALSE

OUT_VAL[2,14]

DBX61.6

FALSE

OUT_VAL[2,15]

DBX61.7

FALSE

S_MASK[2,0]DBX92.0

FALSE

S_MASK[2,1]

DBX92.1

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ

アドレス

値

S_MASK[2,2]

DBX92.2

TRUE

S_MASK[2,3]

DBX92.3

TRUE

S_MASK[2,4]DBX92.4

TRUE

S_MASK[2,5]DBX92.5

FALSE

S_MASK[2,6]

DBX92.6

TRUE

S_MASK[2,7]

DBX92.7

TRUE

S_MASK[2,8]DBX93.0

FALSE

S_MASK[2,9]DBX93.1

FALSE

S_MASK[2,10]

DBX93.2

TRUE

S_MASK[2,11]

DBX93.3

TRUE

S_MASK[2,12]

DBX93.4

TRUE

S_MASK[2,13]

DBX93.5

TRUE

S_MASK[2,14]

DBX93.6

FALSE

S_MASK[2,15]

DBX93.7

TRUE

出力パラメータは、命令の実行前に以下の値にセットされます。
パラメータ

オペランド

アドレス

値

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#FFFFOUT1MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

TRUE

OUT3

MyTag_Output_3

M4.2

TRUE

OUT4

MyTag_Output_4

M4.3

TRUE

OUT5

MyTag_Output_5

M4.4

TRUE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

TRUE

OUT8

MyTag_Output_8

M4.7

TRUE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

TRUE

OUT12

MyTag_Output_12

M5.3

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1083

基本命令
3.3 STL
パラメータ

オペランド

アドレス

値

OUT13

MyTag_Output_13

M5.4

TRUE

OUT14

MyTag_Output_14

M5.5

TRUE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

TRUE

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。

1084

パラメータ

オペランド

アドレス

値

OUT1

MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

FALSE

OUT3

MyTag_Output_3

M4.2

FALSE

OUT4

MyTag_Output_4

M4.3

FALSE

OUT5

MyTag_Output_5

M4.4

FALSE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

FALSE

OUT8

MyTag_Output_8

M4.7

FALSE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

FALSE

OUT12

MyTag_Output_12

M5.3

FALSE

OUT13

MyTag_Output_13

M5.4

FALSE

OUT14

MyTag_Output_14

M5.5

FALSE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

FALSE

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#4321

ERR_CODE

Tag_ErrorCode

MW10

W#16#0000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
命令の実行後、以下の値が命令のインスタンスデータブロック「DRUM_DB」で変更されます。

3.3.10.2

パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

DSC

DBB14

W#16#0002

DCC

DBD16

DW#16#000000C8

DCAT:ディスクリート制御タイマアラーム

説明「ディスクリート制御タイマアラーム」を使用して、CMD パラメータが開くまたは閉じる
ためのコマンドを発行した時点からの時間をカウントします。時間は、指定した時間内でプリセット時間(PT)を超えるか、またはデバイスの開閉に関する情報を受信するまで蓄積します(O_FB または C_FB)。デバイスの開閉に関する情報を受信する前にプリセット済み
時間が経過すると、対応するアラームが有効になります。プリセット済み時間の前にコマ
ンド入力のシグナル状態が切り替わると、この時間経過が再開します。
「ディスクリート制御タイマアラーム」命令は、入力条件に対して以下のような影響があります。
• CMD パラメータのシグナル状態が「0」から「1」に切り替わると、Q、CMD_HIS、ET(ET が PT 未満の場合のみ)、OA、および CA パラメータのシグナル状態が以下のように影響を受けます。
– Q および CMD_HIS パラメータが「1」にセットされます。
– ET、OA および CA パラメータが「0」にリセットされます。
• CMD パラメータのシグナル状態が「1」から「0」に切り替わると、Q、ET (ET が PT 未満の場合のみ)、OA、CA、および CMD_HIS パラメータが「0」にリセットされます。
• CMD および CMD_HIS パラメータのシグナル状態が「1」で、パラメータ O_FB が「0」にセットされると、命令が最後に実行されてからの時間差(ms)がパラメータ ET の値に加算されます。ET パラメータの値が PT パラメータの値を超えると、OA パラメータのシグナル状態が「1」にセットされます。ET パラメータの値が PT パラメータの値を超えなければ、OA パラメータのシグナル状態が「0」にリセットされます。CMD_HIS パ
ラメータの値が、CMD パラメータの値にリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1085

基本命令
3.3 STL• CMD、CMD_HIS、および O_FB パラメータのシグナル状態が「1」にセットされていて、C_FB パラメータの値が「0」の場合、OA パラメータのシグナル状態が「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。O_FB パ
ラメータのシグナル状態が「0」に切り替わると、命令の次回実行時にアラームがセッ
トされます。CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS および C_FB パラメータの値が「0」の場合、命令が最後に実行されてからの時間差(ms)が ET パラメータの値に加算されます。ET パラメータの値が PT パラ
メータの値を超えると、CA パラメータのシグナル状態が「1」にリセットされます。PT
パラメータの値を超えなければ、CA パラメータのシグナル状態は「0」です。CMD_HIS
パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS および O_FB パラメータのシグナル状態が「0」のときに C_FB パラメ
ータが「1」にセットされると、CA パラメータが「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。C_FB パラメータのシグナル状態「0」に切り替わると、命令が次回実行されるときにアラームがセットされます。
CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• O_FB および C_FB パラメータのシグナル状態が同時に「1」の場合、両方のアラーム出力のシグナル状態が「1」にセットされます。
「ディスクリート制御タイマアラーム」命令にエラー情報がありません。

パラメータ
次の表に、「ディスクリート制御タイマアラーム」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

CMD

Input

BOOL

I、Q、M、D、L、または シグナル状態「0」は、
定数「閉じる」コマンドを示します。
シグナル状態「1」は、「開く」コマンドを示し
ます。

O_FB

Input

BOOL

I、Q、M、D、L、または 開くときにフィードバッ
定数

C_FB
Q

Input
Output

BOOL
BOOL

ク入力

I、Q、M、D、L、または 閉じるときにフィードバ
定数

ック入力

I、Q、M、D、L

CMD パラメータのステータスを示します。

1086

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ

宣言

データタ
イプ

メモリ領域

説明

OA

Output

BOOL

I、Q、M、D、L

開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L

閉じるときにアラーム出力ET

StaticDINT

D、L、または定数1 カウント= 1 ms のときの現在の経過時間

PT

StaticDINT

D、L、または定数

プリセットタイマ値(1クロックパルス = 1 ミリ秒)

PREV_TIME

Static

DWORD

D、L、または定数

前のシステム時間

CMD_HIS

StaticBOOL

D、L、または定数

CMD の履歴ビット例
次の例では、パラメータ CMD が「0」から「1」に切り替わります。命令の実行後、パラメータ Q が「1」にセットされ、2 つのアラーム出力 OA および CA のシグナル状態は「0」になります。インスタンスデータブロックの CMD_HIS パラメータがシグナル状態「1」にセットされ、ET パラメータが「0」にリセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

STL

説明

CALL DCAT, "DCAT_DB"// 「ディスクリート制御タイマアラーム」命令が呼び出されインスタン
スデータブロック「DCAT_DB」が作成される。

CMD := "Tag_Input_CMD"// デバイスを開くまたは閉じる

O_FB := "Tag_Input_O_FB"// 開くときにフィードバック

C_FB := "Tag_Input_C_FB"// 閉じるときにフィードバック

Q := "Tag_Output_Q"// パラメータ CMD のステータスを示す。

OA := "Tag_Output_OA"// 開くときにアラーム出力

CA := "Tag_Output_CA"// 閉じるときにアラーム出力

次の表に、命令が特定の値を使用してどのように動作するかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1087

基本命令
3.3 STL

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

CMD

Tag_Input_CMD

TRUE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

Q

Tag_Output_Q

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#12

PT

DBD8

L#222

CMD_HIS

DBX16.0

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

Q

Tag_Output_Q

TRUE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。

1088

パラメータ

アドレス

値

ET

DBD4

L#0

CMD_HIS

DBX16.0

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.10.3

MCAT:モータ制御タイマアラーム

説明「モータ制御タイマアラーム」命令を使用して、コマンド入力(開または閉)のいずれかのスイッチがオンにされる時点から、時間を累積します。時間はプリセット済み時間が経過するまで、または関連のフィードバック入力が、デバイスが指定された時間内に要求された操作を実行したことを示す場合に蓄積されます。フィードバックが受信される前にプリセ
ット済み時間が経過すると、対応するアラームがトリガされます。

パラメータ
次の表に、「モータ制御タイマアラーム」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

O_CMD

BOOL

I、Q、M、D、[開]コマンド入力

Input

L、または定数
C_CMD

Input

BOOL

I、Q、M、D、[閉]コマンド入力

L、または定数
S_CMD

Input

BOOL

I、Q、M、D、[停止]コマンド入力

L、または定数
O_FB
C_FB

Input
Input

BOOL
BOOL

I、Q、M、D、開くときにフィードバッ

L、または定数ク入力

I、Q、M、D、閉じるときにフィードバ

L、または定数

ック入力

OO

Output

BOOL

I、Q、M、D、L [開]出力CO

Output

BOOL

I、Q、M、D、L [閉]出力

OA

Output

BOOL

I、Q、M、D、L 開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L 閉じるときにアラーム出力

Q

Output

BOOL

I、Q、M、D、L シグナル状態「0」は、エラー条件を示します。

ET

StaticDINT

D、L、または定 1 カウント= 1 ms のとき
数

PT

StaticDINT

D、L、または定 プリセットタイマ値(1 ク
数TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020の現在の経過時間
ロックパルス = 1 ミリ秒)

1089

基本命令
3.3 STL
パラメータ 宣言

データタイプ

メモリ領域

PREV_TIME

DWORD

D、L、または定 前のシステム時間

Static

説明

数
O_HIS

StaticBOOL

D、L、または定 [開]履歴ビット
数

C_HIS

StaticBOOL

D、L、または定 [閉]履歴ビット数「モータ制御タイマアラーム」命令の実行
次の表に、さまざまな入力条件に対する「モータ制御タイマアラーム」命令の応答を示します。
入力パラメータET

出力パラメータ

O_H C_H O_C C_C S_C

O_F C_F

OO

CO

OA

CA

IS

IS

MD

MD

MD

B

B

X

1

1

X

X

X

X

X

0

0

1

1

X

X

X

X

X

X

1

1

0

0

1

X

X

X

X

X

1

X

X

0

0

X

X

X

1

1

X

X

X

0

X

0

X

1

0

0

X

X

1

ET

O_H C_H Q

ステータ

IS

IS

ス

PT

0

0

0

アラーム

1

PT

0

0

0

アラーム

0

0

X

0

0

1

Stop (停止)

0

0

0

X

0

0

1

Stop (停止)

0

0

0

0

1

0

1

Start
opening
(開き始め
る)

<PT

1

0

X

0

0

0

X

1

0

0

0

INC

1

0

1

Open (開
く)

X

1

0

X

0

0

1

0

0

0

0

0

PT

1

0

1

Opened
(開いた)

>=P 1

0

X

0

0

0

X

0

0

1

0

PT

1

0

0

T

Opening
alarm (ア
ラームを
開いてい
る)

X

X

0

0

1

0

X

X

0

1

0

0

0

0

1

1

Start
closing (閉
じ始める)

1090

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
入力パラメータ<PT01

出力パラメータ
0

X

0

X

0

0

1

0

0

INC

0

1

1

Close (閉
じる)

X

0

1

0

X

0

0

1

0

0

0

0

PT

0

1

1

Closed (閉
じた)

>=P 0

1

0

X

0

X

0

0

0

0

1

PT

0

1

0

T

Closing
alarm (ア
ラームを
閉じてい
る)

X

0

0

0

0

0

X

X

0

0

0

0

X

0

0

1

Stopped
(停止)

凡例:
INC

FB から ET への最後に処理されてからの時間差(ms)を追加します。

PT

PT は ET と同じ値にセットされます。

X

使用不可

<PT

ET < PT>=PTET >= PT

入力パラメータ O_HIS および C_HIS のシグナル状態が両方とも「1」の場合、これらのパラメータのシグ
ナル状態が直ちに「0」にセットされます。この場合、上記の表の最後の行(X)が有効になります。入力パ
ラメータ O_HIS および C_HIS のシグナル状態が「1」であるかどうかをチェックすることができないため、
この場合の出力パラメータは以下のようにセットされます。
OO = FALSE
CO = FALSEOA = FALSE
CA = FALSEET = PT
Q = TRUE例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1091

基本命令
3.3 STLSTL説明CALL MCAT, "MCAT_DB"// 「モータ制御タイマアラーム」命令が呼び出されインスタンスデータ
ブロック「MCAT_DB」が作成される。

O_CMD := "Tag_Input_O_CMD"// [開]コマンド入力

C_CMD := "Tag_Input_C_CMD"// [閉]コマンド入力

S_CMD := "Tag_Input_S_CMD"// [停止]コマンド入力

O_FB := "Tag_Input_O_FB"// 開くときにフィードバック

C_FB := "Tag_Input_C_FB"// 閉じるときにフィードバック

OO := "Tag_OutputOpen"// [開]出力

CO := "Tag_OutputClosed"// [閉]出力

OA := "Tag_Output_OA"// 開くときにアラーム出力

CA := "Tag_Output_CA"// 閉じるときにアラーム出力

Q := "Tag_Output_Q"// エラー情報

次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

O_CMD

Tag_Input_O_CMD

TRUE

C_CMD

Tag_Input_C_CMD

FALSE

S_CMD

Tag_Input_S_CMD

FALSE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

OO

Tag_OutputOpen

FALSE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

FALSE

以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。

1092

パラメータ

アドレス

値

ET

DBD4

L#2

PT

DBD8

L#22

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ

アドレス

値

O_HIS

DBX16.0

TRUE

C_HIS

DBX16.1

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OO

Tag_OutputOpen

TRUE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

TRUE

以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。

3.3.10.4

パラメータ

アドレス

値

ET

DBD4

L#0

O_HIS

DBX16.0

TRUE

CMD_HIS

DBX16.1

FALSE

IMC:入力ビットをマスクビットと比較

説明「入力ビットをマスクビットと比較」命令を使用して、対応するマスクビットと最大 16 のプログラム済み入力ビット(IN_BIT0～IN_BIT15)のシグナル状態を比較できます。最大 16のマスクされたステップをプログラム可能です。IN_BIT0 パラメータの値が、マスク
CMP_VAL[x,0]の値と比較されます。「x」はステップ番号を示しています。CMP_STEP パラ
メータで、比較に使用するマスクのステップ番号を指定します。プログラムされた値は、すべて同じ方法で比較されます。プログラムされていない入力ビットやマスクビットは、
デフォルトのシグナル状態である FALSE になります。
比較で一致が検出されると、OUT パラメータのシグナル状態が「1」にセットされます。
それ以外の場合 OUT パラメータが「0」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1093

基本命令
3.3 STL
CMP_STEP パラメータの値が 15 よりも大きい場合、この命令は実行されません。
ERR_CODE パラメータでエラーメッセージが出力されます。

パラメータ
次の表に、
「入力ビットをマスクビットと比較」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

IN_BIT0

Input

BOOL

I、Q、M、D、

入力ビット 0 がマ

L、または定数

スクビット 0 と比較されます。

IN_BIT1

Input

BOOL

I、Q、M、D、

入力ビット 1 がマ

L、または定数

スクビット 1 と比較されます。

IN_BIT2

Input

BOOL

I、Q、M、D、

入力ビット 2 がマ

L、または定数

スクビット 2 と比較されます。

IN_BIT3

Input

BOOL

I、Q、M、D、

入力ビット 3 がマ

L、または定数

スクビット 3 と比較されます。

IN_BIT4

Input

BOOL

I、Q、M、D、

入力ビット 4 がマ

L、または定数

スクビット 4 と比較されます。

IN_BIT5

Input

BOOL

I、Q、M、D、

入力ビット 5 がマ

L、または定数

スクビット 5 と比較されます。

IN_BIT6

Input

BOOL

I、Q、M、D、

入力ビット 6 がマ

L、または定数

スクビット 6 と比較されます。

IN_BIT7

Input

BOOL

I、Q、M、D、

入力ビット 7 がマ

L、または定数

スクビット 7 と比較されます。

IN_BIT8

Input

BOOL

I、Q、M、D、

入力ビット 8 がマ

L、または定数

スクビット 8 と比較されます。

1094

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ

宣言

データタイ
プ

メモリ領域

説明

IN_BIT9

Input

BOOL

I、Q、M、D、

入力ビット 9 がマ

L、または定数

スクビット 9 と比較されます。

IN_BIT10

Input

BOOL

I、Q、M、D、

入力ビット 10 がマ

L、または定数

スクビット 10 と比較されます。

IN_BIT11

Input

BOOL

I、Q、M、D、

入力ビット 11 がマ

L、または定数

スクビット 11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、

入力ビット 12 がマ

L、または定数

スクビット 12 と比較されます。

IN_BIT13

Input

BOOL

I、Q、M、D、

入力ビット 13 がマ

L、または定数

スクビット 13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、

入力ビット 14 がマ

L、または定数

スクビット 14 と比較されます。

IN_BIT15

Input

BOOL

I、Q、M、D、

入力ビット 15 がマ

L、または定数

スクビット 15 と比較されます。

CMP_STEP

Input

BYTE

I、Q、M、D、比較に使用されるマ

L、P、または定 スクのステップ番
数
OUT

Output

BOOL

号。

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1095

基本命令
3.3 STL
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ERR_CODE

Output

WORD

I、Q、M、D、

エラー情報

L、P
CMP_VAL

StaticARRAY OF

I、Q、M、D、

比較マスク[0～15,

WORD

L、または定数0～15]:インデックスの最初の番号はス
テップ番号で、2 番目の番号はマスクビ
ット番号です。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

000A

CMP_STEP パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
以下の例では、すべての 16 の入力ビットがステップ 2 のマスクと比較されます。入力ビットがステップ 2 のマスクに一致するため、OUT パラメータのシグナル状態は TRUE にセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

1096

STL

説明

CALL IMC, "IMC_DB"// 「入力ビットをマスクビットと比較」命令が呼び出されインスタンス
データブロック「IMC_DB」が作成される。

IN_BIT0 := "Tag_Input_BIT0"// 入力ビット 0

IN_BIT1 := "Tag_Input_BIT1"// 入力ビット 1

IN_BIT2 := "Tag_Input_BIT2"// 入力ビット 2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

IN_BIT3 := "Tag_Input_BIT3"// 入力ビット 3

IN_BIT4 := "Tag_Input_BIT4"// 入力ビット 4

IN_BIT5 := "Tag_Input_BIT5"// 入力ビット 5

IN_BIT6 := "Tag_Input_BIT6"// 入力ビット 6

IN_BIT7 := "Tag_Input_BIT7"// 入力ビット 7

IN_BIT8 := "Tag_Input_BIT8"// 入力ビット 8

IN_BIT9 := "Tag_Input_BIT9"// 入力ビット 9

IN_BIT10 := "Tag_Input_BIT10" // 入力ビット 10
IN_BIT11 := "Tag_Input_BIT11" // 入力ビット 11
IN_BIT12 := "Tag_Input_BIT12" // 入力ビット 12
IN_BIT13 := "Tag_Input_BIT13" // 入力ビット 13
IN_BIT14 := "Tag_Input_BIT14" // 入力ビット 14
IN_BIT15 := "Tag_Input_BIT15" // 入力ビット 15
CMP_STEP := "Tag_CMP_STEP"// マスクのステップ番号

OUT := "Tag_Output"// 一致が検出されたかどうかを示す

ERR_CODE := "Tag_ErrorCode"// エラー情報

次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

IN_BIT0

Tag_Input_BIT0

TRUE

IN_BIT1

Tag_Input_BIT1

TRUE

IN_BIT2

Tag_Input_BIT2

FALSE

IN_BIT3

Tag_Input_BIT3

TRUE

IN_BIT4

Tag_Input_BIT4

TRUE

IN_BIT5

Tag_Input_BIT5

FALSE

IN_BIT6

Tag_Input_BIT6

TRUE

IN_BIT7

Tag_Input_BIT7

TRUE

IN_BIT8

Tag_Input_BIT8

FALSE

IN_BIT9

Tag_Input_BIT9

TRUE

IN_BIT10

Tag_Input_BIT10

TRUE

IN_BIT11

Tag_Input_BIT11

FALSE

IN_BIT12

Tag_Input_BIT12TRUE

IN_BIT13

Tag_Input_BIT13

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1097

基本命令
3.3 STL
パラメータ

オペランド

値

IN_BIT14

Tag_Input_BIT14FALSE

IN_BIT15

Tag_Input_BIT15

TRUE

CMP_STEP

Tag_CMP_STEP

B#16#02OUT

Tag_Output

FALSE

ERR_CODE

Tag_ErrorCode

W#16#0000

ステップ 2 のマスクの以下の値が命令のインスタンスデータブロック「IMC_DB」に保存さ
れます。
パラメータ

アドレス

値

CMP_VAL [2,0]DBX12.0

TRUE

CMP_VAL [2,1]

DBX12.1

TRUE

CMP_VAL [2,2]

DBX12.2

FALSE

CMP_VAL [2,3]

DBX12.3

TRUE

CMP_VAL [2,4]

DBX12.4

TRUE

CMP_VAL [2,5]

DBX12.5

FALSE

CMP_VAL [2,6]

DBX12.6

TRUE

CMP_VAL [2,7]

DBX12.7

TRUE

CMP_VAL [2,8]DBX13.0

FALSE

CMP_VAL [2,0]DBX13.1

TRUE

CMP_VAL [2,10]

DBX13.2

TRUE

CMP_VAL [2,11]

DBX13.3

FALSE

CMP_VAL [2,12]

DBX13.4

TRUE

CMP_VAL [2,13]

DBX13.5

TRUE

CMP_VAL [2,14]

DBX13.6

FALSE

CMP_VAL [2,15]

DBX13.7

TRUE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。

1098

パラメータ

オペランド

値

OUT

Tag_Output

TRUE

ERR_CODE

Tag_ErrorCode

W#16#0000
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.10.5

SMC:スキャンマトリックスの比較

説明「スキャンマトリックスの比較」命令を使用して 16 のプログラム済み入力ビット(IN_BIT0～
IN_BIT15)のシグナル状態を各ステップの比較マスクの対応するビットと比較します。処理はステップ 1 から開始し、プログラムされた最後のステップ(LAST)まで、または一致が検出されるまで続行されます。IN_BIT0 パラメータの入力ビットが、マスク CMP_VAL[x,0]の値と比較されます。「x」はステップ番号を示しています。プログラムされた値は、すべて同じ方法で比較されます。一致が検出されると、OUT パラメータのシグナル状態が「1」にセットされ、一致するマスクのステップ番号が OUT_STEP パラメータに書き込まれます。
プログラムされていない入力ビットやマスクビットは、デフォルトのシグナル状態である
FALSE になります。複数のステップに一致するマスクが存在する場合、最初に検出されたマスクのみが OUT_STEP パラメータに示されます。一致が検出されないと、OUT パラメー
タのシグナル状態が「0」にセットされます。この場合、OUT_STEP パラメータの値は LAST
パラメータの値よりも「1」だけ大きくなります。

パラメータ
次の表に、「スキャンマトリックスの比較」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN_BIT0

Input

BOOL

I、Q、M、D、

入力ビット 0 がL、または定数

マスクビット 0と比較されます。

IN_BIT1

Input

BOOL

I、Q、M、D、

入力ビット 1 がL、または定数

マスクビット 1と比較されます。

IN_BIT2

Input

BOOL

I、Q、M、D、

入力ビット 2 がL、または定数

マスクビット 2と比較されます。

IN_BIT3

Input

BOOL

I、Q、M、D、

入力ビット 3 がL、または定数

マスクビット 3と比較されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1099

基本命令
3.3 STL
パラメータ

宣言

データタイプ

メモリ領域

説明

IN_BIT4

Input

BOOL

I、Q、M、D、

入力ビット 4 がL、または定数

マスクビット 4と比較されます。

IN_BIT5

Input

BOOL

I、Q、M、D、

入力ビット 5 がL、または定数

マスクビット 5と比較されます。

IN_BIT6

Input

BOOL

I、Q、M、D、

入力ビット 6 がL、または定数

マスクビット 6と比較されます。

IN_BIT7

Input

BOOL

I、Q、M、D、

入力ビット 7 がL、または定数

マスクビット 7と比較されます。

IN_BIT8

Input

BOOL

I、Q、M、D、

入力ビット 8 がL、または定数

マスクビット 8と比較されます。

IN_BIT9

Input

BOOL

I、Q、M、D、

入力ビット 9 がL、または定数

マスクビット 9と比較されます。

IN_BIT10

Input

BOOL

I、Q、M、D、

入力ビット 10

L、または定数がマスクビット
10 と比較されます。

IN_BIT11

Input

BOOL

I、Q、M、D、

入力ビット 11

L、または定数がマスクビット
11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、

入力ビット 12

L、または定数がマスクビット
12 と比較されます。

1100

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
パラメータ

宣言

データタイプ

メモリ領域

説明

IN_BIT13

Input

BOOL

I、Q、M、D、

入力ビット 13

L、または定数がマスクビット
13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、

入力ビット 14

L、または定数がマスクビット
14 と比較されます。

IN_BIT15

Input

BOOL

I、Q、M、D、

入力ビット 15

L、または定数がマスクビット
15 と比較されます。

OUT

Output

BOOL

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

ERR_CODE

Output

WORD

I、Q、M、D、

エラー情報

L、P
OUT_STEP

Output

BYTE

I、Q、M、D、一致するマスクL、Pを持つステップの番号が含まれているか、または一致が検出されない場合は、
LAST パラメー
タの値よりも「1」だけ大きい
ステップ番号が含まれています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1101

基本命令
3.3 STL
パラメータ

宣言

データタイプ

メモリ領域

説明

LAST

StaticBYTE

I、Q、M、D、一致するマスク

L、P、または定 をスキャンする
数

最後のステップのステップ番号を指定します。

CMP_VAL

StaticARRAY OF WORD I、Q、M、D、

比較マスク[0～L、または定数15, 0～15]:イン
デックスの最初の番号はステッ
プ番号で、2 番
目の番号はマス
クビット番号です。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

000E

LAST パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
この例で、すべての 16 個の入力ビットは一致が検出されるまでステップ 0～5 までのマスクと比較されます。ステップ 2 が入力ビットと一致したので、ステップ 0～2 のマスクのみがスキャンされました。
注記
静的なパラメータをデータブロックで初期化できます。

1102

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL説明CALL SMC, "SMC_DB"// 「スキャンマトリックスの比較」命令が呼び出されインスタンスデー
タブロック「SMC_DB」が作成される

IN_BIT0 := "Tag_Input_BIT0"// 入力ビット 0

IN_BIT1 := "Tag_Input_BIT1"// 入力ビット 1

IN_BIT2 := "Tag_Input_BIT2"// 入力ビット 2

IN_BIT3 := "Tag_Input_BIT3"// 入力ビット 3

IN_BIT4 := "Tag_Input_BIT4"// 入力ビット 4

IN_BIT5 := "Tag_Input_BIT5"// 入力ビット 5

IN_BIT6 := "Tag_Input_BIT6"// 入力ビット 6

IN_BIT7 := "Tag_Input_BIT7"// 入力ビット 7

IN_BIT8 := "Tag_Input_BIT8"// 入力ビット 8

IN_BIT9 := "Tag_Input_BIT9"// 入力ビット 9

IN_BIT10 := "Tag_Input_BIT10" // 入力ビット 10
IN_BIT11 := "Tag_Input_BIT11" // 入力ビット 11
IN_BIT12 := "Tag_Input_BIT12" // 入力ビット 12
IN_BIT13 := "Tag_Input_BIT13" // 入力ビット 13
IN_BIT14 := "Tag_Input_BIT14" // 入力ビット 14
IN_BIT15 := "Tag_Input_BIT15" // 入力ビット 15
OUT := "Tag_Output"// 一致が検出されたかどうかを示す

OUT_STEP := "Tag_Output_STEP" // 関連するマスクのステップ番号を含む
ERR_CODE := "Tag_ErrorCode"// エラー情報

次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

IN_BIT0

Tag_Input_BIT0

TRUE

IN_BIT1

Tag_Input_BIT1

TRUE

IN_BIT2

Tag_Input_BIT2

FALSE

IN_BIT3

Tag_Input_BIT3

TRUE

IN_BIT4

Tag_Input_BIT4

TRUE

IN_BIT5

Tag_Input_BIT5

FALSE

IN_BIT6

Tag_Input_BIT6

TRUE

IN_BIT7

Tag_Input_BIT7

TRUE

IN_BIT8

Tag_Input_BIT8

FALSE

IN_BIT9

Tag_Input_BIT9

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1103

基本命令
3.3 STL
パラメータ

オペランド

値

IN_BIT10

Tag_Input_BIT10

TRUE

IN_BIT11

Tag_Input_BIT11

FALSE

IN_BIT12

Tag_Input_BIT12TRUE

IN_BIT13

Tag_Input_BIT13

TRUE

IN_BIT14

Tag_Input_BIT14FALSE

IN_BIT15

Tag_Input_BIT15

TRUE

OUT

Tag_Output

FALSE

OUT_STEP

Tag_Output_STEP

B#16#00

ERR_CODE

Tag_ErrorCode

W#16#0000

ステップ 2 のマスクの以下の値が命令のインスタンスデータブロック「SMC_DB」に保存
されます。

1104

パラメータ

アドレス

値

CMP_VAL [2,0]DBX12.0

TRUE

CMP_VAL [2,1]

DBX12.1

TRUE

CMP_VAL [2,2]

DBX12.2

FALSE

CMP_VAL [2,3]

DBX12.3

TRUE

CMP_VAL [2,4]

DBX12.4

TRUE

CMP_VAL [2,5]

DBX12.5

FALSE

CMP_VAL [2,6]

DBX12.6

TRUE

CMP_VAL [2,7]

DBX12.7

TRUE

CMP_VAL [2,8]DBX13.0

FALSE

CMP_VAL [2,0]DBX13.1

TRUE

CMP_VAL [2,10]

DBX13.2

TRUE

CMP_VAL [2,11]

DBX13.3

FALSE

CMP_VAL [2,12]

DBX13.4

TRUE

CMP_VAL [2,13]

DBX13.5

TRUE

CMP_VAL [2,14]

DBX13.6

FALSE

CMP_VAL [2,15]

DBX13.7

TRUE

LAST

DB84

B#16#05

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。

3.3.10.6

パラメータ

オペランド

値

OUT

Tag_Output

TRUE

OUT_STEP

Tag_Output_STEP

B#16#02

ERR_CODE

Tag_ErrorCode

W#16#0000

LEAD_LAG:リード/ラグアルゴリズム

説明「リード/ラグアルゴリズム」命令を使用してアナログタグによってシグナルを処理できま
す。GAIN パラメータのゲイン値はゼロよりも大きくなければなりません。「リード/ラグ
アルゴリズム」命令の結果は、以下の等式を使用して計算されます。
287

/'B7,0(6$03/(B7/*B7,0(/'B7,0(,1*$,135(9B287*$,1/*B7,0(6$03/(B7/*B7,0(6$03/(B7/*B7,0(6$03/(B735(9B,1「リード/ラグアルゴリズム」命令は、処理を固定プログラムサイクルで行う場合のみ正しい
結果が得られます。LD_TIME、LG_TIME、および SAMPLE_T パラメータには同一のユニットを指定する必要があります。LG_TIME > 4 + SAMPLE_T の場合、この命令は以下の関数を実行します。
OUT = GAIN * ((1 + LD_TIME * s) / (1 + LG_TIME * s)) * IN
GAIN パラメータの値がゼロ以下の場合、計算は実行されず、ERR_CODE パラメータでエラー情報が出力されます。
「リード/ラグアルゴリズム」命令をダイナミックフィードフォワード制御でループと共に補償器として使用できます。この命令は、2 つの操作で構成されています。「Lead」操作はOUT 出力のフェーズをシフトして、出力が入力の前に来るようにします。一方「Lag」操作
は出力をシフトして、出力が入力の後になるようにします。「Lag」演算は積分に相当する
ため、ノイズサプレッサやローパスフィルタとして使用できます。「Lead」演算は微分と同等なため、ハイパスフィルタとして使用できます。これらの 2 つの命令(Lead およびLag)を併用すると、低周波域では出力フェーズが入力フェーズよりも遅れ、高周波域では
出力フェーズが入力フェーズに先行します。つまり「リード/ラグアルゴリズム」命令は帯域フィルタとして使用できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1105

基本命令
3.3 STL

パラメータ
次の表に、「リード/ラグアルゴリズム」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

REAL

I、Q、M、D、処理対象の現在

L、P、または定 のサンプル時間
数(サイクルタイム)の入力値SAMPLE_T

Input

INT

I、Q、M、D、

サンプル時間L、P、または定数
OUT

OutputREAL

I、Q、M、D、

命令の結果

L、P
ERR_CODE

Output

WORD

I、Q、M、D、

エラー情報

L、P
LD_TIME

Static

REAL

I、Q、M、D、

サンプル時間と

L、P、または定 しての同一ユニ
数

ット内のリード
タイム。

LG_TIME

Static

REAL

I、Q、M、D、

サンプル時間と

L、P、または定 しての同一ユニ
数

ット内のラグタイム。

GAIN

Static

REAL

I、Q、M、D、% / %で表される

L、P、または定 ゲイン(定常状態数時の出力の切り替えと入力の切り替えとの比率)。

PREV_IN

Static

REAL

I、Q、M、D、

前の入力

L、P、または定数
PREV_OUT

Static

REAL

I、Q、M、D、前の出力

L、P、または定
数1106

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

0009

GAIN パラメータの値がゼロ以下である。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

STL

説明

CALL LEAD_LAG, "LEAD_LAG_DB"// 「リード/ラグアルゴリズム」命令が呼び出されインスタンスデータ
ブロック「LEAD_LAG_DB」が作成される。

IN := "Tag_Input"// 処理対象の現在のサンプル時間(サイクルタイム)の入力値。

SAMPLE_T :="Tag_Input_SAMPE_T"// サンプル時間

OUT := "Tag_Output_Result"// 命令の結果

ERR_CODE := "Tag_ErrorCode"// エラー情報

次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

IN

Tag_Input

2.0

SAMPLE_T

Tag_InputSampleTime

10

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1107

基本命令
3.3 STL
以下の値が命令の「LEAD_LAG_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

LD_TIME

DBD12

2.0

LG_TIME

DBD16

2.0

GAIN

DBD20

1.0

PREV_IN

DBD24

6.0

PREV_OUT

DBD28

6.0

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OUT

Tag_Output_Result

2.0

以下の値が命令のインスタンスデータブロック「LEAD_LAD_DB」に保存されます。

3.3.10.7

パラメータ

オペランド

値

PREV_IN

DBD24

2.0

PREV_OUT

DBD28

2.0

SEG:7 セグメント表示のビットパターンの作成

説明「7 セグメント表示のビットパターンの作成」命令は、指定されたソースワード(IN)内の 16
進数の 4 桁を 1 つずつ 7 セグメント表示用の 4 つの同等のコードに変換し、それを出力(OUT)のダブルワードに書き込みます。
「7 セグメント表示のビットパターンの作成」は、いずれのエラー条件も認識しません。
入力の 16 進数値と出力のビットパターンの関係は以下のようになります。

1108

桁

‑gfedcba

表示0000

00111111

00001

00000110

10010

01011011

2

7 セグメント表示

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
0011

01001111

3

0100

01100110

4

0101

01101101

5

0110

01111101

6

0111

00000111

7

1000

01111111

8

1001

01100111

9

1010

01110111

A

1011

01111100B

110000111001

C

1101

01011110D

1110

01111001

E

1111

01110001

F

D
I

E
J

H

F
G

パラメータ
次の表に、「7 セグメント表示のビットパターンの作成」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

IN

WORD

I、Q、M、D、4 つの 16 進数

L、P、または定 のソースワー
OUT

OUT

DWORD

数

ド。

I、Q、M、D、

変換先の 4 バイ

L、P

トのビットパターン。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL SEG// 「7 セグメント表示のビットパターンの作成」命令が呼び出されます。

IN := "Tag_Input"// ソースワード

OUT := "Tag_Output"// 7 セグメント表示のビットパターン

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1109

基本命令
3.3 STL
次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

16 進数

2 進数

IN

Tag_Input

W#16#1234

0001 0010 0011 0100

OUT

Tag_Output

DW#16#065B4F66

00000110 01011011
01001111 01100110
表示:1234

3.3.10.8

BCDCPL:10 の補数の作成

説明「10 の補数の作成」命令を使用して、IN パラメータで指定された 7 桁の BCD 数の 10 の補数を作成します。この命令は、次の数式を使用して計算します。
10000000 (BCD として)
– 7 桁の BCD 数---------------------------------------10 の補数(BCD として)

パラメータ
次の表に、「10 の補数の作成」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

ビット列

I、Q、M、D、

7 桁の BCD 数

L、P、または定数
ERR_CODE

Output

DWORD

I、Q、M、D、

命令の結果

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

1110

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL BCDCPL// 命令が呼び出されます。

IN := "Tag_Input"// 7 桁の BCD 数

ERR_CODE := "Tag_Output"// 指定された BCD 数の 10 の補数

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値*

IN

Tag_Input

DW#16#01234567

ERR_CODE

Tag_Output

DW#16#08765433*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

3.3.10.9

BITSUM:セットビット数カウント

説明「セットビット数カウント」命令を使用して、シグナル状態「1」にセットされるオペラン
ドのビット数をカウントします。ビットをカウントするオペランドは、IN パラメータで指定されます。命令の結果は、RET_VAL パラメータに出力されます。

パラメータ
次の表に、「セットビット数カウント」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

DWORD

I、Q、M、D、

セットビット数

L、P、または定 をカウントする
RET_VAL

Output

INT

数

オペランド

I、Q、M、D、

セットビット数

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1111

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL BITSUM// 命令が呼び出されます。

IN := "Tag_Input"// セットビット数をカウントするオペランド。

RET_VAL := "Tag_Output"// オペランド「Tag_Input」のセットビット数。

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値*

IN

Tag_Input

DW#16#12345678

RET_VAL

Tag_Output

W#16#000D (13 ビット)

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

3.3.11

STL ニーモニック

3.3.11.1

ビット論理演算

A: AND 論理演算説明
「論理積演算」命令を使用してバイナリオペランドのシグナル状態が「1」であるかどうかを照会し、照会結果を論理演算の結果(RLO)のシグナル状態によって論理積演算します。これによって、照会結果はチェック済みオペランドのシグナル状態と同一になります。
リンクされたシグナル状態が両方とも「1」ならば、命令の実行後の RLO も「1」です。リ
ンクされたシグナル状態の 1 つが「0」ならば、命令の実行後の RLO は「0」です。
命令を連続して複数回使用すると共通論理演算の結果も「1」であるため、すべての照会
結果は「1」になるはずです。
さらに「論理積演算」命令を使用してステータスワードのシグナル状態も照会できます。
これを行うには、関連するステータスビット(==0、<>0、>0、<0、>=0、<=0、OV、OS、UO、BR)を命令のパラメータとして指定します。

1112

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「AND 演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、D、シグナル状態を問い合わ

L、T、C

せるオペランド。

例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

$ಯ7DJB,QSXWBಯ≰⚆䕅㏚$

ಯ7DJB,QSXWBಯ≰⚆䕅㏚

ಯ7DJB2XWSXWಯ≰⚆䕅㏚

D㘴䍈

D㘴䍈

ነኁወ

栘ሻቂኖኁአኞት䯉ሼ

AN: 否定 AND 論理演算

説明
「否定論理積演算」命令を使用してバイナリオペランドのシグナル状態が「0」であるかど
うかを照会し、照会結果を論理演算の結果(RLO)のシグナル状態によって論理積演算します。これによって、照会結果はチェック済みオペランドの否定されたシグナル状態になります。オペランドのシグナル状態が「0」の場合、照会結果は「1」です。オペランドのシグナル状態が「1」の場合、照会結果は「0」です。
命令の実行前に照会結果および RLO のシグナル状態が「1」の場合、命令の実行後 RLO は「1」です。
命令の実行前に照会結果または RLO のシグナル状態が「0」の場合、命令の実行後 RLO は「0」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1113

基本命令
3.3 STL
さらに「否定論理積演算」命令を使用してステータスワードのシグナル状態も照会できます。これを行うには、関連するステータスビット(==0、<>0、>0、<0、>=0、<=0、OV、OS、UO、BR)を命令のパラメータとして指定します。

パラメータ
次の表に、「否定論理積演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、D、シグナル状態を問い合わ

L、T、C

せるオペランド。

例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

$ಯ7DJB,QSXWBಯ≰⚆䕅㏚

$1

ಯ7DJB,QSXWBಯ≰⚆䕅㏚

ಯ7DJB2XWSXWಯ≰⚆䕅㏚

D㘴䍈

E㘴䍈

ነኁወ

O: OR 論理和演算

説明「論理和演算」命令を使用してバイナリオペランドのシグナル状態が「1」であるかどうかを照会し、照会結果を論理演算の結果(RLO)のシグナル状態によって論理和演算します。これによって、照会結果はチェック済みオペランドのシグナル状態と同一になります。
リンクされたシグナル状態の 1 つが「1」ならば、命令の実行後の RLO は「1」です。リ
ンクされた両方のシグナル状態が「0」ならば、命令の実行後の RLO は「0」です。
命令を連続して複数回使用すると共通論理演算の結果も「1」であるため、照会結果の 1
つが「1」になることが十分あります。

1114

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
さらに「論理和演算」命令を使用してステータスワードのシグナル状態も照会できます。
これを行うには、関連するステータスビット(==0、<>0、>0、<0、>=0、<=0、OV、OS、UO、BR)を命令のパラメータとして指定します。

パラメータ
次の表に、「OR 演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、D、シグナル状態を問い合わ

L、T、C

せるオペランド。

例
次の例で、命令がどのように動作するかを示します。

67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

2

Ā7DJB,QSXWBĀ2

Ā7DJB,QSXWBĀĀ7DJB2XWSXWĀ

≰⚆䕅㏚D㘴䍈ᇷ7DJB,QSXWBᇸ≰⚆䕅㏚≰⚆䕅㏚D㘴䍈ᇷ7DJB,QSXWBᇸነኁወ栘ሻቂኖኁአኞት䯉ሼ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1115

基本命令
3.3 STL

ON: 否定論理和演算

説明「否定論理和演算」命令を使用してバイナリオペランドのシグナル状態が「0」であるかど
うかを照会し、照会結果を論理演算の結果(RLO)のシグナル状態によって論理和演算します。これによって、照会結果はチェック済みオペランドの否定されたシグナル状態になります。オペランドのシグナル状態が「0」の場合、照会結果は「1」です。オペランドのシグナル状態が「1」の場合、照会結果は「0」です。
命令の実行前に照会結果または RLO のシグナル状態が「1」の場合、命令の実行後 RLO は「1」です。リンクされた両方のシグナル状態が「0」ならば、命令の実行後の RLO も「0」です。
命令を連続して複数回使用すると共通論理演算の結果も「1」であるため、照会結果の 1
つが「1」になることが十分あります。
さらに「否定論理和演算」命令を使用してステータスワードのシグナル状態も照会できます。これを行うには、関連するステータスビット(==0、<>0、>0、<0、>=0、<=0、OV、OS、UO、BR)を命令のパラメータとして指定します。

パラメータ
次の表に、「否定論理和演算」命令のパラメータを示します。

1116

パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、D、シグナル状態がチェック

L、T、C

されるオペランド

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

2

ಯ7DJB,QSXWBಯ≰⚆䕅㏚ካዙኻወኇዙኴ
ዐኇዐ ಯ7DJB,QSXWBಯ≰⚆䕅㏚ካዙኻወኌዊዙ
ኗ

ಯ7DJB2XWSXWಯ

≰⚆䕅㏚

ነኁወ

X: EXCLUSIVE OR 排他的論理和演算

説明「排他的論理和演算」命令を使用してバイナリオペランドのシグナル状態が「1」であるかどうかを照会し、照会結果を論理演算の結果(RLO)のシグナル状態によって排他的論理和演算します。これによって、照会結果はチェック済みオペランドのシグナル状態と同一になります。リンクされたシグナル状態が等しくなければ、命令の実行後 RLO は「1」です。
両方のシグナル状態が等しい場合、RLO は「0」です。
たとえば、命令の実行前 RLO が「1」で照会されたオペランドが「1」の場合、RLO が「0」にリセットされます。RLO が「1」かつオペランドのシグナル状態が「0」の場合、命令実
行後 RLO は「1」にセットされます。
命令を連続して複数回使用すると共通の RLO の結果も「1」であるため、照会結果の 1 つが「1」になることが十分あります。照会結果が「1」または「0」の場合、RLO が「0」にリセットされます。
さらに「排他的論理和演算」命令を使用して、ステータスワードのシグナル状態も照会できます。これを行うには、関連するステータスビット(==0、<>0、>0、<0、>=0、<=0、
OV、OS、UO、BR)を命令のパラメータとして指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1117

基本命令
3.3 STL

パラメータ
次の表に、「排他的論理和演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、D、シグナル状態を問い合わ

L、T、C

せるオペランド。

例
次の例で、命令がどのように動作するかを示します。

67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

;Ā7DJB,QSXWBĀ抲俰⏗;Ā7DJB,QSXWBĀ抲俰⏗Ā7DJB2XWSXWĀ

ነኁወ

XN: 否定排他的論理和演算

説明「否定排他的論理和演算」命令を使用してバイナリオペランドのシグナル状態が「0」であるかどうかを照会し、照会結果を論理演算の結果(RLO)のシグナル状態によって論理和演算
します。これによって、照会結果はチェック済みオペランドの否定されたシグナル状態になります。リンクされたシグナル状態が等しくなければ、命令の実行後 RLO は「1」です。
両方のシグナル状態が等しい場合、RLO は「0」です。

1118

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
たとえば、照会するオペランドのシグナル状態が「0」の場合、照会結果は「1」です。照会結果と RLO「1」を排他的論理和演算すると、シグナル状態は「0」となります。RLO「0」で論理演算すると、シグナル状態は「1」となります。
さらに「否定排他的論理和演算」命令を使用して、ステータスワードのシグナル状態も照会できます。これを行うには、関連するステータスビット(==0、<>0、>0、<0、>=0、<=0、
OV、OS、UO、BR)を命令のパラメータとして指定します。

パラメータ
次の表に、「否定排他的論理和演算」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、D、シグナル状態を問い合わ

L、T、C

せるオペランド。

例
次の例で、命令がどのように動作するかを示します。

67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

;Ā7DJB,QSXWBĀ

抲俰⏗

;1

Ā7DJB,QSXWBĀ抲俰⏗Ā7DJB2XWSXWĀነኁወ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1119

基本命令
3.3 STL

O: AND ファンクションの論理和演算

説明「AND ファンクションの論理和演算」命令を使用して、論理和演算の前に複数の論理積演算を実行します。論理積演算の全体の結果が一時的に保存され、以降の信号照会と論理和演算されます。

例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

$$ಯ7DJB,QSXWBಯಯ7DJB,QSXWBಯ

2$$

ಯ7DJB,QSXWBಯಯ7DJB,QSXWBಯ

2

ಯ7DJB,QSXWBಯಯ7DJB2XWSXWಯಯ7DJB,QSXWBಯಯ7DJB,QSXWBಯಯ7DJB,QSXWBಯಯ7DJB,QSXWBಯಯ7DJB,QSXWBಯಯ7DJB2XWSXWಯ

A(: 分岐付きの論理積演算

説明「分岐付きの論理積演算」命令を使用して、論理積演算の前に括弧で括られた式の命令を実行します。
命令実行時には、CPU は現在の論理演算結果(RLO)をバイナリ結果 BR とともに保存します。
保存された RLO は、求められたネストされた式の論理演算結果と論理積演算されます。ネスト化された式の後に追加の信号問い合わせが続く場合は、これも論理積が実行されます。
括弧内の式の中のさらに括弧に括られた式内に命令をプログラムすることで、括弧で括られた式をさらにネストすることが可能です。これによって、ネストレベルは 7 レベルに制約
されます。

1120

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

$2
2

Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀ$22

Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀ$Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀĀ7DJB,QSXWBĀĀ7DJB,QSXWBĀ Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀĀ7DJB2XWSXWĀ

Ā7DJB2XWSXWĀ

AN(: 分岐付きの否定論理積演算

説明「分岐付きの否定論理積演算」命令を使用して、論理積演算の前に括弧で括られた式の命令を実行し、求められた括弧で括られた式の結果を否定します。
命令実行時には、CPU は現在の論理演算結果(RLO)をバイナリ結果 BR とともに保存します。
括弧で括られた式内の命令が実行された後、求められた括弧で括られた式の RLO が否定され、保存されている RLO と論理積演算されます。括弧で括られた式の後に追加の信号問い合わせが続く場合は、これも論理積演算されます。
括弧内の式の中のさらに括弧に括られた式内に命令をプログラムすることで、括弧で括られた式をさらにネストすることが可能です。これによって、ネストレベルは 7 レベルに制約されます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

AN(

// ネスト化された式の開始// 括弧で括られた式の RLO を論理積演算し、求められた結果を否定する

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1121

基本命令
3.3 STLSTL

説明O "Tag_Input_1"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理和演算

O "Tag_Input_2"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理和演算)// ネスト化された式の終了

AN "Tag_Input_3"// オペランドのシグナル状態「0」を照会し、現在の RLO で論理積演算= "Tag_Output"// RLO のシグナル状態をオペランドに割り当て。

O(: 分岐付きの論理和演算

説明「分岐付きの論理和演算」命令を使用して、論理和演算の前に括弧で括られた式の命令を実行します。
命令実行時には、CPU は現在の論理演算結果(RLO)をバイナリ結果 BR とともに保存します。
括弧で括られた式内の命令が実行された後、保存されている RLO と求められた括弧で括られた式の RLO が論理和演算されます。括弧で括られた式の後に追加の信号問い合わせが続く場合は、これも論理和演算されます。
括弧内の式の中のさらに括弧に括られた式内に命令をプログラムすることで、括弧で括られた式をさらにネストすることが可能です。これによって、ネストレベルは 7 レベルに制約されます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input_1"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算O(// ネスト化された式の開始// ネストされた式の RLO を論理和演算

A "Tag_Input_2"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

A "Tag_Input_3"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算)// ネスト化された式の終了= "Tag_Output"// RLO のシグナル状態をオペランドに割り当て。

ON(: 否定論理和演算

説明「分岐付きの否定論理和演算」命令を使用して、論理和演算の前に括弧で括られた式の命令を実行し、求められた括弧で括られた式の結果を否定します。

1122

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
命令実行時には、CPU は現在の論理演算結果(RLO)をバイナリ結果 BR とともに保存します。
括弧で括られた式内の命令が実行された後、求められた括弧で括られた式の RLO が否定され、保存されている RLO と論理和演算されます。括弧で括られた式の後に追加の信号問い合わせが続く場合は、これも論理和演算されます。
括弧内の式の中のさらに括弧に括られた式内に命令をプログラムすることで、括弧で括られた式をさらにネストすることが可能です。これによって、ネストレベルは 7 レベルに制約されます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input_1"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算ON(// ネスト化された式の開始

A "Tag_Input_2"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

A "Tag_Input_3"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算)// ネスト化された式の終了= "Tag_Output"// RLO のシグナル状態をオペランドに割り当て。

// ネストされた式の RLO を論理和演算でリンクし、結果全体を否定する。

X(: 分岐付きの排他的論理和演算

説明「分岐付きの排他的論理和演算」命令を使用して、排他的論理和演算の前に括弧で括られた式の命令を実行します。
命令実行時には、CPU は現在の論理演算結果(RLO)をバイナリ結果 BR とともに保存します。
括弧で括られた式内の命令が実行された後、保存されている RLO と求められた括弧で括られた式の RLO が排他的論理和演算されます。括弧で括られた式の後に追加の信号問い合わ
せが続く場合は、これも排他的論理和演算されます。
括弧内の式の中のさらに括弧に括られた式内に命令をプログラムすることで、括弧で括られた式をさらにネストすることが可能です。これによって、ネストレベルは 7 レベルに制約されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1123

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

X(

// ネスト化された式の開始// ネストされた式の RLO を排他的論理和とリンク

A "Tag_Input_1"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

A "Tag_Input_2"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算)// ネスト化された式の終了

X "Tag_Input_3"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算= "Tag_Output"// RLO のシグナル状態をオペランドに割り当て。

XN(: 分岐付きの否定排他的論理和演算

説明「分岐付きの否定排他的論理和演算」命令を使用して、排他的論理和演算の前に括弧で括られた式の命令を実行し、求められた括弧で括られた式の結果を否定します。
命令実行時には、CPU は現在の論理演算結果(RLO)をバイナリ結果 BR とともに保存します。
括弧で括られた式内の命令が実行された後、求められた括弧で括られた式の RLO が否定され、保存されている RLO と排他的論理和演算されます。括弧で括られた式の後に追加の信号問い合わせが続く場合は、これも排他的論理和演算されます。
括弧内の式の中のさらに括弧に括られた式内に命令をプログラムすることで、括弧で括られた式をさらにネストすることが可能です。これによって、ネストレベルは 7 レベルに制約されます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

XN(

// ネスト化された式の開始// ネスト化された式の RLO を排他的論理和でリンクし、結果全体を否定

1124

A "Tag_Input_1"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

A "Tag_Input_2"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算)// ネスト化された式の終了

XN "Tag_Input_3"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算= "Tag_Output"// RLO のシグナル状態をオペランドに割り当て。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL): 分岐を閉じる

説明「分岐クローズ」命令を使用して、括弧で括られた式の終わりを指定します。この命令の処理後に、ネスト化された式の結果全体が、ネスト化された式を開くために使用した命令に従ってリンクされます。
ネスト化された式を開くには、次の命令を使用します。
• A(:分岐付きの AND 論理積演算• AN(:分岐付きの NAND 否定論理積演算• O(:分岐付きの OR 論理和演算• ON(:分岐付きの NOR 否定論理和演算• X(:分岐付きの EXCLUSIVE OR 排他的論理和演算• XN(:分岐付きの否定排他的論理和演算「分岐クローズ」命令の後に、CPU はバイナリ結果 BR を括弧で括られた式の前のシグナル状態に設定します。

例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂
ኮዌዙዉዙወ

$2
2

Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀ$22

Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀ$Ā7DJB,QSXWBĀĀ7DJB2XWSXWĀ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀĀ7DJB,QSXWBĀ Ā7DJB,QSXWBĀĀ7DJB,QSXWBĀĀ7DJB2XWSXWĀ

1125

基本命令
3.3 STL=: 割り当て説明「割り当て」命令を使用して、CPU に保存された論理演算の結果(RLO)のシグナル状態を指定したオペランドに割り当てます。RLO のシグナル状態が「1」の場合、オペランドはセッ
トされます。信号が「0」の場合、オペランドが「0」にリセットされます。

パラメータ
次の表に、「割り当て」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L 現在の RLO が割り当てられるオペランド。

例
次の例で、命令がどのように動作するかを示します。

67/ኴዊኍ዆ኽ

዇ዉዙ⥭恾⦂

$ኮዌዙዉዙወ

Ā7DJB,QSXWĀ
ಱ7DJB2XWSXWĀ

Ā7DJB,QSXWĀ

≰⚆䕅㏚⦂
Ā7DJB,QSXWĀ



Ā7DJB2XWSXWĀ




1126



Ā7DJB2XWSXWĀ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

R: リセット

説明「リセット」命令を使用して、指定したオペランドのシグナル状態を「0」にリセットします。
この命令は、論理演算の現在の結果(RLO)が「1」の場合にのみ実行されます。命令の実行後、指定したオペランドが「0」にリセットされます。現在の RLO が「0」の場合、指定されたオペランドのシグナル状態は変更されません。

パラメータ
次の表に、「リセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L RLO = 「1」の場合にリセットされるオペランド。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input_1"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

A "Tag_Input_2"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

R "Tag_Output"// RLO が「1」の場合、オペランドを「0」にリセット

S: セット説明「セット」命令を使用して、指定したオペランドのシグナル状態を「1」にセットします。
この命令は、論理演算の現在の結果(RLO)が「1」の場合にのみ実行されます。命令の実行後、指定されたオペランドは「1」にセットされます。現在の RLO が「0」の場合、指定されたオペランドのシグナル状態は変更されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1127

基本命令
3.3 STL

パラメータ
次の表に、「セット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L RLO = 「1」の場合セットされるオペランド。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input_1"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

A "Tag_Input_2"// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

S "Tag_Output"// RLO が「1」の場合、オペランドを「1」にセット

NOT: RLO の反転

説明「RLO の反転」命令を使って、論理演算の結果(RLO)のシグナル状態を反転します。「RLO の反転」命令は、論理演算内を含む任意の場所で使用できます。

例
次の例で、命令がどのように動作するかを示します。

1128

STL

説明

A "Tag_Input_1"// オペランド「Tag_Input_1」のシグナル状態「1」を照会し、現在のRLO で論理積演算。

A "Tag_Input_2"// オペランド「Tag_Input_2」のシグナル状態「1」を照会し、現在のRLO で論理積演算。

A "Tag_Input_3"// オペランド「Tag_Input_3」のシグナル状態「1」を照会し、現在のRLO で論理積演算。

NOT// RLO のシグナル状態を反転= "Tag_Output"// RLO のシグナル状態をオペランド「Tag_Output」に割り当て。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Input_1

1

1

1

0

0

0

1

0

Tag_Input_2

0

1

1

0

1

1

0

1

Tag_Input_3

0

0

1

0

0

1

1

1

Tag_Output

1

1

0

1

1

1

1

1

SET: RLO を「1」にセット

説明「RLO を 1 にセット」命令を使用して、現在の演算結果(RLO)をシグナル状態「1」にセットします。

例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

≰⚆䕅㏚嵥䚕䆣並俟㨫 5/2


6(7ಯ7DJB2XWSXWBಯಯ7DJB2XWSXWBಯಯ7DJB2XWSXWBಯ






&/5

ಯ7DJB2XWSXWBಯಯ7DJB2XWSXWBಯ

CLR: RLO を「0」にリセット

説明「RLO を 0 にリセット」命令を使用して、現在の演算結果(RLO)をシグナル状態「0」にセットします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1129

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

≰⚆䕅㏚嵥䚕䆣並俟㨫 5/2


6(7ಯ7DJB2XWSXWBಯಯ7DJB2XWSXWBಯಯ7DJB2XWSXWBಯ






&/5

ಯ7DJB2XWSXWBಯಯ7DJB2XWSXWBಯ

SAVE: BR ビットに RLO を保存

説明「BR ビットに RLO を保存」命令を使用し、論理演算の結果(RLO)をバイナリ結果(BR)に保存します。実行時、この命令は現在の論理演算の結果のシグナル状態をステータスビット BRに転送します。この命令は条件に依存せずに実行され、他のいずれのステータスビットにも影響しません。
注記「BR ビットに RLO を保存」命令が実行された後、BR ビットは同じまたは下位レベルのブ
ロックにある以下の命令によって再び変更することができます。
「BR ビットに RLO を保存」命令を使用して、ブロックの実行ステータスをチェックします。
たとえばブロックの最後に「BR ビットに RLO を保存」命令を使用すると、BR ビットがブロックの現在の論理演算の結果のシグナル状態に設定されます。
BR ビットは、ブロック呼び出しに EN/ENO メカニズムを実装することに役立ちます。このトピックの詳細については、「関連項目」を参照してください。

1130

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input"// オペランド「Tag_Input」のシグナル状態「1」で照会。

SAVE// RLO のシグナル状態を BR ビットに転送。

BEC// RLO が「1」の場合、ブロック終了。

FN: 立ち下がりエッジの RLO スキャン

説明
「立ち下がりエッジの RLO スキャン」命令を使用して、論理演算の結果(RLO)のシグナル状
態に「1」から「0」への切り替えが存在するかどうかを照会します。この命令は、RLO の現在のシグナル状態と、エッジメモリビット(<Operand>)に保存された前に照会されたシ
グナル状態を比較します。命令が RLO の「1」から「0」への切り替えを検出すると、信号立ち下がりエッジが存在します。
次の図は、信号立ち下がりエッジまたは信号立ち上がりエッジの場合の RLO の切り替えを示しています。
≰⚆䵚ቄₙሯቭኅአን

≰⚆䵚ቄₚሯቭኅአን

>5/2@



ኜኁኻ

命令が実行されるたびに信号立ち下がりエッジが照会されます。信号立ち下がりエッジが検出されると、エッジ評価後の 1 回のプログラムサイクルの長さの間、RLO がシグナル状
態「1」にセットされます。それ以外のすべての場合、RLO のシグナル状態は「0」です。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1131

基本命令
3.3 STL

パラメータ
次の表に、「立ち下がりエッジの RLO スキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L 以前の照会の RLO が保存されているエッジメモリ
ビット。

例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

≰⚆䕅㏚⦂

ಯ7DJB,QSXWಯಯ7DJB,QSXWಯ

)1 ಯ7DJB(GJHಯಯ7DJB(GJHಯಯ7DJB2XWSXWಯ$

ಯ7DJB2XWSXWಯ
2%ቑኒኁኌወ㟿



















FP: 立ち上がりエッジの RLO スキャン

説明
「立ち上がりエッジの RLO スキャン」命令を使用して、論理演算の結果(RLO)のシグナル状
態に「0」から「1」への切り替えが存在するかどうかを照会します。この命令は、RLO の現在のシグナル状態と、エッジメモリビット(<Operand>)に保存された前に照会されたシ
グナル状態を比較します。命令が RLO の「0」から「1」への切り替えを検出すると、信号立ち上がりエッジが存在します。
次の図は、信号立ち下がりエッジまたは信号立ち上がりエッジの場合の RLO の切り替えを示しています。

1132

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL≰⚆䵚ቄₙሯቭኅአን

≰⚆䵚ቄₚሯቭኅአን

>5/2@



ኜኁኻ

命令が実行されるたびに、信号立ち上がりエッジが照会されます。信号立ち上がりエッジが検出されると、エッジ評価後の 1 回のプログラムサイクルの長さの間、RLO がシグナル状
態「1」にセットされます。それ以外のすべての場合、RLO のシグナル状態は「0」です。
注記
エッジメモリビットのアドレスの変更
プログラム内でエッジメモリビットのアドレスを複数回使用しないでください。複数回使用した場合、ビットメモリが上書きされます。このステップを実行するとエッジ評価に影響を与え、結果はもう固有ではありません。エッジメモリビットのメモリ領域は、DB (FB の静的領域)またはビットメモリ領域にあることが必要です。

パラメータ
次の表に、「立ち上がりエッジの RLO スキャン」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L 以前の照会の RLO が保存されているエッジメモリ
ビット。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1133

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
67/ኴዊኍ዆ኽ

≰⚆䕅㏚⦂

ಯ7DJB,QSXWಯಯ7DJB,QSXWಯ

)3 ಯ7DJB(GJHಯಯ7DJB(GJHಯಯ7DJB2XWSXWಯ$

ಯ7DJB2XWSXWಯ
2%ቑኒኁኌወ㟿

3.3.11.2



















タイマの動作

FR: タイマの有効化

説明「タイマの有効化」命令を使用し、タイマを再開します。この命令は立ち上がりエッジによって実行され、タイマの開始のため内部エッジトリガフラグをリセットします。命令の実行中タイマを論理演算の結果「1」によって開始するため、タイマは開始命令前に信号の立ち上がりエッジが存在しなくても再起動します。開始命令前に論理演算の結果が「0」の場合、内部エッジトリガフラグをリセットしてもタイマに影響しません。
命令の前に論理演算の結果が「0」に切り替わると、「タイマの有効化」命令はタイマの再起動後に影響しません。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

1134

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「タイマの有効化」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

有効になったタイマ

Input

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_EnableInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

FR "MyTimer"// 信号エッジが立ち上がりの場合、タイマの有効化。

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

L S5T#10s// 持続時間のロード(10 秒)

SP "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがある場合、およびオペ
ランド「Tag_StartInput」のシグナル状態が「1」の場合、パルスタイ
マを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセット

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

下記も参照
L: タイマ値のロード (ページ 1135)

L: タイマ値のロード

説明「タイマ値のロード」命令を使用して、指定されたタイマのタイマ値をアキュムレータ 1 にロードします。デュアルコーディングされたタイマ値はタイムベースなしにロードされます。タイムベースの代わりにアキュムレータ 1 にゼロが書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1135

基本命令
3.3 STL
ロード後、アキュムレータ 1 の値はデータタイプ INT の正の数に対応します。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
次の図に、時間値がアキュムレータにロードされる方法の例を示します。

ኾ኿዇␔ቑኜኁኻ7ቑ
ኜኁኻዌዙኦ

   ኜኁኽ኶ዙኖ ኼ዇䱡 ኼ዇䱡 䱡 䱡✌ⅳ /7 ㈛ቑ
ቿኊዂኽዉዙኜ
ቑ
⚂ዌዙኦቑ
␔⹈

ኜኁኻ⊳ ᨺ ክኁኧ዇ነዙኦ
/7   ሼቜ቉





ኜኁኻ⊳ ᨺ ክኁኧ዇ነዙኦ

パラメータ
次の表に、「タイマ値のロード」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

現在の時間値がロードさ

Input

れるタイマ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

1136

STL

説明

A "Tag_EnableInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

FR "MyTimer"// エッジが立ち上がりの場合、タイマの有効化。

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

L S5T#10s// 持続時間のロード(10 秒)

SP "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがある場合、およびオペ
ランド「Tag_StartInput」のシグナル状態が「1」の場合、パルスとしてタイマを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセット

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

LC: BCD コードタイマ値のロード

説明「BCD コードタイマ値のロード」命令を使用して、指定されたタイマの BCD コードタイマ値(デュアルコーディングされた)をアキュムレータ 1 にロードします。ロード中にタイムベースもアキュムレータ 1 に転送されます。
ロード後、アキュムレータ 1 の値は S5TIME 形式の持続時間に対応します。アキュムレータ
1 の左ワードはゼロで埋められます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
次の図に、時間値がアキュムレータにロードされる方法を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1137

基本命令
3.3 STL   ኾ኿዇␔ቑኜኁኻ7ቑ
ኜኁኻዌዙኦ

ኜኁኻ⊳ ᨺ ክኁኧ዇ነዙኦ

ኜኁኽ኶ዙኖ ኼ዇䱡 ኼ዇䱡 䱡 䱡✌ⅳ /&7 ㈛ቑ
ቿኊዂኽዉዙኜ
ቑ
⚂ዌዙኦቑ
␔⹈





/&7ክኁኧ዇ሮቬ%&'   

 䤍

 ₏

◐
%&'ነዙኦኜኁኻ⊳ቑዊዙኦ

パラメータ
次の表に、「BCD コードタイマ値のロード」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

現在の BCD コード化されInput

たタイマ値がロードされるタイマ。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

1138

STL

説明

A "Tag_EnableInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

FR "MyTimer"// エッジが立ち上がりの場合、タイマの有効化。

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

L S5T#10s// 持続時間のロード(10 秒)

SP "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがある場合、およびオペ
ランド「Tag_StartInput」のシグナル状態が「1」の場合、パルスとしてタイマを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセット

A "MyTimer"// タイマのステータスを「1」で照会。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL

説明= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

LC "MyTimer"// タイマの現在の BCD コード化されたタイマ値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

下記も参照
L: タイマ値のロード (ページ 1135)

R: タイマのリセット

説明「タイマのリセット」命令を使用して、指定したタイマを「0」にリセットすることができます。この命令は、論理演算の現在の結果(RLO)が「1」の場合に実行されます。命令の前に RLO が「1」である限り、指定されたタイマは値「0」を返します。この命令は、時間値
およびプログラムされた持続時間のタイムベースも「0」にリセットします。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
注記「タイマのリセット」命令は、内部エッジメモリビットをリセットしません。内部エッジ
メモリビットをリセットするには、「タイマの有効化」命令をプログラムするか、シグナル
状態「0」で時間を開始する命令を実行します。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「タイマのリセット」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

リセットされるタイマ

Input

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1139

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセット

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

下記も参照
L: タイマ値のロード (ページ 1135)

SP: パルスタイマの起動

説明「パルスタイマの起動」命令を使用して、指定したタイマを信号立ち上がりエッジで起動することができます。信号の立ち上がりエッジが検出されると、命令が実行されてタイマが起動します。命令前の論理演算の結果(RLO)が「1」のままである限り、タイマはアキュム
レータ 1 で指定された持続時間によって動作停止します。期限が切れる前に RLO が「0」に切り替わると、タイマが停止します。持続時間が実行中である限り、「1」のタイマステー
タスが照会されると照会結果「1」が返されます。
タイマは「パルスタイマの起動」命令の前の信号立ち上がりエッジ、または「タイマの有効化」命令で再開することができます。この再起動はタイマがリセットされない場合に行うことができます。
アキュムレータ 1 の持続時間は、時間値とタイムベースで構成されています。指定したタイマが「パルスタイマの起動」命令によって起動する場合、時間値がタイムベースに応じてカウントダウンされます。タイマは、カウンタ値がゼロにカウントダウンされるまで動作します。
S5TIME 形式の有効な時間は、命令の実行中にタイマが 開始していなくてもアキュムレータ
1 で示す必要があります。アキュムレータ 1 に有効な BCD 値が含まれず、直前の論理演算の RLO が「0」を返す場合、ステータスビット OV は「1」にセットされます。同期エラー

1140

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
処理は開始されません。アキュムレータ 1 が有効な BCD 値を含む場合、ステータスビット
OV が「0」にリセットされます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「パルスタイマの起動」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

パルスとして起動するタ

Input

イマ。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

L S5T#10s// 持続時間のロード(10 秒)

SP "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがある場合、およびオペ
ランド「Tag_StartInput」のシグナル状態が「1」の場合、パルスタイ
マを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセットし時間計測を停止

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

LC "MyTimer"// 現在の時間値を BCD フォーマットでアキュムレータ 1 にロード。

T "Tag_TimerValue_BCD"// 時間値を BCD フォーマットでオペランド「Tag_TimerValue_BCD」に転送

次の図に、タイマ図の例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1141

基本命令
3.3 STL栚ⱚಯ7DJB6WDUW,QSXWಯ዇ኘአእಯ7DJB5HVHWಯ

ኜኁኻ
⒉┪

W
ಯ7DJB7LPHU6WDWXVಯዊዙኦኜኁኻ/ᇬ/&W ኴዊኍ዆ኽሸቯቂ㖐倩㣑栢

下記も参照
L: タイマ値のロード (ページ 1135)

SE: 拡張パルスタイマの起動

説明「拡張パルスタイマの起動」命令を使用して、指定したタイマを信号立ち上がりエッジで起動することができます。信号の立ち上がりエッジが検出されると、命令が実行されてタイマが起動します。命令前の論理演算の結果が「0」に切り替わる限り、タイマはアキュム
レータ 1 で指定された持続時間によって動作停止します。持続時間が実行中である限り、「1」のタイマステータスが照会されると照会結果「1」が返されます。
信号の立ち上がりエッジごとに、命令はタイマがまだ動作停止していなくてもタイマをプ
ログラムされた持続時間によって再起動します。
アキュムレータ 1 の持続時間は、時間値とタイムベースで構成されています。指定したタイマが「拡張パルスタイマの起動」命令によって起動する場合、時間値がタイムベースに応じてカウントダウンされます。タイマは、カウンタ値がゼロにカウントダウンされるまで動作します。
S5TIME 形式の有効な時間は、命令の実行中にタイマが 開始していなくてもアキュムレータ
1 で示す必要があります。アキュムレータ 1 に有効な BCD 値が含まれず、直前の論理演算の RLO が「0」を返す場合、ステータスビット OV は「1」にセットされます。同期エラー

1142

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
処理は開始されません。アキュムレータ 1 が有効な BCD 値を含む場合、ステータスビット
OV が「0」にリセットされます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)で確認できます。

パラメータ
次の表に、「拡張パルスタイマの起動」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

拡張パルスとして起動す

Input

るタイマ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

L S5T#10s// 持続時間のロード(10 秒)

SE "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがある場合、およびオペ
ランド「Tag_StartInput」のシグナル状態が「1」の場合、拡張パルス
としてタイマを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセットし時間計測を停止

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

LC "MyTimer"// 現在の時間値を BCD フォーマットでアキュムレータ 1 にロード。

T "Tag_TimerValue_BCD"// 時間値を BCD フォーマットでオペランド「Tag_TimerValue_BCD」に転送

次の図に、タイマ図の例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1143

基本命令
3.3 STL栚ⱚಯ7DJB6WDUW,QSXWಯ዇ኘአእಯ7DJB5HVHWಯ

ኜኁኻ
⒉┪

W
ಯ7DJB7LPHU6WDWXVಯዊዙኦኜኁኻ/ᇬ/&W ኴዊኍ዆ኽሸቯቂ㖐倩㣑栢

SD: オンディレータイマの起動

説明「オンディレータイマの起動」命令は、開始入力でシグナル状態「1」が検出されると、プログラミングされたタイマを起動します。このシグナル状態が「1」のままである限り、アキュムレータ 1 で指定された持続時間でタイマの期限が切れます。タイマの期限が切れた
ときに開始入力のシグナル状態がまだ「1」である場合、タイマステータスを照会すると「1」が返されます。開始入力のシグナル状態が「0」の場合、タイマがリセットされます。
この場合、タイマステータスを照会するとシグナル状態「0」が返されます。開始入力のシグナル状態が再び「1」に切り替わると、タイマが再び実行を開始します。
タイマ出力のシグナル状態は開始入力のシグナル状態と同じです。開始入力は出力に直接相互接続され、タイマにはリンクされません。
アキュムレータ 1 の持続時間は、内部で時間値とタイムベースから構成されます。この命令が開始すると、プログラムされた時間値は 0 までカウントダウンされます。
S5TIME 形式の有効な時間は、命令の実行中にタイマが 開始していなくてもアキュムレータ
1 で示す必要があります。アキュムレータ 1 に有効な BCD 値が含まれず、直前の論理演算の RLO が「0」を返す場合、ステータスビット OV は「1」にセットされます。同期エラー

1144

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
処理は開始されません。アキュムレータ 1 が有効な BCD 値を含む場合、ステータスビット
OV が「0」にリセットされます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

パラメータ
次の表に、「オンディレータイマの起動」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>TIMER

T

オンディレーとして起動

Input

するタイマ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

L S5T#10s// 持続時間のロード(10 秒)

SD "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがある場合、およびオペ
ランド「Tag_StartInput」のシグナル状態が「1」の場合、オンディレ
ーとしてタイマを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセットし時間計測を停止

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

LC "MyTimer"// 現在の時間値を BCD フォーマットでアキュムレータ 1 にロード。

T "Tag_TimerValue_BCD"// 時間値を BCD フォーマットでオペランド「Tag_TimerValue_BCD」に転送

次の図に、タイマ図の例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1145

基本命令
3.3 STL栚ⱚಯ7DJB6WDUW,QSXWಯ዇ኘአእಯ7DJB5HVHWಯ

ኜኁኻ
⒉┪

W

W

ಯ7DJB7LPHU6WDWXVಯW ኴዊኍ዆ኽሸቯቂ㖐倩㣑栢

下記も参照
L: タイマ値のロード (ページ 1135)

SS: 拡張オンディレータイマの起動

説明「保持型オンディレータイマの起動」命令を使用して、指定したタイマを信号立ち上がり
エッジで起動することができます。信号の立ち上がりエッジが検出されると、命令が実行されてタイマが起動します。命令前の論理演算の結果(RLO)が「0」に切り替わっても、タイマはアキュムレータ 1 で指定された持続時間で動作します。時間が期限切れになると、タイムステータス「1」の照会は照会結果「1」を返します。これによって、照会結果は命令前の現在の論理演算の結果のシグナル状態では影響されません。
信号の立ち上がりエッジごとに、命令はタイマがまだ動作停止していなくてもタイマをプ
ログラムされた持続時間によって再起動します。
アキュムレータ 1 の持続時間は、時間値とタイムベースで構成されています。指定したタイマが「保持型オンディレータイマの起動」命令によって起動する場合、時間値がタイムベースに応じてカウントダウンされます。タイマは、カウンタ値がゼロにカウントダウン
されるまで動作します。
S5TIME 形式の有効な時間は、命令の実行中にタイマが 開始していなくてもアキュムレータ
1 で示す必要があります。アキュムレータ 1 に有効な BCD 値が含まれず、直前の論理演算の RLO が「0」を返す場合、ステータスビット OV は「1」にセットされます。同期エラー

1146

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
処理は開始されません。アキュムレータ 1 が有効な BCD 値を含む場合、ステータスビット
OV が「0」にリセットされます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)で確認できます。

パラメータ
次の表に、「保持型オンディレータイマの起動」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

保持型オンディレーとしInputて起動するタイマ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

L S5T#10s// 持続時間のロード(10 秒)

SS "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがあり、かつオペランド「Tag_StartInput」のシグナル状態が「1」の場合、保持型オンディレ
ータイマを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセットし時間計測を停止

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

LC "MyTimer"// 現在の時間値を BCD フォーマットでアキュムレータ 1 にロード。

T "Tag_TimerValue_BCD"// 時間値を BCD フォーマットでオペランド「Tag_TimerValue_BCD」に転送

次の図に、タイマ図の例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1147

基本命令
3.3 STL栚ⱚಯ7DJB6WDUW,QSXWಯ዇ኘአእಯ7DJB5HVHWಯ

ኜኁኻ
⒉┪

W
ಯ7DJB7LPHU6WDWXVಯW ኴዊኍ዆ኽሸቯቂ㖐倩㣑栢

SF: オフディレータイマの起動

説明「オフディレータイマの起動」命令を使用して、指定したタイマを信号立ち上がりエッジで起動することができます。信号の立ち下がりエッジが検出されると、命令が実行されてタイマが起動します。タイマはアキュムレータ 1 で指定された持続時間で動作停止します。
持続時間の終了前に論理演算の結果(RLO)が「1」に切り替わると、タイマがリセットされます。このタイマは、命令の処理中に信号立ち下がりエッジが検出された場合にのみ再起動されます。
命令実行時の論理演算の結果のシグナル状態が「1」の場合またはプログラムされた時間が実行中の場合、「1」のタイマステータスの照会は照会結果「1」を返します。時間が経過しない場合または RLO が「0」の場合、タイマステータス「1」の照会は照会結果「0」を返します。
アキュムレータ 1 の持続時間は、時間値とタイムベースで構成されています。指定したタイマが「オフディレータイマの起動」命令によって起動する場合、時間値がタイムベースに応じてカウントダウンされます。タイマは、カウンタ値がゼロにカウントダウンされるまで動作します。
S5TIME 形式の有効な時間は、命令の実行中にタイマが 開始していなくてもアキュムレータ
1 で示す必要があります。アキュムレータ 1 に有効な BCD 値が含まれず、直前の論理演算の RLO が「0」を返す場合、ステータスビット OV は「1」にセットされます。同期エラー

1148

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
処理は開始されません。アキュムレータ 1 が有効な BCD 値を含む場合、ステータスビット
OV が「0」にリセットされます。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、L: タイマ値のロード (ページ 1135)で確認できます。

パラメータ
次の表に、「オフディレータイマの起動」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<timer>

TIMER

T

オフディレーとして起動

Input

するタイマ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_StartInput"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

L S5T#10s// 持続時間のロード(10 秒)

SF "MyTimer"// オペランド「Tag_StartInput」またはオペランド「Tag_EnableInput」に信号立ち上がりエッジがある場合、およびオペ
ランド「Tag_StartInput」のシグナル状態が「1」の場合、オフディレ
ーとしてタイマを開始。

A "Tag_Reset"// オペランドを「1」で照会し、AND 演算に従って現在の RLO とリンク。

R "MyTimer"// RLO = 「1」の場合、タイマをリセットし時間計測を停止

A "MyTimer"// タイマのステータスを「1」で照会。

= "Tag_TimerStatus"// タイマのステータスをオペランドに割り当て。

L "MyTimer"// タイマの現在の時間値をアキュムレータ 1 にロード。

T "Tag_TimerValue"// 現在の時間値をオペランド「Tag_TimerValue」に転送。

LC "MyTimer"// 現在の時間値を BCD フォーマットでアキュムレータ 1 にロード。

T "Tag_TimerValue_BCD"// 時間値を BCD フォーマットでオペランド「Tag_TimerValue_BCD」に転送

次の図に、タイマ図の例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1149

基本命令
3.3 STL栚ⱚಯ7DJB6WDUW,QSXWಯ዇ኘአእಯ7DJB5HVHWಯ

ኜኁኻ
W
⒉┪

W

ಯ7DJB7LPHU6WDWXVಯW ኴዊኍ዆ኽሸቯቂ㖐倩㣑栢

3.3.11.3

カウンタ演算FR: カウンタの有効化

説明「カウンタの有効化」命令を使用して、信号立ち上がりエッジがない場合でも「カウンタセット」、「カウントアップ」、および「カウントダウン」命令を実行します。処理中、この命令は内部エッジフラグをシグナル状態「0」にリセットします。対応するカウント命令前の照会は、引き続きシグナル状態「1」であることが必要です。
「カウンタの有効化」命令は、命令前に論理演算の結果(RLO)が「0」から「1」に切り替わると実行されます。
カウンタは実行対象のカウント命令のために有効にする必要はありません。

パラメータ
次の表に、
「カウンタの有効化」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<Operand> Input

COUNTERC

有効になるカウンタ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

1150

STL

説明

A "Tag_Input_1"// シグナル状態を「1」で照会し、現在の RLO で論理積演算。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

FR "MyCounter"// カウンタの有効化

A "Tag_Input_2"// シグナル状態を「1」で照会し、現在の RLO で論理積演算。

CD "MyCounter"// カウントダウン

A "MyCounter"// カウンタステータスを照会= "Tag_Output"// 結果をオペランドに割り当てる。

この例でカウンタ(「MyCounter」)はオペランド「Tag_Input_1」のシグナル状態が「0」から「1」に切り替わると有効になる。オペランド「Tag_Input_2」のシグナル状態が「1」の場合、カウンタ値はカウンタが有効になると 1 デクリメントされる。アドレス「Tag_Input_2」のシグナル状態が「0」の場合、カウンタ値は変更なしのままです。カウ
ンタ値はカウンタの有効化に関わらず、アドレス「Tag_Input_2」のシグナル状態が「0」から「1」に切り替わった場合も 1 デクリメントされます。
カウンタステータスの照会は、カウンタ読み取りがゼロよりも大きい場合結果「1」になります。カウンタ読み取りがゼロに等しい場合、照会の結果は「0」です。

L: カウンタのロード

説明「カウンタのロード」命令を使用して、バイナリコーディングで指定されたカウンタの現在値をアキュムレータ 1 の右ワードに転送します。ロードされたカウンタは、追加処理で
16 ビット整数として使用できます。
以下の図で、命令がどのように動作するかを示します。

ኾ኿዇   ኜኁኻዌዙኦ␔ቑኈኃ
ዐኜ&ቑ

ኜኁኻ⊳ ᨺ ክኁኧ዇ነዙኦ
/&崼ቢ手ቢ✌ⅳ /&㈛ቑቿኊዂኽዉዙኜ
ቑ
⚂ዌዙኦቑ
␔⹈

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020   ሼቜ቉



ኜኁኻ⊳ ᨺ ክኁኧ዇ነዙኦ

1151

基本命令
3.3 STL

パラメータ
次の表に、「カウンタのロード」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<Operand> Input

COUNTERC

現在値がロードされるカ
ウンタ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "MyCounter"// バイナリコーディングされたカウンタ現在値をアキュムレータ 1 にロード

L "Tag_Value"// カウンタ値をアキュムレータ 2 に移動します。
// オペランド「Tag_Value」の値をアキュムレータ 1 にロード>=I// カウンタ値がアドレス「Tag_Value」の値以上であるかを照会= "Tag_Output"// 結果をオペランドに割り当てる。

LC: BCD カウンタ値のロード

説明「BCD カウンタ値のロード」命令を使用して、指定された BCD カウンタの現在値をアキュ
ムレータ 1 の右ワードに転送します。ロードされたカウンタ値は、追加処理で BCD 形式で使用できます。
以下の図で、「BCD カウンタ値のロード」命令がどのように動作するかを示します。

1152

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLኾ኿዇␔ቑኈኃዐኜ&ቑ
ኈኃዐኜዌዙኦ

   

ኈኃዐኜ⊳ ᨺ ክኁኧ዇ነዙኦ
/&&崼ቢ手ቢ✌ⅳ /&& ㈛
ቑቿኊዂኽዉዙኜ
   
ቑ
⚂ዌዙኦቑ
 䤍
◐
␔⹈

 ₏%&'ቑኈኃዐኜ⊳

パラメータ
次の表に、「BCD カウンタ値のロード」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<Operand> Input

COUNTERC

現在値がロードされるカ
ウンタ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LC "MyCounter"// 現在の BCD コーディングされたカウンタ値をアキュムレータ 1 にロード。

T "Tag_Output"// カウンタ現在値をアドレス「Tag_Output」に転送し保存。

R: カウンタのリセット

説明「カウンタのリセット」命令を使用して、指定したカウンタのカウンタ現在値を「0」にリセットします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1153

基本命令
3.3 STL
この命令は、命令前の論理演算の結果(RLO)のシグナル状態が「1」の場合にのみ実行されます。「カウンタのリセット」命令前の RLO が「1」である限り、カウンタステータス「1」の照会は結果「0」を返します。
カウンタがリセットされるとき、「カウンタセット」、「カウントアップ」および「カウントダウン」命令の内部エッジメモリビットはリセットされません。

パラメータ
次の表に、「カウンタのリセット」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<Operand> Input

COUNTERC

カウンタ値が「0」にリセットされるカウンタ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input"// シグナル状態を「1」で照会し、現在の RLO で論理積演算。

R "MyCounter"// カウンタのリセット

S: カウンタセット

説明「カウンタセット」命令を使用し、指定されたカウンタを照会の時点でアキュムレータ 1 に含まれる値にセットします。
「カウンタセット」命令は、命令前に論理演算の結果が「0」から「1」に切り替わると実行されます。信号立ち上がりエッジは、内部エッジメモリビットを「0」にリセットする「カウンタの有効化」命令でも発生します。
カウンタをセットするには、アキュムレータ 1 に正しいカウンタ値が含まれている必要があります。有効なカウンタ値は 3 桁の BCD フォーマット値です。正のカウンタ値のみが許可され、カウント命令は負のカウンタ値を処理できません。アキュムレータ 1 に有効な
BCD 値が存在する場合、ステータスビット OV のシグナル状態は「0」になります。有効な1154

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
BCD 値が存在しない場合、ステータスビット OV のシグナル状態は「1」になります。同期
エラー処理は開始されません。

パラメータ
次の表に、「カウンタセット」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<Operand> Input

COUNTER

C

セットされるカウンタ。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input"// シグナル状態を「1」で照会し、現在の RLO で論理積演算。

L "Tag_CountValue"// カウンタ値をアキュムレータ 1 にロード。

S "MyCounter"// カウンタをアキュムレータ 1 の値にセット

CU: カウントアップ

説明「カウントアップ」命令を使用して、命令が「0」から「1」に切り替わる前に論理演算の結果(RLO)のカウンタ現在値を 1 インクリメントします。カウンタ値は、上限値「999」に達するまで立ち上がりシグナルエッジが発生するたびに引き続きインクリメントされます。
制限値に達すると、命令前の RLO はカウンタ値に影響を与えなくなります。
「カウントアップ」命令の実行には、常に立ち上がりシグナルエッジが必要です。信号立ち上がりエッジは、内部エッジメモリビットを「0」にリセットする「カウンタの有効化」命令でも発生します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1155

基本命令
3.3 STL

パラメータ
次の表に、「カウントアップ」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<Operand> Input

COUNTER

C

立ち上がりエッジで 1 イ
ンクリメントされるカウ
ンタ値のカウンタ

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input"// シグナル状態を「1」で照会し、現在の RLO で論理積演算。

CU "MyCounter"// 立ち上がりエッジでカウンタ値を 1 インクリメント。

CD: カウントダウン

説明「カウントダウン」命令を使用して、命令が「0」から「1」に切り替わる前に論理演算の結果(RLO)のカウンタ現在値を 1 デクリメントします。カウンタ値は、下限値「0」に達するまで立ち上がりシグナルエッジが発生するたびに、引き続きデクリメントされます。制限値に達すると、命令前の RLO はカウンタ値に影響を与えなくなります。カウンタ値が負の場合、カウントは発生しません。
「カウントダウン」命令の実行には、常に立ち上がりシグナルエッジが必要です。信号立ち上がりエッジは、内部エッジメモリビットを「0」にリセットする「カウンタの有効化」命令でも発生します。

1156

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、
「カウントダウン」命令のパラメータを示します。
オペランド 宣言

データタイプ

メモリ領域

説明<Operand> Input

COUNTER

C

立ち上がりエッジで 1 デクリメントされるカウン
タ値のカウンタ

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

3.3.11.4

STL

説明A "Tag_Input"// シグナル状態を「1」で照会し、現在の RLO で論理積演算。

CD "MyCounter"// 立ち上がりエッジでカウンタ値を 1 デクリメント。

比較演算? I: 16 ビット整数比較

説明「16 ビット整数比較命令」を使用して、アキュムレータ 2 の右ワードの内容をアキュムレータ 1 の右ワードの内容と比較します。アキュムレータ 1 および 2 の内容は、16 ビット
整数として解釈されます。 この命令は、指定された比較ファンクションに従って比較を実行します。
次の表に、使用可能な比較ファンクションとその意味を示します。
比較ファンクション

意味==I

16 ビット整数比較「等しい」<>I

16 ビット整数比較「等しくない」>I

16 ビット整数比較「超過」<I

16 ビット整数比較「less than」

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1157

基本命令
3.3 STL
比較ファンクション

意味>=I

16 ビット整数比較「以上」<=I

16 ビット整数比較「less than or equal to」

比較結果は、論理演算の結果(RLO)、およびステータスビット CC 1 と CC 0 に影響を与えます。 比較条件が満たされている場合、RLO がシグナル状態「1」にセットされます。 比較条件が満たされていない場合、RLO はシグナル状態「0」にセットされます。
次の表に、各比較結果が RLO にどのように影響するかを示します。
比較ファンクション
ACCU 2 > ACCU 1 の ACCU 2 = ACCU 1 の ACCU 2 < ACCU 1 の場合の RLO
場合の RLO
場合の RLO
==I

0

1

0

<>I

1

0

1

>I

1

0

0

<I

0

0

1

>=I

1

1

0

<=I

0

1

1

ステータスビット CC 1 および CC 0 の設定は、比較に関わる 2 つの値の関係によって異なります。
アキュムレータ 1 および 2 の内容は、比較ファンクションの実行によって変更されません。 比較ファンクションの処理後に、論理演算の結果を割り当てファンクションおよび
ジャンプファンクションで評価することができます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input_1"// オペランド「Tag_Input_1」の値をアキュムレータ 1 にロード

L "Tag_Input_2"// アキュムレータ 1 の内容(Tag_Input_1)をアキュムレータ 2 へシフト。
// オペランド「Tag_Input_2」の値をアキュムレータ 1 にロード

1158

>I

// オペランド「Tag_Input_1」の値がオペランド「Tag_Input_2」の値よりも大きいかどうかを比較。

= "Tag_Output"// 比較結果をオペランド「Tag_Output」に割り当て。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Input_1

10

10

5

Tag_Input_2

5

10

10

Tag_Output

1

0

0

? D: 32 ビット整数比較
説明「32 ビット整数比較」命令を使用して、アキュムレータ 2(ACCU 2)の内容をアキュムレータ
1(ACCU 1)の内容と比較します。 アキュムレータ 1 および 2 の内容は、32 ビット整数として解釈されます。 この命令は、指定された比較ファンクションに従って比較を実行します。
次の表に、使用可能な比較ファンクションとその意味を示します。
比較ファンクション

意味==D

32 ビット整数比較「等しい」<>D

32 ビット整数比較「等しくない」>D

32 ビット整数比較「超過」<D

32 ビット整数比較「less than」>=D

32 ビット整数比較「以上」<=D

32 ビット整数比較「less than or equal to」

比較結果は、論理演算の結果(RLO)、およびステータスビット CC 1 と CC 0 に影響を与えます。 比較条件が満たされている場合、RLO がシグナル状態「1」にセットされます。 比較条件が満たされていない場合、RLO がシグナル状態「0」にリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1159

基本命令
3.3 STL
次の表に、各比較結果が RLO にどのように影響するかを示します。
比較ファンクション
ACCU 2 > ACCU 1 の ACCU 2 = ACCU 1 の ACCU 2 < ACCU 1 の場合の RLO
場合の RLO
場合の RLO
==D

0

1

0

<>D

1

0

1

>D

1

0

0

<D

0

0

1

>=D

1

1

0

<=D

0

1

1

ステータスビット CC 1 および CC 0 の設定は、比較に関わる 2 つの値の関係によって異なります。
アキュムレータ 1 および 2 の内容は、比較ファンクションの実行によって変更されません。 比較ファンクションの処理後に、論理演算の結果を割り当てファンクションおよび
ジャンプファンクションで評価することができます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input_1"// オペランド「Tag_Input_1」の値をアキュムレータ 1 にロード。

L "Tag_Input_2"// アキュムレータ 1 の内容(Tag_Input_1)をアキュムレータ 2 へシフト。
// オペランド「Tag_Input_2」の値をアキュムレータ 1 にロード>D// オペランド「Tag_Input_1」の値がオペランド「Tag_Input_2」の値よりも大きいかどうかを比較。

= "Tag_Output"// 比較結果をオペランド「Tag_Output」に割り当て。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1160

オペランド

値

Tag_Input_1

150 000

150 000

100 000

Tag_Input_2

100 000

150 000

150 000

Tag_Output

1

0

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL? R: 浮動小数点数比較

説明「浮動小数点数比較」命令を使用して、アキュムレータ 2(ACCU 2)の内容をアキュムレータ
1(ACCU 1)の内容と比較します。 アキュムレータ 1 および 2 の内容は、浮動小数点数として解釈されます。 比較を行うには、アキュムレータ 1 および 2 に有効な浮動小数点数が入っている必要があります。 この命令は、指定された比較ファンクションに従って比較を実行します。
次の表に、使用可能な比較ファンクションとその意味を示します。
比較ファンクション

意味==R

浮動小数点数比較「等しい」<>R

浮動小数点数比較「等しくない」>R

浮動小数点比較「超過」<R

浮動小数点数比較「less than」>=R

浮動小数点数比較「以上」<=R

浮動小数点数比較「less than or equal to」

比較結果は、論理演算の結果(RLO)、およびステータスビット CC 1 と CC 0 に影響を与えます。 比較条件が満たされている場合、RLO がシグナル状態「1」にセットされます。 比較条件が満たされていない場合、RLO がシグナル状態「0」にリセットされます。
次の表に、各比較結果が RLO にどのように影響するかを示します。
比較ファンクション
ACCU 2 > ACCU 1 の ACCU 2 = ACCU 1 の ACCU 2 < ACCU 1 の場合の RLO
場合の RLO
場合の RLO
==R

0

1

0

<>R

1

0

1

>R

1

0

0

<R

0

0

1

>=R

1

1

0

<=R

0

1

1

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1161

基本命令
3.3 STL
ステータスビット CC 1 および CC 0 の設定は、比較に関わる 2 つの値の関係によって異なります。
注記
無効な浮動小数点数の比較中、CPU は論理演算の結果を「0」に、ステータスビット CC 0、
CC 1、OV、および OS を「1」にセットします。
アキュムレータ 1 および 2 の内容は、比較ファンクションの実行によって変更されません。 比較ファンクションの処理後に、論理演算の結果を割り当てファンクションおよび
ジャンプファンクションで評価することができます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input_1"// オペランド「Tag_Input_1」の値をアキュムレータ 1 にロード。

L "Tag_Input_2"// アキュムレータ 1 の内容(Tag_Input_1)をアキュムレータ 2 へシフト。
// オペランド「Tag_Input_2」の値をアキュムレータ 1 にロード>R// オペランド「Tag_Input_1」の値がオペランド「Tag_Input_2」の値よりも大きいかどうかを比較。

= "Tag_Output"// 比較結果をオペランド「Tag_Output」に割り当て。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1162

オペランド

値

Tag_Input_1

10 515

10 5155 232

Tag_Input_2

5 232

10 515

10 515

Tag_Output

1

0

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.11.5

四則演算

整数+I: 整数加算(16 ビット)説明
「整数加算(16 ビット)」命令を使用して、アキュムレータ 1 および 2 の右ワード内の値を加算します。この命令は、この値を 16 ビット整数として解釈します。
この命令は、和をアキュムレータ 1 の右ワードに保存します。アキュムレータ 1 の左ワ
ードは変わりません。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、和が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 加算の最初の値のロード。

L "Tag_Value_2"// 加算の 2 番目の値のロード。

+I// 値の加算

T "Tag_Result"// 和をオペランド「Tag_Result」に転送。

-I: 整数減算(16 ビット)

説明
「整数減算(16 ビット)」命令を使用して、アキュムレータ 1 の右ワードの値をアキュムレータ 2 の右ワードの値から減算します。この命令は、アキュムレータ 1 および 2 の値を 16
ビット整数として解釈します。
この命令は、差をアキュムレータ 1 の右ワードに保存します。アキュムレータ 1 の左ワ
ードは変わりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1163

基本命令
3.3 STL
命令が実行されると、ステータスビット CC 0 および CC 1 によって、差分が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 減算の最初の値をアキュムレータ 1 にロード。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// 加算の 2 番目の値をアキュムレータ 1 にロード。

-I// アキュムレータ 1 の値をアキュムレータ 2 の値から減算。

T "Tag_Result"// 差をオペランド「Tag_Result」に転送。

*I: 整数乗算(16 ビット)

説明
「整数乗算(16 ビット)」命令を使用して、アキュムレータ 1 および 2 の右ワードの値を乗算します。この命令は、この値を 16 ビット整数として解釈します。
この命令は、アキュムレータ 1 に積を 32 ビット整数(DINT)として保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、積が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。

1164

STL

説明

L "Tag_Value_1"// 乗算の最初の値のロード。

L "Tag_Value_2"// 乗算の 2 番目の値のロード。

*I// 値を乗算

T "Tag_Result"// 積をオペランド「Tag_Result」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL/I: 整数除算(16 ビット)

説明
「整数除算(16 ビット)」命令を使用して、アキュムレータ 2 の右ワードの内容をアキュム
レータ 1 の右ワードの内容によって除算します。この命令は、アキュムレータの値を 16
ビット整数として解釈します。
この命令では、次の 2 つの結果が提供されます:商と除算の余り。商は、除算の整数結果です。この命令は、商をアキュムレータ 1 の右ワードに保存します。この命令は、除算の余りをアキュムレータ 1 の左ワードに保存します。被除数が負の場合、除算の余りも負となります。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、商が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
0 による除算の場合、命令は値を商として報告し、どの場合でも値 0 を余りとして報告します。この場合、ステータスビット CC 0、CC 1、OV、および OS がシグナル状態「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 被除数をアキュムレータ 1 にロード。

L "Tag_Value_2"// 被除数をアキュムレータ 2 に移動。
// 除数をアキュムレータ 1 にロード。

/I// アキュムレータ 2 の値をアキュムレータ 1 の値で除算。

T "Tag_Result"// 結果をオペランド「Tag_Result」に転送。

処理前
次の表に、「整数除算(16 ビット)」命令の実行前のアキュムレータ 1 および 2 の右ワードの内容を示します。
アキュムレータ値

アキュムレータ 2

13

アキュムレータ 1

4

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1165

基本命令
3.3 STL

処理後
次の表に、「整数除算(16 ビット)」命令の実行後のアキュムレータ 1 の内容を示します。
アキュムレータ 1

値

ビット 0～15

3(右ワード)
ビット 16～31

1(左ワード)+D: 倍長整数加算(32 ビット)説明
「倍長整数加算(32 ビット)」命令を使用して、アキュムレータ 1 および 2 の値を加算します。この命令は、この値を 32 ビット整数として解釈します。この命令は、和をアキュム
レータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、和が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。

1166

STL

説明

L "Tag_Value_1"// 加算の最初の値のロード。

L "Tag_Value_2"// 加算の 2 番目の値のロード。

+D// 値の加算

T "Tag_Result"// 和をオペランド「Tag_Result」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL-D: 倍長整数減算(32 ビット)説明
「倍長整数減算(32 ビット)」命令を使用して、アキュムレータ 1 の値をアキュムレータ 2 の値から減算します。この命令は、アキュムレータ 1 および 2 の内容を 32 ビット倍長整数として解釈します。この命令は、減算の結果をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、差分が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 減算の最初の値をアキュムレータ 1 にロード。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// 減算の 2 番目の値をアキュムレータ 1 にロード。

-D// アキュムレータ 1 の値をアキュムレータ 2 の値から減算。

T "Tag_Result"// 差をオペランド「Tag_Result」に転送。

*D: 倍長整数乗算(32 ビット)説明
「倍長整数乗算(32 ビット)」命令を使用して、アキュムレータ 1 および 2 の値を乗算します。この命令は、この値を 32 ビット整数として解釈します。この命令は、積をアキュム
レータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、積が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1167

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 乗算の最初の値のロード。

L "Tag_Value_2"// 乗算の 2 番目の値のロード。

*D// 値を乗算

T "Tag_Result"// 積をオペランド「Tag_Result」に転送。

/D: 倍長整数除算(32 ビット)説明
「倍長整数除算(32 ビット)」命令を使用して、アキュムレータ 2 の値をアキュムレータ 1 の値によって除算します。この命令は、アキュムレータ 1 および 2 の内容を 32 ビット倍長整数として解釈します。この命令は、除算の結果(商)をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、商が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
0 による除算の場合、命令は値 0 を商として報告します。この場合、ステータスビット CC
0、CC 1、OV、および OS がシグナル状態「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 被除数をアキュムレータ 1 にロード。

L "Tag_Value_2"// 被除数をアキュムレータ 2 に移動。
// 除数をアキュムレータ 1 にロード。

1168

/D

// アキュムレータ 2 の値をアキュムレータ 1 の値で除算。

T "Tag_Result"// 商をオペランド「Tag_Result」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

処理前
次の表に、「倍長整数除算(32 ビット)」命令の実行処理前のアキュムレータ 1 および 2 の内容を示します。
アキュムレータ値

アキュムレータ 2

13

アキュムレータ 1

4

処理後
次の表に、「倍長整数除算(32 ビット)」命令の実行後のアキュムレータ 1 の内容を示します。
アキュムレータ値

アキュムレータ 1

3+: 定数加算

説明「定数加算」命令を使用して、指定された定数の値をアキュムレータ 1 の内容に加算します。定数値を 16 ビット整数または 32 ビット倍精度整数として指定できます。この命令
は、結果をアキュムレータ 1 に保存します。16 ビット整数の加算時、この命令はアキュ
ムレータ 1 の右ワードにのみ影響します。
16 ビット整数の加算を DINT 演算ファンクションとして実行するには、定数の前に「L#」を入力します。「定数加算」命令を使用すると、負数の使用が許可されます。
この命令はステータスビットには影響しません。

パラメータ
次の表に、「定数加算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> INT, DINTTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

加算される定数

1169

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をロード。

+ 25// アキュムレータ 1 の値を 25 インクリメント。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランド「Tag_Result_1」に転送。

L "Tag_Value_2"// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 にロード

+ -100// アキュムレータ 1 の値を 100 デクリメント。

<I// アキュムレータ 2 の値がアキュムレータ 1 の値未満かどうかを比較

JC NEXT// 照会結果が「1」の場合、ジャンプラベル NEXT にジャンプ。
// 問い合わせの結果が「0」の場合、次の命令を実行。

T "Tag_Result_2"// アキュムレータ 1 の内容をオペランド「Tag_Result_2」に転送。

L "Tag_Value_4"// オペランド「Tag_Value_4」の値をロード。

+ L#20// アキュムレータ 1 の内容を 20 インクリメント。
// 加算は DINT 計算として実行される

T "Tag_Result_3"// アキュムレータ 1 の内容をオペランド「Tag_Result_3」に転送。

NEXT: L "Tag_Value_5"// ジャンプラベル「NEXT」// オペランド「Tag_Value_5」の値をロード。

+D// アキュムレータ 1 および 2 の値を加算。

T "Tag_Result_4"// 和をオペランド「Tag_Result_4」に転送。

INC: インクリメント

説明「インクリメント」命令を使用して、アキュムレータ 1 の値を命令のパラメータとして指定された値によってインクリメントします。指定された値は値の範囲 0～255 になります。
この値はアキュムレータ 1 の右バイトのみでインクリメントされます。左のバイトへの転送は行われません。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータ 2 の内容は変わりません。
パラメータ値が値の許容範囲外にある場合は、エラーメッセージを生成することなく誤った結果となります。

1170

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「インクリメント」命令のパラメータを示します。
パラメータ

書式

説明

<constant>

8 ビット整数

値がインクリメントされる値例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// オペランドの値をアキュムレータ 1 にロード。

INC 5// アキュムレータ 1 の値を 5 インクリメント。

T "Tag_Result"// アキュムレータ 1 の内容をオペランドに転送。

DEC: デクリメント

説明「デクリメント」命令を使用して、アキュムレータ 1 の値を命令のパラメータとして指定された値によってデクリメントします。指定された値は値の範囲 0～255 になります。この値はアキュムレータ 1 の右バイトのみでデクリメントされます。左のバイトへの転送は行われません。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータ 2 の内容は変わりません。
パラメータ値が値の許容範囲外にある場合は、エラーメッセージを生成することなく誤った結果となります。

パラメータ
次の表に、「デクリメント」命令のパラメータを示します。
パラメータ

書式

説明

<constant>

8 ビット整数

値がデクリメントされる値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1171

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// オペランドの値をアキュムレータ 1 にロード。

DEC 5// アキュムレータ 1 の値を 5 デクリメント。

T "Tag_Result"// アキュムレータ 1 の内容をオペランドに転送。

MOD: 除算の剰余を返す

説明「除算の剰余を返す」命令を使用して、アキュムレータ 2 の値をアキュムレータ 1 の値で除算し、除算の余りを保存します。
この命令は、アキュムレータ 1 および 2 の内容を 32 ビット整数として解釈します。この
命令は、除算の余りをアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、除算の剰余が負であるか、0 であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステータスビット OV および OS が「1」にセットされます。
0 による除算の場合、命令は値 0 を結果として返します。この場合、ステータスビット CC
0、CC 1、OV、および OS がシグナル状態「1」にセットされます。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 被除数をアキュムレータ 1 にロード。

L "Tag_Value_2"// 被除数をアキュムレータ 2 に移動。
// 除数をアキュムレータ 1 にロード。

1172

MOD

// アキュムレータ 2 の値をアキュムレータ 1 の値で除算。

T "Tag_Result"// 除算の余りをオペランド「Tag_Result」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

処理前
次の表に、「除算の剰余を返す」命令の実行前のアキュムレータ 1 および 2 の内容を示します。
アキュムレータ値

アキュムレータ 2

13

アキュムレータ 1

4

処理後
次の表に、「除算の剰余を返す」命令の実行後のアキュムレータ 1 の内容を示します。
アキュムレータ値

アキュムレータ 1

1

浮動小数点数+R: 浮動小数点数加算

説明「浮動小数点数加算」命令を使用して、アキュムレータ 1 および 2 に含まれる値を加算します。この命令は、この値を浮動小数点数として解釈します。この命令は、和をアキュム
レータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、和が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
無効な浮動小数点数または無限記号(+/- ∞)が入力された場合、この命令はアキュムレータ 1に無効な値を書き込み、スタータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
命令実行後、アキュムレータ 2 の内容は変更されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1173

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 加算の最初の値のロード。

L "Tag_Value_2"// 加算の 2 番目の値のロード。

+R// 値の加算

T "Tag_Result"// 和をオペランド「Tag_Result」に転送。

-R: 浮動小数点数減算

説明「浮動小数点数減算」命令を使用して、アキュムレータ 1 の値をアキュムレータ 2 の値から減算します。この命令は、アキュムレータ 1 および 2 の値を浮動小数点数として解釈します。この命令は、差をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、差分が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
無効な浮動小数点数または無限記号(+/- ∞)が入力された場合、この命令はアキュムレータ 1に無効な値を書き込み、スタータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 減算の最初の値をアキュムレータ 1 にロード。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// 減算の 2 番目の値をアキュムレータ 1 にロード。

1174

-R

// アキュムレータ 1 の値をアキュムレータ 2 の値から減算。

T "Tag_Result"// 差をオペランド「Tag_Result」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL*R: 浮動小数点数乗算

説明「浮動小数点数乗算」命令を使用して、アキュムレータ 1 および 2 に含まれる値を乗算します。この命令は、この値を浮動小数点数として解釈します。この命令は、積をアキュム
レータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、積が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
無効な浮動小数点数または無限記号(+/- ∞)が入力された場合、この命令はアキュムレータ 1に無効な値を書き込み、スタータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 乗算の最初の値のロード。

L "Tag_Value_2"// 乗算の 2 番目の値のロード。

*R// 値を乗算

T "Tag_Result"// 積をオペランド「Tag_Result」に転送。

/R: 浮動小数点数除算

説明「浮動小数点数除算」命令を使用して、アキュムレータ 2 の値をアキュムレータ 1 の値によって除算します。この命令は、アキュムレータ 1 および 2 の値を浮動小数点数として解釈します。この命令は、除算の結果(商)をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、商が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
0 による除算の場合、命令は値 0 を商として報告します。この場合、ステータスビット CC
0、CC 1、OV、および OS がシグナル状態「1」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1175

基本命令
3.3 STL
無効な浮動小数点数または無限記号(+/- ∞)が入力された場合、この命令はアキュムレータ 1に無効な値を書き込み、スタータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
命令実行後、アキュムレータ 2 の内容は変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 被除数をアキュムレータ 1 にロード。

L "Tag_Value_2"// 被除数をアキュムレータ 2 に移動。
// 除数をアキュムレータ 1 にロード。

/R// アキュムレータ 2 の値をアキュムレータ 1 の値で除算。

T "Tag_Result"// 商をオペランド「Tag_Result」に転送。

ABS: 絶対値の形成

説明「絶対値の形成」命令を使用して、アキュムレータ 1 の値の絶対値を形成します。この命令
は、アキュムレータ 1 の内容を浮動小数点数として解釈し、仮数の符号を「0」にセットします。この結果は、アキュムレータ 1 に保存されます。
「絶対値の形成」命令はステータスビットに影響しません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// 浮動小数点数をアキュムレータ 1 にロードABS// 絶対値の形成

T "Tag_Result"// 結果をオペランド「Tag_Result」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1176

オペランド

値

Tag_Value-1.5E+02

Tag_Result

1.5E+02

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

詳細浮動小数点数

SQR: 2 乗値の形成

説明「2 乗値の形成」命令を使用して、アキュムレータ 1 に入っている浮動小数点数の 2 乗値を計算します。この結果は、アキュムレータ 1 に保存されます。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
浮動小数点数が無効の場合、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

SQR// 2 乗値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

SQRT: 平方根の形成

説明「平方根の形成」命令を使用して、アキュムレータ 1 に入っている浮動小数点数の平方根を形成します。この結果は、アキュムレータ 1 に保存されます。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1177

基本命令
3.3 STL
アキュムレータ 1 の値が 0 未満または無効な浮動小数点数である場合、命令はアキュム
レータ 1 に無効な値を書き込み、ステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
アキュムレータ 1 の値が「0」の場合、命令は値「0」を返します。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード+R// アキュムレータ 1 および 2 の値を加算。
// 和をアキュムレータ 1 に保存。

SQRT// 平方根を取得

T "Tag_Result"// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

EXP: 指数値の形成

説明「指数値の形成」命令を使用して、基数 e (e = 2.718282)から指数および浮動小数点数をアキュムレータ 1 に形成します。この命令は、結果をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
浮動小数点数が無効の場合、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わ
りません。

1178

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

EXP// 指数値の形成// 結果をアキュムレータ 1 に保存。

T "Tag_Result"// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

LN: 自然対数の形成

説明「自然対数の形成」命令を使用して、アキュムレータ 1 内の e (e = 2.718282)を底とする自然対数の値を計算します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
アキュムレータ 1 の値が 0 以下の場合、命令はアキュムレータ 1 に無効な値を書き込み、
ステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。浮動小数点数が無効の場合も、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

LN// 自然対数の形成。
// 結果をアキュムレータ 1 に保存。

T "Tag_Result"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転
送。

1179

基本命令
3.3 STL

SIN: 正弦値の形成

説明「正弦値の形成」命令を使用して、アキュムレータ 1 内の角度の正弦を計算します。角度は弧度法で指定され、アキュムレータ 1 に浮動小数点数として入っている必要があります。
この命令は、結果をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。浮動小数点数が無効の場合、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

SIN// 正弦値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

T "Tag_Result"// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

ASIN: 逆正弦値の形成

説明「逆正弦値の形成」命令を使用し、この値に対応するアキュムレータ 1 内の値から角度のサイズを計算します。アキュムレータ 1 の値は、「-1」から「1」までの値の範囲の浮動小数点数として存在している必要があります。
命令の結果は弧度法で返され、アキュムレータ 1 に保存されます。アキュムレータ 1 の値に応じて、結果の値の範囲は-π/2～+π/2 (π= 3.14159)となります。

1180

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
アキュムレータ 1 の値が許容値の範囲を超える場合、命令はアキュムレータ 1 に無効な値を書き込み、ステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。浮動小数点数が無効の場合も、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

ASIN// 逆正弦値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

T "Tag_Result"// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

COS: 余弦値の形成

説明「余弦値の形成」命令を使用して、アキュムレータ 1 内の角度の余弦を計算します。角度の
サイズは弧度法で指定され、アキュムレータ 1 に浮動小数点数として入っている必要があります。この命令は、結果をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。浮動小数点数が無効の場合、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1181

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

COS// 余弦値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

T "Tag_Result"// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

ACOS: 逆余弦値の形成

説明「逆余弦値の形成」命令を使用し、この値に対応するアキュムレータ 1 内の値から角度のサイズを計算します。アキュムレータ 1 の値は、「-1」から「1」までの値の範囲の浮動小数点数として存在している必要があります。
命令の結果は弧度法で返され、アキュムレータ 1 に保存されます。アキュムレータ 1 の値に応じて、結果の値の範囲は「0」～「π」(π= 3.14159)となります。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
アキュムレータ 1 の値が許容値の範囲を超える場合、命令はアキュムレータ 1 に無効な値を書き込み、ステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。浮動小数点数が無効の場合も、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。

1182

STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

ACOS

// 逆余弦値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

T "Tag_Result"// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

TAN: 正接値の形成

説明「正接値の形成」命令を使用して、アキュムレータ 1 内の角度の正接を計算します。角度の
サイズは弧度法で指定され、アキュムレータ 1 に浮動小数点数として入っている必要があります。この命令は、結果をアキュムレータ 1 に保存します。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。浮動小数点数が無効の場合、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

TAN// 正接値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

T "Tag_Result"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転
送。

1183

基本命令
3.3 STL

ATAN: 逆正接値の形成

説明「逆正接値の形成」命令を使用し、この値に対応するアキュムレータ 1 内の値から角度のサイズを計算します。アキュムレータ 1 の値は、浮動小数点数として存在している必要があります。
命令の結果は弧度法で返され、アキュムレータ 1 に保存されます。アキュムレータ 1 の値に応じて、結果の値の範囲は-π/2～+π/2 (π= 3.14159)となります。
命令が実行されると、ステータスビット CC 0 および CC 1 によって、結果が負であるか、0であるか、正であるかが示されます。数字が許可された数字の範囲内にない場合、ステー
タスビット OV および OS が「1」にセットされます。
アキュムレータ 1 の値が許容値の範囲を超える場合、命令はアキュムレータ 1 に無効な値を書き込み、ステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。浮動小数点数が無効の場合も、命令はステータスビット CC 0、CC 1、OV、および OS を「1」にセットします。
この命令は、アキュムレータ 1 の内容のみに影響します。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

ATAN// 逆正接値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

T "Tag_Result"1184// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.11.6

ロードと転送ロード

L: ロード説明「ロード」命令を使用して、指定されたオペランドの内容をアキュムレータ 1 にロードします。ロード対象のオペランドは、以下のメモリ領域のいずれかでバイト、ワード、またはダブルワードとしてアドレス指定できます。
• 入力および出力(I、Q)のプロセスイメージ• ビットメモリ(M)• 一時ローカルデータ(L)• データブロック(DB、DI)• ポインタ• I/O (PI)• タイマ(T)• カウンタ(C)アキュムレータ 1 のメモリ領域はバイト単位で整理され、32 ビット幅です。
この命令は、ロード対象のオペランドの内容をバイトフォーマットによって右揃えでアキュムレータ 1 に書き込みます。アキュムレータ 1 の残りのバイトは「0」で埋められます。
この命令は、ロード対象のオペランドの内容をワードフォーマットによってアキュムレータ
1 の右ワードに書き込みます。したがって上位アドレス指定されたバイトがアキュムレータ
1 の右バイト(ビット 0～7)に転送されます。下位アドレス指定されたバイトはその左に書き込まれます。アキュムレータ 1 の左ワードの残りのバイトは「0」で埋められます。
この命令は、ロード対象のオペランドの内容をダブルワードフォーマットによってアキュ
ムレータ 1 の 32 ビットに書き込みます。したがって上位アドレス指定されたバイトがア
キュムレータ 1 の右バイト(ビット 0～7)に転送されます。下位アドレス指定されたバイ
トはビット 24～31 に書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1185

基本命令
3.3 STL
次の表に、たとえばアキュムレータ 1 の内容がバイト、ワードおよびダブルワードフォー
マットによるオペランドのロードによって変更されるようすを示します。
アキュムレータ 1

命令
31 . . . . . . 24
バイトのロ 0000

23 . . .

. . . 16

15 . . .

...8

7...

0000

0000

0000

0000

0000

<MB10>

0000

0000

0000

<MB10><MB11><MB12><MB13>...0ード:
L MB10
ワードのロ 0000
ード:
L MW10
ダブルワー <MB10><MB11>

ドのロード:
L MD10指定されたオペランドのロード中、アキュムレータ 1 の前の内容はアキュムレータ 2 に移動されます。「ロード」命令は、アキュムレータ 1 の完全な内容をアキュムレータ 2 に転送します。アキュムレータ 2 の前の内容はこのプロセスで失われます。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。

パラメータ
次の表に、「ロード」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域<Operand> Input

BYTE、WORD、 I、Q、PI、M、説明
内容がロードされるオペ

DWORD、

L、DB、DI、T、 ランド。

SINT、INT、C、ポインタ、

DINT、USINT、パラメータ

UINT、UDINT、
タイマ、REAL、
DATE、TOD、
CHAR

1186

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード// アキュムレータ 1 および 2 の値を乗算。

*R// 積をアキュムレータ 1 に保存。
// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。

L "Tag_Value_3"// オペランド「Tag_Value_3」の値をアキュムレータ 1 にロード// アキュムレータ 1 および 2 の値を加算。

+R// 和をアキュムレータ 1 に保存。
// 結果(アキュムレータ 1 の内容)をオペランド「Tag_Result」に転送。

T "Tag_Result"

L STW: アキュムレータ 1 にステータスワードをロード

説明「アキュムレータ 1 にステータスワードをロード」命令を使用して、ステータスワードを
アキュムレータ 1 にロードします。実行されると、命令は個々のステータスビットをアキュムレータ 1 の右ワードに書き込みます。アキュムレータ 1 の残りのビットは「0」で埋められます。
次の表に、「アキュムレータ 1 にステータスワードをロード」命令の実行後のアキュムレータの内容を示します。
アキュムレータ 1
ビット番号

31-9

8

7

6

5

4

3

2

1

0

内容

0

BR

CC 1

CC 0

OV

OS

0

0

[RLO] 0

命令は、ステータスビットのシグナル状態に関係なく常に実行されます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L STW

// アキュムレータ 1 にステータスワードをロード。

T "Tag_STW"// アキュムレータ 1 の内容(ステータスビット)をオペランド「Tag_STW」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1187

基本命令
3.3 STL

LAR1: AR1 にアキュムレータ 1 の内容をロード

説明「AR1 をアキュムレータ 1 の内容で読み込む」命令を使用して、アキュムレータ 1 の内容をアドレスレジスタ 1 (AR1)にロードします。アキュムレータ 1 の値は POINTER のフォー
マットに対応する必要があります。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L P#10.0//ポインタ(P#10.0)をアキュムレータ 1 にロード。

LAR1// アドレスレジスタ 1 にアキュムレータ 1 の内容をロード。

L MW [AR1,P#4.0]// MW14 をアキュムレータ 1 にロード。

L "Tag_Value"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value」の内容をアキュムレータ 1 にロード。

>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

A I [AR1,P#2.1]// ビット I12.1 のシグナル状態が「1」かどうかをチェックし、現在のRLO で論理積演算。

= "Tag_Output"// 条件が満たされている場合(RLO = 「1」)、オペランド「Tag_Output」を「1」にセット。

LAR1 <D>: AR1 にダブルワードまたはエリアポインタをロード

説明「AR1 にダブルワードまたはエリアポインタをロード」命令を使用して、アドレスレジスタ
1 (AR1)にダブルワードまたは領域内部またはポインタに交差する領域の内容をロードします。ダブルワードの内容は、エリアポインタのフォーマットに一致している必要があり
ます。

1188

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
ポインタおよびダブルワードは、以下のいずれか 1 つのメモリ領域をアドレス指定できます。
• ビットメモリ(M)• 一時ローカルデータ(L)• データブロック(DB、DI)
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

パラメータ「AR1 にダブルワードまたはエリアポインタをロード」命令には、以下の構文を使用します。
パラメータ 宣言

データタイプ

メモリ領域

説明

<D>

DWORD,

D、M、L

内容がロードされるオペ

Input

POINTERランド。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LAR1 P#10.0// アドレスレジスタ 1 にエリア内部ポインタ P#10.0 の内容をロード。

LMW [AR1,P#4.0]// MW14 をアキュムレータ 1 にロード。

L "Tag_Value"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value」の内容をアキュムレータ 1 にロード。

>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

A I [AR1,P#2.1]// ビット I12.1 のシグナル状態が「1」かどうかをチェックし、現在のRLO で論理積演算。

= "Tag_Output"// 条件が満たされている場合(RLO = 「1」)、オペランド「Tag_Output」を「1」にセット。

LAR1 MD20// アドレスレジスタ 1 に MD20 (MD20 = P#30.0)の内容をロード

A I [AR1,P#2.1]// ビット I32.1 のシグナル状態が「1」かどうかをチェックし、現在のRLO で論理積演算。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1189

基本命令
3.3 STL

LAR1 AR2: AR1 に AR2 の内容をロード

説明「AR1 に AR2 の内容をロード」命令を使用して、アドレスレジスタ 2 (AR2)の内容をアドレスレジスタ 1 (AR1)にロードします。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LAR2 P#20.0// アドレスレジスタ 2 にエリア内部ポインタ P#20.0 の内容をロード。

LAR1 AR2// アドレスレジスタ 2 の内容をアドレスレジスタ 1 にコピー。

L MW [AR1,P#4.0]// MW24 をアキュムレータ 1 にロード。

T "Tag_2"// アキュムレータ 1 を「Tag_2」に転送。

LAR2: AR2 にアキュムレータ 1 の内容をロード

説明「AR2 をアキュムレータ 1 の内容で読み込む」命令を使用して、アキュムレータ 1 の内容をアドレスレジスタ 2 (AR2)にロードします。アキュムレータ 1 の値は POINTER のフォー
マットに対応する必要があります。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

例
次の例で、命令がどのように動作するかを示します。

1190

STL

説明

L P#10.0//ポインタ(P#10.0)をアキュムレータ 1 にロード。

LAR2// アドレスレジスタ 2 にアキュムレータ 1 の内容をロード。

L MW [AR2,P#4.0]// MW14 をアキュムレータ 1 にロード。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL

説明

L "Tag_Value"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value」の内容をアキュムレータ 1 にロード。

>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

A I [AR2,P#2.1]// ビット I12.1 のシグナル状態が「1」かどうかをチェックし、現在のRLO で論理積演算。

= "Tag_Output"// 条件が満たされている場合(RLO = 「1」)、オペランド「Tag_Output」を「1」にセット。

LAR2 <D>: AR2 にダブルワードまたはエリアポインタをロード

説明「AR2 にダブルワードまたはエリアポインタをロード」命令を使用して、アドレスレジスタ
2 (AR2)にダブルワードまたは領域内部またはクロスエリアのポインタの内容をロードします。ダブルワードの内容は、エリアポインタ(POINTER)のフォーマットに一致している必
要があります。
ポインタおよびダブルワードは、以下のいずれか 1 つのメモリ領域をアドレス指定できます。
• ビットメモリ(M)• 一時ローカルデータ(L)• データブロック(DB、DI)
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

パラメータ「AR2 にダブルワードまたはエリアポインタをロード」命令には、以下の構文を使用します。
パラメータ 宣言

データタイプ

メモリ領域

説明

<D>

DWORD,

D、M、L

内容がロードされるオペ

Input

POINTERTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ランド。

1191

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

LAR2 P#10.0// アドレスレジスタ 2 にエリア内部ポインタ P#10.0 の内容をロード。

L MW [AR2,P#4.0]// MW14 をアキュムレータ 1 にロード。

L "Tag_Value"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value」の内容をアキュムレータ 1 にロード。

>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

A I [AR2,P#2.1]// ビット I12.1 のシグナル状態が「1」かどうかをチェックし、現在のRLO で論理積演算。

= "Tag_Output"// 条件が満たされている場合(RLO = 「1」)、オペランド「Tag_Output」を「1」にセット。

LAR2 MD20// アドレスレジスタ 2 に MD20 (MD20 = P#30.0)の内容をロード

A I [AR2,P#2.1]// ビット I32.1 のシグナル状態が「1」かどうかをチェックし、現在のRLO で論理積演算。

転送

T: 転送

説明
「転送」命令を使用して、アキュムレータ 1 の内容をバイト、ワードまたはダブルワード
フォーマットで指定されたオペランドに転送します。アキュムレータ 1 の内容はこの命令によって変更されません。指定されたオペランドは、以下のメモリ領域の 1 つでアドレス指定する必要があります。
• 入力および出力(I、Q)のプロセスイメージ• ビットメモリ(M)• 一時ローカルデータ(L)• データブロック(DB、DI)• I/O (PQ)
転送対象のバイト数は、指定されたオペランドのフォーマットによって異なります。オペ
ランドがバイトフォーマットで存在する場合、命令はアキュムレータ 1 のビット 0～7 の内容を転送します。
オペランドがワードフォーマットで存在する場合、この命令はアキュムレータ 1 で右揃えされるワードの内容を転送します。アキュムレータ 1 の右バイトはオペランドの上位アド

1192

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
レス指定されたバイトに転送されます。アキュムレータ 1 のビット 8～15 は、オペラン
ドの下位バイトに転送されます。
指定されたオペランドがダブルワードフォーマットで存在する場合、この命令はアキュム
レータ 1 の内容全体を転送します。アキュムレータ 1 の右バイトはオペランドの上位ア
ドレス指定されたバイトに転送されます。アキュムレータ 1 のビット 24～31 は、オペラ
ンドの最下位バイトに転送されます。
次の表に、アキュムレータ 1 の内容がバイト、ワードおよびダブルワードフォーマットで転送される例を示します。
アキュムレータ 1

命令

23 . . . . . . 16

15 . . . . . . 8

7......0

アキュムレータ 1 バイト(n) バイト(n+1)

バイト(n+2)

バイト(n+3)

ビット

31 . . . . . .
24の内容
バイトの転送バイト(n)

ワードの転送ダブルワードの転 バイト(n)バイト(n+1)

バイト(n)

バイト(n+1)

バイト(n+2)

バイト(n+3)

送CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。

パラメータ
次の表に、「転送」命令のパラメータを示します。
パラメータ 宣言

データタイプ<Operand> Output

BYTE、WORD、 I、Q、PQ、M、 アキュムレータ 1 の内容
DWORD、

メモリ領域
L、DB、DI

説明が転送されるオペランド。

SINT、INT、
DINT、USINT、UINT、UDINT、
タイマ、REAL、
DATE、TOD、
CHAR

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1193

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード// アキュムレータ 1 および 2 の値を乗算。

*R// 積をアキュムレータ 1 に保存。
// 積(アキュムレータ 1 の内容)をオペランド「Tag_Result_1」に転送。

T "Tag_Result_1"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。

L "Tag_Value_3"// オペランド「Tag_Value_3」の値をアキュムレータ 1 にロード// アキュムレータ 1 および 2 の値を加算。

+R// 和をアキュムレータ 1 に保存。
// 合計(アキュムレータ 1 の内容)をオペランド「Tag_Result_2」に転
送T "Tag_Result_2"

T STW: アキュムレータ 1 をステータスワードに転送

説明「アキュムレータ 1 をステータスワードに転送」命令を使用して、アキュムレータ 1 のビ
ット 0～8 をステータスワードに転送します。
次の表に、命令の処理によってステータスビットを上書きするアキュムレータ 1 のビットを示します。
アキュムレータ 1
ビット番号8

ステータスビ BR

7

6

5

4

3

2

1

0

CC 1

CC 0

OV

OS

0

0

[RLO]

0

ット
命令は、ステータスビットのシグナル状態に関係なく常に実行されます。

例
次の例で、命令がどのように動作するかを示します。
STL

1194

説明

L "Tag_STW"// オペランド「Tag_STW」の値をアキュムレータ 1 にロード。

T STW// アキュムレータ 1 のビット 0～8 をステータスワードに転送

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

CAR: AR1 と AR2 を切り替える

説明「AR1 と AR2 を切り替える」命令を使用して、アドレスレジスタ 1 (AR1)と 2 (AR2)の内容を切り替えます。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LAR1 P#10.0// アドレスレジスタ 1 にエリア内部ポインタ P#10.0 の内容をロード。

LAR2 P#20.0// アドレスレジスタ 2 にエリア内部ポインタ P#20.0 の内容をロード。

CAR// アドレスレジスタの内容を切り替え。

L MD [AR1,P#2.0]// MD22 をアキュムレータ 1 にロード。

T MD [AR2,P#2.0]// MD12 をアキュムレータ 2 に転送。

TAR1: AR1 をアキュムレータ 1 に転送

説明「AR1 をアキュムレータ 1 に転送」命令を使用して、アドレスレジスタ 1 (AR1)の内容をア
キュムレータ 1 に転送します。このプロセス中に、アキュムレータ 1 の内容がアキュム
レータ 2 に移動されます。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LAR1 P#15.0// アドレスレジスタ 1 にエリア内部ポインタ P#15.0 の内容をロード。

TAR1// アドレスレジスタ 1 (P#15.0)の内容をアキュムレータ 1 に転送。

T "Tag_Pointer"// アキュムレータ 1 の内容をオペランド「Tag_Pointer」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1195

基本命令
3.3 STL

TAR1 <D>: AR1 をダブルワードに転送

説明「AR1 をダブルワードに転送」命令を使用して、アドレスレジスタ 1 (AR1)の内容をダブルワードに転送します。ダブルワードは、以下のメモリ領域の 1 つでアドレス指定する必要があります。
• ビットメモリ(M)• 一時ローカルデータ(L)• データブロック(DB、DI)
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

パラメータ
次の表に、「AR1 をダブルワードに転送」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

<D>

DWORD

D、M、L

アキュムレータ 1 の内容

Outputが転送されるオペランド。

例
次の例で、命令がどのように動作するかを示します。

1196

STL

説明

TAR1 %DBD20// アドレスレジスタ 1 の内容をダブルワード DBD20 に転送。

TAR1 %DID30// アドレスレジスタ 1 の内容をインスタンスダブルワード DID30 に転送。

TAR1 %LD18// アドレスレジスタ 1 の内容をローカルデータダブルワード LD18 に転送。

TAR1 %MD24// アドレスレジスタ 1 の内容をメモリダブルワード MD24 に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

TAR1 AR2: AR1 を AR2 に転送

説明「AR1 を AR2 に転送」命令を使用して、アドレスレジスタ 1 (AR1)の内容をアドレスレジ
スタ 2 (AR2)にコピーします。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LAR1 P#10.4// アドレスレジスタ 1 にエリア内部ポインタ P#10.4 の内容をロード。

TAR1 AR2// アドレスレジスタ 1 の内容をアドレスレジスタ 2 に転送。

A I [AR2,P#3.2]// ビット I13.6 のシグナル状態が「1」かどうかをチェックし、現在のRLO で論理積演算。

= "Tag1"// オペランド「Tag_1」を「1」にセット

TAR2: AR2 をアキュムレータ 1 に転送

説明「AR2 をアキュムレータ 1 に転送」命令を使用して、アドレスレジスタ 2 (AR2)の内容をア
キュムレータ 1 に転送します。このプロセス中に、アキュムレータ 1 の内容がアキュム
レータ 2 に移動されます。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

LAR2 P#20.0// アドレスレジスタ 2 にエリア内部ポインタ P#20.0 の内容をロード。

TAR2// アドレスレジスタ 2 の内容(P#20.0)をアキュムレータ 1 に転送。

T "Tag_Pointer"// アキュムレータ 1 の内容をオペランド「Tag_Pointer」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1197

基本命令
3.3 STL

TAR2 <D>: AR2 をダブルワードに転送

説明「AR2 をダブルワードに転送」命令を使用して、アドレスレジスタ 2 (AR2)の内容をダブルワードに転送します。ダブルワードは、以下のメモリ領域の 1 つでアドレス指定する必要があります。
• ビットメモリ(M)• 一時ローカルデータ(L)• データブロック(DB、DI)
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

パラメータ
次の表に、「AR2 をダブルワードに転送」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

<D>

DWORD

D、M、L

アキュムレータ 2 の内容

Outputが転送されるオペランド。

例
次の例で、命令がどのように動作するかを示します。

1198

STL

説明

TAR2 %DBD20// アドレスレジスタ 2 の内容をダブルワード DBD20 に転送。

TAR2 %DID30// アドレスレジスタ 2 の内容をインスタンスダブルワード DID30 に転送。

TAR2 %LD18// アドレスレジスタ 2 の内容をローカルデータダブルワード LD18 に転送。

TAR2 %MD24// アドレスレジスタ 2 の内容をメモリダブルワード MD24 に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.11.7

変換操作

BTI: BCD を整数(16 ビット)に変換

説明「BCD を整数(16 ビット)に変換」命令を使用して、アキュムレータ 1 の右ワードの値を 16
ビット整数に変換します。この命令は、変換するワードを 3 桁の 2 進化 10 進数(BCD)として解釈します。
アキュムレータ 1 のビット 1～11 は、変換する値を示しています。「-999」～「+999」の範囲の値が有効です。
結果値の符号は、アキュムレータ 1 のビット 15 から読み出されます。ビットのシグナル
状態が「0」の場合、符号は正です。ビットのシグナル状態が「1」の場合、符号は負です。
ビット 12～14 は、変換に使用されません。
BCD コードに BCD エラーが含まれている場合、CPU はステータスワードの OV および OS
ビットをセットします。
変換の結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワー
ドの内容は、命令に影響されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// BCD をアキュムレータ 1 にロード。

BTI// BCD を 16 ビット整数に変換。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。
ಯಯ

ಯಯ



ಯ7DJB,QSXWಯ

%7,
ಯ7DJB2XWSXWಯಯಯ



ಯಯ



%&'

㠃㟿%&'ት㠃㟿 ኰአእ ቎⮘㙪

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020



1199

基本命令
3.3 STLITB: 整数(16 ビット)を BCD に変換

説明「整数(16 ビット)を BCD に変換」命令を使用して、アキュムレータ 1 の右ワードの値を 3
桁の 2 進化 10 進数(BCD)に変換します。この命令は、変換する値を 16 ビット整数として解釈します。
アキュムレータ 1 のビット 0～11 は、変換する値を示しています。「-999」～「+999」の範囲の値が有効です。変換される数値がこの範囲にない場合、ビット OV および OS がシグナル状態「1」にセットされます。この場合、変換は実行されません。
結果値の符号は、アキュムレータ 1 のビット 12～15 から読み出されます。ビットのシグ
ナル状態が「0」の場合、符号は正です。4 つのすべてのビットのシグナル状態が「1」の場合、符号は負です。
変換の結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワー
ドの内容は、命令に影響されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 整数(16 ビット)をアキュムレータ 1 にロード。

ITB// 整数を BCD に変換。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。

ಯ7DJB,QSXWಯ
,7%
ಯ7DJB2XWSXWಯ

1200













㠃㟿%&'㠃㟿 ኰአእ ት%&'቎⮘㙪







ಯಯ

ಯಯ

ಯಯ

ಯಯ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

BTD: BCD を整数(32 ビット)に変換

説明「BCD を整数(32 ビット)に変換」命令を使用して、アキュムレータ 1 の値を 32 ビット整数に変換することができます。この命令は、変換する値を 7 桁の 2 進化 10 進数(BCD)として解釈します。
アキュムレータ 1 のビット 0～27 は、変換する値を示しています。「-9999999」～「+9999999」の範囲の値が有効です。
結果値の符号は、アキュムレータ 1 のビット 31 から読み出されます。ビットのシグナル
状態が「0」の場合、符号は正です。ビットのシグナル状態が「1」の場合、符号は負です。
ビット 28～30 は、変換に使用されません。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。
BCD コードに BCD エラーが含まれている場合、CPU はステータスワードの OV および OS
ビットをセットします。

例
次の例で、命令がどのように動作するかを示します。
説明

STL
L "Tag_Input"// BCD をアキュムレータ 1 にロード。

BTD// BCD が 32 ビット整数に変換される。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。
ಯಯ

ಯಯ

ಯಯ

%7'
ಯ7DJB2XWSXWಯಯಯ 


ಯ7DJB,QSXWಯ

ಯಯ

ಯಯ

ಯಯ

ಯಯ


        
%&'ት㠃㟿 ኰአእ ቎⮘㙪        

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1201

基本命令
3.3 STL

ITD: 整数(16 ビット)を整数(32 ビット)に変換

説明「整数(16 ビット)を整数(32 ビット)に変換」命令を使用して、アキュムレータ 1 の右ワードの値を 32 ビット整数に変換します。この命令は、変換する値を 16 ビット整数として解釈します。
ビット 0～15 は、変換に使用されません。結果値のビット 16～31 には、ビット 15 のシグナル状態が入力されます。
結果値はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 整数(16 ビット)をアキュムレータ 1 にロード。

ITD// 整数(16 ビット)を整数(32 ビット)に変換。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令の処理前および処理後のアキュムレータ 1 の内容を示します。
アキュムレータ 1

ステータス
31 . . . . . . .

....

. . .16

15 . . .

....

....

. . .0

処理前

XXXX

XXXX

XXXX

XXXX

1111

1111

1111

0110

処理後

1111

1111

1111

1111

1111

1111

1111

0110

X:ビットのシグナル状態は、変換とは無関係です。

DTB: 整数(32 ビット)を BCD に変換

説明「整数(32 ビット)を BCD に変換」命令を使用して、アキュムレータ 1 の値を 7 桁の 2 進化
10 進数(BCD)に変換します。この命令は、変換する値を 32 ビット整数として解釈します。
アキュムレータ 1 のビット 0～27 は、変換する値を示しています。「-9999999」～「+9999999」の範囲の値が有効です。変換される数値がこの範囲にない場合、ビット OVおよび OS がシグナル状態「1」にセットされます。この場合、変換は実行されません。

1202

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
結果値の符号は、アキュムレータ 1 のビット 28～31 から読み出されます。ビットのシグ
ナル状態が「0」の場合、符号は正です。4 つのすべてのビットのシグナル状態が「1」の場合、符号は負です。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 整数(32 ビット)をアキュムレータ 1 にロード

DTB// 整数(32 ビット)を BCD に変換

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。
 


ಯ7DJB,QSXWಯ       

'7%
ಯ7DJB2XWSXWಯ㠃㟿㠃㟿 ኰአእ ት%&'቎⮘㙪       
ಯಯ

ಯಯ

ಯಯ

ಯಯ

ಯಯ

ಯಯ

ಯಯ
ಯಯ
%&'DTR: 整数(32 ビット)を浮動小数点数に変換

説明「整数(32 ビット)を浮動小数点数に変換」を使用して、アキュムレータ 1 の値を浮動小数点数に変換します。この命令は、変換する値を 32 ビット整数として解釈します。
32 ビット整数のほうが浮動小数点数よりも確度が高いため、変換の結果は次の表現可能な数値で四捨五入されます。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1203

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 整数(32 ビット)をアキュムレータ 1 にロード

DTR// 整数(32 ビット)を浮動小数点数に変換。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。
7DJB,QSXW
'75       


7DJB,QSXW㠃㟿㠃㟿 ኰአእ ት㿽╤⺞㟿䍈㟿቎⮘㙪





       
ኰአእⅽ㟿ኰአእ㖖㟿

,((()3

ኰአእ
ⅽ㟿ቑ䶵⚆

INVI: 1 の補数整数(16 ビット)の作成

説明「1 の補数整数(16 ビット)の作成」命令を使用して、アキュムレータ 1 の右ワードの値を
ビット対ビットで反転します。
実行時に、この命令はアキュムレータ 1 の右ワードの個々のビットのシグナル状態を反転させます。1 は 0 に置き換えられ、0 は 1 に置き換えられます。
結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワードの内容
は、命令に影響されません。

例
次の例で、命令がどのように動作するかを示します。

1204

STL

説明

L "Tag_Input"// 値をアキュムレータ 1 にロード

INVI// 1 の補数を作成

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値
15 . . .

....

....

. . .0

Tag_Input

0110

0011

1010

1110

Tag_Output

1001

1100

0101

0001

INVD: 1 の補数倍精度整数(32 ビット)の作成

説明「1 の補数整数(32 ビット)の作成」命令を使用して、アキュムレータ 1 の値をビット対ビットで反転します。
実行中に、この命令はアキュムレータ 1 の個々のビットのシグナル状態を反転させます。1
は 0 に置き換えられ、0 は 1 に置き換えられます。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 値をアキュムレータ 1 にロード

INVD// 1 の補数を作成

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値
31 . . . . . . .

....

. . .16 15 . . . . . . .

....

. . .0

Tag_Input

0110

1111

1000

1100

0110

0011

1010

1110

Tag_Output

1001

0000

0111

0011

1001

1100

0101

0001

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1205

基本命令
3.3 STL

NEGI: 負の整数(16 ビット)

説明
「負の整数(16 ビット)」命令を使用して、アキュムレータ 1 の右ワードの値の符号を 2 の補数を形成することによって変更します。命令はアキュムレータ 1 の値を 16 ビット整数として解釈します。
命令の処理は、「-1」での乗算と等しくなります。命令の結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワードの内容は、命令に影響されません。
「負の整数(16 ビット)」命令はステータスビット CC 0、CC 1、OV、および OS に影響します。次の表に、命令が結果によってステータスビットに影響するようすを示します。
結果:

CC 1

CC 0

OV

OS

+1～+32 767

1

0

0

-

0

0

0

0

-

-1～-32 767

0

1

0

-

(-) 32 768

0

1

1

1

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 値をアキュムレータ 1 にロード

NEGI// 負の整数(16 ビット)

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

1206

値
15 . . .

....

....

. . .0

Tag_Input

0101

1101

0011

1000

Tag_Output

1010

0010

1100

1000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

NEGD: 負の整数(32 ビット)

説明
「負の整数(32 ビット)」命令を使用して、アキュムレータ 1 の値の符号を 2 の補数を形成することによって変更します。命令はアキュムレータ 1 の値を 32 ビット整数として解釈します。
命令の処理は、「-1」での乗算と等しくなります。命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。
「負の整数(32 ビット)」命令はステータスビット CC 0、CC 1、OV、および OS に影響します。次の表に、命令が結果によってステータスビットに影響するようすを示します。
結果

CC 1

CC 0

OV

OS

+1～+2147483647

1

0

0

-

0

0

0

0

-

-1～-2147483647

0

1

0

-

(-) 2147483648

0

1

1

1

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 値をアキュムレータ 1 にロード

NEGD// 負の整数(32 ビット)。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
ステータス

値
31 . . .

....

....

. . .16

15 . . . . . . .

....

. . .0

Tag_Input

0101

1111

0110

0100

0101

1101

0011

1000

Tag_Output

1010

0000

1001

1011

1010

0010

1100

1000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1207

基本命令
3.3 STL

NEGR: 負の浮動小数点数

説明「負の浮動小数点数」命令は、仮数の符号を反転します。この命令は、「-1」による乗算と同じです。
この命令は、アキュムレータ 1 の値を浮動小数点数として解釈します。仮数の符号は、浮動小数点数のビット 31 に入っています。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。
この命令はステータスビットには影響しません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 浮動小数点数をアキュムレータ 1 にロード

NEGR// 負の浮動小数点数。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Input

1.5E+02

Tag_Output-1.5E+02

CAW: アキュムレータ 1 の右ワードのバイトを切り替える説明「アキュムレータ 1 の右ワードのバイトを切り替える」命令を使用して、アキュムレータ 1の右ワードの右側の 2 つのバイトの順番を切り替えます。
次の表に、命令の処理前および処理後のアキュムレータ 1 の内容を示します。
アキュムレータ 1 のバイト

ステータス

1208

処理前

A

B

C

D

処理後

A

B

D

C

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
命令の結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワー
ドのバイトは命令に影響されず、変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 値をアキュムレータにロード。

CAW// アキュムレータ 1 の右ワードのバイトを切り替える。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Input

0000

1111

0000

1111

Tag_Output

0000

1111

1111

0000

CAD: アキュムレータ 1 のすべてのバイトを切り替える説明「アキュムレータ 1 のすべてのバイトを切り替える」命令を使用して、アキュムレータ 1のバイトの順番を入れ替えます。
次の表に、命令の処理前および処理後のアキュムレータ 1 の内容を示します。
アキュムレータ 1 のバイト

ステータス
処理前

A

B

C

D

処理後

D

C

B

A

命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// オペランドの値をアキュムレータ 1 にロード。

CAD// アキュムレータ 1 のバイトを入れ替え。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1209

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Input

1111

0000

0000

1111

0000

0000

1111

1111

Tag_Output

1111

1111

0000

0000

0000

1111

1111

0000

RND: 数値の四捨五入

説明「数値の四捨五入」命令を使用して、アキュムレータ 1 の値を 32 ビット整数に変換します。この命令は、変換する値を浮動小数点数として解釈し、次の整数に四捨五入します。
浮動小数点数がちょうど偶数と奇数の中間にある場合は、結果として偶数が選択されます。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。
次のいずれかの条件に該当する場合、変換は実行されず、ステータスビット OV および OSがセットされます。
• アキュムレータ 1 の値が有効な浮動小数点数でない。
• 結果が、データタイプ DINT の整数に許可されている範囲を超えている。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 浮動小数点数をアキュムレータ 1 にロード

RND// 浮動小数点数を整数に四捨五入。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1210

オペランド

値

Tag_Input

101.5-101.5

Tag_Output

102

-102

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLTRUNC: 数値の切り捨て

説明「数値を切り捨てる」命令を使用して、アキュムレータ 1 の値を 32 ビット整数に変換します。この命令は、変換する値を浮動小数点数として解釈し、結果として整数を返します。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。
次のいずれかの条件に該当する場合、変換は実行されず、ステータスビット OV および OSがセットされます。
• アキュムレータ 1 の値が有効な浮動小数点数でない。
• 結果が、データタイプ DINT の整数に許可されている範囲を超えている。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 浮動小数点数をアキュムレータ 1 にロード

TRUNC// 浮動小数点数をデータタイプ DINT の整数に変換。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Input

101.5-101.5

Tag_Output

101

-101

RND+: 浮動小数点数から次に大きい整数を生成

説明「浮動小数点数から次に大きい整数を生成」命令を使用して、アキュムレータ 1 の値を 32
ビット整数に変換します。この命令は、変換する値を浮動小数点数として解釈し、次に大きい整数に四捨五入します。命令の結果は、変換する浮動小数点数以上のデータタイプ
DINT の数値です。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1211

基本命令
3.3 STL
次のいずれかの条件に該当する場合、変換は実行されず、ステータスビット OV および OSがセットされます。
• アキュムレータ 1 の値が有効な浮動小数点数でない。
• 結果が、データタイプ DINT の整数に許可されている範囲を超えている。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 浮動小数点数をアキュムレータ 1 にロード

RND+// 浮動小数点数を次に大きい整数に四捨五入。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Input

100.5-100.5

Tag_Output

101

-100

RND-: 浮動小数点数から次に小さい整数を生成

説明「浮動小数点数から次に小さい整数を生成」命令を使用して、アキュムレータ 1 の値を 32
ビット整数に変換します。この命令は、変換する値を浮動小数点数として解釈し、浮動小数点数の値を次に小さい整数に四捨五入します。命令の結果は、変換する浮動小数点数以下のデータタイプ DINT の数値です。
命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。
次のいずれかの条件に該当する場合、変換は実行されず、ステータスビット OV および OSがセットされます。
• アキュムレータ 1 の値が有効な浮動小数点数でない。
• 結果が、データタイプ DINT の整数に許可されている範囲を超えている。

1212

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input"// 浮動小数点数をアキュムレータ 1 にロード

RND-// 浮動小数点数を次に小さい整数に四捨五入。

T "Tag_Output"// 結果をオペランド「Tag_Output」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.3.11.8

オペランド

値

Tag_Input

100.5-100.5

Tag_Output

100

-101

プログラム制御演算

ジャンプ

ジャンプラベル

説明
ジャンプラベルを使用して、ジャンプ後にプログラムの実行が再開されるプログラム内の場所を指定します。ジャンプラベルの名前は、128 個までの文字、数字、アンダースコアで構成することができます。
ジャンプラベルとジャンプラベルを指定する命令は、同じブロックに置く必要があります。
ジャンプラベルの名前は、ブロック内で 1 回のみ割り当てることができます。各ジャンプ
ラベルから複数の位置にジャンプできます。最大 256 のジャンプラベルを宣言できます。
ジャンプは順方向と逆方向のどちらも可能です。
ジャンプラベルに関する以下の文法規則を守ってください。
• 文字(a～z、A～Z)• 文字と数字の組み合わせ。順序が正しいことをチェックします。たとえば、最初が文字、次に数字(a～z、A～Z、0～9)。
• 特殊文字、または文字と数字の組み合わせを逆の順序で使用することはできません。たとえば、最初が数字、次に文字(0～9、a～z、A～Z)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1213

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input_1"// 最初の比較値をロード。

L "Tag_Input_2"// 2 番目の比較値をロード。

>I// オペランド「Tag_Input_1」の値がオペランド「Tag_Input_2」の値よりも大きいかどうかをチェック。

JC MyLABEL// スキャン結果が「1」の場合、ジャンプラベル「MyLABEL」にジャンプし、プログラムの処理を続行// 問い合わせの結果が「0」の場合、次の命令を実行。

L "Tag_Input_3"// オペランド「Tag_Input_3」の内容をアキュムレータ 1 にロード。

T "Tag_Output"// アキュムレータ 1 の内容をオペランド「Tag_Output」にロード。

MyLABEL:A "Tag_Input_4"// ジャンプがあった場合、この箇所でプログラム実行を続行。
// オペランド「Tag_Input_4」が「1」かどうかを照会

JU: 条件なしジャンプ

説明「条件なしジャンプ」命令を使用して、線形プログラム実行を解釈し、指定されたジャン
プラベルによってマーキングされた箇所で続行します。この命令は条件に関係なく常に実行されます。
「条件なしジャンプ」命令はステータスビットには影響しません。

パラメータ
次の表に、「条件なしジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。

1214

STL

説明

L "Tag_Input_1"// 最初の比較値をロード。

L "Tag_Input_2"// 2 番目の比較値をロード。

>I// オペランド「Tag_Input_1」の値がオペランド「Tag_Input_2」の値よりも大きいかどうかをチェック。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL説明JC MyLABEL_1// スキャン結果が「1」の場合、ジャンプラベル「MyLABEL_1」にジャンプし、プログラムの処理を続行

L "Tag_Input_3"// オペランド「Tag_Input_3」の内容をアキュムレータ 1 にロード。

T "Tag_Output_1"// アキュムレータ 1 の内容をオペランド「Tag_Output_1」にロード。

JU MyLABEL_2// ジャンプラベル「MyLABEL_2」にジャンプし、プログラムの実行をそこから再開。

MyLABEL_1:// ジャンプラベル

L "Tag_Input_4"// オペランド「Tag_Input_4」の内容をアキュムレータ 1 にロード。

// 照会の結果が「0」の場合、線形プログラムの実行を続行。

T "Tag_Output_2"// アキュムレータ 1 の内容をオペランド「Tag_Output_2」にロード。

MyLABEL_2:A "Tag_Input_5"// ジャンプラベル「MyLABEL_2」// オペランド「Tag_Input_5」が「1」かどうかを照会

JC:RLO = 1 ならばジャンプ

説明「RLO = 1 ならばジャンプ」命令を使用して、線形プログラム実行を論理演算の結果に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。
指定されたジャンプラベルへのジャンプは、現在の RLO が「1」の場合にのみ実行されます。命令前の現在の RLO が「0」の場合、ジャンプは実行されずプログラムは次の命令で再開されます。
「RLO = 1 ならばジャンプ」命令は、条件が満たされている場合、満たされていない場合を問
わず RLO を「1」にセットします。

パラメータ
次の表に、「RLO = 1 ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input_1"// 最初の比較値をロード。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1215

基本命令
3.3 STLSTL

説明

L "Tag_Input_2"// 2 番目の比較値をロード。

>I// オペランド「Tag_Input_1」の値がオペランド「Tag_Input_2」の値よりも大きいかどうかをチェック。

JC MyLABEL// RLO = 「1」の場合、ジャンプラベル「MyLABEL」にジャンプし、そこでプログラム実行を続行。

L "Tag_Input_3"// オペランド「Tag_Input_3」の内容をアキュムレータ 1 にロード。

// RLO = 「0」の場合、次の命令を実行。
T "Tag_Output_1"// アキュムレータ 1 の内容をオペランド「Tag_Output_1」にロード。

MyLABEL: L "Tag_Input_4"// ジャンプがあった場合、この箇所でプログラム実行を続行。

T "Tag_Output_2"// アキュムレータ 1 の内容をオペランド「Tag_Output_2」に転送。

// オペランド「Tag_Input_4」の内容をアキュムレータ 1 にロード。

JCN: RLO = 0 ならばジャンプ

説明「RLO = 0 ならばジャンプ」命令を使用して、線形プログラム実行を論理演算の結果(RLO)に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。
指定されたジャンプラベルへのジャンプは、現在の RLO が「0」の場合にのみ実行されます。命令前の現在の RLO が「1」の場合、ジャンプは実行されずプログラムは次の命令で再開されます。
「RLO = 0 ならばジャンプ」命令は、条件が満たされている場合、満たされていない場合を問
わず RLO を「1」にセットします。

パラメータ
次の表に、「RLO = 0 ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。

1216

STL

説明

A "Tag_Input_1"// オペランド「Tag_Input_1」の値が「1」かどうかを照会し、論理積演算。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL

説明A "Tag_Input_2"// オペランド「Tag_Input_2」の値が「1」かどうかを照会し、論理積演算。

JCN MyLABEL// RLO = 「0」の場合、ジャンプラベル「MyLABEL」にジャンプし、そこでプログラム実行を続行。
// RLO = 「1」の場合、次の命令を実行。

L "Tag_Input_3"// オペランド「Tag_Input_3」の内容をアキュムレータ 1 にロード。

T "Tag_Output"// アキュムレータ 1 の内容をオペランド「Tag_Output」にロード。

MyLABEL:A "Tag_Input_4"// ジャンプがあった場合、この箇所でプログラム実行を続行。
// オペランド「Tag_Input_4」の値が「1」かどうかを照会し、RLO で
論理積演算

JCB:RLO = 1 ならばジャンプして RLO を保存

説明「RLO = 1 ならばジャンプして RLO を保存」命令を使用して、線形プログラム実行を論理演算の結果(RLO)に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。同時に、現在の RLO のシグナル状態がバイナリ結果(BR)にコピーされます。
指定されたジャンプラベルへのジャンプは、現在の RLO が「1」の場合にのみ実行されます。この場合、パラメータがバイナリ結果「1」にセットされます。
命令前の現在の RLO が「0」の場合、ジャンプは実行されずプログラムは次の命令で再開されます。この場合、命令はバイナリ結果にシグナル状態「0」を割り当てます。
「RLO = 1 ならばジャンプして RLO を保存」命令は、条件が満たされている場合、満たされていない場合を問わず RLO を「1」にセットします。

パラメータ
次の表に、「RLO = 1 ならばジャンプして RLO を保存」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Input_1"// 最初の比較値をロード。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1217

基本命令
3.3 STLSTL

説明

L "Tag_Input_2"// 2 番目の比較値をロード。

>I// オペランド「Tag_Input_1」の値がオペランド「Tag_Input_2」の値よりも大きいかどうかをチェック。

JCB MyLABEL// 現在の RLO を BR にコピー。
// RLO = 「1」の場合、ジャンプラベル「MyLABEL」にジャンプし、そこでプログラム実行を続行。
// RLO = 「0」の場合、次の命令を実行。

L "Tag_Input_3"// オペランド「Tag_Input_3」の内容をアキュムレータ 1 にロード。

T "Tag_Output_1"// アキュムレータ 1 の内容をオペランド「Tag_Output_1」にロード。

MyLABEL: L "Tag_Input_4"// ジャンプがあった場合、この箇所でプログラム実行を続行。

T "Tag_Output_2"// アキュムレータ 1 の内容をオペランド「Tag_Output_2」にロード。

// オペランド「Tag_Input_4」の内容をアキュムレータ 1 にロード。

JNB: RLO = 0 ならばジャンプして RLO を保存

説明「RLO = 0 ならばジャンプして RLO を保存」命令を使用して、線形プログラム実行を論理演算の結果(RLO)に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。同時に、現在の論理演算の結果のシグナル状態がバイナリ
結果(BR)にコピーされます。
指定されたジャンプラベルへのジャンプは、現在の RLO が「0」の場合にのみ実行されます。この場合、命令はバイナリ結果を「0」にセットします。
命令前の現在の RLO が「1」の場合、ジャンプは実行されずプログラムは次の命令で再開されます。この場合、命令はバイナリ結果にシグナル状態「1」を割り当てます。
「RLO = 0 ならばジャンプして RLO を保存」命令は、条件が満たされている場合、満たされていない場合を問わず RLO を「1」にセットします。

パラメータ
次の表に、「RLO = 0 ならばジャンプして RLO を保存」命令のパラメータを示します。

1218

パラメータ

説明

<Jump label>

ジャンプ先のシンボル名

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input_1"// オペランド「Tag_Input_1」の値が「1」かどうかを照会し、論理積演算。

A "Tag_Input_2"// オペランド「Tag_Input_2」の値が「1」かどうかを照会し、論理積演算。

JNB MyLABEL// 現在の RLO を BR にコピー。
// RLO = 「0」の場合、ジャンプラベル「MyLABEL」にジャンプし、そこでプログラム実行を続行。
// RLO = 「1」の場合、次の命令を実行。

L "Tag_Input_3"// オペランド「Tag_Input_3」の内容をアキュムレータ 1 にロード。

T "Tag_Output"// アキュムレータ 1 の内容をオペランド「Tag_Output」に転送。

MyLABEL:A "Tag_Input_4"// ジャンプがあった場合、この箇所でプログラム実行を続行。
// オペランド「Tag_Input_4」の値が「1」かどうかを照会し、RLO で
論理積演算

JBI:BR = 1 ならばジャンプ

説明「BR = 1 ならばジャンプ」命令を使用して、線形プログラム実行をバイナリ結果に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。
指定されたジャンプラベルへのジャンプは、ステータスビット BR が「1」の場合にのみ実行されます。ステータスビット BR が「0」の場合、ジャンプは実行されずプログラムは次の命令で再開します。

パラメータ
次の表に、「BR = 1 ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

SET

// ブロックの開始で RLO を「1」にセット

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1219

基本命令
3.3 STL
STL

説明

SAVE

// RLO のシグナル状態を BR ビットに転送。

....

// 任意のプログラム

ANOV// ブロックの終了で OV ビットを照会。

SAVE// オーバーフローがない場合、BR ビットを「0」にセット。
// オーバーフローがない場合、BR を「1」にセット。

JBI END// BR = 「1」の場合、ジャンプラベル END にジャンプ。
// BR = 「0」の場合、次の命令を実行。

R "Tag_Output_1"// オペランド「Tag_Output_1」を「0」にリセット。

END: S "Tag_Output_2"// オペランド「Tag_Output_2」を「1」にセット

JNBI:BR = 0 ならばジャンプ

説明「BR = 0 ならばジャンプ」命令を使用して、線形プログラム実行をバイナリ結果(BR)に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。
指定されたジャンプラベルへのジャンプは、ステータスビット BR が「0」の場合にのみ実行されます。命令の前のステータスビット BR が「1」の場合、ジャンプは実行されずプ
ログラムは次の命令で再開します。

パラメータ
次の表に、「BR = 0 ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

SET

// ブロックの開始で RLO を「1」にセット

SAVE// RLO のシグナル状態を BR ビットに転送。

....

// 任意のプログラム

ANOV// ブロックの終了で OV ビットを照会。

SAVE// オーバーフローがない場合、BR ビットを「0」にセット。
// オーバーフローがない場合、BR を「1」にセット。

1220

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL説明JNBI END// BR = 「0」の場合、ジャンプラベル END にジャンプ。
// BR = 「1」の場合、次の命令を実行。

S "Tag_Output"// オペランド「Tag_Output」を「1」にセット

END: BE// ブロックの終了

JO:OV = 1 ならばジャンプ

説明「OV = 1 ならばジャンプ」命令を使用して、線形プログラム実行をステータスビット OV に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。
指定されたジャンプラベルへのジャンプは、ステータスビット OV が「1」の場合にのみ実行されます。ステータスビット OV は、たとえば計算の結果が許容範囲を超えている場合や浮動小数点数の比較中に無効な値が返された場合にセットされます。
ステータスビット OV が「0」の場合、ジャンプは実行されずプログラムは次の命令で続行
します。

パラメータ
次の表に、「OV = 1 ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// 値をロード

L "Tag_Value_2"// 値をロード*I// 値を乗算JO OVER// ステータスビット OV のシグナル状態が「1」の場合、ジャンプラベル「OVER」にジャンプし、そこでプログラム実行を続行。
// ステータスビット OV のシグナル状態が「0」の場合、次の命令を実行。

T "Tag_Result"// 乗算結果をオペランド「Tag_Result」に転送。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1221

基本命令
3.3 STL
STL
OVER: SET説明// 条件(OV = 「1」)を満たす場合、この箇所でプログラム実行を続行。
// RLO をシグナル状態「1」にセット

R "Tag_Output"// オペランド「Tag_Output」を「0」にリセット。

NEXT:A "MyTag_1"// ジャンプラベル「NEXT」// オペランド「MyTag_1」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_2"// オペランド「MyTag_2」の値が「1」かどうかを照会し、論理積演算。

S "Tag_Output_2"// RLO = 1 の場合、オペランド「Tag_Output_2」を「1」にセット。

JOS:OS = 1 のときにジャンプ

説明「OS = 1 ならばジャンプ」命令を使用して、線形プログラム実行をステータスビット OS に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所で処理を再開します。
指定されたジャンプラベルへのジャンプは、ステータスビット OS が「1」の場合にのみ実行されます。ステータスビット OS は、番号範囲オーバーフローがステータスビット OV を「1」にセットすると常にセットされます。ステータスビット OV とは異なり、その後の結果
が数値の許容範囲内であったとしてもステータスビット OS はセットされたままの状態となります。
ステータスビット OS が「0」の場合、ジャンプは実行されずプログラムは次の命令で続行
します。

パラメータ
次の表に、「OS = 1 ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。

1222

STL

説明

L "Tag_Value_1"// 値をロード

L "Tag_Value_2"// 値をロード

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

*I

// ロード値を乗算。
// 積をアキュムレータ 1 に保存。

L "Tag_Value_3"// 値をロード+I// ロード値を積に加算。
// 積をアキュムレータ 1 に保存。

L "Tag_Value_4"// 値をロード-I// 計算済み合計からロード値を減算。
// 積をアキュムレータ 1 に保存。

JOS OVER// 先行する 3 つの命令のいずれか 1 つでオーバーフローが発生する場
合、ステータスビット OS は「1」にセットされます。
// ステータスビット OS のシグナル状態が「1」の場合、プログラムはジャンプラベル「OVER」から再開します。
// ステータスビット OS のシグナル状態が「0」の場合、次の命令を実行。

T "Tag_Result"// 計算全体の結果をオペランド「Tag_Result」に転送

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

OVER: SET// 条件(OV = 「1」)を満たす場合、この箇所でプログラム実行を続行。
// RLO をシグナル状態「1」にセット

R "Tag_Output"// オペランド「Tag_Output」を「0」にリセット。

NEXT:A "MyTag_1"// ジャンプラベル「NEXT」// オペランド「MyTag_1」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_2"// オペランド「MyTag_2」の値が「1」かどうかを照会し、論理積演算。

S "Tag_Output_2"// RLO = 1 の場合、オペランド「Tag_Output_2」を「1」にセット。

JZ: 結果がゼロならばジャンプ

説明「結果が 0 ならばジャンプ」命令を使用して、線形プログラム実行をステータスビット CC 0
および CC 1 に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所から続行します。
指定されたジャンプラベルへのジャンプは、ステータスビット CC 0 と CC 1 の両方のシグナル状態が「0」の場合にのみ実行されます。この状況は、次の条件の 1 つに該当すると発生します。
• オーバーフローなしで算術命令を処理した後に、アキュムレータ 1 の値が「0」であること。
• 「整数加算(16 ビット)」(+I)命令または「整数加算(32 bit)」(+D)命令の実行時に負のオーバーフローが発生していること。
• 算術命令(浮動小数点計算)がオーバーフローありで処理されているときに、この値が次第に許容範囲を下回って低下していること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1223

基本命令
3.3 STL• アキュムレータ 2 の内容が、比較命令の実行後にアキュムレータ 1 の内容に等しいこと。
• アキュムレータ 1 の内容が、ワード論理演算の実行後にゼロであること。
• シフト命令の実行後、最後にシフトアウトされたビットの値が「0」であること。
それ以外のすべての場合、ジャンプは実行されずプログラムの処理は次の命令で再開され
ます。

パラメータ
次の表に、
「結果がゼロならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// オペランド「Tag_Value」の値をロード。

SRW 1// アキュムレータ 1 の右ワードの内容を右へ場所を 1 つシフトする。

JZ ZERO// 最後にシフトされたビットのシグナル状態が「0」の場合、ジャンプ
ラベル「OVER」へジャンプし、そこからプログラム処理を続行// 最後にシフトされたビットのシグナル状態が「1」の場合、次の命令を実行。

L "MyTag_1"// オペランド「MyTag_1」の値をアキュムレータ 1 にロード

INC 1// アキュムレータ 1 の右側のバイトに値「1」を加算。

T "Tag_Result_1"// 結果をオペランド「Tag_Result_1」に転送。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

ZERO: L "MyTag_2"// ジャンプラベル「ZERO」// オペランド「MyTag_2」の値をアキュムレータ 1 にロード

INC 1// アキュムレータ 1 の右側のバイトに値「1」を加算。

T "Tag_Result_2"// 結果をオペランド「Tag_Result_2」に転送。

NEXT:A "MyTag_3"// ジャンプラベル「NEXT」// オペランド「MyTag_3」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_4"

1224// オペランド「MyTag_4」の値が「1」かどうかを照会し、論理積演算。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

JN: 結果がゼロでないならばジャンプ

説明「結果が 0 でないならばジャンプ」命令を使用して、線形プログラム実行をステータスビ
ット CC 0 および CC 1 に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所から続行します。
指定されたジャンプラベルへのジャンプは、ステータスビット CC 0 および CC 1 のシグナル状態が異なる場合にのみ実行されます。この状況は、次の条件の 1 つに該当すると発生します。
• オーバーフローなしで算術命令を処理した後に、アキュムレータ 1 の値がゼロに等しくないこと。
• 整数(+I、-I、*I、+D、-D、*D)によって算術命令を処理したときに、負のオーバーフロ
ーが発生していること。
• 整数(+I、-I、*I、/I、+D、-D、*D、/D、NEGI、NEGD)によって算術命令を実行したときに、正のオーバーフローが発生していること。
• 算術命令を浮動小数点数によって処理したときに、正または負のオーバーフローが発生していること。
• アキュムレータ 2 の内容が、比較命令の実行後にアキュムレータ 1 の内容に等しくな
いこと。
• アキュムレータ 1 の内容が、ワード論理演算の実行後にゼロでないこと。
• シフト命令の実行後、最後にシフトアウトされたビットの値が「1」であること。
それ以外のすべての場合、ジャンプは実行されずプログラムの処理は次の命令で再開され
ます。

パラメータ
次の表に、「結果がゼロでないならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1225

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Valu_1」の値をロード。

L "Tag_Value_2"// オペランド「Tag_Value_2」の値をロード。

XOW// 排他的論理和演算を適用

JN NOZERO// アキュムレータ 1 の値がゼロに等しくない場合、「NOZERO」ジャンプ
ラベルへのジャンプが実行されプログラム処理はそこから続行。
// アキュムレータ 1 の値がゼロに等しい場合、次の命令が処理される。

AN "MyTag_1"// オペランド「MyTag_1」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_1"// RLO=「1」の場合、オペランド「Tag_Output_1」を「1」にセット。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

NOZERO:AN "MyTag_2"// ジャンプラベル「NOZERO」// オペランド「MyTag_2」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_2"// RLO=「1」の場合、オペランド「Tag_Output_2」を「1」にセット。

NEXT:A "MyTag_3"// ジャンプラベル「NEXT」// オペランド「MyTag_3」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_4"// オペランド「MyTag_4」の値が「1」かどうかを照会し、論理積演算。

JP: 結果がゼロよりも大きければジャンプ

説明「結果がゼロよりも大きければジャンプ」命令を使用して、線形プログラム実行をステー
タスビット CC 0 および CC 1 に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所から続行します。
指定されたジャンプラベルへのジャンプは、ステータスビット CC 0 のシグナル状態が「0」、かつ CC 1 のシグナル状態が「1」の場合にのみ実行されます。この状況は、次の条件の 1
つに該当すると発生します。
• オーバーフローなしで算術命令を処理した後に、アキュムレータ 1 の値がゼロよりも大きいこと。
• 整数(+I、-I、*I、+D、-D、*D)によって算術命令を処理したときに、負のオーバーフロ
ーが発生していること。
• 整数(*I、/I、*D、/D)によって算術命令を処理したときに、正のオーバーフローが発生していること。
• 算術命令を浮動小数点数によって処理したときに、正のオーバーフローが発生してい
ること。

1226

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL• アキュムレータ 2 の内容が、比較命令の実行後にアキュムレータ 1 の内容よりも大きいこと。
• アキュムレータ 1 の内容が、ワード論理演算の実行後にゼロでないこと。
• シフト命令の実行後、最後にシフトアウトされたビットの値が「1」であること。
それ以外のすべての場合、ジャンプは実行されずプログラムの処理は次の命令で再開され
ます。

パラメータ
次の表に、「結果がゼロよりも大きければジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をロード。

L "Tag_Value_2"// オペランド「Tag_Value_2」の値をロード。

-I// オペランド「Tag_Value_2」の値をオペランド「Tag_Value_1」の値から減算。

JP POSITIVE// アキュムレータ「1」に正の結果値があると、ジャンプラベル「POSITIVE」にジャンプし、そこからプログラム処理を続行// アキュムレータ 1 の結果が負の場合、次の命令を実行。

AN "MyTag_1"// オペランド「MyTag_1」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_1"// RLO=「1」の場合、オペランド「Tag_Output_1」を「1」にセット。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

POSITIVE:AN "MyTag_2"// ジャンプラベル「POSITIVE」// オペランド「MyTag_2」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_2"// RLO=「1」の場合、オペランド「Tag_Output_2」を「1」にセット。

NEXT:A "MyTag_3"// ジャンプラベル「NEXT」// オペランド「MyTag_3」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_4"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020// オペランド「MyTag_4」の値が「1」かどうかを照会し、論理積演算。

1227

基本命令
3.3 STL

JM: 結果がゼロ以下ならばジャンプ

説明「結果がゼロ未満ならばジャンプ」命令を使用して、線形プログラム実行をステータスビ
ット CC 0 および CC 1 に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所から続行します。
指定されたジャンプラベルへのジャンプは、ステータスビット CC 0 のシグナル状態が「1」、かつ CC 1 のシグナル状態が「0」の場合にのみ実行されます。この状況は、次の条件の 1
つに該当すると発生します。
• オーバーフローなしで算術命令を処理した後に、アキュムレータ 1 の値がゼロ未満であること。
• 整数(*I、*D)によって算術命令を処理したときに、負のオーバーフローが発生していること。
• 整数(+I、-I、+D、-D、NEGI、NEGD)によって算術命令を処理したときに、正のオーバ
ーフローが発生していること。
• 算術命令を浮動小数点数によって処理したときに、負のオーバーフローが発生していること。
• アキュムレータ 2 の内容が、比較命令の実行後にアキュムレータ 1 の内容未満であること。
それ以外のすべての場合、ジャンプは実行されずプログラムの処理は次の命令で再開され
ます。

パラメータ
次の表に、「結果がゼロ未満ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。

1228

STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をロード。

L "Tag_Value_2"// オペランド「Tag_Value_2」の値をロード。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

-I

// オペランド「Tag_Value_2」の値をオペランド「Tag_Value_1」の値から減算。

JM NEGATIVE// アキュムレータ「1」に負の結果値があると、ジャンプラベル「NEGATIVE」にジャンプし、そこからプログラム処理を続行// アキュムレータ 1 の結果が正の場合、次の命令を実行。

AN "MyTag_1"// オペランド「MyTag_1」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_1"// RLO=「1」の場合、オペランド「Tag_Output_1」を「1」にセット。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

NEGATIVE:AN "MyTag_2"// ジャンプラベル「NEGATIVE」// オペランド「MyTag_2」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_2"// RLO=「1」の場合、オペランド「Tag_Output_2」を「1」にセット。

NEXT:A "MyTag_3"// ジャンプラベル「NEXT」// オペランド「MyTag_3」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_4"// オペランド「MyTag_4」の値が「1」かどうかを照会し、論理積演算。

JPZ: 結果がゼロ以上ならばジャンプ

説明「結果がゼロ以上ならばジャンプ」命令を使用して、線形プログラム実行をステータスビ
ット CC 0 に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所から続行します。
指定されたジャンプラベルへのジャンプは、ステータスビット CC 0 のシグナル状態が「0」の場合にのみ実行されます。この状況は、次の条件の 1 つに該当すると発生します。
• オーバーフローなしで算術命令を処理した後に、アキュムレータ 1 の値がゼロ以上であること。
• 整数(+I、-I、*I、+D、-D、*D)によって算術命令を処理したときに、負のオーバーフロ
ーが発生していること。
• 整数(*I、/I、*D、/D)によって算術命令を処理したときに、正のオーバーフローが発生していること。
• 算術命令を浮動小数点数によって処理したときに、正のオーバーフローが発生していること。
• 算術命令(浮動小数点計算)がオーバーフローありで処理されているときに、この値が次第に許容範囲を下回って低下していること。
• アキュムレータ 2 の内容が、比較命令の実行後にアキュムレータ 1 の内容以上であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1229

基本命令
3.3 STL• ワード論理演算の命令が実行された。
• シフト命令が実行された。
それ以外のすべての場合、ジャンプは実行されずプログラムの処理は次の命令で再開され
ます。

パラメータ
次の表に、「結果がゼロ以上ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をロード。

L "Tag_Value_2"// オペランド「Tag_Value_2」の値をロード。

-I// オペランド「Tag_Value_2」の値をオペランド「Tag_Value_1」の値から減算。

JPZ REGULAR// アキュムレータ「1」に正の結果値または Null があると、ジャンプ
ラベル「REGULAR」にジャンプし、そこからプログラム処理を続行// アキュムレータ 1 の結果が負の場合、次の命令を実行。

AN "MyTag_1"// オペランド「MyTag_1」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_1"// RLO=「1」の場合、オペランド「Tag_Output_1」を「1」にセット。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

REGULAR:AN "MyTag_2"// ジャンプラベル「REGULAR」// オペランド「MyTag_2」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_2"// RLO=「1」の場合、オペランド「Tag_Output_2」を「1」にセット。

NEXT:A "MyTag_3"// ジャンプラベル「NEXT」// オペランド「MyTag_3」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_4"

1230// オペランド「MyTag_4」の値が「1」かどうかを照会し、論理積演算。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

JMZ: 結果がゼロ以下ならばジャンプ

説明「結果がゼロ以下ならばジャンプ」命令を使用して、線形プログラム実行をステータスビ
ット CC 1 に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所から続行します。
指定されたジャンプラベルへのジャンプは、ステータスビット CC 1 のシグナル状態が「0」の場合にのみ実行されます。この状況は、次の条件の 1 つに該当すると発生します。
• オーバーフローなしで算術命令を処理した後に、アキュムレータ 1 の値がゼロ以下であること。
• 整数(+I、*I、+D、*D)によって算術命令を処理したときに、負のオーバーフローが発生していること。
• 整数(+I、-I、+D、-D、NEGI、NEGD)によって算術命令を処理したときに、正のオーバ
ーフローが発生していること。
• 算術命令を浮動小数点数によって処理したときに、負のオーバーフローが発生していること。
• 算術命令(浮動小数点計算)がオーバーフローありで処理されているときに、この値が次第に許容範囲を下回って低下していること。
• アキュムレータ 2 の内容が、比較命令の実行後にアキュムレータ 1 の内容以下であること。
• アキュムレータ 1 の値がワード論理の処理後ゼロに等しいこと。
• 書き込み命令の処理後、最後にシフトされたビットの値がゼロに等しいこと。
それ以外のすべての場合、ジャンプは実行されずプログラムの処理は次の命令で再開され
ます。

パラメータ
次の表に、「結果がゼロ以下ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1231

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をロード。

L "Tag_Value_2"// オペランド「Tag_Value_2」の値をロード。

-I// オペランド「Tag_Value_2」の値をオペランド「Tag_Value_1」の値から減算。

JMZ MyLABEL// アキュムレータ「1」に負の結果値または Null があると、ジャンプ
ラベル「MyLABEL」にジャンプし、そこからプログラム処理を続行// アキュムレータ 1 の結果が正の場合、次の命令を実行。

AN "MyTag_1"// オペランド「MyTag_1」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_1"// RLO=「1」の場合、オペランド「Tag_Output_1」を「1」にセット。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

MyLABEL:AN "MyTag_2"// ジャンプラベル「MyLABEL」// オペランド「MyTag_2」の値が「0」かどうかを照会し、論理積演算。

S "Tag_Output_2"// RLO=「1」の場合、オペランド「Tag_Output_2」を「1」にセット

NEXT:A "MyTag_3"// ジャンプラベル「NEXT」// オペランド「MyTag_3」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_4"// オペランド「MyTag_4」の値が「1」かどうかを照会し、論理積演算。

JUO: 結果が無効ならばジャンプ

説明「結果が無効ならばジャンプ」命令を使用して、線形プログラム実行をステータスビット
CC 0 および CC 1 に応じて割り込みし、指定されたジャンプラベルによってマーキングされた箇所から続行します。
指定されたジャンプラベルへのジャンプは、ステータスビット CC 0 と CC 1 の両方のシグナル状態が「1」の場合にのみ実行されます。この状況は、次の条件の 1 つに該当すると発生します。
• 算術命令でゼロによって除算されること(/I、/D、MOD)。
• 算術命令を浮動小数点数によって処理したときに、オーバーフローが発生して結果値が無効な浮動小数点数になること。
• 比較命令を浮動小数点数によって処理するとき、無効な浮動小数点数が使用されたか、または結果値として発生していること。
それ以外のすべての場合、ジャンプは実行されずプログラムの処理は次の命令で再開され
ます。

1232

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「結果が無効ならばジャンプ」命令のパラメータを示します。
パラメータ

説明

<Jump label>

ジャンプ先のシンボル名例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をロード。

L "Tag_Value_2"// オペランド「Tag_Value_2」の値をロード。

/I// オペランド「Tag_Value_1」の値をオペランド「Tag_Value_2」の値で除算。

JUO ERROR// ゼロによる除算で、ジャンプラベル「ERROR」にジャンプしプログラ
ム処理をそこから続行

T "Tag_Result"// アキュムレータ 1 の内容をオペランド「Tag_Result」に転送。

A "MyTag_1"// オペランド「MyTag_1」の値が「1」かどうかを照会し、論理積演算。

R "MyTag_1"// RLO=「1」の場合、オペランド「MyTag_1」を「0」にリセット。

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

ERROR:AN "MyTag_1"// ジャンプラベル「ERROR」// それ以外の場合、次の命令を実行。

// オペランド「MyTag_1」の値が「0」かどうかを照会し、論理積演算。
S "MyTag_1"// RLO=「1」の場合、オペランド「MyTag_1」を「1」にセット。

NEXT:A "MyTag_3"// ジャンプラベル「NEXT」// オペランド「MyTag_3」の値が「1」かどうかを照会し、論理積演算。

A "MyTag_4"// オペランド「MyTag_4」の値が「1」かどうかを照会し、論理積演算。

JL: ジャンプリストの定義

説明「ジャンプリスト定義」命令を使用して、「条件なしジャンプ」(JU)命令の複数エントリから成るリストをプログラムします。このリストは「ジャンプリスト定義」命令の直後に開始し、最大 255 エントリを格納することができます。リストでのジャンプファンクションのナンバリングはゼロで開始します。ジャンプリストはギャップなしでプログラムする必要があります。ジャンプリストの終了は、「ジャンプリスト定義」命令に指定されたジャン
プラベルによってマーキングされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1233

基本命令
3.3 STL
リストのどのジャンプファンクションが実行されるかは、アキュムレータ 1 の右バイトの値によって異なります。たとえば、アキュムレータ 1 の値が「0」の場合、最初のジャンプ
ファンクションが実行されます。アキュムレータ 1 の値が「1」の場合、2 番目のジャン
プファンクションが実行されます。アキュムレータ 1 の値がリストエントリの数よりも大きい場合、「ジャンプリスト定義」命令はリストの終了を参照します。
「ディストリビュータジャンプ」命令は条件に関係なく実行され、ステータスビットに影響しません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// ジャンプ数をアキュムレータ 1 にロード。

JL END// ジャンプリストの開始

JU MyLABEL_1// 値が「0」の場合、アキュムレータ 1 で実行しジャンプラベル
MyLABEL_1"にジャンプ。

JU MyLABEL_2// 値が「1」の場合、アキュムレータ 1 で実行しジャンプラベル「MyLABEL_2」にジャンプ

JU MyLABEL_3// 値が「2」の場合、アキュムレータ 1 で実行し、ジャンプラベル「MyLABEL_3」にジャンプ。

END: L "MyTag_1"// ジャンプリストの終了// オペランド「MyTag_1」の内容をアキュムレータ 1 にロード。

1234

L "MyTag_2"// オペランド「MyTag_2」の内容をアキュムレータ 1 にロード。

+I// 値の加算

T "Tag_Output_2"// アキュムレータ 1 の内容をオペランド「Tag_Output_2」にロード。

MyLABEL_1: ...

// ジャンプラベル「MyLABEL_1」....

// 任意のプログラム

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

MyLABEL_2: ...

// ジャンプラベル「MyLABEL_2」....

// 任意のプログラム

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

MyLABEL_3: ...

// ジャンプラベル「MyLABEL_3」....

// 任意のプログラム

JU NEXT// ジャンプラベル「NEXT」にジャンプし、プログラムの実行をそこから再開。

NEXT: ...

// ジャンプラベル「NEXT」

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

LOOP: ループ

説明「ループ」命令を使用して、プログラム内にループをプログラムします。
この命令は、アキュムレータ 1 の右ワードを 0～65535 範囲で符号なし 16 ビット整数として解釈します。実行中に、この命令は最初にアキュムレータ 1 の内容を 1 デクリメン
トします。デクリメント後にアキュムレータ 1 の値がゼロでない場合、指定したジャンプ
ラベルでジャンプが実行されます。値がゼロの場合、ジャンプは実行されずプログラムの処理は次の命令で再開されます。したがって、アキュムレータ 1 内の値は実行するプログ
ラムループの数を指定します。この数はループカウンタに保存する必要があります。
<number>オペランドにはループサイクルの数が含まれます。<loop counter>オペランドにはこれから実行されるループサイクルの数が含まれます。プログラムループの終了時に
ループカウンタの内容はアキュムレータ 1 に読み込まれ、命令によって 1 デクリメントされます。デクリメント後にアキュムレータの値がゼロでない場合、プログラムループ開始にあるジャンプラベルへのジャンプが実行されます。
「ループ」命令はステータスビットには影響しません。
警告
ループカウンタのプリセット
ループカウンタがプリセットされていない場合、または値「0」でプリセットされている
場合、ループカウンタは負になってもデクリメントを続行します。これによって、CPU を
STOP モードに切り替える可能性のある無限ループに陥ります。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// 実行される時間ループの数をアキュムレータ 1 の右ワードにロード。

START: T "Tag_Counter"// ジャンプリストの開始// アキュムレータ 1 の内容をループカウンタに転送する。

L "MyTag_1"// オペランド「MyTag_1」の値をロード。

L "MyTag_2"// オペランド「MyTag_2」の値をロード。

*D// 値を乗算

T "MyTag_1"// 乗算結果をオペランド「MyTag_1」に転送。

L "Tag_Counter"// ループカウンタの値をアキュムレータ 1 にロード。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1235

基本命令
3.3 STL
説明

STL// アキュムレータ 1 の値を 1 デクリメント。

LOOP START// 値がゼロでない場合はプログラムループ開始にジャンプ。
// 値がゼロの場合は、次の命令を実行。
L "MyTag_2"// オペランド「MyTag_2」の値をロード。

L 100// 値 100 をロード。

>I// オペランド「MyTag_2」の値が 200 よりも大きいかどうかを比較。

= "MyTag_3"// 比較結果をオペランド「MyTag_3」に書き込む。

データブロック

OPN: DB レジスタのデータブロックを開く

説明「DB レジスタのデータブロックを開く」命令でグローバルデータブロック(DB)を開けます。
データブロックの番号が、DB レジスタに転送されます。以降の DB コマンドは、レジスタの内容に応じて関連するブロックにアクセスします。
「DB レジスタのデータブロックを開く」命令は条件なしで処理され、論理演算の結果またはアキュムレータの内容のいずれにも影響しません。

パラメータ
次の表に、「DB レジスタのデータブロックを開く」命令のパラメータを示します。
オペランド 宣言

データブロック 説明
タイプ

<data

DB

-

開くデータブロック。

block>例
次の例で、命令がどのように動作するかを示します。

1236

STL

説明

OPN "GlobalDataBlock"// グローバルデータブロックを開き、ブロック数を DB レジス
タに転送。

L %DBW0// 開いたグローバルデータブロックのデータワード DBW0 を
アキュムレータ 1 にロード。

T "MyTag"// アキュムレータ 1 の内容をオペランド「MyTag_1」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

OPNDI: DI レジスタ内のデータブロックを開く

説明「DI レジスタのデータブロックを開く」命令であらゆるデータブロック(DB)を開けます。
データブロックの番号が DI レジスタに転送されます。以降の DI コマンドは、レジスタの内容に応じて関連するブロックにアクセスします。
ブロックインターフェイスからのローカル仮パラメータのシンボリックアドレス指定では、
必ずブロック呼び出し時に指定した番号のデータブロックにアクセスします。
「DI レジスタのデータブロックを開く」命令は条件なしで処理され、論理演算の結果またはアキュムレータの内容のいずれにも影響しません。

パラメータ
次の表に、「DI レジスタのデータブロックを開く」命令のパラメータを示します。
オペランド 宣言

データブロック 説明
タイプ

<data

DI

-

開くデータブロック。

block>例
次の例で、命令がどのように動作するかを示します。
STL

説明

OPNDI "DataBlock"// データブロックを開き、データブロックの番号を DI レジス
タに転送。

L %DIW0// 開いたデータブロックのデータワード DIW0 をアキュムレータ 1 にロード

T "MyTag"// アキュムレータ 1 の内容をオペランド「MyTag」に転送。

CDB: データブロックレジスタのスワップ

説明「データブロックレジスタのスワップ」命令を使用して、データブロックレジスタの内容をスワップします。この命令は条件に関係なく実行され、ステータスビットに影響しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1237

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

OPN "GlobalDataBlock"// グローバルデータブロックを開き、データブロックの番号をDB レジスタに転送。

OPNDI "DataBlock"// データブロックを開き、データブロックの番号を DI レジス
タに転送。

CDB

// データブロックレジスタのスワップ// DB レジスタは「DataBlock」をポイントし、DI レジスタ
は「GlobalDataBlock」をポイント。

L %DIW0// 「GlobalDataBlock」からアキュムレータ 1 に DW0 をロード。

L DBLG: グローバルデータブロック長をアキュムレータ 1 にロード

説明
「グローバルデータブロック長をアキュムレータ 1 にロード」命令を使用して、データブ
ロックレジスタによって開いたグローバルデータブロックの長さをアキュムレータ 1 にロードします。アキュムレータ 1 の以前の内容はアキュムレータ 2 に移動します。
この命令の処理前にデータブロックレジスタによってグローバルデータブロックが開かなかった場合、値「0」がアキュムレータ 1 に読み込まれます。データブロックの長さはデータのバイト数に等しくなります。
ステータスビットはこの命令に影響されません。

例
次の例で、命令がどのように動作するかを示します。

1238

STL

説明

OPN "GlobalDataBlock"// グローバルデータブロックを開き、データブロックの番号をDB レジスタに転送。

L DBLG// 開いたデータブロックの長さをアキュムレータ 1 にロード。

L "MyTag_1"// 比較値をロード<D// データブロックの長さがオペランド「MyTag_1」の値未満であるかどうかを比較。

= "MyTag_2"// 結果をオペランド「MyTag_2」に書き込む。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

L DBNO: グローバルデータブロックの暗号をアキュムレータ 1 に読み込む

説明「グローバルデータブロックの番号をアキュムレータ 1 にロードする」命令を使用して、データブロックレジスタによって開いたグローバルデータブロックの番号をアキュムレータ 1にロードします。アキュムレータ 1 の以前の内容はアキュムレータ 2 に移動します。
この命令の処理前にデータブロックレジスタによってグローバルデータブロックが開かなかった場合、値「0」がアキュムレータ 1 に読み込まれます。
ステータスビットはこの命令に影響されません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

OPN "GlobalDataBlock"// グローバルデータブロックを開き、データブロックの番号をDB レジスタに転送。

L DBNO// 開いたデータブロックの番号をアキュムレータ 1 にロード。

L "MyTag_1"// 比較値をロード==I// データブロックの番号がオペランド「MyTag_1」に等しい
かどうかを比較。

= "MyTag_2"// 結果をオペランド「MyTag_2」に書き込む。

L DILG: インスタンスデータブロック長をアキュムレータ 1 にロード

説明
「インスタンスデータブロック長をアキュムレータ 1 にロード」命令を使用して、データ
ブロックレジスタによって開いたインスタンスデータブロックの長さをアキュムレータ 1にロードします。アキュムレータ 1 の以前の内容はアキュムレータ 2 に移動します。
この命令の処理前にデータブロックレジスタによってインスタンスデータブロックが開かなかった場合、値「0」がアキュムレータ 1 に読み込まれます。データブロックの長さはデータのバイト数に等しくなります。
ステータスビットはこの命令に影響されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1239

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

OPNDI "InstanceDataBlock"// データブロックを開き、データブロックの番号を DI レジス
タに転送。

L DILG// 開いたデータブロックの長さをアキュムレータ 1 にロード。

L "MyTag_1"// 比較値をロード<I// データブロックの長さがオペランド「MyTag_1」の値未満であるかどうかを比較。

= "MyTag_2"// 結果をオペランド「MyTag_2」に書き込む。

L DINO: インスタンスデータブロック数をアキュムレータ 1 にロード

説明
「インスタンスデータブロック数をアキュムレータ 1 にロード」命令を使用して、データ
ブロックレジスタによって開いたインスタンスデータブロックの番号をアキュムレータ 1にロードします。アキュムレータ 1 の以前の内容はアキュムレータ 2 に移動します。
この命令の処理前にデータブロックレジスタによってインスタンスデータブロックが開かなかった場合、値「0」がアキュムレータ 1 に読み込まれます。
ステータスビットはこの命令に影響されません。

例
次の例で、命令がどのように動作するかを示します。

1240

STL

説明

OPNDI "InstanceDataBlock"// データブロックを開き、データブロックの番号を DI レジス
タに転送。

L DINO// 開いたデータブロックの番号をアキュムレータ 1 にロード。

L "MyTag_1"// 比較値をロード==I// データブロックの番号がオペランド「MyTag_1」に等しい
かどうかを比較。

= "MyTag_2"// 結果をオペランド「MyTag_2」に割り当てる。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

プログラムブロック

BE: ブロック終了

説明「ブロック終了」命令を使用して、現在処理中のブロックを終了し、ブロックを呼び出しているプログラムの箇所に移動することができます。プログラムの処理は、ブロック呼び出
し後に直接置かれた命令によって再開されます。
「ブロック終了」命令は、条件に関わりなく、実行されます。命令の処理がジャンプ命令によってスキップした場合、現在のプログラムの実行は終了せず、ブロック内のジャンプ宛先
で再開されます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

SIN// 正弦値の形成// 結果をアキュムレータ 1 に保存。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 にロード*R// アキュムレータ 1 および 2 の値を乗算。
// 積をアキュムレータ 1 に保存。

T "Tag_Result"// アキュムレータ 1 の内容をオペランド「Tag_Result」に転送。

BE// ブロックの終了

BEC: 条件付きブロック終了

説明「条件付きブロック終了」命令を使用して、現在処理中のブロックを論理演算の結果(RLO)に応じて終了し、ブロックを呼び出しているプログラムの箇所に移動することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1241

基本命令
3.3 STLRLO が「1」の場合、命令は実行されます。現在処理中のブロックは終了し、プログラム処
理はブロック呼び出しで再開されます。プログラムの処理は、ブロック呼び出し後に直接置かれた命令によって再開されます。
命令の処理時に RLO が「0」の場合、命令は実行されません。この場合、CPU は RLO を「1」にセットし、次の命令を実行します。
命令の処理がジャンプ命令によってスキップした場合、現在のプログラムの実行は終了せず、ブロック内のジャンプ宛先で再開されます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

A "Tag_Input"// オペランド「Tag_Input」の値が「1」かどうかを照会し、RLO を論
理積演算。

BEC

// 条件(RLO = 「1」)を満たす場合、ブロック終了。

T "Tag_Result"// アキュムレータ 1 の内容をオペランド「Tag_Result」に転送。

// 条件(RLO = 「0」)を満たさない場合、次の命令を実行。

BEU: 条件なしブロック終了

説明「条件なしブロック終了」命令を使用して、現在処理中のブロックを終了し、ブロックを呼び出しているプログラムの箇所に移動することができます。プログラムの処理は、ブロック呼び出し後に直接置かれた命令によって再開されます。
「条件なしブロック終了」命令は、条件に関わりなく実行され、ブロック内で複数回プログラムできます。命令の処理がジャンプ命令によってスキップした場合、現在のプログラ
ムの実行は終了せず、ブロック内のジャンプ宛先で再開されます。

1242

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

A "Tag_Input"// オペランド「Tag_Input」の値が「1」かどうかを照会し、RLO を論
理積演算。

JC NEXT// 条件(RLO = 「1」)を満たす場合、ジャンプラベル「NEXT」からプロ
グラム実行を続行。
// 条件(RLO = 「0」)を満たさない場合、次の命令を実行。

BEU// ブロックの終了

NEXT: T "Tag_Result"// ジャンプラベル「NEXT」// アキュムレータ 1 の内容をオペランド「Tag_Result」に転送。

CALL: ブロック呼び出し

説明「ブロック呼び出し」命令は、プログラム内で以下のブロックタイプの呼び出しに使用します。
• ファンクション• ファンクションブロック「ブロック呼び出し」命令は条件なしで実行されます。この命令の処理後に、プログラムは呼び出されたブロックで再開します。
データ付きの呼び出されたブロックをフィードできます。このデータはブロックパラメー
タによって転送されます。呼び出されたブロックのパラメータは、呼び出されたブロックの呼び出し命令に従って一覧に表示されます。現在必要なパラメータをこれらのパラメータに割り当てることができます。「ブロック呼び出し」命令の実行中、データは呼び出されたブロックに転送されます。データを転送することによって、ステータスワード、アドレス
レジスタ、およびデータブロックレジスタの内容が変更されます。
パラメータ付きでフィードされないファンクションブロックのパラメータは、現在値を保持します。すべてのパラメータは、ファンクションが呼び出されるときフィードされる必要があります。呼び出されたブロックにパラメータがない場合、パラメータリストは表示されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1243

基本命令
3.3 STL
呼び出されたブロックにインスタンスデータブロックが必要な場合、呼び出し時にこのブロックにコンマで区切って割り当てます。指定されたデータブロックは、呼び出し前に作成する必要があります。
呼び出されたブロックが処理されると、CPU は呼び出し元ブロックに再び切り替わり、呼び出し命令後にこのブロックの処理を再開します。
注記「条件付きブロック呼び出し」命令は、ブロックプロパティ「レジスタ経由のパラメータ渡し」が無効な場合にのみ使用可能です。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

CALL "MyFunction"// 呼び出しファンクション「MyFunction」

Input_1 := "Tag_Input_1",// 実パラメータを割り当て

Input_2 := "Tag_Input_2"
Output_1 := "Tag_Output_1"
Output_2 := "Tag_Output_1"
CALL "MyFunctionBlock", "MyFB_DB"
Value_1 := "Tag_Value_1"
Value_2 := "Tag_Value_2"// 呼び出しファンクションブロック「MyFunctionBlock」// 実パラメータを割り当て

Output := "Tag_Output"
CALL "LIMIT"MN := "Tag_LowLimit"// 「制限値の設定」命令の呼び出し// 実パラメータを割り当て

IN := "Tag_InputValue"
MX := "Tag_HighLimit"
OUT := "Tag_Output"
CALL "CTU", "CTU_DB"
CU := "Tag_StartCTU"// 「カウントアップ」カウンタを呼び出し。
// 実パラメータを割り当て

R := "Tag_ResetCounter"
PV := "Tag_PresetValue"
Q := "Tag_CounterStatus"
CV := "Tag_CounterValue"1244

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

CC: 条件付きブロック呼び出し

説明「条件付きブロック呼び出し」命令を使用して、論理演算の結果(RLO)に応じて呼び出しファンクション(FC)およびファンクションブロック(FB)を呼び出します。
この命令は、命令実行前の論理演算の現在の結果(RLO)が「1」の場合にのみ実行されます。
この命令の処理後に、プログラムは呼び出されたブロックで再開します。呼び出されたブロックが処理されると、CPU は呼び出し元ブロックに再び切り替わり、呼び出し命令後にこのブロックの処理を再開します。
ブロック変更がある場合、ステータスビット OS が「0」にリセットされます。スタータ
スビット CC 0、CC 1、および OV は、呼び出しブロックによっては影響を受けます。
注記「条件付きブロック呼び出し」命令は、ブロックプロパティ「レジスタ経由のパラメータ渡し」が有効な場合にのみ使用可能です。ただし、これによりパフォーマンスが低下します。
アキュムレータおよびアドレスレジスタの内容は、「条件付きブロック呼び出し」命令では変化しません。
現在の RLO が「0」の場合、命令もブロック呼び出しも実行されず、RLO は「1」にセットされます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

A "Tag_Input_1"// オペランド「Tag_Input_1」の値が「1」かどうかを照会し、現在の RLO を論理積演算。

CC "MyFunction"// 条件(RLO = 「1」)を満たす場合、ファンクション
MyFunction を呼び出し。
// 条件(RLO = 「0」)を満たさない場合、次の命令を実行。

A "Tag_Input_2"// オペランド「Tag_Input_2」の値が「1」かどうかを照会し、現在の RLO を論理積演算。

CC "MyFunctionBlock"// 条件(RLO = 「1」)を満たす場合、ファンクションブロック
MyFunctionBlock を呼び出し。
// 条件(RLO = 「0」)を満たさない場合、次の命令を実行。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1245

基本命令
3.3 STL

UC: 条件なしブロックの呼び出し

説明「無条件ブロック呼び出し」命令を使用して、パラメータもインスタンスデータブロック
もない呼び出しファンクション(FC)およびファンクションブロック(FB)を呼び出すことができます。
この命令は条件に関係なく実行されます。この命令の処理後に、プログラムは呼び出されたブロックで再開します。呼び出されたブロックが処理されると、CPU は呼び出し元ブロックに再び切り替わり、呼び出し命令後にこのブロックの処理を再開します。
ブロック変更がある場合、ステータスビット OS が「0」にリセットされます。スタータ
スビット CC 0、CC 1、および OV は、呼び出しブロックによっては影響を受けます。
注記「無条件ブロック呼び出し」命令は、ブロックプロパティ「レジスタ経由のパラメータ渡し」が有効な場合にのみ使用可能です。ただし、これによりパフォーマンスが低下します。
アキュムレータおよびアドレスレジスタの内容は、「無条件ブロック呼び出し」命令では変化しません。

例
次の例で、命令がどのように動作するかを示します。

1246

STL

説明

A "Tag_Input_1"// オペランド「Tag_Input_1」の値が「1」かどうかを照会し、現在の RLO を論理積演算。

UC "MyFunction"// 呼び出しファンクション「MyFunction」

A "Tag_Input_2"// オペランド「Tag_Input_2」の値が「1」かどうかを照会し、現在の RLO を論理積演算。

UC "MyFunctionBlock"// 呼び出しファンクションブロック「MyFunctionBlock」

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

3.3.11.9

ワード論理演算

AW: 1 ワードごとに論理積演算

説明「1 ワードごとに論理積演算」命令を使用して、アキュムレータ 1 の右ワード値とアキュ
ムレータ 2 の右ワード値または指定された定数を 1 ビットずつ論理積演算します。結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワードの内容は変わりません。
この命令は、アキュムレータ 1 のビット 0 をアキュムレータ 2 のビット 0 または定数にリンクし、結果をアキュムレータ 1 のビット 0 に保存します。ビット 1～15 は同じ方法でリンクされます。
論理演算の両方のビットのシグナル状態が「1」ならば、結果ビットのシグナル状態が「1」になります。論理演算の 2 つのビットの 1 つのシグナル状態が「0」の場合、対応する結果
ビットはリセットされます。
次の表に、AND ワード論理演算によって、どのように結果が形成されるかを示します。
アキュムレータ 0

0

1

1

1

0

1

0

0

1

2 / 定数
アキュムレータ 01
結果0

この命令は条件に関係なく実行され、論理演算の結果に影響しません。
この命令はステータスビット CC 0、CC 1 および OV に影響します。

パラメータ
次の表に、「1 ワードごとに論理積演算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> WORD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

アキュムレータ 1 の右ワードの値と論理積演算される値。

1247

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 の右ワードにロード。
// 論理積演算アキュムレータ 1 の右ワードの値と定数(W#16#F6B5)。

AW W#16#F6B5// アキュムレータ 1 の右ワードに結果を保存。
T "Tag_Result_1"// 結果をオペランド「Tag_Result_1」に転送。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 の右ワードにロード。

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 の右ワードにロード。
// 論理積演算アキュムレータ 2 の右ワードの値(「Tag_Value_2」)をア
キュムレータ 1 の右ワードの値(「Tag_Value_3」)とAW// アキュムレータ 1 の右ワードに結果を保存。
// 結果をオペランド「Tag_Result_2」に転送。

T "Tag_Result_2"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_1

0101

1001

0011

1011

定数(W#16#F6B5)

1111

0110

1011

0101

Tag_Result_1

0101

0000

0011

0001

Tag_Value_2

0110

1100

0010

1010

Tag_Value_3

1101

1010

1001

0011

Tag_Result_2

0100

1000

0000

0010

OW: 1 ワードごとに論理和演算

説明「1 ワードごとに論理和演算」命令を使用して、アキュムレータ 1 の右ワード値とアキュ
ムレータ 2 の右ワード値または指定された定数を 1 ビットずつ論理和演算します。結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワードの内容は変わりません。
この命令は、アキュムレータ 1 のビット 0 をアキュムレータ 2 のビット 0 または定数にリンクし、結果をアキュムレータ 1 のビット 0 に保存します。ビット 1～15 は同じ方法でリンクされます。

1248

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
論理演算の 2 つのビットのうち少なくとも 1 つのシグナル状態が「1」ならば、結果ビットのシグナル状態は「1」になります。論理演算の両方のビットのシグナル状態が「0」ならば、結果ビットのシグナル状態が「0」にリセットされます。
次の表に、OR ワード論理和演算によって、どのように結果が形成されるかを示します。
アキュムレータ 0

0

1

1

1

0

1

1

1

1

2 / 定数
アキュムレータ 01
結果0

この命令は条件に関係なく実行され、論理演算の結果に影響しません。
この命令はステータスビット CC 0、CC 1 および OV に影響します。

パラメータ
次の表に、「1 ワードごとに論理和演算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> WORD

アキュムレータ 1 の右ワードの値と論理和演算される値。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 の右ワードにロード。

OW W#16#F6B5// 論理和演算アキュムレータ 1 の右ワードの値と定数(W#16#F6B5)。
// アキュムレータ 1 の右ワードに結果を保存。

T "Tag_Result_1"// 結果をオペランド「Tag_Result_1」に転送。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 の右ワードにロード。

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 の右ワードに
ロード。

OW

// 論理和演算アキュムレータ 2 の右ワードの値(「Tag_Value_2」)をア
キュムレータ 1 の右ワードの値(「Tag_Value_3)と// アキュムレータ 1 の右ワードに結果を保存。

T "Tag_Result_2"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020// 結果をオペランド「Tag_Result_2」に転送。

1249

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_1

0101

1001

0011

1011

定数(W#16#F6B5)

1111

0110

1011

0101

Tag_Result_1

1111

1111

1011

1111

Tag_Value_2

0110

1100

0010

1010

Tag_Value_3

1101

1010

1001

0011

Tag_Result_2

1111

1110

1011

1011

XOW: 1 ワードごとに排他的論理和演算

説明「1 ワードごとに排他的論理和演算」命令を使用して、アキュムレータ 1 の右ワード値とアキュムレータ 2 の右ワード値または指定された定数を 1 ビットずつ排他的論理和演算します。結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワー
ドの内容は変わりません。
この命令は、アキュムレータ 1 のビット 0 をアキュムレータ 2 のビット 0 または定数にリンクし、結果をアキュムレータ 1 のビット 0 に保存します。ビット 1～15 は同じ方法でリンクされます。
リンクされる 2 つのビットのシグナル状態が異なる場合、結果ビットのシグナル状態は「1」になります。論理演算の両方のビットのシグナル状態が同じならば、結果ビットのシグナル状態が「0」にリセットされます。
次の表に、EXCLUSIVE OR ワード排他的論理和演算によって、どのように結果が形成されるかを示します。
アキュムレータ 0

0

1

1

1

0

1

1

1

0

2 / 定数
アキュムレータ 01
結果0

この命令は条件に関係なく実行され、論理演算の結果に影響しません。
この命令はステータスビット CC 0、CC 1 および OV に影響します。

1250

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「1 ワードごとに排他的論理和演算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> WORD

アキュムレータ 1 の右ワードの値と排他的論理和演算される値。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 の右ワードにロード。

XOW W#16#F6B5// 排他的論理和演算アキュムレータ 1 の右ワードの値と定数(W#16#F6B5)。
// アキュムレータ 1 の右ワードに結果を保存。

T "Tag_Result_1"// 結果をオペランド「Tag_Result_1」に転送。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 の右ワードにロード。

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 の右ワードにロード。
// 排他的論理和演算アキュムレータ 2 の右ワードの値(「Tag_Value_2」)をアキュムレータ 1 の右ワードの値(「Tag_Value_3」)とXOW// アキュムレータ 1 の右ワードに結果を保存。
// 結果をオペランド「Tag_Result_2」に転送。

T "Tag_Result_2"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_1

0101

1001

0011

1011

定数(W#16#F6B5)

1111

0110

1011

0101

Tag_Result_1

1010

1111

1000

1110

Tag_Value_2

0110

1100

0010

1010

Tag_Value_3

1101

1010

1001

0011

Tag_Result_2

1011

0110

1011

1001

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1251

基本命令
3.3 STL

AD: 1 ダブルワードごとに論理積演算

説明「1 ダブルワードごとに論理積演算」命令を使用して、アキュムレータ 1 の内容と、アキュムレータ 2 の内容または指定した定数値を 1 ビットずつ AND 論理積演算することができます。この結果は、アキュムレータ 1 に保存されます。
この命令は、アキュムレータ 1 のビット 0 をアキュムレータ 2 のビット 0 または定数にリンクし、結果をアキュムレータ 1 のビット 0 に保存します。ビット 1～31 は同じ方法でリンクされます。
論理演算の両方のビットのシグナル状態が「1」ならば、結果ビットのシグナル状態が「1」になります。論理演算の 2 つのビットの 1 つのシグナル状態が「0」の場合、対応する結果
ビットはリセットされます。
次の表に、AND ワード論理演算によって、どのように結果が形成されるかを示します。
アキュムレータ 0

0

1

1

1

0

1

0

0

1

2 / 定数
アキュムレータ 01
結果0

この命令は条件に関係なく実行され、論理演算の結果に影響しません。
この命令はステータスビット CC 0、CC 1 および OV に影響します。

パラメータ
次の表に、「1 ダブルワードごとに論理積演算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> DWORD

アキュムレータ 1 の値と AND 論理積演算される値。

例
次の例で、命令がどのように動作するかを示します。

1252

STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

AD DW#16#39C657AC// 論理積演算アキュムレータ 1 の値を定数(DW#16#39C657AC)。
// 結果をアキュムレータ 1 に保存。

T "Tag_Result_1"// 結果をオペランド「Tag_Result_1」に転送。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 にロード。

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 にロード。
// アキュムレータ 2 の値 Tag_Value_2 をアキュムレータ 1 の値(
「Tag_Value_3」)で AND

AD// 結果をアキュムレータ 1 に保存。
// 結果をオペランド「Tag_Result_2」に転送。

T "Tag_Result_2"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

1001

1101

0011

1011

0011

1001

1100

0110

0101

0111

1010

1100

0001

1001

0100

0100

0001

0101

0010

1000

Tag_Value_ 0110

0101

0100

0011

0101

1101

0010

1011

1001

1100

0110

0101

0111

1010

1100

0001

0100

0010

0101

0101

0010

1010

1
定数
(DW#16#3
9C657AC)
Tag_Result_1

2
Tag_Value_ 0011
3
Tag_Result

0010

_2

OD: 1 ダブルワードごとに論理和演算

説明「1 ダブルワードごとに論理和演算」命令を使用して、アキュムレータ 1 の内容と、アキュムレータ 2 の内容または指定した定数値を 1 ビットずつ OR 論理和演算することができます。この結果は、アキュムレータ 1 に保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1253

基本命令
3.3 STL
この命令は、アキュムレータ 1 のビット 0 をアキュムレータ 2 のビット 0 または定数にリンクし、結果をアキュムレータ 1 のビット 0 に保存します。ビット 1～31 は同じ方法でリンクされます。
論理演算の 2 つのビットのうち少なくとも 1 つのシグナル状態が「1」ならば、結果ビットのシグナル状態は「1」になります。論理演算の両方のビットのシグナル状態が「0」ならば、結果ビットのシグナル状態が「0」にリセットされます。
次の表に、OR ワード論理和演算によって、どのように結果が形成されるかを示します。
アキュムレータ 0

0

1

1

1

0

1

1

1

1

2 / 定数
アキュムレータ 01
結果0

この命令は条件に関係なく実行され、論理演算の結果に影響しません。
この命令はステータスビット CC 0、CC 1 および OV に影響します。

パラメータ
次の表に、「1 ダブルワードごとに論理和演算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> DWORD

アキュムレータ 1 の値と OR 論理和演算される値。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

OD DW#16#39C657AC// 論理和演算アキュムレータ 1 の値を定数(DW#16#39C657AC)。
// 結果をアキュムレータ 1 に保存。

T "Tag_Result_1"// 結果をオペランド「Tag_Result_1」に転送。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 にロード。

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 にロード。

OD// 論理和演算アキュムレータ 2Tag_Value_2 の値をアキュムレータ
1(「Tag_Value_3」)の値と// 結果をアキュムレータ 1 に保存

1254

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STLSTL

説明

T "Tag_Result_2"// 結果をオペランド「Tag_Result_2」に転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

1001

1101

0011

1011

0011

1001

1100

0110

0101

0111

1010

1100

0111

1111

1110

0110

1101

1111

1011

1111

Tag_Value_ 0110

0101

0100

0011

0101

1101

0010

1011

1001

1100

0110

0101

0111

1010

1100

1101

1100

0111

0101

1111

1110

1111

1
定数
(DW#16#3
9C657AC)
Tag_Result_1

2
Tag_Value_ 0011
3
Tag_Result

0111

_2

XOD: 1 ダブルワードごとに排他的論理和演算

説明「1 ダブルワードごとに排他的論理和演算」命令を使用して、アキュムレータ 1 の内容とアキュムレータ 2 の内容を 1 ビットずつ排他的論理和演算することができます。この結果
は、アキュムレータ 1 に保存されます。
この命令は、アキュムレータ 1 のビット 0 をアキュムレータ 2 のビット 0 または定数にリンクし、結果をアキュムレータ 1 のビット 0 に保存します。ビット 1～31 は同じ方法でリンクされます。
リンクされる 2 つのビットのシグナル状態が異なる場合、結果ビットのシグナル状態は「1」になります。論理演算の両方のビットのシグナル状態が同じならば、結果ビットのシグナル状態が「0」にリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1255

基本命令
3.3 STL
次の表に、EXCLUSIVE OR ワード排他的論理和演算によって、どのように結果が形成されるかを示します。
アキュムレータ 0

0

1

1

1

0

1

1

1

0

2 / 定数
アキュムレータ 01
結果0

この命令は条件に関係なく実行され、論理演算の結果に影響しません。
この命令はステータスビット CC 0、CC 1 および OV に影響します。

パラメータ
次の表に、「1 ダブルワードごとに排他的論理和演算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> DWORD

アキュムレータ 1 の値と XOR 排他的論理和演算される値。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

XOD DW#16#39C657AC// 排他的論理和演算アキュムレータ 1 の値を定数(DW#16#39C657AC)と。
// 結果をアキュムレータ 1 に保存。

T "Tag_Result_1"// 結果をオペランド「Tag_Result_1」に転送。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 にロード。

L "Tag_Value_3"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_3」の値をアキュムレータ 1 にロード。

XOD// 排他的論理和演算アキュムレータ 2Tag_Value_2 の値をアキュムレータ 1(「Tag_Value_3」)の値と// 結果をアキュムレータ 1 に保存。

T "Tag_Result_2"

1256// 結果をオペランド「Tag_Result_2」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

1001

1101

0011

1011

0011

1001

1100

0110

0101

0111

1010

1100

0110

0110

1010

0010

1100

1010

1001

0111

Tag_Value_ 0110

0101

0100

0011

0101

1101

0010

1011

1001

1100

0110

0101

0111

1010

1100

1100

1000

0101

0000

1010

1000

0111

1
定数
(DW#16#3
9C657AC)
Tag_Result_1

2
Tag_Value_ 0011
3
Tag_Result

0101

_2

3.3.11.10

シフトとローテーション

シフト

SSI: 符号付きで 1 ワードずつシフト

説明「符号付で 1 ワードずつシフト」命令を使用して、アキュムレータ 1 の右ワード(ビット 0～15)を 1 ビットずつ右へシフトします。シフト中、空きになる位置はビット 15 のシグナル状態(INT 数の符号ビット)で埋められます。アキュムレータ 1 のビット 16～31 は変更なしのままです。この命令は RLO に関係なく実行されます。ステータスビット CC1 は、シ
フトアウトされた最後のビットのシグナル状態にセットされます。
ビットがシフトされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1257

基本命令
3.3 STL
以下のフォーマットを使用できます。
• SSI <number>:シフトの数がオペランド<number>によって指定されます。0～15 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0 および OVが「0」にリセットされます。
• SSI:シフトの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット CC 0 お
よび OV が「0」にリセットされます。
指定したシフトする桁数が 15 よりも大きい場合、アキュムレータ 1 の右ワードにあるすべてのビットはビット 15 のシグナル状態で埋められます。
指定したシフトする桁数がゼロの場合でも、命令は実行されます。ステータスビット CC1
は「0」にセットされます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 書式

説明

<Number>

値がシフトされるビット位置の数。

正の整数:
SINT, INT,
UINT, USINT例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

SSI 6// アキュムレータ 1 のビット 0～15 を右に 6 桁シフト。
// 空になったビット位置をビット 15 の状態で埋める。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 3// シフトする桁数をアキュムレータ 1 にロード

L "Tag_Value_2"// シフトする桁数をアキュムレータ 2 の右バイトに移動。
// オペランドの値をアキュムレータ 1 にロード。

SSI// アキュムレータ 1 のビット 0～15 を右に 3 桁シフト。
// 空になったビット位置をビット 15 の状態で埋める。

T "Tag_Result_2"

1258// アキュムレータ 1 の内容をオペランドに転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

1001

1101

0011

1011

0101

1111

0110

0100

1111

1110

0111

0100

Tag_Value_ 0101

1111

0110

0100

0101

1101

0010

1011

1111

0110

0100

0000

1011

1010

0101

1
Tag_Result_1
2
Tag_Result

0101

_2

SSD: 符号付きで 1 ダブルワードずつシフト

説明「符号付きで 1 ダブルワードずつシフト」命令を使用して、アキュムレータ 1 の完全な内容
を 1 ビットずつ右へシフトします。シフト中、空きになる位置はビット 31 のシグナル状態(DINT 数の符号ビット)で埋められます。この命令は RLO に関係なく実行されます。ステータスビット CC1 は、シフトアウトされた最後のビットのシグナル状態にセットされます。
ビットがシフトされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されます。
以下のフォーマットを使用できます。
• SSD <number>:シフトの数がオペランド<number>によって指定されます。0～31 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0 およびOV が「0」にリセットされます。
• SSD:シフトの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット CC 0 お
よび OV が「0」にリセットされます。
値が 31 よりも大きい場合、アキュムレータ 1 のすべてのビットはビット 31 のシグナル状態で埋められます。
指定したシフトする桁数がゼロの場合でも、命令は実行されます。ステータスビット CC1
は「0」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1259

基本命令
3.3 STL

パラメータ
次の表に、「符号付きで 1 ダブルワードずつシフト」命令のパラメータを示します。
パラメータ 書式

説明

<Number>

値がシフトされるビット位置の数。

正の整数:
SINT, INT,UINT,USINT,例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

SSD 7// アキュムレータ 1 のビット 0～31 を右に 7 桁シフト。
// 空になったビット位置をビット 31 の状態で埋める。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 4// シフトする桁数をアキュムレータ 1 にロード

L "Tag_Value_2"// シフトする桁数をアキュムレータ 2 の右バイトに移動。
// オペランドの値をアキュムレータ 1 にロード。
// アキュムレータ 1 のビット 0～31 を右に 4 桁シフト。

SSD// 空になったビット位置をビット 31 の状態で埋める。
// アキュムレータ 1 の内容をオペランドに転送。

T "Tag_Result_2"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 1000

1111

0110

0100

0101

1101

0011

1011

1111

1111

0001

1110

1100

1000

1011

1010

Tag_Value_ 0010

1000

1010

0010

1001

1011

1100

1101

0010

1000

1010

0010

1001

1011

1100

1
Tag_Result_1
2
Tag_Result

0000

_2

1260

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

SLW: 1 ワードずつ左へシフト

説明「1 ワードずつ左へシフト」命令を使用して、アキュムレータ 1 の右ワード(ビット 0～15)
を 1 ビットずつ左へシフトします。空きになるビット位置はゼロで埋められます。アキュ
ムレータ 1 のビット 16～31 は変更なしのままです。この命令は RLO に関係なく実行されます。ステータスビット CC1 は、シフトアウトされた最後のビットのシグナル状態にセットされます。
ビットがシフトされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されます。
以下のフォーマットを使用できます。
• SLW <Number>:シフトの数がオペランド<number>によって指定されます。0～15 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0 およびOV が「0」にリセットされます。
• SLW:シフトの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット CC 0 お
よび OV が「0」にリセットされます。
指定されたシフトする桁数が 15 よりも大きい場合、アキュムレータ 1 の右ワードのす
べてのビットはゼロで埋められます。
指定したシフトする桁数がゼロの場合でも、命令は実行されます。ステータスビット CC1
は「0」にセットされます。

パラメータ
次の表に、「1 ワードずつ左へシフト」命令のパラメータを示します。
パラメータ 書式

説明

<Number>

値がシフトされるビット位置の数。

正の整数:
SINT、
INT、
UINT、
USINT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1261

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

SLW 5// アキュムレータ 1 のビット 0～15 を左に 5 桁シフト。
// 空になったビット位置をゼロで埋める。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 4// シフトする桁数をアキュムレータ 1 にロード// シフトする桁数をアキュムレータ 2 の右バイトに移動。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 にロード。
// アキュムレータ 1 のビット 0～15 を左に 4 桁シフト。

SLW// 空になったビット位置をゼロで埋める。
// アキュムレータ 1 の内容をオペランドに転送。

T "Tag_Result_2"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

0101

1101

0011

1011

0101

1111

0110

0100

1010

0111

0110

0000

Tag_Value_ 0101

1111

0110

0100

0101

1101

0010

1011

1111

0110

0100

1101

0010

1011

0000

1
Tag_Result_1
2
Tag_Result

0101

_2

SRW: 1 ワードずつ右へシフト

説明「1 ワードずつ右へシフト」命令を使用して、アキュムレータ 1 の右ワード(ビット 0～15)
を 1 ビットずつ右へシフトします。空きになるビット位置はゼロで埋められます。アキュ
ムレータ 1 のビット 16～31 は変更なしのままです。この命令は RLO に関係なく実行されます。ステータスビット CC1 は、シフトアウトされた最後のビットのシグナル状態にセットされます。

1262

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
ビットがシフトされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されます。
以下のフォーマットを使用できます。
• SRW <Number>:シフトの数がオペランド<number>によって指定されます。0～15 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0 およびOV が「0」にリセットされます。
• SRW:シフトの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット CC 0 お
よび OV が「0」にリセットされます。
指定されたシフトする桁数が 15 よりも大きい場合、アキュムレータ 1 の右ワードのす
べてのビットはゼロで埋められます。
指定したシフトする桁数がゼロの場合でも、命令は実行されます。ステータスビット CC1
は「0」にセットされます。

パラメータ
次の表に、「1 ワードずつ右へシフト」命令のパラメータを示します。
パラメータ 書式

説明

<Number>

値がシフトされるビット位置の数。

正の整数:
SINT、
INT、
UINT、
USINT

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

SRW 6// アキュムレータ 1 のビット 0～15 を右に 6 桁シフト。
// 空になったビット位置をゼロで埋める。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 4// シフトする桁数をアキュムレータ 1 にロード

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1263

基本命令
3.3 STL
説明

STL// シフトする桁数をアキュムレータ 2 の右バイトに移動。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 にロード。
// アキュムレータ 1 のビット 0～15 を右に 4 桁シフト。

SRW// 空になったビット位置をゼロで埋める。
// アキュムレータ 1 の内容をオペランドに転送。

T "Tag_Result_2"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

0101

1101

0011

1011

0101

1111

0110

0100

0000

0001

0111

0100

Tag_Value_ 0101

1111

0110

0100

0101

1101

0010

1011

1111

0110

0100

0000

0101

1101

0010

1
Tag_Result_1
2
Tag_Result

0101

_2

SLD: 1 ダブルワードずつ左へシフト

説明「1 ダブルワードずつ左へシフト」命令を使用して、アキュムレータ 1 の完全な内容を 1 ビ
ットずつ右へシフトします。空きになるビット位置はゼロで埋められます。この命令は RLOに関係なく実行されます。ステータスビット CC1 は、シフトアウトされた最後のビットのシグナル状態にセットされます。
ビットがシフトされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されま
す。

1264

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
以下のフォーマットを使用できます。
• SLD <number>:シフトの数がオペランド<number>によって指定されます。0～31 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0 およびOV が「0」にリセットされます。
• SLD:シフトの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット CC 0 お
よび OV が「0」にリセットされます。
値が 31 よりも大きい場合、アキュムレータ 1 のすべてのビットはゼロで埋められます。
指定したシフトする桁数がゼロの場合でも、命令は実行されます。ステータスビット CC1
は「0」にセットされます。

パラメータ
次の表に、「1 ダブルワードずつ左へシフト」命令のパラメータを示します。
パラメータ 書式

説明

<Number>

値がシフトされるビット位置の数。

正の整数:
SINT、
INT、
UINT、
USINT

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

SLD 5// アキュムレータ 1 のビット 0～31 を左に 5 桁シフト。
// 空になったビット位置をゼロで埋める。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 4// シフトする桁数をアキュムレータ 1 にロード

L "Tag_Value_2"// シフトする桁数をアキュムレータ 2 の右バイトに移動。
// オペランドの値をアキュムレータ 1 にロード。

SLD// アキュムレータ 1 のビット 0～31 を左に 4 桁シフト。
// 空になったビット位置をゼロで埋める。

T "Tag_Result_2"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020// アキュムレータ 1 の内容をオペランドに転送。

1265

基本命令
3.3 STL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

0101

1101

0011

1011

1110

1100

1000

1011

1010

0111

0110

0000

Tag_Value_ 1010

1000

1010

0010

1001

1011

1100

1101

1010

0010

1001

1011

1100

1101

0000

1
Tag_Result_1
2
Tag_Result

1000

_2

SRD: 1 ダブルワードずつ右へシフト

説明「1 ダブルワードずつ右へシフト」命令を使用して、アキュムレータ 1 の完全な内容を 1 ビ
ットずつ右へシフトします。空きになるビット位置はゼロで埋められます。この命令は RLOに関係なく実行されます。ステータスビット CC1 は、シフトアウトされた最後のビットのシグナル状態にセットされます。
ビットがシフトされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されます。
以下のフォーマットを使用できます。
• SRD <number>:シフトの数がオペランド<number>によって指定されます。0～31 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0 およびOV が「0」にリセットされます。
• SRD:シフトの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット CC 0 お
よび OV が「0」にリセットされます。
値が 31 よりも大きい場合、アキュムレータ 1 のすべてのビットはゼロで埋められます。
指定したシフトする桁数がゼロの場合でも、命令は実行されます。ステータスビット CC1
は「0」にセットされます。

1266

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「1 ダブルワードずつ右へシフト」命令のパラメータを示します。
パラメータ 書式

説明

<Number>

値がシフトされるビット位置の数。

正の整数:
SINT、
INT、
UINT、
USINT

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

SRD 7// アキュムレータ 1 のビット 0～31 を右に 7 桁シフト。
// 空になったビット位置をゼロで埋める。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 4// シフトする桁数をアキュムレータ 1 にロード

L "Tag_Value_2"// シフトする桁数をアキュムレータ 2 の右バイトに移動。
// オペランドの値をアキュムレータ 1 にロード。
// アキュムレータ 1 のビット 0～31 を右に 4 桁シフト。

SRD// 空になったビット位置をゼロで埋める。
// アキュムレータ 1 の内容をオペランドに転送。

T "Tag_Result_2"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

0101

1101

0011

1011

0000

0000

1011

1110

1100

1000

1011

1010

Tag_Value_ 1010

1000

1010

0010

1001

1011

1100

1101

1010

1000

1010

0010

1001

1011

1100

1
Tag_Result_1
2
Tag_Result

0000

_2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1267

基本命令
3.3 STL

ローテーション

RLD: 1 ダブルワードずつ左へローテーション

説明「1 ダブルワードずつ左へローテーション」命令を使用して、アキュムレータ 1 の完全な内
容を 1 ビットずつ左へローテーションします。処理中に、この命令はアキュムレータ 1 のビット 0～31 を 1 ビットずつ左へシフトし、書き込み中に空きになった位置をプッシュアウトされたビット位置によって埋めます。この命令は RLO に関係なく実行されます。ス
テータスビット CC1 は、シフトアウトされた最後のビットのシグナル状態にセットされます。
ビットがローテーションされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されます。
以下のフォーマットを使用できます。
• RLD <number>:ローテーションの数がオペランド<number>によって指定されます。0～32 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0
および OV が「0」にリセットされます。
• RLD:ローテーションの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット
CC 0 および OV が「0」にリセットされます。
32 よりも大きい値の場合、ローテーション数は 32 で除算するモジュロによって計算されます。たとえばローテーション数が 34 の場合、アキュムレータ 1 のビットは 2 ビ
ット位置ずつローテーションされます。
指定したローテーション数が 32 の場合、アキュムレータ 1 の内容は変化なしのままになります。
指定されたローテーション数がゼロの場合でも、命令は実行されます。ステータスビット
CC1 は「0」にセットされます。

1268

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「1 ダブルワードずつ左へローテーション」命令のパラメータを示します。
パラメータ 書式

説明

<Number>

ローテーションされるビット位置の番号。

正の整数:
SINT、
INT、
UINT、
USINT

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

RLD 4// アキュムレータ 1 のビット 0～31 を左に 4 桁ローテーション。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 6// ローテーションする桁数をアキュムレータ 1 にロード。

L "Tag_Value_2"// ローテーションする桁数をアキュムレータ 2 の右バイトに移動。
// オペランドの値をアキュムレータ 1 にロード。

RLD// アキュムレータ 1 のビット 0～31 を左に 6 桁ローテーション。

T "Tag_Result_2"// アキュムレータ 1 の内容をオペランドに転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

0101

1101

0011

1011

1111

0110

0100

0101

1101

0011

1011

0101

Tag_Value_ 1010

1000

1010

0010

1001

1011

1100

1101

1000

1010

0110

1111

0011

0110

1010

1
Tag_Result_1
2
Tag_Result

0010

_2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1269

基本命令
3.3 STL

RRD: 1 ダブルワードずつ右へローテーション

説明「1 ダブルワードずつ右へローテーション」命令を使用して、アキュムレータ 1 の完全な内
容を 1 ビットずつ右へローテーションします。処理中に、この命令はアキュムレータ 1 のビット 0～31 を 1 ビットずつ右へシフトし、書き込み中に空きになった位置をプッシュアウトされたビット位置によって埋めます。この命令は RLO に関係なく実行されます。ス
テータスビット CC1 は、シフトアウトされた最後のビットのシグナル状態にセットされます。
ビットがローテーションされるビット位置の数を指定するために以下のオプションを使用できます。
• 命令のパラメータとして正の整数を指定する。(<number>)。
• アキュムレータ 2 の右バイトの値を使用した指定:バイトは正の整数として解釈されます。
以下のフォーマットを使用できます。
• RRD <number>:ローテーションの数がオペランド<number>によって指定されます。0～32 の値を選択できます。<number>がゼロよりも大きい場合、ステータスビット CC 0
および OV が「0」にリセットされます。
• RRD:ローテーションの数がアキュムレータ 2 の値によって指定されます。0～255 の値を選択できます。アキュムレータ 2 の内容がゼロよりも大きい場合、ステータスビット
CC 0 および OV が「0」にリセットされます。
32 よりも大きい値の場合、ローテーション数は 32 で除算するモジュロによって計算されます。たとえばローテーション数が 34 の場合、アキュムレータ 1 のビットは 2 ビ
ット位置ずつローテーションされます。
指定したローテーション数が 32 の場合、アキュムレータ 1 の内容は変化なしのままになります。
指定されたローテーション数がゼロの場合でも、命令は実行されます。ステータスビット
CC1 は「0」にセットされます。

1270

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL

パラメータ
次の表に、「1 ダブルワードずつ右へローテーション」命令のパラメータを示します。
パラメータ 書式

説明

<Number>

ローテーションされるビット位置の番号。

正の整数:
SINT、
INT、
UINT、
USINT

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

RRD 4// アキュムレータ 1 のビット 0～31 を右に 4 桁ローテーション。

T "Tag_Result_1"// アキュムレータ 1 の内容をオペランドに転送。

L 6// ローテーションする桁数をアキュムレータ 1 にロード。

L "Tag_Value_2"// ローテーションする桁数をアキュムレータ 2 の右バイトに移動。
// オペランドの値をアキュムレータ 1 にロード。

RRD// アキュムレータ 1 のビット 0～31 を右に 6 桁ローテーション。

T "Tag_Result_2"// アキュムレータ 1 の内容をオペランドに転送。

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value_ 0101

1111

0110

0100

0101

1101

0011

1011

1011

0101

1111

0110

0100

0101

1101

0011

Tag_Value_ 1010

1000

1010

0010

1001

1011

1100

1101

0110

1010

0010

1000

1010

0110

1111

1
Tag_Result_1
2
Tag_Result

0011

_2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1271

基本命令
3.3 STLRLDA: ステータスビット CC 1 のみ左へローテーション

説明「ステータスビット CC 1 のみ左へローテーション」命令を使用して、アキュムレータ 1 の内容を 1 ビット左へシフトすることができます。シフト中に空きとなるビット位置(0)は、ステータスビット CC 1 のシグナル状態で埋められます。ステータスビット CC 1 は、シフ
トアウトされたビット(31)のシグナル状態を受け取ります。
この命令は RLO に関係なく実行されます。この命令により、ステータスビット CC 0 が「0」にリセットされます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// オペランドの値をアキュムレータ 1 にロード。

RLDA// アキュムレータ 1 のビット 0～31 を左に 1 桁ローテーション。
// ビット 0 をステータスビット CC 1 のシグナル状態で埋める。
// シフトアウトされたビットをステータスビット CC 1 に書き込み。
// アキュムレータ 1 の内容をオペランドに転送。

T "Tag_Result"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペラン CC 1
ド
Tag_Valu 1

値
0101

1111

0110

0100

0101

1101

0011

1011

1011

1110

1100

1000

1011

1010

0111

0111

e
Tag_Resu 0lt

RRDA: ステータスビット CC 1 のみ右へローテーション

説明「ステータスビット CC 1 のみ右へローテーション」命令を使用して、アキュムレータ 1 の内容を 1 ビット右へシフトします。シフト中に空きとなるビット位置(31)は、ステータス
ビット CC 1 のシグナル状態で埋められます。ステータスビット CC 1 は、シフトアウトされたビット(0)のシグナル状態を受け取ります。

1272

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
この命令は RLO に関係なく実行されます。この命令により、ステータスビット CC0 およびOV が「0」にリセットされます。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value"// オペランドの値をアキュムレータ 1 にロード。

RRDA// アキュムレータ 1 のビット 0～31 を右に 1 桁ローテーション。
// ビット 31 をステータスビット CC 1 のシグナル状態で埋める。
// シフトアウトされたビットをステータスビット CC 1 に書き込み。
// アキュムレータ 1 の内容をオペランドに転送。

T "Tag_Result"

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペラン
ド

CC 1

Tag_Valu

1

0101

1111

0110

0100

0101

1101

0011

1011

Tag_Resul 0

1010

1111

1011

0010

0010

1110

1001

1101

値

e
t
オペランド「Tag_Value」のビット 0 の値が「1」となるため、ステータスビット CC 1 の値も「1」となります。

3.3.11.11

追加の命令

アキュムレータ

TAK: アキュムレータ 1 と 2 の内容をスワップ

説明「アキュムレータ 1 と 2 の内容をスワップ」命令を使用して、アキュムレータ 1 の内容とアキュムレータ 2 の内容を入れ替えます。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1273

基本命令
3.3 STL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

JC NEXT// 条件(RLO = 「1」)を満たす場合、ジャンプラベル NEXT にジャンプ。
// 条件(RLO = 「0」)を満たさない場合、次の命令を実行。

TAK// アキュムレータ 1 および 2 の内容をスワップ

NEXT: -I// ジャンプラベル「NEXT」// アキュムレータ 1 の値をアキュムレータ 2 の値から減算。

T "Tag_Output"// アキュムレータ 1 の内容をオペランド「Tag_Output」に転送。

PUSH: 内容を次に上位のアキュムレータへシフト

説明「内容を次に上位のアキュムレータへシフト」命令を使用して、アキュムレータ 1 の内容をアキュムレータ 2 に移動します。
アキュムレータ 1 の内容はこの命令に影響されず、命令の処理後も変化なしのままです。
アキュムレータ 2 の内容は消滅します。
次の表に、命令の実行前および実行後のアキュムレータ 1～2 の内容を示します。
ステータス

アキュムレータ
1

2

処理前

A

B

処理後

A

A

CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。

例
次の例で、命令がどのように動作するかを示します。

1274

STL

説明

L "Tag_Value_1"// オペランドの値をアキュムレータ 1 にロード。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL
STL

説明

PUSH

// アキュムレータ 1～2 の内容を次に上位のアキュムレータへシフト。

L "Tag_Value_2"// オペランドの値をアキュムレータ 1 にロード。

POP: 内容を次に下位のアキュムレータへシフト

説明「内容を次に下位のアキュムレータへシフト」命令を使用して、アキュムレータ 2 の内容をアキュムレータ 1 に移動します。
アキュムレータ 2 の内容はこの命令に影響されず、命令の処理後も変化なしのままです。
アキュムレータ 1 の内容は消滅します。
次の表に、命令の実行前および実行後のアキュムレータ 1～2 の内容を示します。
ステータス

アキュムレータ
1

2

処理前

A

B

処理後

B

B

CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。

例
次の例で、命令がどのように動作するかを示します。
STL

説明

T "Tag_Value_1"// アキュムレータ 1 の内容をオペランド「Tag_Value_1」に転送。

POP// アキュムレータ 2 の内容を下位のアキュムレータ 1 へシフト。

T "Tag_Value_2"// アキュムレータ 1 の内容をオペランド「Tag_Value_2」に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1275

基本命令
3.3 STL

アドレスレジスタ+AR1: アキュムレータ 1 を AR1 に加算

説明「アキュムレータ 1 を AR1 に加算」命令を使用して、値をアドレスレジスタ 1 の内容に加算します。アドレスレジスタ 1 にあるポインタのタイプおよびオペランドの範囲は変化なしのままです。
加算する値の指定には、以下のオプションが使用できます。
• 定数による指定命令はアドレスレジスタ 1 に定数の値を加算します。定数の値は範囲
内部ポインタ(POINTER)のフォーマットに対応する必要があります。
• アキュムレータ 1 の右ワードの値を使用した指定命令はアキュムレータ 1 の右ワードの値を 16 ビット整数として解釈し、正しい符号付きで 24 ビットに拡張します。次に、アキュムレータ 1 の値をアドレスレジスタ 1 に加算します。-32768～+32767 の値が許可されます。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。

パラメータ
次の表に、「アキュムレータ 1 を AR1 に加算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> POINTER

アドレスレジスタ 1 に加算される値。

例
次の例で、命令がどのように動作するかを示します。

1276

STL

説明

+AR1 P#10.0// アドレスレジスタ 1 へポイントを追加。

L "Tag_Value"// オペランド「Tag_Value」の値をアキュムレータ 1 の右ワードにロ
ード。

+AR1

// アキュムレータ 1 の値をアドレスレジスタ 1 に加算。

TAR1 %MD24// アドレスレジスタ 1 の内容をダブルワード MD24 に転送。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.3 STL+AR2: アキュムレータ 1 を AR2 に加算

説明「アキュムレータ 1 を AR2 に加算」命令を使用して、値をアドレスレジスタ 2 の内容に加算します。アドレスレジスタ 2 にあるポインタのタイプおよびオペランドの範囲は変化なしのままです。
加算する値の指定には、以下のオプションが使用できます。
• 定数による指定命令はアドレスレジスタ 2 に定数の値を加算します。定数の値は範囲
内部ポインタ(POINTER)のフォーマットに対応する必要があります。
• アキュムレータ 1 の右ワードの値を使用した指定命令はアキュムレータ 1 の右ワードの値を 16 ビット整数として解釈し、正しい符号付きで 24 ビットに拡張します。次に、アキュムレータ 1 の値をアドレスレジスタ 2 に加算します。-32768～+32767 の値が許可されます。
CPU は、論理演算の結果とステータスビットとは無関係に命令を実行します。命令は、論
理演算の結果にもステータスビットにも影響しません。
アキュムレータの内容はこの命令によって変更されません。
注記
アドレスレジスタ AR2 は複数インスタンスの処理時に使用します。「アキュムレータ 1 を
AR2 に加算」命令をプログラムする場合、まずアドレスレジスタ 2 の内容を「保存」してから後で再ロードする必要があります。

パラメータ
次の表に、「アキュムレータ 1 を AR2 に加算」命令のパラメータを示します。
パラメータ データタイ 説明プ<constant> POINTER

アドレスレジスタ 1 に加算される値。

例
次の例で、命令がどのように動作するかを示します。
STL

説明+AR2 P#10.0// アドレスレジスタ 2 へポイントを追加。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1277

基本命令
3.3 STLSTL

説明

L "Tag_Value"// オペランド「Tag_Value」の値をアキュムレータ 1 の右ワードにロ
ード。

+AR2

// アキュムレータ 2 の値をアドレスレジスタ 1 に加算。

TAR2 %MD24// アドレスレジスタ 1 の内容をダブルワード MD24 に転送。

NULL 命令
BLD: プログラム表示(NULL 命令)

説明「プログラム表示(NULL 命令)」命令はファンクションを実行せず、ステータスビットに影響しません。この命令は、パラメータ転送中、または LAD/FBD ネットワークの場合にコー
ドシーケンスを認識するために使用します。LAD または FBD プログラムが STL に表示されると自動的に作成されます。パラメータ値は命令の数であり、プログラミングツールによって生成されます。

パラメータ
次の表に、「プログラム表示(NULL 命令)」命令のパラメータを示します。
パラメータ データタイ 説明プ<number>

WORD

命令の数

NOP 0: NULL 命令

説明「NULL 命令」のパラメータが 0 の場合は、ファンクションを実行せず、ステータスビットに影響しません。この命令コードには、ゼロが 16 個指定されたビットパターンが指定されています。この命令は、プログラムを表示する場合のプログラミング装置にのみ関係し
ます。

1278

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
STL

説明

L "Tag_Value_1"// オペランド「Tag_Value_1」の値をアキュムレータ 1 にロード。

L "Tag_Value_2"// アキュムレータ 1 の内容をアキュムレータ 2 へシフト。
// オペランド「Tag_Value_2」の値をアキュムレータ 1 にロード>I// アキュムレータ 2 の値がアキュムレータ 1 の値よりも大きいかどうかを比較。

A// オペランドのシグナル状態「1」を照会し、現在の RLO で論理積演算

JC NEXT// 条件(RLO = 「1」)を満たす場合、ジャンプラベル NEXT にジャンプ。
// 条件(RLO = 「0」)を満たさない場合、次の命令を実行。

TAK// アキュムレータ 1 および 2 の内容をスワップ

NEXT: NOP 0// ジャンプラベル「NEXT」

NOP 1: NULL 命令

説明「NULL 命令」のパラメータが 1 の場合は、ファンクションを実行せず、ステータスビットに影響しません。この命令コードには、1 が 16 個指定されたビットパターンが指定されています。この命令は、プログラムを表示する場合のプログラミング装置にのみ関係しま
す。

3.4

SCL

3.4.1

ビット論理演算3.4.1.1

R_TRIG:信号立ち上がりエッジを検出

説明「信号立ち上がりエッジの検出」命令を使用して、CLK 入力で「0」から「1」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前の照会(エッジメモ
リビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「0」から「1」への状態変化を検出すると、Q 出力で信号立ち上がりエッジが生成されます。つまり、正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1279

基本命令
3.4 SCL
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

CLK

BOOL

I、Q、M、D、L エッジが照会される受信

Input

説明
信号

Q

Output

BOOL

I、Q、M、D、L エッジ評価の結果

例
次の例で、命令がどのように動作するかを示します。
SCL"R_TRIG_DB"(CLK := "TagIn",
Q => "TagOut");

CLK 入力のタグでの前の状態は、「R_TRIG_DB」タグに保存されます。シグナル状態の「0」から「1」への変化が「TagIn」オペランドで検出される場合、1 つのサイクルに対する「TagOut」出力のシグナル状態は「1」になります。

3.4.1.2

F_TRIG:信号立ち下がりエッジを検出

説明「信号立ち下がりエッジの検出」命令を使用して、CLK 入力で「1」から「0」への状態変化を検出できます。この命令は、指定されたインスタンスに保存した前の照会(エッジメモ
リビット)の状態と CLK 入力の現在値を比較します。この命令が CLK 入力で「1」から「0」への状態変化を検出すると、Q 出力で信号立ち下がりエッジが生成されます。つまり、正確に 1 サイクルに対する出力値は TRUE すなわち「1」となります。
それ以外のすべての場合、この命令の出力のシグナル状態は「0」です。

1280

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

CLK

Input

BOOL

エッジが照会さ

I、Q、M、D、L

れる受信信号
Q

Output

BOOL

I、Q、M、D、L

エッジ評価の結果例
次の例で、命令がどのように動作するかを示します。
SCL"F_TRIG_DB"(CLK := "TagIn",
Q => "TagOut");

CLK 入力のタグでの前の状態は、「F_TRIG_DB」タグに保存されます。シグナル状態の「1」から「0」への変化が「TagIn」オペランドで検出される場合、1 つのサイクルに対する「TagOut」出力のシグナル状態は「1」になります。

3.4.2

タイマの動作

3.4.2.1

IEC タイマの呼び出し

説明
IEC タイマをシングルインスタンスまたはマルチインスタンスとして宣言し、プログラム
コード内で呼び出すオプションが用意されています。
以下の構文オプションを使用し、IEC タイマをブロックインターフェースで構造体内のタ
イママルチインスタンスとして宣言できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1281

基本命令
3.4 SCL

配列エレメントとしての IEC タイマ
ブロックインターフェースでの宣言:

プログラムコード:SCL#MyARRAY[1].TOF(IN := <Operand>, PT := <Operand>)

ブロックインターフェースでの宣言:

プログラムコード:SCL#MyARRAY[#index](IN := <Operand>, PT := <Operand>)アノニマス構造体内の IEC タイマ
ブロックインターフェースでの宣言:

プログラムコード:SCL#MyStruct.FirstTime.TOF(IN := <Operand>, PT := <Operand>)

ブロックインターフェースでの宣言:

1282

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

プログラムコード:SCL#MyStruct.FirstTime(IN := <Operand>, PT := <Operand>)

グローバルデータブロック内の IEC タイマ
ブロックインターフェースでの宣言:

プログラムコード:SCL"MyGlobalDB".Timer.FirstTime.TOF(IN := <Operand>, PT := <Operand>)

ブロックインターフェースでの宣言:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1283

基本命令
3.4 SCL
プログラムコード:SCL"MyGlobalDB".Timer.SecondTime(IN := <Operand>, PT := <Operand>)

ブロックインターフェース内のエレメントとしての IEC タイマ
ブロックインターフェースでの宣言:

プログラムコード:SCL#Timer.FirstTime.TOF(IN := <Operand>, PT := <Operand>)

ブロックインターフェースでの宣言:

プログラムコード:SCL#Timer.SecondTime(IN := <Operand>, PT := <Operand>)1284

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

配列 DB 内の IEC タイマ
配列 DB 内での宣言:

プログラムコード:SCL"MyARRAYDB"."THIS"[0].FirstTime.TOF(IN := <Operand>, PT := <Operand>)

配列 DB 内での宣言:

プログラムコード:SCL"MyARRAYDB"."THIS"[0].SecondTime(IN := <Operand>, PT := <Operand>)TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1285

基本命令
3.4 SCL

3.4.2.2

TP: パルスの生成

説明「パルスタイマ」命令を使用して、プログラムされた持続時間のパラメータ Q を設定できます。IN パラメータの論理演算結果(RLO)が「0」から「1」に切り替わると(信号立ち上がりエッジ)、命令が開始されます。命令が開始されると、プログラムされた時間 PT が開始します。その後の入力信号に関係なく、Q パラメータが持続時間 PT の間セットされます。
時間 PT の経過中、IN 入力での新しい信号立ち上がりエッジの検出は Q 出力のシグナル状態に影響を与えません。
ET パラメータにセットされた現在の時間値を照会できます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。持続時間 PT が経過したときに IN パラメータのシグナル状態が「0」の場合、ET パラメータはリセットされます。
注記
命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET 出力はこの時間が経過するとすぐに定数値を返します。
「パルス生成」命令の各呼び出しは、インスタンスデータが保存される IEC タイマに割り当てる必要があります。
構造体内での IEC タイマの呼び出し(マルチインスタンス)に関する情報は、IEC タイマの呼び出し (ページ 1281)を参照してください。

S7-1200 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TP_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のインスタンスデータブロックの宣言「MyIEC_TIMER_DB」など)(• プログラムブロックの「Static」セクション内のデータタイプ TP_TIME のローカルタグ
としての宣言(#MyIEC_TIMER_Instance など)

1286

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

S7-1500 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TP_TIME、または TP_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のインスタンスデータブロックの宣言(「MyIEC_LTIMER_DB」など)• プログラムブロックの「Static」セクション内のデータタイプ TP_TIME または TP_LTIMEのローカルタグとしての宣言(#MyIEC_LTIMER_Instance など)

システムデータタイプ IEC_<Timer>のインスタンスデータブロックとしての IEC タイマ(共有 DB)
IEC タイマはデータブロックとして次のように宣言できます。
<IEC_Timer_DB>.TP();

ブロックインターフェースからのローカルタグとしての IEC タイマ(マルチインスタンス)
IEC タイマはローカルタグとして次のように宣言できます。
#myLocal_Timer();

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1287

基本命令
3.4 SCL

インスタンスデータ内の現在値の更新「パルスタイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「パルスタイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「パルスタイマ」
命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「パルスタイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

1288

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

開始入力

D、L、P
PT

Input

TIME

TIME,

I、Q、M、パルスの持続

LTIME

D、L、P

時間。
PT パラメータの値は正の値であることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1289

基本命令
3.4 SCL
パラメータ
Q

宣言
Output

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

PT 持続時間

D、L、Pにセットされ
たオペラン
ド。

ET

Output

TIME

TIME,

I、Q、M、

現在のタイマ

LTIME

D、L、P

値

パルスタイミング図
次の図に、「パルスタイマ」命令のパルスタイミング図を示します。
,1

4

37

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
SCL"TP_DB".TP(IN := "Tag_Start",
PT := "Tag_PresetTime",
Q => "Tag_Status",
ET => "Tag_ElapsedTime");1290

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わるときに、PT パラ
メータに対してプログラムされた時間が開始され、オペランド「Tag_Status」が「1」にセットされます。現在の時間値は、オペランド「Tag_ElapsedTime」内に保存されます。

3.4.2.3

TON: オンディレータイマ

説明「オンディレータイマ」命令を使用し、プログラムされた持続時間 PT の Q パラメータのセットを遅延することができます。IN パラメータの論理演算結果(RLO)が「0」から「1」に切り替わると(信号立ち上がりエッジ)、命令が開始されます。命令が開始されると、プログラムされた時間 PT が開始します。持続時間 PT が経過すると、Q パラメータはシグナル
状態「1」を返します。Q パラメータは、開始入力が「1」の間はセットされた状態が続きます。IN パラメータのシグナル状態が「1」から「0」に切り替わると、Q パラメータがリセットされます。IN パラメータで信号の新しい立ち上がりエッジが検出されると、タイマファンクションは再開されます。
現在の時間値は、ET パラメータ内で照会することができます。時間値は T#0s で開始し、持続時間 PT の値に達すると終了します。IN パラメータがシグナル状態「0」に切り替わると、ET パラメータは直ちにリセットされます。
注記
命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET 出力は時間 PTの期限が切れるとすぐに定数値を返します。
「オンディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。
構造体内での IEC タイマの呼び出し(マルチインスタンス)に関する情報は、IEC タイマの呼び出し (ページ 1281)を参照してください。

S7-1200 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TON_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のインスタンスデータブロックの宣言「MyIEC_TIMER_DB」など)(• プログラムブロックの「Static」セクション内のデータタイプ TON_TIME のローカルタ
グとしての宣言(#MyIEC_TIMER_Instance など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1291

基本命令
3.4 SCL

S7-1500 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TON_TIME、または TON_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のインスタンスデータブロックの宣言(「MyIEC_TIMER_DB」など)• プログラムブロックの「Static」セクション内のデータタイプ TON_TIME または
TON_LTIME のローカルタグとしての宣言(#MyIEC_TIMER_Instance など)

システムデータタイプ IEC_<Timer>のインスタンスデータブロックとしての IEC タイマ(共有 DB)
IEC タイマはデータブロックとして次のように宣言できます。
<IEC_Timer_DB>.TON();

ブロックインターフェースからのローカルタグとしての IEC タイマ(マルチインスタンス)
IEC タイマはローカルタグとして次のように宣言できます。
#myLocal_Timer();1292

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

インスタンスデータ内の現在値の更新「オンディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オンディレータイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「オンディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オンディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1293

基本命令
3.4 SCL危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

開始入力

D、L、P
PT

Input

TIME

TIME,

I、Q、M、

オンディレー

LTIME

D、L、P

の持続時間。
PT パラメータの値は正の値であることが必要です。

1294

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ

宣言

Q

Output

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

タイマ PT の

D、L、P

経過時にセッ
トされるオペランド。

ET

Output

TIME

TIME,

I、Q、M、

現在のタイマ

LTIME

D、L、P

値

パルスタイミング図
次の図に、「オンディレータイマ」命令のパルスタイミング図を示します。
,1

4

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
SCL"TON_DB".TON(IN := "Tag_Start",
PT := "Tag_PresetTime",
Q => "Tag_Status",
ET => "Tag_ElapsedTime");オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わると、PT パラメー
タにプログラムされた時間が開始します。時間の期限が切れると、「Tag_Status」オペラ
ンドがシグナル状態「1」にセットされます。Tag_Status オペランドのシグナル状態が「1」TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1295

基本命令
3.4 SCLである限り、Tag_Start オペランドは「1」にセットされた状態が継続します。現在の時間
値は、オペランド「Tag_ElapsedTime」内に保存されます。オペランド「Tag_Start」のシグナル状態が「1」から「0」に切り替わると、オペランド「Tag_Status」がリセットされます。

3.4.2.4

TOF: オフディレータイマ

説明「オフディレータイマ」命令を使用し、プログラムされた持続時間 PT の Q パラメータのリセットを遅延することができます。Q パラメータは、パラメータ IN で論理演算の結果(RLO)が「1」から「0」に切り替わった場合(信号立ち下がりエッジ)に設定されます。IN パ
ラメータのシグナル状態が「1」に戻ると、プログラムされた時間 PT が開始します。時間
PT が継続している限り、Q パラメータはセットされた状態が維持されます。時間 PT が経過すると、Q パラメータはリセットされます。時間 PT の期限が切れる前に、IN パラメータのシグナル状態が「1」に切り替わると、タイマはリセットされます。Q パラメータのシ
グナル状態は、「1」にセットされた状態が継続します。
現在の時間値は、ET パラメータ内で照会することができます。タイマ値は T#0s で開始し、持続時間 PT の値に達すると終了します。持続時間 PT が経過すると、ET パラメータは、IN
パラメータが「1」に戻るまで、現在の値がセットされた状態が続きます。時間 PT が経過する前に IN パラメータが「1」に切り替わると、ET パラメータは値 T#0s にリセットされます。
注記
命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET 出力はこの時間が経過するとすぐに定数値を返します。
「オフディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。
構造体内での IEC タイマの呼び出し(マルチインスタンス)に関する情報は、IEC タイマの呼び出し (ページ 1281)を参照してください。

1296

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

S7-1200 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TOF_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のインスタンスデータブロックの宣言「MyIEC_TIMER_DB」など)(• プログラムブロックの「Static」セクション内のデータタイプ TOF_TIME のローカルタ
グとしての宣言(#MyIEC_TIMER_Instance など)

S7-1500 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TOF_TIME、または TOF_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のインスタンスデータブロックの宣言(「MyIEC_TIMER_DB」など)• プログラムブロックの「Static」セクション内のデータタイプ TOF_TIME またはTOF_LTIME のローカルタグとしての宣言(#MyIEC_TIMER_Instance など)

システムデータタイプ IEC_<Timer>のインスタンスデータブロックとしての IEC タイマ(共有 DB)
IEC タイマはデータブロックとして次のように宣言できます。
<IEC_Timer_DB>.TOF();

ブロックインターフェースからのローカルタグとしての IEC タイマ(マルチインスタンス)
IEC タイマはローカルタグとして次のように宣言できます。
#myLocal_Timer();

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1297

基本命令
3.4 SCL

インスタンスデータ内の現在値の更新「オフディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オフディレータイマ」命令は、現在の RLO と、インスタンスデータの IN パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が開始されます。「オフディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、 Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オフディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

1298

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

開始入力

D、L、P
PT

Input

TIME

TIME,

I、Q、M、

オフディレー

LTIME

D、L、P

の持続時間。
PT パラメータの値は正の値であることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1299

基本命令
3.4 SCL
パラメータ
Q

宣言

データタイプ

Output

S7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

時間 PT の経

D、L、P

過時にリセッ
トされるオペランド。

ET

Output

TIME

TIME,

I、Q、M、

現在のタイマ

LTIME

D、L、P

値

パルスタイミング図
次の図に、「オフディレータイマ」命令のパルスダイアグラムを示します。
,1

4
37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
SCL"TOF_DB".TOF(IN := "Tag_Start",
PT := "Tag_PresetTime",
Q => "Tag_Status",
ET => "Tag_ElapsedTime");オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わると、オペランド「Tag_Status」がセットされます。オペランド「Tag_Start」のシグナル状態が「1」から「0」に切り替わると、PT パラメータにプログラムされた時間が開始します。時間が継続中

1300

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLの場合は、オペランド「Tag_Status」はセットされた状態が続きます。時間が経過すると、オペランド「Tag_Status」はリセットされます。現在の時間値は、オペランド「Tag_ElapsedTime」内に保存されます。

3.4.2.5

TONR: タイムアキュムレータ

説明「タイムアキュムレータ」命令を使用して、PT パラメータによってセットされた時間内の時間値を累積します。IN パラメータのシグナル状態が「1」に切り替わると、時間測定が実行され、時間 PT が開始します。持続時間 PT が継続中の場合は、IN パラメータのシグ
ナル状態が「1」の時に記録された時間値が累積されます。「IN」入力のシグナル状態が「0」に切り替わると、時間測定が中断されます。「IN」入力のシグナル状態が「1」に戻ると、時間測定が再度開始されます。累積時間は ET パラメータ内に出力され、そこで照会することができます。持続時間 PT が経過すると、Q パラメータのシグナル状態は「1」になります。IN パラメータがシグナル状態「0」に切り替わっても、Q パラメータは「1」にセットされた状態が継続します。
IN パラメータのシグナル状態に関係なく、R パラメータは ET および Q パラメータをリセットします。
「タイムアキュムレータ」命令の各呼び出しは、インスタンスデータが格納される IEC タ
イマに割り当てられる必要があります。
構造体内での IEC タイマの呼び出し(マルチインスタンス)に関する情報は、IEC タイマの呼び出し (ページ 1281)を参照してください。

S7-1200 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER または TONR_TIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER のインスタンスデータブロックの宣言「MyIEC_TIMER_DB」など)(• プログラムブロックの「Static」セクション内のデータタイプ TONR_TIME のローカルタグとしての宣言(#MyIEC_TIMER_Instance など)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1301

基本命令
3.4 SCL

S7-1500 シリーズの CPU の場合
IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TONR_TIME、または TONR_LTIMEの構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のインスタンスデータブロックの宣言(「MyIEC_TIMER_DB」など)• プログラムブロックの「Static」セクション内のデータタイプ TONR_TIME またはTONR_LTIME のローカルタグとしての宣言(#MyIEC_TIMER_Instance など)

システムデータタイプ IEC_<Timer>のインスタンスデータブロックとしての IEC タイマ(共有 DB)
IEC タイマはデータブロックとして次のように宣言できます。
<IEC_Timer_DB>.TONR();

ブロックインターフェースからのローカルタグとしての IEC タイマ(マルチインスタンス)
IEC タイマはローカルタグとして次のように宣言できます。
#myLocal_Timer();

インスタンスデータ内の現在値の更新「タイムアキュムレータ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「タイムアキュムレータ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が続行されます。命令がRLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が中断されます。「タイムアキュムレータ」命令が処理されると、IN パラメー
タの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。

1302

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL• R 入力入力 R での信号「1」は、時間測定をリセットおよびブロックします。IN 入力でのエッジは無視されます。入力 R での信号「0」は、時間測定を再度有効にします。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「タイムアキュムレータ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。
危険現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1303

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN

宣言
Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域

説明

I、Q、M、

開始入力

D、L、P
R

Input

BOOL

BOOL

I、Q、M、

ET および Q

D、L、P

パラメータの
リセット

PT

Input

TIME

TIME,

I、Q、M、

時間記録の最

LTIME

D、L、P

大持続時間。
PT パラメータの値は正の値であることが必要です。

Q

Output

BOOL

BOOL

I、Q、M、

タイマ PT の

D、L、P

経過時にセットされた状態で維持されるオペランド。

ET

1304

Output

TIME

TIME,

I、Q、M、

LTIME

D、L、P

累積時間

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パルスタイミング図
次の図に、「タイムアキュムレータ」命令のパルスタイミング図を示します。
,1

5

4

37

(7

例
次の例で、命令がどのように動作するかを示します。
SCL"TONR_DB".TONR(IN := "Tag_Start",
R := "Tag_Reset",
PT := "Tag_PresetTime",
Q => "Tag_Status",
ET => "Tag_Time");オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わると、PT パラメー
タにプログラムされた時間が開始します。時間が経過している間、「Tag_Start」オペラン
ドのシグナル状態が「1」のときに記録された時間値が累積されます。累積時間は「Tag_Time」オペランド内に保存されます。PT パラメータに指定されている時間値に達す
ると、「Tag_Status」オペランドがシグナル状態「1」にセットされます。現在の時間値は、
オペランド「Tag_Time」内に保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1305

基本命令
3.4 SCL

3.4.2.6

RESET_TIMER: タイマのリセット

説明「タイマのリセット」命令を使用し、IEC タイマを「0」にリセットすることが可能です。
指定されたデータブロック内のタイマの構造体コンポーネントが「0」にリセットされます。

現在値の更新
この命令は、RLO に影響を与えません。TIMER パラメータで、「タイマのリセット」命令に、プログラムで宣言された IEC タイマが割り当てられます。この命令は、IF 命令でプロ
グラミングされる必要があります。命令のデータは命令が呼び出されるときのみ更新され、割り当てられた IEC タイマがアクセスされるたびには更新されません。データを照会する
場合、命令の呼び出しから次の命令の呼び出しまでのみ同一になります。
危険現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

1306

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプS7-1200<IEC timer>

Output

説明

D、L

リセットされS7-1500

IEC_TIMER, IEC_TIMER
TP_TIME,

メモリ領域、

る IEC タイマ

TON_TIME, IEC_LTIME
R、
TOF_TIME, TP_TIME、
TONR_TIM

TP_LTIMEE、
TON_TIME、
TON_LTIM
E、
TOF_TIME、TOF_LTIME、TONR_TIM
E、
TONR_LTI
ME

例
次の例で、命令がどのように動作するかを示します。
SCL
IF #started = false THEN
"TON_DB".TON(IN := "Tag_Start",
PT := "Tag_PresetTime",
Q => "Tag_Status",
ET => "Tag_ElapsedTime");#started := true;
END_IF;IF "TON_DB".ET < T#25s THEN

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1307

基本命令
3.4 SCLSCLRESET_TIMER(TIMER := "TON_DB");#started := false;
END_IF;

タグ#started のシグナル状態が「0」であるときに、オペランド「Tag_Start」で信号立ち上
がりエッジが発生すると、「オンディレータイマ」命令が実行されます。インスタンスデータブロック「TON_DB」に保存された IEC タイマは、オペランド「Tag_PresetTime」で指定された持続時間で起動します。オペランド「Tag_Status」は、オペランド「Tag_PresetTime」によって指定された持続時間が期限切れになるとセットされます。オ
ペランド「Tag_Start」のシグナル状態が「1」である限り、パラメータ Q はセットされた状態となります。開始入力のシグナル状態が「1」から「0」に切り替わると、Q パラメー
タのオペランドがリセットされます。
IEC タイマ「TON_DB」の期限切れ時間が 25 秒未満である場合、「タイマのリセット」命令が実行され、「TON_DB」インスタンスデータブロックに格納されているタイマがリセットされます。

3.4.2.7

PRESET_TIMER: 持続時間のロード

説明「持続時間のロード」命令を使用して、IEC タイマの時間を設定することが可能です。命令の入力において、論理演算の結果(RLO)のシグナル状態が「1」の場合、サイクルごとにこの命令を実行します。
プログラムで宣言した IEC タイマを「持続時間のロード」命令に割り当てます。この命令を実行すると、指定された IEC タイマの構造体に指定された時間を書き込みます。
この命令は、RLO に影響を与えません。
注記
命令の実行中に、指定された IEC タイマが動作している場合、指定された IEC タイマの現在の時刻が上書きされます。これによって、IEC タイマのタイマステータスを変更できます。

1308

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

現在値の更新命令のデータは命令が呼び出されるとき、および割り当てられた IEC タイマがアクセスされるたびにのみ更新されます。Q または ET (たとえば"MyTimer".Q または"MyTimer".ET)で照会すると、IEC_TIMER 構造体が更新されます。
危険
現在値の再初期化時の危険性
時間実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1309

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
<Time

宣言
Input

データタイプ

Output説明S7-1200

S7-1500

TIME

TIME,

I、Q、M、

IEC タイマが

LTIME

D、L

動作する時間。

duration><IEC timer>

メモリ領域

IEC_TIMER, IEC_TIMER, D、L

持続時間を設TP_TIME,

定する IEC タ

TON_TIME, IEC_LTIME

イマ。

R,
TOF_TIME, TP_TIME,TONR_TIM

TP_LTIME,E

TON_TIME,
TON_LTIME,
TOF_TIME,TOF_LTIME,TONR_TIME,
TONR_LTI
ME

例
次の例で、命令がどのように動作するかを示します。
SCL
IF#started = falseTHEN"TON_DB".TON(IN := "Tag_Start",
PT := "Tag_PresetTime",
Q => "Tag_Status",
ET => "Tag_ElapsedTime");#started := true;#preset = true
END_IF;

1310

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLSCL
IF "TON_DB".ET < T#10s AND #preset = true THENPRESET_TIMER(PT := T#25s,
TIMER := "TON_DB");#preset := false;
END_IF;

タグ#started のシグナル状態が「0」であるときに、オペランド「Tag_Start」で信号立ち上
がりエッジが発生すると、「オンディレータイマ」命令が実行されます。インスタンスデータブロック「TON_DB」に保存された IEC タイマは、オペランド「Tag_PresetTime」で指定された持続時間で起動します。オペランド「Tag_Status」は、オペランド「Tag_PresetTime」によって指定された持続時間 PT が期限切れになるとセットされます。
オペランド「Tag_Start」のシグナル状態が「1」である限り、パラメータ Q はセットされた状態となります。開始入力のシグナル状態が「1」から「0」に切り替わると、Q パラメータのオペランドがリセットされます。
IEC タイマ「TON_DB」の期限切れ時間が 10 秒未満であり、タグ#preset のシグナル状態が「1」であるときは、「持続時間のロード」命令が実行されます。この命令がパラメータ PT
で指定される持続時間をインスタンスデータブロック「TON_DB」に書き込む。これにより、インスタンスデータブロック内のオペランド「Tag_PresetTime」の時間値が上書きされる。タイマステータスのシグナル状態は、次の照会時、または "TON_DB".Q または"TON_DB".ET へのアクセス時に変化する可能性があります。

3.4.2.8

レガシー

S_PULSE: パルスタイマパラメータの割り当てと開始

説明「パルスタイマパラメータの割り当てと開始」命令は、S パラメータの論理演算結果(RLO)内で「0」から「1」(信号立ち上がりエッジ)の切り替えを検出すると、T_NO パラメータ内
でプログラムされた時間を開始します。このタイマは、S パラメータのシグナル状態が「1」である間は、プログラムされた時間(TV)の間動作します。
プログラムされた時間が経過する前に S パラメータがシグナル状態「0」に切り替わると、タイマは停止し Q パラメータは「0」にリセットされます。
内部的には、この時間は時間値とタイムベースで構成されていて、TV パラメータ内にプ
ログラムされます。この命令が開始すると、プログラムされた時間値は 0 までカウントダ
ウンされます。タイムベースは、時間値の変更単位となる時間インクリメントを指定します。現在の時間値は、BI パラメータで与えられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1311

基本命令
3.4 SCL
タイマが動作していて、かつ入力 R のシグナル状態が「1」に切り替わった場合、現在の時間値およびタイムベースともに 0 にセットされます。タイマが動作していない場合、R
入力のシグナル状態が「1」であっても効果はありません。
タイマが動作しているときに S パラメータのシグナル状態が「1」の場合、Q パラメータがシグナル状態「1」を返します。プログラムされた時間が経過する前に S パラメータがシグナル状態「0」に切り替わると、Q パラメータはシグナル状態「0」を返します。タイ
マがパラメータ R によってリセットされるか、またはタイマの時間を経過すると、パラメ
ータ Q もシグナル状態「0」を返します。
命令データはアクセスのたびに更新されます。そのため、サイクル開始時に照会されるデータがサイクル終了時の値とは異なる可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

T_NO

TIMER, INT

T

開始されるタイマ。

Input

タイマの数は CPU によって異なります。
S

Input

BOOL

I、Q、M、D、L 開始入力

TV

Input

S5TIME, WORD

I、Q、M、D、L プリセット時間値

R

Input

BOOL

I、Q、M、D、

リセット入力L、PQ

Output

BOOL

I、Q、M、D、

タイマのステータス

L、P
BI

Outputファンクション値

1312

WORD
S5TIME

I、Q、M、D、

現在のデュアルコーディ

L、P

ングされたタイマ値

I、Q、M、D、L 現在のタイマ値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
有効なデータタイプの追加情報については、「関連項目」を参照してください。

パルスタイミング図
次の図に、「パルスタイマパラメータの割り当てと開始」命令のパルスタイミング図を示し
ます。
7

7

7

⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻ⸮嫛₼⟞ሧ⚗ቲሾ

⟞ሧ⚗ቲሾ

W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_PULSE(T_NO := "Timer_1",
S := "Tag_1",
TV := "Tag_Number",
R := "Tag_Reset",
Q => "Tag_Status",
BI => "Tag_Value");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1313

基本命令
3.4 SCL
オペランド「Tag_1」のシグナル状態が「0」から「1」に切り替わると、「Timer_1」が開始します。タイマは、オペランド「Tag_1」がシグナル状態「1」を返すまでオペランド「Tag_Number」の時間値でカウントダウンします。
プログラムされた時間が経過する前に S パラメータがシグナル状態「0」に切り替わると、オペランド「Tag_Status」が「0」にリセットされます。タイマが R パラメータによってリセットされるか、またはタイマの時間を経過すると、「Tag_Status」アドレスもシグナル
状態「0」を返します。
現在の時間値は二重符号化されてオペランド「Tag_Value」に格納され、かつファンクシ
ョン値として返されます。

下記も参照
L: タイマ値のロード (ページ 1135)

S_PEXT: 拡張パルスタイマパラメータの割り当てと開始

説明「拡張パルスタイマパラメータの割り当てと開始」命令は、S パラメータで信号の立ち上がりエッジが検出されると、プログラムされたタイマを開始します。このタイマは、S パラ
メータがシグナル状態「0」に切り替わっても、プログラムされた時間(TV)実行されます。
タイマが実行されている間は、Q パラメータがシグナル状態「1」を返します。
タイマの時間が経過すると、パラメータ Q が「0」にリセットされます。タイマの実行中にS パラメータでシグナル状態が「0」から「1」に切り替わると、タイマは TV パラメータでプログラムされた時間で再開されます。
内部的には、この時間は時間値とタイムベースで構成されていて、TV パラメータ内にプ
ログラムされます。この命令が開始すると、プログラムされた時間値は 0 までカウントダ
ウンされます。タイムベースは、時間値の変更単位となる時間インクリメントを指定します。現在の時間値は、BI パラメータで与えられます。
タイマが動作しているときにパラメータ R のシグナル状態が「1」に切り替わった場合、現在の時間値およびタイムベースともに 0 にセットされます。タイマが動作していない場
合、パラメータ R のシグナル状態が「1」であっても効果はありません。

1314

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
命令データはアクセスのたびに更新されます。そのため、サイクル開始時に照会されるデータがサイクル終了時の値とは異なる可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

T_NO

Input

TIMER, INT

開始されるタイマ。

T

タイマの数は CPU によって異なります。
S

Input

BOOL

I、Q、M、

開始入力

D、L
TV
R

Input
Input

S5TIME,

I、Q、M、

WORD

D、L

BOOL

I、Q、M、

プリセット時間値
リセット入力

D、L、P
Q

Output

BOOL

I、Q、M、

タイマのステータス

D、L、PBI
ファンクション値

OutputWORD
S5TIME

I、Q、M、

現在のデュアルコーディング

D、L、P

されたタイマ値

I、Q、M、

現在のタイマ値

D、L
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1315

基本命令
3.4 SCL

パルスタイミング図
次の図に、「拡張パルスタイマパラメータの割り当てと開始」命令のパルスタイミング図を
示します。
7

7

7

7

⏴┪6ቑ5/2⏴┪5ቑ5/2⸮嫛㣑栢ኌኅ዇ಯಯ

ኌኅ዇ಯಯ
W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_PEXT(T_NO := "Timer_1",
S := "Tag_1",
TV := "Tag_Number",
R := "Tag_Reset",
Q => "Tag_Status",
BI => "Tag_Value");

オペランド「Tag_1」のシグナル状態が「0」から「1」に切り替わると、「Timer_1」が開始します。タイマが実行されている間は、オペランド「Tag_Status」がシグナル状態「1」を返します。タイマの時間が経過すると、オペランド「Tag_Status」が「0」にリセット

1316

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLされます。タイマの実行中に S 入力でシグナル状態が「0」から「1」に切り替わると、タ
イマは時間「Tag_Number」で再開されます。
現在の時間値は二重符号化されてオペランド「Tag_Value」に格納され、かつファンクシ
ョン値として返されます。

下記も参照
L: タイマ値のロード (ページ 1135)

S_ODT: オンディレータイマパラメータの割り当てと開始

説明「オンディレータイマパラメータの割り当てと開始」命令は、S パラメータで信号の立ち上がりエッジが検出されると、プログラムされたタイマをオンディレーとして開始します。
このタイマは、S パラメータのシグナル状態が「1」である間は、プログラムされた時間(TV)の間動作します。
タイマの時間が正常に経過しているときにパラメータ S のシグナル状態が「1」のままである場合、パラメータ Q がシグナル状態「1」を返します。タイマの実行中に S パラメー
タのシグナル状態が「1」から「0」に切り替わると、タイマは停止します。この場合、出
力 Q がシグナル状態「0」にリセットされます。
内部的には、この時間は時間値とタイムベースで構成されていて、TV パラメータ内にプ
ログラムされます。この命令が開始すると、プログラムされた時間値は 0 までカウントダ
ウンされます。タイムベースは、時間値の変更単位となる時間インクリメントを指定します。現在の時間値は、BI パラメータで与えられます。
タイマが動作していて、かつ入力 R のシグナル状態が「0」から「1」に切り替わった場合、現在の時間値およびタイムベースともに 0 にセットされます。この場合、パラメータ Q のシグナル状態は「0」です。タイマが実行されていない場合や、S パラメータの論理演算
結果(RLO)が「1」である場合でも、R パラメータのシグナル状態が「1」であればタイマはリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1317

基本命令
3.4 SCL
命令データはアクセスのたびに更新されます。そのため、サイクル開始時に照会されるデータがサイクル終了時の値とは異なる可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

T_NO

Input

TIMER, INT

開始されるタイマ。

T

タイマの数は CPU によって異なります。
S

Input

BOOL

I、Q、M、D、 開始入力
L

TV
R

Input
Input

S5TIME,

I、Q、M、D、 プリセット時間値

WORD

L

BOOL

I、Q、M、D、 リセット入力
L、P

Q

Output

BOOL

I、Q、M、D、 タイマのステータス
L、P

BI

Output

WORD

I、Q、M、D、 現在のデュアルコーディン
L、P

ファンクション値

S5TIME

グされたタイマ値

I、Q、M、D、 現在のタイマ値
L

有効なデータタイプの追加情報については、「関連項目」を参照してください。

1318

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パルスタイミング図
次の図に、「オンディレータイマパラメータの割り当てと開始」命令のパルスタイミング図を示します。
7

7

7⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻ⸮嫛₼⟞ሧ⚗ቲሾ

⟞ሧ⚗ቲሾ
W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_ODT(T_NO := "Timer_1",
S := "Tag_1",
TV := "Tag_Number",
R := "Tag_Reset",
Q => "Tag_Status",
BI => "Tag_Value");

オペランド「Tag_1」のシグナル状態が「0」から「1」に切り替わると、「Timer_1」が開始します。このタイマは、オペランド「Tag_1」のシグナル状態が「1」である間は、持続時間「Tag_Number」の間動作します。
タイマの時間が正常に経過し、かつオペランド「Tag_Status」のシグナル状態が「1」である場合は、オペランド「Tag_Status」がシグナル状態「1」にリセットされます。タイ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1319

基本命令
3.4 SCLマの実行中にオペランド「Tag_1」のシグナル状態が「1」から「0」に切り替わった場合、タイマは停止します。この場合、オペランド「Tag_Status」はシグナル状態「0」を返します。
現在の時間値は二重符号化されてオペランド「Tag_Value」に格納され、かつファンクシ
ョン値として返されます。

下記も参照
L: タイマ値のロード (ページ 1135)

S_ODTS: 保持型オンディレータイマパラメータの割り当てと開始

説明「保持型オンディレータイマパラメータの割り当てと開始」命令は、S パラメータで信号の立ち上がりエッジが検出されると、プログラムされたタイマを開始します。このタイマは、S パラメータがシグナル状態「0」に切り替わっても、プログラムされた時間(TV)実行されます。
タイマの時間が経過すると、「Q」パラメータは「S」パラメータのシグナル状態に関わらずシグナル状態「1」を返します。タイマの実行中に S パラメータでシグナル状態が「0」から「1」に切り替わると、タイマはプログラムされた時間「TV」で再開されます。
内部的には、この時間は時間値とタイムベースで構成されていて、TV パラメータ内にプ
ログラムされます。この命令が開始すると、プログラムされた時間値は 0 までカウントダ
ウンされます。タイムベースは、時間値の変更単位となる時間インクリメントを指定します。現在の時間値は、BI パラメータで与えられます。
R パラメータのシグナル状態「1」は、S パラメータのシグナル状態に関わらず、現在の時間値およびタイムベースを「0」にリセットします。この場合、パラメータ Q のシグナル
状態は「0」です。
命令データはアクセスのたびに更新されます。そのため、サイクル開始時に照会されるデータがサイクル終了時の値とは異なる可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。

1320

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

T_NO

Input

TIMER, INT

開始されるタイマ。

T

タイマの数は CPU によって異なります。
S

Input

BOOL

I、Q、M、D、L 開始入力

TV

Input

S5TIME,

I、Q、M、D、L プリセット時間値

WORD
R

Input

BOOL

I、Q、M、D、

リセット入力L、PQ

Output

BOOL

I、Q、M、D、

タイマのステータス

L、PBI
ファンクション値

OutputWORD
S5TIME

I、Q、M、D、

現在のデュアルコーディ

L、P

ングされたタイマ値

I、Q、M、D、L 現在のタイマ値

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1321

基本命令
3.4 SCL

パルスタイミング図
次の図に、「保持型オンディレータイマパラメータの割り当てと開始」命令のパルスタイ
ミング図を示します。
7

7

7

7

⏴┪6ቑ5/2⏴┪5ቑ5/2

ኜኁኻ⸮嫛₼⟞ሧ⚗ቲሾ
⟞ሧ⚗ቲሾ
W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_ODTS(T_NO := "Timer_1",
S := "Tag_1",
TV := "Tag_Number",
R := "Tag_Reset",
Q => "Tag_Status",
BI => "Tag_Value");

オペランド「Tag_1」のシグナル状態が「0」から「1」に切り替わると、「Timer_1」が開始します。タイマは持続時間「Tag_Number」の間動作します。
タイマの時間が経過すると、オペランド「Tag_Status」はオペランド「Tag_1」のシグナル状態に関わらずシグナル状態「1」を返します。タイマの実行中にオペランド「Tag_1」のシグナル状態が「0」から「1」に切り替わると、タイマは時間「Tag_Number」で再開されます。
現在の時間値は二重符号化されてオペランド「Tag_Value」に格納され、かつファンクシ
ョン値として返されます。

1322

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

下記も参照
L: タイマ値のロード (ページ 1135)

S_OFFDT: オフディレータイマパラメータの割り当てと開始

説明「オフディレータイマパラメータの割り当てと開始」命令は、S パラメータで信号の立ち下がりエッジが検出されると、プログラムされた時間を開始します。タイマはプログラムされた時間「TV」の間動作します。タイマが動作している場合、または S パラメータがシグナル状態「1」を返す場合は、Q パラメータのシグナル状態は「1」となります。
タイマの時間が経過し、かつシグナル状態が「0」の場合は、Q パラメータがシグナル状態「0」にリセットされます。タイマの実行中にパラメータ S のシグナル状態が「0」から「1」に切り替わると、タイマは停止します。タイマは、S パラメータで信号立ち下がりエッジが検出された後にのみ再開されます。
内部的には、この時間は時間値とタイムベースで構成されていて、TV パラメータ内にプ
ログラムされます。この命令が開始すると、プログラムされた時間値は 0 までカウントダ
ウンされます。タイムベースは、時間値の変更単位となる時間インクリメントを指定します。現在の時間値は、BI パラメータで与えられます。
R パラメータのシグナル状態「1」は、現在の時間値およびタイムベースを「0」にリセットします。この場合、パラメータ Q のシグナル状態は「0」です。
命令データはアクセスのたびに更新されます。そのため、サイクル開始時に照会されるデータがサイクル終了時の値とは異なる可能性があります。
注記
時間セルでは、オペレーティングシステムは、時間値が「0」と等しくなるまで、タイムベースによって指定された間隔で、時間値を 1 単位ずつ減少させます。このデクリメント
は、ユーザープログラムに対して非同期的に行われます。このため、結果のタイマは目的のタイムベースよりも最大で間隔が 1 時間短くなります。
時間セルを形成する方法の例は、以下で確認できます。関連項目「L:タイマ値のロード」。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1323

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

T_NO

Input

TIMER, INT

開始されるタイマ。

T

タイマの数は CPU によって異なります。
S

Input

BOOL

I、Q、M、

開始入力

D、L
TV
R

Input
Input

S5TIME,

I、Q、M、

WORD

D、L

BOOL

I、Q、M、

プリセット時間値
リセット入力

D、L、P
Q

Output

BOOL

I、Q、M、

タイマのステータス

D、L、PBI
ファンクション値

OutputWORD
S5TIME

I、Q、M、

現在のデュアルコーディン

D、L、P

グされたタイマ値

I、Q、M、

現在のタイマ値

D、L
有効なデータタイプの追加情報については、「関連項目」を参照してください。

1324

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パルスタイミング図
次の図に、「オフディレータイマパラメータの割り当てと開始」命令のパルスタイミング図を示します。
7

7

7

7⏴┪6ቑ5/2⏴┪5ቑ5/2⸮嫛㣑栢ኌኅ዇ಯಯ

ኌኅ዇ಯಯ
W ኴዊኍ዆ኽሸቯቂ㣑栢例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_OFFDT(T_NO := "Timer_1",
S := "Tag_1",
TV := "Tag_Number",
R := "Tag_Reset",
Q => "Tag_Status",
BI => "Tag_Value");

タイマ「Timer_1」は、オペランド「Tag_1」のシグナル状態が「1」から「0」に切り替わると開始されます。タイマは持続時間「Tag_Number」の間動作します。タイマが動作している場合、またはオペランド「Tag_1」がシグナル状態「1」を返す場合は、オペランド「Tag_Status」のシグナル状態は「1」となります。
タイマの時間が経過し、かつオペランド「Tag_1」のシグナル状態が「0」の場合は、オペランド「Tag_Status」がシグナル状態「0」にリセットされます。タイマの実行中にオペランド「Tag_1」のシグナル状態が「0」から「1」に切り替わった場合、タイマがリセ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1325

基本命令
3.4 SCLットされます。タイマは、S パラメータで立ち下がりエッジが検出された後にのみ再開されます。
現在の時間値は二重符号化されてオペランド「Tag_Value」に格納され、かつファンクシ
ョン値として返されます。

下記も参照
L: タイマ値のロード (ページ 1135)

3.4.3

カウンタ演算3.4.3.1

IEC カウンタの呼び出し

説明
IEC カウンタをシングルインスタンスまたはマルチインスタンスとして宣言し、プログラ
ムコード内で呼び出すオプションが用意されています。
以下の構文オプションを使用し、IEC カウンタをブロックインターフェースで構造体内のタイママルチインスタンスとして宣言できます。

配列エレメントとしての IEC カウンタ
ブロックインターフェースでの宣言:

プログラムコード:SCL#MyARRAY[1].CTU(CU := <Operand>, PV := <Operand>)

ブロックインターフェースでの宣言:

1326

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
プログラムコード:SCL#MyARRAY[#index](CU := <Operand>, PV := <Operand>)アノニマス構造体内の IEC カウンタ
ブロックインターフェースでの宣言:

プログラムコード:SCL#MyStruct.FirstTime.CTU(CU := <Operand>, PV := <Operand>)

ブロックインターフェースでの宣言:

プログラムコード:SCL#MyStruct.FirstTime(CU := <Operand>, PV := <Operand>)TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1327

基本命令
3.4 SCLグローバルデータブロック内の IEC カウンタ
ブロックインターフェースでの宣言:

プログラムコード:SCL"MyGlobalDB".Counter.FirstCount.CTU(CU := <Operand>, PV := <Operand>)

ブロックインターフェースでの宣言:

プログラムコード:SCL"MyGlobalDB".Counter.SecondCount(CU := <Operand>, PV := <Operand>)1328

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

ブロックインターフェース内のエレメントとしての IEC カウンタ
ブロックインターフェースでの宣言:

プログラムコード:SCL#Counter.FirstCount.CTU(CU := <Operand>, PV := <Operand>)

ブロックインターフェースでの宣言:

プログラムコード:SCL#Counter.SecondCount(CU := <Operand>, PV := <Operand>)TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1329

基本命令
3.4 SCL

配列 DB 内の IEC カウンタ
配列 DB 内での宣言:

プログラムコード:SCL"MyARRAYDB"."THIS"[0].FirstCount.CTU(CU := <Operand>, PV := <Operand>)

配列 DB 内での宣言:

プログラムコード:SCL"MyARRAYDB"."THIS"[0].SecondCount(CU := <Operand>, PV := <Operand>)

1330

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.3.2

CTU: カウントアップ

説明
CV パラメータの値のインクリメントには、「カウントアップ」命令を使用できます。CU パ
ラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わるとこの命令が実行され、CV パラメータのカウンタ現在値が 1 インクリメントされます。立ち上がりエッジを検出するたびに、CV パラメータにおいて指定されたデータタイプの上限値に達するまで、カウンタ値がインクリメントされます。上限値に達すると、CU パラメータのシグナル状態はこの命令には影響を与えなくなります。
Q パラメータのカウンタステータスを照会できます。Q パラメータのシグナル状態は、PV
パラメータによって決まります。カウンタ現在値が PV パラメータの値以上の場合、Q パ
ラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、Q パラメー
タのシグナル状態は「0」です。PV パラメータには定数も指定できます。
R パラメータのシグナル状態が「1」に切り替わると、CV パラメータの値はゼロにリセッ
トされます。R パラメータのシグナル状態が「1」である限り、CU パラメータのシグナル状態はこの命令には影響を与えません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

S7-1200 シリーズの CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTU_SINT / CTU_USINT• IEC_COUNTER / IEC_UCOUNTER• CTU_INT / CTU_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTU_DINT / CTU_UDINT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1331

基本命令
3.4 SCL

S7-1500 シリーズの CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTU_SINT / CTU_USINT• IEC_COUNTER / IEC_UCOUNTER• CTU_INT / CTU_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTU_DINT / CTU_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTU_LINT / CTU_ULINT

IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のインスタンスデータブロックの宣言「MyIEC_COUNTER_DB」など)(• プログラムブロックの Static セクション内のデータタイプ CTUD_<DataType>のローカ
ルタグとしての宣言(#MyIEC_COUNTER_Instance など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。
「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロック
インターフェース内で、保持型として定義されます。

システムデータタイプ IEC_<Counter>のデータブロックとしての IEC カウンタ(共有 DB)
IEC カウンタはデータブロックとして次のように宣言できます。
<IEC_Counter_DB>.CTU();

ブロックインターフェースからのローカルタグとしての IEC カウンタ(マルチインスタンス)
IEC カウンタはローカルタグとして次のように宣言できます。
#myLocal_Counter();
構造体内での IEC カウンタの呼び出し(マルチインスタンス)に関する情報は、IEC カウン
タの呼び出し (ページ 1326)を参照してください。

1332

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CU

Input

BOOL

I、Q、M、D、L カウント入力

R

Input

BOOL

I、Q、M、D、

リセット入力

L、P
PV

Input

整数

I、Q、M、D、Q 出力がセットされる値

L、PQ

Output

BOOL

I、Q、M、D、L カウンタステータス

CV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値例
次の例で、命令がどのように動作するかを示します。
SCL"IEC_COUNTER_DB".CTU(CU := "Tag_Start",
R := "Tag_Reset",
PV := "Tag_PresetValue",Q => "Tag_Status",
CV => "Tag_CounterValue");「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、「カウントア
ップ」命令が実行され、「Tag_CounterValue」カウンタ現在値が 1 インクリメントされます。信号立ち上がりエッジが検出されるたびにカウント値がインクリメントされ、指定されたデータタイプの上限値(INT = 32767)に達するまでインクリメントされます。
カウンタ現在値がオペランド「Tag_PresetValue」の値以上の場合、「Tag_Status」出力のシグナル状態は「1」になります。それ以外のすべての場合、「Tag_Status」出力のシグナル
状態は「0」になります。カウンタ現在値は、オペランド「Tag_CounterValue」内に保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1333

基本命令
3.4 SCL

3.4.3.3

CTD: カウントダウン

説明「カウントダウン」命令は、CV パラメータのデクリメントに使用します。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わるとこの命令が実行され、CV パラメータのカウンタ現在値が 1 デクリメントされます。指定されたデータタ
イプの下限値に達するまで、信号の立ち上がりエッジが検出されるたびにカウンタがデクリメントされます。下限値に達すると、CD パラメータのシグナル状態はこの命令には影響を与えなくなります。
Q パラメータのカウンタステータスを照会できます。カウンタ現在値がゼロ以下の場合、Q
パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、Q パラメータのシグナル状態は「0」です。PV パラメータには定数も指定できます。
CV パラメータの値は、LD パラメータのシグナル状態が「1」に切り替わると PV パラメー
タの値にセットされます。LD パラメータのシグナル状態が「1」である限り、CD パラメータのシグナル状態はこの命令には影響を与えません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントダウン」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

S7-1200 シリーズの CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック

1334• IEC_SCOUNTER / IEC_USCOUNTER• CTD_SINT / CTD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTD_INT / CTD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTD_DINT / CTD_UDINT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

S7-1500 シリーズの CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTD_SINT / CTD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTD_INT / CTD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTD_DINT / CTD_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTD_LINT / CTD_ULINT

IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のインスタンスデータブロックの宣言「MyIEC_COUNTER_DB」など)(• プログラムブロックの Static セクション内のデータタイプ CTD_<DataType>のローカルタグとしての宣言(#MyIEC_COUNTER_Instance など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。
「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロック
インターフェース内で、保持型として定義されます。

システムデータタイプ IEC_<Counter>のデータブロックとしての IEC カウンタ(共有 DB)
IEC カウンタはデータブロックとして次のように宣言できます。
<IEC_Counter_DB>.CTD();

ブロックインターフェースからのローカルタグとしての IEC カウンタ(マルチインスタンス)
IEC カウンタはローカルタグとして次のように宣言できます。
#myLocal_Counter();
構造体内での IEC カウンタの呼び出し(マルチインスタンス)に関する情報は、IEC カウン
タの呼び出し (ページ 1326)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1335

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CD

Input

BOOL

I、Q、M、D、L カウント入力

LD

Input

BOOL

I、Q、M、D、

ロード入力

L、P
PV

Input

整数

I、Q、M、D、CV 出力が LD = 1 にセッ

L、P

トされる値。

Q

Output

BOOL

I、Q、M、D、L カウンタステータス

CV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値例
次の例で、命令がどのように動作するかを示します。
SCL"IEC_SCOUNTER_DB".CTD(CD := "Tag_Start",
LD := "Tag_Load",
PV := "Tag_PresetValue",Q => "Tag_Status",
CV => "Tag_CounterValue");「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、命令が実行され、「Tag_CounterValue」オペランドの値が 1 デクリメントされます。指定されたデータ
タイプの下限値(-128)に達するまで、信号の立ち上がりエッジが検出されるたびにカウンタ
値がデクリメントされます。
カウンタ現在値がゼロ以下である限り、「Tag_Status」オペランドのシグナル状態は「1」になります。それ以外のすべての場合、「Tag_Status」出力のシグナル状態は「0」になります。カウンタ現在値は、オペランド「Tag_CounterValue」内に保存されます。

1336

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.3.4

CTUD: カウントアップ/カウントダウン

説明
CV パラメータでのカウンタ値のインクリメント、またはデクリメントには、「カウントア
ップ/カウントダウン」命令を使用します。CU パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、CV パラメータのカウンタ現在値が 1 インク
リメントされます。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、CV パラメータのカウンタ値が 1 デクリメントされます。プログラ
ムサイクル内の CU および CD 入力で信号の立ち上がりエッジが存在すると、CV パラメー
タのカウンタ現在値は変化しません。
カウンタ値は、CV パラメータで指定したデータタイプの上限値に達するまでインクリメ
ントすることができます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。カウンタ値は、指定されたデータタイプの下限値に達するとデクリメントされなくなります。
LD パラメータのシグナル状態が「1」に切り替わると、CV パラメータのカウンタ値が PV
パラメータの値にセットされます。LD パラメータのシグナル状態が「1」である限り、CU
パラメータおよび CD パラメータのシグナル状態は命令に対する効力を持ちません。
R パラメータのシグナル状態が「1」に切り替わると、カウンタ値は 0 にセットされます。R
パラメータのシグナル状態が「1」である限り、CU、CD パラメータおよび LD パラメータのシグナル状態の変化は「カウントアップ/カウントダウン」命令に影響しません。
QU パラメータでアップカウンタのステータスを照会できます。カウンタ現在値が PV パ
ラメータの値以上の場合、QU パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、QU パラメータのシグナル状態は「0」です。PV パラメータには定数も指定できます。
QD パラメータでダウンカウンタのステータスを照会できます。カウンタ現在値がゼロ以下の場合、QD パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、
QD パラメータのシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ/カウントダウン」命令の各呼び出しは、命令データが格納される IEC カ
ウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイ
プを持つ構造体です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1337

基本命令
3.4 SCL

S7-1200 シリーズの CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTUD_SINT / CTUD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTUD_INT / CTUD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTUD_DINT / CTUD_UDINT

S7-1500 シリーズの CPU の場合
システムデータタイプ IEC_<Counter> (共 ローカルタグ有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• CTUD_SINT / CTUD_USINT• IEC_COUNTER / IEC_UCOUNTER• CTUD_INT / CTUD_UINT• IEC_DCOUNTER / IEC_UDCOUNTER• CTUD_DINT / CTUD_UDINT• IEC_LCOUNTER / IEC_ULCOUNTER• CTUD_LINT / CTUD_ULINT

IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のインスタンスデータブロックの宣言「MyIEC_COUNTER_DB」など)(• プログラムブロックの Static セクション内のデータタイプ CTUD_<DataType>のローカ
ルタグとしての宣言(#MyCTUD_COUNTER_Instance など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。
「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロック
インターフェース内で、保持型として定義されます。

システムデータタイプ IEC_<Counter>のデータブロックとしての IEC カウンタ(共有 DB)
IEC カウンタはデータブロックとして次のように宣言できます。
<IEC_Counter_DB>.CTUD();

ブロックインターフェースからのローカルタグとしての IEC カウンタ(マルチインスタンス)
IEC カウンタはローカルタグとして次のように宣言できます。

1338

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL#myLocal_Counter();
構造体内での IEC カウンタの呼び出し(マルチインスタンス)に関する情報は、IEC カウン
タの呼び出し (ページ 1326)を参照してください。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CU

Input

BOOL

I、Q、M、D、L カウントアップ入力

CD

Input

BOOL

I、Q、M、D、L カウントダウン入力

R

Input

BOOL

I、Q、M、D、

リセット入力

L、P
LD

Input

BOOL

I、Q、M、D、

ロード入力

L、P
PV

Input

整数

I、Q、M、D、QU 出力が設定される値 /L、P

LD = 1 の場合に CV 出力がセットされる値。

QU

Output

BOOL

I、Q、M、D、L アップカウンタのステー
タス

QD

Output

BOOL

I、Q、M、D、L カウントダウンのステー
タスCV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値例
次の例で、命令がどのように動作するかを示します。
SCL"IEC_COUNTER_DB".CTUD(CU := "Tag_Start1",
CD := "Tag_Start2",
LD := "Tag_Load",
R := "Tag_Reset",
PV := "Tag_PresetValue",
QU => "Tag_CU_Status",
QD => "Tag_CD_Status",
CV => "Tag_CounterValue");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1339

基本命令
3.4 SCL
オペランド「Tag_Start1」のシグナル状態で信号の立ち上がりエッジが検出されると、カウンタ現在値が 1 インクリメントされ、オペランド「Tag_CounterValue」に格納されます。
オペランド「Tag_Start2」のシグナル状態で信号の立ち上がりエッジが検出されると、カウンタ値が 1 デクリメントされ、これもオペランド「Tag_CounterValue」に格納されます。
カウンタ値は、指定されたデータタイプ(INT)の上限値に達するまで、CU パラメータの信号の立ち上がりエッジ検出時にインクリメントされます。CD パラメータに信号の立ち上がりエッジが検出されると、指定されたデータタイプ(INT)の下限値に達するまでカウンタ値
がデクリメントされます。
カウンタ現在値がオペランド「Tag_PresetValue」の値以上である限り、オペランド「Tag_CU_Status」のシグナル状態は「1」になります。それ以外のすべての場合、「Tag_CU_Status」出力のシグナル状態は「0」になります。
カウンタ現在値がゼロ以下である限り、「Tag_CD_Status」オペランドのシグナル状態は「1」になります。それ以外のすべての場合、「Tag_CD_Status」出力のシグナル状態は「0」になります。

3.4.3.5

レガシー

S_CU: パラメータおよびカウントアップの割り当て

説明「パラメータおよびカウントアップの割り当て」命令を使用して、カウンタ値のインクリメントが可能です。CU パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、現在のカウンタ値が 1 インクリメントされます。カウンタ現在値
は、CV パラメータで与えられます。カウンタ値は、制限値の「999」に達するまでインクリメントされます。制限値に達すると、信号立ち上がりエッジが発生しても、カウンタ値
はインクリメントされなくなります。
S パラメータのシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタがセットされているときに、入力での論理演算結果(RLO)CU が「1」の場合、信号のエッジの切り替えが検出されなくても次のサイクルでカウンタが 1 回カウントされます。
R パラメータのシグナル状態が「1」に切り替わると、カウンタ値は 0 にセットされます。R
パラメータのシグナル状態が「1」である限り、CU および S パラメータのシグナル状態が切り替わってもカウンタ値には影響を与えません。

1340

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
カウンタ値がゼロよりも大きい場合、パラメータ Q のシグナル状態は「1」となります。
カウンタ値がゼロと等しい場合、パラメータ Q はシグナル状態「0」を返します。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

C_NO

COUNTER, INT

C

カウンタ演算Input

カウンタの数は CPU によって異なります。
CU

Input

BOOL

I、Q、M、D、L カウントアップ入力

S

Input

BOOL

I、Q、M、D、L カウンタのプリセットの
ための入力

PV

Input

WORD

I、Q、M、D、L BCD フォーマットのプリセット済みカウンタ値(C#0 から C#999)

R

Input

BOOL

I、Q、M、D、L リセット入力

Q

Output

BOOL

I、Q、M、D、L カウンタのステータス

CV

Output

WORD

I、Q、M、D、L カウンタ現在値

WORD

I、Q、M、D、L BCD フォーマットのカウ

ファンクション値

ンタ現在値
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_CU(C_NO := "Counter_1",
CU := "Tag_Start",
S := "Tag_1",
PV := "Tag_PresetValue",

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1341

基本命令
3.4 SCLSCL
R := "Tag_Reset",
Q => "Tag_Status",
CV => "Tag_Value");「Tag_Start」パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わり、かつカウンタ現在値が「999」未満の場合、カウンタ値が 1 インクリメントされます。「Tag_1」入力のシグナル状態が「0」から「1」に切り替わると、BCD フォーマッ
トのカウンタ値がオペランド「Tag_PresetValue」の値にセットされます。オペランド「Tag_Reset」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
カウンタ現在値は、オペランド「Tag_Value」内に 16 進数形式で格納されます。
現在のカウンタ値が「0」と等しくない場合、「Tag_Status」出力のシグナル状態は「1」です。カウンタ現在値はオペランド「Tag_Value」内にファンクション値として返されます。

S_CD: パラメータおよびカウントダウンの割り当て

説明「パラメータおよびカウントダウンの割り当て」命令を使用して、カウンタ値のデクリメントが可能です。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、現在のカウンタ値が 1 デクリメントされます。カウンタ現在値は、CV
パラメータで与えられます。カウンタ値は、下限値の「0」に達するまでデクリメントされます。下限値に達すると、立ち上がりエッジでカウンタ値はそれ以上デクリメントされません。
S パラメータのシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタがセットされているときに CD パラメータでの論理演算結果(RLO)が「1」の場合、信号のエッジの切り替えが検出されなくても次のサイクル
でカウンタが 1 回カウントされます。
R パラメータのシグナル状態が「1」に切り替わると、カウンタ値は 0 にセットされます。R
パラメータのシグナル状態が「1」である限り、CD および S パラメータのシグナル状態が切り替わってもカウンタ値には影響を与えません。
カウンタ値がゼロよりも大きい場合、パラメータ Q のシグナル状態は「1」となります。
カウンタ値がゼロと等しい場合、パラメータ Q はシグナル状態「0」を返します。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。

1342

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

C_NO

COUNTER, INT

C

カウンタ演算Input

カウンタの数は CPU によって異なります。
CD

Input

BOOL

I、Q、M、D、L カウントダウン入力

S

Input

BOOL

I、Q、M、D、L カウンタのプリセットの
ための入力

PV

Input

WORD

I、Q、M、D、L BCD フォーマットのプリセット済みカウンタ値(C#0 から C#999)

R

Input

BOOL

I、Q、M、D、L リセット入力

Q

Output

BOOL

I、Q、M、D、L カウンタのステータス

CV

Output

WORD

I、Q、M、D、L カウンタ現在値

WORD

I、Q、M、D、L BCD フォーマットのカウ

ファンクション値

ンタ現在値
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_CD(C_NO := "Counter_1",
CD := "Tag_Start",
S := "Tag_1",
PV := "Tag_PresetValue",
R := "Tag_Reset",
Q => "Tag_Status",
CV => "Tag_Value");

オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わり(信号立ち上がりエッジ)、現在のカウンタ値が「0」よりも大きい場合、カウンタ値が 1 デクリメントされます。「Tag_1」オペランドのシグナル状態が「0」から「1」に切り替わると、BCD フォーマットのカウンタ値が「Tag_PresetValue」オペランドの値にセットされます。オペラン
ド「Tag_Reset」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1343

基本命令
3.4 SCL
カウンタ現在値は、オペランド「Tag_Value」内に保存されます。
現在のカウンタ値が「0」と等しくない場合、オペランド「Tag_Status」はシグナル状態「1」を返します。カウンタ現在値はオペランド「Tag_Value」内にファンクション値として返されます。

S_CUD: パラメータおよびカウントアップ/カウントダウンの割り当て

説明「パラメータおよびカウントアップ/カウントダウンの割り当て」命令を使用して、カウンタ
値のインクリメントおよびデクリメントが可能です。CU パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、現在のカウンタ値が 1 インク
リメントされます。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、カウンタ値が 1 減少します。カウンタ現在値は、CV パラメータで与えられます。1 つのプログラムサイクル内のパラメータ CU および CD パラメータで信号立
ち上がりエッジが存在すると、カウンタ値は変化しません。
カウンタ値は、上限値の「999」に達するまでインクリメントされます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。下限値「0」に達すると、それ以降、カウンタ値はデクリメントされません。
S パラメータのシグナル状態が「0」から「1」に切り替わると、カウンタ値が PV パラメータの値にセットされます。カウンタがセットされているときに CU および CD パラメー
タの論理演算結果(RLO)が「1」の場合、信号のエッジの切り替えが検出されなくても次のサイクルでカウンタが 1 回カウントされます。
R パラメータのシグナル状態が「1」に切り替わると、カウンタ値は 0 にセットされます。R
パラメータのシグナル状態が「1」である限り、CU、 CD および S パラメータのシグナル状態の処理は、このカウンタ値には影響を与えません。
カウンタ値がゼロよりも大きい場合、パラメータ Q のシグナル状態は「1」となります。
カウンタ値がゼロと等しい場合、パラメータ Q はシグナル状態「0」を返します。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。

1344

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

C_NO

COUNTER, INT

C

カウンタ演算Input

カウンタの数は CPU によって異なります。
CU

Input

BOOL

I、Q、M、D、L カウントアップ入力

CD

Input

BOOL

I、Q、M、D、L カウントダウン入力

S

Input

BOOL

I、Q、M、D、L カウンタのプリセットの
ための入力

PV

Input

WORD

I、Q、M、D、L BCD フォーマットのプリセット済みカウンタ値(C#0 から C#999)

R

Input

BOOL

I、Q、M、D、L リセット入力

Q

Output

BOOL

I、Q、M、D、L カウンタのステータス

CV

Output

WORD

I、Q、M、D、L カウンタ現在値(16 進数)

WORD

I、Q、M、D、L BCD フォーマットのカウ

ファンクション値

ンタ現在値
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := S_CD(C_NO := "Counter_1",
CU := "Tag_CU",
CD := "Tag_CD",
S := "Tag_1",
PV := "Tag_PresetValue",
R := "Tag_Reset",
Q => "Tag_Status",
CV => "Tag_Value");

オペランド「Tag_CU」のシグナル状態で信号の立ち上がりエッジが検出され、かつ現在のカウンタ値が「999」未満の場合、カウンタ値が 1 インクリメントされます。オペランド

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1345

基本命令
3.4 SCL「Tag_CD」のシグナル状態で信号の立ち上がりエッジが検出され、かつ現在のカウンタ値が「0」よりも大きい場合、カウンタ値が 1 デクリメントされます。
「Tag_1」オペランドのシグナル状態が「0」から「1」に切り替わると、BCD フォーマッ
トのカウンタ値が「Tag_PresetValue」オペランドの値にセットされます。オペランド「Tag_Reset」のシグナル状態が「1」の場合、カウンタ値が「0」にリセットされます。
カウンタ現在値は、オペランド「Tag_Value」内に保存されます。
現在のカウンタ値が「0」と等しくない場合、オペランド「Tag_Status」はシグナル状態「1」を返します。カウンタ現在値はオペランド「Tag_Value」内にファンクション値として返されます。

3.4.4

比較演算

3.4.4.1

TypeOf: VARIANT タグのデータタイプのチェック

説明「VARIANT タグのデータタイプのチェック」命令を使用して、VARIANT タグが指している
タグのデータタイプを照会できます。ブロックインターフェースで宣言したデータタイプを
別のタグのデータタイプと比較するか、または特定のデータタイプと直接比較し、それらが「等しい」か、または「等しくない」かを識別することができます。
比較オペランドは、基本データタイプまたは PLC データタイプです。
「VARIANT タグのデータタイプのチェック」命令は、IF 文または CASE 文でのみ使用でき
ます。

1346

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

2 進数、整数、L (ブロックイン 照会のためのオペランド

浮動小数点数、 ターフェースの時刻、日付と時 「Input」、
刻、文字列、「InOut」、およVARIANT

び「Temp」セクション内で宣言可能。)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、別のタグとの比較を示します。
SCL
IF TypeOf(#TagVARIANT) = TypeOf("TagBYTE") THEN...;
END_IF;

次の例で、特定のデータタイプとの比較を示します。
SCL
IF TypeOf(#TagVARIANT) = BYTE THEN...;
END_IF;

VARIANT #TagVARIANT がポイントしているオペランドのデータタイプが BYTE である場合、比較条件が一致しました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1347

基本命令
3.4 SCL

3.4.4.2

TypeOfElements: VARIANT タグの配列要素のデータタイプのチェック

説明「VARIANT タグの配列エレメントのデータタイプのチェック」命令を使用して、VARIANT
タグが指しているタグのデータタイプを照会できます。タグのデータタイプをブロックイ
ンターフェースで宣言したタグのデータタイプと比較し、それらが「等しい」か、または「等しくない」かを識別します。
このオペランドのデータタイプは、VARIANT であることが必要です。比較オペランドは、
基本データタイプまたは PLC データタイプです。
VARIANT タグのデータタイプが ARRAY の場合、ARRAY エレメントのデータタイプが比較されます。
「VARIANT タグの ARRAY エレメントのデータタイプをチェック」命令は、IF 文または CASE
文でのみ使用できます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

VARIANT

L (ブロックイン 照会のためのオペランド
ターフェースの「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
IF TypeOfElements("Tag_Variant") = TypeOF("GlobalDB".Product[1]) THEN
"Tag_Variant" := "GlobalDB".Product[1] * 3;
END_IF;

1348

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

"GlobalDB".Product[1]1.5

Tag_Variant

4.5

VARIANT がタグをポイントし、「GlobalDB」である場合、Product[1] オペランドは REAL データタイプになり、「GlobalDB」です。次に Product[1]オペランドが 3 で乗算され、結果が「Tag_Variant」オペランドに書き込まれます。

3.4.4.3

IS_ARRAY: 配列のチェック

説明「配列のチェック」命令を使用して、VARIANT が ARRAY データタイプのタグを指すかどうかを照会できます。
「配列のチェック」命令は、IF 命令内のみで使用できます。

パラメータ
次の表に、「配列のチェック」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

VARIANT

L (ブロックイン ARRAY に関する照会が行
ターフェースの われるオペランド「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

ファンクション値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

UDINT

I、Q、M、D、L 命令の結果

1349

基本命令
3.4 SCL
有効なデータタイプの追加情報については、「関連項目」を参照してください。
注記
配列データブロックのチェック
ArrayDB とともに IS_ARRAY 命令を使用し、DB_ANY_TO_VARIANT によって VARIANT 入力
パラメータを生成する場合、その ArrayDB が、データタイプ VARIANT の仮パラメータの実パラメータとしてプログラム内のどこかでシンボリックに使用されている必要があります。
正しく動作するには、使用場所がダウンロードされていれば十分です。これは、実行には必要ありません。

例
次の例で、命令がどのように動作するかを示します。
SCL
IF IS_ARRAY(#Tag_VARIANTToArray) THEN
"Tag_Result" := CountOfElements(#Tag_VARIANTToArray);
END_IF;

VARIANT が指すタグが ARRAY の場合、ARRAY エレメントの数が出力されます。

3.4.4.4

TypeOfDB:DB の照会データタイプ

説明「DB の照会データタイプ」命令を使用して、DB_ANY データタイプのタグがアドレス指定
する、データブロックのデータタイプを照会します。タグ<Operand>によってアドレス指定される DB のデータタイプと、他のタグのデータタイプ、または直接データタイプとを「Equal」または「Not equal」であるかどうか比較します。
タグのデータタイプは DB_ANY であることが必要です。比較演算子は、たとえば PLC デー
タタイプ、システムデータタイプ、軸、FB などにすることが可能です。
「DB の照会データタイプ」命令は、IF 文または CASE 文でのみ使用できます。

1350

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明<Operand>Input

DB_ANY

L (ブロックイン 照会のためのオ
ターフェースの ペランド
「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
IF TypeOfDB(#InputDBAny) = TO_SpeedAxis THEN
"TagOut" := 1;
END_IF;

DB をアドレス指定する#InputDBAny オペランドのデータタイプが TO_SpeedAxis データ
タイプと等しい場合、「TagOut」出力がセットされます。
次の条件が満たされている場合、「TagOut」出力がセットされません。
• データブロックの番号が「0」の場合。
• データブロックが存在しません。
• データブロックが配列 DB でない場合。
• データブロックにデータタイプ UDT (PLC データタイプ)のタグが含まれている場合。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1351

基本命令
3.4 SCL

3.4.5

四則演算

3.4.5.1

ABS:絶対値の形成

説明「絶対値の形成」命令を使用して、入力値の絶対値を計算し、結果を指定したオペランド内に保存します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

<Expression> Input

データタイプS7-1200

S7-1500

SINT、INT、

SINT、

DINT、浮動小 INT、
数点数

メモリ領域

説明

I、Q、M、

入力値

D、L、P

DINT、
LINT、浮動小数点数

ファンクション値

SINT、INT、

SINT、

DINT、浮動小 INT、
数点数

I、Q、M、

入力値の絶対

D、L、P

値

DINT、
LINT、浮動小数点数

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := ABS("Tag_Value");"Tag_Result2" := ABS("Tag_Value1"*"Tag_Value2");

入力値の絶対値は、ファンクション値として入力値の形式で返されます。

1352

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.5.2

オペランド

値

Tag_Value-2

Tag_Result1

2

Tag_Value1

4

Tag_Value2-1

Tag_Result2

4

MIN:最小値の取得

説明「最小値の取得」命令は、使用可能な入力の値を比較し、最小値を結果として返します。
この命令では、最小で 2、最大で 32 の入力を指定することが可能です。
次のいずれかの条件が満たされる場合、結果は無効です。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1353

基本命令
3.4 SCL

パラメータ
次の表に、「最小値の取得」命令のパラメータを示します。
パラメータ

宣言

データタイプS7-1200

IN1

Input

メモリ領域

S7-1500

整数、浮動小 整数、浮動 I、Q、M、
数点数、

説明
最初の入力値

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

IN2

Input

整数、浮動小 整数、浮動 I、Q、M、
数点数、

小数点数、 D、L、P

2 番目の入力
値

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

INn

Input

整数、浮動小 整数、浮動 I、Q、M、
数点数、

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

値が比較される追加挿入された入力

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

1354

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ

宣言

データタイプS7-1200

ファンクション値

メモリ領域

S7-1500

整数、浮動小 整数、浮動 I、Q、M、
数点数、

説明
命令の結果

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := MIN(IN1 := "Tag_Value1",
IN2 := "Tag_Value2",
IN3 := "Tag_Value3");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value1

12222

IN2

Tag_Value2

14444

IN3

Tag_Value313333

ファンクション値

Tag_Result

12222

この命令は、使用可能な入力の値を比較し、最小値(「Tag_Value1」)をオペランド「Tag_Result」にコピーします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1355

基本命令
3.4 SCL

3.4.5.3

MAX:最大値の取得

説明「最大値の取得」命令は、使用可能な入力の値を比較し、最大値を結果として返します。
この命令では、最小で 2、最大で 32 の入力を指定することが可能です。
次のいずれかの条件が満たされる場合、結果は無効です。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、「最大値の取得」命令のパラメータを示します。
パラメータ

宣言

データタイプS7-1200

IN1

Input

メモリ領域

S7-1500

整数、浮動小 整数、浮動 I、Q、M、
数点数、

説明
最初の入力値

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

IN2

Input

整数、浮動小 整数、浮動 I、Q、M、
数点数、

小数点数、 D、L、P

2 番目の入力
値

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

1356

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ

宣言

データタイプS7-1200

INn

Input

メモリ領域

S7-1500

整数、浮動小 整数、浮動 I、Q、M、
数点数、

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

説明
値が比較される追加挿入された入力

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

ファンクション値

整数、浮動小 整数、浮動 I、Q、M、
数点数、

命令の結果

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := MAX(IN1 := "Tag_Value1",
IN2 := "Tag_Value2",
IN3 := "Tag_Value3");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

Tag_Value1

12 222

IN2

Tag_Value2

14 444

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1357

基本命令
3.4 SCL
パラメータ

オペランド

値

IN3

Tag_Value3

13 333

ファンクション値

Tag_Result

14 444

この命令は、指定されたオペランドの値を比較し、最大値(「Tag_Value2」)をオペランド「Tag_Result」にコピーします。

3.4.5.4

LIMIT:制限値の設定

説明「制限値の設定」命令は、IN パラメータの値を MN および MX パラメータの値に制限します。MN パラメータの値は、MX パラメータの値を超えてはなりません。
IN パラメータの値が MN 条件<=IN <= MX を満足する場合、この命令の結果として返されます。この条件が満たされず、かつ IN 入力値が MN 下限値未満の場合、MN パラメータの値が結果として返されます。上限値 MX を超過する場合、MX パラメータの値が結果として返されます。
MN 入力の値が MX 入力の値よりも大きい場合、結果は IN パラメータで指定された値となり、許可出力 ENO は「0」となります。
この命令は、すべてのパラメータのオペランドのデータタイプが同じ場合にのみ実行され
ます。

1358

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプS7-1200

MN

Input

メモリ領域

S7-1500

整数、浮動小 整数、浮動 I、Q、M、
数点数、

説明
下限値

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

IN

Input

整数、浮動小 整数、浮動 I、Q、M、
数点数、

入力値

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

MX

Input

整数、浮動小 整数、浮動 I、Q、M、
数点数、

上限値

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、DTL

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1359

基本命令
3.4 SCL
パラメータ

宣言

データタイプS7-1200

ファンクション値

メモリ領域

S7-1500

整数、浮動小 整数、浮動 I、Q、M、
数点数、

説明
命令の結果

小数点数、 D、L、P

TIME、TOD、 TIME、DATE、DTL

LTIME、
TOD、
LTOD、
DATE、
LDT、DT、
DTL

データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := LIMIT(MN := "Tag_Minimum",IN := "Tag_Value",
MX := "Tag_Maximum");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MN

Tag_Minimum

12 000IN

Tag_Value

8 000

MX

Tag_Maximum

16 000

ファンクション値

Tag_Result

12 000

オペランド「Tag_Value」の値が、オペランド「Tag_Minimum」および「Tag_Maximum」の値と比較されます。オペランド「Tag_Value」の値が下限値未満であるため、オペランド「Tag_Minimum」の値がオペランド「Tag_Result」にコピーされます。

1360

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.5.5

SQR:2 乗値の形成

説明「2 乗値の形成」命令を使用して、入力値を 2 乗し、結果を指定したオペランド内に保存し
ます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

入力値

Input

n>
ファンクション値

L、P
浮動小数点数

I、Q、M、D、

入力値の 2 乗値

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := SQR("Tag_Value");"Tag_Result2" := SQR((SQR("Tag_Value1"))*"Tag_Value2");

入力値の 2 乗値は、ファンクション値としてオペランド「Tag_Resultxy」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value

2.5

Tag_Result1

6.25

Tag_Value1

6.0

Tag_Value2

2.0

Tag_Result2

5184.0TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1361

基本命令
3.4 SCL

3.4.5.6

SQRT:平方根の形成

説明「平方根の形成」命令を使用して、入力値の平方根を計算し、結果を指定したオペランド内に保存します。この命令は、入力値がゼロよりも大きい場合に正の結果になります。入力値がゼロ未満の場合、この命令は無効な浮動小数点数を返します。入力値が「0」の場合、結果も「0」になります。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

入力値

Input

n>
ファンクション値

L、P
浮動小数点数

I、Q、M、D、

入力値の平方根L、P有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := SQRT("Tag_Value");"Tag_Result2" := SQRT((SQR("Tag_Value1"))+"Tag_Value2");

入力値の平方根は、ファンクション値としてオペランド「Tag_Resultxy」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1362

オペランド

値

Tag_Value

4.0

Tag_Result1

2.0

Tag_Value1

3.0

Tag_Value2

16.0

Tag_Result2

5.0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.5.7

LN:自然対数の形成

説明「自然対数の形成」命令を使用して、入力値の底 e (e=2.718282)に対する自然対数を計算できます。この命令は、入力値がゼロよりも大きい場合に正の結果になります。入力値がゼロ未満の場合、この命令は無効な浮動小数点数を返します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

入力値

Input

n>
ファンクション値

L、P
浮動小数点数

I、Q、M、D、

入力値の自然対数

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := LN("Tag_Value");"Tag_Result2" := LN("Tag_Value1"+"Tag_Value2");

命令の結果は、ファンクション値としてオペランド「Tag_Resultxy」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value

2.5

Tag_Result1

0.916

Tag_Value1

1.5

Tag_Value2

3.2

Tag_Result2

1.548

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1363

基本命令
3.4 SCL

3.4.5.8

EXP:指数値の形成

説明「指数値の形成」命令は、底 e (e = 2.718282)および入力値からの指数を計算し、指定されたオペランドに結果を保存します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

入力値

Input

n>
ファンクション値

L、P
浮動小数点数

I、Q、M、D、

入力値の指数値

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := EXP("Tag_Value");"Tag_Result2" := EXP("Tag_Value1"/"Tag_Value2");

命令の結果は、ファンクション値としてオペランド「Tag_Resultxy」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1364

オペランド

値

Tag_Value

20.5

Tag_Result1

799 902 200

Tag_Value1

15.5

Tag_Value2

30.2

Tag_Result2

1.671

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.5.9

SIN:正弦値の形成

説明
入力値の正弦を計算するには、「正弦値の形成」命令を使用します。入力値はラジアン単位で指定する必要があります。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

入力値(ラジアン単位の角

L、P度のサイズ)

I、Q、M、D、

命令の結果

Input

n>
ファンクション値

浮動小数点数

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := SIN("Tag_Value");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.5.10

オペランド

値

Tag_Value+1.570796 (π/2)

Tag_Result

1.0

COS:余弦値の形成

説明
入力値の余弦を計算するには、「余弦値の形成」命令を使用します。入力値はラジアン単位で指定する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1365

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

入力値(ラジアン単位の角

L、P度のサイズ)

I、Q、M、D、

命令の結果

Input

n>
ファンクション値

浮動小数点数

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := COS("Tag_Value");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.5.11

オペランド

値

Tag_Value+1.570796 (π/2)

Tag_Result0

TAN:正接値の形成

説明
入力値の正弦を計算するには、「正接値の形成」命令を使用します。入力値はラジアン単位で指定する必要があります。

1366

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

入力値(ラジアン単位の角

L、P度のサイズ)

I、Q、M、D、

命令の結果

Input

n>
ファンクション値

浮動小数点数

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := TAN("Tag_Value");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.5.12

オペランド

値

Tag_Value+3.141593 (π)

Tag_Result0

ASIN:逆正弦値の形成

説明「逆正弦値の形成」命令を使用すると、この値に対応する正弦値から角度のサイズを計算できます。範囲-1～+1 の有効な浮動小数点数のみを入力値として指定できます。計算された
角度サイズはラジアン単位で示され、-π/2～+π/2 の値の範囲にすることができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1367

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

正弦値

Input

n>
ファンクション値

L、P
浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ASIN("Tag_Value");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.5.13

オペランド

値

Tag_Value

1.0

Tag_Result+1.570796 (π/2)

ACOS:逆余弦値の形成

説明「逆余弦値の形成」命令を使用すると、この値に対応する余弦値から角度のサイズを計算できます。範囲-1～+1 の有効な浮動小数点数のみを入力値として指定できます。計算された
角度サイズはラジアン単位で示され、0～+π の値の範囲にすることができます。

1368

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

余弦値

Input

n>
ファンクション値

L、P
浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ACOS("Tag_Value");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.5.14

オペランド

値

Tag_Value

0

Tag_Result+1.570796 (π/2)

ATAN:逆正接値の形成

説明「逆正接値の形成」命令を使用すると、この値に対応する正接値から角度のサイズを計算できます。入力値には、有効な浮動小数点数(または-NaN/+NaN)のみを指定することができます。計算された角度サイズはラジアン単位で示され、-π/2～+π/2 の値の範囲にすることができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1369

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Expressio

浮動小数点数

I、Q、M、D、

正接値

Input

n>
ファンクション値

L、P
浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ATAN("Tag_Value");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.5.15

オペランド

値

Tag_Value

1.0

Tag_Result+0.785398 (π/4)

FRAC:小数部を返す

説明「小数部を返す」命令は、値の小数部を返します。たとえば入力値が 123.4567 の場合は、
値 0.4567 を返します。
命令のデータタイプを変更するには、以下の構文を使用します。
FRAC_<data type>();1370

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明<Expression>

Input

浮動小数点数

I、Q、M、

入力値

D、L、P_<Data type>

浮動小数点数-

ファンクション値のデー
タタイプ:

既定: REAL

1.「_」を使用して、この命令のデータタイプを明示的に指定することができます。
2. データタイプを明示的に指定しないと、使用されるタグまたはタイ
プコード化された定数
によって指定されます。
3. データタイプを明示的に指定せず、定義済み
タグまたはタイプコー
ド化された定数も指定しない場合は、既定のデータタイプが使用されます。
ファンクション値

浮動小数点数

I、Q、M、

入力値の小数位

D、L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := FRAC("Tag_Value");"Tag_Result2" := FRAC_LREAL("Tag_Value");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1371

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value

2.555-1.4421

Tag_Result1

0.555-0.44213.4.6

ブロック転送操作

3.4.6.1

Deserialize: 逆シリアル化

説明「逆シリアル化」命令を使用して、PLC データタイプ(UDT)、STRUCT、または<data type>配列の配列のシーケンシャル表示を逆変換し、その内容全体を表示することができます。
PLC データタイプ(UDT)、STRUCT、または<データタイプ>配列のシーケンシャル表示が存在するメモリ領域のデータタイプは BYTE 配列または CHAR 配列であり、バージョン 1.0 の
標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたメモリ領域も使用できます。標準メモリ領域の容量は 64 KB です。変換の前に、十分なメモリ領域が存在することを確認してください。メモリ領域が命令「Serialize」を使用して桁埋めされる場合、桁埋めバイトが挿入された可能性があると変換が考慮されません。
配列の下限値は「0」で定義することを推奨します。これは、ARRAY[0] = POS 0 のように、配列内のインデックスが POS パラメータの値に対応するためです。これに基づいて、以下の例を説明します。
この命令では、変換されたデータの複数のシーケンシャル表示をそれらの元の状態に、順を追って変換し直すことができます。
PLC データタイプ(UDT)、STRUCT、または<data type>配列の単一のシーケンシャル表示のみを変換して元に戻す場合は、命令「TRCV:通信接続経由のデータ受信」を直接使用することもできます。

1372

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

メモリ領域のサイズ最適化されたメモリ領域内のシンプルな構造体は桁埋めバイトを含まないという配置ルールがあります。これにより、最適化されたメモリ領域内の構造体は、標準メモリ領域内の構造体よりも小さくなります。構造体配列、およびネストされた構造体には、FILLER バイ
トが含まれます。構成された構造体がより多くの容量を必要とするメモリ領域については、
一般的なルールはありません。
S7-1500 シリーズの CPU への適用事項
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、BOOL の
長さは 1 バイトです。このため、主にデータタイプ BOOL で構成される構造体は、標準メ
モリ領域よりも最適化されたメモリ領域にある方が大きくなることがあります。BOOL データタイプの割合が少ない構造体は、標準メモリ領域よりも最適化されたメモリ領域にある方が小さくなります。
注記
CPU S7-1200 での複数の構造体のシリアル化
CPU S7-1200 のバッファ内で複数の構造体をシリアル化し、それら(制御システムや CPU
S7-1500 など)と通信する場合は、戻り値(POS パラメータのインデックス)が偶数であるかをチェックする必要があります。偶数でない場合は、1 番目の構造体が FILLER バイトで埋められていないため、2 番目の構造体をシリアル化する前に戻り値を 1 インクリメントする必要があります。
例:
1 つの DWORD および 1 つの BYTE で構成される構造体
次にシリアル化されているバッファ内の構造体の開始アドレスは 5 です。開始アドレスが偶数になるように、1 を追加します。

最適化されたメモリ領域
ファームウェアバージョン V4.2 以降の S7-1200 シリーズの CPU、およびファームウェア
バージョン V2.0 以降の S7-1500 シリーズの CPU では、大きな構造体を逆シリアル化する
ために、アクセスが最適化されたシーケンシャル表示用メモリ領域を宣言できます。シーケンシャル表示の内容は、標準メモリ領域同様、変更されません。配列内のバイトへは、
シンボリックアクセスのみ可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1373

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

SRC_ARRAY Input

ARRAY[*] of

I、Q、D、FB の 逆シリアル化されるデー

BYTE

ブロックインタ タストリームが保存され

1)

または
ARRAY of CHAR

ーフェース(セク る BYTE 配列またはション Input、CHAR 配列です。

Output、S7-1500:

Static、およびパフォーマンスを最適化

Temp を使用可
能)。

InOut

ABLE

するには、パラメータに
VARIANT ポインタを付加

I/O データなし
DEST_VARI

説明

しないでください。

すべてのデータ I、Q、D、FB の 逆シリアル化されるデータイプ

ブロックインタ タが書き込まれるタグ。
ーフェース

S7-1500:

I/O データなし

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

POS

InOut

DINT

I、Q、M、D、L POS パラメータのオペラ
ンドには、変換されたカ
スタマデータによって占有されるバイト数に基づいて、最初のバイトのイ
ンデックスが格納されます。POS パラメータは、
ゼロベースで計算されます。

ファンクション値1)

INT

I、Q、M、D、L エラー情報

ファームウェアバージョン V4.2 以降の S7-1200 シリーズの CPU、およびファームウェアバージョン V2.0 以降の S7-1500 シリーズの CPU で使用可能。

1374

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B0

SRC_ARRAY パラメータと DEST_VARIABLE パラメータのためのメモリ領域がオーバーラップしています。

8136

SRC_ARRAY パラメータでのタグが、標準アクセスによるブロック内にありま
せん。

8150

SRC_ARRAY パラメータの VARIANT データタイプは、ゼロ点を含みます。

8151

SRC_ARRAY パラメータで有効な参照なし

8153

SRC_ARRAY パラメータのメモリの空き領域が不足しています。

8154

SRC_ARRAY パラメータの無効なデータタイプ

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_VARIABLE パラメータで有効な参照なし

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)8136

SRC_ARRAY パラメータでのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:「逆シリアル化」命令 (バージョン 2.1)のパフォーマンスを向上するため、SRC_ARRAY お
よび DEST_VARIABLE パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1375

基本命令
3.4 SCL
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

FB または FC のブロックイ
ンターフェースの「入力」セクション。

BufferPos

DINT

ブロックインターフェースの

Error

INT

「一時」セクション。

Label

STRING[4]次の表に、PLC データタイプの宣言を示します。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]Client次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

TargetClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

Buffer1376

Bill

INT の配列[0..10]

Field

バイトの配列[0..294]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の例で、命令がどのように動作するかを示します。
SCL#Tag_RetVal := Deserialize(SRC_ARRAY := "Buffer".Field,
DEST_VARIABLE := "Target".Client,
POS := #BufferPos);#Tag_RetVal := Deserialize(SRC_ARRAY := "Buffer".Field,
DEST_VARIABLE := #Label,
POS := #BufferPos);
IF #Label = 'arti' THEN
#Tag_RetVal := Deserialize(SRC_ARRAY := "Buffer".Field,
DEST_VARIABLE := "Target".Article[#DeliverPos],
POS := #BufferPos);
ELSIF #Label = 'Bill' THEN
#Tag_RetVal := Deserialize(SRC_ARRAY := "Buffer".Field,
DEST_VARIABLE := "Target".Bill[#DeliverPos],
POS := #BufferPos);;
ELSE;
END_IF;「逆シリアル化」命令は、「Buffer」タグのカスタマデータのシーケンシャル表示を逆シリアル化し、「Target」タグに書き込みます。#BufferPos オペランドには、変換されたカスタ
マデータによって占有されるバイト数に基づいて、最初のバイトのインデックスが格納されます。
「逆シリアル化」命令は、「Buffer」タグの、カスタマデータの後にシーケンシャル表示で格納されたセパレータシートのシーケンシャル表示を逆シリアル化し、これらの文字を「#Label」オペランドに書き込みます。これらの文字は、比較命令「arti」および「Bill」を使用して比較されます。「arti」 = TRUE の場合の比較では、データは、逆シリアル化され、「Target」タグに書き込まれたアーティクルデータです。「Bill」 = TRUE の場合の比較では、
データは、逆シリアル化され、「Target」タグに書き込まれたビリングデータです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1377

基本命令
3.4 SCL

3.4.6.2

Serialize: シリアル化

説明「シリアル化」命令を使用して、データタイプの構造体の部分を失うことなく、複数の PLC
データタイプ(UDT)、STRUCT、または<data type>配列を 1 つのシーケンシャル表示に変換することができます。
この命令を使用して、ユーザープログラムの複数の構造体データ項目を一時的にバッファ(グローバルデータブロックを推奨)に保存し、別の CPU に送信します。変換済みデータを格納するメモリ領域のデータタイプは BYTE 配列または CHAR 配列、かつバージョン 1.0 の
標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたデータも許可されます。ソースデータ領域の FILLER データは、ターゲット配列内では未定義です。
これらは、データ領域の FILLER バイトまたは FILLER ビット(たとえば、ARRAY、STRUCT、または PLC データタイプ(UDT))、または現在使用中でない文字列の文字とすることができます。
標準メモリ領域の容量は 64 KB です。標準メモリ領域のルールに準拠する、64 KB よりも大きな構造体は、DEST_ARRAY パラメータのオペランドが標準メモリ領域内に存在する場合
は、シリアル化できません。
配列の下限値は「0」で定義することを推奨します。これは、ARRAY[0] = POS 0 のように、配列内のインデックスが POS パラメータの値に対応するためです。これに基づいて、以下の例を説明します。
POS パラメータのオペランドには、変換済みデータによって使用されるバイト数に関する情報が格納されています。
単一の PLC データタイプ(UDT)、STRUCT、<data type>配列を送信する場合は、命令「TSEND:通信接続経由のデータ送信」を直接呼び出すことができます。
注記
構造体の比較
構造体を比較するには、先に構造体をシリアル化する必要があります。代わりに、比較式を使用して下さい。
追加情報は、AUTOHOTSPOT を参照してください。

1378

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

メモリ領域のサイズ最適化されたメモリ領域内のシンプルな構造体は桁埋めバイトを含まないという配置ルールがあります。これにより、最適化されたメモリ領域内の構造体は、標準メモリ領域内の構造体よりも小さくなります。構造体配列、およびネストされた構造体には、FILLER バイ
トが含まれます。構成された構造体がより多くの容量を必要とするメモリ領域については、
一般的なルールはありません。
S7-1500 シリーズの CPU への適用事項
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、データ
タイプ BOOL の長さは以降のデータタイプによって異なります。たとえば BYTE が続く場合
は、データタイプ BOOL の長さは 1 バイトとなります。たとえば WORD が続く場合は、データタイプ BOOL の長さは 2 バイトとなります。このため、主にデータタイプ BOOL で構成される構造体は、標準メモリ領域よりも最適化されたメモリ領域にある方が大きくなることがあります。BOOL データタイプの割合が少ない構造体は、標準メモリ領域よりも最適化されたメモリ領域にある方が小さくなります。
このため、シリアル化を行うソースデータ領域は、大きなデータタイプで開始し、Boolean
エレメントで終了することを推奨します。これにより、FILLER ビットを大幅に削減できます。
注記
CPU S7-1200 での複数の構造体のシリアル化
CPU S7-1200 のバッファ内で複数の構造体をシリアル化し、それら(制御システムや CPU
S7-1500 など)と通信する場合は、戻り値(POS パラメータのインデックス)が偶数であるかをチェックする必要があります。偶数でない場合は、1 番目の構造体が FILLER バイトで埋められていないため、2 番目の構造体をシリアル化する前に戻り値を 1 インクリメントする必要があります。
例:
1 つの DWORD および 1 つの BYTE で構成される構造体
次にシリアル化されているバッファ内の構造体の開始アドレスは 5 です。開始アドレスが偶数になるように、1 を追加します。

最適化されたメモリ領域
ファームウェアバージョン V4.2 以降の S7-1200 シリーズの CPU、およびファームウェア
バージョン V2.0 以降の S7-1500 シリーズの CPU では、大きな構造体を逆シリアル化する
ために、アクセスが最適化されたメモリ領域を宣言できます。シーケンシャル表示は、標準
メモリ領域同様、変更されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1379

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプSRC_VARIA

すべてのデータ I、Q、D、FB の シリアル化されるタグ。

Input

BLE

タイプ

メモリ領域

説明

ブロックインタ S7-1500:
ーフェース
パフォーマンスを最適化
I/O データなし するには、パラメータに
VARIANT ポインタを付加しないでください。

DEST_ARRA InOut

ARRAY of BYTE

I、Q、D、FB の 生成されたデータストリ

Yまたは ARRAY

ブロックインタ ームが格納される配列。

of CHARーフェース(セク S7-1500:
ション Input、
Output、
Static、および
Temp を使用可
能)。

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

I/O データなし
POS

InOut

DINT

I、Q、M、D、L POS パラメータのオペラ
ンドには、変換されたカ
スタマデータが占有する
合計バイト数に基づいて、最初のバイトのイン
デックスが格納されます。POS パラメータは、
ゼロベースで計算されます。

ファンクション値

1380

INT

I、Q、M、D、L エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B0

SRC_VARIABLE パラメータと DEST_ARRAY パラメータのためのメモリ領域がオーバーラップしています。

8150

SRC_VARIABLE パラメータの VARIANT データタイプは、ゼロ点を含みます。

8151

SRC_VARIABLE パラメータで有効な参照なし

8236

SRC_ARRAY パラメータでのタグが、標準アクセスによるブロック内にありま
せん。

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_ARRAY パラメータで有効な参照なし

8253

パラメータ DEST_ARRAY のタグは、パラメータ SRC_VARIABLE のタグの内容に対して十分なメモリスペースを提供しません。パラメータ POS のタグの入力値により、使用可能なメモリスペースが減少します。パラメータ POS の入力値により、パラメータ DEST_ARRAY のタグ内での開始位置が決定します。

8254

DEST_ARRAY パラメータの無効なデータタイプ

8382

POS パラメータの値が、配列の制限値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)
8236

DEST_ARRAY パラメータでのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1381

基本命令
3.4 SCL「シリアル化」命令(バージョン 2.1)のパフォーマンスを向上するため、SRC_VARIABLE お
よび DEST_ARRAY パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の例で、命令がどのように動作するかを示します。
SCL#Tag_RetVal := Serialize(SRC_VARIABLE := "Source".Client,
DEST_ARRAY := "Buffer".Field,
POS := #BufferPos);#Label := STRING_TO_WSTRING('arti');#Tag_RetVal := Serialize(SRC_VARIABLE := #Label,
DEST_ARRAY := "Buffer".Field,
POS := #BufferPos);#Tag_RetVal := Serialize(SRC_VARIABLE := "Source".Article[#DeliverPos],
DEST_ARRAY := "Buffer".Field,
POS := #BufferPos);「シリアル化」命令は、「Source」タグのカスタマデータをシリアル化し、シーケンシャル
表示を「Buffer」タグに書き込みます。"Buffer".Field オペランドの次の書き込まれていな
いバイトのインデックスが、#BufferPos オペランドに格納されます。
後でのシーケンシャル表示の逆シリアル化を容易にするために、その時点では、一種のセパレータシートが挿入されます。「文字列のブロック転送」命令は、「arti」文字を「#Label」オペランドに移動します。「シリアル化」命令は、これらの文字を「Buffer」タ
グのカスタマデータの後に書き込みます。#BufferPos オペランドの値は、適宜インクリメ
ントされます。
「シリアル化」命令は、「Source」タグの特定の製品データをシリアル化し(ランタイム時に計算されます)、シーケンシャル表示で「Buffer」タグの「arti」文字の後に書き込みます。

1382

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、オペランドの宣言を示します。
オペランド

データタイプ

宣言

DeliverPos

INT

ブロックインターフェースの「入力」セクションで宣言

BufferPos

DINT

ブロックインターフェースの「一時」セクションで宣言

Error

INT

ブロックインターフェースの「一時」セクションで宣言

Label

STRING[4]ブロックインターフェースの「一時」セクションで宣言

次の表に、PLC データタイプの宣言を示します。
PLC データタイプの名前

名前

データタイプ

ArticleNumberDINT

Declaration

STRING

Colli

INT

Title

INT

First nameSTRING[10]SurnameSTRING[10]Client次の表に、データブロックの宣言を示します。
データブロックの名前

名前

データタイプ

SourceClient「クライアント」(PLC データ
タイプ)

Article「アーティクル」(PLC データタイプ)の配列[0..10]

BufferTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Field

バイトの配列[0..294]

1383

基本命令
3.4 SCL

3.4.6.3

MOVE_BLK:ブロック転送

説明「ブロック転送」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動することができます。ターゲット範囲に移動するエレメントの数は、
COUNT パラメータで指定されます。移動されるエレメントの幅は、ソース領域内の最初のエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
OUT 出力の値は、次の条件が満たされると無効です。
• 移動されるデータが、IN パラメータまたは OUT パラメータで使用可能なデータよりも
多いこと。
注記
配列の使用
この命令は、定義された n 個(n = パラメータ COUNT の値)のエレメントの内容を指定されたインデックスから始まるソース範囲からターゲット範囲にコピーします。

1384

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN 1)

宣言
Input

データタイプ

メモリ領域

S7-1200

S7-1500

2 進数、整2 進数、整 D、L説明
コピーされる数、浮動小数 数、浮動小

ソース領域の

点数、タイ

数点数、タ

最初のエレメマ、DATE、

イマ、

ント

CHAR、

DATE、

WCHAR、

CHAR、

TOD

WCHAR、
TOD、
LTOD

COUNT

Input

USINT, UINT,

USINT,

I、Q、M、

ソース範囲か

UDINT

UINT,

D、L、P

らターゲットUDINT,

範囲にコピー

ULINT

するエレメン
トの数

OUT

1)

Output2 進数、整2 進数、整 D、L

ソース範囲の数、浮動小数 数、浮動小

内容がコピー

点数、タイ

数点数、タ

されるターゲマ、DATE、

イマ、ット範囲の最

CHAR、

DATE、

初のエレメンWCHAR、

CHAR、

ト

TOD

WCHAR、
TOD、
LTOD

1)

指定されたデータタイプは、ARRAY 構造体のエレメントとしてしか使用できません。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1385

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL
MOVE_BLK(IN := #a_array[2],
COUNT := "Tag_Count",
OUT => #b_array[1]);次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY[0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY[0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エレメント
を選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。
注記
Siemens Industry Online Support の以下の項目に、MOVE_BLK 命令に関する情報が記載されています。
STEP 7 (TIA ポータル)でのメモリ領域および構造化データのデータブロック間でのコピー方
法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

1386

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.6.4

MOVE_BLK_VARIANT:ブロック転送

説明「ブロック転送」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動することができます。配列全体または配列のエレメントを同じデータ
タイプの別の配列にコピーすることができます。ソース配列と宛先配列のサイズ(エレメントの数)は異なる場合があります。配列内の複数エレメントまたは単一エレメントをコピーすることができます。
コピーされるエレメント数は、選択されたソース範囲またはターゲット範囲を超えてはな
りません。
ブロックの作成時にこの命令を使用する場合、VARIANT ごとにソースおよびターゲットが転送されるため、配列はまだ既知である必要はありません。
SRC_INDEX および DEST_INDEX パラメータでのカウントは、配列の後の宣言に関係なく、常に下限値「0」から開始します。
コピーされるデータが使用可能なデータよりも多い場合、この命令は実行されません。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

SRC

VARIANT (配列L (ブロックイン コピー元のソースブロッ

Input 2)

説明または個々の配 ターフェースの ク
列エレメントを 「Input」、
ポイントする)、「InOut」、およ<Data_type>のび「Temp」セ

配列

クション内で宣
言可能。)

COUNT

Input

UDINT

I、Q、M、D、L コピーされるエレメント
数
ARRAY がパラメータ SRCまたはパラメータ DESTで指定されていない場合
は、パラメータ COUNTに値「1」を割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1387

基本命令
3.4 SCL
パラメータ 宣言

データタイプ

メモリ領域

説明

SRC_INDEX Input

DINT

I、Q、M、D、L コピーされる最初のエレ
メントを指定します。
• SRC_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ SRC で指定されると、パラメ
ータ SRC_INDEX の整数はコピー元のソース
領域内の最初のエレメ
ントを指定します。宣
言された配列の制限値には関係ありません。
• ARRAY がパラメータ
SRC で指定されない
か、または配列の 1 つのシングルエレメントのみが指定された場
合、パラメータ
SRC_INDEX に値「0」を割り当てます。

DEST_INDE
X

Input

DINT

I、Q、M、D、L 宛先メモリ領域の開始を定義します。
• DEST_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ DEST で指定されると、パラメ
ータ DEST_INDEX の
整数はコピー先のター
ゲット範囲内の最初のエレメントを指定します。宣言された配列の制限値には関係ありません。
• ARRAY がパラメータ
DEST で指定されていない場合は、パラメー
タ DEST_INDEX に値「0」を割り当てます。

1388

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ 宣言

データタイプ

メモリ領域

DEST

VARIANT

L (ブロックイン ソースブロックの内容がOutput 1)

説明

ターフェースの コピーされる宛先領域。
「Input」、「InOut」、および「Temp」セクション内で宣言可能。)
ファンクション値

INT

I、Q、M、D、L エラー情報(RET_VAL)
1) データがタグに流れるため、DEST パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
2) SRC パラメータでは、データタイプ BOOL および BOOL 配列を使用できません。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

データタイプが一致していません。ARRAY of Struct の代わりに、PLC データ
タイプ(UDT)の ARRAY を使用してください。

8151

SRC パラメータにアクセスできません。

8152

SRC パラメータのオペランドが入力されていません。

8153

SRC パラメータのコード生成エラー

8154

SRC パラメータのオペランドのデータタイプが BOOL です。

8281

COUNT パラメータの値が無効です

8382

SRC_INDEX パラメータの値が、ゼロ未満です。

8383

SRC_INDEX の値が配列の上限値外です。

8482

DEST_INDEX パラメータの値が、ARRAY 制限値外です。

8483

DEST パラメータがポイントする ARRAY が、コピーされるデータに対して小さすぎます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1389

基本命令
3.4 SCL
エラーコ
ード*

説明

(W#16#..
.)
8534

DEST パラメータが書き込み保護されています

8551

DEST パラメータにアクセスできません。

8552

DEST パラメータのオペランドが入力されていません。

8553

DEST パラメータのコード生成エラー

8554

DEST パラメータのオペランドのデータタイプが BOOL です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := MOVE_BLK_VARIANT(SRC := #SrcField,
COUNT := "Tag_Count",
SRC_INDEX := "Tag_Src_Index",
DEST_INDEX := "Tag_Dest_Index",
DEST => #DestField);

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

SRC

Input

ローカルオペランド#SrcField#SrcField は、ブロックのプログラミング
時にはまだ不明であった PLC データタイ
プを使用します。
「MOVE_UDT」の配(列[0～10])

1390

COUNT

Input

Tag_Count2

SRC_INDEX

Input

Tag_Src_Index

3

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ

ブロックインターフ オペランド
ェースでの宣言値

DEST_INDEX

Input

Tag_Dest_Index

3

DEST

InOut

#DestField

ローカルオペランド#DestField は、ブロックのプログラミン
グ時にはまだ不明であった PLC データタ
イプを使用します。
「MOVE_UDT」の配(列[10～20])

MOVE_UDT の配列[0～10]の 4 番目のエレメントから、ソース範囲の 2 つのエレメントがターゲット範囲に移動されます。コピーが、MOVE_UDT の配列[10～20]の 4 番目のエレメントから貼り付けられます。
注記
Siemens Industry Online Support の以下の項目に、MOVE_BLK_VARIANT 命令に関する情報が記載されています。
STEP 7 (TIA ポータル)でのメモリ領域および構造化データのデータブロック間でのコピー方
法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

下記も参照
VariantGet: VARIANT タグ値の読み出し (ページ 1457)

3.4.6.5

UMOVE_BLK:割り込みなしブロック転送

説明「割り込み不可能なブロック転送」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動することができます。この命令に割り込みをかけることはできません。ターゲット範囲に移動するエレメントの数は、COUNT パラメータで指定されます。移動されるエレメントの幅は、ソース領域内の最初のエレメントの幅で定義されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1391

基本命令
3.4 SCL
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ブロック転送操作に割り込みをかけることはできません。このため、「割り込みなしブロック転送」命令の実行中にはCPU の割り込み応答時間が長くなります。
OUT 出力の値は、次の条件が満たされると無効です。
• 移動されるデータが、IN パラメータまたは OUT パラメータで使用可能なデータよりも多いこと。
「割り込み不可能なブロック転送」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。
注記
配列の使用
この命令は、定義された n 個(n = パラメータ COUNT の値)のエレメントの内容を指定されたインデックスから始まるソース範囲からターゲット範囲にコピーします。

1392

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN 1)

宣言
Input

データタイプ

メモリ領域

S7-1200

S7-1500

2 進数、整2 進数、整 D、L説明
コピーされる数、浮動小数 数、浮動小

ソース領域の

点数、タイ

数点数、タ

最初のエレメマ、DATE、

イマ、

ント

CHAR、

DATE、

WCHAR、

CHAR、

TOD

WCHAR、
TOD、
LTOD

COUNT

Input

USINT, UINT,

USINT,

I、Q、M、

ソース範囲か

UDINT

UINT,

D、L、P

らターゲットUDINT,

範囲にコピー

ULINT

するエレメン
トの数

OUT

1)

Output2 進数、整2 進数、整 D、L

ソース範囲の数、浮動小数 数、浮動小

内容がコピー

点数、タイ

数点数、タ

されるターゲマ、DATE、

イマ、ット範囲の最

CHAR、

DATE、

初のエレメンWCHAR、

CHAR、

ト

TOD

WCHAR、
TOD、
LTOD

1)

指定されたデータタイプは、ARRAY 構造体のエレメントとしてしか使用できません。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1393

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL
UMOVE_BLK(IN := #a_array[2],
COUNT := "Tag_Count",
OUT => #b_array[1]);次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY[0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY[0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エレメント
を選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。
他のオペレーティングシステムのアクティビティによって、ブロック転送操作に割り込みをかけることはできません。
注記
Siemens Industry Online Support の以下の項目に、UMOVE_BLK 命令に関する情報が記載されています。
STEP 7 (TIA ポータル)でのメモリ領域および構造化データのデータブロック間でのコピー方
法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

1394

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.6.6

FILL_BLK:フィル命令

説明「フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。ターゲット範囲は、OUT 出力で指定されたアドレスから桁埋めが開始されます。
コピー操作の繰り返し回数は、COUNT パラメータの値で指定されます。この命令が実行された場合、入力 IN の値が COUNT パラメータの値で指定された回数だけターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
変更されるエレメントの最大数は、配列または構造体内のエレメント数です。OUT 出力でのエレメント数以上のデータをコピーすると、意図しない結果が生じます。
注記
配列の使用
この命令は、選択されたエレメントの内容をソース範囲から読み取り、この内容を指定されたインデックスから始まる宛先に n 回(n = パラメータ COUNT の値)コピーします。

構造体の桁埋め配列のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数エレメントを同一の値で桁埋めできます。エレメントを桁埋めする構造体は、含まれる個々のエレメントの基本データタイプが同一である必要があります。ただし、この構造体自体を他の構造体に埋め込むことが可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1395

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言
IN

Input

データタイプ

メモリ領域 説明S7-1200

S7-1500

2 進数、整2 進数、整数、 I、Q、M、 ターゲット範

数、浮動小数

浮動小数点数、 D、L、P

囲の桁埋めに

点数、タイ

タイマ、

使用するエレマ、TOD、

DATE、CHAR、

メント

DATE、

WCHAR、

CHAR、

TOD、LTOD

WCHAR
COUNT

Input

USINT, UINT,

USINT, UINT,

I、Q、M、 ブロック転送

UDINT

UDINT, ULINT

D、L、P

操作の繰り返し回数

OUT

Output2 進数、整2 進数、整数、 D、L

桁埋めを開始数、浮動小数

浮動小数点数、するターゲッ

点数、タイ

タイマ、

ト範囲のアドマ、TOD、

DATE、CHAR、

レス

DATE、

WCHAR、

CHAR、

TOD、LTOD

WCHAR
有効なデータタイプの追加情報については、「関連項目」を参照してください。

配列での例
次の例は、ARRAY を桁埋めする際の命令の動作を示しています。
SCL
FILL_BLK(IN := #FillValue,
COUNT := "Tag_Count",
OUT => #TargetArea[1]);1396

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。これは、INT データタイプの 5 つのエレメントで構成されます。

この命令は、オペランド#FillValue の値を#TargetArea 出力タグに最初のエレメントから 3
回コピーします。

構造体での例
次の例は、構造体を桁埋めする際の命令の動作を示しています。
以下のエレメントでグローバルデータブロックを作成します。
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRUCT1397

基本命令
3.4 SCL
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct1 タグをアドレス指定する以下のプログラムコードを生成します。
SCL
FILL_BLK(IN := 10,
COUNT := 2,
OUT => "Data_block_1".MyStruct1.Member_2);

MyStruct2 タグをアドレス指定する以下のプログラムコードを生成します。
SCL
FILL_BLK(IN := 10,
COUNT := 2,
OUT => "Data_block_1".MyStruct2.SubArray[1].NestedStruct.Member_2);

この 2 つの例では、どちらも IN パラメータの値 10 が OUT パラメータのオペランドにエレメント Member_2 から 2 回コピーされます。つまり、値 10 がエレメント Member_2 お
よび Member_3 にコピーされます。他の 2 つのエレメント Member_1 および Member_4
は変更されません。

1398

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.6.7

UFILL_BLK:割り込み不可能なフィル命令

説明「割り込み不可能なフィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。この命令に割り込みをかけることはできません。ターゲット範囲
は、OUT 出力で指定されたアドレスから桁埋めが開始されます。コピー操作の繰り返し回
数は、COUNT パラメータの値で指定されます。この命令が実行された場合、入力 IN の値が
COUNT パラメータの値で指定された回数だけターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ブロック転送操作に割り込みをかけることはできません。このため、「割り込み不可能なフィル」命令の実行中には、CPU のアラーム応答時間が長くなります。
変更されるエレメントの最大数は、配列または構造体内のエレメント数です。OUT 出力でのエレメント数以上のデータをコピーすると、意図しない結果が生じます。
注記
配列の使用
この命令は、選択されたエレメントの内容をソース範囲から読み取り、この内容を指定されたインデックスから始まる宛先に n 回(n = パラメータ COUNT の値)コピーします。
「割り込み不可能なフィル」命令を使用して最大 16 KB を移動することができます。この場
合、CPU 固有の制限に注意してください。

構造体の桁埋め配列のエレメントと同様に、構造体(STRUCT、PLC データタイプ)の複数エレメントを同一の値で桁埋めできます。エレメントを桁埋めする構造体は、含まれる個々のエレメントの基本データタイプが同一である必要があります。ただし、この構造体自体を他の構造体に埋め込むことが可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1399

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言
IN

COUNT

Input

Input

データタイプS7-1200

S7-1500

2 進数、整2 進数、整メモリ領域

説明

I、Q、M、

ターゲット範囲

数、浮動小数 数、浮動小数 D、L、Pの桁埋めに使用

点数、タイ

点数、タイ

するエレメント

マ、DATE、マ、DATE、

CHAR、

CHAR、

WCHAR、

WCHAR、

TOD

TOD、LTODUSINT, UINT, USINT, UINT,

I、Q、M、

ブロック転送操

UDINT

D、L、P

作の繰り返し回UDINT, ULINT

数OUT

Output2 進数、整2 進数、整D、L桁埋めを開始す

数、浮動小数 数、浮動小数

るターゲット範

点数、タイ

点数、タイ

囲のアドレスマ、TOD、マ、DATE、

DATE、

CHAR、

CHAR、

WCHAR、

WCHAR

TOD、LTOD

有効なデータタイプの追加情報については、「関連項目」を参照してください。

配列での例
次の例は、ARRAY を桁埋めする際の命令の動作を示しています。
SCL
UFILL_BLK(IN := #FillValue,
COUNT := "Tag_Count",
OUT => #TargetArea[1]);1400

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。これは、INT データタイプの 5 つのエレメントで構成されます。

この命令は、オペランド#FillValue の値を#TargetArea 出力タグに最初のエレメントから 3
回コピーします。他のオペレーティングシステムのアクティビティによって、ブロック転送操作に割り込みをかけることはできません。

構造体での例
次の例は、構造体を桁埋めする際の命令の動作を示しています。
以下のエレメントでグローバルデータブロックを作成します。
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRUCT1401

基本命令
3.4 SCL
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct1 タグをアドレス指定する以下のプログラムコードを生成します。
SCL
UFILL_BLK(IN := 10,
COUNT := 2,
OUT => "Data_block_1".MyStruct1.Member_2);

MyStruct2 タグをアドレス指定する以下のプログラムコードを生成します。
SCL
UFILL_BLK(IN := 10,
COUNT := 2,
OUT => "Data_block_1".MyStruct2.SubArray[1].NestedStruct.Member_2);

この 2 つの例では、どちらも IN パラメータの値 10 が OUT パラメータのオペランドにエレメント Member_2 から 2 回コピーされます。つまり、値 10 がエレメント Member_2 お
よび Member_3 にコピーされます。他の 2 つのエレメント Member_1 および Member_4
は変更されません。

1402

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.6.8

SCATTER:ビットシーケンスを個々のビットに解析

説明「ビットシーケンスを個々のビットに解析」命令は、BYTE、WORD、DWORD、またはLWORD データタイプのタグを個々のビットに解析し、それらを BOOL 配列、匿名
STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。
注記
BOOL の多次元配列「ビットシーケンスを個々のビットに解析」命令では、多次元 BOOL 配列は使用できません。
注記
ARRAY、STRUCT、または PLC データタイプの長さ
ARRAY、匿名 STRUCT、または PLC データタイプは、ビットシーケンスで指定された数と同じ数のエレメントを持つ必要があります。
これは、たとえば、データタイプ BYTE の場合、この ARRAY、STRUCT、または PLC データ
タイプはちょうど 8 つのエレメントを持つ必要がある(WORD = 16、DWORD = 32、および
LWORD = 64)ことを示します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
これにより、たとえばステータスワードの解析や、インデックスを使用した個々のビットのステータスの読み取りおよび変更が可能になります。GATHER を使用すると、ビットを再度ビットシーケンスに結合できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は信号状態「0」を返します。
• 許可入力 EN のシグナル状態が「0」である。
• ARRAY、STRUCT、または PLC データタイプが十分な BOOL エレメントを提供していな
い。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1403

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

宣言

IN

Input

データタイプS7-1200

S7-1500

メモリ領
域

説明

BYTE,

BYTE,

I、Q、

解析されるビットシーケン

WORD,

WORD,

M、D、L

ス。

DWORD

DWORD,

値が I/O 領域内、またはテ

LWORD

クノロジーオブジェクトのDB 内にあってはなりません。

OUT

Output

BOOL のBOOL のI、Q、個々のビットが格納される

ARRAY[*]、ARRAY[*]

M、D、L

ARRAY、STRUCT、またはSTRUCT、ま、たは PLC デ

STRUCT、ータタイプ

または PLC*:8、16、

データタイ

32、またはプ

64 個のエレ*:8、16、

メント

32、また

PLC データタイプ

は 64 個のエレメント
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

ARRAY を使用した例
ブロックインターフェースで、以下のタグを作成します。
タグ

セクション

データタイプ

SourceWord

入力

WORD

DestinationArray

出力

BOOL 配列[0～15]

次の例で、命令がどのように動作するかを示します。
SCL
SCATTER(IN := #SourceWord,
OUT => #DestinationArray);1404

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceWord

WORD (16 ビット)

OUT

DestinationArray

オペランド「DestinationArray」オペラ
ンドのデータタイプは、BOOL 配列[0～15]です。このオペランドは 16 個のエレメントで構成されます。これは、解析される WORD と同じ大きさです。

データタイプ WORD のオペランド#SourceWord は、個々のビット(16 個)に解析され、#DestinationArray オペランドの個々のエレメントに割り当てられます。

PLC データタイプ(UDT)での例
PLC データタイプ「myBits」の作成:

ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceWord

入力

WORD

DestinationUDT

出力「myBits」

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1405

基本命令
3.4 SCL
次の例で、命令がどのように動作するかを示します。
SCL
SCATTER(IN := #SourceWord,
OUT => #DestinationUDT);

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceWord

WORD (16 ビット)

OUT

DestinationUDT「DestinationUDT」オペラン
ドは PLC データタイプ(UDT)です。それは 16 個のエレメントから構成されるため、解析される WORD と同じ大きさです。

データタイプ WORD の#SourceWord オペランドが個々のビット(16)に解析され、#DestinationArray オペランドの個々のエレメントに割り当てられます。

1406

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.6.9

SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析

説明「ビットシーケンス配列のエレメントを個々のビットに解析」命令は、BYTE、WORD、
DWORD、または LWORD 配列の 1 つ以上のエレメントを個々のビットに解析し、それらをBOOL 配列、匿名 STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。COUNT_IN パラメータで、ソース ARRAY のエレメントを解析するエレメント数を指定します。IN パラメータのソース配列には、COUNT_IN パラメータで指定した個数以上のエレメントを格納することができます。BOOL 配列、匿名 STRUCT、または PLC データタ
イプは、解析されたビットシーケンスのビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先メモリ領域がこれよりも大きいことがあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:IN パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。OUT パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。WORD 配列は、48の個別のビットに解析されます。
注記
ターゲット配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは必ず BYTE、WORD、DWORD、またはLWORD 制限値から開始する必要があります。これは、インデックスの計算を配列の下限値かから開始する必要があることを意味します。以下の公式が、この計算の基本として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例については後述します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1407

基本命令
3.4 SCL
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
これにより、たとえばステータスワードの解析や、インデックスを使用した個々のビットのステータスの読み取りおよび変更が可能になります。GATHER を使用して、これらのビットをもう 1 度ビットシーケンスに結合することができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は信号状態「0」を返します。
• 許可入力 EN のシグナル状態が「0」である。
• ソース配列のエレメント数が、COUNT_IN パラメータで指定されたエレメント数よりも少ない。
• 宛先配列のインデックスが、BYTE、WORD、DWORD、または LWORD 制限値から開始されていない。この場合、BOOL 配列には結果が書き込まれません。
• BOOL の ARRAY[*]、STRUCT、または PLC データタイプが、必要なエレメント数を提供しない場合。
– S7-1500-CPU:この場合、可能な限り多くのビット列が解析され、BOOL 配列、匿名
STRUCT、または PLC データタイプに書き込まれます。残りビットシーケンスは考慮の対象になりません。
– S7-1200-CPU:コピー手順はありません。
注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれま
せん。

1408

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

宣言

IN

Input

データタイプS7-1200

S7-1500

メモリ領域<ビットシー

<ビットシ

I、Q、

解析される<ビットシー

ケンス>の

ーケンス>

M、D、L

ケンス>の ARRAY。

ARRAY[*]のエ のレメント

COUNT_IN Input

説明

値が I/O 領域内、または

ARRAY[*]

テクノロジーオブジェクのエレメン

トの DB 内にあってはな

ト

りません。

USINT, UINT,

USINT,

I、Q、

解析されるソース配列の

UDINT

UINT,

M、D、L

エレメント数のカウン

UDINT,タ。

ULINT

値が I/O 領域内、またはテクノロジーオブジェク
トのデータベース内にあってはなりません。

OUT

Output

BOOL のBOOL のI、Q、個々のビットが格納され

ARRAY[*]、ARRAY[*]M、D、L

る ARRAY、STRUCT、まSTRUCT、また 、たは PLC データタイプ

は PLC データ STRUCT、タイプのエレ または PLC
メント

データタイ
プのエレメ
ント

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」の宛先配列の例
ブロックインターフェースで、以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayWord

入力

WORD 配列[0～5]CounterInput
DestinationArrayBool

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

UDINT
出力

BOOL 配列[0～95]

1409

基本命令
3.4 SCL
次の例で、命令がどのように動作するかを示します。
SCL
SCATTER_BLK(IN := #SourceArrayWord[2],
COUNT_IN := #CounterInput,
OUT => #DestinationArrayBool[0]);次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD または 48
ビットを解析可能。つまり、宛先配列内で 48 ビット
以上使用できる必要があり
ます。)

OUT

DestinationArrayBool[0]オペランド「DestinationArrayBool」オ
ペランドのデータタイプ
は、BOOL 配列[0～95]です。つまり、96 個の BOOL
エレメントが提供されます。

#SourceArrayWord オペランドの 3 番目、4 番目、および 5 番目の WORD がその個々のビット(48)に解析され、1 番目のエレメントの場合と同様に、#DestinationArrayBool オペラ
ンドの個々のエレメントに割り当てられます。

下限値が「-2」の宛先配列の例
ブロックインターフェースで、以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayWord

入力

WORD 配列[0～5]CounterInput
DestinationArrayBool

1410

UDINT
出力

BOOL 配列[-2～93]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の例で、命令がどのように動作するかを示します。
SCL
SCATTER_BLK(IN := #SourceArrayWord[2],
COUNT_IN := #CounterInput,
OUT => #DestinationArrayBool[14]);次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。
)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD または 48
ビットを解析可能。つまり、宛先配列内で 48 ビット
以上使用できる必要があり
ます。)

OUT

DestinationArrayBool[14]オペランド「DestinationArrayBool」オ
ペランドのデータタイプ
は、BOOL 配列[-2～93]です。つまり、96 個の BOOL
エレメントが提供されます。

#SourceArrayWord オペランドの 3 番目、4 番目、および 5 番目の WORD がその個々のビット(48)に解析され、16 番目のエレメントの場合と同様に、#DestinationArrayBool オペ
ランドの個々のエレメントに割り当てられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1411

基本命令
3.4 SCL

3.4.6.10

GATHER:個々のビットをビットシーケンスに結合

説明「個々のビットをビットシーケンスに結合」命令は、BOOL 配列、匿名 STRUCT、またはBoolean エレメントのみの PLC データタイプのビットをビットシーケンスに結合します。
ビットシーケンスは、データタイプ BYTE、WORD、DWORD、または LWORD のタグに保存されます。
注記
BOOL の多次元配列「個々のビットをビットシーケンスに結合」命令では、多次元 BOOL 配列は使用できません。
注記
ARRAY、STRUCT、または PLC データタイプの長さ
ARRAY、STRUCT、または PLC データタイプは、ビットシーケンスで指定された数と同じ数のエレメントを持つ必要があります。
これは、たとえば、データタイプ BYTE の場合、この ARRAY、匿名 STRUCT、または PLC
データタイプはちょうど 8 つのエレメントを持つ必要がある(WORD = 16、DWORD = 32、および LWORD = 64)ことを示します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は信号状態「0」を返します。
• 許可入力 EN のシグナル状態が「0」である。
• ARRAY、匿名 STRUCT、または PLC データタイプ(UDT)の BOOL エレメントが、ビットシーケンスで指定された数よりも少ない、または多い。この場合、BOOL エレメントは転送されません。
• 使用可能なビット数が、必要なビット数よりも少ない。

1412

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN

宣言
入力

データタイプ

メモリ領域 説明S7-1200

S7-1500

BOOL のBOOL のI、Q、M、 ARRAY、STRUCT、まARRAY[*]、ARRAY[*]

D、L

STRUCT、ま、たは PLC データタイ
プ、ビットシーケンス

たは PLC デー STRUCT、に結合されるビット。

タタイプ

または PLC

値が I/O 領域内、また*:8、16、

データタイ

はテクノロジーオブジ

32、またはプ

ェクトの DB 内にあっ64 個のエレ*:8、16、てはなりません。

メント

32、また
は 64 個の
エレメント

OUT

出力

BYTE、

BYTE、

I、Q、M、 結合されたビットシー

WORD、

WORD、

D、L

DWORD

DWORD、

ケンス、タグ内に保存

LWORD
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

ARRAY を使用した例
ブロックインターフェースで、以下のタグを作成します。
タグ

セクション

データタイプ

SourceArray

入力

BOOL 配列[0～15]

DestinationWord

出力

WORD

次の例で、命令がどのように動作するかを示します。
SCL
GATHER(IN := #SourceArray,
OUT => #DestinationWord);

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1413

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArray

オペランド「SourceArray」
オペランドのデータタイプ
は、BOOL 配列[0～15]です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

DestinationWord

WORD (16 ビット)

#SourceArray オペランドのビットが、WORD に結合されます。

PLC データタイプ(UDT)での例
PLC データタイプ「myBits」の作成:

ブロックインターフェースで以下のタグを作成します。

1414

タグ

セクション

データタイプ

SourceUDT

入力「myBits」

DestinationWord

出力

WORD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の例で、命令がどのように機能するかを示します。
SCL
GATHER(IN := #SourceUDT,OUT => #DestinationWord);

次の表に、命令が特定のオペランド値を使用してどのように機能するかを示します。
パラメータ

オペランド

データタイプIN

SourceUDT「SourceUDT」オペランドは
PLC データタイプ(UDT)です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

DestinationWord

WORD (16 ビット)

#SourceUDT オペランドのビットが、WORD に結合されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1415

基本命令
3.4 SCL

3.4.6.11

GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合

説明「個々のビットをビットシーケンス配列のマルチエレメントに結合」命令は、BOOL 配列、
匿名 STRUCT、または Boolean エレメントのみの PLC データタイプを<ビットシーケンス>
配列の 1 つまたは複数のエレメントに結合します。COUNT_OUT パラメータでは、書き込
まれる宛先配列のエレメント数を指定します。このステップでは、必要な BOOL 配列、匿名
STRUCT、PLC データタイプのエレメント数も暗黙的に指定します。OUT パラメータの宛先配列には、COUNT_OUT パラメータで指定した個数以上のエレメントを格納することができます。<ビットシーケンス>配列は、結合されるビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先配列をそれよりも大きくすることも可能です。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:OUT パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。IN パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。BOOL 配列から、48 の個別のビットが結合されます。

1416

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
注記
ソース配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは必ず BYTE、WORD、DWORD、またはLWORD 制限値から開始する必要があります。これは、インデックスの計算を配列の下限値かから開始する必要があることを意味します。以下の公式が、この計算の基本として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例については後述します。
注記
この命令の可用性
S7-1200 シリーズの CPU でファームウェアバージョンが 4.2 よりも新しい場合、およびS7-1500 シリーズの CPU でファームウェアバージョン 2.1 以降の場合に、この命令を使用できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO は信号状態「0」を返します。
• 許可入力 EN のシグナル状態が「0」である。
• ソース配列のインデックスが、BYTE、WORD、DWORD、または LWORD 制限値から開始されていない。この場合、結果は<ビットシーケンス>配列に書き込まれません。
• <ビットシーケンス>の ARRAY[*]が、必要なエレメント数を提供しない場合。
– S7-1500-CPU:この場合、可能な限り多くのビットシーケンスが結合され、<ビット
シーケンス>配列に書き込まれます。残りのビットは考慮されません。
– S7-1200-CPU:コピー手順はありません。
注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1417

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ
IN

宣言
Input

データタイプ

メモリ領域

説明

S7-1200

S7-1500

BOOL のBOOL のI、Q、M、ビットが結合ARRAY[*]、ARRAY[*]

D、Lされる BOOLSTRUCT、ま、配列、

たは PLC デー STRUCT、

STRUCT、まタタイプのエ または PLC

たは PLC デー

レメント

データタイ

タタイプ(ソ

プのエレメ

ース配列)

ント

値が I/O 領域
内、またはテクノロジーオ
ブジェクトのDB 内にあってはなりません。

COUNT_OUT

Input

USINT, UINT,

USINT,

I、Q、M、記述されるタ

UDINT

UINT,

D、L

ーゲット

UDINT,ARRAY のエレ

ULINT

メント数のカウンタ。
値が I/O 領域
内、またはテクノロジーオ
ブジェクトのデータベース内にあってはなりません。

OUT

Output<ビットシー<ビットシ

I、Q、M、

ビットが保存

ケンス>の

ーケンス>

D、L

される<ビッARRAY[*]ののトシーケンスエレメント

ARRAY[*]>配列(宛先配

のエレメン

列)

ト

1418

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」のソース配列の例
ブロックインターフェースで、以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayBool

入力

BOOL 配列[0～95]

CounterOutput
DestinationArrayWord

UDINT
出力

WORD 配列[0～5]次の例で、命令がどのように動作するかを示します。
SCL
GATHER_BLK(IN := #SourceArrayBool[0],COUNT_OUT := #CounterOutput,
OUT => #DestinationArrayWord[2]);次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[0]オペランド「SourceArrayBool」オペラ
ンドのデータタイプは、BOOL 配列[0～95]です。すなわち、それは、もう 1 度
WORD に結合できる 96 個のBOOL エレメントを提供します。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD 書き込まれます。つまり、ソース配
列内で 48 ビット以上使用できる必要があります。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」オ
ペランドのデータタイプ
は、WORD 配列[0～5]です。つまり、6 個の WORD
エレメントが使用可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1419

基本命令
3.4 SCL
オペランド#Enable が許可入力でのシグナル状態が「1」を返す場合に命令が実行されます。
#SourceArrayBool オペランドの 1 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先配列の開始位置は、3 番目のエレメントです。すなわち、最初の 16 ビットが宛先配列の 3 番目のワードに、2 番目の 16
ビットが 4 番目のワードに、3 番目の 16 ビットが 5 番目のワードに書き込まれます。命令の実行中にエラーが発生する場合は、オペランド#EnableOut が許可出力 ENO でシグナル
状態は「0」を返します。

下限値が「-2」のソース配列の例
ブロックインターフェースで、以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayBool

入力

BOOL 配列[-2～93]

CounterOutput
DestinationArrayWord

UDINT
WORD 配列[0～5]出力

次の例で、命令がどのように動作するかを示します。
SCL
GATHER_BLK(IN := #SourceArrayBool[14],COUNT_OUT := #CounterOutput,
OUT => #DestinationArrayWord[2]);1420

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[14]オペランド「SourceArrayBool」オペラ
ンドのデータタイプは、BOOL 配列[-2～93]です。開始位置が 16 番目のエレメントであるため、再度ワードに結合できる 80 個の BOOL
エレメントのみを使用できます。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD 書き込まれます。つまり、ソース配
列内で 48 ビット以上使用できる必要があります。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」オ
ペランドのデータタイプ
は、WORD 配列[0～5]です。つまり、6 個の WORD
エレメントが使用可能です。

オペランド#Enable が許可入力でのシグナル状態が「1」を返す場合に命令が実行されます。
#SourceArrayBool オペランドの 16 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先配列の開始位置は、3 番目のエレメントです。つまり、ソース配列の最初の 16 ビットは無視されます。2 番目の 16 ビッ
トが宛先配列の 3 番目のワードに、3 番目の 16 ビットが 4 番目のワードに、4 番目の 16
ビットが 5 番目のワードに書き込まれます。ソース配列の残りの 64 ビットも考慮されません。命令の実行中にエラーが発生する場合は、オペランド#EnableOut が許可出力 ENO
でシグナル状態は「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1421

基本命令
3.4 SCL

3.4.6.13

SWAP:スワップ

説明「スワップ」命令を使用して、入力値のバイトの配置を変更し、結果を指定したオペランド
内に保存することができます。
次の図に、DWORD データタイプのオペランドのバイトが、「スワップ」命令を使用してスワップされる様子を示します。


⏴┪⊳

 

 
 

 

 

 

 


 

 



1422

 

 

 

 

 

 

 



 





 

 


 



 
 







俟㨫

 







 

 

 

 



 



 





 

 


 

 

 



TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

<Expression> Input

データタイプ

メモリ領域

説明
入力値

S7-1200

S7-1500

WORD,

WORD,

I、Q、M、

DWORD

DWORD,

D、L、P

LWORD
ファンクション値

WORD,

WORD,

I、Q、M、

DWORD

DWORD,

D、L、P

命令の結果

LWORD
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := SWAP("Tag_Value");

命令の結果は、ファンクション値として返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value

0000 1111 0101 0101

Tag_Result

0101 0101 0000 1111

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1423

基本命令
3.4 SCL

3.4.6.14

配列 DB

ReadFromArrayDB: 配列データブロックからの読み出し
説明
命令「ARRAY データブロックからの読み出し」を使用して、インデックスが参照する配列
DB ブロックタイプのデータブロックからエレメントを読み出し、そのエレメントの値をターゲット範囲に書き込みます。
配列データブロックは、1 つの<Data type>配列のみで構成されるデータブロックです。配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、必ず下限値「0」から始まります。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

DB

DB_ANY

I、Q、M、D、L 読み出されるデータブロ

Input

説明
ック

INDEX

Input

DINT

I、Q、M、D、

読み出される DB 内のエL、Pレメント。定数、グロー
バルタグ、またはインデックス値を指定できます。

VALUE

Output 1)

VARIANT

L (ブロックイン 読み出されて出力されるターフェースの 値「一時」セクシ
ョンでの宣言はできません。)

ファンクション値

INT

I、Q、M、D、L 命令の結果(RET_VAL)
1) データがタグに流れるため、VALUE パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

1424

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、書き込み保護されているか、またはロードメモリ内に存在します。

8135

配列データブロックに無効な値が含まれます。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、配列の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8452

コード生成エラー8453

エラーの原因が 2 つ考えられます。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致していない。
• 2 つのタグが、アクセスが最適化されたメモリ領域にない。メモリ領域のアクセスタイプに関する追加情報は、AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"TagResult" := ReadFromArrayDB(DB := "ArrayDB",INDEX := 2,
VALUE => "TargetField");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1425

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプが INT 配列[0～10]の配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

2 番目のエレメントが「ArrayDB」から読み出され、「TargetField」オペランドに書き込まれます。

WriteToArrayDB: 配列データブロックへの書き込み
説明
命令「ARRAY データブロックへの書き込み」を使用して、インデックスが参照するエレメ
ントをロードメモリの配列 DB ブロックタイプのデータブロックに書き込みます。
配列データブロックは、1 つの<Data type>配列のみで構成されるデータブロックです。配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、必ず下限値「0」から始まります。

1426

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

DB

DB_ANY

I、Q、M、D、L データが書き込まれるデ

Input

説明
ータブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P

内のエレメント。定数、グローバルタグ、または
インデックス値を指定で
きます。

VALUE

Input

VARIANT

L (ブロックイン 書き込まれる値
ターフェースの「一時」セクシ
ョンでの宣言はできません。)

ファンクション値

INT

I、Q、M、D、L 命令の結果(RET_VAL)
有効なデータタイプの追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8134

データブロックが書き込み保護されています。

8135

データブロックが配列データブロックではありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1427

基本命令
3.4 SCL
エラーコ
ード*

説明

(W#16#..
.)
8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が、配列の制限値外です。

8350

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8352

コード生成エラー8353

エラーの原因が 2 つ考えられます。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致していない。
• 2 つのタグが、アクセスが最適化されたメモリ領域にない。メモリ領域のアクセスタイプに関する追加情報は、AUTOHOTSPOT を参照してください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"TagResult" := WriteToArrayDB(DB := "ArrayDB",INDEX := 2,
VALUE := "SourceField");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
データタイプが INT 配列[0～10]の配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

「SourceField」オペランドの値は、配列 DB の 2 番目のエレメントに書き込まれます。

1428

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

ReadFromArrayDBL: ロードメモリの配列データブロックからの読み出し
説明
命令「ロードメモリの ARRAY データブロックからの読み出し」を使用して、インデック
スが参照するエレメントを配列 DB ブロックタイプのデータブロックから読み出し、そのエレメントの値をターゲット範囲に書き込みます。
配列データブロックは、1 つの<Data type>配列のみで構成されるデータブロックです。配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、必ず下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。この命令は、BUSY パラメータで信号立ち下がりエッジが検出された場合に終了します。1 プログラムサイクルの間、DONE
パラメータのシグナル状態が「1」になり、このサイクル内に、読み取られた値が VALUE
パラメータに出力されます。他のすべてのプログラムサイクルでは、VALUE パラメータの値は変更されません。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

REQ

BOOL

I、Q、M、D、L REQ =「1」:配列 DB の読

Input

説明
み出しから開始

DB 1)

Input

DB_ANY

I、Q、M、D、L 読み出される配列データ
ブロック。

INDEX

Input

DINT

I、Q、M、D、

読み出される DB 内のエL、Pレメント。定数、グロー
バルタグ、またはインデックス値を指定できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1429

基本命令
3.4 SCL
パラメータ 宣言

データタイプ

メモリ領域

VALUE 1)VARIANTD (グローバルデ 読み出されるワークメモ

InOut

説明

ータブロックの リ内の DB、および書き込
エレメント)

まれる値へのポインタ

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、「一時」セクシ

使用する必要がありませョンでの宣言は ん。
できません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ読み出し中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)

データブロックは、「最適化済み」ブロックプロパティを使用して作成する必要があります。

ERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

1430

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8235

データブロックが配列 DB ではありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
エラーコ
ード*

説明

(W#16#..
.)
8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、配列の制限値外です。

8750

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致していない。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
エラーコードの説明は、対応する命令の記述内の命令「READ_DBL」および「WRIT_DBL」
をトリガすると表示されます。

例
次の例で、命令がどのように動作するかを示します。
SCL"ReadFromArrayDBL_DB"(REQ := "TagReg",DB := "ArrayDB",INDEX := 2,
VALUE := "TargetField",
BUSY => "TagBusy",
DONE => "TagDone",
ERROR => "TagError");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプが INT 配列[0～10]の配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1431

基本命令
3.4 SCL
パラメータ

オペランド

値

VALUE

TargetField「TargetField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDone

BOOL

この命令は、「TagReq」パラメータで信号立ち上がりエッジが検出されたときに実行されます。2 番目のエレメントが「ArrayDB」から読み出され、「VALUE」パラメータに出力されます。「TagBusy」オペランドで信号立ち下がりエッジが検出された場合、すぐに命令は終了し、VALUE パラメータの値は変更されません。この命令が処理された後、「TagDone」
オペランドのシグナル状態は TRUE になります。

下記も参照
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
同期命令と非同期命令の相違 (ページ 29)

WriteToArrayDBL: ロードメモリの配列データブロックへの書き込み
説明
命令「ロードメモリの配列データブロックへの書き込み」を使用して、インデックスが参照
するエレメントをロードメモリの配列 DB ブロックタイプのデータブロックに書き込みます。
配列データブロックは、1 つの<Data type>配列のみで構成されるデータブロックです。配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、必ず下限値「0」から始まります。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。BUSY パラメータで信号立ち下がり
エッジが検出された場合、命令は終了し、VALUE パラメータの値がデータブロックに書き

1432

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
込まれます。DONE1 パラメータで信号立ち下がりエッジが検出された場合、命令は終了し、パラメータの値がデータブロックに書き込まれます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

REQ

BOOL

I、Q、M、D、L REQ =「1」:配列 DB への

Input

説明
書き込みを開始

DB 1)

Input

DB_ANY

I、Q、M、D、L データが書き込まれる配列データブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P

内のエレメント。定数、グローバルタグ、または
インデックス値を指定できます。

VALUE 1)Input

VARIANTD (グローバルデ 読み出されるワークメモ
ータブロックの リ内の DB、および書き込
エレメント)

まれる値へのポインタ

L (ブロックイン TEMP セクションのロー
ターフェースの カル定数またはタグは、「一時」セクシ

使用する必要がありませョンでの宣言は ん。
できません。)
BUSY

Output

BOOL

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ書き込み中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)

データブロックは、「最適化済み」ブロックプロパティを使用して作成する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1433

基本命令
3.4 SCLERROR パラメータ
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8234

データブロックが書き込み保護されています。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が、配列の制限値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致していない。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
エラーコードの説明は、対応する命令の記述内の命令「READ_DBL」および「WRIT_DBL」
をトリガすると表示されます。

例
次の例で、命令がどのように動作するかを示します。
SCL"WriteToArrayDBL_DB"(REQ := "TagReg",DB := "ArrayDB",INDEX := 2,
VALUE := "SourceField",1434

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLSCL
BUSY => "TagBusy",
DONE => "TagDone",
ERROR => "TagError");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
データタイプが INT 配列[0～10]の配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、データタイプ INT のグ
ローバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDone

BOOL

この命令は、「TagReq」パラメータで信号立ち上がりエッジが検出されたときに実行されます。「TagBusy」オペランドで信号立ち下がりエッジが検出された場合、命令が直ちに終了し、VALUE パラメータの値が「ArrayDB」の 2 番目のエレメントに書き込まれます。この命令が処理された後、「TagDone」オペランドのシグナル状態は TRUE になります。

下記も参照
READ_DBL: ロードメモリのデータブロックからの読み出し (ページ 2654)
WRIT_DBL:ロードメモリのデータブロックへの書き込み (ページ 2658)
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1435

基本命令
3.4 SCL

3.4.6.15

読み取り/書き込みアクセス

PEEK: メモリアドレスの読み取り

説明「メモリアドレスの読み取り」命令は、標準メモリ領域からのデータタイプを指定しない
メモリアドレスの読み取りに使用します。
命令のデータタイプを変更するには、以下の構文を使用します。
PEEK_<data type>();

メモリ領域 16#84 の使用:DB
プログラムコード作成中に意図せずデータブロックをメモリ領域として使用してしまわな
いように、EN/ENO メカニズムを使用してアクセスエラーを検出するオプションが用意されています。
SCL#Peeker := PEEK(AREA := 16#84,
DBNUMBER := 1,
BYTEOFFSET := 2,
ENO => ENO);
IF NOT ENO THEN;#Peeker := 16#ffff;
END_IF;

1436

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

宣言

データタイ メモリ領域
プ

説明

AREA

Input

BYTE

以下の領域を選択できます。

I、Q、M、D• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#1:周辺機器入力(S7-1500 のみ)
DBNUMBE Input

DINT,

R

DB_ANYBYTEOFFS Input

DINT

D

AREA = DB ならばデータブロックの番号、それ以外は「0」I、Q、M、DET

読み取り元のアドレス
16 個の最下位ビットのみが使用されます。

_<data type>

ビット列

-

デフォル

ファンクション値のデータタイプ:
1.「_」を使用して、この命令のデータタイプを明示的に指定することができます。

ト: BYTE

2. データタイプを明示的に指定しないと、使用されるタグまたはタイプコード化された定数によって指定されます。
3. データタイプを明示的に指定せず、定義済みタグまたはタイプ
コード化された定数も指定しない場合は、既定のデータタイプが使用されます。
ファンクション値

ビット列

I、Q、M、D

命令の結果

注記
入力、出力またはビットメモリ領域からメモリアドレスを読み取る場合、DBNUMBER パ
ラメータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1437

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := PEEK(AREA := "Tag_Area",
DBNUMBER := "Tag_DBNumber",BYTEOFFSET := "Tag_Byte");SCL"Tag_Result2" := PEEK_WORD(AREA := "Tag_Area",
DBNUMBER := "Tag_DBNumber",BYTEOFFSET := "Tag_Byte");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte20

ファンクション値

Tag_Result1

バイト値「20」

ファンクション値

Tag_Result2

ワード値「20」

この命令は、データブロック「5」のオペランド「Tag_Byte」からアドレス「20」の値を読み取り、結果をオペランド「Tag_Result」にファンクション値として返します。

PEEK_BOOL: メモリビットの読み取り

説明「メモリビットの読み取り」命令は、標準メモリ領域からのデータタイプを指定しないメ
モリビットの読み取りに使用します。

1438

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

メモリ領域 16#84 の使用:DB
プログラムコード作成中に意図せずデータブロックをメモリ領域として使用してしまわな
いように、EN/ENO メカニズムを使用してアクセスエラーを検出するオプションが用意されています。
SCL#Peeker_BOOL := PEEK_BOOL(AREA := 16#84,
DBNUMBER := 1,
BYTEOFFSET := 2,
BITOFFSET := 1,
ENO => ENO);
IF NOT ENO THEN;#Peeker_BOOL := 0;
END_IF;

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイ
プ

メモリ領域

説明

AREA

BYTE

I、Q、M、D

以下の領域を選択できます。

Input• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#1:周辺機器入力(S7-1500
のみ)
DBNUMBE

Input

R
BYTEOFFS

DINT,D

DB_ANYInput

DINT

AREA = DB ならばデータブロックの番号、それ以外は「0」I、Q、M、DET

読み取り元のアドレス
16 個の最下位ビットのみが使用されます。

BITOFFSET Input

INT

I、Q、M、D

読み取り元のビット

ファンクション値

BOOL

I、Q、M、D

命令の結果

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1439

基本命令
3.4 SCL

注記
入力、出力またはビットメモリ領域からメモリビットを読み取る場合、DBNUMBER パラ
メータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := PEEK_BOOL(AREA := "Tag_Area",
DBNUMBER := "Tag_DBNumber",BYTEOFFSET := "Tag_Byte",
BITOFFSET := "Tag_Bit");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte

20

BITOFFSET

Tag_Bit3

ファンクション値

Tag_Result3

この命令は、データブロック「5」のバイト「20」でオペランド「Tag_Bit」からメモリビ
ット「3」の値を読み取り、結果をファンクション値としてオペランド「Tag_Result」に返します。

POKE: メモリアドレスの書き込み
説明「メモリアドレスの書き込み」命令は、標準メモリ領域へのデータタイプを指定しないメ
モリアドレスの書き込みに使用します。

1440

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

メモリ領域 16#84 の使用:DB
プログラムコード作成中に意図せずデータブロックをメモリ領域として使用してしまわな
いように、EN/ENO メカニズムを使用してアクセスエラーを検出するオプションが用意されています。
SCL
POKE(AREA := 16#84,
DBNUMBER := 1,
BYTEOFFSET := 2,
VALUE := BYTE#7,
ENO => ENO);

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

宣言

データタイ メモリ領域
プ

説明

AREA

Input

BYTE

以下の領域を選択できます。

I、Q、M、D• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#2:周辺機器出力(S7-1500
のみ)
DBNUMBE Input

DINT,

R

DB_ANYBYTEOFFS Input

DINT

D

AREA = DB ならばデータブロックの番号、それ以外は「0」I、Q、M、DET書き込まれるアドレス
16 個の最下位ビットのみが使用さ
れます。

VALUE

Input

ビット列

I、Q、M、D書き込まれる値

注記
入力、出力またはビットメモリ領域にメモリアドレスを書き込む場合、DBNUMBER パラ
メータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1441

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL
POKE(AREA := "Tag_Area",
DBNUMBER := "Tag_DBNumber",BYTEOFFSET := "Tag_Byte");VALUE := "Tag_Value",

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte

20

VALUE

Tag_Value

16#11

この命令は、データブロック「5」内のメモリ領域「20」を値「16#11」で上書きします。

POKE_BOOL: メモリビットの書き込み

説明「メモリビットの書き込み」命令は、標準メモリ領域へのデータタイプを指定しないメモ
リビットの書き込みに使用します。

メモリ領域 16#84 の使用:DB
プログラムコード作成中に意図せずデータブロックをメモリ領域として使用してしまわな
いように、EN/ENO メカニズムを使用してアクセスエラーを検出するオプションが用意されています。
SCL
POKE(AREA := 16#84,
DBNUMBER := 1,
BYTEOFFSET := 2,
BITOFFSET := 4,
VALUE := TRUE,
ENO => ENO);

1442

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイ メモリ領域
プ

説明

AREA

BYTE

以下の領域を選択できます。

Input

I、Q、M、D• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB• 16#2:周辺機器出力(S7-1500 のみ)
DBNUMBE

Input

R
BYTEOFFS

DINT,D

DB_ANYInput

DINT

AREA = DB ならばデータブロックの番号、それ以外は「0」I、Q、M、DET書き込まれるアドレス
16 個の最下位ビットのみが使用されます。

BITOFFSET Input

INT

I、Q、M、D書き込まれるビット

VALUE

BOOL

I、Q、M、D書き込まれる値

Input

注記
入力、出力またはビットメモリ領域にメモリビットを書き込む場合、DBNUMBER パラメ
ータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
SCL
POKE_BOOL(AREA := "Tag_Area",
DBNUMBER := "Tag_DBNumber",BYTEOFFSET := "Tag_Byte",
BITOFFSET := "Tag_Bit",
VALUE := "Tag_Value");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1443

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA

Tag_Area

16#84

DBNUMBER

Tag_DBNumber

5

BYTEOFFSET

Tag_Byte

20

BITOFFSET

Tag_Bit3

VALUE

Tag_Value

M0.0

この命令は、バイト「20」内のデータブロック「5」のメモリビット「3」を値「M0.0」で上書きします。

POKE_BLK: メモリ領域の書き込み

説明「メモリ領域の書き込み」命令は、異なる標準メモリ領域へのデータタイプを指定しない
メモリ領域の書き込みに使用します。

メモリ領域 16#84 の使用:DB
プログラムコード作成中に意図せずデータブロックをメモリ領域として使用してしまわな
いように、EN/ENO メカニズムを使用してアクセスエラーを検出するオプションが用意されています。
SCL
POKE_BLK(AREA_SRC := 16#84,
DBNUMBER_SRC := 1,
BYTEOFFSET_SRC := 2,
AREA_DEST := 16#84,
DBNUMBER_DEST := 11,
BYTEOFFSET_DEST := 22,
COUNT := 3,
ENO => ENO);

1444

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

AREA_SRC

Input

BYTE

I、Q、M、D

ソースのメモリ領域で、以下の領域を選択できます。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB

DBNUMBER_SRC Input

DINT,
DB_ANYD
1)

AREA = DB ならばソースのメ
モリ領域内のデータブロックの番号、それ以外は「0」BYTEOFFSET_SR

Input

DINT

I、Q、M、DC書き込まれるソースのメモリ
領域のアドレス
16 個の最下位ビットのみが使用されます。

AREA_DEST

Input

BYTE

I、Q、M、D

宛先のメモリ領域で、以下の領域を選択できます。
• 16#81:入力• 16#82:出力• 16#83:ビットメモリ• 16#84:DB

DBNUMBER_DES Input

DINT,

T

DB_ANYD
1)

AREA = DB ならば宛先のメモ
リ領域内のデータブロックの番号、それ以外は「0」BYTEOFFSET_DE Input

DINT

I、Q、M、DST書き込まれる宛先のメモリ領域のアドレス
16 個の最下位ビットのみが使用されます。

COUNT
1)

Input

DINT

I、Q、M、D

コピーされるバイト数

パラメータ DBNUMBER_SRC と DBNUMBER_DEST のデータタイプは、同一である必要があります。つまり、両方のタグがデータタイプ DINT またはデータタイプ DB_ANY である必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1445

基本命令
3.4 SCL

注記
入力、出力またはビットメモリ領域にメモリアドレスを書き込む場合、DBNUMBER パラ
メータに値「 0」を割り当てる必要があります。割り当てないと、命令が無効になります。

例
次の例で、命令がどのように動作するかを示します。
SCL
POKE_BLK(AREA_SRC := "Tag_Source_Area",
DBNUMBER_SRC := "Tag_Source_DBNumber",BYTEOFFSET_SRC := "Tag_Source_Byte");
AREA_DEST := "Tag_Destination_Area",
DBNUMBER_DEST := "Tag_Destination_DBNumber",BYTEOFFSET_DEST := "Tag_Destination_Byte",
COUNT := "Tag_Count");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

AREA_SRC

Tag_Source_Area

16#84

DBNUMBER_SRC

Tag_Source_DBNumber

5

BYTEOFFSET_SRC

Tag_Source_Byte

20

AREA_DEST

Tag_Destination_Area

16#83

DBNUMBER_DEST

Tag_Destination_DBNumber 0

BYTEOFFSET_DEST

Tag_Destination_Byte

30

COUNT

Tag_Count100

この命令は、アドレス「30」から始まるビットメモリのメモリ領域内で、アドレス「20」から始まるデータブロック「5」から 100 バイトを書き込みます。

1446

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

READ_LITTLE: リトルエンディアン形式のデータの読み出し

説明「リトルエンディアン形式のデータの読み出し命令を使用し、メモリ領域からデータを読み出して、これをリトルエンディアンバイトシーケンスで単一のタグに書き込みます。リト
ルエンディアン形式では、最下位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_ARRAY および DEST_VARIABLE パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
DEST_VARIABLE パラメータの VARIANT は、基本データタイプである必要があります。
SRC_ARRAY パラメータの VARIANT が、データが読み出されるメモリ領域をポイントしており、これはバイトの配列であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE に対して、可変配列インデックスの実パラメータも使用できます。
POS パラメータのオペランドは、読み出しが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの読み出し
VARIANT が指すタグを読み出す場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを読み出す場合、「スライスアクセス」を使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1447

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプS7-1200
V4.0 以降

SRC_ARRAY Input
DEST_VARI

Output

ABLE

メモリ領
域

S7-1500

説明

バイトの配 バイトの配I、Q、M、 読み取り元のメモリ

列

列

D、L

BIT 文字

BIT 文字列、 I、Q、M、 読み出し値

領域

D、L

列、整数、 整数、浮動浮動小数点 小数点数、数、TOD、LDT、TOD、

DATE、

LTOD、

CHAR、

DATE、

WCHAR

CHAR、
WCHAR

POS

InOut

DINT

DINT

I、Q、M、 読み出しが開始されD、Lる位置を決定しま
す。POS パラメータは、ゼロベースで計算されます。

ファンクション値

INT

INT(RET_VAL)

I、Q、M、 エラー情報
D、L

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

8382

POS パラメータの値が、配列の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

1448

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL#TagResult := READ_LITTLE(SRC_ARRAY := #SourceField,
DEST_VARIABLE => #DINTVariable,
POS := #TagPos);

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_ARRAY#SourceField

BYTE の ARRAY [0..3]:= 16#1A、16#2B、
16#3C、16#4D

DEST_VARIABLE#DINTVariable

1295788826
16#4D3C2B1A

POS#TagPos

0 => 4

この命令は、#SourceField メモリ領域から整数 1_295_788_826 を読み出し、この値を#DINTVariable オペランドにリトルエンディアン形式で書き込みます。DEST_VARIABLE パ
ラメータのデータタイプは、読み取られるバイト数を指定します。個数 4 が#TagPos オペ
ランドに格納されます。

下記も参照
Deserialize: 逆シリアル化 (ページ 1372)
Serialize: シリアル化 (ページ 1378)

WRITE_LITTLE: リトルエンディアン形式のデータの書き込み

説明「リトルエンディアン形式のデータの書き込み」命令を使用して、リトルエンディアンバ
イトシーケンスの単一のタグのデータをメモリ領域に書き込みます。リトルエンディアン
形式では、最下位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_VARIABLE および DEST_ARRAY パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
SRC_VARIABLE パラメータの VARIANT は、基本データタイプをポイントする必要がありま

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1449

基本命令
3.4 SCLす。DEST_ARRAY パラメータの VARIANT が、データが書き込まれるメモリ領域をポイントしており、これはバイトの配列であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE に対して、可変配列インデックスの実パラメータも使用できます。
POS パラメータのオペランドは、書き込みが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの書き込み
VARIANT が指すタグを書き込む場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを書き込む場合、「スライスアクセス」を使用します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

SRC_VARIA

Input

BLE

データタイプ

メモリ領域

S7-1200
V4.0 以降

S7-1500

BIT 文字

BIT 文字列、 I、Q、

列、整数、 整数、浮動説明

書き込み元のタグ

M、D、L

浮動小数点 小数点数、数、TOD、 LDT、TOD、
DATE、

LTOD、

CHAR、

DATE、

WCHAR

CHAR、
WCHAR

DEST_ARRA InOut

バイトの配 バイトの配I、Q、データが書き込まれ

Y

列

列

M、D、L

るメモリ領域

DINT

DINT

I、Q、

書き込みが開始されM、D、Lる位置を決定しま

POS

InOut

す。POS パラメータは、ゼロベースで計算されます。
ファンクション値(RET_VAL)

1450

INT

INT

I、Q、

エラー情報

M、D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

8382

POS パラメータの値が、配列の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

例
次の例で、命令がどのように動作するかを示します。
SCL#TagResult := WRITE_LITTLE(SRC_VARIABLE := #DINTVariable,
DEST_ARRAY := #TargetField,
POS := #TagPos);

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_VARIABLE#DINTVariable

1295788826
16#4D3C2B1A

DEST_ARRAY#TargetField

BYTE の ARRAY [0..10]= 16#1A、16#2B、16#3C、
16#4D

POS

#TagPos

0 => 4

この命令は、#DINTVariable オペランドの整数 1_295_788_826 を#TargetField メモリ領域にリトルエンディアン形式で書き込みます。SRC_VARIABLE パラメータは、書き込まれるバイト数を指定します。個数 4 が#TagPos オペランドに格納されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1451

基本命令
3.4 SCL

下記も参照
Deserialize: 逆シリアル化 (ページ 1372)
Serialize: シリアル化 (ページ 1378)

READ_BIG: ビッグエンディアン形式のデータの読み出し

説明「リトルエンディアン形式のデータの読み出し命令を使用し、メモリ領域からデータを読み出して、これをビッグエンディアンバイトシーケンスで単一のタグに書き込みます。ビッ
グエンディアン形式では、最上位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_ARRAY および DEST_VARIABLE パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
DEST_VARIABLE パラメータの VARIANT は、基本データタイプである必要があります。
SRC_ARRAY パラメータの VARIANT が、データが読み出されるメモリ領域をポイントしており、これはバイトの配列であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE に対して、可変配列インデックスの実パラメータも使用できます。
POS パラメータのオペランドは、読み出しが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの読み出し
VARIANT が指すタグを読み出す場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを読み出す場合、「スライスアクセス」を使用します。

1452

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

SRC_ARRAY Input
DEST_VARI

OutputABLE

データタイプ

メモリ領域

説明S7-1200
V4.0 以降

S7-1500

バイトの配

バイトの配 I、Q、

列

列

M、D、L

領域

BIT 文字

BIT 文字

I、Q、

読み出し値

列、整数、

列、整数、 M、D、L

浮動小数点

浮動小数点

数、TOD、

数、LDT、

DATE、

TOD、

CHAR、

LTOD、

WCHAR

DATE、

読み取り元のメモリ

CHAR、
WCHAR
POS

InOut

DINT

DINT

I、Q、

読み出しが開始されM、D、Lる位置を決定しま
す。POS パラメータは、ゼロベースで計算されます。

ファンクション値

INT

INT(RET_VAL)

I、Q、

エラー情報

M、D、L

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1453

基本命令
3.4 SCL
エラーコ 説明ード*(W#16#..
.)
8382

POS パラメータの値が、配列の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

例
次の例で、命令がどのように動作するかを示します。
SCL#TagResult := READ_BIG(SRC_ARRAY := #SourceField,
DEST_VARIABLE => #DINTVariable,
POS := #TagPos);

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_ARRAY#SourceField

BYTE の ARRAY [0..10]:= 16#1A、16#2B、
16#3C、16#4D

DEST_VARIABLE#DINTVariable

439041101
16#1A2B3C4D

POS#TagPos

0 => 4

この命令は、#SourceField メモリ領域から整数 439_041_101 を読み出し、この値を#DINTVariable オペランドにビッグエンディアン形式で書き込みます。DEST_VARIABLE パ
ラメータのデータタイプは、読み取られるバイト数を指定します。個数 4 が#TagPos オペ
ランドに格納されます。

下記も参照
Deserialize: 逆シリアル化 (ページ 1372)
Serialize: シリアル化 (ページ 1378)

1454

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

WRITE_BIG: ビッグエンディアン形式のデータの書き込み

説明「ビッグエンディアン形式のデータの書き込み」命令を使用して、ビッグエンディアンバ
イトシーケンスの単一のタグのデータをメモリ領域に書き込みます。ビッグエンディアン
形式では、最上位ビットのバイトが最初(最下位メモリアドレス)に保存されます。
SRC_VARIABLE および DEST_ARRAY パラメータのデータタイプは、VARIANT です。ただし、パラメータを相互接続できるデータタイプに関する、いくつかの制限事項があります。
SRC_VARIABLE パラメータの VARIANT は、基本データタイプをポイントする必要があります。DEST_ARRAY パラメータの VARIANT が、データが書き込まれるメモリ領域をポイントしており、これはバイトの配列であることが必要です。
パラメータ SRC_ARRAY および DEST_VARIABLE に対して、可変配列インデックスの実パラメータも使用できます。
POS パラメータのオペランドは、書き込みが開始されるメモリ領域内の位置を決定します。
注記
データタイプ VARIANT または BOOL のタグの書き込み
VARIANT が指すタグを書き込む場合、「シリアル化」または「逆シリアル化」命令を使用します。
データタイプ BOOL のタグを書き込む場合、「スライスアクセス」を使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1455

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

SRC_VARIA

Input

BLE

データタイプ

メモリ領域

S7-1200
V4.0 以降

S7-1500

BIT 文字

BIT 文字列、 I、Q、説明

書き込み元のタグ

M、D、L

列、整数、 整数、浮動浮動小数点 小数点数、数、TOD、LDT、TOD、

DATE、

LTOD、

CHAR、

DATE、

WCHAR

CHAR、
WCHAR

DEST_ARRA InOut

バイトの配 バイトの配I、Q、データが書き込まれ

Y

列

列

M、D、L

るメモリ領域

DINT

DINT

I、Q、

書き込みが開始されM、D、Lる位置を決定しま

POS

InOut

す。POS パラメータは、ゼロベースで計算されます。
ファンクション値

INT

INT(RET_VAL)

I、Q、

エラー情報

M、D、L

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

80B4

SRC_ARRAY パラメータのデータタイプがバイトの配列ではありません。

8382

POS パラメータの値が、配列の制限値外です。

8383

POS パラメータの値は配列の制限値内にありますが、メモリ領域のサイズが配列の上限値を超過しています。

1456

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL#TagResult := WRITE_BIG(SRC_VARIABLE := #DINTVariable,
DEST_ARRAY := #TargetField,
POS := #TagPos);

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

SRC_VARIABLE#DINTVariable

439041101
16#1A2B3C4D

DEST_ARRAY#TargetField

BYTE の ARRAY [0..10]= 16#1A、16#2B、16#3C、
16#4D

POS

#TagPos

0 => 4

この命令は、#DINTVariable オペランドの整数 439_041_101 を#TargetField メモリ領域に
ビッグエンディアン形式で書き込みます。SRC_VARIABLE パラメータは、書き込まれるバ
イト数を指定します。個数 4 が#TagPos オペランドに格納されます。

下記も参照
Deserialize: 逆シリアル化 (ページ 1372)
Serialize: シリアル化 (ページ 1378)

3.4.6.16

VARIANT

VariantGet: VARIANT タグ値の読み出し

説明「VARIANT タグ値の読み出し」命令を使用して、SRC パラメータの VARIANT が指すタグの値を読み出し、その値を DST パラメータのタグに書き込むことができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1457

基本命令
3.4 SCL
SRC パラメータのデータタイプは、VARIANT です。DST パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。
DST パラメータで指定されたタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および配列をコピーする場合、「MOVE_BLK_VARIANT 命令:ブロック転送」命令を使用できます。追加情報については、「関連項目」を参照してください。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言
SRC

Input

データタイプVARIANT

メモリ領域

説明

S7-1200

S7-1500

L (ブロック

L (ブロック 読み出されるタ

インターフ

インターフ グ

ェースの

ェースの

「一時」セク 「一時」セDST

Output

ビット列、整

ションでの

クションで

宣言はでき

の宣言はで

ません。)

きません。)

I、Q、M、

I、Q、M、数、浮動小数点 D、L

命令の結果

D、L、P

数、タイマ、日
付と時刻、文字列、配列エレメ
ント、PLC デー
タタイプ
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
VariantGet(SRC := #TagIn_Source,1458

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLSCLDST => "TagOut_Dest");「#TagIn_Source」オペランド VARIANT が指すタグの値が、「TagOut_Dest」オペランドに対して読み取りおよび書き込みされます。

下記も参照
MOVE_BLK_VARIANT:ブロック転送 (ページ 1387)

VariantPut: VARIANT タグ値の書き込み
説明「VARIANT タグ値の書き込み」命令を使用して、SRC パラメータのタグの値を VARIANT が指す DST パラメータのメモリに書き込むことができます。
DST パラメータのデータタイプは、VARIANT です。SRC パラメータでは、VARIANT を除く
任意のデータタイプを指定できます。
SRC パラメータのタグのデータタイプは、VARIANT が指すデータタイプと一致する必要があります。
注記
構造体および配列をコピーする場合、「MOVE_BLK_VARIANT 命令:ブロック転送」命令を使用できます。追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1459

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言
SRC

Input

データタイプ
ビット列、整メモリ領域

説明

S7-1200

S7-1500

I、Q、M、

I、Q、M、

読み出されるタ

D、L、P

グ

数、浮動小数点 D、L数、タイマ、日
付と時刻、文字列、配列エレメ
ント、PLC デー
タタイプ
DST

Input

VARIANT

L (ブロック

L (ブロック 命令の結果

インターフ

インターフ

ェースの

ェースの

「一時」セク 「一時」セ
ションでの

クションで

宣言はでき

の宣言はで

ません。)

きません。)

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
VariantPut(SRC := "TagIn_Source",
DST := #TagIn_Dest);「TagIn_Source」オペランドの値が、「#TagIn_Dest」オペランドの VARIANT が指すタグに書き込まれます。

下記も参照
MOVE_BLK_VARIANT:ブロック転送 (ページ 1387)

1460

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLCountOfElements: 配列要素の数を取得
説明「配列エレメントの数を取得」命令を使用して、VARIANT が指すタグに格納されている配列
エレメント数を照会できます。
配列が多次元の ARRAY の場合、配列エレメント数が結果として出力されます。(上限値および下限値 +1 間の差分)。配列が多次元の ARRAY の場合、すべての次元数が結果として出力されます。
注記
インスタンス
VARIANT ポインタはインスタンスを指すことができないため、マルチインスタンスやマルチインスタンス配列も指すことができません。
注記
データブロック内の配列
データブロック内にある配列のエレメント数を照会する場合は、このブロックのブロック
属性「デバイス内のデータブロックは書き込み禁止」が有効であってはなりません。有効な場合、配列が格納しているエレメント数に関係なく、RET_VAL パラメータが結果「0」を返します。
VARIANT タグが ARRAY でない場合も、結果が「0」になります。
VARIANT が ARRAY of BOOL を指す場合、FILL エレメントはカウントに含まれます。(たとえば、ARRAY[0..1] of BOOL に対して 8 が返されます)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1461

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

VARIANT

L (ブロックイン 照会するタグ
ターフェースの「一時」セクシ
ョンでの宣言はできません。)

ファンクション値

UDINT

I、Q、M、D、L 命令の結果

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
IF IS_ARRAY(#Tag_VARIANTToArray) THEN
"Tag_Result" := CountOfElements(#Tag_VARIANTToArray);
END_IF;

VARIANT が指すタグが ARRAY の場合、ARRAY エレメントの数が出力されます。

3.4.6.17

配列[*]

LOWER_BOUND:ARRAY 最小値の読み出し

説明
ファンクションブロックまたはファンクション内で、データタイプが配列[*]のタグを宣言できます。これらのローカルタグでは、配列の制限値を読み出せます。DIM パラメータで必要な次元を指定する必要があります。

1462

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL「ARRAY 最小値の読み出し」命令を使用して、配列の変数下限値を読み出します。
注記
命令の可用性
この命令は、ファームウェアバージョン V4.4.2.以降の S7-1200 シリーズの CPU、およびファームウェアバージョン V2.2.0 以降の S7-1500 シリーズの CPU で使用可能です。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

ARR

配列[*]

FB => セクショ

変数下限値が読み出されン InOut

る配列。

Input

FC => セクショ
ン Input および
InOut
DIM

Input

UDINT

I、Q、M、D、

変数下限値が読み出され

L、P、または定 る配列の次元。
数
ファンクション値

DINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
SCL"Result" := LOWER_BOUND(ARR := #ARRAY_A,
DIM := 2);

この命令は、配列#ARRAY_A の 2 番目の次元から変数下限値を読み出します。この命令がエラーなしで実行された場合、結果がオペランド「Result」に書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1463

基本命令
3.4 SCL

UPPER_BOUND:ARRAY 最大値の読み出し

説明
ファンクションブロックまたはファンクション内で、データタイプが配列[*]のタグを宣言できます。これらのローカルタグでは、配列の制限値を読み出せます。DIM パラメータで必要な次元を指定する必要があります。
命令「ARRAY 最大値の読み出し」を使用して、配列の変数上限値を読み出します。
注記
命令の可用性
この命令は、ファームウェアバージョン V4.4.2.以降の S7-1200 シリーズの CPU、およびファームウェアバージョン V2.2.0 以降の S7-1500 シリーズの CPU で使用可能です。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

ARR

配列[*]

FB => セクショ

変数上限値が読み出されン InOut

る配列。

Input

FC => セクショ
ン Input および
InOut
DIM

Input

UDINT

I、Q、M、D、

変数上限値が読み出され

L、P、または定 る配列の次元。
数
ファンクション値

DINT

I、Q、M、D、

結果

L、P

例
次の例で、命令がどのように動作するかを示します。
SCL"Result" := UPPER_BOUND(ARR := #ARRAY_A,
DIM := 2);1464

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
この命令は、配列#ARRAY_A の 2 番目の次元から変数上限値を読み出します。この命令がエラーなしで実行された場合、結果がオペランド「Result」に書き込まれます。

3.4.6.18

レガシー

BLKMOV: ブロックムーブ

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース領域)の内容を別のメモリ領域(宛先領域)に移動することができます。ブロック転送操作は、アドレスの昇順方向に行われます。VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、保持設定「IDB に設定」が宣言されている命令タグの場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。
次の図に、ブロック転送操作の原理を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1465

基本命令
3.4 SCL'%'%:$%'%'%:&''%'%:()'%'%:

*

+

䲊╤
ነ኱ዙቒቿኦዉኖቑ㢖檕㡈⚠቎⸮嫛ሸቯቡሼᇭ

0:

$

%

0:

&

'

0:

(

)

0:

*

+

ኾ኿዇檧⩮

ソース領域および宛先領域の整合性「ブロックムーブ」命令の実行中は、宛先データの整合性を保証するため、ソースデータは変更されないことに注意してください。

割り込み機能ネストレベルに対する制限はありません。

メモリ領域「ブロックムーブ」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。ソース領域と宛先領域の長さが異なる
場合、小さな領域の長さのみが移動します。

1466

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。
宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。

文字列の移動のルール
STRING データタイプの移動元および移動先の領域の移動に「ブロックムーブ」命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報も、宛先領域に書き込まれます。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文
字列の現在の長さが、実際に移動する文字数にセットされます。
文字列の最大長および実際の長さに関する情報を移動するには、SRCBLK および DSTBLK パ
ラメータにバイト単位で領域を指定します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

SRCBLK

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

ブロックムーブ先のメモ

L、P

リ領域(宛先領域)を指定

DSTBLK

Input
Output 1)

VARIANTします。
ファンクション値(RET_VAL)

INT

I、Q、M、D、

エラー情報

L、P

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1467

基本命令
3.4 SCL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー
ド*(W#16#...)

説明

0000

エラーは発生していません。

8092

ソース領域またはターゲット領域は、ロードメモリのみで使用できます。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
SRCBLK パラメータに対してサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

一般エラー

関連項目:「GET_ERR_ID ローカルでエラー ID を取得」

情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_RetVal" := BLKMOV(SRCBLK := P#M100.0 BYTE 10,
DSTBLK => P#DB1.DBX0.0 BYTE 10);

この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ブロック
転送操作中にエラーが発生した場合、「Tag_RetVal」タグにエラーコードが出力されます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)

1468

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLUBLKMOV: 割り込み不可能なブロックムーブ
説明「割り込みなしブロック転送」命令を使用して、メモリ領域(ソース領域)の内容を別のメ
モリ領域(宛先領域)に移動することができます。ブロック転送操作は、アドレスの昇順方向に行われます。VARIANT を使用して、ソース領域と宛先領域を定義します。
他のオペレーティングシステムのアクティビティによって、ブロック転送操作に割り込みをかけることはできません。その結果、「割り込み不可能なブロック転送」命令の実行中に、CPU の割り込み応答時間が長くなる場合があります。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、保持設定「IDB に設定」が宣言されている命令タグの場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。

メモリ領域「割り込みなしブロック転送」命令を使用すると、次のメモリ領域を移動することが可能です。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則「割り込みなしブロック転送」命令の実行中は、ソース領域および宛先領域が重複してはなりません。ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1469

基本命令
3.4 SCL仮パラメータとして定義されたソース領域または宛先領域が、SRCBLK または DSTBLK パ
ラメータで指定された宛先領域またはソース領域よりも小さい場合、データは転送されません。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。
「割り込み不可能なブロック転送」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。

文字列の移動のルール
STRING データタイプのソース領域および宛先領域の移動に「割り込み不可能なブロック転送」命令を使用することも可能です。ソース領域が STRING データタイプのみの場合、文字列に実際に含まれる文字が移動されます。実際の長さおよび最大長に関する情報は、宛先領域には書き込まれません。ソース領域と宛先領域の両方が STRING データタイプの場
合、宛先領域内の文字列の現在の長さが、実際に移動する文字数にセットされます。
STRING データタイプの領域を移動する場合、領域の長さとして「1」を指定します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

SRCBLK

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

ブロックムーブ先のメモ

L、P

リ領域(宛先領域)を指定

DSTBLK

Input
Output 1)

VARIANTします。
ファンクション値(RET_VAL)

INT

I、Q、M、D、

エラー情報

L、P

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

1470

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド
(W#16#...)
0000

エラーは発生していません。

8091

ソース領域またはターゲット領域は、ロードメモリのみで使用できます。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
SRCBLK パラメータに対してサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

一般エラー 関連項目:「GET_ERR_ID ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_RetVal" := UBLKMOV(SRCBLK := P#M100.0 BYTE 10,
DSTBLK => P#DB1.DBX0.0 BYTE 10);

この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ブロック
転送操作中にエラーが発生した場合、「Tag_RetVal」タグにエラーコードが出力されます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1471

基本命令
3.4 SCL

FILL: フィル命令

説明「フィル」命令を使用して、メモリ領域(宛先領域)を別のメモリ領域(ソース領域)の内容によって埋めることができます。「フィル」命令は、宛先領域がすべて書き込まれるまでソース領域の内容を宛先領域に移動します。ブロック転送操作は、アドレスの昇順方向に行
われます。
VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
ANY データタイプを使用して、ソース領域と宛先領域を定義することもできます。
ANY データタイプを使用する場合は、STRING データタイプについて以下に注意する必要があります。
• STRING (宛先領域)の後に ANY を使用して STRING(ソース領域)を割り当てる場合、STRINGの内容が、完全になるまで宛先領域に繰り返しコピーされます。
ソース領域: 'STEP7-SCL-TIA-Portal'
宛先領域: 'STEP7-SCL-TIA-PortalSTEP7-SCL-TIA-PortalSTEP7-SCL'• WSTRING (宛先領域)の後に ANY を使用して WSTRING (ソース領域)を割り当てる場合、タイ
プ情報を含む WSTRING 全体が宛先領域に 1 度だけコピーされます。
ソース領域: WSTRING#'STEP7-SCL-TIA-Portal'
宛先領域: WSTRING#'STEP7-SCL-TIA-Portal'

注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)、および出力(Q)に適用されます。
ただし、保持設定「IDB に設定」が宣言されている命令タグの場合は、このタグを「最適化ブロックアクセス」のメモリ領域内で使用できます。
「最適化したブロックアクセス属性を持つブロックの場合、命令「FILL_BLK:フィル」命令を使用できます。
次の図に、ブロック転送操作の原理を示します。

1472

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
),//

%9$/

$

%

0:

$

%

0:

&

'

0:

&

'

0:

(

)

0:

(

)

0:

*

+

0:

*

+

0:

$

%

0:

&

'

0:

(

)

0:

*

+

0:

$

%

0:

&

'

0:

%/.

例:MW100～MW118 の範囲の内容は、メモリワード MW14～MW20 の内容で事前割り当てされます。

ソース領域および宛先領域の整合性「フィル」命令の実行中は、宛先データの整合性を保証するため、ソースデータは変更されないことに注意してください。

メモリ領域「フィル」命令を使用して、以下のメモリ領域を移動することができます。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。プリセットする宛先領域が BVAL 入力
パラメータの長さの整数倍ではなくても、宛先領域は最後のバイトまで書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1473

基本命令
3.4 SCL
プリセットする宛先領域がソース領域よりも小さい場合は、ソース領域に含まれているデータのうち、宛先領域に書き込める量のみがコピーされます。
実際に存在する宛先領域またはソース領域がソース領域または宛先領域に割り当てられた
メモリ領域よりも小さい場合(BVAL、BLK パラメータ)、データは転送されません。
ANY ポインタ(ソースまたは宛先)がデータタイプ BOOL の場合、これを絶対アドレス指定する必要があり、かつ指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行されません。
宛先領域が STRING データタイプの場合、この命令は管理情報を含む文字列全体を書き込みます。

構造体移動のルール
構造体を入力パラメータとして転送するとき、構造体の長さが常に偶数バイト数になっているように注意する必要があります。構造体を奇数バイトによって宣言する場合は、追加の1 バイトが必要になります。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

BVAL

VARIANT

I、Q、M、D、その内容に内容が BLK パ

L、P

ラメータの宛先領域を埋Inputめるのに使用されるメモ
リ領域(ソース領域)の指定。
BLK

Output 1)

ファンクション値(RET_VAL)

VARIANT
INT

I、Q、M、D、

ソース領域の内容で埋めL、Pられるメモリ領域の指定。

I、Q、M、D、

エラー情報

L、P

1) データがタグに流れるため、BLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

1474

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

BVAL パラメータ
構造体を入力パラメータとして転送する際には、構造体の長さのバイト数が必ず偶数になるように注意してください。構造体を奇数バイトによって宣言する場合は、追加の 1 バイトが必要になります。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード(W#16#..
.)
0000

エラーは発生していません。

8092

ソース領域またはターゲット領域は、ロードメモリのみで使用できます。

8152

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、BVAL
パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL、および ARRAY of STRING データタイプは、BLK
パラメータではサポートされていません。

一般エラ

関連項目:「GET_ERR_ID ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_RetVal" := FILL(BVAL := P#M14.0 WORD 4,
BLK => P#M100.0 WORD 10);

この命令は、ソース領域 MW14～MW20 をコピーし、BVAL パラメータのメモリ領域に含まれる 4 ワードの内容で宛先領域 MW100～MW118 を埋めます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1475

基本命令
3.4 SCL

3.4.7

変換操作

3.4.7.1

CONVERT:変換データ

説明「データの変換」命令を使用して、明示的な変換をプログラムします。命令が挿入されると、[CONVERT]ダイアログが開きます。このダイアログで、変換のソースデータタイプと宛先データタイプを指定します。ソース値が読み出され、指定された宛先データタイプに変換されます。

ビット列の変換オプション
BYTE および WORD ビット列は、命令ボックスで選択できません。ただし、入力と出力のオペランドの長さが一致する場合は、命令のパラメータでデータタイプ DWORD またはLWORD のオペランドを指定できます。この後、入力または出力パラメータのデータタイ
プに従って、オペランドがビット列のデータタイプによっては解釈され、暗黙的に変換されます。たとえば、データタイプ DWORD は DINT/UDINT として、LWORD は LINT/ULINT
として解釈されます。これらの変換オプションは、[IEC チェック]が有効な場合も使用可能です。
注記
S7-1500 シリーズの CPU の場合:データタイプ DWORD および LWORD は、データタイプ
REAL または LREAL との変換しかできません。
変換中は、ソース値のビットパターンが変更されることなく、右揃えでターゲットデータ
タイプに転送されます。変換中にエラーが発生しない場合は、許可出力 ENO のシグナル状
態は 1 になります。処理中にエラーが発生すると、許可出力 ENO のシグナル状態は 0 に
なります。

1476

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

<ソースタ

2 進数、整数、I、Q、M、D、

変換する値

Input

浮動小数点数、 L、P、または定イプ>

時刻、日付と時 数
刻、文字列、
BCD16、BCD32<宛先タイ

Outputプ>

2 進数、整数、I、Q、M、D、変換の結果

浮動小数点数、 L、P、または定時刻、日付と時 数
刻、文字列、
BCD16、BCD32

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_INT" := REAL_TO_INT("Tag_REAL");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

データタイプ

値

Tag_REAL

REAL

20.56

Tag_INT

INT

21

変換中にオペランド「Tag_REAL」の値は近似の整数に四捨五入され、オペランド「Tag_INT」内に保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1477

基本命令
3.4 SCL

3.4.7.2

ROUND:数値の四捨五入

説明「数値の四捨五入」命令は、入力 IN の値を近似の整数に四捨五入するのに使用します。この
命令は、入力 IN の値を浮動小数点数として解釈し、整数または浮動小数点数に変換します。入力値が偶数と奇数のちょうど間にある場合、偶数が選択されます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明<Expression>

Input

浮動小数点数 I、Q、M、D、四捨五入される入L、P
ファンクション値

整数、浮動小 I、Q、M、D、
数点数

力値
四捨五入の結果

L、P

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ROUND("Tag_Value");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

1478

値

Tag_Value

1.50000000-1.50000000

Tag_Result2-2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.7.3

CEIL:浮動小数点数から次に大きい整数を生成

説明「浮動小数点数から次に大きい整数を生成」命令を使用し、値を近似の整数に四捨五入します。この命令は入力値を浮動小数点数として解釈し、次に大きい整数に変換します。ファンクション値は、入力値以上になることがあります。
命令のデータタイプを変更するには、以下の構文を使用します。
CEIL_<data type>();パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域<Expression

Input

浮動小数点数 I、Q、M、D、 入力値>_<Data type>

説明

L、P
整数、浮動小 -ファンクション値のデータタ

数点数。既

イプ:

定: DINT

1.「_」を使用して、この命令のデータタイプを明示的に指定することができます。
2. データタイプを明示的に指定しないと、使用されるタ
グまたはタイプコード化された定数によって指定されます。
3. データタイプを明示的に指定せず、定義済みタグまたはタイプコード化された定数も指定しない場合は、既定のデータタイプが使用されます。

ファンクション値

整数、浮動小 I、Q、M、D、 四捨五入された入力値
数点数

L

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1479

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := CEIL("Tag_Value");"Tag_Result2" := CEIL_REAL("Tag_Value");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value

0.5

-0.5

Tag_Result1

10

Tag_Result2

1.0

0.0

命令の結果は、ファンクション値としてオペランド「Tag_Resultxy」内に返されます。

3.4.7.4

FLOOR:浮動小数点数から次に小さい整数を生成

説明「浮動小数点数から次に小さい整数を生成」命令を使用し、浮動小数点数の値を次に小さい
整数に変換します。この命令は入力値を浮動小数点数として解釈し、浮動小数点数の値を次に小さい整数に変換します。ファンクション値は、入力値以下になることがあります。
命令のデータタイプを変更するには、以下の構文を使用します。
FLOOR_<data type>();1480

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域<Expression

Input

浮動小数点数 I、Q、M、D、 入力値>_<Data type>

説明

L、P
整数、浮動小 -ファンクション値のデータ

数点数。既

タイプ:

定: DINT

1.「_」を使用して、この命令のデータタイプを明示的に指定することができます。
2. データタイプを明示的に指定しないと、使用されるタグまたはタイプコー
ド化された定数によって指定されます。
3. データタイプを明示的に指定せず、定義済みタグ
またはタイプコード化された定数も指定しない場
合は、既定のデータタイ
プが使用されます。

ファンクション値

整数、浮動小 I、Q、M、D、 四捨五入された入力値
数点数

L

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := FLOOR("Tag_Value");"Tag_Result2" := FLOOR_REAL("Tag_Value");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1481

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value

0.5

-0.5

Tag_Result1

0-1

Tag_Result2

0.0

-1.0

命令の結果は、ファンクション値としてオペランド「Tag_Resultxy」内に返されます。

3.4.7.5

TRUNC:値の切り捨て

説明「数値を切り捨てる」命令は、四捨五入せずに入力値から整数を生成するのに使用します。
この命令は入力値の整数部のみを選択し、小数を含めずにこの部分をファンクション値として返します。
命令のデータタイプを変更するには、以下の構文を使用します。
TRUNC_<data type>();1482

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明<Expression>

Input

浮動小数点数 I、Q、M、D、L

入力値

整数、浮動小 -ファンクション値のデー

数点数

タタイプ:

既定: DINT

1.「_」を使用して、この命令のデータタイ
プを明示的に指定することができます。

_<Data type>

2. データタイプを明示的に指定しないと、使用されるタグまたはタイプコード化された定数によって指定されます。
3. データタイプを明示的に指定せず、定義
済みタグまたはタイ
プコード化された定数も指定しない場合
は、既定のデータタ
イプが使用されます。
ファンクション値

整数、浮動小 I、Q、M、D、L

入力値の整数コンポーネ

数点数

ント

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := TRUNC("Tag_Value1");"Tag_Result2" := TRUNC("Tag_Value2"+"Tag_Value3");"Tag_Result3" := TRUNC_SINT("Tag_Value4");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1483

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.7.6

オペランド

値

Tag_Value1-1.5

Tag_Result1-1

Tag_Value2

2.1

Tag_Value3

3.2

Tag_Result2

5

Tag_Result3

2

Tag_Value4

2.4

SCALE_X:スケール

説明「スケール」命令を使用し、浮動小数点数を指定した値の範囲にマッピングしてスケーリングします。MIN および MAX パラメータで値の範囲を指定します。スケーリングの結果は整数になります。
命令のデータタイプを変更するには、以下の構文を使用します。
SCALE_X_<data type>();
次の図に、値をどのようにスケーリングできるかを示します。

0$;
俟㨫!
0,1




㆞!

1484

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL「スケール」命令は、以下の等式で機能します。
OUT = [VALUE ∗ (MAX – MIN)] + MIN
注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

MIN

Input

整数、浮動小I、Q、M、値の範囲の下限値

数点数

D、L浮動小数点数

I、Q、M、

スケーリングされる値定

D、L数を入力する場合は、そ

VALUE

Input

れを宣言する必要があります。
MAX

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Input

整数、浮動小I、Q、M、

数点数

D、L値の範囲の上限値

1485

基本命令
3.4 SCLパラメータ

宣言_<Data type>

データタイプ

メモリ領域

説明

整数、浮動小-ファンクション値のデー

数点数

タタイプ:

既定値:INT

1.「_」を使用して、この命令のデータタイプを明示的に指定することができます。
2. データタイプを明示的に指定しないと、使用されるタグまたはタイ
プコード化された定数
によって指定されます。
3. データタイプを明示的に指定せず、定義済み
タグまたはタイプコー
ド化された定数も指定しない場合は、既定のデータタイプが使用されます。

ファンクション値

整数、浮動小-スケーリングの結果

数点数
有効なデータタイプの追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := SCALE_X(MIN := "Tag_Value1",
VALUE := "Tag_Real",
MAX := "Tag_Value2");"Tag_Result2" := SCALE_X_REAL(MIN := "Tag_Value1",
VALUE := "Tag_Real",
MAX := "Tag_Value2");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。

1486

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.7.7

オペランド

値

Tag_Real

0.5

Tag_Value1

10

Tag_Value2

30

Tag_Result1

20

Tag_Result2

20.0

NORM_X:正規化

説明「正規化」命令を使用して、VALUE 入力のタグの値をリニアスケーリングにマッピングして正規化することができます。MIN および MAX パラメータを使用し、スケーリングに適用する値の範囲の制限を定義できます。OUT 出力の結果が計算され、正規化される値のこの値の範囲内の位置に応じて、浮動小数点数として保存されます。正規化される値が入力 MINの値と等しい場合、この命令は「0.0」を結果として返します。正規化される値が入力 MAXの値と等しい場合、この命令は「1.0」を結果として返します。
命令のデータタイプを変更するには、以下の構文を使用します。
NORM_X_<data type>();
次の図に、値が正規化される例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1487

基本命令
3.4 SCL


俟㨫!

0,1

0$;

㆞!

「正規化」命令は、以下の等式で機能します。
OUT = (VALUE – MIN) / (MAX – MIN)
注記
アナログ値の変換についての詳細は、それぞれのマニュアルを参照してください。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

MIN 1)

Input

整数、浮動小I、Q、M、D、 値の範囲の下限値

数点数

L

整数、浮動小I、Q、M、D、 正規化する値

数点数

L

整数、浮動小I、Q、M、D、 値の範囲の上限値

数点数

L

VALUE 1)
MAX 1)

1488

Input
Input

説明

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLパラメータ

宣言_<Data type>

データタイプ

メモリ領域

説明

浮動小数点数-

ファンクション値のデー

既定: REAL

タタイプ:
1.「_」を使用して、この命令のデータタイ
プを明示的に指定することができます。
2. データタイプを明示的に指定しないと、使用されるタグまたはタイプコード化された定数によって指定されます。
3. データタイプを明示的に指定せず、定義
済みタグまたはタイ
プコード化された定数も指定しない場合
は、既定のデータタ
イプが使用されます。

ファンクション値

浮動小数点数

I、Q、M、D、 正規化の結果
L

1)

これらの 3 つのパラメータで定数を使用する場合は、そのいずれかを宣言するのみで済みます。
有効なデータタイプの追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result1" := NORM_X(MIN := "Tag_Value1",
VALUE := "Tag_InputValue",
MAX := "Tag_Value2");"Tag_Result2" := NORM_X_LREAL(MIN := "Tag_Value1",
VALUE := "Tag_InputValue",
MAX := "Tag_Value2");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1489

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

3.4.7.9

オペランド値

Tag_InputValue

20

Tag_Value1

10

Tag_Value2

30

Tag_Result1

0.5

Tag_Result2

0.5

VARIANTVARIANT_TO_DB_ANY: VARIANT の DB_ANY への変換

説明
「VARIANT の DB_ANY への変換」命令を使用して、IN パラメータがアドレス指定するオペ
ランドのデータブロック番号を照会します。インスタンスデータブロックまたは配列デー
タブロックにすることはできません。IN パラメータのオペランドはデータタイプ VARIANTです。つまり、プログラムの作成時に照会する番号のデータブロックのデータタイプが既知である必要があります。データブロック番号はランタイム中に読み取られ、RET_VAL パラ
メータで指定されたオペランドに書き込まれます。

1490

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL要件
要件が満たされる場合は、命令が実行されます。要件が満たされない場合は、データブロ
ック番号として「0」が出力されます。
出力タグ...

原点復帰...

変換オプション

VARIANT...データブロックであり、出力タグをデータブロック

PLC データタイプまたはシス 番号に変換できます。
テムデータタイプ(SDT)のイ
ンスタンスデータブロック。
VARIANT...配列 DB であるデータブロ 出力タグをデータブロック

VARIANT

ック。

番号に変換できます。

基本データタイプのタグ。

データブロックを 1 つの基
本データタイプのみで構成することはできないため、出力タグをデータベース番
号に変換できません。

VARIANT

データブロック内の構造体。 これはデータブロック内の一部にすぎないため、出力タグをデータベース番号に変換できません。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN

VARIANT

L (ブロックイン 読み出されるタグ。

Input

説明

ターフェースの 「DB_ANY_TO_VARIANT(「Input」、」命令のファンクション「InOut」、およ値)。IN パラメータでロび「Temp」セーカルまたはグローバル

クション内で宣 タグを使用できます。
言可能。)
ERR

Outputファンクション値

INT

I、Q、M、D、L エラー情報

DB_ANY

I、Q、M、D、L 結果:DB の番号(RET_VAL)
有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1491

基本命令
3.4 SCLERR パラメータ
次の表に、ERR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

252CIN パラメータの VARIANT データタイプの値は「0」であり、CPU が STOP モ
ードに切り替わります。

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8130

IN パラメータのデータタイプが ANY です。

8131

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8132

データブロックが小さすぎるか、または配列データブロックではありません。

8150

IN パラメータのデータタイプ VARIANT が、値「0」を提供します。このエラーメッセージを受信するには、「ブロック内でのエラー処理」ブロックプロ
パティが有効であることが必要です。有効でない場合、CPU が STOP モードに切り替わり、エラーコード 16#252C を送信します。

8153

IN パラメータの VARIANT データタイプが配列データブロックの開始を指していないか、または VARIANT の長さがデータブロックの長さと一致しません。

8154

データブロックのデータタイプが不正です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"OutputDBNumber" := VARIANT_TO_DB_ANY(IN := #tempVARIANT,ERR := "Tag_Error");

1492

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

IN

Input

tempVARIANT-

OutputDBNumber

11<ファンクション値> Output

tempVARIANT オペランドで指定されたデータブロックの番号が読み取られます。オペラ
ンドのデータタイプが VARIANT であるため、プログラムの作成中にタグのデータタイプを知っている必要はありません。この番号が、データタイプが DB_ANY である「OutputDBNumber」タグに書き込まれます。

DB_ANY_TO_VARIANT: DB_ANY の VARIANT への変換
説明
「DB_ANY の VARIANT への変換」命令を使用して、以下にリストした要件を満たすデータ
ブロックから VARIANT タグを生成します。IN パラメータのオペランドはデータタイプ
DB_ANY です。つまり、プログラムの作成時にデータブロックが既知である必要はありま
せん。データブロックが番号がランタイム中に読み取られます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1493

基本命令
3.4 SCL要件
要件が満たされる場合は、命令が実行されます。要件が満たされない場合またはデータブ
ロックが存在しない場合、RET_VAL パラメータで値 NULL が出力されます。RET_VAL タグ
によるその他すべてのアクセスは失敗します。
データタイプの入力タグ...

原点復帰...

変換オプション

DB_ANY...データブロックであり、変換が可能です。

PLC データタイプまたはシス
テムデータタイプ(SDT)のイ
ンスタンスデータブロック。
DB_ANY...配列 DB であるデータブロ 変換が可能です。
ック。

DB_ANY...ファンクションブロックの 変換が不可能です。
インスタンスデータブロッ
クまたはグローバルデータ
ブロックであるデータブロ
ック。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

IN

DB_ANY

I、Q、M、D、L 番号が読み出されるデー

Input

説明
タブロック。IN パラメー
タでローカルまたはグローバルタグを使用できます。

ERR

Outputファンクション値(RET_VAL)

1)

INT

I、Q、M、D、L エラー情報

VARIANT

L (ブロックイン データブロックの番号
ターフェースの「一時」セクシ
ョンでの宣言はできません。)

1) データがタグに流れるため、RET_VAL パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプの追加情報については、「関連項目」を参照してください。

1494

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLERR パラメータ
次の表に、ERR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

8130

データブロックの番号が「0」です

8131

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8132

データブロックが小さすぎるか、または配列データブロックではありません。

8134

データブロックが書き込み保護されています。

8154

データブロックのデータタイプが不正です。

8155

データブロックのデータタイプが不明です。1)*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。
1)

エラーコード#8155 は、以下の理由で出力されます。

PLC データタイプ(UDT1)が宣言され、データタイプ「UDT1」のデータブロック(DB2)が作成されています。タグテーブルには、データタイプ DB_ANY のタグ(3)が含まれています。
次に、命令「DB_ANY_TO_VARIANT」がプログラムブロック(4)内で呼び出され、IN パラメータでタグ(3)が供給されます。実行中、命令「DB_ANY_TO_VARIANT」がエラーコード
16#8155 を返します。
このエラーコードを解消するには、次の手順を実行します。
1. ファンクション(FC5)を作成し、データタイプ VARIANT のタグを InOut インターフェースで宣言します。
2. 追加ファンクション(FC6)を作成し、そこから FC5 を呼び出します。
3. Temp インターフェースで、FC6 内にデータタイプ「UDT1」のタグ(7)を作成します。
4. FC5 の InOut インターフェースにタグ(7)を供給します。
5. 2 つのブロック(FC5 と FC6)をコンパイルし、CPU にダウンロードします。これらのブロック(FC5 と FC6)をユーザープログラム内で呼び出す必要はありません。

結果:
ユーザープログラムではこのデータタイプが認識されているため、エラーコード 16#8155
は出力されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1495

基本命令
3.4 SCL
この手順は、命令「DB_ANY_TO_VARIANT」の呼び出し後に 2 つの命令「VariantGet」または「VariantPut」のいずれかを呼び出す場合は必要ありません。

例
次の例で、命令がどのように動作するかを示します。
SCL#tempVARIANT := DB_ANY_TO_VARIANT(IN := "InputDB",ERR := "Tag_Error");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインタ オペランド
ーフェースでの
宣言

値

IN

Input

InputDB

11<ファンクション値>

Temp

tempVARIANT-「InputDB」オペランドで指定された任意のデータブロックの番号が、そのデータブロック
をアドレス指定するデータタイプ VARIANT のタグの生成に使用されます。IN パラメータのオペランドのデータタイプは DB_ANY であるため、ランタイム中に使用されるデータブ
ロックはプログラムの作成時に既知である必要はありません(データブロックの名前も番号も不明でかまいません)。RET_VAL パラメータのオペランドのデータタイプは VARIANT であるため、プログラムの作成時にデータブロックのデータタイプが既知である必要はありません。

3.4.7.10

レガシー

SCALE: スケール

説明
「スケール」命令は、IN パラメータの整数を下限値と上限値間の物理単位でスケーリングが可能な浮動小数点数に変換します。LO_LIM および HI_LIM パラメータを使用して、入力値をスケーリングする範囲の下限値と上限値を指定することができます。命令の結果は、OUT
パラメータに出力されます。
「スケール」命令は、以下の等式で機能します。
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM

1496

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値はバイポーラであり、値の範囲は-27648～27648
であると想定します。この場合、定数「K1」の値は-27648.0、定数「K2」の値は+27648.0 です。
• シグナル状態「0」:IN パラメータの値はユニポーラであり、値の範囲は 0～27648 であると想定します。この場合、定数「K1」の値は 0.0、定数「K2」の値は+27648.0 です。
IN パラメータの値が定数値「K2」よりも大きい場合、この命令の結果が上限値(HI_LIM)にセットされ、エラーが出力されます。
IN パラメータの値が定数値「K1」よりも小さい場合、この命令の結果が下限値(LO_LIM)にセットされ、エラーが出力されます。
示された下限値が上限値よりも大きい(LO_LIM > HI_LIM)場合、結果は入力値に反比例してスケーリングされます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

INT

I、Q、M、D、

スケーリングする入力値。

Input

L、P
HI_LIM

Input

REAL

I、Q、M、D、

上限値

L、P
LO_LIM

Input

REAL

I、Q、M、D、

下限値

L、P
BIPOLAR

Input

BOOL

I、Q、M、D、L IN パラメータの値をバイポーラとして解釈する
か、またはユニポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1497

基本命令
3.4 SCL
パラメータ 宣言

データタイプ

メモリ領域

説明

OUT

REAL

I、Q、M、D、

命令の結果

OutputL、P
ファンクション値

WORD(RET_VAL)

I、Q、M、D、

エラー情報

L、P

有効なデータタイプの追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード(W#16#..
.)
0000

エラーは発生していません。

0008

IN パラメータの値が 27 648 を超えているか、または 0 (ユニポーラの場合)
や-27 648 (バイポーラの場合)未満になっています。

一般エラ

関連項目:「GET_ERR_ID ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_ErrorCode" := SCALE(IN := "Tag_InputValue",
HI_LIM := "Tag_HighLimit",
LO_LIM := "Tag_LowLimit",
BIPOLAR := "Tag_Bipolar",
OUT => "Tag_Result");

エラー情報は、ファンクション値としてオペランド「Tag_ErrorCode」内に返されます。

1498

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_InputValue

22

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

OUT

Tag_Result

50.03978588

RET_VAL

Tag_ErrorCode

W#16#0000

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)

UNSCALE: スケール解除

説明「スケール解除」命令を使用して、IN パラメータの浮動小数点数を下限値と上限値間の物
理単位にスケーリング解除し、それらを整数に変換します。LO_LIM および HI_LIM パラメータを使用して、入力値をアンスケーリングする範囲の下限値と上限値を指定することができます。命令の結果は、OUT パラメータに出力されます。
「スケール解除」命令は、以下の等式で機能します。
OUT = [((IN–LO_LIM)/(HI_LIM–LO_LIM)) ∗ (K2–K1)] + K1
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値はバイポーラであり、値の範囲は-27648～27648
であると想定します。この場合、定数「K1」の値は-27648.0、定数「K2」の値は+27648.0 です。
• シグナル状態「0」:IN パラメータの値はユニポーラであり、値の範囲は 0～27648 であると想定します。この場合、定数「K1」の値は 0.0、定数「K2」の値は+27648.0 です。
IN パラメータの値が HI_LIM および LO_LIM で定義された制限値の範囲外である場合、エラーが出力され、近い方の制限値が結果にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1499

基本命令
3.4 SCL示された下限値が上限値よりも大きい場合(LO_LIM > HI_LIM)、結果は入力値に逆の割合でスケーリングされます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

REAL

I、Q、M、D、整数値にスケーリング解

L、P

除する入力値。

I、Q、M、D、

上限値

HI_LIM

Input
Input

REAL

L、P
LO_LIM

Input

REAL

I、Q、M、D、

下限値

L、P
BIPOLAR

Input

BOOL

I、Q、M、D、L IN パラメータの値をバイポーラとして解釈する
か、またはユニポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

OUT

Output

INT

I、Q、M、D、

命令の結果

L、P
ファンクション値(RET_VAL)

WORD

I、Q、M、D、

エラー情報

L、P

有効なデータタイプの追加情報については、「関連項目」を参照してください。

1500

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード(W#16#..
.)
0000

エラーは発生していません。

0008

IN パラメータの値が上限値(HI_LIM)を超えているか、または下限値(LO_LIM)
未満になっています。

一般エラ

関連項目:「GET_ERR_ID ローカルでエラー ID を取得」

ー情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報は、AUTOHOTSPOT を参照してください。

例
次の例で、命令がどのように動作するかを示します。

"Tag_ErrorCode" := UNSCALE(IN := "Tag_InputValue",
HI_LIM := "Tag_HighLimit",
LO_LIM := "Tag_LowLimit",
BIPOLAR := "Tag_Bipolar",
OUT => "Tag_Result");

エラー情報は、ファンクション値としてオペランド「Tag_ErrorCode」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_InputValue

50.03978588

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

OUT

Tag_Result

22

RET_VAL

Tag_ErrorCode

W#16#0000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1501

基本命令
3.4 SCL

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)

3.4.8

プログラム制御演算

3.4.8.1

IF:条件実行

説明「条件実行」命令は、条件に応じてプログラムの流れを分岐させます。条件はブール値(TRUE または FALSE)の式です。論理式または比較式は条件として記述することができます。
命令が実行されると、記述された式が評価されます。式の値が TRUE の場合は条件を満たしていて、値が FALSE の場合は満たしていません。

パラメータ
分岐のタイプに応じて、命令の以下の形式をプログラムできます。
• IF を使用した分岐:
IF <条件> THEN <命令>
END_IF;
条件を満たす場合、THEN の後にプログラムされた命令が実行されます。条件を満たさない
場合、プログラムの実行は END_IF の後の次の命令に継続します。
• IF および ELSE を使用した分岐:
IF <条件> THEN <命令 1>
ELSE <Instructions0>
END_IF;
条件を満たす場合、THEN の後にプログラムされた命令が実行されます。条件を満たさない
場合、ELSE の後にプログラムされた命令が実行されます。その後、プログラムの実行は
END_IF の後の次の命令に継続します。
• IF、ELSIF、および ELSE を使用した分岐:
IF <条件 1> THEN <命令 1>
ELSIF <条件 2> THEN <命令 2>
ELSE <Instructions0>
END_IF;

1502

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL最初の条件(<Condition1>)が満たされると、THEN の後の命令 (<Instructions1>)が実行されます。命令の実行後、プログラムの実行は END_IF の後に継続します。
最初の条件を満たさない場合、次の条件(<Condition2>)がチェックされます。次の条件(<Condition2>)が満たされると、THEN の後の命令 (<Instructions2>)が実行されます。命令の実行後、プログラムの実行は END_IF の後に継続します。
どの条件も満たされない場合、ELSE の後の命令(<Instructions0>)が実行され、END_IF の後にプログラムが実行されます。
IF 命令内には ELSIF および THEN の組み合わせをいくつでもネストすることができます。
ELSE 分岐のプログラミングはオプションです。
IF 命令の構文は以下の部分で構成されます。
パラメータ データタイ メモリ領域
プ<Condition

BOOL

説明

I、Q、M、D、L 評価される式

>
<命令>

-

条件が満たされる場合に実行される命令。
ELSE の後にプログラムされる命令は例外です。ELSE の後の命令は、プログラムループ
内のいずれの条件も満たさない場合に実行されます。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
IF "Tag_1" = 1
THEN "Tag_Value" := 10;
ELSIF "Tag_2" = 1
THEN "Tag_Value" := 20;
ELSIF "Tag_3" = 1
THEN "Tag_Value" := 30;
ELSE "Tag_Value" := 0;
END_IF;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1503

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

3.4.8.2

値

Tag_1

1

0

0

0

Tag_2

0

1

0

0

Tag_3

0

0

1

0

Tag_Value

10

20

30

0

CASE:多岐分岐の作成

説明「多岐分岐の作成」命令は、式の値に応じて複数の命令シーケンスの 1 つを実行します。
式の値は整数またはビット列であることが必要です。CASE 命令実行時、式(タグ)の値が複数の定数値と比較されます。式(タグ)の値が定数値と一致する場合、条件が満たされ、この定数の直後にプログラムされた命令が実行されます。この定数にはさまざまな値が想定されます。
この命令は、次のように宣言できます。
CASE <タグ> OF<定数 1>: <命令 1>;<定数 2>: <命令 2>;<定数 X>: <命令 X>; // X >= 3
ELSE <命令 0>;
END_CASE;

1504

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ データタイ メモリ領域
プ
<タグ>

説明

ビット列、 I、Q、M、D、L プログラムされた定数値と比較される値。
整数<constant> ビット列-

ビット列の場合、以下の定数値が想定され

ローカル定

ます。

数およびグ

• 2 進数(2#10 など)

ローバル定• 8 進数(8#77 など)

数をプログ• 16 進数(16#AD など)

ラムできま• 類型化されていない定数(1000 など)

す。

類型化されている Byte タグの場合は、バイト定数(BYTE#2 など)をプログラムする必要があります。
類型化されている Word タグの場合は、Word 定数(BYTE#2、WORD#2 など)をプログラムできます。
類型化されている DWord タグの場合は、バイト、Word、または DWord 定数(BYTE#2、WORD#2、DWORD#2 など)をプ
ログラムできます。
類型化されている LWord タグの場合は、バイト、Word、DWord、または LWord 定数(BYTE#2、WORD#2、DWORD#2、
LWORD#2 など)をプログラムできます。
整数

整数の場合、以下の定数値が想定されます。
• 整数(たとえば 5)• 整数の範囲(15～20 など)• 列挙した整数および範囲(たとえば 10,
11, 15～20)<Instructio

-

n>

-

式の値が定数値と一致する場合に実行されるすべての命令。ELSE の後にプログラムされる命令は例外です。これらの命令は値が一致しない場合に実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1505

基本命令
3.4 SCL
有効なデータタイプの追加情報については、「関連項目」を参照してください。
式の値が最初の定数値(<Constant1>)と一致する場合、最初の定数の直後にプログラムされた命令(<Instructions1>)が実行されます。プログラムの実行は、END_CASE の後に継続します。
式の値が最初の定数値(<定数 1>)と一致しない場合、この値は次にプログラムされた定数値と比較されます。こうすることで、値が一致するまで CASE 命令が実行されます。式の値がプログラムされた定数値のどれにも一致しない場合、ELSE の後にプログラムされた式(<Instructions0>)が実行されます。ELSE は構文のオプション部分であり、省略可能です。
CASE 命令も命令ブロックを CASE に置き換えることでネスト可能です。END_CASE はCASE 命令の終端を表します。

例
次の例で、命令がどのように動作するかを示します。
SCL
CASE "Tag_Value" OF0 :"Tag_1" := 1;
1,3,5 :
"Tag_2" := 1;
6...10 :"Tag_3" := 1;
16,17,20...25 :"Tag_4" := 1;
ELSE"Tag_5" := 1;
END_CASE;

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド
Tag_Value

値01, 3 , 5

6, 7, 8, 9, 10 16, 17, 20,

2

21, 22, 23,
24, 25

1506

Tag_1

1

-

-

-

-

Tag_2

-

1

-

-

-

Tag_3

-

-

1

-

-

Tag_4

-

-

-

1

-

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
オペランド
Tag_5

値
-

-

-

-

1

1:オペランドがシグナル状態「1」にセットされます。
-:オペランドのシグナル状態は変更されません。

3.4.8.3

FOR:カウントループの実行

説明「カウントループの実行」命令は、ループ変数が指定された値の範囲となるまでプログラ
ムループを繰り返し実行します。
プログラムループもネスト可能です。プログラムループ内では、他のループ変数を使用した
追加のプログラムループをプログラムできます。
現在実行が継続しているプログラムループは、「ループ条件の再チェック」(CONTINUE)命令
で終了できます。「ループを直ちに終了」(EXIT)命令は、ループ実行全体を終了します。このトピックの詳細については、「関連項目」を参照してください。
注記
実行数および実行タグに関する情報
The number of runs cannot be changed while the program is running.
パフォーマンス上の理由から、実行タグは「Temp」セクションのブロックインターフェース内で宣言する必要があります。ループ内で実行タグを変更することはできません。
このため、以下のサンプルプログラムでは構文エラーが発生し、コンパイルできません。
FOR #i := 1 TO 10 DO#i := #i + 1;
END_FOR;FOR ステートメントの制限値
エンドレスに実行しない「安全」FOR ステートメントをプログラムするには、以下のルー
ルおよび制限値を遵守してください。
FOR <実行タグ> := <開始値> TO <終了値> BY <インクリメント> DO <命令>;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1507

基本命令
3.4 SCL
END_FOR;
If ...

実行する処理開始値 < 終了値

終了値 < (PMAX インクリメ 実行タグは、正方向に実行

注記

ント)

します

開始値 > 終了値 AND インク 終了値 > (NMAX インクリメ 実行タグは、負方向に実行
リメント < O

ント)

します

注記
データタイプの使用および移動方向
FOR ステートメント内で符号付き整数と符号なし整数を組み合わせることはできません。
符号なし整数の使用時には、負方向のループはプログラムできません。
制限
さまざまな異なる制限値が以下の可能なデータタイプに適用されます。

1508

データタイプPMAX

NMAX

タイプ SINT の実行タグ

127

-128

タイプ INT の実行タグ

32767-32768タイプ DINT の実行タグ

2147483647-2147483648

タイプ LINT の実行タグ

9223372036854775807-9223372036854775808

タイプ USINT の実行タグ

255-

タイプ UINT の実行タグ

65535

-

タイプ UDINT の実行タグ

4294967295-

タイプ ULINT の実行タグ

18446744073709551615-

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

データタイプ

メモリ領域

説明

S7-1200

S7-1500<Run tag> SINT, INT,

SINT, INT,

I、Q、M、

その値がループ実行で評価され

DINT,

DINT, LINT,

D、Lるオペランド。ループ変数のデUSINT,USINT, UINT,

ータタイプにより、他のパラメ

UINT,

UDINT, ULINT

ータのデータタイプが決定しま

UDINT

す。

<Start

SINT, INT,

SINT, INT,

I、Q、M、

その値がループ変数のループ実

value>DINT,

DINT, LINT,

D、L

行の始点に割り当てられる式。

USINT,USINT, UINT,

UINT, UDINT UDINT, ULINT<End

SINT, INT,

SINT, INT,

I、Q、M、

その値がプログラムループの最

value>DINT,

DINT, LINT,

D、L

終実行を決定する式。ループ変USINT,USINT, UINT,

UINT, UDINT UDINT, ULINT

数の値は毎回ループの前にチェックされます。
• 終了値に未到達:
DO 以下の命令が実行されます。
• 終了値に到達:
FOR ループがもう 1 回だけ実行されます。
• 終了値を超過:
FOR ループを終了します。
命令実行中の終了値の変更は許可されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1509

基本命令
3.4 SCL
パラメー
タ

データタイプ

メモリ領域

説明

S7-1200

S7-1500<Increme

SINT, INT,

SINT, INT,

I、Q、M、

1 回のループごとにその値の分だ

nt>

DINT,

DINT, LINT,

D、L

けループ変数を増加(正のインク

USINT,USINT, UINT,

リメント)または減少(負のインク

UINT, UDINT UDINT, ULINT

リメント)させる式。インクリメ
ントの指定はオプションです。
インクリメントが指定されていない場合は、ループ変数の値は 1回のループごとに 1 増加します。
命令実行中のインクリメントの変更は許可されません。

<命令>

-

-

ループ変数の値が値の範囲内に存在する場合に、各ループにおいて実行される命令。値の範囲
は開始値および終了値で指定します。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
FOR i := 2 TO 8 BY 2
DO "a_array[i] := "Tag_Value"*"b_array[i]";END_FOR;

オペランド「Tag_Value」は、アレイタグ「b_array」の要素(2、4、6、8)で乗算されます。
結果はアレイタグ「a_array」のエレメント(2、4、6、8)内に読み取られます。

下記も参照
CONTINUE:ループ条件の再チェック (ページ 1514)
EXIT:ループを直ちに終了 (ページ 1514)

1510

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.8.4

WHILE:条件が有効ならば実行

説明「条件が有効ならば実行」命令は、実行条件が満たされるまでプログラムループを繰り返し実行します。条件はブール値(TRUE または FALSE)の式です。論理式または比較式は条件として記述することができます。
命令が実行されると、記述された式が評価されます。式の値が TRUE の場合は条件を満たしていて、値が FALSE の場合は満たしていません。
プログラムループもネスト可能です。プログラムループ内では、他のループ変数を使用した
追加のプログラムループをプログラムできます。
現在実行が継続しているプログラムループは、「ループ条件の再チェック」(CONTINUE)命令
で終了できます。「ループを直ちに終了」(EXIT)命令は、ループ実行全体を終了します。このトピックの詳細については、「関連項目」を参照してください。
この命令は、次のように宣言できます。
WHILE <条件> DO <命令>;
END_WHILE;

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ データタイ メモリ領域
プ<Condition

BOOL

説明

I、Q、M、D、L 各ループの前に評価される式。

>
<命令>

-

条件が満たされる場合に実行される命令。
条件が満たされない場合、プログラム実行
は END_WHILE の後に継続します。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1511

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL
WHILE
"Tag_Value1" <> "Tag_Value2"
DO "Tag_Result":= "Tag_Input";
END_WHILE;

オペランド「Tag_Value1」および「Tag_Value2」の値が一致しなければ、オペランド「Tag_Input」の値がオペランド「Tag_Result」に割り当てられます。

下記も参照
EXIT:ループを直ちに終了 (ページ 1514)
CONTINUE:ループ条件の再チェック (ページ 1514)

3.4.8.5

REPEAT:条件が有効でなければ実行

説明「条件が有効でなければ実行」命令は、終了条件が満たされるまでプログラムループを繰り返し実行します。条件はブール値(TRUE または FALSE)の式です。論理式または比較式は条件として記述することができます。
命令が実行されると、記述された式が評価されます。式の値が TRUE の場合は条件を満たしていて、値が FALSE の場合は満たしていません。
この命令は、終了条件を満たしている場合でも 1 回は実行されます。
プログラムループもネスト可能です。プログラムループ内では、他のループ変数を使用した
追加のプログラムループをプログラムできます。
現在実行が継続しているプログラムループは、「ループ条件の再チェック」(CONTINUE)命令
で終了できます。「ループを直ちに終了」(EXIT)命令は、ループ実行全体を終了します。このトピックの詳細については、「関連項目」を参照してください。
この命令は、次のように宣言できます。
REPEAT <命令>;
UNTIL <条件> END_REPEAT;

1512

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ データタイ メモリ領域
プ

説明

<命令>

プログラムされた条件が値「FALSE」の場合-に実行される命令。この命令は、終了条件を満たしている場合でも 1 回は実行されます。
<Condition

BOOL

I、Q、M、D、L 各ループの後に評価される式。式の値が>「FALSE」の場合、プログラムループはもう
1 回実行されます。式の値が「TRUE」の場
合、プログラムループは END_REPEAT の後に継続します。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
REPEAT "Tag_Result":= "Tag_Value";
UNTIL "Tag_Error"
END_REPEAT;

オペランド「Tag_Error」の値がシグナル状態「0」ならば、オペランド「Tag_Value」の値がオペランド「Tag_Result」に割り当てられます。

下記も参照
CONTINUE:ループ条件の再チェック (ページ 1514)
EXIT:ループを直ちに終了 (ページ 1514)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1513

基本命令
3.4 SCL

3.4.8.6

CONTINUE:ループ条件の再チェック

説明「ループ条件の再チェック」命令は、FOR、WHILE、または REPEAT ループの現在のプログ
ラム実行を終了します。
この命令の実行後、プログラムループの実行条件が再度評価されます。この命令は、命令を直接含んだプログラムループに影響を与えます。

例
次の例で、命令がどのように動作するかを示します。
SCL
FOR i
:= 1 TO 15 BY 2 DO
IF (i < 5) THENCONTINUE;
END_IF;"DB10".Test[i] := 1;
END_FOR;

有効なデータタイプの追加情報については、「関連項目」を参照してください。
条件 i < 5 を満たす場合、次の値の割り当て(「"DB10".Test[i] := 1)は実行されません。実行
変数(i)はインクリメント「2」で増加し、現在の値がプログラムされた値の範囲内にあるかチェックされます。実行変数が値の範囲にある場合、IF 条件が再度評価されます。
条件 i < 5 を満たさない場合、次の値の割り当て("DB10".Test[i] := 1)が実行され、新しいループが開始されます。この場合も実行変数はインクリメント「2」で増加し、チェックされます。

3.4.8.7

EXIT:ループを直ちに終了

説明「ループを直ちに終了」命令は、FOR、WHILE、または REPEAT ループの実行を条件に関わらず任意の場所でキャンセルします。プログラムの実行は、ループの終端(END_FOR、
END_WHILE、END_REPEAT)の後に継続します。
この命令は、命令を直接含んだプログラムループに影響を与えます。

1514

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL
FOR i := 15 TO 1 BY -2 DO
IF (i < 5)
THEN EXIT;
END_IF;"DB10".Test[i] := 1;
END_FOR;

有効なデータタイプの追加情報については、「関連項目」を参照してください。
条件 i < 5 を満たす場合、ループの実行はキャンセルされます。プログラムの実行は、
END_FOR の後に継続します。
条件 i < 5 を満たさない場合、次の値の割り当て("DB10".Test[i] :=1)が実行され、新しいループが開始されます。実行タグ(i)はインクリメント「-2」で減少し、現在の値がプログラムされた値の範囲内にあるかチェックされます。(i)実行変数が値の範囲にある場合、IF 条件
が再度評価されます。

3.4.8.8

GOTO:ジャンプ

説明「ジャンプ」命令を使用し、ジャンプラベルでマークされた任意の場所からプログラムの実行を再開します。
ジャンプラベルおよび「ジャンプ」命令は同一ブロック内にあることが必要です。ジャン
プラベルの名前は、ブロック内で 1 回だけ割り当てることができます。各ジャンプラベルを複数のジャンプ命令のターゲットにすることが可能です。
「外部」からのプログラムループ内へのジャンプは許容されませんが、ループからの「外部」
へのジャンプは可能です。
ジャンプラベルに対しては、次の文法上のルールを遵守してください。
• 文字(a～z、A～Z)• 文字と数字の組み合わせ。先に文字、次に数字(a～z、A～Z、0～9)という順序をチェ
ックしてください。
• 特殊文字、または文字と数字の組み合わせは、先に数字、次に文字(0～9、a～z、A～Z)という逆の順序では使用してはなりません。
この命令は、次のように宣言できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1515

基本命令
3.4 SCL
GOTO <ジャンプラベル>;...
<ジャンプラベル>: <命令>

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

データタイプ

説明<Jump label>-

ジャンプ先のジャンプラベル

<命令>

-

ジャンプ後に実行される命令例
次の例で、命令がどのように動作するかを示します。
SCL
CASE "Tag_Value" OF
1 : GOTO MyLABEL1;
2 : GOTO MyLABEL2;
3 : GOTO MyLABEL3;ELSE GOTO MyLABEL4;
END_CASE;
MyLABEL1: "Tag_1" := 1;
MyLABEL2: "Tag_2" := 1;
MyLABEL3: "Tag_3" := 1;
MyLABEL4: "Tag_4" := 1;

オペランド「Tag_Value」の値に応じて、プログラムの実行は対応するジャンプラベルによって特定される場所から再開されます。たとえば、オペランド「Tag_Value」の値が 2 の場合、プログラム実行はジャンプラベル「MyLABEL2」から再開されます。この場合、ジャンプラベル「MyLABEL1」で特定されるプログラム行はスキップされます。

3.4.8.9

RETURN:ブロック終了

説明「ブロック終了」命令は、現在編集されているブロック内でのプログラム実行を終了し、呼び出し元ブロック内で継続します。

1516

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
ブロックの終端ではこの命令を省略可能です。

例
次の例で、命令がどのように動作するかを示します。
SCL
IF "Tag_Error" <>0 THEN RETURN;
END_IF;

オペランド「Tag_Error」のシグナル状態がゼロではない場合、プログラムの実行は現在処理中のブロック内で終了します。

3.4.8.10(*...*): コメントセクションを挿入

説明「コメントセクションを挿入」命令を使用して、コメントセクションを追加できます。括
弧内のテキスト「(*...*)」はコメントとして処理されます。

例
次の例で、命令がどのように動作するかを示します。
SCL(*これはコメントセクションです。*)

3.4.8.11(/*...*/):多言語コメントの挿入

説明
命令「多言語コメントの挿入」を使用して、他のプロジェクト言語に翻訳可能なコメントを挿入します。多言語コメントは、「(/*」で開始し、「*/)」で終了する 1 つのユニットです。
つまり、コメントを部分的にではなく、全体的にしかマークまたは選択できません。多言語
コメントを互いにネストすることはできませんが、行コメントおよびコメントセクション内で使用することは可能です。その一方で、「(/*」と「*/)」の間にある文字はすべて通常のテキストとして解釈されるため、多言語コメント内で行コメントや単純なコメントセクシ
ョンは使用できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1517

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL(/*これは他のプロジェクト言語に翻訳されるコメントです。*/)

3.4.8.12

REGION:プログラムコードの構造化

説明「プログラムコードの構造化」命令を使用して、SCL ブロック内でプログラムコードを異なる領域に分割することで構造化できます。
領域の扱い方に関する追加情報は、AUTOHOTSPOT を参照してください。
この命令は、次のように宣言できます。
REGION <名前><命令>
END_REGION

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

データタイプ

メモリ領域

説明

REGION--

領域開始のキーワー
ド

<名前>

-

-

REGION の名前を指定するテキスト

<命令>

-

-

REGION の前後のプ
ログラムコードEND_REGION--

領域終了のキーワード

1518

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL
REGION Feeder System// フィーダシステムのソースコードを構造化
IF "Variable_1" = 0 THEN
"Variable_2" := 10;
END_IF;
END_REGION

Feeder System 領域に、すべてのプログラムコードが含まれます。

3.4.8.13

ランタイム制御

ENDIS_PW:パスワードの適正化の制限および有効化

説明「パスワード正当性の制限および有効化」命令を使用して、設定されたパスワードを CPU に対して正当化できるかどうかを指定します。このため、正しいパスワードがわかっている
場合でも、正規の接続を防止することができます。
命令呼び出し時に REQ パラメータのシグナル状態が「0」の場合、現在設定されている状態
が、出力パラメータに表示されます。入力パラメータに変更を加えても、変更は出力パラメータに転送されません。
命令が呼び出され、REQ パラメータのシグナル状態が「1」の場合、このシグナル状態は入力パラメータ(F_PWD、FULL_PWD、R_PWD、HMI_PWD)から継承されます。
• シグナル状態が「0」の場合は、パスワードによる認証はできません。
• シグナル状態が「1」の場合は、パスワードを使用できます。
パスワードの有効化または無効化を個別に許可または禁止することができます。たとえば、
フェールセーフパスワードを除く、すべてのパスワードを禁止することができます。したがって、アクセスオプションを小さいユーザーグループに制限することができます。出力パラメータ(F_PWD_ON、FULL_PWD_ON、R_PWD_ON、HMI_PWD_ON)は、REQ パラメー
タに関係なく、常にパスワード使用の現在のステータスを示します。
設定済みでないパスワードの場合、入力のシグナル状態が TRUE でなければならず、出力にシグナル状態 TRUE を返します。フェールセーフパスワードは、F-CPU の場合のみ設定

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1519

基本命令
3.4 SCLできるため、標準 CPU では、常にシグナル状態 TRUE と相互接続する必要があります。命令がエラーを返す場合、この呼び出しには効果がなく、直前のロックがまだ有効です。
無効なパスワードは、以下の条件で再度有効にすることができます。
• CPU が工場出荷時設定にリセットされること。
• S7-1500 CPU のフロントパネルが、パスワードを再度有効にすることができる適切なメニューに移動することができるダイアログをサポートしていること。
• 「パスワードの適正化の制限および有効化」命令を呼び出す場合、目的のパスワードの
入力パラメータのシグナル状態が「1」であること。
• モードセレクタを STOP に設定すること。このスイッチの設定を RUN に戻すと直ちに、
パスワードの適正化に対する制限が再確立されます。
• S7-1200 CPU への空きメモリカード(転送カードまたはプログラムカード)の差し込み。
• S7-1200 CPU では、電源オフから電源オンへの移行によって、保護が無効になります。
この場合、プログラム(たとえば、スタートアップ OB)で、再度、「パスワード正当性の制限および有効化」命令を呼び出す必要があります。
注記「パスワード正当性の制限および有効化」命令は、HMI パスワードが有効にされていない場
合、HMI システムからのアクセスをブロックします。
注記
既存の適正化された接続はアクセス権を保持し、「パスワードの適正化の制限および有効化」命令を使用してそれらを制限することはできません。

S7-1500 CPU の偶発的なロックアウトの防止
CPU のフロントパネルで設定を行うことができ、CPU は最新の設定を保存します。
偶発的なロックアウトを防止するには、S7-1500 CPU でモードセレクタを STOP に設定することによって保護を無効にすることができます。モードセレクタを RUN に設定することによって、「パスワードの適正化の制限および有効化」命令を再度呼び出したり、フロ
ントパネルで追加の操作を実行したりせずに、保護が自動的に再度有効になります。

S7-1200 CPU の偶発的なロックアウトの防止
S7-1200 CPU にはモードセレクタが存在しないため、電源オフから電源オンへの移行時の保護は無効です。このため、ユーザープログラム内の特定のプログラムシーケンスによって偶発的なロックアウトを防止することをお奨めします。

1520

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLこれを行うには、サイクリック割り込み OB、またはメイン OB (OB 1)のタイマのいずれかを使用して、時間制御をプログラミングします。これによって、電源オフから電源オンへの移行と、関連する保護の無効化の後、比較的迅速に、各 OB (たとえば、OB 1 または OB 35)
内で「パスワード正当性の制限および有効化」命令を呼び出すオプションが可能になります。スタートアップ OB (OB 100)でこの命令を呼び出して、この命令が無効で、パスワード
正当化の制限が存在しない時間帯を比較的小さなものに保ちます。この手順は、未許可のアクセスに対する可能な最大限の保護を提供します。
偶発的なロックアウトが発生した場合は、スタートアップ OB での呼び出しをスキップし(たとえば、入力パラメータを照会することによって)、ロックが再び有効になる前に、CPUへ接続確立する時間(たとえば、10 秒～1 分)を設定することができます。
ユーザープログラムコードにタイマが存在しない場合にロックアウトが発生した場合は、空の転送カードまたはプログラムカードを CPU に挿入します。空の転送カードまたはプロ
グラムカードは、CPU の内部ロードメモリを削除します。この後、ユーザープログラムを再び STEP 7 から CPU にダウンロードする必要があります。

S7-1200 CPU でパスワードが失われた場合の手順
パスワード保護された S7-1200 CPU のパスワードを紛失した場合は、空の転送カードまたはプログラムカードを使用して、パスワード保護されたプログラムを削除します。空の転送カードまたはプログラムカードは、CPU の内部ロードメモリを削除します。その後、新しいユーザープログラムを STEP 7 Basic から CPU にロードすることができます。
警告
空の転送カードの挿入
ランタイム中に CPU に転送カードを挿入すると、CPU は STOP モードに切り替わります。
動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損傷の原因になる恐れがあります。
転送カードを取り出すと、転送カードの内容が内部ロードメモリで使用可能になります。
この時点に、カードにプログラムが含まれていないことを確認してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1521

基本命令
3.4 SCL警告
空のプログラムカードの挿入
ランタイム中に CPU にプログラムカードを挿入すると、CPU は STOP モードに移行します。動作状態が不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期しない動作につながり、致命的または重大な人的傷害や物的損傷の原因になる恐れがあります。
プログラムカードが空であることを確認してください。内部ロードメモリが空のプログ
ラムカードにコピーされます。直前に空であったプログラムカードを取り出すと、内部ロードメモリは空になります。
CPU を RUN モードに切り替える前に、転送カードまたはプログラムカードを取り出す必要があります。

動作モードへのパスワードの使用の影響
次の表に、「パスワードの適正化の制限および有効化」命令によるパスワードの使用が動作モードと対応するユーザーの操作に与える影響を示します。
操作

命令によるパスワードの保護

その後の基本状態

無効• STOP への動作モードの切り替え(制限なし)• メモリの手動リセット(PG、切り替え、MC(モーションコントロール)の変更)• 工場出荷時設定へのリセット
電源オン後の基本状態• S7-1200-CPU:
ロックは無効で、プログラム(たとえば、スタートアップ OB)で再びこの命令を呼び出す必要があります。
• S7-1500 CPU:
有効(電源オフの前にロックが有効になった場合).パスワードの不許可のオ
プションは保持型です。

動作モードの移行 RUN/STARTUP/HOLD -> STOP 有効(命令、エラーまたは通信の終了によって)また パスワードはまだ使用できません。
は STOP -> STARTUP/RUN/HOLD

1522

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、REQ パラメータのシグナ

L、または定数ル状態が「0」の場合

Input

は、現在設定されているパスワードのシグナル状
態が照会されます。
F_PWD

Input

BOOL

I、Q、M、D、

フェールセーフなどの読

L、または定数

み取り/書き込みアクセス• F_PWD = "0":パスワー
ドを許可しない• F_PWD = "1":パスワー
ドを許可する

FULL_PWD

Input

BOOL

I、Q、M、D、

読み取り/書き込みアクセ

L、または定数ス• FULL_PWD = "0":パス
ワードを許可しない• FULL_PWD = "1":パス
ワードを許可する

R_PWD

Input

BOOL

I、Q、M、D、

読み取りアクセス

L、または定数• R_PWD = "0":パスワー
ドを許可しない• R_PWD = "1":パスワー
ドを許可する

HMI_PWD

Input

BOOL

I、Q、M、D、HMI アクセス

L、または定数• HMI_PWD = "0":パスワードを許可しない• HMI_PWD = "1":パスワードを許可する

F_PWD_ON Output

BOOL

I、Q、M、D、L フェールセーフなどの読
み取り/書き込みアクセス• F_PWD_ON = "0":パス
ワードを許可しない• F_PWD_ON = "1":パス
ワードを許可する

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1523

基本命令
3.4 SCL
パラメータ 宣言

データタイプ

メモリ領域

FULL_PWD_ Output

BOOL

I、Q、M、D、L 読み取り/書き込みアクセ

ON

説明
スステータス• FULL_PWD_ON = "0":パスワードを許可しない• FULL_PWD_ON = "1":
パスワードを許可する

R_PWD_ON Output

BOOL

I、Q、M、D、L 読み取りアクセスステー
タス• R_PWD_ON = "0":パス
ワードを許可しない• R_PWD_ON = "1":パス
ワードを許可する

HMI_PWD_

Output

BOOL

I、Q、M、D、L HMI アクセスステータス

ON• HMI_PWD_ON = "0":パスワードを許可しない• HMI_PWD_ON = "1":パスワードを許可する

ファンクション値

WORD

I、Q、M、D、L エラー情報(RET_VAL)
有効なデータタイプの追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーは発生していません。

8090「パスワードの適正化の制限および有効化」命令はサポートされていません

80D0

フェールセーフのパスワードが未設定です。標準 CPU では、シグナル状態はTRUE であることが必要です。

1524

80D1

読み取り/書き込みアクセスが未設定です

80D2

読み取りアクセスが未設定です

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
エラーコ
ード*

説明

(W#16#..
.)
80D3

HMI アクセスが未設定です*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ENDIS_PW(REQ := 0,
F_PWD := 0,
FULL_PWD := 0,
R_PWD := 1,
HMI_PWD := 0,
F_PWD_ON => "Status_F_PWD",
FULL_PWD_ON => "Status_FULL_PWD",
R_PWD_ON => "Status_R_PWD",
HMI_PWD_ON => "Status_HMI_PWD");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

データタイプ

値

REQ

BOOL

0

F_PWD

BOOL

0

FULL_PWD

BOOL

0

R_PWD

BOOL

1

HMI_PWD

BOOL

0

Status_F_PWD

BOOL

0

Status_FULL_PWD

BOOL

0

Status_R_PWD

BOOL

1

Status_HMI_PWD

BOOL

0

REQ オペランドのシグナル状態が「1」であるため、この命令が実行されます。R_PWD オ
ペランドのシグナル状態は「1」です。つまり、割り当て済みのパスワードを入力すると、

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1525

基本命令
3.4 SCL
読み取りアクセスが許可されます。R_PWD_ON ステータスオペランドのシグナル状態も「1」です。これにより、R_PWD オペランドが有効であることを知らせます。

PC システム
SHUT_DOWN:ターゲットシステムのシャットダウン

説明
命令「SHUT_DOWN:ターゲットシステムのシャットダウン」を使用して、PC ベースのオートメーションシステムをシャットダウンし、PC ベースのオートメーションシステム上のS7 ソフトウェアコントローラ CPU 150xS または Windows を再起動することができます。
この命令は、[命令]タスクカードの[基本命令|プログラム制御|ランタイム制御]で使用できます。
再起動は、たとえば、以下の場合に推奨されます。
• 産業用 UPS (無停電電源装置)がデジタル入力経由で電源異常を報告する場合• Windows が応答を停止するか、「ブルースクリーン」を表示する場合• ユーザープログラムで呼び出されるエラー OB が多すぎる場合

1526

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
以下の表に、「ターゲットシステムのシャットダウン」命令のパラメータを示します。
パラメー 宣言

データ

タ

タイプ

MODE

入力

UINT

メモリ領域

説明

I、Q、M、D、L、

MODE = 1:CPU 150xS および Windows のシャットダ

または定数

ウン
CPU が STOP に移行し、保持データを保存します。
その後、CPU および Windows がシャットダウンされます。システムを手動で再起動する必要があります。
MODE = 2:CPU 150xS の再起動
CPU が STOP に移行し、保持データを保存します。
その後、CPU がシャットダウンされ、再起動されます。
MODE = 3:Windows の再起動。CPU は RUN のままになります。Windows が再起動されます(TIA ポータ
ル V14 以降では、MODE 3 は下位互換性のためだけに保持されます。MODE 4 または MODE 5 を使用することをお勧めします)。
MODE = 4:Windows が正常にシャットダウンされ、再起動されます。CPU は RUN のままになります。
MODE = 5:Windows の再起動(MODE 3 と同等。例
外:MODE 5 は、Windows がクラッシュした場合にのみ使用してください)。

COMMEN 入力

STRING

I、Q、M、D、LT

モード = 1、3 および 4 では、再起動の理由を指定できます。理由は Windows イベントログに出力されます。

Ret_Val

戻り値

WORD

Q、M、D、L

Ret_Val = 0:障害なし
Ret_Val = 8090:MODE に渡された値はサポートされていません。
Ret_Val = 8091:Windows が Shut_Down 命令の呼び出しに応答しません(モード 3 および 4 に対してのみ
有効)。
Ret_Val = 8092:このエラーが発生した場合は、SIMATIC カスタマーサポートに連絡してください(モード 3 および 4 に対してのみ有効)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1527

基本命令
3.4 SCL

RE_TRIGR: サイクルタイムモニタのリスタート

説明「サイクルタイムモニタのリスタート」命令は、CPU のサイクルモニタ時間のリスタートに使用します。サイクルモニタリングタイムが、CPU の設定で設定した時間で再起動されます。
ハードウェア割り込みや診断エラー割り込みなど、さらに優先度の高いブロックで呼び出された場合、この命令は実行されず、許可出力 ENO がシグナル状態「0」を返します。
この命令は、呼び出しの数に関係なく期間内に完全に実行されます(最大プログラムサイ
クルの 10 倍)。時間が期限切れになると、プログラムサイクルは延長できなくなります。

命令の呼び出し
次の呼び出し条件が適用されます。
• 以下は、S7-1200 の CPU に適用されます。
V2.2 以前のファームウェアバージョンの場合、この命令は優先度 1 のプログラムサイ
クルオーガニゼーションブロック内でしか呼び出せません。これは、すべてのオーガ
ニゼーションブロックの最低の優先度に対応します。この命令が優先度の高いオーガ
ニゼーションブロック内で呼び出される場合は、命令が実行されず、結果(BR ビット、
許可出力 ENO)は常時「0」になります。
V2.2 以降のファームウェアバージョンの場合、この命令はオーガニゼーションブロッ
クの優先度に関係なく呼び出せます。
• 以下は、S7-1500 の CPU に適用されます。
この命令は、すべてのオーガニゼーションブロックで優先度に関係なく呼び出せます。

パラメータ「サイクルタイムモニタのリスタート」命令にはパラメータがなく、エラー情報は提供さ
れません。

1528

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

STP:プログラム終了

説明「プログラムの終了」命令を使用し、CPU を STOP モードに設定してプログラムの実行を終了します。RUN から STOP への変更の影響は CPU の構成によって異なります。

GET_ERROR: ローカルでエラーを取得

説明「ローカルでエラーを取得」命令は、プログラムブロック内のエラーの発生の照会に使用されます。通常、これにはプログラミングエラー、またはアクセスエラーが含まれます。システムがプログラムブロックの実行中にエラーを報告した場合、命令の最後の実行後のブロック実行中に発生した最初のエラーで、<Operand>に詳細情報が出力されます。
エラー情報は、「ErrorStruct」システムデータタイプのオペランド内にのみ保存可能です。
「ErrorStruct」システムデータタイプは、エラー情報が保存されている正確な構造体を指定します。追加の命令を使用することで、この構造体とプログラムが適切な応答をするかを評価できます。プログラムブロックで複数のエラーが発生した場合、発生した最初のエラーが解消された後にのみ、発生した次のエラーに関するエラー情報が命令によって出力されます。
注記<Operand><Operand>は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、このオペランドを「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでこのオペランドを宣言する。
• 命令を呼び出す前に、このオペランドを「0」にリセットする。

注記
ローカルエラーハンドリングの有効化
この命令をプログラムブロックのプログラムコード内に挿入すると、「ローカルでエラー IDを取得」が直ちに有効になり、エラー発生時にシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要は、AUTOHOTSPOT を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1529

基本命令
3.4 SCL
複数のエラー処理オプションを含むローカルエラーハンドリングの詳細な例は、AUTOHOTSPOT を参照してください。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ データタイ メモリ領域
プ

説明<Operand> ErrorStruct

発生したエラーに関する情報

D、L

データタイプ「ErrorStruct」「ErrorStruct」データタイプは、グローバルデータブロック、またはブロックインターフ
ェースに挿入できます。データ構造に毎回異なる名前を割り当てることで、このデータタ
イプを複数回挿入できます。データ構造、および個々の構造体エレメントの名前は変更できません。グローバルデータブロック内に保存したエラー情報は、他のプログラムブロッ
クからも読み出せます。
次の表に、「ErrorStruct」データタイプの構造体を示します。
構造体コンポーネント

データタイプ説明

ERROR_ID

WORD

エラー ID

FLAGS

BYTE

プログラムブロック呼び出し中にエラーが発生したかどうかを表します。
16#01:プログラムブロック呼び出し
中にエラー
16#00:プログラムブロック呼び出し
中にエラーなし

REACTION

BYTE

既定の応答
0:無視(書き込みエラー)
1:代替値「0」で続行(読み取りエラー)
2:命令をスキップ(システムエラー)

CODE_ADDRESS

CREFプログラムブロックのアドレスおよびタイプに関する情報

1530

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
構造体コンポーネント
BLOCK_TYPE

データタイプ

説明

BYTE

エラーが発生したプログラムブロッ
クのタイプ:
1:オーガニゼーションブロック(OB)2:ファンクション(FC)3:ファンクションブロック(FB)

CB_NUMBER

UINT

プログラムブロックの番号

OFFSET

UDINT

内部メモリへの参照

MODE

BYTE

オペランドのアドレスに関する情報

OPERAND_NUMBER

UINT

マシンコマンドのオペランド番号

POINTER_NUMBER_LOCATIUINT(A) 内部ポインタ

SLOT_NUMBER_SCOPE

UINT(B) 内部メモリの記憶領域

DATA_ADDRESS

NREF

オペランドのアドレスに関する情報

BYTE(C) メモリ領域

ON

AREA

L:16#40～16#7F、16#86、16#87、
16#8E、16#8F、16#C0～16#FF
I:16#81
Q:16#82
M:16#83
DB:16#40、16#84、16#85、
16#8A、16#8B
PI:16#01
PQ:16#02
テクノロジーオブジェクト:16#04
DB_NUMBER

UINT(D) データブロックの番号

OFFSET

UDINT(E) オペランドの相対アドレス

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1531

基本命令
3.4 SCL

構造体コンポーネント「ERROR_ID」
次の表に、構造体コンポーネント「ERROR_ID」で出力可能な値を示します。
ID*(16 進数)ID*(10 進)

説明

00

エラーは発生していません。

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

使用されている参照が無効

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が誤っているか、またはファンクションが存在しませ
ん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が誤っているか、またはファンクションブロックが存在しません。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

1532

9632

TP の内部エラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLID*(16 進数)ID*(10 進)

説明

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
LABEL: #TagOut := #Field[#index] * REAL#40.5;
GET_ERROR(#Error);IF #Error.REACTION = 1 THEN
GOTO LABEL;;
END_IF;#Field[#index]タグへのアクセスでエラーが発生しました。#TagOut オペランドは、読み取り/アクセスエラーに関わらずシグナル状態「1」を返し、乗算は値「0.0」によって実行されます。I このエラーシナリオが発生する場合は、エラーを取得するために、乗算の後に、「ローカルでエラーを取得」命令をプログラムすることを推奨します。「ローカルでエラーを取得」命令によって供給されるエラー情報は、比較を使用して評価されます。
#Error.REACTION 構造コンポーネントの値が「1」の場合、読み取り/アクセスエラーが発生しており、プログラム実行はジャンプラベル LABEL で再び開始します。

GET_ERR_ID: ローカルでエラー ID を取得

説明「ローカルでエラー ID を取得」命令は、ブロック内のエラーの発生の照会に使用されます。
これは、通常、アクセスエラーによって生じます。この命令の最後の実行の後に、システ
ムがブロック処理中にブロック実行に関するエラーを報告すると、この命令は発生した最初のエラーのエラー ID を出力します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1533

基本命令
3.4 SCL
エラー ID は WORD データタイプのオペランド内にのみ保存可能です。ブロックで複数のエラーが発生した場合、発生した最初のエラーが修復された後にのみ、命令で発生した次のエラーのエラー ID が出力されます。
注記<Operand>は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、このオペランドを「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでこのオペランドを宣言する。
• 命令を呼び出す前に、このオペランドを「0」にリセットする。

「ローカルでエラー ID を取得」命令の出力は、エラー情報が存在する場合のみ設定されます。これらの条件の 1 つが満たされない場合、残りのプログラム実行は「ローカルでエラー
ID を取得」命令の影響を受けません。
この命令を他のトラブルシューティングオプションと組み合わせて実装する方法の例は、「関連項目」を参照してください。
注記「ローカルでエラー ID を取得」命令は、ブロック内のローカルエラー処理を可能にします。
「ローカルでエラー ID を取得」命令がブロックのプログラムコードに挿入されている場合、エラー発生時に、あらかじめ定義されたすべてのシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要は、AUTOHOTSPOT を参照してください。
複数のエラー処理オプションを含むローカルエラーハンドリングの詳細な例は、AUTOHOTSPOT を参照してください。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ データタイ メモリ領域
プ

説明

ファンクシ WORD

エラー ID

D、L

ョン値

1534

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

エラー ID次の表に、出力として考えられる値を示します。
ID*(16 進数)ID*(10 進)

説明

00

エラーは発生していません。

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

使用されている参照が無効

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が誤っているか、またはファンクションが存在しませ
ん。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が誤っているか、またはファンクションブロックが存在しません。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

9632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

TP の内部エラー

1535

基本命令
3.4 SCLID*(16 進数)ID*(10 進)

説明

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL#TagOut := #Field[#index] * REAL#40.5;#TagID := GET_ERR_ID();
IF #TagID = 16#2522 THEN
MOVE_BLK(IN := #TagArrayIn[0],COUNT := 1,
OUT => #TagArrayOut[1]);END_IF;#Field[#index]タグへのアクセスでエラーが発生しました。#TagOut オペランドは、読み取り/アクセスエラーに関わらずシグナル状態「1」を返し、乗算は値「0.0」によって実行されます。I このエラーシナリオが発生する場合は、エラーを取得するために、乗算の後に、「ローカルでエラー ID を取得」命令をプログラムすることを推奨します。「ローカルでエラー ID を取得」命令によって供給されるエラー ID は、比較を使用して評価されます。
#TagID オペランドが ID 16#2522 を返す場合、読み取り/アクセスエラーが発生しており、#TagArrayIn[0]オペランドの値「100.0」が#TagArrayOut[1]オペランドに書き込まれます。

1536

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

INIT_RD:すべての保持データの初期化

説明「すべての保持データを初期化」命令を使用すると、すべてのデータブロック、ビットメ
モリ、および SIMATIC タイマとカウンタの保持データが同時にリセットされます。この命
令は、実行するとプログラムサイクル持続時間を超過するため、スタートアップ OB 内でのみ実行が可能です。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

BOOL

I、Q、M、D、L 入力「REQ」のシグナル
状態が「1」の場合、すべての保持データがリセットされます。

ファンクション値

INT

I、Q、M、D、L エラー情報:(RET_VAL)

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー
ド*(W#16#...)

説明

0000

エラーは発生していません。

80B5

この命令はスタートアップ OB 内にプログラムされていないため、実行できません。

一般エラー

関連項目:「GET_ERR_ID ローカルでエラー ID を取得」

情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1537

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := INIT_RD("Tag_REQ");

オペランド「Tag_REQ」のシグナル状態が「1」の場合、この命令が実行されます。すべてのデータブロック、ビットメモリ、および SIMATIC タイマの保持データとカウンタがリセットされます。

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)

WAIT:遅延時間の設定
説明「遅延時間の設定」命令は、指定された時間の間プログラム実行を一時停止します。この命
令の WT パラメータに、マイクロ秒で時間を指定します。
遅延時間は、-32768 から最大 32767 マイクロ秒 (μs)が設定可能です。設定可能な最短の遅延時間は CPU に依存し、この命令の実行時間に対応します。
この命令の実行には、さらに優先度の高いイベントが割り込む可能性があり、その場合はエラー情報を返しません。
注記
負の遅延時間パラメータ WT で負の遅延時間を指定すると、許可出力 ENO または RLO、および BR ビットはシグナル状態 FALSE を返します。負の遅延時間は CPU に影響を及ぼしません。居か出
力 ENO にリンクされた以下の命令は、LAD または FBD 内で実行されません。

1538

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

WT

INT

I、Q、M、D、

遅延時間(μs)

Input

L、P、または定数

RUNTIME:プログラムランタイムの測定

説明「プログラムランタイムの測定」命令を使用して、プログラム全体、個々のブロック、またはコマンドシーケンスのランタイムを測定します。
プログラム全体のランタイムを測定する場合は、「プログラムランタイムの測定」命令をOB1 で呼び出します。最初の呼び出しでランタイムの測定が開始され、2 回目の呼び出し後に出力 RET_VAL がプログラムのランタイムを返します。測定されたランタイムには、たとえば上位レベルのイベントや通信による割り込みなど、プログラム実行中に発生する可能性のあるすべての CPU プロセスが含まれます。「プログラムランタイムの測定」命令はCPU の内部カウンタを読み取り、値を IN-OUT パラメータに書き込みます。この命令は、内部カウンタ周波数に基づいて現在のプログラムランタイムを計算し、出力 RET_VAL に書
き込みます。
個々のブロック、または個々のコマンドシーケンスのランタイムを測定する場合、3 つの個別のネットワークが必要です。プログラム内の個々のネットワークで、「プログラムラ
ンタイムの測定」命令を呼び出します。命令のこの最初の呼び出しでランタイム測定の開始位置を設定します。その後、次のネットワーク内で目的のプログラムブロック、または
コマンドシーケンスを呼び出します。他のネットワーク内で、「プログラムランタイムの測定」命令の 2 回目の呼び出しを行い、命令の最初の呼び出しで行ったように同じメモリを
IN/OUT パラメータに割り当てます。3 番目のネットワークの「プログラムランタイムの測定」命令は内部 CPU カウンタを読み取り、内部カウンタ周波数に基づいてプログラムブ
ロック、またはコマンドシーケンスの現在のランタイムを計算し、それを出力 RET_VAL に
書き込みます。
「プログラムランタイムの測定」命令は、内部の高周波数カウンタを使用して時間を計算します。カウンタが超過する場合、この命令は 0.0 以下の値を返します。これは、ファーム

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1539

基本命令
3.4 SCL
ウェアバージョンが V4.2 より古い S7-1200 CPU では、1 分につき 1 回を上限として発生します。これらのランタイム値は無視してください。
注記
コマンドシーケンスのランタイムは、正確に測定することはできません。これは、コマン
ドシーケンス内の命令のシーケンスが、プログラムを最適にコンパイルする過程で変更されるためです。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> InOut

LREAL

I、Q、M、D、L この内容は内部の目的のためだけに使用されます。

ファンクション値

LREAL

I、Q、M、D、L 測定したランタイムを秒単位で返します例
次の例で、命令がプログラムブロックのランタイム計算に基づいてどのように動作するかを
示します。
SCL
"Tag_Result" := RUNTIME("Tag_Memory");"Best_before_date_DB" ();"Tag_Result" := RUNTIME("Tag_Memory");

この命令の最初の呼び出しでランタイムの測定が開始され、TagMemory オペランドでの命
令の 2 回目の呼び出しの参照先としてバッファリングされます。
「Best_before_date」プログラムブロック FB1 が呼び出されます。
プログラムブロック FB1 が処理されると、命令の 2 回目の実行が行われます。命令の 2 回
目の呼び出しにより、プログラムブロックのランタイムが計算され、結果が出力
Tag_Result に書き込まれます。
プログラムの合計サイクルタイムの測定方法に関する詳細な例が、Siemens Industry
Online Support の次のエントリ ID に記載されています。87668055 (https://
support.industry.siemens.com/cs/ww/en/view/87668055)

1540

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.9

ワード論理演算

3.4.9.1

DECO:デコード

説明「デコード」命令は、入力値で指定されたビットを出力値にセットします。
「デコード」命令は、IN パラメータの値を読み取り、読み取った値とビット位置が一致する
出力値にそのビットをセットします。出力値の他のビットはゼロで埋められます。IN パ
ラメータの値が 31 よりも大きい場合は、モジュロ 32 命令が実行されます。
命令のデータタイプを変更するには、以下の構文を使用します。
DECO_<data type>();TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1541

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

IN

Input

UINT

I、Q、M、D、設定される出力値のビット

L、P

位置

-

ファンクション値のデータ_<Data type>

ビット列
既定: DWORD

タイプ:
1.「_」を使用して、この命令のデータタイプを明示的に指定することができます。
2. データタイプを明示的に指定しないと、使用されるタグまたはタイプコー
ド化された定数によって指定されます。
3. データタイプを明示的に指定せず、定義済みタグ
またはタイプコード化された定数も指定しない場
合は、既定のデータタイ
プが使用されます。

ファンクション値

ビット列

I、Q、M、D、

現在の出力値

L、P
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := DECO(IN := "Tag_Value");"Tag_Result2" := DECO_BYTE(IN := "Tag_Value2");

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。
ಯ7DJB9DOXHಯ

ಯ7DJB5HVXOWಯ

1542

 



 

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
この命令はオペランド「Tag_Value」の値から番号「3」を読み取り、3 番目のビットをオ
ペランド「Tag_Result」の値にセットします。

3.4.9.2

ENCO:エンコード

説明「エンコード」命令は、入力値の最小値ビットセットのビット番号を読み取り、これを結果として出力します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

IN

Input

ビット列

I、Q、M、D、

説明
入力値

L、P
ファンクション値

INT

I、Q、M、D、

読み出される入

L、P

力値のビットのビット番号。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ENCO(IN := "Tag_Value");

次の図に、命令が特定のオペランド値を使用してどのように動作するかを示します。


 



ಯ7DJB9DOXHಯ

 

ಯ7DJB5HVXOWಯ

この命令はオペランド「Tag_Value」のビットにセットされた最小値を読み取り、オペラ
ンド「Tag_Result」にビット位置「3」を書き込みます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1543

基本命令
3.4 SCL

3.4.9.3

SEL:選択説明「選択」命令は、スイッチ(G パラメータ)に応じてパラメータ IN0 または IN1 のいずれかを選択し、その内容を結果として出力します。G パラメータのシグナル状態が「0」の場合、
IN0 パラメータの値は移動されます。G パラメータのシグナル状態が「1」の場合、IN1 パ
ラメータの値は移動され、ファンクション値として返されます。
この命令は、すべてのパラメータのタグが同じデータタイプクラスの場合にのみ実行され
ます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

宣言

G

Input

データタイプS7-1200

S7-1500

BOOL

BOOL

メモリ領域 説明
I、Q、M、

スイッチ

D、L
IN0

Input

2 進数、整数、 2 進数、整I、Q、M、

最初の入力値

浮動小数点数、 数、浮動小数 D、L、P
タイマ、文字

点数、タイ

列、TOD、

マ、文字列、

DATE、DT

DATE、TOD、LTOD、DT、
LDT

1544

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメー
タ

宣言

IN1

Input

データタイプS7-1200

メモリ領域 説明S7-1500

2 進数、整数、 2 進数、整I、Q、M、

2 番目の入力値

浮動小数点数、 数、浮動小数 D、L、P
タイマ、文字

点数、タイ

列、TOD、

マ、文字列、

DATE、DT

DATE、TOD、LTOD、DT、
LDT

ファンクション値

2 進数、整数、 2 進数、整I、Q、M、

命令の結果

浮動小数点数、 数、浮動小数 D、L、P
タイマ、文字

点数、タイ

列、TOD、

マ、文字列、

DATE、DT

DATE、TOD、LTOD、DT、
LDT

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := SEL(G := "Tag_Value",
IN0 := "Tag_0",
IN1 := "Tag_1");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_Value

0

1

Tag_0

W#16#0000

W#16#4C

Tag_1

W#16#FFFF

D#16#5E

Tag_Result

W#16#0000

D#16#5E

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1545

基本命令
3.4 SCL

3.4.9.4

MUX:多重化

説明「多重化」命令は、選択された入力パラメータの値をコピーし、それを出力します。K パ
ラメータを使用して、値が移動される入力パラメータの番号を識別できます。番号の割り当ては IN0 から開始され、新しい入力ごとに継続的にインクリメントされます。最大 32 の入力を宣言できます。
入力には、数値データタイプおよび時間データタイプが許可されています。パラメータが割り当てられたすべてのタグは、データタイプが同じであることが必要です。
次のいずれかの要件が満たされる場合、ファンクション値は無効です。
• 命令の実行中にエラーが発生していること。
• K パラメータでの入力が使用可能な入力の範囲外にあり、INELSE 入力が使用されていない場合は、ファンクション値が無効になります。
注記
K パラメータが負の整数である場合
データタイプが有効なタグが入力パラメータで指定されており、K パラメータが負の整数である場合、このタグの値は変更されます。

1546

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言
K

Input

データタイプS7-1200

S7-1500

整数

整数

メモリ領域 説明
I、Q、M、 内容が転送される
D、L、P

パラメータを指定します。
• K = 0 ならば、パラメータ IN0• K = 1 ならば、パラメータ IN1 な
ど

IN0

Input

2 進数、整2 進数、整I、Q、M、 最初の入力値

数、浮動小 数、浮動小数 D、L、P
数点数、タ 点数、文字
イマ、

列、TOD、

STRING、

LTOD、

CHAR、

DATE、タイWCHAR、

マ、DT、LDTTOD、
DATE、DTIN1

Input

2 進数、整2 進数、整I、Q、M、 2 番目の入力値

数、浮動小 数、浮動小数 D、L、P
数点数、タ 点数、文字
イマ、

列、TOD、

STRING、

LTOD、

CHAR、

DATE、タイWCHAR、

マ、DT、LDTTOD、
DATE、DT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1547

基本命令
3.4 SCL
パラメータ 宣言
INn

Input

データタイプS7-1200

S7-1500

2 進数、整2 進数、整メモリ領域 説明
I、Q、M、 オプションの入力数、浮動小 数、浮動小数 D、L、P

値

数点数、タ 点数、文字
イマ、

列、TOD、

STRING、

LTOD、

CHAR、

DATE、タイWCHAR、

マ、DT、LDTTOD、
DATE、DT
INELSEInput

2 進数、整2 進数、整I、Q、M、 K <> n の場合コピ数、浮動小 数、浮動小数 D、L、P

ーする値を指定し数点数、タ 点数、文字

ます。

イマ、

列、TOD、

STRING、

LTOD、

CHAR、

DATE、タイWCHAR、

マ、DT、LDTTOD、
DATE、DTファンクション値

2 進数、整2 進数、整I、Q、M、 命令の結果

数、浮動小 数、浮動小数 D、L、P
数点数、タ 点数、文字
イマ、

列、TOD、

STRING、

LTOD、

CHAR、

DATE、タイWCHAR、

マ、DT、LDTTOD、
DATE、DT
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := MUX(K := "Tag_Number",IN0 := "Tag_1",

1548

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCLSCL
IN1 := "Tag_2",
INELSE := "Tag_3");

命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

3.4.9.5

値

Tag_Number

1

4

Tag_1

DW#16#00000000

DW#16#00000000

Tag_2

DW#16#003E4A7D

DW#16#003E4A7D

Tag_3

DW#16#FFFF0000

DW#16#FFFF0000

Tag_Result

DW#16#003E4A7D

DW#16#FFFF0000

DEMUX:逆多重化

説明「逆多重化」命令は、入力パラメータ IN の値を選択された出力パラメータに転送します。
入力パラメータの選択は、パラメータ値 K とは別に行われます。K パラメータは、入力パラメータ IN の値が転送される出力パラメータの数を指定します。他の出力パラメータは変更されません。番号の割り当ては OUT0 から開始され、新しい出力ごとに継続します。最大
32 の出力パラメータを宣言できます。
K パラメータの値が出力パラメータ数よりも大きい場合、IN 入力の内容が OUTELSE 出力パラメータにコピーされ、シグナル状態「0」が許可出力 ENO に割り当てられます。
次のいずれかの要件が満たされる場合、ファンクション値は無効です。
• K パラメータの値が、使用可能な出力の数を超えていること。
• 命令の実行中にエラーが発生していること。
注記
K パラメータ < 0 または K > 使用可能な出力
K パラメータで使用可能な出力範囲外の値(K < 0 または K > 使用可能な出力)を指定すると、
IN 入力パラメータの値が OUTELSE 出力パラメータに出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1549

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言
K

Input

データタイプS7-1200

S7-1500

整数

整数

メモリ領域

説明

I、Q、M、

入力値(IN)がコピ

D、L、P

ーされる出力を指定します。
• K = 0 ならば、
パラメータ
OUT0
• K = 1 ならば、
パラメータ
OUT1 など

IN

Input

2 進数、整2 進数、整I、Q、M、

数、浮動小

数、浮動小

D、L、P

数点数、タ

数点数、文

イマ、

字列、タイ

STRING、マ、TOD、

CHAR、

LTOD、

WCHAR、

DATE、DT、

TOD、

LDT

入力値

DATE、DT
OUT0

Output2 進数、整2 進数、整I、Q、M、

数、浮動小

数、浮動小

D、L、P

数点数、タ

数点数、文

イマ、

字列、タイ

STRING、マ、TOD、

CHAR、

LTOD、

WCHAR、

DATE、DT、

TOD、

LDT

最初の出力

DATE、DT

1550

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ 宣言
OUT1

Output

データタイプ

メモリ領域

説明
2 番目の出力

S7-1200

S7-1500

2 進数、整2 進数、整I、Q、M、

数、浮動小

数、浮動小

D、L、P

数点数、タ

数点数、文

イマ、

字列、タイ

STRING、マ、TOD、

CHAR、

LTOD、

WCHAR、

DATE、DT、

TOD、

LDT

DATE、DT
OUTn

Output2 進数、整2 進数、整I、Q、M、

数、浮動小

数、浮動小

D、L、P

数点数、タ

数点数、文

イマ、

字列、タイ

STRING、マ、TOD、

CHAR、

LTOD、

WCHAR、

DATE、DT、

TOD、

LDT

オプションの出力

DATE、DT
OUTELSE

Output2 進数、整2 進数、整I、Q、M、

K > n の場合、入

数、浮動小

数、浮動小

D、L、P

力 IN の値のコピ

数点数、タ

数点数、文

イマ、

字列、タイ

STRING、マ、TOD、

CHAR、

LTOD、

WCHAR、

DATE、DT、

TOD、

LDT

ー先となる出力。

DATE、DT
使用可能なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL
DEMUX(K := "Tag_Number",IN := "Tag_Value",

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1551

基本命令
3.4 SCLSCL
OUT0 := "Tag_1",
OUT1 := "Tag_2",
OUTELSE := "Tag_3");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
ネットワーク実行前の「逆多重化」命令の入力値
パラメータ

オペランド

値

K

Tag_Number

2

4

IN

Tag_Value

DW#16#FFFFFFFF

DW#16#003E4A7D

ネットワーク実行後の「逆多重化」命令の出力値
パラメータ

オペランド

OUT0

Tag_1

不変

不変

OUT1

Tag_2

DW#16#FFFFFFFF

不変

OUTELSE

Tag_3

不変

DW#16#003E4A7D

3.4.10

シフトとローテーション

3.4.10.1

SHR:右へシフト

値

説明「右へシフト」命令は、IN パラメータの内容を 1 ビットずつ右へシフトし、ファンクション
値として返します。N パラメータは、指定した値をシフトするビット位置の数の指定に使用されます。
N パラメータの値が「0」の場合、IN パラメータの値が結果として与えられます。
N パラメータの値が使用可能なビット桁数よりも大きい場合でも、IN パラメータの値は使用可能なビット桁数だけ右にシフトされます。
符号なしの値がシフトされると、オペランド領域の左側の解放されたビット位置はゼロで埋められます。指定された値に符号が存在する場合、解放されたビット位置は符号ビットのシグナル状態で埋められます。
次の図に、整数データタイプのオペランドが、どのように 4 ビット位置右へシフトされるかを示します。

1552

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
,1 










1

俟㨫!









































世㓏























ሶቯቬቑኰአእ
ቒ⯀ቲቯቡሼᇭ

屲㟍ሸቯቂኰአእ⇜函ቒᇬኙዊቊ⩚ቤቬቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプS7-1200

IN
N

Input
Input

メモリ領域

説明

S7-1500

ビット列、 ビット列、 I、Q、M、シフトされる

整数

整数

D、L

値

USINT,USINT,

I、Q、M、

値(IN)がシフ

UINT,

UINT,

D、L

トされるビッUDINT

UDINT,

トの数

ULINT
ファンクション値

ビット列、 ビット列、 I、Q、M、
整数

整数

命令の結果

D、L

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := SHR(IN := "Tag_Value",
N := "Tag_Number");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1553

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

0011 1111 1010 1111

N

Tag_Number3

ファンクション値

Tag_Result

0000 0111 1111 0101

オペランド「Tag_Value」の内容が、3 ビット位置右へシフトされます。命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。

3.4.10.2

SHL:左へシフト

説明「左へシフト」命令は、IN パラメータの内容を 1 ビットずつ左へシフトし、ファンクション
値として返します。N パラメータは、指定した値をシフトするビット位置の数の指定に使用されます。
N パラメータの値が「0」の場合、IN パラメータの値が結果として与えられます。
N パラメータの値がビット桁数よりも大きい場合でも、IN パラメータの値は使用可能なビ
ット桁数だけ左にシフトされます。
結果では、シフトによって空いたビット位置がゼロで埋められます。
次の図に、WORD データタイプのオペランドの内容が、どのように 6 ビット位置左へシフ
トされるかを示します。

1554

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
,1 




1

















































ኰአእ⇜函俟㨫!      













屲㟍ሸቯቂኰአእ⇜函ሶቯቬቑኰአእ
ቒ⯀ቲቯቡሼᇭ

ቒᇬኙዊቊ⩚ቤቬቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプS7-1200

IN
N

Input
Input

メモリ領域

説明

S7-1500

ビット列、 ビット列、 I、Q、M、シフトされる

整数

整数

D、L

値

USINT,USINT,

I、Q、M、

値(IN)がシフ

UINT,

UINT,

D、L

トされるビッUDINT

UDINT,

トの数

ULINT
ファンクション値

ビット列、 ビット列、 I、Q、M、
整数

整数

命令の結果

D、L

有効なデータタイプの追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1555

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := SHL(IN := "Tag_Value",
N := "Tag_Number");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

0011 1111 1010 1111

N

Tag_Number4

ファンクション値

Tag_Result

1111 1010 1111 0000

「Tag_Value」オペランドの値は、4 ビット位置左へシフトされます。命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。

3.4.10.3

ROR:右へローテーション

説明「右へローテーション」命令は、IN パラメータの内容を 1 ビットずつ右へローテーション
し、指定されたオペランドに結果を割り当てます。パラメータ N を使用して、指定された値がローテーションされるビット位置の数を指定します。ローテーションによって解放されたビット位置は、押し出されたビット位置で埋められます。
N パラメータの値が「0」の場合、入力 IN の値が結果として与えられます。
使用可能なビット位置の数よりも N パラメータの値が大きい場合でも、IN 入力にあるオ
ペランド値は、指定されたビット位置の数でローテーションされます。
次の図に、DWORD データタイプのオペランドの内容が、どのように 3 ビット位置右へローテーションされるかを示します。

1556

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
,1 

       

1

世㓏

        

俟㨫!

ቇቑኔኲእሺቂኰአእቑ
≰⚆䕅㏚ቒᇬ屲㟍ሸቯቂ⇜函቎㗎⏴ሸቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプS7-1200

IN
N

Input
Input

ファンクション値

メモリ領域

説明

S7-1500

ビット列、 ビット列、 I、Q、M、

ローテーショ

整数

整数

D、L

ンされる値

USINT,USINT,

I、Q、M、

値(IN)がロー

UINT,

UINT,

D、L

テーションさUDINT

UDINT,れるビット位ULINT

置の数

ビット列、 ビット列、 I、Q、M、
整数

整数

命令の結果

D、L

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ROR(IN := "Tag_Value",
N := "Tag_Number");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1557

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

0000 1111 1001 0101

N

Tag_Number5

ファンクション値

Tag_Result

1010 1000 0111 1100

オペランド「Tag_Value」の内容は、5 ビット位置右へローテーションされます。命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。

3.4.10.4

ROL:左へローテーション

説明「左へローテーション」命令は、IN パラメータの内容を 1 ビットずつ左へローテーション
し、ファンクション値として返します。パラメータ N を使用して、指定された値がローテーションされるビット位置の数を指定します。ローテーションによって解放されたビット
位置は、押し出されたビット位置で埋められます。
N パラメータの値が「0」の場合、入力 IN の値が結果として与えられます。
使用可能なビット位置の数よりも N パラメータの値が大きい場合でも、IN 入力にあるオ
ペランド値は、指定されたビット位置の数でローテーションされます。
次の図に、DWORD データタイプのオペランドの内容が、どのように 3 ビット位置左へローテーションされるかを示します。

1558

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
,1 

       

1ኰአእ⇜函        

俟㨫!

䲊╤ሺቂ
ኰአእቑ≰⚆䕅㏚ቒᇬ屲㟍ሸቯቂኰአእ⇜函቎抌┯ሸቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプS7-1200

IN
N

Input
Input

ファンクション値

メモリ領域

説明

S7-1500

ビット列、 ビット列、 I、Q、M、

ローテーショ

整数

整数

D、L

ンされる値

USINT,USINT,

I、Q、M、

値(IN)がロー

UINT,

UINT,

D、L

テーションさUDINT

UDINT,れるビット位ULINT

置の数

ビット列、 ビット列、 I、Q、M、
整数

整数

命令の結果

D、L

有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := ROL(IN := "Tag_Value",
N := "Tag_Number");

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1559

基本命令
3.4 SCL
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

Tag_Value

1010 1000 1111 0110

N

Tag_Number5

ファンクション値

Tag_Result

0001 1110 1101 0101

オペランド「Tag_Value」の内容が、5 ビット位置左へローテーションされます。命令の結果は、ファンクション値としてオペランド「Tag_Result」内に返されます。

3.4.11レガシー

3.4.11.1

DRUM:PLC 実行

説明「PLC の実装」命令を使用して、対応するステップの OUT_VAL パラメータのプログラム済
みの値をプログラム済み出力ビット(OUT1～OUT16)および出力ワード(OUT_WORD)に割り当てることができます。そのため、この命令が特定のステップに留まっている間は、このステップは S_MASK パラメータでプログラムされた許可マスクの条件を満たす必要があります。このステップのイベントが真(TRUE)になっていて現在のステップのプログラムされた
時間が経過した場合、または JOG パラメータの値が「0」から「1」に切り替わった場合、この命令は次のステップに進みます。RESET パラメータのシグナル状態が「1」に切り替わると、この命令はリセットされます。これによって、プリセットされたステップ(DSP)と現在のステップが等しくなります。
このステップで消費された時間の量は、プリセットタイムベース(DTBP)と各ステップのプ
リセットカウンタ値(S_PRESET)の積によって計算されます。新しいステップの開始時に、この計算値が DCC パラメータにロードされます。このパラメータには、現在のステップの残り時間が含まれています。たとえば、DTBP パラメータの値が「2」で、最初のステップのプリセット値が「100」(100 ms)の場合、DCC パラメータの値は「200」(200 ms)になります。
ステップは、タイマ値、イベント、またはその両方を使用してプログラム可能です。イベ
ントビットおよびタイマ値「0」を持つステップは、イベントビットのシグナル状態が「1」になると直ちに次のステップに進みます。タイマ値のみによってプログラムされたステッ
プは時間を直ちに開始します。「0」よりも大きなイベントビットおよび時間値を使用してプログラムされたステップは、イベントビットのシグナル状態が「1」になると時間を開始します。イベントビットは、シグナル状態「1」で初期化されます。

1560

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
プログラムされた最後のステップ(LST_STEP)の実行中にこのステップに割り当てられた時間が経過した場合、Q パラメータのシグナル状態は「1」にセットされ、それ以外の場合は「0」にセットされます。Q パラメータがセットされると、この命令はリセットされるまで
このステップに留まります。
設定可能なマスク(S_MASK)で、出力ワード(OUT_WORD)の個々のビットを選択し、出力値(OUT_VAL)によって出力ビット(OUT1～OUT16)をセットまたはリセットできます。設定可
能なマスクのビットのシグナル状態が「1」の場合、OUT_VAL 値は対応するビットをセッ
トまたはリセットします。設定可能なマスクビットのシグナル状態が「0」の場合、対応するビットは変更されません。16 のステップすべてに設定可能なマスクのすべてのビットは、シグナル状態「1」で初期化されます。
OUT1 パラメータの出力ビットは、出力ワード(OUT_WORD)の最下位ビットに対応します。
OUT16 パラメータの出力ビットは、出力ワード(OUT_WORD)の最上位ビットに対応します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

RESET

BOOL

I、Q、M、D、L シグナル状態「1」は、

Input

説明
リセット条件を示します。

JOG

Input

BOOL

I、Q、M、D、L シグナル状態が「0」から「1」に切り替わると、命令が次のステップに進みます。

DRUM_EN

Input

BOOL

I、Q、M、D、L シグナル状態が「1」になると、PLC はイベント
および時間条件に基づいて進むことができます。

LST_STEP

Input

BYTE

I、Q、M、D、L 最大ステップ番号(例:LST_STEP = 16#08; 最大で 8 ステップが可能です。)

EVENT(i),

Input

BOOL

1 ≤ i ≤ 16

I、Q、M、D、L イベントビット(i);初期シグナル状態は「1」。

OUT(j),

Output

BOOL

I、Q、M、D、L 出力ビット(j)1 ≤ j ≤ 16

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1561

基本命令
3.4 SCL
パラメータ 宣言

データタイプ

メモリ領域

Q

BOOL

I、Q、M、D、L シグナル状態「1」は、Output説明
最後のステップに割り当てられた時間が経過したことを示します。

OUT_WORD Output
ERR_CODE

Output

WORD
WORD

I、Q、M、D、PLC が出力値を書き込む

L、P

ワードアドレス。

I、Q、M、D、

エラー情報

L、P
JOG_HIS

Static

BOOL

I、Q、M、D、L JOG パラメータの履歴ビットEODStatic

BOOL

I、Q、M、D、L シグナル状態「1」は、最後のステップに割り当てられた時間が経過したことを示します。

DSP
DSC

StaticStatic

BYTE
BYTE

I、Q、M、D、PLC のプリセットされた

L、P

ステップ

I、Q、M、D、PLC の現在のステップ

L、P
DCC

Static

DWORD

I、Q、M、D、PLC のカウンタ現在値

L、P
DTBP

Static

WORD

I、Q、M、D、PLC のプリセットタイム

L、P

ベース

PrevTime

StaticTIME

S_PRESET

StaticARRAY[1..16] of I、Q、M、D、L 1 クロックパルス = 1 ミ
WORD

I、Q、M、D、L 前のシステム時間
リ秒の場合の各ステップ[1～16]のプリセットされたカウンタ値。

OUT_VAL

StaticARRAY[1..16,
0..15] of BOOL

S_MASK

StaticARRAY[1..16,
0..15] of BOOL

I、Q、M、D、L 各ステップの出力値[1～16, 0～15]。
I、Q、M、D、L 各ステップの設定可能な
マスク[1～16, 0～15]。
初期シグナル状態は「1」。

有効なデータタイプの追加情報については、「関連項目」を参照してください。

1562

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
ERR_COD 説明
E*
W#16#00 エラーは発生していません。
00
W#16#00 LST_STEP パラメータの値が 1 未満であるか、または 16 を超えています。
0B
W#16#00 DSC パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を0C

超えています。

W#16#00 DSP パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を超0Dえています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

例
以下の例では、命令がステップ 1 からステップ 2 に進行します。出力ビット(OUT1～
OUT16)および出力ワード(OUT_WORD)は、手順 2 で設定されたマスクおよび OUT_VAL パ
ラメータの値に従って設定されます。
注記
静的なパラメータをデータブロックで初期化できます。

SCL"DRUM_DB"(RESET := "Tag_Reset"
JOG := "Tag_Input_Jog"
DRUM_EN := "Tag_Input_DrumEN"
LST_STEP := "Tag_Number_LastStep"
EVENT1 := "MyTag_Event_1"
EVENT2 := "MyTag_Event_2"
EVENT3 := "MyTag_Event_3"
EVENT4 := "MyTag_Event_4"
EVENT5 := "MyTag_Event_5"
EVENT6 := "MyTag_Event_6"
EVENT7 := "MyTag_Event_7"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1563

基本命令
3.4 SCLSCLEVENT8 := "MyTag_Event_8"
EVENT9 := "MyTag_Event_9"
EVENT10 := "MyTag_Event_10"
EVENT11 := "MyTag_Event_11"
EVENT12 := "MyTag_Event_12"
EVENT13 := "MyTag_Event_13"
EVENT14 := "MyTag_Event_14"
EVENT15 := "MyTag_Event_15"
EVENT16 := "MyTag_Event_16"
OUT1 => "MyTag_Output_1"
OUT2 => "MyTag_Output_2"
OUT3 => "MyTag_Output_3"
OUT4 => "MyTag_Output_4"
OUT5 => "MyTag_Output_5"
OUT6 => "MyTag_Output_6"
OUT7 => "MyTag_Output_7"
OUT8 => "MyTag_Output_8"
OUT9 => "MyTag_Output_9"
OUT10 => "MyTag_Output_10"
OUT11 => "MyTag_Output_11"
OUT12 => "MyTag_Output_12"
OUT13 => "MyTag_Output_13"
OUT14 => "MyTag_Output_14"
OUT15 => "MyTag_Output_15"
OUT16 => "MyTag_Output_16"
Q => "Tag_Output_Q"
OUT_WORD => "Tag_OutputWord"
ERR_CODE => "Tag_ErrorCode");

次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータの初期化には以下の値が使用されます。

1564

パラメータ

オペランド

アドレス

値

RESET

Tag_Reset

M0.0

FALSE

JOG

Tag_Input_JOG

M0.1

FALSE

DRUM_EN

Tag_Input_DrumEN

M0.2

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ

オペランド

アドレス

値

LST_STEP

Tag_Number_LastSt

MB1

B#16#08

ep
EVENT2MyTag_Event_2

M20.0

FALSE

EVENT4MyTag_Event_4

M20.1

FALSE

EVENT6MyTag_Event_6

M20.2

FALSE

EVENT8MyTag_Event_8

M20.3

FALSE

EVENT10MyTag_Event_10

M20.4

FALSE

EVENT12MyTag_Event_12

M20.5

FALSE

EVENT14MyTag_Event_14

M20.6

FALSE

EVENT16MyTag_Event_16

M20.7

FALSE

以下の値が命令の「DRUM_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

DSP

DBB13

W#16#0001

DSC

DBB14

W#16#0001

DCC

DBD16

DW#16#0000000A

DTBP

DBW20

W#16#0001

S_PRESET[1]DBW26

W#16#0064

S_PRESET[2]DBW28

W#16#00C8

OUT_VAL[1,0]DBX58.0

TRUE

OUT_VAL[1,1]

DBX58.1

TRUE

OUT_VAL[1,2]

DBX58.2

TRUE

OUT_VAL[1,3]

DBX58.3

TRUE

OUT_VAL[1,4]DBX58.4

TRUE

OUT_VAL[1,5]DBX58.5

TRUE

OUT_VAL[1,6]

DBX58.6

TRUE

OUT_VAL[1,7]

DBX58.7

TRUE

OUT_VAL[1,8]DBX59.0

TRUE

OUT_VAL[1,9]DBX59.1

TRUE

OUT_VAL[1,10]

DBX59.2

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1565

基本命令
3.4 SCL

1566

パラメータ

アドレス

値

OUT_VAL[1,11]

DBX59.3

TRUE

OUT_VAL[1,12]

DBX59.4

TRUE

OUT_VAL[1,13]

DBX59.5

TRUE

OUT_VAL[1,14]

DBX59.6

TRUE

OUT_VAL[1,15]

DBX59.7

TRUE

OUT_VAL[2,0]DBX60.0

FALSE

OUT_VAL[2,1]

DBX60.1

FALSE

OUT_VAL[2,2]

DBX60.2

FALSE

OUT_VAL[2,3]

DBX60.3

FALSE

OUT_VAL[2,4]

DBX60.4

FALSE

OUT_VAL[2,5]

DBX60.5

FALSE

OUT_VAL[2,6]

DBX60.6

FALSE

OUT_VAL[2,7]

DBX60.7

FALSE

OUT_VAL[2,8]DBX61.0

FALSE

OUT_VAL[2,9]DBX61.1

FALSE

OUT_VAL[2,10]

DBX61.2

FALSE

OUT_VAL[2,11]

DBX61.3

FALSE

OUT_VAL[2,12]

DBX61.4

FALSE

OUT_VAL[2,13]

DBX61.5

FALSE

OUT_VAL[2,14]

DBX61.6

FALSE

OUT_VAL[2,15]

DBX61.7

FALSE

S_MASK[2,0]DBX92.0

FALSE

S_MASK[2,1]

DBX92.1

TRUE

S_MASK[2,2]

DBX92.2

TRUE

S_MASK[2,3]

DBX92.3

TRUE

S_MASK[2,4]DBX92.4

TRUE

S_MASK[2,5]DBX92.5

FALSE

S_MASK[2,6]

DBX92.6

TRUE

S_MASK[2,7]

DBX92.7

TRUE

S_MASK[2,8]DBX93.0

FALSE

S_MASK[2,9]DBX93.1

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメータ

アドレス

値

S_MASK[2,10]

DBX93.2

TRUE

S_MASK[2,11]

DBX93.3

TRUE

S_MASK[2,12]

DBX93.4

TRUE

S_MASK[2,13]

DBX93.5

TRUE

S_MASK[2,14]

DBX93.6

FALSE

S_MASK[2,15]

DBX93.7

TRUE

出力パラメータは、命令の実行前に以下の値にセットされます。
パラメータ

オペランド

アドレス

値

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#FFFFOUT1MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

TRUE

OUT3

MyTag_Output_3

M4.2

TRUE

OUT4

MyTag_Output_4

M4.3

TRUE

OUT5

MyTag_Output_5

M4.4

TRUE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

TRUE

OUT8

MyTag_Output_8

M4.7

TRUE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

TRUE

OUT12

MyTag_Output_12

M5.3

TRUE

OUT13

MyTag_Output_13

M5.4

TRUE

OUT14

MyTag_Output_14

M5.5

TRUE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1567

基本命令
3.4 SCL処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

アドレス

値

OUT1

MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

FALSE

OUT3

MyTag_Output_3

M4.2

FALSE

OUT4

MyTag_Output_4

M4.3

FALSE

OUT5

MyTag_Output_5

M4.4

FALSE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

FALSE

OUT8

MyTag_Output_8

M4.7

FALSE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

FALSE

OUT12

MyTag_Output_12

M5.3

FALSE

OUT13

MyTag_Output_13

M5.4

FALSE

OUT14

MyTag_Output_14

M5.5

FALSE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

FALSE

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#4321

ERR_CODE

Tag_ErrorCode

MW10

W#16#0000

命令の実行後、以下の値が命令のインスタンスデータブロック「DRUM_DB」で変更され
ます。

1568

パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

DSC

DBB14

W#16#0002

DCC

DBD16

DW#16#000000C8

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

3.4.11.2

DCAT:ディスクリート制御タイマアラーム

説明「ディスクリート制御タイマアラーム」を使用して、CMD パラメータが開くまたは閉じる
ためのコマンドを発行した時点からの時間をカウントします。時間は、指定した時間内でプリセット時間(PT)を超えるか、またはデバイスの開閉に関する情報を受信するまで蓄積します(O_FB または C_FB)。デバイスの開閉に関する情報を受信する前にプリセット済み
時間が経過すると、対応するアラームが有効になります。プリセット済み時間の前にコマ
ンド入力のシグナル状態が切り替わると、この時間経過が再開します。
「ディスクリート制御タイマアラーム」命令は入力条件に対して以下のように応答します。
• CMD パラメータのシグナル状態が「0」から「1」に切り替わると、パラメータ Q、
CMD_HIS、ET (ET が PT 未満の場合のみ)、OA および CA は以下のように影響を受けます。
– Q および CMD_HIS パラメータが「1」にセットされます。
– ET、OA、および CA パラメータが「0」にリセットされます。
• パラメータ CMD のシグナル状態が「1」から「0」に切り替わると、パラメータ Q、ET
(ET < PT の場合のみ)、OA、CA および CMD_HIS が「0」にリセットされます。
• CMD および CMD_HIS パラメータのシグナル状態が「1」で、O_FB パラメータが「0」にセットされると、命令が最後に実行されてからの時間差(ms)が ET パラメータの値に加算されます。ET パラメータの値が PT パラメータの値を超えると、OA パラメータのシグナル状態が「1」にセットされます。ET パラメータの値が PT パラメータの値を超えなければ、OA パラメータのシグナル状態が「0」にリセットされます。CMD_HIS パ
ラメータの値が、CMD パラメータの値にリセットされます。
• CMD、CMD_HIS および O_FB パラメータのシグナル状態が「1」にセットされていて
C_FB パラメータの値が「0」の場合、OA パラメータがシグナル状態「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。O_FB パラメー
タがシグナル状態「0」に切り替わると、命令の次回実行時にアラームがセットされます。CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS および C_FB パラメータの値が「0」の場合、命令が最後に実行されてからの時間差(ms)が ET パラメータの値に加算されます。ET パラメータの値が PT パラ
メータの値を超えると、CA パラメータのシグナル状態が「1」にセットされます。PT
パラメータの値を超えなければ、CA パラメータのシグナル状態は「0」です。CMD_HIS
パラメータの値が、CMD パラメータの値にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1569

基本命令
3.4 SCL• CMD、CMD_HIS および O_FB パラメータのシグナル状態が「0」のときに C_FB パラメ
ータが「1」にセットされると、CA パラメータが「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。パラメータ C_FB がシグナル状態「0」に切り替わると、命令の次回実行時にアラームがセットされます。CMD_HIS パラ
メータの値が、CMD パラメータの値にセットされます。
• O_FB および C_FB パラメータのシグナル状態が同時に「1」の場合、両方のアラーム出力のシグナル状態が「1」にセットされます。
「ディスクリート制御タイマアラーム」命令にエラー情報がありません。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

CMD

Input

BOOL

I、Q、M、D、 シグナル状態「0」は、「閉じL

説明る」コマンドを示します。
シグナル状態「1」は、「開く」コマンドを示します。

O_FB

Input

BOOL

I、Q、M、D、 開くときにフィードバック入
L

C_FB

Input

BOOL

I、Q、M、D、 閉じるときにフィードバック
L

Q

OutputBOOL

Output

BOOL

入力

I、Q、M、D、 CMD パラメータのステータ
L

OA

力

スを示しますI、Q、M、D、 開くときにアラーム出力
L

CA

Output

BOOL

I、Q、M、D、 閉じるときにアラーム出力
L

ET

Static

DINT

D、L

現在の経過時間、1 カウント
=1 ms。

PT

StaticDINT

D、L

プリセットタイマ値(1 クロックパルス = 1 ms)

1570

PREV_TIME

Static

DWORD

D、L

前のシステム時間

CMD_HIS

StaticBOOL

D、L

CMD の履歴ビット

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
静的パラメータは、プログラムで命令を呼び出しているときには表示されません。これら
は、命令のインスタンスに保存されます。

例
次の例では、CMD パラメータが「0」から「1」に切り替わります。命令の実行後、パラメータ Q が「1」にセットされ、2 つのアラーム出力 OA および CA のシグナル状態は「0」になります。インスタンスデータブロックの CMD_HIS パラメータがシグナル状態「1」にセットされ、ET パラメータが「0」にリセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

SCL"DCAT_DB"(CMD := "Tag_Input_CMD",O_FB := "Tag_Input_O_FB",
C_FB := "Tag_Input_C_FB",
Q => "Tag_Output_Q",
OA => "Tag_Output_OA",
CA => "Tag_Output_CA");

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

CMD

Tag_Input_CMD

TRUE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

Q

Tag_Output_Q

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1571

基本命令
3.4 SCL
以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#12

PT

DBD8

L#222

CMD_HIS

DBX16.0

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

Q

Tag_Output_Q

TRUE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

以下の値が命令のインスタンスデータブロック「DCAT_DB」に保存されます。

3.4.11.3

パラメータ

アドレス

値

ET

DBD4

L#0

CMD_HIS

DBX16.0

TRUE

MCAT:モータ制御タイマアラーム

説明「モータ制御タイマアラーム」命令を使用して、コマンド入力(開または閉)のいずれかのスイッチがオンにされる時点から、時間を累積します。時間はプリセット済み時間が経過するまで、または関連のフィードバック入力が、デバイスが指定された時間内に要求された操作を実行したことを示す場合に蓄積されます。フィードバックが受信される前にプリセ
ット済み時間が経過すると、対応するアラームがトリガされます。

1572

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

O_CMD

Input

BOOL

I、Q、M、D、L [開]コマンド入力

C_CMD

Input

BOOL

I、Q、M、D、L [閉]コマンド入力

S_CMD

Input

BOOL

I、Q、M、D、L [停止]コマンド入力

O_FB

Input

BOOL

I、Q、M、D、L 開くときにフィードバッ
ク入力

C_FB

Input

BOOL

I、Q、M、D、L 閉じるときにフィードバ
ック入力

OO

Output

BOOL

I、Q、M、D、L [開]出力CO

Output

BOOL

I、Q、M、D、L [閉]出力

OA

Output

BOOL

I、Q、M、D、L 開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L 閉じるときにアラーム出力

Q

Output

BOOL

I、Q、M、D、L シグナル状態「0」は、エラー条件を示します。

ET

StaticDINT

D、L

1 カウント= 1 ms のときの現在の経過時間

PT

StaticDINT

D、L

プリセットタイマ値(1 ク
ロックパルス = 1 ms)

PREV_TIME

Static

DWORD

D、L

前のシステム時間

O_HIS

StaticBOOLD、L[開]履歴ビット

C_HIS

StaticBOOLD、L[閉]履歴ビット

静的パラメータは、プログラムで命令を呼び出しているときには表示されません。これら
は、命令のインスタンスに保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1573

基本命令
3.4 SCL「モータ制御タイマアラーム」命令の実行
次の表に、さまざまな入力条件に対する「モータ制御タイマアラーム」命令の応答を示します。
入力パラメータETX

出力パラメータ

O_H C_H O_C C_C S_C

O_F C_F

IS

IS

MD

MD

MD

B

B

1

1

X

X

X

X

X

OO
0

CO
0

OA
1

CA
1

ET
PT

O_H C_H Q

ステータ

IS

IS

ス

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

X

1

1

0

0

1

1

PT

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

1

X

X

0

0

0

0

X

0

0

1

Stop (停止)

X

X

X

1

1

X

X

X

0

0

0

0

X

0

0

1

Stop (停止)

X

0

X

1

0

0

X

X

1

0

0

0

0

1

0

1

Start
opening
(開き始め
る)

<PT

1

0

X

0

0

0

X

1

0

0

0

INC

1

0

1

Open (開
く)

X

1

0

X

0

0

1

0

0

0

0

0

PT

1

0

1

Opened
(開いた)

>=P 1

0

X

0

0

0

X

0

0

1

0

PT

1

0

0

T

Opening
alarm (ア
ラームを
開いてい
る)

X

X

0

0

1

0

X

X

0

1

0

0

0

0

1

1

Start
closing (閉
じ始める)

<PT

0

1

0

X

0

X

0

0

1

0

0

INC

0

1

1

Close (閉
じる)

X

0

1

0

X

0

0

1

0

0

0

0

PT

0

1

1

Closed (閉
じた)

1574

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
入力パラメータ>=P 0

1

出力パラメータ
0

X

0

X

0

0

0

0

1

PT

0

1

0

T

Closing
alarm (ア
ラームを
閉じてい
る)

X

0

0

0

0

0

X

X

0

0

0

0

X

0

0

1

Stopped
(停止)

凡例:
INC

FB から ET への最後に処理されてからの時間差(ms)を追加します。

PT

PT は ET と同じ値にセットされます。

X

使用不可

<PT

ET < PT>=PTET >= PT

入力パラメータ O_HIS および C_HIS の信号状態が両方とも「1」の場合、これらのパラメータの信号状態が直ちに「0」にセットされます。この場合、上記の表の最後の行(X)が有効になります。入力パラメータ
O_HIS および C_HIS のシグナル状態が「1」であるかどうかをチェックすることができないため、この場合の出力パラメータは以下のようにセットされます。
OO = FALSE
CO = FALSEOA = FALSE
CA = FALSEET = PT
Q = TRUE例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1575

基本命令
3.4 SCLSCL"MCAT_DB"(O_CMD := "Tag_Iput_O_CMD",
C_CMD := "Tag_Input_C_CMD",
S_CMD := "Tag_Input_S_CMD",O_FB := "Tag_Input_O_FB",
C_FB := "Tag_Input_C_FB",
OO => "Tag_OutputOpen",
CO => "Tag_OutputClosed",
OA => "Tag_Output_OA",
CA => "Tag_Output_CA",
Q => "Tag_Output_Q");

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

O_CMD

Tag_Input_O_CMD

TRUE

C_CMD

Tag_Input_C_CMD

FALSE

S_CMD

Tag_Input_S_CMD

FALSE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

OO

Tag_OutputOpen

FALSE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

FALSE

以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。
パラメータ

アドレス

値

ET

DBD4

L#2

PT

DBD8

L#22

O_HIS

DBX16.0

TRUE

C_HIS

DBX16.1

FALSE

処理後

1576

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OO

Tag_OutputOpen

TRUE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

TRUE

以下の値が命令のインスタンスデータブロック「MCAT_DB」に保存されます。

3.4.11.4

パラメータ

アドレス

値

ET

DBD4

L#0

O_HIS

DBX16.0

TRUE

CMD_HIS

DBX16.1

FALSE

IMC:入力ビットをマスクビットと比較

説明「入力ビットをマスクビットと比較」命令を使用して、対応するマスクビットと最大 16 のプログラム済み入力ビット(IN_BIT0～IN_BIT15)の信号状態を比較できます。最大 16 のマスクされたステップをプログラム可能です。IN_BIT0 パラメータの値が、マスク
CMP_VAL[x,0]の値と比較されます。「x」はステップ番号を示しています。CMP_STEP パラ
メータで、比較に使用するマスクのステップ番号を指定します。プログラムされた値は、すべて同じ方法で比較されます。プログラムされていない入力ビットやマスクビットは、既定のシグナル状態である FALSE になります。
比較で一致が検出されると、OUT パラメータのシグナル状態が「1」にセットされます。
それ以外の場合 OUT パラメータが「0」にセットされます。
CMP_STEP パラメータの値が 15 よりも大きい場合、この命令は実行されません。
ERR_CODE パラメータでエラーメッセージが出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1577

基本命令
3.4 SCL

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

宣言

データタイプ メモリ領域

IN_BIT0

Input

BOOL

説明

I、Q、M、D、L 入力ビット 0 がマスクビット 0と比較されます。

IN_BIT1

Input

BOOL

I、Q、M、D、L 入力ビット 1 がマスクビット 1と比較されます。

IN_BIT2

Input

BOOL

I、Q、M、D、L 入力ビット 2 がマスクビット 2と比較されます。

IN_BIT3

Input

BOOL

I、Q、M、D、L 入力ビット 3 がマスクビット 3と比較されます。

IN_BIT4

Input

BOOL

I、Q、M、D、L 入力ビット 4 がマスクビット 4と比較されます。

IN_BIT5

Input

BOOL

I、Q、M、D、L 入力ビット 5 がマスクビット 5と比較されます。

IN_BIT6

Input

BOOL

I、Q、M、D、L 入力ビット 6 がマスクビット 6と比較されます。

IN_BIT7

Input

BOOL

I、Q、M、D、L 入力ビット 7 がマスクビット 7と比較されます。

IN_BIT8

Input

BOOL

I、Q、M、D、L 入力ビット 8 がマスクビット 8と比較されます。

IN_BIT9

Input

BOOL

I、Q、M、D、L 入力ビット 9 がマスクビット 9と比較されます。

IN_BIT10

Input

BOOL

I、Q、M、D、L 入力ビット 10 がマスクビット
10 と比較されます。

IN_BIT11

Input

BOOL

I、Q、M、D、L 入力ビット 11 がマスクビット
11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、L 入力ビット 12 がマスクビット
12 と比較されます。

IN_BIT13

Input

BOOL

I、Q、M、D、L 入力ビット 13 がマスクビット
13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、L 入力ビット 14 がマスクビット
14 と比較されます。

1578

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメー
タ

宣言

データタイプ メモリ領域

IN_BIT15

Input

BOOL

説明

I、Q、M、D、L 入力ビット 15 がマスクビット
15 と比較されます。

CMP_STEP Input

BYTE

I、Q、M、D、 比較に使用されるマスクのステ
L、P

OUT

Output

BOOL

ップ番号。

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

ERR_CODE Output

WORD

I、Q、M、D、 エラー情報
L、P

CMP_VAL

StaticARRAY OF

I、Q、M、D、L 比較マスク[0～15, 0～15]:イン

WORD

デックスの最初の番号はステップ番号で、2 番目の番号はマス
クビット番号です。

静的パラメータは、プログラムで命令を呼び出しているときには表示されません。これら
は、命令のインスタンスに保存されます。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

000A

CMP_STEP パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1579

基本命令
3.4 SCL

3.4.11.5

SMC:スキャンマトリックスの比較

説明「スキャンマトリックスの比較」命令を使用して 16 のプログラム済み入力ビット(IN_BIT0～
IN_BIT15)のシグナル状態を各ステップの比較マスクの対応するビットと比較します。処理はステップ 1 から開始し、プログラムされた最後のステップ(LAST)まで、または一致が検出されるまで続行されます。IN_BIT0 パラメータの入力ビットが、マスク CMP_VAL[x,0]の値と比較されます。「x」はステップ番号を示しています。プログラムされた値は、すべて同じ方法で比較されます。一致が検出されると、OUT パラメータのシグナル状態が「1」にセットされ、一致するマスクのステップ番号が OUT_STEP パラメータに書き込まれます。
プログラムされていない入力ビットやマスクビットは、既定のシグナル状態である FALSEになります。複数のステップに一致するマスクが存在する場合、最初に検出されたマスクのみが OUT_STEP パラメータに示されます。一致が検出されないと、OUT パラメータのシ
グナル状態が「0」にセットされます。この場合、OUT_STEP パラメータの値は LAST パラ
メータの値よりも「1」だけ大きくなります。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメー
タ

宣言

データタイプ メモリ領域

IN_BIT0

Input

BOOL

説明

I、Q、M、D、L 入力ビット 0 がマスクビット 0と比較されます。

IN_BIT1

Input

BOOL

I、Q、M、D、L 入力ビット 1 がマスクビット 1と比較されます。

IN_BIT2

Input

BOOL

I、Q、M、D、L 入力ビット 2 がマスクビット 2と比較されます。

IN_BIT3

Input

BOOL

I、Q、M、D、L 入力ビット 3 がマスクビット 3と比較されます。

IN_BIT4

Input

BOOL

I、Q、M、D、L 入力ビット 4 がマスクビット 4と比較されます。

IN_BIT5

Input

BOOL

I、Q、M、D、L 入力ビット 5 がマスクビット 5と比較されます。

IN_BIT6

Input

BOOL

I、Q、M、D、L 入力ビット 6 がマスクビット 6と比較されます。

1580

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
パラメー
タ

宣言

データタイプ メモリ領域

IN_BIT7

Input

BOOL

説明

I、Q、M、D、L 入力ビット 7 がマスクビット 7と比較されます。

IN_BIT8

Input

BOOL

I、Q、M、D、L 入力ビット 8 がマスクビット 8と比較されます。

IN_BIT9

Input

BOOL

I、Q、M、D、L 入力ビット 9 がマスクビット 9と比較されます。

IN_BIT10

Input

BOOL

I、Q、M、D、L 入力ビット 10 がマスクビット
10 と比較されます。

IN_BIT11

Input

BOOL

I、Q、M、D、L 入力ビット 11 がマスクビット
11 と比較されます。

IN_BIT12

Input

BOOL

I、Q、M、D、L 入力ビット 12 がマスクビット
12 と比較されます。

IN_BIT13

Input

BOOL

I、Q、M、D、L 入力ビット 13 がマスクビット
13 と比較されます。

IN_BIT14

Input

BOOL

I、Q、M、D、L 入力ビット 14 がマスクビット
14 と比較されます。

IN_BIT15

Input

BOOL

I、Q、M、D、L 入力ビット 15 がマスクビット
15 と比較されます。

OUT

Output

BOOL

I、Q、M、D、L シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

OUT_STEP Output

BYTE

I、Q、M、D、 一致するマスクを持つステップ
L、Pの番号が含まれているか、または一致が検出されない場合は、
LAST パラメータの値よりも「1」だけ大きいステップ番号が含まれています。

ERR_CODE Output

WORD

I、Q、M、D、 エラー情報
L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1581

基本命令
3.4 SCL
パラメー
タ

宣言

データタイプ メモリ領域

LAST

Static

BYTE

説明

I、Q、M、D、 一致するマスクをスキャンする
L、P

最後のステップのステップ番号を指定します。

CMP_VAL

StaticARRAY OF

I、Q、M、D、L 比較マスク[0～15, 0～15]:イン

WORD

デックスの最初の番号はステップ番号で、2 番目の番号はマス
クビット番号です。

静的パラメータは、プログラムで命令を呼び出しているときには表示されません。これら
は、命令のインスタンスに保存されます。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

000E

LAST パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

3.4.11.6

LEAD_LAG:リード/ラグアルゴリズム

説明「リード/ラグアルゴリズム」命令を使用してアナログタグによってシグナルを処理できま
す。GAIN パラメータのゲイン値はゼロよりも大きくなければなりません。「リード/ラグ
アルゴリズム」命令の結果は、以下の等式を使用して計算されます。
287

/'B7,0(6$03/(B7/*B7,0(/'B7,0(,1*$,135(9B287*$,1/*B7,0(6$03/(B7/*B7,0(6$03/(B7/*B7,0(6$03/(B735(9B,1「リード/ラグアルゴリズム」命令は、処理を固定プログラムサイクルで行う場合のみ正しい
結果が得られます。LD_TIME、LG_TIME、および SAMPLE_T パラメータには同一のユニッ

1582

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
トを指定する必要があります。LG_TIME > 4 + SAMPLE_T の場合、この命令は以下の関数を実行します。
OUT = GAIN * ((1 + LD_TIME * s) / (1 + LG_TIME * s)) * IN
GAIN パラメータの値がゼロ以下の場合、計算は実行されず、ERR_CODE パラメータでエラー情報が出力されます。
「リード/ラグアルゴリズム」命令をダイナミックフィードフォワード制御でループと共に補償器として使用できます。この命令は、2 つの操作で構成されています。「Lead」演算は
出力 OUT のフェーズをシフトして、出力が入力の前に来るようにします。一方「Lag」演
算は出力をシフトして、出力が入力の後になるようにします。「Lag」演算は積分に相当するため、ノイズサプレッサやローパスフィルタとして使用できます。「Lead」演算は微分と同等なため、ハイパスフィルタとして使用できます。2 つの命令(Lead と Lag)をまとめて実行すると、低周波域では出力フェーズが入力フェーズよりも遅れ、高周波域では出力フェーズが入力フェーズに先行します。つまり「リード/ラグアルゴリズム」命令は帯域フィルタとして使用できます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

IN

Input

REAL

I、Q、M、D、処理対象の現在

L、Pのサンプル時間(サイクルタイム)の入力値。
定数も IN パラメータに指定する
ことができます。

SAMPLE_T

Input

INT

I、Q、M、D、

サンプル時間L、P

定数も
SAMPLE_T パラ
メータに指定することができます。

OUT

OutputREAL

I、Q、M、D、L

命令の結果

ERR_CODE

Output

WORD

I、Q、M、D、L

エラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1583

基本命令
3.4 SCL
パラメータ

宣言

データタイプ メモリ領域

説明

LD_TIME

Static

REAL

I、Q、M、D、

サンプル時間とL、Pしての同一ユニット内のリード
タイム。

LG_TIME

Static

REAL

I、Q、M、D、

サンプル時間とL、Pしての同一ユニット内のラグタイム。

GAIN

Static

REAL

I、Q、M、D、% / %で表される

L、Pゲイン(定常状態
時の出力の切り替えと入力の切り替えとの比率)。

PREV_IN

Static

REAL

I、Q、M、D、

前の入力

L、P
PREV_OUT

Static

REAL

I、Q、M、D、

前の出力

L、P
静的パラメータは、プログラムで命令を呼び出しているときには表示されません。これら
は、命令のインスタンスに保存されます。

ERR_CODE パラメータ
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

0009

GAIN パラメータの値がゼロ以下である。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

1584

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

SCL"LEAD_LAG_DB"(IN := "Tag_Input",
SAMPLE_T := "Tag_Input_SAMPLE_T",
OUT => "Tag_Output_Result",
ERR_CODE => "Tag_ErrorCode");

次の表に、命令が特定の値を使用してどのように動作するかを示します。
処理前
この例では、入力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

IN

Tag_Input

2.0

SAMPLE_T

Tag_Input_SAMPLE_T

10

以下の値が命令のインスタンスデータブロック「LEAD_LAG_DB」に保存されます。
パラメータ

アドレス

値

LD_TIME

DBD12

2.0

LG_TIME

DBD16

2.0

GAIN

DBD20

1.0

PREV_IN

DBD24

6.0

PREV_OUT

DBD28

6.0

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OUT

Tag_Output_Result

2.0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1585

基本命令
3.4 SCL
以下の値が命令のインスタンスデータブロック「LEAD_LAD_DB」に保存されます。

3.4.11.7

パラメータ

オペランド

値

PREV_IN

DBD24

2.0

PREV_OUT

DBD28

2.0

SEG:7 セグメント表示のビットパターンの作成

説明「7 セグメント表示のビットパターンの作成」命令を使用して、指定されたソースワードの
4 つの各 16 進数(IN)を 7 セグメント表示の相当するビットパターンに変換します。命令の結果は、OUT パラメータにダブルワードで出力されます。

1586

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
16 進数と 7 セグメント(a、b、c、d、e、f、g)の割り当ての間には、以下の関係がありま
す。
入力する数

セグメントの割 表示

値り当て(バイナリ)‑gfedcba

0000

00111111

00001

000001101

7 セグメント表示(16 進数)

0010

01011011

2

0011

01001111

3

0100

01100110

4

0101

01101101

5

0110

01111101

6

0111

00000111

7

1000

01111111

8

1001

01100111

9

1010

01110111

A

1011

01111100B

110000111001

C

1101

01011110D

1110

01111001

E

1111

01110001

F

D
I

E
J

H

F
G

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

IN

Input

WORD

I、Q、M、D、4 つの 16 進数のL、PソースワードI、Q、M、D、

7 セグメント表

L、P示のビットパタ

OUT

OutputDWORDーン
ファンクション値

VOID

空のファンクシ
ョン値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1587

基本命令
3.4 SCL例
次の例で、命令がどのように動作するかを示します。
SCL
SEG(IN := "Tag_Input",
OUT => "Tag_Output");

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値
16 進数

2 進数

IN

Tag_Input

W#16#1234

0001 0010 0011 0100

OUT

Tag_Output

DW16#065B4F66

00000110 01011011
01001111 01100110
表示:1234

3.4.11.8

BCDCPL:10 の補数の作成

説明「10 の補数の作成」命令を使用して、オペランドで指定された 7 桁の BCD 数の 10 の補数を作成します。この命令は、次の数式を使用して計算します。
10000000 (BCD として)
– 7 桁の BCD 数---------------------------------------10 の補数(BCD として)

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域<Operand>

Input

ビット列

I、Q、M、D、説明
7 桁の BCD 数

L、P
ファンクション値

DWORD

I、Q、M、D、

命令の結果

L、P

1588

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.4 SCL
有効なデータタイプの追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := BCDCPL("Tag_Input");

次の表に、命令が特定の値を使用してどのように動作するかを示します。
オペランド

値*

Tag_Input

DW#16#01234567

Tag_Result

DW#16#08765433*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

3.4.11.9

BITSUM:セットビット数カウント

説明「セットビット数のカウント」命令を使用して、シグナル状態「1」にセットされるオペラ
ンドのビット数をカウントします。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ メモリ領域

説明<Operand>

Input

DWORD

I、Q、M、D、

セットビット数

L、Pをカウントする
オペランド

ファンクション値

INT

I、Q、M、D、

命令の結果

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1589

基本命令
3.5 GRAPH

例
次の例で、命令がどのように動作するかを示します。
SCL"Tag_Result" := BITSUM("Tag_Input");

次の表に、命令が特定の値を使用してどのように動作するかを示します。
オペランド

値*

Tag_Input

DW#16#12345678

Tag_Result

W#16#000D (13 ビット)

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

3.5

GRAPH

3.5.1

グラフ構成

3.5.1.1

ステップと移行説明「ステップと移行」構造体エレメントを使用して、PLC にステップと移行を同時に挿入することができます。
関連項目
ステップ (ページ 1591)
移行 (ページ 1592)

下記も参照
ステップ (ページ 1591)
移行 (ページ 1592)
シーケンス終了 (ページ 1592)
ステップにジャンプ (ページ 1593)

1590

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
代替分岐 (ページ 1593)
同時分岐 (ページ 1594)
分岐を閉じる (ページ 1595)

3.5.1.2

ステップ

説明
ステップは、操作すると完成できる簡単なサブタスクに、複雑なオートメーションタスクを分割するために使用されます。 個々のステップは、プログラム実行時に指定された順序ですべてのステップを実行できるように、PLC にまとめられます。 各ステップには、一意の名前と番号を割り当てる必要があります。
実行が実際に行われるようにするには、次のいずれかの条件によってステップを有効にする必要があります。
• ステップが最初のステップとして定義されていること。
• 前のステップの移行が完了していること。
• イベント依存の操作によってステップが呼び出されていること。
すべての操作が実行されると、ステップは再度無効になります。
操作がプログラムされていないステップは、空のステップと呼ばれます。 このような空のステップは有効なステップと同様に応答するため、後続の移行は常に完了します。

下記も参照
ステップと移行 (ページ 1590)
移行 (ページ 1592)
シーケンス終了 (ページ 1592)
ステップにジャンプ (ページ 1593)
代替分岐 (ページ 1593)
同時分岐 (ページ 1594)
分岐を閉じる (ページ 1595)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1591

基本命令
3.5 GRAPH

3.5.1.3

移行

説明
移行は、ステップ間に配置されており、あるステップから次のステップに進むための条件(ステップイネーブル)を含んでいます。 移行のステップイネーブル条件が満たされると、次のステップが有効になり、その操作が実行されます。 LAD または FBD のいずれかで移行の条件をプログラムできます。

下記も参照
ステップと移行 (ページ 1590)
ステップ (ページ 1591)
シーケンス終了 (ページ 1592)
ステップにジャンプ (ページ 1593)
代替分岐 (ページ 1593)
同時分岐 (ページ 1594)
分岐を閉じる (ページ 1595)

3.5.1.4

シーケンス終了

説明「シーケンス終了」構造体エレメントを使用して、PLC または分岐を停止できます。 同時
分岐では、移行はシーケンス終了に先行する必要があります。
注記
PLC のすべての分岐がシーケンス終了で完了した場合は、「INIT_SQ」パラメータまたは[テスト]タスクカードの[シーケンスコントロール]ペインにある[初期化]ボタンを使用することによって、PLC を再起動できます。

下記も参照
ステップと移行 (ページ 1590)
ステップ (ページ 1591)
移行 (ページ 1592)

1592

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
ステップにジャンプ (ページ 1593)
代替分岐 (ページ 1593)
同時分岐 (ページ 1594)
分岐を閉じる (ページ 1595)

3.5.1.5

ステップにジャンプ

説明
ジャンプを使用して、GRAPH ファンクションブロック内の任意のステップでプログラムの実行を続行することができます。 PLC の周期的処理を有効にするために、メイン分岐または代替分岐の最後にジャンプを挿入できます。 ジャンプおよびジャンプ先は PLC 内で矢印として表されます。その場合、ジャンプ先に対して復帰移行が指定されます。

下記も参照
ステップと移行 (ページ 1590)
ステップ (ページ 1591)
移行 (ページ 1592)
シーケンス終了 (ページ 1592)
代替分岐 (ページ 1593)
同時分岐 (ページ 1594)
分岐を閉じる (ページ 1595)

3.5.1.6

代替分岐

説明
代替分岐を使用して OR 分岐をプログラミングできます。 つまり、移行から始まる分岐をステップの後に挿入します。 どの移行条件が最初に満たされるかに応じて、対応する分岐が実行されます。 複数の移行条件が同時に満たされた場合、左端の移行が最上位の優先度を持ち、対応する分岐が実行されます。 代替分岐が移行で再度終了します。
PLC では最大 125 個の代替分岐をプログラミングできます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1593

基本命令
3.5 GRAPH

下記も参照
ステップと移行 (ページ 1590)
ステップ (ページ 1591)
移行 (ページ 1592)
シーケンス終了 (ページ 1592)
ステップにジャンプ (ページ 1593)
同時分岐 (ページ 1594)
分岐を閉じる (ページ 1595)

3.5.1.7

同時分岐

説明
同時分岐を使用して AND 分岐をプログラミングできます。 つまり、1 つの移行を使用して複数のステップを有効にします。その後、それらの操作が実行されます。 同時分岐は常にステップから開始します。
同時分岐の後続の移行はメイン分岐に置かれます。この場合、各種の同時分岐をメイン分岐のさまざまなポイントに接続することができます。 移行で結合した分岐は、すべての分岐が完全に実行されたときにしか次のステップに進まないことに注意してください。
PLC では、最大 249 個の同時分岐をプログラミングできます。

下記も参照
ステップと移行 (ページ 1590)
ステップ (ページ 1591)
移行 (ページ 1592)
シーケンス終了 (ページ 1592)
ステップにジャンプ (ページ 1593)
代替分岐 (ページ 1593)
分岐を閉じる (ページ 1595)

1594

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

3.5.1.8

分岐を閉じる説明[分岐を閉じる]エレメントを使用して、親分岐に対する同時分岐および代替分岐を閉じる
ことができます。 ジャンプまたはシーケンス終了を用いて分岐を完了したくない場合は、この操作が必要です。 同時分岐では、ステップの後にしか「分岐を閉じる」を挿入でき
ません。

下記も参照
ステップと移行 (ページ 1590)
ステップ (ページ 1591)
移行 (ページ 1592)
シーケンス終了 (ページ 1592)
ステップにジャンプ (ページ 1593)
代替分岐 (ページ 1593)
同時分岐 (ページ 1594)

3.5.2

GRAPH 操作

3.5.2.1

タイマの動作

TP: パルスの生成

説明「パルスタイマ」命令を使用して、プログラムされた持続時間の Q 出力を設定します。この
命令は、IN パラメータの論理演算結果(RLO)が「0」から「1」(信号立ち上がりエッジ)に切り替わるときに開始されます。命令が開始されると、プログラムされた時間 PT が開始します。以降の入力信号の切り替えに関わらず、Q パラメータが時間 PT に対してセットされます。時間 PT の経過中、IN 入力での新しい信号立ち上がりエッジの検出は Q 出力のシグナル状態に影響を与えません。
ET パラメータにセットされた現在の時間値を照会できます。タイマ値は T#0s で開始し、時間 PT の値に達すると終了します。時間 PT に達したときに IN パラメータのシグナル状態
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1595

基本命令
3.5 GRAPH
が「0」の場合、ET パラメータはリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない場合、ET 出力はこの時間が経過するとすぐに定数値を返します。
「パルスタイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。この前に、論理演算が必要となります。
「パルス生成」命令の各呼び出しは、インスタンスデータが保存される IEC タイマに割り当てる必要があります。IEC タイマは、データタイプ IEC_TIMER、IEC_LTIMER、TP_TIME、または TP_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TP_TIME、TP_LTIME、IEC_TIMER、またはIEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

1596

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

インスタンスデータ内の現在値の更新「パルスタイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「パルスタイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「パルスタイマ」
命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– ET または Q 出力が相互接続されている場合に、命令が呼び出されたとき。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「パルスタイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1597

基本命令
3.5 GRAPH

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

パルスの持続時間。

L、P、または定 PT パラメータの値は正の数値であることが必要です。
Q

Output

BOOL

I、Q、M、D、

パルス出力

L、P
ET

Output

TIME, LTIME

I、Q、M、D、

現在のタイマ値

L、P
命令のデータタイプを[???]ドロップダウンリストから選択できます。

1598

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パルスタイミング図
次の図に、開始後の「パルス生成」命令のパルス図を示します。
,1

4

37

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL TP TIME, "IEC_TP_DB"(IN := "Tag_Start"
PT := "Tag_PresetTIME"
Q => "Tag_Status"
ET => "Tag_ElapsedTIME")

オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わるときに、PT パラ
メータに対してプログラムされた時間が開始され、オペランド「Tag_Status」が「1」にセットされます。現在の時間値は、オペランド「Tag_ElapsedTIME」内に保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1599

基本命令
3.5 GRAPH

TON: オンディレー生成

説明「オンディレータイマ」命令を使用して、プログラムされた時間 PT によって Q 出力の設定を遅延させます。この命令は、IN パラメータの論理演算結果(RLO)が「0」から「1」(信号立ち上がりエッジ)に切り替わるときに開始されます。命令が開始されると、プログラム
された時間 PT が開始します。時間 PT が経過すると、Q パラメータのシグナル状態は「1」になります。Q パラメータは、開始入力 IN が「1」の間はセットされた状態が続きます。
開始入力のシグナル状態が「1」から「0」に切り替わると、Q パラメータがリセットされます。開始入力で信号の新しい立ち上がりエッジが検出されると、タイマファンクションが再開されます。
ET 出力で現在時間値を照会できます。タイマ値は T#0s で開始し、時間 PT の値に達すると終了します。IN パラメータがシグナル状態「0」に切り替わると、ET パラメータは直ちにリセットされます。命令がプログラム内で、たとえば、スキップされて呼び出されない場
合、ET 出力は時間 PT の期限が切れるとすぐに定数値を返します。
「オンディレータイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。
この前に、論理演算が必要となります。
「オンディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。IEC タイマは、データタイプ IEC_TIMER、
IEC_LTIMER、TON_TIME、または TON_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TON_TIME、TON_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

1600

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

インスタンスデータ内の現在値の更新「オンディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オンディレータイマ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が開始されます。「オンディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、 Q および ET 出力の現在値が更新されます。
– ET または Q 出力が相互接続されている場合に、命令が呼び出されたとき。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オンディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1601

基本命令
3.5 GRAPH

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

オンディレーの持続時間

L、P、または定 PT パラメータの値は正の数値であることが必要です。
Q
ET

OutputOutput

BOOL
TIME, LTIME

I、Q、M、D、

時間 PT によって遅延さL、Pれるシグナル状態

I、Q、M、D、

現在のタイマ値

L、P
命令のデータタイプを[???]ドロップダウンリストから選択できます。

1602

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パルスタイミング図
次の図に、開始後の「オンディレータイマ」命令の動作を示します。
,1

4

37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL TON TIME, "IEC_TON_DB"(IN := "Tag_Start"
PT := "Tag_PresetTIME"
Q => "Tag_Status"
ET => "Tag_ElapsedTIME")

オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わると、PT パラメー
タにプログラムされた時間が開始します。時間の期限が切れると、「Tag_Status」オペラ
ンドがシグナル状態「1」にセットされます。Tag_Start オペランドのシグナル状態が「1」である限り、Tag_Status オペランドは「1」にセットされた状態が継続します。現在の時間値は、オペランド「Tag_ElapsedTime」内に保存されます。「Tag_Start」オペランドのシグナル状態が「1」から「0」に切り替わると、「Tag_Status」オペランドがリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1603

基本命令
3.5 GRAPH

TOF: オフディレー生成説明「オフディレータイマ」命令を使用して、プログラムされた時間 PT によって Q 出力のリセットを遅延させます。Q パラメータは、IN パラメータで論理演算の結果(RLO)が「1」から「0」に切り替わった場合(信号立ち下がりエッジ)に設定されます。IN パラメータのシ
グナル状態が「1」に戻ると、プログラムされた時間 PT が開始します。時間 PT が継続している限り、Q パラメータはセットされたままです。時間 PT が経過すると、Q パラメー
タはリセットされます。時間 PT の期限が切れる前に、IN パラメータのシグナル状態が「1」に切り替わると、タイマはリセットされます。Q パラメータのシグナル状態は「1」にセットされた状態が継続します。
「オフディレータイマ」命令は、ネットワーク内またはネットワークの終端に配置できます。
この前に、論理演算が必要となります。
現在の時間値は、ET パラメータ内で照会することができます。タイマ値は T#0s で開始し、時間 PT の値に達すると終了します。時間 PT が経過すると、ET パラメータは、IN パラメータが「1」に戻るまで、現在の値がセットされた状態が続きます。時間 PT の期限が切れる前に IN 入力が「1」に切り替わると、ET 出力が値 T#0s にリセットされます。命令がプ
ログラム内で、たとえば、スキップされて呼び出されない場合、ET 出力はこの時間が経過するとすぐに定数値を返します。
「オフディレータイマ」命令の各呼び出しは、インスタンスデータ内が格納される IEC タ
イマに割り当てられる必要があります。IEC タイマは、データタイプ IEC_TIMER、
IEC_LTIMER、TOF_TIME、または TOF_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TOF_TIME、TOF_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

1604

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

インスタンスデータ内の現在値の更新「オフディレータイマ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「オフディレータイマ」命令は、現在の RLO と、インスタンスデータの IN パラメータ内に保存されている前回の照会時の RLO を比較します。命令が RLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が開始されます。「オフディレータイマ」命令が処理されると、IN パラメータの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– 命令が呼び出されたとき、ET または Q 出力が相互接続されている場合。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、 Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「オフディレータイマ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1605

基本命令
3.5 GRAPH

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

オフディレーの持続時間

L、P、または定 PT パラメータの値は正の数値であることが必要です。
Q
ET

OutputOutput

BOOL
TIME, LTIME

I、Q、M、D、

時間 PT によって遅延さL、Pれるシグナル状態

I、Q、M、D、

現在のタイマ値

L、P
命令のデータタイプを[???]ドロップダウンリストから選択できます。

1606

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パルスタイミング図
次の図に、開始後の「オフディレータイマ」命令の動作を示します。
,1

4
37

37

(7
37

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL TOF TIME, "IEC_TOF_DB"(IN := "Tag_Start"
PT := "Tag_PresetTIME"
Q => "Tag_Status"
ET => "Tag_ElapsedTIME")「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、「Tag_Status」
オペランドがセットされます。オペランド「Tag_Start」のシグナル状態が「1」から「0」に切り替わると、PT パラメータにプログラムされた時間が開始します。時間が継続中の場
合は、オペランド「Tag_Status」はセットされた状態が続きます。時間が経過すると、オペランド「Tag_Status」はリセットされます。現在の時間値は、オペランド「Tag_ElapsedTIME」内に保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1607

基本命令
3.5 GRAPHTONR: タイムアキュムレータ

説明「タイムアキュムレータ」命令を使用して、PT パラメータによってセットされた時間内の時間値を累積します。IN 入力のシグナル状態が「0」から「1」に切り替わると(信号立ち上
がりエッジ)、時間測定および時間 PT が開始します。時間 PT が経過している間、IN 入力のシグナル状態が「1」のときに記録された時間値が累積されます。累積時間は ET 出力に書き込まれ、そこで照会できます。持続時間 PT の期限が切れると、出力 Q のシグナル状態
は「1」になります。IN パラメータのシグナル状態が「1」から「0」(信号立ち下がりエッジ)に切り替わった場合でも、Q パラメータは「1」にセットされた状態が継続します。
「タイムアキュムレータ」命令は、ネットワーク内またはネットワークの終端に配置できます。この前に、論理演算が必要となります。
開始入力のシグナル状態に関係なく、R 入力が出力 ET と Q をリセットします。
「タイムアキュムレータ」命令の各呼び出しは、インスタンスデータが格納される IEC タ
イマに割り当てられる必要があります。IEC タイマは、データタイプ IEC_TIMER、
IEC_LTIMER、TONR_TIME、または TONR_LTIME の構造体であり、次のように宣言することが可能です。
• システムデータタイプ IEC_TIMER または IEC_LTIMER のデータブロックの宣言「MyIEC_TIMER」など)(• ブロックの「Static」セクション内のタイプ TONR_TIME、TONR_LTIME、IEC_TIMER、または IEC_LTIMER のローカルタグとしての宣言(#MyIEC_TIMER など)

1608

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

インスタンスデータ内の現在値の更新「タイムアキュムレータ」からのインスタンスデータは、以下のルールに基づいて更新されます。
• IN 入力「タイムアキュムレータ」命令は、現在の RLO と、インスタンスデータの IN 内に保存されている前回の照会時の RLO を比較します。命令が RLO の「0」から「1」への切り替えを検出した場合は信号立ち上がりエッジが存在し、時間測定が続行されます。命令がRLO の「1」から「0」への切り替えを検出した場合は信号立ち下がりエッジが存在し、時間測定が中断されます。「タイムアキュムレータ」命令が処理されると、IN パラメー
タの値がインスタンスデータ内で更新され、次の照会のエッジメモリビットとして使用されます。
他のファンクションによって IN パラメータの現在値が書き込まれる、または初期化されると、エッジ評価が正確ではなくなります。
• PT 入力
エッジが IN 入力で変化すると、PT 入力の値がインスタンススデータ内の PT パラメー
タに書き込まれます。
• R 入力入力 R での信号「1」は、時間測定をリセットおよびブロックします。IN 入力でのエッジは無視されます。入力 R での信号「0」は、時間測定を再度有効にします。
• Q および ET 出力以下の場合、Q および ET 出力の現在値が更新されます。
– ET または Q 出力が相互接続されている場合に、命令が呼び出されたとき。
または– Q または ET へのアクセス時。
出力が相互接続されておらず、照会もされていない場合、Q および ET 出力の現在の時
間値は更新されません。プログラム内で命令がスキップされる場合でも、出力は更新されません。
「タイムアキュムレータ」命令の内部パラメータは、Q および ET の時間値の計算に使用されます。他のファンクションによって命令の現在値が書き込まれたり初期化されたりすると、時間測定が正確ではなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1609

基本命令
3.5 GRAPH

危険
現在値の再初期化時の危険性
時間測定実行中に IEC タイマの現在値を再初期化すると、IEC タイマのファンクションが正確ではなくなります。現在値の変更により、プログラムと現在のプロセスとの間に不整合が発生することがあります。これが、機器の重大な損傷や人的障害の原因となる場合があります。
以下のファンクションで、現在値の再初期化が行われる可能性があります。
• 再初期化を伴うブロックのロード• スナップショットを現在値としてロード• 現在値の制御または強制• 「WRIT_DBL」命令

これらのファンクションを実行する前に、以下を確認してください。
• 現在値を上書きする前に、プラントが安全な状態であることを確認してください。
• IEC タイマの現在値を初期化する前に、IEC タイマの時間が経過していることを確認してください。
• スナップショットで現在値を上書きする場合は、そのスナップショットが、システムが安全な状態で撮られたものであることを確認してください。
• 転送中にプログラムが影響を受けたデータの読み取り/書き込みを行わないようにしてく
ださい。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

BOOL

I、Q、M、D、

開始入力

Input

L、P、または定
数
R

Input

BOOL

I、Q、M、D、

リセット入力

L、P、または定
数
PT

Input

TIME, LTIME

I、Q、M、D、

時間記録の最大持続時間

L、P、または定 PT パラメータの値は正の数値であることが必要です。

1610

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

Q

BOOL

I、Q、M、D、

時間 PT の経過時にセッ

L、P

トされる出力。

I、Q、M、D、

累積時間

OutputET

Output

TIME, LTIME

L、P
命令のデータタイプを[???]ドロップダウンリストから選択できます。

パルスタイミング図
次の図に、「タイムアキュムレータ」命令のパルスタイミング図を示します。
,1

5

4

37

(7

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL TONR TIME, "IEC_TONR_DB"(IN := "Tag_Start"
R := "Tag_Reset"
PT := "Tag_PresetTIME"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1611

基本命令
3.5 GRAPH
GRAPH
Q => "Tag_Status"
ET => "Tag_ElapsedTIME")

オペランド「Tag_Start」のシグナル状態が「0」から「1」に切り替わると、PT パラメー
タにプログラムされた時間が開始します。時間が経過している間、「Tag_Start」オペラン
ドのシグナル状態が「1」のときに記録された時間値が累積されます。累積時間は「Tag_ElapsedTIME」オペランド内に保存されます。PT パラメータに指定されている時間値に達すると、「Tag_Status」オペランドがシグナル状態「1」にセットされます。現在の時間値は、オペランド「Tag_ElapsedTIME」内に保存されます。

3.5.2.2

カウンタ演算CTU: カウントアップ

説明
CV パラメータの値のインクリメントには、「カウントアップ」命令を使用できます。CU パ
ラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わるとこの命令が実行され、CV パラメータのカウンタ現在値が 1 インクリメントされます。立ち上がりエッジを検出するたびに、CV 出力において指定されたデータタイプの上限値に達するまで、カウンタ値がインクリメントされます。上限値に達すると、CU パラメータのシグ
ナル状態は命令に影響しなくなります。
Q パラメータのカウンタステータスを照会できます。Q パラメータのシグナル状態は、PV
パラメータによって決まります。カウンタ現在値が PV パラメータの値以上の場合、Q パ
ラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、Q パラメー
タのシグナル状態は「0」です。
R パラメータのシグナル状態が「1」に切り替わると、CV パラメータの値はゼロにリセッ
トされます。R パラメータのシグナル状態が「1」である限り、CU パラメータのシグナル状態はこの命令には影響を与えません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。

1612

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH「カウントアップ」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

システムデータタイプ IEC_<Counter> (共有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER

ローカルタグ• CTU_SINT / CTU_USINT• CTU_INT / CTU_UINT• CTU_DINT / CTU_UDINT• CTU_LINT / CTU_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER
IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTU_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyCTU_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロック
インターフェース内で、保持型として定義されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1613

基本命令
3.5 GRAPH「カウントアップ」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワ
ーク内またはネットワークの終端に配置できます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CU

BOOL

I、Q、M、D、

カウント入力Input

L、または定数
R

Input

BOOL

I、Q、M、D、

リセット入力

L、P、または定
数
PV

Input

整数

I、Q、M、D、Q 出力がセットされる値。

L、P、または定
数QOutput

BOOL

I、Q、M、D、L カウンタステータス

CV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値

命令のデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL CTU INT, "IEC_CTU_DB"(CU := "Tag_Start"
R := "Tag_ResetCOUNTER"
PV := "Tag_PresetValue"
Q => "Tag_Status"
CV => "Tag_CounterValue")「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、「カウントア
ップ」命令が実行され、「Tag_CounterValue」カウンタ現在値が 1 インクリメントされます。それ以降、信号立ち上がりエッジが検出されるたびに、データタイプの上限値(INT =32767)に達するまで、カウンタ値がインクリメントされます。

1614

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
PV パラメータの値が「Tag_Status」出力を確定する限度として採用されます。カウンタ現在値がオペランド「Tag_PresetValue」の値以上の場合、「Tag_Status」出力のシグナル状態
は「1」になります。それ以外のすべての場合、「Tag_Status」出力のシグナル状態は「0」になります。

CTD: カウントダウン

説明「カウントダウン」命令は、パラメータ CV のデクリメントに使用します。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わるとこの命令が実行され、CV パラメータのカウンタ現在値が 1 デクリメントされます。指定されたデータタ
イプの下限値に達するまで、信号の立ち上がりエッジが検出されるたびにカウンタがデクリメントされます。下限値に達すると、CD パラメータのシグナル状態は命令に影響しなくなります。
Q パラメータのカウンタステータスを照会できます。カウンタ現在値がゼロ以下の場合、Q
パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、Q パラメータのシグナル状態は「0」です。
CV パラメータの値は、LD パラメータのシグナル状態が「1」に切り替わると PV パラメー
タの値にセットされます。LD パラメータのシグナル状態が「1」である限り、CD パラメータのシグナル状態はこの命令には影響を与えません。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントダウン」命令の各呼び出しは、命令データが格納される IEC カウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイプを持つ構造体です。

システムデータタイプ IEC_<Counter> (共有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTERTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1615

基本命令
3.5 GRAPH

ローカルタグ• CTD_SINT / CTD_USINT• CTD_INT / CTD_UINT• CTD_DINT / CTD_UDINT• CTD_LINT / CTD_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER
IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTD_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyCTD_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロック
インターフェース内で、保持型として定義されます。
「カウントダウン」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワ
ーク内またはネットワークの終端に配置できます。

1616

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CD

BOOL

I、Q、M、D、

カウント入力Input

L、または定数
LD

Input

BOOL

I、Q、M、D、

ロード入力

L、P、または定
数
PV

Input

整数

I、Q、M、D、CV 出力が LD = 1 にセッ

L、P、または定 トされる値。
数
Q

Output

BOOL

I、Q、M、D、L カウンタステータス

CV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値

命令のデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL CTD INT, "IEC_CTD_DB"(CD := "Tag_Start"
LD := "Tag_LoadPV"
PV := "Tag_PresetValue"
Q => "Tag_Status"
CV => "Tag_CounterValue")「Tag_Start」オペランドのシグナル状態が「0」から「1」に切り替わると、「カウントダ
ウン」命令が実行され、「Tag_CounterValue」出力の値が 1 デクリメントされます。以後のそれぞれの信号立ち上がりエッジで、指定したデータタイプの下限値(INT = -32768)に達するまでカウンタ値がデクリメントされます。
カウンタ現在値がゼロ以下である限り、「Tag_Status」出力のシグナル状態は「1」になります。それ以外のすべての場合、「Tag_Status」出力のシグナル状態は「0」になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1617

基本命令
3.5 GRAPH

CTUD: カウントアップ/カウントダウン

説明「カウントアップ/カウントダウン」命令を使用して、CV パラメータの値をインクリメン
トおよびデクリメントできます。CU パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、CV パラメータのカウンタ現在値が 1 インクリメントされます。CD パラメータのシグナル状態が「0」から「1」(信号の立ち上がりエッジ)に切り替わると、CV パラメータのカウンタ現在値が 1 デクリメントされます。プログラムサ
イクル内の CU および CD 入力で信号の立ち上がりエッジが存在すると、CV パラメータのカウンタ現在値は変化しません。
カウンタ値は、CV パラメータで指定したデータタイプの上限値に達するまでインクリメ
ントすることができます。上限値に達すると、信号の立ち上がりエッジが発生しても、カウンタ値はインクリメントされなくなります。カウンタ値は、指定されたデータタイプの下限値に達するとデクリメントされなくなります。
LD パラメータのシグナル状態が「1」に切り替わると、CV パラメータのカウンタ値が PV
パラメータの値にセットされます。LD パラメータのシグナル状態が「1」である限り、CU
入力および CD 入力のシグナル状態は命令に対する効力を持ちません。
R パラメータのシグナル状態が「1」に切り替わると、カウンタ値は 0 にセットされます。R
パラメータのシグナル状態が「1」である限り、CU、CD パラメータおよび LD パラメータのシグナル状態の変化は「カウントアップ/カウントダウン」命令に影響しません。
QU パラメータでアップカウンタのステータスを照会できます。カウンタ現在値が PV パ
ラメータの値以上の場合、QU パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、QU パラメータのシグナル状態は「0」です。
QD パラメータでダウンカウンタのステータスを照会できます。カウンタ現在値がゼロ以下の場合、QD パラメータがシグナル状態「1」にセットされます。それ以外のすべての場合、
QD パラメータのシグナル状態は「0」です。
注記
カウントエラーのリスクを回避するために、プログラムでは 1 つの場所のカウンタのみを使用します。
「カウントアップ/カウントダウン」命令の各呼び出しは、命令データが格納される IEC カ
ウンタに割り当てられる必要があります。IEC カウンタとは、次のいずれかのデータタイ
プを持つ構造体です。

1618

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

システムデータタイプ IEC_<Counter> (共有 DB)のデータブロック• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER

ローカルタグ• CTUD_SINT / CTUD_USINT• CTUD_INT / CTUD_UINT• CTUD_DINT / CTUD_UDINT• CTUD_LINT / CTUD_ULINT• IEC_SCOUNTER / IEC_USCOUNTER• IEC_COUNTER / IEC_UCOUNTER• IEC_DCOUNTER / IEC_UDCOUNTER• IEC_LCOUNTER / IEC_ULCOUNTER
IEC カウンタは、次のように宣言できます。
• システムデータタイプ IEC_<Counter>のデータブロックの宣言(「MyIEC_COUNTER」な
ど)• ブロックの「Static」セクションでの CTUD_<Data type>または IEC_<Counter>タイプのローカルタグとしての宣言(#MyCTUD_COUNTER など)
個別のデータブロック(シングルインスタンス)内にこの IEC カウンタをセットアップすると、このインスタンスデータブロックは、既定では「最適化したブロックアクセス」で作成され、個々のタグは保持型として定義されます。インスタンスデータブロックでの保持型の設定についての追加情報は、「関連項目」を参照してください。
「最適化したブロックアクセス」のファンクションブロック内で、この IEC カウンタをローカルタグ(マルチインスタンス)としてセットアップすると、このカウンタは、ブロック
インターフェース内で、保持型として定義されます。
「カウントアップ/カウントダウン」命令の実行には、あらかじめ論理演算が必要です。これは、ネットワーク内またはネットワークの終端に配置できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1619

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

CU

BOOL

I、Q、M、D、

カウントアップ入力

Input

L、または定数
CD

Input

BOOL

I、Q、M、D、

カウントダウン入力

L、または定数
R

Input

BOOL

I、Q、M、D、

リセット入力

L、P、または定
数
LD

Input

BOOL

I、Q、M、D、

ロード入力

L、P、または定
数
PV

Input

整数

I、Q、M、D、QU 出力がセットされる

L、P、または定 値/ LD = 1 のときに CV 出
数
QU

Output

BOOL

力がセットされる値。

I、Q、M、D、L アップカウンタのステー
タス

QD

Output

BOOL

I、Q、M、D、L カウントダウンのステー
タスCV

Output

整数、CHAR、I、Q、M、D、

WCHAR、DATE

L、P

カウンタ現在値

命令のデータタイプを[???]ドロップダウンリストから選択できます。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL CTUD INT, "IEC_CTUD_DB"(CU := "Tag_StartCTU"
CD := "Tag_StartCTD"
R := "Tag_ResetCOUNTER"
LD := "Tag_LoadPV"
PV := "Tag_PresetValue"
QU => "Tag_CounterStatusUP"

1620

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
GRAPH
QD => "Tag_CounterStatusDOWN"
CV => "Tag_CounterValue")「Tag_StartCTU」または「Tag_StartCTD」入力のシグナル状態が「0」から「1」に切り替
わった場合(信号立ち上がりエッジ)、「カウントアップ/カウントダウン」命令が実行されます。「Tag_StartCTU」入力で立ち上がりエッジが発生する場合、カウンタ現在値は 1 ず
つインクリメントされ、「Tag_CounterValue」出力に保存されます。「Tag_StartCTD」入力
で立ち上がりエッジが発生する場合、カウンタ値は 1 ずつデクリメントされ、「Tag_CounterValue」出力に保存されます。CU 入力で信号立ち上がりエッジが発生した場
合、上限値 32767 に達するまでカウンタ値がインクリメントされます。CD 入力で信号立ち上がりエッジが発生した場合、下限値 INT = -32768 に達するまでカウンタ値がデクリメントされます。
カウンタ現在値が「Tag_PresetValue」入力の値以上である限り、「Tag_CounterStatusUP」
出力のシグナル状態は「1」になります。それ以外のすべての場合、「Tag_CounterStatusUP」出力のシグナル状態は「0」になります。
カウンタ現在値がゼロ以下である限り、「Tag_CounterStatusDOWN」出力のシグナル状態
は「1」になります。それ以外のすべての場合、「Tag_CounterStatusDOWN」出力のシグ
ナル状態は「0」になります。

3.5.2.3

四則演算

NEG:2 の補数の作成

説明「2 の補数の作成」命令を使用して、オペランド値の符号を変更できます。たとえば、値が正の場合は、この値と同値の負の数が出力されます。
OUT 出力の値は、命令の結果が OUT 出力で指定されたデータタイプに許可された範囲外である場合、無効です(整数についてのみ有効)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1621

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

SINT、INT、I、Q、M、D、

入力値

DINT、LINT、浮 L、P、または定<Result>

Output

動小数点数

数

SINT、INT、I、Q、M、D、

入力値の 2 の補数

DINT、LINT、浮 L、P
動小数点数
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := NEG_REAL("Tag_InValue")

この命令は、「Tag_InValue」オペランドの値の符号を変更し、結果を「Tag_OutValue」オ
ペランドに出力します。

ABS:絶対値の形成

説明「絶対値の形成」命令を使用して、オペランド値の絶対値を計算します。
浮動小数点数に無効な値が含まれている場合、結果の値は無効です。

1622

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

SINT、INT、I、Q、M、D、

入力値

DINT、LINT、浮 L、P、または定<Result>

Output

動小数点数

数

SINT、INT、I、Q、M、D、

入力値の絶対値

DINT、LINT、浮 L、P
動小数点数
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := ABS("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue-6.234

Tag_OutValue

6.234

この命令は、「Tag_InValue」オペランドの値の絶対値を計算し、結果を「Tag_OutValue」
オペランドに出力します。

MIN:最小値の取得

説明「最小値の取得」命令を使用して、使用可能な IN1 および IN2 入力の値を比較し、最小値をOUT 出力に書き込みます。
OUT 出力の値は、次の条件の 1 つが満たされると無効です。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1623

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、

Input

メモリ領域

点数、TIME、L、P、または定LTIME、TOD、

数

説明
最初の入力値LTOD、DATE、
LDT
IN2

Input

整数、浮動小数 I、Q、M、D、点数、TIME、L、P、または定LTIME、TOD、

数

2 番目の入力値

LTOD、DATE、
LDT
OUT

Output整数、浮動小数 I、Q、M、D、点数、TIME、

結果

L、P

LTIME、TOD、LTOD、DATE、
LDT
データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL MIN INT(IN1 := "TagIn_Value1"
IN2 := "TagIn_Value2"
OUT => "Tag_Minimum")

1624

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

OUT

Tag_Minimum12222

この命令は、指定されたオペランドの値を比較し、最小値(「TagIn_Value1」)を「Tag_Minimum」出力にコピーします。

MAX:最大値の取得

説明「最大値の取得」命令を使用して、IN1 および IN2 入力の値を比較し、最大値を OUT 出力に書き込みます。
OUT 出力の値は、次の条件の 1 つが満たされると無効です。
• 命令の実行中にデータタイプの暗黙的な変換に失敗すること。
• 浮動小数点数の値が無効であること。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、

Input

メモリ領域

点数、TIME、L、P、または定LTIME、TOD、

数

説明
最初の入力値LTOD、DATE、
LDT
IN2

Input

整数、浮動小数 I、Q、M、D、点数、TIME、L、P、または定LTIME、TOD、

数

2 番目の入力値

LTOD、DATE、LDT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1625

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプOUT

整数、浮動小数 I、Q、M、D、

Output

点数、TIME、

メモリ領域

説明
結果

L、P

LTIME、TOD、LTOD、DATE、
LDT
データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL MAX INT(IN1 := "TagIn_Value1"
IN2 := "TagIn_Value2"
OUT => "Tag_Maximum")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN1

TagIn_Value1

12222

IN2

TagIn_Value2

14444

OUT

Tag_Maximum

14444

この命令は、指定されたオペランドの値を比較し、最大値(「TagIn_Value2」)を「Tag_Maximum」出力にコピーします。

1626

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

LIMIT:制限値の設定

説明「制限値のセット」命令を使用して、IN 入力の値を MN および MX 入力の値に制限します。
IN 入力の値が条件 MN <= IN <= MX を満たす場合、この値は OUT 出力にコピーされます。
条件が満たされず、IN 入力値が下限値 MN を下回る場合、OUT 出力は MN 入力の値にセットされます。上限値 MX を超える場合、OUT 出力は MX 入力の値にセットされます。
MN 入力の値が MX 入力の値よりも大きい場合、結果は IN パラメータで指定された値になります。命令は、すべての入力のタグが同じデータタイプの場合にのみ実行されます。
OUT 出力の値は、次の条件の 1 つが満たされると無効です。
• 指定された複数のタグが同じデータタイプでないこと。
• オペランドの値が無効である。
• MN パラメータの値が MX パラメータの値よりも大きいこと。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプMN

整数、浮動小数 I、Q、M、D、

Input

メモリ領域

点数、TIME、L、P、または定LTIME、TOD、

数

説明
下限値

LTOD、DATE、
LDT
IN

Input

整数、浮動小数 I、Q、M、D、点数、TIME、L、P、または定LTIME、TOD、数

入力値

LTOD、DATE、
LDT
MX

Input

整数、浮動小数 I、Q、M、D、点数、TIME、L、P、または定LTIME、TOD、数

上限値

LTOD、DATE、LDT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1627

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプOUT

整数、浮動小数 I、Q、M、D、

Output

点数、TIME、

メモリ領域

説明
結果

L、P

LTIME、TOD、LTOD、DATE、
LDT
データタイプ TOD、LTOD、DATE、および LDT は、IEC テストが有効でない場合のみ使用できます。
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL LIMIT INT(MN := "Tag_LowLimit"
IN := "Tag_InputValue"
MX := "Tag_HighLimit"
OUT => "Tag_Result")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MN

Tag_LowLimit

12000

IN

Tag_InputValue

8000

MX

Tag_HighLimit

16000

OUT

Tag_Result

12000「Tag_InputValue」オペランドの値が「Tag_LowLimit」および「Tag_HighLimit」オペラン
ドの値と比較されます。「Tag_InputValue」 オペランドの値が下限値未満であるため、「Tag_LowLimit」オペランドの値が「Tag_Result」出力にコピーされます。

1628

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

SQR:2 乗値の形成

説明「2 乗値の形成」命令を使用して、オペランドの浮動小数点数の値を二乗し、結果を出力に書き込みます。
オペランドに無効な浮動小数点数が含まれている場合、結果の値は無効です。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数<Result>

Output浮動小数点数

I、Q、M、D、

入力値の 2 乗値

L、P
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := SQR("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

5.0

Tag_OutValue

25.0

この命令は、「Tag_InValue」オペランドの値を 2 乗し、結果を「Tag_OutValue」オペラン
ドに出力します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1629

基本命令
3.5 GRAPH

SQRT:平方根の形成

説明「平方根の形成」命令を使用して、入力値の平方根を計算し、結果を指定したオペランド内に保存します。この命令は、入力値がゼロよりも大きい場合に正の結果になります。入力値がゼロ未満の場合、この命令は無効な浮動小数点数を返します。オペランドの値が「0」の場合、結果も「0」になります。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数<Result>

Output浮動小数点数

I、Q、M、D、L 入力値の平方根

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := SQRT("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

25.0

Tag_OutValue

5.0

この命令は、「Tag_InValue」オペランドの値の平方根を計算し、結果を「Tag_OutValue」
オペランドに出力します。

1630

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

LN:自然対数の形成

説明「自然対数の形成」命令を使用して、入力値の底 e (e=2.718282)に対する自然対数を計算します。この命令は、入力値がゼロよりも大きい場合に正の結果になります。入力値がゼロ未満の場合、この命令は無効な浮動小数点数を返します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数<Result>

Output浮動小数点数

I、Q、M、D、

入力値の自然対数

L、P
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := LN("Tag_InValue")

この命令は、「Tag_InValue」オペランドの値の自然対数を計算し、結果を「Tag_OutValue」
オペランドに出力します。

EXP:指数値の形成

説明「指数値の形成」命令を使用して、底 e (e = 2,718282)およびオペランドの値から指数を計算します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1631

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

入力値

L、P、または定数<Result>

Output浮動小数点数

I、Q、M、D、

入力値の指数値

L、P
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := EXP("Tag_InValue")

この命令は、底 e および「Tag_InValue」オペランドの値から指数を計算し、結果(eIN)を「Tag_OutValue」オペランドに出力します。

SIN:正弦値の形成

説明「正弦値の形成」命令を使用して、角度の正弦を計算します。角度のサイズが、オペラン
ドでラジアン単位で指定されます。
結果の値は、オペランドが有効な浮動小数点数でない場合、無効です。

1632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P、または定 イズ
数<Result>

Output浮動小数点数

I、Q、M、D、指定された角度の正弦

L、P
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := SIN("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue+1.570796 (π/2)

Tag_OutValue

1.0

この命令は、「Tag_InValue」オペランドで指定された角度の正弦を計算し、結果を「Tag_OutValue」オペランドに出力します。

COS:余弦値の形成

説明「余弦値の形成」命令を使用して、角度の余弦を計算します。角度のサイズが、オペラン
ドでラジアン単位で指定されます。
結果の値は、オペランドが有効な浮動小数点数でない場合、無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1633

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P、または定 イズ
数<Result>

Output浮動小数点数

I、Q、M、D、指定された角度の余弦

L、P
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := COS("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue+1.570796 (π/2)

Tag_OutValue0

この命令は、「Tag_InValue」オペランドで指定された角度の余弦を計算し、結果を「Tag_OutValue」オペランドに出力します。

TAN:正接値の形成

説明「正接値の形成」命令を使用して、角度の正接を計算します。角度のサイズが、オペラン
ドでラジアン単位で指定されます。
結果の値は、オペランドが有効な浮動小数点数でない場合、無効です。

1634

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P、または定 イズ
数<Result>

Output浮動小数点数

I、Q、M、D、指定された角度の正接

L、P
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := TAN("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue+3.141593 (π)

Tag_OutValue0

この命令は、「Tag_InValue」オペランドで指定された角度の正接を計算し、結果を「Tag_OutValue」オペランドに出力します。

ASIN:逆正弦値の形成

説明「逆正弦値の形成」命令を使用して、オペランドで指定された正弦値に対応する角度のサ
イズを計算します。範囲-1～+1 の有効な浮動小数点数のみをオペランドに指定できます。
計算された角度サイズは、-π/2～+π/2 の値の範囲にすることができます。
次のいずれかの条件が満たされる場合、結果の値は無効です。
• オペランドの値が有効な浮動小数点数でないこと。
• オペランドの値が許容値の範囲(-1～+1)外であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1635

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、正弦値

L、P、または定数<Result>

Output浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := ASIN("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

1.0

Tag_OutValue+1.570796 (π/2)

この命令は、「Tag_InValue」オペランドの正弦値に対応する角度のサイズを計算します。
命令の結果は、「Tag_OutValue」オペランドに格納されます。

ACOS:逆余弦値の形成

説明「逆余弦値の形成」命令を使用して、オペランドで指定された余弦値に対応する角度のサ
イズを計算します。範囲-1～+1 の有効な浮動小数点数のみをオペランドに指定できます。
計算された角度サイズは、0～+π の値の範囲にすることができます。
次のいずれかの条件が満たされる場合、結果の値は無効です。
• オペランドの値が有効な浮動小数点数でないこと。
• オペランドの値が許容値の範囲(-1～+1)外であること。

1636

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明<Operand>

Input

浮動小数点数

I、Q、M、D、

余弦値

L、P、または定数<Result>

Output浮動小数点数

I、Q、M、D、

ラジアン単位のL、P

角度のサイズ

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := ACOS("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue0

Tag_OutValue+1.570796 (π/2)

この命令は、「Tag_InValue」オペランドの余弦値に対応する角度のサイズを計算します。
命令の結果は、「Tag_OutValue」オペランドに格納されます。

ATAN:逆正接値の形成

説明「逆正接値の形成」命令を使用して、オペランドで指定された正接値に対応する角度のサ
イズを計算します。オペランドには、有効な浮動小数点数(または-NaN/+NaN)のみを指定することができます。計算された角度サイズは、-π/2～+π/2 の値の範囲にすることができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1637

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

正接値

L、P、または定数<Result>

Output浮動小数点数

I、Q、M、D、

ラジアン単位の角度のサ

L、P

イズ

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := ATAN("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

1.0

Tag_OutValue+0.785398 (π/4)

この命令は、「Tag_InValue」オペランドの正接値に対応する角度のサイズを計算します。
命令の結果は、「Tag_OutValue」オペランドに格納されます。

FRAC:小数部を返す

説明「小数部を返す」命令を使用して、オペランドの値の小数位を求めることができます。たとえば、オペランドに値 123.4567 が含まれている場合、結果は値 0.4567 を返します。
結果の値は、オペランドが有効な浮動小数点数でない場合、無効です。

1638

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

浮動小数点数

I、Q、M、D、小数位を求める入力値。

Input

L、P、または定数
RET_VAL

Output浮動小数点数

I、Q、M、D、

入力値の小数位

L、P
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL FRAC REAL
(IN := "Tag_InValue"
RET_VAL => "Tag_OutValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

2.555

Tag_OutValue

0.555

この命令は、「Tag_InValue」オペランドの値の小数位を「Tag_OutValue」オペランドにコピーします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1639

基本命令
3.5 GRAPH

3.5.2.4

ムーブ操作

Deserialize: 逆シリアル化

説明「逆シリアル化」命令を使用して、PLC データタイプ(UDT)、STRUCT または<データタイプ>
配列のシーケンシャル表示を変換して元に戻し、その内容全体を表示することができます。
PLC データタイプ(UDT)、STRUCT、または<データタイプ>配列のシーケンシャル表示が存在するメモリ領域のデータタイプは BYTE 配列または CHAR 配列であり、バージョン 1.0 の
標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたメモリ領域も許可されています。標準メモリ領域の容量は 64 KB です。変換の前に、十分なメモリ領域が存在することを確認してください。「シリアル化」命令を使用してメモリ領域が埋められる場合でかつ、フィルバイトが挿入された可能性がある場合は、その変換は考慮されません。
配列の下限値を「0」で定義することをお勧めします。そうすれば、配列内のインデック
スが POS パラメータの値に対応するようになるためです。例: ARRAY[0] = POS 0。以下の説
明および例は、これに基づいて形成されています。
この命令では、変換されたデータの複数のシーケンシャル表示をそれらの元の状態に、順を追って変換し直すことができます。
PLC データタイプ(UDT)、STRUCT または<データタイプ>配列の単一のシーケンシャル表示
のみを変換して元に戻す場合は、命令「TRCV:通信接続経由のデータ受信」を指示することもできます。

メモリ領域のサイズ
配置ルールは、最適化されたメモリ領域内の単純な構造体にはフィルバイトが格納されないことを意味します。その結果、最適化されたメモリ領域内の構造体は、標準メモリ領域内よりも小さくなります。構造体配列、およびネストされた構造体には、FILLER バイトが含まれます。複合構造体により多くのスペースが必要となるメモリ領域に関する一般的なルールはありません。
S7-1500 シリーズの CPU への適用事項
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、BOOL の
長さは 1 バイトです。したがって、大部分が BOOL データタイプで構成される構造体は、標準メモリ領域内よりも最適化されたメモリ領域内で大きくなる可能性があります。BOOL
データタイプの割合が低い複合構造体は、標準メモリ領域内よりも最適化されたメモリ領域内で小さくなります。

1640

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

最適化されたメモリ領域
ファームウェアバージョン 4.2 以降の S7-1200 シリーズの CPU の場合、およびファーム
ウェアバージョン 2.0 以降の S7-1500 シリーズの CPU の場合、より大きな構造体を逆シリアル化するために、最適化されたアクセスでシーケンシャル表示のメモリ領域を宣言できます。標準メモリ領域の場合と同様に、シーケンシャル表示の内容は変更されません。
配列内のバイトへのシンボリックアクセスのみ可能です。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

SRC_ARRAY Input

ARRAY[*] of

I、Q、D、FB の 逆シリアル化されるデー

BYTE

ブロックインタ タストリームが保存され

1)

または
ARRAY of CHAR

ーフェース(セク る BYTE 配列またはション Input、CHAR 配列です。

Output、S7-1500:

Static、およびパフォーマンスを最適化

Temp を使用可
能)。
I/O データなし
DEST_VARI

InOut

ABLE

説明

するには、パラメータに
VARIANT ポインタを付加しないでください。

すべてのデータ I、Q、D、FB の 逆シリアル化されるデータイプ

ブロックインタ タが書き込まれるタグ。
ーフェース

S7-1500:

I/O データなし

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1641

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

POS

DINT

I、Q、M、D、L POS パラメータのオペラ

InOut

説明
ンドには、変換済みカス
タマデータによって占有されたバイト数に基づいて、最初のバイトのイン
デックスが格納されます。POS パラメータは、
ゼロベースで計算されます。

RET_VAL

Output

INT

I、Q、M、D、L エラー情報

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

80B0

SRC_ARRAY パラメータと DEST_VARIABLE パラメータのためのメモリ領域がオーバーラップしています。

8136

SRC_ARRAY パラメータのタグが標準アクセスによるブロック内にありません。

8150

SRC_ARRAY パラメータの VARIANT データタイプにゼロポインタが含まれて
います。

8151

SRC_ARRAY パラメータに有効な参照がありません

8153

SRC_ARRAY パラメータのメモリの空き領域が不足しています。

8154

SRC_ARRAY パラメータの無効なデータタイプ

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_VARIABLE パラメータに有効な参照がありません

8382

POS パラメータの値が、配列の限界値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:

1642

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)8136

SRC_ARRAY パラメータでのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:「逆シリアル化」命令 (バージョン 2.1)のパフォーマンスを向上するため、SRC_ARRAY お
よび DEST_VARIABLE パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL Deserialize VARIANT(SRC_ARRAY := "Buffer".Field
DEST_VARIABLE => "Target".Client
POS := #BufferPos
RET_VAL => #Error)

この命令は、「Buffer」タグからのカスタマデータのシーケンシャル表示を逆シリアル化し、「Target」タグに書き込みます。#BufferPos オペランドには、変換済みカスタマデータによって占有されたバイト数に基づいて、最初のバイトのインデックスが格納されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1643

基本命令
3.5 GRAPH

Serialize: シリアル化

説明「シリアル化」命令を使用して、その構造体の部分を失うことなく、複数の PLC データタ
イプ(UDT)、STRUCT または<データタイプ>配列を 1 つのシーケンシャル表示に変換する
ことができます。
この命令を使用して、ユーザプログラムの複数の構造体データ項目を一時的にバッファ(グローバルデータブロックを推奨)に保存し、別の CPU に送信します。変換済みデータを格納するメモリ領域のデータタイプは BYTE 配列または CHAR 配列、かつバージョン 1.0 の標準アクセスで宣言する必要があります。バージョン 2.0 以降では、最適化されたデータも許可されています。ソースデータ領域の FILLER データは、ターゲット配列内では未定義です。
これらは、データ領域の FILLER バイトまたは FILLER ビット(たとえば、ARRAY、STRUCT、または PLC データタイプ(UDT))、または現在使用中でない文字列の文字とすることができます。
標準メモリ領域の容量は 64 KB です。DEST_ARRAY パラメータのオペランドが標準メモリ領域に配置されている場合、標準メモリ領域に関するルールに従って、64 KB よりも大きい
構造体は、シリアル化できません。
配列の下限値を「0」で定義することをお勧めします。そうすれば、配列内のインデック
スが POS パラメータの値に対応するようになるためです。例: ARRAY[0] = POS 0。以下の説
明および例は、これに基づいて形成されています。
POS パラメータのオペランドには、変換済みデータによって使用されるバイト数に関する情報が収納されています。
単一の PLC データタイプ(UDT)、STRUCT または<データタイプ>配列を送信する場合、直接に命令「TSEND:通信接続経由のデータ送信」を呼び出すことができます。

メモリ領域のサイズ
配置ルールは、最適化されたメモリ領域内の単純な構造体にはフィルバイトが格納されないことを意味します。その結果、最適化されたメモリ領域内の構造体は、標準メモリ領域内よりも小さくなります。構造体配列、およびネストされた構造体には、FILLER バイトが含まれます。複合構造体により多くのスペースが必要となるメモリ領域に関する一般的なルールはありません。
S7-1500 シリーズの CPU への適用事項
ブロックプロパティ「最適化ブロックアクセス」が付加されているブロックでは、データ
タイプ BOOL の長さは以降のデータタイプによって異なります。たとえば BYTE が続く場合
は、データタイプ BOOL の長さは 1 バイトとなります。たとえば WORD が続く場合は、デ1644

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
ータタイプ BOOL の長さは 2 バイトとなります。したがって、大部分が BOOL データタイ
プで構成される構造体は、標準メモリ領域内よりも最適化されたメモリ領域内で大きくなる可能性があります。BOOL データタイプの割合が低い複合構造体は、標準メモリ領域内よりも最適化されたメモリ領域内で小さくなります。
このため、シリアル化を行うソースデータ領域は、大きなデータタイプで開始し、Boolean
エレメントで終了することを推奨します。これにより、FILLER ビットを大幅に削減できます。

最適化されたメモリ領域
ファームウェアバージョン 4.2 以降の S7-1200 シリーズの CPU の場合、およびファーム
ウェアバージョン 2.0 以降の S7-1500 シリーズの CPU の場合、より大きな構造体をシリアル化するために、最適化されたアクセスでメモリ領域を宣言できます。標準メモリ領域の場合と同様に、シーケンシャル表示は変更されません。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプSRC_VARIA

すべてのデータ I、Q、D、FB の シリアル化されるタグ。

Input

BLE

タイプ

メモリ領域

説明

ブロックインタ S7-1500:
ーフェース
パフォーマンスを最適化
I/O データなし するには、パラメータに
VARIANT ポインタを付加しないでください。

DEST_ARRA InOut

ARRAY of BYTE

I、Q、D、FB の 生成されたデータストリ

Yまたは ARRAY

ブロックインタ ームが格納される配列。

of CHARーフェース(セク S7-1500:
ション Input、
Output、
Static、および
Temp を使用可
能)。

パフォーマンスを最適化するには、パラメータに
VARIANT ポインタを付加しないでください。

I/O データなし

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1645

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

POS

DINT

I、Q、M、D、L POS パラメータのオペラ

InOut

説明
ンドには、変換済みカス
タマデータが占有しているバイトの総数に基づいて、最初のバイトのイン
デックスが格納されます。POS パラメータは、
ゼロベースで計算されます。

RET_VAL

Output

INT

I、Q、M、D、L エラー情報

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#..
.)
0000

エラーなし

80B0

SRC_VARIABLE パラメータと DEST_ARRAY パラメータのためのメモリ領域がオーバーラップしています。

8150

SRC_VARIABLE パラメータの VARIANT データタイプにゼロポインタが含まれ
ています。

8151

SRC_VARIABLE パラメータに有効な参照がありません

8236

SRC_ARRAY パラメータのタグが標準アクセスによるブロック内にありません。

8250

パラメータ DEST_ARRAY で NULL ポインタが渡されました。

8251

DEST_ARRAY パラメータに有効な参照がありません

8253

パラメータ DEST_ARRAY のタグは、パラメータ SRC_VARIABLE のタグの内容に対して十分なメモリスペースを提供しません。パラメータ POS のタグの入力値により、使用可能なメモリスペースが減少します。パラメータ POS の入力値により、パラメータ DEST_ARRAY のタグ内での開始位置が決定します。

8254

1646

DEST_ARRAY パラメータの無効なデータタイプ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
エラーコ 説明ード*(W#16#..
.)
8382

POS パラメータの値が、配列の限界値外です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。
ファームウェアバージョン 4.2 (S7-1200)および 2.0 (S7-1500)以降の特殊機能:
以下のエラーコードは、意味が異なっています。
エラーコ 説明ード*(W#16#..
.)
8236

DEST_ARRAY パラメータでのメモリ領域へのアクセスが無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。
ファームウェアバージョン 2.8 (S7-1500)以降の特殊機能:「シリアル化」命令(バージョン 2.1)のパフォーマンスを向上するため、SRC_VARIABLE お
よび DEST_ARRAY パラメータには VARIANT ポインタではなく、特定のデータタイプのポインタを付加してください。
この結果、この命令へのエラー応答が異なるものになることにご注意ください。個別のエラーシナリオでは、CPU がエラーコードを出力せず、アクセスエラーによって STOP に切り替わります。これを回避するために、ローカルエラーハンドリングと命令"GET_ERROR"および"GET_ERR_ID"を使用してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL Serialize VARIANT(SRC_VARIABLE := "Source".Client
DEST_ARRAY => "Buffer".Field
POS := #BufferPos
RET_VAL => #Error)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1647

基本命令
3.5 GRAPH
この命令は、「Source」タグからのカスタマデータをシリアル化し、「Buffer」タグにシー
ケンシャル表示を書き込みます。"Buffer".Field オペランドの次の未書き込みバイトのイン
デックスは、#BufferPos オペランドに保存されます。

MOVE_BLK:ブロックの移動

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。ターゲット範囲に移動するエレメントの数は、COUNT パラ
メータで指定されます。移動されるエレメントの幅は、IN パラメータのエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
出力 OUT の値は、入力 IN または出力 OUT で使用可能にされたよりも多くのデータがコピーされた場合、無効です。
注記
配列の使用
この命令は、指定されたインデックスから開始して、ソース範囲から定義されたエレメン
トの内容をターゲット範囲に n 回(n = パラメータ COUNT の値に依存)コピーします。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN 1)

2 進数、整数、D、L

コピーされるソース領域

Input

浮動小数点数、の最初のエレメント

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
COUNT

Input

USINT、UINT、I、Q、M、D、UDINT、ULINT

L、P、または定 ト範囲にコピーするエレ
数

1648

ソース範囲からターゲッ
メントの数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

OUT 1)

2 進数、整数、D、L

ソース範囲の内容がコピOutput浮動小数点数、ーされるターゲット範囲

タイマ、TOD、の最初のエレメント

LTOD、DATE、
CHAR、WCHAR
1)

指定されたデータタイプは、ARRAY 構造体のエレメントとしてしか使用できません。

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL MOVE_BLK INT_UINT(IN := #a_array[2]
COUNT := "Tag_Count"
OUT => #b_array[1])次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY[0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY[0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1649

基本命令
3.5 GRAPH
この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エレメント
を選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。
注記
MOVE_BLK 命令に関する詳細情報については、Siemens Industry Online Support の以下の項目を参照してください。
STEP 7 (TIA ポータル)で、あるデータブロックから別のデータブロックにメモリ領域および構造化データをコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

MOVE_BLK_VARIANT:ブロックの移動

説明「ブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。配列全体または配列のエレメントを同じデータタイプの別の配列にコピーすることができます。ソース配列と宛先配列のサイズ(エレメントの数)は異なる場合があります。配列内の複数エレメントまたは単一エレメントをコピーすることができます。
コピーするエレメントの数は、選択されたソース範囲またはターゲット範囲を超えてはな
りません。
ブロックの作成時にこの命令を使用する場合、VARIANT ごとにソースおよびターゲットが転送されるため、配列はまだ既知である必要はありません。
SRC_INDEX および DEST_INDEX パラメータでのカウントは、配列の後の宣言に関係なく、常に下限値「0」から開始します。
コピーされるデータが使用可能なデータよりも多い場合、この命令は実行されません。

1650

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言
SRC

Input

2)

データタイプ

メモリ領域

説明

VARIANT (配列L (ブロックイン コピー元のソースブロッ

または個々の配 ターフェースの ク
列エレメントを 「Input」、
ポイントする)、「InOut」、およ<Data_type>のび「Temp」セ

配列

クション内で宣
言可能。)

COUNT

Input

UDINT

I、Q、M、D、コピーされるエレメント

L、または定数数
ARRAY がパラメータ SRCまたはパラメータ DESTで指定されていない場合
は、パラメータ COUNTに値「1」を割り当てます。

SRC_INDEX Input

DINT

I、Q、M、D、コピーされる最初のエレ

L、または定数

メントを定義します。
• SRC_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ SRC で指定されると、パラメ
ータ SRC_INDEX の整数はコピー元のソース
領域内の最初のエレメ
ントを指定します。宣
言された配列の限界値には関係ありません。
• Array がパラメータ
SRC で指定されない
か、または配列の 1 つのシングルエレメントのみが指定された場
合、パラメータ
SRC_INDEX に値「0」を割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1651

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

DEST_INDE

DINT

I、Q、M、D、

宛先メモリ領域の開始をL、または定数

定義します。

Input

X• DEST_INDEX パラメー
タは、ゼロベースで計算されます。ARRAY
がパラメータ DEST で指定されると、パラメ
ータ DEST_INDEX の
整数はコピー先のター
ゲット範囲内の最初のエレメントを指定します。宣言された配列の限界値には関係ありません。
• ARRAY がパラメータ
DEST で指定されていない場合は、パラメー
タ DEST_INDEX に値「0」を割り当てます。
DEST

Output 1)

VARIANT

L (ブロックイン ソースブロックの内容がターフェースの コピーされる宛先領域。
「Input」、「InOut」、および「Temp」セクション内で宣言可能。)

RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

1) データがタグに流れるため、DEST パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
2) SRC パラメータでは、BOOL データタイプおよび BOOL の配列は許可されていません。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

1652

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

データタイプが一致していません。ARRAY of Struct の代わりに、PLC データ
タイプ(UDT)の ARRAY を使用してください。

8151

SRC パラメータにアクセスできません。

8152

SRC パラメータのオペランドが入力されていません。

8153

SRC パラメータでコード生成エラーが発生しました

8154

SRC パラメータのオペランドのデータタイプが BOOL です。

8281

COUNT パラメータの値が無効です

8382

SRC_INDEX パラメータの値が、ゼロ未満です。

8383

SRC_INDEX の値が配列の上限値外です。

8482

DEST_INDEX パラメータの値が、ARRAY 制限値外です。

8483

DEST パラメータがポイントする ARRAY が、コピーされるデータに対して小さすぎます。

8534

DEST パラメータが書き込み保護されています

8551

DEST パラメータにアクセスできません。

8552

DEST パラメータのオペランドが入力されていません。

8553

DEST パラメータでコード生成エラーが発生しました

8554

DEST パラメータのオペランドのデータタイプが BOOL です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL MOVE_BLK_VARIANT(SRC := #SrcField

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1653

基本命令
3.5 GRAPH
GRAPH
COUNT := "Tag_Count"
SRC_INDEX := "Tag_Src_Index"
DEST_INDEX := "Tag_Dest_Index"
DEST => #DestField
RET_VAL := "Tag_Result")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

ブロックインターフ オペランド
ェースでの宣言

値

SRC

Input

ローカルオペランド#SrcField#SrcField は、ブロックのプログラミング
時にはまだ不明であった PLC データタイ
プを使用します。
("MOVE_UDT"のARRAY[0..10])
COUNT

Input

Tag_Count2

SRC_INDEX

Input

Tag_Src_Index

3

DEST_INDEX

Input

Tag_Dest_Index

3

DEST

InOut

#DestField

ローカルオペランド#DestField は、ブロックのプログラミン
グ時にはまだ不明であった PLC データタ
イプを使用します。
("MOVE_UDT"のARRAY[10..20])

1654

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
MOVE_UDT の配列[0..10]の 4 番目のエレメントから始めて、2 つのエレメントがソース範囲からターゲット範囲に移動されます。コピーが、MOVE_UDT の配列[10..20]の 4 番目のエレメントから始めて、貼り付けられます。
注記
MOVE_BLK_VARIANT 命令に関する詳細情報については、Siemens Industry Online
Support の以下の項目を参照してください。
STEP 7 (TIA ポータル)で、あるデータブロックから別のデータブロックにメモリ領域および構造化データをコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

UMOVE_BLK:割り込みなしブロック転送

説明「割り込み不可能なブロックムーブ」命令を使用して、メモリ領域(ソース範囲)の内容を別のメモリ領域(ターゲット範囲)に移動します。この命令に割り込みをかけることはできません。ターゲット範囲に移動するエレメントの数は、COUNT パラメータで指定されます。
移動されるエレメントの幅は、IN パラメータのエレメントの幅で定義されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
割り込みなしブロック転送
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込みなしブロック転送」命令の実行中には CPU の割
り込み応答時間が長くなります。
出力 OUT の値は、入力 IN または出力 OUT で使用可能にされたよりも多くのデータがコピーされた場合、無効です。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1655

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

2 進数、整数、D、L

コピーされるソース領域

Input

1)

浮動小数点数、の最初のエレメント

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
COUNTOUT 1)

Input

OutputUSINT, UINT,

I、Q、M、D、UDINT, ULINT

L、P、または定 ト範囲にコピーするエレ

2 進数、整数、

ソース範囲からターゲッ

数

メントの数

D、L

ソース範囲の内容がコピ浮動小数点数、ーされるターゲット範囲

タイマ、TOD、の最初のエレメント

LTOD、DATE、
CHAR、WCHAR
1)

指定されたデータタイプは、ARRAY 構造体のエレメントとしてしか使用できません。

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL UMOVE_BLK INT_UINT(IN := #a_array[2]
COUNT := "Tag_Count"
OUT => #b_array[1])1656

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

a_array[2]「a_array」オペランドのデー
タタイプは ARRAY[0..5] of
INT です。これは、INT デー
タタイプの 6 つのエレメントで構成されます。

COUNT

Tag_Count3

OUTb_array[1]「b_array」オペランドのデー
タタイプは ARRAY[0..6] of
INT です。これは、INT デー
タタイプの 7 つのエレメントで構成されます。

この命令は、3 番目のエレメントから開始して、#a_array タグから 3 つの INT エレメント
を選択し、2 番目のエレメントで開始して、その内容を#b_array 出力タグにコピーします。
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。
注記
UMOVE_BLK 命令に関する詳細情報については、Siemens Industry Online Support の以下の項目を参照してください。
STEP 7 (TIA ポータル)で、あるデータブロックから別のデータブロックにメモリ領域および構造化データをコピーする方法
https://support.industry.siemens.com/cs/ww/en/view/42603881 (https://
support.industry.siemens.com/cs/ww/en/view/42603881)

FILL_BLK:フィル命令

説明「フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。ターゲット範囲は、OUT 出力で指定されたアドレスから開始して埋められます。
コピー操作の繰り返し回数は、COUNT パラメータの値で指定されます。この命令が実行された場合、入力 IN の値が、COUNT パラメータの値で指定された回数だけターゲット範囲に移動されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1657

基本命令
3.5 GRAPH
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
変更されるエレメントの最大数は、配列または構造体内のエレメント数です。OUT 出力でエレメント数よりも多いデータをコピーした場合、意図しない結果が得られます。
注記
配列の使用
この命令は、ソース範囲から選択されたエレメントの内容を読み出し、指定されたインデックスから開始して、宛先にその内容を n 回(n = パラメータ COUNT の値に依存)コピーします。

構造体のフィル
配列のエレメントと同様に、構造体の複数エレメント(STRUCT、PLC データタイプ)を同じ値で埋めることもできます。エレメントを埋める構造体には、同じ基本データタイプの個々のエレメントのみを含める必要があります。ただし、構造体自体を別の構造体に埋め込むことができます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

2 進数、整数、I、Q、M、D、

ターゲット範囲を埋める

Input

浮動小数点数、 L、P、または定 ために使用するエレメン
タイマ、TOD、 数ト

LTOD、DATE、
CHAR、WCHAR
COUNT

Input

USINT、UINT、I、Q、M、D、UDINT、ULINT

L、P、または定 数

ムーブ操作の繰り返し回数
OUT

Output2 進数、整数、浮動小数点数、D、Lフィルが開始するターゲット範囲のアドレス

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

1658

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

配列を使用した例
次の例で、ARRAY を埋めるときに、命令がどのように動作するかを示します。
GRAPH
CALL FILL_BLK INT_UINT(IN := #FillValue
COUNT := "Tag_Count"
OUT => #TargetArea[1])次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。これは、INT データタイプの 5 つのエレメントで構成されます。

この命令は、最初のエレメントから開始して、オペランド#FillValue の値を#TargetArea 出
力タグに 3 回コピーします。

構造体を使用した例
次の例で、構造体を埋めるときに、命令がどのように動作するかを示します。
以下のエレメントを使用してグローバルデータブロックを作成します。
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRUCT1659

基本命令
3.5 GRAPH
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct1 タグをアドレス指定するために、以下のプログラムコードを生成します。
GRAPH
CALL FILL_BLK INT_UINT(IN := 10
COUNT := 2
OUT => "Data_block_1".MyStruct1.Member_2)

MyStruct2 タグをアドレス指定するために、以下のプログラムコード生成します。
GRAPH
CALL FILL_BLK INT_UINT(IN := 10
COUNT := 2
OUT => "Data_block_1".MyStruct2.SubArray[1].NestedStruct.Member_2)

2 つの例のそれぞれにおいて、エレメント Member_2 から開始して、IN パラメータの値 10が OUT パラメータのオペランドに 2 回コピーされます。つまり、値 10 はエレメント
Member_2 および Member_3 にコピーされます。他の 2 つのエレメント Member_1 および Member_4 は変更されません。

1660

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPHUFILL_BLK:割り込み不可フィル命令

説明「割り込み不可フィル」命令を使用して、IN 入力の値でメモリ領域(ターゲット範囲)を埋めることができます。この命令に割り込みをかけることはできません。ターゲット範囲は、OUT 出力で指定されたアドレスから開始して埋められます。コピー操作の繰り返し回数
は、COUNT パラメータの値で指定されます。この命令が実行された場合、入力 IN の値が、
COUNT パラメータの値で指定された回数だけターゲット範囲に移動されます。
この命令は、ソース範囲とターゲット範囲が同じデータタイプの場合にのみ実行できます。
注記
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。このため、「割り込み不可能なフィル」命令の実行中には、CPU のアラーム応答時間が長くなります。
変更されるエレメントの最大数は、配列または構造体内のエレメント数です。OUT 出力でエレメント数よりも多いデータをコピーした場合、意図しない結果が得られます。
注記
配列の使用
この命令は、ソース範囲から選択されたエレメントの内容を読み出し、指定されたインデックスから開始して、宛先にその内容を n 回(n = パラメータ COUNT の値に依存)コピーします。
「割り込み不可フィル」命令を使用して最大 16 KB 移動することができます。この場合、CPU 固有の制限に注意してください。

構造体のフィル
配列のエレメントと同様に、構造体の複数エレメント(STRUCT、PLC データタイプ)を同じ値で埋めることもできます。エレメントを埋める構造体には、同じ基本データタイプの個々のエレメントのみを含める必要があります。ただし、構造体自体を別の構造体に埋め込むことができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1661

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

2 進数、整数、I、Q、M、D、

ターゲット範囲を埋める

Input

浮動小数点数、 L、P、または定 ために使用するエレメン
タイマ、TOD、 数ト

LTOD、DATE、
CHAR、WCHAR
COUNT

Input

USINT, UINT,

I、Q、M、D、UDINT, ULINT

L、P、または定 数

ムーブ操作の繰り返し回数
OUT

Output2 進数、整数、浮動小数点数、D、Lフィルが開始するターゲット範囲のアドレス

タイマ、TOD、LTOD、DATE、
CHAR、WCHAR
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

配列を使用した例
次の例で、ARRAY を埋めるときに、命令がどのように動作するかを示します。
GRAPH
CALL UFILL_BLK INT_UINT(IN := #FillValue
COUNT := "Tag_Count"
OUT => #TargetArea[1])1662TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

IN

FillValue

オペランドのデータタイプ
は INT です。

COUNT

Tag_Count3

OUT

TargetArea

オペランド TargetArea のデータタイプは ARRAY[1..5]of INT です。これは、INT データタイプの 5 つのエレメントで構成されます。

この命令は、最初のエレメントから開始して、オペランド#FillValue の値を#TargetArea 出
力タグに 3 回コピーします。他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。

構造体を使用した例
次の例で、構造体を埋めるときに、命令がどのように動作するかを示します。
以下のエレメントを使用してグローバルデータブロックを作成します。
Data_block_1

データタイプMyStruct1

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRUCT

1663

基本命令
3.5 GRAPH
Data_block_1

データタイプ

SubArray

ARRAY[1..2] of STRUCTSubArray[1]STRUCT

NestedStruct

STRUCT

Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]STRUCT

NestedSTRUCT

StructMember_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct1 タグをアドレス指定するために、以下のプログラムコードを生成します。
GRAPH
CALL UFILL_BLK INT_UINT(IN := 10
COUNT := 2
OUT => "Data_block_1".MyStruct1.Member_2)

MyStruct2 タグをアドレス指定するために、以下のプログラムコード生成します。
GRAPH
CALL UFILL_BLK INT_UINT(IN := 10
COUNT := 2
OUT => "Data_block_1".MyStruct2.SubArray[1].NestedStruct.Member_2)

2 つの例のそれぞれにおいて、エレメント Member_2 から開始して、IN パラメータの値 10が OUT パラメータのオペランドに 2 回コピーされます。つまり、値 10 はエレメント
Member_2 および Member_3 にコピーされます。他の 2 つのエレメント Member_1 および Member_4 は変更されません。

1664

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

SCATTER:ビットシーケンスを個々のビットに解析
SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析

説明「ビットシーケンス配列のエレメントを個々のビットに解析」命令は、BYTE、WORD、
DWORD、または LWORD 配列の 1 つ以上のエレメントを個々のビットに解析し、それらをBOOL 配列、匿名 STRUCT、または Boolean エレメントのみの PLC データタイプに保存します。COUNT_IN パラメータで、ソース ARRAY のエレメントを解析するエレメント数を指定します。IN パラメータのソース ARRAY が、COUNT_IN パラメータで指定されたエレメ
ント数より多くのエレメントを持つ場合があります。BOOL 配列、匿名 STRUCT、またはPLC データタイプは、解析されたビットシーケンスのビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先メモリ領域がこれよりも大きいことがあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:IN パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。OUT パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。WORD 配列は、48の個別のビットに解析されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1665

基本命令
3.5 GRAPH
注記
ターゲット配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは、常に、BYTE、WORD、DWORD、またはLWORD の制限値から開始する必要があります。すなわち、インデックスは、ARRAY の下限値から開始して計算する必要があります。次の式は、この計算の原理として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例は、下記に説明します。
注記
この命令の可用性
この命令は、ファームウェアバージョン 2.1 以降の S7-1500 シリーズの CPU で使用できます。
この方法で、たとえば、ステータスワードを解析し、インデックスを使用して個々のビットのステータスの読み取り/変更を行うことができます。GATHER を使用して、これらのビットをもう 1 度ビットシーケンスに結合することができます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• ソース ARRAY のエレメント数が、 COUNT_IN パラメータで指定されたエレメント数未満であること。
• 宛先 ARRAY のインデックスが、BYTE、WORD、DWORD、または LWORD の制限値から開始されないこと。この場合、結果は ARRAY of BOOL に書き込まれません。
• BOOL の ARRAY[*]、STRUCT、または PLC データタイプが、必要なエレメント数を提供しない場合。この場合、可能な限り多くのビット列が解析され、BOOL 配列、匿名
STRUCT、または PLC データタイプに書き込まれます。残りビットシーケンスは考慮の対象になりません。

1666

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれま
せん。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

<ビットシーケ

I、Q、M、D、L 解析される<ビンス>のットシーケンス

ARRAY[*]のエレ>の ARRAY。

メント

値が I/O 領域
内、またはテクノロジーオブジェクトの DB 内にあってはなりません。

COUNT_IN

Input

USINT, UINT,

I、Q、M、D、L 解析されるソー

UDINT, ULINT

ス配列のエレメ
ント数のカウン
タ。
値が I/O 領域
内、またはテクノロジーオブジ
ェクトのデータ
ベース内にあってはなりません。

OUT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Output

BOOL のI、Q、M、D、L 個々のビットがARRAY[*]、

格納される

STRUCT、またARRAY、

は PLC データタ

STRUCT、またイプのエレメンは PLC データタ

ト

イプ

1667

基本命令
3.5 GRAPH
命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

下限値が「0」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayWord

入力

ARRAY[0..5] of WORD

CounterInput
DestinationArrayBool

UDINT
ARRAY[0..95] of BOOL

出力

次の例で、命令がどのように動作するかを示します。
GRAPH
CALL SCATTER_BLK(IN := #SourceArrayWord[2]
COUNT_IN := #CounterInput
OUT => #DestinationArrayBool[0])次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD すなわち
48 ビットが解析されます。
すなわち、少なくとも 48 ビットが宛先 ARRAY で使用できることが必要です。)

OUT

DestinationArrayBool[0]オペランド「DestinationArrayBool」のデータタイプは
ARRAY[0..95] of BOOL です。すなわち、それは 96 個の BOOL エレメントを提供
します。

1668

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH#SourceArrayWord オペランドの 3 番目、4 番目、および 5 番目の WORD がその個々のビット(48)に解析され、1 番目のエレメントの場合と同様に、#DestinationArrayBool オペラ
ンドの個々のエレメントに割り当てられます。

下限値が「-2」の宛先配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayWord

入力

ARRAY[0..5] of WORD

CounterInput
DestinationArrayBool

UDINT
出力

ARRAY[-2..93] of BOOL

次の例で、命令がどのように動作するかを示します。
GRAPH
CALL SCATTER_BLK(IN := #SourceArrayWord[2]
COUNT_IN := #CounterInput
OUT => #DestinationArrayBool[14])次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayWord[2]ARRAY[0..5] of WORD (96 ビットを解析できます。)

COUNT_IN

CounterInput = 3

UDINT3 (3 WORD すなわち
48 ビットが解析されます。
すなわち、少なくとも 48 ビットが宛先 ARRAY で使用できることが必要です。
)

OUT

DestinationArrayBool[14]オペランド「DestinationArrayBool」のデータタイプは
ARRAY[-2..93] of BOOL です。すなわち、それは 96 個の BOOL エレメントを提供します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1669

基本命令
3.5 GRAPH#SourceArrayWord オペランドの 3 番目、4 番目、５番目の WORD がその個々のビット(48)に解析され、#DestinationArrayBool オペランドの 16 番目以降の個々のエレメントに割り当てられます。残りの 32 ビットは書き込まれません。

GATHER:個々のビットをビットシーケンスに結合

説明「個々のビットをビットシーケンスに結合」命令は、BOOL 配列、匿名 STRUCT、またはBoolean エレメントのみの PLC データタイプのビットをビットシーケンスに結合します。
このビットシーケンスは、データタイプ BYTE、WORD、DWORD、または LWORD のタグに保存されます。
注記
BOOL の多次元配列「個々のビットをビットシーケンスに結合」命令では、多次元 BOOL 配列は使用できません。
注記
ARRAY、STRUCT、または PLC データタイプの長さ
ARRAY、STRUCT、または PLC データタイプは、ビットシーケンスで指定された数と同じ数のエレメントを持つ必要があります。
これは、たとえば、データタイプ BYTE の場合、この ARRAY、匿名 STRUCT、または PLC
データタイプはちょうど 8 つのエレメントを持つ必要がある(WORD = 16、DWORD = 32、および LWORD = 64)ことを示します。
注記
この命令の可用性
この命令は、ファームウェアバージョン 2.1 以降の S7-1500 シリーズの CPU で使用できます。
ARRAY、匿名 STRUCT、または PLC データタイプの BOOL エレメントが、ビットシーケン
スで指定された数よりも少ない、または多い場合、ENO 許可出力はシグナル状態「0」を返します。この場合、BOOL エレメントは転送されません。必要なビット数未満しか使用できない場合も、ENO は「0」を返します。

1670

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

入力

BOOL のI、Q、M、D、L ARRAY、

ARRAY[*]、STRUCT、また

STRUCT、または PLC データタ

は PLC データタ

イプ、ビットシイプーケンスに結合*:8、16、32、されるビット。

または 64 個の値が I/O 領域

エレメント

内、またはテクノロジーオブジェクトの DB 内にあってはなりません。

OUT

BYTE、WORD、 I、Q、M、D、L 結合されたビッ

出力

DWORD、

トシーケンス、

LWORD

タグ内に保存命令ボックスの[???]ドロップダウンリストから、必要なビットシーケンスを選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

ARRAY を使用した例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArray

入力

BOOL 配列[0～15]

DestinationWord

出力

WORD

次の例で、命令がどのように動作するかを示します。
GRAPH
CALL GATHER(IN := #SourceArray
OUT => #DestinationWord)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1671

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArray

オペランド「SourceArray」のデータタイプは
ARRAY[0..15] of BOOL です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

DestinationWord

WORD (16 ビット)

#SourceArray オペランドのビットが、WORD に結合されます。

PLC データタイプ(UDT)での例
PLC データタイプ「myBits」の作成:

ブロックインターフェースで以下のタグを作成します。

1672

タグ

セクション

データタイプ

SourceUDT

入力「myBits」

DestinationWord

出力

WORD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL GATHER(IN := #SourceUDTOUT => #DestinationWord)

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceUDT「SourceUDT」オペランドは
PLC データタイプ(UDT)です。それは 16 個のエレメントから構成されるため、ビットが結合される WORD と同じ大きさです。

OUT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

DestinationWord

WORD (16 ビット)

1673

基本命令
3.5 GRAPHGATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合

説明「個々のビットをビットシーケンス配列のマルチエレメントに結合」命令は、BOOL 配列、
匿名 STRUCT、または Boolean エレメントのみの PLC データタイプを<ビットシーケンス>
配列の 1 つまたは複数のエレメントに結合します。COUNT_OUT パラメータでは、書き込
む宛先 ARRAY のエレメント数を指定します。このステップでは、必要な BOOL 配列、匿名
STRUCT、PLC データタイプのエレメント数も暗黙的に指定します。OUT パラメータの宛先
ARRAY が、COUNT_OUT パラメータで指定されたエレメント数より多くのエレメントを持つ場合があります。<ビットシーケンス>配列は、結合されるビットを保存するのに十分な数のエレメントを持つ必要があります。ただし、宛先 ARRAY のほうが大きい場合もあります。
注記
BOOL の多次元配列
ARRAY が BOOL の多次元配列である場合、明示的に宣言されていなくても、含まれている次元の FILLER ビット配列もカウントされます。
例 1:BOOL の ARRAY[1..10,0..4,1..2]は、BOOL の ARRAY[1..10,0..4,1..8]、または BOOLの ARRAY[0..399]と同様に処理されます。
例 2:OUT パラメータでは、WORD の ARRAY[0..5] (sourceArrayWord[2])が相互接続されます。COUNT_IN パラメータの値は「3」です。IN パラメータでは、BOOL のARRAY[0..1,0..5,0..7] (destinationArrayBool[0,0,0])が相互接続されます。IN パラメータ、および OUT パラメータの両方の配列のサイズが 96 ビットとなります。BOOL 配列から、48 の個別のビットが結合されます。

1674

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
注記
ソース配列の ARRAY 下限値が「0」でない場合は、以下のことに注意してください。
パフォーマンス上の理由から、インデックスは、常に、BYTE、WORD、DWORD、またはLWORD の制限値から開始する必要があります。すなわち、インデックスは、ARRAY の下限値から開始して計算する必要があります。次の式は、この計算の原理として使用されます。
有効なインデックス = ARRAY 下限値 + n(ビットシーケンスの数) × 必要なビットシーケン
スのビット数
BOOL の ARRAY[-2..45]およびビットシーケンス WORD の場合、計算は以下のようになります。
• 有効なインデックス(-2) = -2 + 0 × 16
• 有効なインデックス(14) = -2 + 1 × 16
• 有効なインデックス(30) = -2 + 2 × 16

例は、下記に説明します。
注記
この命令の可用性
この命令は、ファームウェアバージョン 2.1 以降の S7-1500 シリーズの CPU で使用できます。
次のいずれかの条件が満たされる場合、イネーブル出力 ENO はシグナル状態「0」を返します。
• ソース ARRAY のインデックスが、BYTE、WORD、DWORD、または LWORD の制限値から開始されないこと。この場合、結果は<ビットシーケンス>配列に書き込まれません。
• <ビットシーケンス>の ARRAY[*]が、必要なエレメント数を提供しない場合。この場
合、可能な限り多くのビットシーケンスが結合され、<ビットシーケンス>配列に書き込まれます。残りビットは考慮の対象になりません。
注記
S7-1200-CPU:許可出力 ENO = 0
許可出力のシグナル状態が「0」の場合は、出力パラメータ OUT にデータが書き込まれません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1675

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

BOOL のI、Q、M、D、L ビットが結合さ

ARRAY[*]、れる BOOL 配

STRUCT、また列、STRUCT、

は PLC データタ

または PLC デー

イプのエレメンタタイプ(ソース

ト

配列)
値が I/O 領域
内、またはテクノロジーオブジェクトの DB 内にあってはなりません。

COUNT_OUT

Input

USINT, UINT,
UDINT, ULINT

I、Q、M、D、L 記述されるター
ゲット ARRAYのエレメント数のカウンタ。
値が I/O 領域
内、またはテクノロジーオブジ
ェクトのデータ
ベース内にあってはなりません。

OUT

Output<ビットシーケ

I、Q、M、D、L ビットが保存さンス>のれる<ビットシARRAY[*]のエレーケンス>配列

メント(宛先配列)

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

1676

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

下限値が「0」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayBool

入力

ARRAY[0..95] of BOOLCounterOutput
DestinationArrayWord

UDINT
出力

ARRAY[0..5] of WORD

次の例で、命令がどのように動作するかを示します。
GRAPH
CALL GATHER_BLK(IN := #SourceArrayBool[0]COUNT_OUT := #CounterOutput
OUT => #DestinationArrayWord[2])次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[0]オペランド「SourceArrayBool」のデー
タタイプは ARRAY[0..95] of
BOOL です。すなわち、それは、もう 1 度 WORD に結合できる 96 個の BOOL エレメ
ントを提供します。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD が書き込まれます。すなわち、48 ビ
ットがソース ARRAY で使用できることが必要です。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」のデータタイプは ARRAY[0..5]of WORD です。すなわち、6個の WORD エレメントが使用できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1677

基本命令
3.5 GRAPH#SourceArrayBool オペランドの 1 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先 ARRAY の開始位置は、3 番目のエレメントです。すなわち、最初の 16 ビットが宛先配列の 3 番目のワードに、2 番目の
16 ビットが 4 番目のワードに、3 番目の 16 ビットが 5 番目のワードに書き込まれます。

下限値が「-2」のソース配列の例
ブロックインターフェースで以下のタグを作成します。
タグ

セクション

データタイプ

SourceArrayBool

入力

ARRAY[-2..93] of BOOLCounterOutput
DestinationArrayWord

UDINT
ARRAY[0..5] of WORD

出力

次の例で、命令がどのように動作するかを示します。
GRAPH
CALL GATHER_BLK(IN := #SourceArrayBool[14]COUNT_OUT := #CounterOutput
OUT => #DestinationArrayWord[2])1678

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

データタイプIN

SourceArrayBool[14]オペランド「SourceArrayBool」のデー
タタイプは ARRAY[-2..93]
of BOOL です。開始位置が16 番目のエレメントであるため、再度ワードに結合できる 80 個の BOOL エレメン
トのみを使用できます。

COUNT_OUTCounterOutput = 3

UDINT3 (3 WORD が書き込まれます。すなわち、48 ビ
ットがソース ARRAY で使用できることが必要です。)

OUT

DestinationArrayWord[2]オペランド「DestinationArrayWord」のデータタイプは ARRAY[0..5]of WORD です。すなわち、6個の WORD エレメントが使用できます。

#SourceArrayBool オペランドの 16 番目のエレメント以降、48 ビットが#DestinationArrayWord オペランドに結合されます。宛先 ARRAY の開始位置は、3 番目のエレメントです。すなわち、ソース ARRAY の最初の 16 ビットは無視されます。2 番目の
16 ビットが宛先配列の 3 番目のワードに、3 番目の 16 ビットが 4 番目のワードに、4 番
目の 16 ビットが 5 番目のワードに書き込まれます。ソース ARRAY の残りの 64 ビットは考慮されません。

SWAP:スワップ

説明「スワップ」命令を使用して、オペランドのバイトの順序を変更します。
使用されるデータタイプに応じて、アキュムレータ 1 のすべてのバイトまたはアキュムレータ 1 の右のワードのバイトのみをスワップすることができます。
次の図に、データタイプ DWORD のオペランドのバイトをスワップする方法を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1679

基本命令
3.5 GRAPH


,1

 

 
 

 

 

 

 



 

 

 

 

 

 

 

 



 





 

 


 



 
 






287

 



 





 

 

 



 

 



 





 

 


 

 

 





アキュムレータ 1 の右ワードのバイトの順序
データタイプ WORD の場合、アキュムレータ 1 の右ワードのバイトをスワップします。
次の表に、命令の実行前および実行後のアキュムレータ 1 の内容を示します。
ステータス

アキュムレータ 1 のバイト

実行前

A

B

C

D

実行後

A

B

D

C

命令の結果はアキュムレータ 1 の右ワードに保存されます。アキュムレータ 1 の左ワー
ドのバイトは命令に影響されず、変わりません。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域<Operand>

Input

WORD, DWORD, I、Q、M、D、バイトがスワッ

LWORD

プされるオペラ

L、または定数説明

ンド<Result>

Output

WORD, DWORD, I、Q、M、D、L 結果
LWORD

1680

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := SWAP("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

0000

1111

0000

1111

Tag_OutValue

0000

1111

1111

0000

アキュムレータ 1 のすべてのバイトをスワップ
データタイプ DWORD の場合、アキュムレータ 1 のすべてのバイトをスワップします。
次の表に、命令の実行前および実行後のアキュムレータ 1 の内容を示します。
ステータス

アキュムレータ 1 のバイト

実行前

A

B

C

D

実行後

D

C

B

A

命令の結果はアキュムレータ 1 に保存されます。アキュムレータ 2 の内容は変わりません。
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

1111

0000

0000

1111

0000

0000

1111

1111

Tag_OutValue

1111

1111

0000

0000

0000

1111

1111

0000

「Tag_InValue」オペランドのバイトがスワップされ、「Tag_OutValue」オペランドに格納されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1681

基本命令
3.5 GRAPH

配列 DB
ReadFromArrayDB: 配列データブロックからの読み出し
説明「ARRAY データブロックからの読み出し」命令を使用して、配列 DB ブロックタイプのデータブロックからデータを読み出し、宛先領域に書き込みます。
配列データブロックは、1 つの[データタイプ]配列のみで構成されるデータブロックです。
配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、常に下限値「0」から開始します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

DB

DB_ANY

I、Q、M、D、L 読み出されるデータブロ

Input

説明
ック

INDEX

Input

DINT

I、Q、M、D、

読み出される DB 内のエ

L、P、または定 レメント。定数、グロー数

バルタグまたはインデッ
クス値を指定できます。

VALUE

Output 1)

VARIANT

L (ブロックイン 読み出されて出力されるターフェースの 値「一時」セクションで宣言できません。)

RET_VAL

Output

INT

I、Q、M、D、

命令の結果

L、P
1) データがタグに流れるため、VALUE パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

1682

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、書き込み保護されているか、またはロードメモリ内に存在します。

8135

配列データブロックに無効な値が含まれます。

8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が配列の限界値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8452

コード生成エラー

8453

考えられるエラーの原因には、次の 2 つがあります。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。
• 最適化されたアクセスを使用するメモリ領域内に 2 つのタグがありません。メモリ領域アクセスタイプに関する追加情報については、以下を参照
してください。AUTOHOTSPOT*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL ReadFromArrayDB(DB := "ArrayDB"
INDEX := 2
VALUE => "TargetField"
RET_VAL => "TagResult"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1683

基本命令
3.5 GRAPH
GRAPH)

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
INT の配列[0 to 10]データタ
イプの配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、INT データタイプのグロ
ーバルタグです。

「ArrayDB」からエレメントが読み出され、「TargetField」オペランドに書き込まれます。

WriteToArrayDB: 配列データブロックへの書き込み
説明「ARRAY データブロックへの書き込み」命令を使用して、配列 DB ブロックタイプのデー
タブロックにデータを書き込みます。
配列データブロックは、1 つの[データタイプ]配列のみで構成されるデータブロックです。
配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、常に下限値「0」から開始します。

1684

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

DB

DB_ANY

I、Q、M、D、L データが書き込まれるデ

Input

説明
ータブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグまたはイ
ンデックス値を指定でき
ます。

VALUE

Input

VARIANT

L (ブロックイン 書き込まれる値
ターフェースの「一時」セクションで宣言できません。)

RET_VAL

Output

INT

I、Q、M、D、

命令の結果

L、P
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

80B5

コピーが割り込まれました。

8132

データブロックが存在しないか、小さすぎるか、またはロードメモリ内に存在
します。

8134

データブロックが書き込み保護されています。

8135

データブロックが配列データブロックではありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1685

基本命令
3.5 GRAPH
エラーコ
ード*

説明

(W#16#..
.)
8154

データブロックのデータタイプが不正です。

8282

INDEX パラメータの値が配列の限界値外です。

8350

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8352

コード生成エラー

8353

考えられるエラーの原因には、次の 2 つがあります。
• VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。
• 最適化されたアクセスを使用するメモリ領域内に 2 つのタグがありません。メモリ領域アクセスタイプに関する追加情報については、以下を参照
してください。AUTOHOTSPOT*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL WriteToArrayDB(DB := "ArrayDB"
INDEX := 2
VALUE := "SourceField"
RET_VAL => "TagResult")

1686

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

DB

ArrayDB「ArrayDB」オペランドは、
INT の配列[0 to 10]データタ
イプの配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、INT データタイプのグロ
ーバルタグです。

「SourceField」オペランドの値が配列 DB の 2 番目のエレメントに書き込まれます。

ReadFromArrayDBL: ロードメモリの配列データブロックからの読み出し
説明「ロードメモリの ARRAY データブロックからの読み出し」命令を使用して、ロードメモリの配列 DB ブロックタイプのデータブロックからデータを読み出し、宛先領域に書き込みます。
配列データブロックは、1 つの[データタイプ]配列のみで構成されるデータブロックです。
配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、常に下限値「0」から開始します。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。この命令は、BUSY パラメータで信号立ち下がりエッジが検出された場合に終了します。1 プログラムサイクルの間、DONE
パラメータのシグナル状態が「1」になり、このサイクル内に、読み取られた値が VALUE
パラメータに出力されます。他のすべてのプログラムサイクルでは、VALUE パラメータの値は変更されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1687

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、

REQ =「1」:配列 DB の読

L、または定数

み出しから開始

DB 1)

Input
Input

DB_ANY

I、Q、M、D、L 読み出される配列データ
ブロック。

INDEX

Input

DINT

I、Q、M、D、

読み出される DB 内のエ

L、P、または定 レメント。定数、グロー数

バルタグまたはインデッ
クス値を指定できます。

VALUE 1)InOut

VARIANTD (グローバルデ 読み出し元のワークメモ
ータブロックの リの DB へのポインタおエレメント)

よび書き込まれる値へのL (ブロックイン ポインタ。
ターフェースの TEMP セクションのロー「一時」セクシ

カル定数またはタグは、ョンで宣言でき 使用する必要がありませ
ません。)
BUSY

OutputBOOLん。

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ読み出し中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

ERROR

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、ERROR パ
ラメータにエラーコードが出力されます。

1)

データブロックは、「最適化済み」ブロックプロパティを使用して作成する必要があり

ます。

1688

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ ERROR
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が配列の限界値外です。

8750

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。
命令「READ_DBL」および「WRIT_DBL」によってトリガされるエラーコードの説明については、対応する命令の記述を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL ReadFromArrayDBL DB_ANY, "ReadFromArrayDBL_DB"(REQ := "TagReg"
DB := "ArrayDB"
INDEX := 2
VALUE := "TargetField"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1689

基本命令
3.5 GRAPH
GRAPH
BUSY => "TagBusy"
DONE => "TagDone"ERROR => "TagError")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
INT の配列[0 to 10]データタ
イプの配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

TargetField「TargetField」オペランド
は、INT データタイプのグロ
ーバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDone

BOOL

この命令は、「TagReq」オペランドで信号立ち上がりエッジが検出されたときに実行されます。「ArrayDB」から 2 番目のエレメント読み出され、VALUE パラメータに出力されます。
「TagBusy」オペランドで信号立ち下がりエッジが検出された場合、すぐに命令は終了し、VALUE パラメータの値はもう変更されません。この命令が処理された後、「TagDone」オ
ペランドのシグナル状態は TRUE になります。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

WriteToArrayDBL: ロードメモリの配列データブロックへの書き込
み説明「ロードメモリの ARRAY データブロックへの書き込み」命令を使用して、ロードメモリの配列 DB ブロックタイプのデータブロックにデータを書き込みます。

1690

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
配列データブロックは、1 つの[データタイプ]配列のみで構成されるデータブロックです。
配列のエレメントは、PLC データタイプまたはその他の基本データタイプにすることができます。配列のカウントは、常に下限値「0」から開始します。
配列データブロックに「ロードメモリにのみ保存」ブロック属性が指定されている場合は、
ロードメモリにのみ保存されます。
この命令は、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
BUSY パラメータのシグナル状態が「1」になります。BUSY パラメータで信号立ち下がり
エッジが検出された場合、命令は終了し、VALUE パラメータの値がデータブロックに書き込まれます。DONE1 パラメータで信号立ち下がりエッジが検出された場合、命令は終了し、パラメータの値がデータブロックに書き込まれます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、

REQ =「1」:配列 DB へのL、または定数

書き込みを開始

DB 1)

Input
Input

DB_ANY

I、Q、M、D、L データが書き込まれる配列データブロック

INDEX

Input

DINT

I、Q、M、D、データが書き込まれる DB

L、P、または定 内のエレメント。定数、数

グローバルタグまたはイ
ンデックス値を指定できます。

VALUE 1)Input

VARIANTD (グローバルデ 読み出し元のワークメモ
ータブロックの リの DB へのポインタおエレメント)

よび書き込まれる値へのL (ブロックイン ポインタ。
ターフェースの TEMP セクションのロー「一時」セクシ

カル定数またはタグは、ョンで宣言でき 使用する必要がありませ
ません。)
BUSY

OutputBOOLん。

I、Q、M、D、L BUSY =「1」:配列 DB は
まだ書き込み中です

DONE

Output

BOOL

I、Q、M、D、L DONE =「1」:命令が正常に実行されました

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1691

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

ERROR

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがOutput

発生した場合、ERROR パ
ラメータにエラーコードが出力されます。
1)

データブロックは、「最適化済み」ブロックプロパティを使用して作成する必要があります。

パラメータ ERROR
次の表に、ERROR パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

80B4

配列データブロックに保存されたエレメントのデータタイプが、VARIANT で転送されるエレメントのデータタイプと一致しません。

8230

データブロックが番号が不正です。

8231

データブロックが存在しません。

8232

データブロックが小さすぎるか、またはロードメモリ内に存在しません。

8234

データブロックが書き込み保護されています。

8235

データブロックが配列 DB ではありません。

8254

データブロックのデータタイプが不正です。

8382

INDEX パラメータの値が配列の限界値外です。

8450

VALUE パラメータのデータタイプ VARIANT が、値「0」を提供します。

8751

コード生成エラー

8752

コード生成エラー

8753

VALUE パラメータのサイズが、配列データブロックのエレメントの長さと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

1692

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
命令「READ_DBL」および「WRIT_DBL」によってトリガされるエラーコードの説明については、対応する命令の記述を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL WriteToArrayDBL DB_ANY, "WriteToArrayDBL_DB"(REQ := "TagReg"
DB := "ArrayDB"
INDEX := 2
VALUE := "SourceField"
BUSY => "TagBusy"
DONE => "TagDone"ERROR => "TagError")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

REQ

TagReqBOOL

DB

ArrayDB「ArrayDB」オペランドは、
INT の配列[0 to 10]データタ
イプの配列 DB です。

INDEX

2

「ArrayDB」の 2 番目のエレ
メント

VALUE

SourceField「SourceField」オペランド
は、INT データタイプのグロ
ーバルタグです。

BUSY

TagBusy

BOOL

DONE

TagDone

BOOL

この命令は、「TagReq」オペランドで信号立ち上がりエッジが検出されたときに実行されます。「TagBusy」オペランドで信号立ち下がりエッジが検出された場合、すぐに命令は終了し、VALUE パラメータの値が「ArrayDB」の 2 番目のエレメントに書き込まれます。この命令が処理された後、「TagDone」オペランドのシグナル状態は TRUE になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1693

基本命令
3.5 GRAPH

下記も参照
同期命令と非同期命令の相違 (ページ 29)

レガシー

BLKMOV:ブロックの移動

説明「ブロックの移動」命令を使用して、メモリ領域(ソース領域)の内容を別のメモリ領域(宛先領域)に移動します。ムーブ操作は、アドレスの昇順方向に行われます。VARIANT を使用
して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域内でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)および出力(Q)に適用されます。
ただし、命令のタグが保持設定「IDB に設定」で宣言されている場合は、「最適化ブロックアクセスを使用する」メモリ領域でこのタグを使用することもできます。
次の図に、ムーブ操作の原理を示します。

'%'%:$%'%'%:&''%'%:()'%'%:

*

+

䲊╤
䲊╤㝜⇫ቒᇬቿኦዉኖቑ㢖檕㡈⚠቎嫛ቲቯቡሼᇭ

0:

$

%

0:

&

'

0:

(

)

0:

*

+

ኾ኿዇檧⩮

1694

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

ソース領域および宛先領域の整合性「ブロックの移動」命令の実行中にソースデータが変更されないことを確認してください。
変更があった場合、宛先データの整合性は保証できません。

割り込み機能ネストレベルに対する制限はありません。

メモリ領域「ブロックの移動」命令を使用して、次のメモリ領域を移動します。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。ソース領域と宛先領域の長さが異なる
場合、小さな領域の長さのみが移動します。
ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。
宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。

文字列の移動のルール
STRING データタイプのソース領域および宛先領域の移動に「ブロックムーブ」命令を使用することも可能です。ソース領域のみが STRING データタイプの場合、文字列に実際に含まれている文字が移動します。実際の長さおよび最大長に関する情報も、宛先領域に書き込まれます。ソース領域と宛先領域の両方が STRING データタイプの場合、宛先領域内の文
字列の現在の長さが、実際に移動する文字数にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1695

基本命令
3.5 GRAPH
文字列の最大長および実際の長さに関する情報を移動するには、SRCBLK および DSTBLK パ
ラメータにバイト単位で領域を指定します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

SRCBLK

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがRET_VAL

Input
Output

INT

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。
DSTBLK

Output

VARIANT 1)

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定します。

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

8092

ソース領域または宛先領域は、ロードメモリのみで使用できます。

8152

WSTRING、WCHAR、BOOL および ARRAY of STRING データタイプは、
SRCBLK パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

1696

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
エラーコー 説明ド*
(W#16#...)
一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL BLKMOV VARIANT(SRCBLK := P#M100.0 BYTE 10
RET_VAL => "Tag_ErrorCode"DSTBLK => P#DB1.DBX0.0 BYTE 10)

この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ムーブ操
作中にエラーが発生した場合、「Tag_ErrorCode」タグにエラーコードが出力されます。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 1732)

UBLKMOV:割り込みなしブロック転送

説明「割り込み不可能なブロックの移動」命令を使用して、メモリ領域(ソース領域)の内容を別のメモリ領域(宛先領域)に移動します。ムーブ操作は、アドレスの昇順方向に行われます。
VARIANT を使用して、ソース領域と宛先領域を定義します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1697

基本命令
3.5 GRAPH
他のオペレーティングシステムのアクティビティによって、ムーブ操作に割り込みをかけることはできません。結果として、「割り込みなしブロック転送」命令の実行中には CPU の割り込み応答時間が長くなります。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域内でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)および出力(Q)に適用されます。
ただし、命令のタグが保持設定「IDB に設定」で宣言されている場合は、「最適化ブロックアクセスを使用する」メモリ領域でこのタグを使用することもできます。

メモリ領域「割り込み不可能なブロックムーブ」命令を使用して、次のメモリ領域を移動します。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則「割り込みなしブロック転送」命令の実行中は、ソース領域および宛先領域が重複してはなりません。ソース領域が宛先領域よりも小さい場合、ソース領域全体が宛先領域に書き込まれます。宛先領域の残りのバイトは変更されません。
宛先領域がソース領域よりも小さい場合、宛先領域全体が書き込まれます。ソース領域の残りのバイトは無視されます。
仮パラメータとして定義されたソース領域または宛先領域が、SRCBLK または DSTBLK パ
ラメータで指定された宛先領域またはソース領域よりも小さい場合、データは転送されません。
BOOL データタイプのブロックを移動する場合、タグを絶対アドレス指定する必要があり、かつ領域の指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行できません。
「割り込み不可能なブロックムーブ」命令を使用して最大 16 KB を移動することができます。
この場合、CPU 固有の制限に注意してください。

1698

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

文字列の移動のルール「割り込み不可能なブロックムーブ」命令を使用して、データタイプ STRING のソース領域
および宛先領域を移動することもできます。ソース領域のみが STRING データタイプの場
合、文字列に実際に含まれている文字が移動します。実際の長さおよび最大長に関する情報
は、宛先領域には書き込まれません。ソース領域と宛先領域の両方が STRING データタイ
プの場合、宛先領域内の文字列の現在の長さが、実際に移動する文字数にセットされます。
STRING データタイプの領域を移動する場合、領域の長さとして「1」を指定します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

SRCBLK

VARIANT

I、Q、M、D、

移動元のメモリ領域(ソーL、Pス領域)を指定します。

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーがRET_VAL

Input
Output

INT

発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。
DSTBLK

Output 1)

VARIANT

I、Q、M、D、ブロックの移動先のメモ

L、P

リ領域(宛先領域)を指定します。

1) データがタグに流れるため、DSTBLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

8091

ソース領域または宛先領域は、ロードメモリのみで使用できます。

8152

WSTRING、WCHAR、BOOL および ARRAY of STRING データタイプは、
SRCBLK パラメータではサポートされていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1699

基本命令
3.5 GRAPH
エラーコー 説明ド*
(W#16#...)8352

WSTRING、WCHAR、BOOL および ARRAY of STRING データタイプは、
DSTBLK パラメータではサポートされていません。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL UBLKMOV VARIANT(SRCBLK := P#M100.0 BYTE 10
RET_VAL => "Tag_ErrorCode"DSTBLK => P#DB1.DBX0.0 BYTE 10)

この命令は、MB100 から開始して 10 バイトをコピーし、DB1 に書き込みます。ムーブ操
作中にエラーが発生した場合、「Tag_ErrorCode」タグにエラーコードが出力されます。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 1732)

FILL:フィル命令

説明「フィル」命令を使用して、メモリ領域(宛先領域)を別のメモリ領域(ソース領域)の内容によって埋めます。「フィル」命令は、宛先領域がすべて書き込まれるまでソース領域の内容
を宛先領域に移動します。ムーブ操作は、アドレスの昇順方向に行われます。

1700

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
VARIANT を使用して、ソース領域と宛先領域を定義します。
注記
この命令のタグは、「最適化ブロックアクセス」属性が有効になっていないメモリ領域内でのみ使用可能です。これは、データブロック(DB)、オーガニゼーションブロック(OB)、ファンクション(FC)、ビットメモリ(M)、入力(I)および出力(Q)に適用されます。
ただし、命令のタグが保持設定「IDB に設定」で宣言されている場合は、「最適化ブロックアクセスを使用する」メモリ領域でこのタグを使用することもできます。
「最適化したブロックアクセス属性を持つブロックの場合、命令「FILL_BLK:フィル」命令を使用できます。
次の図に、ムーブ操作の原理を示します。
),//

%9$/

$

%

0:

$

%

0:

&

'

0:

&

'

0:

(

)

0:

(

)

0:

*

+

0:

*

+

0:

$

%

0:

&

'

0:

(

)

0:

*

+

0:

$

%

0:

&

'

0:

%/.

例:MW100～MW118 の範囲の内容は、メモリワード MW14～MW20 の内容で事前割り当てされます。

ソース領域および宛先領域の整合性「フィル」命令の実行中にソースデータが変更されないことを確認してください。変更されると、宛先データの整合性を保証できなくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1701

基本命令
3.5 GRAPH

メモリ領域「フィル」命令を使用して、以下のメモリ領域を移動することができます。
• データブロックの領域• ビットメモリ• プロセスイメージ入力• プロセスイメージ出力

移動全般の規則
ソース領域と宛先領域は重複しないようにします。プリセットする宛先領域が BVAL 入力
パラメータの長さの整数倍ではなくても、宛先領域は最後のバイトまで書き込まれます。
プリセットする宛先領域がソース領域よりも小さい場合は、ソース領域に含まれているデータのうち、宛先領域に書き込める量のみがコピーされます。
実際に存在する宛先領域またはソース領域がソース領域または宛先領域に割り当てられた
メモリ領域よりも小さい場合(BVAL、BLK パラメータ)、データは転送されません。
ANY ポインタ(ソースまたは宛先)がデータタイプ BOOL の場合、これを絶対アドレス指定する必要があり、かつ指定された長さは 8 で割り切れる必要があります。割り切れないと、この命令は実行されません。
宛先領域が STRING データタイプの場合、この命令は管理情報を含む文字列全体を書き込みます。

構造体移動のルール
構造体を入力パラメータとして転送するとき、構造体の長さが常に偶数バイト数になっているように注意する必要があります。構造体を奇数バイトによって宣言する場合は、追加の1 バイトが必要になります。

1702

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

BVAL

VARIANT

I、Q、M、D、その内容に内容が BLK パ

L、P

ラメータの宛先領域を埋Inputめるのに使用されるメモ
リ領域(ソース領域)の指定。
RET_VAL

Output

INT

I、Q、M、D、

エラー情報:

L、P

命令の実行中にエラーが発生した場合、RET_VAL
パラメータにエラーコー
ドが出力されます。

BLK

Output 1)

VARIANT

I、Q、M、D、

ソース領域の内容で埋めL、Pられるメモリ領域の指定。

1) データがタグに流れるため、BLK パラメータは Output として宣言されます。ただし、タグ自体はブロックインターフェースで InOut として宣言される必要があります。

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコード 説明*(W#16#...)
0000

エラーなし

8092

ソース領域または宛先領域は、ロードメモリのみで使用できます。

8152

WSTRING、WCHAR、BOOL および ARRAY of STRING データタイプは、
BVAL パラメータではサポートされていません。

8352

WSTRING、WCHAR、BOOL および ARRAY of STRING データタイプは、BLK
パラメータではサポートされていません。

一般エラー情 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1703

基本命令
3.5 GRAPH

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL FILL VARIANT(BVAL := P#M14.0 WORD 4
RET_VAL => "Tag_ErrorCode"BLK => P#M100.0 WORD 10)

この命令は、ソース領域 MW14～MW20 をコピーし、BVAL パラメータのメモリ領域に含まれる 4 ワードの内容で宛先領域 MW100～MW118 を埋めます。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 1732)

3.5.2.5

変換操作

CONVERT: 変換データ

説明「値の変換」命令を使用して、オペランドの内容を読み出し、割り当てられたデータタイ
プに従って変換します。
実行可能な変換に関する情報は、「関連項目」の「明示的な変換」のセクションを参照してください。
結果の値は、オーバーフローなどのエラーが処理中に発生した場合、無効です。

1704

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域<Operand> Input

2 進数、 整数、 I、Q、M、D、

説明
変換する値

浮動小数点数、 L、P、または定
CHAR、

数

WCHAR、
BCD16、BCD32<Result>

Output2 進数、 整数、 I、Q、M、D、

変換の結果

浮動小数点数、 L、P
CHAR、
WCHAR、
BCD16、BCD32
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := INT_TO_DINT("Tag_InValue")「Tag_InValue」オペランドの内容が読み出され、整数(32 ビット)に変換されます。結果が「Tag_OutValue」オペランドに格納されます。

ROUND: 数値の四捨五入

説明「数値の四捨五入」命令を使用して、オペランドの値を近似の整数に四捨五入します。この
命令は値を浮動小数点数として解釈し、浮動小数点数の値を隣の整数に変換します。入力値が偶数と奇数のちょうど間にある場合、偶数が選択されます。
結果の値は、オーバーフローなどのエラーが処理中に発生した場合、無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1705

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、四捨五入される入力値

L、P、または定数<Result>

Output整数、浮動小数 I、Q、M、D、
点数

丸めの結果

L、P

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := ROUND("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

1.50000000-1.50000000

Tag_OutValue

2-2「Tag_InValue」オペランドの浮動小数点数は、最も近い偶数の整数に四捨五入され、「Tag_OutValue」オペランドに出力されます。

CEIL: 浮動小数点数から次に大きい整数を生成

説明「浮動小数点数から次に大きい整数を生成」命令を使用し、オペランドの値を次に大きい整数に四捨五入します。この命令は、値を浮動小数点数として解釈し、この数を次に大きい
整数に変換します。結果は、入力値以上になることがあります。
結果の値は、オーバーフローなどのエラーが処理中に発生した場合、無効です。

1706

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

浮動小数点数としての入

L、P、または定 力値
数<Result>

Output整数、浮動小数 I、Q、M、D、点数

次に大きい整数の場合の

L、P

結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := CEIL("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

0.50000000-0.50000000

Tag_OutValue

10「Tag_InValue」オペランドの浮動小数点数は、次に大きい整数に四捨五入され、「Tag_OutValue」オペランドに出力されます。

FLOOR: 浮動小数点数から次に小さい整数を生成

説明「浮動小数点数から次に小さい整数を生成」命令を使用し、オペランドの値を次に小さい整数に変換します。この命令は、値を浮動小数点数として解釈し、この数を次に小さい整数に変換します。結果は、入力値以下になることがあります。
結果の値は、オーバーフローなどのエラーが処理中に発生した場合、無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1707

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

浮動小数点数としての入

L、P、または定 力値
数<Result>

Output整数、浮動小数 I、Q、M、D、
点数

次に小さい整数の場合の

L、P

結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := FLOOR("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

0.50000000-0.50000000

Tag_OutValue

0-1「Tag_InValue」オペランドの浮動小数点数は、次に小さい整数に四捨五入され、「Tag_OutValue」オペランドに出力されます。

TRUNC: 値の切り捨て

説明「数値を切り捨てる」命令を使用して、オペランドの値から整数を形成することができます。値は、浮動小数点数として解釈されます。この命令は、浮動小数点数の整数部のみを選択し、それを結果として小数位なしで出力します。
結果の値は、オーバーフローなどのエラーが処理中に発生した場合、無効です。

1708

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Input

浮動小数点数

I、Q、M、D、

浮動小数点数としての入L、または定数

力値<Result>

Output整数、浮動小数 I、Q、M、D、L 浮動小数点数の整数部分
点数の結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := TRUNC("Tag_InValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

1.50000000-1.50000000

Tag_OutValue

1-1「Tag_InValue」オペランドの浮動小数点数の整数部が、整数に変換され、「Tag_OutValue」
オペランドに出力されます。

SCALE_X:スケール

説明「スケール」命令を使用して、VALUE パラメータの値を指定した値の範囲にマッピングしてスケーリングします。命令が実行されると、VALUE 入力の浮動小数点値が、MIN および
MAX パラメータによって定義された値の範囲にスケーリングされます。スケーリングの結果は整数になり、OUT 出力に保存されます。
次の図に、値をどのようにスケーリングできるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1709

基本命令
3.5 GRAPH

0$;
287
0,1



⊳

「スケール」命令は、以下の等式で機能します。
OUT = [VALUE ∗ (MAX – MIN)] + MIN
次のいずれかの条件が満たされる場合、結果の値は無効です。
• MIN パラメータの値が、MAX パラメータの値以上であること。
• 指定した浮動小数点数の値が、IEEE-754 に従い正規化された数の範囲外であること。
• オーバーフローが発生していること。
• VALUE パラメータの値が NaN (Not a Number = 無効な算術演算の結果)であること。
注記
アナログ値の変換についての詳細については、それぞれのマニュアルを参照してください。

1710

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプMIN

整数、浮動小数 I、Q、M、D、

Input

VALUE

Input

メモリ領域

説明
値の範囲の下限値

点数

L、または定数

浮動小数点数

I、Q、M、D、

スケーリングされる値

L、または定数定数を入力する場合は、それを宣言する必要があ
ります。

MAX

Input

整数、浮動小数 I、Q、M、D、
点数

RET_VAL

Output値の範囲の上限値

L、または定数

整数、浮動小数 I、Q、M、D、L スケーリングの結果
点数

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL SCALE_X INT_REAL(MIN := "Tag_Minimum"
VALUE := "Tag_Value"
MAX := "Tag_Maximum"
RET_VAL => "Tag_OutputValue")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MIN

Tag_Minimum

10

VALUE

Tag_Value

0.5

MAX

Tag_Maximum

30

RET_VAL

Tag_ReturnValue

20

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1711

基本命令
3.5 GRAPH「Tag_Value」パラメータの値が、「Tag_Minimum」および「Tag_Maximum」パラメータの値によって定義された値の範囲にスケーリングされます。結果が「Tag_ReturnValue」パ
ラメータに保存されます。

NORM_X:正規化

説明「正規化」命令を使用して、VALUE パラメータの値をリニアスケーリングにマッピングして正規化します。MIN および MAX パラメータを使用し、スケーリングに適用する値の範囲の限界を定義します。正規化される値のこの値の範囲内の位置に応じて結果が計算され、OUT
パラメータに浮動小数点数として保存されます。正規化される値が MIN パラメータの値に等しい場合、OUT パラメータの値は「0.0」になります。正規化される値が MAX パラメータの値に等しい場合、OUT パラメータの値は「1.0」になります。
次の図に、値が正規化される例を示します。


287

0,1

0$;
⊳

「正規化」命令は、以下の等式で機能します。
OUT = (VALUE – MIN) / (MAX – MIN)
次のいずれかの条件が満たされる場合、結果の値は無効です。
• MIN パラメータの値が、MAX パラメータの値以上であること。
• 指定した浮動小数点数の値が、IEEE-754 に従い正規化された数の範囲外であること。

1712

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH• オーバーフローが発生していること。
• VALUE パラメータの値が NaN (Not a Number = 無効な算術演算の結果)であること。
注記
アナログ値の変換についての詳細については、それぞれのマニュアルを参照してください。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

MIN 1)

整数、浮動小数 I、Q、M、D、

Input

点数
VALUE 1)

Input
Input

RET_VAL1)

Output説明
値の範囲の下限値

L、または定数

整数、浮動小数 I、Q、M、D、
点数

MAX 1)

メモリ領域

正規化する値

L、または定数

整数、浮動小数 I、Q、M、D、値の範囲の上限値

点数

L、または定数

浮動小数点数

I、Q、M、D、L 正規化の結果

これらの 3 つのパラメータで定数を使用する場合は、そのいずれかを宣言するのみで済みます。
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。
定数の宣言の詳細については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL NORM_X INT_REAL(MIN := "Tag_Minimum"
VALUE := "Tag_Value"
MAX := "Tag_Maximum"
RET_VAL => "Tag_OutputValue")

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1713

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

MIN

Tag_Minimum

10

VALUE

Tag_Value

20

MAX

Tag_Maximum

30

RET_VAL

Tag_ReturnValue

0.5「Tag_Value」パラメータの値が、「Tag_Minimum」および「Tag_Maximum」パラメータを使用して定義された値の範囲に割り当てられます。「Tag_Value」パラメータのタグ値が、定義された値の範囲に従って正規化されます。結果が、浮動小数点数として「Tag_ReturnValue」パラメータに保存されます。

レガシー

SCALE:スケール

説明[スケール]命令を使用して、IN パラメータの整数を下限値と上限値の間の物理単位でスケーリングできる浮動小数点数に変換します。LO_LIM および HI_LIM パラメータを使用し、入力値をスケーリングする範囲の下限値と上限値を指定します。命令の結果は、OUT パ
ラメータに出力されます。
「スケール」命令は、以下の等式で機能します。
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値がバイポーラで、-27 648～27 648 の値範囲にあると想定されます。この場合、定数「K1」の値は「-27 648.0」となり、定数「K2」の値は「+27 648.0」となります。
• シグナル状態「0」:IN パラメータの値がユニポーラで、0～27 648 の値範囲にあると想定されます。この場合、定数「K1」の値は「0.0」となり、定数「K2」の値は「+27 648.0」となります。
IN パラメータの値が定数値「K2」よりも大きい場合、命令の結果が上限値(HI_LIM)にセッ
トされ、エラーが出力されます。

1714

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
IN パラメータの値が定数値「K1」未満の場合、命令の結果が下限値(LO_LIM)にセットされ、エラーが出力されます。
指定された下限値が上限値よりも大きい(LO_LIM >HI_LIM)場合、結果は入力値に反比例してスケーリングされます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

INT

I、Q、M、D、

スケーリングす

L、P、または定 る入力値。
数
HI_LIM

Input

REAL

I、Q、M、D、上限値

L、P、または定数
LO_LIM

Input

REAL

I、Q、M、D、下限値

L、P、または定
数BIPOLAR

Input

BOOL

I、Q、M、D、IN パラメータのL、または定数値をバイポーラ
として解釈する
か、またはユニ
ポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

RET_VAL

Output

WORD

I、Q、M、D、

エラー情報

L、P
OUT

OutputREAL

I、Q、M、D、

命令の結果

L、P

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1715

基本命令
3.5 GRAPH

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

0008

IN パラメータの値が定数値「K2」を超えているか、または定数値「K1」未満になっています。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL SCALE(IN := "Tag_InputValue"
HI_LIM := "Tag_HighLimit"
LO_LIM := "Tag_LowLimit"
BIPOLAR := "Tag_Bipolar"
RET_VAL => "Tag_ErrorCode"OUT => "Tag_OutputValue")

次の表に、実行前の各種オペランドの値を示します。

1716

パラメータ

オペランド

値

IN

Tag_InputValue

22

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue

0.0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、実行後の各種オペランドの値を示します。
パラメータ

オペランド

値

IN

Tag_InputValue

22

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue

50.03978588「Tag_InputValue」オペランドは、変換されてスケーリングされる値を示します。上限値と下限値が、「Tag_HighLimit」および「Tag_LowLimit」オペランドによって定義されます。
オペランド「Tag_Bipolar」 = TRUE を使用して、IN パラメータの値がバイポーラとして解釈されるように指定します。命令の結果は、「Tag_OutputValue」オペランドに出力されます。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 1732)

UNSCALE:スケール解除

説明「スケール解除」命令を使用して、IN パラメータの浮動小数点数を下限値と上限値間の物
理単位にスケーリング解除し、それらを整数に変換します。LO_LIM および HI_LIM パラメータを使用して、入力値をスケーリング解除する範囲の下限値と上限値を指定します。命令
の結果は、OUT パラメータに出力されます。
「スケール解除」命令は、以下の等式で機能します。
OUT = [((IN–LO_LIM)/(HI_LIM–LO_LIM)) ∗ (K2–K1) ] + K1

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1717

基本命令
3.5 GRAPH
定数「K1」および「K2」の値は、BIPOLAR パラメータのシグナル状態で決定されます。
BIPOLAR パラメータでは、以下のシグナル状態が可能です。
• シグナル状態「1」:IN パラメータの値がバイポーラで、-27 648～27 648 の値範囲にあると想定されます。この場合、定数「K1」の値は「-27 648.0」となり、定数「K2」の値は「+27 648.0」となります。
• シグナル状態「0」:IN パラメータの値がユニポーラで、0～27 648 の値範囲にあると想定されます。この場合、定数「K1」の値は「0.0」となり、定数「K2」の値は「+27 648.0」となります。
パラメータ IN の値が HI_LIM および LO_LIM によって定義された限界値内にないときは、エラーが出力され、結果は最も近い限界値に設定されます。
示された下限値が上限値よりも大きい場合(LO_LIM > HI_LIM)、結果は入力値に逆の割合でスケーリングされます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

REAL

I、Q、M、D、整数値にスケー

L、P、または定 リング解除する
HI_LIM

Input

REAL

数

入力値。

I、Q、M、D、上限値

L、P、または定数
LO_LIM

Input

REAL

I、Q、M、D、下限値

L、P、または定
数1718

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ

宣言

データタイプ

メモリ領域

説明

BIPOLAR

Input

BOOL

I、Q、M、D、IN パラメータのL、または定数値をバイポーラ
として解釈する
か、またはユニ
ポーラとして解釈するかを示します。以下のパラメータ値が想定されます。
1:バイポーラ
0:ユニポーラ

RET_VAL

Output

WORD

I、Q、M、D、

エラー情報

L、P
OUT

Output

INT

I、Q、M、D、

命令の結果

L、P

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコー 説明ド
(W#16#...)
0000

エラーなし

0008

IN パラメータの値が上限値(HI_LIM)を超えているか、または下限値(LO_LIM)未満になっています。

一般エラー 関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」
情報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、以下を参照してください。AUTOHOTSPOTTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1719

基本命令
3.5 GRAPH

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL UNSCALE(IN := "Tag_InputValue"
HI_LIM := "Tag_HighLimit"
LO_LIM := "Tag_LowLimit"
BIPOLAR := "Tag_Bipolar"
RET_VAL => "Tag_ErrorCode"OUT => "Tag_OutputValue")

次の表に、実行前の各種オペランドの値を示します。
パラメータ

オペランド

値

IN

Tag_InputValue

50.03978588

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue0.0

次の表に、実行後の各種オペランドの値を示します。
パラメータ

オペランド

値

IN

Tag_InputValue

50.03978588

HI_LIM

Tag_HighLimit

100.0

LO_LIM

Tag_LowLimit

0.0

BIPOLAR

Tag_Bipolar

1

RET_VAL

Tag_ErrorCode

W#16#0000

OUT

Tag_OutputValue

22「Tag_InputValue」オペランドは、変換されてスケーリング解除される値を示します。上
限値と下限値が、「Tag_HighLimit」および「Tag_LowLimit」オペランドによって定義されます。オペランド「Tag_Bipolar」 = TRUE を使用して、IN パラメータの値がバイポーラとして解釈されるように指定します。命令の結果は、「Tag_OutputValue」オペランドに出力
されます。

1720

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 1732)

3.5.2.6

プログラム制御演算

ランタイム制御

ENDIS_PW:パスワードの適正化の制限および有効化

説明「パスワード正当性の制限および有効化」命令を使用して、設定されたパスワードを CPU に対して正当化できるかどうかを指定します。このため、正しいパスワードがわかっている
場合でも、正規の接続を防止することができます。
命令呼び出し時に REQ パラメータのシグナル状態が「0」の場合、現在設定されている状態
が、出力パラメータに表示されます。入力パラメータに変更を加えても、変更は出力パラメータに転送されません。
命令呼び出し時に REQ パラメータのシグナル状態が「1」の場合、シグナル状態は、入力
パラメータ(F_PWD、FULL_PWD、R_PWD、HMI_PWD)から取得されます。
• シグナル状態「0」が存在する場合、パスワードによる認証は許可されません。
• シグナル状態「1」が存在する場合、パスワードを使用できます。
パスワードの有効化または無効化を個別に許可または禁止することができます。たとえば、
フェールセーフパスワードを除く、すべてのパスワードを禁止することができます。したがって、アクセスオプションを小さいユーザーグループに制限することができます。出力パラメータ(F_PWD_ON、FULL_PWD_ON、R_PWD_ON、HMI_PWD_ON)は、REQ パラメー
タに関係なく、常にパスワード使用の現在のステータスを示します。
設定済みでないパスワードの場合、入力のシグナル状態が TRUE でなければならず、出力にシグナル状態 TRUE を返します。フェールセーフパスワードは、F-CPU の場合のみ設定できるため、標準 CPU では、常にシグナル状態 TRUE と相互接続する必要があります。命令がエラーを返す場合、この呼び出しには効果がなく、直前のロックがまだ有効です。
無効なパスワードは、以下の条件で再度有効にすることができます。
• CPU が工場出荷時設定にリセットされること。
• S7-1500 CPU のフロントパネルが、パスワードを再度有効にすることができる適切なメニューに移動することができるダイアログをサポートしていること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1721

基本命令
3.5 GRAPH• 「パスワードの適正化の制限および有効化」命令を呼び出す場合、目的のパスワードの
入力パラメータのシグナル状態が「1」であること。
• モードセレクタを STOP に設定すること。このスイッチの設定を RUN に戻すと直ちに、
パスワードの適正化に対する制限が再確立されます。
• S7-1200 CPU への空きメモリカード(転送モジュールまたはプログラムカード)の差し込
み。
• S7-1200 CPU では、電源オフから電源オンへの移行によって、保護が無効になります。
この場合、プログラム(たとえば、スタートアップ OB)で、再度、「パスワード正当性の制限および有効化」命令を呼び出す必要があります。
注記「パスワード正当性の制限および有効化」命令は、HMI パスワードが有効にされていない場
合、HMI システムからのアクセスをブロックします。
注記
既存の適正化された接続はアクセス権を保持し、「パスワードの適正化の制限および有効化」命令を使用してそれらを制限することはできません。

S7-1500 CPU での意図しないロックアウトの防止
CPU のフロントパネルで設定を行うことができ、CPU は最新の設定を保存します。
偶発的なロックアウトを防止するには、S7-1500 CPU でモードセレクタを STOP に設定することによって保護を無効にすることができます。モードセレクタを RUN に設定することによって、「パスワードの適正化の制限および有効化」命令を再度呼び出したり、フロ
ントパネルで追加の操作を行なったりする必要なしに、保護が自動的に再度有効にされます。

S7-1200 CPU での意図しないロックアウトの防止
S7-1200 CPU にはモードスイッチが存在しないため、電源オフから電源オンへの移行時の保護は無効です。このため、ユーザープログラム内の特定のプログラムシーケンスによって偶発的なロックアウトを防止することをお奨めします。
これを行うには、サイクリック割り込み OB、または、メイン OB (OB 1)のタイマのどちらかを使用して、時間制御をプログラミングします。これによって、電源オフから電源オンへの移行と、関連する保護の無効化の後、比較的迅速に、各 OB (たとえば、OB 1 またはOB 35)内で「パスワード正当性の制限および有効化」命令を呼び出すオプションが可能になります。スタートアップ OB (OB 100)でこの命令を呼び出して、この命令が無効で、パ

1722

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
スワード正当化の制限が存在しない時間ウィンドウを比較的小さなものに保ちます。この
手順は、未許可のアクセスに対する可能な最大限の保護を提供します。
偶発的なロックアウトが発生した場合は、スタートアップ OB での呼び出しをスキップし(たとえば、入力パラメータを照会することによって)、ロックが再び有効になる前に、CPUへ接続確立する時間(たとえば、10 秒～1 分)を設定することができます。
ユーザープログラムコードにタイマが存在しない場合にロックアウトが発生した場合は、空の転送カードまたはプログラムカードを CPU に挿入します。空の転送カードまたはプロ
グラムカードは、CPU の内部ロードメモリを削除します。この後、ユーザープログラムを再び STEP 7 から CPU にダウンロードする必要があります。

S7-1200 CPU でパスワードが失われた場合の手順
パスワード保護された S7-1200 CPU のパスワードを紛失した場合は、空の転送カードまたはプログラムカードを使用して、パスワード保護されたプログラムを削除します。空の転送カードまたはプログラムカードは、CPU の内部ロードメモリを削除します。その後、新しいユーザープログラムを STEP 7 Basic から CPU にロードすることができます。
警告
空の転送カードの挿入
ランタイム中に CPU にトランスファーカードを挿入すると、CPU は STOP モードに切り替わります。動作ステータスが不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシ
ステムの予期せぬ動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
転送カードを取り出すと、転送カードの内容が内部ロードメモリで使用可能になります。
この時点に、カードにプログラムが含まれていないことを確認してください。
警告
空のプログラムカードの挿入
ランタイム中に CPU にプログラムカードを挿入すると、CPU は STOP モードに移行します。動作ステータスが不安定な場合、コントローラで障害が発生し、制御対象デバイスの制御されない動作の原因になる場合があります。これは、オートメーションシステムの予期せぬ動作につながり、致命的または重大な人的傷害や物的損害の原因になる恐れがあります。
プログラムカードが空であることを確認してください。内部ロードメモリが空のプログ
ラムカードにコピーされます。直前に空であったプログラムカードを取り出すと、内部ロードメモリは空になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1723

基本命令
3.5 GRAPH
CPU を RUN モードに切り替える前に、転送カードまたはプログラムカードを取り出す必要があります。

動作モードへのパスワードの使用の影響
次の表に、「パスワードの適正化の制限および有効化」命令によるパスワードの使用が動作モードと対応するユーザーの操作に与える影響を示します。
操作

命令によるパスワードの保護

その後の基本状態

無効• STOP への動作モードの切り替え(制限なし)• メモリの手動リセット(PG、切り替え、MC(モーションコントロール)の変更)• 工場出荷時設定へのリセット
電源オン後の基本状態• S7-1200-CPU:
ロックは無効で、プログラム(たとえば、スタートアップ OB)で再びこの命令を呼び出す必要があります。
• S7-1500 CPU:
有効(電源オフの前にロックが有効になった場合).パスワードの不許可のオ
プションは保持型です。

動作モードの移行 RUN/STARTUP/HOLD -> STOP 有効(命令、エラーまたは通信の終了によって)また パスワードはまだ使用できません。
は STOP -> STARTUP/RUN/HOLD

1724

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、REQ パラメータのシグナ

L、または定数ル状態が「0」の場合

Input

は、現在設定されているパスワードのシグナル状
態が照会されます。
F_PWD

Input

BOOL

I、Q、M、D、

フェールセーフなどの読

L、または定数

み取り/書き込みアクセス• F_PWD = "0":パスワー
ドを許可しない• F_PWD = "1":パスワー
ドを許可する

FULL_PWD

Input

BOOL

I、Q、M、D、

読み取り/書き込みアクセ

L、または定数ス• FULL_PWD = "0":パス
ワードを許可しない• FULL_PWD = "1":パス
ワードを許可する

R_PWD

Input

BOOL

I、Q、M、D、

読み取りアクセス

L、または定数• R_PWD = "0":パスワー
ドを許可しない• R_PWD = "1":パスワー
ドを許可する

HMI_PWD

Input

BOOL

I、Q、M、D、HMI アクセス

L、または定数• HMI_PWD = "0":パスワードを許可しない• HMI_PWD = "1":パスワードを許可する

F_PWD_ON Output

BOOL

I、Q、M、D、L フェールセーフなどの読
み取り/書き込みアクセス• F_PWD_ON = "0":パス
ワードを許可しない• F_PWD_ON = "1":パス
ワードを許可する

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1725

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

FULL_PWD_ Output

BOOL

I、Q、M、D、L 読み取り/書き込みアクセ

ON

説明
スステータス• FULL_PWD_ON = "0":パスワードを許可しない• FULL_PWD_ON = "1":
パスワードを許可する

R_PWD_ON Output

BOOL

I、Q、M、D、L 読み取りアクセスステー
タス• R_PWD_ON = "0":パス
ワードを許可しない• R_PWD_ON = "1":パス
ワードを許可する

HMI_PWD_

Output

BOOL

I、Q、M、D、L HMI アクセスステータス

ON• HMI_PWD_ON = "0":パスワードを許可しない• HMI_PWD_ON = "1":パスワードを許可する

RET_VAL

Output

WORD

I、Q、M、D、L エラー情報

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

RET_VAL パラメータ
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ
ード*

説明

(W#16#..
.)
0000

エラーなし

8090

「パスワードの適正化の制限および有効化」命令はサポートされていません

80D0

フェールセーフのパスワードが未設定です。標準 CPU では、シグナル状態はTRUE であることが必要です。

1726

80D1

読み取り/書き込みアクセスが未設定です

80D2

読み取りアクセスが未設定です

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
エラーコ
ード*

説明

(W#16#..
.)
80D3

HMI アクセスが未設定です*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

RE_TRIGR:サイクルタイムモニタのリスタート

説明「サイクルタイムモニタのリスタート」命令は、CPU のサイクルモニタ時間のリスタートに使用します。サイクルモニタ時間は、CPU 構成で設定した時間で再起動します。
この命令は、呼び出しの数に関係なく期間内に完全に実行されます(最大プログラムサイ
クルの 10 倍)。時間が期限切れになると、プログラムサイクルは延長できなくなります。

命令の呼び出しこの命令は、すべてのオーガニゼーションブロック内で優先度に関わらず呼び出し可能で
す。

パラメータ
「サイクルタイムモニタのリスタート」命令にはパラメータがなく、エラー情報は提供されません。

STP:プログラム終了

説明「プログラムの終了」命令を使用し、CPU を STOP モードに設定してプログラムの実行を終了します。RUN から STOP への変更の影響は CPU の構成によって異なります。

パラメータ「プログラムの終了」命令にはパラメータがなく、エラー情報は提供されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1727

基本命令
3.5 GRAPH

GET_ERROR:ローカルでエラーを取得

説明「ローカルでエラーを取得」命令を使用して、プログラムブロック内のエラーの発生を照会します。通常、これにはプログラミングエラーやアクセスエラーが含まれます。システム
がプログラムブロックの実行中にエラーを報告した場合、命令の最後の実行の後、このエラーがブロックの実行中に発生した最初の該当エラーの場合、詳細情報が OUT 出力のオペランドに格納されます。
OUT 出力では、「ErrorStruct」システムデータタイプのオペランドのみを指定できます。
「ErrorStruct」システムデータタイプは、エラー情報が保存されている正確な構造体を指定します。追加の命令を使用することで、この構造体とプログラムが適切な応答をするかを評価できます。プログラムブロックで複数のエラーが発生した場合、発生した最初のエラーが修復された後にのみ、発生した次のエラーに関するエラー情報が命令によって出力されます。
注記
出力 OUTOUT 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。

注記
ローカルエラーハンドリングの有効化プログラムブロックのプログラムコードにこの命令を挿入すると、ローカルエラーハンド
リングが直ちに有効になり、エラー発生時にデフォルトのシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要については、以下を参照してください。AUTOHOTSPOT
複数のエラー処理オプションを含むローカルエラーハンドリングの詳細な例については、
以下を参照してください。AUTOHOTSPOT1728

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

OUT

OutputErrorStruct

D、L

エラー情報

データタイプ「ErrorStruct」「ErrorStruct」データタイプは、グローバルデータブロックまたはブロックインターフェースに挿入できます。毎回データ構造体に異なる名前を割り当てた場合、データタイプを複数回挿入できます。データ構造体と個々の構造体エレメントの名前は変更できません。
グローバルデータブロックにエラー情報を保存した場合は、他のプログラムブロックによって読み出すこともできます。
次の表に、「ErrorStruct」データタイプの構造体を示します。
構造体コンポーネント

データタイプ説明

ERROR_ID

WORD

エラー ID

FLAGS

BYTE

エラーがプログラムブロック呼び出
し中に発生したのかどうかを示します。
16#01:プログラムブロック呼び出し中のエラー
16#00:プログラムブロック呼び出し
中にエラーなし

REACTION

BYTE

デフォルトの応答
0:無視(書き込みエラー)
1:代替値「0」で続行(読み取りエラー)
2:命令をスキップ(システムエラー)

CODE_ADDRESS

CREFプログラムブロックのアドレスおよびタイプに関する情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1729

基本命令
3.5 GRAPH
構造体コンポーネント
BLOCK_TYPE

データタイプ

説明

BYTE

エラーが発生したプログラムブロッ
クのタイプ:
1:オーガニゼーションブロック(OB)2:ファンクション(FC)3:ファンクションブロック(FB)

CB_NUMBER

UINT

プログラムブロックの番号

OFFSET

UDINT

内部メモリへの参照

MODE

BYTE

オペランドのアドレスに関する情報

OPERAND_NUMBER

UINT

マシンコマンドのオペランド番号

POINTER_NUMBER_LOCATIO UINT

(A) 内部ポインタ

N
SLOT_NUMBER_SCOPE

UINT(B) 内部メモリの記憶領域

DATA_ADDRESS

NREF

オペランドのアドレスに関する情報

BYTE(C) メモリ領域

AREA

L:16#40...16#7F、16#86、16#87、
16#8E、16#8F、16#C0...16#FF
I:16#81
Q:16#82
M:16#83
DB:16#40、16#84、16#85、
16#8A、16#8B
PI:16#01
PQ:16#02
テクノロジーオブジェクト:16#04

1730

DB_NUMBER

UINT(D) データブロックの番号

OFFSET

UDINT(E) オペランドの相対アドレス

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

構造体コンポーネント「ERROR_ID」
次の表に、構造体コンポーネント「ERROR_ID」で出力可能な値を示します。
ID*(16 進数)ID*(10 進)

説明

0

0

エラーなし

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

無効な参照が使用されました

2534

9524

ブロック番号エラー FC

2535

9525

ブロック番号エラー FB

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が誤っているか、ファンクションが存在しません。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が誤っているか、ファンクションブロックが存在しま
せん。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1731

基本命令
3.5 GRAPH
ID*(16 進数)ID*(10 進)

説明

25A0

9632

TP の内部エラー

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

GET_ERR_ID:ローカルでエラー ID を取得

説明「ローカルでエラー ID を取得」命令は、ブロック内のエラーの発生のクエリに使用されます。これは、通常、アクセスエラーによって生じます。この命令の最後の実行の後に、システムがブロック処理中にブロック実行に関するエラーを報告すると、タグで発生した最初のエラーのエラー ID が RET_VAL 出力に格納されます。
RET_VAL 出力では、WORD データタイプのオペランドのみを指定できます。ブロックで複数のエラーが発生した場合、発生した最初のエラーが修復された後にのみ、命令で発生した
次のエラーのエラー ID が出力されます。
注記
RET_VAL 出力は、エラー情報が存在する場合のみ変更されます。エラーを処理した後、出力を「0」にセットし直す場合、以下のオプションがあります。
• ブロックインターフェースの「一時」セクションでタグを宣言する。
• 命令を呼び出す前に、タグを「0」にリセットする。

「ローカルでエラー ID を取得」命令の出力は、エラー情報が存在する場合のみ設定されます。これらの条件の 1 つが満たされない場合、残りのプログラム実行は「ローカルでエラー
ID を取得」命令の影響を受けません。

1732

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
この命令を他のトラブルシューティングオプションと組み合わせて実装する方法の例は、「関連項目」を参照してください。
注記「ローカルでエラー ID を取得」命令は、ブロック内のローカルエラー処理を可能にします。
「ローカルでエラー ID を取得」命令がブロックのプログラムコードに挿入されている場合、エラー発生時に、あらかじめ定義されたすべてのシステム応答が無視されます。

エラー処理のオプション
エラー処理のオプションの概要については、以下を参照してください。AUTOHOTSPOT
複数のエラー処理オプションを含むローカルエラーハンドリングの詳細な例については、
以下を参照してください。AUTOHOTSPOT

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

RET_VAL

Output

WORD

I、Q、M、D、L エラー ID

パラメータ RET_VAL
次の表に、RET_VAL パラメータで出力できる値を示します。
エラーコード エラーコー*
ド*(16 進数)(10 進数)

説明

0

0

エラーなし

2503

9475

無効なポインタ

2520

9504

無効な STRING

2522

9506

読み取りエラー:オペランドが有効な範囲外

2523

9507

書き込みエラー:オペランドが有効な範囲外

2524

9508

読み取りエラー:無効なオペランド

2525

9509

書き込みエラー:無効なオペランド

2528

9512

読み取りエラー:データのアラインメント

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1733

基本命令
3.5 GRAPH
エラーコード エラーコー*
ド*(16 進数)(10 進数)

説明

2529

9513

書き込みエラー:データのアラインメント

252C

9516

無効なポインタ

2530

9520

書き込みエラー:データブロック

2533

9523

無効な参照が使用されました

2534

9524

ブロック番号エラー FC

2535

9525

ブロック番号エラー FB

2538

9528

アクセスエラー:DB が存在しない

2539

9529

アクセスエラー:不適切な DB が使用されました

253A

9530

グローバルデータブロックが存在しません。

253C

9532

情報が誤っているか、ファンクションが存在しません。

253D

9533

システムファンクションが存在しません。

253E

9534

情報が誤っているか、ファンクションブロックが存在しま
せん。

253F

9535

システムブロックが存在しません。

2550

9552

アクセスエラー:DB が存在しない

2551

9553

アクセスエラー:不適切な DB が使用されました

2575

9589

プログラムのネスティング深さのエラー

2576

9590

ローカルデータ配布のエラー

2577

9591

ブロックプロパティ「レジスタ経由のパラメータ渡し」が選択されていません。

25A0

9632

TP の内部エラー

25A1

9633

タグが書き込み保護されています

25A2

9634

タグの数値が不正です

2942

10562

読み取りエラー:入力

2943

10563

書き込みエラー:出力*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

1734

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

INIT_RD:すべての保持データの初期化

説明「すべての保持データを初期化」命令を使用して、すべてのデータブロック、ビットメモ
リ、および SIMATIC タイマとカウンタの保持データを同時にリセットします。この命令は、実行するとプログラムサイクル持続時間を超過するため、スタートアップ OB 内でのみ実行が可能です。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、

入力「REQ」のL、または定数

シグナル状態が「1」の場合、すべての保持デー
タがリセットされます。

RET_VAL

Output

INT

I、Q、M、D、L エラー情報:
命令の実行中にエラーが発生した場合、
RET_VAL パラメータにエラーコ
ードが出力されます。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコード* 説明(W#16#...)
0000

エラーなし

80B5

この命令はスタートアップ OB 内にプログラムされていないため、実行できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1735

基本命令
3.5 GRAPH
エラーコード* 説明(W#16#...)
一般エラー情関連項目: 「GET_ERR_ID:ローカルでエラー ID を取得」

報
*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL INIT_RD(REQ := "Tag_REQ"
RET_VAL => "Tag_RET_VAL")「Tag_REQ」オペランドのシグナル状態が「1」の場合、この命令が実行されます。すべてのデータブロック、ビットメモリ、および SIMATIC タイマの保持データとカウンタがリセットされます。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 1732)

WAIT:遅延時間の設定
説明「遅延時間の設定」命令を使用して、指定された時間の間プログラム実行を一時停止できます。WT パラメータにマイクロ秒単位で時間を指定します。
遅延時間は、-32768 から最大 32767 マイクロ秒 (μs)が設定可能です。設定可能な最短の遅延時間は個々の CPU に依存し、この命令の実行時間に対応します。

1736

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
この命令の実行には、さらに優先度の高いイベントが割り込む可能性があり、エラー情報を返しません。
注記
負の遅延時間WT パラメータで負の遅延時間を指定した場合、イネーブル出力 ENO、RLO および BR ビットがシグナル状態 FALSE を返します。負の遅延時間は CPU に影響しません。ENO イネ
ーブル出力に接続されている後続の命令は、LAD または FBD で実行されません。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

WT

INT

I、Q、M、D、

遅延時間(μs)

Input

L、P、または定数

3.5.2.7

ワード論理演算NOT (INV):反転

説明
命令「反転」を使用して、オペランドのビットのシグナル状態を反転します。この命令が実行されると、オペランドの値が排他的 OR で 16 進数マスク(16 ビットの数ではW#16#FFFF、または 32 ビットの数では DW#16#FFFF FFFF)にリンクされます。これによって、この後、結果として出力される個々のビットのシグナル状態が反転されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1737

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域<Operand>

入力

ビット列、整数 I、Q、M、D、

説明
入力値

L、P、または定数<Result>

出力

ビット列、整数 I、Q、M、D、L、P

オペランド値の1 の補数

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"TagOut_Value" := NOT("TagIn_Value")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

TagIn_Value

W#16#000F

TagOut_Value

W#16#FFF0
この命令は、「TagIn_Value」オペランドの個々のビットのシグナル状態を反転し、その結果を「TagOut_Value」オペランドに書き込みます。

DECO: デコード

説明
「デコード」命令を使用して、入力値で指定されたビットを出力値にセットします。
「デコード」命令は、IN パラメータの値を読み取り、読み取った値とビット位置が一致する
OUT パラメータにそのビットをセットします。出力値の他のビットはゼロで埋められます。
IN パラメータの値が 31 よりも大きい場合、モジュロ 32 演算が実行されます。

1738

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

UINT

I、Q、M、D、設定される出力値のビッ

Input

L、P、または定 ト位置。
数
OUT

Output

ビット列

I、Q、M、D、

出力値

L、P
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL DECO UINT_DWORD(IN := "Tag_Input"
OUT => "Tag_Output")

次の図に、命令が特定の値を使用してどのように動作するかを示します。
7DJB,QSXW

7DJB2XWSXW 



 

この命令は、入力の「Tag_Input」オペランドの値からビット番号「3」を読み取り、3 番目のビットを出力の「Tag_Output」オペランドの値にセットします。

ENCO: エンコード

説明「エンコード」命令を使用して、入力値の最下位ビットのビット番号を読み出し、OUT パ
ラメータに出力します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1739

基本命令
3.5 GRAPH「エンコード」命令は IN パラメータの値の最下位ビットを選択し、そのビット番号を OUT
パラメータのオペランドに書き込みます。IN パラメータに値 DW#16#00000001 またはDW#16#00000000 が含まれる場合、値「0」が OUT パラメータに出力されます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

ビット列

I、Q、M、D、

入力値

Input

L、P、または定数
OUT

Output

INT

I、Q、M、D、

出力値

L、P
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。

CALL ENCO DWORD(IN := "Tag_Input"
OUT => "Tag_Output")

次の図に、命令が特定の値を使用してどのように動作するかを示します。


 



ಯ7DJB,QSXWಯ  
ಯ7DJB2XWSXWಯ 

この命令は「Tag_Input」タグの最下位ビットを選択し、そのビット位置「3」を「Tag_Output」タグに書き込みます。

1740

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

SEL: 選択

説明「選択」命令を使用して、スイッチ(G 入力)に応じて、2 つの入力 IN0 または IN1 のいずれかを選択し、その内容を OUT 出力に移動します。G 入力のシグナル状態が「0」の場合、
IN0 入力の値が移動されます。G 入力のシグナル状態が「1」の場合、IN1 入力の値が OUT
出力に移動されます。
命令は、すべてのパラメータのタグが同じデータタイプの場合のみ実行されます。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

G

BOOL

I、Q、M、D、

スイッチ

Input

L、または定数
IN0

Input

ビット列、整I、Q、M、D、最初の入力値

数、浮動小数点 L、P、または定数、タイマ、

数

CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
IN1

Input

ビット列、整I、Q、M、D、

2 番目の入力値

数、浮動小数点 L、P、または定数、タイマ、

数

CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
OUT

Output

ビット列、整I、Q、M、D、

結果

数、浮動小数点 L、P数、タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、LDT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1741

基本命令
3.5 GRAPH
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL SEL CHAR
(G := "Tag_Input_G"
IN0 := "Tag_Input0"
IN1 := "Tag_Input1"
OUT => "Tag_Output")

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

G

Tag_Input_G

1

IN0

Tag_Input0

W#16#0000

IN1

Tag_Input1

W#16#FFFFOUT

Tag_Output

W#16#FFFF「Tag_Input_G」入力のシグナル状態に基づいて、「Tag_Input0」または「Tag_Input1」入力の値が選択され、「Tag_Output」出力に移動されます。

MUX:多重化

説明「多重化」命令を使用して、選択した入力の内容を RET_VAL 出力にコピーします。選択可能な入力の数は最大 32 まで拡張できます。番号付けは IN0 から開始され、新しい入力ごとに継続します。K パラメータを使用し、内容が RET_VAL 出力にコピーされる入力を定義します。K パラメータの値が使用可能な入力の数よりも大きい場合、INELSE パラメータの内容
が RET_VAL 出力にコピーされます。
「多重化」命令は、すべての入力と RET_VAL 出力のタグが同じデータタイプの場合にのみ実行できます。K パラメータは、指定できるのが整数のみであるため、例外です。

1742

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
RET_VAL パラメータの値は、次の条件の 1 つが満たされると無効です。
• K パラメータの入力は、使用可能な入力の外側にあります。この応答は、入力 INELSE が使用されるかどうかに関係ありません。出力 RET_VAL の値は変更されないままになり、
イネーブル出力 ENO は「0」にセットされます。
• 命令の実行中にエラーが発生していること。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

K

整数

I、Q、M、D、内容がコピーされる入力

L、または定数を指定します。

I、Q、M、D、最初の入力値

IN0

Input
Input

2 進数、整数、浮動小数点数、 L、または定数
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
IN1

Input

2 進数、整数、I、Q、M、D、

2 番目の入力値

浮動小数点数、 L、または定数
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
INn

Input

2 進数、整数、I、Q、M、D、オプションの入力値

浮動小数点数、 L、または定数
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、LDT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1743

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

INELSE

2 進数、整数、I、Q、M、D、

K > n の場合コピーする値

Input

浮動小数点数、 L、または定数を指定します。

タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
RET_VAL

Output2 進数、整数、I、Q、M、D、L 値がコピーされる出力。

浮動小数点数、
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL MUX SINT_SINT(K := "Tag_Number"
IN0 := "Tag_Value_1"
IN1 := "Tag_Value_2"
INELSE := "Tag_Value_3"
RET_VAL => "Tag_Result")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。

1744

パラメータ

オペランド

値

K

Tag_Number

1

IN0

Tag_Value_1

DW#16#00000000

IN1

Tag_Value_2

DW#16#3E4A7D

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ

オペランド

値

INELSE

Tag_Value_3

DW#16#FFFF0000

RET_VAL

Tag_Result

DW#16#3E4A7D「Tag_Number」オペランドの値に応じて、「Tag_Value_1」入力の値がコピーされ、「Tag_Result」出力のオペランドに出力されます。

DEMUX: 逆多重化

説明
「逆多重化」命令を使用して、選択した出力に IN 入力の内容をコピーすることができます。
選択可能な出力の数は最大 32 まで拡張できます。番号付けは OUT0 から開始され、新しい出力ごとに継続します。K パラメータを使用して、IN 入力の内容がコピーされる出力を定義します。その他の出力は、変更されません。K パラメータの値が使用可能な出力の数よりも大きい場合、IN 入力の内容が OUTELSE パラメータにコピーされます。
「逆多重化」命令は、IN 入力とすべての出力のタグが同じデータタイプの場合にのみ実行できます。K パラメータは、指定できるのが整数のみであるため、例外です。
OUTELSE 出力の値は、次の条件の 1 つが満たされると無効です。
• K パラメータの値が、使用可能な出力の数を超えていること。
• 命令の実行中にエラーが発生していること。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

K

整数

I、Q、M、D、

入力値(IN)がコピーされL、または定数る出力を指定します。

I、Q、M、D、

入力値

IN

Input
Input

2 進数、整数、浮動小数点数、 L、または定数
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、LDT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1745

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

OUT0

2 進数、整数、I、Q、M、D、L 最初の出力

Output説明

浮動小数点数、
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
OUT1

Output2 進数、整数、I、Q、M、D、L 2 番目の出力浮動小数点数、
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
OUTn

Output2 進数、整数、I、Q、M、D、L オプションの出力

浮動小数点数、
タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、LDTOUTELSE

Output2 進数、整数、浮動小数点数、

I、Q、M、D、L K > n の場合に入力値(IN)がコピーされる出力。

タイマ、
CHAR、
WCHAR、TOD、LTOD、DATE、
LDT
命令のデータタイプを[???]ドロップダウンリストから選択できます。
使用可能なデータタイプの追加情報については、「関連項目」を参照してください。

1746

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL DEMUX SINT_SINT(K := "Tag_Number"
IN := "Tag_Value"
OUT0 => "Tag_Output_1"
OUT1 => "Tag_Output_2"
OUTELSE => "Tag_Output_3")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
表 3-5

ネットワーク実行前の「逆多重化」命令の入力値:

パラメータ

オペランド

K

Tag_Number

1

4

IN

Tag_Value

DW#16#FFFFFFFF

DW#16#3E4A7D

表 3-6

値

ネットワーク実行後の「逆多重化」命令の出力値:

パラメータ

オペランド

値

OUT0

Tag_Output_1

不変

不変

OUT1

Tag_Output_2

DW#16#FFFFFFFF

不変

OUTELSE

Tag_Output_3

不変

DW#16#3E4A7D「Tag_Number」オペランドの値に応じて、IN 入力の値が対応する出力にコピーされます。

3.5.2.8

シフトとローテーション

SHR:右へシフト

説明「右へシフト」命令を使用して、Operand1 の内容をビット単位で右へシフトします。
Operand2 を使用して、指定された値をシフトするビット位置の数を指定します。
Operand2 の値が「0」の場合、Operand1 の値が結果にコピーされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1747

基本命令
3.5 GRAPH
Operand2 の値が使用可能なビット桁数よりも大きい場合でも、Operand1 の値は使用可能なビット桁数だけ右にシフトされます。
Operand1 の左側の空きビット位置は、符号なしの値がシフトされるとゼロで埋められます。指定された値に符号が存在する場合、解放されたビット位置は符号ビットのシグナル状態で埋められます。
次の図に、データタイプ INT の Operand1 の内容が、どのように 4 ビット位置右へシフトされるかを示します。


2SHUDQG

2SHUDQG

䶵⚆
ኰአእ

俟㨫




















































世㓏

























ሶቯቬቑኰአእ
ቒ⯀ቲቯቡሼᇭ

栚㟍ሸቯቂኰአእ⇜函ቒ䶵⚆ኰአእቑ≰⚆䕅㏚ቊ⩚ቤቬቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ<Operand1 Input

ビット列、整数 I、Q、M、D、

>

メモリ領域

説明
シフトされる値

L、または定数<Operand2 Input

USINT, UINT,

I、Q、M、D、

値がシフトされるビット>

UDINT, ULINT

L、または定数

位置の数<Result>

Output

ビット列、整数 I、Q、M、D、L 命令の結果

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

1748

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := SHR_INT("Tag_InValue","Tag_Number")

次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

0011 1111 1010 1111

Tag_Number

3

Tag_OutValue

0000 0111 1111 0101

「Tag_InValue」オペランドの内容が、3 ビット位置右へシフトされます。結果が「Tag_OutValue」出力に出力されます。

SHL:左へシフト

説明「左へシフト」命令を使用して、Operand1 の内容をビット単位で左へシフトします。
Operand2 を使用して、指定された値をシフトするビット位置の数を指定します。
Operand2 の値が「0」の場合、Operand1 の値が結果にコピーされます。
Operand2 の値が使用可能なビット桁数よりも大きい場合でも、Operand1 の値は使用可能なビット桁数だけ左にシフトされます。
シフトによって解放された Operand1 の右側のビット位置は、ゼロで埋められます。
次の図に、データタイプ WORD の Operand1 の内容が、どのように 6 ビット位置左へシ
フトされるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1749

基本命令
3.5 GRAPH2SHUDQG

2SHUDQG

俟㨫























































世㓏

     











栚㟍ሸቯቂ
ኰአእ⇜函ቒኙዊቊ⩚ቤቬቯቡሼᇭሶቯቬቑኰአእ
ቒ⯀ቲቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ<Operand1 Input

ビット列、整数 I、Q、M、D、

>

メモリ領域

説明
シフトされる値

L、または定数<Operand2 Input

USINT, UINT,

I、Q、M、D、

値がシフトされるビット>

UDINT, ULINT

L、または定数

位置の数<Result>

Output

ビット列、整数 I、Q、M、D、L 命令の結果

命令のデータタイプを[???]ドロップダウンリストから選択できます。
有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := SHL_WORD("Tag_InValue","Tag_Number")

1750

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

0011 1111 1010 1111

Tag_Number

4

Tag_OutValue

1111 1010 1111 0000

「Tag_InValue」オペランドの内容が 4 ビット位置左へシフトし、その結果として
Tag_OutValue オペランドに出力します。

ROR:右へローテーション

説明「右へローテーション」命令を使用して、Operand1 の内容をビット単位で右へローテーシ
ョンします。Operand2 を使用して、指定された値をローテーションするビット位置の数を指定します。
Operand2 の値が「0」の場合、Operand1 の値が結果にコピーされます。
Operand2 の値が使用可能なビット桁数よりも大きい場合でも、Operand1 の値は指定されたビット桁数だけローテーションされます。
ローテーションによって解放されたビット位置は、押し出されたビット位置で埋められます。
次の図に、データタイプ DWORD のオペランドの内容が、どのように 3 ビット位置右へローテーションされるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1751

基本命令
3.5 GRAPH2SHUDQG

 

       

2SHUDQG世㓏俟㨫       

ቇቑኔኲእሺቂኰአእቑ
≰⚆䕅㏚ቒᇬ屲㟍ሸቯቂ⇜函቎㗎⏴ሸቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ<Operand1 Input

ビット列、整数 I、Q、M、D、

>

メモリ領域

説明
ローテーションされる値

L、または定数<Operand2 Input

USINT, UINT,

I、Q、M、D、

値がローテーションされ>

UDINT, ULINT

L、または定数

るビット位置の数<Result>

Output

ビット列、整数 I、Q、M、D、L 命令の結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := ROR("Tag_InValue","Tag_Number")

1752

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

1010 1010 0000 1111 0000 1111 0101
0101

Tag_Number

5

Tag_OutValue

1010 1101 0101 0000 0111 1000 0111
1010

「Tag_InValue」オペランドの内容が 5 ビット位置右へシフトし、その結果として
Tag_OutValue オペランドに出力します。

ROL:左へローテーション

説明「左へローテーション」命令を使用して、Operand1 の内容をビット単位で左へローテーシ
ョンします。Operand2 を使用して、指定された値をローテーションするビット位置の数を指定します。
Operand2 の値が「0」の場合、Operand1 の値が結果にコピーされます。
Operand2 の値が使用可能なビット桁数よりも大きい場合でも、Operand1 の値は指定されたビット桁数だけローテーションされます。
ローテーションによって解放されたビット位置は、押し出されたビット位置で埋められます。
次の図に、データタイプ DWORD のオペランドの内容が、どのように 3 ビット位置左へローテーションされるかを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1753

基本命令
3.5 GRAPH2SHUDQG

 

       

2SHUDQG

俟㨫



世㓏



       
ቇቑኔኲእሺቂኰአእቑ
≰⚆䕅㏚ቒᇬ屲㟍ሸቯቂ⇜函቎㗎⏴ሸቯቡሼᇭ

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ<Operand1 Input

ビット列、整数 I、Q、M、D、

>

メモリ領域

説明
ローテーションされる値

L、または定数<Operand2 Input

USINT, UINT,

I、Q、M、D、

値がローテーションされ>

UDINT, ULINT

L、または定数

るビット位置の数<Result>

Output

ビット列、整数 I、Q、M、D、L 命令の結果

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
GRAPH"Tag_OutValue" := ROL("Tag_InValue","Tag_Number")

1754

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
次の表に、命令が特定のオペランド値を使用してどのように動作するかを示します。
オペランド

値

Tag_InValue

1111 0000 1010 1010 0000 1111 0000
1111

Tag_Number

5

Tag_OutValue

0001 0101 0100 0001 1110 0001 1111
1110

「Tag_InValue」オペランドの内容が 5 ビット位置左へシフトし、その結果として
Tag_OutValue オペランドに出力します。

3.5.2.9

レガシー

DRUM: PLC 実行

説明「PLC の実装」命令を使用して、プログラムされた出力ビット(OUT1～ OUT16)および出力
ワード(OUT_WORD)に関連するステップの OUT_VAL パラメータのプログラム値を割り当てます。そのため、この命令が特定のステップに留まっている間は、このステップは
S_MASK パラメータでプログラムされた許可マスクの条件を満たす必要があります。この
ステップのイベントが真(TRUE)になっていて現在のステップのプログラムされた時間が経過した場合、または JOG パラメータの値が「0」から「1」に切り替わった場合、この命令は次のステップに進みます。RESET パラメータのシグナル状態が「1」に切り替わると、この命令はリセットされます。これによって、プリセットされたステップ(DSP)と現在のステップが等しくなります。
このステップで消費された時間の量は、プリセットタイムベース(DTBP)と各ステップのプ
リセットカウンタ値(S_PRESET)の積によって計算されます。新しいステップの開始時に、この計算値が DCC パラメータにロードされます。このパラメータには、現在のステップの残り時間が含まれています。たとえば、DTBP パラメータの値が「2」で、最初のステップのプリセット値が「100」(100 ミリ秒)の場合、DCC パラメータの値は「200」(200 ミリ秒)になります。
ステップは、タイマ値、イベント、またはその両方を使用してプログラム可能です。イベ
ントビットおよびタイマ値「0」を持つステップは、イベントビットのシグナル状態が「1」になると直ちに次のステップに進みます。タイマ値のみによってプログラムされたステッ
プは時間を直ちに開始します。「0」よりも大きなイベントビットおよび時間値を使用してTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1755

基本命令
3.5 GRAPH
プログラムされたステップは、イベントビットのシグナル状態が「1」になると時間を開始します。イベントビットは、シグナル状態「1」で初期化されます。
プログラムされた最後のステップ(LST_STEP)の実行中にこのステップに割り当てられた時間が経過した場合、Q パラメータのシグナル状態は「1」にセットされ、それ以外の場合は「0」にセットされます。Q パラメータがセットされると、この命令はリセットされるまで
このステップに留まります。
設定可能なマスク(S_MASK)で、出力ワード(OUT_WORD)の個々のビットを選択し、出力値(OUT_VAL)によって出力ビット(OUT1～OUT16)をセットまたはリセットできます。設定可
能なマスクのビットのシグナル状態が「1」の場合、OUT_VAL 値は対応するビットをセッ
ト/リセットします。設定可能なマスクビットのシグナル状態が「0」の場合、対応するビットは変更されません。16 のステップすべてに設定可能なマスクのすべてのビットは、シグナル状態「1」で初期化されます。
OUT1 パラメータの出力ビットは、出力ワード(OUT_WORD)の最下位ビットに対応します。
OUT16 パラメータの出力ビットは、出力ワード(OUT_WORD)の最上位ビットに対応します。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

RESET

BOOL

I、Q、M、D、シグナル状態「1」は、L、または定数リセット条件を示します。

I、Q、M、D、シグナル状態が「0」かL、または定数

ら「1」に切り替わる

JOG

Input
Input

BOOL

と、命令が次のステップに進みます。
DRUM_EN

Input

BOOL

I、Q、M、D、シグナル状態が「1」にL、または定数

なると、PLC はイベント
および時間条件に基づいて進むことができます。

LST_STEP

Input

BYTE

I、Q、M、D、

最大ステップ番号

L、または定数(例:LST_STEP = 16#08; 最大 8 つのステップが可能です。)

EVENT(i)1 ≤ i ≤ 16

Input

BOOL

I、Q、M、D、

イベントビット(i);L、または定数初期シグナル状態は
「1」。

1756

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

OUT(j),

Output

BOOL

I、Q、M、D、L 出力ビット(j)Output

BOOL

I、Q、M、D、L シグナル状態「1」は、

1 ≤ j ≤ 16
Q

最後のステップに割り当てられた時間が経過したことを示します。
OUT_WORD Output
ERR_CODE

Output

WORD
WORD

I、Q、M、D、PLC が出力値を書き込む

L、P

ワードアドレス。

I、Q、M、D、

エラー情報

L、P
JOG_HISEOD

StaticStaticBOOL
BOOL

I、Q、M、D、JOG パラメータの履歴ビ

L、または定数ット

I、Q、M、D、シグナル状態「1」は、L、または定数

最後のステップに割り当てられた時間が経過したことを示します。

DSP

StaticBYTE

I、Q、M、D、PLC のプリセットされた

L、P、または定 最初のステップ(1～16)
数
DSC

StaticBYTE

I、Q、M、D、PLC の現在のステップ

L、P、または定
数
DCC

Static

DWORD

I、Q、M、D、

現在のステップの残り処

L、P、または定 理時間
数
DTBP

Static

WORD

I、Q、M、D、PLC のプリセットタイム

L、P、または定 ベース
数
PrevTime
S_PRESET

StaticStatic

TIME

I、Q、M、D、

前回の呼び出しのシステ

L、または定数

ム時刻

ARRAY[1..16] of I、Q、M、D、

1 クロックパルス = 1 ミ

WORD

リ秒の場合の各ステップ

L、または定数[1～16]のプリセットされたカウンタ値。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1757

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

OUT_VALARRAY[1..16,

I、Q、M、D、各ステップの出力値[1～0..15] of BOOL

L、または定数16, 0～15]。

ARRAY[1..16,

I、Q、M、D、各ステップの設定可能な

0..15] of BOOL

L、または定数

マスク[1～16, 0～15]。

S_MASK

StaticStatic初期シグナル状態は「1」。

パラメータ ERR_CODE
次の表に、ERR_CODE パラメータの値の意味を示します。
ERR_COD 説明
E*
W#16#00 エラーなし
00
W#16#00 LST_STEP パラメータの値が 1 未満であるか、または 16 を超えています。
0B
W#16#00 DSC パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を0C

超えています。

W#16#00 DSP パラメータの値が 1 未満であるか、または LST_STEP パラメータの値を超0Dえています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
以下の例で命令はステップ 1 からステップ 2 に進みます。出力ビット(OUT1～OUT16)および出力ワード(OUT_WORD)は、ステップ 2 に構成されたマスクおよび OUT_VAL パラメータの値によってセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

GRAPH
CALL DRUM, "DRUM_DB"

1758

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
GRAPH(RESET := "Tag_Reset"
JOG := "Tag_Input_Jog"
DRUM_EN := "Tag_Input_Drum_EN"
LST_STEP := "Tag_Number_LastStep"
EVENTn := "MyTag_Event_n"
OUTn => "MyTag_Output_n"
Q => "Tag_Output_Q"
OUT_WORD => "Tag_OutputWord"
ERR_CODE => "Tag_ErrorCode")次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータの初期化には以下の値が使用されます。
パラメータ

オペランド

アドレス

値

RESET

Tag_Reset

M0.0

FALSE

JOG

Tag_Input_JOG

M0.1

FALSE

DRUM_EN

Tag_Input_Drum_EN M0.2

TRUE

LST_STEP

Tag_Number_LastSt

MB1

B#16#08

ep
EVENT2MyTag_Event_2

M20.0

FALSE

EVENT4MyTag_Event_4

M20.1

FALSE

EVENT6MyTag_Event_6

M20.2

FALSE

EVENT8MyTag_Event_8

M20.3

FALSE

EVENT10MyTag_Event_10

M20.4

FALSE

EVENT12MyTag_Event_12

M20.5

FALSE

EVENT14MyTag_Event_14

M20.6

FALSE

EVENT16MyTag_Event_16

M20.7

FALSE

以下の値が命令の「DRUM_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1759

基本命令
3.5 GRAPH

1760

パラメータ

アドレス

値

DSP

DBB13

W#16#0001

DSC

DBB14

W#16#0001

DCC

DBD16

DW#16#0000000A

DTBP

DBW20

W#16#0001

S_PRESET[1]DBW26

W#16#0064

S_PRESET[2]DBW28

W#16#00C8

OUT_VAL[1,0]DBX58.0

TRUE

OUT_VAL[1,1]

DBX58.1

TRUE

OUT_VAL[1,2]

DBX58.2

TRUE

OUT_VAL[1,3]

DBX58.3

TRUE

OUT_VAL[1,4]DBX58.4

TRUE

OUT_VAL[1,5]DBX58.5

TRUE

OUT_VAL[1,6]

DBX58.6

TRUE

OUT_VAL[1,7]

DBX58.7

TRUE

OUT_VAL[1,8]DBX59.0

TRUE

OUT_VAL[1,9]DBX59.1

TRUE

OUT_VAL[1,10]

DBX59.2

TRUE

OUT_VAL[1,11]

DBX59.3

TRUE

OUT_VAL[1,12]

DBX59.4

TRUE

OUT_VAL[1,13]

DBX59.5

TRUE

OUT_VAL[1,14]

DBX59.6

TRUE

OUT_VAL[1,15]

DBX59.7

TRUE

OUT_VAL[2,0]DBX60.0

FALSE

OUT_VAL[2,1]

DBX60.1

FALSE

OUT_VAL[2,2]

DBX60.2

FALSE

OUT_VAL[2,3]

DBX60.3

FALSE

OUT_VAL[2,4]

DBX60.4

FALSE

OUT_VAL[2,5]

DBX60.5

FALSE

OUT_VAL[2,6]

DBX60.6

FALSE

OUT_VAL[2,7]

DBX60.7

FALSE

OUT_VAL[2,8]DBX61.0

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ

アドレス

値

OUT_VAL[2,9]DBX61.1

FALSE

OUT_VAL[2,10]

DBX61.2

FALSE

OUT_VAL[2,11]

DBX61.3

FALSE

OUT_VAL[2,12]

DBX61.4

FALSE

OUT_VAL[2,13]

DBX61.5

FALSE

OUT_VAL[2,14]

DBX61.6

FALSE

OUT_VAL[2,15]

DBX61.7

FALSE

S_MASK[2,0]DBX92.0

FALSE

S_MASK[2,1]

DBX92.1

TRUE

S_MASK[2,2]

DBX92.2

TRUE

S_MASK[2,3]

DBX92.3

TRUE

S_MASK[2,4]DBX92.4

TRUE

S_MASK[2,5]DBX92.5

FALSE

S_MASK[2,6]

DBX92.6

TRUE

S_MASK[2,7]

DBX92.7

TRUE

S_MASK[2,8]DBX93.0

FALSE

S_MASK[2,9]DBX93.1

FALSE

S_MASK[2,10]

DBX93.2

TRUE

S_MASK[2,11]

DBX93.3

TRUE

S_MASK[2,12]

DBX93.4

TRUE

S_MASK[2,13]

DBX93.5

TRUE

S_MASK[2,14]

DBX93.6

FALSE

S_MASK[2,15]

DBX93.7

TRUE

出力パラメータは、命令の実行前に以下の値にセットされます。
パラメータ

オペランド

アドレス

値

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#FFFFOUT1MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

TRUE

OUT3

MyTag_Output_3

M4.2

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1761

基本命令
3.5 GRAPH
パラメータ

オペランド

アドレス

値

OUT4

MyTag_Output_4

M4.3

TRUE

OUT5

MyTag_Output_5

M4.4

TRUE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

TRUE

OUT8

MyTag_Output_8

M4.7

TRUE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

TRUE

OUT12

MyTag_Output_12

M5.3

TRUE

OUT13

MyTag_Output_13

M5.4

TRUE

OUT14

MyTag_Output_14

M5.5

TRUE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

TRUE

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。

1762

パラメータ

オペランド

アドレス

値

OUT1

MyTag_Output_1

M4.0

TRUE

OUT2

MyTag_Output_2

M4.1

FALSE

OUT3

MyTag_Output_3

M4.2

FALSE

OUT4

MyTag_Output_4

M4.3

FALSE

OUT5

MyTag_Output_5

M4.4

FALSE

OUT6

MyTag_Output_6

M4.5

TRUE

OUT7

MyTag_Output_7

M4.6

FALSE

OUT8

MyTag_Output_8

M4.7

FALSE

OUT9

MyTag_Output_9

M5.0

TRUE

OUT10

MyTag_Output_10

M5.1

TRUE

OUT11

MyTag_Output_11

M5.2

FALSE

OUT12

MyTag_Output_12

M5.3

FALSE

OUT13

MyTag_Output_13

M5.4

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ

オペランド

アドレス

値

OUT14

MyTag_Output_14

M5.5

FALSE

OUT15

MyTag_Output_15

M5.6

TRUE

OUT16

MyTag_Output_16

M5.7

FALSE

Q

Tag_Output_Q

M6.0

FALSE

OUTWORD

Tag_OutputWord

MW8

W#16#4321

ERR_CODE

Tag_ErrorCode

MW10

W#16#0000

以下の値が命令の「DRUM_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

JOG_HIS

DBX12.0

FALSE

EOD

DBX12.1

FALSE

DSC

DBB14

W#16#0002

DCC

DBD16

DW#16#000000C8

DCAT: ディスクリート制御タイマアラーム

説明「ディスクリート制御タイマアラーム」命令を使用して、CMD パラメータが開くまたは閉
じるためのコマンドを発行した時点からの時間を累算します。時間は、指定した時間内でプリセット時間(PT)を超えるか、またはデバイスの開閉に関する情報を受信するまで蓄積します(O_FB または C_FB)。デバイスの開閉に関する情報を受信する前にプリセット済み
時間が経過すると、対応するアラームが有効になります。プリセット済み時間の前にコマ
ンド入力のシグナル状態が切り替わると、この時間経過が再開します。
「ディスクリート制御タイマアラーム」命令は入力条件に対して以下のように応答します。
• CMD パラメータのシグナル状態が「0」から「1」に切り替わると、パラメータ Q、
CMD_HIS、ET (ET < PT の場合のみ)、OA および CA のシグナル状態は、以下のような影響を受けます。
– Q および CMD_HIS パラメータが「1」にセットされます。
– ET、OA、および CA パラメータが「0」にリセットされます。
• CMD パラメータのシグナル状態が「1」から「0」に切り替わると、Q、ET (ET < PT の場合のみ)、OA、CA、および CMD_HIS パラメータが「0」にリセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1763

基本命令
3.5 GRAPH• CMD および CMD_HIS パラメータのシグナル状態が「1」で、O_FB パラメータが「0」にセットされると、命令が最後に実行されてからの時間差(ms)がパラメータ ET の値に加算されます。ET パラメータの値が PT パラメータの値を超えると、OA パラメータのシグナル状態が「1」にセットされます。ET パラメータの値が PT パラメータの値を超えなければ、OA パラメータのシグナル状態が「0」にリセットされます。CMD_HIS パ
ラメータの値は、CMD パラメータの値にリセットされます。
• CMD、CMD_HIS および O_FB パラメータのシグナル状態が「1」にセットされ、C_FB
パラメータの値が「0」の場合、OA パラメータのシグナル状態が「0」にセットされます。ET パラメータの値が、PT パラメータの値にセットされます。O_FB パラメータのシグナル状態「0」に切り替わると、命令が次回実行されるときにアラームがセットされます。CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS、および C_FB パラメータの値が「0」の場合、命令が最後に実行されてからの時間差(ms)が ET パラメータの値に加算されます。ET パラメータの値が PT パ
ラメータの値を超えると、CA パラメータのシグナル状態が「1」にリセットされます。
PT パラメータの値を超えなければ、CA パラメータのシグナル状態は「0」です。
CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• CMD、CMD_HIS、および O_FB パラメータのシグナル状態が「0」のときに C_FB パラ
メータが「1」にセットされると、CA パラメータが「0」にセットされます。ET パラ
メータの値が、PT パラメータの値にセットされます。C_FB パラメータのシグナル状態「0」に切り替わると、命令が次回実行されるときにアラームがセットされます。
CMD_HIS パラメータの値が、CMD パラメータの値にセットされます。
• パラメータ O_FB および C_FB のシグナル状態が同時に「1」の場合、両方のアラーム出力のシグナル状態が「1」にセットされます。
「ディスクリート制御タイマアラーム」命令は、エラー情報を提供しません。

1764

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

CMD

Input

BOOL

I、Q、M、D、L、または シグナル状態「0」は、
定数

説明「閉じる」コマンドを示します。
シグナル状態「1」は、「開く」コマンドを示し
ます。

O_FB

Input

BOOL

I、Q、M、D、L、または 開くときにフィードバッ
定数

C_FB
Q

Input
Output

BOOL
BOOL

ク入力

I、Q、M、D、L、または 閉じるときにフィードバ
定数

ック入力

I、Q、M、D、L

CMD パラメータのステータスを示します

OA

Output

BOOL

I、Q、M、D、L

開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L

閉じるときにアラーム出力ET

StaticDINT

D、L、または定数

現在の経過時間、1 クロックパルス = 1 ミリ秒。

PT

StaticDINT

D、L、または定数

プリセットタイマ値(1クロックパルス = 1 ミリ秒)

PREV_TIME

Static

DWORD

D、L、または定数

前のシステム時間

CMD_HIS

StaticBOOL

D、L、または定数

CMD の履歴ビット

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1765

基本命令
3.5 GRAPH

例
次の例では、CMD パラメータが「0」から「1」に切り替わります。命令の実行後、Q パ
ラメータが「1」にセットされ、2 つのアラーム出力 OA および CA のシグナル状態は「0」になります。インスタンスデータブロックの CMD_HIS パラメータがシグナル状態「1」にセットされ、ET パラメータが「0」にリセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

GRAPH
CALL DCAT, "DCAT_DB"(CMD := "Tag_Input_CMD"
O_FB := "Tag_Input_O_FB"
C_FB := "Tag_Input_C_FB"
Q => "Tag_Output_Q"
OA => "Tag_Output_OA"
CA => "Tag_Output_CA")

次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。

1766

パラメータ

オペランド

値

CMD

Tag_Input_CMD

TRUE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

Q

Tag_Output_Q

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
以下の値が命令の「DCAT_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

ET

DBD4

L#12

PT

DBD8

L#222

CMD_HIS

DBX16.0

FALSE

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

Q

Tag_Output_Q

TRUE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

以下の値が命令の「DCAT_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

ET

DBD4

L#0

CMD_HIS

DBX16.0

TRUE

MCAT: モータ制御タイマアラーム

説明「モータ制御タイマアラーム」命令を使用して、コマンド入力(開または閉)の 1 つが有効化される時点からの時間を累積します。時間はプリセット済み時間が経過するまで、または関連のフィードバック入力が、デバイスが指定された時間内に要求された操作を実行したことを示す場合に蓄積されます。フィードバックが受信される前にプリセット済み時間が経過すると、対応するアラームがトリガされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1767

基本命令
3.5 GRAPH「モータ制御タイマアラーム」命令の実行
次の表に、さまざまな入力条件に対する「モータ制御タイマアラーム」命令の応答を示します。
入力パラメータETX

出力パラメータ

O_H C_H O_C C_C S_C

O_F C_F

IS

IS

MD

MD

MD

B

B

1

1

X

X

X

X

X

OO
0

CO
0

OA
1

CA
1

ET
PT

O_H C_H Q

ステータ

IS

IS

ス

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

X

1

1

0

0

1

1

PT

0

0

0

Alarm (ア
ラーム)

X

X

X

X

X

1

X

X

0

0

0

0

X

0

0

1

Stop (停止)

X

X

X

1

1

X

X

X

0

0

0

0

X

0

0

1

Stop (停止)

X

0

X

1

0

0

X

X

1

0

0

0

0

1

0

1

Start
opening
(開き始め
る)

<PT

1

0

X

0

0

0

X

1

0

0

0

INC

1

0

1

Open (開
く)

X

1

0

X

0

0

1

0

0

0

0

0

PT

1

0

1

Opened
(開いた)

>=P 1

0

X

0

0

0

X

0

0

1

0

PT

1

0

0

T

Opening
alarm (ア
ラームを
開いてい
る)

X

X

0

0

1

0

X

X

0

1

0

0

0

0

1

1

Start
closing (閉
じ始める)

<PT

0

1

0

X

0

X

0

0

1

0

0

INC

0

1

1

Close (閉
じる)

X

0

1

0

X

0

0

1

0

0

0

0

PT

0

1

1

Closed (閉
じた)

1768

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
入力パラメータ>=P 0

1

出力パラメータ
0

X

0

X

0

0

0

0

1

PT

0

1

0

T

Closing
alarm (ア
ラームを
閉じてい
る)

X

0

0

0

0

0

X

X

0

0

0

0

X

0

0

1

Stopped
(停止)

凡例:
INC

FB から ET への最後に処理されてからの時間差(ms)を追加します。

PT

PT は ET と同じ値にセットされます。

X

使用不可

<PT

ET < PT>=PTET >= PT

入力パラメータ O_HIS および C_HIS のシグナル状態が両方とも「1」の場合、これらのパラメータのシグ
ナル状態が直ちに「0」にセットされます。この場合、上記の表の最後の行(X)が有効になります。入力パ
ラメータ O_HIS および C_HIS のシグナル状態が「1」であるかどうかをチェックすることができないため、
この場合の出力パラメータは以下のようにセットされます。
OO = FALSE
CO = FALSEOA = FALSE
CA = FALSEET = PT
Q = TRUE

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

O_CMD

BOOL

I、Q、M、D、[開]コマンド入力

Input

L、または定数
C_CMD

Input

BOOL

I、Q、M、D、[閉]コマンド入力

L、または定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1769

基本命令
3.5 GRAPH
パラメータ 宣言

データタイプ

メモリ領域

説明

S_CMD

BOOL

I、Q、M、D、[停止]コマンド入力

Input

L、または定数
O_FB

Input

C_FB

Input

BOOL
BOOL

I、Q、M、D、開くときにフィードバッ

L、または定数ク入力

I、Q、M、D、閉じるときにフィードバ

L、または定数

ック入力

OO

Output

BOOL

I、Q、M、D、L [開]出力CO

Output

BOOL

I、Q、M、D、L [閉]出力

OA

Output

BOOL

I、Q、M、D、L 開くときにアラーム出力

CA

Output

BOOL

I、Q、M、D、L 閉じるときにアラーム出力

Q

Output

BOOL

I、Q、M、D、L シグナル状態「0」は、エラー条件を示します。

ET

StaticDINT

D、L、または定 現在の経過時間、1 クロックパルス = 1 ミリ秒

数PT

StaticDINT

D、L、または定 プリセットタイマ値(1 ク
ロックパルス = 1 ミリ秒)

数
PREV_TIME

Static

DWORD

D、L、または定 前のシステム時間
数

O_HIS

StaticBOOL

D、L、または定 [開]履歴ビット
数

C_HIS

StaticBOOL

D、L、または定 [閉]履歴ビット数

例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

GRAPH
CALL MCAT, "MCAT_DB"(O_CMD := "Tag_Input_O_CMD"

1770

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
GRAPH
C_CMD := "Tag_Input_C_CMD"
S_CMD := "Tag_Input_S_CMD"
O_FB := "Tag_Input_O_FB"
C_FB := "Tag_Input_C_FB"
OO => "Tag_OutputOpen"CO => "Tag_OutputClosed"
OA => "Tag_Output_OA"
CA => "Tag_Output_CA"
Q => "Tag_Output_Q")

次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

O_CMD

Tag_Input_O_CMD

TRUE

C_CMD

Tag_Input_C_CMD

FALSE

S_CMD

Tag_Input_S_CMD

FALSE

O_FB

Tag_Input_O_FB

FALSE

C_FB

Tag_Input_C_FB

FALSE

OO

Tag_OutputOpen

FALSE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

FALSE

以下の値が命令の「MCAT_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

ET

DBD4

L#2

PT

DBD8

L#22

O_HIS

DBX16.0

TRUE

C_HIS

DBX16.1

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1771

基本命令
3.5 GRAPH

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OO

Tag_OutputOpen

TRUE

CO

Tag_OutputClosed

FALSE

OA

Tag_Output_OA

FALSE

CA

Tag_Output_CA

FALSE

Q

Tag_Output_Q

TRUE

以下の値が命令の「MCAT_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

ET

DBD4

L#0

O_HIS

DBX16.0

TRUE

CMD_HIS

DBX16.1

FALSE

IMC: 入力ビットをマスクビットと比較

説明「入力ビットをマスクビットと比較」命令を使用して最大 16 のプログラム済み入力ビット(IN_BIT0～IN_BIT15)のシグナル状態を対応するマスクビットと比較します。最大 16 のマスクされたステップをプログラム可能です。IN_BIT0 パラメータの値が CMP_VAL[x,0]マス
クの値と比較されます。「x」はステップ番号を示しています。CMP_STEP パラメータで、比較に使用するマスクのステップ番号を指定します。プログラムされた値は、すべて同じ方法で比較されます。プログラムされていない入力ビットやマスクビットは、既定のシグナル状態である FALSE になります。
比較で一致が検出されると、OUT パラメータのシグナル状態が「1」にセットされます。
それ以外の場合、OUT パラメータが「0」にセットされます。
CMP_STEP パラメータの値が 15 よりも大きい場合、この命令は実行されません。
ERR_CODE パラメータでエラーメッセージが出力されます。

1772

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメ
ータ

宣言

データタイ
プ

メモリ領域

説明

IN_BIT0

Input

BOOL

I、Q、M、D、L、または入力ビット 0 がマスクビ

定数

ット 0 と比較されます。

I、Q、M、D、L、または入力ビット 1 がマスクビ

定数

ット 1 と比較されます。

I、Q、M、D、L、または入力ビット 2 がマスクビ

定数

ット 2 と比較されます。

I、Q、M、D、L、または入力ビット 3 がマスクビ

定数

ット 3 と比較されます。

I、Q、M、D、L、または入力ビット 4 がマスクビ

定数

ット 4 と比較されます。

I、Q、M、D、L、または入力ビット 5 がマスクビ

定数

ット 5 と比較されます。

I、Q、M、D、L、または入力ビット 6 がマスクビ

定数

ット 6 と比較されます。

I、Q、M、D、L、または入力ビット 7 がマスクビ

定数

ット 7 と比較されます。

I、Q、M、D、L、または入力ビット 8 がマスクビ

定数

ット 8 と比較されます。

I、Q、M、D、L、または入力ビット 9 がマスクビ

定数

ット 9 と比較されます。

I、Q、M、D、L、または入力ビット 10 がマスクビ

定数

ット 10 と比較されます。

I、Q、M、D、L、または入力ビット 11 がマスクビ

定数

ット 11 と比較されます。

I、Q、M、D、L、または入力ビット 12 がマスクビ

定数

ット 12 と比較されます。

I、Q、M、D、L、または入力ビット 13 がマスクビ

定数

ット 13 と比較されます。

I、Q、M、D、L、または入力ビット 14 がマスクビ

定数

ット 14 と比較されます。

IN_BIT1
IN_BIT2
IN_BIT3
IN_BIT4
IN_BIT5
IN_BIT6
IN_BIT7
IN_BIT8
IN_BIT9
IN_BIT1

Input
Input
Input
Input
Input
Input
Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL

0
IN_BIT1

Input

BOOL

1
IN_BIT1

Input

BOOL

2
IN_BIT1

Input

BOOL

3
IN_BIT1

Input

4

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL

1773

基本命令
3.5 GRAPH
パラメ
ータ

宣言

データタイ
プ

メモリ領域

説明

IN_BIT1

Input

BOOL

I、Q、M、D、L、または入力ビット 15 がマスクビ

定数

ット 15 と比較されます。

5
CMP_ST Input

BYTE

EP
OUT

Output

BOOL

I、Q、M、D、L、P、また 比較に使用されるマスクのは定数ステップ番号。

I、Q、M、D、L

シグナル状態「1」は、一致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。

ERR_CO

Output

WORD

I、Q、M、D、L、P

エラー情報

CMP_VA Static

ARRAY OF

I、Q、M、D、L、または比較マスク[0～15, 0～

L

WORD

定数

15]:インデックスの最初のDE

番号はステップ番号で、2番目の番号はマスクビット
番号です。

パラメータ ERR_CODE
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

000A

CMP_STEP パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

1774

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

例
以下の例では、すべての 16 の入力ビットがステップ 2 のマスクと比較されます。入力ビットがステップ 2 のマスクに一致するため、OUT パラメータのシグナル状態は TRUE にセットされます。
注記
静的なパラメータをデータブロックで初期化できます。

GRAPH
CALL IMC, "IMC_DB"(IN_BIT0 - 15 := "Tag_Input_BITn"
CMP_STEP := "Tag_CMP_STEP"OUT => "Tag_Output"
ERR_CODE => "Tag_ErrorCode")次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。
パラメータ

オペランド

値

IN_BIT0

Tag_Input_BIT0

TRUE

IN_BIT1

Tag_Input_BIT1

TRUE

IN_BIT2

Tag_Input_BIT2

FALSE

IN_BIT3

Tag_Input_BIT3

TRUE

IN_BIT4

Tag_Input_BIT4

TRUE

IN_BIT5

Tag_Input_BIT5

FALSE

IN_BIT6

Tag_Input_BIT6

TRUE

IN_BIT7

Tag_Input_BIT7

TRUE

IN_BIT8

Tag_Input_BIT8

FALSE

IN_BIT9

Tag_Input_BIT9

TRUE

IN_BIT10

Tag_Input_BIT10

TRUE

IN_BIT11

Tag_Input_BIT11

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1775

基本命令
3.5 GRAPH
パラメータ

オペランド

値

IN_BIT12

Tag_Input_BIT12TRUE

IN_BIT13

Tag_Input_BIT13

TRUE

IN_BIT14

Tag_Input_BIT14FALSE

IN_BIT15

Tag_Input_BIT15

TRUE

CMP_STEP

Tag_CMP_STEP

B#16#02OUT

Tag_Output

FALSE

ERR_CODE

Tag_ErrorCode

W#16#0000

ステップ 2 のマスクの以下の値が命令の「IMC_DB」インスタンスデータブロックに保存さ
れます。

1776

パラメータ

アドレス

値

CMP_VAL [2,0]DBX12.0

TRUE

CMP_VAL [2,1]

DBX12.1

TRUE

CMP_VAL [2,2]

DBX12.2

FALSE

CMP_VAL [2,3]

DBX12.3

TRUE

CMP_VAL [2,4]

DBX12.4

TRUE

CMP_VAL [2,5]

DBX12.5

FALSE

CMP_VAL [2,6]

DBX12.6

TRUE

CMP_VAL [2,7]

DBX12.7

TRUE

CMP_VAL [2,8]DBX13.0

FALSE

CMP_VAL [2,0]DBX13.1

TRUE

CMP_VAL [2,10]

DBX13.2

TRUE

CMP_VAL [2,11]

DBX13.3

FALSE

CMP_VAL [2,12]

DBX13.4

TRUE

CMP_VAL [2,13]

DBX13.5

TRUE

CMP_VAL [2,14]

DBX13.6

FALSE

CMP_VAL [2,15]

DBX13.7

TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OUT

Tag_Output

TRUE

ERR_CODE

Tag_ErrorCode

W#16#0000

SMC: スキャンマトリックスの比較

説明「スキャンマトリックスの比較」命令を使用して最大 16 のプログラム済み入力ビット(IN_BIT0～IN_BIT15)のシグナル状態を各ステップの比較マスクの対応するビットと比較します。処理はステップ 1 から開始し、プログラムされた最後のステップ(LAST)まで、または一致が検出されるまで続行されます。IN_BIT0 パラメータの入力ビットが、
CMP_VAL[x,0]マスクの値と比較されます。「x」はステップ番号を示しています。プログ
ラムされた値は、すべて同じ方法で比較されます。一致が検出されると、OUT パラメー
タのシグナル状態が「1」にセットされ、一致するマスクのステップ番号が OUT_STEP パ
ラメータに書き込まれます。プログラムされていない入力ビットやマスクビットは、既定のシグナル状態である FALSE になります。複数のステップに一致するマスクが存在する場
合、最初に検出されたマスクのみが OUT_STEP パラメータに示されます。一致が検出されないと、OUT パラメータのシグナル状態が「0」にセットされます。この場合、OUT_STEP
パラメータの値は LAST パラメータの値よりも「1」だけ大きくなります。

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメ
ータ

宣言

データタイ
プ

メモリ領域

説明

IN_BIT0

Input

BOOL

I、Q、M、D、L、または入力ビット 0 がマスクビ

定数

ット 0 と比較されます。

I、Q、M、D、L、または入力ビット 1 がマスクビ

定数

ット 1 と比較されます。

I、Q、M、D、L、または入力ビット 2 がマスクビ

定数

ット 2 と比較されます。

IN_BIT1
IN_BIT2

Input
Input

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

BOOL
BOOL

1777

基本命令
3.5 GRAPH
パラメ
ータ

宣言

データタイ
プ

メモリ領域

説明

IN_BIT3

Input

BOOL

I、Q、M、D、L、または入力ビット 3 がマスクビ

定数

ット 3 と比較されます。

I、Q、M、D、L、または入力ビット 4 がマスクビ

定数

ット 4 と比較されます。

I、Q、M、D、L、または入力ビット 5 がマスクビ

定数

ット 5 と比較されます。

I、Q、M、D、L、または入力ビット 6 がマスクビ

定数

ット 6 と比較されます。

I、Q、M、D、L、または入力ビット 7 がマスクビ

定数

ット 7 と比較されます。

I、Q、M、D、L、または入力ビット 8 がマスクビ

定数

ット 8 と比較されます。

I、Q、M、D、L、または入力ビット 9 がマスクビ

定数

ット 9 と比較されます。

I、Q、M、D、L、または入力ビット 10 がマスクビ

定数

ット 10 と比較されます。

I、Q、M、D、L、または入力ビット 11 がマスクビ

定数

ット 11 と比較されます。

I、Q、M、D、L、または入力ビット 12 がマスクビ

定数

ット 12 と比較されます。

I、Q、M、D、L、または入力ビット 13 がマスクビ

定数

ット 13 と比較されます。

I、Q、M、D、L、または入力ビット 14 がマスクビ

定数

ット 14 と比較されます。

I、Q、M、D、L、または入力ビット 15 がマスクビ

定数

ット 15 と比較されます。

I、Q、M、D、L

シグナル状態「1」は、一

IN_BIT4
IN_BIT5
IN_BIT6
IN_BIT7
IN_BIT8
IN_BIT9
IN_BIT1

Input
Input
Input
Input
Input
Input
Input

BOOL
BOOL
BOOL
BOOL
BOOL
BOOL
BOOL

0
IN_BIT1

Input

BOOL

1
IN_BIT1

Input

BOOL

2
IN_BIT1

Input

BOOL

3
IN_BIT1

Input

BOOL

4
IN_BIT1

Input

BOOL

5
OUT

OutputBOOL致が検出されたことを示します。
シグナル状態「0」は、一致が検出されなかったことを示します。
ERR_CO

Output

WORD

I、Q、M、D、L、P

エラー情報

DE

1778

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメ
ータ

宣言

OUT_ST Output

データタイ
プ

メモリ領域

説明

BYTE

I、Q、M、D、L、P

一致するマスクを持つステEP

ップの番号が含まれているか、または一致が検出されない場合は、LAST パラメ
ータの値よりも「1」だけ大きいステップ番号が含まれています。

LAST

StaticBYTE

I、Q、M、D、L、P、また 一致するマスクをスキャン
は定数する最後のステップのステ
ップ番号を指定します。

CMP_VA Static

ARRAY OF

I、Q、M、D、L、または比較マスク[0～15, 0～

L

WORD

定数

15]:インデックスの最初の番号はステップ番号で、2番目の番号はマスクビット
番号です。

パラメータ ERR_CODE
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

000E

LAST パラメータの値が 15 よりも大きくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1779

基本命令
3.5 GRAPH

例
この例で、すべての 16 個の入力ビットは一致が検出されるまでステップ 0～5 までのマスクと比較されます。ステップ 2 が入力ビットと一致したため、ステップ 0～2 のマスクのみがスキャンされました。
注記
静的なパラメータをデータブロックで初期化できます。

GRAPH
CALL SMC, "SMC_DB"(IN_BIT0 - 15 := "Tag_Input_BITn"
OUT => "Tag_Output"
OUT_STEP => "Tag_Output_STEP"ERR_CODE => "Tag_ErrorCode")次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータと出力パラメータに以下の値が使用されます。

1780

パラメータ

オペランド

値

IN_BIT0

Tag_Input_BIT0

TRUE

IN_BIT1

Tag_Input_BIT1

TRUE

IN_BIT2

Tag_Input_BIT2

FALSE

IN_BIT3

Tag_Input_BIT3

TRUE

IN_BIT4

Tag_Input_BIT4

TRUE

IN_BIT5

Tag_Input_BIT5

FALSE

IN_BIT6

Tag_Input_BIT6

TRUE

IN_BIT7

Tag_Input_BIT7

TRUE

IN_BIT8

Tag_Input_BIT8

FALSE

IN_BIT9

Tag_Input_BIT9

TRUE

IN_BIT10

Tag_Input_BIT10

TRUE

IN_BIT11

Tag_Input_BIT11

FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
パラメータ

オペランド

値

IN_BIT12

Tag_Input_BIT12TRUE

IN_BIT13

Tag_Input_BIT13

TRUE

IN_BIT14

Tag_Input_BIT14FALSE

IN_BIT15

Tag_Input_BIT15

TRUE

OUT

Tag_Output

FALSE

OUT_STEP

Tag_Output_STEP

B#16#00

ERR_CODE

Tag_ErrorCode

W#16#0000

ステップ 2 のマスクの以下の値が命令の「SMC_DB」インスタンスデータブロックに保存
されます。
パラメータ

アドレス

値

CMP_VAL [2,0]DBX12.0

TRUE

CMP_VAL [2,1]

DBX12.1

TRUE

CMP_VAL [2,2]

DBX12.2

FALSE

CMP_VAL [2,3]

DBX12.3

TRUE

CMP_VAL [2,4]

DBX12.4

TRUE

CMP_VAL [2,5]

DBX12.5

FALSE

CMP_VAL [2,6]

DBX12.6

TRUE

CMP_VAL [2,7]

DBX12.7

TRUE

CMP_VAL [2,8]DBX13.0

FALSE

CMP_VAL [2,0]DBX13.1

TRUE

CMP_VAL [2,10]

DBX13.2

TRUE

CMP_VAL [2,11]

DBX13.3

FALSE

CMP_VAL [2,12]

DBX13.4

TRUE

CMP_VAL [2,13]

DBX13.5

TRUE

CMP_VAL [2,14]

DBX13.6

FALSE

CMP_VAL [2,15]

DBX13.7

TRUE

LAST

DB84

B#16#05

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1781

基本命令
3.5 GRAPH

処理後命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OUT

Tag_Output

TRUE

OUT_STEP

Tag_Output_STEP

B#16#02

ERR_CODE

Tag_ErrorCode

W#16#0000

LEAD_LAG: リード/ラグアルゴリズム

説明「リード/ラグアルゴリズム」命令を使用して、アナログタグの信号を処理します。GAIN パ
ラメータのゲイン値はゼロよりも大きくなければなりません。「リード/ラグアルゴリズム」
命令の結果は、以下の等式を使用して計算されます。
287

/'B7,0(6$03/(B7/*B7,0(/'B7,0(,1*$,135(9B287*$,1/*B7,0(6$03/(B7/*B7,0(6$03/(B7/*B7,0(6$03/(B735(9B,1「リード/ラグアルゴリズム」命令は、処理を固定プログラムサイクルで行う場合のみ正しい
結果が得られます。LD_TIME、LG_TIME および SAMPLE_T パラメータには同じ単位を指定する必要があります。LG_TIME > 4 + SAMPLE_T の場合、この命令は以下の関数を実行します。
OUT = GAIN * ((1 + LD_TIME * s) / (1 + LG_TIME * s)) * IN
GAIN パラメータの値がゼロ以下の場合、計算は実行されず、ERR_CODE パラメータにエラー情報が出力されます。
「リード/ラグアルゴリズム」命令をダイナミックフィードフォワード制御でループと共に補償器として使用します。この命令は、2 つの操作で構成されています。「Lead」演算はOUT 出力のフェーズをシフトして、出力が入力の前に来るようにします。一方「Lag」演算は出力をシフトして、出力が入力の後になるようにします。「Lag」演算は積分に相当する
ため、ノイズサプレッサやローパスフィルタとして使用できます。「Lead」演算は微分と同等なため、ハイパスフィルタとして使用できます。2 つの演算(Lead および Lag)をまとめて実行すると、低周波域では出力フェーズが入力フェーズよりも遅れ、高周波域では出力フェーズが入力フェーズに先行します。つまり「リード/ラグアルゴリズム」命令は帯域フィルタとして使用できます。

1782

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

REAL

I、Q、M、D、処理対象の現在

L、P、または定 のサンプル時間
数(サイクルタイム)の入力値。

SAMPLE_T

Input

INT

I、Q、M、D、

サンプル時間L、P、または定数
OUT

OutputREAL

I、Q、M、D、

命令の結果

L、P
ERR_CODE

Output

WORD

I、Q、M、D、

エラー情報

L、P
LD_TIME

Static

REAL

I、Q、M、D、

サンプル時間と

L、P、または定 しての同一ユニ
数

ット内のリード
タイム。

LG_TIME

Static

REAL

I、Q、M、D、

サンプル時間と

L、P、または定 しての同一ユニ
数

ット内のラグタイム。

GAIN

Static

REAL

I、Q、M、D、% / %で表される

L、P、または定 ゲイン(定常状態数時の出力の切り替えと入力の切り替えとの比率)。

PREV_IN

Static

REAL

I、Q、M、D、

前の入力

L、P、または定数
PREV_OUT

Static

REAL

I、Q、M、D、前の出力

L、P、または定
数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1783

基本命令
3.5 GRAPH

パラメータ ERR_CODE
次の表に、ERR_CODE パラメータの値の意味を示します。
エラーコー 説明ド*
(W#16#...)
0000

エラーなし

0009

GAIN パラメータの値がゼロ以下です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

例
次の例で、命令がどのように動作するかを示します。
注記
静的なパラメータをデータブロックで初期化できます。

GRAPH
CALL LEAD_LAG, "LEAD_LAG_DB"(IN := "Tag_Input"
SAMPLE_T := "Tag_Input_SAMPLE_T"
OUT => "Tag_Output_Result"
ERR_CODE => "Tag_ErrorCode")次の表に、命令が特定の値を使用してどのように動作するかを示します。

処理前
この例では、入力パラメータで以下の値が使用されます。

1784

パラメータ

オペランド

値

IN

Tag_Input

2.0

SAMPLE_T

Tag_Input_SAMPLE_T

10

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
以下の値が命令の「LEAD_LAG_DB」インスタンスデータブロックに保存されます。
パラメータ

アドレス

値

LD_TIME

DBD12

2.0

LG_TIME

DBD16

2.0

GAIN

DBD20

1.0

PREV_IN

DBD24

6.0

PREV_OUT

DBD28

6.0

処理後
命令が実行された後に、以下の値が出力パラメータに書き込まれます。
パラメータ

オペランド

値

OUT

Tag_Output_Result

2.0

以下の値が命令の「LEAD_LAD_DB」インスタンスデータブロックに保存されます。
パラメータ

オペランド

値

PREV_IN

DBD24

2.0

PREV_OUT

DBD28

2.0

SEG: 7 セグメント表示のビットパターンの作成

説明「7 セグメント表示のビットパターンの作成」命令は、指定されたソースワード(IN)内の 16
進数の 4 桁を 1 つずつ 7 セグメント表示用の 4 つの同等のコードに変換し、それを出力(OUT)のダブルワードに書き込みます。
この命令は、エラー条件を検出しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1785

基本命令
3.5 GRAPH
入力の 16 進数値と出力のビットパターンの関係は以下のようになります。
桁‑gfedcba

表示0000

00111111

00001

00000110

10010

01011011

2

0011

01001111

3

0100

01100110

4

0101

01101101

5

0110

01111101

6

0111

00000111

7

1000

01111111

8

1001

01100111

9

1010

01110111

A

1011

01111100B

110000111001

C

1101

01011110D

1110

01111001

E

1111

01110001

F

7 セグメント表示
D
I

E
J

H

F
G

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

WORD

I、Q、M、D、4 つの 16 進数

L、P、または定 のソースワード
数
OUT

Output

DWORD

I、Q、M、D、

変換先の 4 バイ

L、P

トのビットパターン

1786

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL SEG(IN := "Tag_Input"
OUT => "Tag_Output")

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値

16 進数

2 進数

IN

Tag_Input

W#16#1234

0001 0010 0011 0100

OUT

Tag_Output

DW#16065B4F66

000 00110 0101 1011
0100 1111 0110 0110
表示:1234

BCDCPL: 10 の補数の作成

説明「10 の補数の作成」命令を使用して、IN パラメータで指定された 7 桁の BCD 数の 10 の補数を作成します。この命令は、次の数式を使用して計算します。
10000000 (BCD として)
– 7 桁の BCD 数---------------------------------------10 の補数(BCD として)TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1787

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

ビット列

I、Q、M、D、

7 桁の BCD 数

L、P、または定数
ERR_CODE

Output

DWORD

I、Q、M、D、

命令の結果

L、P

例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL BCDCPL(IN := "Tag_Input"
ERR_CODE => "Tag_Output")

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ

オペランド

値*

IN

Tag_Input

DW#16#01234567

ERR_CODE

Tag_Output

DW#16#08765433*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

BITSUM:セットビット数カウント

説明「セットビット数のカウント」命令を使用して、シグナル状態「1」にセットされるオペラ
ンドのビット数をカウントします。ビットをカウントするオペランドは、IN パラメータで指定されます。命令の結果は、RET_VAL パラメータに出力されます。

1788

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、ブロックパラメータのタイプを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

IN

DWORD

I、Q、M、D、

セットビット数をカウン

Input

L、P、または定 トするオペランド
数
RET_VAL

Output

INT

I、Q、M、D、

セットビット数

L、P例
次の例で、命令がどのように動作するかを示します。
GRAPH
CALL BITSUM(IN := "Tag_Input"
RET_VAL => "Tag_Output")

次の表に、命令が特定の値を使用してどのように動作するかを示します。
パラメータ オペランド

値*

IN

Tag_Input

DW#16#12345678

RET_VAL

Tag_Output

W#16#000D (13 ビット)

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えに関する情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1789

基本命令
3.5 GRAPH

3.5.3

LAD 命令比較演算 )的 LAD 命令

説明
GRAPH でプログラミングしている場合、さまざまな LAD 命令が使用可能です。
次の表は、命令およびそれらの可用性の概要を示しています。
LAD 命令

固定の命
令

移行/監
視/イン
ターロッ
ク

全般
ネットワーク挿入

x

空ボックス

x

x

分岐を開く

x

x

分岐を閉じるxx-|: 入力の挿入

x

ビット論理演算1790--| |--: a 接点 (ページ 33)xx--| / |--: b 接点 (ページ 34)xx--|NOT|--: RLO の反転 (ページ 36)xx---( )---: 割り当て (ページ 36)x

否定割り当て (ページ 37)x---( R )---: 出力のリセット (ページ 38)x---( S )---: 出力設定 (ページ 39)x

SET_BF: ビットフィールドのセット (ページ 40)

x

RESET_BF: ビットフィールドのリセット (ページ 42)x

SR: フリップフロップのセット/リセット (ページ 43)x

RS: フリップフロップのリセット/セット (ページ 45)

x--|P|--: 立ち上がりエッジのオペランドスキャン (ページ 47)x

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
LAD 命令固定の命
令--|N|--: 立ち下がりエッジのオペランドスキャン (ページ 49)x--(P)--: 信号立ち上がりエッジのオペランドの設定 (ページ 51)x--(N)--: 信号立ち下がりエッジのオペランドの設定 (ページ 52)

x

P_TRIG: 立ち上がりエッジの RLO スキャン (ページ 53)x

N_TRIG: 立ち下がりエッジの RLO スキャン (ページ 55)

x

R_TRIG: :信号立ち上がりエッジの検出 (ページ 56)

x

F_TRIG: :信号立ち下がりエッジの検出 (ページ 57)

x

移行/監
視/イン
ターロッ
ク

タイマ
IEC タイマ
TP: パルスの生成 (ページ 59)

x

TON: オンディレータイマ (ページ 63)x

TOF: オフディレータイマ (ページ 68)

x

TONR: タイムアキュムレータ (ページ 73)x---( TP )---: パルスタイマの起動 (ページ 79)x---( TON )---: オンディレータイマの起動 (ページ 83)x---( TOF )---: オフディレータイマの起動 (ページ 87)x---( TONR )---: タイムアキュムレータ (ページ 91)x---( RT )---: タイマのリセット (ページ 95)x---( PT )---: 持続時間のロード (ページ 97)

x

SIMATIC タイマ(S7-1500)
S_PULSE: パルスタイマパラメータの割り当てと開始 (ページ 100) x
S_PEXT: 拡張パルスタイマパラメータを割り当てと起動 (ペーxジ 103)S_ODT: オンディレータイマパラメータの割り当てと開始 (ペーxジ 106)S_ODTS: 保持型オンディレータイマパラメータの割り当てと開始 x(ページ 109)
S_OFFDT: オフディレータイマパラメータの割り当てと開始 (ペー x
ジ 112)
カウンタ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1791

基本命令
3.5 GRAPH
LAD 命令

固定の命
令

移行/監
視/イン
ターロッ
ク

IEC カウンタ
CTU: カウントアップ (ページ 126)x

CTD: カウントダウン (ページ 129)x

CTUD: カウントアップ/カウントダウン (ページ 132)x

SIMATIC カウンタ(S7-1500)
S_CU: パラメータおよびカウントアップの割り当て (ページ 137) x
S_CD: パラメータおよびカウントダウンの割り当て (ページ 139) x
S_CUD: パラメータおよびカウントアップ/カウントダウンの割り当 xて (ページ 141)
比較演算
CMP ==: 等価 (ページ 148)x

x

CMP <>: 不等価 (ページ 153)x

x

CMP >=: 以上 (ページ 159)x

x

CMP <=: 以下 (ページ 162)x

x

CMP >: 超過 (ページ 164)x

x

CMP <: 未満 (ページ 167)xx

IN_RANGE: 範囲内の値 (ページ 169)x

OUT_RANGE: 範囲外の値 (ページ 171)x---| OK |---: 有効性のチェック (ページ 172)x---| NOT_OK |---: 無効性のチェック (ページ 173)x

EQ_Type: EQUAL (等しい)かどうかデータタイプをタグのデータタ x
イプと比較 (ページ 174)
NE_Type: UNEQUAL (等しくない)かどうかデータタイプをタグの x
データタイプと比較 (ページ 177)
EQ_ElemType: EQUAL (等しい)かどうか配列要素のデータタイプを x
タグのデータタイプと比較 (ページ 179)
NE_ElemType: UNEQUAL (等しくない)かどうか配列要素のデータ x
タイプをタグのデータタイプと比較 (ページ 181)

1792

IS_NULL: EQUALS ZERO ポインタの照会 (ページ 183)x

NOT_NULL: UNEQUALS ZERO ポインタの照会 (ページ 184)

x

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
LAD 命令固定の命
令

IS_ARRAY: 配列のチェック (ページ 185)

x

移行/監
視/イン
ターロッ
ク

CMP>T: ステップ有効化時間よりも長い (ページ 1797)x

CMP>U: 割り込みなしステップの有効化時間よりも長い (ペーxジ 1798)
四則演算
CALCULATE: 計算 (ページ 190)x

ADD: 加算 (ページ 194)x

SUB: 減算 (ページ 196)x

MUL: 乗算 (ページ 197)

x

DIV: 除算 (ページ 199)

x

MOD: 除算の剰余を返す (ページ 200)x

NEG: 2 の補数の作成 (ページ 201)x

INC: インクリメント (ページ 203)x

DEC: デクリメント (ページ 204)x

ABS: 絶対値の形成 (ページ 206)x

MIN: 最小値の取得 (ページ 207)x

MAX: 最大値の取得 (ページ 209)x

LIMIT: 制限値の設定 (ページ 211)x

SQR: 2 乗値の形成 (ページ 214)x

SQRT: 平方根の形成 (ページ 216)

x

LN: 自然対数の形成 (ページ 217)

x

EXP: 指数値の形成 (ページ 219)

x

SIN: 正弦値の形成 (ページ 220)x

COS: 余弦値の形成 (ページ 222)

x

TAN: 正接値の形成 (ページ 223)x

ASIN: 逆正弦値の形成 (ページ 225)x

ACOS: 逆余弦値の形成 (ページ 226)x

ATAN: 逆正接値の形成 (ページ 228)

x

FRAC: 小数部を返す (ページ 230)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1793

基本命令
3.5 GRAPH
LAD 命令固定の命
令EXPT: 累乗 (ページ 231)

x

移行/監
視/イン
ターロッ
ク

ムーブ操作
MOVE: 移動値 (ページ 233)

x

Deserialize: 逆シリアル化 (ページ 241)x

Serialize: シリアル化 (ページ 247)x

FieldRead: フィールドの読み出し (ページ 322)x

FieldWrite: フィールドの書き込み (ページ 324)x

MOVE_BLK: ブロックの移動 (ページ 253)x

MOVE_BLK_VARIANT: ブロックの移動 (ページ 256)x

UMOVE_BLK: 割り込みなしブロック転送 (ページ 262)x

FILL_BLK: フィル命令 (ページ 265)x

UFILL_BLK: 割り込み不可能なフィル命令 (ページ 269)x

SWAP: スワップ (ページ 297)x

ReadFromArrayDB: ARRAY データブロックからの読み出し (ペーxジ 299)
WriteToArrayDB: ARRAY データブロックへの書き込み (ページ 302) x
ReadFromArrayDBL: ロードメモリの ARRAY データブロックからの x
読み出し (ページ 305)
WriteToArrayDBL: ロードメモリの配列データブロックへの書き込 x
み (ページ 309)
VariantGet: VARIANT タグ値の読み出し (ページ 313)

x

VariantPut: VARIANT タグ値の書き込み (ページ 315)xCountOfElements: ARRAY エレメント数の取得 (ページ 317)x

BLKMOV: ブロックの移動(S7-1500) (ページ 327)x

UBLKMOV: 割り込み不可能なブロックの移動(S7-1500) (ペーxジ 331)
FILL: フィル命令(S7-1500) (ページ 334)

x

変換操作

1794

CONVERT: 値の変換 (ページ 338)

x

ROUND: 数値の四捨五入 (ページ 341)

x

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
LAD 命令固定の命
令CEIL: 浮動小数点数から次に大きい整数を生成 (ページ 342)

x

FLOOR: 浮動小数点数から次に小さい整数を生成 (ページ 344)x

TRUNC: 値の切り捨て (ページ 345)x

SCALE_X: スケール (ページ 347)x

NORM_X: 正規化 (ページ 349)

x

VARIANT_TO_DB_ANY: VARIANT の DB_ANY への変換

x

DB_ANY_TO_VARIANT: DB_ANY の VARIANT への変換

x

SCALE: スケール(S7-1500) (ページ 352)

x

UNSCALE: スケール解除(S7-1500) (ページ 355)

x

移行/監
視/イン
ターロッ
ク

プログラム制御演算
ランタイム制御
ENDIS_PW: パスワードの適正化の制限および有効化 (ページ 369) x
RE_TRIGR: サイクルタイムモニタのリスタート (ページ 378)x

STP: プログラム終了 (ページ 379)x

GET_ERROR: ローカルでエラーを取得 (ページ 379)x

GET_ERR_ID: ローカルでエラー ID を取得 (ページ 384)x

INIT_RD: すべての保持データの初期化 (ページ 388)

x

WAIT: 遅延時間の設定 (ページ 390)x

ランタイム: ランタイム測定 (ページ 391)x

ワード論理演算
AND: AND 論理積演算 (ページ 393)

x

OR: OR 論理和演算 (ページ 395)x

XOR : EXCLUSIVE OR 排他的論理和演算 (ページ 397)

x

INV: 1 の補数の作成 (ページ 398)x

DECO: デコード (ページ 400)x

ENCO: エンコード (ページ 401)x

SEL: 選択 (ページ 402)x

MUX: 多重化 (ページ 405)x

DEMUX: 逆多重化 (ページ 409)x

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1795

基本命令
3.5 GRAPH
LAD 命令

固定の命
令

移行/監
視/イン
ターロッ
ク

シフトとローテーション
SHR: 右へシフト (ページ 412)x

SHL: 左へシフト (ページ 415)x

ROR: 右へローテーション (ページ 417)x

ROL: 左へローテーション (ページ 419)

x

追加の命令
DRUM: PLC 実行 (ページ 422)x

DCAT: ディスクリート制御タイマアラーム (ページ 430)x

MCAT: モータ制御タイマアラーム (ページ 434)x

IMC: 入力ビットとマスクのビットの比較 (ページ 439)x

SMC: スキャンマトリックスの比較 (ページ 442)x

LEAD_LAG: リード/ラグアルゴリズム (ページ 445)x

SEG: 7 セグメント表示のビットパターンの作成 (ページ 448)x

BCDCPL: 10 の補数の作成 (ページ 450)x

BITSUM: セットビット数カウント (ページ 452)

x

下記も参照
SCATTER:ビットシーケンスを個々のビットに解析 (ページ 274)
SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析 (ページ 279)GATHER:個々のビットをビットシーケンスに結合 (ページ 285)
GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合 (ページ 290)
LOWER_BOUND:ARRAY の下限値の読み出し (ページ 319)
UPPER_BOUND:ARRAY の上限値の読み出し (ページ 320)
EQ_TypeOfDB:EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較 (ページ 186)

1796

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH
NE_TypeOfDB:UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタ
イプと比較 (ページ 188)(ページ 297)

3.5.3.2

CMP>T: ステップ有効化時間よりも長い

説明「ステップ有効化時間よりも長い」命令を使用して、監視条件でステップの合計時間をモニタします。 プロセス中のいかなるイベントやエラーの時間も記録されます。
プログラムされた条件で、ステップの現在または最後の起動時間(Operand1)が、定義された持続時間(Operand2)と比較されます(ミリ秒)。 比較条件が満たされている場合、この命
令は論理演算の結果(RLO)「1」を返します。 比較条件が満たされていない場合、この命令
は RLO「0」を返します。

パラメータ
次の表に、「ステップ有効化時間よりも長い」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

整数、浮動小数 I、Q、M、D、ステップの現在または最>点数、タイマ、 L、または定数

後の起動時間文字列、DATE、DT、DTL、
TOD、LTOD、
LDT<Operand2 Input

整数、浮動小数 I、Q、M、D、>点数、タイマ、 L、または定数比較に使用される時間

文字列、DATE、DT、DTL、
TOD、LTOD、LDT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1797

基本命令
3.5 GRAPH

例
次の例は、ネットワークにおける命令を示しています。
67(37!
7,0(706#STEP1.T の起動時間が 100 ミリ秒未満であれば、RLO が「0」になります。 ステップ 1 の起動時間が 100 ミリ秒を超えると、直ちに RLO が「1」になります。

3.5.3.3

CMP>U: 割り込みなしステップの有効化時間よりも長い

説明「割り込みなしステップの有効化時間よりも長い」命令を使用して、監視条件でステップの時間から障害を引いた時間をモニタします。 いかなるイベントやエラーの時間も記録されず、純粋なステップ時間のみモニタされます。
プログラムされた条件で、ステップの合計起動時間(Operand1)が、定義された持続時間(Operand2)と比較されます(ミリ秒)。 比較条件が満たされている場合、この命令は論理演
算の結果(RLO)「1」を返します。 比較条件が満たされていない場合、この命令は RLO「0」を返します。

1798

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

パラメータ
次の表に、「割り込みなしステップの有効化時間よりも長い」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

整数、浮動小数 I、Q、M、D、ステップの現在または最>点数、タイマ、 L、または定数

後の起動時間-障害

文字列、DATE、DT、DTL、
TOD、LTOD、
LDT<Operand2 Input

整数、浮動小数 I、Q、M、D、>点数、タイマ、 L、または定数比較に使用される時間

文字列、DATE、DT、DTL、
TOD、LTOD、LDT

例
次の例は、ネットワークにおける命令を示しています。
67(38!
7,0(706#STEP1.U の起動時間から可能性のある障害時間を引いた時間が 100 ミリ秒未満であれば、RLO が「0」になります。ステップ 1 の起動時間が 100 ミリ秒を超えると、直ちに RLO が「1」になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1799

基本命令
3.5 GRAPH

3.5.3.4

CMP>T_MAX: 最大ステップ有効化時間よりも長い

説明「最大ステップ有効化時間よりも長い」命令を使用して、監視条件でステップの最大合計
時間をモニタします。 プロセス中のいかなるイベントやエラーの時間も記録されます。
プログラムされた条件で、ステップの現在または最後の起動時間(Operand1)が、最大持続時間(Operand2)と比較されます(ミリ秒)。 比較条件が満たされた場合、この命令は論理演
算の結果(RLO)「1」を返します。 比較条件が満たされなかった場合、この命令は RLO「0」を返します。

パラメータ
次の表に、「最大ステップ有効化時間よりも長い」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

整数、浮動小数 I、Q、M、D、ステップの現在または最>点数、タイマ、 L、または定数

後の起動時間文字列、DATE、DT、DTL、
TOD、LTOD、
LDT<Operand2 Input

整数、浮動小数 I、Q、M、D、>点数、タイマ、 L、または定数比較に使用される時間

文字列、DATE、DT、DTL、
TOD、LTOD、
LDT

1800

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

例
次の例は、ネットワークにおける命令を示しています。
6WHS7!
7,0(
6WHS7B0$;#STEP1.T の起動時間が#Step1.T_MAX の最大ステップ起動時間より少ない限り、RLO は「0」になります。 最大ステップ起動時間を超えると、直ちに RLO が「1」になります。

3.5.3.5

CMP>T_WARN: 警告時間よりも長い

説明「警告時間よりも長い」命令を使用してステップの時間をモニタし、時間が監視条件を超えると警告を出します。プロセス中のいかなるイベントやエラーの時間も記録されます。
プログラムされた条件で、ステップの現在または最後の起動時間(Operand1)が、定義された持続時間(Operand2)と比較されます(ミリ秒)。 比較条件が満たされた場合、この命令は論理演算の結果(RLO)「1」を返し、警告を出力します。比較条件が満たされなかった場合、この命令は RLO「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1801

基本命令
3.5 GRAPH

パラメータ
次の表に、「警告時間よりも長い」命令のパラメータをリストします。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand1 Input

整数、浮動小数 I、Q、M、D、ステップの現在または最>点数、タイマ、 L、または定数

後の起動時間文字列、DATE、DT、DTL、
TOD、LTOD、
LDT<Operand2 Input

整数、浮動小数 I、Q、M、D、>点数、タイマ、 L、または定数比較に使用される時間

文字列、DATE、DT、DTL、
TOD、LTOD、LDT

例
次の例は、ネットワークにおける命令を示しています。
6WHS7!
7,0(
6WHS7B:$51#Step1.T の起動時間が#Step1.T_WARN の警告時間を超えない限り、RLO は「0」になります。 警告時間を超えると、直ちに RLO が「1」になります。

1802

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

3.5.4

FBD 命令比較演算 全般的

3.5.4.1

FBD 命令説明
GRAPH でプログラミングしている場合、さまざまな FBD 命令が使用可能です。
次の表は、命令およびそれらの可用性の概要を示しています。
FBD 命令固定の操
作

移行/監視/
インター
ロック

全般
新規ネットワーク

x

空ボックス

x

x

分岐: 分岐を開くx

x-|: 入力の挿入 (ページ 459)xx-o|: RLO の反転 (ページ 460)x

x&: AND 演算 (ページ 453)xx>=1: OR 論理和演算 (ページ 455)x

x

X: EXCLUSIVE OR 排他的論理和演算 (ページ 457)x=: 割り当て (ページ 460)x/=: 割り当てを無効にする (ページ 461)

x

R: 出力のリセット (ページ 462)x

S: 出力設定 (ページ 463)

x

SET_BF: ビットフィールドのセット (ページ 464)x

RESET_BF: ビットフィールドのリセット (ページ 466)x

SR: フリップフロップのセット/リセット (ページ 468)

x

RS: フリップフロップのリセット/セット (ページ 469)

x

P: 立ち上がりエッジのオペランドスキャン (ページ 471)x

N: 立ち下がりエッジのオペランドスキャン (ページ 473)x

ビット論理演算

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1803

基本命令
3.5 GRAPHFBD 命令固定の操
作

P=: 信号立ち上がりエッジのオペランドの設定 (ページ 474)x

N=: 信号立ち下がりエッジのオペランドの設定 (ページ 476)x

P_TRIG: 立ち上がりエッジの RLO スキャン (ページ 477)

x

N_TRIG: 立ち下がりエッジの RLO スキャン (ページ 478)

x

R_TRIG: :信号立ち上がりエッジの検出 (ページ 480)x

F_TRIG: :信号立ち下がりエッジの検出 (ページ 481)x

移行/監視/
インター
ロック

タイマ
IEC タイマ
TP: パルスの生成 (ページ 482)

x

TON: オンディレータイマ (ページ 487)x

TOF: オフディレータイマ (ページ 492)

x

TONR: タイムアキュムレータ (ページ 497)x

TP: パルスタイマの起動 (ページ 502)

x

TON: オンディレータイマの起動 (ページ 507)x

TOF: オフディレータイマの起動 (ページ 511)

x

TONR: タイムアキュムレータ (ページ 515)x

RT: タイマのリセット (ページ 519)

x

PT: 持続時間のロード (ページ 522)x

SIMATIC タイマ
S_PULSE: パルスタイマパラメータの割り当てと開始 (ペーxジ 525)
S_PEXT: 拡張パルスタイマパラメータを割り当てと起動 (ペーxジ 528)S_ODT: オンディレータイマパラメータの割り当てと開始 (ペー x
ジ 531)S_ODTS: 保持型オンディレータイマパラメータの割り当てと開始 x(ページ 534)
S_OFFDT: オフディレータイマパラメータの割り当てと開始 (ペ xージ 537)
カウンタ
IEC カウンタ

1804

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPHFBD 命令固定の操
作

CTU: カウントアップ (ページ 551)

x

CTD: カウントダウン (ページ 554)

x

CTUD: カウントアップ/カウントダウン (ページ 557)x

移行/監視/
インター
ロック

SIMATIC カウンタ
S_CU: パラメータおよびカウントアップの割り当て (ページ 562) x
S_CD: パラメータおよびカウントダウンの割り当て (ページ 564) x
S_CUD: パラメータおよびカウントアップ/カウントダウンの割り x
当て (ページ 566)
比較演算
CMP ==: 等価 (ページ 573)x

x

CMP <>: 不等価 (ページ 578)xx

CMP >=: 以上 (ページ 584)xx

CMP<=: 以下 (ページ 586)x

x

CMP >: 超過 (ページ 589)xx

CMP<: 未満 (ページ 591)xx

IN_RANGE: 範囲内の値 (ページ 593)

x

OUT_RANGE: 範囲外の値 (ページ 594)x---| OK |---: 有効性のチェック (ページ 596)x---| NOT_OK |---: 無効性のチェック (ページ 597)

x

EQ_Type: EQUAL (等しい)かどうかデータタイプをタグのデータ x
タイプと比較 (ページ 598)
NE_Type: UNEQUAL (等しくない)かどうかデータタイプをタグの x
データタイプと比較 (ページ 600)
EQ_ElemType: EQUAL (等しい)かどうか配列要素のデータタイプ x
をタグのデータタイプと比較 (ページ 602)
NE_ElemType: UNEQUAL (等しくない)かどうか配列要素のデータ x
タイプをタグのデータタイプと比較 (ページ 604)
IS_NULL: EQUALS ZERO ポインタの照会 (ページ 606)x

NOT_NULL: UNEQUALS ZERO ポインタの照会 (ページ 607)x

IS_ARRAY: 配列のチェック (ページ 608)

x

CMP>T: ステップ有効化時間よりも長い (ページ 1810)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

x

1805

基本命令
3.5 GRAPHFBD 命令固定の操
作

CMP>U: 割り込みなしステップの有効化時間よりも長い (ペー移行/監視/
インター
ロックx

ジ 1811)
四則演算
CALCULATE: 計算 (ページ 612)x

ADD: 加算 (ページ 617)

x

SUB: 減算 (ページ 619)x

MUL: 乗算 (ページ 621)x

DIV: 除算 (ページ 623)

x

MOD: 除算の剰余を返す (ページ 624)x

NEG: 2 の補数の作成 (ページ 626)x

INC: インクリメント (ページ 628)x

DEC: デクリメント (ページ 629)x

ABS: 絶対値の形成 (ページ 631)x

MIN: 最小値の取得 (ページ 632)x

MAX: 最大値の取得 (ページ 634)

x

LIMIT: 制限値の設定 (ページ 637)x

SQR: 2 乗値の形成 (ページ 640)x

SQRT: 平方根の形成 (ページ 641)

x

LN: 自然対数の形成 (ページ 643)x

EXP: 指数値の形成 (ページ 644)

x

SIN: 正弦値の形成 (ページ 645)x

COS: 余弦値の形成 (ページ 647)

x

TAN: 正接値の形成 (ページ 648)x

ASIN: 逆正弦値の形成 (ページ 650)x

ACOS: 逆余弦値の形成 (ページ 651)

x

ATAN: 逆正接値の形成 (ページ 653)

x

FRAC: 小数部を返す (ページ 654)

x

EXPT: 累乗 (ページ 656)

x

ムーブ操作
MOVE: 移動値 (ページ 658)

1806

x

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPHFBD 命令固定の操作

Deserialize: 逆シリアル化 (ページ 666)

x

Serialize: シリアル化 (ページ 672)x

FieldRead: フィールドの読み出し (ページ 748)x

FieldWrite: フィールドの書き込み (ページ 750)x

MOVE_BLK: ブロックの移動 (ページ 678)x

MOVE_BLK_VARIANT: ブロックの移動 (ページ 681)

x

UMOVE_BLK: 割り込みなしブロック転送 (ページ 687)

x

FILL_BLK: フィル命令 (ページ 690)

x

UFILL_BLK: 割り込み不可能なフィル命令 (ページ 695)x

SWAP: スワップ (ページ 723)x

移行/監視/
インター
ロック

ReadFromArrayDB: ARRAY データブロックからの読み出し (ペー x
ジ 725)
WriteToArrayDB: ARRAY データブロックへの書き込み (ペーxジ 728)
ReadFromArrayDBL: ロードメモリの ARRAY データブロックから xの読み出し (ページ 731)
WriteToArrayDBL: ロードメモリの配列データブロックへの書き込 x
み (ページ 735)
VariantGet: VARIANT タグ値の読み出し (ページ 739)

x

VariantPut: VARIANT タグ値の書き込み (ページ 741)

x

CountOfElements: ARRAY エレメント数の取得 (ページ 743)x

BLKMOV: ブロックの移動(S7-1500) (ページ 753)

x

UBLKMOV: 割り込み不可能なブロックの移動(S7-1500) (ペーxジ 757)
FILL: フィル命令(S7-1500) (ページ 760)x

変換操作
CONVERT: 値の変換 (ページ 764)

x

ROUND: 数値の四捨五入 (ページ 766)x

CEIL: 浮動小数点数から次に大きい整数を生成 (ページ 768)x

FLOOR: 浮動小数点数から次に小さい整数を生成 (ページ 769)x

TRUNC: 値の切り捨て (ページ 771)

x

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1807

基本命令
3.5 GRAPHFBD 命令固定の操作

SCALE_X: スケール (ページ 772)x

NORM_X: 正規化 (ページ 775)x

VARIANT_TO_DB_ANY: VARIANT の DB_ANY への変換

x

DB_ANY_TO_VARIANT: DB_ANY の VARIANT への変換

x

SCALE: スケール(S7-1500) (ページ 778)

x

UNSCALE: スケール解除(S7-1500) (ページ 781)x

移行/監視/
インター
ロック

プログラム制御演算
ランタイム制御
ENDIS_PW: パスワードの適正化の制限および有効化 (ページ 795) x
RE_TRIGR: サイクルタイムモニタのリスタート (ページ 803)x

STP: プログラム終了 (ページ 804)x

GET_ERROR: ローカルでエラーを取得 (ページ 804)x

GET_ERR_ID: ローカルでエラー ID を取得 (ページ 809)x

INIT_RD: すべての保持データの初期化 (ページ 813)x

WAIT: 遅延時間の設定 (ページ 815)x

ランタイム: ランタイム測定 (ページ 816)x

ワード論理演算
AND: AND 論理積演算 (ページ 818)x

OR: OR 論理和演算 (ページ 820)x

XOR : EXCLUSIVE OR 排他的論理和演算 (ページ 822)x

INV: 1 の補数の作成 (ページ 824)x

DECO: デコード (ページ 825)x

ENCO: エンコード (ページ 827)x

SEL: 選択 (ページ 828)x

MUX: 多重化 (ページ 831)x

DEMUX: 逆多重化 (ページ 835)x

シフトとローテーション

1808

SHR: 右へシフト (ページ 839)x

SHL: 左へシフト (ページ 841)x

ROR: 右へローテーション (ページ 843)

x

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPHFBD 命令固定の操
作

ROL: 左へローテーション (ページ 845)x

移行/監視/
インター
ロック

追加の命令
DRUM: PLC 実行 (ページ 848)x

DCAT: ディスクリート制御タイマアラーム (ページ 856)x

MCAT: モータ制御タイマアラーム (ページ 860)x

IMC: 入力ビットとマスクのビットの比較 (ページ 865)x

SMC: スキャンマトリックスの比較 (ページ 868)x

LEAD_LAG: リード/ラグアルゴリズム (ページ 871)x

SEG: 7 セグメント表示のビットパターンの作成 (ページ 874)x

BCDCPL: 10 の補数の作成 (ページ 876)

x

BITSUM: セットビット数カウント (ページ 878)

x

下記も参照
SCATTER:ビットシーケンスを個々のビットに解析 (ページ 700)SCATTER_BLK:ビットシーケンスの ARRAY のエレメントを個々のビットに解析 (ページ 705)GATHER:個々のビットをビットシーケンスに結合 (ページ 711)
GATHER_BLK:個々のビットをビットシーケンスの ARRAY の複数エレメントに結合 (ページ 716)
LOWER_BOUND:ARRAY の下限値の読み出し (ページ 745)
UPPER_BOUND:ARRAY の上限値の読み出し (ページ 746)
EQ_TypeOfDB:EQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタイプと比較 (ページ 609)
NE_TypeOfDB:UNEQUAL 用の間接的にアドレス指定された DB のデータタイプをデータタ
イプと比較 (ページ 611)
(ページ 722)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1809

基本命令
3.5 GRAPH

3.5.4.2

CMP>T: ステップ有効化時間よりも長い

説明「ステップ有効化時間よりも長い」命令を使用して、監視条件でステップの合計時間をモニタすることができます。 プロセス中のいかなるイベントやエラーの時間も記録されます。
プログラムされた条件で、ステップの現在または最後の起動時間(Operand1)が、定義された持続時間(Operand2)と比較されます(ミリ秒)。比較条件が満たされている場合、この命令は論理演算の結果(RLO)「1」を返します。 比較条件が満たされていない場合、この命令はRLO「0」を返します。

パラメータ
次の表に、「ステップ有効化時間よりも長い」命令のパラメータを示します。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、ステップの現在または最点数、タイマ、 L、または定数

後の起動時間

Input

メモリ領域

説明

文字列、DATE、DT、DTL、
TOD、LTOD、
LDT
IN2

Input

整数、浮動小数 I、Q、M、D、比較に使用される時間

点数、タイマ、 L、または定数
文字列、DATE、DT、DTL、
TOD、LTOD、
LDT

1810

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

例
次の例は、ネットワークにおける命令を示しています。
!
7LPH
67(37
706,1
,1

#STEP1.T の起動時間が 100 ミリ秒未満であれば、RLO が「0」になります。ステップ 1 の起動時間が 100 ミリ秒を超えると、直ちに RLO が「1」になります。

3.5.4.3

CMP>U: 割り込みなしステップの有効化時間よりも長い

説明「割り込みなしステップの有効化時間よりも長い」命令を使用して、監視条件でステップの時間から障害を引いた時間をモニタします。 いかなるイベントやエラーの時間も記録されず、純粋なステップ時間のみモニタされます。
プログラムされた条件で、ステップの合計起動時間(Operand1)が、定義された持続時間(Operand2)と比較されます(ミリ秒)。比較条件が満たされている場合、この命令は論理演算の結果(RLO)「1」を返します。比較条件が満たされていない場合、この命令は RLO「0」を返します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1811

基本命令
3.5 GRAPH

パラメータ
次の表に、「割り込みなしステップの有効化時間よりも長い」命令のパラメータを示します。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、ステップの現在または最点数、タイマ、 L、または定数

後の起動時間-障害

Input

メモリ領域

説明

文字列、DATE、DT、DTL、
TOD、LTOD、
LDT
IN2

Input

整数、浮動小数 I、Q、M、D、比較に使用される時間

点数、タイマ、 L、または定数
文字列、DATE、DT、DTL、
TOD、LTOD、LDT

例
次の例は、ネットワークにおける命令を示しています。
!
7LPH
67(38706,1
,1

#STEP1.U の起動時間から可能性のある障害時間を引いた時間が 100 ミリ秒未満であれば、RLO が「0」になります。ステップ 1 の起動時間が 100 ミリ秒を超えると、直ちに RLO が「1」になります。

1812

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.5 GRAPH

3.5.4.4

CMP>T_MAX: 最大ステップ有効化時間よりも長い

説明「最大ステップ有効化時間よりも長い」命令を使用して、監視条件でステップの最大合計
時間をモニタします。プロセス中のいかなるイベントやエラーの時間も記録されます。
プログラムされた条件で、ステップの現在または最後の起動時間(Operand1)が、最大持続時間(Operand2)と比較されます(ミリ秒)。比較条件が満たされた場合、この命令は論理演算の結果(RLO)「1」を返します。比較条件が満たされなかった場合、この命令は RLO「0」を
返します。

パラメータ
次の表に、「最大ステップ有効化時間よりも長い」命令のパラメータを示します。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、ステップの現在または最点数、タイマ、 L、または定数

後の起動時間

Input

メモリ領域

説明

文字列、DATE、DT、DTL、
TOD、LTOD、
LDT
IN2

Input

整数、浮動小数 I、Q、M、D、比較に使用される時間

点数、タイマ、 L、または定数
文字列、DATE、DT、DTL、
TOD、LTOD、LDT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1813

基本命令
3.5 GRAPH

例
次の例は、ネットワークにおける命令を示しています。
!
7LPH
6WHS7
6WHS7B0$;

,1
,1

#STEP1.T の起動時間が#Step1.T_MAX の最大ステップ起動時間より少ない限り、RLO は「0」になります。 最大ステップ起動時間を超えると、直ちに RLO が「1」になります。

3.5.4.5

CMP>T_WARN: 警告時間よりも長い

説明「警告時間よりも長い」命令を使用してステップの時間をモニタし、時間が監視条件を超えると警告を出します。プロセス中のいかなるイベントやエラーの時間も記録されます。
プログラムされた条件で、ステップの現在または最後の起動時間(Operand1)が、定義された持続時間(Operand2)と比較されます(ミリ秒)。 比較条件が満たされた場合、この命令は論理演算の結果(RLO)「1」を返し、警告を出力します。比較条件が満たされなかった場合、この命令は RLO「0」を返します。

1814

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM

パラメータ
次の表に、「警告時間よりも長い」命令のパラメータをリストします。
パラメータ 宣言

データタイプIN1

整数、浮動小数 I、Q、M、D、ステップの現在または最点数、タイマ、 L、または定数

後の起動時間

Input

メモリ領域

説明

文字列、DATE、DT、DTL、
TOD、LTOD、
LDT
IN2

Input

整数、浮動小数 I、Q、M、D、比較に使用される時間

点数、タイマ、 L、または定数
文字列、DATE、DT、DTL、
TOD、LTOD、LDT

例
次の例は、ネットワークにおける命令を示しています。
!
7LPH
6WHS7
6WHS7B:$51

,1
,1

#Step1.T の起動時間が#Step1.T_WARN の警告時間を超えない限り、RLO は「0」になります。 警告時間を超えると、直ちに RLO が「1」になります。

3.6

CEM

3.6.1

CEM 内での全般的 FBD 命令

説明
CEM でプログラミングしている場合、さまざまな FBD 命令が使用可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1815

基本命令
3.6 CEM
以下リストは、これらの命令の概要を示しています。

原因

結果

全般
空ボックス

x

入力の挿入 (ページ 459)xx

RLO の反転 (ページ 460)xx

ビット論理演算AND 論理積演算 (ページ 453)x

OR 論理和演算 (ページ 455)x

EXCLUSIVE OR 論理演算 (ページ 457)x

割り当て (ページ 460)x

比較演算
未満 (ページ 591)x

以下 (ページ 586)x

等価 (ページ 573)x

不等価 (ページ 578)x

以上 (ページ 584)x

超過 (ページ 589)

x

3.6.2

交点のアクション

3.6.2.1

N:原因がアクティブである限り設定する

説明アクション「N:原因がアクティブである限り設定する」は、効果の入力でのシグナル状態を「1」にセットします。割り当てられている原因がアクティブである限り、シグナル状態は「1」のままになります。原因が非アクティブになると、シグナル状態は再度「0」にセットされます。

1816

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM
CEM プログラム内では、複数の原因を効果に割り当てられます。この場合、「N」は効果に対して直接的な影響を与えません。ただし、インターセクション列全体の結果が計算され、それに応じて効果がアクティブまたは非アクティブになります。
以下の要素が計算に加味されます。
• インターセクション内でのアクションの優先度ルール• インターセクション内でのグループ

例
以下の例は、アクションがどのように動作するかを示しています。この例では、連続する 3
つのサイクルが示されています。単純化するために、効果を水平に並べています。
「#Output1」のシグナル状態は赤で示されています。
サイ 原因の出力でのシグナル状態は「0」です。
クル 効果の入力もシグナル「0」であり、オペランド「#Output1」はセットされません。
1

サイ 原因の出力でのシグナル状態が「1」に切り替わります。
クル 現在は効果の入力もシグナル「1」であり、オペランド「#Output1」がセットされます。
2

サイ 原因の出力でのシグナル状態が「0」に戻ります。
クル 効果の入力も再度シグナル「0」となり、オペランド「#Output1」がリセットされます。
3

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1817

基本命令
3.6 CEM

3.6.2.2

S:常に 1 にセットする

説明
アクション「S:常に 1 にセットする」は、効果の入力でのシグナル状態を「1」にセットします。割り当てられている原因が再度非アクティブになっても、シグナル状態は「1」のままになります。
CEM プログラム内では、複数の原因を効果に割り当てられます。この場合、「S」は効果に対して直接的な影響を与えません。ただし、インターセクション列全体の結果が計算され、それに応じて効果がアクティブまたは非アクティブになります。
以下の要素が計算に加味されます。
• インターセクション内でのアクションの優先度ルール• インターセクション内でのグループ

アクション「S:常に 1 にセットする」および「R:常に 0 にセットする」の相互の影響「S」でセットされた効果のシグナル状態をリセットするには、アクション「R:常に 0 にセットする」を使用します。インターセクション列内では、常に「S」および「R」アクショ
ンをペアで使用します。
アクション「S」は、アクション「R」よりも優先されます。割り当てられた両方の原因がアクティブの場合、アクション「S」が優先され、効果の入力でのシグナルは「1」にセットされます。

1818

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM例
以下の例は、アクションがどのように動作するかを示しています。この例では、連続する 3
つのサイクルが示されています。単純化するために、効果を水平に並べています。
「#Output1」のシグナル状態は赤で示されています。
サイ

原因の出力でのシグナル状態は「0」です。

クル 1 効果の入力もシグナル「0」であり、オペランド「#Output1」はセットされません。

サイ

原因の出力でのシグナル状態が「1」に切り替わります。

クル 2 現在は効果の入力がシグナル「1」であり、オペランド「#Output1」がセットされます。

サイ

原因の出力でのシグナル状態が「0」に戻ります。

クル 3 効果の入力がシグナル「1」のままになり、オペランド「#Output」はセットされた状態のままになります。

3.6.2.3

R:常に 0 にセットする

説明
アクション「R:常に 0 にセットする」は、効果の入力でのシグナル状態を「0」にセットします。割り当てられている原因が再度非アクティブになっても、シグナル状態は「0」のままになります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1819

基本命令
3.6 CEM
CEM プログラム内では、複数の原因を効果に割り当てられます。この場合、「R」は効果に対して直接的な影響を与えません。ただし、インターセクション列全体の結果が計算され、それに応じて効果がアクティブまたは非アクティブになります。
以下の要素が計算に加味されます。
• インターセクション内でのアクションの優先度ルール• インターセクション内でのグループ

アクション「S:常に 1 にセットする」および「R:常に 0 にセットする」の相互の影響
インターセクション列内では、常に「S:常に 1 にセットする」および「R:常に 0 にセットする」アクションをペアで使用します。アクション「S」はシグナル状態を 1 にセットした
後、アクション「R」がシグナル状態を再度「0」に戻します。
アクション「S」は、アクション「R」よりも優先されます。割り当てられた両方の原因がアクティブの場合、アクション「S」が優先され、効果の入力でのシグナルは「1」にセットされます。

1820

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM例
以下の例は、アクションがどのように動作するかを示しています。この例では、連続する 3
つのサイクルが示されています。単純化するために、効果を水平に並べています。
「#Output1」のシグナル状態は赤で示されています。
サイ

原因の出力でのシグナル状態は「0」です。

クル 1 効果の入力は前のサイクルで命令「S」によってセットされており、シグナルは「1」です。
オペランド「#Output1」がセットされます。

サイ

原因の出力でのシグナル状態が「1」に切り替わります。

クル 2 現在は効果の入力がシグナル「0」であり、オペランド「#Output1」がリセットされます。

サイ

原因の出力でのシグナル状態が「0」に戻ります。

クル 3 効果の入力でもシグナルは「0」となります。
オペランド「#Output」はリセットされたままになります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1821

基本命令
3.6 CEM

3.6.3

エフェクトの説明

3.6.3.1

割り当て

説明「割り当て」命令を使用して、指定したオペランドを設定できます。効果の入力でのシグナル状態が「1」を返す場合、指定したオペランドはシグナル状態「1」にセットされます。効果の入力でのシグナル状態が「0」の場合、指定したオペランドが「0」にリセットされます。

パラメータ
次の表に、「割り当て」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L シグナル状態が割り当てられるオペランド。

例
次の例で、命令がどのように動作するかを示します。この例では、連続する 3 つのサイクルが示されています。単純化するために、効果を水平に並べています。出力でのシグナル状態は赤で示されています。
サイ

効果の入力でのシグナル状態は「0」です。オペランド「#Output1」はセットされません。

クル 1

サイ

効果の入力でのシグナル状態が「1」に切り替わり、オペランド「#Output1」がセットされます。

クル 2

サイ

効果の入力でのシグナル状態が「0」に戻り、オペランド「#」が再度リセットされます。

クル 3

1822

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM

3.6.3.2

R:出力のリセット

説明「出力のリセット」命令を使って、指定したオペランドのシグナル状態を「0」にリセットできます。
効果の入力でのシグナル状態が「1」の場合のみ、命令が実行されます。シグナル状態が「1」を返す場合、指定されたオペランドが「0」にセットされます。効果の入力でのシグナル状態が「0」の場合、オペランドのシグナル状態は変更されません。

パラメータ
次の表に、「出力のリセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、

シグナル = 「1」の場合にリD、Lセットされるオペランド。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1823

基本命令
3.6 CEM例
次の例で、命令がどのように動作するかを示します。この例では、連続する 3 つのサイクルが示されています。単純化するために、効果を水平に並べています。出力でのシグナル状態は赤で示されています。
サイ

効果の入力は前のサイクルで命令「S」によってセットされており、シグナルは「1」です。

クル 1 オペランド「#Output1」がセットされます。

サイ効果の入力でのシグナル状態が「1」に切り替わり、オペランド「#Output1」が永久的にリセット

クル 2 されます。

サイ効果の出力でのシグナル状態が「0」に戻ります。

クル 3 オペランド「#Output1」はリセットされたままになります。

3.6.3.3

S:出力設定説明「出力のセット」命令を使用すると、指定したオペランドのシグナル状態を「1」にセットすることができます。効果の入力でのシグナル状態が「1」の場合のみ、命令が実行されます。シグナル状態が「1」を返す場合、指定されたオペランドが「1」にセットされます。効果の入力でのシグナル状態が「0」の場合、オペランドのシグナル状態は変更され
ません。

1824

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM

パラメータ
次の表に、「出力のセット」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明<Operand> Output

BOOL

I、Q、M、D、L シグナル = 「1」の場合にセットされるオペランド。

例
次の例で、命令がどのように動作するかを示します。この例では、連続する 3 つのサイクルが示されています。単純化するために、効果を水平に並べています。出力でのシグナル状態は赤で示されています。
サイ

効果の入力でのシグナル状態は「0」です。オペランド「#Output1」はセットされません。

クル 1

サイ

効果の入力でのシグナル状態が「1」に切り替わり、オペランド「#Output1」が保存されるようセ

クル 2 ットされます。

サイ効果の入力でのシグナル状態が「0」に戻り、オペランド「#Output1」がセットされたままになり

クル 3 ます。

3.6.4

時間

3.6.4.1

OnDelay:アクティベーションを遅らせる

説明
命令「オンディレー:アクティベーションを遅らせる」は、プログラムされた持続時間「オンディレー」によって、原因のアクティベーションを遅らせます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1825

基本命令
3.6 CEM
原因内にプログラムされた条件を満たすと、持続時間「OnDelay」が開始します。持続時間が経過すると、原因がアクティブになり、原因の出力でのシグナル状態が「1」になりま
す。

パラメータ
以下の表は、命令のパラメータを示しています。
パラメータ

宣言

データタ
イプ

メモリ領域

OnDelay

Input

TIME

I、Q、D、L、ま 原因のアクティベーション
たは定数

説明

を遅らせる持続時間。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
㧰ↅ቎₏咃

╤⇫

╤⇫
2Q'HOD\1826

2Q'HOD\TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM例
次の例で、命令がどのように動作するかを示します。

「Cause1」でのシグナル状態が 0 から 1 に切り替わると、プログラムされた持続時間 10 msが開始します。時間が経過すると、原因がアクティブになります。

3.6.4.2

OffDelay:ディアクティベーションを遅らせる

説明
命令「オフディレー:ディアクティベーションを遅らせる」は、プログラムされた持続時間「OffDelay」によって、原因のディアクティベーションを遅らせます。
原因内にプログラムされた条件を満たさなくなると、持続時間「OffDelay」が開始します。
持続時間が経過すると、原因が非アクティブになり、原因の出力でのシグナル状態が「0」になります。

パラメータ
以下の表は、命令のパラメータを示しています。
パラメータ

宣言

データタ
イプ

メモリ領域

OffDelay

Input

TIME

I、Q、D、L、ま 原因のディアクティベーシ
たは定数

説明

ョンを遅らせる持続時間。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1827

基本命令
3.6 CEM

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
㧰ↅ቎₏咃

╤⇫
2II'HOD\╤⇫
2II'HOD\例
次の例で、命令がどのように動作するかを示します。

「Cause2」でのシグナル状態が 1 から 0 に切り替わると、プログラムされた持続時間 3 msが開始します。時間が経過すると、原因が非アクティブになります。

3.6.4.3

Pulse:制限時間の有効化

説明
命令「パルス:制限時間の有効化」は、定義された持続時間、原因をアクティブにします。

1828

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

基本命令
3.6 CEM
原因内にプログラムされた条件を満たすと、持続時間「Pulse」が開始します。この際、原因の出力でのシグナル状態は「1」となります。持続時間が経過すると、原因が非アクテ
ィブになり、原因の出力でのシグナル状態が「0」になります。

パラメータ
以下の表は、命令のパラメータを示しています。
パラメータ

宣言

データタ
イプ

メモリ領域

Pulse

Input

TIME

I、Q、D、L、ま 原因の持続時間のアクティ
たは定数

説明

ブ化。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

パルスタイミング図
次の図は、この命令のパルスタイミング図を示します。
㧰ↅ቎₏咃

╤⇫

╤⇫

╤⇫

3XOVH

3XOVH

3XOVH

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1829

基本命令
3.6 CEM例
次の例で、命令がどのように動作するかを示します。

「Cause1」でのシグナル状態が 0 から 1 に切り替わると、原因がアクティブになり、プログラムされた持続時間 10 ms が開始します。時間が経過すると、原因が非アクティブに
なります。

1830

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

4

拡張命令
4.1

拡張命令に関する一般的な注記

4.1.1

I/O アクセスを行う命令の LADDR 入力パラメータLADDR 入力パラメータの選択
I/O デバイスにアクセスする多くの拡張命令に、LADDR 入力パラメータが用意されています。LADDR 入力パラメータのデータタイプは HW_IO であり、命令によって処理されるハードウェアオブジェクトのハードウェア識別子を含んでいます。
ハードウェア識別子は、ネットワークビューのハードウェアオブジェクトのプロパティから、または既定のタグテーブルの[システム定数]タブから取得します。
ハードウェア識別子に対して異なる値を選択すると、通常は以下のような 0 エラーコードを受信します。
• 8090:LADDR パラメータで指定されたアドレスが無効(WR_REC、RD_REC)。
• 8091:LADDR パラメータを使用してアドレス指定されたハードウェアコンポーネントが存在しない(LED)。
• 8093:LADDR で指定されたハードウェア ID に対して、この命令が使用できない(WR_REC、RD_REC)。
ただし、既定のタグテーブルの[システム定数]タブなどにはハードウェア識別子が表示されない CPU 内部オブジェクトもあります。このようなハードウェア識別子を無作為に選択して LADDR パラメータで指定した場合、0 以外のエラーコードが出力されることも、命令が正常に実行されることも保証されません。
このため、LADDR パラメータには、ネットワークビューのハードウェアオブジェクトのプロパティ、または標準タグテーブルの[システム定数]タブに表示されている値のみを割り当てることを強く推奨します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1831

拡張命令
4.2 日付と時刻

4.2

日付と時刻

4.2.1

T_COMP: 時間タグ比較

説明
この命令を使用して、「タイマ」または「日付と時刻」データタイプの 2 つのタグの内容を比較します。
この命令は、以下のデータタイプの比較をサポートしています。DATE, TIME, LTIME, TOD(TIME_OF_DAY), LTOD (LTIME_OF_DAY), DT (DATE_AND_TIME), LDT (DATE_AND_LTIME),
DTL、S5Time
比較を実行するデータタイプの長さと形式は同一であることが必要です。
比較結果は OUT パラメータに戻り値として出力されます。このため、比較に使用する条件が満たされている場合、パラメータ OUT が「1」に設定されます。
以下の比較オプションが使用できます。
シンボル

説明

EQ

パラメータ IN1 および IN2 で時間が同じ場合、戻り値のシグナル状態は「1」です。

NE

パラメータ IN1 の時間がパラメータ IN2 の時間と同じでない場合、戻り値のシグナル状態は「1」です。

GE

IN1 パラメータの時間が IN2 パラメータの時間よりも大きい(新しい)か、または等しい場合、戻り値のシグナル状態は「1」です。

LE

パラメータ IN1 の時間がパラメータ IN2 の時間よりも小さい(より過去)か、または等しい場
合、戻り値のシグナル状態は「1」です。

GT

パラメータ IN1 の時間がパラメータ IN2 の時間よりも大きい(新しい)場合、戻り値のシグナル
状態は「1」です。

LT

パラメータ IN1 の時間がパラメータ IN2 の時間よりも小さい(より過去)場合、戻り値のシグ
ナル状態は「1」です。

1832

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

パラメータ
以下の表に、「T_COMP」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN1

Input

DATE, TIME,

I、Q、M、D、L、比較する最初の値

LTIME, TOD, LTOD, P、または定数
DT, LDT, DTL,
S5TimeIN2

Input

DATE, TIME,

I、Q、M、D、L、比較する 2 番目の値

LTIME, TOD, LTOD, P、または定数
DT, LDT, DTL,
S5TimeOUT

Output

BOOL

I、Q、M、D、L、P

戻り値

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、「以上」の比較オプションを使用して、LTIME データタイプの 2 つの時刻を比較します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。[GE]比較オプションを選択します。

比較する最初の値(「timeValue1」)の時刻が 2 番目の値(「timeValue2」)以上であるため、戻り値(「value1GEvalue2」)はシグナル状態「TRUE」を示します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1833

拡張命令
4.2 日付と時刻

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.2

T_CONV: 時間の変換と抽出

説明「T_CONV」命令を使用し、IN 入力パラメータのデータタイプを OUT 出力で出力されるデータタイプに変換します。変換するデータフォーマットは、入力および出力の命令ボック
スから選択します。

パラメータ
以下の表に、「T_CONV」命令のパラメータを示します。同じデータタイプの入力および出力パラメータを使用した場合、この命令は対応する値をコピーします。
パラメータ 宣言

データタイプ

メモリ領域

説明

整数、TIME、 WORD、整I、Q、M、D、

変換する値

日付と時刻*

数、タイ

L、P、または定

マ、日付と数

S7-1200
IN

Input

S7-1500

時刻*
OUT

Return

整数、TIME、 WORD、整I、Q、M、D、

日付と時刻*

L、P

数、タイ

変換の結果

マ、日付と
時刻*
* サポートされるデータタイプの範囲は CPU によって異なります。S7-1200 および S7-1500 モジュールでサポートされているデータタイプについては、有効なデータタイプの概要を参照してください。

1834

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、DATE AND TIME データタイプの時刻を LTIME OF DAY データタイプの時刻に変換します。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続し、データタイプを選択します。

変換する値(「inputTime」)は、新しい値(「returnTime」)として出力パラメータに出力されます。日付の情報は失われます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1835

拡張命令
4.2 日付と時刻

4.2.3

T_ADD: 時間加算

説明
この命令を使用して、IN1 入力の時間情報を IN2 入力の時間情報に加算します。結果をOUT 出力パラメータで照会することができます。次の書式を追加できます。
• 時間を別の時間に加算。
例:TIME データタイプを他の TIME データタイプに加算。
• 時間を時刻に加算。
例:TIME データタイプを DTL データタイプに加算。
入力パラメータ IN1 および出力パラメータ OUT の値のデータタイプは、入力および出力の命令ボックス内で選択して定義します。時間情報は、IN2 入力パラメータで TIME 形式でのみ指定可能です(S7-1500 モジュールでは LTIME も可)。
注記
オーバーフロー/アンダーフロー
計算中に OUT 出力パラメータの最大可能値を超えたり、最小可能値を下回ったりする可能性があります。これを検出するには、イネーブル出力 ENO を評価します。

1836

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

パラメータ
次の表は、「T_ADD」命令のパラメータを変換の可能性ごとに示します。
表 4-1

パラメータ

時間を別の時間に加算

宣言

データタイプS7-1200

IN1

Input

TIME

メモリ領域

説明

S7-1500
TIME, LTIME I、Q、M、D、加算する最初の数

L、P、または定
数
IN2

Input

TIME

TIME, LTIME I、Q、M、D、加算する 2 番目の数

L、P、または定
数OUTReturn

DINT,

TIME,

I、Q、M、D、加算の結果

DWORD,LTIME,

L、P

選択するデータタイプは、IN1

TIME, TOD

および IN2 入力パラメータに対して選択されたデータタイプによって異なります。

表 4-2

パラメータ

時間を時刻に加算

宣言

データタイプS7-1200

IN1

Input

DTL, TOD

メモリ領域

説明

DT, TOD,

I、Q、M、D、加算する最初の数

LTOD, LDT,

L、P、または定パラメータ IN2 の LTIME に

DTL

数は、LTOD、LDT または DTL のS7-1500

みを使用できます。
IN2

Input

TIME

TIME, LTIME I、Q、M、D、加算する 2 番目の数

L、P、または定
数OUTReturnDINT,DT, DTL, LDT, I、Q、M、D、加算の結果

DWORD,TOD, LTOD

選択するデータタイプは、IN1

L、P

TIME, TOD,

および IN2 入力パラメータに対UDINT, DTL

して選択されたデータタイプによって異なります。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1837

拡張命令
4.2 日付と時刻

例
次の例では、TIME データタイプの時間を TOD データタイプの時刻に加算します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。時刻(「timeValTOD」)および時間「timeValTIME」()のデータタイプを選択します。

時刻(「timeValTOD」)と時間(「timeValTIME」)は加算され、結果は出力パラメータ
OUT(「valueTimeResult」)に時刻として表示されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

1838

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

4.2.4

T_SUB: 時間の減算

説明
この命令を使用して、IN1 入力パラメータの時間情報から IN2 入力パラメータの時間情報を減算します。OUT 出力パラメータで差を照会できます。以下のフォーマットを減算できます。
• 時間を別の時間から減算
例:データタイプ TIME の時間を他のデータタイプ TIME の時間から減算。結果は、TIMEのフォーマットでタグに出力できます。
• 時刻から時間を減算
例:データタイプ TIME の時間をデータタイプ DTL の時刻から減算。結果は、DTL のフォーマットでタグに出力できます。
値の書式は、IN1 入力パラメータおよび OUT 出力パラメータで命令の入力および出力パ
ラメータのデータタイプを選択して決定します。
注記
オーバーフロー/アンダーフロー
計算中に OUT 出力パラメータの最大可能値を超えたり、最小可能値を下回ったりする可能性があります。これを検出するには、イネーブル出力 ENO を評価します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1839

拡張命令
4.2 日付と時刻

パラメータ
以下の表に、「T_SUB」命令のパラメータを変換の可能性ごとに示します。
表 4-3

時間を別の時間から減算

パラメータ 宣言
IN1

データタイプ

Input

メモリ領域

S7-1200

S7-1500

TIME

TIME, LTIME

説明

I、Q、M、D、 被減数
L、P、または
定数

IN2

Input

TIME

TIME, LTIME

I、Q、M、D、 減数
L、P、または定数

OUT

ReturnDINT,TIME, LTIMEDWORD,

I、Q、M、D、 減算の結果
L、P

TIME, TOD,
UDINT

表 4-4

時刻から時間を減算

パラメータ 宣言
IN1

データタイプ

Input

メモリ領域

説明

S7-1200

S7-1500

DTL, TOD

TOD, LTOD, DTL,

I、Q、M、D、 被減数

DT, LDT

L、P、またはパラメータ IN2 の LTIME

定数には、LTOD、LDT またはDTL のみが使用されます。

IN2

Input

TIME

TIME, LTIME

I、Q、M、D、 減数
L、P、または定数

OUT

ReturnDTL, DINT,TOD, LTOD, DTL,

I、Q、M、D、 減算の結果

DWORD,

DT, LDT

L、P

TIME, TOD,
UDINT
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

1840

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

例
次の例では、TIME データタイプの時間を TOD データタイプの時刻から減算します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。時刻(「value1TOD」)のデータタイ
プと時間(「value2Time」)のデータタイプを選択します。

時刻(「value1TOD」)と時間(「value2Time」)は減算され、結果は出力パラメータ
OUT(「value1MINvalue2」)に時刻として表示されます。

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1841

拡張命令
4.2 日付と時刻

4.2.5

T_DIFF: 時間差

説明
この命令を使用して、IN1 入力パラメータの時間情報から IN2 入力パラメータの時間情報を減算します。結果は、出力パラメータ「OUT」に送信されます。
• IN2 入力パラメータの時間情報が IN1 入力パラメータの時間情報よりも大きい場合、結果は、OUT 出力パラメータで負の値として出力されます。
• 減算の結果が TIME の数値範囲外である場合、イネーブル出力 ENO は「0」になります。使用されるデータタイプに応じて、切り捨てられた結果または「0」(0:00)のいず
れかが表示されます。
– DTL データタイプの被減数および減数パラメータを選択した場合、結果は TIME データタイプになります。これは 24 日を超えることはできません。超えた場合、イネーブル出力 ENO は「0」、結果は「0」になります。
– LDT データタイプの被減数および減数パラメータを選択した場合、この制限は回避
されます。

パラメータ
以下の表に、「T_DIFF」命令のパラメータを示します。
パラメータ
IN1

IN2

OUT

1842

宣言
Input

Input

Return

データタイプ

メモリ領域

S7-1200

S7-1500

DTL, DATE,

DTL, DATE, DT, I、Q、M、D、

TOD

TOD, LTOD,

L、P、または定LDT数DTL, DATE,

DTL, DATE, DT, I、Q、M、D、

TOD

TOD, LTOD,

L、P、または定LDT数TIME, LTIME,

I、Q、M、D、

INT

L、P

TIME, INT

説明
被減数

減数

入力パラメータの差

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記
SCL での T_DIFF 命令の使用
SCL では、OUT パラメータに対してデータタイプ TIME がプリセットされています(関連項
目:SCL 命令のデータタイプに関する基本情報 OUT にデータタイプ INT を使用する場合は、「_INT」を追加することによって命令名 T_DIFF を拡張する必要があります(関連項目:SCL 命
令のデータタイプの変更)。

例
次の例では、TOD データタイプの 2 つの時刻の時間差を計算します時間差を「TIME」データタイプで指定します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続し、データタイプを選択します。最初の選択オプションを使用して、その時点のデータタイプを指定します。2 番目の選択オプションを使用して、時間差のデータタイプを指定します。

最初の時刻(「todvalue1」)と 2 番目の時刻(「todvalue2」)は減算され、時間差は出力パラメ
ータ OUT(「timevalueDIFF」)に時間として表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1843

拡張命令
4.2 日付と時刻

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.6

T_COMBINE: 時間結合

説明
この命令は、日付の値と時刻の値を結合します。その結果、結合された日付と時刻の値になります。
• 日付は入力パラメータ IN1 に出力されます。DATE～1990-01-01 の間の値をデータタイ
プ 2089-12-31 に使用します(これはチェックされません)。
• 時刻は IN2 入力値(TOD/LTOD データタイプ)で入力されます。
• 日付と時刻の値の結合済みデータタイプは、OUT 出力値に出力されます。

1844

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

パラメータ
以下の表に、「T_COMBINE」命令のパラメータを示します。
パラメータ 宣言
IN1

Input

データタイプS7-1200

S7-1500

DATE

DATE

メモリ領域

説明

I、Q、M、D、L、 日付の入力タグ
P、または定数

IN2

Input

TOD

TOD, LTOD

I、Q、M、D、L、 時間の入力タグ
P、または定数OUTReturnDTLDT, DTL, LDT I、Q、M、D、L、 日付と時刻の戻り値
P

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記
SCL プログラムでの T_COMBINE の使用
命令「T_COMBINE」を[命令]タスクカードから SCL プログラミングウィンドウにドラッグすると、内部命令 CONCAT_DATE_TOD または CONCAT_DATE_LTOD がそこに表示されます。

例
次の例では、TOD データタイプの時刻を DATE データタイプの日付に結合します。戻り値を「DT」データタイプで指定します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続し、データタイプを選択します。最初の選択オプションを使用して、時刻(「valueTOD」)のデータタイプを指定します。2 番目の選択オ
プションを使用して、戻り値(「combTIME」)のデータタイプを指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1845

拡張命令
4.2 日付と時刻

DATE(「valueDATE」)は時刻(「valueTOD」)の指定によって拡張され、戻り値は出力パラメータ
OUT(「combTIME」)に表示されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.7

時刻のファンクション

4.2.7.1

WR_SYS_T: 日時の設定

説明
この命令を使用して、CPU クロックの日付と時刻(モジュール時刻)を設定します。日付と時刻を入力パラメータ IN に入力します。この値は、次の範囲内であることが必要です。
• DT の場合:最小 DT#1990-01-01-0:0:0、最大 DT#2089-12-31-23:59:59.999• LDT の場合:最小 LDT#1970-01-01-0:0:0.000000000、最大
LDT#2200-12-31-23:59:59.999999999• DTL の場合:最小 DTL#1970-01-01-00:00:00.0、最大
DTL#2200-12-31-23:59:59.999999999
RET_VAL 出力パラメータで命令の実行中にエラーが発生したかどうかを照会できます。

1846

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻「WR_SYS_T」命令は、ローカルタイムゾーンまたはサマータイムについての情報を渡すために使用されません。
注記
CPU クロックのモジュール時刻
CPU クロックはモジュール時刻を協定世界時(UTC)として解釈します。したがって、モジュール時刻は常に「ローカルタイムゾーン」または「サマータイム」の要素なしで CPU ク
ロックに格納されます。その後、CPU クロックは、モジュール時刻に基づいて CPU クロ
ックのローカル時刻を計算します。
CPU クロックのモジュール時刻は、CPU から開始するすべての時刻プロセスのテンプレー
トとして使用されます。使用例••••

モジュール時刻に基づく CPU クロックのローカル時刻の計算[オンライン＆診断]でのモジュール時刻のローカル時刻表示
ブロックプロパティ
CPU の診断バッファのエントリ

パラメータ
以下の表に、「WR_SYS_T」命令のパラメータを示します。
パラメータ
IN

宣言
Input

データタイプ

メモリ領域

説明
日付と時刻

S7-1200

S7-1500DTL

DT **, DTL,

I、Q、M、D、LDT

L、P、または定数*

RET_VAL

ReturnINT

INT

I、Q、M、D、

命令のステータス

L、P* データタイプ DT および DTL が使用されないメモリ領域:入力、出力、およびビットメモリ。
** データタイプ DT を使用しているときは、ミリ秒は CPU に転送されません。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1847

拡張命令
4.2 日付と時刻

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0000

エラーは発生していません。

8080

日付のエラー

8081

時間のエラー

8082**月(DTL フォーマットでバイト 2)に対して無効な値が指定されました。

8083**日(DTL フォーマットでバイト 3)に対して無効な値が指定されました。

8084**時(DTL フォーマットでバイト 5)に対して無効な値が指定されました。

8085**分(DTL フォーマットでバイト 6)に対して無効な値が指定されました。

8086**秒(DTL フォーマットでバイト 7)に対して無効な値が指定されました。

8087**

ナノ秒(DTL フォーマットでバイト 8～11)に対して無効な値が指定されました。

80B0

リアルタイムクロックが故障しました* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
** 日付と時刻がパラメータ IN で DTL フォーマットで指定される場合のみ例
次の例では、CPU クロックの日付と時刻を設定します。使用されるデータタイプは DATEAND TIME です。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。DATE AND TIME データタイプを選
択します。

1848

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

ノーマルオープン(「execute」)がシグナル状態「TRUE」を表示する場合、「WR_SYS_T」命令が実行されます。CPU クロックのモジュール時刻は、設定される時刻(「inputTIME」)で上書きされます。出力パラメータ RET_VAL(「returnValueT」)は、処理がエラーなしで行われたことを示します。

新しいモジュール時刻(「inputTIME」)が CPU クロックによって正しく受信されたかどうかを
次のように確認することができます。
• S7-1500CPU の表示を使用:CPU 表示で、[設定|日付と時刻|全般]に進みます。
• 使用 TIA Portal:「RD_SYS_T (ページ 1850)」命令を使用して CPU クロックのモジュール
時刻を読み出します。
• 使用 TIA Portal:CPU の[オンライン&診断]エントリに進み、[ファンクション|日時の設定]
タブを開きます。
協定世界時(UTC)が CPU クロックのモジュール時刻に設定されます。この例では、TIA
Portal で中央ヨーロッパ標準時がローカル時刻として設定されます。これにより、TIA
Portal の[オンライン&診断]エントリで設定される時刻(「inputTIME」)に 1 時間が加算されます。サマータイムが使用されるときは、さらに 1 時間が加算されます。現地時間
計算は、12 時間制で出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1849

拡張命令
4.2 日付と時刻

4.2.7.2

RD_SYS_T: 時刻の読み出し

説明
この命令を使用して、CPU クロックの現在の日付と現在の時刻(モジュール時刻)を読み出します。
読み出された日付は、命令の OUT 出力パラメータに出力されます。与えられた値は、ローカルタイムゾーンまたはサマータイムに関する情報を含んでいません。
注記
CPU クロックのモジュール時刻
CPU クロックはモジュール時刻を協定世界時(UTC)として解釈します。したがって、モジュール時刻は常に「ローカルタイムゾーン」または「サマータイム」の要素なしで CPU ク
ロックに格納されます。その後、CPU クロックは、モジュール時刻に基づいて CPU クロ
ックのローカル時刻を計算します。
CPU クロックのモジュール時刻は、CPU から開始するすべての時刻プロセスのテンプレー
トとして使用されます。使用例••••

モジュール時刻に基づく CPU クロックのローカル時刻の計算[オンライン＆診断]でのモジュール時刻のローカル時刻表示
ブロックプロパティ
CPU の診断バッファのエントリ

RET_VAL 出力で命令の実行中にエラーが発生したかどうかを照会できます。

パラメータ
以下の表に、「RD_SYS_T」命令のパラメータを示します。
パラメータ
RET_VAL宣言
Return

データタイプS7-1200

S7-1500

INT

INT

メモリ領域

説明

I、Q、M、D、

命令のステータス

L、P
OUT

OutputDTLDT, DTL, LDT

I、Q、M、D、CPU の日付と時刻

L、P ** データタイプ DT および DTL が使用できないメモリ領域:入力、出力、およびビットメモリ。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

1850

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0000

エラーは発生していません。

8081

OUT パラメータで指定された時間値が有効な値の範囲外にあります。
• DT の場合:最小 DT#1990-01-01-0:0:0、最大 DT#2089-12-31-23:59:59.999• LDT の場合:最小 LDT#1970-01-01-0:0:0.000000000、最大
LDT#2262-04-11-23:47:16.854775807• DTL の場合:最小 DTL#1970-01-01-00:00:00.0、最大
DTL#2262-04-11-23:47:16.854775807* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、CPU クロックのモジュール時刻を読み出します。使用されるデータタイプはDATE AND TIME です。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。DATE AND TIME データタイプを選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1851

拡張命令
4.2 日付と時刻
CPU クロックのモジュール時刻が読み出され、出力パラメータ OUT(「outputTIME」)に表示されます。出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.7.3

RD_LOC_T: 現地時間読み出し

説明
この命令を使用して、CPU クロックから現在のローカルタイムを読み出し、これを OUT 出
力します。CPU クロックの設定でセットしたタイムゾーンおよびサマータイムの開始および標準時間の情報を使用して、ローカルタイムを出力します。

パラメータ
以下の表に、「RD_LOC_T」命令のパラメータを示します。
パラメータ
RET_VAL宣言
Return

データタイプ

メモリ領域

S7-1200

S7-1500

INT

INT

説明

I、Q、M、D、L、 命令のステータス
P

OUT

OutputDTLDT, LDT, DTL

I、Q、M、D、L、 ローカルタイム
P** データタイプ DT および DTL が使用できないメモリ領域:入力、出力、およびビットメモリ。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

1852

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0000

エラーは発生していません。

0001

エラーは発生していません。ローカルタイムがサマータイムで出力されます。

8080

ローカルタイムを読み出せません。

8081

OUT パラメータで指定された時間値が有効な値の範囲外にあります。
• DT の場合:最小 DT#1990-01-01-0:0:0、最大 DT#2089-12-31-23:59:59.999• LDT の場合:最小 LDT#1970-01-01-0:0:0.000000000、最大
LDT#2262-04-11-23:47:16.854775807• DTL の場合:最小 DTL#1970-01-01-00:00:00.0、最大
DTL#2262-04-11-23:47:16.854775807* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、CPU クロックのローカル時刻を読み出します。使用されるデータタイプはDATE AND TIME です。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。DATE AND TIME データタイプを選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1853

拡張命令
4.2 日付と時刻
CPU クロックのローカル時刻が読み出され、出力パラメータ OUT(「outputLocTIME」)に表示されます。出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示し、この呼び出しでローカル時刻がサマータイムとして出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.7.4

WR_LOC_T: ローカル時刻の書き込み

説明「WR_LOC_T」命令を使用して、CPU クロックの日付と時刻を設定します。入力パラメータ
LOCTIME で、ローカルタイムとして日付と時刻を入力します。
この値は、次の範囲内であることが必要です。
• DTL の場合:最小 DTL#1970-01-01-00:00:00.0、最大 DTL#2200-12-31
23:59:59.999999999• LDT の場合:最小 LDT#1970-01-01-0:0:0.000000000、最大 LDT#2200-12-31
23:59:59.999999999
ローカルタイムとシステム時刻の時間情報の精度は製品に依存しますが、誤差は 1 ミリ秒以下です。LOCTIME パラメータの入力値が、CPU によってサポートされている値未満の場
合、システム時刻の計算時に切り上げられます。
RET_VAL 出力パラメータで命令の実行中にエラーが発生したかどうかを照会できます。

1854

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

パラメータ
以下の表に、「WR_LOC_T」命令のパラメータを示します。
パラメータ
LOCTIME

宣言
Input

データタイプS7-1200

S7-1500

DTL

DTL, LDT

メモリ領域

説明

I、Q、M、D、

ローカルタイム

L、P、または定
数*
DST

Input

BOOL

BOOL

I、Q、M、D、Daylight Saving Time

L、P、T、C ま

標準時間への切り替え時の「二たは定数重時間」の間にのみ評価されます。
• TRUE = サマータイム(最初の時間)• FALSE = 標準時間(2 番目の時
間)

RET_VAL

ReturnINT

INT

I、Q、M、D、

エラーメッセージ(「RET_VAL パ

L、P

ラメータ」を参照)* データタイプ DTL が使用できないメモリ領域:入力、出力、およびビットメモリ。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1855

拡張命令
4.2 日付と時刻

パラメータ DST (Daylight Saving Time)
パラメータ DST は、サマータイムから標準時間への切り替え時にのみ評価されます。
• サマータイムから標準時間への切り替え時に DST を使用
クロックが午前 3 時に 1 時間戻されます(1)。つまり、02:00:00:000000000 AM と02:59:59:999999999 AM の間に 2 時間が存在します。
したがって、02:00:00:000000000 AM と 02:59:59:999999999 AM の間にある
LOCTIME のすべての時刻について、その時刻が時間切り替えの前か後かを宣言する必要があります。DST パラメータはこのために使用されます。
– DST=TRUE の場合、時刻は 2 時間の最初の 1 時間、つまり、まだサマータイムに存在します。
– DST=FALSE の場合、時刻は 2 時間の 2 番目の 1 時間、つまり、標準時間に存在します。
この二重時間外にある LOCTIME のすべての時刻について、DST は無関係です。
• 標準時間からサマータイムへの切り替え
パラメータ DST は、標準時間からサマータイムへの切り替えには関連しません。
クロックが午前 2 時に 1 時間進められます(1)。つまり、02:00:00:000000000 AM と02:59:59:999999999 AM の間の 1 時間は存在しません。
LOCTIME でこの 1 時間内の時刻を指定した場合、エラーコード W#16#8089 が出力さ
れます。
(1)

ここでの説明では、中央ヨーロッパ標準時(CET)を想定しています。CET の切り替え時刻

は 2:00 AM (サマータイムの開始)または 3:00 AM (サマータイムの終了)です。他のタイム
ゾーンには、それに対応して異なる切り替え時刻が適用される場合があります。

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0000

エラーは発生していません。

8080

LOCTIME パラメータの値が無効です。

8081

LOCTIME パラメータで指定された時間値が有効な値の範囲外にあります。
• DTL の場合:最小 DTL#1970-01-01-00:00:00.0、最大 DTL#2200-12-31
23:59:59.999999999• LDT の場合:最小 LDT#1970-1-1-0:0:0.000000000、最大 LDT#2200-12-31
23:59:59.999999999

8082**月(DTL フォーマットでバイト 2)に対して無効な値が指定されました。

8083**日(DTL フォーマットでバイト 3)に対して無効な値が指定されました。

1856

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
エラーコード* 説明(W#16#....)
8084**時(DTL フォーマットでバイト 5)に対して無効な値が指定されました。

8085**分(DTL フォーマットでバイト 6)に対して無効な値が指定されました。

8086**秒(DTL フォーマットでバイト 7)に対して無効な値が指定されました。

8087**

ナノ秒(DTL フォーマットでバイト 8～11)に対して無効な値が指定されました。

8089

時間値が存在しません(サマータイムへの変更により既に時刻を過ぎています)。

80B0

リアルタイムクロックが故障しました。

* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
** DTL フォーマットの LOCTIME パラメータでのローカルタイム情報のみ。

例
次の例では、CPU クロックのローカル時刻を設定します。使用されるデータタイプは DTLです。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。DTL データタイプを選択します。

ノーマルオープン(「execute」)がシグナル状態「TRUE」を表示する場合、「WR_LOC_T」命令が実行されます。CPU クロックのローカル時刻は、設定される時刻(「inputLocTIME」)で上書きされます。出力パラメータ RET_VAL 「returnValue」()は、プロセスがエラーなしで行われ
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1857

拡張命令
4.2 日付と時刻たことを示します。入力パラメータ DST(
「dstValue」)は、時間情報に標準時間を使用することを指定します。このパラメータは「二重時間」にのみ関連します(「パラメータ DST」の説明を参照)。

新しいローカル時刻(「inputLocTIME」)が CPU クロックによって正しく受信されたかどうか
を次のように確認することができます。
• S7-1500CPU の表示を使用:CPU 表示で、[設定|日付と時刻|全般]に進みます。
• 使用 TIA Portal:「RD_LOC_T (ページ 1852)」命令を使用して CPU クロックのローカル時
刻を読み出します。
• 使用 TIA Portal:CPU の[オンライン&診断]エントリに進み、[ファンクション|日時の設定]
タブを開きます。
ローカル時刻は、12 時間制で出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.7.5

SET_TIMEZONE:タイムゾーン設定

説明
命令「SET_TIMEZONE」を使用して、ローカルタイムゾーンと、サマータイム/標準時間の切り替えのパラメータをセットします。

1858

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
命令「SET_TIMEZONE」で実行される設定は、CPU のプロパティの時刻設定と対応しています。命令「SET_TIMEZONE」の実行のために、システムデータタイプ
TimeTransformationRule で該当パラメータを定義します。
ローカル時刻はシステム時刻に基づき、タイムゾーンとサマータイム/標準時間の切り替えの設定を使用して計算されます。CPU のシステム時刻は、UTC 時刻です。システム時刻は、システム内での通信のみに使用されます。
注記「SET_TIMEZONE」命令の呼び出し「SET_TIMEZONE」命令は、CPU のロードメモリにデータを内部的に書き込みます。したがって、タイムゾーンの変更は電源異常後にも適用されます。命令の再呼び出しは不要です。
タイムゾーンの変更が必要になるたびに、命令を 1 回呼び出します。たとえば、スタート
アップ OB で「SET_TIMEZONE」を呼び出すことをお勧めします。
注記
S7-1500 シリーズの CPU での使用
「SET_TIMEZONE」命令は、ファームウェアバージョン V1.7 以降の S7-1500 シリーズのCPU のみで使用できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1859

拡張命令
4.2 日付と時刻

パラメータ
以下の表に、「SET_TIMEZONE」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、 • S7-1200:REQ の立ち上がりエッジ
でファンクションが実行されます。
P、または定数• S7-1500 かつ SET_TIMEZONE のバージョンが V2.0 未満:REQ=1 の場
合、ファンクションが実行されます。
• S7-1500 かつ SET_TIMEZONE のバージョンが V2.0 以降:REQ の立ち
上がりエッジでファンクションが実行されます。
ファンクションの実行とは、タイムゾーンの転送およびロードメモリの書き込みが開始されることを意味します。

TimeZone

Input

TimeTransformati

D、L

onRule

パラメータ TimeZone の
TimeTransformationRule システムデータタイプ(下記を参照)を相互接続し
ます。

DONE

Output

BOOL

I、Q、M、D、L、 STATUS パラメータ:P• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブがエラーなしで完了済み

BUSY

Output

BOOL

I、Q、M、D、L、 STATUS パラメータ:P• 0:ジョブがまだ開始されていないか、または既に完了しています。
• 1:ジョブがまだ完了していません。
新しいジョブを開始することはで
きません。

1860

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
パラメータ

宣言

データタイプ

メモリ領域

ERROR

Output

BOOL

I、Q、M、D、L、 STATUS パラメータ:P

説明• 0:エラーは発生していません。
• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L、 詳細なエラー情報およびステータス情P

報は、パラメータ STATUS で出力されます。このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示するには、
STATUS パラメータを空きデータ領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ TimeZone
ローカルタイムゾーンと、サマータイム/標準時間の切り替えのパラメータをシステムデータタイプ TimeTransformationRule で格納します。
データブロックまたはファンクションブロックのローカルインターフェースにデータタイ
プとして TimeTransformationRule を入力して、TimeTransformationRule を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1861

拡張命令
4.2 日付と時刻
TimeTransformationRule の構造体は、次の通りです。
名前

データタ
イプ

説明

TimeTransformationR STRUCT
ule

1862

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
名前
Bias

データタ
イプ

説明

INT

ローカル時刻とシステム時刻(UTC)の間の時間差(分単位)。この値は、-720 分～+780 分(-12～+13 時間)の範囲である必要があります。
この値(UTC -12～+13 時間)は、CPU のプロパティに指定するタイムゾーンに対応しています。

DaylightBias

INT

標準時刻とサマータイムの間の時間差(分単位)。この値は、0～120 分の範囲である必要があります。
• 値「0」は、サマータイムと標準時間の切り替えを無効にします。「DaylightStart...」および「StandardStart...」の値は、「0」に設定されます。
バイアスの値のみが評価されます(ローカル時刻/シ
ステム時刻の時間差)。
• 値が「0」でない場合は、TimeTransformationRule
構造体のすべてのタグが評価されます。エントリが無効である場合、エラーコード 808F がパラメー
タ STATUS に出力されます。

サマータイムへの切り替えの時刻指定。以下の時刻は、常に、ローカル時刻を示します。
DaylightStartMon

USINT

th

サマータイムへの切り替えが行われる月:
1=1月
2=2月
3=3月
...
12 = 12 月

DaylightStartWee

USINT

k

サマータイムへの切り替えが行われる週。
1 = 月の最初の週...
5 = 月の最後の週

DaylightStartWee

USINT

kday

サマータイムへの切り替えが行われる平日:
1 = 日曜日...
7 = 土曜日

DaylightStartHour USINTTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

サマータイムへの切り替えが行われる時

1863

拡張命令
4.2 日付と時刻
名前

データタ
イプ

DaylightStartMinu USINT

説明
サマータイムへの切り替えが行われる分

te
標準時刻への切り替えの時刻指定。以下の時刻は、常に、ローカル時刻を示します。
StandardStartMon USINT

標準時刻への切り替えが行われる月:

th

1=1月
2=2月
3=3月
...
12 = 12 月

StandardStartWee USINT

標準時刻への切り替えが行われる週:k

1 = 月の最初の週...
5 = 月の最後の週

StandardStartWee USINT

標準時刻への切り替えが行われる平日:

kday

1 = 日曜日...
7 = 土曜日

StandardStartHou USINT

標準時刻への切り替えが行われる時

rStandardStartMin

USINT

標準時刻への切り替えが行われる分

ute
TimeZoneName

STRING[8 未使用:設定された文字列は無視され、CPU 内部デー
0]

タに書き込まれません。

パラメータ STATUS
エラーコード* 説明(W#16#....)
7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

1864

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
エラーコード* 説明(W#16#....)
808F

TimeZone パラメータの TimeTransformationRule の構造体、内容またはデータタイプが、無効であるか矛盾しています。

80C3

一時的なリソースエラー:CPU は現在、可能な最大数の同時ブロック呼び出しを処理しています。「SET_TIMEZONE」は、少なくとも 1 つのブロック呼び出しが終了するまで、実行できません。

* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
注記
この例の有効性
以下の例の形式は、命令バージョンが V2.0 未満の S7-1500 にのみ適用されます。
次の例では、ローカルタイムゾーンと、サマータイム/標準時間の切り替えのパラメータを設定します。スタートアップ OB で例を呼び出すことをお勧めします。
グローバルデータブロックにデータを保存するために、次を作成します。「timezone」構
造体(TimeTransformationRule データタイプ)と 5 つの追加タグ。
注記
スタートアップ OB で例を呼び出す場合:タグ「execute」の開始値を「TRUE」に設定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1865

拡張命令
4.2 日付と時刻

出力パラメータ DONE の相互接続用のローカルタグを作成します。

ネットワーク 1:「SET_TIMEZONE」命令のパラメータを以下のように相互接続します。

同様に、以下の追加の相互接続を作成します。

1866

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻
ネットワーク 2:エラーが発生した場合は、ステータスを「memErrStatus」タグに保存します。

ネットワーク 3:処理が成功すると、入力パラメータ REQ「execute」()が以下のように自動的にリセットされます。

ネットワーク 4:スタートアップ OB で呼び出されたときに命令「SET_TIMEZONE」が完全に処理されるようにするには、(ネットワーク 4 の)命令 JMP および Label (ネットワーク 1 を参照)を使用します。

注記
スタートアップ OB で例を呼び出す場合、例を処理するための CPU がスタートアップ中である必要があります。例を CPU にロードする前に、CPU を STOP モードに設定します。その後、CPU を RUN モードに設定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1867

拡張命令
4.2 日付と時刻
入力パラメータ REQ 「execute」()がシグナル状態「TRUE」を返す場合、CPU クロックのタ
イムゾーンのデータが設定データ(「timezone」)で上書きされます。これは、以下のことも意味します。
• 出力パラメータ BUSY(「modeBUSY」)は、シグナル状態「TRUE」になります。処理後、出力パラメータ BUSY は値「FALSE」を表示し、出力パラメータ DONE 「#statDone」()は
値「TRUE」を表示します。成功ステータスは「modeDONE」タグに保存されます。
• 出力パラメータ STATUS 「statusTime」()は、処理がどのように実行されているかを示します*。(*ジョブ処理が開始され(値「7001」)、その後、命令が既に有効として表示されます(値「7002」)。)• 出力パラメータ ERROR(「modeERROR」)は、処理がエラーなしで行われていることを示します(シグナル状態は「FALSE」です)。

注記:「SET_TIMEZONE」命令はレベルトリガされます。この命令が実行されるのは、入力
パラメータ REQ 「execute」()がシグナル状態「TRUE」を返すときだけです。
SET_TIMEZONE の処理が成功すると(「modeDONE」が「TRUE」になると)、入力パラメー
タ REQ 「execute」()が値「FALSE」に自動的にリセットされます。そのために、statusTime
に対して値「16#7002」が照会されます。リセット後、ステータス値「16#7000」が出力
されます。

1868

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

設定データ(「timezone」)が CPU クロックによって正しく受信されたかどうかを次のように確認することができます。
• S7-1500CPU の表示を使用:CPU 表示で、[設定|日付と時刻|サマータイム]に進みます。
• 使用 TIA Portal:「RD_LOC_T (ページ 1852)」命令を使用して CPU クロックのローカル時
刻を読み出します。
• 使用 TIA Portal:「RD_SYS_T (ページ 1850)」命令を使用して CPU クロックのモジュール
時刻を読み出します。
追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.7.6

SNC_RTCB:スレーブクロックの同期

定義:スレーブクロックの同期
クロックスレーブの同期は、バスセグメントのクロックマスタからこのバスセグメントのすべてのクロックスレーブへ転送される日付と時刻を参照します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1869

拡張命令
4.2 日付と時刻説明
この命令を使用して、設定された同期間隔に関係なく、CPU 上にローカルに存在するか、
バスセグメント上にローカルに存在するすべてのスレーブクロックを同期します(CP またはCM の外部インターフェースは異なるバスセグメントに属しています)。同期は、リアルタ
イムクロックが少なくとも 1 つのバスセグメントでマスタクロックとして割り当てられたCPU で「SNC_RTCB」 が呼び出された場合のみ正常に行われます。

パラメータ
以下の表に、「SNC_RTCB」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

RET_VAL

Output

INT

命令の実行中にエラーが発生した場

I、Q、M、D、L合、戻り値にエラーコードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

同期中にエラーが発生しませんでした。

0001

既存のクロックに、いずれのバスセグメントに対するマスタクロックファンクションも割り当てられませんでした。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

1870

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

4.2.7.7

TIME_TCK: システム時間の読み出し

説明「TIME_TCK」命令を使用して、CPU のシステム時刻を読み出します。システム時刻は、0から最大 2147483647 ミリ秒をカウントするタイムカウンタです。オーバーフローが発生した場合、システム時刻は「0」から開始して再度カウントされます。時間スケールとシステム時刻の精度は 1 ミリ秒です。システム時刻は、CPU の動作モードのみに影響されます。システム時刻を使用して、たとえば 2 つの「TIME_TCK」呼び出しの結果を比較して、プロセスの時間を計測することができます。この命令は、エラー情報を提供しません。
次の表は、CPU の動作モードによってシステム時間がどのように変わるかの概要を示しま
す。
動作モード

システム時刻 ...

スタートアップ... 常に更新されます。

RUN
STOP

... 停止され、現在値を保持します。

ウォームリスタート... 削除され、「0」で再起動します。

パラメータ
以下の表に、「TIME_TCK」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

RET_VAL

ReturnTIME

RET_VAL パラメータには、0～

I、Q、M、D、L

231 -1 ミリ秒の範囲の読み出されたシステム時間が含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、CPU のシステム時刻を読み出します。戻り値を「TIME」データタイプで指定します。
グローバルデータブロックにデータを保存するために、1 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1871

拡張命令
4.2 日付と時刻

この命令のパラメータを以下のように相互接続します。

CPU のシステム時刻が読み出され、出力パラメータ RET_VAL(「outputCPUtimer」)に表示されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.2.7.8

RTM: ランタイムメータ

説明
この命令を使用して、使用している CPU の 32 ビットの動作時間カウンタを設定、開始、停止、および読み出します。
保存された値が無効となる可能性があるため、ユーザープログラムの実行中にも必ず動作
時間カウンタの開始および停止が行えるようにしてください。

1872

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻

パラメータ
以下の表に、「RTM」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

NR

Input

RTM

I、Q、M、D、L、 動作時間カウンタの番号
または定数

説明

番号が 0 から始まる
使用している CPU の動作時間カウンタの番号についての情報は、技術仕様を参照してください。

MODE

Input

BYTE

I、Q、M、D、L、 ジョブ ID:
または定数• 0:読み出し(次にステータスが CQ に、
現在値が CV に書き込まれます)。動作
時間カウンタが(2^31) - 1 時間に達すると、表示可能な最大値で停止し、「オーバーフロー」エラーメッセージが出力されます。
• 1:開始(最後のカウンタ値で)• 2:停止• 4:パラメータ PV で指定された値に設定• 5:パラメータ PV で指定された値に設定し、開始• 6:パラメータ PV で指定された値に設定
し、停止

PV

Input

DINT

I、Q、M、D、L、 動作時間カウンタの新しい値
または定数

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

CQ

Output

BOOL

I、Q、M、D、L

動作時間カウンタのステータス(1:実行中)

CV

OutputDINT

I、Q、M、D、L

動作時間カウンタの現在値

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1873

拡張命令
4.2 日付と時刻

パラメータ RET_VAL
エラーコード説明(W#16#...)
0000

エラーは発生していません。

8080

動作時間カウンタの間違った番号

8081

PV パラメータに負の値が渡されました。

8082

動作時間カウンタのオーバーフロー

8091

MODE 入力パラメータに無効な値が含まれています。

一般エラー情関連項目:GET_ERR_ID を使用したエラー評価 (ページ 1533)

報

例
次の例では、CPU の動作時間カウンタを設定し、1 時間後に値を読み出します。
グローバルデータブロックにデータを保存するために、6 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。入力パラメータ NR で、CPU の動
作時間カウンタの番号を指定します。

ノーマルオープン(「execute」)がシグナル状態「TRUE」を表示する場合、「RTM」命令が実行されます。CPU の動作時間カウンタは、設定値(「in_processValue」)に設定され、開始さ

1874

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.2 日付と時刻れます。動作時間カウンタの開始後、入力パラメータ MODE(「comandMODE」)の値を「0」に設定します。(これを行うには、パラメータをクリックし、[オペランドの変更|０に設定]を選択します。)その結果、「RTM」命令は動作時間カウンタの現在値(「currentValue」)を読み出すだけで、値は変更されません。出力パラメータ CQ(「statusRTM」)は、動作時間カウン
タの開始後に動作時間カウンタが実行中であること(値は「TRUE」)を示します。出力パラ
メータ RET_VAL(「returnValue」)は、処理がエラーなしで行われていることを示します。

1 時間後、出力パラメータ CV(「currentValue」)は値「6」を示します。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1875

拡張命令
4.3 String + Char

4.3

String + Char

4.3.1

S_MOVE: 文字列移動

説明
この命令を使用して、パラメータ IN の文字列(W)STRING の内容をパラメータ OUT で指定したデータ領域に書き込むことができます。
データタイプ ARRAY のタグをコピーするには、「MOVE_BLK」および「UMOVE_BLK」命令
を使用します。

パラメータ
以下の表に、「S_MOVE」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

IN

Input

STRING,

D、L、または定数

ソース文字列

D、L

宛先文字列

WSTRING
OUT

OutputSTRING,WSTRING

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、入力パラメータ IN の文字列の内容を出力パラメータ OUT の別の文字列にコピーします。使用されるデータタイプは STRING です。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

1876

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

コピーする文字列の結果(「stringValueIN」)は、出力パラメータ OUT(「stringValueOUT」)に出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.2

S_COMP: 文字列比較

説明
この命令は、(W)STRING フォーマットの 2 つのタグの内容を比較し、この比較結果を戻り値として出力します。比較するタグは、IN1 および IN2 入力で相互接続されます。入力パラメータには、シンボリックで定義されたタグのみを割り当てることができます。
命令ボックスを使用して、比較条件を選択します。比較条件(たとえば、以上)が満たされると、出力パラメータ OUT でシグナル状態が「1」にセットされます。
以下の比較条件のいずれかを選択します。
シンボ
ル

説明

EQ

パラメータ IN1 の文字列がパラメータ IN2 の文字列と等しい場合、戻り値のシグナル状態は「1」です。

NE

パラメータ IN1 の文字列がパラメータ IN2 の文字列と等しくない場合、戻り値のシグナル状態は「1」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1877

拡張命令
4.3 String + Char
シンボ
ル

説明

GT (1)

パラメータ IN1 の文字列がパラメータ IN2 の文字列よりも大きい場合、戻り値のシグナル状態は「1」です。

LT (1)

パラメータ IN1 の文字列がパラメータ IN2 の文字列よりも小さい場合、戻り値のシグナル状態は「1」です。

GE (1)

パラメータ IN1 の文字列がパラメータ IN2 の文字列以上の場合、戻り値のシグ
ナル状態は「1」です。

LE (1)

パラメータ IN1 の文字列がパラメータ IN2 の文字列以下の場合、戻り値のシグ
ナル状態は「1」です。

文字列を比較する際には、個々の文字はその ASCII コードによって左から比較されます(1)(たとえば、「a」は「A」よりも大きい)。最初に異なる文字が、比較の結果を決定しま
す。長い方の文字列の左の部分が、短い方の文字列と同一の場合、長い方の文字列が大きいと見なされます。

パラメータ
以下の表に、「S_COMP」命令のパラメータを示します。
パラメータ 宣言

データタイプ メモリ領域

IN1

STRING,

D、L、または定 STRING / WSTRING フォー

WSTRING*数STRING,

D、L、または定 STRING / WSTRING フォー

WSTRING*数

マットの入力タグ。

BOOL

I、Q、M、D、L

比較の結果

IN2
OUT

Input
Input
Output説明
マットの入力タグ。

* 一時タグのインターフェース宣言でデータタイプ STRING / WSTRING を使用する場合、文字列の最大長を定義します(詳細については、データタイプの説明を参照)。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、「等しい」の比較オプションを使用して、STRING データタイプの 2 つの文字列を比較します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

1878

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

この命令のパラメータを以下のように相互接続します。STRING データタイプと EQ 比較オ
プションを選択します。

比較する最初の文字列(「stringvalue1」)の値が 2 番目の文字列値(「stringvalue2」)と等しい
ため、比較結果(「svalue1EQsvalue2」)はシグナル状態「TRUE」を示します。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1879

拡張命令
4.3 String + Char

4.3.3

S_CONV: 文字列変換

説明
この命令を使用して、IN 入力の値を OUT 出力で指定したデータフォーマットに変換します。変換の出力フォーマットは、OUT 出力パラメータのデータタイプを選択して決定します。
以下の変換が可能です。
• 文字列の変換• 数値または文字を文字列へ変換• 文字を文字へ変換
注記
明示的な変換
明示的な変換に関する詳細情報については、以下を参照してください。
• S7-1200-CPU の場合: AUTOHOTSPOT• S7-1500-CPU の場合: AUTOHOTSPOT

文字列の変換• 数値(整数または浮動小数点)へ
変換は、IN 入力パラメータで指定された文字列のすべての文字に対して行われます。許可されている文字は、「0」～「9」の数字、小数点および正および負の符号です。文字
列の最初の文字は、有効な数または符号になります。先頭のスペースおよび指数表記は無視されます。
• 文字へ
文字列が文字に変換されるときは、文字列の最初の文字がパラメータ OUT に転送されます。
• 文字列へ

1880

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

数値または文字を文字列へ変換• 変換する数値のフォーマットは、IN 入力のデータタイプを選択して決定します。OUT
データタイプの有効なタグを(W)STRING 出力で指定します。変換後の文字列の長さは、
IN 入力の値によって異なります。
• 変換結果は 3 番目のバイトから始まる文字列として保存されます。文字列の最初のバ
イトは最大長を記録し、2 番目のバイトは文字列の実際の長さを記録します。正の数値
は符号なしで出力されます。
• INT または UINT データタイプとして存在する数値 0 が文字列に変換される場合(INT_TO_STRING(0)など)、結果の文字列の長さは 6 文字になります。
• 数値が文字列に変換される場合、文字列の最初の文字は空白文字が入力されます。空白の数は数値の長さに応じて異なります。
注記
STL/SCL 固有の情報
数値が文字列に変換される場合、文字列の最初の文字は空白文字が入力されません。
文字列の最初の文字に空白文字が入力されるようにする場合は、「VAL_STRG」命令を使用します。
• (W)CHAR 文字が変換されるときは、この文字が文字列の最初の位置に書き込まれます。
注記
浮動小数点数からの変換中の指数表記「S_CONV」命令のある浮動小数点数からの変換に、指数表現(「e」または「E」)を使用しな
いでください。その代わりに、「STRG_VAL」命令を使用して指数表記の浮動小数点数を変換します。この命令の FORMAT パラメータを使用して指数表記の入力形式を選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1881

拡張命令
4.3 String + Char

パラメータ
以下の表に、「S_CONV」命令のパラメータを変換の可能性ごとに示します。
表 4-5

文字列を数値に変換するためのパラメータ:

パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

STRING,

D、L、または定数

変換する値

I、Q、M、D、L

変換の結果

WSTRING
OUT

Output

CHAR, WCHAR,USINT, UINT,
UDINT, ULINT,
SINT, INT, DINT,
LINT, REAL,
LREAL

表 4-6

文字列の文字列への変換のパラメータ:

パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

STRING,

D、L、または定数

変換する値

D、L

変換の結果(可能な変換:STRING かWSTRING
OUT

OutputSTRING,WSTRING

表 4-7

ら WSTRING へ、およびその逆)

数値または文字を文字列に変換するためのパラメータ:

パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

CHAR, WCHAR,

I、Q、M、D、L、ま 変換する値

USINT, UINT,

たは定数

UDINT, ULINT,
SINT, INT, DINT,
LINT, REAL,
LREAL
OUT

OutputSTRING,

D、L

変換の結果

WSTRING

1882

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
表 4-8

文字を文字に変換するためのパラメータ:

パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

CHAR, WCHAR

I、Q、M、D、L、ま 変換する値
たは定数

OUT

Output

CHAR, WCHAR

I、Q、M、D、L

変換の結果(可能な変換:CHAR から
WCHAR へ、およびその逆)有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、INT データタイプの数を STRING データタイプの文字列に変換します。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。このために、データタイプを選択します。最初の選択オプションを使用して、変換する値(「inputValueNBR」)のデータタイ
プを指定します。2 番目の選択オプションを使用して、生成する文字列(「resultSTRING」)のデータタイプを指定します。

変換する値(「inputValueNBR」)が出力形式に変換されます。文字列の先頭の空の位置に空白スペースが書き込まれます。変換の結果は、出力パラメータ OUT(「resultSTRING」)に文字列として出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1883

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

下記も参照
STRG_VAL: 文字列を数値に変換 (ページ 1884)

4.3.4

STRG_VAL: 文字列を数値に変換

説明「STRG_VAL」命令は、文字列を整数または浮動小数点数に変換します。
• IN 入力パラメータで変換する文字列を指定します。
• 出力値の書式は、OUT 出力パラメータのデータタイプを指定して定義します。
変換が許可されている文字は、「0」～「9」の数字、小数点、小数点のカンマ、「E」および「e」の表記、および正および負の符号です。無効な文字が見つかった場合、変換はキャン
セルされます。

パラメータ
以下の表に、「STRG_VAL」命令のパラメータを示します。
パラメータ 宣言IN
FORMAT

Input
Input

データタイプ

メモリ領域

説明
変換される数字列

S7-1200

S7-1500

STRING,STRING,

D、L、または定WSTRINGWSTRING

数

WORD

WORD

I、Q、M、D、文字の入力形式

L、P、または定
数1884

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
パラメータ 宣言P

データタイプ

Input

S7-1200

S7-1500

UINT

UINT

メモリ領域

説明

I、Q、M、D、

変換する最初の文字への

L、P、または定参照(最初の文字 = 1、値数「0」または値>文字列長
は無効)

OUT

OutputUSINT, SINT,USINT, SINT,

I、Q、M、D、

UINT, INT,

UINT, INT,

L、P

UDINT, DINT,UDINT, DINT,REAL, LREALULINT, LINT,

変換の結果

REAL, LREAL
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ FORMATFORMAT パラメータを使用し、文字列の文字の変換方法を指定します。「STRG_VAL」命令を使用して、指数値も変換および表示されます。
次の表に、FORMAT パラメータの可能な値とその意味を示します。
値

表記法

小数点の表現

小数"."(W#16#....)
0000
0001
0002

","
指数

0003
0004～FFFF

"."
","

無効な値

パラメータ P
変換は、P パラメータで指定した位置の文字から開始されます。たとえば、P パラメータで値「1」が指定されている場合、変換は指定された文字列の最初の文字から開始されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1885

拡張命令
4.3 String + Char例
次の表に、文字列から数値への変換の例を示します。
IN (STRING)FORMAT(W#16#....)OUT (データタイプ)

OUT (値)ENO ステータ
ス

'123'

0000

INT/DINT

123

1'-00456'0000

INT/DINT-456

1'123.45'0000

INT/DINT

123

1'+2345'0000

INT/DINT

2345

1'00123AB'

0000

INT/DINT

123

1

'123'

0000

REAL

123.0

1

'-00456'

0001

REAL

-456.01'+00456'

0001

REAL

456.0

1

'123.45'

0000

REAL

123.45

1'123.45'

0001

REAL

12345.0

1'123,45'

0000

REAL

12345.0

1'123,45'

0001

REAL

123.451'.00123AB'

0001

REAL

123.0

1

'1.23e-4'

0000

REAL

1.23

1

'1.23E-4'

0000

REAL

1.23

1

'1.23E-4'

0002

REAL

1.23E-4

1'12,345.67'

0000

REAL

12345.67

1'12,345.67'

0001

REAL

12.3451'3.4e39'

0002

REAL

W#16#7F8000

000'-3.4e39'

0002

REAL

W#16#FF80000

00'1.1754943e-3

0002

REAL

0.0

1

'12345'

-/-

SINT

0

0

'A123'

-/-

-/-

0

0

''

-/-

-/-

0

0

8'

1886

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharIN (STRING)FORMAT(W#16#....)OUT (データタイプ)

OUT (値)ENO ステータス'++123'

-/-

-/-

0

0

'+-123'

-/-

-/-

0

0

例
次の例では、STRING データタイプの数字列を REAL データタイプの浮動小数点数に変換します。変換された結果は、REAL データタイプのため 32 ビットの長さで符号が付きます。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。左の選択オプションを使用して、文字列のデータタイプを選択します。右の選択オプションを使用して、浮動小数点数のデータタイプを選択します。

パラメータ P(「pointerSTRG」)の値「1」に従って、数字列は最初の文字から変換されます。
パラメータ FORMAT(「resultSformat」)の値「0001」により、数字列のピリオドは千桁の区切り文字と解釈されます。(カンマは値「0001」では小数点の記号です。)変換する値「inputSTRING」()は、浮動小数点数として出力パラメータ OUT(「outputVAL」)に出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1887

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.5

VAL_STRG: 数値を文字列に変換

説明「VAL_STRG」命令を使用し、数値を文字列に変換します。
• 変換する値は、IN 入力パラメータで指定します。数値のフォーマットは、データタイ
プを選択して決定します。
• 変換の結果は、OUT 出力パラメータで照会します。
変換が許可されている文字は、「0」～「9」の数字、小数点、小数点のカンマ、「E」および「e」の表記、および正および負の符号です。無効な文字が存在すると、変換が中断されま
す。

1888

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

パラメータ
以下の表に、「VAL_STRG」命令のパラメータを示します。
パラメータ
IN

宣言
Input

データタイプ

メモリ領域

説明
変換する値

S7-1200

S7-1500

USINT, SINT,USINT, SINT,

I、Q、M、D、

UINT, INT,

UINT, INT,

L、P、または定

UDINT, DINT,UDINT, DINT,数

REAL, LREALULINT, LINT,
REAL, LREAL

SIZE

Input

USINT

USINT

I、Q、M、D、

文字位置の数

L、P、または定
数
PREC

Input

USINT

USINT

I、Q、M、D、

小数点以下の桁数

L、P、または定数
FORMAT

Input

WORD

WORD

I、Q、M、D、文字の出力書式

L、P、または定
数
P

InOut

UINT

UINT

I、Q、M、D、

結果の書き込みが開始す

L、P、または定

る文字

数
OUT

OutputSTRING,STRING,WSTRINGWSTRING

D、L

変換の結果

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ PP パラメータを使用し、結果の書き込みが開始される文字列の文字を指定します。たとえば
P パラメータで値「2」が指定されている場合、変換された値は文字列の 2 番目の文字から保存されます。

SIZE および P パラメータ
SIZE パラメータを使用し、文字列の何文字が書き込まれるか指定します。これは、P パラ
メータで指定された文字からカウントされます。出力値が指定された長さよりも短い場合、結果は文字列に右揃えで書き込まれます。空の文字位置は空白で埋められます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1889

拡張命令
4.3 String + Char

パラメータ FORMATFORMAT パラメータを使用し、変換中に数値がどのように変換され、文字列に書き込まれるか指定します。USINT パラメータでは、FORMAT データタイプのタグのみを指定することができます。
次の表に、FORMAT パラメータの可能な値とその意味を示します。
値

表記法

符号

小数点の表現

小数

"-"

"."

(W#16#....)
0000
0001
0002

","
"."

指数

0003
0004

","
小数

"."

「+」と「-」

0005
0006

","
"."

指数

0007
0008～FFFF

","
無効な値

注記
FORMAT パラメータの値 2、3、6 および 7 の関連性
FORMAT パラメータの値 2、3、6 および 7 は、パラメータ IN のデータタイプが REAL ま
たは LREAL の場合にのみ関連します。

パラメータ PREC
PREC パラメータを使用し、浮動小数点数の変換時の小数位を定義します。REAL データタ
イプの数値では、7 つの数値の最大精度がサポートされています。変換する値が整数の場
合、PREC パラメータを使用して小数点を配置する位置を指定します。

1890

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char例
次の表に、VAL_STRG の呼び出し前にパラメータ OUT に空の文字列が含まれている場合の数値から文字列への変換の例を示します。
IN(値)IN (データタ
イプ)

P

SIZE

FORMAT(W#16#....)PREC

OUT (STRING)

ENO ステー
タス

123

UINT

16

10

0000

0

xxxxxxx123 C

1

0

UINT

16

10

0000

2

xxxxxx0.00 C

112345678

UDINT

16

10

0000

3

x12345.678 C

112345678

UDINT

16

10

0001

3

x12345.678 C

1

123

INT

16

10

0004

0

xxxxxx+123 C

1

-123

INT

16

10

0004

0

xxxxxx-123 C

1-0.00123

REAL

16

10

0004

4

xxx-0.0012 C

1-0.00123

REAL

16

10

0006

4

-1.2300E-3 C

1-Inf 1)

REAL

16

10

-/-

4

xxxxxx-INF C

0

+Inf

2)

REAL

16

10

-/-

4

xxxxxx+INF C

0

NaN 3)

REAL

16

10

-/-

4

xxxxxxxNaN C

012345678

UDINT

16

6

-/-

3

xxxxxxxxxx C

0「x」は空白を示します-Inf:負の無限数を表す浮動小数点数。

1)+Inf:正の無限数を表す浮動小数点数。

2)
3)

NaN:無効な数式演算の結果として返された値。

例
次の表に、VAL_STRG の呼び出し前にパラメータ OUT に空の文字列が含まれているときの数値から文字列への変換の例を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1891

拡張命令
4.3 String + Char
すべての場合において、パラメータ IN、SIZE、PREC、FORMAT および P の値は同じです。
IN=123、SIZE=16、PREC=0、FORMAT=4、P=10。OUT の既定値のみが異なります。
• OUT に P よりも短い文字列が含まれる場合。
CPU は、(P-1)番目の位置まで既存の文字列の後の OUT を空白文字で埋めます。位置 Pの時点で、先頭の空白文字を考慮して OUT に書き込まれます。
VAL_STRG の呼び出し前の OUT:

ABCDEFxxxxxxxxxx xxxxxxxxxxxxxxxx

VAL_STRG の呼び出し後の OUT:

ABCDEFxxxxxxxxxx xxxxxx123xxxxxxx「x」は空白文字を示します• OUT に P+SIZE よりも長い文字列が含まれる場合。
位置 P の時点で、CPU は先頭の空白文字を考慮して OUT を SIZE 文字で埋めます。
VAL_STRG の呼び出し前の OUT:

ABCDEFGHIJKLMNOP QRSTUVWXYZABCDEF

VAL_STRG の呼び出し後の OUT:

ABCDEFGHIxxxxxxx xxxxxx123ZABCDEF「x」は空白文字を示します• OUT に P よりも長いが、P+SIZE よりも短い文字列が含まれる場合。
位置 P の時点で、CPU は先頭の空白文字を考慮して OUT を SIZE 文字で埋めます。
VAL_STRG の呼び出し前の OUT:

ABCDEFGHIJKLMNOP xxxxxxxxxxxxxxxx

VAL_STRG の呼び出し後の OUT:

ABCDEFGHIxxxxxxx xxxxxx123xxxxxxx「x」は空白文字を示します

例
次の例では、REAL データタイプの浮動小数点数を STRING データタイプの文字列に変換します。
グローバルデータブロックにデータを保存するために、6 つのタグを作成します。

1892

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
この命令のパラメータを以下のように相互接続します。データタイプを選択します。
• 左の選択オプションは、変換される値に関するものです。
• 右の選択オプションは、生成される文字列に関するものです。

パラメータ P" ("pointer2STRG」)の値「16」に従って、文字列は 16 番目の文字から書き込まれます。このポイントから開始して、文字列の長さは、SIZE パラメータ(「sizeSTRG」)の値「10」に従って、10 文字になります。パラメータ FORMAT(「resultV2Sformat」)の値「0004」により、変換する値のピリオド(「inputVAL」)は、小数点の記号として解釈されます。パラメータ PREC(「precVAL」)の値「3」に従って、小数点以下の 3 桁の数が文字列に書き込まれます。変換する値の符号は、文字列の文字として保存され、数字の前に置かれます。文字列の残りの 10 文字は、符号の前に空白文字として書き込まれます。文字列は、
出力パラメータ OUT(「outputSTRING」)に出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1893

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

1894

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

4.3.6

Strg_TO_Chars: 文字列を CHAR 配列に変換

説明「Strg_TO_Chars」命令を使用して、データタイプ STRING の文字列を Array of CHAR または Array of BYTE にコピーしたり、データタイプ WSTRING の文字列を Array of WCHAR ま
たは Array of WORD にコピーしたりします。ASCII 文字のみがコピープロセスに対して有効です。
• 入力パラメータ STRG で文字列を指定します。
• 文字は、パラメータ CHARS で Array of CHAR / BYTE / WCHAR / WORD データタイプに書き込まれます。
– コピー先のフィールド内の文字数は、ソース文字列からコピーされた文字数と少な
くとも同数である必要があります。
– コピー先のフィールドに含まれる文字数がソース文字列の文字数よりも少ない場合、コピー先のフィールドの最大長まで文字が書き込まれます。
– 文字列に「$00」または W#16#0000 文字が含まれている場合、これはコピー操作に影響しません(図を参照)。
– コピーされた文字の数は、パラメータ CNT で出力されます。
• パラメータ PCHARS を使用して、コピー先フィールドのどの位置から書き込みが開始されるかを示します。
– 例:3 番目の位置から書き込みが行われる場合は、パラメータ PCHARS で値「2」を使用します。

675,1*>@%\WH

%\WH

%\WH

%\WH

%\WH

%\WH

%\WH

%\WH

7

(

6

7



$

%

&

7

(

6

7



$

&KDU>@&KDU>@&KDU>@&KDU>@&KDU>@&KDU>@3&+$56 $UUD\>@RI&+$5&KDU>@&KDU>@– PCHARS の既定値は「0」です。PCHARS = 0 のときは、配列のインデックスの下限値が使用されます(たとえば、Array [0..5] of CHAR の場合は CHAR[0])。これはまた、配列の下限値が負の値である場合も同様です(たとえば、Array [-5..5] of CHAR の場合
は CHAR[-5])。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1895

拡張命令
4.3 String + Char

注記
S7-1200 V2.0 でのこの命令の使用バージョン 2.0 までの S7-1200 では、Array [0 .. n] of CHAR / BYTE 以外はサポートされていません。負のインデックス制限値(たとえば、 Array [-3..2] of CHAR)は許可されていません。この制限は、ソフトウェアによってチェックされません。

パラメータ
以下の表に、「Strg_TO_Chars」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

STRG

Input

STRING,

D、L、または定数

コピー操作のコピー元

I、Q、M、D、L、

文字列の文字の書き込みが開始されP、または定数る構造体 Array of (W)CHAR / BYTE /WSTRING
PCHARS

Input

DINT

WORD 内の位置。
CHARS

InOut

VARIANT

D、L

コピー操作のコピー先
文字を Array of (W)CHAR/ BYTE/
WORD データタイプの構造体にコピ
ーします。

CNT

OutputUINT

I、Q、M、D、L、P

移動される文字数

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、Array of CHAR データタイプの文字列の文字を STRING データタイプの構造体にコピーします。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

1896

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

この命令のパラメータを以下のように相互接続し、文字列のデータタイプを選択します。

個々の文字で構成される構造体は、Array of CHAR データタイプで作成されます。CHARS
構造体(「myarrayCHARS」)は 10 文字の長さ(Array ～ [0..9])があります。パラメータ
PCHARS(「pointerCHARS」)の値「2」に従って、構造体の 3 番目の文字から書き込みを開始します(「0」および「1」は空白で、「2」は文字列(「inputSTRG」の最初の文字を含みます))。文字列(「inputSTRG」)の各文字が構造体(「myarrayCHARS」)に書き込まれると、作成される構造体の最後の文字に空白が書き込まれます。移動する文字列の文字数は、出力パラ
メータ CNT(「countCHARS」)に出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1897

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

1898

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

4.3.7

Chars_TO_Strg: CHAR 配列を文字列に変換

説明「Chars_TO_Strg」命令を使用して、文字を Array of CHAR または Array of BYTE からデータ
タイプ STRING の文字列にコピーしたり、 ARRAY of WCHAR または Array of WORD からデータタイプ WSTRING.の文字列にコピーしたりします。コピー操作に対しては、ASCII 文字のみが有効です。
• 入力パラメータ CHARS で文字列にコピーされる Array of (W)CHAR / BYTE / WORD の文字を指定します。
• 文字は、パラメータ STRG で(W)STRING データタイプ に書き込まれます。
– 文字列内の文字数は、ソースフィールドからコピーされた文字数と少なくとも同数です。
– 文字列がソースフィールド内の文字数よりも短い場合、文字列の最大長まで文字が書き込まれます。
– Array of CHAR / BYTE に「$00」文字が含まれている場合や、Array of WCHAR / WORDに W#16#0000 文字が含まれている場合は、コピー操作は、対応する位置までしか実行されません(図を参照)。
• PCHARS パラメータを使用して、それ以降に文字がコピーされるソースフィールドの位置を指定します。PCHARS = 0 は既定値であり、配列のインデックスの下限値が負である
場合でも、常にこの下限値を指定します。
– 例:ソースフィールドの 3 番目の文字からコピーを開始する場合、パラメータ PCHARS
で値「2」を使用します。

$UUD\>@RI&+$5&KDU>@&KDU>@&KDU>@&KDU>@&KDU>@&KDU>@

7

(

6

7



$

%\WH

%\WH

%\WH

%\WH

S&KDUV 
675,1*>@

6

7%\WH

%\WH

– パラメータ PCHARS でインデックスが指定された場合で、かつそのインデックスがコピーソースに含まれていない場合(たとえば、Array [0..5] of CHAR で「7」)、命令は実行されません.

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1899

拡張命令
4.3 String + Char

注記
S7-1200 V2.0 でのこの命令の使用バージョン 2.0 までの S7-1200 では、Array [0 .. n] of CHAR / BYTE 以外はサポートされていません。負のインデックス制限値(たとえば、 Array [-3..2] of CHAR)は許可されていません。この制限は、ソフトウェアによってチェックされません。

パラメータ
以下の表に、「Chars_TO_Strg」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

CHARS

Input

VARIANT

D、L

コピー操作のコピー元
文字のコピー元となる
Array of (W)CHAR / BYTE / WORD。

PCHARS

Input

DINT

I、Q、M、D、L、

文字のコピーが開始される

P、または定数

Array of (W)CHAR / BYTE / WORD 内の
位置。

CNT
STRG

Input
OutputUINT
STRING,WSTRING

I、Q、M、D、L、コピーされる文字数「0」を使用しP、または定数て、すべての文字をコピーします。

D、L

コピー操作のコピー先(W)STRING データタイプの文字列。データタイプの最大長を遵守します。
• STRING:254 文字• WSTRING:254 文字(既定) / 16382
文字(最大)WSTRING を使用する場合、254 文字を超える長さを角括弧で明示的に定義しなければならないことに注意してください(WSTRING[16382]など)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、Array of CHAR データタイプの構造体の文字を STRING データタイプの文字列にコピーします。

1900

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Charグローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続し、文字列のデータタイプを選択します。

CHARS 構造体(「inputArrayCHARS」)は 10 文字の長さ(Array ～ [0..9])があります。パラメー
タ PCHARS(「pointerCHARS」)の値「2」に従って、構造体の 3 番目の位置から文字列「outputSTRG」()へ文字をコピーします。パラメータ CNT(「countCHARS」)が値「0」を持つ
ため、位置「2」から、構造体(「inputArrayCHARS」)のすべての文字が文字列「outputSTRG」()にコピーされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1901

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.8

MAX_LEN:文字列長の定義

説明(W)STRING データタイプのタグは、2 つの長さを含みます。最大長と現在の長さ(現在有効な文字の数)があります。
• それぞれのタグの文字列の最大長は、STRING キーワードに角括弧内で指定されます。
文字列で占められたバイトの数は 2 で、最大長を超えます。
• それぞれのタグの文字列の最大長は、WSTRING キーワードに角括弧内で指定されます。
文字列で占められたワードの数は 2 で、最大長を超えます。
• 現在の長さは、実際に使用されている文字の桁数を示します。現在の長さは、最大長以下であることが必要です。
「MAX_LEN」命令を使用して、IN 入力パラメータで指定された文字列の最大長を識別します。これは、出力パラメータ OUT に数値として出力されます。
注記
文字列のチェック
「MAX_LEN」命令は、パラメータ「IN」の文字列をチェックしません。

1902

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
命令の処理中にエラーが発生した場合、OUT パラメータで値「0」が出力されます。
注記
現在の長さの読み出し「LEN (ページ 1947)」命令を使用して、文字列の現在の長さを読み出します。

パラメータ
以下の表に、「MAX_LEN」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN

Input

• STRING

D、L、または定数

文字列

I、Q、M、D、L、P

最大文字数• WSTRINGOUT

Return• INT• DINT

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、STRING データタイプの文字列の最大長を定義します。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

指定された文字列(「inputSTRING」)の最大長が判定され、出力パラメータ「OUT」「stringMLengthOUT」()に数値として返されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1903

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.9

JOIN:複数の文字列の結合

4.3.9.1

JOIN:複数の文字列の結合

説明「JOIN」命令は複数の文字列を 1 つの配列に結合します。

1904

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
複数の文字列を単一の文字列に変換するために、この命令は次のファンクションを提供します。
• 形式の選択
Mode パラメータの先頭ビットを使用して、配列のソース文字列のシーケンスを CSV ま
たは FSR 形式に指定することができます。
次の例では、2 つのソース文字列がテーブルの 2 つの列により指定されています。最大文字数は、最初のソース文字列が 4 文字、2 番目が 13 文字、3 番目が 10 文字、4 番
目が 14 文字です。
1963

1974

MillerJackson

John

Peter

Roadname

VeryLongRoadna– CSV (カンマ区切り値)を使用する場合、ソース文字列の内容が連続的に宛先配列に書き込まれ、区切り文字で区切られます(以下の例を参照)。
– FSR (固定サイズレコード)を使用する場合、ソース文字列ごとに宛先配列での一定の文字数が定義されます。ソース文字列の文字が宛先配列で空白文字の予約が不要な場合、対応する配列エレメントは区切り文字で埋められます。ただし、ソース文字列の文字数が予約された空白よりも大きい場合は、対応する配列エレメントは前から埋められ、ソース文字列の超過した文字は切り捨てられます(下の例を参照)。
• ソース文字列の区切り文字の選択
RecSeparator パラメータを使用して、文字列ごとに使用する区切り文字を選択します。
SrcStruct パラメータでの入力文字列の内容に基づいて文字を選択します。たとえば、入力文字列が文字列内にカンマを含んでいる場合は、区切り文字としてカンマを使用しないでください。区切り文字に使用するデータタイプは DstArray パラメータで宛先配列と一致する必要があります。その結果、区切り文字を配列に書き込むことも可能になります。
• すべてのソース文字列の終わりの区切り文字の選択
モードパラメータの 3 番目のビットを使用して、宛先配列(DstArray パラメータ)においてコピーされた文字の終わりに区切り文字として追加文字を書き込むかどうかを指定できます。EndSeparator パラメータで、区切り文字として使用する文字を指定します。必ず RecSeparator パラメータ(個々の文字列の区切り文字)について設定されている文字
以外の文字を使用してください。2 つの区切り文字が区別できない場合、「SPLIT」命令を使用して変換を逆転した場合に予期しない結果が生じます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1905

拡張命令
4.3 String + Char• ソース文字列の選択
SrcStruct パラメータでソース文字列を指定します。データタイプについて、Array of
STRING または Array of WSTRING、あるいは STRING または WSTRING データタイプのみを含む構造体を使用できます。これは、ユーザーデータタイプやネスト構造にも適用されます。これらがデータタイプ STRING または WSTRING だけをそれぞれ含んでいる限
り、これらを使用できます。
• 結合された文字列の数の指定
SrcStruct パラメータ(ソース文字列)で Array of STRING または Array of WSTRING を使用する場合(ネスト構造なし)、Count パラメータを使用して、単一文字列を形成するために結合されているソース文字列の数を指定できます。SrcStruct パラメータで Array of(W)STRING 以外のデータタイプを使用した場合、Count パラメータは無視されます。この方法でのみ配列のより大きい部分を接続することができます。
• 配列を書き込むための宛先領域の選択
DstArray パラメータで Array of (W)CHAR データタイプを使用します。この場合、
STRING または WSTRING データタイプを使用することはできません。STRING について
長さが 254 文字または 256 バイトに制限されているためです。
• 配列内の位置のインデックス(DestArray ターゲットパラメータ)変換はこの位置で開始されます。命令は、変換が完了する位置を決定する位置パラメータを読み出します。これにより、配列を埋めるための命令のフォローアップコールが可能になります。

パラメータ
以下の表に、「JOIN」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

Mode

Input

DWORD

I、Q、M、D、文字列との結合方法を指定します(「Mode」

L、または定数

パラメータを参照)。

RecSeparator

Input

VARIANT

I、Q、M、D、L ソース文字列の区切り文字• CSV を使用する場合個々の文字列の区切り文字として使用される文字。
• FSR を使用する場合個々の文字列のフィル文字として使用される文字。

EndSeparator Input

VARIANT

I、Q、M、D、L 変換の終わりの区切り文字
モードパラメータについてビット 3 = 1 がセットされている場合に、文字の終わりに書き込まれる区切り文字。

1906

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
パラメータ

宣言

データタイプ メモリ領域

説明

SrcStruct

Input

VARIANT

I、Q、M、D、L ソース文字列へのポインタ。

Count

Input

UDINT

I、Q、M、D、結合された文字列の数。

L、または定数Count パラメータを使用できるのは、
SrcStruct パラメータで Array of (W)STRINGが使用されているときだけです。

DestArray

InOut

VARIANT

I、Q、M、D、L 変換後に文字が書き込まれる領域。
DestArray パラメータで Array [0 .. x] ofCHAR/WCHAR データタイプを使用します。
SrcStruct パラメータでのソース文字列の長さに基づいて配列の長さ(x)を設定できます。

Position

InOut

UDINT

I、Q、M、D、L 合計文字列内の位置のインデックスを作成します。

Ret_ValReturn

INT

I、Q、M、D、L 命令のステータス(「RET_VAL パラメータ」の表を参照)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ Mode
ビット

ビット値「0」0

CSV 形式(カンマ区 FSR 形式(固定サイ 形式の選択
切り値)

ビット値「1」

ズレコード)

説明• CSV を使用する場合、ソース文字列は宛先配列において区切り文字で区切られます。
• FSR を使用する場合、ソース文字列は、RecSeparator パ
ラメータで定義されたフィル文字を使用して宛先配列に書き込まれます。

1--「JOIN」命令には無関係です。

2

-

-

予約済み(ビット値には無関係)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1907

拡張命令
4.3 String + Char
ビット

ビット値「0」

ビット値「1」

説明

3

追加区切り文字を 読み出された文字配列(DestArray パラメータ)において文字の終わりに区切り

書き込みません。 の終わりに、文字として追加文字を書き込むかどうかを選択します。

EndSeparator パラ
メータによって定義された文字を書き込みます。
4--「JOIN」命令には無関係です。

パラメータ RET_VAL
エラーコード 説明*(W#16#...)
0000

エラーは発生していません。

8190

Mode パラメータでの選択はサポートされていません。

8x20

ソース文字列が無効です。

8x53

VARIANT が短すぎるデータ構造体をポイントしています。

8x54

無効なデータタイプ

8082

パラメータ Count が SrcStruct のソース文字列数より大きい値です。

8xB4

パラメータ SrcStruct (ソース)と DestArray (宛先)または区切り記号(パラメータ RecSeparator
および EndSeparator)でデータタイプが異なります。

80B5

命令でバッファオーバーフローが発生しました。文字がパラメータ DestArray に完全に出力されていない、またはパラメータ Position の値が DestArray の範囲外です。

1908

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
エラーコード 説明*(W#16#...)
一般エラー情 関連項目: GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* エラーコードについて以下のことに注意してください。
• プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。
• リストされているエラーコードの 2 番目の位置にある「x」は、エラーの原因となったパラメータを表します。
例:16 進のエラーコード 8352 = 3 番目のパラメータ(EndSeparator)でエラーが発生しました。パラメー
タの表を参照してください。
• エラーを特定のパラメータに明確に割り当てられない場合は、「0」が出力されます。
例:CHAR データタイプが区切り文字(RecSeparator パラメータ)に使用されています。WCHAR がDestArray パラメータで配列のデータタイプとして使用されています。この場合、エラーコード 80B4 が出力されます。

宛先配列が CSV 形式である場合の JOIN 命令の 2 つの例• 最初の例:
以下のソース文字列が使用できます。
– 1963– Miller– John– Roadname「,」を区切り文字として選択した場合、JOIN の呼び出しにより以下の宛先配列が作成されます。
1963,Miller,John,Roadname• 2 番目の例:
以下のソース文字列が使用できます。
– 1974– Jackson– Peter– VeryLongRoadname「,」を区切り文字として選択した場合、JOIN の呼び出しにより以下の宛先配列が作成されます。
1974,Jackson,Peter,VeryLongRoadname

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1909

拡張命令
4.3 String + Char

宛先配列が FSR 形式である場合の JOIN 命令の 2 つの例• 最初の例:
以下のソース文字列が使用できます。
– 1963– Miller– John– Roadname
宛先配列の予約文字数は、最初のソース文字列が 4 文字、2 番目が 13 文字、3 番目が10 文字、4 番目が 14 文字です。
「,」をフィル文字として選択した場合、JOIN の呼び出しにより以下の宛先配列が作成されます。
1963Miller,,,,,,,John,,,,,,Roadname,,,,,,• 2 番目の例:
以下のソース文字列が使用できます。
– 1974– Jackson– Peter– VeryLongRoadname
宛先配列の予約文字数は、最初のソース文字列が 4 文字、2 番目が 13 文字、3 番目が10 文字、4 番目が 14 文字です。
「,」をフィル文字として選択した場合、JOIN の呼び出しにより以下の宛先配列が作成されます。
1974Jackson,,,,,,Peter,,,,,VeryLongRoadna

プログラム例
例については、以下を参照してください。JOIN のプログラム例 (ページ 1910)。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

4.3.9.2

JOIN のプログラム例
以下の例では、Array of STRING の 3 つの文字列を結合し、Array of CHAR の文字列を 1 つ作
ります。

1910

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

データストレージ
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

FC「SLI_FC_encodeMode_JOIN」:パラメータの相互接続「JOIN」命令の MODE パラメータでの値を結合するには、FC「SLI_FC_encodeMode_JOIN」を作成します。FC 内で以下のローカルタグを作成します。

ネットワーク 1:フォーマットを選択するには、以下の相互接続を作成します。

ネットワーク 2:変換の最後で区切り記号を使用するために、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1911

拡張命令
4.3 String + Char

FC「SLI_FC_calculateLength_JOIN」:パラメータの相互接続
FSR または CSF 形式に基づいて文字長を計算するために、FC「SLI_FC_calculateLength_JOIN」を作成します。FC 内で以下のローカルタグを作成します。

ネットワーク 1:配列エレメントをカウントし、配列制限値を計算するために、以下の相互接続を作成します。
パート 1:

1912

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Charパート 2:

ネットワーク 2:FSR 形式に基づいて、入力パラメータ POSITION によって位置の値「positionInDest」()を要求します。

ネットワーク 3:FSR 形式に基づいて文字長を計算するために、以下の相互接続を作成します。

ネットワーク 4:CSV 形式に基づいて、Array of STRING の位置の値(「positionInDest」)の内容を入力し、入力パラメータ POSITION によってこの値を要求します。

ネットワーク 5:CSV 形式に基づいて、すべての文字列の文字長を入力します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1913

拡張命令
4.3 String + Char

ネットワーク 6:CSV 形式に基づいて、カウンタをインクリメントし、Array of STRING を複数回呼び出します。

ネットワーク 7:CSV 形式に基づいて、必要な文字列全体の文字長および必要な配列制限値を計算します。

ネットワーク 8:CSV 形式に基づいて、「JOIN」命令の実行を停止する位置を計算します。

1914

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharFB「SLI_FB_JOIN」:パラメータの相互接続
命令「JOIN」を FB で呼び出します。FB 内で以下のローカルタグを作成します。

ネットワーク 1:以下のように、「SLI_FC_encodeMode_JOIN」と「SLI_FC_calculateLength_JOIN」を相互接続します。

ネットワーク 2:命令「JOIN」を以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1915

拡張命令
4.3 String + Char

ネットワーク 3:以下のように、「execute」タグをリセットします。

FB「SLI_FB_JOIN」:ネットワーク 1 の結果
FC「SLI_FC_encodeMode_JOIN」は、文字列を変換する「JOIN」命令によって使用される
モードを入力パラメータ FORMAT 「mode.format」()および WRITEENDSEPARATOR「mode.writeEndSeparator」()から取得します。これに応じて、CSV 形式で変換が実行され「format」が(FALSE)、文字列の終端に文字が設定されます(「writeEndSeparator」がTRUE)。使用されるモードは、FC「SLI_FC_encodeMode_JOIN」の出力パラメータ
MODE(「#statMode」)に出力されます。
FC「SLI_FC_calculateLength_JOIN」は、文字列(「#joinLength」)の文字列変換を入力パラメ
ータ SOURCEARRAY 「sourceArray」()、ONESTRINGOFARRAY 「sourceStruct[0]」
(
)、および

1916

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
MODE 「#statMode」()に基づいたモードから計算します。FC「SLI_FC_calculateLength_JOIN」は、文字列全体が 18 文字であることを計算します。
「JOIN」命令の実行停止位置は、FC「SLI_FC_calculateLength_JOIN」の出力パラメータ
FINALPOSITION(「#finalPosition」)によって出力されます。

FB「SLI_FB_JOIN」:ネットワーク 2 の結果
ノーマルオープン(「execute」)およびコンパレータがシグナル状態「TRUE」である場合「positionInDest」の値が「760」未満)、(「JOIN」命令が実行されます。
「#finalPosition」タグは、「JOIN」命令の最初の実行後の新しい値を表示します。この値は、現在の位置の値(「postionInDest」)および文字列全体の長さ(「#joinLength」)に基づいています。
「JOIN」命令の出力パラメータ RET_VAL(「returnValue」)は、この例の処理がエラーなしで行われていることを示します。「execute」タグおよびコンパレータ(「#finalPosition」)による「JOIN」命令の実行が制限されているため、バッファオーバーフローは発生しません。
CSV 形式に基づいて、結果は以下のように表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1917

拡張命令
4.3 String + CharFB「SLI_FB_JOIN」:ネットワーク 3 の結果「positionInDest」タグの値が「#finalPosition」タグの値と等しい場合、「execute」タグの値はリセットされます。これにより、所定の長さおよび出力に文字列全体が変換されるとすぐに「JOIN」命令の実行が終了します。

その他の変換他のモードでも上述の Array of STRING を変換できます。

1918

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharCSV 形式/タイプ 2 への変換:

要件:• タグ「format」および「writeEndSeparator」の値が「FALSE」であること。
• 17 文字列全体に対して、文字の長さが決定されていること。
• ただし、「JOIN」命令(「#finalPosition」)の呼び出しを制限するタグの値が「18」、かつPOSITION パラメータ(「postionInDest」)の値が「0」であること。
これにより、文字列全体が連続して 2 回出力されます。
注記「JOIN」命令は、「#finalPosition」タグの値「18」で Array[0..17] of CHAR を埋めようとします。文字列全体が既に宛先領域(Array of CHAR の 0..16)を埋めており、終端に区切り記号がセットされていないため、JOIN は再度文字列全体の転送を開始します。

FSR 形式への変換:

要件:• タグ「format」および「writeEndSeparator」の値が「TRUE」であること。
• 文字列の最大長(10)が、データタイプ(STRING)に基づいて決定されていること。
各文字の使用されない桁が、文字列全体にわたって区切り記号で埋められます。その後、終端の区切り記号を含む文字列全体が Array of CHAR に渡されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1919

拡張命令
4.3 String + Char

プログラムコード
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

4.3.10SPLIT:文字配列の複数文字列への分割

4.3.10.1

SPLIT:文字の配列を複数の文字列に分割

説明「SPLIT」命令は、配列(Array of CHAR / WCHAR)を複数の個別の文字列(Array of STRING /WSTRING または構造体)に変換します。

1920

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
配列を複数の文字列に変換するには、次の情報を指定します。
• 読み出す配列の選択
SrcArray パラメータで読み出す配列を指定します。入力および出力パラメータに使用されるデータタイプが、使用されるその他のパラメータと一致することを確認してください。たとえば、SrcArray パラメータで CHAR データタイプの配列を使用する場合は、区切り文字(Rec/EndSeparator)に CHAR データタイプを使用する必要があります。また、構造体は、DestStruct パラメータで STRING データタイプの文字列のみを含んでいる必要があります。
• ソース配列のフォーマット選択
Mode パラメータの先頭ビットを使用して、読み出す配列を CSV または FSR 形式に指定します。
– CSV (カンマ区切り値)を使用する場合、ソース配列に含まれる文字は次の文字を区切り文字として区切られています。
ソース配列の 2 つの例:
1963,Miller,John,CitynameA,Roadname
1974,Jackson,Peter,CitynameB,VeryLongRoadname– FSR (固定サイズレコード)を使用する場合、ソース配列の論理情報の項目ごとに一定の文字数が定義されます。情報の各項目は、定義されたスペースに合わせます。情報が定義されたスペースを必要としない場合は、区切り文字で埋められます。
ソース配列の 2 つの例の情報の長さは、最初の情報項目(生年)が 4 文字、2 番目(姓)が 13 文字、3 番目が 10 文字(名)、4 番目(都市)が 9 文字、5 番目(番地等)が 16 文字です。
1963Miller,,,,,,,John,,,,,,CitynameARoadname,,,,,,,,
1974Jackson,,,,,,Peter,,,,,CitynameBVeryLongRoadname• 読み出す配列に使用される区切り文字– 読み出す配列が CSV 形式を持つ場合、RecSeparator パラメータを使用してどの区切り文字が使用されたかを指定します。
– 読み出す配列が FSR 形式を持つ場合、RecSeparator パラメータを使用してどのフィル文字が使用されたかを指定します。
• 合計文字列の終わりの区切り文字の選択
EndSeparator パラメータで、その後で配列の読み出しが停止する区切り文字を指定します。「SPLIT」命令はこの位置で停止し、検出された文字列を出力します。
EndSeparator 区切り文字は、RecSeparator 区切り文字よりも高い優先度で評価されることに注意してください。EndSeparator パラメータの区切り文字が(2 つのRecSeparator 区切り文字の間で)読み出す文字列で使用された場合、EndSeparator 区切
り文字の後のすべての内容は無視されます。
このため、読み取られる配列内の EndSeparator 区切り文字には、RecSeparator 区切り
文字以外の文字を選択することを強く推奨します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1921

拡張命令
4.3 String + Char
• 配列の読み出しが開始される位置の指定
変換は配列内のこの位置で開始され、命令は、変換が完了する位置を決定する位置パラメータを読み出します。これにより、DestStruct パラメータでさまざまな文字列を埋めるための命令のフォローアップコールが可能になります。
• 読み出された文字列の数の出力
DestStruct パラメータで Array of STRING を使用した場合は、Count パラメータを使用
して、読み出された文字列の数を出力できます。内容を含む文字列以外はカウントされません。DestStruct パラメータで Array of STRING 以外のデータタイプを使用した場
合、Count パラメータで「0」が出力されます。

パラメータ
以下の表に、「SPLIT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

Mode

Input

DWord

I、Q、M、D、L、ま 複数の文字列への分割方法を指定しま

RecSeparator

Input

Variant

説明

たは定数

す(「Mode」パラメータを参照)。

I、Q、M、D、L

区切り文字またはフィル文字• CSV を使用する場合読み出す配列
において個々の文字列を識別するために使用された文字。
• FSR を使用する場合読み出す配列においてフィル文字として使用された文字。

EndSeparator

Input

Variant

I、Q、M、D、L

読み出す配列において合計文字列の終わりを定義するために使用される区切
り文字。

SrcArray

Input

Variant

I、Q、M、D、L

読み出す配列(Array of CHAR/WCHAR)
へのポインタ

DestStruct

InOut

Variant

I、Q、M、D、L変換された文字列(Array of STRING /WSTRING)を含む構造体。

Position

InOut

UDInt

I、Q、M、D、L

SrcArray パラメータでの配列の読み出し元となる位置。

Ret_ValReturnInt

I、Q、M、D、L

命令実行の結果/エラーコード「Ret_Val(
パラメータ」の表を参照)

Count

1922

Output

UDInt

I、Q、M、D、L検出された文字列の数。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ「Mode」
ビッ
ト

ビット値「0」0

CSV 形式(カンマ区 FSR 形式(固定サイ 基本モード:CSV または FSR の選択
切り値)

1

ビット値「1」

説明

ズレコード)• CSV を使用する •場合文字が超過
するとエラーになります。
•• FSR を使用する
場合追加のフィル文字が文字列
内に残ります。

CSV を使用する ビット 1 を使用して、追加文字をどのように処理するかを指場合追加文字が 定します。
無視されます。
• CSV を使用する場合
FSR を使用する– このビットがセットされた場合、宛先文字列に収まら場合追加のフィない追加文字は無視されます。
ル文字が削除さ
例:命令が長さが 16 文字の文字列(STRING[16]データ
れます。
タイプ)に書き込みます。ソースには、最初の 16 文字の後に区切り文字は含まれていません。ビット 1 がセットされた場合、追加文字は無視され、命令は配列の読み出しを続行します。
– このビットがセットされなかった場合、そのような場
合に命令は停止し、Ret_Val パラメータでエラーメッ
セージを生成します。
• FSR を使用する場合– ビットがセットされた場合、情報を含む文字の右側にあるフィル文字は、ソース配列が宛先文字列に転送されたときに宛先文字列に書き込まれません(例を参照)。
– ビットがセットされなかった場合、情報を含む文字の右側にあるフィル文字は、ソース配列が宛先文字列に転送されたときに宛先文字列には書き込まれます(例を
参照)。

2

-

3

EndSeparator はカ EndSeparator はカ Position パラメータに対して EndSeparator がカウントされ4-

今後のバージョンで使用するために予約済み

ウントされません。 ウントされます。

るかどうかを指定。

未書き込み文字列 未書き込み文字列

DestStruct パラメータでの未使用の文字列(STRING)を長さ(STRING)の長さを (STRING)を長さ「0」に設定するかどうかの指定。

そのままにします。「0」に設定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1923

拡張命令
4.3 String + Char

パラメータ RET_VAL
エラーコード 説明*(W#16#...)
0000

エラーは発生していません。

0001

追加文字が無視されます。

0002

CSV の場合のみ:• 読み取られる配列(SrcArray で指定)内に区切り記号 EndSeparator が見つかりませんでした。変換は、DestStruct が完全に埋まっているなどの他の理由でキャンセルされました。
• RecSeparator および EndSeparator が同一です。

8190

Mode パラメータでの選択はサポートされていません。

8x20

ソース文字列が無効です。

8x53

VARIANT が短すぎるデータ構造体をポイントしています。

8x54

無効なデータタイプ

8882

Position が許容範囲内にありません。

8x84

追加文字を検出しました。

8xB4

パラメータ SrcArray (ソース)と DestStruct (宛先)または区切り記号(パラメータ RecSeparator
および EndSeparator)でデータタイプが異なります。

80B5

読み取られる配列 SrcArray が小さすぎます。

一般エラー情 関連項目: GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* エラーコードについて以下のことに注意してください。
• プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。
• リストされているエラーコードの 2 番目の位置にある「x」は、エラーの原因となったパラメータを表します。
例:16 進のエラーコード 8352 = 3 番目のパラメータ(EndSeparator)でエラーが発生しました。パラメー
タの表を参照してください。
• エラーを特定のパラメータに明確に割り当てられない場合は、「0」が出力されます。
例:CHAR データタイプが区切り文字(RecSeparator パラメータ)に使用されています。WCHAR がDestArray パラメータで配列のデータタイプとして使用されています。この場合、エラーコード 80B4 が出力されます。

1924

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

読み出す配列が CSV 形式の場合の SPLIT 命令の 2 つの例
最初のステップで、ソース配列は、区切り文字(RecSeparator パラメータ、「,」など)によって指定された文字列に分割されます。
2 番目のステップで、分割後の文字列は宛先文字列に保存されます。DestStruct パラメー
タを使用して文字列の長さを指定できます。
分割で作成された文字列が宛先文字列よりも文字数が大きい場合、この後の SPLIT の動作はMode パラメータによって異なります。Mode=2#00 の場合、これはエラーになります。関

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1925

拡張命令
4.3 String + Char
連するエラーコードが返され、他の宛先文字列は埋められません。Mode=2#10 の場合、余った文字は無視され、次の宛先文字列は次の区切り文字の後でフィル文字で埋められます。
• 最初の例:
この例では、上記の 2 つのソース配列があります。
– 1963,Miller,John,Roadname– 1974,Jackson,Peter,VeryLongRoadname
宛先文字列の長さは、最初の宛先文字列が 4 文字、2 番目が 13 文字、3 番目が 10 文
字、4 番目が 14 文字です。
Mode=2#10 の場合は、SPLIT の最初の呼び出しにより以下の宛先文字列が作成されます。
– 1963– Miller– John– Roadname
Mode=2#10 の場合は、SPLIT の 2 回目の呼び出しにより以下の宛先文字列が作成されます。
– 1974– Jackson– Peter– VeryLongRoadna• 2 番目の例:
この例では、宛先配列の論理情報は予期された順序にはなりません。上記の 2 つのソース配列があります。
– 1963,Miller,Roadname,John– 1974,Jackson,VeryLongRoadname,Peter
最初の例と同様に、宛先文字列の長さは、最初の宛先文字列が 4 文字、2 番目が 13 文
字、3 番目が 10 文字、4 番目が 14 文字です。
Mode=2#10 の場合は、SPLIT の最初の呼び出しにより以下の宛先文字列が作成されます。
– 1963– Miller– Roadname– JohnMode=2#10 の場合は、SPLIT の 2 回目の呼び出しにより以下の宛先文字列が作成されます。
– 1974– Jackson

1926

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char– VeryLongRo– Peter

読み出す配列が FSR 形式の場合の SPLIT 命令の 2 つの例
ソース配列は、DestStruct パラメータで指定した宛先文字列の長さに従って分割されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1927

拡張命令
4.3 String + Char
フィル文字(RecSeparator パラメータ、たとえば「,」)については、SPLIT の動作は Mode パ
ラメータによって異なります。Mode=2#01 の場合、フィル文字は宛先文字列に入力され、Mode=2#11 の場合、フィル文字は入力されません。
• 最初の例:
この例では、上記の 2 つのソース配列があります。
– 1963Miller,,,,,,,John,,,,,,Roadname,,,,,,– 1974Jackson,,,,,,Peter,,,,,VeryLongRoadname
宛先文字列の長さは、最初の宛先文字列が 4 文字、2 番目が 13 文字、3 番目が 10 文
字、4 番目が 14 文字です。
Mode=2#01 の場合は、SPLIT の最初の呼び出しにより以下の宛先文字列が作成されます。
– 1963– Miller,,,,,,,– John,,,,,,– Roadname,,,,,,
Mode=2#01 の場合は、SPLIT の 2 回目の呼び出しにより以下の宛先文字列が作成されます。
– 1974– Jackson,,,,,,– Peter,,,,,– VeryLongRoadna• 2 番目の例:
この例では、宛先配列の論理情報は予期された順序にはなりません。上記の 2 つのソース配列があります。
– 1963Miller,,,,,,,Roadname,,,,,,John,,,,,,– 1974Jackson,,,,,,VeryLongRoadnamePeter,,,,,
最初の例と同様に、宛先文字列の長さは、最初の宛先文字列が 4 文字、2 番目が 13 文
字、3 番目が 10 文字、4 番目が 14 文字です。
Mode=2#11 の場合は、SPLIT の最初の呼び出しにより以下の宛先文字列が作成されます。
– 1963– Miller– Roadname– ,,,,John
説明:言ってみれば、SPLIT 命令はソース配列にテンプレートを適用します。このテンプレートの長さは、宛先文字列の長さによって決まります。宛先文字列への転送中に、情報内容を含む文字の右側にあるカンマのみがフィル文字として解釈されます。

1928

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
Mode=2#11 の場合、フィル文字は入力されません。最初の呼び出しでは、「John」の右側にあるカンマはフィル文字です。対応する宛先文字列の末尾に達する前に「John」の文字があるため、「John」の左側にあるカンマはフィル文字ではありません。したがって、「John」の左側にあるカンマは宛先文字列に表示されます。
Mode=2#11 の場合は、SPLIT の 2 回目の呼び出しにより以下の宛先文字列が作成されます。
– 1974– Jackson– VeryLongRo– adnamePeter

プログラム例
例については、以下を参照してください。SPLIT のプログラム例 (ページ 1929)。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
JOIN:複数の文字列の結合 (ページ 1904)

4.3.10.2

SPLIT のプログラム例
以下の例では、Array of CHAR の文字列を Array of STRING の 3 つの文字列に変換します。
注記
より複雑な例
ソース領域を複数回呼び出す場合は、命令のサンプルライブラリ (ページ 25)のこの例「SPLIT(
multiple calls」)の変更されたバージョンを使用してください。
この例の変更されたバージョンの FC「SLI_FC_calculateLength_SPLIT」は、開始位置「positionInSource」()を考慮しており、SPLIT の実行での新しいブレークポイント「#finalPosition」も計算します。
(
この例の変更されたバージョンでは、複数の文字列(単一の Array of CHAR から)を複数の個別の文字列(Array of STRING)に変換することも可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1929

拡張命令
4.3 String + Char

データストレージ
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

注記
ソースデータは、変換に対して選択された形式と一致している必要があります。
CSV 形式用のソース:

1930

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharFSR 形式用のソース:

FC「SLI_FC_encodeMode_SPLIT」:パラメータの相互接続「SPLIT」命令の MODE パラメータの値を結合するには、FC「SLI_FC_encodeMode_SPLIT」
を作成します。FC 内で以下のローカルタグを作成します。

ネットワーク 1:フォーマットを選択するには、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1931

拡張命令
4.3 String + Char

ネットワーク 2:追加文字の処理方法を定義するには、以下の手順を実行します。

ネットワーク 3:以下の通り、区切り記号を文字列の終端でカウントするかどうかを指定します。

ネットワーク 4:宛先領域の使用していないセルをクリアするには、以下の相互接続を作成
します。

1932

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

FC「SLI_FC_calculateLength_SPLIT」:パラメータの相互接続
ソース領域内の文字列の文字長を取得するには、FC「SLI_FC_calculateLength_SPLIT」を作成します。FC 内で以下のローカルタグを作成します。

ネットワーク 1:以下のように文字列を STRING データタイプに変換し、スペースの文字列をクリーンにします。
パート 1:

パート 2:

ネットワーク 2:文字長を計算するには、以下の相互接続を作成します。
パート 1:TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1933

拡張命令
4.3 String + Charパート 2:FB「SLI_FB_SPLIT」:パラメータの相互接続
命令「SPLIT」を FB で呼び出します。FB 内で以下のローカルタグを作成します。

ネットワーク 1:以下のように、「SLI_FC_encodeMode_SPLIT」と「SLI_FC_calculateLength_SPLIT」を相互接続します。

1934

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

ネットワーク 2:命令「SPLIT」を以下のように相互接続します。

ネットワーク 3:以下のように、「execute」タグをリセットします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1935

拡張命令
4.3 String + CharFB「SLI_FB_SPLIT」:ネットワーク 1 の結果
FC「SLI_FC_encodeMode_SPLIT」は、変換用の「SPLIT」命令で使用されるモードを入力パ
ラメータから取得します。これに応じて、変換が CSV 形式内で実行されます(「format」がFALSE)。追加文字は無視され、(「ignoreAdditionalChar」が TRUE)、文字列終端の区切り記
号はカウントに含められ(「countEndSeparator」が TRUE)、宛先領域内の使用されないス
ペースはそのまま残される(「unusedStringsToZero」が FALSE)必要があります。使用されるモードは、出力パラメータ MODE 「#statMode」()に出力されます。
FC「SLI_FC_calculateLength_SPLIT」は、入力パラメータ SOURCEARRAY 「sourceArray」()
および MODE 「#statMode」()に基づいて文字列(「#splitLength」) を計算します。これにより、文字列全体の長さが 18 文字になります。

1936

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharFB「SLI_FB_SPLIT」:ネットワーク 2 の結果
ノーマルオープン(「execute」)がシグナル状態「TRUE」を提供すると、「SPLIT」命令が実行されます。
入力パラメータ RECSEPARATOR 「recSeparator」()および ENDSEPARATOR 「endSeparator」()
を使用して、ソース文字列の区切り記号と変換終端の区切り記号が「SPLIT」命令に渡されます。この例では、カンマとセミコロンが区切り記号として使用されています。
Array of CHAR の文字列は、入力パラメータ SRCARRAY「sourceArrayCSV」()によって CSV 形
式に送られます。この文字列は複数の文字列に変換され、Array of STRING が DSTSTRUCT
パラメータ(「destArray」)にセットされます。
Array of CHAR の文字列の読み取りは、POSITION パラメータ(「positionInSource」)の値「0」に従って、最初のセルから開始されます。
注記
開始位置
他の開始位置(「positionInSource」)を使用する場合は、FC「SLI_FC_calculateLength_SPLIT」内で「CHARS_TO_Strg」命令の PCHARS パラメータを調整する必要があります。
代わりに、「SPLIT multiple calls」の例を使用することもできます。
文字列変換の終端で、位置(「positionInSource」の値は 18)が出力され、Array of CHAR 内の次のセルをポイントします。出力パラメータ COUNT 「countOutputStrings」()は、見つかった文字列数(「3」)を示します。
出力パラメータ RET_VAL 「returnValue」()は、この例の処理がエラーなしで行われていることを示します。「execute」タグによる「SPLIT」命令の実行が制限されているため、バッファオーバーフローは発生しません。
CSV 形式内の結果は、以下のように表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1937

拡張命令
4.3 String + CharFB「SLI_FB_SPLIT」:ネットワーク 3 の結果「positionInSource」タグの値が「#splitLength」タグの値と等しい場合、「execute」タグの値はリセットされます。これにより、所定の位置まで Array of CHAR が読み取られ、文字列が変換されるとすぐに「SPLIT」命令の実行が終了します。

その他の変換CSV 形式/タイプ 2 でのソースデータの変換:

区切り記号のカウントなしでの CSV 形式での結果は、以下のように表示されます。

1938

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharFSR 形式でのソースデータの変換:

ソース領域「sourceArrayFSR」の文字列を変換するには、FSR 形式を使用します。
要件:• 入力パラメータ SRCARRAY (SPLIT を参照)および SOURCEARRAY (FC「SLI_FC_calculateLength_SPLIT」を参照)が、「sourceArrayFSR」タグに相互接続されていること。
• タグ「format」および「countEndSeparator」の値が「TRUE」であること。
目的:追加文字が挿入されてはなりませんが(「ignoreAdditionalChar」の値が「TRUE」)、この例では追加文字が挿入されています。
「SPLIT」命令は、宛先配列(「destArray」)のデータタイプ(STRING[12])に基づいて、12 文字の長さとして出力する各文字列を計算します。ソース領域(「sourceArrayFSR」)に含まれる、
FILLER 文字を含む文字列の長さが 10 文字しかないため、2 つの文字列がすべて出力されます(12 文字がすべて埋められる)。これにより、終端に FILLER 文字がある 3 番目の文字列の FILLER 文字しか削除されません。
宛先領域の配列(「destArray」)の使用されていないセルは、そのままの状態となります「unusedStringsToZero」が(FALSE)。「SPLIT」命令の出力パラメータ
RET_VAL(「returnValue」)は、追加文字が無視されることを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1939

拡張命令
4.3 String + Char

プログラムコード
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

4.3.11

ATH: ASCII 文字列を 16 進数に変換

説明「ATH」命令を使用し、IN 入力パラメータで指定された ASCII 文字列を 16 進数に変換します。変換の結果は、OUT 出力パラメータに出力されます。
• IN パラメータのポインタを使用して、次のデータタイプを参照することができます(ASCII)。STRING, WSTRING, CHAR, BYTE, Array of CHAR, Array of BYTE, WCHAR, Array of
WCHAR, Array of WORD
• OUT パラメータのポインタを使用して、次のデータタイプを参照することができます(16 進数)。Array of CHAR, Array of BYTE, Array of WORD, STRING, BYTE, CHAR, WORD,
INT, DWORD, DINT, SINT, USINT, UINT, UDINT。 S7-1500 の場合のみ: Array of WCHAR,WSTRING, WCHAR, ULINT, LINT, LWORD

1940

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharN パラメータを使用して、変換する ASCII 文字の数を指定します。最大 32767 の有効なASCII 文字を変換できます。数字「0」～「9」、大文字「A」～「F」、および小文字「a」～「f」のみを変換できます。その他すべての文字は、ゼロに変換されます。
ASCII 文字には 8 ビットが必要で、16 進数には 4 ビットのみが必要であるため、出力ワー
ド長は入力ワード長の半分になります。ASCII 文字は変換され、読み込まれた順と同じ順で出力に配置されます。奇数の ASCII 文字がある場合、その 16 進数は最後に変換された 16進数の右側がニブルのゼロで充当されます。

パラメータ
以下の表に、「ATH」命令のパラメータを示します。
パラメータ 宣言

データタ
イプ

メモリ領域

説明

IN

Input

VARIANT

D、L

ASCII 文字列へのポインタ

N

Input

INT

I、Q、M、D、変換する ASCII 文字数

L、または定数
RET_VAL

Return

WORD

I、Q、M、D、L

命令のステータス

OUT

Output

VARIANT

I、Q、M、D、L

16 進数

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー
ド

説明

(W#16#....
)*
0000

エラーは発生していません。

0007

無効な文字.次の ASCII 文字のみ使用できます。数字「0」～「9」、大文字「A」～「F」、小文字「a」～「f」。

8101

IN パラメータの無効なポインタ。たとえば、存在しないデータブロックが参照されているなどの理由。

8182

N パラメータのデータに対して入力バッファが小さすぎます。

8120

IN パラメータの書式が無効です。

8151

IN パラメータのサポートされていないデータタイプ。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1941

拡張命令
4.3 String + Char
エラーコー
ド

説明

(W#16#....
)*
8401

OUT パラメータの無効なポインタ。たとえば、存在しないデータブロック
が参照されているなどの理由。

8482

N パラメータのデータに対して出力バッファが小さすぎます。

8420

OUT パラメータの書式が無効です。

8451

OUT パラメータのサポートされていないデータタイプ。

* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

ASCII 文字および 16 進数の番号
次の表に、ASCII 文字と対応する 16 進数の値を示します。

1942

ASCII 文字ASCII コード化された 16 進数の値

16 進数の数字

"0"

30

0

"1"

31

1

"2"

32

2

"3"

33

3

"4"

34

4

"5"

35

5

"6"

36

6

"7"

37

7

"8"

38

8

"9"

39

9

"A"

41

A

"B"

42

B

"C"

43

C

"D"

44

D

"E"

45

E

"F"

46

F

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char例
次の表に、ASCII 文字列から 16 進数の番号への変換の例を示します。
IN のデータタイプ

IN

N

OUT

ENO ステータス

STRING, WSTRING'0a23'

4• WORD#16#0A23

1• UINT#10#2595
STRING, WSTRING‘123aFx1a23’

10• LWORD#16#123AF01A_23000 0
000• ULINT#10#1 313 626 236 378
939 392

STRING, WSTRING

‘a23’

3

WORD#16#A230

1

STRING, WSTRING‘0a23’

4• WORD#[16#0A23, 16#0000]

1• BYTE#[16#0A, 16#23]
STRING, WSTRING‘aFbE’

1• CHAR#‘A’

1• WCHAR#‘A’
STRING, WSTRING‘0a23’

4• CHAR#[‘0’, ‘A’, ‘2’, ‘3’]

1

• WCHAR#[‘0’, ‘A’, ‘2’, ‘3’]
STRING, WSTRING‘123aFC1a23’

10• STRING#‘123AFC1A23’

1• WSTRING#‘123AFC1A23’
ArrayOfCHAR,[‘a’, ‘B’, ‘E’, ‘3’]

4

WORD#16#ABE3

1[16#39, 16#32,

3

WORD#16#9250

1

3

WORD#16#0210

0

4

WORD#16#1234

1

4

WORD#16#0004

04[16#1234, 16#0000, 16#0000,

1

ArrayOfWCHAR
ArrayOfBYTE

16#35]
ArrayOfWORD[16#1234, 16#0032,
16#0031, 16#0000]

ArrayOfWORD[16#0031, 16#0032,
16#0033, 16#0034]

ArrayOfWORD[16#AB31, 16#32AF,
16#4333, 16#0034]

ArrayOfWORD[16#0031, 16#0032,
16#0033, 16#0034]

ArrayOfWORD[16#0034, 16#0035,

16#0000]
8

DWORD#16#4567_ABCD

1

16#0036, 16#0037,
16#0041, 16#0042,
16#0043, 16#0044]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1943

拡張命令
4.3 String + Char

4.3.12

HTA: 16 進数を ASCII 文字列に変換

説明「HTA」命令を使用し、IN 入力パラメータで指定された 16 進数を ASCII 文字列に変換します。変換の結果は、OUT パラメータで指定されたアドレスに格納されます。
• IN パラメータのポインタを使用して、次のデータタイプを参照することができます(16進数)。CHAR 配列、BYTE 配列、STRING、BYTE、CHAR、WORD、WORD 配列、INT、
DWORD、DWORD 配列、DINT、SINT、USINT、UINT、UDINT。S7-1500 の場合のみ:WCHAR 配列、WSTRING、WCHAR、ULINT、LINT、LWORD、LWORD 配列• OUT パラメータのポインタを使用して、次のデータタイプを参照することができます(ASCII)。STRING、WSTRING、CHAR 配列、WCHAR 配列、BYTE 配列、WORD 配列
N パラメータを使用して、変換する 16 進数のバイト数を指定します。ASCII 文字には 8 ビ
ットが必要で、16 進数には 4 ビットのみが必要であるため、出力値は入力値の 2 倍になります。16 進数の 1 ニブルは 1 文字に変換され、元の順番が維持されます。
最大 32767 文字を ASCII 文字列に書き込むことができます。変換の結果は、「0」～「9」までの数字と「A」～「F」の大文字で表示されます。
OUT パラメータの変換の結果が全部表示できない場合、結果は部分的にパラメータに書き込まれます。

パラメータ
以下の表に、「HTA」命令のパラメータを示します。
パラメータ 宣言

データタイ メモリ領域
プ

説明

IN

Input

VARIANT

I、Q、M、D、L

16 進数の開始アドレス

N

Input

UINT

I、Q、M、D、変換する 16 進数のバイト数

L、または定数
RET_VAL

Return

WORD

I、Q、M、D、L

エラーメッセージ

OUT

Output

VARIANT

D、L

結果が格納されるアドレス。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

1944

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0000

エラーは発生していません。

8101

IN パラメータの無効なポインタ。たとえば、存在しないデータブロックが参照されているなどの理由。

8182

N パラメータのデータに対して入力バッファが小さすぎます。

8120

IN パラメータの書式が無効です。

8151

IN パラメータのサポートされていないデータタイプ。

8401

OUT パラメータの無効なポインタ。たとえば、存在しないデータブロックが参照されているなどの理由。

8482

N パラメータのデータに対して出力バッファが小さすぎます。

8420

OUT パラメータの書式が無効です。

8451

OUT パラメータのサポートされていないデータタイプ。

* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

ASCII 文字および 16 進数の番号
次の表に、ASCII 文字と対応する 16 進数の値を示します。
16 進数の数字

ASCII コード化された 16 進数の値

ASCII 文字

0

30

"0"

1

31

"1"

2

32

"2"

3

33

"3"

4

34

"4"

5

35

"5"

6

36

"6"

7

37

"7"

8

38

"8"

9

39

"9"

A

41

"A"

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1945

拡張命令
4.3 String + Char16 進数の数字

ASCII コード化された 16 進数の値

ASCII 文字

B

42

"B"

C

43

"C"

D

44

"D"

E

45

"E"

F

46

"F"

例
次の表は、16 進数の ASCII 文字列への変換の例を示します。
IN

N

OUT

OUT のデータタイプ

ENO ステータス• WORD#16#0123

2'0123'STRING, WSTRING

1'123AF012'

STRING, WSTRING

1

CHAR#[‘A’, ‘B’, ‘E’, ‘3’]

ArrayOfCHAR,

1• UINT#10#291• DWORD#16#123AF012 4• INT#10#305852434
WORD#16#ABE3

2

ArrayOfWCHAR
WORD#16#9250

2[16#39, 16#32, 16#35,

ArrayOfBYTE

1

ArrayOfWORD

1ArrayOfWORD

1ArrayOfWORD

1

‘A8’

STRING, WSTRING

1‘3041’STRING, WSTRING

1

16#30]
ArrayOfWORD#[16#123A,2

16#0000, 16#ABCD,[16#0031, 16#0032,
16#0033, 16#0041]

16#0000]
WORD#16#1234

2[16#0031, 16#0032,
16#0033, 16#0034]

DWORD#16#4567ABCD

4[16#0034, 16#0035,
16#0036, 16#0037,
16#0041, 16#0042,
16#0043, 16#0044]

ArrayOfDWORD#[16#A800 1_0037, 16#0000_0041]• CHAR#[‘0’, ‘A’, ‘2’, ‘3’]

2

• WCHAR#[‘0’, ‘A’, ‘2’, ‘3’]

1946

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
IN

N

OUT

OUT のデータタイプ

ENO ステータス• STRING#‘123AFC1A23’

5‘3132334146’

STRING, WSTRING

1

1

‘41’

STRING, WSTRING

1• WSTRING#‘123AFC1A2
3’• Char#‘A‘• Byte#16#41

4.3.13

LEN: 文字列長の定義

説明(W)STRING データタイプのタグは、2 つの長さを含みます。最大長と現在の長さ(現在有効な文字の数)があります。
• それぞれのタグの文字列の最大長は、STRING キーワードに角括弧内で指定されます。
文字列で占められたバイトの数は 2 で、最大長を超えます。
• それぞれのタグの文字列の最大長は、WSTRING キーワードに角括弧内で指定されます。
文字列で占められたワードの数は 2 で、最大長を超えます。
• 現在の長さは、実際に使用されている文字の桁数を示します。現在の長さは、最大長以下であることが必要です。
「LEN」命令を使用して、IN 入力パラメータで指定された文字列の現在の長さを照会します。
これは、出力パラメータ OUT に数値として出力されます。空の文字列('')の長さはゼロです。
命令の処理中にエラーが発生した場合、OUT パラメータで値「0」が出力されます。
注記
最大長の読み出し「MAX_LEN (ページ 1902)」命令を使用して、文字列の最大長を読み出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1947

拡張命令
4.3 String + Char

パラメータ
以下の表に、「LEN」命令のパラメータを示します。
パラメータ 宣言

データタイ メモリ領域
プ

説明

IN

STRING,

D、L、または

文字列

WSTRING

定数

INT

I、Q、M、D、L 有効な文字の数

OUT

Input
Return

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、STRING データタイプの文字列長を定義します。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

文字列(「inputSTRING」)の実際に占有された文字数が判定され、出力パラメータ「OUT」「stringLengthOUT」()に数値として返されます。

1948

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.14

CONCAT: 文字列の結合

説明「CONCAT」命令を使用し、IN1 入力パラメータの文字列と IN2 入力パラメータの文字列を結合します。結果は、(W)STRING フォーマットで OUT 出力パラメータに出力されます。結果の文字列が、OUT 出力パラメータで指定されたタグよりも長い場合、結果の文字列は利用できる長さに制限されます。
命令の処理中にエラーが発生し、OUT 出力パラメータに書き込める場合、空の文字列が出力されます。

パラメータ
以下の表に、「CONCAT」命令のパラメータを示します。
パラメータ 宣言

データタ
イプ

メモリ領域

説明

IN1

STRING,

D、L、または定

文字列

Input

WSTRING 数
IN2

Input

STRING,

D、L、または定

文字列

WSTRING 数
OUT

ReturnSTRING,

D、L

結果の文字列WSTRING
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、STRING データタイプの 2 つの文字列を接続します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1949

拡張命令
4.3 String + Char

この命令のパラメータを以下のように相互接続します。

2 番目の文字列(「inputstring2」)の文字は、最初の文字列(「inputstring1」)に追加され、結果が出力パラメータ OUT(「string1CONCstring2」)に出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

1950

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

4.3.15

左: 文字列の左文字の読み出し

説明「LEFT」命令を使用し、IN 入力パラメータの最初の文字から始まる部分的な文字列を抽出します。抽出する文字数は、L パラメータで指定します。抽出された文字は、(W)STRING
フォーマットで OUT 出力パラメータで出力されます。
抽出する文字数が文字列の現在の長さを超える場合、OUT 出力パラメータが入力文字列を結果として返します。L パラメータに値「0」が含まれる、または入力値が空の文字列の場
合、空の文字列が返されます。L パラメータの値が負の場合、空の文字列が出力されます。
命令の処理中にエラーが発生し、OUT 出力パラメータに書き込める場合、空の文字列が出力されます。

パラメータ
以下の表に、「LEFT」命令のパラメータを示します。
パラメータ 宣言

データタイ メモリ領域
プ

説明

IN

STRING,

D、L、または定

文字列

WSTRING数BYTE, INT,

I、Q、M、D、

L

Input
Input

抽出される文字の数

SINT, USINT L、または定数
OUT

ReturnSTRING,

D、L抽出された部分文字列

WSTRING
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、文字列の最初の文字から STRING データタイプの部分文字列を抽出します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1951

拡張命令
4.3 String + Char
この命令のパラメータを以下のように相互接続します。

パラメータ L(「extractNumber」)の値「4」に従って、文字列(「inputSTRING」)の左側の最初の文字から始まる 4 文字の部分文字列を抽出します。抽出された部分文字列は、出力パラ
メータ OUT(「outputExtractSTRING」)に出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.16

右: 文字列の右文字の読み出し

説明
この命令を使用して、入力パラメータ IN の文字列の最後の L 文字を抽出します。抽出する
文字数は、L パラメータで指定します。抽出された文字は、(W)STRING フォーマットでOUT 出力パラメータで出力されます。
抽出する文字数が文字列の現在の長さを超える場合、OUT 出力パラメータが入力文字列を結果として返します。L パラメータに値「0」が含まれる、または入力値が空の文字列の場
合、空の文字列が返されます。L パラメータの値が負の場合、空の文字列が出力されます。
命令の処理中にエラーが発生し、OUT 出力パラメータに書き込める場合、空の文字列が出力されます。

1952

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

パラメータ
以下の表に、「RIGHT」命令のパラメータを示します。
パラメータ 宣言

データタイ メモリ領域
プ

説明

IN

STRING,

D、L、または定

文字列

WSTRING数BYTE, INT,

I、Q、M、D、L、 抽出される文字の数

L

Input
Input

SINT, USINT または定数
OUT

ReturnSTRING,

D、L抽出された部分文字列

WSTRING
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、文字列の最後の文字から STRING データタイプの部分文字列を抽出します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

パラメータ L(「extractNumber」)の値「4」に従って、文字列(「inputSTRING」)の右側の最初の文字から始まる 4 文字の部分文字列を抽出します。抽出された部分文字列は、出力パラ
メータ OUT(「outputExtractSTRING」)に出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1953

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.17

MID: 文字列の中央の文字の読み出し

説明
この命令を使用して、IN 入力パラメータの文字列の一部を抽出します。P パラメータで、抽出する最初の文字の位置を指定します。L パラメータで、抽出する文字列の長さを定義します。抽出された部分的な文字列は、OUT 出力パラメータに出力されます。
命令の実行時には、次のルールに注意してください。
• 抽出する文字数が IN 入力パラメータの文字列の現在の長さを超えた場合、部分的な文字列が出力されます。部分的な文字列は P 文字列から開始し、文字列の最後まで継続します。
• P パラメータで指定された文字の位置が IN 入力パラメータの現在の文字列の範囲外になる場合、OUT 出力パラメータで空の文字列が出力されます。
• P または L パラメータの値がゼロと等しいか、または負の場合、OUT 出力パラメータで空の文字列が出力されます。
命令の処理中にエラーが発生し、OUT 出力パラメータに書き込める場合、空の文字列が出力されます。

1954

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

パラメータ
以下の表に、「MID」命令のパラメータを示します。
パラメータ 宣言

データタ
イプ

メモリ領域

IN

STRING,

D、L、または定数 文字列

Input

説明

WSTRING
L

Input

BYTE,

I、Q、M、D、L、 抽出される文字列の長さ

INT, SINT, または定数
USINT
P

Input

BYTE,

I、Q、M、D、L、 抽出される最初の文字の位置

INT, SINT, または定数(最初の文字 = 1)

USINT
OUT

ReturnSTRING,

D、L抽出された部分文字列

WSTRING
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、文字列の中央から STRING データタイプの部分文字列を抽出します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1955

拡張命令
4.3 String + Char

パラメータ L(「extractNumber」)の値「4」に従って、文字列(「inputSTRING」)から 4 文字の部分文字列を抽出します。抽出は文字列(「inputSTRING」)の 3 番目の文字(「startingPoint」
は値「3」を持つ) から始まります。抽出された部分文字列は、出力パラメータ
OUT(「outputExtractSTRING」)に出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.18

削除: 文字列の文字の削除

説明
この命令を使用して、IN 入力パラメータの文字列の一部を削除します。P パラメータで、削除する最初の文字の位置を指定します。削除する文字数は、L パラメータで指定します。
残りの部分的な文字列は、(W)STRING フォーマットで OUT 出力パラメータに出力されま
す。

1956

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
命令の実行時には、次のルールに注意してください。
• P パラメータの値がゼロ以下の場合、空の文字列が OUT 出力パラメータで出力されます。
• P パラメータの値が、IN 入力の文字列の現在の長さを超える場合、OUT 出力パラメー
タで入力文字列が返されます。
• L パラメータの値がゼロと等しい場合、OUT 出力パラメータで入力文字列が返されます。
• L パラメータで削除する文字数が IN 入力パラメータの文字列の長さより大きい場合、P
パラメータで指定された位置から始まる文字は削除されます。この結果の文字列が出力されます。
• L パラメータの値が負の場合、空の文字列が出力されます。
命令の処理中にエラーが発生し、OUT 出力パラメータに書き込める場合、空の文字列が出力されます。

パラメータ
以下の表に、「DELETE」命令のパラメータを示します。
パラメー
タ

宣言

データタイ メモリ領域
プ

説明

IN

Input

STRING,

D、L、または定

文字列

WSTRING数BYTE, INT,

I、Q、M、D、

L

Input

削除される文字数

SINT, USINT L、または定数
P

Input

BYTE, INT,

I、Q、M、D、削除される最初の文字の位置

SINT, USINT L、または定数
OUT

ReturnSTRING,

D、L

結果の文字列WSTRING
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、STRING データタイプの文字列から文字を削除します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1957

拡張命令
4.3 String + Char

この命令のパラメータを以下のように相互接続します。

入力パラメータ L(「deleteNumber」)の値「4」に従って、文字列(「inputSTRING」)の 3 番目の文字(「startingPoint」は値「3」を持つ)から 4 文字を削除します。残りの文字列は、出力パラメータ OUT(「outputResidualSTRING」)に出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

1958

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

4.3.19INSERT:文字列への文字の挿入

説明
この命令を使用して、IN2 入力パラメータの文字列を IN1 入力パラメータの文字列に挿入します。P パラメータで、文字が挿入される文字列の位置を指定します。結果は、(W)STRING フォーマットで OUT 出力パラメータに出力されます。
命令の実行時には、次のルールに注意してください。
• P パラメータの値が IN1 入力パラメータの文字列の現在の長さを超える場合、IN2 入力
パラメータの文字列は IN1 入力パラメータの文字列に追加されます。
• P パラメータ内の値がゼロの場合、IN1 入力パラメータの文字列が、IN2 入力パラメー
タの文字列に追加されます。
• P パラメータの値が負の場合、OUT 出力パラメータで空の文字列が出力されます。
• 結果の文字列が、OUT 出力パラメータで指定されたタグよりも長い場合、結果の文字列は利用できる長さに制限されます。

パラメータ
以下の表に、「INSERT」命令のパラメータを示します。
パラメータ 宣言

データタ
イプ

メモリ領域

説明

IN1

STRING,

D、L、または定

文字列

Input

WSTRING 数
IN2

Input

STRING,

D、L、または定

挿入する文字列

WSTRING 数
P

Input

BYTE,

I、Q、M、D、L、 挿入位置

INT, SINT, または定数
USINT
OUT

ReturnSTRING,

D、L

結果の文字列WSTRING
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1959

拡張命令
4.3 String + Char例
次の例では、文字列を別の文字列に挿入します。使用されるデータタイプは STRING です。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

2 番目の文字列(「input2_STRING」)の文字が、最初の文字列(「input1_STRING」)に挿入されます。パラメータ P(「startingPoint」)の値「3」に従って、最初の文字列(「input1_STRING」)の 3 番目の文字の後に文字が挿入されます。結果は、出力パラメータ
OUT(「outputStrg1AndStrg2」)に出力されます。

1960

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.20

REPLACE: 文字列の文字置換

説明
この命令を使用して、IN1 入力の文字列の一部を IN2 入力パラメータの文字列に置換します。P パラメータで、置換する最初の文字の位置を指定します。置換する文字数は、L パ
ラメータで指定します。結果は、(W)STRING フォーマットで OUT 出力パラメータに出力されます。
命令の実行時には、次のルールに注意してください。
• P パラメータの値がゼロ以下の場合、空の文字列が OUT 出力パラメータで出力されます。
• L パラメータの値がゼロ未満の場合、OUT 出力パラメータで空の文字列が出力されます。
• P が 1 と等しい場合、IN1 入力の文字列が最初の文字から（最初の文字を含む）置換されます。
• P パラメータの値が IN1 入力パラメータの文字列の現在の長さを超える場合、IN2 入力
パラメータの文字列は IN1 入力パラメータの文字列に追加されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1961

拡張命令
4.3 String + Char
• 結果の文字列が、OUT 出力パラメータで指定されたタグよりも長い場合、結果の文字列は利用できる長さに制限されます。
• パラメータ L の値がゼロの場合、文字は置換されずに挿入されます。命令 INSERT を使用すると、類似の条件が適用されます。関連項目:INSERT:文字列への文字の挿入 (ページ 1959)パラメータ
以下の表に、「REPLACE」命令のパラメータを示します。
パラメータ 宣言

データタイ メモリ領域
プ

IN1

STRING,

D、L、または定 置換される文字のある文字列

WSTRING数STRING,

D、L、または定 挿入される文字のある文字列

WSTRING数BYTE, INT,

I、Q、M、D、

IN2
L

Input
Input
Input

説明

置換される文字数

SINT, USINT L、または定数
P

Input

BYTE, INT,

I、Q、M、D、置換される最初の文字の位置

SINT, USINT L、または定数
OUT

ReturnSTRING,

D、L

結果の文字列WSTRING
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、文字列の一部を別の文字列で置換します。使用されるデータタイプは STRINGです。
グローバルデータブロックにデータを保存するために、5 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

1962

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

2 番目の文字列(「input2_STRING」)が最初の文字列(「input1_STRING」)の 3 番目の文字「startingPoint」は値「3」を持つ)の後に追加されます。パラメータ(L(「replaceNumber」)の値「2」に従って、最初の文字列(「input1_STRING」)の 3 番目と 4 番目の文字がこのプロセスで置換されます。結果は、出力パラメータ OUT(「outputNewSTRING」)に出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.21

FIND: 文字列から文字を検索

説明
この命令を使用して、IN1 入力パラメータの文字列で、特定の文字列を検索します。
• IN2 入力パラメータで、検索対象の値を指定します。検索は左から右の順に行われます。
• 最初に見つかった一致の位置が OUT 出力パラメータで出力されます。検索で一致が返されない場合、OUT 出力パラメータで値「0」が出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1963

拡張命令
4.3 String + CharIN2 パラメータで無効な文字が指定された場合や、処理中にエラーが発生した場合は、OUT
パラメータで値「0」が出力されます。

パラメータ
以下の表に、「FIND」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

IN1

Input

STRING,

D、L、または定数検索される文字列

D、L、または定数検索する文字列

I、Q、M、D、L

文字位置

WSTRING
IN2

Input

STRING,WSTRING

OUT

ReturnINT

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、文字列を別の文字列内で検索します。使用されるデータタイプは STRING です。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

1964

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char
最初の文字列 「inputSTRING」()は、2 番目の文字列(「STRINGsearchedFor」)の値「4a」を検索します。検索する文字列が始まる文字の位置(「4」)は、出力パラメータ
OUT(「returnPosition」)に出力されます。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.22

ランタイム情報

4.3.22.1

GetSymbolName: 入力パラメータのタグの読み出し

説明「GetSymbolName」命令を使用して、ブロックの入力パラメータによってパラメータで相互接続されたタグの名前を読み出します。
注記
コードメモリ要件の増加
GetSymbolName を使用すると、コードメモリ要件が増加します。この命令を呼び出す頻度が高くなるほど、また、実際のシンボルが長くなるほど、メモリ要件が大きくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1965

拡張命令
4.3 String + Char
ブロックがプロジェクトで複数回使用される場合で、かつ毎回異なるタグによって呼び出される場合は、「GetSymbolName」命令を使用して呼び出しタグの名前を評価できます。
この場合、タグのプロセス値は無関係です。
• VARIABLE パラメータでブロックインターフェースの入力パラメータを指定します。このパラメータにはインターフェースパラメータのみを使用し、PLC タグやデータブロッ
クタグは使用しないでください。
• 読み出されたタグ名の長さを制限するには、SIZE パラメータを使用します。名前が切り捨てられた場合、このことは、名前の最後に表示される文字「...」(Unicode 文字
16#2026)によって示されます。この文字の長さは 1 であることに注意してください。
SIZE パラメータの意味を説明するための例。以下のタグ名がブロックインターフェースによって読み出されます:"MyPLCTag" (先頭と末尾の二重引用符は名前に属していま
す。)
SIZE

GetSymbolName が返
す内容

説明

1

'...'

• WSTRING の最初の文字:'• 名前が切り捨てられたことを示す識別子: ...
• WSTRING の最後の文字:'

2'"...'• WSTRING の最初の文字:'• 名前の最初の文字と、名前が切り捨てられたことを示す識別子:"...
• WSTRING の最後の文字:'

3'"M...'• WSTRING の最初の文字:'• 名前の最初の 2 文字と、名前が切り捨てられたことを示す識別子:"..."M...
• WSTRING の最後の文字:'

6'"MyPL...'• WSTRING の最初の文字:'• 名前の最初の 5 文字と、名前が切り捨てられたことを示す識別子:"MyPL...
• WSTRING の最後の文字:'

0'"MyPLCTag"'• WSTRING の最初の文字:'• 名前のすべての文字:"MyPLCTag"• WSTRING の最後の文字:'• 読み出された名前は、OUT パラメータで出力されます。

1966

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

注記
SCL でのタグ名の切り捨て
タグ名が OUT に収まらない場合、SCL では、SIZE = 0 または SIZE が WSTRING の最大長よりも大きい場合に、文字列の末尾に文字「...」なしで、名前が切り捨てられます。

パラメータ
以下の表に、「GetSymbolName」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

VARIABLE

Input

PARAMETER パラメータセ 入力パラメータ供給の名前を読み出す先とな
クション

説明

るローカルインターフェースの選択。

Input、
Output、
InOut
SIZE

Input

DINT

I、Q、M、

OUT パラメータで出力される文字数を制限し

D、L

ます。
• SIZE > 0:GetSymbolName は、名前の最初の SIZE 文字を返します。
• SIZE = 0:GetSymbolName は、名前全体を返します。
• SIZE < 0:GetSymbolName は、名前の最後の SIZE 文字を返します。

OUT

ReturnWSTRING

D、L

入力パラメータ供給のタグ名の出力

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、ブロックの入力パラメータによって相互接続されたタグの名前を読み出します。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1967

拡張命令
4.3 String + Char

FC「SLI_FC_GetSymbolName」を作成します。このブロックに以下のローカルタグを作成します。

この FC で命令「GetSymbolName」を呼び出し、「GetSymbolName」を以下のように相互接続します。

FC「SLI_FC_FCCall_GetSymbolName」を作成します。この FC で、FC
「SLI_FC_GetSymbolName」を呼び出し、これを以下のように相互接続します。

「GetSymbolName」命令が「SLI_FC_GetSymbolName」ブロックで実行されます。
「SLI_FB_GetSymbolName」ブロックの入力パラメータ inputValue は、この命令の入力パ
ラメータ VARIABLE を使用して、その相互接続が検証されます。これを行うことにより、「symbolVALUE」タグが読み出され、出力パラメータ OUT(「MySymNAME」)に文字列として出力されます。入力パラメータ SIZE の値に従って、文字列の長さは 60 文字に制限されま
す。

1968

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

プログラムコード

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.22.2

GetSymbolPath:パス呼び出しの最初の実パラメータの照会

説明
命令「GetSymbolPath」を使用して、呼び出しパスの最初に転送され、複数のブロック呼び出しによって渡されるパラメータの名前を読み出します。
注記
コードメモリ要件の増加
GetSymbolPath を使用すると、コードメモリ要件が増加します。この命令を呼び出す頻度が高くなるほど、また、実際のシンボルが長くなるほど、メモリ要件が大きくなります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1969

拡張命令
4.3 String + Char• この命令のパラメータ VARIABLE で、ランタイム中に相互接続された実パラメータが呼び出されたときに名前の読み出し元となる仮パラメータ名を指定します。
– 入力パラメータを提供するためにデータブロックのタグが使用される場合、DB の名
前と構造化タグへのアクセスパスで構成されるこのタグが出力されます。
– 入力パラメータを提供するために PLC タグが使用される場合、PLC タグの名前が出力されます。
– 入力パラメータを提供するために定数が使用される場合、この定数が出力されます。
• 読み出されたタグ名の長さを制限するには、SIZE パラメータを使用します。名前が切り捨てられた場合、このことは、名前の最後の文字「...」(Unicode 文字 16#2026)によって示されます。この文字の長さは 1 であることに注意してください。
SIZE パラメータの意味を説明するための例。以下のタグ名がブロックインターフェースによって読み出されます:"MyPLCTag" (先頭と末尾の二重引用符は名前に属していま
す。
)
SIZE

GetSymbolPath が返す 説明
内容

1

'...'

• WSTRING の最初の文字:'• 名前が切り捨てられたことを示す識別子: ...
• WSTRING の最後の文字:'

2'"...'• WSTRING の最初の文字:'• 名前の最初の文字と、名前が切り捨てられたことを示す識別子:"...
• WSTRING の最後の文字:'

3'"M...'• WSTRING の最初の文字:'• 名前の最初の 2 文字と、名前が切り捨てられたことを示す識別子:"..."M...
• WSTRING の最後の文字:'

6'"MyPL...'• WSTRING の最初の文字:'• 名前の最初の 5 文字と、名前が切り捨てられたことを示す識別子:"MyPL...
• WSTRING の最後の文字:'

0'"MyPLCTag"'• WSTRING の最初の文字:'• 名前のすべての文字:"MyPLCTag"• WSTRING の最後の文字:'

1970

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

注記
SCL でのタグ名の切り捨て
タグ名が OUT に収まらない場合、SCL では、SIZE = 0 または SIZE が WSTRING の最大長よりも大きい場合に、文字列の末尾に文字「...」なしで、名前が切り捨てられます。

パラメータ
以下の表に、「GetSymbolPath」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

VARIABLE

Input

PARAMETER

SIZE

Input

DINT

説明

パラメータセクシ 呼び出しパスの最初に対応する実パラメ
ョン Input、ータの名前を読み出す仮パラメータの選

Output、InOut

択。

I、Q、M、D、L、 OUT パラメータで出力される文字数を制
または定数

限します。
• SIZE > 0:GetSymbolPath は、名前の最初の SIZE 文字を返します。
• SIZE = 0:GetSymbolPath は、名前全体を返します。
• SIZE < 0:GetSymbolPath は、名前の最後の SIZE 文字を返します。

OUT

OutputWSTRING

D、L

入力パラメータ供給のタグ名の出力。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例は、複数の呼び出しレベルでの GetSymbolPath の使用を示しています。
• オーガニゼーションブロック OB1 から FB_Level_1 ブロックが呼び出されます。次に、
このブロックから FB_Level_2 ブロックが呼び出されます。
• 値が呼び出しパスの最初に REQ2 に渡されるパラメータの名前を読み出すために、
GetSymbolPath が FB_Level_2 ブロックで実行されます。
• REQ1 パラメータで、MyStarterBit タグが実パラメータとして相互接続されます。このビットは、MyDatablock データブロックの MySTRUCT 構造体にあります。
この情報は、GetSymbolPath によって読み出され、OUT パラメータに出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1971

拡張命令
4.3 String + Char2%)%B/HYHOB
(1

ಯ0\'DWD%ORFNಯ0\6758&7
0\6WDUWHU%LW

5(4ಯ7DJBಯ,QSXWBಯ7DJBಯ,QSXWB(12
2XWSXWBಯ7DJBಯ

)%B/HYHOB)%B/HYHOB
(1
5(4

5(4

ಯ7DJBಯ,QSXWBಯ7DJBಯ,QSXWB

(12
ಯ7DJBಯ

2XWSXWB)%B/HYHOB*HW6\PERO3DWK
(1

5(4


(12

YDULDEOH
VL]H

287:675,1*ಫ
ಯ0\'DWD%ORFNಯ
0\6758&7
0\6WDUWHU%LW

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

1972

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

4.3.22.3

GetInstanceName:読み出されたインスタンスの名前の読み出し

説明「GetInstanceName」命令を使用して、ファンクションブロック内のインスタンスデータ
ブロックの名前を読み出すことができます。
• 読み出されたインスタンス名の長さを制限するには、SIZE パラメータを使用します。名前が切り捨てられた場合、このことは、名前の最後の文字「...」(Unicode 文字
16#2026)によって示されます。この文字の長さは 1 であることに注意してください。
SIZE パラメータの意味を説明するための例。以下のインスタンス名がブロックインタ
ーフェースによって読み出されます。"Level1_DB" (先頭と末尾の二重引用符は名前に属しています。)
SIZE

GetSymbolPath が返す 説明
内容

1

'...'

• WSTRING の最初の文字:'• 名前が切り捨てられたことを示す識別子: ...
• WSTRING の最後の文字:'

2'"...'• WSTRING の最初の文字:'• 名前の最初の文字と、名前が切り捨てられたことを示す識別子:"...
• WSTRING の最後の文字:'

3'"L...'• WSTRING の最初の文字:'• 名前の最初の 2 文字と、名前が切り捨てられたことを示す識別子:"..."L...
• WSTRING の最後の文字:'

6'"Leve...'• WSTRING の最初の文字:'• 名前の最初の 5 文字と、名前が切り捨てられたことを示す識別子:"Leve...
• WSTRING の最後の文字:'

0'"Level1_DB"'• WSTRING の最初の文字:'• 名前のすべての文字:"Level1_DB"• WSTRING の最後の文字:'• インスタンスデータブロックの名前は OUT パラメータに書き込まれます。インスタン
スデータブロックの名前が最大長(WSTRING)よりも長い場合、名前は切り捨てられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1973

拡張命令
4.3 String + Char

注記
SCL でのインスタンス DB 名の切り捨て
インスタンス DB 名が OUT に収まらない場合、SCL では、SIZE = 0 または SIZE が WSTRINGの最大長よりも大きい場合に、文字列の末尾に文字「...」なしで、名前が切り捨てられま
す。

パラメータ
以下の表に、「GetInstanceName」命令のパラメータを示します。
パラメータ 宣言

データタイ メモリ領域
プ

説明

SIZE

DINT

I、Q、M、D、OUT パラメータで出力される文字数を制限しま

L、または定数す。

Input• SIZE > 0:GetInstanceName は、名前の最初の
SIZE 文字を返します。
• SIZE = 0:GetInstanceName は、名前全体を返します。
• SIZE < 0:GetInstanceName は、名前の最後の
SIZE 文字を返します。
OUT

OutputWSTRING

D、L

インスタンスデータブロックの読み出された名前

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、インスタンスデータブロックの名前を読み出します。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

FB「SLI_FB_GetInstanceName」を作成します。「GetInstanceName」命令のパラメータを
以下のように相互接続します。

1974

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

「GetInstanceName」命令が「SLI_FB_GetInstanceName」ブロックで実行されます。
「GetInstanceName」命令によって、「SLI_FB_GetInstanceName」ブロックの関連インスタ
ンスデータブロックが識別され、出力パラメータ OUT 「outputInstName」()で文字列として出力されます。パラメータ SIZE(「limitSIZE」)の値「0」に従って、文字列の長さに制限はありません。

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.3.22.4

GetInstancePath:ブロックインスタンスのクエリ複合グローバル名

説明「GetInstancePath」命令を使用して、ファンクションブロック内のブロックインスタンスの
複合グローバル名を読み出すことができます。ブロックインスタンスの複合グローバル名は、マルチインスタンスが使用される場合の階層呼び出し全体のパスを示しています。
注記
コードメモリ要件の増加
GetInstancePath を使用すると、コードメモリ要件が増加します。文字列が長く、パラメ
ータ数が多いほど、より多くのメモリが必要となります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1975

拡張命令
4.3 String + Char
次の例では、「GetInstancePath」命令を FB_Level_3 ファンクションブロックで呼び出します。
• FB_Level_3 ファンクションブロックは、呼び出し FB_Level_2 ファンクションブロックにデータを保存します。
• 同様に FB_Level_2 ファンクションブロックは、呼び出し FB_Level_1 ファンクションブ
ロックにデータを保存します。
• 同様に FB_Level_1 ファンクションブロックは、インスタンスデータブロック
IDB_LEVEL_1 にデータを保存します。マルチインスタンスの使用により、FB_Level_1のインスタンスデータブロックには 3 つのファンクションブロックのすべてのデータが含まれています。
,'%B/(9(/B,QSXW
2XWSXW,Q2XW
6WDWLF/HYHOBB,QVWDQFH
,QSXW2XWSXW,Q2XW
6WDWLF
/HYHOBB,QVWDQFH
,QSXW2XWSXW,Q2XW6WDWLF

0DLQ

,B'%B/HYHOB)%B/HYHOB)%B/HYHOB)%B/HYHOB6WDWLF
/HYHOBB,QVWDQFH
6WDWLF
/HYHOBB,QVWDQFH


6WDWLF
/HYHOBB,QVWDQFH

)%B/HYHOB)%B/HYHOB)%B[\])%BDEF)&B[\])&BDEF)%B/HYHOB6WDWLF*HW,QVWDQFH3DWK
VL]H
287

この例の場合、「GetInstancePath」命令は以下の値を返します。
SIZE

GetInstancePath が返
す内容

説明

1

'...'

• WSTRING の最初の文字:'• 名前が切り捨てられたことを示す識別子: ...
• WSTRING の最後の文字:'

2'"...'• WSTRING の最初の文字:'• 名前の最初の文字と、名前が切り捨てられたことを示す識別子:"...
• WSTRING の最後の文字:'

3'"I...'• WSTRING の最初の文字:'• 名前の最初の 2 文字と、名前が切り捨てられたことを示す識別子:"..."I...
• WSTRING の最後の文字:'

1976

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + CharSIZE

GetInstancePath が返
す内容

説明

6

'"IDB_...'• WSTRING の最初の文字:'• 名前の最初の 5 文字と、名前が切り捨てられたことを示す識別子:"IDB_...
• WSTRING の最後の文字:'

0'"IDB_LEVEL_1".Level_2 • WSTRING の最初の文字:'_
Instance.Level_3_Instance'• 名前のすべての文
字:"IDB_LEVEL_1".Level_2_Instance.Level_3_Insta
nce• WSTRING の最後の文字:'

注記
シングルインスタンスのファンクションブロックでの「GetInstancePath」の使用「GetInstancePath」を呼び出すファンクションブロックが自身のインスタンスデータブロ
ックにデータを保存している場合、シングルインスタンスの名前がグローバル名として出力されます。この場合、パラメータ OUT の結果は、「GetInstanceName (ページ 1973)」命令と一致します。

パラメータ
以下の表に、「GetInstancePath」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

SIZE

Input

DINT

説明

I、Q、M、D、L、 OUT パラメータで出力される文字数を制
または定数

限します。
• SIZE > 0:GetInstancePath は、名前の最初の SIZE 文字を返します。
• SIZE = 0:GetInstancePath は、名前全体を返します。
• SIZE < 0:GetInstancePath は、名前の最後の SIZE 文字を返します。

OUT

OutputWSTRING

D、L

ブロックインスタンスのグローバル名を読み出します。
ブロックインスタンスのグローバル名がWSTRING の最大長(254 文字)よりも長い
場合、名前は切り捨てられます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1977

拡張命令
4.3 String + Char例
以下では、ブロックインスタンスの複合グローバル名を読み出します。
グローバルデータブロックにデータを保存するために、1 つのタグを作成します。

FB「SLI_FB_GIP_Level4」を作成し、この FB で命令「GetInstancePath」を呼び出します。

FB「SLI_FB_GIP_Level3」を作成し、この FB で命令「SLI_FB_GIP_Level4」を呼び出します。

FB「SLI_FB_GIP_Level2」を作成し、この FB で命令「SLI_FB_GIP_Level3」を呼び出します。

FB「SLI_FB_GIP_Level1」を作成し、この FB で命令「SLI_FB_GIP_Level2」を呼び出しま
す。

1978

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Charファンクションブロック「SLI_FB_GIP_Level1」に以下のローカルタグを作成します。

サイクル OB (OB123)を作成し、このサイクル OB で命令「SLI_FB_GIP_Level1」を呼び出します。ファンクションブロックを以下のように相互接続します。

命令「GetInstancePath」が OB123 で実行されます。命令「GetInstancePath」は、FB「SLI_FB_GIP_Level4」での命令の呼び出しから OB123 での呼び出しまで、すべてのファン
クションブロックのインスタンスを読み出します。インスタンスの名前は、命令「GetInstancePath」の出力パラメータ OUT「outputPath_Level4FB」()で文字列として出力されます。命令「GetInstancePath」の入力パラメータ SIZE の値に従って、文字列の長さは80 文字に制限されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1979

拡張命令
4.3 String + Char
プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

1980

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.3 String + Char

4.3.22.5

GetBlockName: ブロックの名前の読み出し

説明「GetBlockName」命令を使用して、命令が呼び出されるブロックの名前を読み出すことができます。
• ブロック名の長さが一定の文字数に制限される場合、SIZE パラメータで最大長を指定します。名前が切り捨てられた場合、このことは、名前の最後の文字「...」(Unicode 文字
16#2026)によって示されます。この文字の長さは 1 であることに注意してください。
SIZE パラメータの意味を説明するための例。以下のブロック名が読み出されま
す:"Level1_gbn" (先頭と末尾の二重引用符は名前に属しています。
)
SIZE

GetBlockName が返す
内容

説明

1

'...'

• WSTRING の最初の文字:'• 名前が切り捨てられたことを示す識別子: ...
• WSTRING の最後の文字:'

2'"...'• WSTRING の最初の文字:'• 名前の最初の文字と、名前が切り捨てられたことを示す識別子:"...
• WSTRING の最後の文字:'

3'"L...'• WSTRING の最初の文字:'• 名前の最初の 2 文字と、名前が切り捨てられたことを示す識別子:"..."L...
• WSTRING の最後の文字:'

6'"Leve...'• WSTRING の最初の文字:'• 名前の最初の 5 文字と、名前が切り捨てられたことを示す識別子:"Leve...
• WSTRING の最後の文字:'

0'"Level1_gbn"'• WSTRING の最初の文字:'• 名前のすべての文字:"Level1_gbn"• WSTRING の最後の文字:'• ブロックの名前は RET_VAL パラメータに書き込まれます。ブロックの名前が最大長(WSTRING)よりも長い場合、名前は切り捨てられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1981

拡張命令
4.3 String + Char

パラメータ
以下の表に、「GetBlockName」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

SIZE

Input

DINT

I、Q、M、D、

RET_VAL パラメータで出力される文字数を制限

L、または定数します。
• SIZE > 0:GetBlockName は、名前の最初の
SIZE 文字を返します。
• SIZE = 0:GetBlockName は、名前全体を返します。
• SIZE < 0:GetBlockName は、名前の最後の
SIZE 文字を返します。

RET_VAL

OutputWSTRING

D、L

インスタンスデータブロックの読み出された名前

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
次の例では、ブロック名を読み出します。
グローバルデータブロックにデータを保存するために、2 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

「GetBlockName」命令が「SLI_FC_GetBlockName」ブロックで実行されます。
「GetBlockName」命令によって、「SLI_FC_GetBlockName」ブロックの名前が読み出され、出力パラメータ RET_VAL 「outputBlockName」()で文字列として出力されます。パラメータ
SIZE(「limitSIZE」)の値「0」に従って、文字列の長さに制限はありません。

1982

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.4 プロセスイメージ

プログラムコード

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

4.4

プロセスイメージ

4.4.1

UPDAT_PI:プロセスイメージ入力の更新

説明
この命令を使用して、設定で定義された入力の部分的なイメージパーティションを更新します。
システム側のプロセスイメージ更新に I/O アクセスエラーの繰り返し通知を設定した場合、選択されたプロセスイメージが常に更新されます。
これ以外の場合、更新を実行できるのは、選択されたプロセスイメージパーティションがシステムによって更新されない場合、言い換えれば、このプロセスイメージパーティショ
ンを割り込み OB に割り当てていない場合だけです。
注記
設定ごとに入力のプロセスイメージパーティションに割り当てた各論理アドレスは、入力のOB 1 プロセスイメージに属さなくなります。
「UPDAT_PI」でプロセスイメージパーティションを更新する場合、「SYNC_PI (ページ 1990)」命令による同時更新を実行しないでください。
入力の OB 1 プロセスイメージおよび割り込み OB に割り当てた入力のプロセスイメージ
パーティションのシステム側の更新は、「UPDAT_PI」呼び出しとは独立して行われます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1983

拡張命令
4.4 プロセスイメージ

パラメータ
以下の表に、「UPDAT_PI」命令のパラメータを示します。
パラメータ 宣言

データタ
イプ

メモリ領域

説明

PART

PIP

I、Q、M、D、更新される入力のプロセスイメ

L、または定数ージパーティション数。

Input

命令による同時更新を実行しないでください。最大値範囲(CPUによって異なる):
1 <= n <= 31 (プロセスイメージ
パーティション n を意味します)。
RET_VAL

Return

INT

I、Q、M、D、

エラー情報

L、P
FLADDR

Output

WORD

I、Q、M、D、

アクセスエラーが発生時にL、Pエラーを発生させる最初のバイトのアドレス。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8090

PART パラメータの無効な値

8091

指定されたプロセスイメージパーティションはまだ定義されていません。

8092

プロセスイメージパーティションがシステムによって更新されているため、PART パラメー
タに使用してはなりません。

8093

他の OB でプロセスイメージパーティションの更新が処理されています。

80A0

I/O にアクセスしたときアクセスエラーが検出されました。

一般エラー情関連項目: GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

1984

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.4 プロセスイメージ

注記
DP 標準スレーブのプロセスイメージパーティションにこの命令を使用すると、「DPRD_DAT(ページ 2164)」命令のエラーコードも使用できます。これは、32 バイトを超える整合性
領域を定義した場合です。

例
次の例では、設定で定義された入力のプロセスイメージパーティション「1」を更新します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

CPU に対して入力モジュール(DI)を作成し、[プロパティ|入力 0 - 15|I/O アドレス]で、プ
ロセスイメージパーティション「1」を設定します。また、プロセスイメージパーティションをどの OB にも割り当てません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1985

拡張命令
4.4 プロセスイメージ

更新されるプロセスイメージパーティションの番号が命令「UPDAT_PI」の入力パラメータPART 「part」()に保存されます。命令「UPDAT_PI」が呼び出されると、指定されたプロセス
イメージパーティションが更新されます。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。
エラーなしの処理によって、コイル(「updateOk」)が「TRUE」に設定されます。アクセス
エラーが発生していないため、命令「UPDAT_PI」のエラーアドレス(「errAddress」)は、値「16#0000」を表示します。

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.4.2

UPDAT_PO:プロセスイメージ出力の更新

説明
この命令を使用して、設定で定義された出力のプロセスイメージパーティションのシグナル状態を出力モジュールに転送します。

1986

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.4 プロセスイメージ
選択したプロセスイメージパーティションに整合性範囲を指定している場合、対応するデータはそれぞれの I/O モジュールに整合性データとして転送されます。
注記
設定中に出力のプロセスイメージパーティションに割り当てた各論理アドレスは、出力のOB 1 プロセスイメージに属さなくなります。
「UPDAT_PO」で更新する出力は、「SYNC_PO (ページ 1993)」命令で同時に更新しないでください。
出力の OB 1 プロセスイメージおよび割り込み OB に割り当てた出力のプロセスイメージ
パーティションは、「UPDAT_PO」呼び出しとは関係なくシステムによって出力モジュールに転送されます。

パラメータ
以下の表に、「UPDAT_PO」命令のパラメータを示します。
パラメータ 宣言

データタ メモリ領域
イプ

説明

PART

PIP

I、Q、M、D、転送する出力のプロセスイメージ

L、または定数

パーティションの番号

Input

最大値範囲(CPU によって異なる):1 <= n <= 31(プロセスイメージパーティショ
ン n を意味します)
RET_VAL

Return

INT

I、Q、M、D、

エラー情報

L、P
FLADDR

Output

WORD

I、Q、M、D、

アクセスエラーが発生時にL、Pエラーを発生させる最初のバイトのアドレス。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1987

拡張命令
4.4 プロセスイメージ

パラメータ RET_VAL
エラーコード 説明*(W#16#...)
0000

エラーは発生しませんでした。

8090

PART パラメータの無効な値

8091

指定されたプロセスイメージパーティションはまだ定義されていません。

8092

プロセスイメージパーティションがシステムによって更新されているため、PART パラメー
タに使用してはなりません。

8093

他の OB でプロセスイメージパーティションの更新が処理されています。

80A0

I/O にアクセスしたときアクセスエラーが検出されました。

一般エラー情 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。
注記
DP 標準スレーブのプロセスイメージパーティションにこの命令を使用すると、「DPWR_DAT(ページ 2166)」命令のエラーコードも使用できます。これは、32 バイトを超える整合性
領域を定義した場合です。

例
次の例では、設定で定義された出力のプロセスイメージパーティション「1」を更新します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

1988

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.4 プロセスイメージ

CPU に対して出力モジュール(DQ)を作成し、[プロパティ|出力 0 - 15|I/O アドレス]で、プ
ロセスイメージパーティション「1」を設定します。また、プロセスイメージパーティションをどの OB にも割り当てません。

更新されるプロセスイメージパーティションの番号が命令「UPDAT_PO」の入力パラメータPART 「part」()に保存されます。命令「UPDAT_PO」が呼び出されると、指定されたプロセ
スイメージパーティションが更新されます。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。
エラーなしの処理によって、コイル(「updateOk」)が「TRUE」に設定されます。アクセス
エラーが発生していないため、命令「UPDAT_PO」のエラーアドレス(「errAddress」)は、値「16#0000」を表示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1989

拡張命令
4.4 プロセスイメージ

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.4.3

SYNC_PI:プロセスイメージ入力の同期

説明「SYNC_PI」を使用して、アイソクロナスモードで入力のプロセスイメージパーティションを更新します。DP サイクルまたは PN 送信サイクルにリンクされたユーザープログラム
は、この命令を使用して、入力のプロセスイメージパーティションで取得した入力データ
をアイソクロナス方式で整合性を保って更新します。

呼び出し「SYNC_PI」は割り込み可能で、OB 61、62、63 および 64 のみで呼び出されます。
注記「SYNC_PI」命令の呼び出しは、HW コンフィグレーションで影響を受けたプロセスイメー
ジパーティションを関連する OB に割り当てている場合のみ、OB 61～64 で許可されます。
「SYNC_PI」で更新するプロセスイメージパーティションは、同時に「UPDAT_PI (ページ 1983)」命令で更新しないでください。

1990

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.4 プロセスイメージ

パラメータ
以下の表に、「SYNC_PI」命令のパラメータを示します。
パラメータ 宣言

データタ
イプ

メモリ領域

値の範囲

説明

PART

PIP

I、Q、M、

1～31

アイソクロナス方式で更新する入力のRET_VAL

Input

Return

INT

D、L、または

プロセスイメージパーティションの番

定数号。

I、Q、M、

-

エラー情報

D、L、P
FLADDR

Output

WORD

I、Q、M、

アクセスエラーが発生時にD、L、P

エラーを発生させる最初のバイトのアドレス。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー 説明ド
(W#16#...
)*
0000

エラーは発生しませんでした。

0001

整合性の警告。プロセスイメージパーティションの更新が、2 つの DP または PN サイクルに分散されました。ただし、1 つのサブモジュールのデータは整合性を保って転送されました。

8090

PART パラメータの値が無効であるか、または指定された入力のプロセスイメージパーティションの更新がこの OB では許可されていません。指定されたプロセスイメージパーティションが未定義であるか、このプロセスイメージパーティションが入力モジュールに未割り当てである
可能性があります。入力のプロセスイメージパーティションが更新されませんでした。

8092

プロセスイメージパーティションがシステムによって更新されているため、PART パラメータに使用してはなりません。

8093

他の OB でプロセスイメージパーティションの更新が処理されています。

80A0

更新中に、アクセスエラーが検出されました。影響を受けた入力は「0」にセットされました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1991

拡張命令
4.4 プロセスイメージ
エラーコー 説明ド
(W#16#...
)*
80A1

更新時間が許可されたアクセス時間の後になっています。入力のプロセスイメージパーティ
ションが更新されませんでした。
命令を処理するために十分な時間を確保するためには、DP または PN サイクルが短すぎます。
したがって、TDP (T_DC としても知られています)、Ti および To タイマを増加する必要があり
ます。

80A2

整合性の警告付きのアクセスエラー
指定されたプロセスイメージパーティションの更新の場合、同時整合性警告付きのアクセス
エラーが検出されました。
• 間違った入力のデータは I/O で読み出されませんでした。入力のプロセスイメージパーティションで、影響を受けた入力が「0」に設定されます。
• アクセスエラー入力データに関連しないプロセスイメージパーティションの更新は、2 つのDP および PN サイクルに分散されました。

80C1

更新時間が許可されたアクセス時間の前になっています。入力のプロセスイメージパーティ
ションが更新されませんでした。

一般エラー 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)
情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。
注記
DP 標準スレーブのプロセスイメージパーティションに「SYNC_PI」命令を使用すると、「DPRD_DAT」命令のエラーコードも使用できます。これは、32 バイトを超える整合性領域を定義した場合です。

下記も参照
DPRD_DAT:DP スレーブの整合性のあるデータ読み出し (ページ 2164)

1992

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.4 プロセスイメージ

4.4.4

SYNC_PO:プロセスイメージ出力の同期

説明「SYNC_PO」命令を使用して、アイソクロナスモードで出力のプロセスイメージパーティ
ションを更新します。DP サイクルまたは PN 送信サイクルにリンクされたアプリケーショ
ンプログラムは、この命令を使用して、出力のプロセスイメージパーティションの計算された出力データを I/O デバイスに整合性保持アイソクロナス転送することができます。

呼び出し「SYNC_PO」は割り込み可能で、OB 61、62、63 および 64 のみで呼び出す必要があります。
注記
OB 61～64 での「SYNC_PO」命令の呼び出しは、HW コンフィグレーションで影響を受けたプロセスイメージパーティションを関連する OB に割り当てている場合のみ許可されます。「SYNC_PO」で更新するプロセスイメージパーティションは、同時に「UPDAT_PO (ページ 1986)」命令で更新しないでください。

パラメータ
以下の表に、「SYNC_PO」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

値の範囲

説明

PART

Input

PIP

I、Q、M、

1～31

アイソクロナス方式で更新する出力

RET_VAL

Return

INT

D、L、またはのプロセスイメージパーティション

定数

の番号。

I、Q、M、-

D、P

命令の実行中にエラーが発生した場
合、戻り値にエラーコードが含まれます。

FLADDR

Output

WORD

I、Q、M、
D、L、P-

エラーの原因となった最初のバイトのアドレス。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1993

拡張命令
4.4 プロセスイメージ

パラメータ RET_VAL
エラーコー
ド

説明

(W#16#...
)*
0000

エラーは発生しませんでした。

0001

整合性の警告。プロセスイメージパーティションの更新が、2 つの DP または PN サイクルに分散されました。ただし、1 つのサブモジュールのデータは整合性を保って転送されました。

8090

PART パラメータの値が無効であるか、または指定された出力のプロセスイメージパーティションの更新がこの OB では許可されていません。指定されたプロセスイメージパーティショ
ンが未定義であるか、このプロセスイメージパーティションが出力モジュールに未割り当てである可能性があります。出力は I/O に転送されませんでした。出力のプロセスイメージパーティションは変更されません。

8092

プロセスイメージパーティションがシステムによって更新されているため、PART パラメータに使用されません。

8093

他の OB でプロセスイメージパーティションの更新が処理されています。

80A0

出力の指定されたプロセスイメージパーティションの更新の場合、アクセスエラーが検出されました。間違った出力は I/O に転送されませんでした。プロセスイメージパーティションの出力時には、これらの出力は変更されません。

80A1

整合性の警告付きのアクセスエラー
指定された出力のプロセスイメージパーティションの更新の場合、同時整合性警告付きのア
クセスエラーが検出されました。
• 間違った出力のデータは I/O に転送されませんでした。プロセスイメージパーティションの出力時には、関係する出力は変更されません。
• アクセスエラー入力データに関連しないプロセスイメージパーティションの更新は、2 つのDP および PN サイクルに分散されました。

80A2

更新時間が許可されたアクセス時間の後になっています。出力は I/O に転送されませんでした。出力のプロセスイメージパーティションは変更されません。

80C1

更新時間が許可されたアクセス時間の前になっています。出力は I/O に転送されませんでした。出力のプロセスイメージパーティションは変更されません。

一般エラー

関連項目: GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

1994

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

注記
DP 標準スレーブのプロセスイメージパーティションに「SYNC_PO」命令を使用すると、「DPWR_DAT」命令のエラーコードも使用できます。これは、32 バイトを超える整合性領域を定義した場合です。

下記も参照
DPWR_DAT:DP スレーブのコンスタントデータの書き込み (ページ 2166)

4.5

リモート I/O

4.5.1

データレコードのタイプの概要

概要
ハードウェアのプロパティとしてのデータレコードは、ハードウェアの特定のプロパティを反映するデータの要約に対応します。各ハードウェアはプロパティとして多数のデータレ
コードを持つことができます。これにより、データレコードをその使用とその情報の範囲に基づいて区別することができます。
以下では、データレコードのタイプを理解することができます。また、ガイドに沿ってモジュール、システムおよび命令に割り当てることによってデータレコードで作業を行います。
以下の情報は S7-1200 および S7-1500 オートメーションシステムに加えて ET 200MP お
よび ET 200SP リモート I/O システムに適用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1995

拡張命令
4.5 リモート I/O

データレコードのタイプ
以下のデータレコードタイプが存在します。
タイプ

用途

パラメータデ a) 入力モジュール用

パラメータデータレコードには、関連する I/O モジュールの入ータレコード b) テクノロジーモジュール 力/出力ファンクションのプロパティが含まれています。このまたはテクノロジーファン データレコードを使用して、たとえば、断線を読み出したり、クションを使用するモジュ 入力遅延を変更したりします。パラメータデータレコードは、ール用

読み取りおよび書き込みが可能です。

a) 出力モジュール用
制御データレ a) 中央/リモートセットアッ 制御データレコードには、システムまたはセットアップのハー
コード

プを設定するため

ドウェアコンフィグレーションが含まれており、ユーザープロb) IO システムを再構成する グラムによるモジュールまたは IO システムの再構成を可能にします。制御データレコードは、読み取りおよび書き込みが可ため能です。
I&M データa) 中央セットアップまたは I&M データレコードには、モジュールの識別およびメンテナン

レコード

PROFINET IO 経由のリモー

スデータが含まれています(I&M = 識別およびメンテナンス)。

トセットアップ用

データは以下のように異なります。

b) 中央セットアップまたは • 識別データ– ベンダーデータによって異なります。
PROFIBUS DP 経由のリモー
トセットアップ用– 読み取り専用– たとえば、シリアル番号を読み出すことができます。
• メンテナンスデータ– システムおよびデバイスの使用によって異なります。
– 読み取りおよび書き込みが可能です。
– たとえば、モジュールの設置場所の変更に使用できま
す。

1996

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
タイプ

用途

診断データレ a) PROFINET IO 経由のリモ 診断データレコードと構成データレコードはそれぞれ同じ構造
コードと構成 ートセットアップ用を持ち、内容とサイズのみが異なります。

データレコー b) PROFIBUS DP 経由のリモ データレコードは、以下のように区別できます。
ドートセットアップ用• 診断データレコード– 診断データレコードには、モジュールの診断およびモニタリングデータが含まれています。
– チャンネル診断データレコードは、チャンネルがエラー
ステータスにある場合および/または割り込みをトリガした場合に生成されます。障害/エラーがない場合は、長さ0 の診断データレコードが返されます。
– ベンダー固有の診断データレコードの構造およびサイズ
は、ベンダーによって異なります。
– 診断データレコードは読み取り専用です。
• 構成データレコード– 構成データレコードには、モジュールの実際の構成またはプリセット構成のデータが含まれています。
– 構成データレコードは読み取り可能(実際の構成、プリセ
ット構成)かつ書き込み可能(プリセット構成)です。

注記
WinCC で使用されるレシピデータレコードは、モジュールのプロパティではなく、ここで説明されているデータレコードとは関係ありません。

プロジェクトでのデータレコードの使用
プロジェクトでデータレコードを使用する前に、データレコードの構造および要件について関連マニュアルを参照してください。「追加情報」セクションには、各マニュアルへの参照が記載されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1997

拡張命令
4.5 リモート I/O

パラメータデータレコード
注記チャンネルの読み出し
データレコード 0..X および 64..64+X には、チャンネル固有のパラメータが含まれています。したがって、たとえば、データレコード 0 には、チャンネル 0 の情報が含まれています。
データレコード 128 には、ハードウェアコンフィグレーションからの関連モジュールのすべてのチャンネルの情報が含まれています。
RD_DPAR 命令は、S7-1500 CPU または ET 200 リモート I/O 上でのみ実行できます。

タイプ:

パラメータデータレコード(a)次のモジュー

入力モジュール

ルに関連:場所:

中央セットアップ(S7-1500)または ET 200MP

S7-1200 または ET 200SP (*)

命令:

RDREC, WRREC

RDREC, WRREC

RD_DPAR

RD_DPAR(S7-1200は除く)

データレコー

DR 0.X (DR = チャンネ

DR 128DR 128*ET 200SP Namur

ド(DR):

ル、X = 入力モジュールのの場合:DR 0.X (DR

最後のチャンネル)= チャンネル、X =DR 128

入力モジュールの最後のチャンネル)
または DR 128
HW ID:

入力モジュールの HW ID を使用

例:

例: S7-1500 DI16x24VDC 例: S7-1500

例 1:S7-1212C CPU の入力モジュールを使

HF --> チャンネル 0..15;DI16x24VDC HF -->用 --> CPU の HW ID、DR 128 および(たとえば、DR 13 を使DR 128。

RDREC / WRREC。

用)。

「RD_DPAR のプログ 例 2:ET 200SP DI8x24VDC HF を使用 --> DI「WRREC および RDREC を ラム例 (ペーモジュールの HW ID、DR 128 および用いたパラメータデータ ジ 2291)」も参照。 RDREC / WRREC または RD_DPAR。
レコードのプログラム例「RD_DPAR のプログラム例 (ペーの使用 (ページ 2030)」も

ジ 2291)」も参照。

参照。

1998

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

タイプ:

パラメータデータレコード(b)次のモジュー

テクノロジーモジュールまたはテクノロジーファンクションを使用するモジュール

ルに関連:
場所:

中央セットアップ(S7-1500 または S7-1200)
またはリモートセットアップ(ET 200MP または ET 200SP)

命令:

RDREC, WRREC

データレコーDR 128ド(DR):

RD_DPAR (S7-1200 は除く)
または、S7-1500 の DI DR 128
モジュールの場合:
DR 0.X (DR = チャンネ
ル、X = 入力モジュー
ルの最後のチャンネル)HW ID:

影響を受けるモジュール/ I/O モジュールの HW ID を使用。

例:1) 例:CPU S7-1511 PN、S7-1500 DI16x24VDC HF の高速カウンタ --> たとえば、DR 1 の場
合、DI モジュール(HSC)の HW ID を使用。WRREC/RDREC を使用。
2) 例: TM Count 2x24V --> DR 128、TM の HW ID を使用。WRREC / RDREC または RD_DPARを使用。
3) 例:S7-1200 CPU の高速カウンタ --> DR 128、CPU の HW ID および WRREC / RDREC を使
用。

タイプ:

パラメータデータレコード(c)次のモジュー

出力モジュール:

ルに関連:
場所:

中央セットアップ(S7-1500)または ET 200MP

S7-1200 または ET 200SP (*)

命令:

RDREC, WRREC

RDREC, WRREC

RD_DPAR

RD_DPAR(S7-1200は除く)

データレコーDR 64.64 + X (DR 64 = チ DR 128

DR 128*ET 200SP Namur DR 128

ド(DR):

ャンネル 0、X = 出力モジの場合:DS 64..64

ュールの最後のチャンネ+ X (DR 64 = チャル)

ンネル 0、X = 出
力モジュールの最後のチャンネル)または DR 128

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

1999

拡張命令
4.5 リモート I/O
タイプ:

パラメータデータレコード(c)HW ID:

出力モジュールの HW ID を使用。

例:

例: DQ16x24VDC/0.5A ST 例: DQ16x24VDC/

例: ET 200SP DQ8x24VDC/0.5A ST --> DR--> チャンネル 0..15; (た 0.5A ST --> DR 128。 128。
とえば、チャンネル 13の場合、DR 77 を使用)。
注記
その他のデータレコード
その他にもデータレコードが存在する場合があります。たとえば、入力モジュールの場合• ET 200SP AI RTD では、断線チェックを無効にするための DR 237 があります。
• ET 200SP AI Energy Meter ST では、測定データを読み出すための DR 142 があります。

注記
PROFIBUS DP を備えたインターフェースモジュール
PROFIBUS DP を備えたインターフェースモジュールを使用する場合、下流の入出力モジュールからパラメータデータレコード「0」および「1」を読み出すことはできません。その代わりに、診断データレコード「0」および「1」の内容を読み出します。
たとえば、出力モジュールでは、「パラメータデータレコード 0」は「DR 64」であり、「パラメータデータレコード 1」は「DR 65」です。

追加情報

パラメータデータレコードに関する追加情報については、関連 I/O モジュールのマニュアル『S7-1500(
DI16x24VDC HF (https://support.industry.siemens.com/cs/ww/en/view/
59193001)』など)を参照してください。

制御データレコード
タイプ:

制御データレコード

次のモジュー

使用されるセットアップのすべてのモジュール

IO システムおよび必要な IO デ

ルに関連:
場所:

命令:

バイス
中央セットアップ

リモートセットアップ(ET(S7-1200、S7-1500)

200MP、ET 200SP など)

WRREC, RDREC

WRREC,RDREC

PROFINET IO

ReconfigIOSystem

RDREC

2000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
タイプ:

制御データレコード

データレコーDR 196

DR 196ド(DR):DR 197 (フィ DR「CTRLREC」
ードバック(ReconfigIOSystem のパラメー

データレコ

タ)

ード)
HW ID:

HW ID 33 を使用。

リモート I/O の IM のヘッ

PROFINET インターフェース(IO

ド[Head]の HW ID を使用。 コントローラ)の HW ID を使用。
セットアップされる接続およびIO デバイスに応じて CTRLREC
経由で対応する HW ID を指定します。
例:

たとえば、CPU S7-1511-1

例: DI16x24VDC HF、ET

PN、DI16x24VDC HF の場

200MP IM 155-5 PN ST --> ントローラ)を ET 200MP (IO デ

合。

「<IO-

バイス)および ET 200SP (オプシ「WRREC および RDREC を用

device_V2.0[Head]>」のョンの IO デバイスとして)と接いた制御データレコードのプ ID を使用。

たとえば、S7-1500 CPU (IO コ

続し、有効にします。

ログラム例の使用 (ペー

実際のセットアップには、「ReconfigIOSystem のプログラジ 2040)」も参照。

設定中に考慮されない追加 ム例 (ページ 2144)」も参照。
の DI16x24VDC HF が含ま
れます。

追加情報

制御データレコード 196 に関する詳細情報については、関連するオートメーションシス
テムのシステムマニュアルを参照してください(『S7-1500 オートメーションシステム(https://support.industry.siemens.com/cs/ww/en/view/109755202)』など)。
フィードバックデータレコード 197 に関する詳細情報については、関連するインターフェースモジュールのシステムマニュアルを参照してください(『ET 200MP IM 155-5 PN HF(https://support.industry.siemens.com/cs/ww/en/view/89261636)』など)。
制御データレコード「CTRLREC」に関する詳細情報については、命令「ReconfigIOSystem: IO システムの再構成 (ページ 2135)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2001

拡張命令
4.5 リモート I/O

I&M データレコード
I&M データレコードの以下の使用に注意してください。
• データレコード「I&M0」(「16#AFF0」)は、モジュールまたはデバイスに関する一般情報を転送するために使用されます。
• データレコード「I&M1」(「16#AFF1」)は、モジュールまたはデバイスのファンクショ
ンおよび設置場所を転送するために使用されます。
• データレコード「I&M2」(「16#AFF2」)は、モジュールまたはデバイスの設置日を転送するために使用されます。
• データレコード「I&M3」(「16#AFF3」)は、モジュールまたはデバイスに関する個々の追加情報を転送するために使用されます。
• データレコード「I&M4」(「16#AFF4」)を使用して、モジュールまたはデバイスのセキュリティコードを IO コントローラに転送します。
注記
データレコード「I&M0」(「16#AFF0」)は、すべてのモジュールでサポートされます。他のすべての I&M データレコードはオプションです。

タイプ:

I&M データレコード

次のモジ

デバイス/モジュール

ュールに
関連:
場所:

中央セットアップまたは PROFINET IO 経由のリモートセットアップ
または PROFIBUS DP

命令:

RDREC, WRREC

データレ

DR

DR

DR

コード

16#AFF0

16#AFF1

16#AFF2(DR):DR 16#AFF3

DR16#AFF4 または、PROFIBUS DP 経由のリ
モートセットアップの場合:DR255

HW ID:

モジュールの HW ID を使用。

例:1) 例:CPU S7-1511-1 PN の場合 --> DR 16#AFF0、CPU の HW ID 2) 例:IM 155-6 DP ST を備えたを使用。

ET 200SP の場合 --> DR 255、「読み出し RDREC を使用した I&M データレコードのプログラム IM の HW ID を使用。
例 (ページ 2009)」も参照。

2002

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
追加情報

関連する I&M データレコードに関する追加情報については、以下を参照してください。
• 関連するオートメーションシステムのシステムマニュアル(『S7-1500 オートメーショ
ンシステム (https://support.industry.siemens.com/cs/ww/en/view/109755202)』など)。
• プログラミングマニュアル『SIMATIC NET PROFINET IO-Base ユーザープログラミング
インターフェース (https://support.industry.siemens.com/cs/ww/en/view/26435491)』。

診断データレコードと構成データレコード
タイプ:

診断データレコードと構成データレコード

次のモジュー

IO システム内のデバイス/モジュールまたはサブモジュール

ルに関連:
場所:

リモートセットアップ(PROFINET IO、PROFIBUS DP)

命令:

RDREC, WRREC

RDREC

データレコー

構成(実際/プリセット):チャンネル診断:

ド(DR):

インターフェースモジュール経由の製造元固有の診断:関連するモジュールの DR を使用。

PROFINET IO

PROFIBUS DP

アドレス指定レベルおよび DR については、『PROFINET IO

の場合:

の場合:

(https://support.industry.siemens.com/cs/ww/en/view/

インターフェ DR 0、1

19289930)』も参照してください。

ースモジュールを参照

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2003

拡張命令
4.5 リモート I/O
タイプ:

診断データレコードと構成データレコード

HW ID:

関連するモジュールのハードウェア ID 「Hw_SubModule」データタイプの(
HW ID)を使用。

例:

たとえば、IO コントローラ

たとえば、DQ モジュールを たとえば、PROFIBUS DP:IM

S7-1513-1 PN の場合、IO デ

備えた IO デバイス(ETバイス(ET 200MP IM 155-5

200MP IM 155-5 PN HF)が断 200MP の場合、DI モジュー

155-5 DP ST を備えた ET

PN HF)のスロットレベルのモ 線の原因となる場合。IO デ ルの読み出し --> DI モジュー
ジュールの HW ID を使用しま バイスのヘッダーモジュール ルの HW ID
す。DR 16#C001 でプリセッ のハードウェア ID を使用し 「Hw_SubModule」データタ(
ト構成を読み出します。

ます。IO コントローラはイプ)、診断に DR 1 を使用。

S7-1513-1 PN です。チャン
ネル診断に DR 16#E00A を使用します。
「RDREC を使用した診断デー
タレコードの読み出しプログ
ラム例 (ページ 2013)」も参照してください。
追加情報

PROFINET IO の診断および構成に関するアドレス指定レベル、セットアップおよび重要な
データレコードについては、以下を参照してください。
• プログラミングマニュアル『PROFIBUS DP から PROFINET IO へ (https://
support.industry.siemens.com/cs/ww/en/view/19289930)』。
チャンネル診断データレコードに関する追加情報および一般情報については、以下を参照
してください。
• STEP 7 のオンラインヘルプの「PROFINET デバイスの診断」。
• PROFINET のファンクションマニュアル(『STEP 7 V15 による PROFINET (https://
support.industry.siemens.com/cs/ww/en/view/49948856)』)。
製造元固有の診断データレコードに関する詳細情報については、以下を参照してください。
• 関連するインターフェースモジュールのマニュアル(『ET 200MP IM 155-5 PN ST (https://
support.industry.siemens.com/cs/ww/en/view/59193106)』など)。

下記も参照
Sample Library for Instructions (ページ 25)
RDREC:Read data record (データレコードの読み出し) (ページ 2005)

2004

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
WRREC:Write data record (データレコードの書き込み) (ページ 2026)
Library of PLC Datatypes に関する FAQ のページ (https://support.industry.siemens.com/cs/
ww/en/view/109482396)

4.5.2

RDREC:Read data record (データレコードの読み出し)

4.5.2.1

RDREC:Read data record (データレコードの読み出し)

説明
命令「RDREC」を使用して、ID によってアドレス指定したモジュールから、番号 INDEX を持つデータレコードを読み出します。これは、基本ラックのモジュール、または分散型モ
ジュール(PROFIBUS DP または PROFINET IO)などです。
• パラメータ ID を使用して、データレコードの読み出し元のモジュール(DP/PROFINET IO)
を選択します。ID パラメータには、モジュールのハードウェア識別子(HW ID)のみを使用します。モジュールのハードウェア識別子は、[PLC タグ|システム定数]で確認できます。たとえば、S7-1500 DI モジュールの場合、これは、データタイプ「Hw_SubModule」の<DI モジュールの名前>として示されます。
• INDEX パラメータを使用して、モジュールから読み出すデータレコードを選択します。
どのデータレコード番号でどのデータレコードを読み出すことができるかは、モジュールに応じて異なります。これに関する追加情報については、関連するモジュールのマニュアルを参照してください。
• 「RDREC」を使用して読み出し可能なデータレコードは、異なる長さを持ちます。MLENを使用して、読み出すデータレコードの最大バイト数を指定します。MLEN パラメータ
で長さ「0」が選択されている場合、完全なデータレコードがパラメータ RECORD に書
き込まれます。
• ターゲット範囲 RECORD を選択します(少なくとも MLEN バイトの長さ)。MLEN=0 を使用して完全なデータレコードを読み出す場合は、RECORD で、データレコードの最大長を使用します。RECORD パラメータで使用する構造(設定、データタイプ、および長さ)も、どのモジュールによってどのデータレコードを読み出すかに応じて異なります。
• 出力パラメータ VALID の値 TRUE は、データレコードがターゲット範囲 RECORD に正し
く転送されたことを示します。この場合、LEN 出力パラメータには、読み出したデー
タレコードの実際の長さがバイトで含まれます。
• データレコードの転送中にエラーが発生した場合、これは出力パラメータ ERROR で示されます。この場合、出力パラメータ STATUS にはエラー情報が含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2005

拡張命令
4.5 リモート I/O

注記「RDREC」命令のインターフェースは「RDREC」FB (規格「PROFIBUS and PROFINET
Guideline Communication Function Blocks on PROFIBUS DP and PROFINET IO」で定義されている)のインターフェースと同一です。

ファンクションの説明「RDREC」は非同期で動作する命令で、その実行は複数の呼び出しにわたって行われます。
呼び出しデータレコードの転送は、REQ=1 で「RDREC」を呼び出して開始します。
ジョブステータスは、出力パラメータ BUSY と出力パラメータ STATUS の 2 つの中央のバイトで表示されます。STATUS の中央の 2 バイトは、非同期で動作する命令の RET_VAL 出
力パラメータに対応します。
関連項目: 同期命令と非同期命令の相違 (ページ 29)。
データレコードの転送は、出力パラメータ BUSY が値 FALSE を持つときに完了します。

S7-1500-R/H システムの SYNCUP システム状態での RDREC の呼び出し
S7-1500-R/H システムの SYNCUP システム状態で RDREC 命令を呼び出すと、必ずエラーコ
ード 0x7001 および 0x7002 が返されます。エラーが発生している場合でも、たとえばデータレコードソースが存在していなくても他のエラーコードは提供されません。この場合、
SYNCUP が終了していないと正しいエラーコードが提供されません。
SYNCUP システム状態の動的動作では、RDREC を周期的に呼び出す必要があります。

2006

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パラメータ
以下の表に、「RDREC」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域
*

REQ

Input

BOOL

説明

I、Q、M、D、L、 REQ = 1:データレコードの転送
T**、C**、また
は定数

ID

Input

HW_IO

I、Q、M、D、L、 ハードウェアモジュール(DP/PROFINET
または定数IO)のハードウェア識別子
番号が自動的に割り当てられ、ハードウェアコンフィグレーションのモジュールまたはインターフェースのプロパティに格納されます。

INDEX

Input

DINT

I、Q、M、D、L、 データレコード番号
または定数

MLEN
VALID

Input
OutputUINT
BOOL

I、Q、M、D、L、 読み出すデータレコード情報の最大長
または定数

(バイト)

I、Q、M、D、L

新しいデータレコードが受け取られ、有
効です。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:読み出しプロセスが未完了で
す。

ERROR

Output

BOOL

I、Q、M、D、L

ERROR = 1:読み出しプロセス中にエラーが発生しました。

STATUS

Output

DWORD

I、Q、M、D、L

ブロックステータスまたはエラー情報

LEN

OutputUINT

I、Q、M、D、L

読み出されたデータレコード情報の長さ

RECORDInOut

VARIANT

I、Q、M、D、L

読み出されるデータレコードのターゲッ
ト範囲です。
アクセスが最適化されたデータブロック
内のターゲット範囲に対して NREF シス
テムデータタイプを使用している場合、ターゲット範囲に値は書き込まれません。

* STL には暗黙的な変換がないため、有効なデータタイプの範囲が限定される場合があります。STL でのプ
ログラミング中に、各ケースで許容されるデータタイプをパラメータの操作ヒントに書き留めます。
** S7-1500 の場合のみ。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2007

拡張命令
4.5 リモート I/O
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記「RDREC」を使用して PROFINET IO のデータレコードを読み出す場合、INDEX、MLEN、および LEN パラメータの負の値は符号なしの 16 ビットの整数として解釈されます。

パラメータ STATUS
STATUS パラメータの解釈については、「パラメータ STATUS (ページ 2079)」を参照してください。

PC システムに対する特殊なケース:Windows ステータスの識別
以下のシナリオで、PC システムの Windows ステータスの識別について説明します。
• 周期的 OB (OB1 など)を使用して命令「RDREC」(SFB52)を呼び出します。
「RDREC」命令を使用して Windows ステータスを識別するために、ソフトウェアコントロ
ーラについてデータレコードインデックス(0x7FFE)が定義されています。
「RDREC」命令は、以下の入力パラメータを使用して呼び出されます。
パラメー
タ

宣言

データタ
イプ

メモリ領域

値/説明

(HIC) ID

Input

HW_IO

I、Q、M、D、L、または定数 59 (ホストインターフェース RID)

INDEX

Input

DINT

I、Q、M、D、L、または定数 0x7FFE

MLEN

Input

UINT

I、Q、M、D、L、または定数 9RECORDInOut

VARIANT

I、Q、M、D、L

9 バイトの各領域のア
ドレス

2008

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/OWindows ステータスのデータレコードが 8 バイトずつ出力され、以下の内容を持つことができます。
• 0x01:Windows が実行中
• 0x02:Windows が実行されていない• 0x03:ブルースクリーン
注記
システムクラッシュの場合、Windows は応答しなくなり、システムクラッシュの理由
および時間を示すブルースクリーンを表示します。デフォルトでは、ブルースクリー
ンは永久的に表示されたままの状態になります。
システムエラー後、システムが停止し、以下のシナリオが発生します。
• Windows が、設定されているソフトウェア CPU にシグナルを送信しなくなる• OB82 を呼び出さない• 診断エントリが作成されない例
例が読み出し RDREC を使用した I&M データレコードのプログラム例 (ページ 2009)に記載
されています。
別の例が RDREC を使用した診断データレコードの読み出しプログラム例 (ページ 2013)に記載されています。
これらの例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプル
ライブラリ (ページ 25)

下記も参照
データレコードのタイプの概要 (ページ 1995)

4.5.2.2

読み出し RDREC を使用した I&M データレコードのプログラム例

概要
次の例では、I&M0 データレコード(CPU S7-1500 の)を読み出します。
データレコードに関する追加情報については、データレコードのタイプの概要 (ページ 1995)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2009

拡張命令
4.5 リモート I/O

要件
グローバルデータブロックにデータを保存するために、9 つのタグと 1 つの構造体を作成します。
CPU のハードウェア識別子を[PLC タグ|システム定数]で確認します。ここで、CPU が<Local> (データタイプ「Hw_SubModule」の)として表示されるはずです。入力パラメータ
ID 「id」()を使用してハードウェア識別子を保存します。

FB で以下のローカルタグを作成します。

2010

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パラメータの相互接続
ネットワーク 1:「RDREC」命令のパラメータを以下のように相互接続します。

ネットワーク 2:エラーが発生した場合にステータスを保存するために、「status」変数を以下のように相互接続します。

結果
入力パラメータ REQ 「start」()がシグナル状態「TRUE」を返すと、「RDREC」命令が開始されます。入力パラメータ ID 「id」()を使用して、命令「RDREC」がモジュールを呼び出します。入力パラメータ INDEX 「dataRecNbr」()を使用して、CPU の I&M0 データレコードが呼び出されます。
複数の呼び出しを通じて、命令「RDREC」が I&M0 データレコードを読み出し、パラメータ
RECORD 「recordIM0」()を使用してそのデータレコードを保存します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2011

拡張命令
4.5 リモート I/O
特に、I&M0 データレコードに以下の情報が含まれています。
• ベンダー名(「VendorID_HL」)• 製品番号(「OrderID」)とデバイス番号(「IM_SerialNbr」)• ハードウェア情報(「IM_HWrev」)とソフトウェア情報(「IMSWrev」)• IM バージョン(「IM_Version」)と帯域幅をサポートする I&M データレコード「IM_Supported」()

読み出されたデータレコードの長さが、出力パラメータ LEN 「len」()を使用して保存されます。入力パラメータ MLEN 「maxLen」()の値(値が「0」)に従って、読み出されるデータレ
コード情報に制限はありません。
処理中に、出力パラメータ BUSY 「busy」()が「TRUE」にセットされ、VALID「checkedValid」()が「FALSE」にセットされます。成功した読み出しの結果(「checkedValid」
が「TRUE」にセット)は、処理が完了するまで出力されません。ブロックステータスが出力パラメータ STATUS 「status」()で示されます。処理がエラーなしで行われます。

2012

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
RDREC:Read data record (データレコードの読み出し) (ページ 2005)

4.5.2.3

RDREC を使用した診断データレコードの読み出しプログラム例

概要
次の例では、RDREC を使用して IO デバイスの診断データレコード「16#E00A」を読み出します。断線がトリガされると、エラー情報が診断データレコードとして出力されます。
データレコードに関する追加情報については、データレコードのタイプの概要 (ページ 1995)を参照してください。
注記
診断データレコードの数
エラーをトリガするモジュールの各スロットにより、IO デバイスのモジュール固有のデータレコードが生成されます。そのため、診断データレコードに複数のレコードが含まれることがあります。
この例の目的は、複数のモジュールの複数のハードウェアエラー(チャンネルエラー)を読み出し、メモリ配列の適切な構造体にコピーすることです。メモリ配列(「recordA」、「recordB」)は、指定された設定に基づいて最大 6 つのデータレコードを最大 16 のチャンネルと共に保持することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2013

拡張命令
4.5 リモート I/Oኤዙኜቑ崼ቢ⒉ሺ[ኤዙኜዉነዙኦቑ⚓ኤዙኜዉነዙኦ
ቑ㱚抯⇢ቑ指㔭UHFRUG$>[@\ኞዀዐኪወ峉㠼ቑ㱚抯⇢ቑ指㔭
86,BY>\@86,BY>\@UHFRUG%<7(9HUVLRQ

86,BY>\@UHFRUG%>[@86,BY>\@86,BY>\@9HUVLRQ

86,BY>\@要件
ハードウェアがインストールされていること。

以下のハードウェアが必要です。
• IO コントローラ(S7-1513-1 PN など)• IO デバイス(ET 200MP IM 155-5 PN HF など)• HF タイプの 1 つ以上のデジタル出力モジュール(DQ 4x24VDC HF など)
注記
断線のトリガ断線をトリガする DQ モジュールのチャンネルが配線されていないことを確認してください。
注記
ハードウェアの構成の手順
以下のようにハードウェアを構成します。
1. PROFINET 経由で CPU と IO デバイスを接続し、CPU を IO コントローラとして IO デバイスに割り当てます。
2. 各 DQ モジュールについてパス[プロパティ|出力 0-x|出力|チャンネル 0-y]を開きます。
3. 構成するチャンネルを選択し、[断線]領域の[診断]オプションを選択します。

2014

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
PLC データタイプが作成されていること。

データレコードの転送と保存のために、以下の PLC データタイプが必要です。
• 「A」/「0100」構造体の本文の場合:• 「B」/「0101」構造体の本文の場合:• 「UserStructureIdentifier」からの値に従うタイプ 1 の構造体の場合:
タイプ 1 の構造体が基本チャンネル診断に使用されます。

• 「UserStructureIdentifier」からの値に従うタイプ 2 の構造体の場合:
タイプ 2 の構造体が拡張チャンネル診断に使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2015

拡張命令
4.5 リモート I/O• 「UserStructureIdentifier」からの値に従うタイプ 3 の構造体の場合:
タイプ 3 の構造体が製造元固有のチャンネル診断に使用されます。この例では、構造体の設定は定義されません。この例では、タイプ 3 の長さが 28 バイトと仮定されます。

• 「A」/「0100」構造体の要約の場合:• 「B」/「0101」構造体の要約の場合:

注記
配列のサイズ
配列のサイズ(読み出しメモリ、データレコード、またはチャンネル用の)を変更したい場
合、以下を行う必要があります。
• チャンネル用:配列(「Array[0..y] of USI_v..」) (PLC データタイプ(「RECdiag_0100」、「RECdiag_0101」の)のサイズを調整します。)「maxChannelPos」値(gDB の)を調整します。
• データレコード用:配列(「recordA」、「recordB」)) (gDB の)のサイズを調整します。
「maxRecordPos」値(gDB の)を調整します。
• 読み出しメモリ(「recordBYTE」)用:配列(「recordBYTE」)のサイズと「maxPosition」(gDB の)の値を調整します。診断データレコード「16#E00A」の最大サイズとして 4176 バイトが可能であることに注意してください。

ウォッチテーブルが作成されていること。

断線をトリガするには、ウォッチテーブルの「強制」ファンクションを使用します。
「%QW0」出力の値「16#FFFF」を強制すると、たとえば、この出力を使用して断線が構成されているすべてのチャンネルがハードウェアエラーをトリガします。

2016

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

データの保存グローバルデータブロック(gDB)にデータを保存するために、以下のタグと構造体を作成します。

IO デバイスのヘッドのハードウェア識別子を読み出し、「id」タグを使用してハードウェア
識別子を保存します。[PLC タグ|システム定数]と<Head~IO_Device>などのエントリを使用
して、ヘッダーモジュールのハードウェア識別子を確認できます。使用されるデータタイ
プは「HW_SubModule」です。

FC「SLI_FC_start_RDiag」:パラメータの相互接続
ハードウェア障害に基づいて「RDREC」命令を開始するには、FC「SLI_FC_start_RDiag」を作成します。
FC で以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2017

拡張命令
4.5 リモート I/O

FC「SLI_FC_start_RDiag」を診断割り込み OB (OB82)で呼び出します。

FC「SLI_FC_reset_RDiag」:パラメータの相互接続
エラーの後でプロセス値をリセットするには、FC「SLI_FC_reset_RDiag」を開始します。
FC で以下のローカルタグを作成します。

FC で以下の相互接続を作成します。
ネットワーク 1:プロセス値をリセットするには、以下の相互接続を作成します。パート 1:

パート 2:パート 3:

2018

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パート 4:

ネットワーク 2:「reset」タグをリセットするには、以下の相互接続を作成します。

FB「SLI_FB_chooseStruct_RDiag」:パラメータの相互接続
FB「SLI_FB_chooseStruct_RDiag」を作成します。この FB の目的は、データレコード用の適切な構造体を選択し、そのデータを配列の適切な場所にコピーすることです。
「結果」セクション(「ネットワーク 6」)またはネットワークのコマンドフィールドで追加情報を確認できます(「プログラムコード」を参照)。

FB「SLI_FB_RDREC_Diag」:パラメータの相互接続
FB「SLI_FC_start_RDiag」を作成します。この FB の目的は、「RDREC」命令とその他のすべての後続プロセスを呼び出して処理することです。
FB で以下のローカルタグを作成します。

FB で以下の相互接続を作成します。
ネットワーク 1:FC「SLI_FC_reset_RDiag」を呼び出し、「Label」命令を「RDREC」という名前で作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2019

拡張命令
4.5 リモート I/O

ネットワーク 2:「RDREC」命令のパラメータを以下のように相互接続します。

ネットワーク 3:RDREC エラーが発生した場合にステータスを保存するために、このパラメータを以下のように相互接続します。

ネットワーク 4:RDREC の処理を終了するには、以下の相互接続を作成します。

ネットワーク 5:ネットワーク 1 に戻るには、以下の相互接続を作成します。

2020

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
ネットワーク 6:以下のように FB「SLI_FB_chooseStruct_RDiag」を呼び出します。

FB「SLI_FB_RDREC_Diag」をサイクリック OB (OB1)で呼び出します。

イベント FB「SLI_FB_RDREC_Diag」
ネットワーク 1:

ノーマルオープン(「reset」)のシグナル状態が「TRUE」である場合、FB「SLI_FB_chooseStruct_RDiag」のプロセス値とグローバルデータブロックのプロセス値がリセットされます。
ネットワーク 2:

入力パラメータ REQ 「startRead」()がシグナル状態「TRUE」を返すと、「RDREC」命令が開始されます。
注記「startRead」の呼び出し
OB82 による呼び出しに従って、ハードウェアエラーが検出されるたびに「startRead」が「TRUE」にセットされます。RDREC の成功した呼び出しを「countCalls」タグを使用してカウントすることができます。3 つのチャンネルエラーがトリガされた後の「countCalls」
値は「3」です。
「RDREC」命令は、入力パラメータ ID「id」()を使用して IO デバイスのヘッダーモジュールを呼び出します。入力パラメータ INDEX 「dataRecNbr」()を使用して、IO デバイスの「16#E00A」診断データレコードを呼び出します。
「RDREC」命令は、複数の呼び出しを通じて診断データを読み出し、読み出されたデータ(x個のデータレコード)を RECORD パラメータ(「recordBYTE」)を使用して保存します。読み出されたデータの長さが LEN 出力パラメータ(「#lengthOut」)に記録され、「readLength」タ
グでさらに使用するために保存されます。入力パラメータ MLEN の値 「maxLength」の値(が「0」)に従って、読み出されるデータの長さは制限されません。
処理中に、出力パラメータ BUSY 「busy」()が「TRUE」にセットされ、VALID「checkedValid」()が「FALSE」にセットされます。成功した読み出しの結果(「checkedValid」
が「TRUE」にセットされる)は、処理が完了するまで出力されません。この結果は、FB

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2021

拡張命令
4.5 リモート I/O「SLI_FB_chooseStruct_RDiag」によって開始条件として使用されます。FB「SLI_FB_chooseStruct_RDiag」の処理を終了するために、「checkedValid」タグが「FALSE」にセットされます。
ブロックステータスが出力パラメータ STATUS 「#statusExe」()で示されます。この例では、処理がエラーなしで行われます。

ネットワーク 3:

ノーマルオープン(「error」がシグナル状態「TRUE」を示す場合、エラーが発生すると「memErrStatus」()ステータス(「#statusExe」)が保存されます。「checkedValid」タグと「startRead」タグもリセットされます。RDREC の処理が停止します。FB「SLI_FB_chooseStruct_RDiag」の処理を開始することはできません。
ネットワーク 4:

RDREC が完全に処理されると(「#statusExe」の値が「16#0070_0200」)、「startRead」が「FALSE」にセットされます。RDREC の処理が停止します。
ネットワーク 5:

ノーマルオープン(「startRead」のシグナル状態が「TRUE」である場合、「RDREC」ラベルに従って処理がネットワーク 1 に移動します("JMP"命令によって)。
ネットワーク 6:「checkedValid」タグのシグナル状態が「TRUE」であり、「reset」タグのシグナル状態が「FALSE」である場合、FB「SLI_FB_chooseStruct_RDiag」でソートプロセスが開始されま
す。

2022

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
FB「SLI_FB_chooseStruct_RDiag」では、各データレコードの構造タイプおよび
UserStructureIdentifier に対応する構造タイプが選択されます。データレコードのデータが適切な配列内の正しい位置にコピーされます。また、各データレコードのサイズに応じて処理が複数回繰り返されることがあります。この場合、1 つ以上のチャンネルの情報が読み出されます。
「データレコードの長さ + 先行する長さ」(「#allRecLEN」)が、データレコード内容の処理の終了時における読み出されたすべてのデータの長さ(「readLength」)を下回る場合、FB の処理が最初から再開されます。別のデータレコードが読み出され、その内容が比較され、そのデータが適切な配列内の正しい位置にコピーされます。
ローカルタグ(「#readComplete」、「#dbComplete」、「#limitReach」)およびグローバルタグ「checkedValid」を「FALSE」にセットすることによって、ソートプロセスが完了します。
以下のタグに基づいてソートプロセスが記録されます。
• "data_sorting_done":このタグは、FB「SLI_FB_chooseStruct_RDiag」の処理が完了し終了していることを示します。「checkedValid」がリセットされます。これは、FB の処理を再開できないことを意味します。
• "outputOverflow":この構造体には 3 つのタグが含まれており、それぞれのタグに配列
制限値のさまざまな違反が記録されます。たとえば、対応する配列(「recordA」または「recordB」)の保存容量を超えるデータレコードが読み出されることがあります。
• "different_structs_used":「recordA」と「recordB」の両方を使用して診断データレコー
ドを保存する場合、「different_structs_used」タグが値「TRUE」を返します。
• "countRecs":このタグは、コピーされたデータレコードをカウントします。
• "chooseStruct":このタグは、最後に使用された構造体を示します。値「4」は、データ
レコードが「USI タイプ 1」形式で「recordB」構造体に最後に保存されたことを示します。
• "posForRec":このタグは、データレコード(「recordA」または「recordB」)の配列内の最近使用された位置を保存します。値「1」は、データレコードが最後に「recordB[1]」に保存されたことを示します(「chooseStruct」を参照)。
• "posForChannel":このタグは、チャンネル(「USI_DetailsType[x]」)の配列内の最近使用された位置を保存します。値「0」は、チャンネルが「recordB[1]/USI_DetailsType[0]」に保存されたことを示します(「chooseStruct」および「posForRec」を参照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2023

拡張命令
4.5 リモート I/O

次の図は、2 つの読み出しチャンネルを含む構造体「B」/「0101」が位置「0」「recordB[0]」()にある、データレコードを示しています。
値「16#8000」(「ChannelLocation からの)は、サブモジュールレベルでの診断を示しています。「ChannelErrorType」の値「16#0006」に従って、サブモジュール 1 のチャンネル 0
および 1(「SubSlotNumber」を参照)に断線が存在します。(「SlotNumber」を参照)「ChannelNumber」を参照)(

2024

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
RDREC:Read data record (データレコードの読み出し) (ページ 2005)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2025

拡張命令
4.5 リモート I/O

4.5.3

WRREC:Write data record (データレコードの書き込み)

4.5.3.1

WRREC:Write data record (データレコードの書き込み)

説明「WRREC」命令を使用して、ID によってアドレス指定されたコンポーネントに RECORD データレコードを転送します。これは、基本ラックのモジュール、または分散型コンポーネント(PROFIBUS DP または PROFINET IO)などです。
•

ID パラメータを使用して、書き込まれるデータレコードのモジュールを選択します。ID
パラメータには、モジュールのハードウェア識別子(HW ID)のみを使用します。モジュールのハードウェア識別子は、[PLC タグ|システム定数]で確認できます。たとえば、
S7-1500 DI モジュールの場合、これは、データタイプ「Hw_SubModule」の<DI モジ
ュールの名前>として示されます。

• INDEX パラメータを使用して、書き込まれるデータを選択します。どのデータレコード
番号でどのデータレコードを書き込むことができるかは、モジュールによって決まります。これに関する追加情報については、関連するモジュールのマニュアルを参照してください。
• LEN を使用して、データレコードの長さをバイトで指定します。ソース領域 RECORD (少なくとも LEN バイトの長さの)を選択します。
• 出力パラメータ DONE の値 TRUE は、データレコードが問題なく転送されたことを示します。
• データレコードの転送中にエラーが発生した場合、これは出力パラメータ ERROR で示されます。この場合、出力パラメータ STATUS にはエラー情報が含まれます。
注記「WRREC」命令のインターフェースは「WRREC」FB (規格「PROFIBUS and PROFINET
Guideline Communication Function Blocks on PROFIBUS DP and PROFINET IO」で定義されている)のインターフェースと同一です。

ファンクションの説明「WRREC」非同期命令です。複数のセルにわたって処理が行われます。呼び出しデータレ
コードの転送は、REQ =1 で「WRREC」を呼び出して開始します。

2026

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
ジョブステータスは、出力パラメータ BUSY と出力パラメータ STATUS の 2 つの中央のバイトで表示されます。STATUS の中央の 2 バイトは、非同期で動作する命令の RET_VAL 出
力パラメータに対応します。
関連項目: 同期命令と非同期命令の相違 (ページ 29)。
1 つの同じジョブに属するすべての「WRREC」呼び出しの RECORD の実際のパラメータに同じ値を割り当てなければならないことに注意してください。LEN の実パラメータにも、これが適用されます。
データレコードの転送は、出力パラメータ BUSY が値 FALSE を持つときに完了します。

S7-1500-R/H システムの SYNCUP システム状態での WRREC の呼び出し
S7-1500-R/H システムの SYNCUP システム状態で WRREC 命令を呼び出すと、必ずエラー
コード 0x7001 および 0x7002 が返されます。エラーが発生している場合でも、たとえばデータレコードターゲットが存在していなくても他のエラーコードは提供されません。この場合、SYNCUP が終了していないと正しいエラーコードが提供されません。
SYNCUP システム状態の動的動作では、WRREC を周期的に呼び出す必要があります。

パラメータ
以下の表に、「WRREC」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域
**

REQ

Input

BOOL

説明

I、Q、M、D、L、 REQ = 1:データレコードの転送
T*、C*、または定
数

ID

Input

HW_IO

I、Q、M、D、L、 ハードウェアコンポーネント(DP/または定数

PROFINET IO)の ID 番号
番号は自動的に割り当てられ、コンポー
ネントのプロパティまたはハードウェア
コンフィグレーションのインターフェースに保存されます。

INDEX

Input

DINT

I、Q、M、D、L、 データレコード番号
または定数

LEN

Input

UINT

I、Q、M、D、L、 (非表示)または定数転送するデータレコードの最大長(バイト)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2027

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイプ メモリ領域
**

説明

DONE

Output

BOOL

I、Q、M、D、L

データレコードが転送されました。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:書き込みプロセスが未完了で
す。

ERROR

Output

BOOL

I、Q、M、D、L

ERROR = 1:書き込みプロセス中にエラーが発生しました。

STATUS

Output

DWORD

I、Q、M、D、L

ブロックステータスまたはエラー情報
STATUS パラメータの解釈については、
以下を参照してください。

RECORDInOut

VARIANT

I、Q、M、D、L

データレコード* S7-1500 の場合のみ。
** STL には暗黙的な変換がないため、有効なデータタイプの範囲が限定される場合があります。STL でのプログラミング時には、有効なデータタイプに注意してください。有効なデータタイプは、パラメータの操作ヒントに表示されます。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記「WRREC」を使用して PROFINET IO のデータレコードを書き込む場合、INDEX および LEN
パラメータの負の値は、符号なしの 16 ビットの整数として解釈されます。

パラメータ STATUS
SIEMENS モジュールの場合、値 DW#16#DF80E0xy、DF80E1xy、および DF80E200 の意
味を以下の表に示します。STATUS[3]および STATUS[4]の指定値では、STATUS は
ARRAY[1...4] of BYTE として解釈されます。

2028

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O意味

Error_Co Error_Co エラーの詳細な原因
de_1
de_2
=
STATUS[
3]=
STATUS[4](B#16# .. (B#16# ..
.).)無効なデータレコー E000

詳細情報なしド構造体

01

バージョンの不一致

02

ヘッダーの長さが無効

03

ヘッダーセクション(I&M ブロックヘッダー
セクション)のブロックタイプが不正

04～FF

予約済み

無効なユーザーパラ E100

詳細情報なしメータ

01～FF

無効なパラメータ 1～255

00

この OB コンテキスト内ではデータレコー

不正なパラメータ

E2

ドを処理できません。

SIEMENS 製モジュールの STATUS のその他すべての値、および SIEMENS 製ではないモジ
ュールの STATUS のその他すべての値の解釈については、パラメータ STATUS (ページ 2079)
を参照してください。

例
例が WRREC および RDREC を用いたパラメータデータレコードのプログラム例の使用 (ページ 2030)に記載されています。
別の例が WRREC および RDREC を用いた制御データレコードのプログラム例の使用 (ページ 2040)に記載されています。
これらの例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプル
ライブラリ (ページ 25)

下記も参照
データレコードのタイプの概要 (ページ 1995)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2029

拡張命令
4.5 リモート I/O

4.5.3.2

WRREC および RDREC を用いたパラメータデータレコードのプログラム例の使用

概要
次の例では、RDREC を使用してデジタル入力モジュールのパラメータデータレコードを読
み出し、WRREC を使用してデータレコードを再書き込みします。これを行うとき、入力遅延を変更します。
データレコードに関する追加情報については、データレコードのタイプの概要 (ページ 1995)を参照してください。

要件
グローバルデータブロックにデータを保存するために、以下のタグを作成します。
• 一般用途の 2 つのタグと WRREC 用の 7 つのタグ

• WRREC でのデータレコード用の構造体

2030

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O• RDREC 用の 8 つのタグ

• RDREC でのデータレコード用の構造体「SLI_FB_WRREC_Para」FB で以下のローカルタグを作成します。

パラメータの相互接続: 「SLI_itemisePara_WRREC_Para」FC
ビットシーケンスの値(0..7)を転送するために、FC「SLI_itemisePara_WRREC_Para」を作成します。
この FC で以下のローカルタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2031

拡張命令
4.5 リモート I/O

ネットワーク 1:ネットワーク 1 の例に従って、すべてのビット(0..7)の相互接続を作成します。

パラメータの相互接続: 「SLI_FB_WRREC_Para」FB「SLI_FB_WRREC_Para」FB で以下の相互接続を作成します。
ネットワーク 1:「RDREC」命令のパラメータを以下のように相互接続します。

2032

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 2:以下のように構造体「#readBYTE」のすべてのタグを構造体「readParaRecord」と相互接続します。ネットワークのパート 1:

ネットワークのパート 2:次の例に従ってタグ「ClearanceDiagnosis」と「InputDelay_ProcessEvent」を相互接続します。

ネットワーク 3:次に、RDREC のエラー状況用のタグを相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2033

拡張命令
4.5 リモート I/O

ネットワーク 4:次に、RDREC を終了するためのタグを相互接続します。

ネットワーク 5:以下のように構造体「writeParaRecord」のすべてのタグを構造体「#writeBYTE」と相互接続します。ネットワークのパート 1:

ネットワークのパート 2:

ネットワーク 6:「WRREC」命令のパラメータを以下のように相互接続します。

2034

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 7:次に、WRREC のエラー状況用のタグを相互接続します。

ネットワーク 8:次に、WRREC を終了して RDREC を再び呼び出すためのタグを相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2035

拡張命令
4.5 リモート I/O

ネットワーク 1 の結果:
入力モジュールを作成し、入力モジュールのプロパティでハードウェア ID を読み出します。入力パラメータ ID「id」()を使用してハードウェア識別子を保存します。入力パラメータ
INDEX 「dataRecNbr」()を使用して、モジュールの番号「3」のデータレコードが呼び出されます。データレコードは、同じ名前のチャンネルに対応します。

入力パラメータ REQ 「startRead」()がシグナル状態「TRUE」を返すと、「RDREC」命令が開始されます。入力パラメータ ID「id」()を使用して、命令「RDREC」が入力モジュールを呼び出します。
複数の呼び出しを通じて、「RDREC」命令がデータレコードを読み出し、パラメータ
RECORD 「#readBYTE」()を使用してそのデータレコードを保存します。読み出されたデー
タレコードの長さが、出力パラメータ LEN「#readLength」()を使用して保存されます。入力
パラメータ MLEN「maxReadLength」()の値に応じて、読み出されるデータレコード情報が 4バイトに制限されます。
処理中に、出力パラメータ BUSY 「readBusy」()が「TRUE」にセットされ、VALID「#readCheck」()が「FALSE」にセットされます。
処理が完了すると、成功した読み出しの結果が以下のように出力されます。
• 出力パラメータ VALID 「#readCheck」()が「TRUE」にセットされ、タグ「readCheckedValid」が恒久的に「TRUE」にセットされます。
• これに加え、ローカルタグ「#readLength」の値がタグ「readLength」に恒久的に保存されます。
ブロックステータスが出力パラメータ STATUS 「readStatus」()で示されます。処理がエラーなしで行われます。

2036

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 2 の結果:
MOVE 命令および FC SLI_itemisePara_WRREC_Para を使用して、構造体「#readBYTE」がタグの値を同じ名前の構造体「readParaRecord」のタグに転送します。理解しやすいように、「readParaRecord」構造体のタグは記述名によって表されます。この構造体の説明がモジュールのデバイスマニュアルに記載されています。たとえば、「InputDelay_ProcessEvent」は 3.2 ミリ秒の入力遅延を示します。チャンネルのステータス「ClearanceDiagnosis」()では、中断は出力されません(ビット 0～8 が「FALSE」)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2037

拡張命令
4.5 リモート I/O

ネットワーク 3 の結果:
「readError」がシグナル状態「TRUE」を示す場合、タグ「readStatus」の値がタグ「reMemErrStat」に保存されます。

ネットワーク 4 の結果:
命令「RDREC」が実行されている場合、「readStatus」の値が「16#0070_0200」になります。その後で、タグ「startRead」が「FALSE」にリセットされます。

ネットワーク 5 の結果:
MOVE 命令および FC SLI_itemisePara_WRREC_Para を使用して、構造体「writeParaRecord」がタグの値を同じ名前の構造体「#writeBYTE」のタグに転送します。
理解しやすいように、「writeParaRecord」構造体のタグは記述名によって表されます。

ネットワーク 6 の結果:
入力パラメータ REQ 「startWrite」()がシグナル状態「TRUE」を返すと、「WRREC」命令が開始されます。
データレコードの新しいデータが RECORD 「#writeBYTE」()パラメータで保存されます。複数の呼び出しを通じて、命令「WRREC」が新しいデータをデータレコード「3」に書き込みます。入力パラメータ LEN 「maxWriteLength」()の値に応じて、書き込まれるデータレコ
ード情報が 4 バイトに制限されます。
処理中に、出力パラメータ BUSY 「writeBusy」()が「TRUE」にセットされ、DONE「#writeCheck」()が「FALSE」にセットされます。
処理が完了すると、成功した書き込みの結果が以下のように出力されます。
• 出力パラメータ DONE 「#writeCheck」()が「TRUE」にセットされます。
• 「#writeCheck」がシグナル状態「TRUE」を示す場合、タグ「writeCheckedValid」が恒久的に「TRUE」にセットされます。
ブロックステータスが出力パラメータ STATUS 「writeStatus」()で示されます。処理がエラ
ーなしで行われます。

2038

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 7 の結果:
「writeError」がシグナル状態「TRUE」を示す場合、タグ「writeStatus」の値がタグ「wrMemErrStat」に保存されます。

ネットワーク 8 の結果:
命令「WRREC」が実行されている場合、「writeStatus」の値が「16#0070_0200」になります。その後で、タグ「startWrite」が「FALSE」にリセットされます。タグ「startRead」
が「TRUE」セットされ、その後で命令「RDREC」が再び実行されます。構造体「readParaRecord」に、データレコードの新しく書き込まれた値が示されます。
「InputDelay_ProcessEvent」でビット 0 がシグナル状態「TRUE」を示しているため、チャンネル 3 の入力遅延が 0.1 ミリ秒になります。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
WRREC:Write data record (データレコードの書き込み) (ページ 2026)
RDREC:Read data record (データレコードの読み出し) (ページ 2005)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2039

拡張命令
4.5 リモート I/O

4.5.3.3

WRREC および RDREC を用いた制御データレコードのプログラム例の使用

概要
次の例では、制御データレコード 196 を書き込み(WRREC を使用して)、RDREC を使用してデータレコードを読み出すことによってこの制御データレコードをチェックします。構成
のために、S7-1500 の中央セットアップを選択してください。
データレコードに関する追加情報については、データレコードのタイプの概要 (ページ 1995)を参照してください。

要件
注記
構成制御の有効化
制御データレコードを書き込むには、CPU の構成制御(オプション処理)を有効にする必要があります。この手順については、[CPU のプロパティ|構成制御]を参照してください。

2040

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
グローバルデータブロックにデータを保存するために、以下のタグを作成します。
• 一般用途の 3 つのタグと WRREC 用の 6 つのタグ

• WRREC (データレコード 196)でのデータ用の構造体

データレコードの構造は以下のとおりです。
– 「BlockLength」はデータレコードの長さ(Byte)を示します。
–「BlockID」はデータレコード番号を示します。

– 「Version」は構造体のタイプを示します。たとえば、中央構造体が使用されます。中央構造体では、「Subversion」の値は「0」です。
– 「Slot_0」～「Slot_..」は、使用されているスロットに対応します。スロットの値は、使用される番号付けを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2041

拡張命令
4.5 リモート I/O• RDREC 用の 6 つのタグ

• RDREC でのデータ用の構造体制御データレコードを書き込むための命令「WRREC」をスタートアップ OB で呼び出す必要があります。スタートアップ OB で、データを渡すための以下のローカルタグを作成します。

FB で以下のローカルタグを作成します。プログラムサイクル OB (OB1)で FB を呼び出し
ます。

2042

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

スタートアップ OB でのパラメータの相互接続
ネットワーク 1:「WRREC」命令のパラメータを以下のように相互接続します。

ネットワーク 2:次に、WRREC のエラー状況用のパラメータを相互接続します。

ネットワーク 3:次に、WRREC を終了するためのパラメータを相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2043

拡張命令
4.5 リモート I/O

ネットワーク 4:この後で、WRREC の繰り返し呼び出しを要求するためのパラメータを相互接続します。

2044

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

FB でのパラメータの相互接続
ネットワーク 1:「RDREC」命令のパラメータを以下のように相互接続します。

ネットワーク 2:次に、RDREC のエラー状況用のパラメータを相互接続します。

ネットワーク 3:次に、RDREC を終了するためのパラメータを相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2045

拡張命令
4.5 リモート I/O

全般パラメータ
CPU の構成のハードウェア識別子(「33」)を入力パラメータ ID 「id」()を使用して保存します。
制御データレコード(「196」)を入力パラメータ INDEX 「dataRecNbr」()を使用して保存します。タグ「maxLength」の値(値が「0」)に従って、考慮されるデータレコード情報の量に制限はありません。
注記
スタートアップ中の CPU のロードとプログラムの処理
1. CPU を「STOP」モードに設定します。その後、CPU 内にプログラムをロードします。
2. プロジェクトを「オンライン」モードに設定します。
3. CPU を「RUN」モードに設定します。「スタートアップ」モードが処理されます。

「スタートアップ」モードでは、スタートアップ OB 内にあるプログラムセクションを CPUが処理します。

スタートアップ OB:ネットワーク 1 の結果
入力パラメータ REQ がシグナル状態「TRUE」を示しているため、「WRREC」命令が開始されます。ノーマルクローズ(「configDone」のシグナル状態は「FALSE」です。
制御データレコードのデータが RECORD 「recConfigCtrl_WR」()パラメータで保存されます。
理解しやすいように、「recConfigCtrl_WR」構造体のタグは明快な名前によって表され、システムマニュアルに記載されているのと同じ構造を持ちます。

2046

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

複数の呼び出しを通じて、命令「WRREC」が新しいデータを制御データレコードに書き込
みます。WRREC の処理中に、出力パラメータ BUSY 「busyWR」()が「TRUE」にセットされ、DONE 「#checkWR」()が「FALSE」にセットされます。
処理が完了すると、成功した書き込みの結果が以下のように出力されます。
• 出力パラメータ DONE 「#checkWR」()が「TRUE」にセットされ、タグ「checkedValid_WR」が恒久的に「TRUE」にセットされます。
ブロックステータスが出力パラメータ STATUS 「statusWR」()で示されます。処理がエラーなしで行われます。

スタートアップ OB:ネットワーク 2 の結果
WRREC の処理時にエラーが発生した場合「errorWR」がシグナル状態「TRUE」を示す場合、タグ「statusWR」の値がタグ「memErrStatusWR」に保存されます。

スタートアップ OB:ネットワーク 3 の結果
命令「WRREC」が実行されている場合、「statusWR」の値が「16#0070_0200」になります。次に、タグ「configDone」が「TRUE」にセットされます。これで WRREC の処理が終わります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2047

拡張命令
4.5 リモート I/O

スタートアップ OB:ネットワーク 4 の結果「WRREC」命令の処理がまだ終了していない(「configDone」の値が「FALSE」で、「busyWR」の値が「TRUE」である)限り、処理がネットワーク 1 に戻ります。

FB:ネットワーク 1 の結果
スタートアップ OB 内にあるプログラムセクションの処理後、CPU は「RUN」モードになります。
入力パラメータ EN 「configDone」()がシグナル状態「TRUE」を示す場合、「RDREC」命令が処理のために解放されます。入力パラメータ REQ 「startRead」()がシグナル状態「TRUE」を返すと、「RDREC」命令が開始されます。
複数の呼び出しを通じて、「RDREC」命令が制御データレコードを読み出し、パラメータ
RECORD 「recConfigCtrl_RD」()を使用してデータレコードを保存します。

読み出されたデータレコードの長さが、出力パラメータ LEN 「#readLength」()を使用して保存されます。RDREC の処理中に、出力パラメータ BUSY 「busyRD」()が「TRUE」にセットされ、VALID 「#checkRD」()が「FALSE」にセットされます。
処理が完了すると、成功した読み出しの結果が以下のように出力されます。
• 出力パラメータ VALID「#checkRD」()が「TRUE」にセットされます。次に、#checkRD がタグ「checkedValid_RD」を恒久的に「TRUE」にセットします。
• これに加え、ローカルタグ「#lengthRD」の値がタグ「lengthRD」に恒久的に保存されます。
ブロックステータスが出力パラメータ STATUS 「statusRD」()で示されます。処理がエラーなしで行われます。

2048

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

FB:ネットワーク 2 の結果
RDREC の処理中にエラーが発生した場合「errorRD」がシグナル状態「TRUE」を示す場合、タグ「statusRD」の値がローカルタグ「#memErrStatus」に保存されます。

FB:ネットワーク 3 の結果
命令「RDREC」が実行され、データがチェックされている場合、「#checkRD」の値が「TRUE」になります。次に、タグ「startRead」が「FALSE」にセットされます。次に、「RDREC」命令の実行が終了します。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
WRREC:Write data record (データレコードの書き込み) (ページ 2026)
RDREC:Read data record (データレコードの読み出し) (ページ 2005)

4.5.4

GETIO:サブモジュールのすべての入力の読み取り

説明「GETIO」命令を使用し、DP 標準スレーブ/PROFINET IO デバイスのサブモジュールのすべての入力を連続して読み出します。データ伝送中にエラーがなかった場合、読み出されたデータは INPUTS で示された宛先領域に入力されます。
宛先領域には以下が適用されます。
• 選択したコンポーネントに対して 1 バイト長を設定している場合、宛先領域は 1 バイト
以上の長さであることが必要です。
• 選択したコンポーネントに対して複数バイト長を設定している場合、宛先領域は設定されたバイト数以上の長さであることが必要です。
モジュール型構成または複数の DP 識別子を持つ DP 標準スレーブから読み出しを行う場合、設定された開始アドレスでアクセスできるのは、「GETIO」呼び出し当たり 1 つのコンポーネント/DP 識別子のデータのみです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2049

拡張命令
4.5 リモート I/O

パラメータ
以下の表に、「GETIO」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ID

Input

HW_SUBMO

I、Q、M、D、L、ま サブモジュールのハードウェア ID

DULE

たは定数

STATUS

Output

DWORD

I、Q、M、D、L

エラー情報

LEN

Output

INT

I、Q、M、D、L

読み出されたデータ量(バイト)

INPUTSInOut

VARIANT

I、Q、M、D、L

読み出されたデータのコピー先の領域。選択したサブモジュールに対して設定した長さ以上であることが必要です。
データタイプ BYTE または ARRAY of
BYTE のみを使用することを推奨します。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコー
ド*(DW#16#...
)

説明

40000000

エラーは発生しませんでした

40809000

ID パラメータでハードウェア ID をアドレスとして指定していません。

40809200

パラメータ INPUTS のデータタイプがサポートされていません(Wchar、Array of Wchar 、Wstring、または Array of Wstring)40809300

ID によってアドレス指定されているサブモジュールに入力がありません。

4080A000

I/O にアクセスしたときアクセスエラーが検出されました。

4080B100

パラメータ INPUTS で指定された宛先領域の長さが、設定したユーザーデータの長さよりも短くなっています。

2050

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコー
ド*(DW#16#...
)

説明

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、GETIO および SETIO のプログラム例 (ページ 2053)を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプルライ
ブラリ (ページ 25)

下記も参照
DPRD_DAT:DP スレーブの整合性のあるデータ読み出し (ページ 2164)

4.5.5

SETIO:サブモジュールのすべての入力の書き込み

説明「SETIO」命令を使用して、データを連続的にソース領域からサブモジュールの出力へ、および対応するプロセスイメージ出力へと転送します。
ソース領域は、選択したサブモジュールに対して設定した長さ以上であることが必要です。
モジュール型構成または複数の DP 識別子を持つ DP 標準スレーブ/PROFINET IO デバイスの場合、「SETIO」呼び出しあたりアクセスできるのは 1 つの DP 識別子/コンポーネントのみです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2051

拡張命令
4.5 リモート I/O

パラメータ
以下の表に、「SETIO」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

ID

Input

HW_SUBMOD

I、Q、M、D、L、 サブモジュールのハードウェア ID

ULE

または定数

STATUS

Output

DWORD

I、Q、M、D、L

エラー情報

OUTPUTSInOut

VARIANT

I、Q、M、D、L

書き込まれるデータのソース範囲。
選択したサブモジュールに対して設定した長さ以上であることが必要です。
データタイプ BYTE または ARRAY of
BYTE のみを使用することを推奨します。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコー
ド*(DW#16#...
)

説明

40000000

エラーは発生しませんでした

40809000

ID パラメータでハードウェア ID をアドレスとして指定していません。

40809200

パラメータ OUTPUTS のデータタイプがサポートされていません(Wchar、Array of Wchar 、Wstring、または Array of Wstring)40809300

ID によってアドレス指定されているサブモジュールに出力がありません。

4080A000

I/O にアクセスしたときアクセスエラーが検出されました。

4080B100OUTPUTS パラメータで指定されたソース領域の長さが、出力の長さよりも短くなっています。

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2052

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

例
例は、GETIO および SETIO のプログラム例 (ページ 2053)を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプルライ
ブラリ (ページ 25)

下記も参照
DPWR_DAT:DP スレーブのコンスタントデータの書き込み (ページ 2166)

4.5.6

GETIO および SETIO のプログラム例

概要
次の例では、GETIO を使用してデジタル入力モジュールのチャンネルを読み出し、SETIO を使用して新しい値をデジタル出力モジュールのチャンネルに書き込みます。次に、GETIO
およびデジタル入力モジュールを使用して変更を読み出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2053

拡張命令
4.5 リモート I/O

要件• デジタル入力モジュールおよびデジタル出力モジュールを使用して、IO デバイス/DP ス
レーブが作成されます。
注記
SETIO を使用した変更、GETIO を使用した変更の読み出し
SETIO および GETIO を使用して、書き込まれた値を読み出すためには、デジタル入力モ
ジュールをデジタル出力モジュールに接続する必要があります。
• データを保存するために、グローバルデータブロックで 9 つのタグと 2 つの構造体「readinputs」および「writeOutputs」を作成します。
タグ「id_Read」を使用して、デジタル入力モジュールのハードウェア識別子を保存します。タグ「id_Write」を使用して、デジタル出力モジュールのハードウェア識別子を保存します。
注記
ハードウェア識別子の検出[PLC タグ|システム定数]を使用して、ハードウェア識別子を検出します。たとえば、デジタル入力モジュールの場合、「Local~<DI モジュールの名前>」を検索します(データ
タイプ「HW_Submodule」を使用して)。関連するセル「値」にハードウェア識別子が含まれます。

2054

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O• データを転送するために、「SLI_FB_GETIO_SETIO」FB で以下のローカルタグを作成します。

• チャンネル状態を変更するために、グローバルデータブロックの以下のビット(チャンネル 1 および 2)を「TRUE」にセットします。

パラメータの相互接続: 「SLI_itemiseByte_gsIO」FC
ビットシーケンスの値(0..7)を転送するために、FC「SLI_itemiseByte_gsIO」を作成します。
この FC で以下のローカルタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2055

拡張命令
4.5 リモート I/O

ネットワーク 1:ネットワーク 1 の例に従って、すべてのビット(0..7)の相互接続を作成します。

パラメータの相互接続: 「SLI_FB_GETIO_SETIO」FB「SLI_FB_GETIO_SETIO」FB で以下の相互接続を作成します。次に、IO デバイス/DP スレー
ブで、FB「SLI_FB_GETIO_SETIO」をプログラムサイクル OB (OB1)で呼び出します。
ネットワーク 1:「GETIO」命令のパラメータを以下のように相互接続します。

2056

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 2:命令「GETIO」を以下のように閉じます。

ネットワーク 3:GETIO のチャンネル値を変換するために、以下の例に従って相互接続を作成します。この例では、「SLI_itemiseByte_gsIO」FC のすべての入力と出力(0..7)が相互接続されます。

ネットワーク 4:SETIO のチャンネル値を変換するために、以下の例に従って相互接続を作成します。この例では、「SLI_itemiseByte_gsIO」FC のすべての入力と出力(0..7)が相互接続されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2057

拡張命令
4.5 リモート I/O

ネットワーク 5:「SETIO」命令のパラメータを以下のように相互接続します。

ネットワーク 6:命令「SETIO」を以下のように閉じます。

ネットワーク 1 の結果(GETIO)
入力パラメータ EN 「executeRead」()がシグナル状態「TRUE」を返すと、「GETIO」命令が開始されます。命令「GETIO」が入力パラメータ ID 「id_Read」()を使用して、入力モジュールを呼び出します。入力パラメータ INPUTS 「#readBYTE」()を使用して、入力モジュールのチャンネルが読み出されます。読み出しチャンネルの長さ(BYTE)が出力パラメータ LEN「lengthRead」()で記録されます。値「2」は 16 の入力チャンネルを示します。
ブロックステータスが出力パラメータ STATUS 「statusRead」()で示されます。処理がエラ
ーなしで行われます。

2058

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 2 の結果(GETIO)
命令「GETIO」が実行されている場合、出力パラメータ ENO 「doneRead」()がシグナル状態「TRUE」を返します。その後で、タグ「executeRead」が「FALSE」リセットされ、「GETIO」の処理が終了します。

ネットワーク 3 の結果(GETIO)FC SLI_itemiseByte_gsIO を使用して、構造体「#readBYTE」がタグの値を構造体「readInputs」のタグに転送します。これにより、チャンネル 0～7 および 8～15 の値が
BYTE から BOOL の配列に変換されます。
理解しやすいように、「readInputs」構造体のタグは記述名によって表されます。

ネットワーク 4 の結果(SETIO)FC SLI_itemiseByte_gsIO を使用して、構造体「writeOutputs」がタグの値を構造体「#writeBYTE」のタグに転送します。チャンネル 0～7 および 8～15 の値が BOOL の配列
から BYTE に変換されます。
理解しやすいように、「writeOutputs」構造体のタグは記述名によって表されます。

ネットワーク 5 の結果(SETIO)
入力パラメータ EN 「executeWrite」()がシグナル状態「TRUE」を返すと、「SETIO」命令が開始されます。命令「SETIO」が入力パラメータ ID 「id_Write」()を使用して、出力モジュールを呼び出します。入力パラメータ OUTPUTS 「#writeBYTE」()を使用して、新しい値が出
力モジュールのチャンネルに書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2059

拡張命令
4.5 リモート I/O
ブロックステータスが出力パラメータ STATUS 「statusWrite」()で示されます。処理がエラ
ーなしで行われます。

ネットワーク 6 の結果(SETIO)
命令「SETIO」が実行されている場合、出力パラメータ ENO 「doneWrite」()がシグナル状態「TRUE」を返します。その後で、タグ「executeWrite」が「FALSE」にリセットされ、「SETIO」の処理が終了します。

GETIO の再処理の結果
タグ「executeRead」が「TRUE」にリセットされると、構造体「readInputs」は、GETIOの実行後の入力モジュールのチャンネル上の新しい値を示します。チャンネル 1 および 2「Channel_0-7[1]..[2]」()がシグナル状態「TRUE」を返します。

2060

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

注記
チャンネルのシグナル状態の変更
シグナル状態が変更されるチャンネルに値が既に割り当てられている(たとえば、PLC タグによって)場合、この事前割り当てによって、SETIO による変更が無効になることがあります。変更されるチャンネルのシグナル状態が他の要因によってまだ決定されていないことを確認してください。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
GETIO:サブモジュールのすべての入力の読み取り (ページ 2049)
SETIO:サブモジュールのすべての入力の書き込み (ページ 2051)

4.5.7

GETIO_PART:サブモジュールの入力の読み取り

説明「GETIO_PART」命令を使用し、サブモジュールの入力の関連部分を連続して読み出します。
ID 入力パラメータを使用し、サブモジュールを選択します。
OFFSET および LEN パラメータを使用し、読み出されるサブモジュール入力のサブセットを指定します。
宛先領域の長さは、読み出されるバイト数以上であることが必要です。
• データ転送中にエラーが発生しなかった場合、ERROR は値 FALSE を受信します。読み出されるデータは、INPUTS パラメータで定義された宛先領域に書き込まれます。
• データ転送中にエラーが発生した場合、ERROR は値 TRUE を受信します。STATUS パラ
メータには、エラー情報が含まれます。
• 宛先領域が LEN を超える場合、宛先領域の最初の LEN バイトが書き込まれます。ERROR
は値 FALSE を受信します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2061

拡張命令
4.5 リモート I/O

パラメータ
以下の表に、「GETIO_PART」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

ID

Input

HW_SUBMOD I、Q、M、D、L、ま サブモジュールのハードウェア ID

OFFSET

Input

ULE

たは定数

INT

I、Q、M、D、L、ま 読み出されるサブモジュールの最初
たは定数

LEN

Input

説明

INT

のバイトの番号(最小値:0)

I、Q、M、D、L、ま 読み出されるバイト数。
たは定数

STATUS

Output

DWORD

I、Q、M、D、L

ERROR = TRUE の場合、エラー情報

ERROR

Output

BOOL

I、Q、M、D、L

エラー表示: エラーが発生した場
合、ERROR = TRUEINPUTSInOut

VARIANT

I、Q、M、D、L

読み出したデータのターゲット範囲です。
宛先領域が LEN を超える場合、宛先領域の最初の LEN バイトが書き込まれます。
データタイプ BYTE または ARRAY of
BYTE のみを使用することを推奨します。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコー
ド*(DW#16#...
)

説明

40000000

エラーは発生しませんでした

40809000

ID パラメータでハードウェア ID をアドレスとして指定していません。

40809200

パラメータ INPUTS のデータタイプがサポートされていません(Wchar、Array of Wchar 、Wstring、または Array of Wstring)40809300

ID によってアドレス指定されているサブモジュールに入力がありません。

4080A000

I/O にアクセスしたときアクセスエラーが検出されました。

2062

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコー
ド*(DW#16#...
)

説明

4080B100

パラメータ INPUTS で指定された宛先領域の長さが、LEN で指定したデータの長さよりも短くなっています。

4080B700

OFFSET から LEN までの領域が、サブモジュールによって完全にカバーされていません。

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、GETIO_PART および SETIO_PART のプログラム例 (ページ 2066)を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプルライ
ブラリ (ページ 25)

下記も参照
DPRD_DAT:DP スレーブの整合性のあるデータ読み出し (ページ 2164)

4.5.8

SETIO_PART:サブモジュールの入力の書き込み

説明「SETIO_PART」命令を使用して、データを連続的にソース領域からサブモジュールの出力へ、および対応するプロセスイメージ出力へと書き込みます。
入力パラメータ ID を使用して、サブモジュールを選択します。
パラメータ OFFSET および LEN を使用して、書き出すサブモジュール出力およびプロセス
イメージ出力のサブセットを指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2063

拡張命令
4.5 リモート I/O
ソース領域の長さは、書き込まれるバイト数以上であることが必要です。
• データ転送中にエラーが発生しなかった場合、ERROR は値 FALSE を受信します。
• データ転送中にエラーが発生した場合、ERROR は値 TRUE を受信します。STATUS パラ
メータには、エラー情報が含まれます。
• ソース領域が LEN を超える場合、LEN からの最初の OUTPUTS バイトが転送されます。
ERROR は値 FALSE を受信します。

パラメータ
以下の表に、「SETIO_PART」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

ID

Input

HW_SUBMO I、Q、M、D、L、ま サブモジュールのハードウェア ID

OFFSET

Input

メモリ領域

DULE

たは定数

INT

I、Q、M、D、L、ま サブモジュールに書き込まれる最初の
たは定数

LEN

Input

説明

INT

バイトの番号(最小値:0)。

I、Q、M、D、L、ま 書き込まれるバイト数
たは定数

STATUS

Output

DWORD

I、Q、M、D、L

ERROR = TRUE の場合、エラー情報

ERROR

Output

BOOL

I、Q、M、D、L

エラー表示: エラーが発生した場合、
ERROR = TRUEOUTPUTSInOut

VARIANT

I、Q、M、D、L

書き込まれるデータのソース範囲。
ソース領域が LEN を超える場合、最初の LEN バイトが OUTPUTS から転送されます。
データタイプ BYTE または ARRAY of
BYTE のみを使用することを推奨します。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2064

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パラメータ STATUS
エラーコー
ド*(DW#16#...
)

説明

40000000

エラーは発生しませんでした

40809000

ID パラメータでハードウェア ID をアドレスとして指定していません。

40809200

パラメータ OUTPUTS のデータタイプがサポートされていません(Wchar、Array of Wchar 、Wstring、または Array of Wstring)40809300

ID によってアドレス指定されているサブモジュールに出力がありません。

4080A000

I/O にアクセスしたときアクセスエラーが検出されました。

4080B100

パラメータ OUTPUTS で指定されているソース領域の長さが、LEN で指定されているデータの長さよりも短くなっています。

4080B700

OFFSET から LEN までの領域が、サブモジュールによって完全にカバーされていません。

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、GETIO_PART および SETIO_PART のプログラム例 (ページ 2066)を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプルライ
ブラリ (ページ 25)

下記も参照
DPWR_DAT:DP スレーブのコンスタントデータの書き込み (ページ 2166)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2065

拡張命令
4.5 リモート I/O

4.5.9

GETIO_PART および SETIO_PART のプログラム例

概要
次の例では、GETIO_PART を使用してデジタル入力モジュールのチャンネルを読み出し、
SETIO_PART を使用して新しい値をデジタル出力モジュールのチャンネルの一部に書き込みます。次に、GETIO_PART およびデジタル入力モジュールを使用して変更を読み出します。

2066

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

要件• デジタル入力モジュールおよびデジタル出力モジュールを使用して、IO デバイス/DP ス
レーブが作成されます。
注記
SETIO_PART を使用した変更、GETIO_PART を使用した変更の読み出し
SETIO_PART および GETIO_PART を使用して、書き込まれた値を読み出すためには、デジタル入力モジュールをデジタル出力モジュールに接続する必要があります。
• データを保存するために、グローバルデータブロックで 14 のタグと 2 つの構造体「readinputs」および「writeOutputs」を作成します。
タグ「id_Read」を使用して、デジタル入力モジュールのハードウェア識別子を保存します。タグ「id_Write」を使用して、デジタル出力モジュールのハードウェア識別子を保存します。
注記
ハードウェア識別子の検出[PLC タグ|システム定数]を使用して、ハードウェア識別子を検出します。たとえば、デジタル入力モジュールの場合、「Local~<DI モジュールの名前>」を検索します(データ
タイプ「HW_Submodule」を使用して)。関連するセル「値」にハードウェア識別子が含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2067

拡張命令
4.5 リモート I/O• チャンネル状態を変更する(BYTE を 0、および BYTE を 1)には、グローバルデータブロ
ック内で以下のビットを「TRUE」にセットします。

• データを転送するために、「SLI_FB_GETIO_SETIO_PART」FB で以下のローカルタグを作
成します。

2068

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パラメータの相互接続: 「SLI_itemiseByte_gpspIO」FC
ビットシーケンスの値(0..7)を転送するために、FC「SLI_itemiseByte_gpspIO」を作成します。
この FC で以下のローカルタグを作成します。

ネットワーク 1:ネットワーク 1 の例に従って、すべてのビット(0..7)の相互接続を作成します。

パラメータの相互接続: 「SLI_FB_GETIO_SETIO_PART」FB「SLI_FB_GETIO_SETIO_PART」FB で以下の相互接続を作成します。次に、IO デバイス/DP
スレーブで、FB「SLI_FB_GETIO_SETIO_PART」をプログラムサイクル OB (OB1)で呼び出します。
ネットワーク 1:「GETIO_PART」命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2069

拡張命令
4.5 リモート I/O

ネットワーク 2:命令「GETIO_PART」を以下のように閉じます。

ネットワーク 3:GETIO_PART のチャンネル値を変換するために、以下の例に従って相互接続を作成します。この例では、「SLI_itemiseByte_gpspIO」FC のすべての入力と出力(0..7)が相互接続されます。

2070

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
ネットワーク 4:SETIO_PART のチャンネル値を変換するために、以下の例に従って相互接続を作成します。この例では、「SLI_itemiseByte_gpspIO」FC のすべての入力と出力(0..7)が相互接続されます。

ネットワーク 5:「SETIO_PART」命令のパラメータを以下のように相互接続します。

ネットワーク 6:命令「SETIO_PART」を以下のように閉じます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2071

拡張命令
4.5 リモート I/O

ネットワーク 1 の結果(GETIO_PART)
入力パラメータ EN 「executeRead」()がシグナル状態「TRUE」を返すと、「GETIO_PART」命
令が開始されます。命令「GETIO_PART」が入力パラメータ ID 「id_Read」()を使用して、入力モジュールを呼び出します。入力パラメータ INPUTS 「#readBYTE」()を使用して、入力モ
ジュールのチャンネルが読み出されます。
入力パラメータ OFFSET 「firstByteRead」()に値「0」をセットして、命令「GETIO_PART」
が、「BYTE 0」から入力モジュールのチャンネルの読み出しを開始します。2 つの BYTE (16のチャンネル)が、値「2」、入力パラメータ LEN 「maxLengthRead」()に従って読み出されます。この例で、この値はチャンネル 0～15 に対応します。
ブロックステータスが出力パラメータ STATUS 「statusRead」()および ERROR 「errorRead」()
で示されます。処理がエラーなしで行われます。

2072

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 2 の結果(GETIO_PART)
命令「GETIO_PART」が実行されている場合、出力パラメータ ENO 「doneRead」()がシグナ
ル状態「TRUE」を返します。その後で、タグ「executeRead」が「FALSE」にリセットさ
れ、「GETIO_PART」の処理が終了します。

ネットワーク 3 の結果(GETIO_PART)FC SLI_itemiseByte_gpspIO を使用して、構造体「#readBYTE」がタグの値を構造体「readInputs」のタグに転送します。これにより、チャンネル 0～7 および 8～15 の値が
BYTE から BOOL の配列に変換されます。
理解しやすいように、「readInputs」構造体のタグは記述名によって表されます。

ネットワーク 4 の結果(SETIO_PART)FC SLI_itemiseByte_gpspIO を使用して、構造体「writeOutputs」がタグの値を構造体「#writeBYTE」のタグに転送します。チャンネル 0～7 および 8～15 の値が BOOL の配列
から BYTE に変換されます。
理解しやすいように、「writeOutputs」構造体のタグは記述名によって表されます。

ネットワーク 5 の結果(SETIO_PART)
入力パラメータ EN 「executeWrite」()がシグナル状態「TRUE」を返すと、「SETIO_PART」命
令が開始されます。命令「SETIO_PART」が入力パラメータ ID 「id_Write」()を使用して、出力モジュールを呼び出します。入力パラメータ OUTPUTS 「#writeBYTE」()を使用して、新しい値が出力モジュールのチャンネルに書き込まれます。
入力パラメータ OFFSET 「firstByteWrite」()に値「0」をセットして、命令「SETIO_PART」
が、「BYTE 0」から出力モジュールのチャンネルへの書き込みを開始します。1 つの BYTE (8つのチャンネル)のみが、値「1」、入力パラメータ LEN「maxLengthWrite」()に従って書き込
まれます。この例で、この値はチャンネル 0～7 に対応します。そのため、値「TRUE」に

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2073

拡張命令
4.5 リモート I/O
設定されたチャンネル 9(「writeOutputs」、「Channel_8-15[1]」を参照)は、出力モジュー
ルのチャンネルへの書き込み中に考慮されません。
ブロックステータスが出力パラメータ STATUS 「statusWrite」()および ERROR 「errorWrite」()
で示されます。処理がエラーなしで行われます。

ネットワーク 6 の結果(SETIO_PART)
命令「SETIO_PART」が実行されている場合、出力パラメータ ENO 「doneWrite」()がシグナ
ル状態「TRUE」を返します。その後で、タグ「executeWrite」が「FALSE」にリセットされ、「SETIO_PART」の処理が終了します。

2074

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/OGETIO_PART の再処理の結果
タグ「executeRead」が「TRUE」にリセットされると、構造体「readInputs」は、
GETIO_PART の実行後の入力モジュールのチャンネル上の新しい値を示します。変更は、
タグ「firstByteWrite」と「maxLengthWrite」の値に応じてチャンネル 0～7 にのみ影響を及ぼします。チャンネル 1 および 2 「Channel_0-7[1]..[2]」()がシグナル状態「TRUE」を返します。チャンネル 9 「Channel_8-15[1]」()のシグナル状態は変化しません。

注記
チャンネルのシグナル状態の変更
シグナル状態が変更されるチャンネルに値が既に割り当てられている(たとえば、PLC タグによって)場合、この事前割り当てによって、SETIO_PART による変更が無効になることがあります。変更されるチャンネルのシグナル状態が他の要因によってまだ決定されていないことを確認してください。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
GETIO_PART:サブモジュールの入力の読み取り (ページ 2061)
SETIO_PART:サブモジュールの入力の書き込み (ページ 2063)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2075

拡張命令
4.5 リモート I/O

4.5.10RALRM:割り込みの受信

4.5.10.1

RALRM の説明

説明
この命令は、I/O モジュール(CPU と同じラックに構成)、DP スレーブのモジュール、またはPROFINET IO デバイスから、すべての対応する情報付きで割り込みを受信します。この情報は、出力パラメータで入手できます。
出力パラメータの情報には、呼び出された OB の開始情報と、割り込みソースの情報が含まれます。
ターゲット範囲 AINFO のデータ構造体の構成が、PROFINET IO データ構造体の集中構成に対応します。
「RALRM」は、検証する I/O 割り込みの結果として CPU のオペレーティングシステムで開始された割り込み OB 内のみで呼び出してください。
注記
開始イベントが I/O 割り込みでない OB で「RALRM」を呼び出した場合、この命令はそれに対応して少ない情報を提供します。
異なる OB で「RALRM」を呼び出す場合は、必ず異なるインスタンス DB を使用してください。関連する割り込み OB 以外の「RALRM」呼び出しからの結果のデータを評価する場
合、DB 開始イベントごとに個別のインスタンス OB を使用します。
注記「RALRM」命令のインターフェースは「RALRM」FB (規格「PROFIBUS and PROFINET
Guideline Communication Function Blocks on PROFIBUS DP and PROFINET IO」で定義されている)のインターフェースと同一です。

2076

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

呼び出し RALRM「RALRM」は、3 つの動作モード(MODE パラメータ)で呼び出すことができます。次の表で、これらを説明します。
MODE

RALRM ...

0...は、出力パラメータ ID で割り込みをトリガしたコンポーネントを示し、出力パラメータ
NEW を TRUE に設定します。

1...は、割り込みをトリガするコンポーネントに関係なく、すべての出力パラメータを書き込みます。

2...は、F_ID 入力パラメータで指定されたコンポーネントが割り込みをトリガしたかどうかをチェックします。
• トリガしていない場合、NEW = FALSE• トリガした場合、NEW = TRUE で、その他すべての出力パラメータが書き込まれます。

パラメータ
以下の表に、「RALRM」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

MODE

Input

INT

I、Q、M、D、L、 モード
または定数

F_ID

Input

HW_IO

I、Q、M、D、L、 モジュールのハードウェア識別子。
または定数

番号は自動的に割り当てられ、コンポーネントまたはインターフェースのハードウェ
アコンフィグレーションのプロパティに保存されます。

MLEN

Input

UINT

I、Q、M、D、L、 受信する割り込み情報の最大長(バイト)。
または定数

MLEN = 0、AINFO パラメータで指定されたすべてのデータが読み取られる場合。

NEW

Output

BOOL

I、Q、M、D、L

新規の割り込みが受信されました。

STATUS (ペOutput

DWORD

I、Q、M、D、L

エラーコードOutput

HW_IO

I、Q、M、D、L

割り込みが受信されたモジュールのハードージ 2079)
ID

ウェア識別子。
LEN

OutputUINT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

I、Q、M、D、L受信された割り込み情報の長さ

2077

拡張命令
4.5 リモート I/O
パラメータ

宣言

TINFO (ペー InOut

データタイプ

メモリ領域

説明

VARIANT

D、L

OB 開始および管理情報のターゲット範囲

VARIANT

I、Q、M、D、L

ヘッダー情報および追加の割り込み情報のジ 2084)AINFO (ペー InOut
ジ 2113)

ターゲット範囲
AINFO では、少なくとも MLEN バイトの長さを提供します。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記
短すぎるターゲット範囲 (ページ 2123)TINFO または AINFO を選択した場合、RALRM はす
べての情報を入力できません。

Windows アプリケーションの診断
ブルースクリーンが発生した場合に Windows が信号を CPU に送信できなくなることがあります。
追加情報については、診断割り込み(OB82)と共に命令「RALRM」(SFB54)を呼び出します。
「RALRM」命令は、以下の入力パラメータを使用して呼び出されます。
入力

タイプ

値

MODE

INT

2

F_ID

HW_IO

59 (ホストインターフェース
RID)

MLEN

UINT

0

TINFO

VARIANT

54 バイトの各領域のアドレ
ス

AINFO

VARIANT

54 バイトの各領域のアドレス

追加情報を受信するためにバイト 50 および 51 を「AINFO」パラメータで使用できます。
• 0xA1:ブルースクリーン• 0xA2:Windows が実行中
• 0xA3:Windows が実行されていない

2078

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

例
例が RALRM のプログラム例 (ページ 2124)に記載されています。
この例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプルライ
ブラリ (ページ 25)

4.5.10.2

パラメータ STATUS

説明STATUS 出力パラメータには、エラー情報が含まれます。ARRAY[1...4] of BYTE と解釈された場合、エラー情報は次の構造になります。
フィールドエレ 名前
メント

意味

STATUS[1]• B#16#00、エラーがない場合

Function_Num• DPV1-PDU からのファンクション ID:
エラーが発生した場合、B#16#80 が出力されます(データレコード
B#16#DE の読み出しおよびデータレコード B#16#DF の書き込みのエラーの場合)。
DPV1 プロトコルエレメントが使用されていない場合、B#16#C0 が出力されます。
STATUS[2]Error_Decode

エラー ID の場所

STATUS[3]Error_Code_1

エラー IDSTATUS[4]Error_Code_2

製造元固有のエラー ID 拡張

フィールドエレメント STATUS[2]STATUS[2]は、次の値を取ることができます。
Error_Decode(B#16#...)

ソース

意味

00～7F

CPU

エラーなし、または警告なし

80

DPV1

IEC 61158-6 に準じたエラー

81～8F

CPU

B#16#8x は、命令の x 番目の呼び出しパラメータのエラーを示します。

FE、FF

DP プロファイル プロファイル固有のエラー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2079

拡張命令
4.5 リモート I/Oフィールドエレメント STATUS[3]STATUS[3]は、次の値を取ることができます。
Error_Decode(B#16#...)

Error_Code_1(B#16#...)

00

00

70

00

reserved, reject

最初の呼び出し、有効なデータレコードの転送なし

01

reserved, reject

最初の呼び出し、データレコードの転送が開始

02

reserved, reject

中間呼び出し、データレコードの転送が既に有効

80

DVP1 に基づく説 意味
明
エラーなし、警告なし

81

TINFO パラメータのシステムデータタイプが、この命令の呼び出し環境に適合しません。
使用されるシステムデータタイプは、ユーザープロ
グラムのオーガニゼーションブロックに適合する必要があります(例:遅延割り込み OB の場合、システ
ムデータタイプ TI_Delay が必要です)。

90

reserved, pass

• 無効な論理開始アドレス• S7-1500-R/H CPU での RDREC および WRREC 命
令:パートナー CPU が STOP 動作モードであるため、データレコードへのアクセスがありません。

92

reserved, pass

VARIANT ポインタで無効なタイプ

93

reserved, pass

ID または F_ID でアドレス指定された DP コンポー
ネントが設定されていません。

96「RALRM (ページ 2076)」が OB 開始情報、管理情報、ヘッダー情報、または追加割り込み情報を提供しません。
OB 4x、55、56、57、82、および 83 の場合、
「DPNRM_DG (ページ 2199)」命令を使用して、関連する DP スレーブの現在の診断フレームを非同期で読み出します(OB 開始情報からのアドレス情報)。

A0

read error

モジュールの読み出し時の否定確認

A1

write error

モジュールへの書き込み時の
否定応答

A2

module failure

レイヤー 2 での DP プロトコルエラー(たとえばスレーブ故障またはバスの問題)

2080

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/OError_Decode(B#16#...)

Error_Code_1(B#16#...)

DVP1 に基づく説 意味
明A3reserved, pass

一般的な通信エラー、または IO デバイス/DP スレー
ブに到達できません。

A4

reserved, pass

PBUS+の通信が途切れました

A5

reserved, pass–A7

reserved, passDP スレーブまたはモジュールが占有されている(一時的なエラー)A8

version conflict

DP スレーブまたはモジュールが非互換バージョン
をレポート

A9
AA～AF

feature not

DP スレーブまたはモジュールがファンクションを

supported

サポートしていない

user specific

DP スレーブまたはモジュールがそのアプリケーシ
ョンで製造元固有エラーをレポート。DP スレーブ
またはモジュールの製造元の文書を確認してください。

B0

invalid index

モジュール内のデータレコードが不明です。
不正なデータレコード番号 ≥ 256

B1

write length error 長さ指定のエラー:• 「RALRM (ページ 2076)」の場合:AINFO (ページ 2113)の長さエラー• 「RDREC (ページ 2005)」の場合:MLEN の長さエラー
• 「WRREC (ページ 2026)」の場合:LEN の長さエラーB2

invalid slot

• 構成されたスロットが占有されていません。
• PROFINET IO および PROFIBUS DP の場合:IO デバ
イス/DP スレーブに到達できません

B3

type conflict

実際のモジュールタイプ
一致しません
一致しませんB4

invalid area

DP スレーブまたはモジュールが無効な領域へのア
クセスをレポートB5

state conflict

DP スレーブまたはモジュールの準備ができていな
い

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2081

拡張命令
4.5 リモート I/OError_Decode(B#16#...)

Error_Code_1(B#16#...)

DVP1 に基づく説 意味明B6access denied

DP スレーブまたはモジュールがアクセス拒否B7invalid range

DP スレーブまたはモジュールがパラメータまたは値の無効な範囲をレポート

B8

invalid parameter DP スレーブまたはモジュールが無効なパラメータ
をレポート

B9

invalid type

DP スレーブまたはモジュールが無効タイプをレポート「RDREC (ページ 2005)」の場合:バッファが小さすぎる(サブセットを読み出せない)「WRREC (ページ 2026)」の場合:バッファが小さす
ぎる(サブセットを書き込めない)BA

S7-1500-R/H-CPU:データレコードの読み出しまたは書き込み中に、プライマリ CPU に障害が発生しました。新しいプライマリ CPU は、0x80BA で要求を確認応答します。このデータレコード要求は、新しいプライマリ CPU 上で繰り返されることはありませ
ん。

BB～BF

user specific

DP スレーブまたはモジュールがアクセス時に製造
元固有エラーをレポート。DP スレーブまたはモジ
ュールの製造元の文書を確認してください。

C0

read constrain「WRREC (ページ 2026)」の場合:データは、CPU がconflict

STOP モードの場合にのみ書き込み可能です。注記:
つまり、ユーザープログラムによる書き込みは不可
能です。データの書き込みは、PG/PC を使用したオンラインのみで可能です。
「RDREC (ページ 2005)」の場合:モジュールはデータ
レコードをルーティングしますが、データが存在しないか、CPU が STOP モードの場合のみにデータを読み出すことができます。注記:CPU が STOP モードの場合のみにデータを読み出すことができる場合、
ユーザープログラムによる評価は不可能です。そのため、データの読み出しは、PG/PC を使用したオンラインのみで可能です。

2082

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/OError_Decode(B#16#...)

Error_Code_1(B#16#...)

DVP1 に基づく説 意味明C1write constrain

モジュール上の、同じデータレコードの以前の書き

conflict

込みジョブのデータがモジュールによって処理されていません。

C2

resource busy

現在、モジュールが CPU に対して処理可能な最大数のジョブを処理しています。

C3

resource

必要な操作リソースが現在占有されています。

unavailable
C4

内部の一時的なエラー。ジョブを実行できませんでした。
ジョブを繰り返します。このエラーが頻発する場合
は、据付けを点検して電気的な干渉の発生源を探します。

C5

DP スレーブまたはモジュールが使用できません。

C6

優先度クラスのキャンセルによって、データレコー
ドの転送がキャンセルされました。

C7

DP マスタのウォームまたはコールドリスタートのため、ジョブが中止されました。

C8～CF

DP スレーブまたはモジュールが製造元固有リソー
スエラーをレポート。DP スレーブまたはモジュールの製造元の文書を確認してください。

Dxuser specific

DP スレーブ固有。DP スレーブの説明を参照してく
ださい。

Ex

user specific

製造元固有。モジュールの文書をチェックしてくだ
さい。

81

00～FF

最初の呼び出しパラメータのエラー(「RALRM (ページ 2076)」の場合:MODE00

無効な動作モード

82

00～FF

2 番目の呼び出しパラメータのエラー

:

:

:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2083

拡張命令
4.5 リモート I/OError_Decode(B#16#...)

Error_Code_1(B#16#...)

88

00～FF

DVP1 に基づく説 意味明
8 番目の呼び出しパラメータのエラー(「RALRM (ページ 2076)」の場合:TINFO (ページ 2084))01

間違った構文 ID

23

設定制限を上回ったか、宛先領域が小さすぎる24

間違った範囲 ID

32

DB/DI 番号がユーザー範囲外

3A

領域 IDDB/DI で DB/DI 番号が Null、または指定された DB/DI が存在しない

89

00～FF

9 番目の呼び出しパラメータのエラー(「RALRM (ページ 2076)」の場合:AINFO (ページ 2113))01

間違った構文 ID

23

設定制限を上回ったか、宛先領域が小さすぎる24

間違った範囲 ID

32

DB/DI 番号がユーザー範囲外

3A

領域 IDDB/DI で DB/DI 番号が Null、または指定された DB/DI が存在しない

8A

00～FF

10 番目の呼び出しパラメータのエラー

:

:

:

8F

00～FF

15 番目の呼び出しパラメータのエラー

FE, FF00～FF

プロファイル固有のエラー

4.5.10.3

パラメータ TINFO

コピー先の領域 TINFO のデータ構造体
コピー先の領域のデータ構造体 TINFO には、「RALRM」が現在呼び出されているオーガニ
ゼーションブロックの開始情報が含まれています。

2084

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
TINFO コピー先の領域には、標準アクセスまたは最適化されたアクセスを使用する開始情報を含めることができます。TINFO 宛先領域の開始情報の形式は、対応するオーガニゼーシ
ョンブロックの開始情報と必ず一致している必要があります。
• 標準アクセスの OB の開始情報は、必ずブロックインターフェースの「Temp」セクシ
ョンの最初の 20 バイト内に格納されています。これには「TI_Classic」データ構造体を使用してください。
• 最適化されたアクセスを使用する OB の開始情報は、必ず「Input」セクションに書き込まれます。開始情報が、オーガニゼーションブロックに固有のデータ構造体に保存されます。オーガニゼーションブロックに固有のデータ構造体を作成します。
ブロックアクセス(標準/最適化)を変更すると、ブロックインターフェースも変更されます。
次の表は、TINFO パラメータでオーガニゼーションブロックに応じて使用されるデータ構
造体の概要を示しています。
データ構造体の名前

S7-1200
CPU、以
下のバー
ジョン以
降

S7-1500 使用されるデータ構造:
CPU、以
下のバー
ジョン以
降

標準アクセスを使用するオーガニゼーションブロックのデータ構造
TI_Classic-

V1

最適化ブロックアクセスを使用しないオーガニゼーションブ
ロック。

最適化ブロックアクセスを使用するオーガニゼーションブロックのデータ構造

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2085

拡張命令
4.5 リモート I/O
S7-1200
CPU、以
下のバー
ジョン以
降

S7-1500 使用されるデータ構造:
CPU、以
下のバー
ジョン以
降

TI_ProgramCycle

V2

V1

サイクル OB (プログラムサイクル)

TI_Startup

V2

V1

スタートアップ OB(スタートアップ)

TI_Delay

V2

V1

遅延割り込みTI_Cyclic

V2

V1

サイクリック割り込み OB

TI_HWInterrupt

V2

V1

ハードウェア割り込み OB

V2.0

ハードウェア割り込み OB

データ構造体の名前

TI_HWInterrupt_Ext ended
TI_TimeError

V2

V1

タイムエラー OB

TI_DiagnosticInterr

V2

V1

診断エラー割り込み OB

TI_PlugPullModule

V2

V1

モジュール OB の切断/接続

TI_StationFailure

V2

V1

ラック障害 OB またはステーション障害 OB

TI_ProgIOAccessErr

V2

V1• プログラミングエラー OB

upt

or

• I/O アクセスエラー OB

TI_TimeOfDay

V2

V1

時刻割り込み OB

TI_SynchCycle-

V1

同期サイクル割り込み OB

TI_Submodule

V2

V1• ステータス割り込み OB• 割り込み OB の更新• 製造元またはプロファイル固有の割り込みの OB

2086

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

標準アクセスを使用するオーガニゼーションブロックのデータ構造
以下に、「 TI_Classic」データ構造体を示します。
パラメータ
TI_Classic

データタ バイト 説明
イプ
最適化ブロックアクセスを使用しないオーガニゼーションブロックのデータ構造体。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2087

拡張命令
4.5 リモート I/O
パラメータ

データタ バイト 説明
イプ

バイト 0～19:「RALRM」が現在呼び出されている OB の開始情報。*
EV_CLASS

BYTE

0

イベントクラス
例 OB1:• ビット 0～3:イベントの ID (1 = 受信イベント)• ビット 4～7:イベントクラス(1 = イベントクラス 1)

EV_NUM

BYTE

1

イベント番号(OB タイプによる)例 OB1 (SCAN_1):• SCAN_1 = 1 (最初の呼び出しの場合)• SCAN_1 = 3 (すべての追加呼び出しの場合)

PRIORITY

BYTE

2

優先度クラス

NUM

BYTE

3

DB 番号

TYP2_3

BYTE

4

追加情報

TYP1

BYTE

5

使用される OB タイプに応じて、異なる情報が BYTES「TYP2_3」および「TYPE 1」に保存されます。
これらについては、オーガニゼーションブロックの文書に記載されています。
例(OB1):• TYP2_3:OB1_RESERVED_1 (予約済み)• TYP1:OB1_RESERVED_2 (予約済み)

ZI1

WORD

6～7

追加情報
使用される OB タイプに応じて、異なる情報が「ZI1」に保存されます。
これらについては、オーガニゼーションブロックの文書に記載されています。
例(OB1):• ZI1:OB1_PREV_CYCLE (前のサイクルのランタイム(ミリ秒))

ZI2_3

DWORD

8～11

追加情報
使用される OB タイプに応じて、異なる情報が「ZI2_3」に保存されます。
これらについては、オーガニゼーションブロックの文書に記載されています。
例(OB1):• ZI2:OB1_MIN_CYCLE (最後のスタートアップ以降の最小サイクルタイ
ム(ミリ秒))

2088

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ

データタ バイト 説明イプ• ZI3:OB1_MAX_CYCLE (最後のスタートアップ以降の最大サイクルタ
イム(ミリ秒))

OB_DATE_ DATE_AN 12～
TIME

D_TIMEOB が呼び出された日付および時刻。

19

(DT)
バイト 20 および 21:アドレス情報
address

WORD

20 お

S7-300/400 CPU などのアドレス情報:

よび• 集中構成のラック番号(0-31):

21

ኰአእ 































዆አኌ䟹⚆



• PROFIBUS DP による分散構成の場合:– DP マスタシステム ID (1-31)– ステーション番号(0-127)。
ኰአእ 

































ኖኣዙኔዄዐ䟹⚆'3ኻኖኜኔኖኣኽ,'• PROFINET IO による分散構成:– PROFINET IO システム ID の下 2 桁(0-15)。完全な PROFINET IO シ
ステム ID を取得するには、これに 100 (10 進)を加算する必要があります。
– ステーション番号(0-2047)。
ኰአእ













,2ኔኖኣኽ,'























ኖኣዙኔዄዐ䟹⚆

バイト 22～31:管理情報
slv_prfl

BYTE

22

S7-300/400 CPU などのスレーブプロファイル:• 集中構成の場合:0 (データレコード 0 またはデータレコード 1)• 分散構成の場合:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2089

拡張命令
4.5 リモート I/O
パラメータ

データタ バイト 説明イプ– ビット 0～3:スレーブタイプ- 0000:DP (構造のデータレコード 0)- 0001:DPS7 (構造のデータレコード 0 またはデータレコード 1)- 0010:DPS7 V1 (構造のデータレコード 0 またはデータレコード1)- 0011:DPV1 (PROFIBUS DP 標準に従った構造)- 0100 – 0111:予約済み- 1000:PROFINET IO (PROFINET IO 標準に従った構造)- 1001～:予約済み– ビット 4～7:プロファイルタイプ (予約済み)

intr_type

BYTE

23

S7-300/400 CPU などの割り込み情報タイプ:• 集中構成の場合:0• 分散構成の場合:– ビット 0～3:割り込み情報タイプ- 0000:割り込みは構成済みリモートモジュールから発生します- 0001:割り込みは非 DPV1 スレーブ/非 IO デバイスまたは未設定のスロットから発生します- 0010:割り込みは CPU で生成されます- 0011～:予約済み– ビット 4～7:構造体バージョン- 0000:初期- 0001～:予約済み

flags1

BYTE

24

S7-300/400 CPU などの PROFIBUS DP マスタインターフェースモジュー
ル/PROFINET IO コントローラマスタインターフェースモジュールのフラグ:• 集中構成の場合:0• 分散構成の場合:– ビット 0 = 0:統合インターフェースモジュール(PROFINET IO または PROFIBUS DP)から発生する割り込み– ビット 0 = 1:外部インターフェースモジュール(PROFINET IO または PROFIBUS DP)から発生する割り込み– ビット 1～7:予約済み

flags2

BYTE

25

S7-300/400 CPU などの PROFIBUS DP マスタインターフェースモジュー
ル/PROFINET IO コントローラマスタインターフェースモジュールのフラグ:• 集中構成の場合:0• PROFIBUS DP による分散構成の場合:

2090

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ

データタ バイト 説明イプ– ビット 0:診断メッセージフレームからの EXT_DIAG_FLAG、またはこのビットが割り込みに存在しない場合は 0。DP スレーブが障害の場合、このビットは 1 です。
– ビット 1～7:予約済み• PROFINET IO による分散構成:– ビット 0:ARDiagnosisState または割り込みに情報がない場合は0。IO デバイス障害の場合ビットが 1。
– ビット 1～7:予約済み

id

UINT

26 お

管理情報

よび

• 集中構成の場合:027• PROFIBUS DP による分散構成の場合:PROFIBUS DP スレーブの一意の識別子としての PROFIBUS ID 番号• PROFINET IO による分散構成:PROFINET IO デバイスの一意の識別としての PROFINET IO デバイス ID 番号

manufactu UINT

28 お

rer

よび

製造元 ID (PROFINET IO による分散構成の場合のみ)。

29
instance

UINT

30 お

インスタンスの IDENT 番号(PROFINET IO による分散構成の場合のみ)。

よび
31* 開始情報は、使用される OB によって異なります。各 OB タイプの開始情報は、インターフェースまたは
OB の文書を参照してください。

最適化ブロックアクセスを使用するオーガニゼーションブロックのデータ構造
最適化ブロックアクセスを使用するオーガニゼーションブロックのデータ構造の形式は次の通りです。
• バイト 0～3:呼び出される OB の開始情報、クラス、および番号の形式(すべてのデータ
構造体に対して同じ構造)。
• バイト 4～19:最適化された開始情報(構造は OB タイプによって異なる)。バイト 4～19のデータは、対応する OB インターフェースの構造および内容に相当します。
• バイト 20～31:さらに、特定の OB のアドレスおよび管理情報。バイト 20～31 のデー
タは、 TI_Classic データ構造の 20～31 バイトのデータに相当します。
データ構造体の形式については、以下の表に記載されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2091

拡張命令
4.5 リモート I/O
表 4-9

サイクル OB:データ構造 TI_ProgramCycle

パラメータ

データタ バイイプ
ト

TI_ProgramCycle
SI_Format

説明
サイクル OB のデータ構造体

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=1)

OB_Nr

UINT

2

DB 番号(1...32767)。

Initial_Call

BOOL

4

=TRUE、この OB の最初の呼び出し時• STOP または HOLD から RUN への移行
• 再ロード後

Remanence

表 4-10BOOL

5= TRUE、保持型データが使用可能の場合。

スタートアップ OB:データ構造 TI_Startup

パラメータ

データタ バイイプ
ト

TI_Startup
SI_Format

説明
スタートアップ OB のデータ構造体

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=100)

OB_Nr

UINT

2

DB 番号(1...32767)。

LostRetentiv

BOOL

4

=TRUE、保持型データ領域の内容が失われた場合。

BOOL

5

=TRUE、リアルタイムクロックの時刻が失われた場合。

e
LostRTC

2092

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
表 4-11

遅延割り込み OB:データ構造 TI_Delay

パラメータ

データタ バイイプ
ト

TI_Delay

説明
遅延割り込み OB のデータ構造体

SI_Format

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=20)

OB_Nr

UINT

2

DB 番号(1...32767)。

Sign

WORD

4

ユーザー ID:「SRT_DINT (ページ 2349)」命令の呼び出しからの入力パラ
メータ SIGN。

表 4-12サイクリック割り込み OB:データ構造 TI_Cyclic

パラメータ

データタ バイイプ
ト

TI_Cyclic
SI_Format

説明
サイクリック割り込み OB のデータ構造体

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=30)

OB_Nr

UINT

2

DB 番号(1...32767)。

Initial_Call

BOOL

4

=TRUE、この OB の最初の呼び出し時• STOP または HOLD から RUN への移行時• 再ロード後

Event_Count INT

6

この OB の最後の開始以降に破棄された開始イベントの数。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2093

拡張命令
4.5 リモート I/O
表 4-13

ハードウェア割り込み OB:データ構造 TI_HWInterrupt

パラメータ

データタ バイイプ
ト

TI_HWInterrupt
SI_Format

説明
ハードウェア割り込み OB のデータ構造体

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=40)

OB_Nr

UINT

2

DB 番号(1...32767)。

LADDR

HW_IO

4

ハードウェア割り込みをトリガするモジュールのハードウェア識別子。

USI

WORD

6

将来の拡張のための識別子(非ユーザー関連)。

IChannel

USINT

8

ハードウェア割り込みをトリガしたチャンネルの番号。

EventType

BYTE

9

割り込みをトリガするイベントに関連するイベントタイプの識別子(信号立ち上がりエッジなど)。
この ID については、それぞれのモジュールの説明を参照してください。

address

WORD

20

TI_Cassic.データ構造体については、「address」パラメータを参照してく
ださい。

slv_prfl

BYTE

22

TI_Cassic データ構造体については、「slv_prfl」パラメータを参照してく
ださい。

intr_type

BYTE

23

TI_Cassic データ構造体については、「intr_type」パラメータを参照してください。

flags1

BYTE

24

TI_Cassic データ構造体については、「flags1」パラメータを参照してく
ださい。

flags2

BYTE

25

TI_Cassic データ構造体については、「flags2」パラメータを参照してく
ださい。

id

UNIT

26

TI_Cassic データ構造体については、「id」パラメータを参照してください。

manufacture UNIT

28

rinstance

TI_Cassic データ構造体については、「manufacturer」パラメータを参照
してください。

UNIT

30

TI_Cassic データ構造体については、「instance」パラメータを参照して
ください。

2094

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
表 4-14

パラメータ

ハードウェア割り込み OB:データ構造体 TI_HWInterrupt_Extended

データタ バイイプ
ト

TI_HWInterrupt_Extended

説明
ハードウェア割り込み OB のデータ構造体

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2095

拡張命令
4.5 リモート I/O
パラメータ
SI_Format

データタ バイ
イプ
ト

説明

USINT

開始情報の形式0• 16#FF:なし• 16#FE:最適化開始情報
OB_Class

USINT

1

OB クラス(=40)

OB_Nr

UINT

2

DB 番号(1...32767)。

LADDR

HW_IO

4

ハードウェア割り込みをトリガするモジュールのハードウェア識別子。

USI

WORD

6

将来の拡張のための識別子(非ユーザー関連)。

IChannel

USINT

8

ハードウェア割り込みをトリガしたチャンネルの番号。

EventType

BYTE

9

割り込みをトリガするイベントに関連するイベントタイプの識別子(信号立ち上がりエッジなど)。
この ID については、それぞれのモジュールの説明を参照してください。

PointAddr

DWORD

12

• デジタルモジュールの場合:ハードウェア割り込みをトリガしたモジ
ュール上の入力を格納するビット配列• アナログモジュールの場合:どのチャンネルがどの制限を超えたのかに関する情報を格納するビット配列• CP または IM の場合:モジュールの割り込みステータス(ユーザーに関連しない)

address

WORD

20

TI_Cassic.データ構造体については、「address」パラメータを参照してく
ださい。

slv_prfl

BYTE

22

TI_Cassic データ構造体については、「slv_prfl」パラメータを参照してく
ださい。

intr_type

BYTE

23

TI_Cassic データ構造体については、「intr_type」パラメータを参照してください。

flags1

BYTE

24

TI_Cassic データ構造体については、「flags1」パラメータを参照してく
ださい。

flags2

BYTE

25

TI_Cassic データ構造体については、「flags2」パラメータを参照してく
ださい。

id

UNIT

26

TI_Cassic データ構造体については、「id」パラメータを参照してください。

manufacture UNIT

28

rinstance

TI_Cassic データ構造体については、「manufacturer」パラメータを参照
してください。

UNIT

30

TI_Cassic データ構造体については、「instance」パラメータを参照して
ください。

2096

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
表 4-15

タイムエラー OB:データ構造 TI_TimeError

パラメータ

データタ バイイプト

TI_TimeError
SI_Format

説明
タイムエラー OB のデータ構造体

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=80)

OB_Nr

UINT

2

DB 番号(1...32767)。

Csg_OBnr

OB_ANY 4

タイムエラーが発生したときに実行されていた OB の番号。

Fault_ID

BYTE

エラーコード。次の値が返されます。

7• B#16#01:サイクルタイムを超えています• B#16#02:要求された OB はまだ処理中です。
• B#16#05:タイムジャンプによって期限が切れた時刻割り込み。
• B#16#06:HOLD 後に再び RUN になったことによって期限が切れた時
刻割り込み。
• B#16#07:現在の優先度クラスに対する OB 要求バッファのオーバーフロー。
• B#16#08:アイソクロナスモードの割り込み - タイムエラー。
• B#16#09:高い割り込み負荷による割り込み損失• B#16#0B:テクノロジー同期割り込み - タイムエラー
Csg_Prio

UNIT

8

タイムエラーが発生したときに実行されていた OB の優先度。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2097

拡張命令
4.5 リモート I/O
表 4-16

パラメータ

診断割り込み OB:データ構造 TI_DiagnosticInterrupt

データ
タイプ

TI_DiagnosticInterrupt

2098

バイ
ト

説明
診断割り込み OB のデータ構造体

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ

データ
タイプ

バイ
ト

説明

SI_Format

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=82)

OB_Nr

UINT

2

DB 番号(1...32767)。

LADDR

HW_AN

4

診断割り込みをトリガしたハードウェアオブジェクトのハードウェア識

Y
IO_State

WORD

別子。
6

ハードウェアオブジェクトのステータス:• ビット 0:良好
• ビット 1:無効
• ビット 2:メンテナンス必須• ビット 3:メンテナンス要求• ビット 4:エラー• ビット 5:アクセス不可能• ビット 6:限定
• ビット 7:使用不可

ChannelUINT

8チャンネル番号MultiError

BOOL

10

=TRUE、複数のエラーが存在する場合。

address

WORD

20

TI_Cassic.データ構造体については、「address」パラメータを参照してく
ださい。

slv_prfl

BYTE

22

TI_Cassic データ構造体については、「slv_prfl」パラメータを参照してく
ださい。

intr_type

BYTE

23

TI_Cassic データ構造体については、「intr_type」パラメータを参照してください。

flags1

BYTE

24

TI_Cassic データ構造体については、「flags1」パラメータを参照してく
ださい。

flags2

BYTE

25

TI_Cassic データ構造体については、「flags2」パラメータを参照してく
ださい。

id

UINT

26

TI_Cassic データ構造体については、「id」パラメータを参照してください。

manufacture UINTr28

TI_Cassic データ構造体については、「manufacturer」パラメータを参照
してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2099

拡張命令
4.5 リモート I/O
パラメータ

データ
タイプ

バイ
ト

説明

instance

UINT

30

TI_Cassic データ構造体については、「instance」パラメータを参照して
ください。

2100

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
表 4-17

パラメータ

切断/接続割り込み OB:データ構造 TI_PlugPullModule

データタ バイイプ
ト

TI_PlugPullModule

説明
切断/接続割り込み OB のデータ構造体

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2101

拡張命令
4.5 リモート I/O
パラメータ
SI_Format

データタ バイ
イプ
ト

説明

USINT

開始情報の形式0• 16#FF:なし• 16#FE:最適化開始情報
OB_Class

USINT

1

OB クラス(=83)

OB_Nr

UINT

2

DB 番号(1...32767)。

LADDR

HW_IO

4

影響を受けるモジュールまたはサブモジュールのハードウェア識別子

Event_Class

BYTE

6

• B#16#38:(サブ)モジュール差し込み済み• B#16#39:(サブ)モジュール引き出し済みまたは応答なし

Fault_ID

BYTE

7

エラーコード
次の表に、切断/接続割り込み OB の開始の原因になるイベントを示します。
• Event_Class = B#16#38 - モジュール/サブモジュール差し込み済みの場合:– B#16#54:サブモジュールが差し込まれ、設定されたサブモジュー
ルと一致しています。
– B#16#55:サブモジュールが差し込まれましたが、設定されたサブモジュールと一致していません。
– B#16#56:サブモジュールが差し込まれましたが、モジュールパラ
メータ割り当てでエラーが生じました。
– B#16#57:サブモジュールまたはモジュールが差し込まれましたが、故障があるかメンテナンス中です– B#16#58:サブモジュールアクセスエラーが修正されました。
– B#16#61:モジュールが挿入されている• Event_Class = B#16#39 - モジュール/サブモジュール引き出し済みま
たは応答なしの場合:– B#16#51:モジュール引き出し済み– B#16#54:サブモジュール引き出し済み– B#16#61:モジュール引き出し済みまたは応答なし

address

WORD

20

TI_Cassic.データ構造体については、「address」パラメータを参照してく
ださい。

slv_prfl

BYTE

22

TI_Cassic データ構造体については、「slv_prfl」パラメータを参照してく
ださい。

intr_type

BYTE

23

TI_Cassic データ構造体については、「intr_type」パラメータを参照して
ください。

2102

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ
flags1

データタ バイ
イプ
ト

説明

BYTE

TI_Cassic データ構造体については、「flags1」パラメータを参照してく

24

ださい。
flags2

BYTE

25

TI_Cassic データ構造体については、「flags2」パラメータを参照してく
ださい。

id

UINT

26

TI_Cassic データ構造体については、「id」パラメータを参照してください。

manufacture UINT

28

r
instance

TI_Cassic データ構造体については、「manufacturer」パラメータを参照
してください。

UINT

30

TI_Cassic データ構造体については、「instance」パラメータを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2103

拡張命令
4.5 リモート I/O
表 4-18

パラメータ

ラックエラー OB:データ構造 TI_StationFailure

データタ バイイプ
ト

TI_StationFailure

2104

説明
ラックエラー OB のデータ構造体

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ
SI_Format

データタ バイ
イプ
ト

説明

USINT

開始情報の形式0• 16#FF:なし• 16#FE:最適化開始情報
OB_Class

USINT

1

OB クラス(=86)

OB_Nr

UINT

2

DB 番号(1...32767)。

LADDR

HW_Dev 4

不完全なハードウェアオブジェクトのハードウェア識別子。

ice
Event_Class

BYTE

6

• B#16#32:「D_ACT_DP」命令を使用したステーションの有効化• B#16#33:「D_ACT_DP」命令を使用したステーションの無効化• B#16#38:発信イベント• B#16#39:着信イベント

Fault_ID

BYTE

7

エラーコードエラーコードは、ラックエラー OB の開始を引き起こすイベントを出力するために使用します。
• Event_Class = B#16#39、FAULT_ID = C3:リモート I/O:DP マスタシス
テムの障害• Event_Class = B#16#38、FAULT_ID = C4:DP ステーションの障害• Event_Class = B#16#39、FAULT_ID = CA:PROFINET IO システム障害• Event_Class = B#16#39/38、FAULT_ID = CB:PROFINET IO ステーショ
ンの障害/ステーションの戻り値• Event_Class = B#16#38、FAULT_ID = CC:PROFINET IO ステーションの戻り値、問題があるかメンテナンス中です• Event_Class = B#16#38、FAULT_ID = CD:PROFINET IO ステーションの戻り値、予期される設定と実際の設定の相違• Event_Class = B#16#38、FAULT_ID = CE:PROFINET IO ステーションの戻り値、モジュールパラメータ割り当てにエラーがあります• Event_Class = B#16#32/33、FAULT_ID = CF:「D_ACT_DP」命令を使用した PROFINET IO デバイスの有効化/無効化• Event_Class = B#16#39/38、FAULT_ID = F8:PROFINET I デバイスの一部のサブモジュールの障害/戻り値• Event_Class = B#16#38、FAULT_ID = F9:PROFINET I デバイスの一部のサブモジュールの戻り値、デバイス構成に差異があります

address

WORD

20

TI_Cassic.データ構造体については、「address」パラメータを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2105

拡張命令
4.5 リモート I/O
パラメータ
slv_prfl

データタ バイ
イプ
ト

説明

BYTE

TI_Cassic データ構造体については、「slv_prfl」パラメータを参照してく

22

ださい。
intr_type

BYTE

23

TI_Cassic データ構造体については、「intr_type」パラメータを参照してください。

flags1

BYTE

24

TI_Cassic データ構造体については、「flags1」パラメータを参照してく
ださい。

flags2

BYTE

25

TI_Cassic データ構造体については、「flags2」パラメータを参照してく
ださい。

id

UINT

26

TI_Cassic データ構造体については、「id」パラメータを参照してください。

manufacture UINT

28

r
instance

TI_Cassic データ構造体については、「manufacturer」パラメータを参照
してください。

UINT

30

TI_Cassic データ構造体については、「instance」パラメータを参照して
ください。

2106

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
表 4-19パラメータ

プログラミングエラー OB/I/O アクセスエラー OB:データ構造 TI_ProgIOAccessError

データタ バイイプ
ト

TI_ProgIOAccessError

説明*
プログラミングエラー OB および I/O アクセスエラー OB のデータ構造

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2107

拡張命令
4.5 リモート I/O
パラメータ
SI_Format

データタ バイ
イプ
ト

説明*

USINT

開始情報の形式0• 16#FF:なし• 16#FE:最適化開始情報
OB_Class

USINT

1

OB クラス:• =121 (プログラミングエラー OB の場合)
• =122 (I/O アクセスエラー OB の場合)

OB_Nr

UINT

2

DB 番号(1...32767)。

BlockNr

UINT

4プログラミングエラーが発生したブロックの番号。

ReactionUSINT

6• 0:エラーを無視• 1:不良な値を置換• 2:コマンドをスキップ

Fault_ID

BYTE

7

エラーコード• B#16#21:BCD 変換エラー• B#16#22:読み出し時の領域の長さエラー• B#16#23:書き込み時の領域の長さエラー• B#16#24:読み取り時の領域エラー• B#16#25:書き込み時の領域エラー• B#16#26:タイマ番号のエラー• B#16#27:カウンタ番号のエラー• B#16#28:ポインタによるバイト、ワード、またはダブルワードへの読み取りアクセス、このビットアドレスは 0 ではありません• B#16#29:ポインタによるバイト、ワード、またはダブルワードへの書き込みアクセス、このビットアドレスは 0 ではありません• B#16#:30:書き込み保護されているグローバル DB への書き込みアクセス• B#16#31:書き込み保護されているインスタンス DB への書き込みアクセス• B#16#32:グローバル DB にアクセスしたときの DB 番号エラー• B#16#33:インスタンス DB にアクセスしたときの DB 番号エラー• B#16#34:FC 呼び出し中の番号エラー• B#16#35:FB 呼び出し中の番号エラー• B#16#42:I/O アクセスエラー、読み取り• B#16#43:I/O アクセスエラー、書き込み• B#16#3A:ロードされていない DB へのアクセス、DB 番号は許可済み領域にあります。

2108

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ

データタ バイイプト

説明*• B#16#3C:ロードされていない FC へのアクセス、FC 番号は許可されている領域にあります• B#16#3D:ロードされていない命令(SFC)へのアクセス、SFC 番号は許可されている領域にあります• B#16#3E:ロードされていない FB へのアクセス、FB 番号は許可されている領域にあります• B#16#3F:使用不可の SFB へのアクセス、SFB 番号は許可されている領域にあります

BlockType

USINT

8

エラーが発生したブロックのタイプ:• OB:B#16#88• FC:B#16#8C• FB:B#16#8E

Area

USINT

9

不正なアクセスが発生したメモリ領域:• ローカルデータ:B#16#40～4E、86、87、8E、8F、C0～CE• プロセスイメージ入力:B#16#01• プロセスイメージ出力:B#16#02• テクニカル DB:B#16#04• I:B#16#81• Q:B#16#82• M:B#16#83• DB:B#16#84、85、8A、8B

DBNr

DB_ANY10

DB 番号、AREA = DB の場合(グローバル DB またはインスタンス DB)
プログラミングエラー OB の場合のみ。

Csg_OBNr

OB_ANY 12

OB 番号:• 121:プログラミングエラー OB• 122:I/O アクセスエラー OB

Csg_Prio

USINT

14

OB 優先度

Width

USINT

15

エラーが発生したアクセスのタイプ:• Bit:B#16#00• Byte:B#16#01• Word:B#16#02• DWord:B#16#03• LWord:B#16#04* 情報が読み取られる OB (I/O アクセスエラー OB またはプログラミングエラー OB)に応じて、特定の出力値のみが可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2109

拡張命令
4.5 リモート I/O
表 4-20

時刻割り込み OB:データ構造 TI_TimeOfDay

パラメータ

データタ バイイプト

TI_TimeOfDay
SI_Format

説明
時刻割り込み OB のデータ構造体

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=10)

OB_Nr

UINT

2

DB 番号(1...32767)。

CaughtUp

BOOL

4=TRUE、時刻が前へ調整されたため、その後に OB 呼び出しが実行された場合

SecondTime BOOL

5

=TRUE、時刻が後ろへ調整されたため、OB が二度目に呼び出された場
合注記:SecondTime は、時刻が後ろへ設定される状況で 1 回のみ設定さ
れます。

2110

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
表 4-21

アイソクロナスモード割り込み OB:データ構造 TI_SynchCycle

パラメータ

データタ バイイプ
ト

TI_SynchCycle
SI_Format

説明
アイソクロナスモード割り込み OB のデータ構造体

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス(=61)

OB_Nr

UINT

2

DB 番号(1...32767)。

Initial_Call

BOOL

4

=TRUE、この OB の最初の呼び出し時• STOP または HOLD から RUN への移行
• 再ロード後

IO _System

USINT

Event_Count INT

5

割り込みをトリガするリモート I/O システムの番号

6• = n:失われたサイクルの数• = -1:不明な数のサイクルが失われました(周期が変わったなど)。

PIP_Input

BOOL

10

=TRUE:入力の関連するプロセスイメージは最新です

PIP_Output

BOOL

11

=TRUE:出力の関連するプロセスイメージは、最後のサイクル後まもな
く、出力に転送されました

SyncCycleTi

LTIME

16

計算されたサイクルタイム

me

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2111

拡張命令
4.5 リモート I/O
表 4-22

製造元またはプロファイル固有の割り込みのステータス割り込み OB/更新割り込み OB:データ構造
TI_Submodule

パラメータ

データタ バイイプ
ト

TI_Submodule

説明製造元またはプロファイル固有の割り込みのステータス割り込み OB/更新割り込み OB のデータ構造体

SI_Format

USINT

0

開始情報の形式• 16#FF:なし• 16#FE:最適化開始情報

OB_Class

USINT

1

OB クラス• =55 (ステータス割り込み OB の場合)
• =56 (更新割り込み OB の場合)
• =57 (製造元またはプロファイル固有の割り込みの OB の場合)

OB_Nr

UINT

2

DB 番号(1...32767)。

LADDR

HW_IO

4

割り込みをトリガするコンポーネントのハードウェアアドレス

Slot

UINT

6

割り込みをトリガするコンポーネントのスロット番号

SpecifierWORD

8

割り込みフレームの割り込み指定子

address

WORD

20

TI_Cassic.データ構造体については、「address」パラメータを参照してく
ださい。

slv_prfl

BYTE

22

TI_Cassic データ構造体については、「slv_prfl」パラメータを参照してく
ださい。

intr_type

BYTE

23

TI_Cassic データ構造体については、「intr_type」パラメータを参照してください。

flags1

BYTE

24

TI_Cassic データ構造体については、「flags1」パラメータを参照してく
ださい。

flags2

BYTE

25

TI_Cassic データ構造体については、「flags2」パラメータを参照してく
ださい。

id

UINT

26

TI_Cassic データ構造体については、「id」パラメータを参照してください。

manufacture UINT

28

r
instance

TI_Cassic データ構造体については、「manufacturer」パラメータを参照
してください。

UINT

30

TI_Cassic データ構造体については、「instance」パラメータを参照して
ください。

2112

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

4.5.10.4

パラメータ AINFOPROFIBUS DP からの割り込みがあるコピー先の領域 AINFO のデータ構造体
バイト

意味

0～3

ヘッダー情報、正確な説明については、次を参照してください。

4～63

追加の割り込み情報:それぞれの割り込みのデータ:
ARRAY[0]～ARRAY[59]分散:

PROFIBUS DP からの割り込みがあるヘッダー情報の構造体
バイト

データタイ
プ

意味

0

BYTE

受信された割り込み情報の長さ(バイト)

1

BYTE

集中:

4～224

分散:

4～63

集中:

予約済み

分散:

割り込みの ID1:

診断割り込み2:
3:

プロセス割り込み

4:5:

切断割り込み6:

接続割り込み31
ステータス割り込み
更新割り込み拡張デバイス、DP マスタシステム、または DP ス
テーションの障害
32～126:2

BYTE

製造元固有の割り込み

割り込みをトリガするコンポーネントのスロット番号

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2113

拡張命令
4.5 リモート I/O
バイト

データタイ
プ

意味

3

BYTE

集中:

予約済み

分散:

指定子
ビット 0 お0:追加情報がありません、

よび 1:

1:スロット異常
2:スロット正常

ビット 2:

Add_Ack

ビット 3～7: シーケンス番号

PROFINET IO または集中 I/O デバイスからの割り込みがあるコピー先の領域 AINFO のデータ構造体
バイト

意味

0～25

ヘッダー情報、正確な説明については、次を参照してください。

26～1431

追加の割り込み情報:各割り込みの正規化された診断データ:
ARRAY[0]～ARRAY[1405]
注記:追加の割り込み情報も省略できます。

PROFINET IO または集中 I/O デバイスからの割り込みがあるヘッダー情報の構造体
バイト

データタイプ意味

0 および 1

WORD

• ビット 0～7:ブロックタイプ• ビット 8～15:予約済み

2 および 3

WORD

ブロック長

4 および 5

WORDバージョン:• ビット 0～7:下位バイト:• ビット 8～15:上位バイト:

2114

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
バイト

データタイプ意味

6 および 7

WORD

割り込みタイプの ID:• 1:診断割り込み(着信または発信)• 2:プロセス割り込み• 3:モジュール割り込みの削除• 4:モジュール割り込みの挿入• 5:ステータス割り込み• 6:更新割り込み• 7:冗長化割り込み• 8:スーパーバイザによる制御• 9:スーパーバイザによるリリース• 10:設定されたモジュールが挿入されていません• 11:サブモジュールの戻り値• 12:診断割り込み(発信)• 13:スレーブツースレーブ接続アラーム• 14:近傍変更アラーム• 15:クロック同期メッセージ(バス側)• 16:クロック同期アラーム(デバイス側)• 17:ネットワークコンポーネントアラーム• 18:時刻同期アラーム(バス側)• 19～29:予約済み• 30: Upload-and-Retrieval-Alarm• 31:予約済み• 32～127:製造元固有の割り込み• 128～65535:予約済み

8～11

DWORD

API (アプリケーションプロセス識別子)

12～13

WORD

割り込みをトリガするコンポーネントのスロット番号(値の範囲 0～65535)

14～15

WORD

割り込みをトリガするコンポーネントのサブモジュールのスロット番号(値の範囲 0～65535)

16～19

DWORD

モジュール識別、割り込みのソースの固有情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2115

拡張命令
4.5 リモート I/O
バイト

データタイプ

意味

20～23

DWORD

サブモジュール識別、割り込みのソースの固有情報

24～25

WORD

割り込み指定子。
• ビット 0～10:シーケンス番号(値の範囲 0～2047)• ビット 11:チャンネル診断:
0:使用できるチャンネル診断なし
1:チャンネル診断情報存在します• ビット 12:製造元固有診断のステータス:
0:使用できる製造元固有のステータス情報なし
1:製造元固有のステータス情報入手可能• ビット 13:サブモジュールの診断のステータス:
0:ステータス情報なし、すべてのエラーが修正済み
1:チャンネル診断および/またはステータス情報の少なくとも 1 つのアイ
テムが使用できます。
• ビット 14:予約済み• ビット 15:アプリケーション関係の診断状態:– 0:この AR 内で構成されたモジュールのどれも、診断情報を報告しない。
– 1:この AR 内で構成されたモジュールの少なくとも 1 つが、診断情報を報告する。

PROFINET IO または集中 I/O からの割り込みに対する追加割り込み情報の構造体

2116

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
PROFINET IO の追加の割り込み情報は、書式識別子によって異なります。これは、同じまたは異なる書式識別子付きの複数のデータブロックで構成することができます。次の書式
識別子が使用可能です。
• W#16#0000 ～W#16#7FFF:製造元固有の診断
バイト

データタイ 意味
プ

0～1

WORD

追加の割り込み情報としての役割を果たす次のデータ構造の書式識別子
W#16#0000 ～W#16#7FFF:製造元固有の診断

2～n

BYTE

製造元のマニュアルを参照してください。

• W#16#8000:チャンネル診断
チャンネル診断は、各 6 バイトのブロックで出力されます。追加の割り込み情報(書式
識別子なし)は、途切れたチャンネルのみについて出力されます。
バイト

データタイ 意味
プ

0～1

WORD

追加の割り込み情報としての役割を果たす次のデータ構造の書式識別子
W#16#8000:チャンネル診断

2～3

WORD

割り込みをトリガするコンポーネントのチャンネル番号(値の範囲:0～65535):• W#16#0000 ～W#16#7FFF:インターフェースモジュール/サブモジュールのチャンネル番号• W#16#8000:サブモジュール全体の汎用代替値• W#16#8001～W#16#FFFF:予約済み

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2117

拡張命令
4.5 リモート I/O
バイト

データタイ 意味
プ

4

BYTE

ビット 0～2: 予約済み
ビット 3～4: エラーのタイプ:• 0:予約済み• 1:着信エラー• 2:発信エラー• 3:発信エラー、他のエラーあり
ビット 5～7: チャンネルのタイプ:• 0:予約済み• 1:入力チャンネル• 2:出力チャンネル• 3:入力/出力チャンネル

2118

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
バイト

データタイ 意味
プ

5

BYTE

データ形式:• B#16#00:任意のデータ形式• B#16#01:ビット• B#16#02:2 ビット• B#16#03:4 ビット• B#16#04:バイト• B#16#05:ワード• B#16#06:ダブルワード• B#16#07:2 ダブルワード• B#16#08 ～B#16#FF:予約済み

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2119

拡張命令
4.5 リモート I/O
バイト

データタイ 意味
プ

6～7

WORD

エラーのタイプ:• W#16#0000:予約済み• W#16#0001:短絡• W#16#0002:電圧不足• W#16#0003:過電圧• W#16#0004:過負荷• W#16#0005:過度の温度上昇• W#16#0006:断線• W#16#0007:上限値超過• W#16#0008:下限値の超過• W#16#0009:エラー• W#16#000A:シミュレーション動作中• W#16#000B ～W#16#000E:予約済み• W#16#000F ～W#16#001F:製造元固有。関連するマニュ
アルを参照してください。
• W#16#0020 ～W#16#00FF:予約済み• W#16#0100 ～w#16#7FFF:製造元固有。関連するマニュ
アルを参照してください。
• W#16#8000:データ転送ができません• W#16#8001:パートナーでエラーが発生しました• W#16#8002:メディアリダンダンシーエラー• W#16#8003:同期喪失• W#16#8004:アイソクロナスモードエラー• W#16#8005:マルチキャスト CR のエラー
• W#16#8006:予約済み• W#16#8007:光ファイバエラー• W#16#8008:ネットワークコンポーネントのファンクショ
ン障害• W#16#8009:タイムエラー• W#16#800A:DFP 問題(DFP:動的フレーム圧縮)• W#16#800B:MRPD 問題(MRPD:計画された重複を伴うメディアリダンダンシー)• W#16#800C:システム冗長性エラー• W#16#800D ～W#16#FFFF:予約済み

2120

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
バイト

データタイ 意味プ
すべてのエラータイプをサポートしていないチャンネルもあります。詳細情報については、特定のデバイスの診断データの説明を参照してください。

注記「チャンネル番号」から「エラータイプ」までのセクションは、0～n 回発生します。
• W#16#8001:MULTIPLE (異なるタイプの診断情報が送信されます)。この場合、追加の割
り込み情報は可変長のブロックとして転送されます。
バイト

データタ 意味
イプ

0～1

WORD

追加の割り込み情報としての役割を果たす次のデータ構造の書式
識別子
W#16#8001:製造元固有の診断および/またはチャンネル診断

2～3

WORD

ブロックタイプ

4～5

WORD

ブロック長

6

BYTE

バージョン:上位バイト:

7

BYTE

バージョン:下位バイト:

8～11

DWORD

API (バージョンの下位バイト= 1 の場合のみ)

12～13 WORD

スロット番号

14～15 WORD

サブスロット番号

16～17 WORD

チャンネル番号18～19 WORD

チャンネルプロパティ

20～21 WORD

書式識別子:• W#16#0000 ～W#16#7FFF:製造元固有の診断• W#16#8000:チャンネル診断• W#16#8002:拡張チャンネル診断• W#16#8003:段階的拡張チャンネル診断• W#16#8004 ～W#16#80FF:予約済み

22～n

BYTE

書式識別子に基づくデータ

注記「ブロックタイプ」から始まるセクションは、1～n 回発生します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2121

拡張命令
4.5 リモート I/O• W#16#8002:拡張チャンネル診断
バイト

意味

0～1

書式識別子 W#16#8002

2～3

チャンネル番号

4～5

チャンネルプロパティ

6～7

エラータイプ

8～9

追加のエラー値

10～13

追加のエラー情報• W#16#8003:段階的拡張チャンネル診断
バイト

意味

0～1

書式識別子 W#16#8003

2～3

チャンネル番号

4～5

チャンネルプロパティ

6～7

エラータイプ

8～9

追加のエラー値

10～13

追加のエラー情報

14～17

限定チャンネル修飾子• W#16#8100:保守情報
バイト

意味

0～1

書式識別子 W#16#8100

2～3

ブロックタイプ

4～5

ブロック長

6～7

ブロック バージョン

8～9

予約済み
注記:これらの 2 バイトが基本モジュールで見つかりません。これらは分散型モジュールに存在します(PROFINET 規格に従って)。

10～13

メンテナンス状態

注記
追加のアラーム情報の構造体の詳細情報については、PROFIBUS DP から PROFINET IO ま
での SIMATIC PROFINET IO プログラミングマニュアルおよび IEC 61158-6-10-1 現行バージョンを参照してください。

2122

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

4.5.10.5

コピー先の領域 TINFO および AINFO

コピー先の領域 TINFO

および「RALRM (ページ 2076)」が呼び出されたそれぞれの OB によって、コピー先の領域 TINFO

AINFOおよび AINFO は、部分的に書き込まれます。次の表を参照して、入力される情報を特定してください。

割り込みタイプ

OB
クラ
ス

TINFO
TINFO
OB の開始情 管理情報
報

AINFO
ヘッダー情
報

AINFO
追加の割り込み情報

プロセス割り込み

4x

可能

可能

集中:

不可

分散:

PROFIBUS DP スレ

可能ーブ/PROFINET IO
デバイスでの提供
によるステータス割り込み 55

可能

可能

可能

可能

可能

56

可能

可能

可能

可能

可能

製造元固有の割り込 57

可能

可能

可能

可能

可能

70

あり

あり

なし

なし

なし

82

可能

可能

可能

集中:

PROFINET IO 標準に

更新割り込み
みI/O
冗長エラー
診断割り込み従った構造
分散:

PROFIBUS DP スレーブ/PROFINET IO
デバイスでの提供
による

割り込みの

83

可能

挿入/削除

可能

可能

集中:

不可

分散:

PROFIBUS DP スレーブ/PROFINET IO
デバイスでの提供
によるTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2123

拡張命令
4.5 リモート I/OOB
クラス

割り込みタイプモジュール削除割り 83

TINFO
TINFO
OB の開始情 管理情報
報

AINFO
ヘッダー情
報

AINFO
追加の割り込み情報

可能

可能

可能

PROFINET IO のみ

可能

可能

可能

PROFINET IO のみ

可能

可能

可能

PROFINET IO のみ

あり

あり

なし

なし

あり

なし

なし

なし

込みの特殊な形態:
スーパーバイザによる制御モジュール挿入割り 83
込みの特殊な形態:
スーパーバイザによる有効化
未設定のモジュール 83の挿入86

ラック障害/
ステーション障害...その他すべての OB

4.5.10.6

RALRM のプログラム例

概要
次の例では、入力モジュールを使用して断線を生成し、関連情報を含む割り込みを受信します。この例は PROFINET IO および/または S7-1500 に当てはまります。
注記
例の配置
この例は、入力モジュールが割り込み(断線)を生成するセットアップで保存する必要があ
ります。

2124

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

要件• 入力モジュールが作成され、ハードウェア識別子が入力モジュールのプロパティで読み出されます。入力パラメータ F_ID 「alarmCheckID」()を使用してハードウェア識別子を保存します。
• 割り込みを生成するために、入力チャンネルのオプション[断線]を選択します。このオ
プションは、[モジュールパラメータ|チャンネルテンプレート|入力]の下で使用可能です。

• データ保存するために、グローバルデータブロックでの 7 つのタグと構造体「TI_Diagnostic_Interrupt」および「Additional_Diag」を作成します。
「TI_DiagnosticInterrupt」データタイプの「TI_Diagnostic_Interrupt」構造体を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2125

拡張命令
4.5 リモート I/O

パラメータの相互接続
命令「RALRM」を診断割り込み OB (OB82)で呼び出します。この命令のパラメータを以下のように相互接続します。

RALRM の結果
注記
断線のトリガ
割り込みをトリガするために、入力モジュールの入力の電力ケーブルのいずれかを引き抜き、再び接続します。別の方法として、入力モジュールの電位ブリッジを引き抜いて、再び接続することもできます。
断線を生成すると、入力モジュールが割り込みを生成します。次に、診断割り込み OB が呼び出され、命令「RALRM」が開始されます。
命令「RALRM」が入力パラメータ F_ID 「alarmCheckID」()を使用して、入力モジュールを呼び出します。命令「RALRM」が、値「2」(入力パラメータ MODE「alarmMode」()の)に従って入力モジュールから割り込みが生成されるかどうかをチェックします。割り込みが入力モジュールから生成される(「alarmCheckID」と「alarmFromID」が同一である)場合、出力パラメータ NEW 「alarmReceived」()が「TRUE」にセットされ、パラメータ TINFO「TI_Diagnostivc_Interrupt」()および AINFO 「Additional_Diag」()を使用して割り込み情報が2126

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
保存されます。割り込みを生成するモジュール(入力モジュール)のハードウェア識別子が出力パラメータ ID 「alarmFromID」()で示されます。
受信された割り込み情報の長さが出力パラメータ LEN 「alarmLength」()で記録されます。
入力パラメータ MLEN の値(「alarmMaxLength」の値が「0」)に従って、AINFO「Additional_Diag」()で読み出される情報に制限はありません。
ブロックステータスが出力パラメータ STATUS 「alarmStatus」()で示されます。処理がエラ
ーなしで行われます。

以下のセクションには、TINFO および AINFO の評価が含まれています。

パラメータ TINFO 「TI_Diagnostivc_Interrupt」()に関する詳細
OB 開始情報および管理情報がパラメータ TINFO 「TI_Diagnostivc_Interrupt」()で保存されます。
生成された割り込みに以下の情報が含まれます。
• OB の開始情報:OB82 は最適化された開始情報を使用します(値が「254」の「SI_Format」)。
• 管理情報– ステータスが「エラー」(「IO_State」の値を参照)の入力モジュール(「LADDR」を参照)が読み出されます。
– チャンネル「15」について割り込みが最近記録されました(「Channel」の値を参照)。
– 複数のエラーが記録されました(値が「TRUE」の「MutliError」)。
– ステーション「0」について割り込みが最近記録されました(「address」の値を参照)。
– 診断データレコード 0 に従って構造体が記録されました(「slv_prfl」の値を参照)。
– 設定済み分散型モジュールによって割り込みがトリガされました(「intr_type」の値を参照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2127

拡張命令
4.5 リモート I/O

パラメータ AINFO 「Additional_Diag」()に関する詳細
割り込みに関するヘッダー情報と追加情報がパラメータ AINFO 「Additional_Diag」
(
)で保存
されます。
注記
割り込み情報の構造と範囲
この例の目的は、単一のハードウェア障害(断線)の受信を示すことです。マルチエラーの発生時に、関連チャンネルのいずれかに関する割り込み情報のみが表示されます。
• 各チャンネルの追加情報を個別に呼び出すために、RALRM の複数の呼び出しを使用します。
それぞれの呼び出しで、チャンネル(「TI_Diagnostivc_Interrupt.Channel」)を照会し、各チャンネルについてタグ「ChannelErrorType」の情報を「ErrorCode」に保存します。「RALRMを使用したチャンネル診断に関する FAQ」も参照してください。
• アプリケーションに応じて、パラメータ AINFO (ページ 2113)で保存される構造体に注意してください。

生成された割り込みに以下の情報が含まれます。
• 使用される OB は診断割り込み OB (値が「1」の「InterruptType」)。
• スロット「2」(「SlotNumber」)でのモジュールおよびチャンネル 8～15 (BYTE 1、「SubSlotNumber」)について、割り込みが報告されます。
• チャンネル診断および/またはステータス情報の少なくとも 1 つのアイテムがサブモジ
ュールで使用できます(値が「16#2000」の「InterruptSpecifier」)。
• この例では、チャンネル診断の構造体が使用されます(値が「16#8000」の「FormatIdentifier」)。

2128

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O• 割り込みをトリガしたコンポーネントのチャンネル番号がサブモジュールに割り当てられます(値が「16#0008」の「ChannelNumber」)。
• 入力チャンネルの着信エラー(値が「ChannelErrorType」の「16#28」)が診断されます。
• 使用されるデータ形式はビットです(値が「16#01」の「DataFormat」)。
• 断線が診断されました(値が「16#0006」の「ErrorCode」)。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

その他の例
より複雑な例が「RALRM を使用したチャンネル診断に関する FAQ」に記載されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2129

拡張命令
4.5 リモート I/O

4.5.11

D_ACT_DP:DP スレーブの有効化/無効化

説明
命令「D_ACT_DP」を使用して、設定済みの DP スレーブ/PROFINET IO デバイスを無効化/
有効化することができます。さらに、それぞれの割り当てられた DP スレーブまたはPROFINET IO デバイスが現在有効か無効かを特定することができます。
注記
S7-1200 CPU
S7-1200 CPU では、PROFINET IO デバイスに対して D_ACT_DP 命令しか使用できません。
この命令を PROFIBUS DP スレーブには使用できません。
命令「D_ACT_DP」を使用して、ゲートウェイの IE/PB Link PN IO タイプを無効/有効にできません。それにもかかわらず、指定されたゲートウェイで「D_ACT_DP」を使用すると、CPU が値 W#16#8093 を返します(LADDR で指定されたアドレスに対して有効/無効にする
ことができるハードウェアオブジェクトが存在しません)。
以下は、ファームウェアバージョン V1.8 以降の S7-1500 CPU が対象です。「D_ACT_DP」
命令を使用して、ゲートウェイの IE/PB Link PN IO タイプに接続されている DP スレーブを無効化/有効化することができます。
この命令は、DP/PA リンクで DP マスタシステムに接続されている PROFIBUS PA フィール
ドデバイスでは使用できません。
注記
ジョブの無効化または有効化には、サイクルコントロールポイントを複数回通過する必要があります。したがって、プログラミングループでこのようなジョブの終了を待つことはできません。

ファンクションの説明「D_ACT_DP」は非同期命令です。複数のセルにわたって処理が行われます。REQ = 1 で「D_ACT_DP」を呼び出してジョブを開始します。
出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。
同期命令と非同期命令の相違 (ページ 29)も参照してください。

2130

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

アプリケーション
実際には存在しない、または現在必要とされていない CPU で DP スレーブ/PROFINET IO デ
バイスを設定した場合でも、CPU は定間隔でこれらの DP スレーブ/PROFINET IO デバイス
へのアクセスを継続します。スレーブが無効になった後は、CPU のアクセスも停止します。
PROFIBUS DP では、こうすることで可能な限り最速の DP バスサイクルを実現できます。
対応するエラーイベントが発生しなくなります。

例
機械 OEM の視点では、機械の量産では多数のデバイスのオプションがあります。しかし、それぞれの納入された機械には、選択されたオプションの 1 つの組み合わせしかありません。
これらの可能な機械のオプションのそれぞれが、共通のユーザープログラムですべての可能なオプションを作成し維持するため、製造元によって DP スレーブ/PROFINET IO デバイスとして設定されます。「D_ACT_DP」を使用して、機械のスタートアップ時に存在しなかったすべての DP スレーブ/PROFINET IO デバイスを無効にします。
同様に、機械ツールには多数のツールオプションがあるものの、同時に使用するのはそのうちのわずかであることです。これらのツールは、DP スレーブ/PROFINET IO デバイスとして実装されます。「D_ACT_DP」を使用して、ユーザープログラムが現在必要なツールを有効にし、後に必要なツールを無効にします。

ジョブの識別
無効化または有効化ジョブを開始し、ジョブが完了する前に再度「D_ACT_DP」を呼び出すと、命令の動作は新規の呼び出しに同じジョブが含まれるかどうかによって異なります。
入力パラメータ LADDR が一致した場合、呼び出しは後続の呼び出しとみなされます。

DP スレーブ/PROFINET IO デバイスの無効化「D_ACT_DP」で DP スレーブ/PROFINET IO デバイスを無効にした場合、そのプロセス出力は設定した代替値または 0 (セーフ状態)に設定されます。割り当て済み DP マスタ/
PROFINET IO コントローラは、このコンポーネントのアドレス指定を継続します。無効になった DP スレーブ/PROFINET IO デバイスは、DP マスタ/PROFINET IO コントローラのエラ
ー LED または CPU によって故障または不明である場合には識別されません。
無効になった DP スレーブ/PROFINET IO デバイスのプロセスイメージ入力は、0 で更新されます。そのため、これは障害の発生した DP スレーブ/PROFINET IO デバイスと同様に扱われます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2131

拡張命令
4.5 リモート I/O
無効になった DP スレーブ/PROFINET IO デバイスのユーザーデータにプログラムから直接アクセスすると、I/O アクセスエラー OB が呼び出され、対応するイベントの開始が診断バッファに入力されます。命令(「RD_REC (ページ 2157)」など)を使用して、無効になった DP
スレーブ/PROFINET IO デバイスにアクセスしようとすると、RET_VAL で使用できない DP
スレーブ/PROFINET IO デバイスと同じエラー情報を受け取ります。
DP スレーブ/PROFINET IO デバイスを無効にしても、その入力または出力が更新されるシステム側のプロセスイメージに属する場合でも、プログラムエラー OB は開始されません。
「D_ACT_DP」で無効にした後、DP ステーション/PNIO ステーションに障害が発生すると、オペレーティングシステムはこの障害を検出しません。
PROFIBUS DP に適用:スレーブツースレーブ通信でトランスミッタとして機能している DP
スレーブを無効にする場合、最初にどの入力データをトランスミッタがその DP マスタに転送しているかを検出するレシーバ(リスナー)を無効にすることを推奨します。トランス
ミッタは、必ずこのステップを実行した後に無効にしてください。

DP スレーブ/PROFINET IO デバイスの有効化「D_ACT_DP」で DP スレーブ/PROFINET IO デバイスを再度有効にする場合、このコンポー
ネントは、関連する DP マスタ/PROFINET IO コントローラによって設定され、パラメータを割り当てられます(障害が発生した DP ステーション/PROFINET IO ステーションの戻り値と同様)。この有効化は、コンポーネントがユーザーデータを転送できるようになると完了します。
DP スレーブ/PROFINET IO デバイスを有効にしても、その入力または出力が更新されるシステム側のプロセスイメージに属する場合でも、プログラムエラー OB は開始されません。
アクセスできない「D_ACT_DP」のある DP スレーブ/PROFINET IO デバイス(たとえば、バスから物理的に分離されたため)を有効にしようとする場合、リモート I/O の設定済みパラ
メータ割り当て時間の経過後に、この命令により、エラーコード W#16#80A7 が返されます。DP スレーブ/PROFINET IO デバイスが有効になり、有効になった DP スレーブ/
PROFINET IO デバイスにアクセスできないことが、対応する表示をシステム診断にもたらします。
DP スレーブ/PROFINET IO デバイスが後で再度アクセス可能な場合、標準的なシステムの動作(たとえば、このために設定された OB の呼び出し)が実行されます。
注記
DP スレーブ/PROFINET IO デバイスの有効化には、時間がかかる場合があります。現在実行中の有効化ジョブをキャンセルしたい場合、 「D_ACT_DP」を開始します(LADDR とMODE を同じ値「2」にセットして)。「D_ACT_DP」の呼び出し(MODE を 2 にセットして)を有効化ジョブのキャンセルの成功が RET_VAL =0 で示されるまで繰り返します。

2132

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
スレーブツースレーブ通信を行う DP スレーブを有効にする場合、最初にトランスミッタを有効にし、その後にレシーバ(リスナー)を有効にすることを推奨します。

パラメータ
以下の表に、「D_ACT_DP」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 レベルトリガの制御パラメータ
または定数

MODE

Input

USINT

説明

REQ=1:有効化または無効化の実行

I、Q、M、D、L、 ジョブ識別子
または定数

可能な値:
• 0:アドレス指定されたコンポーネントが有効であるか、または無効であるかに関する情報を要求(RET_VAL パラメータで出力)• 1:DP スレーブ/PROFINET IO デバイスを有効化
• 2:DP スレーブ/PROFINET IO デバイス
を無効化

LADDR

Input

HW_DEVICE I、Q、M、D、L、 DP スレーブ(HW_DPSlave)/PROFINET IO
または定数

デバイス(HW_Device)のハードウェア識
別子
この番号は、標準タグテーブルの「システム定数」タブから取得できます。
そこで、デバイス診断用の ID と動作ス
テータス移行用の ID の両方が指定されている場合、デバイス診断用のコードを使用する必要があります。

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

BUSY

Output

BOOL

I、Q、M、D、L

有効コード:• BUSY=1:ジョブがまだ有効です。
• BUSY=0:ジョブが終了しました。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2133

拡張命令
4.5 リモート I/O

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

ジョブがエラーなしで完了済み。

0001

DP スレーブ/PROFINET IO デバイスが有効(このエラーコードは MODE = 0 のみで使用可)。

0002

DP スレーブ/PROFINET IO デバイスが無効(このエラーコードは MODE = 0 のみで使用可)。

7000

REQ=0 による最初の呼び出し:LADDR で指定されたジョブが無効です。BUSY の値が「0」になっています。

7001

REQ=1 による最初の呼び出し:LADDR で指定されたジョブがトリガされました。BUSY の値が「1」になっています。

7002

中間呼び出し(REQとは無関係)。有効にしたジョブがまだ有効です。BUSY の値は「1」です。

8090• LADDR で指定されたアドレスでモジュールを設定していません。
• 使用している CPU を I スレーブ/I デバイスとして操作し、LADDR でこの I スレーブ/I デ
バイスのアドレスを指定しました。

8092

現在アドレス指定された DP スレーブ/PROFINET IO デバイスの無効化(MODE=2)は、有効化(MODE=1)によってキャンセルできません。後でコンポーネントを有効にしてください。

8093

LADDR で指定されたアドレスが、有効化または無効化が可能な DP スレーブ/PROFINET IO
デバイスに属していないか、MODE パラメータが不明です。

8094

ツール交換ポートの潜在的なパートナーであるデバイスを有効にしようとしました。しかし、現在このツール交換ポートで他のデバイスが有効になっています。有効になったデバ
イスは、有効のままになります。

80A0

CPU と IO コントローラ間の通信中にエラーが発生しました。

80A3

関係する DP マスタ/PROFINET IO コントローラがこのファンクションをサポートしていま
せん。

80A4

CPU が外部 DP マスタ/PROFINET IO コントローラでこのファンクションをサポートしてい
ません。

80A7

有効化中にタイムアウトが発生:リモートデバイスに到達できないか、設定した集中 I/O お
よびリモート I/O のパラメータ割り当て時間が短すぎます。リモートデバイスのステータ
スが「有効」ですが、リモートデバイスに到達できません。

80AA

DP スレーブ/PROFINET IO デバイスでのエラーを有効化コンフィグレーションによる違い

80AB

DP スレーブ/PROFINET IO デバイスでのエラーを有効化パラメータ割り当てエラー

80AC

DP スレーブ/PROFINET IO デバイスでのエラーを有効化メンテナンス必須

2134

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコード* 説明(W#16#...)
80C3• 一時的なリソースエラー:CPU が現在、最大可能な有効化および無効化ジョブ(8)を処理中です。
• 修正された設定の受信のために CPU が使用中です。現在、DP スレーブ/PROFINET IO デ
バイスの有効化/無効化を行えません。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

4.5.12

ReconfigIOSystem:IO システムの再構成

4.5.12.1

ReconfigIOSystem: IO システムの再構成

説明「ReconfigIOSystem」命令を使用して、データレコードを CPU の PROFINET インターフェースに転送します。このデータレコード 「CTRLREC」パラメータ)(
は、設定を制御するための次の情報を含みます。
• 有効にするオプションの IO デバイスのリスト• 指定するパートナーポートのリスト、IO デバイスのポートプロパティに[パートナーはユーザープログラムに設定]オプションを設定している場合。
注記「ReconfigIOSystem」命令は、MODE1 および MODE3 の内部で「D_ACT_DP」命令を使用
して IO デバイスを有効/無効にします。したがって、この命令の説明に記載されている規則と注記を遵守してください。
「D_ACT_DP:リモート I/O デバイスの無効化/有効化 (ページ 2130)」も参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2135

拡張命令
4.5 リモート I/O命令バージョン間の依存関係
命令「ReconfigIOSystem」のバージョン V1.1 には、命令「WRREC」のバージョン V1.1 が必要です。
命令「ReconfigIOSystem」のバージョン V1.0 には、命令「WRREC」のバージョン V1.1 が必要です。

ファンクションの説明「ReconfigIOSystem」は非同期命令です。複数のセルにわたって処理が行われます。REQ=1
で「ReconfigIOSystem」を呼び出してジョブを開始します。
出力パラメータ STATUS および BUSY は、ジョブのステータスを示します。

パラメータ
以下の表に、「ReconfigIOSystem」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

REQ

入力

BOOL

I、Q、M、D、L、 エッジトリガの制御パラメータ
または定数

MODE

入力

UINT

説明

REQ = 1:データ転送の実行

I、Q、M、D、L、 MODE パラメータを使用して命令の動作または定数方法を制御します。下記のテーブルに機能の詳細な説明が記載されています。
次の値が返されます。
• 1:変換フェーズで IO システムのすべての IO デバイスを無効にします。
• 2:データレコードの設定に従って IO
システムを再構成します(CTRLREC)。
• 3:再構成後に IO システムのすべてのIO デバイスを有効にします。

LADDR
CTRLREC

入力
入力

HW_INTERFA

I、Q、M、D、L、 PROFINET インターフェース(IO コント

CE

または定数

ローラ)のハードウェア識別子

VARIANT

I、Q、M、D、L

IO システムの実際の設定を制御するためのデータレコード

DONE

出力

BOOL

I、Q、M、D、L

0:命令がまだ完了していません。
1:命令が完了しました。

2136

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイプ メモリ領域

説明

BUSY

出力

BOOL

有効コード:

I、Q、M、D、L

0:命令が有効1:命令が完了しました。
ERROR

出力

BOOL

I、Q、M、D、L

0:命令がエラーなしで完了
1:命令がエラーありで完了

STATUS

出力

DWORD

I、Q、M、D、L

結果/エラーコード

ERR_INFO

出力

WORD

I、Q、M、D、L

直前にエラーが発生した IO デバイスのHW ID

有効なデータタイプに関する追加情報については、「有効なデータタイプの概要」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2137

拡張命令
4.5 リモート I/O

パラメータ MODE
MODE パラメータは、以下の値を取ることができます。
MODE

説明

1

モード 1 で命令を呼び出すことによって、IO システムのすべての IO デバ
イスを無効にすることができます。「ReconfigIOSystem」命令は「D_ACT_DP"」命令を内部で使用します。「ReconfigIOSystem」は、
D_ACT_DP によって検出されるエラーを以下の出力パラメータで返します。
• STATUS (エラーコード)• ERR_INFO (エラーが発生した IO デバイスのハードウェア識別子 )。
STATUS および ERR_INFO で、CPU は最後に特定されたエラー/HW 識別子を入力し、それにより既存のエラーコードを上書きします。そのため、入力されたエラー以外にもエラーが存在する可能性があります。

2

IO システムの実際の設定を制御するため、命令はデータレコードをPROFINET インターフェースに転送します。PROFINET インターフェース
は、LADDR を使用してアドレス指定されます。データレコードの構造に関する情報は、次のセクションを参照してください。エラー分析のための
STATUS パラメータについては、次のセクションを参照してください。

3

IO システムのオプションなしのすべての IO デバイス、および CTRLREC に記載されているオプションの IO デバイス制御データレコードは有効です。
CTRLREC データレコードに記載されていないオプションの IO デバイスは無効です。
ドッキングユニットの一部を構成する IO デバイスが CTRLREC 制御データ
レコードに記載されている場合、PN IO システムは次のように応答します。
• ドッキングユニットの IO デバイスは、ReconfigIOSystem がモード 3 で呼び出される場合は無効です。
この応答は、構成によって制御される IO デバイスが存在しない構成の応答に対応しています。ドッキングユニットの IO デバイスは既定で無効に設定されているため、ユーザープログラムで有効にする必要があります。

制御データレコードの構造体制御データレコード(「CTRLREC」パラメータ)を使用して、オプションで構成される IO デバイスが実際の IO システムで使用可能で、ポートの相互接続が設定される CPU のPROFINET インターフェースに通知することができます。

2138

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
これには、IO システムの構成で調整することが可能な構成が必要となります。
• 制御データレコードに記載されている IO デバイスは、「オプションの IO デバイス」として有効にする必要があります(IO デバイスのプロパティ:PROFINET インターフェース[X1]|詳細オプション|インターフェースオプション)。
• 制御データレコードに記載されているポートの相互接続は、パートナーポートが適切なポートとして「パートナーはユーザープログラムによって設定」されている場合のみ可能です。
パラメータ CTRLREC のデータタイプは「VARIANT」です。「CTRLREC」制御データレコー
ドは、以下の構造を持っています。
• ReconfigIOSystem のバージョン V1.1 まで:Word データタイプのエレメントの配列(数値
アドレス指定の場合)• バージョン V1.2 以降の ReconfigIOSystem:UInt データタイプのエレメントの配列(シンボリックアドレス指定または数値アドレス指定の場合)または Word データタイプのエ
レメントの配列(数値アドレス指定の場合)
下記に「CTRLREC」の基本的な構造が Word エレメントデータタイプを使用して記載されています。
ネットワークビューまたはデバイスビューの[システム定数]タブで必要なハードウェア識
別子を直接読み出します。これを行うには、ネットワークビュー(IO デバイス)またはデバ
イスビュー(PROFINET インターフェース)でオブジェクトを選択します。
推奨事項:HW 識別子の名前を使用して、HW 識別子の記号アドレス指定を使用してください。
名前

データタイプ

コメント

Version_High, Version_Low

Word

制御データレコードのバージョン(
上位バイト:01
下位バイト:00

Number_of_opt_Devices_used

Word

実際の IO システムの構成で使用されるオプションの IO
デバイスの番号。下記のリストに記載されていないオプ
ションの IO デバイスは、無効になっています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2139

拡張命令
4.5 リモート I/O
名前

データタイプ

コメント

Activate_opt_Device_1

Word / Hw_Device

実際の構成で存在するオプションの IO デバイスは、ハードウェア識別子と共にリストに記載する必要があります。
IO デバイスオブジェクトのシステム定数を使用します。
例:IO デバイスオブジェクトの名前は「IODevice_4~IODevice」であり、タイプは「Hw_Device」
です。

Activate_opt_Device_2

Word / Hw_Device

2 番目のオプションの IO デバイス(値が 262 など)

...

...

...

Activate_opt_Device_n

Word / Hw_Devicen 番目のオプションの IO デバイス(値が 282 など)

Number_of_Port_InterconnectionWord

下記のリストに記載されたポート相互接続の番号。ポーs_usedト相互接続を指定しない場合は、「0」を入力します。
「パートナーはユーザープログラムによって設定」され、下記のリストに記載されていないすべてのポートでは、
CPU は「任意のパートナー」設定を使用します。

Port_Interconnection_1_Local

Word / Hw_Interface

1 番目のポートの相互接続、ローカルポートの HW 識別
子
ポートオブジェクトのシステム定数を使用します。
例:ポートオブジェクトの名前は「IODevice_2~PROFINET_interface~Port_2」であり、タイプ
は「Hw_Interface」です。

Port_Interconnection_1_Remote

Word / Hw_Interface

1 番目のポートの相互接続、パートナーポートの HW 識
別子

Port_Interconnection_2_Local

Word / Hw_Interface

2 番目のポートの相互接続、ローカルポートの HW 識別
子

Port_Interconnection_2_Remote

Word / Hw_Interface

2 番目のポートの相互接続、パートナーポートの HW 識
別子

...

...

...

Port_Interconnection_n_Local

Word / Hw_Interface

n 番目のポート相互接続、ハードウェア識別子ローカル
ポート

Port_Interconnectio_n_Remote

Word / Hw_Interface

n 番目のポート相互接続、ハードウェア識別子ローカル
ポート

2140

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パラメータ STATUS
STATUS 出力パラメータには、エラー情報が含まれます。考えられるエラーコードの詳細なリストが次のセクションにあります。STATUS が ARRAY[1...4] of BYTE と解釈された場合、
エラー情報は次の構造になります。
フィールドエレ 名前
メント

意味

STATUS[1]B#16#DF:データレコードの書き込みエラー、それ以外の場合はFunction_Num

B#16#00。
STATUS[2]Error_Decode

エラーの場合は B#16#80 が出力されます(データレコードの読み出し/
書き込みの状況では IEC 61158-6 に対応します)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2141

拡張命令
4.5 リモート I/Oフィールドエレ 名前
メント

意味

STATUS[3]Error_Code_1

B#16#AA データレコードの構造体のエラーの場合

STATUS[4]Error_Code_2

製造元固有のエラー ID 拡張:• B#16#00 データレコードのエラー(バイト値の正しくないパディング(0 でない場合)• B#16#01 予約済み
• B#16#02 データレコードの IO デバイスの少なくとも 1 つのステー
ション番号が無効です(未設定、オプションなしの IO デバイスを指定、または IO コントローラの値が 0)。
• B#16#03 データレコードで指定された少なくとも 1 つのパートナーポートが無効です。
例:– パートナーポートのサブスロットアドレスが使用不可– パートナーポート正しく設定されていない(正しい設定:「パート
ナーはユーザープログラムによって設定」)– パートナーポートが無効な IO デバイスに属しています。
• B#16#10 CTRLREC 制御データレコードのバージョンが無効(指定されたバージョンはサポートされていません)• B#16#11 CTRLREC 制御データレコードで有効にするオプションの
IO デバイスの番号がサポートされていません。
• B#16#12 CTRLREC 制御データレコードで指定された相互接続(「パートナーをユーザープログラムで設定」)の番号がサポートされていません。
• B#16#13 ハードウェア識別子からデバイス番号への内部変換が失敗しました。ERR_INFO 出力パラメータには、エラーが発生したデバ
イスのハードウェア識別子が含まれています。
• B#16#14 整合性エラー:CTRLREC 制御データレコードの長さが、制御データレコードの情報を一致しません。例:20 のオプション IO デ
バイスが指定されていますが、制御データレコードの長さが 10 バ
イトしかありません。

エラーコード(STATUS パラメータ)
エラーコード説明

16#0000_0000 ジョブがエラーなしで完了済み
16#0070_0000 有効なジョブなし

2142

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコード説明

16#0070_0100 命令の最初の呼び出し
16#0070_0200 次の命令呼び出し(命令がまだ実行中、BUSY = 1)
16#0080_8000 MODE がサポートされていません
16#0084_5100 CRTLREC データレコードのデータタイプが正しくありません。
UInt の配列または Word の配列の使用。
16#0080_9100 LADDR パラメータは PROFINET インターフェースをアドレス指定しません(存在しないか誤ったタイプ、たとえば PROFIBUS インターフェー
ス)。
PROFINET インターフェースは IO システムの構成制御をサポートしていません。
16#0080_Cx00

リソースの一時的な不足などによる一時的なエラー

16#DF80_AAxy

データレコードの構造体のエラー(MODE 2)。「xy」の意味については、
上記の STATUS[4] Error_Code_2 の定義を参照してください。

16#DF80_B6xy

オプションの IO デバイスが構成されていないか、[パートナーはユー
ザープログラムに設定]でポートが割り当てられていないため、構成制
御ができません。この構成は命令呼び出しの要件です。
「xy」は対象外です。

16#0080_9400 内部的に呼び出された D_ACT_DP 命令のエラーコードが転送されまし16#0080_A000 た。
16#0080_A700 これらのエラーコードの意味については、「D_ACT_DP (ページ 2130)」を参照してください。
16#0080_AA00
エラーが発生した IO デバイスのハードウェア識別子は、ERR_INFO(入16#0080_AB00
力は後続のエラーによって連続して上書きされます)に入力されます。
16#0080_AC00
複数の IO デバイスが関連する場合、STEP 7 によるオンライン診断を推奨します。
IRT 構成の場合:IO デバイスのデバイス番号は、相互接続トポロジの昇
順で IO コントローラの後に続きます。詳細は、ここを参照してください。

例
例が ReconfigIOSystem のプログラム例 (ページ 2144)に記載されています。
この例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプルライ
ブラリ (ページ 25)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2143

拡張命令
4.5 リモート I/O

下記も参照
同期命令と非同期命令の相違 (ページ 29)

4.5.12.2

ReconfigIOSystem のプログラム例

概要
次の例では、制御データレコード「CTRLREC」を使用してプログラムで IO システムを構成します。ターゲット構成は、S7-1500 CPU、IO デバイス(ET 200MP など)、およびオプシ
ョンの IO デバイス(ET 200SP など)から成る必要があります。この目的で、既存の IO シス
テムを無効にし、構成値を CPU の PROFINET インターフェースに転送し、IO デバイスを有効にします。
データレコードに関する追加情報については、データレコードのタイプの概要 (ページ 1995)を参照してください。

2144

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

要件• S7-1500 CPU が作成されていること。
• 2 つの ET 200 が作成されていること。
• PROFINET 接続が作成され、以下のハードウェア設定が行われていること。
– IO デバイス(ET 200MP IM 155-5 PN HF)など)– オプションの IO デバイス(ET 200SP IM 155-6 PN ST など)– IO システムがプログラムによってセットアップされる

注記
プログラムによってセットアップされる IO システムのハードウェア設定
以下のように実行します。
1. 2 つの ET 200 を PROFINET 経由で CPU に接続します。
2. IO コントローラとして 2 つの ET 200 を CPU に割り当てます。次に、CPU のプロパティ
を開きます。
3. エントリ[PROFINET インターフェース[X1]|詳細オプション|ポート X1 P1|ポート相互接続|
パートナーポート]を開きます。オプション[ユーザープログラムによるパートナーの設定]
を選択します。[ポート X1 P2]について同じ手順を行います。
4. ET 200MP のプロパティ(...|ポート X1 P1)を開き、オプション[ユーザープログラムによるパートナーの設定]を選択します(ステップ 3 を参照)。
5. ET 200SP のプロパティ(...|ポート X1 P1)を開き、以下の設定を行います。
– オプション[ユーザープログラムによるパートナーの設定]を選択します(ステップ 3 を参照)。
– [PROFINET インターフェース[X1]|詳細オプション|インターフェースオプション]を開き、オプション[オプションの IO デバイス]を選択します。

データの保存データを保存するために、グローバルデータブロックで 2 つの構造体「operateMode」および「ctrlRec」と 13 の追加タグを作成します。
構造体「ctrlRec」に制御データレコード「CTRLREC」が含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2145

拡張命令
4.5 リモート I/O

注記システムに応じてハードウェア識別子(「laddr_interface」、「ctrlRec」)の値を指定する必要があります。
たとえば、CPU のインターフェース(「laddr_interface」)のハードウェア識別子を以下のように決定します。
CPU で、エントリ[PLC タグ|すべてのタグを表示|システム定数]を開き、名前<Local~PROFINET-Interface_1> (データタイプ「Hw_Interface」の)を検索します。関連するセル「値」にハードウェア識別子が含まれます。
注記使用されているインターフェースに注意してください。
• IO デバイス(ET 200MP/「<IO_device_1>」)のポート X1 P1 が CPU「<Local>」()のポート X1 P1に接続されています。
• オプションの IO デバイス(ET 200SP/「<IO_device_2>」)のポート X1 P1 が CPU(「<Local>」)のポート X1 P2 に接続されています。また、オプションの IO デバイスからのデバイス(データタイプ「Hw_Device」)のハードウェア識別子も必要です。

2146

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

FC「SLI_FC_start_reset_ReconfigIOS」でのパラメータの相互接続
命令「ReconfigIOSystem」を開始またはリセットするために、FC「SLI_FC_start_reset_ReconfigIOS」を作成します。データを渡すために、FC で以下のロー
カルタグを作成します。

ネットワーク 1:入力パラメータ REQ 「getExecute」()をセットするために、タグ「start」を相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2147

拡張命令
4.5 リモート I/O

ネットワーク 2:「start」をリセットするために、以下の相互接続を作成します。

ネットワーク 3:すべての設定済みプロセス値をリセットするために、以下の相互接続を作成します。ネットワークのパート 1:

ネットワークのパート 2:

2148

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 4:「reset」をリセットするために、以下の相互接続を作成します。

FC「SLI_FC_switchMode_ReconfigIOS」でのパラメータの相互接続
IO システムを安全に再構成するために、「ReconfigIOSystem」の 3 つのモードをすべて試行します。FC「SLI_FC_switchMode_ReconfigIOS」でモード切り替えの自動制御を設定する必要があります。そうすれば、「ReconfigIOSystem」命令のモードを自分で切り替える必
要がなくなります。
ネットワーク 1:エラーの場合に情報を保存するために、以下の相互接続を作成します。

ネットワーク 2:モード 2 またはモード 3 で命令「ReconfigIOSystem」を自動的に開始する
ために、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2149

拡張命令
4.5 リモート I/O

ネットワーク 3:モード 1 での ReconfigIOSystem の処理の成功を以下のように記録します。

ネットワーク 4:モード 1 からモード 2 に安全に切り替えるために、以下の相互接続を作成します。

ネットワーク 5:モード 2 での ReconfigIOSystem の処理の成功を以下のように記録します。

2150

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 6:モード 2 からモード 3 に安全に切り替えるために、以下の相互接続を作成します。

ネットワーク 7:モード 3 での ReconfigIOSystem の処理の成功を以下のように記録します。

ネットワーク 8:ReconfigIOSystem の処理を終了するために、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2151

拡張命令
4.5 リモート I/O

注記
別の方法として、処理後にモード 3 からモード 1 に切り替えることができます。この目的
で、命令「MOVE」の値「1」を入力します。

FB「SLI_FB_ReconfigIOSystem」でのパラメータの相互接続
命令「ReconfigIOSystem」を FB 「SLI_FB_ReconfigIOSystem」()で呼び出します。データを渡すために、FB で以下のローカルタグを作成します。タグ「#recordAoWord」および「#recordStruct」を AT 構成要素として作成します。これらのタグは同じサイズでなければなりません(「ctrlRec」と)。

ネットワーク 1:データレコード(「ctrlRec」)を転送するために、以下の相互接続を作成しま
す。

2152

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ネットワーク 2:FC「SLI_FC_start_reset_ReconfigIOS」を以下のように相互接続します。

ネットワーク 3:命令「ReconfigIOSystem」を以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2153

拡張命令
4.5 リモート I/O
ネットワーク 4:FC「SLI_FC_switchMode_ReconfigIOS」を以下のように相互接続します。

FB 「SLI_FB_ReconfigIOSystem」()を OB1 で呼び出します。

結果(FB「SLI_FB_ReconfigIOSystem」)
FB ネットワーク 1

データレコード(「ctrlRec」)の値が Array of WORD「#recordAoWord」()に転送されます(MOVE
命令を使用して)。理解しやすいように、構造体「ctrlRec」および「#recordStruct」のタ
グは記述名によって表されます。
FB ネットワーク 2

入力パラメータ start「start」()がシグナル状態「TRUE」を返すと、タグ「getExecute」と出力パラメータ startDone 「startDone」()が「TRUE」にセットされます。命令「ReconfigIOSystem」の処理がタグ「getExecute」によって「TRUE」で開始されます。
入力パラメータ reset 「reset」()がシグナル状態「TRUE」を返すと、「ReconfigIOSystem」の開始コマンド、処理のプロセス値、および障害シナリオの情報がリセットされます。
FB ネットワーク 3

入力パラメータ REQ 「getExecute」()がシグナル状態「TRUE」を返すと、「ReconfigIOSystem」命令が開始されます。命令「ReconfigIOSystem」が、入力パラメータLADDR 「laddr_interface」()を使用して CPU のインターフェースを呼び出します。
動作モードが命令「ReconfigIOSystem」に(入力パラメータ MODE 「operateMode.value」()
を使用して)転送されます。ReconfigIOSystem は、開始値「1」に従って CPU の既存のすべての IO システムを無効にします。ブロックステータスが出力パラメータ STATUS「status」()で示されます。この例では、処理がエラーなしで行われます。
「ReconfigIOSystem」命令は、モード 2 でのみ入力パラメータ CTRLREC「#recordAoWord」()でデータレコードを呼び出します。セットアップされる
ReconfigIOSystem の IO システムの構成値が CPU (IO コントローラ)に伝達されます。
モード 3 で、「ReconfigIOSystem」命令は IO システムを有効にします。入力パラメータ
REQ 「getExecute」()および MODE 「operateMode.value」()の切り替えはネットワーク 4「SLI_FC_switchMode_ReconfigIOS」()で実行されます。

2154

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

FB ネットワーク 4

モード 1 での命令「ReconfigIOSystem」の処理が成功した場合(タグ「done」の値が「TRUE」の場合)、タグ「operateMode.Disable_all_IO_devices_done」が「TRUE」にセットされます。その結果、入力パラメータ REQ 「getExecute」()が「FALSE」にリセットされます。ReconfigIOSystem が無効になると(「status」の値が「16#0070_0000」)、値「2」がタグ「operateMode.value」に渡されます。次に、ReconfigIOSystem がモード 2 になります。
モード 2 で、入力パラメータ REQ「getExecute」()が自動的に「TRUE」にセットされます(以下のことが命令「ReconfigIOSystem」に当てはまる場合)。
• ReconfigIOSystem が無効である(「busy」および「done」が「FALSE」)。
• エラーが発生しない(「error」が「FALSE」)。
• モード 2 の成功状態に到達していない(「operateMode.Reconfigure_IO_system_done」
が「FALSE」)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2155

拡張命令
4.5 リモート I/O
モード 2 での命令「ReconfigIOSystem」の処理が成功した場合(タグ「done」の値が「TRUE」の場合)、タグ「operateMode.Reconfigure_IO_system_done」が「TRUE」にセットされます。その後、状況はモード 1 と同様になります。
• 「getExecute」タグが「FALSE」にリセットされます。
• ReconfigIOSystem 「operateMode.value」()がモード 3 にセットされます。
モード 3 で、入力パラメータ REQ「getExecute」()が自動的に「TRUE」にセットされます(モード 2 の場合と同じことが「ReconfigIOSystem」命令に当てはまる場合)。ただし、1 つの例外があります。
• モード 3 の成功状態に到達していない(「operateMode.Enable_all_IO_devices_done」が「FALSE」)。
モード 3 の成功状態(タグ「done」の値が「TRUE」)がモード 2 の場合と同じ方法で照会されます。処理が成功した後、ReconfigIOSystem はモード 3 に残ります「operateMode.value」が値を保持します)。
(
3 つのモードの処理が完了した後、「ReconfigIOSystem」命令が無効になります(「status」の値が「16#0070_0000」)。IO システムがセットアップされます。1 つの IO デバイスと 1
つのオプションの IO デバイスを備える S7-1500 CPU。両方の IO デバイスが有効になります。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
ReconfigIOSystem: IO システムの再構成 (ページ 2135)

2156

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

4.5.13その他

4.5.13.1

RD_REC:I/O からデータレコードの読み出し

説明
この命令を使用して、アドレス指定されたモジュールから番号 RECNUM を持つデータレ
コードを読み出します。読み出しプロセスを開始するには、呼び出し中に入力パラメータ
REQ に値「1」を割り当てます。読み出しプロセスが直ちに実行されると、この命令が出力
パラメータ BUSY で値「0」を返します。BUSY が値「1」の場合、読み出しが未完了です。
同期命令と非同期命令の相違 (ページ 29)も参照してください。データ転送にエラーがな
かった場合、読み出されたデータレコードは、RECORD パラメータで範囲が決められたターゲット範囲に入力されます。
注記
1997 年 2 月以前に購入した FM または CP (以下「旧モジュール」と呼びます)から 1 を超える番号のデータレコードを読み出す場合、「RD_REC」は新型モジュールの場合とは異なる応答をします。この特殊な状況については、「データレコード番号 >1 の旧型 S7-300 FM お
よび CP の使用」セクションで説明しています(以下参照)。
DPV1 スレーブを GSD ファイル(GSD rev. 3 以降)を使用して設定し、DP マスタの DP イン
ターフェースが「S7 互換」に設定されている場合、「RD_REC」を使用してユーザープロ
グラムの I/O モジュールからデータレコードを読み出すことができない場合があります。
この場合、DP マスタが誤ったスロットをアドレス指定しています(設定したスロット + 3)。
対策:DP マスタのインターフェースを「DPV1」にセットします。

パラメータ
以下の表に、「RD_REC」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

REQ

Input

BOOL

説明

I、Q、M、D、L、 REQ = 1:読み出し要求
または定数

LADDR

Input

HW_IO

I、Q、M、D、L、 モジュールのハードウェア識別子。
または定数

RECNUM

Input

BYTE

I、Q、M、D、L、 データレコード番号(許可される値:0～
または定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

240)

2157

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイ メモリ領域
プ

説明

RET_VAL

ReturnINT

命令の実行中にエラーが発生した場合、戻I、Q、M、D、L

り値にエラーコードが含まれます。追加事
項:ターゲット範囲が転送されたデータレ
コードよりも大きく、転送中にエラーが発生しなかった場合の、実際に転送されたデータレコードの長さ(可能な値: +1～+240
バイト)。
BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:読み出しプロセスが未完了です。

RECORD

Output

VARIANT

I、Q、M、D、L

読み出されるデータレコードのターゲット範囲です。「RD_REC」の非同期実行によって、すべての呼び出しに対して RECORD の実パ
ラメータの長さ情報が同一であることを確認します。BYTE データタイプのみが許可されます。
注記:S7-300 CPU の場合、パラメータ
RECORD では常に DB パラメータ(P#DB13.DBX0.0 バイト 100 など)を完全に指定する必要があることに注意してください。明示的な DB 番号の省略は、S7-300
CPU では無効であり、ユーザープログラム
でエラーメッセージが表示されます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RECORD
注記
データレコード全体が必ず読み出されるようにするには、長さ 241 バイトのターゲット範囲を選択します。データ転送にエラーがない場合、RET_VAL に実際のデータレコード長が含
まれます。

2158

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

データレコード番号 > 1 の旧型の S7-300 FM および CP の使用
旧型 S7-300 FM または旧型 S7-300 CP から 1 よりも大きな番号のデータレコードを読み出すために「RD_REC」命令を使用する場合、次の点に注意してください。
• ターゲット範囲が必要なデータレコードの実際の長さよりも大きい場合、RECORD にはデータが入力されません。RET_VAL が W#16#80B1 で書き込まれます。
• ターゲット範囲が必要なデータレコードの実際の長さよりも小さい場合、RECORD の長さ情報で指定されたバイト数のみ CPU がレコードの先頭から読み出しを行い、そのバイト数を RECORD に入力します。RET_VAL が「0」で書き込まれます。
• RECORD で指定された長さが必要なデータレコードの長さと同じ場合、CPU がデータレ
コードを読み出し、RECORD に入力します。「0」で RET_VAL が書き込まれます。

パラメータ RET_VAL• ファンクションの実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。
• 転送中にエラーが発生しなかった場合、RET_VAL には次が含まれます。
– ターゲット範囲全体が選択されたデータレコードからのデータで埋められた場合(データレコードが不完全な場合もあります)は 0。
– ターゲット範囲が転送されたデータレコードよりも大きい場合の、実際に転送されたデータレコードの長さ(可能な値: +1～+240 バイト)。
注記
一般エラー W#16#8745 が発生した場合、これはプロセスイメージの少なくとも 1
バイトへのアクセスがブロックされたことのみを示します。データレコードはモジ
ュールに正しく読み出され、I/O メモリ領域に書き込まれています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2159

拡張命令
4.5 リモート I/O
次の表で「本当の」エラー情報(エラーコード W#16#8xyz)を参照する場合の、2 つの異なるケースについて説明します。
• 一時的なエラー(エラーコード W#16#80A2～80A3、80Cx):
このタイプのエラーは、ユーザーの操作なしで解決される可能性があります。そのため、命令を再度呼び出すことをお勧めします(必要に応じて、複数回の呼び出し)。
一時的なエラーの例:必要なリソースが現在使用中である場合(W#16#80C3)。
• 永続的なエラー(エラーコード W#16#809x、80A0、80A1、80Bx):
このタイプのエラーは、自然に解決しません。エラーを解決したら、命令を再び呼び出す必要があります。永続的なエラーの例:RECORD での長さ指定(W#16#80B1)が正しくありません。
注記「WR_REC (ページ 2163)」を使用して DPV1 スレーブにデータレコードを転送した場合、または RD_REC を使って DPV1 スレーブからデータレコードを読み出している場合でこの DPV1 スレーブが DPV1 モードで作動している場合、DP マスタはスレーブから受信したエラー情報を次のように評価します。
エラー情報が W#16#8000～W#16#80FF、または W#16#F000～W#16#FFFF の範囲にある場合、DP マスタはエラー情報を命令に渡します。エラー情報がこの範囲外の場合、DP マスタは値 W#16#80A2 を命令にし、スレーブを保留します。
DPV1 スレーブからのエラー情報の説明については、「STATUS[3] パラメータ STATUS (ページ 2079)」を参照してください。

WR_REC と RD_REC のパラメータ RET_VAL
エラーコード 説明*(W#16#...)

制限事項

0000

エラーは発生していません。

-

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありませ ん。BUSY の値は 0 です。

7001

REQ=1 による最初の呼び出し:データ転送が開始されましリモート I/O

た。BUSY の値は 1 です。
7002

リモート I/O

中間呼び出し(REQは対象外):データ転送が既に有効です。BUSY の値は 1 です。

8090

ADDR パラメータで指定されたアドレスが無効です。

-

8092

BYTE 以外のタイプが ANY 参照で指定されています。

-

2160

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコード 説明*(W#16#...)
8093

制限事項

この命令は、LADDR で指定されたハードウェア ID には使用 できません。

80A0

モジュールからの読み出し時の否定確認:読み出しプロセス 「RD_REC」のみ
中にモジュールが取り外されたか、または故障しています。

80A1

モジュールへの書き込み時の否定確認:書き込みプロセス中 「WR_REC (ページ 2163)」のにモジュールが取り外されたか、モジュールがみ

不具合のある80A2• レイヤー 2 での DP プロトコルエラー(たとえば、スレー リモート I/O
ブ故障またはバスの問題)• ET 200S の場合、DPV0 モードでデータレコードが読み出
せません。

80A3

ユーザーインターフェース/ユーザーによる DP プロトコル リモート I/O
エラー

80A4

PROFIBUS の通信が中断されました。

-

80B0

• モジュールタイプで命令が使用できません。

-• モジュールがデータレコードを認識しません。
• データレコード番号 241 は許可されていません。
• 「WR_REC (ページ 2163)」では、データレコード 0 および1は使用できません。
80B1

RECORD パラメータで指定された長さが正しくありません。 • 「WR_REC (ページ 2163)」の場合:長さが正しくない• 「RD_REC」の場合(古い S7-300 FM
および S7-300
CP):指定長さ > データレコ
ード長さ• DPNRM_DG の場合:指定された長さ < データレコード
長80B2構成されたスロットが-占有されていません。
80B3

実際のモジュールタイプ-

一致しません
一致しませんTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2161

拡張命令
4.5 リモート I/O
エラーコード 説明*(W#16#...)

制限事項

80B5

DP スレーブまたはモジュールの準備ができていません。

-

80B7

DP スレーブまたはモジュールがパラメータまたは値の無効 「RD_REC」のみ
な範囲を報告します。

80C0「WR_REC (ページ 2163)」の場合:データは、CPU が STOP モ 「WR_REC (ページ 2163)」まードの場合にのみ書き込み可能です。注記:つまり、ユーザ たは「RD_REC」または
ープログラムによる書き込みは不可能です。データの書き込 「DPNRM_DG (ページ 2199)」
みは、PG/PC を使用したオンラインのみで可能です。

の場合「RD_REC」の場合:モジュールはデータレコードをルーティングしますが、データが存在しないか、CPU が STOP モードの場合のみにデータを読み出すことができます。注記:CPUが STOP モードの場合のみにデータを読み出すことができる
場合、ユーザープログラムによる評価は不可能です。この場
合、データの読み出しは、PG/PC を使用したオンラインのみ
で可能です。
「DPNRM_DG (ページ 2199)」の場合:使用可能な診断データがありません。
80C1

モジュール上の、同じデータレコードの以前の書き込みジ ョブのデータがモジュールによって処理されていません。

80C2

現在、モジュールが CPU に対して処理可能な最大数の-ジョブを処理しています。
80C3-

必要なリソース(メモリなど)が、現在占有されています。

80C4

内部の一時的なエラー。ジョブを実行できませんでした。 ジョブを繰り返します。このエラーが頻発する場合は、据付けを点検して電気的な干渉の発生源を探します。

80C5

リモート I/O が使用不可です。

リモート I/O

80C6

優先度クラス中止(再起動またはバックグラウンド)のため、 リモート I/O
データレコードの転送が停止されました。

80Ex

製造元固有。モジュールの文書をチェックしてください。 -一般エラー情 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ペー報-

ジ 384)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2162

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

4.5.13.2

WR_REC: データレコードを I/O に書き込み

説明「WR_REC」命令を使用して、アドレス指定されたモジュールにデータレコード RECORD を転送します。
転送するデータは、最初の呼び出し中に RECORD パラメータから読み出されます。データ
レコードの転送に 1 回の呼び出しよりも長い時間がかかる場合、RECORD パラメータの内容
は後の命令呼び出しで関連性が失われます(同じジョブの場合)。
書き込みプロセスを開始するには、呼び出し中に入力パラメータ REQ に値「1」を割り当てます。書き込みプロセスを直ちに実行できる場合、この命令が出力パラメータ BUSY で値「0」を返します。BUSY が値「1」の場合、書き込みが未完了です。

パラメータ
以下の表に、「WR_REC」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

REQ

Input

BOOL

説明

I、Q、M、D、L、 REQ = 1:書き込み要求
T、C、または定数

LADDR

Input

HW_IO

I、Q、M、D、L、 モジュールのハードウェア識別子。
または定数

RECNUM

Input

BYTE

I、Q、M、D、L、 データレコード番号
または定数

RECORDInput

VARIANT

I、Q、M、D、L

データレコード

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:書き込みプロセスが未完了です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2163

拡張命令
4.5 リモート I/O

パラメータ RET_VAL
関連項目:RD_REC:I/O からデータレコードの読み出し (ページ 2157)
注記
一般エラー W#16#8544 が発生した場合、データレコードを含む I/O メモリ領域の少なく
とも 1 バイトへのアクセスが拒否されたことのみを示します。データ転送は継続されました。

4.5.13.3

DPRD_DAT:DP スレーブの整合性のあるデータ読み出し

説明
命令「DPRD_DAT」を使用して、I/O モジュールから矛盾のないデータを読み出します。
この命令は、基本モジュール、DP 標準スレーブ、および PROFINET IO デバイスの場合に使用できます。
I/O またはプロセスイメージ入力テーブルにアクセスする読み込みコマンドを使って読み出せるのは最大で連続する 4 バイトであるため、「DPRD_DAT」が必要です。必要に応じて、入力のプロセスイメージを使って整合性のあるデータを読み出すこともできます。使用している CPU がこの機能をサポートするかの確認については、関連する文書を参照してください。DP 標準スレーブ/PROFINET IO デバイスの整合性のあるデータの追加情報については、セクション「データの一貫性 (ページ 2923)」を参照してください。

2164

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
必要に応じて、1 バイト以上のデータ領域にも命令「DPRD_DAT」を使用します。データの最大長に関する情報については、お使いの CPU のマニュアルを参照してください(たとえば、S7-1214 では 64 バイト)。
• LADDR パラメータを使用して、DP 標準スレーブ/PROFINET IO デバイスのモジュールを選択します。アクセスエラーが発生すると、エラーコード W#16#8090 が出力されます。
• RECORD パラメータを使用して、読み出されたデータのターゲット範囲を定義します。
– ターゲット範囲は、少なくとも選択したモジュールの入力と同じ長さであることが必要です。ターゲット範囲がモジュールの入力よりも長い場合、ターゲット範囲の先頭から入力の値が書き込まれます。S7-1200 CPU の場合、ターゲット範囲の残りのバイトは変更されず、S7-1500 CPU の場合、残りのバイトはゼロで埋められます。
モジュール型構成または複数の DP 識別子を持つ DP 標準スレーブから読み出しを行う場合、アクセスできるのは 1 回の「DPRD_DAT」呼び出しごとに設定されたハードウェア識別子のモジュールのデータのみです。選択したターゲット範囲が小さす
ぎる場合、エラーコード RET_VAL が 80B1 パラメータで出力されます。
– 使用可能なデータタイプ: BOOL、BYTE、CHAR、WCHAR、WORD、LWORD、
DWORD、INT、UINT、USINT、SINT、LINT、ULINT、DINT、UDINT、REAL、LREAL。
タイプ ARRAY または STRUCT のデータ構造体でのこれらのデータタイプの使用も許可されています。
– STRING および WSTRING データタイプはサポートされていません。
– PLC データタイプ(UDT)およびシステムデータタイプがサポートされています。
• データ転送中にエラーがなかった場合、読み出されたデータは RECORD パラメータで定義されたターゲット範囲に入力されます。

パラメータ
次の表に、「DPRD_DAT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

LADDR

Input

HW_IO

I、Q、M、L、ま データの読み出し元のモジュールのハード
たは定数

説明
ウェア ID。
ハードウェア識別子は、 システム定数で確認できます。

RET_VAL

Return

INT

I、Q、M、D、L 命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

RECORD

Output

VARIANT

I、Q、M、D、L 読み出されたユーザーデータのターゲット
範囲。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2165

拡張命令
4.5 リモート I/O

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0000

エラーは発生しませんでした。

8090• 指定したハードウェア識別子のモジュールを設定していない、または• 整合性のあるデータの長さに関する制限を無視したか、または• LADDR パラメータでハードウェア識別子をアドレスとして指定していません。

8092

RECORD パラメータのサポートされていないデータタイプ。

8093

LADDR で指定されている整合性のあるデータを読み出す DP モジュール/PROFINET IO デバイ
スがありません。このエラーコードは、LADDR によってアドレス指定されたモジュールに入力がない場合も発生します。

80A0

I/O にアクセスしたときアクセスエラーが検出されました。

80B1

パラメータ RECORD で指定された宛先領域の長さが、設定したユーザーデータの長さよりも短くなっています。

80C0

データがまだ読み出されていません。

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
パラメータ STATUS (ページ 2079)

4.5.13.4

DPWR_DAT:DP スレーブのコンスタントデータの書き込み

説明「DPWR_DAT」命令は、パラメータ RECORD のデータを基本モジュールまたは DP 標準スレ
ーブ/PROFINET IO デバイスのアドレス指定したモジュールに、そして必要に応じて、プロセスイメージに(すなわち、DP 標準スレーブの関連するアドレス範囲をプロセスイメージの整合性のある範囲として投影している場合)、整合性を保って転送するために使用します。
I/O またはプロセスイメージ出力にアクセスする転送コマンドを使って書き込めるのは最大で連続する 4 バイトであるため、「DPWR_DAT」が必要です。必要に応じて、プロセスイ
メージ出力を使用して整合性のあるデータを書き込むこともできます。使用している CPU

2166

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
がこの機能をサポートするかの確認については、関連する文書を参照してください。整合性のあるデータを書き込む場合、両方の方法を同時に使用しないでください。「DPWR_DAT」
を使用するか、プロセスイメージ出力テーブルを使って書き込みます。DP 標準スレーブ/
PROFINET IO デバイスの整合性のあるデータの追加情報については、セクション「データの一貫性 (ページ 2923)」を参照してください。DP 標準スレーブがモジュール型設計となっている場合、DP スレーブの 1 つのモジュールのみにアクセスできます。
注意
I/O アクセス「DPWR_DAT」を使用する場合、OB6x 接続(アイソクロナスモード割り込み)が割り当てられたプロセスイメージパーティションがある I/O 領域へのアクセスは避けてください。
必要に応じて、「DPRD_DAT」命令を 1 倍と以上のデータ領域に使用することも可能です。
データの最大長に関する情報については、お使いの CPU のマニュアルを参照してください(たとえば、S7-1214 では 64 バイト)。
• LADDR パラメータを使用し、DP 標準スレーブ/PROFINET IO デバイスを選択します。ア
ドレス指定されたモジュールでアクセスエラーが発生すると、エラーコード 8090 が出力されます。
• RECORD パラメータを使用し、書き出されるデータのソース範囲を定義します。
– ソース範囲は、少なくとも選択したモジュールの出力と同じ長さであることが必要です。出力のみが転送され、他のバイトは考慮されません。パラメータ RECORD の
ソース領域が、設定されたモジュールの出力よりも長い場合、出力の最大長さまでのデータのみが転送されます。パラメータ RECORD のソース領域が、設定されたモジュールの出力よりも短い場合、エラーコード 80B1 が出力されます。
– 使用可能なデータタイプ: BOOL、BYTE、CHAR、WCHAR、WORD、LWORD、
DWORD、INT、UINT、USINT、SINT、LINT、ULINT、DINT、UDINT、REAL、LREAL。
タイプ ARRAY または STRUCT のデータ構造体でのこれらのデータタイプの使用も許可されています。
– STRING および WSTRING データタイプはサポートされていません。
– PLC データタイプ(UDT)およびシステムデータタイプがサポートされています。
データ転送は同期転送です。命令が終了すると、書き込みプロセスが完了します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2167

拡張命令
4.5 リモート I/O

パラメータ
次の表に、「DPWR_DAT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

LADDR

Input

HW_IO

I、Q、M、L、また データの書き込み先のモジュールのハーは定数

説明
ドウェア ID。
ハードウェア識別子は、 システム定数で確認できます。

RECORDInput

VARIANT

I、Q、M、D、L

書き込まれるユーザーデータのソース領域。

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0000

エラーは発生しませんでした。

8090• 指定したハードウェア識別子のモジュールを設定していない、または• 整合性のあるデータの長さに関する制限を無視したか、または• LADDR パラメータでハードウェア識別子を指定していません。

8092

RECORD パラメータのサポートされていないデータタイプ。

8093

LADDR で指定された HW ID に、整合性のあるデータを書き込める DP モジュール/PROFINET IO
デバイスが存在しません。このエラーコードは、LADDR によってアドレス指定された DP 標準
スレーブ/PROFINET IO デバイスに出力がない場合も発生します。

80A1

I/O デバイスへのアクセス中にアクセスエラーが検出されました。

80B1

設定された DP 標準スレーブ/PROFINET IO デバイスの出力よりも長さの短いソース範囲がRECORD パラメータで指定されています。

80C1

前の書き込みジョブのデータが DP 標準スレーブ/PROFINET IO デバイスによって処理されて
いません。

2168

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコー
ド*(W#16#...)

説明

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
パラメータ STATUS (ページ 2079)

4.5.13.5

iDevice/iSlave

RCVREC:データレコードの受信

説明
I デバイスは、上位コントローラからデータレコードを受信することができます。受信は、「RCVREC」(receive record)命令を使用してユーザープログラムで行われます。
この命令には、次の動作モードがあります。
• I デバイスにデータレコード受信の要求があるか確認します。
• 出力パラメータでデータレコードを利用できるようにします。
• 上位コントローラに応答を送信します。
入力パラメータ MODE を使用し、命令によって実行される動作モードを特定することができます(以下参照)。
I デバイスが RUN または STARTUP モードである必要があります。
MLEN を使って、受信する最大バイト数を指定します。ターゲット範囲 RECORD を選択します(少なくとも MLEN バイトの長さ)。
データレコードが受信されると(MODE=1 または MODE=2)、出力パラメータ NEW がデー
タレコードが RECORD に保存されたことを示します。RECORD が十分な長さであることに注意してください。出力パラメータ LEN には、受信したデータレコードの実際の長さがバイトで含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2169

拡張命令
4.5 リモート I/O
上位コントローラへの肯定応答のため、CODE1 および CODE2 をゼロに設定します。受信したデータレコードを拒否する場合、上位コントローラで否定応答の Error Code 1 に
CODE1 および Error Code 2 に CODE2 をそれぞれ入力します。
注記
I デバイスがデータレコード受信の要求を受信した場合、特定の時間内にこの要求を受け取ったことを確認する必要があります。この確認後、この時間内に上位コントローラに応答を送信する必要があります。これを遵守しない場合、I デバイスがタイムアウトエラーとな
り、I デバイスのオペレーティングシステムが上位コントローラに否定応答を送信する原因となります。持続時間の値は、PRVREC (ページ 2180)内に記述されています。
出力パラメータ STATUS は、エラー発生後にエラー情報を受信します。

動作モード「RCVREC」命令の動作モードは、入力パラメータ MODE で決定できます。このステップを
次の表で説明します。
MODE

意味

0

データレコード受信の要求があるかを確認
I デバイスに上位コントローラからのデータレコードが存在する場合、この命令は出力パラメータ
NEW、SLOT、SUBSLOT, INDEX および LEN のみを書き込みます。MODE=0 で複数回この命令を呼び出した場合、出力パラメータは 1 つの同じ要求のみを参照します。

1

I デバイスのいずれかのサブスロットのデータレコードを受信
I デバイスにいずれかの I デバイスのサブスロットに対する上位コントローラからのデータレコードが存在する場合、この命令は出力パラメータを書き込み、データレコードをパラメータ
RECORD に転送します。

2

I デバイスの特定のサブスロットのデータレコードを受信
I デバイスに特定の I デバイスのサブスロットに対する上位コントローラからのデータレコードが存在する場合、この命令は出力パラメータを書き込み、データレコードをパラメータ RECORD に転送します。

2170

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
MODE

意味

3

上位コントローラに肯定応答を送信
この命令は、上位コントローラのデータレコード受信の要求を確認し、既存のデータレコードを受け入れ、上位コントローラに肯定確認を送信します。

4

上位コントローラに否定応答を送信
この命令は、上位コントローラのデータレコード受信の要求を確認し、既存のデータレコードを拒否し、上位コントローラに否定確認を送信します。拒否の理由を入力パラメータ CODE1 およびCODE2 に入力します。
注記
データレコード(NEW=1)の受信後、「RCVREC」を 2 回呼び出して処理を完了する必要があります。これは、次の順で行う必要があります。
• MODE=1 または MODE=2 での最初の呼び出し(要求受信後、1 秒以内に完了する必要があります。1 秒以内に完了しないと、要求元の IO コントローラの命令が否定されたと応答され、パラメータ STATUS (フィールドエレメント STATUS[3] が Error_code_1 に対応): C2(Resource busy))となります。
• MODE=3 または MODE=4 での 2 番目の呼び出し( MODE=1 または MODE=2 での呼び出し
後、10 秒以内に完了する必要があります。待機時間が経過すると、上位レベルの IO コン
トローラが、要求元の命令である (RDREC) の STATUS パラメータ内で次のエラーを受信します: STATUS パラメータ(フィールドエレメント STATUS[3] が Error_code_1 に対応): A7(Application busy))

パラメータ
以下の表に、「RCVREC」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

MODE

Input

INT

I、Q、M、D、L、 モード
または定数

F_ID

Input

HW_SUBMO I、Q、M、D、L、 受信するデータレコード用の I デバイス
DULE

または定数

の転送領域にあるサブスロット(MODE=2 の場合のみ)。high word は常にゼロに設定されます。

MLEN

Input

INT*

I、Q、M、D、L、 受信するデータレコードの最大長(バイ
または定数

CODE1

Input

BYTE

I、Q、M、D、L、 「0」(MODE=3 の場合)および/またはまたは定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ト)Error Code 1 (MODE=4 の場合)

2171

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイ
プ

メモリ領域

CODE2

Input

BYTE

I、Q、M、D、L、 「0」(MODE=3 の場合)および/またはNEW

Output

BOOL

説明

または定数

Error Code 2 (MODE=4 の場合)

I、Q、M、D、L• MODE=0:新しいデータレコードが受信されました。
• MODE=1 または 2:データレコードがRECORD に転送されました。

STATUS

Output

DWORD

I、Q、M、D、L

エラー情報

SLOT

Output

HW_SUBMO I、Q、M、D、L

F_ID と同一

DULE
SUBSLOT

Output

HW_SUBMO I、Q、M、D、L

F_ID と同一

DULE
INDEX

OutputUINT

I、Q、M、D、L

受信したデータレコードの番号です。

LEN

OutputUINT

I、Q、M、D、L

受信したデータレコードの長さです。

RECORDInOut

VARIANT

I、Q、M、D、L受け取ったデータレコードのターゲット
範囲です。

* STL プログラミング言語では、データタイプ「UINT」を使用します。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
STATUS パラメータの解釈については、セクション パラメータ STATUS (ページ 2079)を参照
してください。

例
例については、以下を参照してください。I-Device による RCVREC のプログラム例 (ページ 2172)。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

I-Device による RCVREC のプログラム例
次の例では、IO コントローラからのデータレコードを転送領域に書き込み、対応する IDevice 内でデータレコードを受信します。

2172

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O要件• ファームウェアバージョンが v1.8 以降の 2 つの CPU S7-1500• 1 つの CPU を I-Device として構成します。もう 1 つの CPU を上位レベルの IO コント
ローラとして定義します。(CPU のプロパティ|動作モードを参照してください)• まだ使用可能ではない場合:2 つの転送領域を作成します。最初の転送領域は入力データ
用、もう 1 つは出力データ用です。各転送領域は、1024 バイト長とします。(CPU のプロパティ|動作モード|転送領域を参照してください)CPU 1 (IO コントローラ):データストレージ
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

データレコードは以下のように表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2173

拡張命令
4.5 リモート I/O

CPU 1 (IO コントローラ)/FB「SLI_FB_WRREC_iDevice」:パラメータの相互接続
命令「WRREC」を FB で呼び出します。FB 内で以下のローカルタグを作成します。

ネットワーク 1:「WRREC」命令を以下のように開始します。

ネットワーク 2:命令「WRREC」を以下のように相互接続します。

ネットワーク 3:以下のように、「start」タグをリセットします。

2174

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

CPU 2 (I-Device):データストレージ
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

CPU 2 (I-Device)/FB「SLI_FB_setMode_RCVREC」:パラメータの相互接続「RCVREC」命令のモードを変更するには、FB「SLI_FB_setMode_RCVREC」を作成します。
FB 内で以下のローカルタグを作成します。

ネットワーク 1:モードを切り替えるには、以下の相互接続を作成します。
パート 1:TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2175

拡張命令
4.5 リモート I/O

パート 2:パート 3:

2176

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パート 4:CPU 2 (I-Device)/FB「SLI_FB_RCVREC_iDevice」:パラメータの相互接続
命令「RCVREC」を FB で呼び出します。FB 内で以下のローカルタグを作成します。

ネットワーク 1:「SLI_FB_setMode_RCVREC」ブロックを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2177

拡張命令
4.5 リモート I/O
ネットワーク 2:命令「PRVREC」を以下のように相互接続します。

CPU 1 / FB「SLI_FB_WRREC_iDevice」:ネットワーク 1 の結果「立ち上がりエッジのオペランドスキャン」命令(「start」)が「TRUE」シグナル状態を返す場
合、memErrStatus」および「checkedValid」タグはリセットされます。

2178

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

CPU 1 / FB「SLI_FB_WRREC_iDevice」:ネットワーク 2 の結果
ノーマルオープン(「start」)のシグナル状態が「TRUE」の場合、「WRREC」命令が開始されます。WRREC は複数回のサイクルにわたって、RECORD パラメータ(「recordComm」)に格納されているデータレコードを CPU の転送領域に書き込みます(「id」タグを参照)。入力パ
ラメータ MLEN 「maxLength」()の値「0」に従って、書き込まれるデータレコードの長さは制限されません。処理が成功(VALID が TRUE)すると、「checkedValid」タグによって格納されます。

IO コントローラは I-Device に、「WRREC」命令の入力パラメータ ID(「id」)に基づいて、新しいデータレコードを出力データの転送領域に書き込んだことを通知します。その後、「RCVREC」命令により、このデータレコードが I-Device によって受信されます。

CPU 1 / FB「SLI_FB_WRREC_iDevice」:ネットワーク 3 の結果
WRREC が処理を終了したにも関わらず、依然として動作している場合は、「start」タグがリセットされ、WRREC が終了されます。

CPU 2 / FB「SLI_FB_RCVREC_iDevice」:ネットワーク 1 の結果
FB「SLI_FB_setMode_RCVREC」内の「newDataReceived」タグにより、「0」モードを適用するか、または「RCVREC」命令を他のモードで動作させるかを決定します。

CPU 2 / FB「SLI_FB_RCVREC_iDevice」:ネットワーク 2 の結果
MODE パラメータで指定されたモード(「mode」)に応じて、「RCVREC」命令が実行されます。「0」モードで、入力パラメータ NEW 「newDataReceived」()のシグナル状態が「TRUE」の場合、RCVREC が「1」モードで実行されてから、「3」モードで実行されます。
RCVREC は I-Device の転送領域経由でデータレコードを受信し、そのレコードをパラメータ
RECORD 「recordComm」()によって保存します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2179

拡張命令
4.5 リモート I/O

RCVREC によって読み出されるデータ長は、出力パラメータ「LEN」(「#statRLength」、「receivelength」)に出力されます。入力パラメータ MLEN 「maxLength」()の値「0」に従って、データ長は制限されます。
I-Device が受信データのデータレコード番号を認識している場合、この番号が出力パラメータ「INDEX」(「dataRecNbr」)で出力されます。

プログラムコード
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

PRVREC:データレコードを使用可能にする

説明
I デバイスは、データレコードを使用可能にするための上位コントローラからの要求を受信できます。I デバイスは、「PRVREC」(provide record)命令でユーザープログラムでデータ
レコードが使用できるようにします。

2180

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
この命令には、次の動作モードがあります。
• I デバイスにデータレコードを使用可能にする要求があるか確認します。
• 要求されたデータレコードを上位コントローラに転送します。
• 上位コントローラに応答を送信します。
入力パラメータ MODE を使用し、命令によって実行される動作モードを特定することができます(以下参照)。
命令 PRVREC は、I-Device が RUN または STARTUP モードの場合のみ実行できます。
I-Device が STOP モードの場合、PRVREC は実行できず、上位レベルの IO コントローラが要求元の命令(RDREC)の STATUS 内で次のエラーを受信します:
STATUS パラメータ(フィールドエレメント STATUS[3]が Error_code_1 に対応):B5 (ステー
タス競合)。
I-Device が STARTUP または RUN モードの場合、I-Device は読み取った要求を受信してから1 秒以内に、PRVREC(MODE=1、…)または PRVREC(MODE=2、…)を使用して応答します。
1 秒以内に応答しない場合は、エラー C2 (Resource busy)が上位レベルの IO コントローラにシグナル送信されます。
PRVREC (モード=1/2)の呼び出し後、I-Device は 10 秒以内に PRVREC (モード=3)または
PRVREC (モード=4)で命令を終了します。10 秒以内に終了しない場合は、エラー A7(Application busy)が上位レベルの IO コントローラにシグナル送信されます。
LEN で、送信されるデータレコードの最大バイト数を入力します。少なくとも LEN バイトの長さの宛先領域 RECORD を選択します。
データレコードを使用可能にする要求が存在する場合(MODE=0)、出力パラメータ NEW がTRUE に設定されます。
データレコードを使用可能にする要求が受け入れる場合は、上位コントローラに要求されたデータレコードと RECORD が肯定応答のために書き込まれ、CODE1 と CODE2 にゼロが書き込まれます。データレコードを使用可能にする要求を拒否する場合は、CODE1 の Error
Code 1 および CODE2 の Error Code 2 で否定応答を上位コントローラに入力します。
出力パラメータ STATUS は、エラー発生後にエラー情報を受信します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2181

拡張命令
4.5 リモート I/O

動作モード「PRVREC」命令の動作モードは、入力パラメータ MODE で特定できます。このステップを
次の表で説明します。
MODE

意味

0

データレコードを使用可能にする要求があるかを確認
I デバイスに上位コントローラからのデータレコードを使用可能にする要求が存在する場合、この命令は出力パラメータ NEW、SLOT、SUBSLOT, INDEX および RLEN のみを書き込みます。
MODE=0 で複数回この命令を呼び出した場合、出力パラメータは 1 つの同じ要求のみを参照します。

1

I デバイスのいずれかのサブスロットのデータレコードを使用可能にする要求を受信
I デバイスのいずれかのサブスロットに上位コントローラからのこの要求が存在する場合、この命
令は出力パラメータを書き込みます。

2

I デバイスの特定のサブスロットのデータレコードを使用可能にする要求を受信
I デバイスに上位コントローラからのこの要求が存在する場合、この命令は出力パラメータを書き
込みます。

3

データレコードを使用可能にし上位コントローラに肯定応答を送信
この命令は、上位コントローラのデータレコードを利用可能にする要求があるかチェックし、要求されたデータレコードを RECORD で利用可能とし、上位コントローラに肯定確認を送信します。

4

上位コントローラに否定応答を送信
この命令は、上位コントローラのデータレコードを利用可能にする要求を確認し、この要求を拒否
して、上位コントローラに否定確認を送信します。拒否の理由を入力パラメータ CODE1 およびCODE2 に入力します。
注記
要求(NEW=1)の受信後、命令を 2 回呼び出して処理を完了する必要があります。これは、次の順で行う必要があります。
• MODE=1 または MODE=2 での最初の呼び出し(要求受信後、1 秒以内に完了する必要があります。1 秒以内に完了しないと、要求元の IO コントローラの命令が否定されたと応答され、パラメータ STATUS (フィールドエレメント STATUS[3] が Error_code_1 に対応): C2(Resource busy))となります。
• MODE=3 または MODE=4 での 2 番目の呼び出し( MODE=1 または MODE=2 での呼び出し
後、10 秒以内に完了する必要があります。待機時間が経過すると、上位レベルの IO コン
トローラが、要求元の命令である (RDREC) の STATUS パラメータ内で次のエラーを受信します: STATUS パラメータ(フィールドエレメント STATUS[3] が Error_code_1 に対応): A7(Application busy))

2182

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

ヒント
1 番目と 2 番目の呼び出しが連続するようにプログラムします。
背景:モード 1 またはモード 2 での命令の 1 番目の呼び出し後、CPU は命令の追加インス
タンスを処理できず、データレコードジョブが追加されなくなります。モード 3 またはモード 4 で 2 番目の呼び出しが編集されると、CPU は他のデータレコードジョブを処理できるようになります。モード 1 またはモード 2 での 1 番目の呼び出し後に、命令の追加イ
ンスタンスが呼び出されると、ステータスが値 0xC080C300 (=エラー、リソース使用不可)を返します。
例:I-Device ユーザープログラム内では、ファンクション「資産管理データレコード」および PROFIenergy ファンクションを使用しています。「資産管理」は命令 PRVREC を、
PROFIenergy は命令 PE_I_DEV を使用しています。また、PE_I_DEV は命令 PRVREC および
RCVREC を内部的に使用しています。

パラメータ
以下の表に、「PRVREC」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

MODE

Input

INT

I、Q、M、D、L、 モード
または定数

F_ID

Input

HW_SUBMO I、Q、M、D、L、 送信するデータレコード用の I デバイスの
DULE

または定数

転送領域にあるサブスロット(MODE=2 の場合のみ)。high word は常にゼロに設定されます。
PRVREC を呼び出して、資産管理データレ
コードを IO コントローラ(データレコード
番号 0xF880)に供給する際は、F_ID = 0 をセットする必要があります。デバイスは、
F_ID = 0 でアドレス指定されます。
(MODE=2 の場合のみ。注:MODE=0 での呼び出し時には、SLOT および SUBSLOT の
PRVREC によって、INDEX=0xF880 に対して値 0 が返されます。)

CODE1

Input

BYTE

I、Q、M、D、L、 「0」(MODE=3 の場合)および/またはまたは定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Error Code 1 (MODE=4 の場合)

2183

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイ
プ

メモリ領域

CODE2

Input

BYTE

I、Q、M、D、L、 「0」(MODE=3 の場合)および/または
または定数

LEN

Input

UINT

説明

Error Code 2 (MODE=4 の場合)

I、Q、M、D、L、 送信するデータレコードの最大長(バイト)
または定数

NEW

Output

BOOL

I、Q、M、D、L

上位コントローラによって新規のデータレコードが要求されました。

STATUS

Output

DWORD

I、Q、M、D、L

エラー情報

SLOT

Output

HW_SUBMO I、Q、M、D、L

F_ID と同一

DULE
SUBSLOT

Output

HW_SUBMO I、Q、M、D、L

F_ID と同一

DULE
INDEX

OutputUINT

I、Q、M、D、L

送信するデータレコードの番号

RLEN

OutputUINT

I、Q、M、D、L

送信するデータレコードの長さ

RECORDInOut

VARIANT

I、Q、M、D、L使用可能となったデータレコード

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
STATUS パラメータの解釈については、セクションパラメータ STATUS (ページ 2079)を参照
してください。

例
例については、以下を参照してください。I-Device による PRVREC のプログラム例 (ページ 2184)。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

I-Device による PRVREC のプログラム例
以下の例では、I-Device 内にデータレコードを提供し、上位レベルのコントローラ内でデータレコードを読み出します。

2184

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O要件• ファームウェアバージョンが v1.8 以降の 2 つの CPU S7-1500• 1 つの CPU を I-Device として構成します。もう 1 つの CPU を上位レベルの IO コント
ローラとして定義します。(CPU のプロパティ|動作モードを参照してください)• まだ使用可能ではない場合:2 つの転送領域を作成します。最初の転送領域は入力データ
用、もう 1 つは出力データ用です。各転送領域は、1024 バイト長とします。(CPU のプロパティ|動作モード|転送領域を参照してください)CPU 1 (IO コントローラ):データストレージ
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

CPU 1 (IO コントローラ)/FB「SLI_FB_RDREC_iDevice」:パラメータの相互接続
命令「RDREC」を FB で呼び出します。FB 内で以下のローカルタグを作成します。

ネットワーク 1:「RDREC」命令を以下のように開始します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2185

拡張命令
4.5 リモート I/O

ネットワーク 2:命令「RDREC」を以下のように相互接続します。

ネットワーク 3:以下のように、「start」タグをリセットします。

2186

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

CPU 2 (I-Device):データストレージ
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

CPU 2 (I-Device)/FB「SLI_FB_setMode_PRVREC」:パラメータの相互接続「PRVREC」命令のモードを変更するには、FB「SLI_FB_setMode_PRVREC」を作成します。
FB 内で以下のローカルタグを作成します。

ネットワーク 1:モードを切り替えるには、以下の相互接続を作成します。
パート 1:TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2187

拡張命令
4.5 リモート I/O

パート 2:パート 3:

2188

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パート 4:CPU 2 (I-Device)/FB「SLI_FB_PRVREC_iDevice」:パラメータの相互接続「PRVREC」命令を FB 「SLI_FB_PRVREC_iDevice」()で呼び出します。FB 内で以下のローカルタグを作成します。

ネットワーク 1:「SLI_FB_setMode_PRVREC」ブロックを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2189

拡張命令
4.5 リモート I/O
ネットワーク 2:命令「PRVREC」を以下のように相互接続します。

CPU 1 / FB「SLI_FB_RDREC_iDevice」:ネットワーク 1 の結果「立ち上がりエッジのオペランドスキャン」命令(「start」)が「TRUE」シグナル状態を返す場
合、「length」、「memErrStatus」および「checkedValid」タグはリセットされます。

CPU 1 / FB「SLI_FB_RDREC_iDevice」:ネットワーク 2 の結果
ノーマルオープン(「start」)がシグナル状態「TRUE」を表示する場合、「RDREC」命令が開始されます。IO コントローラが I-Device に対して、「RDREC」命令の入力パラメータ ID(「id」)に基づいたデータレコードの読み取りが必要であることを通知します。その後、「PRVREC」
命令により、入力データの転送領域経由でこのデータレコードが I-Device によって提供されます。
RDREC はデータレコードを複数のサイクルで読み出し、パラメータ RECORD「recordComm」()によって値を保存します。

2190

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O「RDREC」命令の処理が成功(VALID パラメータの値が「TRUE」)すると、「checkedValid」タグによって格納されます。さらに、読み取られたデータの長さが「length」タグに格納されます。

CPU 1 / FB「SLI_FB_RDREC_iDevice」:ネットワーク 3 の結果
RDREC が処理を終了したにも関わらず、依然として動作している場合は、「start」タグがリセットされ、RDREC が終了されます。

CPU 2 / FB「SLI_FB_PRVREC_iDevice」:ネットワーク 1 の結果
FB「SLI_FB_setMode_PRVREC」内の「newDataCalled」タグにより、「0」モードを適用す
るか、または「PRVREC」命令を他のモードで動作させるかを決定します。

CPU 2 / FB「SLI_FB_PRVREC_iDevice」:ネットワーク 2 の結果
MODE パラメータで指定されたモード(「mode」)に応じて、「PRVREC」命令が実行されます。「0」モードで、入力パラメータ NEW 「newDataCalled」()のシグナル状態が「TRUE」の場合、PRVREC が「1」モードで実行されてから、「3」モードで実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2191

拡張命令
4.5 リモート I/O
PRVREC は、パラメータ RECORD 「recordComm」()で格納されたデータレコードを I-Deviceの転送領域に転送します。I-Device によって送信されたデータの長さは、出力パラメータ「RLEN」(「#statRLength」、「length」)に出力されます。入力パラメータ MLEN
「maxLength」()の値「0」に従って、データ長は制限されません。
I-Device が、送信されるデータのデータレコード番号を認識している場合、この番号が出力
パラメータ「INDEX」(「dataRecNbr」)で出力されます。

プログラムコード
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

4.5.13.6

PROFIBUSDPSYC_FR:DP スレーブの同期/入力値の固定

説明
この命令を使用して、DP スレーブの 1 つ以上のグループを同期します。
このファンクションを使用して、関連グループに次の制御コマンドのいずれか、またはそれらを組み合わせて送信します。
• SYNC (同時出力および DP スレーブの出力状態のフリーズ)• UNSYNC (SYNC 制御コマンドのキャンセル)• FREEZE (DP スレーブの入力状態のフリーズおよびフリーズされた入力の読み込み)• UNFREEZE (FREEZE 制御コマンドのキャンセル)2192

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
上記の制御コマンドを送信する前に、DP スレーブを設定ごとのグループに割り当てる必要があります。どの DP スレーブがどのグループに、どの番号で割り当てられているか、また、さまざまなグループの SYNC/FREEZE への応答を把握しておくことが必要です。
注記
制御コマンド SYNC および FREEZE は、ウォーム/コールドリスタートを実行する場合にも有効なままであることに注意してください。
また、1 つの SYNC/UNSYNC ジョブのみ、または 1 つの FREEZE/UNFREEZE ジョブのみを開始できることに注意してください。

ファンクションの説明「DPSYC_FR」は非同期命令です。複数のセルにわたって処理が行われます。REQ=1 で「DPSYC_FR」を呼び出してジョブを開始します。
出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。
同期命令と非同期命令の相違 (ページ 29)も参照してください。

ジョブの識別SYNC/FREEZE ジョブをトリガし、最初のジョブの完了前に「DPSYC_FR」を再度呼び出すと、新規の呼び出しが同じジョブに対するものかどうかで命令の応答が異なります。入力
パラメータ LADDR、GROUP および MODE が一致した場合、呼び出しは後続の呼び出しとみなされます。

DP モジュールの出力の書き込み
DP モジュールの出力の書き込みは、次のようにトリガされます。
• DP I/O への転送コマンドによる• 出力のプロセスイメージをモジュールに書き込むことによる(OB 1 の終了時にオペレー
ティングシステムによって、または「UPDAT_PO (ページ 1986)」命令の呼び出しによる)• 「DPWR_DAT (ページ 2166)」命令の呼び出し。
通常の動作では、DP マスタが出力バイトを DP スレーブの出力に周期的に(PROFIBUS DP バ
スサイクル内で)転送します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2193

拡張命令
4.5 リモート I/O
プロセスへの出力に特定の出力データ(複数のスレーブに分散されている場合も)が完全に同時に適用されるようにする場合、「DPSYC_FR」命令を使用して SYNC 制御コマンドを関連する DP マスタに送信することができます。

SYNC の効果
SYNC 制御コマンドを使用して、選択したグループの DP スレーブを SYNC モードに切り替えます。DP マスタは現在の出力データを転送し、関係する DP スレーブにその出力をフリーズするように指示します。次の出力メッセージフレームを使用して、DP スレーブによって出力データが内部バッファに入力され、出力の状態は変更されません。
それぞれの SYNC 制御コマンドに続き、選択されたグループの DP スレーブがそれらの内部
バッファの出力データをプロセスの出力に適用します。
これらの出力は、「DPSYC_FR」命令を使用して UNSYNC 制御コマンドを送信した場合のみ、再度周期的に更新されます。
注記
選択したグループの DP スレーブが現在ネットワークに接続されていないか、制御コマン
ドが送信されたときにエラーが発生した場合、SYNC モードに切り替わりません。この情報
は、命令の戻り値では通信されません。

DP モジュールの入力データの読み出し
DP モジュールの入力データは、次のように読み出されます。
• DP I/O への読み込みコマンドの使用• 入力のプロセスイメージが更新されたとき(OB 1 の開始時にオペレーティングシステム
によって、または「UPDAT_PI (ページ 1983)」命令の呼び出しによる)• 「DPRD_DAT (ページ 2164)」命令の呼び出しによる。
通常の動作では、DP マスタは DP スレーブからこの入力データを周期的に受信し(PROFIBUS DP バスの周期内で)、それらが CPU で使用できるようにします。
特定の入力データ(複数のスレーブに分散されている場合も)が完全に同時にプロセスから読み出されるようにするには、「DPSYC_FR」命令を使用して FREEZE 関連する DP マスタに制御コマンドを送信します。

2194

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

FREEZE の効果
FREEZE 制御コマンドを使用して、関係する DP スレーブが FREEZE モードに切り替えられます。DP マスタが、関係する DP スレーブに入力の現在の状態をフリーズするように指示します。その後、フリーズされたデータは CPU の入力領域に転送されます。
それぞれの FREEZE 制御コマンドの後、DP スレーブが入力の状態を再度フリーズします。
DP マスタは、「DPSYC_FR」命令で UNFREEZE 制御コマンドを送信した後にのみ、入力の現在の状態を周期的に再受信します。
注記
選択したグループの DP スレーブが現在ネットワークに接続されていないか、制御コマン
ドが送信されたときにエラーが発生した場合、FREEZE モードに切り替わりません。この情報は、命令の戻り値では通信されません。

データの整合性DPSYC_FR ファンクションは非同期で、より高い優先度クラスで割り込むことができるた
め、「DPSYC_FR」命令を使用する場合にプロセスイメージが I/O の実際の入力および出力と一致していることを確認する必要があります。
これは、次の整合性の規則に従った場合は保証されます。
• 「SYNC 出力」および「FREEZE 入力」に適切なプロセスイメージパーティションを定義します(S7-400 のみで可能)。SYNC ジョブのそれぞれの最初の呼び出しの直前に、「UPDAT_PO (ページ 1986)」命令を呼び出します。FREEZE ジョブの最後の呼び出しの直後に、「UPDAT_PI (ページ 1983)」命令を呼び出します。
• 別の方法:SYNC ジョブに関係する出力および FREEZE ジョブに関係する入力にはダイレ
クト I/O のみを使用します。SYNC ジョブが有効な場合はこれらの出力に書き込まないでください。また、FREEZE ジョブが有効な場合は、これらの入力を読み出さないでください。

DPWR_DAT および DPRD_DAT の使用「DPWR_DAT (ページ 2166)」命令を使用する場合は、関係する出力に SYNC ジョブを送信する前に完了している必要があります。
「DPRD_DAT (ページ 2164)」命令を使用する場合は、関係する入力に FREEZE ジョブを送信する前に完了している必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2195

拡張命令
4.5 リモート I/O

スタートアップおよび「DPSYC_FR」
必ずユーザーがスタートアップ OB の SYNC および FREEZE 制御コマンドを送信する必要があります。
ユーザープログラムが起動したときに 1 つ以上のグループの出力を SYNC モードにする場
合、スタートアップ中にこれらの出力を初期化し、SYNC 制御コマンドで「DPSYC_FR」命令を完全に実行する必要があります。
ユーザープログラムが起動したときに 1 つ以上のグループの入力を FREEZE モードにする
場合、起動中にこれらの入力に対して FREEZE 制御コマンドで「DPSYC_FR」命令を完全に実行する必要があります。

パラメータ
以下の表に、「DPSYC_FR」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 レベルトリガの制御パラメータ
または定数

LADDR

Input

説明

REQ=1:SYNC/FREEZE ジョブのトリガ

HW_INTERF

I、Q、M、D、L、 DP マスタインターフェースのハードウェア

ACE

または定数

識別子
この番号は、標準タグテーブルの「システム定数」タブから取得できます。

GROUP

Input

BYTE

I、Q、M、D、L、 グループ選択
または定数

ビット 0 = 1:グループ 1 が選択済み
ビット 1 = 1:グループ 2 が選択済み:
ビット 7 = 1:グループ 8 が選択済み
ひとつのジョブで複数のグループを選択できます。値 B#16#0 が無効です。

2196

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイ
プ

メモリ領域

MODE

Input

BYTE

I、Q、M、D、L、 ジョブ ID (コード化は EN 50 170 Volume 2,
または定数

説明

PROFIBUS に準拠)
ビット 0:予約済み(値 0)
ビット 1:予約済み(値 0)
ビット 2:•= 1:UNFREEZE が実行されます。

• = 0:意味なし
ビット 3:•= 1:FREEZE が実行されます。

• = 0:意味なし
ビット 4:•= 1:UNSYNC が実行されます。

• = 0:意味なし
ビット 5:•= 1:SYNC が実行されます。

• = 0:意味なし
ビット 6:予約済み(値 0)
ビット 7:予約済み(値 0)

次の値が返されます。
• 1 つのジョブあたり 1 つの ID:– B#16#04 (UNFREEZE)– B#16#08 (FREEZE)– B#16#10 (UNSYNC)– B#16#20 (SYNC)• 1 つのジョブあたり複数の ID:– B#16#14 (UNSYNC, UNFREEZE)– B#16#18 (UNSYNC, FREEZE)– B#16#24 (SYNC, UNFREEZE)– B#16#28 (SYNC, FREEZE)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2197

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイ
プ

メモリ領域

説明

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。
ブロックが実行されるたびに、必ず
RET_VAL を評価するようにします。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY=1:SYNC/FREEZE ジョブが未完了です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
注記
DPV1 スレーブにアクセスする場合、これらのスレーブのエラー情報は DP マスタから命令に送ることができます。このエラー情報については、STATUS[3]、「STATUS (ページ 2079)」パラメータを参照してください。

エラーコー
ド*
(W#16#...)

説明

0000

ジョブがエラーなしで完了済み。

7000

REQ=0 による最初の呼び出し:LADDR、GROUP 、および MODE で指定されたジョブが無効です。BUSY の値が「0」になっています。

7001

REQ=1 による最初の呼び出し:LADDR、GROUP 、および MODE で指定されたジョブがトリガされました。BUSY の値が「1」になっています。

7002

中間呼び出し(REQ は対象外)。有効になった SYNC/FREEZE ジョブがまだ実行中です。BUSY の
値は
1 です。

8090

LADDR で選択されたモジュールは DP マスタではありません。

8093

この命令は LADDR で選択されたモジュール(DP マスタの設定またはバージョン)には許可されていません。

8094

GROUP パラメータが正しくありません。

8095

MODE パラメータが正しくありません。

80A4

PROFIBUS の通信が中断されました。

2198

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコー
ド*(W#16#...)

説明

80B0

GROUP で選択されたグループは設定されていません。

80B1

GROUP で選択されたグループは、この CPU に割り当てられていません。

80B2

MODE で指定された SYNC ジョブは、
GROUP で選択されたグループでは使用できません。

80B3

MODE で指定された FREEZE ジョブは、
GROUP で選択されたグループでは使用できません。

80C2

DP マスタ:でのリソースの一時的な不足:現在、DP マスタがCPU に対して処理可能な最大数のジョブを処理しています。

80C3

同時に複数の SYNC/UNSYNC ジョブはトリガできないため、現在、この SYNC/UNSYNC ジョブを有効にできません。ユーザープログラムをチェックしてください。

80C4

同時に複数の FREEZE/UNFREEZE ジョブはトリガできないため、現在、この FREEZE/UNFREEZE ジョブを有効にできません。ユーザープログラムをチェックしてください。

80C5

DP インターフェースでの直接的な短絡

80C6

CPU による I/O 切断によってジョブが中止されました。

80C7

DP マスタのウォームまたはコールドリスタートのため、ジョブが中止されました。

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

DPNRM_DG: 診断データの DP スレーブからの読み出し

説明「DPNRM_DG」命令を使用し、DP スレーブの現在の診断データを読み出します。この診断データは、EN 50 170 Volume 2、PROFIBUS で指定された形式です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2199

拡張命令
4.5 リモート I/O
次の表は、スレーブ診断データの基本構造を示します。詳細については、DP スレーブのマニュアルを参照してください。
バイト

意味

0

ステーションステータス 1

1

ステーションステータス 2

2

ステーションステータス 33

マスタステーション番号4

ベンダー ID (上位バイト)

5

ベンダー ID (下位バイト)

6 ...

追加のスレーブ固有診断情報
読み出されたデータは、転送でエラーが発生しなかった場合には、RECORD で示されたコ
ピー先の領域に入力されます。読み出しプロセスを開始するには、「DPNRM_DG」命令が呼び出されたときに REQ 入力パラメータに値「1」を割り当てます。

ファンクションの説明
読み出しプロセスが非同期で実行されます。読み出しプロセスは複数の呼び出しにまたがることができます。出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。
関連項目:同期命令と非同期命令の相違 (ページ 29)

パラメータ以下の表に、「DPNRM_DG」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

REQ

Input

BOOL

REQ = 1:読み出し要求

I、Q、M、D、
L、または定数

LADDR

Input

HW_DPSLAV

I、Q、M、D、DP スレーブのハードウェア識別子

E

L、または定数

注記:この識別子は 16 進形式で指定する必要があります。たとえば、ハードウェア識別子
1022 は LADDR:=W#16#3FE を意味します。

2200

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイプ メモリ領域

説明

RET_VAL

ReturnDINT, INT,

命令の実行中にエラーが発生した場合、戻り

I、Q、M、D、L

LREAL, REAL

値にエラーコードが含まれます。エラーが発生しなかった場合、実際に転送されるデータの長さが RET_VAL に入力されます。

RECORD

Output

VARIANT

I、Q、M、D、L

読み出された診断データの宛先領域。データ
タイプ BYTE のみが有効です。読み出されるデータレコードの最小長、または宛先領域は6 です。読み出されるデータレコードの最大
長は 240 です。診断データ長が 240 バイト
から最大 244 バイトである標準スレーブの場合、最初の 240 バイトが宛先領域に転送されます。次に、対応するオーバーフロービ
ットがデータに設定されます。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:
読み出しプロセスが未完了です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
「AUTOHOTSPOT」には、他のプログラミング言語でのデータタイプ変換に関する情報が記載されています。

パラメータ RECORDCPU が読み出された診断データの実際の長さを評価します。
RECORD に指定された長さが• 提供されたデータのバイト数未満の場合、このデータは破棄されます。対応するエラーコードが RET_VAL に入力されます。
• 提供されたデータのバイト数よりも大きいか、等しい場合、このデータは宛先領域に受け入れられ、実際の長さが RET_VAL に正の値で入力されます。
注記
RECORD の実際のパラメータが、必ずジョブに属するすべての呼び出しに対応するようにしてください。
ジョブは、LADDR 入力パラメータによって、一意で識別されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2201

拡張命令
4.5 リモート I/O

240 バイトを超える診断データを持つ標準スレーブ
標準診断データ数が 241～244 バイトの標準スレーブの場合、次の点に注意してください。
RECORD に指定された長さが• 240 バイト未満の場合、データは破棄され、対応するエラーコードが RET_VAL に入力されます。
• 240 バイト以上である場合、標準診断データの最初の 240 バイトが宛先領域に転送され、オーバーフロービットがデータに設定されます。

パラメータ RET_VAL• ファンクションの実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。
• データ転送中にエラーがなかった場合、RET_VAL は読み出されたデータの長さを正の値のバイトで含みます。
注記
DP スレーブで読み出すデータ量は、その診断ステータスによって異なります。
RET_VAL パラメータのエラー情報の評価については、次の表を参照してください。
エラーコード(W#16#...)

説明

制限事項

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありませ-ん。BUSY の値は「0」です。
7001

REQ=1 による最初の呼び出し:データ転送がトリガされましリモート I/O

た。BUSY の値は 1 です。
7002

中間呼び出し(REQ は対象外):データ転送が既に有効です。

リモート I/O

BUSY の値は「1」です。
8090

LADDR パラメータで指定されたアドレスが無効です。

-

8093

この命令は、LADDR および IOID を使用して選択したモジュー ルでは許可されません。

80A2• レイヤー 2 での DP プロトコルエラー(たとえば、スレーブ リモート I/O
故障またはバスの問題)• ET 200S の場合、DPV0 モードでデータレコードが読み出せ
ません。

80A3

ユーザーインターフェース/ユーザーによる DP プロトコルエラ リモート I/O
ー

80A4

2202

PROFIBUS の通信が中断されました。

リモート I/O
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコード(W#16#...)

説明

制限事項

80B0

• モジュールタイプで命令が使用できません。

-• モジュールがデータレコードを認識しません。
• データレコード番号 241 は許可されていません。
• 「WR_REC (ページ 2026)」の場合、データレコード 0 および
1 は許可されていません。
80B1

RECORD パラメータで指定された長さが正しくありません。 指定された長さ < データレ
コード長

80B2

設定したスロットが占有されていません。

-

80B3

実際のモジュールタイプが指定されたモジュールタイプと一致 していません。

80C0

使用可能な診断データがありません。

-

80C1

モジュール上の、同じデータレコードの以前の書き込みジョブ のデータがモジュールによって処理されていません。

80C2

モジュールは、現在 CPU で可能な最大数のジョブを処理して います。

80C3

必要なリソース(メモリなど)が現在占有されています。

-

80C4

内部の一時的なエラー。ジョブを実行できませんでした。

-

ジョブを繰り返します。このエラーが頻発する場合は、据付けを点検して電気的な干渉の発生源を探します。
80C5

リモート I/O が使用不可です。

リモート I/O

80C6

優先度クラス中止(再起動またはバックグラウンド)のため、デ リモート I/Oータレコードの転送が停止されました。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ペー報

ジ 384)-* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2203

拡張命令
4.5 リモート I/O

DP_TOPOL: DP マスタシステムのトポロジの特定

説明
この命令を使用して、選択した DP マスタシステムのトポロジ決定をトリガします。この命令を呼び出すと、DP マスタシステムのすべての診断リピータをアドレス指定します。
注記
トポロジは、1 回に 1 つの DP マスタシステムのみで決定することができます。
トポロジ決定は、エラーが発生した場合にエラーの詳細な場所を表示するための前提条件です。設定を行った後、および DP マスタシステムの物理的な設定の変更を行った後は毎回、「DP_TOPOL」によってトポロジ決定を繰り返す必要があります。
物理的設定の変更とは、• ラインの長さの変更• ステーションまたはリピータ機能を持つコンポーネントの追加または撤去• ステーションアドレスの変更
診断リピータがエラーを報告した場合、1 回の「DP_TOPOL」パスの間「DP_TOPOL」が
DPR および DPRI 出力を書き込みます。選択した DP マスタシステムの複数の診断リピータ
によってエラーが報告された場合、「DP_TOPOL」が、エラーを報告した最初の診断リピー
タについての情報を DPR および DPRI に書き込みます。診断情報全体をプログラミングデ
バイスまたは「DPNRM_DG (ページ 2199)」命令を使用して読み出すことができます。どの
診断リピータもエラーを報告しない場合、DPR および DPRI 出力の値は「0」になります。
エラー発生後にトポロジ決定を繰り返す場合、最初に「DP_TOPOL」をリセットする必要があります。これは、REQ=0 および R=1 を使用して「DP_TOPOL」を呼び出して行います。

ファンクションの説明「DP_TOPOL」は非同期命令です。複数のセルにわたって処理が行われます。REQ=1 で
DP_TOPOL を呼び出して、バストポロジの決定を開始します。プロセスをキャンセルする
場合は、R=1 で「DP_TOPOL」を呼び出します。
出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。

2204

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
関連項目:同期命令と非同期命令の相違 (ページ 29)
注記
トポロジの決定には数分間かかる場合があります。

ジョブの識別入力パラメータ DP_ID は一意でジョブを指定します。
トポロジが検出される前に「DP_TOPOL」を再び呼び出す場合、この命令の応答方法は、新規の呼び出しが同じジョブに関与するかどうかによって異なります。DP_ID パラメータ
が、完了していないジョブと一致すると、この呼び出しはフォローアップコールと見なされます。値 W#16#7002 が RET_VAL に入力されます。一方、別のジョブが含まれる場合、CPU はこれを拒否します。

パラメータ
以下の表に、「DP_TOPOL」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

REQ

Input

BOOL

説明

I、Q、M、D、L、 REQ=1:トポロジ決定をトリガします。
または定数

R

Input

BOOL

I、Q、M、D、L、 R=1:トポロジ決定をキャンセルします。
または定数

DP_ID
RET_VAL

Input
ReturnHW_IOSYST I、Q、M、D、L、 トポロジが決定されるマスタシステムの
EM

または定数

DP マスタシステム ID

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY=1:トポロジ決定がまだ完了していません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2205

拡張命令
4.5 リモート I/O
パラメータ

宣言

データタイ メモリ領域
プ

説明

DPR

Output

BYTE

エラーを報告した診断リピータの

I、Q、M、D、L

PROFIBUS アドレス。
DPRI

Output

BYTE

I、Q、M、D、L

エラーを報告したセグメント診断リピータの測定:• ビット 0 = 1:セグメント DP2 の一時障害
• ビット 1 = 1:セグメント DP2 の永続的な障害
• ビット 4 = 1:セグメント DP3 の一時障害
• ビット 5 = 1:セグメント DP3 の永続的な障害

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL「本当の」エラー情報(エラーコード W#16#8xyz)は、2 つのクラスに分けられます。
• 一時的なエラー(エラーコード W#16#80A2～80A4、80C3、80C5):
このタイプのエラーは、ユーザーの操作なしで解決される可能性があります。
「DP_TOPOL」を再び呼び出すことをお勧めします(必要に応じて、複数回の呼び出し)。
一時的なエラーの例:必要なリソースが現在使用中である場合(W#16#80C3)。
• 永続的なエラー(エラーコード W#16#8082、80B0、80B2):
このエラータイプの場合、エラーを解決する必要があります。「DP_TOPOL」の新規の呼び出しは、エラーを解消した後で必要です。永続的なエラーの例:DP マスタ/CPU がこのサービスをサポートしていません(W#16#80B0)。
エラーコード* 説明(W#16#...)
0000

ジョブがエラーなしで完了済み。

7000

REQ=0 による最初の呼び出し:トポロジ決定がトリガされていません。BUSY の値が「0」になっています。

7001

REQ=1 による最初の呼び出し:トポロジ決定の実行要求が送信されました。BUSY の値が「1」になっています。

7002

中間呼び出し(REQ は対象外):トポロジ決定がまだ完了していません。BUSY の値は「1」で
す。

2206

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
エラーコード* 説明(W#16#...)
7010

トポロジ決定をキャンセルしようと試みました。しかし、DP_ID で指定された実行中のジョブはありません。BUSY の値が「0」になっています。

7011

R=1 による最初の呼び出し:トポロジ決定のキャンセルがトリガされました。BUSY の値は「1」です。

7012

中間呼び出しトポロジ決定のキャンセルがまだ完了していません。BUSY の値が「1」になっています。

7013

最終の呼び出し:トポロジ決定がキャンセルされました。BUSY の値が「0」になっています。

8082

指定された DP_ID で設定された DP マスタはありません。

80A2

トポロジ決定中にエラーが発生しました。詳細情報については、出力パラメータ DPR および
DPRI を参照してください。

80A3

トポロジ決定中にエラーが発生しました。モニタリングタイムが経過しました(タイムアウ
ト)。

80A4

PROFIBUS の通信が中断されました。

80B0

DP マスタ/CPU がこのサービスをサポートしていません。

80B2

トポロジ決定中にエラーが発生しました。選択した DP マスタシステムで、診断リピータが見つかりませんでした。

80C3

必要なリソースが現在使用中である場合。考えられる原因:2 番目のトポロジ決定を開始しました(一度に 1 回のトポロジ決定のみが許可されます)。

80C5

DP マスタシステムは、現在使用できません。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2207

拡張命令
4.5 リモート I/O

4.5.13.7

ASI

ASI_CTRL:AS-i マスタの動作の制御
ASI_CTRL の説明
説明
命令「ASI_CTRL」を使用して、PLC のユーザープログラムから AS-i マスタの動作を制御します。この命令は、コマンドプロトコルを自動的に処理します。また、SIMATIC AS-i マス
タでのパラメータ割り当て、および情報データの読み出しも可能です。コマンドインター
フェースの機能および操作については、AS-i マスタのマニュアルで解説されています。
中央に挿入される AS-i マスタ、および PROFIBUS DP を使用したリモートの AS-i マスタがサポートされています。PROFINET IO (たとえば IE/PB Link PN IO)と組み合わせることも可能です。
以下の概要図に、「ASI_CTRL」命令の機能を示します。
6,0$7,&ኖኣዙኔዄዐ

$6Lኻኖኜ

ዃዙናዙኴዊኍ዆ኽ
栚ⱚነኻዐኦ

$6,B&75/


応答データ



ステータス照会

Read data record(データレコードの読み出し)
STATUS

コマンドインターフェース♦≰ክአኲቾ

Write data record(データレコードの書き込み)$6Lኻኖኜ栚ⱚቿኦዉኖ

抐≰ክአኲቾ

コマンド番号/ジョブデータ

開始
コマンド処理①

REQ パラメータでの処理の開始。

②

プログラムは必要なコマンドを「RDREC」命令を使用して AS-i マスタに送信し
ます。

2208

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O③AS-i マスタはそのコマンドを処理します。

④

AS-i マスタの現在のステータスは、バイナリデータの入力領域(論理開始アドレス)に格納されます。

⑤「ASI_CTRL」命令は 4 つのステータスビットを周期的に照会し、評価します。

⑥

コマンドの処理が完了すると、「RDREC」によってコマンドジョブが完了します。コマンドによっては、「RDREC」のデータフィールドにコマンドの応答デー
タや追加のステータス情報が含まれる場合があります。

命令バージョン間の依存関係
命令「ASI_CTRL」のバージョン V1.3 には、命令「WRREC」のバージョン V1.1 が必要です。
命令「ASI_CTRL」のバージョン V1.2 には、命令「WRREC」のバージョン V1.1 が必要です。

IE/ AS-i リンクと DP/AS-i リンクのコマンド呼び出しの相違点
コントローラが AS-i マスタとコマンドを交換する方法は、IE/AS-i リンクと DP/AS-i リンク
では大きく異なります。
• IE/AS-i リンク(PROFINET)では、データレコードインターフェースを使用していました。
データレコードの書き込み」(「WRREC」命令)、または「データレコードの読み出し」「RDREC」命令)では、異なるコマンドがさまざまなデータレコード番号で呼び出され(ていました。
• DP/AS-i リンク(PROFIBUS)はコマンドインターフェースを使用します。データレコードの書き込み」(「WRREC」命令)、または「データレコードの読み出し」(「RDREC」命令)
では、すべてのコマンドがデータレコード番号 2 で呼び出されます。コマンドのタイ
プは、書き込みジョブのデータコ内容によって決まります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2209

拡張命令
4.5 リモート I/O「ASI_CTRL」命令の操作
命令「ASI_CTRL」は非同期ファンクションブロックです。複数のセルにわたって処理が行われます。
• REQ = TRUE の場合、ジョブが開始します。
• ジョブステータスは、出力パラメータ BUSY と出力パラメータ STATUS の 2 つの中央のバイトで表示されます。
• BUSY パラメータは、ジョブ処理中にセットされます。最初の呼び出しで、STATUS に値
00700100H が割り当てられます。その後、このジョブのすべての呼び出しで、値00700200H が割り当てられます。ジョブが完了すると、パラメータ DONE またはERROR に結果が出力されます。
– エラーが発生しなかった場合、DONE がセットされます。AS-i マスタからの応答データを処理するジョブの場合、このデータは指定された受信バッファ内に提供されます。この場合、STATUS パラメータは 提供されたデータ量をバイトで表示します。
応答データのないジョブの場合、値 00000000H は STATUS に格納されます。
– ジョブ処理中にエラーが発生すると、ERROR がセットされます。このような場合、
受信バッファの内容は無効になります。発生したエラーの詳細説明を照会するためのエラーコードが STATUS パラメータに入力されます。

コマンド呼び出しの回数「ASI_CTRL」命令を使用してコマンドを送信する場合、「RDREC (ページ 2005)」または「WRREC (ページ 2026)」を使用して同一の AS-i マスタ他のコマンドを同時に送信することはできません。これは、同一の AS-i マスタに対する命令の複数呼び出しにも当てはまります。
「ASI_CTRL」命令は、実行中に割り込みを入れることはできません。したがって、相互に割り込むプログラム優先度クラスで呼び出しをプログラミングすることはできません(たとえば、OB 1 および OB 35 での呼び出し)。

2210

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O

パラメータ
以下の表に、「ASI_CTRL」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 REQ = TRUE の場合、ジョブが既に実行
定数

説明中でなければ新しいジョブが開始します。エッジ評価は発生しません。

LADDR

Input

HW_IO

I、Q、M、D、L、 AS-i マスタのハードウェア識別子。
定数

モジュールのプロパティからアドレスを取得できます。

SD

Input

VARIANT

I、Q、M、D、L

送信バッファ
このパラメータは、コマンドが指定されるメモリ領域を参照します(「ASi コマンド (ページ 2213)」を参照)。

RD

Input

VARIANT

I、Q、M、D、L

受信バッファ
このバッファは、応答データを送信する
コマンドのみに関連します。このパラメータは、コマンド応答が格納されたメモ
リ領域を参照します(「ASi コマンド (ページ 2213)」を参照)。

DONE

Output

BOOL

I、Q、M、D、L

DONE = TRUE:ジョブがエラーなしで完了
しました。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = TRUE:ジョブが処理中

ERROR

Output

BOOL

I、Q、M、D、L

ERROR = TRUE:ジョブがエラーによって中止されました。

STATUS

Output

DWORD

I、Q、M、D、L

ジョブステータス/エラーコード「STATUS パラメータ」の説明を参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記
LADDR、SD、および RD パラメータ
パラメータ LADDR、SD、および RD は、ジョブの進行中はいずれのブロックサイクル内でも変更してはなりません。これらのパラメータは一定に保つ必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2211

拡張命令
4.5 リモート I/O

パラメータ STATUS
次の表に、DONE および ERROR の場合に表示される可能性がある STATUS を示します。
DONE

BUSY

ERROR

STATUS0000070000 最初の呼び出しで REQ = FALSE:有効なジョブなし。

意味

0H
0

1

0

0070010 最初の呼び出しで REQ = TRUE:ジョブ開始済み。
0H

0

1

0

0070020 以降の呼び出し(REQ とは無関係):ジョブ進行中。
0H

1

0

0

0000000 ジョブがエラーなしで完了しました。応答データなし。
0H

1

0

0

0000xx0

ジョブがエラーなしで完了しました。xx バイトの応答データ。

0H
0

0

1

C081840 仮オペランド RD のデータタイプが無効です。
0H

0

0

1

C081850 AS-i マスタとの通信エラー(LADDR パラメータで設定されたア
0H

0

0

1

ドレスが正しくありません)。

C083810 AS-i スレーブアドレスが正しくありません。
0H

0

0

1

C083820 AS-i スレーブが無効(LAS に存在しません)。
0H

0

0

1

C083830 AS インターフェースでのエラー(SD パラメータの値が小さす
0H

0

0

1

ぎる可能性があります)。

C083840 現在の AS-i マスタのステータスではこのコマンドは無効です。
0H

0

0

1

C083850 アドレス「0」の AS-i スレーブが存在します。
0H

0

0

1

C083860 AS-i スレーブに無効な設定データがあります(I/O または ID コ
0H

0

0

1

C083A10 アドレス指定された AS-i スレーブが AS インターフェースで見
0H

0

0

1

ード)。
つかりません。

C083A20 アドレス「0」の AS-i スレーブが存在します。
0H

2212

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
DONE

BUSY

ERROR

STATUS

0

0

1

C083A30 AS インターフェースに新規アドレスの AS-i スレーブが既に存
0H

0

0

1

意味
在しています。

C083A40 AS-i スレーブアドレスを削除できません。
0H

0

0

1

C083A50 AS-i スレーブアドレスを設定できません。
0H

0

0

1

C083A60 AS-i スレーブアドレスを保存できません。
0H

0

0

1

C083A70 拡張 ID1 コード読み出し中のエラー。
0H

0

0

1

C083A80 ターゲット範囲が正しくありません(たとえば、B スレーブア
0H

0

0

1

ドレスが標準スレーブで使用されています)。

C083B10 文字列転送中に長さのエラーが発生しました。
0H

0

0

1

C083B20 文字列転送中にプロトコルエラーが発生しました。
0H

0

0

1

C083F80 不明なジョブ番号またはジョブパラメータです。
0H

0

0

1

C083F90 AS-i マスタが EEPROM エラーを検出しました。
0H

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)
同期命令と非同期命令の相違 (ページ 29)

ASi コマンド説明
コマンドインターフェースにより、コントローラと AS-i マスタはパラメータ割り当てや情報データを交換することが可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2213

拡張命令
4.5 リモート I/O
これらのコマンドは、• AS-i マスタ仕様で定められた M4 マスタプロファイルのすべての機能を提供します。
• コントローラからの AS-i マスタのすべての設定を可能にします。
注記
サポートされている AS-i コマンドサポートされている AS-i および詳細説明については、関連する AS-i マスタのマニュア
ルを参照してください。

送信バッファの全般的な構造
次の表に、コマンドおよびジョブの送信バッファの全般的な構造を示します。コマンド番号の領域は、必ず埋められている必要があります。ジョブデータのバイト数は、コマンドの説明に記載されています(AS-i マスタのマニュアルを参照してください)。この場合、「q」は送信バッファの開始アドレスを参照します。
バイト

ビット
7

ビット
6

ビット
5

ビット
4

ビット
3

ビット
2

ビット
1

ビット
0

意味
q+0

コマンド番号q+1

ジョブデータq+2

ジョブデータq + ...

ジョブデータ受信バッファの全般的な構造
次の表に、コマンド応答データの受信バッファの全般的な構造を示します。応答データのバイト数はコマンドによって異なります。応答データを返さないコマンドもあります。このようなコマンドには、データで埋められない仮の受信バッファを用意します。この場合、「n」は受信バッファの開始アドレスを参照します。
バイト

ビット
7

ビット
6

ビット
5

ビット
4

ビット
3

ビット
2

ビット
1

ビット
0

意味

2214

n+0

応答データ

n+1

応答データ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
バイト

ビット
7

ビット
6

ビット
5

ビット
4

ビット
3

ビット
2

ビット
1

ビット
0

意味
n+2

応答データ

n + ...

応答データ

通知
メモリ領域は上書きされる場合があります「ASI_CTRL」命令の受信バッファが短すぎる場合、隣接するメモリ領域が上書きされる場
合があります。「ASI_CTRL」命令の呼び出し時に、RD パラメータの ANY ポインタで指定される長さは関係しません。受信バッファで必要な長さは、コマンドの説明に記載されています。
コマンド番号 39H、41H、42H、43H、44H の場合:コマンドが返すデータが小さい場合でも、受信バッファには 221 バイトの長さ(バイト 0～220)が必要です。コマンドによっては、AS-i マスタによって受信バッファの最上位バイ
トが値ゼロで上書きされる場合があります。

AS-i コマンド
使用可能な AS-i コマンドを以下の表に示します。
名前

パラメータ

Set_permanent_parameter

スレーブアドレス、パラ(Set_Permanent_Parameter)

メータ

Get_permanent_parameter[スレーブアドレス]

戻り値

コード化
00 H

パラメータ

01 H

(Get_Permanent_Parameter)
Write_parameter

スレーブアドレス、パラ パラメータエコー(Write_Parameter)

メータ

Read_parameter[スレーブアドレス]

パラメータ値

02 H
03 H(Read_Parameter)
Store_actual_parameters

04 H(Store_Actual_Parameters)
Set_configuration_data

スレーブアドレス、設定

Get_configuration_data[スレーブアドレス]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

25 H
構成データの設定

26 H

2215

拡張命令
4.5 リモート I/O
名前

パラメータ

戻り値

Store_actual_configuration

コード化
07 H

(Store_Actual_Configuration)
Get_actual_configuration[スレーブアドレス]

Configure_LPS

LPS

29 H

Set_offline_mode

モード

0AH

Select_auto-program

モード

0BH

Set_mode

モード

0C H

Change_AS–iSlave_address

アドレス 1、アドレス 2

0D H

実際の設定データ

28 H(Change_AS–iSlave_Address)
Get_AS-iSlave_status[スレーブアドレス]

AS-i スレーブのエラ 0F H
ーレコード

Read_lists_and_flags

LDS、LAS、LPS、フ 30 Hラグ

Get_overall_configuration

実際の設定データ、 39 H
現在のパラメータ、LAS、フラグ

Set_overall_configuration

全体的な設定3AH

Write_parameter_list

パラメータリスト

3C H

Read_parameter_echo_list

パラメータエコーリ 33 H
スト

Write_CTT2_request[スレーブアドレス]

CTT2 文字列

44 H

バージョン文字列

14 H

CTT2 文字列
Read_version_identifier
Read_AS-i_slave[スレーブアドレス]

ID コード17 H

Read_AS-i_slave_extended_ID1[スレーブアドレス]

拡張 ID1 コード

37 H

Write_AS-iSlave_extended_ID1

拡張 ID1 コード

Read_AS-iSlave_extended_ID2[スレーブアドレス]

拡張 ID2 コード

38 H

Read_AS-iSlave_IO[スレーブアドレス]

I/O 構成

18 H

LPF

3E H

Read_I/O_error_list
Write_AS–i-slave_parameter_string

3F H

40 H

スレーブアドレス、パラ
メータ文字列

Read_AS–iSlave_parameter_string

2216[スレーブアドレス]

パラメータ文字列

41 H

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.5 リモート I/O
名前

パラメータ

戻り値

コード化

Read_AS-iSlave_ID_string[スレーブアドレス]

ID 文字列42 H

Read_AS-iSlave_diagnostic_string[スレーブアドレス]

診断文字列

43 H

Read_AS-i_line_error_counter

4AH

Read_and_clear_AS-i_line_error_counter

4BH

Read_AS-iSlave_error_counter[スレーブアドレス]

4C H

Read_and_clear_AS-iSlave_error_counter[スレーブアドレス]

4D H

DP/AS-i F-Link 用の追加コマンド:
AS–i_status/diag_of_F_slaves

すべての AS-i SAFE

51 H

スレーブのステータ
ス/診断

注記
AS-i マスタコマンドインターフェースの再初期化
この表に挙げられていない別のコマンドがコマンド 77 H です。この呼び出しは、AS-i マ
スタのコマンドインターフェースの再初期化に役立ちます。AS-i マスタが指定した現在処
理中のいずれのコマンドも終了します。
DP/AS-i リンク Advanced の V2.1.20 以降では、コマンド 0E H も使用可能です。この呼び出しを使用して、配線の地絡モニタ機能の解放およびブロックを行います。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2217

拡張命令
4.6 PROFIenergy

4.6

PROFIenergy

4.6.1

PROFIenergy の説明

PROFIenergy
PROFIenergy はメーカーやデバイスに依存しない、PROFINET での電力管理用プロファイ
ルです。生産の停止中や予期せぬ中断時に電力消費を低減するために、PROFIenergy を使用
して、協調的で一元的な方法で機器をシャットダウンすることが可能です。
₏㣑⋫㷱ኅኪወኋዙ䀗彊₏㣑⋫㷱㣑Ⓤ

PROFINET デバイス/電源モジュールは、PROFINET IO コントローラのユーザープログラムの特別なコマンドによってスイッチが切られます。追加のハードウェアは不要です。
PROFINET デバイスは、PROFIenergy コマンドを直接解釈します。

PROFIenergy コントローラ(PE コントローラ)
PE コントローラは、下位レベルデバイスのアイドル状態を有効または無効にする PLC です。特定の製品コンポーネントまたは完全な製造ラインがユーザープログラムによって無効化および再有効化されます。コマンド(たとえば「Start_Pause」や「End_Pause」)は、対応する命令(ファンクションブロック)を使用して下位のデバイスに送信されます。これらのコマンドは、PROFINET 通信プロトコル経由で送信されます。

PROFIenergy エンティティ(PE エンティティ)
PE エンティティは、PE コントローラの PROFIenergy コマンドを受信し、これらのコマンドを適宜実行します(たとえば、測定値を返す、省電力モードを有効にするなど)。
PROFIenergy 対応デバイスでの PE エンティティの実装は、デバイスおよびメーカーに依存
します。

2218

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
たとえば、PE エンティティは以下で実行可能です。
• サブモジュールのプロキシ内:PE コマンドは、アドレス指定されたサブモジュール、および既存の下位サブモジュールに対して有効です。
• モジュールのプロキシ内:PE コマンドは、モジュール内の異なるサブモジュールに対して有効です。
3(ነዐእዊዙ዆

352),1(7,2ኤክኁኖ

3(ነዐእዊዙ዆

3(ኅዐኣኀኣኀቋሺ቉ቑኒኳ኿ንዂዙወ
3(ነኻዐኦ

3(ነኻዐኦ

352),1(7,2ኤክኁኖ

3(ኅዐኣኀኣኀቋሺ቉
ቑኁዐኜዙኲኄዙኖ኿ን
ዂዙወ ,0• プロキシ機能を持たないネットワーク接続されたサブモジュール:この場合、PE コマン
ドはここのサブモジュールに対してのみ有効です。

PROFIenergy 命令• IO コントローラ用の命令– 「PE_START_END (ページ 2220)」命令は、PROFINET デバイスのアイドル状態を有効化または無効化を行う最も簡単な方法です(PROFIenergy コマンド「Start_Pause」および「End_Pause」)。これには、命令内で信号立ち上がりエッジ、および信号立ち下
りエッジを使用します。
– 「PE_CMD (ページ 2226)」を使用すると、「Start_Pause」および「End_Pause」を含
むすべての PROFIenergy コマンドを送信することが可能です。他のコマンドと組み合わせることで、たとえば PROFINET デバイスの現在のステータスや動作を照会することができます。
– 「PE_DS3_Write_ET200S (ページ 2232)」は、ET 200S の最大 8 つのスロットの切り替え特性を定義するために使用します。この命令は PROFIenergy 命令ではありませんが、ET 200S 向けの PROFIenergy の機能を補完します。
• iDevice 用の命令
「PE_I_DEV (ページ 2266)」命令を使用すると、PROFIenergy を iDevice にも実装できます。この命令は、iDevice 上で PROFIenergy コマンドを受信し、これらのコマンドを処理のためにユーザープログラムに転送します。コマンドの処理後、ユーザープログラ
ムは IO コントローラに確認を送信するために、再度「PE_I_DEV (ページ 2266)」命令を呼び出します。これらの応答のために、「PE_I_DEV (ページ 2266)」命令に応答データを返すための対応する予備のブロックが各コマンドに用意されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2219

拡張命令
4.6 PROFIenergy

PROFIenergy コマンド(PE コマンド)
PE コントローラは、PE コマンドを PE エンティティに送信します。PE コマンドとして、PE
エンティティを省電力モードに切り替える制御コマンド、またはステータスや測定値を読み出すコマンドが使用できます。
• 制御用 PI コマンドPROFIenergy は、「PE_Start_End (ページ 2220)」命令、または「PE_CMD (ページ 2226)」命令のいずれかを使用して実行可能な 2 つの制御コマンドをサポートしています。
– Start_Pause:最適な省電力モードを開始(PE Energy-saving mode)– End_Pause:省電力モードを終了(PE_ready_to_operate モードに切り替え)• ステータスまたは測定値読み取り用 PI コマンド
次のステータスコマンドを「PE_CMD (ページ 2226)」命令で使用することで、制御システムから特定の状況情報を読み出すことが可能です。
– PE_Identify:PE エンティティによってサポートされている PE コマンドのリストの読み出し。
– PEM_Status:PE エンティティの現在有効なモードの読み出し(PE_ready_to_operateなど)。
– Query_Modes:時間および電力に関する情報を含む、サポートされているすべての省電力モードの概要の出力– Query_Measurement:PE エンティティの測定値の出力

使用例
PROFIenergy 命令の使用例は、エントリ「PROFIenergy - SIMATIC S7 での省電力モード」の産業オンラインサポートに記載されています。

4.6.2

IO コントローラ

4.6.2.1

PE_START_END: 省電力モードの開始と終了

説明「PE_START_END」命令は、指定された PE エンティティ(たとえば ET 200S)の省電力モードの開始および終了に使用します。
「PE_START_END」命令は省電力データを読み出す必要のないフィールドデバイスのみが、対応する PE デバイスに接続されている場合に、PE コントローラ内で使用することを推奨

2220

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
します。または、「PE_CMD (ページ 2226)」を使用して省電力データを読み出すことも可能です。
省電力モードは、PE コントローラのユーザープログラムで設定します。「PE_START_END」
命令が完了すると、PE エンティティは現在の省電力モードをレポートし、このデータをパラメータ PE_MODE_ID に出力します。

「PE_START_END」命令の書き込み、および読み出しジョブ
命令「PE_START_END」は「WRREC (ページ 2026)」を使用して、PROFIenergy コマンドを内部的に書き込みジョブとして PE エンティティに送信します。その後、「PE_START_END」
は PE エンティティからの確認を待ちます。確認データレコードは、100 ミリ秒ごとに「RDREC (ページ 2005)」命令で読み出されます。PE エンティティから確認を受信するまで、この機能は読み出しジョブを 100 ミリ秒間隔で 10 秒間、呼び出しジョブを繰り返します。PE エンティティの応答データは、「RDREC (ページ 2005)」命令でも読み出されます。
以下に、書き込み、および読み出しジョブのフローチャートを示します。
352),HQHUJ\ነዐእዊዙ዆

352),HQHUJ\ኤክኁኖ3(B67$57B(1'3(B&0'5(4 

3(B,B'(9㦇ሰ手ቢንዄኳ
1(: 
㦇ሰ手ቢ㉫䷣
㷲崼ቢ♥ቭንዄኳኼ዇䱡崼ቢ♥ቭ㉫䷣
弯ᇬ዇ኚዙኖ━ቭ㇢቉䂗ቢኰንዙ

䱡崼ቢ♥ቭንዄኳ䱡崼ቢ♥ቭ㉫䷣ 㷲

㣑Ⓤ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

㣑Ⓤ

2221

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_START_END」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

START

入力

BOOL

I、Q、M、D、L、 PE コマンド「Start_Pause」をパラメー
または定数

説明
タ ID でアドレス設定して PE エンティテ
ィに送信します。

END

入力

BOOL

I、Q、M、D、L、 PE コマンド「End_Pause」をパラメータまたは定数

ID でアドレス設定して PE エンティティに送信します。

ID

入力

HW_

I、Q、M、D、L、 PE エンティティのアドレス

SUBMODULE

または定数

PROFINET IO デバイス用ヘッドモジュー
ルのハードウェア ID を使用します。ハードウェア ID については、割り当てられた IO コントローラのシステム定数を参照してください。ヘッドモジュールの名前は、IO デバイスの名前とサフィック
ス[Head] (例:「IO_Device_1[Head]」)から構成されます。
PE エンティティが I デバイスである場
合、代わりに転送領域のハードウェア識
別子を使用します。

PAUSE_TIME

入力

TIME

I、Q、M、D、L、 計画された一時停止時間。
P、または定数• 範囲:
T#1MS～T#24D20H31M23S647MS• 開始値:
T#0MS

VALID

出力

BOOL

I、Q、M、D、L

PE コマンドが正常に送信されました。

BUSY

出力

BOOL

I、Q、M、D、L

PE コマンドはまだ処理中です。

ERROR

出力

BOOL

I、Q、M、D、L処理中にエラーが発生しました。エラー
メッセージは STATUS パラメータで出力されます。

STATUS

出力

DWORD

I、Q、M、D、L、 ブロックステータス/エラー番号ですP

PE_MODE_ID

出力

BYTE

I、Q、M、D、L、 省電力モードの識別番号です(その一時P

2222「STATUS(
パラメータ」を参照)。
停止時間の省電力レベル)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ PAUSE_TIME
PAUSE_TIME パラメータを使用して、PE エンティティの省電力期間の既定の時間を設定します。PE エンティティは、一時停止時間が十分な長さであるか、そしてその一時停止時間を実行できるかチェックします。最小の一時停止時間(Time_min_Pause)は、デバイスを省電力モードに切り替える時間(Time_to_Pause)と再度動作モードに切り替える時間(Time_to_Operate)を合計した時間よりも長くなければなりません。
3(BUHDG\B
WRBRSHUDWH

3(BHQHUJ\B
VDYLQJBPRGH

6WDUWB3DXVH

7LPHBWRB3DXVH(QGB3DXVH

7LPHBPLQBOHQJWKBRIBVWD\

7LPHBWRB2SHUDWH

W

7LPHBPLQB3DXVH

ET 200S は、計画された一時停止時間が ET 200S で保存されている最小の一時停止時間(PME_Pause_Min)以上であるかをチェックします。これは 10 秒に固定されています。より短い一時停止時間を使用すると、ET 200S の電源モジュール(PM-E)がオンのままになります。
モジュールは一時停止時間終了時に自動的に切り替わらず、「END」コマンドが送信されるまで OFF モードのままになります。これにより、不要なピークロードの原因となる非同期の ON モードへの切り替えを防止します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2223

拡張命令
4.6 PROFIenergy

パラメータ STATUS
エラー情報は、STATUS 出力パラメータに出力されます。ARRAY[1...4] of BYTE と解釈された場合、エラー情報は次の構造になります。
フィールドエレ 名前
メント

意味

STATUS[1]エラーの原因Function_Num• B#16#00:エラーは発生していません。
• B#16#DE:データレコードの読み出し中のエラー• B#16#DF:データレコードの書き込み中のエラー• B#16#C0:命令、または内部的に使用されている通信命令「RDREC(ページ 2005)」および「WRREC (ページ 2026)」によって生じるエラーメッセージです。
STATUS[2]Error_Decode

エラー ID の場所• 80:IEC 61158-6 で定義された、またはアプリケーション固有のDPV1 エラー です。
• FE:DP/PNIO プロファイル - PROFIenergy 固有のエラーです。

2224

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
フィールドエレ 名前
メント

意味

STATUS[3]エラー ID

Error_Code_1• Error_Decode = 80 の場合:
– 80:入力パラメータ START および END の同時立ち上がりエッジ。
– 81:CMD_PARAM および CMD_PARAM_LEN パラメータで長さの矛盾が発生しています。
– 82-8F:その他のエラーメッセージ(予約済み)• Error_Decode = FE の場合:
– 01: 「Service Request ID」が無効です。
– 02:「Request_Reference」が正しくありません。
– 03: 「Modifier」が無効です。
– 04: 「Data Structure Identifier RQ」が無効です。
– 05: 「Data Structure Identifier RS」が無効です。
– 06: 「PE energy-saving modes」がサポートされていません。
– 07: 「Response」が長すぎます(送信可能な最大長を超えています)。
– 08: 「Count」が無効です。
– 50:適切な「energy mode」を使用できません。
– 51:指定された時間値がサポートされていません。
– 52: 「PE_Mode_ID」が無効です。
– 53:「PE energy-saving mode」への切り替えがありません。
デバイスが動作中のためです。
– 54:ファンクションを現在使用できません。設定されているデバ
イスが間違っているか、設定が正しくありません。
– 55 ～ FF:予約済み
STATUS[4]Error_Code_2

製造元固有のエラー ID 拡張

注記「RDREC」および「WRREC」命令のエラーメッセージ「PE_START_END」命令は、通信に「WRREC (ページ 2026)」および「RDREC (ページ 2005)」命令を使用します。これらの命令のエラーメッセージはフィールドエレメント
STATUS[1]～STATUS[4]に出力されます。
「WRREC (ページ 2026)」および「RDREC (ページ 2005)」命令のエラーコードに関する説明については、対応する STATUS (ページ 2079)パラメータの説明を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2225

拡張命令
4.6 PROFIenergy

下記も参照
PROFIenergy の説明 (ページ 2218)
同期命令と非同期命令の相違 (ページ 29)

4.6.2.2

PE_CMD: 省電力モードの開始と終了/ステータス情報の読み取り

説明
PE コントローラで使用される「PE_CMD」命令は、PE エンティティの省電力モードの一時停止を開始、または終了します。追加情報および電力測定は、「PE_CMD」を使用して PE
エンティティから読み出すことも可能です。
この命令は、電力測定が読み出されるフィールドデバイスが接続されている、PE デバイ
スが割り当てられている PE コントローラに使用するのが最適です。これ以外の場合でも、「PE_START_END (ページ 2220)」命令は、一時停止の開始および終了に使用できます。

PROFIenergy コマンド(PE コマンド)の転送「PE_CMD」命令は、PROFIenergy コマンドを PE エンティティに転送します。
この命令は、追加コマンドが将来的に PROFIenergy プロファイルに追加される場合でも使用可能です。現在の PROFIenergy プロファイルで使用可能なコマンドは、CMD および
CMD_MODIFIER パラメータの説明に記載されています(「CMD および CMD_MODIFIER パラ
メータ」の表を参照)。
• この命令を使用して PE エンティティに転送される個々の PE コマンドは、定義済みの「Service_Request_ID」に割り当てられます。Service_Request_ID 01～05、および 16
は、CMD パラメータに割り当てられています。
• PE コマンド 04 (Query_Modes)および 16 (Query_Measurement)の 2 つは、
CMD_MODIFIER パラメータでより詳細に定義されます。
• 追加の値は CMD_PARA パラメータで個々の PE コマンドに転送されます(個々の PE コマ
ンドの説明を参照)。CMD_PARA_LEN パラメータは、CMD_PARA パラメータのデータ長を定義します。
このコマンドは、妥当性テストなしで転送されます。PE エンティティの応答データは、
VARIANT ポインタによってアドレス指定される RESPONSE_DATA データ領域に保存されます(応答フレームの内容に関する情報については、各 PE コマンドの説明を参照してくださ
い)。

2226

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy「PE_CMD」命令の書き込み、および読み出しジョブ
命令「PE_CMD」は「WRREC (ページ 2026)」を使用して、PROFIenergy コマンドを内部的に書き込みジョブとして PE エンティティに送信します。その後、「PE_CMD」は PE エン
ティティからの確認を待ちます。確認データレコードは、100 ミリ秒ごとに「RDREC (ページ 2005)」命令で読み出されます。PE エンティティから確認を受信するまで、この機能は読み出しジョブを 100 ミリ秒間隔で 10 秒間、呼び出しジョブを繰り返します。PE エ
ンティティの応答データは、「RDREC (ページ 2005)」命令でも読み出されます。
以下に、書き込み、および読み出しジョブのフローチャートを示します。
352),HQHUJ\ነዐእዊዙ዆

352),HQHUJ\ኤክኁኖ3(B67$57B(1'3(B&0'5(4 

3(B,B'(9㦇ሰ手ቢንዄኳ
1(: 
㦇ሰ手ቢ㉫䷣
㷲崼ቢ♥ቭንዄኳኼ዇䱡崼ቢ♥ቭ㉫䷣
弯ᇬ዇ኚዙኖ━ቭ㇢቉䂗ቢኰንዙ

䱡崼ቢ♥ቭንዄኳ䱡崼ቢ♥ቭ㉫䷣ 㷲

㣑Ⓤ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

㣑Ⓤ

2227

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_CMD」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジで PE コマン
または定数

ID

Input

説明
ドの転送を開始します。

HW_

I、Q、M、D、L、 PE エンティティのアドレス

SUBMODULE

または定数

PROFINET IO デバイス用ヘッドモジ
ュールのハードウェア ID を使用します。ハードウェア ID について
は、割り当てられた IO コントロー
ラのシステム定数を参照してください。ヘッドモジュールの名前は、IO
デバイスの名前とサフィックス[Head] (例:「IO_Device_1[Head]」)から構成されます。
PE エンティティが I デバイスである
場合、代わりに転送領域のハードウ
ェア識別子を使用します。

CMD

Input

BYTE

I、Q、M、D、L、 PROFIenergy プロファイルに準拠しP、または定数

た PROFIenergy コマンドの ServiceRequest-ID 「CMD(および
CMD_MODIFIER パラメータ」を参照)。
PROFIenergy プロファイルの拡張子に続けてサービス要求 ID を追加可能です。

CMD_MODIFIER

Input

BYTE

I、Q、M、D、L、 PROFIenergy サブコマンド
P、または定数(CMD=3、または CMD=16 の場合のみ。「CMD および CMD_MODIFIER
パラメータ」を参照)。
PROFIenergy プロファイルの拡張子に続けてサブコマンドを追加可能で
す。

2228

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイプ

メモリ領域

説明

CMD_PARA

Input

VARIANT

I、Q、M、D、L

PE コマンドに関するパラメータ• Get mode: PE_mode_ID• Get measurement values: List of
Measurement_Ids
完全な Service Data Request が格納されます。

CMD_PARA_LEN

Input

INT

I、Q、M、D、L、 コマンドパラメータの実際の長さ
P、または定数(<=CMD_PARA で定義された長さ)が命令によって検証されます。

RESPONSE_DATA

InOut

VARIANT

I、Q、M、D、L

PROFIenergy 情報
コマンドによっては、ブロックヘッ
ダーを含んだ完全な応答フレームとなる場合があります。
注記:バッファが小さすぎる場合、
VARIANT ポインタで指定されるバイト数が入力されます。

VALID

Output

BOOL

I、Q、M、D、Lコマンドが正常に送信されました。

BUSY

Output

BOOL

I、Q、M、D、L

コマンドはまだ処理中です。

ERROR

Output

BOOL

I、Q、M、D、L処理中にエラーが発生しました。

STATUS

Output

DWORD

I、Q、M、D、L

ブロックステータス/エラー番号です「STATUS(
パラメータ」を参照)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

CMD および CMD_MODIFIER パラメータ
CMD

CMD_
MODIFIERPROFIenergy コマンド

01

0

Start_Pause (ページ 2251) 省電力モードを開始、または他の省電力モードに切説明り替えます。
02

0

End_Pause (ページ 2252)

03

1

Query_Modes - 省電力モー サポートされている省電力モードを出力します。

省電力モードを終了します。

ドのリスト (ページ 2253)
2

Query_Modes - モードの取 現在有効な省電力モードの属性を出力します。
得 (ページ 2254)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2229

拡張命令
4.6 PROFIenergy
CMD

CMD_
MODIFIERPROFIenergy コマンド

04

0

PEM_Status (ページ 2257) 省電力モードのステータスを照会します。

05

0

PE_Identify (ページ 2259)

説明

サポートされている PE コマンドの番号と詳細を読み出します。

16

1

Query_Measurement -PE エンティティでサポートされている測定値のリス

Get_Measurement_List (ペ ト。
ージ 2260)
2

Query_Measurement -PE エンティティの測定値を出力します。

Get_Measurement_Values(ページ 2263)

パラメータ STATUS
エラー情報は、STATUS 出力パラメータに出力されます。ARRAY[1...4] of BYTE と解釈された場合、エラー情報は次の構造になります。
フィールドエレ 名前
メント

意味

STATUS[1]エラーの原因Function_Num• B#16#00:エラーは発生していません。
• B#16#DE:データレコードの読み出し中のエラー• B#16#DF:データレコードの書き込み中のエラー• B#16#C0:内部通信命令「RDREC (ページ 2005)」および「WRREC (ページ 2026)」からのエラーメッセージです。
STATUS[2]Error_Decode

エラー ID の場所• 80:IEC 61158-6 で定義された、またはアプリケーション固有のDPV1 エラー です。
• FE:DP/PNIO プロファイル - PROFIenergy 固有のエラーです。

2230

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
フィールドエレ 名前
メント

意味

STATUS[3]エラー ID

Error_Code_1• Error_Decode = 80 の場合:
– 81:CMD_PARA および CMD_PARA_LEN パラメータの長さが矛盾しているか、データレコードの最大長(4095 バイト)を超過しています。
– 82-8F:その他のエラーメッセージ(予約済み)• Error_Decode = FE の場合:
– 01: 「Service Request ID」が無効です。
– 02:「Request_Reference」が正しくありません。
– 03: 「Modifier」が無効です。
– 04: 「Data Structure Identifier RQ」が無効です。
– 05: 「Data Structure Identifier RS」が無効です。
– 06: 「PE energy-saving modes」がサポートされていません。
– 07: 「Response」が長すぎます(送信可能な最大長を超えています)。
– 08: 「Count」が無効です。
– 50:適切な省電力モード(energy mode)を使用できません。
– 51:指定された時間値がサポートされていません。
– 52: 「PE_Mode_ID」が無効です。
STATUS[4]Error_Code_2

製造元固有のエラー ID 拡張

注記「RDREC」および「WRREC」命令のエラーメッセージ「PE_CMD」命令は、通信に「WRREC (ページ 2026)」および「RDREC (ページ 2005)」命令を使用します。これらの命令のエラーメッセージはフィールドエレメント STATUS[1]～STATUS[4]に出力されます。
「WRREC (ページ 2026)」および「RDREC (ページ 2005)」命令のエラーコードに関する説明については、対応する STATUS (ページ 2079)パラメータの説明を参照してください。

下記も参照
PROFIenergy の説明 (ページ 2218)
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2231

拡張命令
4.6 PROFIenergy

4.6.2.3

PE_DS3_Write_ET200S: 電源モジュールの切り替え動作を設定します。

説明「PE_DS3_Write_ET200S」命令は、電源モジュールの切り替え動作に関する基本設定をET 200S に送信します。ET 200S の 8 スロットまでの切り替え動作(電源モジュールなど)を命令「PE_DS3_Write_ET200S」で定義します。
注記
この命令は PROFIenergy プロファイルの一部ではありませんが、SIMATIC 固有の機能を補
完します。

パラメータ
以下の表に、「PE_DS3_Write_ET200S」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

ENABLE

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジがデータレコード
または定数

説明
の転送をトリガします。電圧オフ/オンの後にデータレコードを再び転送します。

ID

Input

HW_SUBMOD

I、Q、M、D、L、 ET 200S のアドレス

ULE

または定数

ハードウェアコンフィグレーションからのアドレスを承認します。

SLOT_NO_X Input

INT

I、Q、M、D、L、 切り替え可能な電源モジュールのスロッ
P、または定数2232

ト番号 X。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイプ

メモリ領域

FUNC_X

Input

INT

I、Q、M、D、L、 このスロット内のモジュールのファンク
P、または定数説明
ションです。FUNC_X パラメータを使用
して、PM-E (ET 200S の電源モジュール)の切り替え動作を定義します:• FALSE:– 「PAUSE_START」の場合:-PM-E への影響なし-PM-E はオンのまま– 「PAUSE_STOP」の場合:-PM_E を再度オンに切り替え• TRUE:– 「PAUSE_START」の場合:-PM_E をオフに切り替え– 「PAUSE_STOP」の場合:-PM-E を再度オンに切り替え

BUSY

Output

BOOL

I、Q、M、D、L転送がまだ完了していません。

DONE

Output

BOOL

I、Q、M、D、L転送がエラーなしで完了しました。

ERROR

Output

BOOL

I、Q、M、D、L転送完了(エラーあり)。

STATUS

Output

DWORD

I、Q、M、D、L、 エラー番号(「PE_Start_End (ペーP

ジ 2220)」命令の STATUS パラメータを参照)

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

下記も参照
PROFIenergy の説明 (ページ 2218)
同期命令と非同期命令の相違 (ページ 29)

4.6.2.4

PE_WOL:WakeOnLan を介した省電力モードの開始と停止

PE_WOL の説明

説明「PE_WOL 」命令は、PROFIenergy コマンド「Start_Pause」および「End_Pause」をPROFINET I/O システムの複数の PROFIenergy 有効なデバイスに送信します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2233

拡張命令
4.6 PROFIenergy
複数の PE デバイスは命令を使用して調整されます。ただし PE デバイスは、UDP 接続で「Wake on LAN」機能をサポートしています。
「PE_WOL」命令は、統合されたイーサネットインターフェースを備えた CPU 上でのみ実行することができます。この CPU は、約 400 KB のサイズのローカルブロックをロードできるはずです。この CPU がイーサネット CP 経由で接続されている場合、PROFINET I/O シス
テムでブロックを使用することはできません。
命令「PE_WOL 」非同期で実行されます。
「PE_WOL」命令は、デバイス番号が 256 未満のデバイスのみをサポートします。デバイス
番号が 256 以上のデバイスは考慮されません。

定義:Wake on LAN「Wake on LAN」を使用すると、特殊なイーサネットパケットを受信することによって無効なデバイスを再び有効にすることができます。
このプロシージャの場合、データ処理装置はこのようなパケットを受信できるネットワー
クコントローラを装備している必要があります。
このパケット(Magic Packet™)の書式は特殊です。このパケットには、ネットワークアダ
プタの MAC アドレスが 15 倍格納されています。

デバイスの選択
デバイスは、パラメータ PENERGY (タイプ: 「PE_PLUS」)でユーザーデータブロックを使用
して選択されます。ユーザー DB とは、複数のデバイスを処理するためのデータベースを表します。
「PE_WOL」の初期化前に、ユーザー DB に少なくとも以下の情報を格納する必要があります。
• PROFINET I/O システムの ID• 「Wake On LAN」に使用される接続のデータ• 「Wake On LAN」に使用されるポート番号• 各デバイス– 休止時間(PauseTime)– PE_SLEEP_MODE (EnableSleep)へのデバイスの切り替え「PE_WOL」命令を COM_RST パラメータを使用して初期化します。ユーザー DB に格納されたジョブは、初期化後順次処理されます。

2234

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
以下の図に、PE コマンド「Start_Pause」が複数のデバイスにどのように送信されるかを示します。

ዃዙናዙኤዙኜኳዊአኌ
Diag.
addr.

(1)

開始ビット 終了ビットኁዐኖኜዐኖ'%3(B:2/

Diag.
Adr.

8081
8082

1
0

0
0

8081

8083
8048
...

1
1
...

0
0
...

8048

8083

手順 1:シャットダウンされるデバイスのビット「CmdStartPause」がユーザーにより「1」にセットされます。

(2)

手順 2:シャットダウンされるデバイスの診断アドレス(CmdStartPause = 「1」)はキ
ューにリンクされます。

(3)

手順 3:ジョブがリンクされると、ビット「CmdStartPause」は自動的にリセットさ
れます。

(4)

手順 4:ジョブがリンクされると、直ちに命令「PE_WOL」がジョブを処理します。

PROFIenergy コマンド「CmdStartPause」または「CmdEndPause」は、START および END
パラメータにより PROFINET IO システムで認識されたすべてのデバイスに送信することができます。
ジョブ処理のステータスと処理中に考えられるエラーが STATUS パラメータにより出力されます。

ユーザー DB を使用した命令の操作
命令「PE_WOL」は、ユーザー DB によってのみ操作できます。この場合、基本的なプロシージャが適用されます。
1. デバイスで実行されるコマンドの選択:– START_PAUSE (ユーザー DB 内の「CmdStartPause」)– ENDE_PAUSE (ユーザー DB 内の「CmdEndPause」)– UPDATE_STATUS (ユーザー DB 内の「CmdUpdateStatus」)
2. 更新のビットの設定(ユーザー DB のヘッダーでの「Update」)
2 つの更新の間で「更新」に偽(FALSE)を指定して少なくとも 1 つの CPU サイクルを渡す必
要があります。それ以外の場合、エッジ検出は保証できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2235

拡張命令
4.6 PROFIenergy

PE コマンドの優先順位付け
以下の図に、考えられるコマンドの時間的順序を示します。

CmdStartPause
CmdEndPause

CmdUpdateStatus

Update前のコマンド呼び出しが正常に終了したか、エラーが発生して終了したかに関係なく、順次処理されます。
2 つのコマンド「CmdEndPause」および「CmdUpdateStatus」が同時にセットされる場
合、1 つのコマンドのみが実行されます。ブロック内に優先度処理があります。
• コマンド「CmdStartPause」は優先度が一番高く、選択されると常に実行されます。
• コマンド「CmdEndPause」は 2 番目に高い優先度です。
• コマンド「CmdUpdateStatus」は最も低い優先度です。
3 つのコマンドすべてが同時に設定されると、実行されないコマンドは事前に選択されたままになります。この場合、次の立ち上がりエッジは次のコマンドを実行します。

2236

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_WOL」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

COM_RST

Input

BOOL

(ペー

説明

I、Q、M、D、 ブロックをリセットし、再初期化を実行しまLす。ここで真(TRUE)が設定されると、初期化がジ 2237)

開始されますが、完全に終了しません。
立ち下がりエッジのみが初期化を続行し、初期化後、通常の動作モードに切り替わります。

START (ペー Input

BOOL

ジ 2239)I、Q、M、D、 信号立ち上がりエッジは、この機能をサポート
Lする検出されたデバイスすべてで「CmdStartPause」PROFIenergy コマンドを実行します。

END (ペー

Input

BOOL

ジ 2240)

I、Q、M、D、 信号立ち上がりエッジは、この機能をサポート
Lする検出されたデバイスすべてで「CmdEndPause」PROFIenergy コマンドを実行します。

PENERGY

InOut

PE_PLUSD(ペー

複数のデバイスを処理するデータベースを格納した DB へのポインタ。

ジ 2240)STATUS (ペOutputDWORDージ 2246)

I、Q、M、D、 命令の現在のステータスのステータス/エラー
L

番号(「STATUS パラメータ」を参照)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

COM_RST パラメータ

初期化ルーチンのシーケンス「PE_WOL」命令の初期化を COM_RST パラメータにより開始します。
下のフローダイアグラムは、初期化ルーチンを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2237

拡張命令
4.6 PROFIenergy
START

Clean Queue

ジョブキューのリセット

Config Devices

PROFINET I/Oシステムの設定されたデバイスの読み取り

No. ofDevices>0あり
Dev. Diag.

診断アドレスの特定

Order ID

OrderIDの読み取りなし

ユーザーDB

Connection
setup

PE_Identify

END
(エラー)

2238

WoL接続のセットアップ

各デバイスのサポートされているPE
コマンドの識別

END(初期化)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

START パラメータ
CmdStartPause コマンドのシーケンス
以下の図に、CmdStartPause コマンドの実行時に、内部で使用されるファンクションとデバイスでの操作を示します。
ዃዙናዙ'%

孔函ነዐእዊዙ዆ 3(B:2/
67$57ኤክኁኖቑ዇ኖእ
'LDJ,'
3DXVHB7LPH:R/
6WDUWB3DXVHB%LWಹ'%ቊቑ抌┯㍔⫀
7LPHBWRBRSHUDWH
7LPHBPLQB3DXVH
3(B0RGHB,'ಹ:DNHB8SB0HWKRG:DNHB8SB'DWDB/HQJW:DNHB8SB'DWDಹ(QDEOH6OHHS ሥቭቍሺኖ዇ዙኴ኿ዙ
ኦ
指㔭䂗ቢ"

ሥቭ

ቍሺ

㉫䷣
7LPHBWRBRSHUDWH
7LPHBPLQB3DXVH:DNHB8SB0HWKRGಹ㉫䷣ቑክአኌቿአኴ

3DXVHB7LPH
!
7LPHBPLQB
3DXVH

ኤክኁኖሯ
䄥⌨₼ቑ
㉫䷣

,QIRBVOHHSBPRGHሥቭ

6WDUWBVOHHSBPRGH㉫䷣ቑክአኌቿአኴ

3(B6/((3B02'(ቑኤክኁኖቍሺ
6WDUWB3DXVH㉫䷣ቑክአኌቿአኴ

4XHU\6WDWXV(1(5*<B6$9,1*B
02'(ቑኤክኁኖ

3(0B6WDWXV㉫䷣

(1(5*<B6$9,1*B
02'(ቑኤክኁኖ

(1'

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2239

拡張命令
4.6 PROFIenergy

END パラメータ
CmdEndPause コマンドのシーケンス
以下の図に、CmdEndPause コマンドの実行時に、内部で使用されるファンクションとデバイスでの操作を示します。
ዃዙናዙ'%

孔函ነዐእዊዙ዆ 3(B:2/
67$57ኤክኁኖቑ዇ኖእ
'LDJ,'
3DXVHB7LPH:R/
6WDUWB3DXVHB%LW
ಹ3(B0RGH
6OHHS0RGHሥቭ

0DJLF3DFNHWറ
7&20俛䟀'HIDXOW3RUW

6OHHSBPRGHቑኤክኁኖ

ቍሺ

(QGB3DXVH'%ቊቑ抌┯㍔⫀(QGB3DXVH㉫䷣ቑክአኌቿአኴ(QHUJ\BVDYLQJBPRGH
B[ቊቑኤክኁኖ

7LPHBWRBRSHUDWH
7LPHBPLQB3DXVH
3(B0RGHB,'ಹ:DNHB8SB0HWKRG:DNHB8SB'DWDB/HQJW:DNHB8SB'DWDಹ:DLW772

3(0B6WDWXV

5HDG\BWRBRSHUDWHBP
RGHቊቑኤክኁኖ

㉫䷣ቑክአኌቿአኴ

(1'

PENERGY パラメータ
PENERGY パラメータのデータブロック「PE_WOL」PROFIenergy 命令のユーザー DB は、複数のデバイスを処理するためのデータ
ベースを表します。

2240

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
データブロックは通常 2 つの部分に分解されます。これらは、次です。
• ヘッダー 110 バイト• 最大 256 個のデバイスのデバイスセクションで、それぞれ 100 バイト(Device)これらには、以下が含まれています。
– デバイス固有のデータ(Device)– PROFIenergy 特定のデータ(PE)– ジョブ処理のためのデータ(Task)– ユーザーデータ(UserData)
このデータブロックは、最適化されたアクセスで動作します。

接続パラメータ「Connection」「PE_WOL」命令は「ユーザー通信を開く」の領域で接続リソースを予約します。この領域
は UDP 接続として使用されます。このため、データブロックに以下のパラメータを定義する必要があります。
• 接続 ID 「Connection.id」パラメータ)(
接続 ID は、1～4095 の範囲の整数です。ファームウェアによって割り当てられた通信
リソース(たとえば、送信バッファと受信バッファ)を識別するのに使用されます。
接続 ID は CPU 全体で一意である必要があります。
• [Wake on LAN]ファンクション(「Header.PortNo」パラメータ)に使用されるポート番号。
[Wake On LAN]パケットの送信元である UDP ポートの番号。これらのポート番号は通信リソースの一部であり、接続 ID によってファームウェアで識別されて提供されます。
ここで使用されるポート 2189 の初期設定は、IANA では現在割り当てされません。ポート番号は接続設定に転送され、パラメータ「Connection.local_tsap_id[1]」に適用されます。ポート番号とリモートポートの長さは、パラメータ「Connection.rem_tsap_id[1]」および「Connection.rem_tsap_id_LEN」を使用して定義し、手動で割り当てる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2241

拡張命令
4.6 PROFIenergy

データブロックの構造体
データブロックの構造体は以下の通りです。
名前

データタイプOFFSET

コメント

Header

PE_HEADER-

ヘッダー情報BOOL-

データ領域での変更を示す信号

Update (1)• True = ユーザーによる変更を示します。
• False = 変更のアプリケーションを示します。
Initialized

BOOL

-

初期化が完了したことを示す信号• True = 初期化が終了済み。
• False = ブロックが初期化されていないことを示します。

LinkUpBOOL-

イーサネットインターフェースの設定が正常に終了したことを示します。
• True = インターフェースが使用準備完了。
• False = インターフェースがまだ設定されていません。

LinkDown

BOOL-

設定されていないインターフェースを示します。
• True = インターフェースがまだ設定されていません。
• False = インターフェースが現在設定中である
か、現在設定済みです。

PROFINET_ID (1)INT-

PROFINET I/O システムの ID

Reserved

ARRAY [1..37]

-

予約済み

-

この PROFINET I/O システムの最大の Device-ID が

OF BYTELastDeviceID

INT

収納されています。
PortNo (1)

WORD

-

[Wake on LAN]ファンクションに使用されるポート
番号(既定 = 2189).

Connection

2242

TCON_Param-[Wake on LAN]接続の接続設定を格納します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
データタイプOFFSET

コメント

BLOCK_LENGTH

UInt

-

構造体の長さ(常に B#16#40).

ID (1)

CONN_OUC-

接続 ID

CONNECTION_TYPE

USINT

-

接続タイプ(UDP = B#16#13)

ACTIVE_EST (1)

BOOL

-

アクティブ接続の確立(常に UDP ではパッシブ)

LOCAL_DEVICE_ID (1)

USINT

-

インターフェース ID を格納します(CPU 依存)

LOCAL_TSAP_ID_LEN USINT-

独自/ローカル UDP ポートの長さをバイト単位で格

名前

(1)

(1)

納します。

REM_SUBNET_ID_LE

USINT

-

未使用(常に B#16#00)

REM_STADDR_LEN (1) USINT-

リモート IP アドレスまたは B#16#00 の長さを格納

N

(1)

します。
REM_TSAP_ID_LEN (1) USINT-

リモート UDP ポートの長さをバイト単位で格納します。長さ指定は手動で入力する必要があります。

NEXT_STADDR_LEN

USINT

-

(1)

既定のルータアドレスの長さ(関連なし)を格納します。

LOCAL_TSAP_ID (1)ARRAY[1..16]-

OF BYTEREM_SUBNET_ID (1)ARRAY[1..6] OF

独自のローカルポート番号を格納します。値は初期化中にパラメータ PortNo から適用されます。

-

未使用(常に B#16#00)-

リモート IP アドレスを格納します。

-

リモート UDP ポート番号を格納します。ポート番

USINT
REM_STADDR (1)ARRAY[1..6] OF
USINT

REM_TSAP_ID (1)ARRAY[1..16]
OF BYTE

NEXT_STADDR (1)ARRAY[1..6] OF

号は手動で入力する必要があります。
-

対象外

BYTE
SPARE
Device

(1)

WORD

-

ARRAY[1..256]-

デバイスの配列-

デバイスごとのデータを格納します。

OF PE_DEVICE
DevicePE_DEVTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2243

拡張命令
4.6 PROFIenergy
名前
DeviceID

データタイプOFFSET

コメント

HW_DEVICE-

デバイスのハードウェア識別子。ハードウェアコン
フィグレーションによる割り当て

PE_EntityID

HW_IO

-

PROFIenergy エンティティのハードウェア識別子。
ハードウェアコンフィグレーションによる割り当て

MACAdrARRAY[1..6] OF-

デバイスの MAC アドレスを格納します。

-

デバイスの IP アドレスを格納します。

-

OrderID の最大長が収納されています。

BYTE
IPAdr

ARRAY[1..4] OF
BYTE

OrderID_MxLen

Byte

OrderId_ActLen

Byte

OrderID の実際の長さが収納されています。

OrderID_Data

ARRAY[1..20]

デバイスの OrderID を格納します。

OF CHAR
PE

2244

PE_PE

-

PROFIenergy 特有のデータ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
データタイプOFFSET

コメント

ModeID

BYTE-

PE_MODE_IDProfienergy 仕様によるResultBYTE-

PROFIenergy 仕様に従った PE ErrorCode。

PauseTime (1)

TIME

-

ミリ秒単位のアイドル時間を格納します。

TimeToPause

TIME

-

デバイスが一時停止モードになるのにかかる時間を名前格納します。
TimeToOperate

TIME

-

デバイスが動作モードになるのにかかる時間を格納します。

MinSleepTime

TIME

-

デバイスの最小時間を PE_SLEEP_MODE に格納します。

SleepToOperate

TIME

-

デバイスが PE_SLEEP_MODE から動作モードに進むのにかかる時間を格納します。

StatusOperate

BOOL

-

デバイスの動作モードを示します。

StatusPause

BOOL

-

デバイスの一時停止モードを示します。

StatusSleep

BOOL

-

デバイスの PE_SLEEP_MODE を示します。

StatusTransitOK

BOOL

-

エナジーステートから別の状態への遷移を示します。

StatusInTransit

BOOL

-

現在の状態遷移を示します。

StatusTransitNOK

BOOL

-

状態の変更が正常に終了しなかったことを示します。

StatusError

BOOL

-

デバイスでのエラーを示します。

StatusRetryEx

BOOL

-

コマンドの実行が正常に終了しなかったことを示します。このコマンドを実行する試みはもう行いません。

CmdStartPause

(1)

BOOL

-

このデバイスの START_PAUSE コマンドをキューに入れます。

CmdEndPause (1)

BOOL

-

このデバイスの END_PAUSE コマンドをキューに入れます。

CmdUpdateStatus (1)

BOOL

-

このデバイスの PEM_STATUS コマンドをキューに入れます。

EnableSleep (1)

BOOL

-

このデバイスには PE_SLEEP_MODE が可能です。
• True = アイドル時間が十分である場合、デバイ
スは PE_SLEEP_MODE に移行します• False = デバイスは PE_SLEEP_MODE には移行できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2245

拡張命令
4.6 PROFIenergy
名前Services

データタイプOFFSET

コメント

WORD

-

すべてのサポートされている PROFIenergy サービ
スを示します。

UserData (2)ARRAY[1..24]-

ユーザー定義のデータ

OF BYTETask

PE_TASK

-

ジョブ処理

Cmd

BYTE

-

ジョブ処理の内部ビット

CmdJ

BYTE

-

ジョブ処理の内部ビット

TimeStart

BOOL-

遅延時間を開始します。

TimeStarted

BOOL

-

遅延時間が開始しました。

TimeDone

BOOL-

遅延時間が経過したことを示します。

Done

BOOL

-

このジョブが完了したことを示します。

DelayedCmd

BOOL

-

遅延したコマンドがまだ保留状態であることを示します。

IsV1_0BOOL-

このデバイスは仕様を準拠していることを示します。V1.0 デバイス

IsWakeOnLAN

BOOL

-

このデバイスは[Wake On LAN]により起動されることを示します。

RetryCount

BYTE

-

PE_COMMANDS の繰り返しカウンタ

Duration

TIME-

ミリ秒単位の遅延の値を格納します。

StartTime

TIME-

遅延時間の開始時刻を格納します。

MachineState

INT-

ジョブの内部ステータスを格納します。

(1)

ユーザーが入力。

(2)

ユーザーが使用できる。

STATUS パラメータ
パラメータ STATUS
STATUS パラメータでの出力値は 3 つの領域に分割されます。
• ビット 31～24: MESSAGE• ビット 23～16: LOCATION• ビット 15～0: INFORMATION

2246

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
次の表に、3 つの領域の各エラーコードの意味を示します。
表 4-23MESSAGE に可能な値

エラーコード 説明(W#16#...)
00

エラーは発生していません。

50

初期化された命令。

51

PROFINET I/O システムの設定を決定。

52

この命令は、PROFINET I/O システム内で設定された任意のデバイスを決定することができませんでした。

53

設定されたデバイスの論理アドレスを決定。

54

デバイスのインターフェース情報の読み取り。

55

設定されたデバイスの I&M データ(データレコード 0 のみ)の決定。

56

UDP 経由の「Wake on LAN」MagicPaket™送信のための PROFINET インターフェースの設定。

57

接続済みデバイスの PROFIenergy 機能の決定。

62

無効な PROFINET I/O システム ID を検出しました。原因となる番号が[INFORMATION]フィールドに表示されます。

70

命令が初期化され、ジョブを処理します。INFORMATION フィールドの値は、現在有効なジョブ数を含みます。

80

この命令は、ジョブの処理中に初期化を実行できません。インスタンス DB またはユーザー
DB のいずれかが再ロードされた場合、通常この状況が発生します。

FF

表 4-24

不明なエラーが発生しました。

LOCATION の考えられる値

エラーコード 説明(W#16#...)
00

この命令は初期化されていないか、アイドル状態であるかいずれかです。

70

この命令は、ジョブを待機しています。

71

この命令はジョブリストにジョブを添付しています。

72

この命令はジョブ送信を準備しています。

73

この命令はジョブをデバイスに送信中です。

74

この命令はデバイスからの応答を待機しています。

75

この命令はデバイスの応答を評価しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2247

拡張命令
4.6 PROFIenergy
エラーコード 説明(W#16#...)
76

この命令はジョブリストからジョブを削除しています。

FF

不明なエラーが発生しました。

表 4-25

INFORMATION の考えられる値

エラーコード 説明(W#16#...)
0000

追加の情報はなく、ジョブは有効ではありません。

0001 -00FF1 – 255 ジョブは現在処理されています。

7000

COM_RST による再初期化が開始されましたが、まだ完了していません。

8001

第 1 パラメータでのエラー

8002

第 2 パラメータでのエラー

8003

第 3 パラメータでのエラー

8004

第 4 パラメータでのエラー

8005

第 5 パラメータでのエラー。このエラーは、相互接続されていないか、またはユーザー DB
への相互接続が無効な場合に報告されます。
考えられる原因:• ユーザー DB が小さすぎます。
• ユーザー DB は書き込み保護されています。
• RAM にユーザー DB がありません。
• ユーザー DB が使用している CPU に無効です。

8085～80CE 接続設定時のエラー。内部的に使用される TCON 命令のエラーメッセージが出力 されます。
エラーメッセージの説明は、STATUS (ページ 3057)パラメータのテーブルで確認できます。
8100

許可されている最大 256 個のジョブを超えるジョブを挿入しようとしました。これは一時的なエラーで、多少のジョブを完了すると解決されます。挿入されたジョブは受け入れられな
いため、もう一度挿入する必要があります。

8200

無効またはサポートされていない PROFIenergy コマンド(PE_COMMAND)を送信しようとし
ました。

8400

接続 ID が許容範囲内にありません。初期化が中止されました。
[Wake on LAN]の接続設定の ID をチェックします。パラメータ PENERGY > Header >Connection > ID のデータブロックを参照してください。

84xx

2248

通信エラーが発生しました。エラーを生成したデバイスの数が「xx」に出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
エラーコード 説明(W#16#...)
85xx

エラーがデバイス xx から返されました。エラーを生成したデバイスの数が「xx」に出力さ
れます。

8600

要求されたウェークアップ方法は現在サポートされていません。

FFFF

不明なエラーが発生しました。

下記も参照
PENERGY パラメータ (ページ 2240)

4.6.2.5

PROFIenergy コマンド

メッセージフレームの構造

PROFIenergy プロファイルに準拠した応答フレームの構造
以下の表は、PROFIenergy プロファイルに準拠した応答フレームの基本構造を指名しています。 応答フレームは、全般セクション(Header)と固有のセクション(Service Data
Response)で構成されています。 応答フレームの個々のセクションの内容は、関連する
PROFIenergy コマンドの説明に記載されています。
ブロック定義

属性

値

データタイ
プ

BlockHeader

BlockType801 hex

WORD

BlockLength

WORD

説明

フィールド BlockType およびBlockLength を考慮しないバイト数。

BlockVersionHigh

1 hex

BYTE

BlockVersionLow

0 hex

BYTE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2249

拡張命令
4.6 PROFIenergy
ブロック定義

属性

値

データタイ
プ

説明

Response

Service_Request_ID

1hex～FF hex

BYTE

実行される PI コマンドの ID。 PE エン

Headerティティによって処理される PE コマ
ンドの ID は、応答フレームに返されます。
• 01: Start_Pause• 02: End_Pause• 03: Query_Modes• 04: PEM_Status• 05: PE_Identify• 06～09:予約済み• 16: Query_Measurement• 11～CF:予約済み• D0～FF:製造元固有
Request_Reference

1hex～FF hex

BYTE

照会/応答のペアを特定する固有の番号(応答時にサーバーによって返されま
す)。

2250

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
ブロック定義

属性

値

データタイ
プ

説明

Service Header

Status1hex～FF hex

BYTE

PI コマンド実行の有無に関する情報。

Response• 00: 予約済み
• 01: 完了
• 02: 完了(エラーあり)• 03: 不完全なデータ• 04～CF:予約済み• D0～FF: Service_Request_ID によって異なる
Data_Structure_

1hex～FF hex

BYTE

Identifier_RS• 00: 予約済み
• 01～FF: データ構造体はService_Request_ID によって異なる• 0xFF - エラー

Service Data

Service-Request-ID によって異なる

Response• サービス応答 ID については、「PE_CMD (ページ 2226)」命令の
CMD および CMD_MODIFIER パラ
メータを参照してください。
• 応答フレームの個々の内容は、PE
コマンドの説明に記載されています(たとえば「Start_Pause (ページ 2251)」コマンドを参照)。

PI コマンド「Start_Pause」

説明PE コマンド「Start_Pause」を使用して、省電力モードを開始します。 コマンド
Start_Pause は、以下の操作にも使用できます。
• PE を「準備完了」状態(PE_ready_to_operate)から省電力モード(PE_energy_saving_mode)に切り替える。
• PE エンティティは自動的に省電力モードを切り替えます。
省電力モードを切り替えると、電力消費は増加、または減少します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2251

拡張命令
4.6 PROFIenergy

PI コマンド「Start_Pause」の呼び出し
コマンド「Start_Pause」は、以下のパラメータを持つ「PE_CMD (ページ 2226)」命令で呼び出されます。
パラメータ

値

説明

CMD

1

PE コマンド「Start_Pause」の呼び出し。

CMD_MODIFIER

0

コマンド「Start_Pause」のコマンド呼び出しに関するその他の事項はありません。

CMD_PARA_LEN

4

CMD_PARA パラメータの長さ、4 バイト。

CMD_PARA

VARIANT「Pause_Time」(TIME)の値に対する VARIANT ポイン
タ。

応答フレーム(Service Data Response)
PE エンティティの以下の応答フレームデータは、パラメータ RESPONSE_DATA に参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」命令を参照)。
属性

値

データタイプ説明

PE_Mode_ID

1～255

BYTE

省電力モードの識別番号

予約済み

0

BYTE

-

PI コマンド「End_Pause」

説明PE コマンド「End_Pause」を使用して、PE エンティティの省電力モードを終了します。

2252

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

PE コマンド「End_Pause」の呼び出し
コマンド「End_Pause」は、以下のパラメータを持つ「PE_CMD (ページ 2226)」命令で呼び出されます。
パラメータ

値

説明

CMD

2

PE コマンド「End_Pause」の呼び出し。

CMD_MODIFIER

0

コマンド「End_Pause」のコマンド呼び出しに関するその他の事項はありません。

CMD_PARA_LEN

0

CMD_PARA パラメータの長さ、0 バイト。

CMD_PARA

対象外-

応答フレーム(Service Data Response)
PE エンティティ応答フレームの以下のデータは、RESPONSE_DATA パラメータに参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」を参照)。
属性

値

データタイプ

説明

Time_to_operate

-

DWORD

「PE_ready_to_operate」モードへの切り替えの推定時間。

PI コマンド「Query_modes」 - 「List_Energy_Saving_Modes」

説明PE コマンド「Query_modes」およびサブコマンド(修飾子)「List_Energy_Saving_Modes」
を使用して、PE エンティティがサポートしているすべての省電力モード(PE_Mode_ID)を出力します。
照会結果は RESPONSE_DATA パラメータが参照するデータブロックに応答フレームとして書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2253

拡張命令
4.6 PROFIenergy

PE コマンド「Query_modes」 - 「List_Energy_Saving_Modes」の呼び出し
コマンド「List_Energy_Saving_Modes」は、以下のパラメータを持つ「PE_CMD (ページ 2226)」命令で呼び出されます。
パラメータ

値

説明

CMD

3

PE コマンド「Query_modes」の呼び出し。

CMD_MODIFIER

1

コマンド呼び出しの仕様: サブコマンド「List_Energy_Saving_Modes」を選択して、サポートされている省電力モードの数とタイプを出力します。

CMD_PARA_LEN

0

CMD_PARA パラメータの長さ、0 バイト。

CMD_PARA

対象外-

応答フレーム(Service Data Response)
PE エンティティ応答フレームの以下のデータは、RESPONSE_DATA パラメータに参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」を参照)。
属性

値

データタイプ

説明

Number_of_PE_

1

BYTE

省電力モードの数。

-

Array [...] of

サポートされている省電力モードの ID

BYTEの配列。 個々の ID の意味は、PE エン

Mode_IDs
PE_Mode_IDs

ティティによって異なります。

PI コマンド「Query_modes」 - 「Get_Mode」

説明
PE コマンド「Query_modes」およびサブコマンド(修飾子)「Get_Mode」を使用し、現在有効な省電力モードの属性を出力します。

2254

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

PE コマンド「Query_modes」 - 「Get_Mode」の呼び出し「PE_CMD」によるこのコマンドの呼び出しには、以下のパラメータを使用します。
パラメータ

値

説明

CMD

3

PE コマンド「Query_modes」の呼び出し

CMD_MODIFIER

2

コマンド呼び出しの仕様:サブコマンド「Get_Mode」を選択して、現在有効なモードのステータスを出力します。

CMD_PARA_LEN

1

CMD_PARA パラメータの長さ、1 バイト

CMD_PARA

VARIANTVARIANTpointer to the value forPE_MODE_ID

応答フレーム(Service Data Response)
PE エンティティ応答フレームの以下のデータは、RESPONSE_DATA パラメータに参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」を参照)。
属性

値

データタイプ 説明

PE_Mode_ID• 0「PE_power_off」モード

BYTE

現在有効な省電力モードの ID• 1～254
PE エンティティの省電力モード(メーカー固有)• 255「PE_ready_to_operate」モード
PE_Mode_Attribut ビット 0:
es

BYTE

• = 0:静的な電力消費量および時間値のみを使用できます。
•= 1:動的な電力消費量および時間値を使用できます。

ビット 1～7:• 予約済みTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2255

拡張命令
4.6 PROFIenergy
属性

値

Time_min_Pause 1 日付なしの時間差

データタイプ 説明
DWORD

PI モードの最小一時停止時間。最小
一時停止時間は、以下の属性値の合計です。
• Time_to_Pause• Time_to_operate• Time_min_length_of_stay「PAUSE_TIME パラメータ」「PE_START_END:(
省電力モードの開始と終了 (ページ 2220)」命令)の説
明を参照してください。

Time_to_Pause 1

日付なしの時間差

DWORD

スイッチオフ時間:省電力モードの呼び出しから省電力モード開始までの時間(PE_ready_to_operate から
PE_energy_saving_mode への移行時間)。スイッチオフ時間は PE によって異なります。

Time_to_operate 1 日付なしの時間差

DWORD

スイッチオン時間:省電力モード(PE_energy_saving_mode)から動作
準備完了モード(PE_ready_to_operate)までの移行時間。
PE エンティティは、出力操作で経過
時間を動的に計算します。

Time_min_length

DWORD

_
of_stay

PE エンティティでの省電力モードの最小持続時間1

Time_max_length

DWORD

_

PE エンティティでの省電力モードの最大持続時間of_stay 1
Mode_Power_
Consumption

2

REAL

省電力モードが有効な PE エンティテ
ィの電力消費
単位:kW

2256

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
属性

値

データタイプ 説明

Energy_REAL

動作準備完了モード

Consumption_(PE_ready_to_operate)から省電力モ

to_pauseード(PE_energy_saving_mode)への2

移行中の PE エンティティの電力消費。
単位:kWhEnergy_

REAL

省電力モードConsumption_(PE_energy_saving_mode)から動作

to_operate 2

準備完了モード(PE_ready_to_operate)への移行中の
PE エンティティの電力消費。
単位:kWh1

期間が無限の場合、0xFFFFFFFF が出力されます。期間がゼロの場合、「0」が出力されます。

2

PE エンティティによる電力消費のデータが定義されていない場合、値として「0.0」が出力されます。

PI コマンド「PEM_Status」

説明PE コマンド「"PEM_Status」を使用して、現在有効な PE エンティティ省電力モードのス
テータスを照会します。

PE コマンド「PEM_Status」の呼び出し
コマンド「PEM_Status」は、以下のパラメータを持つ「PE_CMD」命令で呼び出されます。
パラメータ

値

説明

CMD

4

PE コマンド「PEM_Status」の呼び出し。

CMD_MODIFIER

0

コマンド「PEM_Status」のコマンド呼び出しに関するその他の事
項はありません。

CMD_PARA_LEN

0

CMD_PARA パラメータの長さ、0 バイト。

CMD_PARA

対象外-

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2257

拡張命令
4.6 PROFIenergy

応答フレーム(Service Data Response)
PE エンティティ応答フレームの以下のデータは、RESPONSE_DATA パラメータに参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」を参照)。
属性

値

データタイ
プ

説明

PE_Mode_ID_• 0"「PE_power_off」モード

BYTE

PE コマンド送信前の PE エンティテ

Sourceィのモード。

• 1～254
PE エンティティの省電力モード(メーカー固有)• 255"「PE_ready_to_operate」モード
PE_Mode_ID_
Destination• 0"「PE_power_off」モード

BYTE

PE コマンド実行後の PE エンティテ
ィのモード。

• 1～254
PE エンティティの省電力モード(メーカー固有)• 255"「PE_ready_to_operate」モード
Time_to_operate

日付なしの時間差

DWORD

スイッチオン時間: 省電力モード(PE_energy_saving_mode)から動作
準備完了モード(PE_ready_to_operate)までの移行時間。
PE エンティティは、出力中に経過時間を動的に計算します。

Remaining_time_to

日付なしの時間差

DWORD_

他のモードへの切り替えまでの残り時間。

destination
Mode_Power_
Consumption

REAL

省電力モードが有効な PE エンティ
ティの電力消費。
単位: kW

2258

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
属性値

Energy_

データタイ
プ

説明

REAL

現在の PI 以降の電力消費

Consumption_

単位: kWh

to_Destination
Energy_

REAL

省電力モード(PE_energy-saving

Consumption_mode)から動作準備完了モード

to_operate(PE_ready_to_operate)への移行中の
PE エンティティの電力消費。
単位: kWhPI コマンド「PE_Identify」

説明PE コマンド「PE_Identify」を使用して、PE エンティティがサポートする PE コマンドの数および詳細を読み出します。サポートされているコマンド数は、PE エンティティによって異なります。PE_Identify 自体が PE コマンドであるため、肯定応答の場合、3 つ以上のサポートされている PE コマンドが出力されます(Start_Pause、End_Pause および
PE_Identify)。

PE コマンド「PE_Identify」の呼び出し
コマンド「PE_Identify」は、以下のパラメータを持つ「PE_CMD (ページ 2226)」命令で呼び出されます。
パラメータ

値

説明

CMD

5

コマンド「PE_Identify」の呼び出し

CMD_MODIFIER

0

コマンド「PE_Identify」のコマンド呼び出しに関するその他の事
項はありません。

CMD_PARA_LEN

0

CMD_PARA パラメータの長さ、0 バイト。

CMD_PARA

対象外-

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2259

拡張命令
4.6 PROFIenergy

応答フレーム(Service Data Response)
PE エンティティ応答フレームの以下のデータは、RESPONSE_DATA パラメータに参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」を参照)。
属性
Count

1

Start_Pause

値

データタイプ 説明

6

BYTE

サポートされている PROFIenergy コマンドの数

1

BYTE

最初のサポートされている PE コマンド
(Service_Request_ID)

End_Pause

2

BYTE

...

Query_Modes

3

BYTE

...

PEM_Status

4

BYTE

...

PE_Identify

5

BYTE

...

Query_Measurement

16

BYTE

最後のサポートされている PE コマンド
(Service_Request_ID)

1

サポートされているコマンド数は、メーカーおよび使用している PE エンティティによって異なります。6

つの PE コマンドすべてがサポートされているときは、上記の値が応答フレームの例です。

PI コマンド「Query_Measurement」 - 「Get_Measurement_list」

説明PE コマンド「Query_Measurement」およびサブコマンド(修飾子)「Get_measurement_list」を使用して、PE エンティティによってサポートされている特定の測定値を照会します。 サポートされている測定値は、RESPONSE_DATA パラメータによって参照されるデータブロック内のリストとして出力されます。

PE コマンド「Query_Measurement」 - 「Get_Measurement_list」の呼び出し
このコマンドは、以下のパラメータを持つ「PE_CMD (ページ 2226)」命令で呼び出され
ます。
パラメータ

値

説明

CMD

16

コマンド「Query_Measurement」の呼び出し

CMD_MODIFIER

1

コマンド呼び出しの仕様: サブコマンド「Get_Measurement_List」を選択
して、サポートされている測定値のリストを出力します。

2260

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

値

説明

CMD_PARA_LEN

0

CMD_PARA パラメータの長さ、0 バイト。

CMD_PARA

対象外-

応答フレーム(Service Data Response)
PE エンティティ応答フレームの以下のデータは、RESPONSE_DATA パラメータに参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」を参照)。
属性

値

データタイ
プ

説明

Count

-

BYTE

測定 ID の数

reserved

-

BYTE

-

WORD

...
Measurement_ID

最初のサポートされている Measurement_ID。
Measurement_ID はメーカーに依存します。 詳細は、各 PE
エンティティのマニュアルを参照してください。

Accuracy_Domain

-

BYTE

「精度ドメイン」の表を参照してください。

Accuracy_Class

-

BYTE

「精度クラス」の表を参照してください。

Range

-

REAL

測定値のスケール終了値を指定します(精度ドメイン 1 のみ)。 属性範囲は、属性 Measurement_ID で定義されたものと同じ単位を使用します(使用できる単位は各
Measurement_ID につき 1 つのみ)。

...
Measurement_ID

-

WORD

最後のサポートされている Measurement_ID

Accuracy_Domain

-

BYTE

「精度ドメイン」の表を参照してください。

Accuracy_Class

-

BYTE

「精度クラス」の表を参照してください。

Range

-

REAL

測定値のスケール終了値を指定します(精度ドメイン 1 のみ)。 属性範囲は、属性 Measurement_ID で定義されたものと同じ単位を使用します(使用できる単位は各
Measurement_ID につき 1 つのみ)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2261

拡張命令
4.6 PROFIenergy

精度ドメイン
精度ドメイン

説明

0

予約済み

1

精度の誤差は、スケール終了値のパーセンテージとして出力されます。 想定される誤差のパーセンテージは、精度クラスに分割されます( 精度ドメイン 1 および 2 の精度クラスの表を参照)。

2

精度の誤差は、現在の測定値のパーセンテージとして出力されます。 想定される誤差のパーセンテージは、精度クラスに分割されます( 精度ドメイン 1 および 2 の精度クラスの表を参照)。

3

測定精度は、IEC 61557-12 規格に基づいています。
外部センサのないパフォーマンス測定およびモニタリングデバイス(PMD)のファンク
ションパフォーマンスクラス、および外部センサ付き PMD のシステムパフォーマンス
クラスは、精度ドメイン 3 の精度クラス」の表に記載された通りコーディングされています。

4

精度のエントリは、EN 50470-3 規格、第 8 章に基づいています( 精度ドメイン 4 の精度
クラス)。

精度クラス
表 4-26

精度クラス
意味

精度ドメイン 1 および 2 の精度クラス

0

1

2

3

4

5

6

7

8

予約済

0.01%

0.02%

0.05%

0.1%

0.2%

0.5%

1%

1.5%

み

精度クラス

9

10

11

12

13

14

15

>15

意味

2%

2.5%

3%

5%

10%

20%

>20%

未定義

2262

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
表 4-27精度ドメイン 3 の精度クラス

0

1

2

3

4

5

6

7

8

予約済

0,02

0,05

0,1

0,2

0,5

1

1,5

2

精度クラス
意味

み

精度クラス

9

10

11

12

13

14

>13

意味

2,5

3

5

10

20

20%

未定義

表 4-28精度ドメイン 4 の精度クラス

0

1

2

3

4

5

6

>7

予約済

0,5

1,0

1,5

2,0

2,5

3,0

未定義

精度クラス
意味

み

PI コマンド「Query_Measurement」 - 「Get_Measurement_values」

説明PE コマンド「Query_Measurement」およびサブコマンド(修飾子)「Get_measurement_values」を使用して、PE エンティティによってサポートされている測定値のリストを出力します。 測定値は、RESPONSE_DATA パラメータによって参照される
データブロック内のリストとして出力されます。

PE コマンド「Query_Measurement」 - 「Get_Measurement_values」の呼び出し
このコマンドは、以下のパラメータを持つ「PE_CMD (ページ 2226)」命令で呼び出され
ます。
パラメータ

値

説明

CMD

16

コマンド「Query_Measurement」の呼び出し

CMD_MODIFIER

2

コマンド呼び出しの仕様: コマンド「Get_Measurement_Values」を選択して、サポートされている測定値のリストを出力します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2263

拡張命令
4.6 PROFIenergy
パラメータ

値

説明

CMD_PARA_LEN

0

測定値の数によって異なります。 パラメータの長さは、属性 count お
よび転送される測定値用の属性の長さの合計によって決まります。

CMD_PARA

VARIANT照会される測定値のリストを伴ったデータ構造体に対する VARIANT ポ
インタ(「CMD_PARA パラメータ」を参照)。

パラメータ CMD_PARA
CMD_PARA パラメータ VARIANT でポインタによって指定された構造体は、以下の設定がされている必要があります。
属性

値

データタイプ

説明

Count

-

BYTE

測定値の数(Measurement-IDs)

reserved

0

BYTE

未使用

Measurement_ID

-

WORD

必要な最初の測定値-

WORD

必要な最後の測定値...
Measurement_ID

応答フレーム(Service Data Response)
PE エンティティの以下の応答フレームデータは、パラメータ RESPONSE_DATA に参照されるデータブロックに書き込まれます(「PE_CMD (ページ 2226)」を参照)。
属性

値

データタイプ

説明Count 1-BYTE

測定値の数(Measurement-IDs)

reserved

0

BYTE

未使用

Length_of_Struct2～65535WORD

構造体の長さ(バイト単位)

BYTE

以降の構造体を定義。

ure
Measurement_Dat 1 = 唯一の値
a_Structure_ID
Measurement_ID

0～65535

WORD

サポートされている測定値の ID。

Status_of_

1～3

BYTE

測定値のステータス:

Measurement_Val• 1: 使用可能ue• 2: サポートされていません• 3: 無効

2264

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
属性

値

データタイプ

説明Transmission_Dat

-

REAL

-

TOD

データタイプ TimeOfDay にタイムスタンプを追加。

-

WORD

構造体の長さ(バイト)Measurement_Dat -BYTE

以降の構造体を定義。

-

WORD

サポートされている測定値の ID。

Status_of_Measur -BYTE

測定値のステータス:

a_TypeEnd_of_demand...
Length_of_Structure
a_Structure_ID
Measurement_ID
ement_Value• 1: 使用可能• 2: サポートされていません• 3: 無効Transmission_Dat

-

REAL

-

TOD

a_TypeEnd_of_demand
1

データタイプ TimeOfDay にタイムスタンプを追加。

必要な測定値のデータ長が、プロトコル層の PDU (プロトコルデータユニット)のサイズを超える場合、データは完全には転送されず、サポートされている測定値のみが出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2265

拡張命令
4.6 PROFIenergy

4.6.3

iDevice/iSlave

4.6.3.1

PE_I_DEV: I デバイスでの PROFIenergy コマンドの制御

説明「PE_I_DEV」命令を使用して、インテリジェント IO デバイス(iDevice)内で PROFIenergy プ
ロファイルを処理します。
• 「PE_I_DEV」命令は、iDevice のユーザープログラムによって周期的に呼び出され、すべての PROFIenergy コマンドを受信します。
• PROFIenergy 応答は、補助ブロックを設定することで生成されます。一時停止中の応答
は、完全なプログラミングが可能です。応答データは 10 秒以内で返される必要があります。10 秒を超えると IO コントローラ内のこの命令の STATUS パラメータで「State
conflict 0x80B5」が発生します。
注記:ファンクションは、ET 200S などの標準 PROFIenergy 互換 IO デバイス内でファーム
ウェアによって実行されます。
この命令を使用するにあたって、PROFIenergy 規格に関する特別な知識は必要ありませ
ん。

2266

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

PROFIenergy 補助ブロック(PE 補助ブロック)PE 補助ブロックを使用して、応答フレームを生成します。関連するブロックの入力パラメータに、応答データを(プレーンテキストで)入力します。
• 各 PROFIenergy コマンドに対して、肯定応答用の対応する補助ブロックが用意されています。
– PE コマンド「Start_Pause」:PE_Start_RSP (ページ 2273)– PE コマンド「End_Pause」:PE_End_RSP (ページ 2275)– PE コマンド「Query_modes」 - 「List_Energy_Saving_Modes」:PE_List_Modes_RSP(ページ 2276)– PE コマンド「Query_modes」 - 「Get_Mode」:PE_Get_Mode_RSP (ページ 2278)– PE コマンド「PEM_Status」:PE_PEM_Status_RSP (ページ 2281)– PE コマンド「PE_Identify」:PE_Identify_RSP (ページ 2284)– PE コマンド「Query_Measurement」 「Get_Measurement_list」:PE_Measurement_List_RSP (ページ 2286)– PE コマンド「Query_Measurement」 「Get_Measurement_values」:PE_Measurement_Value_RSP (ページ 2288)• PROFIenergy コマンドに関係なく、否定応答用の共有補助ブロックが用意されています(PE_Error_RSP (ページ 2271)を参照)。

補助ブロックの相互接続「PE_I_DEV」命令および補助ブロックは連携します。単純に相互接続するパラメータもあります。次の図に、どのパラメータを相互接続する必要があるかを示します。
3(孫┸ኳዊአኌ

3(B,B'(9,1,',1&0'⦉㦘ቑኮ዆ኾዙ
ኜ

,15(6(7ዃዙናዙ቎ቫቮ
峤∰ርቫቖ㉫䷣

287&0'ዃዙናዙ

287&0'B02',),(5287(5525,Q2XW&0'B3$5$
287,1'(;28767$786

287(5525,Q2XW$&7,9$7(

ዃዙናዙ28767$786,19$/,',Q2XW9$/,'2871(:,13(B,B'(9B1(:,Q2XW'$7$B(5525563
287&0'287&0'B02',),(5,Q2XW'$7$B(5525563,1&0',1&0'B02',),(5ₜ♾㶯ቍ䦇℡㘴倩TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2267

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_I_DEV」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

RESET

Input

BOOL

I、Q、M、D、L、 命令をリセットします。
または定数

ID

Input

HW_SUBMOD

I、Q、M、D、L、 転送領域のアドレス。PROFIenergy のデ

ULE

または定数

ータと共に IO コントローラに提供されます。
ハードウェア識別子は、システム定数で確認できます。

VALID

Input

BOOL

I、Q、M、D、L、 PROFIenergy コントローラへの応答デー
または定数タの準備が完了しており、送信可能です。

CMD_PARA

Output

VARIANT

I、Q、M、D、L

以下のパラメータ用:• Get mode: PE_mode_ID• Get measurement
values:Measurement_ID のリスト(読み出されるタグの ID のリスト。任意の時点で 1 つまたは複数のタグの読み出しが可能)。
最大長:234 バイト
注記:S7-1200 では、ポインタは 64 ビットのデータタイプ(言い換えれば、データタイプ LWORD、LINT および ULINT)を参照してはなりません。

DATA_ERROInOut

VARIANT

I、Q、M、D、L

RRSP

PROFIenergy コントローラへの確認デー
タを含むデータ領域に対するポインタ。
これは、補助ブロックでも使用するポイ
ンタと対応するする必要があります。
注記:S7-1200 では、ポインタは 64 ビットのデータタイプ(言い換えれば、データタイプ LWORD、LINT および ULINT)を参照してはなりません。

INDEX

Output

INT

I、Q、M、D、L

PROFIenergy レコードのデータレコード
番号(0x80A0 にセット)

2268

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイプ

メモリ領域

説明

CMD

Output

INT

I、Q、M、D、L

PROFIenergy プロファイルに準拠した
PROFIenergy コマンドの ServiceRequest-ID 「CMD(および
CMD_MODIFIER パラメータ」を参照)。
PROFIenergy プロファイルの拡張子に続けて PE コマンド(Service-Request-IDs)を追加可能です。

CMD_

Output

INT

I、Q、M、D、L

MODIFIERPROFIenergy サブコマンド:• CMD=3 または CMD=16 の場合のみ。「CMD および CMD_MODIFIER パ
ラメータ」を参照してください。
• 他のすべてのコマンドの場合:"0".
PROFIenergy プロファイルの拡張子に続けてサブコマンドを追加可能です。

NEW

Output

BOOL

I、Q、M、D、L

PROFIenergy コントローラから新しいデータが使用できます。

ERROR

Output

BOOL

I、Q、M、D、L

コマンド完了(エラーあり)。

STATUS

Output

DWORD

I、Q、M、D、L

エラー情報(「STATUS パラメータ」を参照)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

CMD および CMD_MODIFIER パラメータ
CMD

CMD_
MODIFIERPROFIenergy コマンド

説明

01

0

Start_Pause

省電力モードを開始、または他の省電力モードに切り替えます。

02

0

End_Pause

03

1

Query_Modes - List energy サポートされている省電力モードを出力します。

省電力モードを終了します。

saving Modes
2

Query_Modes - Get Mode

現在有効な省電力モードの属性を出力します。

04

0

PEM_Status

省電力モードのステータスを照会します。

05

0

PE_Identify

サポートされている PE コマンドの番号と詳細を読み出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2269

拡張命令
4.6 PROFIenergy
CMD

CMD_
MODIFIERPROFIenergy コマンド

説明

16

1

Query_Measurement -PE エンティティでサポートされている測定値のリス

Get_Measurement_List

ト。

Query_Measurement -PE エンティティの測定値の出力。

2

Get_Measurement_Values

STATUS パラメータ
エラー情報は、STATUS 出力パラメータに出力されます。ARRAY[1...4] of BYTE と解釈された場合、エラー情報は次の構造になります。
フィールドエレ 名前
メント

意味

STATUS[1]Function_Nu

エラーの原因m• B#16#00:エラーは発生していません。
• B#16#DE:データレコードの読み出し中のエラー• B#16#DF:データレコードの書き込み中のエラー• B#16#C0:「PE_I_DEV」命令、または内部的に使用されている「PRVREC (ページ 2180)」および「RCVREC (ページ 2169)」通信命令からのエラーメッセージです。

STATUS[2]Error_Decode

エラー ID の場所• 80:IEC 61158-6 で定義された、またはアプリケーション固有の DPV1
エラー です。

STATUS[3]Error_Code_1

エラー ID(Error_Decode = 80 の場合):• B1:書き込みの長さのエラー(書き込みの長さにエラーがあるか、デー
タタイプ VARIANT に関する長さの情報が不十分です)。

STATUS[4]Error_Code_2

PROFINET エラーの場合:IO コントローラエラーメッセージの出力。
PROFINET エラーが発生しなかった場合、STATUS[4]の値は「0」となり
ます。

2270

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

注記「PRVREC」および「RCVREC」命令のエラーメッセージ「PE_I_DEV」命令は、通信に「PRVREC (ページ 2180)」および「RCVREC (ページ 2169)」命
令を使用します。これらの命令のエラーメッセージはフィールドエレメント STATUS[1]～STATUS[4]に出力されます。
「PRVREC」および「RCVREC」命令のエラーコードの意味については、対応する STATUS (ページ 2079)パラメータの説明を参照してください。

下記も参照
WRREC:Write data record (データレコードの書き込み) (ページ 2026)
RDREC:Read data record (データレコードの読み出し) (ページ 2005)
PROFIenergy の説明 (ページ 2218)

4.6.3.2「PE_I_DEV」命令の補助ブロック

PE_Error_RSP: コマンドへの否定応答の生成

説明要求されたコマンドが全般的、一時的を問わずサポートされていない場合、補助ブロック「PE_Error_RSP」(Response with failure)は否定応答を生成します。応答の生成は、要求されたコマンドに依存しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2271

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_Error_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

PE_I_DEV_NEW

入力

BOOL

I、Q、M、D、

このパラメータは、「PE_I_DEV (ペー

L、または定数

ジ 2266)」命令の NEW 出力パラメータと相互接続されている必要があります。
パラメータ値が「1」にセットされている場合、補助ブロックが処理されます。

ERROR_CODE

入力

BYTE

I、Q、M、D、

エラー番号

L、または定数
ACTIVATE

InOut

BOOL

I、Q、M、D、L この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒
以内にセットされる必要があります。

VALID

InOut

BOOL

I、Q、M、D、L このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コン
トローラの応答データが使用可能になり、転送ができるようになると、パラメ
ータをセットします。

DATA_
ERRORRSPInOut

VARIANT

D

応答データが格納されているデータ領域
上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。アドレス指定されたデータ領域は、
完全な PROFIenergy フレームを含んでいます。
最小長:244 バイト2272

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ERROR

出力

BOOL

I、Q、M、D、L • "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L • "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、
間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

PE_Start_RSP: 一時停止の開始時にコマンドへの応答を生成

説明
補助ブロック「PE_Start_RSP」(一時停止開始)は、PE コマンド Start_Pause (ページ 2251)への応答を生成します。この命令は、デバイスが切り替えた省電力モードを返します(PE_MODE_ID パラメータ)。
一時停止の長さによって応答が異なる場合は、これを省電力モードにフィードバックとして返すことが可能です(PE_Mode_ID = 1 の場合は短時間の一時停止、PE_Mode_ID = 2 の場合はより長い一時停止、など)。

パラメータ
以下の表に、「PE_Start_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

PE_I_DEV_NE

入力

BOOL

I、Q、M、D、

このパラメータは、「PE_I_DEV (ペー

L、または定数

ジ 2266)」命令の NEW 出力パラメータWと相互接続されている必要があります。
パラメータ値が「1」にセットされている場合、補助ブロックが処理されます。
CMD

入力

INT

I、Q、M、D、

PROFIenergy コマンドの Service-

L、または定数

Request-ID
このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

PE_MODE_ID

入力

BYTE

I、Q、M、D、プロセスが仮定する PE モード

L、または定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2273

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイプ

メモリ領域

説明

ACTIVATE

InOut

BOOL

I、Q、M、D、L この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒
以内にセットされる必要があります。

VALID

InOut

BOOL

I、Q、M、D、L このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コン
トローラの応答データが使用可能になり、転送ができるようになると、パラメ
ータをセットします。

DATA_

InOut

VARIANTERRORRSP

D

応答データが格納されているデータ領域
上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。アドレス指定されたデータ領域は、
完全な PROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR

出力

BOOL

I、Q、M、D、L • "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L • "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、
間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2274

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

PE_End_RSP: 一時停止の終了時にコマンドへの応答を生成

説明
補助ブロック「PE_End_RSP」は、PE コマンド End_Pause (ページ 2252)への応答を生成します。現在のモードから「Ready_To_Operate」モードに切り替えるには、必要な時間が応答として返されます。

パラメータ
以下の表に、「PE_End_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

PE_I_DEV_NEW

入力

BOOL

I、Q、M、

このパラメータは、「PE_I_DEV (ペーD、L、または ジ 2266)」命令の NEW 出力パラメータ定数と相互接続されている必要があります。
パラメータ値が「1」にセットされている場合、補助ブロックが処理されます。

CMD

入力

INT

I、Q、M、PROFIenergy コマンドの Service-

D、L、または Request-ID
定数

このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

Time_to_Operat 入力

DWORD

e
ACTIVATE

I、Q、M、

現在のモードから

D、L、または 「Ready_To_Operate」への切り替えに必
InOut

BOOL

定数

要な時間。

I、Q、M、

この命令は、入力パラメータを入力

D、L

ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒
以内にセットされる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2275

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイプ

メモリ領域

説明

VALID

InOut

BOOL

I、Q、M、

このパラメータは、「PE_I_DEV (ペーD、Lジ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コン
トローラの応答データが使用可能になり、転送ができるようになると、パラメ
ータをセットします。

DATA_

InOut

VARIANTDERRORRSP

応答データが格納されているデータ領域
上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。アドレス指定されたデータ領域は、
完全な PROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR
STATUS

出力
出力

BOOL
WORD

I、Q、M、• "0":エラーは発生していません。

D、L• "1":エラーが発生しました。

I、Q、M、• "0":エラーは発生していません。

D、L• 「0x80B1」:VARIANT 設定のエラー、
間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

PE_List_Modes_RSP: 照会された省電力モードを応答として生成説明
補助ブロック「PE_List_Modes_RSP」は、PE コマンド List_Energy_Saving_Modes (ページ 2253)への応答を生成します。生成される応答には、サポートされている省電力モードの数と ID が含まれています。

2276

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_List_Modes_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

PE_I_DEV_NEW

入力

BOOL

I、Q、M、D、

このパラメータは、「PE_I_DEV (ペー

L、または定数

ジ 2266)」命令の NEW 出力パラメータと相互接続されている必要があります。パラ
メータ値が「1」にセットされている場
合、補助ブロックが処理されます。

CMD

入力

INT

I、Q、M、D、

PROFIenergy コマンドの Service-Request-

L、または定数ID
このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

CMD_MODIFIER

入力

INT

I、Q、M、D、

PROFIenergy サブコマンド(CMD=3、またL、または定数は CMD=16 の場合にのみ評価)。このパラメータは、「PE_I_DEV」命令のCMD_MODIFIER 出力パラメータと相互接続されている必要があります。

Number_of_PE_ 入力

BYTE

Mode_IDs
PE_MODE_ID

入力

VARIANT

I、Q、M、D、

サポートされている省電力モードの数。

L、または定数

許可されている値:1～254

I、Q、M、D、L サポートされている省電力モードのID(PE_Mode_ID)が格納されている領域をポイントします。
有効な範囲:1～254

ACTIVATE

InOut

BOOL

I、Q、M、D、L この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒以内にセットされる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2277

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイ
プ

メモリ領域

説明

VALID

InOut

BOOL

I、Q、M、D、L このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コント
ローラの応答データが使用可能になり、転送ができるようになると、パラメータをセットします。

DATA_

InOut

VARIANTERRORRSP

D

応答データが格納されているデータ領域上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。
アドレス指定されたデータ領域は、完全なPROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR

出力

BOOL

I、Q、M、D、L • "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L • "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

PE_Get_Mode_RSP: 照会された省電力データを応答として生成説明
補助ブロック「PE_Get_Mode_RSP」は、コマンド Get_Mode (ページ 2254)への応答を生成します.応答フレームには、省電力モードの時間、パフォーマンスまたは省電力データが含
まれます。

2278

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_Get_Mode_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

PE_I_DEV_NEW

入力

BOOL

I、Q、M、D、

このパラメータは、「PE_I_DEV (ペー

L、または定数

ジ 2266)」命令の NEW 出力パラメータと相互接続されている必要があります。
パラメータ値が「1」にセットされている場合、補助ブロックが処理されます。

CMD

入力

INT

I、Q、M、D、

PROFIenergy コマンドの Service-

L、または定数

Request-ID
このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

CMD_MODIFIER

入力

INT

I、Q、M、D、

PROFIenergy サブコマンド(CMD=3、まL、または定数

たは CMD=16 の場合にのみ評価)。このパラメータは、「PE_I_DEV」命令のCMD_MODIFIER 出力パラメータと相互接続されている必要があります。

PE_Mode_ID

入力

BYTE

I、Q、M、D、

現在有効な省電力モードの ID。

L、または定数
PE_Mode_Attribut 入力

BYTE

es
Time_min_Pause

I、Q、M、D、

省電力モードに関する追加情報

L、または定数入力

DWORD

I、Q、M、D、

この PE 省電力モードの最小一時停止時

L、または定数間。
これは、以下の 3 つのパラメータの合計です。
• Time_to_Pause• Time_to_operate• Time_min_length_of_stay

Time_to_Pause

入力

DWORD

I、Q、M、D、START パラメータ(「PE_I_DEV (ペー

L、または定数

ジ 2266)」を参照)のエッジから要求された PE 省電力モードに達するまでの時間。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2279

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイ
プ

メモリ領域

Time_to_Operate

入力

DWORD

I、Q、M、D、 「PE_ready_to_operate」までの最大スイL、または定数説明

ッチオン時間。「Time_to_operate」パラ
メータは、関連する計算に直接使用することが可能です。値は静的な最大値であるか、または PE エンティティによって動的に計算されます。

Time_min_Lenght 入力

DWORD

_

I、Q、M、D、

この PE モードの PE エンティティの最小L、または定数

滞留時間。

I、Q、M、D、

この PE モードの PE エンティティの最大L、または定数

滞留時間。

I、Q、M、D、

現在の PE モードでの電力消費(単位

L、または定数kW)。

of_stay
Time_max_Lengh

入力

DWORD

t_of_stayMode_Power_

入力

DWORD

Consumption
Energy_Consum_

入力

DWORD

to_Pause
Energy_Consum_

入力

DWORD

to_operate

I、Q、M、D、 「PE_ready_to_operate」から現在の PE
L、または定数モードまでの電力消費(単位 kWh)。

I、Q、M、D、

現在の PE モードからL、または定数 「PE_ready_to_operate」までの電力消費(単位 kWh)。

ACTIVATE

InOut

BOOL

I、Q、M、D、L この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒
以内にセットされる必要があります。

VALID

InOut

BOOL

I、Q、M、D、L このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コン
トローラの応答データが使用可能になり、転送ができるようになると、パラメ
ータをセットします。

2280

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイ
プ

メモリ領域

説明

DATA_

InOut

VARIANT

D

応答データが格納されているデータ領域

ERRORRSP

上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。アドレス指定されたデータ領域は、
完全な PROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR

出力

BOOL

I、Q、M、D、L • "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L • "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、
間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

PE_PEM_Status_RSP: PEM ステータスを応答として生成説明
補助ブロック「PE_PEM_Status_RSP」は、コマンド PEM_Status (ページ 2257)への応答を生成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2281

拡張命令
4.6 PROFIenergy

パラメータ
以下の表に、「PE_PEM_Status_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

PE_I_DEV_NEW

入力

BOOL

I、Q、M、D、L、 このパラメータは、「PE_I_DEV (ペー
または定数

説明

ジ 2266)」命令の NEW 出力パラメータと相互接続されている必要があります。パラ
メータ値が「1」にセットされている場
合、補助ブロックが処理されます。

CMD

入力

INT

I、Q、M、D、L、 PROFIenergy コマンドの Service-Requestまたは定数ID
このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

PE_MODE_ID_

入力

BYTE

Source

I、Q、M、D、L、 PEM_STATUS の Source およびまたは定数

PE_MODE_ID_

入力

BYTE

Destination

Destination。

I、Q、M、D、L、 値:
または定数• 0x00: PE_POWER_OFF• 0x01 – 0xFE:メーカー固有• 0xFF: PE_READY_TO_OPERATE

Time_to_Operat 入力

DWORD

e

1

I、Q、M、D、L、 「PE_ready_to_operate」までの最大スイッまたは定数

チオン時間。
「Time_to_operate」パラメータは、関連する計算に直接使用することが可能です。
値は静的な最大値であるか、または PE エ
ンティティによって動的に計算されます。

Remaining_time 入力

DWORD

_

I、Q、M、D、L、 オプション:要求された PE モードまでの残または定数り時間。動的な値、または静的な最大値

to_destination1

Mode_Power_
Consumption

入力

DWORD

2

I、Q、M、D、L、 現在の PE モードでの電力消費(単位 kW)。
または定数

Energy_入力

Consumption_

DWORD

I、Q、M、D、L、 要求された PE モードまでの電力消費(単位
または定数

kW)。

to_Destination

2

2282

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタ
イプ

メモリ領域

Energy_入力

DWORD

I、Q、M、D、L、 現在の PE モードからConsumption_または定数

to_operate「PE_ready_to_operate」までの電力消費(単位 kWh)。

2

ACTIVATE

説明

InOut

BOOL

I、Q、M、D、L

この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒以内にセットされる必要があります。

VALID

InOut

BOOL

I、Q、M、D、L

このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コント
ローラの応答データが使用可能になり、転送ができるようになると、パラメータをセットします。

DATA_

InOut

VARIANTDERRORRSP

応答データが格納されているデータ領域上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。
アドレス指定されたデータ領域は、完全なPROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR

出力

BOOL

I、Q、M、D、L• "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L• "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、間違った範囲など。

1

時間を指定しない場合、最大値「0xFFFFFFFF」を指定します。時間が「ゼロ」の場合、「0x00」を使用します。
2

電力消費量が定義しない場合、「0.0」を指定します。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2283

拡張命令
4.6 PROFIenergy

PE_Identify_RSP: サポートされている PROFIenergy コマンドを応答として生成説明
補助ブロック「PE_Identify_RSP」は、コマンド PE_Identify (ページ 2259)への応答を生成します。コマンドへの応答に、どの PROFIenergy コマンドがサポートされているかを指定します。PE_IDENTIFY 自体が PE コマンドであり、応答内に含める必要があることにご注意
ください。

パラメータ
以下の表に、「PE_Identify_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

PE_I_DEV_NE

入力

BOOL

I、Q、M、D、L、 このパラメータは、「PE_I_DEV (ペー

W

または定数

説明

ジ 2266)」命令の NEW 出力パラメータと相互接続されている必要があります。
パラメータ値が「1」にセットされている場合、補助ブロックが処理されます。

CMD

入力

INT

I、Q、M、D、L、 PROFIenergy コマンドの Serviceまたは定数

Request-ID
このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

Start_Pause

入力

BOOL

I、Q、M、D、L、 関連する各 PROFIenergy コマンドに対し
または定数

End_Pause

入力

BOOL

Query_Modes 入力

BOOL

PEM_Status

BOOL

入力

てパラメータは 1 つずつ設けられていま

I、Q、M、D、L、 す:• 0:PE コマンドがサポートされていま
または定数
せん
I、Q、M、D、L、• 1:PE コマンドがサポートされていままたは定数
す
I、Q、M、D、L、
または定数

PE_Identify

入力

BOOL

I、Q、M、D、L、
または定数

Query_
Measurement

2284

入力

BOOL

I、Q、M、D、L、
または定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ACTIVATE

InOut

BOOL

I、Q、M、D、L

この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒
以内にセットされる必要があります。

VALID

InOut

BOOL

I、Q、M、D、L

このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コン
トローラの応答データが使用可能になり、転送ができるようになると、パラメ
ータをセットします。

DATA_

InOut

VARIANTDERRORRSP

応答データが格納されているデータ領域
上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。アドレス指定されたデータ領域は、
完全な PROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR

出力

BOOL

I、Q、M、D、L• "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L• "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、
間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2285

拡張命令
4.6 PROFIenergy

PE_Measurement_List_RSP: サポートされている測定値のリストを応答として生成説明
補助ブロック「PE_Measurement_List_RSP」は、コマンド Get_measurement_list (ページ 2260)への応答を生成します。どの測定値(Measurement-IDs)がサポートされているかを
応答内で指定します。

パラメータ
以下の表に、「PE_Measurement_List_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

PE_I_DEV_NE

入力

BOOL

I、Q、M、D、L、 このパラメータは、「PE_I_DEV (ペー

W

または定数

説明

ジ 2266)」命令の NEW 出力パラメータと相互接続されている必要があります。
パラメータ値が「1」にセットされている場合、補助ブロックが処理されます。

CMD

入力

INT

I、Q、M、D、L、 PROFIenergy コマンドの Serviceまたは定数

Request-ID
このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

CMD_MODIFI

入力

INT

ER

I、Q、M、D、L、 PROFIenergy サブコマンド(CMD=3、ままたは定数

たは CMD=16 の場合にのみ評価)。このパラメータは、「PE_I_DEV」命令のCMD_MODIFIER 出力パラメータと相互接続されている必要があります。

Count

入力

BYTE

I、Q、M、D、L、 サポートされている測定値の数(測定 ID)
または定数

Measurement 入力

VARIANTD

サポートされている Measurement_ID_

配列へのポインタ。

List

PROFIenergy プロファイルに準拠した配列の構造に関する情報については、PI コ
マンド「Query_Measurement」 「Get_Measurement_list」 (ページ 2260)
を参照してください。

2286

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ACTIVATE

InOut

BOOL

I、Q、M、D、L

この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒
以内にセットされる必要があります。

VALID

InOut

BOOL

I、Q、M、D、L

このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コン
トローラの応答データが使用可能になり、転送ができるようになると、パラメ
ータをセットします。

DATA_

InOut

VARIANTDERRORRSP

応答データが格納されているデータ領域
上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。アドレス指定されたデータ領域は、
完全な PROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR

出力

BOOL

I、Q、M、D、L• "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L• "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、
間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2287

拡張命令
4.6 PROFIenergy

PE_Measurement_Value_RSP: 照会された測定値を応答として生成説明
補助ブロック「PE_Measurement_Value_RSP」は、コマンド Get_measurement_values (ページ 2263)への応答を生成します。要求された測定値を応答で返します。

パラメータ
以下の表に、「PE_Measurement_Value_RSP」補助ブロックのパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

PE_I_DEV_NE

入力

BOOL

I、Q、M、D、L、 このパラメータは、「PE_I_DEV (ペー

W

または定数

説明

ジ 2266)」命令の NEW 出力パラメータと相互接続されている必要があります。パラ
メータ値が「1」にセットされている場
合、補助ブロックが処理されます。

CMD

入力

INT

I、Q、M、D、L、 PROFIenergy コマンドの Service-Requestまたは定数ID
このパラメータは、「PE_I_DEV (ページ 2266)」命令の CMD 出力パラメータと相互接続されている必要があります。

CMD_MODIFI

入力

INT

ER

I、Q、M、D、L、 PROFIenergy サブコマンド(CMD=3、また
または定数は CMD=16 の場合にのみ評価)。このパラメータは、「PE_I_DEV」命令のCMD_MODIFIER 出力パラメータと相互接続されている必要があります。

Count

入力

BYTE

I、Q、M、D、L、 測定値の数(Measurement_Values)
または定数

Measurement 入力_Values

VARIANTD

測定値(Measurement_IDs)の配列へのポイ
ンタ。
PROFIenergy プロファイルに準拠した配列の構造に関する情報については、PI コマン
ド「Query_Measurement」 「Get_Measurement_values」 (ページ 2263)を参照してください。

2288

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.6 PROFIenergy
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ACTIVATE

InOut

BOOL

I、Q、M、D、L

この命令は、入力パラメータを入力
ACTIVATE の立ち上がりエッジで
DATA_ERROR_RSP データ領域にコピーします。その後、パラメータはこの命令によってリセットされます。
このパラメータは、「PE_I_DEV (ページ 2266)」命令のパラメータ NEW で立ち上がりエッジが検出された後、10 秒以内にセットされる必要があります。

VALID

InOut

BOOL

I、Q、M、D、L

このパラメータは、「PE_I_DEV (ページ 2266)」命令の VALID 入力と相互接続されている必要があります。
この補助ブロックは、PROFIenergy コント
ローラの応答データが使用可能になり、転送ができるようになると、パラメータをセットします。

DATA_

InOut

VARIANTDERRORRSP

応答データが格納されているデータ領域上のポインタです。このパラメータは、「PE_I_DEV (ページ 2266)」命令のDATA_ERRORRSP のポインタと同一です。
アドレス指定されたデータ領域は、完全なPROFIenergy フレームを含んでいます。
最小長:244 バイト

ERROR

出力

BOOL

I、Q、M、D、L• "0":エラーは発生していません。
• "1":エラーが発生しました。

STATUS

出力

WORD

I、Q、M、D、L• "0":エラーは発生していません。
• 「0x80B1」:VARIANT 設定のエラー、間違った範囲など。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2289

拡張命令
4.7 モジュールパラメータ割り当て

4.7

モジュールパラメータ割り当て

4.7.1

データレコードの書き込みと読み出し原理
使用しているプログラムがデータレコードを転送することができる書き込み専用システム
データ領域を持つモジュールがあります。この領域には、0 から最大 240 の番号のデータ
レコードが含まれます。すべてのモジュールがすべてのデータレコードを含むとは限りません(次の表を参照)。
また、システムデータ領域を持つモジュールもあります。使用しているプログラムから、
システムデータ領域への読み取りアクセスのみが可能です。この領域には、0 から最大 240の番号のデータレコードが含まれます。すべてのモジュールがすべてのデータレコードを含
むとは限りません(次の表を参照)。
注記
両方のシステムデータ領域を持つモジュールもあります。これらは物理的に別の領域で、これらに共通しているのは論理構造のみです。

書き込み専用システムデータ領域
次の表に、書き込み専用システムデータ領域の構造を示します。この表は、個々のデータ
レコードの許容サイズと、どの命令を使用して書き込みを行うかも示します。
データレコード 内容
番号サイズ

書き込みに使用できる命
令0-

WR_DPARM (ペーパラメータ

ジ 2304)
1

パラメータ

-

WR_DPARM (ページ 2304)2～127

ユーザーデータ各≤ 240 バイト

WR_DPARM (ページ 2304)
WR_REC (ページ 2163)

128～240

パラメータ

各≤ 240 バイト

WR_DPARM (ページ 2304)
WR_REC (ページ 2163)

2290

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て

読み出し専用システムデータ領域
次の表に、読み出し専用システムデータ領域の構造を示します。この表は、個々のデータ
レコードの許容サイズと、どの命令を使用して読み出しを行うかも示します。
データレコ 内容
ード
番号
0

サイズ

モジュール固有の診断 4 バイト

読み出しに使用できる命令

RD_REC (ページ 2157)

データ(システム全体に標準として設定)1

チャンネル固有の診断 4～220 バイト

RD_REC (ページ 2157)

データ(データレコード 0 を
含む)
2～127

ユーザーデータ各≤ 240 バイト

RD_REC (ページ 2157)

128～240

診断データ

各≤ 240 バイト

RD_REC (ページ 2157)

システムリソース
短い間隔で次々と複数の非同期データレコード転送を開始した場合、オペレーティングシ
ステムのシステムリソースの割り当てによって、確実にすべてのジョブが実行され、相互に干渉しません。
システムリソースの制限に達した場合、これは RET_VAL で示されます。この一時的なエラーの状況は、ジョブを繰り返して解消します。
「同時に」有効な単一命令タイプのジョブの最大数は、CPU によって異なります。

4.7.2

RD_DPAR:モジュールデータレコードの読み出し

説明
この命令を使用して、設定したシステムデータからアドレス指定されたコンポーネントの
番号 INDEX を持つデータレコードを読み出します。これは、基本ラックのモジュール、または分散型コンポーネント(PROFIBUS DP または PROFINET IO)などです。
出力パラメータ VALID の値 TRUE は、データレコードがターゲット範囲 RECORD に正しく転送されたことを示します。この場合、LEN 出力パラメータには、読み出したデータレコ
ードの実際の長さがバイトで含まれます。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2291

拡張命令
4.7 モジュールパラメータ割り当て
データレコードの転送中にエラーが発生した場合、これは出力パラメータ ERROR で示されます。この場合、出力パラメータ STATUS にはエラー情報が含まれます。
注記
データレコードに関する情報
データレコード番号およびデータレコードの構造に関する情報については、関連するモジ
ュールの製品マニュアルを参照してください。

ファンクションの説明「RD_DPAR」命令は、非同期で動作します。つまり、複数の呼び出しにわたって実行されます。呼び出しデータレコードの転送は、REQ = 1 で「RD_DPAR」を呼び出して開始します。
出力パラメータ BUSY および出力パラメータ STATUS のバイト 2 と 3 は、ジョブのステー
タスを示します。STATUS のバイト 2 と 3 は、非同期で動作する命令の出力パラメータ
RET_VAL と一致します。
関連項目: 同期命令と非同期命令の相違 (ページ 29)。
データレコードの転送は、出力パラメータ BUSY が値 FALSE を持つときに完了します。

パラメータ
以下の表に、「RD_DPAR」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、 REQ = 1:読み出し要求
または定数

LADDR

Input

HW_IO

I、Q、M、D、L、 モジュール(入力モジュールなど)のアセ
または定数

ンブリのハードウェア識別子。
番号は自動的に割り当てられます。

INDEX

Input

INT

I、Q、M、D、L、 データレコード番号
または定数

RECORDInOut

VARIANT

I、Q、M、D、L

読み出されるデータレコードのターゲッ
ト範囲です。

VALID

Output

BOOL

I、Q、M、D、L

新規データレコードが受信され、これが
有効

2292

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て
パラメータ

宣言

データタイ
プ

メモリ領域

説明

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:ジョブが未完了です。

ERROR

Output

BOOL

I、Q、M、D、L

ERROR = 1:読み出しプロセス中にエラーが発生しました。

STATUS

Output

DWORD

I、Q、M、D、L• 呼び出し ID (バイト 2 および 3)またはエラーコード• バイト 1:B#16#00、エラーがない場合。それ以外の場合は、DPV1-PDU
からのファンクション ID:読み出しのデータレコードのエラーの場合にはB#16#DE、データレコード書き込みのエラーの場合には B#16#DF。
DPV1 プロトコルエレメントが使用されていない場合:B#16#C0。
• バイト 4:製造元固有のエラー ID 拡張

LEN

Output

INT

I、Q、M、D、L

読み出されたデータレコード情報の長さ

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコード 説明*

制限事項(W#16#...)
0000

エラーは発生していません。

-

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありませ ん。BUSY の値は「0」です。

7001

REQ=1 による最初の呼び出し:データ転送がトリガされまし リモート I/O
た。BUSY の値は 1 です。

7002

中間呼び出し(REQ

リモート I/Oは対象外):データ転送が既に有効です。BUSY の値は「1」です。
8092

VARIANT ポインタで無効なタイプ

-

8093

LADDR パラメータで指定されたアドレスが無効です。

-

80B0

モジュールタイプに対して命令を実行できないか、モジュー ルがデータレコードを認識していません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2293

拡張命令
4.7 モジュールパラメータ割り当て
エラーコード 説明*

制限事項(W#16#...)
80B1

-

送信される
データレコードの長さが正しくありません。

80C3

現時点では、必要なリソース(メモリなど)が占有されています。

一般エラー情 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ペー報-

ジ 384)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、デジタル入力モジュールの完全なパラメータデータレコードを読み出します。
データレコードに関する詳細情報については、データレコードのタイプの概要 (ページ 1995)を参照してください。
グローバルデータブロックに、データを保存するために 9 個のタグと構造体「record」を作成します。(構造体の構成については、以下を参照してください。)

パラメータの相互接続: 「SLI_itemiseByte_RD_DPAR」FC

ビットシーケンス(0..7)の値を転送するには、FC「SLI_itemiseByte_RD_DPAR」を作成します。
この FC で以下のローカルタグを作成します。

2294

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て

ネットワーク 1:ネットワーク 1 の例に従って、すべてのビット(0..7)の相互接続を作成します。

パラメータの相互接続: 「SLI_FB_RD_DPAR」FB「SLI_FB_RD_DPAR」FB に以下のローカルタグを作成します。

ネットワーク 1:「RD_DPAR」命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2295

拡張命令
4.7 モジュールパラメータ割り当て

ネットワーク 2:タグを変換するには、「Mode_Channel0」タグを以下のように相互接続します。この例では、「SLI_itemiseByte_RD_DPAR」FC のすべての入力と出力(0..7)が相互接続されます。

ハードウェア識別子

入力モジュールを作成し、入力モジュールのプロパティでハードウェア ID を読み出します。
入力パラメータ LADDR 「laddr」()を介してハードウェア識別子を保存します。
結果(FB「SLI_FB_RD_DPAR」)

入力パラメータ REQ 「start」()がシグナル状態「TRUE」を返すと、「RD_DPAR」命令が開始されます。入力パラメータ LADDR「laddr」()を介して、命令「RD_DPAR」がモジュールを呼2296

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て
び出します。入力パラメータ INDEX 「dataRecNbr」()を使用して、モジュールの番号「128」を持つデータレコードが呼び出されます。複数の呼び出しの間、「RD_DPAR」命令がデー
タレコードを読み出し、パラメータ RECORD 「record」()を使用してデータレコードを保存します。
読み出されたデータレコードの長さは、出力パラメータ LEN 「lengthRec」()を使用して保存されます。入力パラメータ MLEN 「maxLen」()の値(値が「0」)に従って、読み出されるデー
タレコード情報に制限はありません。
処理中に、出力パラメータ BUSY 「busy」()が「TRUE」にセットされ、VALID「checkedValid」()が「FALSE」にセットされます。成功した読み出しの結果(「checkedValid」
が「TRUE」にセット)は、処理が完了するまで出力されません。ブロックステータスが出力パラメータ STATUS 「status」()で示されます。処理がエラーなしで行われます。

データレコード 128 には、モジュールのすべてのチャンネルのパラメータ情報が含まれています。タグ「ByteOfDataRec」の値「2」は、チャンネルごとのデータの長さに関連しています。また、ステータスおよび動作モードに関する情報も提供します。
チャンネル 1 までの読み出されたデータレコードの抜粋

データレコード 128 のデータのより詳細な説明を確認するには、BYTE 値をビット列に変換します。以下に、チャンネル 0 の動作モードの例を示します。ビット 1 および 2 が「TRUE」にセットされているため、チャンネル 0 の入力遅延は 3.2 ミリ秒です。パラメー
タデータレコードの構造やチャンネルの説明については、モジュールのデバイスマニュア
ルを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2297

拡張命令
4.7 モジュールパラメータ割り当て

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
RD_DPARM:構成されたシステムデータからデータレコード読み出し (ページ 2301)

4.7.3

RD_DPARA:モジュールデータレコードの非同期読み出し

説明
この命令を使用して、設定したシステムデータから選択されたモジュールの番号 RECNUMを持つデータレコードを読み出します。読み出されたデータレコードは、パラメータ
RECORD で定義されたターゲット範囲に格納されます。
注記
データレコードに関する情報
データレコード番号およびデータレコードの構造に関する情報については、関連するモジ
ュールの製品マニュアルを参照してください。

ファンクションの説明「RD_DPARA」命令は、非同期で動作します。つまり、複数の呼び出しにわたって実行されます。REQ = 1 で命令を呼び出して、読み出しプロセスを開始します。
出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。
関連項目:同期命令と非同期命令の相違 (ページ 29)

2298

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て

パラメータ
以下の表に、「RD_DPARA」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、

REQ = 1:読み出し要求

または定数
LADDR

Input

HW_IO

I、Q、M、D、L、モジュール(入力モジュールなど)のアセ

または定数

ンブリのハードウェア識別子。
番号は自動的に割り当てられます。

RECNUM

Input

BYTE

I、Q、M、D、L、

データレコード番号

または定数
RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場
合、戻り値にエラーコードが含まれます。
転送中にエラーが発生しなかった場
合、以下のケースが区別されます。
• ターゲット範囲が読み出されたデー
タレコードよりも大きい場合、
RET_VAL には実際に読み出したデー
タレコードの長さがバイトで含まれます。
• 読み出されたデータレコードの長さがターゲット範囲の長さと等しい場
合、RET_VAL に「0」が含まれます。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:ジョブが未完了です。

RECORD

Output

VARIANT

I、Q、M、D、L

読み出されるデータレコードのターゲット範囲です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2299

拡張命令
4.7 モジュールパラメータ割り当て

パラメータ RET_VAL
エラーコード 説明*

制限事項(W#16#...)
0000

エラーは発生していません。

-

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありませ ん。BUSY の値は 0 です。

7001

REQ=1 による最初の呼び出し:データ転送がトリガされまし リモート I/O
た。BUSY の値は 1 です。

7002

リモート I/O

中間呼び出し(REQは対象外):データ転送が既に有効です。BUSY の値は「1」で
す。

8092

配列のビット列または整数以外のデータタイプが RECORD パ ラメータで指定されています。

8093

LADDR パラメータで指定されたアドレスが無効です。

-

80B0

モジュールタイプに対して命令を実行できないか、モジュー ルがデータレコードを認識していません。

80B1

-

送信される
データレコードの長さが正しくありません。RD_DPARM (ページ 2301)の場合:
RECORD によって使用されるターゲット範囲が短すぎます。

80C3

現時点では、必要なリソース(メモリなど)が占有されています。

一般エラー情 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ペー報-

ジ 384)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2300

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て

4.7.4

RD_DPARM:構成されたシステムデータからデータレコード読み出し

使用方法
注記
使用の制限
「RD_DPARM」命令は、S7-300/400 CPU から S7-1500 CPU への移行のみを目的としています。その他のすべての場合には、「RD_DPARA」命令を使用してください。

説明
この命令を使用して、設定したシステムデータからアドレス指定されたモジュールの番号
RECNUM を持つデータレコードを読み出します。読み出されたデータレコードは、RECORD
パラメータで指定されたターゲット範囲に格納されます。
注記
データレコードに関する情報
データレコード番号およびデータレコードの構造に関する情報については、関連するモジ
ュールの製品マニュアルを参照してください。

ファンクションの説明「RD_DPARM」命令は、非同期で動作します。つまり、複数の呼び出しにわたって実行されます。
ジョブステータスは、出力パラメータ RET_VAL によって示されます。
関連項目:同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2301

拡張命令
4.7 モジュールパラメータ割り当て

パラメータ
以下の表に、「RD_DPARM」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

IOID

Input

BYTE

I、Q、M、D、L、 アドレス領域識別子:
または定数

説明

• B#16#54 = 周辺機器入力(PI)• B#16#55 = 周辺機器出力(PQ)
モジュールがハイブリッドモジュールである場合、下位アドレスの領域識別子を指定する必要があります。アドレスが同一の場合は、B#16#54 を指定します。

LADDR

Input

HW_IO

I、Q、M、D、L、 モジュール(入力モジュールなど)のアセ
または定数

ンブリのハードウェア識別子。
番号は自動的に割り当てられます。

RECNUM
RET_VAL

Input
ReturnBYTE
INT

I、Q、M、D、L、 データレコード番号(許可される値:0～
または定数

240)

I、Q、M、D、L

読み出されたデータレコードがターゲッ
ト範囲内に収まり、転送でエラーが発生しなかった場合の、読み出されたデータレコードのバイト長。
命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

RECORD

Output

VARIANT

I、Q、M、D、L

読み出されるデータレコードのターゲッ
ト範囲です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2302

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て

パラメータ RET_VAL
エラーコード 説明*

制限事項(W#16#...)
0000

エラーは発生していません。

-

7001

最初の呼び出し:データ転送が開始されました

リモート I/O

7002

中間呼び出しデータ転送が既に有効です

リモート I/O

8090

指定された論理ベースアドレスが無効です。

-

8092

BYTE 以外のタイプが RECORD パラメータで VARIANT 参照で 指定されています。

8093

この命令は、LADDR で選択されたモジュールに対しては無効 です。

80B0

モジュールタイプに対して命令を実行できないか、モジュー ルがデータレコードを認識していません。

80B1

RECORD によって使用されるターゲット範囲が短すぎます。

80C3

現時点では、必要なリソース(メモリなど)が占有されていま す。

一般エラー情 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ペー報-

ジ 384)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2303

拡張命令
4.7 モジュールパラメータ割り当て

4.7.5

WR_DPARM:データレコードの転送

説明「WR_DPARM」命令を使用し、番号 RECNUM のデータレコードを構成データからアドレス指定されたモジュールに転送します。データレコードは、静的であっても動的であっても構いません。
注記
データレコードに関する情報
データレコード番号およびデータレコードの構造に関する情報については、関連するモジ
ュールの製品マニュアルを参照してください。

パラメータ
以下の表に、「WR_DPARM」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、 REQ = 1:書き込み要求
または定数

LADDR

Input

HW_IO

I、Q、M、D、L、 モジュール(入力モジュールなど)のアセ
または定数

ンブリのハードウェア識別子。
番号は自動的に割り当てられます。

RECNUM

Input

BYTE

I、Q、M、D、L、 データレコード番号
または定数

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、戻り値にエラーコードが含まれます。

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:書き込みプロセスが未完了です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2304

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.7 モジュールパラメータ割り当て

パラメータ RET_VAL
エラーコード 説明*

制限事項(W#16#...)
0000

エラーは発生していません。

-

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありませ ん。BUSY の値は 0 です。

7001

REQ=1 による最初の呼び出し:データ転送がトリガされまし リモート I/O
た。BUSY の値は 1 です。

7002

中間呼び出し(REQ

リモート I/Oは対象外):データ転送が既に有効です。BUSY の値は「1」です。
8093

LADDR パラメータで指定されたアドレスが無効です。

-

80A1

データレコードをモジュールに送信中の否定確認(モジュール に異常が発生したか、送信中に接続が解除されました)。

80A2

レイヤー 2 での DP プロトコルエラー、DP スレーブでハード リモート I/O
ウェア/インターフェースにエラーが発生した可能性がありま
す。

80A3

ユーザーインターフェース/ユーザーでの DP プロトコルエラ リモート I/O
ー。

80A9

このファンクションはサポートされていません。

-

80B0

モジュールタイプに対して命令を実行できないか、モジュー ルがデータレコードを認識していません。

80B1

送信される

-

データレコードの長さが正しくありません。
80B2構成されたスロットが-占有されていません。
80B3

実際のモジュールタイプ-

が、指定されたモジュールタイプと対応していません。
80B6

アクセスが拒否されました。

-

80C1

モジュール上の、同じデータレコードの以前の書き込みジョ ブのデータがモジュールによって処理されていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2305

拡張命令
4.7 モジュールパラメータ割り当て
エラーコード 説明*

制限事項(W#16#...)
80C3

現時点では、必要なリソース(メモリなど)が占有されていま
す。

80C4

内部の一時的なエラー。ジョブを実行できませんでした。

-

ジョブを繰り返します。このエラーが頻発する場合は、据付けを点検して電気的な干渉の発生源を探します。
80C5

リモート I/O が使用不可であるか、非アクティブ。

リモート I/O

80C6

優先度クラス中止(再起動またはバックグラウンド)のため、デ リモート I/Oータレコードの転送がキャンセルされました。

80D0

このモジュールに対するエントリがありません。

-

80D1

データレコード番号がこのモジュールに対して設定されてい ません(データレコード番号 >241 は拒否されます)。

80D2モジュールには、そのタイプ識別子のパラメータを割り当て られません。

80D5

-

データレコードが静的です。

一般エラー情 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ペー報-

ジ 384)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

2306

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

4.8

割り込み

4.8.1

ATTACH:割り込みイベントに OB を追加

説明「ATTACH」命令を使用し、オーガニゼーションブロック(OB)をハードウェア割り込みイベ
ントに割り当てます。
• OB_NR パラメータにオーガニゼーションブロックのシンボリック名または数値名を入力します。次に、これが EVENT パラメータで指定されたイベントに割り当てられます。
• EVENT パラメータでハードウェア割り込みイベントを選択します。既に生成されたハードウェア割り込みイベントは、「システム定数」の PLC タグに記載されています。
「ATTACH」命令がエラーなしで実行された後 EVENT パラメータのイベントが発生した場合
は、OB_NR パラメータのオーガニゼーションブロックが呼び出され、そのプログラムが実行されます。
ADD パラメータを使用し、オーガニゼーションブロックの他のイベントへの前の割り当て
をキャンセルするか、または保持するか指定します。ADD パラメータの値が「0」の場合、既存の割り当ては現在の割り当てで置き換えられます。

ハードウェア割り込みイベント
ハードウェア割り込みは、イベントが十分長く保留されていない場合に使用できます。ランタイム中にこれらのイベントに応答します。各ハードウェア割り込みは、ハードウェア割
り込み OB に割り当てることができます。これらの OB は、特定のイベントに対する応答を含んでいます。
ハードウェア割り込みは異なるイベントで作成できます。これの例を次に示します。
• デジタル入力の立ち上がりまたは立ち下がりエッジの検出。
• アナログ入力の定義された下限値および上限値の違反。
• 高速カウンタの方向反転、外部リセット、オーバーフロー/アンダーフローなど。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2307

拡張命令
4.8 割り込み

ファンクションの原理
各ハードウェア割り込みはハードウェア割り込み OB に割り当てることができ、ハードウ
ェア割り込み OB はハードウェア割り込みイベントの発生時に順番に処理するためにキューに置かれます。OB とイベントの割り当ては、コンフィグレーション中またはランタイム時に行うことができます。
• コンフィグレーション中にイベントを OB に割り当てるには、[ハードウェア割り込み]のハードウェアコンフィグレーションでイベントに割り当てるハードウェア割り込み OBを選択します。
• ATTACH 命令を使用してランタイム中に割り当てを行います。イベントとハードウェア
割り込み OB の割り当ては、EVENT および OB_NR パラメータを使用して行います。

パラメータ
以下の表に、「ATTACH」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

OB_NR

Input

OB_ATT

説明

I、Q、M、D、L、ま オーガニゼーションブロック(最大たは定数

32767 までの番号がサポートされま
す。)

EVENT

Input

EVENT_ATT

I、Q、M、D、L、ま OB に割り当てるハードウェア割り込
たは定数

みイベント。
ハードウェア割り込みイベントは、入力または高速カウンタのハードウェア
デバイス構成で最初に有効にする必要があります。

ADD

Input

BOOL

I、Q、M、D、L、ま 以前の割り当てに及ぼす影響
たは定数• ADD=0 (既定):このイベントは、以前に行われたこの OB のすべてのイ
ベントの割り当てと置き換えられます。
• ADD=1:このイベントは、以前に行われた当該 OB のイベントの割り当てに追加されます。

RET_VAL

Return

INT

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2308

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0

エラーは発生していません。

8090

OB が存在しません。

8091

OB のタイプが正しくありません。

8093

イベントが存在しません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、作成済みハードウェア割り込みイベントにハードウェア割り込み OB (OB40)を割り当てます。
要件:

入力モジュール(DI)を作成し、[プロパティ|入力 0-15|...|チャンネル 0]で、立ち上がりエッジに対してハードウェア割り込みイベントを設定します。

設定済みハードウェア割り込みイベントの以下のハードウェア ID は、入力パラメータEVENT 「event」()に保存されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2309

拡張命令
4.8 割り込み
データストレージ

グローバルデータブロックに、データを保存するために 9 個のタグを作成します。
「ATTACH」命令の入力パラメータ OB_NR(「obNbr」)を使用して、割り当てる OB の番号(OB40)を保存します。

ハードウェア割り込みイベントを呼び出すには、PLC タグ(アドレス「I0.0」)を含むタグテーブルを作成します。

相互接続

この命令のパラメータを以下のように相互接続します。

PLC タグを以下のように相互接続して、ハードウェア割り込みイベントを呼び出します。
ネットワーク 2:

2310

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

ネットワーク 3:

リセットするには、「testValue2」と「SLI_ATTACH_force」を以下のように相互接続します。
ネットワーク 4:

OB40 に以下の相互接続を作成します。

処理

ノーマルオープン(「start」)がシグナル状態「TRUE」を表示すると、「ATTACH」命令が実行され、イベントが OB に割り当てられます。入力パラメータ ADD 「add」()の値が「FALSE」の場合、このイベントは、以前に行われた OB40 のすべてのイベントの割り当てと置き換えられます。出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2311

拡張命令
4.8 割り込み
ネットワーク 2 のノーマルオープン(「signal」)がシグナル状態「TRUE」を表示すると、PLC
タグ「SLI_ATTACH_force」がシグナル状態「TRUE」に設定され、OB40 が実行されます。
OB40 の呼び出し中に、「testValue1」の値が「testValue2」に転送されます。
ノーマルオープン(「start」および「signal」)がシグナル状態「FALSE」を表示すると、「testValue2」および「SLI_ATTACH_force」の値がネットワーク 4 でリセットされます。

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.2

DETACH:割り込みイベントから OB を削除

説明
この命令を使用して、ランタイム中にオーガニゼーションブロックの 1 つ以上のハードウ
ェア割り込みイベントへの既存の割り当てをキャンセルします。
OB_NR パラメータにオーガニゼーションブロックのシンボリック名または数値名を入力します。EVENT パラメータで指定されたイベントへのこの割り当てがキャンセルされます。
• 個々のハードウェア割り込みイベントを EVENT パラメータで選択した場合、このハー
ドウェア割り込みイベントへの OB の割り当てはキャンセルされます。その他の現存の割り当てはすべて、アクティブなままとなります。オペランドプレースホルダのドロップダウンリストを使用して、個々のハードウェア割り込みイベントを選択できます。
• ハードウェア割り込みイベントを選択しなかった場合、この OB_NR オーガニゼーショ
ンブロックに現在割り当てられているすべてのイベントは分離されます。

2312

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータ
以下の表に、「DETACH」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

OB_NR

Input

OB_ATT

I、Q、M、D、L、ま オーガニゼーションブロック(最大たは定数

説明
32767 までの番号がサポートされま
す。)

EVENT

Input

EVENT_ATT

I、Q、M、D、L、ま ハードウェア割り込みイベント
たは定数

RET_VAL

Return

INT

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0

エラーは発生していません。

1

割り当てが存在しません(警告)8090

OB が存在しません。

8091

OB のタイプが正しくありません。

8093

イベントが存在しません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、ハードウェア割り込み OB (OB41)にハードウェア割り込みイベントを割り当て、この割り当てを解除します。
要件:

ハードウェア割り込み OB 「SLI_iOB_DETACH」という名前の(OB41)が既に作成されていること。入力モジュール(DI)を作成し、[プロパティ|入力 0-15|...|チャンネル 1]で、立ち上がりエッジに対してハードウェア割り込みイベントを設定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2313

拡張命令
4.8 割り込み

設定済みハードウェア割り込みイベント(「Rising edge 1」)の以下のハードウェア ID は、入力パラメータ EVENT 「event」()に保存されます。

データストレージ

グローバルデータブロックに、データを保存するために 10 個のタグを作成します。
「ATTACH」および「DETACH」命令の OB_NR(「obNbr」)入力パラメータ を使用して、割り当
てる OB の番号(OB41)を保存します。

ハードウェア割り込みイベントを呼び出すには、PLC タグ(アドレス「I1.0」)を含むタグテーブルを作成します。

相互接続

命令を呼び出すには、FB 「SLI_FB_DETACH」()を作成します。

2314

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
ネットワーク 1:「ATTACH」命令のパラメータを以下のように相互接続します。

ネットワーク 2:PLC タグを以下のように相互接続して、ハードウェア割り込みイベントを呼び出します。

ネットワーク 3:ハードウェア割り込みイベントの呼び出しを以下のように転送します。

ネットワーク 4:「DETACH」命令のパラメータを以下のように相互接続します。

ネットワーク 5:リセットするには、「testValue2」と「SLI_DETACH_event」を以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2315

拡張命令
4.8 割り込み

OB41 に以下の相互接続を作成します。

処理

ノーマルオープン(「startAttach」)がシグナル状態「TRUE」を表示すると、「ATTACH」命令が実行され、イベントが OB41 に割り当てられます。入力パラメータ ADD 「add」()の値が「FALSE」の場合、このイベントは、以前に行われた OB41 のすべてのイベントの割り当てと置き換えられます。出力パラメータ RET_VAL(「retValAtt」)は、処理がエラーなしで行われたことを示します。

ネットワーク 2 のノーマルオープン(「signal」)がシグナル状態「TRUE」を表示すると、ハードウェア割り込みイベント(「SLI_DETACH_event」)が「TRUE」に設定されます。OB41 が呼び出され、OB41 で「testValue1」の値が「testValue2」に転送されます。ハードウェア
割り込みイベントがシグナル状態「TRUE」を返す限り、OB41 は、コイル「scannedSignal」()によってネットワーク 3 で呼び出され、表示されます。

2316

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み「testValue1」と「testValue2」が同じ値を表示すると、命令「DETACH」が実行され、イベントが OB41 から分離されます。出力パラメータ RET_VAL(「retValDet」)は、処理がエラ
ーなしで行われたことを示します。

タグ「startAttach」がシグナル状態「FALSE」を表示すると、「testValue2」および PLC タ
グの値がネットワーク 5 でリセットされます。
追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2317

拡張命令
4.8 割り込み

4.8.3

周期割り込み4.8.3.1

SET_CINT: 周期割り込みパラメータの設定

説明
この命令を使用して、サイクリック割り込み OB のパラメータを設定します。サイクリック
割り込み OB の開始時刻は、OB およびフェーズオフセットのそれぞれの時間間隔から生成されます。
• OB の時間間隔は、OB が定期的に呼び出される間隔です。たとえば、時間間隔が 100 μsの場合、OB はプログラムの実行中に 100 μs 毎に呼び出されます。
• フェーズオフセットは、サイクリック割り込み OB の呼び出しがオフセットされる時間間隔です。フェーズオフセットを使って、優先度の低いオーガニゼーションブロックの処理を正確なタイムベースで行うことができます。
OB が存在しない、または使用する時間間隔がサポートされていない場合、RET_VAL パラ
メータで対応するエラーアラームが出力されます。
CYCLE パラメータの時間間隔が「0」の場合、OB が呼び出されないことを意味します。

ファンクションの説明
優先度が低い OB および優先度の高い OB が同じ時間間隔で呼び出される場合、優先度が低
い OB は、優先度が高い OB が実行された後のみに呼び出されます。優先度が高い OB の実
行時間の長さに応じて、優先度が低い OB の呼び出し時刻をオフセットできます。
ኲኄዙኗኇኲኘአእቍሺቑ2%✋ቖ⒉ሺ
581
7

7

7

7

7

7

7

7

2%
⎹⏗ㄵ浧

2%
⎹⏗ㄵ⇝

2318

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
優先度が低い OB のフェーズオフセットが設定され、このフェーズオフセットが優先度が高い OB の現在の実行時間よりも長い場合、ブロックは固定されたタイムベースで呼び出されます。
ኲኄዙኗኇኲኘአእⅧሰቑ2%✋ቖ⒉ሺ
581
7

7

7

7

7

7

7

2%
⎹⏗ㄵ浧
7
2%
⎹⏗ㄵ⇝
ኲኄዙኗኇኲኘአእ

パラメータ
以下の表に、「SET_CINT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

OB_NR

Input

OB_CYCLIC

I、Q、M、D、L、ま OB 番号(<32768)
たは定数

CYCLE

Input

UDINT

I、Q、M、D、L、ま 時間間隔(マイクロ秒)
たは定数

PHASE

Input

UDINT

I、Q、M、D、L、ま フェーズオフセット
たは定数

RET_VAL

Return

INT

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#....)
0

エラーは発生していません。

8090

OB が存在しない、または間違ったタイプ

8091

間違った時間間隔

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2319

拡張命令
4.8 割り込み
エラーコード* 説明(W#16#....)
8092

間違ったフェーズオフセット

80B2

OB にイベントが割り当てられていない* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。周期割り込みファンクションのプログラム例 (ページ 2322)
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.3.2

QRY_CINT: 周期割り込みパラメータの問い合わせ説明
この命令を使用して、サイクリック割り込み OB の現在のパラメータを照会することができます。サイクリック割り込み OB は、OB_NR パラメータを使用して特定されます。
照会された周期割り込みパラメータの値は、「QRY_CINT」命令が実行された時点でのもの
です。

パラメータ
以下の表に、「QRY_CINT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

OB_NR

Input

OB_CYCLIC

I、Q、M、D、L、ま OB 番号(<32768)または OB の名前

(INT)

たは定数

(OB_MyOB など)による記号アドレス

CYCLE

Output

UDINT

I、Q、M、D、L

時間間隔(マイクロ秒)

PHASE

Output

UDINT

I、Q、M、D、L

フェーズオフセット

2320

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
パラメータ

宣言

データタイプ

メモリ領域

説明

STATUS

Output

WORD

I、Q、M、D、L

周期割り込みのステータス:• ビット 0～ビット 4:STATUS パラ
メータを参照• その他のビット:常時「0」RET_VAL

Return

INT

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
ビット 値

意味

0

0

未使用(常に「0」).

10

周期割り込みが有効。

1

周期割り込みが遅延された。

0

周期割り込みが有効になっていないか、期限切れになった。

1

周期割り込みが有効。

30

未使用(常に「0」).

40指定された番号の OB が存在しない。

1

指定された番号の OB が存在する。

2

その他のビット 未使用(常に「0」).

パラメータ RET_VAL
エラーが発生した場合、RET_VAL パラメータで関連するエラーコードが表示され、STATUS
パラメータは「0」にセットされます。
エラーコード*説明(W#16#....)
0

エラーは発生していません。

8090

OB が存在しない、または間違ったタイプ

80B2

OB に結果が割り当てられていない* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2321

拡張命令
4.8 割り込み

例
例については、以下を参照してください。周期割り込みファンクションのプログラム例 (ページ 2322)
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.3.3

周期割り込みファンクションのプログラム例

概要
次の例では、サイクリック割り込み OB (OB31)のフェーズおよびサイクルタイムを読み出し、新しいサイクルタイムを設定します。
OB31 には、以下の既定値があります。

要件• 呼び出すには、OB31 を作成します。
• グローバルデータブロックに、データを保存するために 12 個のタグを作成します。

2322

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータの相互接続: 「SLI_itemiseStatus_CINT」FC
ステータス情報を評価するには、FC「SLI_itemiseStatus_CINT」を作成します。
この FC に以下のローカルタグを作成します。

すべての関連ビットの相互接続を作成します。
ネットワーク 1:

ネットワーク 2:

ネットワーク 3:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2323

拡張命令
4.8 割り込み

パラメータの相互接続: 「SLI_FB_SET_CINT」FB
命令を呼び出すには、FB 「SLI_FB_SET_CINT」()を作成します。ファンクションブロック「SLI_FB_SET_CINT」に以下のローカルタグを作成します。

ネットワーク 1:「QRY_CINT」命令のパラメータを以下のように相互接続します。

ネットワーク 2:「SET_CINT」命令のパラメータを以下のように相互接続します。

ネットワーク 3:「SLI_itemiseStatus_CINT」FC のパラメータを以下のように相互接続しま
す。

2324

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータの相互接続: OB31
OB31 に以下の相互接続を作成します。

「QRY_CINT」の結果呼び出す OB の番号(OB31)は、命令「QRY_CINT」および「SET_CINT」の入力パラメータ
OB_NR 「obNbr」()を使用して保存されます。
ノーマルオープン(「executeQry」)がシグナル状態「TRUE」を表示すると、「QRY_CINT」命
令が実行され、OB31 のデータが読み出されます。
サイクルタイムは、出力パラメータ CYCLE 「qryCycle」()に出力されます。フェーズオフセ
ットは、出力パラメータ PHASE 「qryPhase」()に出力されます。
出力パラメータ STATUS 「#statWord」()は、OB31 のステータスを表示します。出力パラメ
ータ RET_VAL 「returnValueQry」()は、処理がエラーなしで行われていることを示します。
OB31 の現在のステータス情報(「#statWord」)は、ネットワーク 3 で、FC
「SLI_itemiseStatus_CINT」によって解釈され、構造体「itemiseStatus」で出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2325

拡張命令
4.8 割り込み
タグ「#statWord」の値は構造体「itemiseStatus」にマッピングされます。

「SET_CINT」の結果
ノーマルオープン(「executeSet」)がシグナル状態「TRUE」を表示すると、「SET_CINT」命令が実行されます。命令「SET_CINT」の入力パラメータ CYCLE 「setCycle」()を使用して、新しいサイクルタイムが OB31 に転送されます。値「0」が入力パラメータ PHASE「setPhase」()にフェーズオフセットとして保存されます。
出力パラメータ RET_VAL(「returnValueSet」)は、処理がエラーなしで行われたことを示します。

命令「SET_CINT」の実行後、OB31 は、CPU の STOP まで新しい周期割り込みデータを保持します。実行後、ノーマルオープン(「executeSet」)をシグナル状態「FALSE」に再度設定できます。OB31 の既定のプロパティは、「SET_CINT」の実行の影響を受けません。

2326

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

OB31 の結果
ノーマルオープン(「executeSet」)がシグナル状態「TRUE」を表示すると、IEC タイマ「TP」
が OB31 で開始されます。IEC タイマは 2 分後に停止します。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2327

拡張命令
4.8 割り込み

4.8.4

時刻割り込み4.8.4.1

SET_TINT: 時刻割り込みの設定

説明「SET_TINT」命令を使用して、ハードウェアコンフィグレーションで設定を行わずに、ユーザープログラムから時刻割り込みオーガニゼーションブロックの開始値および時間を設定します。
• パラメータ OB_NR で、開始日付および時刻を設定したい時刻割り込み OB の番号を入力します。
• パラメータ SDT および PERIOD を使用して、時刻割り込み OB をいつ、どれくらいの頻度で呼び出すかを指定します。
– 1 回限りの呼び出し:パラメータ SDT で日付と時刻を入力します。パラメータ PERIOD
で値「0」を使用します。
– 繰り返し呼び出し:パラメータ SDT で最初の呼び出しの日付と時刻を入力します。パラメータ PERIOD を使用して、OB の後続の呼び出しが行われる時間間隔を定義します。
開始日付および開始時刻を設定するときは、以下の事項を遵守してください。
• パラメータ SDT での日付と時刻の指定は、システム時刻を参照します。
• 開始時刻での秒およびミリ秒の指定は無視され、「0」に設定されます。
• 毎月の時刻割り込み OB を指定する場合は、開始日付 1、2、... 28 日のみが可能です。
この制限により、(たとえば、1 か月の日数が 30 日の月や 2 月に)毎月の呼び出しをスキップするのを防ぎます。
月の 29 日、30 日および 31 日の代替として、パラメータ PERIOD で「月末」(W#16#2001)設定を使用できます。

2328

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み「SET_TINT」で時刻割り込みを設定した後、まだ命令「ACT_TINT」でこの時刻割り込みを有効にする必要があります。
注記
時刻割り込み OB に関する追加情報
時刻割り込み OB の使用に関するその他の特殊機能については、各 CPU のオーガニゼーシ
ョンブロックの説明を参照してください。
S7-1200 の場合:AUTOHOTSPOT
S7-1500 の場合: AUTOHOTSPOT
パラメータ SDT および PERIOD での設定は、時刻割り込み OB のプロパティでの時刻割り込
みの設定と一致しています。

パラメータ
以下の表に、「SET_TINT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

OB_NR

Input

OB_TOD

I、Q、M、D、L、 時刻割り込み OB の番号
または定数

説明

• 時刻割り込み OB には、10～17 の番号が使用可能です。
• 123 で始まる OB 番号を代替として割り当てることもできます。
OB 番号はプログラムブロックフォルダ
およびシステム定数に表示されます。

SDT

Input

DT

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

D、L、または定数 開始日付および開始時刻

2329

拡張命令
4.8 割り込み
パラメータ

宣言

データタイ
プ

メモリ領域

PERIOD

Input

WORD

I、Q、M、D、L、 開始点 SDT から以下までの実行間隔
または定数

説明

• W#16#0000 = 単一の実行• W#16#0201 = 毎分 1 回• W#16#0401 = 毎時間 1 回• W#16#1001 = 毎日 1 回• W#16#1201 = 毎週 1 回• W#16#1401 = 毎月 1 回• W#16#1801 = 毎年 1 回• W#16#2001 = 月末

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、
RET_VAL の実パラメータにエラーコードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8090

パラメータ OB_NR でエラーが発生しました(時刻割り込み OB がアドレス指定されていま
せん)。

8091

パラメータ SDT でエラーが発生しました(日付と時刻の指定が無効です)。

8092

パラメータ PERIOD での入力が正しくありません。

80A1

設定した開始時刻が過去です。このエラーコードは、PERIOD = W#16#0000 時にのみ発生します。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。時刻割り込みファンクションのプログラム例 (ページ 2339)2330

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
ACT_TINT: 時刻割り込み有効化 (ページ 2336)

4.8.4.2

SET_TINTL: 時刻割り込みの設定

説明「SET_TINTL」命令を使用して、ハードウェアコンフィグレーションで設定を行わずに、ユーザープログラムから時刻割り込みオーガニゼーションブロックの開始値および時間を設定します。
• パラメータ OB_NR で、開始日付および時刻を設定したい時刻割り込み OB の番号を入力します。
• パラメータ SDT および PERIOD を使用して、時刻割り込み OB をいつ、どれくらいの頻度で呼び出すかを指定します。
– 1 回限りの呼び出し:パラメータ SDT で日付と時刻を入力します。パラメータ PERIOD
で値「0」を使用します。
– 繰り返し呼び出し:パラメータ SDT で最初の呼び出しの日付と時刻を入力します。パラメータ PERIOD を使用して、OB の後続の呼び出しが行われる時間間隔を定義します。
• パラメータ LOCAL を使用して、パラメータ SDT で指定された時刻がローカルタイムまたはシステム時刻のいずれを参照するかを選択します。
• ACTIVATE パラメータを使用して、オーガニゼーションブロックの設定がいつ適用されるかを指定します。
– ACTIVATE = true:設定は直接適用されます。
– ACTIVATE = false:設定は、「ACT_TINT (ページ 2336)」が呼び出された後にのみ適用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2331

拡張命令
4.8 割り込み
開始日付および開始時刻を設定するときは、以下の事項を遵守してください。
• 開始時刻での秒およびミリ秒の指定は無視され、「0」に設定されます。
• 毎月の時刻割り込み OB を指定する場合は、開始日付 1、2、... 28 日のみが可能です。
この制限により、(たとえば、1 か月の日数が 30 日の月や 2 月に)毎月の呼び出しをスキップするのを防ぎます。
月の 29 日、30 日および 31 日の代替として、パラメータ PERIOD で「月末」(W#16#2001)設定を使用できます。
ローカルタイムの使用中は、以下の事項を遵守してください。
• サマータイムから標準時間への切り替え:サマータイムから標準時間への切り替え中の 2
時間以内に、開始時刻で時刻割り込みオーガニゼーションブロックを呼び出す場合、時間切り替えの 1 時間以内にも遅延割り込みを使用してください。
• 標準時間からサマータイムへの切り替え:サマータイム切り替え日について時刻としてスキップされた 1 時間を指定した場合、単一実行(PERIOD = W#16#0000)時にエラーコ
ード 16#8091 が出力されます。
注記
時刻割り込み OB に関する追加情報
時刻割り込み OB の使用に関するその他の特殊機能については、各 CPU のオーガニゼーシ
ョンブロックの説明を参照してください。
S7-1200 の場合:AUTOHOTSPOT
S7-1500 の場合: AUTOHOTSPOT
パラメータ SDT および PERIOD での設定は、時刻割り込み OB のプロパティでの時刻割り込
みの設定と一致しています。

2332

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータ
以下の表に、「SET_TINTL」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

説明

OB_NR

Input

OB_TOD

I、Q、M、D、L、

時刻割り込み OB の番号または定数• 時刻割り込み OB には、10～17 の番号が使用可能です。
• 123 で始まる OB 番号を代替として割り当てることもできます。
OB 番号はプログラムブロックフォルダおよびシステム定数に表示されます。

SDT

Input

DTL

D、L、または定数

開始日付および開始時刻

LOCAL

Input

BOOL

I、Q、M、D、L、• true:ローカル時刻を使用

または定数• false:システム時刻を使用

I、Q、M、D、L、

開始点 SDT から以下までの実行間隔

または定数• W#16#0000 = 単一の実行

PERIOD

Input

WORD

• W#16#0201 = 毎分 1 回• W#16#0401 = 毎時間 1 回• W#16#1001 = 毎日 1 回• W#16#1201 = 毎週 1 回• W#16#1401 = 毎月 1 回• W#16#1801 = 毎年 1 回• W#16#2001 = 月末
ACTIVATE

Input

BOOL

I、Q、M、D、L、
または定数• true:時刻割り込みを設定し、有効にする• false:時刻割り込みを設定し、「ACT_TINT (ページ 2336)」の呼び出し時にのみ有効にする

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、
RET_VAL の実パラメータにエラーコードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2333

拡張命令
4.8 割り込み

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8090

パラメータ OB_NR でエラーが発生しました(時刻割り込み OB がアドレス指定されていま
せん)。

8091

パラメータ SDT でエラーが発生しました(日付と時刻の指定が無効です)。

8092

パラメータ PERIOD での入力が正しくありません。

80A1

設定した開始時刻が過去です。このエラーコードは、PERIOD = W#16#0000 時にのみ発生します。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

4.8.4.3

CAN_TINT: 時刻割り込みのキャンセル

説明「CAN_TINT」命令を使用して、指定した時刻割り込みオーガニゼーションブロックの開始日
および開始時刻を削除します。これによって、時刻割り込みを無効にすると、オーガニゼーションブロックはそれ以上呼び出されません。
この時刻割り込みを再使用する場合は、開始時刻をリセットしなければなりません(命令「SET_TINTL (ページ 2331)」または「SET_TINT (ページ 2328)」)。
この後、この時刻割り込みを再び有効にする必要があります。
• ACTIVE=false パラメータで命令「SET_TINT (ページ 2328)」または「SET_TINTL (ページ 2331)」を使用して時刻割り込みをセットする場合は、「ACT_TINT (ページ 2336)」を呼び出します。
• ACTIVE=true パラメータで、命令「SET_TINTL (ページ 2331)」を使用して、時刻割り込
みを直接に再び有効にすることもできます。

2334

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータ
以下の表に、「CAN_TINT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

OB_NR

Input

OB_TOD

I、Q、M、D、L、ま その開始日付および時刻を削除する、

RET_VAL

Return

INT

説明

たは定数

時刻割り込み OB の番号。

I、Q、M、D、L

命令の実行中にエラーが発生した場
合、RET_VAL の実パラメータにエラー
コードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8090

OB_NR パラメータのエラー。

80A0

関連する時刻割り込み OB の開始日付/時刻が定義されていません。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。時刻割り込みファンクションのプログラム例 (ページ 2339)
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2335

拡張命令
4.8 割り込み

4.8.4.4

ACT_TINT: 時刻割り込み有効化

説明
命令「ACT_TINT」を使用して、ユーザープログラムから、時刻割り込みオーガニゼーシ
ョンブロックを有効にします。この命令の実行の前提条件は、時刻割り込み OB で、開始
日付および時刻がセット済みであることです。

パラメータ
以下の表に、「ACT_TINT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

OB_NR

Input

OB_TOD

I、Q、M、D、L、 時刻割り込み OB の番号
または定数

説明

• 時刻割り込み OB には、10～17 の番号が使用可能です。
• 123 で始まる OB 番号を代替として割り当てることもできます。
OB 番号はプログラムブロックフォルダ
およびシステム定数に表示されます。

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場合、
RET_VAL の実パラメータにエラーコードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8090

パラメータ OB_NR でエラーが発生しました(時刻割り込み OB がアドレス指定されていま
せん)。

80A0

関連する時刻割り込み OB に開始日付および時刻が設定されていません。

80A1

有効になった時刻が過去です。時刻割り込みを 1 回だけ実行する場合、このエラーのみが発生します。

2336

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
エラーコード* 説明(W#16#...)
一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。時刻割り込みファンクションのプログラム例 (ページ 2339)
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.4.5

QRY_TINT: 時刻割り込みのステータス問い合わせ説明
この命令を使用して、STATUS 出力パラメータで、時刻割り込みオーガニゼーションブロ
ックのステータスを表示できます。

パラメータ
以下の表に、「QRY_TINT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

OB_NR

Input

OB_TOD

I、Q、M、D、L、ま そのステータスが照会される時刻割り
たは定数

説明

込み OB の番号
OB 番号はプログラムブロックフォル
ダおよびシステム定数に表示されます。

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場
合、RET_VAL の実パラメータにエラー
コードが含まれます。

STATUS

Output

WORD

I、Q、M、D、L

時刻割り込み OB のステータス(下記を参照)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2337

拡張命令
4.8 割り込み
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。
例外:ビット 4 のステータスメッセージ「0」(この番号の OB が作成されていません)。

8090

OB_NR パラメータのエラー。考えられる原因:• パラメータ OB_NR の値が、CPU によってサポートされている OB 番号ではありません(<1 または> 32767)。
• この OB 番号は、時刻割り込み OB のアドレスを指定していません。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS
エラーが発生した場合(RET_VAL パラメータを参照)、STATUS パラメータで「0」が出力さ
れます。
ビット 値

意味

0

対象外

常時
「0」

1
2
4
6

その他

2338

0

時刻割り込みが有効になっています。

1

時刻割り込みが無効です。

0

時刻割り込みが有効になっていないか、または経過しました。

1

時刻割り込みが有効になっています。

0

OB_NR パラメータで OB 番号が指定された OB が存在しません。

1

OB_NR パラメータで OB 番号が指定された OB が存在します。

0

この時刻割り込みはシステム時刻に基づいています

1

この時刻割り込みはローカル時刻に基づいています
常時「0」TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

例
例については、以下を参照してください。時刻割り込みファンクションのプログラム例 (ページ 2339)
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.4.6

時刻割り込みファンクションのプログラム例

概要
次の例では、時刻割り込み OB (OB10)のステータスを読み出し、開始時刻および呼び出し頻度を設定します。OB10 が開始されたら、OB10 を再度無効にします。
OB10 には、以下の既定値があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2339

拡張命令
4.8 割り込み

要件
グローバルデータブロックに、データを保存するために 13 個のタグと 1 つの構造体を作成します。

パラメータの相互接続: 「SLI_itemiseStatus_TINT」FC
ステータス情報を評価するには、FC「SLI_itemiseStatus_TINT」を作成します。
この FC に以下のローカルタグを作成します。

すべての関連ビットの相互接続を作成します。
ネットワーク 1:

2340

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
ネットワーク 2:

ネットワーク 3:

ネットワーク 4:

ネットワーク 5:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2341

拡張命令
4.8 割り込み

パラメータの相互接続: 「SLI_retrievetime_TINT」FC
日付(システム時刻)を読み出し、OB10 の開始時刻を定義するには、FC「SLI_retrievetime_TINT」を作成します。この FC に以下のローカルタグを作成します。

ネットワーク 1:パラメータを以下のように相互接続します。「RD_SYS_T」はシステム時刻を読み出します。「T_ADD」を使用して、システム時刻に 5 分を加算します。

パラメータの相互接続: 「SLI_FB_SET_TINT」FB
命令を呼び出すには、FB 「SLI_FB_SET_TINT」()を作成します。ファンクションブロック「SLI_FB_SET_TINT」に以下のローカルタグを作成します。

ネットワーク 1:「QRY_TINT」命令のパラメータを以下のように相互接続します。

ネットワーク 2:FB のネットワーク 2 で FC「SLI_retrievetime_TINT」を呼び出します。

2342

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

ネットワーク 3:「SET_TINT」命令のパラメータを以下のように相互接続します。

ネットワーク 4:「ACT_TINT」命令のパラメータを以下のように相互接続します。

ネットワーク 5:「CAN_TINT」命令のパラメータを以下のように相互接続します。

ネットワーク 6:「CAN_TINT」の実行でリセットされるパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2343

拡張命令
4.8 割り込み

ネットワーク 7:「SLI_itemiseStatus_TINT」FC のパラメータを以下のように相互接続します。

パラメータの相互接続: OB10
OB10 に以下の相互接続を作成します。

「QRY_TINT」の結果
命令は、入力パラメータ OB_NR 「obNbr」()を使用して、呼び出される OB の番号(OB10)を受信します。
ネットワーク 1:

ノーマルオープン(「executeQry」)がシグナル状態「TRUE」を表示すると、「QRY_TINT」命
令が実行され、OB10 のデータが読み出されます。出力パラメータ STATUS 「#statWord」()
は、OB10 のステータスを表示します。出力パラメータ RET_VAL 「returnValueQry」()は、処理がエラーなしで行われていることを示します。

2344

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

タグ「#statWord」の値は構造体「itemiseStatus」にマッピングされます。

「SET_TINT」の結果
ネットワーク 3:ノーマルオープン(「executeSet」)がシグナル状態「TRUE」を表示すると、「SET_TINT」命令が実行されます。入力パラメータ SDT 「startDateTime」()は、定義済み開始時刻(ネットワーク 2 を参照)を OB10 に転送します。「毎分」(値「16#0201」)が呼び出し頻度として入力パラメータ PERIOD 「periodOfExecute」()に保存されます。
出力パラメータ RET_VAL(「returnValueSet」)は、処理がエラーなしで行われたことを示します。
SET_TINT の実行によってコイル(「executeAct」)が「TRUE」に設定され、命令「ACT_TINT」
がネットワーク 4 で実行されます。

「ACT_TINT」の結果
ネットワーク 4:命令「ACT_TINT」は、OB10 を有効にします。出力パラメータ
RET_VAL(「returnValueAct」)は、処理がエラーなしで行われたことを示します。シグナル状
態「TRUE」でのリセット(「executeSet」)によって、「SET_TINT」命令の実行ひいては「ACT_TINT」命令の実行も自動的に終了します。
注記
命令「SET_TINT」の実行後、OB10 は、CPU の STOP まで新しい呼び出しデータを保持します。OB10 の既定のプロパティは、命令「SET_TINT」の実行の影響を受けません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2345

拡張命令
4.8 割り込み

OB10 の結果
OB10 を呼び出すたびに、命令「ADD」が実行され、タグ「testCurrCount」が「1」だけ
インクリメントされます。OB10 は、(「periodOfExecute」の値に従って)毎分 1 回呼び出されます。

「CAN_TINT」の結果
ネットワーク 5:OB10 を設定し、有効にすると(「#statWord」の値が「16#0014」)、コンパ
レータがシグナル状態「TRUE」を表示するため、CAN_TINT を実行できます。

ノーマルオープン(「executeCan」)がシグナル状態「TRUE」を表示すると、「CAN_TINT」命
令が実行されます。この命令は OB10 を無効にし、SET_TINT で設定された OB10 の呼び出
しデータを削除します。出力パラメータ RET_VAL(「returnValueCan」)は、処理がエラーなしで行われたことを示します。

2346

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
CAN_TINT の実行によって、コイル(「#statMem」)が「TRUE」に設定され、ネットワーク 6が実行されます。

リセットの結果
ネットワーク 6:ノーマルオープン(「#statMem」)がシグナル状態「TRUE」を表示すると、
命令「MOVE」を使用してタグ「testCurrCount」が値「0」にリセットされます。シグナル状態「TRUE」でのリセット(「executeCan」)によって、命令「CAN_TINT」の実行も自動的に終了します。

ステータス情報「#statWord」の結果
FC「SLI_itemiseStatus_TINT」がネットワーク 7 で呼び出されます。タグ「#statWord」の有効ビットが評価され、プレーンテキスト名を持つ Boolean タグとして出力されます。構造体「itemiseStatus」のタグがシグナル状態「TRUE」を表示すると、そのステートメント
は正しくなっています。

追加情報
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.5

遅延割り込み4.8.5.1

時間遅延割り込みの使用

定義「SRT_DINT (ページ 2349)」命令を呼び出すと、指定された遅延時間の経過後に、オペレーティングシステムが割り込みを生成します。設定済み遅延割り込み OB が呼び出されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2347

拡張命令
4.8 割り込み

呼び出しの前提条件
オペレーティングシステムが遅延割り込みを呼び出せるようにするには、次の条件を満たしている必要があります。
• 遅延割り込み OB は、「SRT_DINT (ページ 2349)」命令で開始する必要があります。
• 設定中に遅延割り込み OB を選択解除しないでください。
• 遅延割り込み OB は、CPU に存在していることが必要です。

命令「SRT_DINT」、「CAN_DINT」および「QRY_DINT」の目的"
この命令を使って、次を行います。
• 時間遅延割り込みの起動(「SRT_DINT (ページ 2349)」)• 時間遅延割り込みのキャンセル(「CAN_DINT (ページ 2351)」)• 時間遅延割り込みのクエリ(「QRY_DINT (ページ 2352)」)

遅延割り込みに対する影響
次の表に、さまざまな状況とその遅延割り込みへの影響を示します。
条件

結果

対応

遅延割り込みが開始され 遅延割り込みが既に開始 遅延時間が上書きされます。遅延割ました(「SRT_DINT (ペー されています。

り込みが再度開始されます。

ジ 2349)」の呼び出しによる)
呼び出し時に遅延割り込 診断バッファエントリが作成され、み OB が存在しません。 CPU が動作を続行します。
スタートアップ OB で割 遅延割り込み OB の呼び出しが、り込みが開始され、CPU CPU が RUN モードになるまで遅延
が RUN に移行する前にされます。

遅延時間が経過します。
遅延時間が経過しまし前に開始された遅延割り オペレーティングシステムが時刻エ

た。

込み OB がまだ実行中で ラーを生成します(OB 80 の呼び出す。

し)。OB 80 が存在しない場合、CPUが動作を続行します。

2348

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

ウォームリスタートおよびコールドリスタートへの応答
ウォームリスタートまたはコールドリスタート中に、ユーザープログラムで命令によって行われたすべての遅延割り込み設定が消去されます。

スタートアップ OB での開始
スタートアップ OB で遅延割り込みを開始できます。遅延 OB を呼び出すには、2 つの条件を満たす必要があります。
• 遅延時間が経過していること。
• CPU が RUN モードであること。
遅延時間が経過し、CPU がまだ RUN モードでない場合、遅延割り込み OB 呼び出しは CPU
が RUN モードになるまで遅延されます。次に、遅延割り込み OB が呼び出されてから、OB
メイン[OB 1]の最初の命令が実行されます。

4.8.5.2

SRT_DINT: 遅延割り込み起動

説明「SRT_DINT」命令を使用して、パラメータ DTIME で指定した遅延時間経過後に遅延割り込
み OB を呼び出す遅延割り込みを開始します。この遅延割り込みについて遅延割り込み OB
が 1 回実行されます。
遅延割り込みがまだ実行されていない場合で、かつ命令「SRT_DINT」が再度呼び出された
場合は、既存の遅延割り込みが削除され、新しい遅延割り込みが開始されます。
注記
遅延時間
使用される遅延時間が現在使用中の CPU サイクルタイム以下である場合で、かつ SRT_DINTが周期的に呼び出される場合は、各 CPU サイクルで遅延割り込み OB が実行されます。
CPU サイクルタイムよりも大きい遅延時間を選択するようにしてください。
SIGN パラメータを使用して、遅延割り込みの開始を識別する識別子を入力できます。呼び出されたオーガニゼーションブロックの開始情報に DTIME および SIGN パラメータの値が表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2349

拡張命令
4.8 割り込み

精度「SRT_DINT」命令と遅延割り込み OB の開始の最大時間間隔は、呼び出しが割り込みイベ
ントで遅延されなければ、設定された遅延時間よりも 1 ミリ秒長くなります。

パラメータ
以下の表に、「SRT_DINT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

OB_NR

Input

OB_DELAY

I、Q、M、D、L、ま 遅延時間後に実行される OB の番号

(INT)

たは定数

TIME

I、Q、M、D、L、ま 遅延時間(1～60000 ミリ秒)

DTIME

Input

たは定数

説明

遅延割り込み OB のカウンタの使用などによって、時間をさらに長くすることができます。

SIGN

Input

WORD

I、Q、M、D、L、ま 遅延割り込み OB が呼び出されたとたは定数

きに、OB の開始イベント情報に表示される識別子。

RET_VAL

Return

INT

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生していません。

8090

無効なパラメータ OB_NR

8091

無効なパラメータ DTIME

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2350

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

例
例については、「遅延割り込みファンクションのプログラム例 (ページ 2353)」を参照してください。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.5.3

CAN_DINT: 遅延割り込みキャンセル

説明
この命令を使用して、開始された遅延割り込みをキャンセルします。よって、設定された
遅延時間後に実行される遅延割り込み OB の呼び出しもキャンセルされます。OB_NR パラ
メータで、呼び出しをキャンセルするオーガニゼーションブロックの番号を指定します。

パラメータ
以下の表に、「CAN_DINT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

OB_NR

Input

OB_DELAY

I、Q、M、D、L、ま 呼び出しをキャンセルする OB の番

(INT)

たは定数

号

INT

I、Q、M、D、L

命令のステータス

RET_VAL

Return

説明

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生していません。

8090

無効なパラメータ OB_NR

80A0

遅延割り込みが開始されていません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2351

拡張命令
4.8 割り込み

例
例については、「遅延割り込みファンクションのプログラム例 (ページ 2353)」を参照してください。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.5.4

QRY_DINT: 遅延割り込みステータスの問い合わせ

説明「QRY_DINT」命令を使用して、遅延割り込みのステータスを照会します。

パラメータ
以下の表に、「QRY_DINT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

OB_NR

Input

OB_DELAY

I、Q、M、D、L、 ステータスが照会されている OB の番号。

(INT)

または定数

INT

I、Q、M、D、L

RET_VAL

Return

説明

命令の実行中にエラーが発生した場合、
RET_VAL の実パラメータにエラーコードが含まれます。STATUS パラメータに値「0」が表示されます。

STATUS

Output

WORD

I、Q、M、D、L

遅延割り込みのステータス。次の表を参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
ビット 値

意味

0

0

対象外

1

0

オペレーティングシステムによって遅延割り込みが有効になりました。

1

遅延割り込みが無効になりました。

0

遅延割り込みが有効になっていないか、または経過しました。

2

2352

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
ビット 値

意味

1

遅延割り込みが有効になりました。

3

-

-

4

0

指定された番号の遅延割り込み OB が存在しません。

1

指定された番号の遅延割り込み OB が存在します。

その他のビット 常時「0」パラメータ RET_VAL
エラーコード*説明(W#16#...)
0000

エラーは発生しませんでした。

8090

OB_NR パラメータの誤った情報

一般エラー情報関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「遅延割り込みファンクションのプログラム例 (ページ 2353)」を参照してください。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.5.5

遅延割り込みファンクションのプログラム例

概要
次の例では、遅延割り込み OB (OB20)のステータスを読み出し、新しい遅延時間を設定し、OB20 を開始するか、無効にします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2353

拡張命令
4.8 割り込み

要件
グローバルデータブロックに、データを保存するために 10 個のタグと 1 つの構造体を作成します。

パラメータの相互接続: 「SLI_itemiseStatus_DINT」FC
ステータス情報を評価するには、FC「SLI_itemiseStatus_DINT」を作成します。
この FC に以下のローカルタグを作成します。

すべての関連ビットの相互接続を作成します。
ネットワーク 1:

ネットワーク 2:2354

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

ネットワーク 3:

パラメータの相互接続: 「SLI_FB_SRT_DINT」FB
命令を呼び出すには、FB「SLI_FB_SRT_DINT」を作成します。ファンクションブロック「SLI_FB_SRT_DINT」に以下のローカルタグを作成します。

ネットワーク 1:「QRY_DINT」命令のパラメータを以下のように相互接続します。

ネットワーク 2:「SRT_DINT」命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2355

拡張命令
4.8 割り込み

ネットワーク 3:「CAN_DINT」命令のパラメータを以下のように相互接続します。

ネットワーク 4:「CAN_DINT」の実行でリセットされるパラメータを以下のように相互接続します。

ネットワーク 5:「SLI_itemiseStatus_DINT」FC のパラメータを以下のように相互接続します。

サイクリック OB (OB1)で FB「SLI_FB_SRT_DINT」を呼び出します。

2356

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータの相互接続: OB20
OB20 に以下の相互接続を作成します。

「QRY_DINT」の結果
この命令は、入力パラメータ OB_NR 「obNbr」()を使用して、呼び出される OB の番号(OB20)を受信します。
ネットワーク 1:

ノーマルオープン(「executeQry」)がシグナル状態「TRUE」を表示すると、「QRY_DINT」命
令が実行され、OB20 のデータが読み出されます。出力パラメータ STATUS 「#statWord」()
は、OB20 のステータスを表示します。出力パラメータ RET_VAL 「returnValueQry」()は、処理がエラーなしで行われていることを示します。

タグ「#statWord」の値は構造体「itemiseStatus」にマッピングされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2357

拡張命令
4.8 割り込み「SRT_DINT」の結果
ネットワーク 2:ノーマルオープン(「executeSrt」)がシグナル状態「TRUE」を表示すると、「SRT_DINT」命令が実行されます。入力パラメータ DTIME 「delayTime」()が遅延時間(6 秒)
を OB20 に転送し、OB20 が有効になります。
注記
その遅延時間は、OB20 が有効になった時点で実行を開始します。その後、新しい CPU サ
イクルで事前に遅延時間を再度受信していない限り、OB20 が呼び出されます。
OB20 の実行で出力される選択済み識別子(値「16#0001」)は、入力パラメータ SIGN
「sign」()に保存されます。この識別子は、OB20 の開始イベント情報に表示されます。出力パラメータ RET_VAL(「returnValueSrt」)は、処理がエラーなしで行われたことを示します。
SRT_DINT の処理が成功した後で、NO 接点(「executeSrt」)がシグナル状態「FALSE」を返した場合、遅延時間は OB20 に再度転送されません。遅延時間が経過すると、OB20 が直ちに1 回実行されます。
注記
EN パラメータと組み合わせた場合に OB20 の記載されている応答が適用されるのは、現在使用中の CPU サイクルタイムが OB20 の遅延時間未満であるときだけです。

2358

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

OB20 の結果
OB20 を呼び出すたびに、命令「ADD」が実行され、タグ「testCurrCount」が「1」だけ
インクリメントされます。OB20 は、SRT_DINT で定義された遅延時間の経過後に 1 回だけ呼び出されます。呼び出された後、OB20 は再度「無効」になります。

「CAN_DINT」の結果
ネットワーク 3:OB20 を設定し、有効にする限り(「#statWord」の値が「16#0014」)、コン
パレータがシグナル状態「TRUE」を返すため、CAN_DINT を実行できます。

ノーマルオープン(「executeCan」)がシグナル状態「TRUE」を表示すると、「CAN_DINT」命
令が実行されます。この命令は OB20 を無効にし、OB20 の設定された呼び出しデータを削除します。
出力パラメータ RET_VAL 「returnValueCan」()は、処理がエラーなしで行われたことを示します。
CAN_DINT の実行によって、コイル(「#statMem」)が「TRUE」に設定され、ネットワーク 4が実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2359

拡張命令
4.8 割り込み

リセットの結果
ネットワーク 4:ノーマルオープン(「#statMem」)がシグナル状態「TRUE」を表示すると、
命令「MOVE」を使用してタグ「testCurrCount」が値「0」にリセットされます。シグナル状態「TRUE」でのリセット(「executeCan」)によって、命令「CAN_DINT」の実行も自動的に終了します。

ステータス情報「#statWord」の結果
FC「SLI_itemiseStatus_DINT」がネットワーク 7 で呼び出されます。タグ「#statWord」の有効ビットが評価され、プレーンテキスト名を持つ Boolean タグとして出力されます。構造体「itemiseStatus」のタグがシグナル状態「TRUE」を表示すると、そのステートメント
は正しくなっています。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.8.6

同期エラー

4.8.6.1

同期エラーイベントのマスク

概要
同期エラーは、プログラミングおよびアクセスエラーです。これらのエラーは、間違ったオペランド領域または番号、または不正なアドレスのあるプログラミングの結果、発生します。これらの同期エラーのマスクとは、次を意味します。
• マスクされた同期エラーは、エラー OB 呼び出しをトリガせず、プログラムされた代替の応答につながりません。
• CPU は、マスクされた発生したエラーをエラーステータスレジスタに「記録」します。
マスクは、「MSK_FLT (ページ 2367)」命令を呼び出して実行されます。

2360

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
エラーのアンマスクは、前に設定したマスクをキャンセルし、現在の優先度クラスのイベ
ントステータスレジスタで対応するビットをクリアすることを意味します。マスクは以下の場合にキャンセルされます。
• 「DMSK_FLT (ページ 2369)」命令を呼び出した場合。
• 現在の優先度クラスが完了した場合。
アンマスクされた後にエラーイベントが発生すると、オペレーティングシステムは関連エラー OB を開始します。
「READ_ERR (ページ 2370)」命令を使用して、発生したマスクされたエラーを読み出すことができます。
注記
S7-1500 では、エラーイベントのマスク処理またはマスク解除処理に関わりなく、エラー
イベントは診断バッファに入力され、CPU のグループエラー LED が点灯します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2361

拡張命令
4.8 割り込み

エラーの全般的な処理
ユーザープログラムで、プログラミングおよび I/O 領域アクセスのエラーが発生した場合、さまざまな異なる操作が可能です。
• 対応するエラーが発生したときに、オペレーティングシステムで呼び出されるエラー OB
をプログラムすることができます。
• 各優先度クラスで、個々にエラー OB 呼び出しを無効にすることができます。この場
合、優先度クラスでこのタイプのエラーが発生した場合に、CPU は STOP に移行しません。CPU は、そのエラーをエラーレジストリに入力します。ただし、このエントリからは、このエラーがいつ、どれほどの頻度で発生したかは分かりません。
⚛㦮ኅ዆ዙ

ሧሧራ

ኅ዆ዙሯኻኖኌሸቯቂሮ"ቒሧ

ኅ዆ዙ2%ቑ✋ቖ⒉ሺᇭ ኅ
዆ዙ2%ሯኴዊኍ዆ኼዐኍሸ
ቯ቉ሧቍሧ⫃⚗ᇬ&38ሯ
6723኿ዙኦ቎⒖ቭ㦎ቲቭቡሼᇭኅ዆ዙ2%ቑ✋ቖ⒉ሺቑኳዊ
አኌ⑵䚕ᇭ ኅ዆ዙሯ䤉䞮ሺ
ቂቋሰᇬ&38ቒ6723቎⒖ቭ㦎ቲቭቡሾቶᇭ

ኅ዆ዙቛቑ㉔尐ቍ㉫䷣ሯᇬ
2%቎ኴዊኍ዆ኼዐኍሸቯቡ
ሼᇭኅ዆ዙኁ኶ዐእሯኁ኶ዐእኖ
ኣዙኜኖዉንኖኜ቎岧旁ሸቯቡሼᇭ

同期エラーは、エラーフィルタと呼ばれる特定のビットパターンに割り当てられます。このエラーフィルタは、「MSK_FLT (ページ 2367)」、「DMSK_FLT (ページ 2369)」、および「READ_ERR (ページ 2370)」命令の入力および出力パラメータにあります。
同期エラーは、2 つのエラーマスクでマスク処理できるプログラミングおよびアクセスエ
ラーに分けられます。次の図に、エラーフィルタを示します。

2362

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

プログラミングエラーフィルタ
次の図に、プログラミングエラー用のエラーフィルタのビットパターンを示します。プロ
グラミングエラー用のエラーフィルタは、「PRGFLT_...」パラメータにあります(以下の「プログラミングエラー、下位ワード」または「プログラミングエラー、上位ワード」を参照)。
 ኰአእ䟹⚆

 

;

; ; ; ; ; ;

%&'⮘㙪ኅ዆ዙ
崼ቢ⒉ሺ㣑ቑ檧⩮ቑ栆ሸኅ዆ዙ㦇ሰ手ቢ㣑ቑ檧⩮ቑ栆ሸኅ዆ዙ崼ቢ♥ቭ㣑ቑ檧⩮ኅ዆ዙ㦇ሰ手ቢ㣑ቑ檧⩮ኅ዆ዙኜኁኻ䟹⚆ኅ዆ዙ
ኈኃዐኜ䟹⚆ኅ዆ዙ崼ቢ⒉ሺ㣑ቑ⇜函⚗ቲሾኅ዆ዙ
㦇ሰ手ቢ㣑ቑ⇜函⚗ቲሾኅ዆ዙ


; ኰአእ䟹⚆; ; ; ;
㦇ሰ手ቢኅ዆ዙኤዙኜኳዊአኌ
㦇ሰ手ቢኅ዆ዙኁዐኖኜዐኖኤዙኜኳዊአኌ
ኳዊአኌ䟹⚆ኅ዆ዙ'%ኳዊአኌ䟹⚆ኅ዆ዙ',ኳዊአኌ䟹⚆ኅ዆ዙ)&ኳዊአኌ䟹⚆ኅ዆ዙ)%'%ሯ崼ቢ手ቡቯ቉ሧቍሧ

)&ሯዊዙኦሸቯ቉ሧቍሧ
6)&ሯዊዙኦሸቯ቉ሧቍሧ
)%ሯዊዙኦሸቯ቉ሧቍሧ
6)%ሯዊዙኦሸቯ቉ሧቍሧ
⑰√; 栱抲ቍሺ

命令「MSK_FLT (ページ 2367)」、「DMSK_FLT (ページ 2369)」、「READ_ERR (ページ 2370)」の入力および出力パラメータの無関係のビット「x」は「0」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2363

拡張命令
4.8 割り込み

アクセスエラーマスク
次の図に、アクセスエラー用のエラーマスクのビットパターンを示します。アクセスエラー
用のエラーマスクは、パラメータ ACCFLT_..に存在します。


ₚ⇜
ዌዙኦ

 ኰአእ䟹⚆ ; ; ; ; ; ; ; ; ; ; ; ;

; ;
崼ቢ♥ቭ㣑ቑ,2ቿኌኘኖኅ዆ዙ
㦇ሰ手ቢ㣑ቑ,2ቿኌኘኖኅ዆ዙ

 ኰአእ䟹⚆ₙ⇜ዌዙኦ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

⑰√; 栱抲ቍሺ

例:次の図に、すべてのマスク処理されたエラーを備えたアクセスエラー用のエラーマス
クの下位ワードを示します。
• 「MSK_FLT (ページ 2367)」の入力パラメータとして• 「MSK_FLT (ページ 2367)」の出力パラメータとしてኮ዆ኾዙኜ⏴┪  ኰአእ䟹⚆               ኻኖኌሸቯቂኅ዆ዙ


⒉┪ኮ዆ኾዙኜ  ኰአእ䟹⚆; ; ; ; ; ; ; ; ; ; ; ;   ; ;ኻኖኌሸቯቂኅ዆ዙ

⑰√

2364

;

栱抲ቍሺ



ኻኖኌሸቯ቉ሧቍሧ

ኻኖኌሸቯ቉ሧቮ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

プログラミングエラーの下位ワード
次の表は、プログラミングエラーのエラーフィルタの下位ワードに割り当てられるエラーの一覧を示します。また、エラーの考えられる原因も示します。
エラー

イベント
考えられるエラーの原因
ID(W#16#...)BCD 変換エラー

2521

変換する値が BCD 数ではありません(たとえば、5E8)。

読み出し時の領域の長さエラ 2522

アドレス指定したオペランドが、全体として、可能なオペランー

ド範囲内にありません。
例:メモリ領域が 256 バイトの長さしかないにもかかわらず、MW 320 を読み出す必要があります。

書き込み時の領域の長さエラ 2523

アドレス指定したオペランドが、全体として、可能なオペランー

ド範囲内にありません。
例:メモリ領域が 256 バイトの長さしかないにもかかわらず、MW 320 に値を書き込む必要があります。

読み取り時の領域エラー2524

間接的なオーバーラップする範囲のアドレス指定時に、オペラ
ンドで、指定された範囲識別子が正しくありません。
例:• 正:LAR1 P#E 12.0
L W[AR1, P#0.0]• 無効:LAR1 P#12.0
L W[AR1, P#0.0] この操作中に領域エラーが報告されます。

書き込み時の領域エラー

2525

間接的なオーバーラップする範囲のアドレス指定時に、オペラ
ンドで、指定された範囲識別子が正しくありません。
例:• 正:LAR1 P#E 12.0
T W[AR1, P#0.0]• 無効:LAR1 P#12.0
T W[AR1, P#0.0] この操作中に領域エラーが報告されます。

タイマ番号エラー(S7-1500 で 2526

存在しないタイマがアクセスされます。

は実装されていません)

例:• SP T [MW 0]で MW 0 = 129 の場合、使用可能なタイマは 128
個のみですが、タイマ 129 が開始されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2365

拡張命令
4.8 割り込み
エラー

イベント
考えられるエラーの原因
ID(W#16#...)

カウンタ番号エラー(S7-1500 2527

存在しないカウンタがアクセスされます。

では実装されていません)• 例:ZV Z [MW 0]で MW 0 = 600 の場合、使用可能なカウンタ
は 512 個のみですが、カウンタ 600 がアクセスされています。

読み出し時の位置合わせエラ 2528

ビットアドレス≠ 0 で、バイト、ワード、またはダブルワード

ー

オペランドがアドレス指定されています。
例:• 正:LAR1 P#M12.0
L B[AR1, P#0.0]• 無効:LAR1 P#M12.4
L B[AR1, P#0.0]

書き込み時の位置合わせエラ 2529

ビットアドレス≠ 0 で、バイト、ワード、またはダブルワード

ー

オペランドがアドレス指定されています。
例:• 正:LAR1 P#M12.0
T B[AR1, P#0.0]• 無効:LAR1 P#M12.4
T B[AR1, P#0.0]

プログラミングエラーの上位ワード
次の表は、プログラミングエラーのエラーフィルタの上位ワードに割り当てられるエラーの一覧を示します。また、エラーの考えられる原因も示します。
エラー

イベント
考えられるエラーの原因
ID(W#16#...)

書き込みエラーデータブロッ 2530

書き込み先のデータブロックが、書き込み保護されていますク
書き込みエラーインスタンス 2531

書き込み先のインスタンスデータブロックが、書き込み保護さ

データブロック

れています。

ブロック番号エラー DB

2532

データブロックの番号が、最大許容番号を超えています。

ブロック番号エラー DI

2533

インスタンスデータブロックの番号が、最大許容番号を超えて
います。

2366

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
エラー

イベント
考えられるエラーの原因
ID(W#16#...)

ブロック番号エラー FC

2534

呼び出されたファンクション(FC)の番号が、最大許容番号を超えています。

ブロック番号エラー FB

2535

呼び出されたファンクションブロック(FB)の番号が、最大許容番号を超えています。

DB が読み込まれていない

253A

データブロックが読み込まれません。

命令が読み込まれていない

253C～

呼び出す命令が読み込まれません。

253F

アクセスエラー
次の表に、アクセスエラー用のエラーマスクに割り当てられているエラーを示します。また、エラーの考えられる原因も示します。
エラー

イベント ID 考えられるエラーの原因(W#16#...)

I/O アクセスエラー

2942

読み出し時
I/O アクセスエラー

2943

書き込み時

4.8.6.2• I/O 領域のアドレスに、信号モジュールが割り当てられていません。
• 指定されたモジュールモニタ時間内に、この I/O エリアへのアクセスが確認されませんでした(タイムアウト)。

MSK_FLT: 同期エラーイベントのマスク

説明
この命令を使用して、CPU の同期エラーへの応答を制御します。これは、それぞれの同期
エラーをマスキングすることで行います(エラーフィルタについては、同期エラーイベン
トのマスク (ページ 2360)を参照)。「MSK_FLT」を呼び出すと、現在の優先度クラスで同期
エラーをマスクします。
入力パラメータで同期エラーフィルタの個々のビットを「1」にセットすると、以前に設定された他のビットは値「1」を保持します。出力パラメータを使用して、読み出す新規のエラーフィルタを取得します。マスクした同期エラーは OB を呼び出さず、単にエラーレ
ジスタに入力されます。命令「READ_ERR (ページ 2370)」を使用してイベントステータス
レジスタを読み出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2367

拡張命令
4.8 割り込み

パラメータ
以下の表に、「MSK_FLT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

PRGFLT_SET_MASK

Input

DWORD

I、Q、M、D、L、ま マスクするプログラミングエ
たは定数

ACCFLT_SET_MASK

Input

DWORD

説明
ラー

I、Q、M、D、L、ま マスクするアクセスエラー
たは定数

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

PRGFLT_MASKED

Output

DWORD

I、Q、M、D、L

マスクされたプログラミング
エラー

ACCFLT_MASKED

Output

DWORD

I、Q、M、D、L

マスクされたアクセスエラー

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

まだどのエラーもマスクされていません。

0001

1 つ以上のエラーがマスクされています。しかし、他のエラーはこれからマスクされます。

-

一般エラー情報関連項目:GetErrorID でローカルでエラー ID を取得 (ページ 1533)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「同期エラーイベントのプログラム例 (ページ 2371)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

2368

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

4.8.6.3

DMSK_FLT: 非同期エラーイベントのマスク解除

説明
この命令を使用して、「MSK_FLT (ページ 2367)」でマスクされたエラーをアンマスクします。これを行うには、入力パラメータでエラーフィルタの対応するビットを「1」にセットする必要があります。「DMSK_FLT」呼び出しを使って、現在の優先度クラスの対応する
同期エラーをアンマスクします。同時に、エラーレジスタで照会されたエントリが消去されます。出力パラメータを使用して、新規のエラーフィルタを読み出します。

パラメータ
以下の表に、「DMSK_FLT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

PRGFLT_RESET_

Input

DWORD

I、Q、M、D、L、ま アンマスクするプログラミングエ

MASK
ACCFLT_RESET_

たは定数
Input

DWORD

MASK

説明
ラー

I、Q、M、D、L、ま アンマスクするアクセスエラー
たは定数

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

PRGFLT_MASKE

Output

DWORD

I、Q、M、D、L

マスクされた状態のプログラミン

D
ACCFLT_MASKE

グエラー
Output

DWORD

D

I、Q、M、D、L

マスクされた状態のアクセスエラー

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード*(W#16#...)

説明

0000

すべての指定されたエラーがアンマスクされました。

0001

1 つ以上のエラーがマスクされていません。しかし、他のエラーはこれからアンマスク
されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2369

拡張命令
4.8 割り込み
エラーコード*(W#16#...)

説明-

一般エラー情報関連項目:GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「同期エラーイベントのプログラム例 (ページ 2371)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.8.6.4

READ_ERR: イベントステータスレジスタ読み出し

説明
この命令を使用して、エラーレジスタを読み出します。エラーレジスタの構造は、プログ
ラミングおよびアクセスエラーマスクの構造に対応し、「MSK_FLT (ページ 2367)」および「DMSK_FLT (ページ 2369)」で入力パラメータとしてプログラムすることができます。
入力パラメータに、エラーレジスタから読み出す同期エラーを入力します。「READ_ERR」
を呼び出すと、必要なエントリをエラーレジスタから読み出し、同時にこれらのエントリを消去します。
エラーレジスタには、現在の優先度クラスでどのマスクされた同期エラーが 1 回以上発生したかを示す情報が含まれます。ビットが設定されると、対応するマスクされた同期エラーが 1 回以上発生したことを意味します。

パラメータ
以下の表に、「READ_ERR」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

PRGFLT_QUERY

Input

DWORD

I、Q、M、D、L、ま プログラミングエラーの照会
たは定数

ACCFLT_QUERY

Input

DWORD

I、Q、M、D、L、ま アクセスエラーの照会
たは定数

2370

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
パラメータ

宣言

データタイプ

メモリ領域

説明

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

PRGFLT_CLR

Output

DWORD

I、Q、M、D、L

発生したプログラミングエラー

ACCFLT_CLR

Output

DWORD

I、Q、M、D、L

発生したアクセスエラー

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード*説明(W#16#...)
0000

すべての照会されたエラーがマスクされています。

0001

1 つ以上の照会されたエラーがマスクされていません。

-

一般エラー情報関連項目:GetErrorID でローカルでエラー ID を取得 (ページ 1533)* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「同期エラーイベントのプログラム例 (ページ 2371)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.8.6.5

同期エラーイベントのプログラム例

概要
以下の例では、命令「MSK_FLT」を使用して同期エラーイベント(プログラムエラー)をマ
スクし、命令「DMSK_FLT」を使用して同期エラーイベントの一部をアンマスクし、命令「READ_ERR」を使用してイベントステータスレジスタを読み出します。プログラムエラー
がアンマスクされるときに、プログラムエラー OB を呼び出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2371

拡張命令
4.8 割り込み

データの保存グローバルデータブロックにデータを保存するために以下の構造体とタグを作成します。
• MSK_FLT のタグ• MSK_FLT /構造体「progErrMask_Details」の内容

構造体の完全な構成については、「同期エラーイベントのマスク (ページ 2360)」を参照
してください。
• MSK_FLT /構造体「accessErrMask_Details」の内容• DMSK_FLT のタグ

2372

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み• READ_ERR のタグ

構造体「occProgErrMask_Details」および「occAccErrMask_Details」の構成は、構造体「progErrMask_Details」および「accessErrMask_Details」の構成と似ています。
• テスト結果のタグ

パラメータの相互接続: 「SLI_FB_genErr_SyncErrEv」FB
プログラムエラーを生成するために、「SLI_FB_genErr_SyncErrEv」FB を作成します。
この FC に以下のローカルタグを作成します。

この FB に以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2373

拡張命令
4.8 割り込み

パラメータの相互接続: 「SLI_itemiseDW_SyncErrEv」FC
DWORD のサイズでビットシーケンスを転送するには、FC「SLI_itemiseDW_SyncErrEv」を作成します。
この FC に以下のローカルタグ(1～31 の入出力)を作成します。
• 入力の抜粋• 出力の抜粋

ネットワーク 1 の例に基づいて、FC に入出力の以下の相互接続を作成します。
ネットワーク 1:

パラメータの相互接続: 「SLI_mask_SyncErrEv」FC
プログラムエラーおよびアクセスエラーに対して設定されるマスクを変換するには、FC「SLI_mask_SyncErrEv」を作成します。

2374

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
この FC で以下のローカルタグを作成します。

ネットワーク 1:

以下の例に従って「SLI_itemiseDW_SyncErrEv」FC のパラメータを相互接続します。

プログラムエラーの構造体(「progErrMask_Details」)の完全な構成については、「同期エラーイベントのマスク (ページ 2360)」を参照してください。
ネットワーク 2:

アクセスエラーの DWORD のビット 2 を以下のように相互接続します。

ネットワーク 3:

アクセスエラーの DWORD のビット 3 を以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2375

拡張命令
4.8 割り込み

パラメータの相互接続: 「SLI_occured_SyncErrEv」FC
読み出されたプログラムエラーおよびアクセスエラーを変換するには、FC「SLI_occured_SyncErrEv」を作成します。
この FC で以下のローカルタグを作成します。

ネットワーク 1:

以下の例に従って「SLI_itemiseDW_SyncErrEv」FC のパラメータを相互接続します。

プログラムエラーの構造体(「occProgErrMask_Details」)の完全な構成については、「同期エラーイベントのマスク (ページ 2360)」を参照してください。

2376

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
ネットワーク 2:

アクセスエラーの DWORD のビット 2 を以下のように相互接続します。

ネットワーク 3:

アクセスエラーの DWORD のビット 3 を以下のように相互接続します。

パラメータの相互接続: 「SLI_peOB_SyncErrEV」OB
アンマスク状態でプログラムエラーが発生した場合の OB「SLI_peOB_SyncErrEV」を作成します。
ネットワーク 1:

この OB に以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2377

拡張命令
4.8 割り込み

パラメータの相互接続: 「SLI_FC_MSK_FLT」FC
プログラム部分を呼び出すには、FC「SLI_FC_MSK_FLT」を作成します。
ネットワーク 1:

FC「SLI_mask_SyncErrEv」のパラメータに加えてタグ「peOB_unmased_active」、「MSK_FLT.execute」および「maskedProgErrs」を以下のように相互接続します。

ネットワーク 2:「MSK_FLT」命令のパラメータを以下のように相互接続します。

2378

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

ネットワーク 3:「DMSK_FLT」命令のパラメータを以下のように相互接続します。

ネットワーク 4:「SLI_FB_genErr_SyncErrEv」FC のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2379

拡張命令
4.8 割り込み

ネットワーク 5:「READ_ERR」命令のパラメータを以下のように相互接続します。

ネットワーク 6:「SLI_occured_SyncErrEv」FC のパラメータを以下のように相互接続します。

2380

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

OB「SLI_peOB_SyncErrEv」の結果
プログラムエラーがトリガされたが、フィルタによってマスクされないときに、プログラ
ムエラー OB「SLI_peOB_SyncErrEv」が実行されます。
その後、OB のネットワーク 1 で、タグ「READ_ERR.peOB_unmasked_active」が「TRUE」に設定されます。

FC「SLI_FC_MSK_FLT」の結果
ネットワーク 1 (FC「SLI_mask_SyncErrEv」):

FC「SLI_mask_SyncErrEv」を呼び出すことによって、プログラムエラーおよびアクセスエ
ラーの構造体がデータタイプ DWORD「progErrSetMask」および「accessErrSetMask」()に変換されます。
プログラムエラー OB の呼び出し後もタグ「READ_ERR.peOB_unmasked_active」の値
TRUE が表示されたままになるため、値をリセットします。命令「MSK_FLT」が正常に実行されない場合(「MSK_FLT.execute」の値が「FALSE」の場合)、タグ「maskedProgErrs」はリセットされます。
ネットワーク 2 「MSK_FLT」()

ノーマルオープン(「MSK_FLT.execute」)がシグナル状態「TRUE」を表示すると、「MSK_FLT」
命令が実行されます。
制御する必要がある同期エラーイベントは、タグ「progErrMask_Details」および「accessErrMask_Details」に従って指定されます。
• 「progErrMask_Details」を使用してマスクするプログラムエラーを指定します。
• この例では、アクセスエラー(「accessErrMask_Details」)はマスクされていません。
制御する必要がある同期エラーイベントは、入力パラメータ PRGFLT_SET_MASK「MSK_FLT.progErrSetMask」()および ACCFLT_SET_MASK 「MSK_FLT.accessErrSetMask」()を使用して、データタイプ DWORD で保存されます。
出力パラメータ RET_VAL 「MSK_FLT.returnValue」()は、まだどのエラーもマスクされていないことを示します。現在マスクされている同期エラーイベントは、出力パラメータ「PRGFLT_MASKED」(「maskedProgErrs」)および ACCFLT_MASKED 「maskedAccessErrs」()に表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2381

拡張命令
4.8 割り込み

ネットワーク 3 「DMSK_FLT」()

ノーマルオープン(「DMSK_FLT.execute」)がシグナル状態「TRUE」を表示すると、「DMSK_FLT」命令が実行されます。アンマスクする必要がある同期エラーイベントは、入力パラメータ PRGFLT_RESET_MASK 「DMSK_FLT.progErrResetMask」()および
ACCFLT_RESET_MASK 「DMSK_FLT.accessErrResetMask」()を使用して、データタイプ
DWORD で保存されます。
出力パラメータ RET_VAL 「DMSK_FLT.returnValue」()は、指定されたすべてのエラーがアンマスクされたことを示します。

現在マスクされている同期エラーイベントは、出力パラメータ「PRGFLT_MASKED」「maskedProgErrs」()および ACCFLT_MASKED 「maskedAccessErrs」()に表示されます。

ネットワーク 4 (FB「SLI_FB_genErr_SyncErrEv」)

タグ「testErrorEvent.index」が「10」よりも大きい値を返すと、プログラムエラーがトリガされます。
ネットワーク 5 「READ_ERR」()

「READ_ERR」命令は、イベントステータスレジスタを読み出します。読み出す同期エラー
イベントは、入力パラメータ PRGFLT_QUERY 「READ_ERR.progErrSetMask」
(
)および

2382

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
ACCFLT_QUERY「READ_ERR.accessErrSetMask」()を使用して、データタイプ DWORD で保存されます。
• ケース 1 - プログラムエラーがトリガされなかった場合。マスクが設定されていない場合。
出力パラメータ RET_VAL 「READ_ERR.returnValue」()は、1 つ以上の照会されたエラーがマスクされていないことを示します。
現在発生しているエラーイベントは、出力パラメータ「PRGFLT_CLR」「READ_ERR.occuredMskProgErrs」()および ACCFLT_CLR「READ_ERR.occuredMskAccessErrs」()に表示されます。

• ケース 2 - プログラムエラーがトリガされたが、マスクされない場合。
MSK_FLT、DMSK_FLT が無効です。プログラムエラー OB が実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2383

拡張命令
4.8 割り込み• ケース 3 - トリガされたプログラムエラーがマスクされる場合。
MSK_FLT が有効です。DMSK_FLT およびプログラムエラー OB が無効です。

構造体「occProgErrMask_Details」に従って以下のプログラムエラーが発生しました。

• ケース 4 - トリガされたプログラムエラーがアンマスクされる場合。
MSK_FLT、DMSK_FLT およびプログラムエラー OB が有効です。

ネットワーク 6 (FC「SLI_occured_SyncErrEv」)

FC「SLI_occured_SyncErrEv」を呼び出すことによって、読み出されたプログラムエラー「occuredMskProgErrs」()およびアクセスエラー(「occuredMskAccessErrs」)が構造体「occProgErrMask_Details」および「occAccErrMask_Details」に変換されます。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

2384

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

下記も参照
MSK_FLT: 同期エラーイベントのマスク (ページ 2367)
DMSK_FLT: 非同期エラーイベントのマスク解除 (ページ 2369)
READ_ERR: イベントステータスレジスタ読み出し (ページ 2370)

4.8.7

非同期エラーイベント

4.8.7.1

DIS_IRT: 割り込みイベント無効化

説明「DIS_IRT」命令を使用して、新しい割り込み、および非同期エラーイベントの処理を無効にします。無効にするとは、割り込みイベントが発生した場合に、CPU のオペレーティン
グシステムが次のように応答することを意味します。
• 割り込み OB および非同期エラー OB のいずれも呼び出しません。
• また、割り込み OB または非同期エラー OB がプログラミングされていない場合、通常の応答をトリガしません。
割り込みおよび非同期エラーイベントを無効にすると、これはすべての優先度クラスに対して有効のままになります。無効は、命令「EN_IRT (ページ 2387)」またはウォーム/コー
ルドリスタートのみでキャンセルします。
注記「DIS_IRT」命令をプログラミングする場合、発生するすべての割り込みが破棄されることを覚えておいてください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2385

拡張命令
4.8 割り込み

パラメータ
以下の表に、「DIS_IRT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

MODE

Input

BYTE

I、Q、M、D、L、ま どの割り込みおよび非同期エラーが
たは定数

OB_NR

Input

INT

説明
無効になるかを指定します。

I、Q、M、D、L、ま DB 番号
たは定数

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した場
合、戻り値にエラーコードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ MODE
MODE
(B#16#...)

意味00

すべての新規に発生する割り込みおよび非同期エラーイベントが無効になります(プログラミ
ングエラーと、I/O データおよびモーションコントロール OB への直接アクセス時のエラーを除く)。OB_NR パラメータに値「0」を割り当てます。診断バッファへの入力は継続します。

01

指定した割り込みクラスに属するすべての新規に発生するイベントは無効になります。次のように指定して、割り込みクラスを識別します。
• 時刻割り込み:10• 遅延割り込み:20• 周期割り込み:30• プロセス割り込み:40• DPV1 に関する割り込み:50• 同期サイクル割り込み:60• 冗長化エラー割り込み:70• 非同期エラー割り込み:80
診断バッファへの入力は継続します。

02

指定された割り込みのすべての新たな発生は無効になります。DB 番号を使って割り込みを指定します。診断バッファへの入力は継続します。

2386

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータ RET_VAL
エラーコー
ド*

説明

(W#16#...)
0000

エラーは発生しませんでした。

8090

OB_NR 入力パラメータに無効な値が含まれています。

8091

MODE 入力パラメータに無効な値が含まれています。

一般エラー

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

情報* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「DIS_IRT & EN_IRT のプログラム例 (ページ 2389)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.8.7.2

EN_IRT: 割り込みイベント有効化

説明
この命令を使用して、新規割り込みと、前に「DIS_IRT (ページ 2385)」命令で無効にした
非同期エラーイベントの処理を有効にします。これは、割り込みイベントが発生した場合に、CPU オペレーティングシステムが次のいずれかの方法で応答することを意味します。
• 割り込み OB または非同期エラー OB を呼び出します。
または• 割り込み OB または非同期エラー OB がプログラミングされていない場合は、指定された応答をトリガします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2387

拡張命令
4.8 割り込み

パラメータ
以下の表に、「EN_IRT」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

MODE

Input

BYTE

I、Q、M、D、L、ま どの割り込みおよび非同期エラー
たは定数

説明
イベントを有効にするかを指定し
ます。

OB_NR

Input

INT

I、Q、M、D、L、ま DB 番号
たは定数

RET_VAL

Return

INT

I、Q、M、D、L

命令の実行中にエラーが発生した
場合、戻り値にエラーコードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ MODE
MODE

意味

0

すべての新規に発生する割り込みおよび非同期エラーイベントが有効になります(プログラミン
グエラーと、I/O データおよびモーションコントロール OB への直接アクセス時のエラーを除く)。

1

指定した割り込みクラスに属するすべての新規に発生するイベントが有効になります。次のように指定して、割り込みクラスを識別します。
• 時刻割り込み:10• 遅延割り込み:20• 周期割り込み:30• プロセス割り込み:40• DPV1 に関する割り込み:50• 同期サイクル割り込み:60• 冗長化エラー割り込み:70• 非同期エラー割り込み:80

2

指定した割り込みのすべての新規に発生するイベントが有効になります。DB 番号を使って割り込みを指定します。

2388

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8090

OB_NR 入力パラメータに無効な値が含まれています。

8091

MODE 入力パラメータに無効な値が含まれています。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「DIS_IRT & EN_IRT のプログラム例 (ページ 2389)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.8.7.3

DIS_IRT & EN_IRT のプログラム例

概要
次の例では、「DIS_IRT」命令を利用してサイクリック割り込み OB (OB33)の処理を無効にし、命令「EN_IRT」を使用して OB33 を再度有効にします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2389

拡張命令
4.8 割り込み

データの保存グローバルデータブロックにデータを保存するために以下の構造体とタグを作成します。

「SLI_ciOB_AsyncEvent」OB「SLI_ciOB_AsyncEvent」OB を作成し、無効化/有効化中にその動作をモニタします。
ネットワーク 1:次に、この OB で命令「TP」を呼び出し、以下の相互接続を作成します。

ネットワーク 2:タグ「testOB.execute」を以下のようにリセットします。

2390

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み「SLI_FC_AsyncEvent」FCプログラム部分を呼び出すには、FC「SLI_FC_AsyncEvent」を作成します。
この FC に以下のローカルタグを作成します。

ネットワーク 1:「DIS_IRT」命令のパラメータを以下のように相互接続します。

ネットワーク 2:タグ「DIS_IRT.execute」を以下のようにリセットします。

ネットワーク 3:「EN_IRT」命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2391

拡張命令
4.8 割り込み

ネットワーク 4:タグ「EN_IRT.execute」を以下のようにリセットします。

OB「SLI_ciOB_AsyncEvent」の結果
ノーマルオープン(「testOB.execute」)がシグナル状態「TRUE」を 1 回表示する場合、「TP」
命令が実行されます。タグ「testOB.execute」がシグナル状態「FALSE」に自動的にリセットされます。「testTime」タグの値は、「testTimeLimit」タグの値と一致するまでインクリメントされます。

2392

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

FC「SLI_FC_AsyncEvent」の結果
ネットワーク 1:

ノーマルオープン(「DIS_IRT.execute」)がシグナル状態「TRUE」を表示する場合、「DIS_IRT」
命令が実行されます。入力パラメータ MODE 「DIS_IRT.mode」()に従って、使用される動作
モード「2」が指定されます。入力パラメータ OB_NR 「DIS_IRT.obNbr」()に従って、OB33
がアドレス指定され、その処理が無効になります。
出力パラメータ RET_VAL 「DIS_IRT.returnValue」()は、この例の処理がエラーなしで行われていることを示します。「DIS_IRT」の処理をタグ「DIS_IRT.done」に保存します。また、「EN_IRT.done」タグをリセットします。
「testOB.testTime」タグの値がインクリメントされなくなります。それにもかかわらず、「TP」命令の IEC タイマはバックグラウンドでカウントを続行します。

ネットワーク 2:

ノーマルオープン(「#tempDIS」)がシグナル状態「TRUE」を表示する場合、「DIS_IRT.execute」タグがリセットされます。
ネットワーク 3:

ノーマルオープン(「EN_IRT.execute」)がシグナル状態「TRUE」を表示する場合、「EN_IRT」
命令が実行されます。入力パラメータ MODE 「EN_IRT.mode」()に従って、使用される動作
モード「2」が指定されます。入力パラメータ OB_NR 「EN_IRT.obNbr」()に従って、OB33
がアドレス指定され、その処理が再度有効になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2393

拡張命令
4.8 割り込み
出力パラメータ RET_VAL 「EN_IRT.returnValue」()は、この例の処理がエラーなしで行われていることを示します。「EN_IRT」の処理をタグ「EN_IRT.done」に保存します。また、「DIS_IRT.done」タグをリセットします。
「testOB.testTime」タグの値は、「TP」命令の IEC タイマに従って、引き続きインクリメン
トされるか、変更されます。

ネットワーク 4:

ノーマルオープン(「#tempEN」)がシグナル状態「TRUE」を表示する場合、「EN_IRT.execute」タグがリセットされます。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
DIS_IRT: 割り込みイベント無効化 (ページ 2385)
EN_IRT: 割り込みイベント有効化 (ページ 2387)

2394

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

4.8.7.4

DIS_AIRT: 高優先度割り込みと非同期エラーイベント実行の遅延

説明「DIS_AIRT」を使用して、現在のオーガニゼーションブロックよりも優先度が高い割り込み
OB の処理を遅延します。
オーガニゼーションブロックで「DIS_AIRT」を複数回呼び出すことができます。
「DIS_AIRT」呼び出しは、オペレーティングシステムでカウントされます。「DIS_AIRT」が実行されるたびに、処理がさらに遅延されます。遅延をキャンセルするには、「EN_AIRT(ページ 2396)」命令を実行する必要があります。処理遅延は、「EN_AIRT (ページ 2396)」の実行数が「DIS_AIRT」の呼び出しの数と一致するまで、あるいは現在の OB が完全に処理されるまで適用されます。
「DIS_AIRT」命令の RET_VAL パラメータで遅延数を照会します。RET_VAL パラメータの値が「0」の場合、遅延はありません。

パラメータ
以下の表に、「DIS_AIRT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

RET_VAL

Return

INT

I、Q、M、D、L

遅延回数

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
戻り値

説明

n

「n」は、処理遅延の数、すなわち、命令が完了した後の DIS_AIRT 呼び出しの数を示します。
n = 0 の場合、割り込み処理が最初に再度有効になります。「EN_AIRT (ページ 2396)」を参照
してください。

例
例については、「DIS_AIRT & EN_AIRT のプログラム例 (ページ 2397)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2395

拡張命令
4.8 割り込み
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.8.7.5

EN_AIRT: 高優先度割り込みと非同期エラーイベント実行の有効化

説明「EN_AIRT」を使用して、「DIS_AIRT (ページ 2395)」命令で遅延された割り込みが発生した
場合にオーガニゼーションブロックの処理を有効にします。
「EN_AIRT」を実行した場合、「DIS_AIRT (ページ 2395)」が呼び出されたときにオペレーティングシステムによって登録された処理遅延がキャンセルされます。すべての遅延をキャンセルするには、「EN_AIRT」の実行数が「DIS_AIRT (ページ 2395)」呼び出しの数と等しくなることが必要です。例:「DIS_AIRT (ページ 2395)」を 5 回呼び出しました。その結果、処理も 5 回遅延されます。その後、5 回すべての遅延をキャンセルするには、「EN_AIRT」
命令を 5 回呼び出す必要があります。
「EN_AIRT」命令の EN_AIRT パラメータで、「RET_VAL」の実行後にまだ有効になっていな
い割り込み遅延の数を照会します。RET_VAL パラメータの値「0」は、「DIS_AIRT (ページ 2395)」で有効になったすべての遅延がキャンセルされたことを意味します。

パラメータ
以下の表に、「EN_AIRT」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

RET_VAL

Return

INT

I、Q、M、D、L構成された遅延の回数

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2396

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータ RET_VAL
戻り値/

説明

エラーコード*(W#16#...)n「n」は、命令が完了した後にまだ有効になっていない処理遅延の数を示します。n = 0 の場
合、割り込み処理が最初に再度有効になります。

8080

割り込み処理が既に有効になっていたにもかかわらず、ファンクションが再び呼び出されました。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「DIS_AIRT & EN_AIRT のプログラム例 (ページ 2397)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.8.7.6

DIS_AIRT & EN_AIRT のプログラム例

概要
次の例では、命令「DIS_AIRT」および「EN_AIRT」を利用して、サイクリック割り込み OBの処理またはより高い優先度を持つ割り込み OB の処理を遅延させます。テストプログラ
ムは、これらの命令を呼び出したときに割り込みによって中断されません。
テストプログラムを使用して、時刻および診断データをデータメモリに保存します。
• これを行うには、サイクリック割り込み OB で、命令「TIME_TCK」を使用して CPU タ
イムを読み出し、命令「GET_DIAG」を使用して診断データを読み出します。
• サイクリック OB (OB1)で、命令「RD_SYS_T」を使用して CPU クロックのシステム時刻も読み出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2397

拡張命令
4.8 割り込み

データの保存
データメモリに対して PLC データタイプ「testAIRT」を作成します。

2398

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
グローバルデータブロックにデータを保存するために以下の構造体とタグを作成します。
• DIS_AIRT、EN_AIRT、および時刻の記録用

• 診断用
注記
ハードウェア識別子(「laddr」)の検索[PLC タグ|システム定数]を使用して、ハードウェア識別子を検出します。S7-1500 CPUの場合:「HW_Submodule」データタイプのエントリ「Local~Common」を検索します。関連するセル「値」にハードウェア識別子が含まれます。

• データメモリ用

パラメータの相互接続:FC「SLI_FC_itemise_IOState_AIRT」「GET_DIAG」命令の診断データをさらに評価するには、FC「SLI_FC_itemise_IOState_AIRT」を作成します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2399

拡張命令
4.8 割り込み
この FC に以下のローカルタグを作成します。

ネットワーク 1:以下の相互接続を作成します。

2400

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

パラメータの相互接続:「SLI_ciOB_diagProg_AIRT」OB
サイクリック割り込み OB「SLI_ciOB_diagProg_AIRT」を作成し、遅延中その動作をモニタします。
この OB に以下のローカルタグを作成します。

ネットワーク 1:次に、この OB で命令「GET_DIAG」を呼び出し、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2401

拡張命令
4.8 割り込み

ネットワーク 2:CPU タイムを以下のように記録し、以下の条件に従って「pos」タグをインクリメントします。

2402

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

ネットワーク 3:タグ「startOB_ci」を以下のようにリセットします。

パラメータの相互接続:FC「SLI_FC_saveDiag_AIRT」
システム時刻を読み出し、時刻と診断データを結合するには、FC「SLI_FC_saveDiag_AIRT」を作成します。
この FC に以下のローカルタグを作成します。

ネットワーク 1:以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2403

拡張命令
4.8 割り込み

ネットワーク 2:タグ「startOB1」を以下のようにリセットします。

パラメータの相互接続:FC「SLI_FC_delayAIRT」
テストプログラムを呼び出すには、FC「SLI_FC_delayAIRT」を作成します。
ネットワーク 1:「DIS_AIRT」命令のパラメータを以下のように相互接続します。

ネットワーク 2:FC「SLI_FC_saveDiag_AIRT」を以下のように相互接続します。

2404

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み

ネットワーク 3:「EN_AIRT」命令のパラメータを以下のように相互接続します。

テストシナリオを開始するための手順
テストプログラムを開始するには、次の手順を実行します。
注記
サイクリック割り込み OB 「SLI_ciOB_diagProg_AIRT」()の処理を遅延させない場合は、手順
1 および 2 をスキップします。
1. タグ「delay.executeDel」を「TRUE」に設定します。
2. タグ「delay.executeEn」を「TRUE」に設定します。
3. タグ「startOB1」を「TRUE」に設定します。その後、タグ「startOB_ci」が自動的に設定されます。
「startOB1」タグおよび「startOB_ci」タグは、データメモリへの入力後に自動的にリセットされます。

DIS_AIRT および EN_AIRT の処理を停止するための手順
サイクリック割り込み OB 「SLI_ciOB_diagProg_AIRT」()の遅延された処理を停止するには、次の手順を実行します。
1. タグ「delay.executeEn」を「FALSE」に設定します。
2. タグ「delay.executeDel」を「FALSE」に設定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2405

拡張命令
4.8 割り込み

OB「SLI_ciOB_diagProg_AIRT」の結果
100 ms ごとに呼び出される周期割り込み OB(「SLI_ciOB_diagProg_AIRT」)は、「GET_DIAG」命令および CPU 時間の出力を使用して診断データを読み出します。
ノーマルオープン(「startOB_ci」)がシグナル状態「TRUE」を表示し、「pos」タグが「3」よりも大きい値を返す場合、「pos」タグがインクリメントされます。「pos」タグが値「3」を返す場合、「startOB_ci」タグがリセットされます。

サイクリック割り込み OB 「SLI_ciOB_diagProg_AIRT」()の実行が遅延されない場合、データメモリの値は以下のように表示されます。

FC「SLI_FC_delayAIRT」の結果
ネットワーク 1:

ノーマルオープン(「delay.executeDel」)がシグナル状態「TRUE」を表示する場合、「DIS_AIRT」命令が実行されます。サイクリック割り込み OB「SLI_ciOB_diagProg_AIRT」
(
)の

2406

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.8 割り込み
処理またはより高い優先度を持つ割り込み OB の処理が遅延されます。出力パラメータ
RET_VAL 「delay.nbrOfDelays」()は、呼び出し OB (OB1)で遅延が有効であることを示します。
ネットワーク 2:

ノーマルオープン(「startOB1」)がシグナル状態「TRUE」を表示する場合、FC「SLI_FC_saveDiag_AIRT」のテストプログラムが実行されます。
FC「SLI_FC_saveDiag_AIRT」で命令「RD_SYS_T」を使用してシステム時刻が読み出され、データメモリ「dataStorage」に保存されます。使用されるデータメモリのセルは、「pos」タグによって決定されます。
CPU タイム(「outCPUtimer」)もデータメモリに保存されます。「diag.itemiseIOState.Error」
タグのシグナル状態が「TRUE」である場合、データメモリで「errorHW」タグが「TRUE」に設定されます。
次のステップで以下が決定されます。
• 「pos」の値が「0」である場合:「startOB_ci」タグの値が「TRUE」に設定されます。つまり、サイクリック割り込み OB 「SLI_ciOB_diagProg_AIRT」()で「pos」タグをインクリメントできます。
• 「pos」の値が「3」である場合:タグ「startOB1」および「pos」がリセットされます。
サイクリック割り込み OB 「SLI_ciOB_diagProg_AIRT」()の実行が遅延された場合、データメ
モリの値は以下のように表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2407

拡張命令
4.8 割り込み
ネットワーク 3:

ノーマルオープン(「delay.executeEn」)がシグナル状態「TRUE」を表示する場合、「EN_AIRT」命令が実行されます。サイクリック割り込み OB「SLI_ciOB_diagProg_AIRT」()の処理またはより高い優先度を持つ割り込み OB の処理が再度有効になります。出力パラメ
ータ RET_VAL「delay.nbrOfDelays」()は、呼び出し OB (OB1)で遅延が無効であることを示します。この例の処理はエラーなしで行われます。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
DIS_AIRT: 高優先度割り込みと非同期エラーイベント実行の遅延 (ページ 2395)
EN_AIRT: 高優先度割り込みと非同期エラーイベント実行の有効化 (ページ 2396)

2408

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

4.9

アラーム

4.9.1

Program_Alarm:関連値を含むプログラムアラームを生成説明
命令「関連値を含むプログラムアラームを生成」は信号をモニタし、パラメータ SIG での信号切り替え時にプログラムアラームを生成します(定義については、「AUTOHOTSPOT」も参照)。信号が 0 から 1 に切り替わると着信プログラムアラームが生成され、信号が 1 から
0 に切り替わると発信プログラムアラームが生成されます。プログラムアラームはプログ
ラム実行と同期的にトリガされます。
プログラムアラームにはパラメータ SD_i で最大 10 の関連値を追加できます(0 ≤ i ≤10)。
SIG パラメータでの信号切り替わり時に関連値が検出され、プログラムアラームに割り当てられます。関連値の設定に関する詳細情報は、以下のセクションを参照してください。
AUTOHOTSPOT、AUTOHOTSPOT
各着信および発信アラームには、タイムスタンプが割り当てられます。
• 信号の切り替えが発生した際の PLC の現在のシステム時刻が既定値として使用されます(TIMESTAMP パラメータの既定値)。
• 他のタイムスタンプを指定する場合は、パラメータ TIMESTAMP で作成可能です。
時間値は必ずシステム時刻(つまり UTC)で指定する必要があります。これは、システム
時刻がプラント全体の時刻同期に使用されるためです。
• アラームのタイムスタンプをローカルタイムにするには、ローカルタイムをシステム時刻に変換する変換モジュールをシステムに接続する必要があります。これ以外に、タイムスタンプをアラームディスプレイ内に正しく表示させる方法はありません。
CPU の現在のシステム時刻を使用するには、TIMESTAMP パラメータを既定値(LDT#1970-01-01-00:00:00.0)にセットします。

プログラムメッセージの関連値の合計サイズ
S7-1500 CPU のアラームプロシージャでは、最大 512 バイトの命令「Program_Alarm」の関連値(SD パラメータ)を使用できます。
内部情報の場合、ProDiag はこの関連値全体の一部を必要とします。これは、特定のテキストフィールド内の 3 つの使用可能な関連値が、最大で 400 バイト使用できることを意味します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2409

拡張命令
4.9 アラーム
コンパイル中、この数値に関する警告は V14 よりも古い TIA Portal でしか表示されません。
TIA Portal V14 SP1 以降では、より厳格なチェックが行われます。この数値を超過すると、コンパイル中にエラーが出力され、ランタイム時にエラーシナリオが排除されます。今後、
このチェックは命令「Program_Alarm」の呼び出し時に SD パラメータの実サイズではな
く、SD パラメータの使用可能な最大サイズを参照します。これは、これらのパラメータが多くのバイト数を必要とするため、転送する文字列タグに対して宣言する長さをユーザーが事前に決定する必要があることを意味しています。

「関連値を含むプログラムアラームを生成」命令の呼び出し
この命令は、ファンクションブロック(FB)でのみ呼び出します。ブロックは、同期的に処理されます。ブロックが終了すると、アラームが直ちにトリガされます。処理中にエラーがあった場合、エラーコードが出力されます。
FB 内にこの命令が挿入されると、データタイプ「Program_Alarm」のマルチインスタンス
がブロックインターフェースの「Static」セクション内に作成されます。表示されるダイアログで、このマルチインスタンスの任意の名前を選択します。これは、プログラムアラ
ームの名前でもあります。
最後に、要件に一致する命令のパラメータを追加します(「パラメータ」の表を参照)。

プログラムアラームの設定「Static」セクション、または FB のネットワーク内でプログラムアラームの名前を選択す
ると、プログラムアラーム設定が[プロパティ]ウィンドウに表示されます。アラームクラ
スや優先度などを選択し、アラームテキストを編集します。
ここで行われた設定は、プロジェクトツリー内で編集できます。これを行うには、[PLC 監視およびアラーム]で[アラーム]タブを開きます。このタブで、[プログラムアラーム]タブを開きます。[アラームタイプ]テーブルに、既存のすべてのプログラムアラームが表示され
ます。

2410

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

パラメータ
以下の表に、「関連値を含むプログラムアラームを生成」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

SIG

BOOL

I、Q、M、D、モニタされる信号。

L、T、C、また• 信号立ち上がりエッ
ジ:着信プログラムア
ラームが生成されま
す。

Input

は定数

• 信号立ち下がりエッ
ジ:発信プログラムア
ラームが生成されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2411

拡張命令
4.9 アラーム
パラメータ 宣言

データタイプ

メモリ領域

TIMESTAMP Input

LDT

M、D、L、また このパラメータを使用
は定数

説明
し、たとえば配布されたタイムスタンプが付けられた入力信号からのタイ
ムスタンプをアラームに割り当てます。時間値は必ずシステム時刻(つまりUTC)で指定する必要があります。これは、システ
ム時刻がプラント全体の時刻同期に使用されるためです。
• 「割り当てなし」は、信号の切り替わりが発生すると CPU のシス
テム時刻が割り込みタ
イムスタンプとして使用されることを意味します(既定)。
• 信号の切り替わりが発生した際の割り込みタ
イムスタンプとして、

2412

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
パラメータ 宣言

データタイプ

メモリ領域

説明
任意のシステム時刻を使用できます。
注記:割り込みのタイムス
タンプをローカルタイムにするには、ローカルタ
イムをシステム時刻に変換する変換モジュールをシステムに接続する必要があります。これ以外に、タイムスタンプを割り込みディスプレイ内に正しく表示させる方法はありません。
注記:アラームへの確認応
答時には、常に PLC シス
テム時間がタイムスタン
プとして使用されます。

SD_i

Input

VARIANT

I、Q、M、D、L i 番目の関連する値(1 ≤ i≤ 10)
2 進数、整数、浮動小数
点数、または文字列を関連値として使用できます。

Error

Output

BOOL

I、Q、M、D、L STATUS パラメータ Error
Error = TRUE は、処理中にエラーが発生したことを示します。可能性のあるエラー原因が Status パ
ラメータに表示されます。

Status

Output

WORD

I、Q、M、D、L STATUS パラメータ
Status
エラー情報の表示(「Error
および Status パラメー
タ」を参照)。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2413

拡張命令
4.9 アラーム

Error および Status パラメータ
次の表には、Error および Status パラメータで出力される固有のエラー情報がすべて含まれています。
Error

Status* 説明

0

0000

エラーなし、またはパラメータ SIG に信号のエッジがないため、命令が処理されませんでした。

1

0085

「情報のみ」アラームタイプ

1

8001

無効な静的アラーム情報

1

8002

有効な静的アラーム情報なし

1

8004

アラームの関連値が、最大サイズ 512 バイトに達しました。

1

8005

SIG パラメータで信号立ち上がりエッジが保留中であり、まだ確認済
みでない保留中のアラームが存在します。

1

8007

先行する着信アラームが存在しなかった発信アラーム。

1

8087

静的アラームが無効です。

1

8089

アラームが長すぎます。

1

80Ax

SD_i パラメータの値が無効です。

1

80C1

初期化ルーチンが実行中のため、CPU が現在アラームを生成しません(RUN でのダウンロード後の場合など)。後で再度実行してみてくだ
さい。

1

80C2

時間単位当たりの最大数のアラームが送信されました。後で再度実行
してみてください。

1

80C3

動的アラームインスタンスがすべて使用中です。後で再度実行してみてください。

1

80C4

アラームが出力されており、上書きできません。後で再度実行してみてください。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、信号切り替えの関連値と共にプログラムアラームを生成します。
モニタする信号値を保存するために、グローバルデータブロックに 1 つのタグを作成しま
す。

2414

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

この命令はファンクションブロックで呼び出されます。命令を相互接続するファンクショ
ンブロックに 4 つのパラメータを作成します。

この命令のパラメータを以下のように相互接続します。

OB でファンクションブロックを呼び出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2415

拡張命令
4.9 アラーム

命令が作成されると、PLC アラームが自動的に生成されます。[PLC 監視およびアラーム]ダ
イアログを開き、[アラーム|プログラムアラーム]タブで、編集するアラームを選択します。
アラームの[プロパティ|基本設定]で、2 つのキーワードを含む、アラームテキストを作成します。
注記:テキストボックスを右クリックすると、キーワード、タグ、またはテキストリストを挿入できます。
文字列「@1%s@」の結果として、パラメータ SD_1(「#MyStaticText」)の値が読み出され、文字列として出力されます。
関連項目:• AUTOHOTSPOT• AUTOHOTSPOT• アラームテキストのキーワード

パラメータ SIG(
「CreateAlarm」)がシグナル状態「TRUE」を持つ場合、PLC アラームが出力されます。出力パラメータ STATUS(「OUTPUT_Status」)で、値「0001」は、信号の切り替えが行われたことを示します。また、それ以外の処理が行われていないことを示します(値は「0000」)。パラメータ SD_1(「#MyStaticText」)で、PLC アラームの関連値が出力されます。
タイムスタンプをパラメータ TIMESTAMP に転送できます。相互接続されない場合、パラメータ TIMESTAMP は CPU クロックのローカル時刻を出力します。出力パラメータ ERROR「OUTPUT_Error」()で、命令の処理がエラーなしで行われたことが示されます。

2416

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

PLC アラームを出力するには、たとえば、CPU の Web サーバーを使用します。Web サー
バーを使用するには、以下が必要です。
• Web サーバーは CPU の設定で有効にする必要があります。
インターネットブラウザを使用して(CPU の IP アドレスを介して) Web サーバーを開き、
Web サーバーメニューにログオンします。CPU は信号がモニタされている限りアラーム
テキストを出力し(「CreateAlarm」)、値「TRUE」を表示します。

プログラムコード

追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

例
詳細なアプリケーション例については、Siemens Industry Online Support (https://
support.industry.siemens.com/cs/document/98210758?dti=0&lc=en-WW)を参照してくだ
さい。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2417

拡張命令
4.9 アラーム

4.9.2

Get_AlarmState:アラームステータスの出力

説明「アラームステータスの出力」命令を使用して、プログラムアラームのアラームステータ
スを出力します。
以下の 3 つのアラームステータスの可能性があります。
• 着信
• 発信
• 確認応答あり
アラームステータスの出力は、常に「関連値を含むプログラムアラームを生成」命令を使用して作成されたプログラムアラームを参照します。
プログラムアラームは、Alarm 入力パラメータを使用して選択されます。「関連値を含むプログラムアラームを生成」命令のインスタンス DB をパラメータ Alarm で指定します。

アラームステータスは、AlarmState 出力パラメータによってバイトで返されます。次の図に、個々のビットの意味を示します。

2418

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム$6B67$7(B,1)2

9

7

7

2*

2&

$*

$&

6
















ቿ዆ዙኽኖኣዙኜኖ
6 䧏≰6 䤉≰ቿ዆ዙኽኖኣዙኜኖ
$& 䧏≰ቿ዆ዙኽት䭉崜$* 䤉≰ቿ዆ዙኽት䭉崜≰⚆ቑኇዙክዙኲዊዙ
2& 䧏≰ቿ዆ዙኽ቎ቫቮኇዙክዙኲዊዙ
2* 䤉≰ቿ዆ዙኽ቎ቫቮኇዙክዙኲዊዙ
℗⌨ቿ዆ዙኽ㍔⫀ቑኖኣዙኜኖ
9 ቿ዆ዙኽ㍔⫀ሯ䎰╈
9 ቿ዆ዙኽ㍔⫀ሯ㦘╈

命令の実行ステータスは、出力パラメータ Error および STATUS で示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2419

拡張命令
4.9 アラーム

パラメータ
以下の表に、「アラームステータスの出力」命令のパラメータをリストします。

2420

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

パラメータ 宣言

データタイプ

メモリ領域

説明

Alarm

ALARM_BASE

D「関連値を含むプログラム

Input

アラームを生成」命令のインスタンス• Alarm.Messagetype =Alarm_AP、ビット Acのシグナル状態が 0 ま
たは 1 であり、ビット
Ag のシグナル状態が1 です– 非アクティ
ブ:0x86 (10000110)– アクティブ/確認応
答なし:0x85 (10000101)– アクティブ/確認済
み:0x87 (10000111)– 発信/確認応答な
し:0x84 (10000100)• Alarm.Messagetype =Notify_AP、ビット Acと Ag のシグナル状態
が両方とも 1 です。
– 非アクティ
ブ:0x86 (10000110)– アクティブ:0x87(1000 0111)• Alarm.Messagetype =Inforeport_AP、ビット Ac と Ag のシグナ
ル状態が両方とも 1 です– 非アクティ
ブ:0x86 (10000110)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2421

拡張命令
4.9 アラーム
パラメータ 宣言

データタイプ

メモリ領域

説明– (一時的に)アクティ
ブ:0x87 (10000111)
アラームが非アクティブである場合、ビット S は
常にシグナル状態 0 です。

AlarmState

Output

BYTE

I、Q、M、D、L ビット配列としてのアラームのステータス

Error

Output

BOOL

I、Q、M、D、L STATUS パラメータ• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラ
メータで出力されます。

STATUS

Output

WORD

I、Q、M、D、L STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ス
テータスを表示するには、STATUS を空きデー
タ領域にコピーする必要があります。

有効なデータタイプに関する追加情報については、「関連項目」を参照してください。

パラメータ STATUS
エラーコ 説明ード*(W#16#..
.)

2422

8001

無効な静的アラームインスタンス

8002

アラームの ID が無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
エラーコ 説明ード*(W#16#..
.)
8003

アラームクラス内に有効なアラームがありません。
• Alarm_AP:アラームが発信中または確認済みです。
• Notify_AP:アラームが発信中です。
• Inforeport
ビット V は、シグナル状態 0 に設定されます。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、プログラムアラームのアラームステータスを出力します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

「Get_AlarmState」命令は、「Program_Alarm」命令と共にファンクションブロックで呼び出されます。命令を相互接続するファンクションブロックに 4 つのパラメータを作成します。

この命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2423

拡張命令
4.9 アラーム

OB でファンクションブロックを呼び出します。
「Program_Alarm」命令が作成されると、PLC アラームが自動的に生成されます。[PLC 監視およびアラーム]ダイアログを開き、[アラーム|プログラムアラーム]タブで、編集するア
ラームを選択します。2 つのキーワードを含む、アラームテキストを作成します。
アラームの以下の設定を選択します。

「Program_Alarm」命令の入力パラメータ SIG(「CreateAlarm」)がシグナル状態「TRUE」を持つ場合、PLC アラームが出力されます。
「Get_AlarmState」命令の場合は、以下が発生します。PLC アラームは、入力パラメータ
ALARM を使用して「Get_AlarmState」命令に通知されます。出力パラメータ AlarmState

2424

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム「AS_statusBYTE」()で、アラームクラス「No Acknowledgement」に対応するアラームが有効であることが示されます。
出力パラメータ ERROR(「outputERROR」)および STATUS(「outputSTATUS」)で、命令の処理がエラーなしで実行されていることを示します。

PLC アラームの出力には、CPU の Web サーバーを使用します。
追加情報および前述の例のプログラムコードについては、「Sample Library for Instructions(ページ 25)」を参照してください。

例
詳細なアプリケーション例については、Siemens Industry Online Support (https://
support.industry.siemens.com/cs/document/98210758?dti=0&lc=en-WW)を参照してくだ
さい。

下記も参照
Program_Alarm:関連値を含むプログラムアラームを生成 (ページ 2409)

4.9.3

Gen_UsrMsg:ユーザー診断アラームの生成

説明「Gen_UsrMsg」命令を使用して、診断バッファに入力するアラームを生成します。
Mode パラメータを使用して、着信アラームまたは発信アラームのいずれを生成するかを選択します。
• Mode = 1 の場合:着信アラームを作成します。
• Mode = 2 の場合:発信アラームを作成します。
• 着信アラームまたは発信アラームのいずれが生成されるかに関係なく、アラームは常に属性「情報のみ」を持ちます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2425

拡張命令
4.9 アラーム
診断バッファのエントリは同期的に作成されます。アラーム送信は非同期的に行われます。
命令の実行中にエラーが発生した場合、このエラーはパラメータ RET_VAL によって出力されます。

アラームの内容
アラームの内容は、テキストリストで定義されます。
• TextListID パラメータで、使用するテキストリストを指定します。そのためには、プロジェクトナビゲーションでダイアログ[PLC アラームテキストリスト]を開きます。ダイ
アログ[テキストリスト]で列[ID]を表示します。TextListID パラメータで ID を適用します。
• TextID パラメータを使用して、診断バッファに書き込みたいテキストリストエントリを選択します。そのためには、TextID パラメータで列[範囲開始/範囲終了]から番号を適用することによって、[テキストリストエントリ]ダイアログからエントリを選択します。
テキストリストエントリについて[範囲開始]列と[範囲終了]列の両方で同じ番号を使用する必要があります。
• テキストリストに関する追加情報については、以下を参照してください。
AUTOHOTSPOT

関連値の定義アラームに追加する新しい関連値は、テキストリストエントリで定義します。
• 関連値を定義するには、テキストリストエントリに次の情報を追加します。
@<関連値の番号><エレメントタイプ><形式の指定>@• システムデータタイプ AssocValues を使用して、アラームの生成時にどの関連値を追加するかを指定します。
• 関連付けされた値の構造に関する追加情報については、以下を参照してください。
AUTOHOTSPOT

2426

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

パラメータ
以下の表に、「Gen_UsrMsg」命令のパラメータを示します。
パラメータ 宣言

データタイプ

メモリ領域

説明

Mode

UInt

I、Q、M、D、

アラームのステータスをL、または定数

選択するためのパラメー

Input

タ:
• 1:着信アラーム• 2:発信アラーム
TextID

Input

UInt

I、Q、M、D、

アラームテキストに使用

L、または定数するテキストリストエン
トリの ID。

TextListID

Input

UInt

I、Q、M、D、

テキストリストエントリ

L、または定数を含むテキストリストのID。

Ret_ValReturnAssocValue InOut

Int

I、Q、M、D、L 命令のエラーコード。

AssocValues

D、Ls

関連値の定義を可能にするシステムデータタイプ
AssocValues へのポイン
タ。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ AssocValues
システムデータタイプ AssocValues を使用して、どの関連値が送信されるかを定義します。
最大 8 つの関連値が可能です。システムデータタイプの構造体を作成するには、データブ
ロックとしてデータタイプ「AssocValues」を入力します。
関連値を選択するには、Value[x]パラメータに対して関連値の番号を入力します。以下のことに注意してください。
• TextID および TextListID の値は、命令によって、送信される関連値として扱われます。
その結果、「1」および「2」は、関連値をアドレス指定するための番号として既に割り当てられています。番号「1」または「2」を関連値をアドレス指定するために使用しないでください。
• 関連値をパラメータ Value [1]で番号「3」として、パラメータ Value [2]で番号「4」としてなどアドレス指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2427

拡張命令
4.9 アラーム

バイト

パラメータ

データタイプ 開始値

説明

0..1

Value[1]UINT

アラームの最 3

0

関連値の番
号

初の関連値。
2..3

Value[2]UINT

0

アラームの 2 4
番目の関連
値。

4..5

Value[3]

UINT

0

...

5

6..7

Value[4]

UINT

0

...

6

8..9

Value[5]

UINT

0

...

7

10..11

Value[6]

UINT

0

...

8

12..13

Value[7]

UINT

0

...

9

14..15

Value[8]UINT0

アラームの 8 10
番目の関連
値。

パラメータ RET_VAL
次の表には、RET_VAL パラメータで出力される固有のエラー情報がすべて含まれています。
エラーコ 説明ード*(W#16#..
.)
0000

エラーは発生していません。

8080

Mode パラメータの値がサポートされていません。

80C1

多すぎる並列呼び出しによるリソースのボトルネック。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、診断バッファに入力されるアラームを生成します。
グローバルデータブロックにデータを保存するために、5 つのタグと 1 つの「AssocValues」構造体(AssocValues データタイプ)を作成します。

2428

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

この命令のパラメータを以下のように相互接続します。

「テキストリスト」エントリを使用して、アラームのテキストリストおよびテキストリス
トエントリを作成します。パラメータ TextListID(「myLIST」)でテキストリストの ID を適用します。パラメータ TextID(「myTEXT」)でテキストリストエントリの ID(範囲...)を適用します。アラームパラメータを次のように割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2429

拡張命令
4.9 アラーム
ノーマルオープン(「execute」)がシグナル状態「TRUE」を表示する場合、「Gen_UsrMsg」
命令が実行されます。パラメータ Mode(「myMODE」)の値に従って、着信アラームを生成します。出力するアラームは、パラメータ TextListID(「myLIST」)および TextID(「myTEXT」)を使用して命令に伝えられます。アラームの関連値は、パラメータ
AssocValues(「AssocValues」)を使用して転送されます。
アラームが生成されると、アラームテキストに含まれる文字列「@5I%6d@」が次のように解釈されます。
• 番号「5」の関連値は、INT データタイプで読み出されます。番号は、「AssocValues」
構造体のパラメータ Value[3]に対応します。
• 関連値は 10 進数として出力されます。10 進数は 6 桁までに制限されています。
出力パラメータ Ret_Val 「returnValue」()で、命令の処理がエラーなしで行われたことが示されます。

S7-1500 シリーズの CPU の場合は、アラームの出力にはエントリ[オンライン&診断|診断
バッファ]を開きます。

2430

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

例
詳細なアプリケーション例については、Siemens Industry Online Support (https://
support.industry.siemens.com/cs/document/98210758?dti=0&lc=en-WW)を参照してくだ
さい。

4.9.4

Get_Alarm:保留中のアラームを読み出し

説明「保留中のアラームを読み出し」命令を使用して、ユーザープログラムで生成されたアラームにログオンし、着信/発信アラームを参照データブロックにコピーすることができます。これにより、たとえば、アラームを STRING としてマスタコンピュータに渡すことができます。
「OperateMode = 1」で命令を呼び出し、これにログオンするときは、入力「DispClassNr」
で少なくとも 1 つ以上の表示クラスを指定する必要があります。ログオン後、着信、発信を問わず、アラームがそれ以上失われなくなります。
ログオンが成功すると、以下の出力パラメータによってシグナル送信されます。
DataReady = 0; Busy = 0; Error = 0; Init = 1; Status = 16#0000。
ログオンが正常に実行されていない場合、出力パラメータは以下のようになります。
DataReady = 0; Busy = 0; Error = 1; Init = 0; Status = 16#8xxx (エラーによって異なる)。
「OperateMode = 2」の場合、アラームが最も古いものから順に処理されます。アラームが読み出され、CPU 内の選択したターゲット領域に格納されます。その後、「TSEND_C」命令を使用するなどして、データをマスタコンピュータに転送できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2431

拡張命令
4.9 アラーム「OperateMode = 2」で命令「Get_Alarm」を使用すると、以下の動作状態が発生する場合があります。
動作モード
Busy = TRUE

説明
DataReady =エラー =アラームが保留中となり、アラーム処理

FALSE

FALSE

が実行されますエラー =受信バッファ > 取得データの場合、新しFALSE

いアラームが使用できます *)エラー =新しいアラームなし

Busy = FALSE DataReady =TRUE
Busy = FALSE DataReady =FALSEBusy = FALSE DataReady =FALSE
Error = TRUE エラー発生(データが無効)

FALSE*) データは命令の次の呼び出しまでしか有効ではないため、同一のプログラムサイクル内にデータをコピーする必要があります。
「OperateMode = 2」の場合、命令はアラームの内容を非同期で読み出して、サイクルオ
ーバーフローにつながる可能性のある、「Get_Alarm [FB702]」ファンクションブロックの長いランタイムを回避します。この命令は、サイクルオーガニゼーションブロック内で再帰的に呼び出される必要があります。
「OperateMode = 1」および「OperateMode = 3」では、命令が同期して動作し、呼び出しの直後に実行が発生します。
ファンクションブロック「Get_Alarm [FB702]」は、取得される各アラームに対して、要求される言語ごとに最大 11 の呼び出しを必要とするため、最大 33 の呼び出しに対して Busy
パラメータのシグナル状態が「1」となる可能性があります。Busy パラメータのシグナル状態が再度「0」になるまで、アラームの取得は完了しません。
このため、「Get_Alarm [FB702]」の推奨される呼び出し時間は 20 ms～200 ms となります。呼び出し時間が 1.8 秒を超えると、「Get_Alarm [FB702]」が自動的にログオフする可能性があります。ログオフの結果として、それ以上アラームを読み出すことができなくな
ります。

2432

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
以下の場合、入力「OperateMode = 1」を使用してこの命令に再度ログオンする必要があります。
• ファンクションブロック「Get_Alarm [FB702]」の呼び出し頻度が低すぎるため、自動ログオフ後。
• 動作モードが「STOP」から「RUN」に切り替わったとき。
• Program_Alarm、ProDiag など、既存のアラーム設定を変更すると、この命令は直ちに自動的にログオフされます。
以下の領域からアラームにこの命令を使用できます。
• ProDiag• システム診断• GRAPH• Program_Alarm• モーションコントロール
注記
CPU プロパティ[PLC での中央アラーム管理]
デバイス構成で CPU プロパティ[PLC での中央アラーム管理]を有効にしない場合、アラー
ムテキスト(アラームテキスト、情報テキストおよび追加アラームテキスト 1～9)の代わりに、アラームテキストフィールドの ID のみが出力されます。

パラメータ
以下の表に、命令「保留中のアラームを読み出し」のパラメータを示します。
パラメー 宣言タ

データタ メモリ領域 説明
イプ

EN *)

BOOL

入力

I、Q、M、 イネーブル入力
D、L

ENO *)出力

BOOL

I、Q、M、 イネーブル出力
D、L

Operate

入力

Mode

BYTE

I、Q、M、 以下の 3 つの値が可能です。
D、L• 1:ログオン• 2:データの読み出し• 3:ログオフ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2433

拡張命令
4.9 アラーム
パラメー 宣言タ

データタ メモリ領域 説明
イプ

DataMo

BYTE

入力

de

I、Q、M、 以下の 4 つの異なる値が可能です。
D、L• 0:列タイトルのみが読み出されます(プロデューサ ID、ID_1、ID_2、優先度、タイムスタンプ、状態)• 1:列ヘッダーと、関連値を含むアラーム
テキストが読み出されます。
• 2:列ヘッダー、関連値を含むアラームテ
キストおよび情報テキストが読み出されます。
• 3:列ヘッダー、関連値を含むアラームテ
キスト、情報テキストおよび追加アラー
ムテキストが読み出されます。

DispClasUINT のI、Q、M、 最大 32 個の異なる表示クラスを定義でき

sNr (表示

配列

D、L

クラス番

[0..31]

号)

入力

ます。
• 0 ... 16:HMI デバイスで設定可能なユー
ザー定義の表示クラス• 257:システム診断• 259:セキュリティ
このパラメータを使用しない場合、最初の値(ARRAY のインデックス 0)はデフォルト
値 65535 のままとなります。これは、すべての表示クラスがレポートされることを意
味します。
注記:
表示クラス 0 を読み出さない場合は、
ARRAY の使用していないすべてのインデックスに値 256 を割り当てます。
表示クラスの変更は、ログオンが成功した
場合(OperateMode = 1)にのみ考慮されま
す。

2434

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
パラメー 宣言タ

データタ メモリ領域 説明
イプ

Lcid (ロUDINT

入力

I、Q、M、 以下の値が可能です。
D、L

ーカル
ID)

• 0:すべての言語• 1:LC 番号が最小の第 1 言語
• 2:第 1 言語 + LC 番号が 2 番目に小さい
第 2 言語• 3:すべての言語• または:特定の言語を選択するには、正確な LC 番号を入力します。

データ

InOut

「AlarmD I、Q、M、 読み出したアラームデータのターゲット範
ata」

D、L

囲です。
「DataMode」パラメータの値に従った、
PLC データタイプ「AlarmData」からのア
ラームテキスト構造体。

DataRea

出力

BOOL

dy

I、Q、M、 STATUS パラメータ:
D、L• 0:使用できるデータがありません。
• 1:データが使用できます。
データは、命令の次の呼び出しまで有効です。したがって、これは、たとえば、移動命令を使用して、同じプログラムサ
イクルで処理する必要があります。

BUSY

出力

BOOL

I、Q、M、 STATUS パラメータ:
D、L• 0:命令の実行がまだ開始されていない
か、非同期処理が完了しました。処理ス
テータスに関する追加情報については、
STATUS パラメータを参照してください。
• 1:命令の実行が未完了です
その他のエントリが存在します

エラー

出力

BOOL

I、Q、M、 STATUS パラメータ:
D、L• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2435

拡張命令
4.9 アラーム
パラメー 宣言タ

データタ メモリ領域 説明
イプ

Init

BOOL

出力

I、Q、M、 STATUS パラメータ:
D、L• 0:対処は不要です。
• 1:アラームデータのストレージを初期化する必要があります。これまでに読み出されたアラームデータは無効になります。
これは、以下の場合に必要になる場合があります。
• 初めてログオンしている場合。現在のアラームの内容を再度読み出せます。
• CPU が「STOP」モードから「RUN」モードに切り替わった場合。
• アラームが再設定され、「RUN」モード
で[デバイスへのダウンロード]を使用して、たとえば、アラームテキスト構造体の変更などの変更が行われた場合。

ステータ 出力

WORD

I、Q、M、 エラー情報およびステータス情報
D、Lス*):イネーブル入力 EN およびイネーブル出力 ENO は、プログラミング言語 LAD およびFBD でのみ表示されます。

パラメータ Status
次の表に、Status パラメータの値の意味を示します。
ステータ 説明スコード*(W#16#..
.)
0000

エラーは発生していません。

0001

新しいデータが使用できます。

8001

パラメータ OperateMode の値が無効です。

8002

Data パラメータのデータタイプが間違っています。

8003

Lcid パラメータが無効であるか、Lcid パラメータで選択された言語がロードされていません。

2436

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
ステータ 説明スコード*(W#16#..
.)
8004

保留中のメッセージを読み出すためにユーザープログラムで OperateMode= 1 パラメータを使用して既にログオン済みです。再度ログオンが許可/要求されるのは、OperateMode = 3 を使用してログアウトしたか、アラームを再設定したか、STOP から RUN への移行を行った場合だけです。

8005

パラメータ DataMode の値が無効です。

8085• ログオン時に表示クラスを指定しなかった。
• 監視(ProDiag)の再設定中に命令がログオフされた。
• ファンクションブロック「Get_Alarm [FB702]」の呼び出し頻度が低すぎるため、自動ログオフ。
• システムステータス SYNCUP による自動ログオフ(S7-1500-R/H-CPU のみ)

80C5

SYNCUP システムステータス中にログオフしようとしました。これはできません。後で再度行ってください(S7-1500 R/H CPU のみ)。

* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

PLC データタイプ「AlarmData」
PLC データタイプ「AlarmData」は、アラームの構造体を反映します。
名前

データタイプ 既定値

ProducerID UINT

0

説明
以下の値が可能です。
• 0:Program_Alarm• 4:システム診断• 5:標準モーションコントロール(T-CPU)• 6:セキュリティ(不正ログインなど)• 7:SINUMERIK• 8:GRAPH• 9:ProDiag

ID_1

UINT

0

アラーム ID
この ID はアラームエディタにも表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2437

拡張命令
4.9 アラーム
名前

データタイプ 既定値

説明

ID_2

UINT

アラームランタイムインスタンスの ID

0

この ID は、ProDiag および PLC にとって有意な内部範囲 ID です。
• ProDiag では、これは監視 ID です。
• PLC では、これはステップ番号です。
「Program_Alarm」命令の場合、この ID は 0であり、システム診断にとって意味を持ちま
せん。
PRIO

UINT

0

TimeStam

LDT

DT#1970-01- タイムスタンプp

優先度:0～1601-0:0:0.000 タイムスタンプは、UTC (Universal Time
000000
Coordinated)またはシステム時刻に基づいて
います。

State

BYTE

16#0

STATUS パラメータ:• 0:発信• 1:着信LC_ID

UINT の配列-[0..2]

入力「Lcid」で指定されている値を返します。
• 0:すべての言語• 1:LC 番号が最小の第 1 言語
• 2:第 1 言語 + LC 番号が 2 番目に小さい第2 言語• 3:すべての言語
または:特定の言語を選択するには、正確なLC 番号を入力します。

AlarmText

WSTRING の-配列[0..2]

最大 254 文字(508 バイト)のアラームテキス
ト。テキストがこれよりも長い場合は、251
文字で切り捨てられます(例:WSTRING#'Meld...)。

InfoText

WSTRING の-

情報テキスト-追加テキスト 1～9

配列[0..2]

2438

AddText_1

WSTRING の-9

配列[0..2]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

例
例については、「Get_Alarm & Ack_Alarms のプログラム例 - パート 1 (ページ 2441)」を参照
してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.9.5

Ack_Alarms:アラームの確認

説明「アラームの確認」命令を使用して、単一のコマンドでプログラムコードですべての着信および発信アラームを確認することができます。
イネーブル入力 EN (LAD / FBD)で、または先行論理演算(STL / SCL)として信号立ち上がり
エッジが発生し、かつ MODE パラメータで値 = 1 が設定されると、この命令は直ちに呼び出されます。この命令は非同期で動作するため、サイクルオーバーフローにつながる可能性のある、ファンクションブロック「Ack_Alarms [FC701]」の長いランタイムを回避します。
CPU はすべての着信および発信アラームを確認し、この確認についてすべての HMI デバ
イスに通知します。ディスプレイ上の保留中のアラームは、「送信済み」になると、直ちに消失します。
いずれの場合にも、同時に 1 つの確認(確認を必要とする最大 100 個のアラーム)しか実行できません。追加のアラームが保留中である場合、確認を必要とする次の 100 個のアラームが自動的に確認されます。
この命令は、PRODIAG 監視アラームにも使用できます。

パラメータ
以下の表に、「アラームの確認」命令のパラメータを示します。
パラメー 宣言タ

データタ メモリ領域 説明
イプ

EN *)

BOOL

入力

I、Q、M、 イネーブル入力
D、L

ENO *)出力

BOOL

I、Q、M、 イネーブル出力
D、L

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2439

拡張命令
4.9 アラーム
パラメー 宣言タ

データタ メモリ領域 説明
イプ

MODE

UINT

入力

I、Q、M、 以下の 2 つの異なる値が可能です。
D、L• 0:命令が実行されません。
• 1:すべてのアラームを確認します。
確認可能なすべての有効なアラームが確認されます。

ERROR

出力

BOOL

I、Q、M、 STATUS パラメータ:
D、L• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

出力

WORD

I、Q、M、 エラー情報およびステータス情報
D、L*):イネーブル入力 EN およびイネーブル出力 ENO は、プログラミング言語 LAD およびFBD でのみ表示されます。

パラメータ STATUS
次の表に、STATUS パラメータの値の意味を示します。
ステータ 説明スコード*(W#16#..
.)
0000

エラーは発生していません。

7001

エラーは発生しませんでした。また、確認を必要とする次の 100 個のアラームが確認されます。

8001

パラメータ MODE の値が無効です。

80C5

確認プロセスは既に実行中です。後で再度実行してみてください。

* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

2440

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

例
例については、「Get_Alarm & Ack_Alarms のプログラム例 - パート 1 (ページ 2441)」を参照
してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

4.9.6

Get_Alarm & Ack_Alarms のプログラム例

4.9.6.1

Get_Alarm & Ack_Alarms のプログラム例 - パート 1

概要
次の例では、CPU 1 (ファームウェア V2.0 以降の S7-1500)のすべてのアラームを収集し、アラームを保存します。その後、CPU 2 (S7-1500)へのプログラム済みの接続を使用して、アラームを(省略形で、PLC データタイプ「rcvGetAlarm」で) CPU 1 から CPU 2 に送信します。また、アラームを CPU 2 に保存します。
Get_Alarm および Ack_Alarms のプログラミング例の第 1 部では、パラメータの要件と相互接続を処理します。
結果と接続の手順については、「Get_Alarm & Ack_Alarms のプログラム例 - パート 2 (ページ 2460)」に記載されています。
注記
アラームのメモリ配列のサイズ
アラームのメモリ配列(「alarmStorage」および「rcvdStorage」)は、記載通りに設定すると、最大 16 個のアラームを保持できます。
メモリサイズを変更する場合は、配列サイズと最大値「maxPosition」を変更する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2441

拡張命令
4.9 アラーム
&38

&38

*HWB$ODUP

76(1'B&

75&9B&FXUU5HFRUG

VHQG6WUXFWWUFY6WUXFWDODUP'DWD

UFY*HW$ODUPUFY*HW$ODUPDODUP6WRUDJH>[@

UFYG6WRUDJH>[@

6*HW$ODUPUFY*HW$ODUP

プログラム済みの接続の要件
2 つの CPU (S7-1500)を作成し、PROFINET 経由で CPU 同士を接続します。接続にパラメータを割り当てません。
注記
Get_Alarm および Ack_Alarms の使用
CPU 1 (Get_Alarm および Ack_Alarms の呼び出し用)には、ファームウェア V2.0 以降が必要です。さらに、CPU 1 に対して CPU プロパティ[PLC での中央アラーム管理 (ページ 2431)]を有効にする必要があります。
注記
読み取りおよび書き込みアクセスの許可[プロパティ|CPU の保護]で低い保護レベルを設定することによって、読み取りおよび書き込
みアクセスが許可されるようにします。

2442

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

CPU 1:プログラム要件
PLC データタイプの作成

アラームの転送および保存のために、以下の PLC データタイプが必要です。
• 現在の読み出し損失に関する情報も含めてアラームを保存するには、「SGetAlarm」が必要です。

• TSEND_C.経由でアラームを転送するには、「rcvGetAlarm」が必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2443

拡張命令
4.9 アラーム
データの保存グローバルデータブロック(「SLI_gDB_GAalarm」)に、データを保存するために以下の構造体とタグを作成します。
• TSEND_C のパラメータ割り当ての場合• Get_Alarm のパラメータ割り当ての場合

2444

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム• メモリ配列にアラームを保存するための「GetAlarm」構造体の一部として• Ack_Alarms のパラメータ割り当ての場合

ProDiag アラーム

テストシナリオ用にグローバルデータブロック(「SLI_gDB_testAlarm_GAA」)に 3 つのタグを作成します。

ProDiag アラームをトリガするために、グローバルデータブロック「SLI_gDB_testAlarm_GAA」()に以下のルールを作成します。そのためには、[グローバルデ
ータブロック|タグ「startPump」のプロパティ|監視|新規監視の追加]を開きます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2445

拡張命令
4.9 アラーム

CPU 2:プログラム要件
PLC データタイプの作成

CPU 1 について記載されているように、PLC データタイプ「rcvGetAlarm」を作成します。
データの保存グローバルデータブロック(「SLI_gDB_trcv_GAA」)に、データを保存するために以下の構造
体とタグを作成します。

CPU 1:FB「SLI_FB_send_GAA」 - パラメータの相互接続
CPU 1 と CPU 2 間の接続とデータ転送をセットアップするには、FB「SLI_FB_send_GAA」
を作成します。
FB で以下のローカルタグを作成します。

2446

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

この FB で、以下を使用します。
• データ転送をキャンセルする(「TSEND_C.stop」)ための相互接続。
• データ転送を開始する(「#do2」)ための相互接続。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2447

拡張命令
4.9 アラーム• 新しいデータ転送を開始する(「#initiateSending」、「#do」)ための相互接続。
• 接続の確立およびデータ転送のための命令「TSEND_C」。

注記「TSEND_C」命令の入力パラメータ CONNECT の相互接続
入力パラメータ CONNECT を相互接続するには、[プロパティ|設定]で、「TSEND_C」命令のウィザードを開きます。
TSEND_C の接続について、以下の設定を行います。
• エンドポイント: ドロップダウンリストを使用して CPU を選択します。インターフェー
ス、サブネットおよびアドレスは自動的に入力されます。
• 接続データ:ドロップダウンリストと選択[新規作成]を使用して、CPU ごとに 1 つのデー
タブロックを作成します。このデータブロックは、接続データを保存するために必要です。データブロックの名前は、CPU (通信パートナー)ごとに自由に選択できます。
• 接続タイプ[TCP]および設定タイプ[プログラムブロックの使用]を選択します。これらの設定によって、「TCP」プロトコルを使用した、プログラム済みの接続としてイーサネット
接続がセットアップされます。
• 自由に選択された接続 ID を入力します。まだ割り当てられていない接続 ID を使用します。
• パートナーポートの値を入力します。値は 2000 以上である必要があります。

TSEND_C (ページ 2972)の設定に関する追加情報については、以下を参照してください。送信ファンクションのプログラム例 (ページ 3004)
FB「SLI_FB_send_GAA」のセットアップおよび相互接続に関する追加情報については、命令用のサンプルライブラリ (ページ 25)の例のプログラムコードを参照してください。

CPU 1:FC「SLI_FC_switchMode_GAA」 - パラメータの相互接続
FC「SLI_FC_switchMode_GAA」を使用して、「Get_Alarm」命令を制御します。

2448

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
この FC に以下のローカルタグを作成します。

FC で以下の相互接続を作成します。
ネットワーク 1:Get_Alarm の処理を開始するには、以下の相互接続を作成します。

ネットワーク 2:Get_Alarm の処理を開始するには、以下の相互接続を作成します(パート2)。

ネットワーク 3:Get_Alarm のログインのために、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2449

拡張命令
4.9 アラーム

ネットワーク 4:Get_Alarm の「読み取り」モードに切り替えるには、以下の相互接続を作成します。

ネットワーク 5:Get_Alarm の「読み取り」モードを処理するには、以下の相互接続を作成
します。

2450

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

ネットワーク 6:Get_Alarm の「読み取り」モードを処理するには、以下の相互接続を作成
します(パート 2)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2451

拡張命令
4.9 アラーム

ネットワーク 7:Get_Alarm の処理を終了するには、以下の相互接続を作成します。

ネットワーク 8:Get_Alarm の処理を終了するには、以下の相互接続を作成します(パート2)。

ネットワーク 9:Get_Alarm の処理を終了するには、以下の相互接続を作成します(パート
3)。

2452

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

CPU 1:FB「SLI_FB_saveAlarms_GAA」 - パラメータの相互接続
アラームをメモリ配列「GetAlarm.alarmStorage」にコピーするために、FB「SLI_FB_saveAlarms_GAA」を作成します。
FB で以下のローカルタグを作成します。

この FB に以下の相互接続を作成します。
ネットワーク 1:メモリ配列「GetAlarm.alarmStorage」へのアラームのコピーは、以下のように決定されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2453

拡張命令
4.9 アラーム

ネットワーク 2:最後に使用されたメモリ配列のセル番号を保存し、アラームをカウントするには、以下の相互接続を作成します。

ネットワーク 3:メモリ配列のセル番号のインクリメントまたはリセットは、以下のように決定されます。

2454

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

ネットワーク 4:メモリ配列へのコピー時の成功を保存するには、以下の相互接続を作成します。

ネットワーク 5:SLI_FB_saveAlarms_GAA の処理を終了するには、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2455

拡張命令
4.9 アラーム

CPU 1:FB「SLI_FBCall_GetAlarm_AckA」 - パラメータの相互接続
以下の目的のために、FB「SLI_FBCall_GetAlarm_AckA」を作成します。
• Get_Alarm を呼び出し、変更するため• コピーおよび送信プロセス用のブロックを呼び出すため• Ack_Alarms を呼び出すため
FB で以下のローカルタグを作成します。

この FB に以下の相互接続を作成します。
ネットワーク 1:「SLI_FB_send_GAA」ファンクションブロックのパラメータを以下のように相互接続します。

ネットワーク 2:「SLI_FC_switchMode_GAA」FC のパラメータを以下のように相互接続し
ます。

2456

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

ネットワーク 3:「Get_Alarm」命令のパラメータを以下のように相互接続します。

ネットワーク 4:「SLI_FB_saveAlarms_GAA」ファンクションブロックのパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2457

拡張命令
4.9 アラーム

ネットワーク 5:ProDiag アラームをテストするために、以下の相互接続を作成します。

ネットワーク 6:「Ack_Alarms」命令のパラメータを以下のように相互接続します。

CPU 2:FB「SLI_FB_rcvdAlarms_GAA」 - パラメータの相互接続
アラームをメモリ配列「GetAlarm.rcvdStorage」にコピーするために、FB「SLI_FB_rcvdAlarms_GAA」を作成します。セットアップと相互接続は、FB「SLI_FB_saveAlarms_GAA」の場合と同様です。
FB「SLI_FB_rcvdAlarms_GAA」のセットアップおよび相互接続に関する追加情報について
は、命令用のサンプルライブラリ (ページ 25)の例のプログラムコードを参照してください。

CPU 2:FB「SLI_FBCall_trcv_GAA」 - パラメータの相互接続
TRCV_C および後続のすべてのプロセスを呼び出し、処理するために、FB「SLI_FBCall_trcv_GAA」を作成します。

2458

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
FB で以下のローカルタグを作成します。

この FB に以下の相互接続を作成します。
ネットワーク 1:「TRCV_C」命令のパラメータを以下のように相互接続します。TRCV_C ウ
ィザードを使用して、TRCV_C の CONNECT パラメータを設定します。
TRCV_C (ページ 2992)の設定に関する追加情報については、以下を参照してください。送信
ファンクションのプログラム例 (ページ 3004)

ネットワーク 2:TRCV_C エラーが発生した場合にステータスを保存するには、パラメータを
以下のように相互接続します。

ネットワーク 3:「SLI_FB_rcvdAlarms_GAA」ファンクションブロックのパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2459

拡張命令
4.9 アラーム

結果と手順
結果と通信接続の手順については、「Get_Alarm & Ack_Alarms のプログラム例 - パート 2(ページ 2460)」に記載されています。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
Ack_Alarms:アラームの確認 (ページ 2439)

4.9.6.2

Get_Alarm & Ack_Alarms のプログラム例 - パート 2

概要
Get_Alarm および Ack_Alarms のプログラム例の第 2 部では、設定の結果と ProDiag アラームについて理解します。
要件とパラメータの相互接続については、「Get_Alarm & Ack_Alarms のプログラム例 - パ
ート 1 (ページ 2441)」に記載されています。

CPU 1 と CPU 2 間の接続のセットアップ手順
以下の操作手順の順序を守ってください。
1. CPU 2 について、タグ「TRCV_C.start」を「TRUE」に変更します。
2. CPU 2 について、タグ「TRCV_C.comControl」を「TRUE」に変更します。

2460

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム
3. CPU 1 について、タグ「TSEND_C.start」を「TRUE」に変更します。
4. CPU 1 について、タグ「TSEND_C.comControl」を「TRUE」に変更します。

CPU 1 と CPU 2 の接続の切断手順
以下の操作手順の順序を守ってください。
1. CPU 1 について、タグ「TSEND_C.stop」を「TRUE」に変更します。
2. CPU 2 について、タグ「TRCV_C.start」を「FALSE」に変更します。
3. CPU 2 について、タグ「TRCV_C.comControl」を「FALSE」に変更します。
4. CPU 1 について、タグ「TSEND_C.start」を「FALSE」に変更し、タグ「TSEND_C.stop」を「FALSE」に変更します。
5. CPU 1 について、タグ「TSEND_C.comControl」を「FALSE」に変更します。

CPU 1 の結果:FB「SLI_FBCall_GetAlarm_AckA」 - ネットワーク 1
ノーマルオープン(「TSEND_C.start」)がシグナル状態「TRUE」を表示する場合、「TSEND_C」命令が開始されます。入力パラメータ CONNECT 「TSEND_C.comControl」()がシグナル状態「TRUE」を表示すると、「TSEND_C」命令が CPU 1 と CPU 2 間の通信接続を作成します。
データレコード(#sendStruct)の転送の成功は、シグナル状態が「TRUE」の出力パラメータ
DONE 「TSEND_C.done」()によって示されます(「TSEND_C.status」の値は「0000」です)。
データレコード(#sendStruct)を CPU 2 に送信した後、通信接続は引き続きモニタされます(ステータス「7004」)。
ノーマルオープン(「TSEND_C.stop」)がシグナル状態「TRUE」を表示する場合、「TSEND_C」
命令が停止されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2461

拡張命令
4.9 アラーム

TSEND_C (ページ 2972)および TRCV_C (ページ 2992)の動作原理に関する追加情報については、以下を参照してください。送信ファンクションのプログラム例 (ページ 3004)

CPU 1 の結果:FB「SLI_FBCall_GetAlarm_AckA」 - ネットワーク 2
ノーマルオープン(「GetAlarm.start」)がシグナル状態「TRUE」を表示する場合、「Get_Alarm」命令が開始されます。そのために、「Get_Alarm」命令がモード 1「GetAlarm.operateMode.value」()で呼び出されてから、モード 2 に切り替わります。処理
後、タグ「GetAlarm.start」が「FALSE」に自動的にリセットされます。
ノーマルオープン(「GetAlarm.stop」)がシグナル状態「TRUE」を表示する場合、「Get_Alarm」命令が停止されます。そのために、「Get_Alarm」命令がモード 3「GetAlarm.operateMode.value」()で呼び出されてから、非アクティブ(モード 0)に切り替わります。停止コマンドの要件は、Get_Alarm のログオンの成功です「GetAlarm.operateMode.Logon_done」が「TRUE」()。処理後、タグ「GetAlarm.stop」が「FALSE」に自動的にリセットされます。

2462

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

Get_Alarm の処理済みモードの成功状態が記録されます。
• 「GetAlarm.operateMode.Logon_done」が「TRUE」 = モード 1 が正常に完了しました。
• 「GetAlarm.operateMode.ReadData_ready」が「TRUE」 = モード 2 が設定されます。
Get_Alarm が読み出し準備完了状態です。
• 「GetAlarm.operateMode.ReadData_active」が「TRUE」 = Get_Alarm がモード 2 にあり、データの読み出しでビジーです。
• 「GetAlarm.operateMode.Logoff_done」が「TRUE」 = モード 3 が正常に完了しました。
注記
Get_Alarm の意図しないログオフ
Get_Alarm がモード 2 でログオフされると、出力パラメータ INIT
「GetAlarm.initiateLogin」()がシグナル状態「TRUE」を返します。このイベントは、FC「SLI_FC_switchMode_GAA」で読み出し損失(「GetAlarm.currReadLoss」)としてカウントさ
れ、SLI_FC_switchMode_GAA の(INOUT)パラメータ MODE2REINIT「GetAlarm.check.anew」()が「TRUE」に設定されます。その結果、タグ「GetAlarm.dataReady」および「GetAlarm.initiateLogin」がリセットされ、「Get_Alarm」
命令がモード 1 で自動的に再開されます。その後、Get_Alarm がモード 2 で再度読み出し
準備完了状態になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2463

拡張命令
4.9 アラーム

CPU 1 の結果:FB「SLI_FBCall_GetAlarm_AckA」 - ネットワーク 3
入力パラメータ OPERATEMODE「GetAlarm.operateMode.value」()が値「2」を表示すると、「Get_Alarm」命令が CPU 1 のすべてのアラームを読み出します。そのために、入力パラ
メータ DATA 「GetAlarm.currRecord」()で各アラームが記録されます。

出力パラメータ DATAREADY 「#dataReady」()のシグナル状態「TRUE」は、新しいアラームを示します。「#dataReady」の値(および「#initiate」の値)は 1 サイクルに対してのみ設定されるため、ステータスはタグ「GetAlarm.dataReady」で保存されます。
出力パラメータ INIT 「#initiate」()がシグナル状態「TRUE」をモード 2 で返すと、
Get_Alarm がログオフされるため、再度ログオンする必要があります。ネットワーク 2 に関する注記を参照してください。モード 1 では、「#initiate」/「GetAlarm.initiateLogin」
はログオンの成功を示します。
エラーが発生した場合、Get_Alarm 「GetAlarm.status」()のステータスがタグ「GetAlarm.memErrStatus」および「GetAlarm.memErr」で保存され、ログオフするために
Get_Alarm がモード 3 に設定されます。Get_Alarm がログオフされ、エラーが発生していない(「GetAlarm.status」の値が「16#0000」)ときは、ログオフは「GetAlarm.operateMode.Logoff_done」を介して値「TRUE」で保存されます。

2464

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

値が「16#03」の入力パラメータ DATAMODE 「GetAlarm.outputMode」()は、アラームが(すべての情報と共に)完全に読み出されるように指定します。入力パラメータ
DISPCLASSNR は接続されていません。つまり、Get_Alarm はすべての表示クラスを読み出します。値が「0」の入力パラメータ LCID 「GetAlarm.languageCodeID」()は、アラームのすべての言語バージョンが読み出されるように指定します。

CPU 1 の結果:FB「SLI_FBCall_GetAlarm_AckA」 - ネットワーク 4
以下の条件で、現在読み出されているアラーム(「GetAlarm.currRecord」)に加えてそれまでにカウントされた読み出し損失(「GetAlarm.currReadLoss」)が結合データレコードとしてメ
モリ配列「GetAlarm.alarmStorage」に保存されます。
• 「GetAlarm.dataReady」がシグナル状態「TRUE」を返す。つまり、Get_Alarm が新しいアラームを読み出した。
• さらに、読み出されたアラーム(「GetAlarm.currRecord」)のデータレコードが空でない。
そのため、そのアラームテキストがチェックされる。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2465

拡張命令
4.9 アラーム
次に、使用された位置(「#posForAlarm」)がグローバルタグ「GetAlarm.posForAlarm」のメ
モリ配列「GetAlarm.alarmStorage」に保存されます。さらに、アラームがカウントされ、現在値がグローバルタグ「GetAlarm.countAlarms」で記録されます。
新しいアラームをメモリ配列内の別のセルに保存できるように、位置情報「#posForAlarm」()がインクリメントされます。インクリメントの要件は、メモリ配列の制限値(「GetAlarm.maxPositon」)を超えないことです。この制限値を超えると、これは記録さ
れ(「GetAlarm.limitReach」)、位置情報(「#posForAlarm」)が値「0」に設定されます。したがって、この設定では、後続のすべてのアラームがメモリ配列内の古いアラームエントリを上書きします。
コピーの成功は、タグ「GetAlarm.savingDone」に記録されます。アラームの後続の送信を開始するために、「GetAlarm.initiateSending」タグが設定されます。
「SLI_FB_saveAlarms_GAA」の処理の終了時に、タグ「GetAlarm.dataReady」(およびローカルタグ)が「FALSE」にリセットされます。「SLI_FB_saveAlarms_GAA」のプログラムが再度処理されるのは、「GetAlarm.dataReady」が値「TRUE」を返すときだけです。

CPU 1 の結果:FB「SLI_FBCall_GetAlarm_AckA」 - ネットワーク 5
ノーマルオープン(「startPump」)およびノーマルクローズ(「closeValve」)がシグナル状態「TRUE」を返すと、設定済みの ProDiag アラームがトリガされます。

Get_Alarm がアラームを読み出し、割り当て済みタグ(「GetAlarm.currRecord」)にこれを保存します。ネットワーク 4 で、その後、アラームがメモリ配列(「GetAlarm.alarmStorage」)にコピーされます。

2466

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

CPU 1 の結果:FB「SLI_FBCall_GetAlarm_AckA」 - ネットワーク 1 (データ伝送)
タグ「GetAlarm.initiateSending」がシグナル状態「TRUE」を返すと、保存された位置「GetAlarm.posForAlarm」()が同じ名前のローカルタグ(「#posForAlarm」)のメモリ配列に転送され、新しいデータ転送用のコマンドが転送されます。「#initiateSending」タグが「TRUE」に設定されます。
さらに、エラーが通知されない場合で、かつ TSEND_C がビジーとして通知されない場合「TSEND_C.error」および「TSEND_C.busy」が「FALSE」の場合)、各アラーム(「GetAlarm.alarmStorage[..]」()が省略形で構造体「#sendStruct」に転送されます。停止コ
マンド(「TSEND_C.stop」を「TRUE」に設定)が与えられなかった場合、タグ「TSEND_C.start」が「TRUE」に設定されます。
データ伝送の開始コマンド(「TSEND_C.start」が「TRUE」)は、複数のサイクルにわたって
CPU 2 に省略形のアラーム(「#sendStruct」)を送信します。

CPU 1 の結果:FB「SLI_FBCall_GetAlarm_AckA」 - ネットワーク 6
ノーマルオープン(「AckAlarm.executeAck」)がシグナル状態「TRUE」を表示する場合、「Ack_Alarms」命令が開始されます。入力パラメータ MODE 「#acknowledge」()の値「1」
に従って、Ack_Alarms はすべての有効なアラームを確認します。この例の処理はエラーなしで行われます(「AckAlarm.error」が「FALSE」であり、「AckAlarm.status」の値が「16#0000」です)。
確認を表示するには、HMI デバイスまたは CPU の Web サーバーを使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2467

拡張命令
4.9 アラーム

CPU 2 の結果:FB「SLI_FBCall_trcv_GAA」 - ネットワーク 1
ノーマルオープン(「TRCV_C.start」)がシグナル状態「TRUE」を表示する場合、「TRCV_C」
命令が開始されます。入力パラメータ CONNECT 「TRCV_C.comControl」()がシグナル状態「TRUE」を表示すると、「TRCV_C」命令が CPU 2 と CPU 1 間の通信接続を作成します。
データレコード(#trcvStruct)の転送の成功は、シグナル状態が「TRUE」の出力パラメータ
DONE 「TRCV_C.done」および「TRCV_C.dataReceived」()によって示されます「TRCV_C.status」の値は「0000」です)。データレコード(#trcvStruct)を(
CPU 2 に送信した
後、通信接続は引き続きモニタされ、TRCV_C が受信準備完了状態になります(ステータス「7006」)。実際に送信されたデータレコードの Byte 単位の長さは、出力パラメータ
RCVD_LEN 「TRCV_C.rcvLen」()で検出されます。

TSEND_C (ページ 2972)および TRCV_C (ページ 2992)の動作原理に関する追加情報については、以下を参照してください。送信ファンクションのプログラム例 (ページ 3004)

CPU 2 の結果:FB「SLI_FBCall_trcv_GAA」 - ネットワーク 2
ノーマルオープン(「TRCV_C.error」)がシグナル状態「TRUE」を返す場合、エラーのステー
タス(「TRCV_C.status」)が保存されます(「TRCV_C.memErrStatus」)。

2468

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.9 アラーム

CPU 2 の結果:FB「SLI_FBCall_trcv_GAA」 - ネットワーク 3
以下の条件で、アラームがメモリ配列「GetAlarm.rcvdStorage」に保存されます。
• 「TRCV_C.dataReceived」がシグナル状態「TRUE」を返す。つまり、新しいデータレコ
ードが TRCV_C に送信された。
• さらに、新しい受信データレコード(#trcvStruct)が空でない。

次に、使用された位置(「#posForAlarm」)がグローバルタグ「GetAlarm.posForAlarm」のメ
モリ配列「GetAlarm.rcvdStorage」に保存されます。さらに、アラームがカウントされ、現在値がグローバルタグ「GetAlarm.countAlarms」で記録されます。
新しいアラームをメモリ配列内の別のセルに保存できるように、位置情報「#posForAlarm」()がインクリメントされます。インクリメントの要件は、メモリ配列の制限値(「GetAlarm.maxPositon」)を超えないことです。この制限値を超えると、これは記録さ
れ(「GetAlarm.limitReach」)、位置情報(「#posForAlarm」)が値「0」に設定されます。したがって、この設定では、後続のすべてのアラームがメモリ配列内の古いアラームエントリを上書きします。
コピーの成功は、タグ「GetAlarm.savingDone」に記録されます。
「SLI_FB_rcvdAlarms_GAA」の処理の終了時に、タグ「TRCV_C.dataReceived」(およびローカルタグ)が「FALSE」にリセットされます。「SLI_FB_rcvdAlarms_GAA」のプログラムが再度処理されるのは、「TRCV_C.dataReceived が値「TRUE」を返すときだけです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2469

拡張命令
4.10 診断プログラム例のパート 1
要件とパラメータの相互接続については、「Get_Alarm & Ack_Alarms のプログラム例 - パ
ート 1 (ページ 2441)」に記載されています。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.10

診断

4.10.1

RD_SINFO:現在の OB 起動情報読み出し

説明「RD_SINFO」命令を使用し、以下の開始情報を読み出します。
• まだ完了していない、呼び出された最後の OB、および• 開始された最後のスタートアップ OB。

2470

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
いずれの場合もタイムスタンプはありません。呼び出しが OB 100、OB 101 または OB 102にある場合、2 つの同一の開始情報メッセージが返されます。

パラメータ
以下の表に、「RD_SINFO」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

TOP_SI

Output

VARIANT

D、L

現在の OB の開始情報

START_UP_SI

Output

VARIANT

D、L

最後に開始されたスタートアップ OBの開始情報

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TOP_SI パラメータの SDT
次の表に、TOP_SI パラメータに使用可能な SDT を示します。
オーガニゼーションブロック(OB) システムデータタイプ(SDT)

システムデータタイプ番号

SI_classic592

SI_none593

ProgramCycleOB

SI_ProgramCycle

594

TimeOfDayOB

SI_TimeOfDay

595

TimeDelayOB

SI_Delay

596

CyclicOB

SI_Cyclic

597

ProcessEventOB

SI_HWInterrupt

598

SI_HWInterrupt_Extended

616

SI_Submodule

601

SynchronousCycleOB

SI_SynchCycle

602

IOredundancyErrorOB

SI_IORedundancyError

604

CPUredundancyErrorOB

SI_CPURedundancyError

605

TimeErrorOB

SI_TimeError

606

任意

ProfileEventOB
StatusEventOB
UpdateEventOB

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2471

拡張命令
4.10 診断
オーガニゼーションブロック(OB) システムデータタイプ(SDT)

システムデータタイプ番号

DiagnosticErrorOB

SI_DiagnosticInterrupt

607

PullPlugEventOB

SI_PlugPullModule

608

PeripheralAccessErrorOB

SI_AccessError

609

RackStationFailureOB

SI_StationFailure

610

ServoOB

SI_Servo

611

IpoOB

SI_Ipo612

StartupOB

SI_Startup

613

ProgrammingErrorOB

SI_ProgIOAccessError

614

SI_CPURedundancyError_V2

617

IOaccessErrorOB
CPURedundancyErrorOB

START_UP_SI パラメータの SDT
次の表に、START_UP_SI パラメータに使用可能な SDT を示します。

システムデータタイプ(SDT)

システムデータタイプ番号

SI_classic592

SI_none593

SI_Startup

613

構造体
次の表に、個々の構造体の構造体エレメントの意味を示します。
表 4-29SI_classic 構造体

構造体エレメント

データタイプ

説明

EV_CLASS

BYTE• ビット 0～3:イベント ID• ビット 4～7:イベントクラス

EV_NUM

BYTE

イベント番号

PRIORITY

BYTE

優先度クラス番号(B#16#FE の意味:OB が使用不可、または無効、または現在の動作モードでは開始できない)

2472

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
構造体エレメント

データタイプ

説明

NUM

BYTE

DB 番号

TYP2_3

BYTE

データ ID 2_3:
次に入力された情報を特定 ZI2_3

TYP1

BYTE

データ ID 1:
次に入力された情報を特定 ZI1

ZI1

WORD

追加情報 1

ZI2_3

DWORD

追加情報 2_3

表 4-30

SI_none 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

表 4-31

SI_ProgramCycle 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 1

「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Initial_Call

BOOL

OB_Class = 1、30、52、61、65 の場合

Remanence

BOOL

OB_Class = 1 の場合

表 4-32

SI_TimeOfDay 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 10「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2473

拡張命令
4.10 診断
構造体エレメント

データタイプ説明

CaughtUp

BOOL

OB_Class = 10 の場合

SecondTime

BOOL

OB_Class = 10 の場合

表 4-33

SI_Delay 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 20「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Sign

WORD

OB_Class = 20 の場合

表 4-34

SI_Cyclic 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 30「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Initial_Call

BOOL

OB_Class = 1、30、52、61、65 の場合

Event_CountINT

OB_Class = 30、51、52、61、65、91、92 の場合

表 4-35

SI_HWInterrupt 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 40「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LADDR

HW_IO

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92
の場合

USI

2474

WORD

OB_Class = 40 の場合

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
構造体エレメント

データタイプ説明

IChannel

USINT

OB_Class = 40 の場合

EventTypeBYTE

OB_Class = 40 の場合

表 4-36

SI_HWInterrupt_Extended 構造体

構造体エレメント

データタイプバイト

説明

SI_Format

USINT

0

• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 40

1「情報なし」または「最適化された開始情報」の OB ク
ラス

OB_Nr

UINT

2

DB 番号(1～32767)

LADDR

HW_IO

4

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 の場合

USI

WORD

6

OB_Class = 40 の場合

IChannel

USINT

8

OB_Class = 40 の場合

EventType

BYTE

9OB_Class = 40 の場合

PointAddr

DWORD

12

OB_Class = 40 の場合

表 4-37

SI_Submodule 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LADDR

HW_IO

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92
の場合

Slot

UINT

OB_Class = 55、56、57 の場合

Specifier

WORD

OB_Class = 55、56、57 の場合

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2475

拡張命令
4.10 診断
表 4-38

SI_SynchCycle 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 61「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Initial_Call

BOOL

OB_Class = 1、30、52、61、65 の場合

PIP_Input

BOOL

OB_Class = 61、91、92 の場合

PIP_Output

BOOL

OB_Class = 61、91、92 の場合

IO_SystemUSINT

OB_Class = 61、91、92 の場合

Event_CountINT

OB_Class = 30、51、52、61、65、91、92 の場合

SyncCycleTime

LTIME

計算されたサイクルタイム

表 4-39SI_IORedundancyError 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 70「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LADDR

HW_ANY

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92の場合

Event_Class

BYTE

OB_Class = 70、83、85、86 の場合

Fault_ID

BYTE

OB_Class = 70、80、83、85、86 の場合

表 4-40

SI_CPURedundancyError 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 72「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Switch_Over

BOOL

OB_Class = 72 の場合

2476

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
表 4-41

SI_TimeError 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 80「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Fault_ID

BYTE

OB_Class = 70、80、83、85、86 の場合

Csg_OBnr

OB_ANY

OB_Class = 80 の場合

Csg_PrioUINT

OB_Class = 80 の場合

表 4-42

SI_DiagnosticInterrupt 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 82「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

IO_State

WORD

OB_Class = 82 の場合

LADDR

HW_ANY

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92の場合ChannelUINT

OB_Class = 82 の場合

MultiError

BOOL

OB_Class = 82 の場合

表 4-43

SI_PlugPullModule 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 83「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LADDR

HW_IO

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92の場合

Event_Class

BYTE

OB_Class = 70、83、85、86 の場合

Fault_ID

BYTE

OB_Class = 70、80、83、85、86 の場合

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2477

拡張命令
4.10 診断
表 4-44

SI_AccessError 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 85「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LADDR

HW_IO

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92の場合

Event_Class

BYTE

OB_Class = 70、83、85、86 の場合

Fault_ID

BYTE

OB_Class = 70、80、83、85、86 の場合

IO_AddrUINT

OB_Class = 85 の場合

IO_LENUINT

OB_Class = 85 の場合

表 4-45

SI_StationFailure 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 86「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LADDR

HW_IO

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92の場合

Event_Class

BYTE

OB_Class = 70、83、85、86 の場合

Fault_ID

BYTE

OB_Class = 70、80、83、85、86 の場合

表 4-46

SI_Servo 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 91「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Initial_Call

BOOL

OB_Class = 1、30、52、61、65 の場合

PIP_Input

BOOL

OB_Class = 61、91、92 の場合

2478

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
構造体エレメント

データタイプ説明

PIP_Output

BOOL

OB_Class = 61、91、92 の場合

IO_SystemUSINT

OB_Class = 61、91、92 の場合

Event_CountINT

OB_Class = 30、51、52、61、65、91、92 の場合

SynchronousBOOL

表 4-47

SI_Ipo 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 92「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

Initial_Call

BOOL

OB_Class = 1、30、52、61、65 の場合

PIP_Input

BOOL

OB_Class = 61、91、92 の場合

PIP_Output

BOOL

OB_Class = 61、91、92 の場合

IO_SystemUSINT

OB_Class = 61、91、92 の場合

Event_CountINT

OB_Class = 30、51、52、61、65、91、92 の場合

ReductionUINT

OB_Class = 92 の場合

表 4-48

SI_Startup 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 100 「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LostRetentive

BOOL

OB_Class = 100 の場合

LostRTCBOOL

OB_Class = 100 の場合

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2479

拡張命令
4.10 診断
表 4-49SI_ProgIOAcessError 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

BlockNrUINT

OB_Class = 121、122 の場合

Reaction

USINT

OB_Class = 121、122 の場合

Fault_ID

BYTE

OB_Class = 121、122 の場合

BlockTypeUSINT

OB_Class = 121、122 の場合

Area

USINT

OB_Class = 121、122 の場合

DBNr

DB_ANY

OB_Class = 121、122 の場合

Csg_OBNr

OB_ANY

OB_Class = 121、122 の場合

Csg_PrioUSINT

OB_Class = 121、122 の場合

Width

USINT

OB_Class = 121、122 の場合

表 4-50

SI_CPURedundancyError_V2 構造体

構造体エレメント

データタイプ説明

SI_Format

USINT• 16#FF = 情報なし
• 16#FE = 最適化された開始情報

OB_Class

USINT := 72「情報なし」または「最適化された開始情報」の OB クラス

OB_Nr

UINT

DB 番号(1～32767)

LADDR

HW_ANY

OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92の場合

Event_Class

BYTE

OB_Class = 70、83、85、86 の場合

Fault_ID

BYTE

OB_Class = 70、80、83、85、86 の場合

注記
これがブロックプロパティ「標準」で作成された場合、SI_classic 構造体に指定された構
造体エレメントの内容は、OB の一時タグと同一です。
ただし、個々の OB の一時タグの名前とデータタイプが異なる場合があることに注意してください。また、各 OB の呼び出しインターフェースには、OB 要求の日付と時刻に関する追加情報が含まれます。

2480

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
EV_CLASS 構造体エレメントのビット 4～7 には、イベントクラスが含まれます。ここでは、次の値を使用できます。
• 1:標準 OB からのイベントの開始• 2:同期エラー OB からのイベントの開始• 3:非同期エラー OB からのイベントの開始
PRIORITY 構造体エレメントは、現在の OB に属する優先度クラスを提供します。
これら 2 つのエレメント以外に、NUM も関連します。NUM には、現在の OB または最後に開始されたスタートアップ OB の番号が含まれます。

パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#...
)
8081

現在の OB の開始情報が、指定されたシステムデータタイプと一致しません。

8083

開始された最後のスタートアップ OB の開始情報が、指定されたシステムデータタイプと一致しません。

例OB 80 は最後に呼び出された OB で、まだ処理が完了していません。OB 100 は最後に開始されたスタートアップ OB です。
次の表は、「RD_SINFO」命令の TOP_SI パラメータの構造体エレメントと、関連する OB 80のローカルタグの割り当てを示します。
TOP_SI
構造体エレメント

データタイプOB 80 - 関連するローカルタグ

データタイプ

EV_CLASS

BYTE

OB80_EV_CLASSBYTE

EV_NUM

BYTE

OB80_FLT_ID

BYTE

PRIORITY

BYTE

OB80_PRIORITY

BYTE

NUM

BYTE

OB80_OB_NUMBR

BYTE

TYP2_3

BYTE

OB80_RESERVED_1

BYTE

TYP1

BYTE

OB80_RESERVED_2

BYTE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2481

拡張命令
4.10 診断
TOP_SI
構造体エレメント

データタイプOB 80 - 関連するローカルタグ

データタイプ

ZI1

WORD

OB80_ERROR_INFO

WORD

ZI2_3

DWORD

OB80_ERR_EV_CLASS

BYTE

OB80_ERR_EV_NUM

BYTE

OB80_OB_PRIORITY

BYTE

OB80_OB_NUM

BYTE

次の表は、「RD_SINFO」命令の START_UP_SI パラメータの構造体エレメントと、関連する
OB 100 のローカルタグの割り当てを示します。
START_UP_SI
構造体エレメント

データタイプOB 100 - ローカルタグ

データタイプ

EV_CLASS

BYTE

OB100_EV_CLASSBYTE

EV_NUM

BYTE

OB100_STRTUPBYTEPRIORITY

BYTE

OB100_PRIORITY

BYTE

NUM

BYTE

OB100_OB_NUMBR

BYTE

TYP2_3

BYTE

OB100_RESERVED_1

BYTE

TYP1

BYTE

OB100_RESERVED_2

BYTE

ZI1

WORD

OB100_STOP

WORD

ZI2_3

DWORD

OB100_STRT_INFO

DWORD

例
次の例では、最後に呼び出されたプログラムサイクル OB および最後に開始された CPU のスタートアップ OB の開始情報を読み出します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

OB1 で「RD_SINFO」命令を呼び出します。「RD_SINFO」命令のパラメータを以下のように相互接続します。
この例では、CPU に 1 つの OB のみを使用します。

2482

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断

入力パラメータ EN がシグナル状態「TRUE」を返すと、「RD_SINFO」命令が開始されます。
命令「RD_SINFO」は、最後に呼び出されたプログラムサイクル OB (OB1)の開始情報を読み出し、これを TOP_SI 出力パラメータ 「SI_ProgrammCycle」()に出力します。最後に開始されたスタートアップ OB の開始情報が、
出力パラメータ START_UP_SI 「SI_Startup」()に出力されます。
パラメータ「SI_Format」の値に従って、OB1 は、最適化された開始情報を使用します。
さらに、OB のクラス(「OB_Class」)と、OB の割り当て済み番号(「OB_Nr」)が読み出されます。スタートアップ OB は CPU で使用されていないため、スタートアップ OB「SI_Startup」()の番号(値が「0」の「OB_Nr」)は読み出されません。さらに、スタートアッ
プ OB の標準値(「SI_Format」、「OB_Class」)が表示されます。
出力パラメータ RET_VAL 「returnValue」()は、この例の処理がエラーなしで行われていることを示します(値は「0」です)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2483

拡張命令
4.10 診断プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.10.2

RT_INFO:ランタイム統計情報の読み出し

説明「RT_INFO」命令を使用して、特定のオーガニゼーションブロック、通信、またはユーザ
ープログラムのランタイムに関する統計情報を生成します。
MODE パラメータを使用して、出力する情報を選択します。
• MODE 1 ～ 3 は、OB パラメータで番号が指定された特定のオーガニゼーションブロッ
クのランタイムに関するデータを返します。
• MODE 10 および 11 は、1 秒間にわたって測定し、高優先度の OB によって使用される
合計ランタイムのパーセンテージの平均値(MODE 10)または通信によって使用される合計ランタイムのパーセンテージの平均値(MODE 11)を返します。
• MODE 20 および 21 は、通信およびユーザープログラムに割り当てられたランタイムのパーセンテージを返します。
• MODE 23 ～ 25 は、ユーザープログラムの最短、最長、および現在のサイクルタイムを出力します。
• MODE 30 ～ 32 は、ユーザープログラムのコンフィグレーションされた設定に関するデータを返します。
• MODE 50～55 は、S7-1500-R/H システムの SYNCUP システム状態に関するデータを返します。
すべての測定は、CPU がスタートアップから RUN に移行するとき、再び開始されます。
OB の最初の処理が完了するまで、OB のランタイムは使用できません。最初のサイクルが完了するまで、サイクルタイムは使用できません。
最初の測定が完了する前に RT_INFO を呼び出すと、関連する測定のプリセット値が INFOに入力され、RET_VAL に値 0 が割り当てられます。以下の表には、MODE = 1、2、3、23、24、および 25 のプリセット値が記載されています。

2484

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断

MODE

プリセット値

1

0

2

0

3

0x FFFF FFFF FFFF FFFF

23

0

24

0x FFFF FFFF FFFF FFFF

25

パラメータ化された最小サイクルタイム

パラメータ
以下の表に、「RT_INFO」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

MODE

Input

UINT

I、Q、M、D、L、 MODE パラメータを使用して、読み出
または定数

説明
す情報を選択します(表「MODE パラメータ」を参照)。

OB
RET_VAL

Input
ReturnOB_ANY
INT

I、Q、M、D、L、 OB パラメータを使用して、情報を読または定数み出す OB を選択します。

I、Q、M、D、L

エラー情報(「 RET_VAL パラメータ」を
参照)。

INFO

InOut

VARIANT

I、Q、M、D、L

読み出しデータの書き込み先の領域へのポインタ。INFO で必要なデータタ
イプは、MODE パラメータに応じて異なります(表「MODE パラメータ」を参照)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2485

拡張命令
4.10 診断パラメータ MODE
次の表に、MODE パラメータの値で返される情報を示します。
MODE 説明
(10 進
数)

1

OB パラ INFO の それ以降
メータの データタ 使用可能値
イプになる
CPU バージョン

注記

特定の OB のランタイム OB のランタイムは、CPU がこの OB DB 番号

LTIME

V1.5

のコマンドを処理する時間として定2
3

特定の OB の最大ランタ 義されます。このため、高優先度の DB 番号
OB および OB に割り込む通信タスク
イム
特定の OB の最小ランタ
イムの処理に必要な時間は含まれません。
OB の最初のコマンドの処理から最後

S7-1500

DB 番号

LTIME

S7-1500
V1.5

LTIME

S7-1500
V1.5のコマンドの処理までの(高優先度のOB および OB に割り込む通信タスクの処理を含む)完全な時間を判別する
場合は、命令「RUNTIME」を使用します。
10

高優先度の OB によって 平均化は、1 秒間にわたって行われま 関連なし UINT

S7-1500

使用される合計ランタイ す。

V1.5

ムのパーセンテージの平均値
ユーザープログラムで使用されるすべての OB (サイクリックなプログラム
OB より高優先度の OB)のランタイムが出力されます(ProgramCycle)。これらには、スタートアッ
プ OB を除くすべての OB
タイプが含まれます。
CPU が、使用できる OBとそれらの優先度を識別します。この情報は、プ
ログラミングに関する基本的な章に含まれていま
す。

2486

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
MODE 説明
(10 進
数)

11

注記

OB パラ INFO の それ以降
メータの データタ 使用可能値
イプになる
CPU バー
ジョン

通信によって使用される 平均化は、1 秒間にわたって行われま 関連なし UINT

S7-1500

合計ランタイムのパーセ す。

V1.5

ンテージの平均値

返された通信パーセンテージが、CPU

ユーザープログラムの合 パラメータ「通信によるサイクル負計ランタイムに対する、 荷」で指定された値よりも大きい可
通信プロセスのパーセン 能性があります。最小サイクルタイ
テージが出力されます。 ムを指定しているにもかかわらず、
ユーザープログラムでサイクルタイ
ムのすべてを必要としていない場合に、このような状態になることがあります。使用可能な残り時間は、通信プロセスで再度使用可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2487

拡張命令
4.10 診断
MODE 説明
(10 進
数)

20

21

OB パラ INFO の それ以降
メータの データタ 使用可能値
イプになる
CPU バー
ジョン

注記

評価が実行された最後の • 最後のサイクルが RT_INFO の呼び 関連なし UINT
出しから 2 秒以上経過してから開プログラムサイクルに基始される場合は、計算が実行されづく場合を除き、モード
ません。命令は値 65535 (0xFFFF)
10 と同一。
を出力します。
評価が実行された最後の • 最後のサイクルが RT_INFO の呼び 関連なし UINT
プログラムサイクルに基づく場合を除き、モード
11 と同一。

出しから 1 ms 未満で開始される
場合は、RT_INFO の呼び出しの 1
ms 前に評価が開始されます。

S7-1500
V1.7

S7-1500
V1.7• 最後のサイクルの持続時間が 1 ms未満であった場合、1 ms 間にわたって評価が行われます。このため、評価は複数のサイクルにわたる場合があります。
CPU のプロパティの最小サイクル
タイムを割り当てると、サイクル
タイムが 1 ms 未満に低下することを防止できます。
• モード 21 の場合:返された通信パーセンテージが、CPU パラメータ「通信によるサイクル負荷」で指定された値よりも大きい可能性があります。最小サイクルタイムを指定しているにもかかわらず、ユーザープログラムでサイクルタイ
ムのすべてを必要としていない場
合に、このような状態になることがあります。使用可能な残り時間
は、通信プロセスで再度使用可能
です。

2488

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
MODE 説明
(10 進
数)

注記

23

この時間は、TIA ポータルの[サイク 関連なし LTIME

最長サイクルタイム

OB パラ INFO の それ以降
メータの データタ 使用可能値
イプになる
CPU バージョン
V1.7

最後に STOP から RUN に ルタイム]ダイアログの[測定されたサ切り替わってからの最長 イクルタイム]の値に対応していまのサイクルタイム。
24

最短サイクルタイム
最後に STOP から RUN に

S7-1500

す。[オンライン＆診断|診断|サイクルタイム]を使用して、このダイアロ
グを開きます。

関連なし LTIME

S7-1500
V1.7

切り替わってからの最短のサイクルタイム。
25

関連なし LTIME

現在/最後のサイクルタイ

S7-1500
V1.7

ム
最後のサイクルタイム。
30

サイクルモニタリングタ この時間は、TIA ポータルの[サイク 関連なし LTIME

S7-1500

イム

V1.5

ルタイム]ダイアログの[設定されたサCPU プログラムの最大許 イクルタイム]の値に対応していま容時間。サイクルタイム す。[オンライン＆診断|診断|サイクがサイクルモニタ時間を ルタイム]を使用して、このダイアロ
グを開きます。
超えた場合、CPU は
STOP モードに切り替わ
るか、時刻エラー OB を
呼び出します。
31

ユーザープログラムの設定された最小サイクルタ

関連なし LTIME

S7-1500
V1.5

イムの出力。最小サイクルタイムが CPU のプロパ
ティに割り当てられている場合、最小サイクルタ
イムに達するまでオペレ
ーティングシステムが新しいサイクルの開始を遅延します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2489

拡張命令
4.10 診断
MODE 説明
(10 進
数)

32

設定された最大通信負荷 通信に割り当てられたサイクル負荷 関連なし UINT

S7-1500のパーセンテージでの出 のパーセンテージは、[通信負荷]の

V1.5

CPU プロパティで指定されます。

力50

OB パラ INFO の それ以降
メータの データタ 使用可能値
イプになる
CPU バージョン

注記

SYNCUP システム状態で -関連なし LINT

V2.6

転送される静的データ数
51

SYNCUP システム状態で -S7-1500

関連なし LINT

S7-1500
V2.6

既に転送済みの静的デー
タ数
52

SYNCUP システム状態で -関連なし LINT

V2.6

転送される動的データ数
53

SYNCUP システム状態で -S7-1500

関連なし LINT

S7-1500
V2.6

既に転送済みの動的デー
タ数54

バックアップ CPU が補う -関連なし LTIME

S7-1500
V2.6

ことが可能なプライマリ
CPU とバックアップ CPU
間の最大遅延55

バックアップ CPU のキャ -関連なし LTIME

S7-1500
V2.6

ッチアップフェーズにあるプライマリ CPU とバッ
クアップ CPU 間の実際の遅延パラメータ RET_VAL
次の表に、RET_VAL パラメータの値の意味を示します。
エラーコ 説明ード*(W#16#...
)
0

エラーは発生していません。

8080

MODE パラメータの値がサポートされていません。

2490

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
エラーコ 説明ード*(W#16#...
)
8081

OB パラメータで選択されたオーガニゼーションブロックがユーザープログラムに存在しません。

8092

選択された MODE パラメータは、この CPU バージョンではサポートされていません。

80C3

不十分なリソース。時間が経過してから、再び命令の呼び出しを試みます。

8452

INFO パラメータのデータタイプが正しくありません。MODE パラメータに応じて、正しいデータタイプが選択されたかどうかをチェックします。

例
次の例では、サイクルオーガニゼーションブロックのランタイムを読み出します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

• タイプ「Program cycle」のブロックを新規作成します。OB パラメータで DB 番号を指定します。
• MODE パラメータに「1」(特定 OB のランタイムを読み出す)を入力します。
• INFO パラメータ(この場合は「infoData」)で、LTIME データタイプのタグを指定します。
• 命令のエラーメッセージを出力するには、RET_VAL パラメータで、INT データタイプのタグを指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2491

拡張命令
4.10 診断
命令を呼び出した後、現在測定されているランタイムが「infoData」タグに書き込まれます。

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.10.3

LED :LED ステータス読み出し

説明「LED」命令を使用して、特定のモジュール LED のステータス(たとえば「オン」または「オフ」)を読み出すことができます。
• LADDR パラメータを使用し、CPU またはインターフェースをアドレス指定します。
• LED パラメータを使用し、命令で現在のステータスを読み出すモジュール LED を選択します。
• RET_VAL パラメータは、命令が呼び出されたときに選択された LED のステータスを出力します。選択された LED に基づいて、特定のステータス情報のみを表示できます。たとえば、1 色のみを持つ LED があります。特定の LED の可能なステータスに関する情報については、それぞれのモジュールのハードウェア文書を参照してください。
注記
S7-1500 CPU の LINK RX/TX-LED
いずれの S7-1500 CPU でも、LINK RX/TX LED の LED ステータスは読み出せないことにご注意ください。

2492

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断パラメータ
以下の表に、「LED」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

LADDR

Input

HW_IO

説明

I、Q、M、L、また CPU またはインターフェースのハードウ
は定数

ェア識別子
番号が自動的に割り当てられ、ハードウェアコンフィグレーションの CPU またはインターフェースのプロパティに保存されます(CPU 名 + ∼Common)。

LED

Input

UINT

I、Q、M、D、L、 LED の識別番号:
または定数• 1: STOP/RUN• 2: ERROR• 3: MAINT (保守)• 5: Link (緑色)
• 6: Rx/Tx (黄色)RET_VAL

Return

INT

I、Q、M、D、L

LED ステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2493

拡張命令
4.10 診断パラメータ RET_VAL
RET_VAL説明

0～9

LED ステータス:• 0 = LED が存在しないか、ステータス情報が使用不可• 1 = 常にオフ
• 2 = 色 1 (たとえば、LED STOP/RUN:緑) 常にオン
• 3 = 色 2 (たとえば、LED STOP/RUN:オレンジ色)常にオン• 4 = 色 1 が 2 Hz で点滅• 5 = 色 2 が 2 Hz で点滅• 6 = 色 1 および 2 が 2 Hz で交互に点滅• 7 = LED が点灯、色 1• 8 = LED が点灯、色 2• 9 = LED が存在しないか、ステータス情報が使用不可
互換性のために、RET_VAL のこの値について ENO が FALSE に設定されます。

8086

R/H システムが、RUN 二重化システム状態ではありません。このため、パートナー CPU のデータは使用できません。

8091

LADDR パラメータを使用してアドレス指定されたハードウェアコンポーネントが使用でき
ません。

8092

LADDR パラメータで、必要な情報を返さないハードウェアコンポーネントがアドレス指定されました。

8093

LED パラメータで指定された識別番号が定義されていません。

80Bx

LADDR パラメータで指定された CPU が「LED」命令をサポートしていません。

例
次の例では、CPU LED のステータスを読み出します。
グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

2494

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断CPU の HW 識別子は、パラメータ LADDR(「myLADDR」)を通じて「LED」命令に伝えられます。モニタする CPU LED がパラメータ LED(
「myLED」)に伝えられます。CPU LED (STOP/
RUN)のステータスが照会されます。CPU が STOP から RUN 動作モードになると、値「6」(緑色とオレンジ色の交互点灯)が出力パラメータ RET_VAL 「returnValue」()で示されます。
次に、値「2」(緑色の常時点灯)が LED ステータス(「returnValue」)として表示されます。

注記:STOP/RUN LED の色は、次のような意味を持ちます。
色

意味

赤色

STOP

緑色

RUN

緑色とオレンジ色の交互点灯

CPU はロード中

赤と緑色の交互点灯

プログラムの処理が実行中

LED の色の意味に関する追加情報は、CPU のハードウェア説明を参照してください。
プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2495

拡張命令
4.10 診断4.10.4

Get_IM_Data:識別およびメンテナンスデータの読み出し

説明「Get_IM_Data」命令は、デバイスから識別およびメンテナンスデータ(I&M)を読み取ります。LADDR パラメータを使用して、ハードウェア識別子によって I&M を読み取るデバイ
スを選択します。
IM_TYPE パラメータを使用して、命令を介して読み出されるデータを選択します。
• IM_TYPE = 0:I&M 0 データ
I&M 0 データは、デバイスのデバイス固有の基本情報であり、製造元 ID、注文番号、シ
リアル番号、ハードウェアおよびファームウェアのバージョンなどが含まれています。
I&M 0 データへの読み取りアクセスのみが可能です。この情報は、TIA ポータルでは、デバイスの「オンライン&診断」ビューにも表示されます。
• IM_TYPE = 11:CPU のパラメータ割り当てデータからの I&M 1 データ
I&M 1 データには、デバイスのファンクションの説明や、場所指定、つまり、プラント内でのデバイスの指定方法に関する情報が含まれています。
• IM_TYPE = 12:CPU のパラメータ割り当てデータからの I&M 2 データ
I&M 2 データには、据付日、つまり、プラント内にデバイスがいつ据え付けられたかに関する情報が含まれています。
• IM_TYPE = 13:CPU のパラメータ割り当てデータからの I&M 3 データ
I&M 3 データには、設置済みデバイスに関する追加情報が含まれています。追加情報はフリーテキストであり、希望通りに割り当てられます。
読み出される I&M データは、DATA パラメータで定義されたアドレス領域に書き込まれます。
読み取りジョブの実行ステータスは、BUSY、DONE、ERROR 出力パラメータおよび STATUS
出力パラメータの 2 つの中央のバイトによって表示されます。

定義:識別およびメンテナンスデータ(I&M)
識別および保守(I&M)データは、モジュールに保存された情報を参照します。これは、プラント設定のチェック、プラントでのハードウェア変更場所の特定、およびエラーの除去を支援します。
• 識別データ(I データ)は、読み取り専用のデバイスに関する静的情報です。
• 保守データ(M データ)は、インストール場所または日付など、プラント依存の情報を参照します。保守データは、設定中に作成され、モジュールに書き込まれます。

2496

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断パラメータ
以下の表に、「Get_IM_Data」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

LADDR

Input

HW_IO

I、Q、M、D、デバイスのハードウェア ID。番号は自動L、または定数

的に割り当てられ、デバイスのプロパティ
またはハードウェアコンフィグレーションに保存されます。

IM_TYPE

Input

UINT

I、Q、M、D、識別およびメンテナンスデータ番号

L、または定数

次の値が返されます。
• 0:I&M 0 データ• 11:CPU のパラメータ割り当てデータからの I&M 1 データ• 12:CPU のパラメータ割り当てデータからの I&M 2 データ• 13:CPU のパラメータ割り当てデータからの I&M 3 データ

DATA

InOut

VARIANT

I、Q、M、D、L

読み出された識別およびメンテナンスデー
タの保存のための領域(下記を参照)。

DONE

Output

BOOL

I、Q、M、D、L

命令が正常に実行されました。I&M データ
は DATA パラメータに転送されました。

BUSY

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:命令の実行が完了したか、まだ開始されていません。
• 1:命令の実行が未完了です。

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ。
このパラメータは、1 回の呼び出しの間のみ設定されます。したがって、これを表示するには、STATUS を空きデータ領域にコピーします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2497

拡張命令
4.10 診断
データタイプに関する詳細情報については、「AUTOHOTSPOT」を参照してください。

I&M 0 データのパラメータ DATA
配列(ARRAY of BYTE)または特殊なデータ構造体を使用して I&M 0 データを保存します。
• パラメータ DATA で配列(ARRAY of BYTE)をアドレス指定する場合、読み出された I&M 0
データは、DATA へのバイトシーケンスとしてコピーされます。アドレス指定された配列
が読み出されたデータよりも長い場合、不要なバイトがゼロで満たされます。
• I&M 0 データの場合、次の「IM0_Data」構造体を DATA パラメータで使用することも
できます。
パラメータ

データタイ バイトプ

説明

Manufacturer_ID

UINT

製造元 ID (シーメンスの場合は2「42」など)Order_IDSTRING[20] 20

注文番号

Serial_Number

STRING[16] 16

シリアル番号

Hardware_Revision

UINT

2

ハードウェアリビジョン

Software_Revision

STRUCT

4

ファームウェアリビジョン

Type

CHAR

1

-

Functional

USInt

1

-

Bugfix

USInt

1

-

Internal

USInt

1

-

Revision_Counter

UINT

2

リビジョンカウンタ

Profile_ID

UINT

2

プロファイル

Profile_Specific_Type UINT

2

デバイスクラス

IM_Version

WORD

2

I&M バージョン

I&M_Supported

WORD

2

デバイス終端でサポートされている I&M データ(I&M 0-I&M 4)

異なるデータタイプが DATA パラメータで使用される場合、STATUS パラメータエラーコ
ード 8093 を出力します。

2498

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断I&M 1、I&M 2、および I&M 3 データの DATA パラメータ
文字列(STRING)、配列(ARRAY of CHAR/BYTE)またはデータ構造体(STRUCT)を使用して、
I&M データを保存します。
• DATA パラメータで文字列(STRING データタイプ)をアドレス指定する場合、文字列の長さによって自動的に、読み取られた I&M データの長さが調節されます(最大 254 文字)。
• DATA パラメータでデータ構造体(ARRAY of CHAR/BYTE または STRUCT)をアドレス指定
した場合、読み取られた I&M データが、使用されるデータタイプの個々のコンポーネントに書き込まれます。アドレス指定されたデータ構造体が読み出されたデータよりも長い場合、残りのコンポーネントがゼロで満たされます。
• DATA パラメータで STRUCT データタイプを使用してデータ構造体を作成した場合には、最適化ブロックアクセスのないデータブロックを使用します(ブロックプロパティのカ
テゴリ「属性」を参照)。
DATA パラメータで STRING、ARRAY of BYTE/CHAR、または STRUCT 以外のデータタイプが使用された場合、STATUS パラメータによってエラーコード 8093 が生成されます。
注記
I&M データに関する追加情報
I&M データに関する詳細情報については、たとえば、PROFIBUS & PROFINET Internationalの Web サイト(リンク: http://www.profibus.com (http://www.profibus.com))を参照してください。

パラメータ STATUS
エラーコー
ド*(W#16#...)

説明

0

エラーは発生していません。

7001

非同期的命令「Get_IM_Data」の最初の呼び出し。命令の実行が未完了です(BUSY = 1、DONE
= 0)。

7002

非同期的命令「Get_IM_Data」の追加呼び出し。命令の実行が未完了です(BUSY = 1、DONE
= 0)。

8086

R/H システムが、RUN 二重化システム状態ではありません。このため、パートナー CPU のデータは使用できません。

8091

LADDR パラメータでアドレス指定されたデバイスが存在しません。

8092

LADDR が、I&M データの出力をサポートしていないデバイスをアドレス指定しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2499

拡張命令
4.10 診断
エラーコー
ド*(W#16#...)

説明

8093

DATA パラメータのデータタイプはサポートされません。

80A1

LADDR が、I&M 1、I&M 2 または I&M 3 データの出力をサポートしていないデバイスをアドレス指定しています。

80B1

使用できる有効なデータがありません。(I&M データが(サブ)モジュールでサポートされていないか、当該デバイスについて I&M データを設定していません。)

80B2

IM_TYPE パラメータの値が無効であるか、選択された IM_TYPE が CPU またはアドレス指定されたデバイスによってサポートされません。

80C3

インスタンスの最大 10 の並列実行を超えています。
• 10 を超える並列呼び出しを避ける。
• これは一時的なエラーであるため、後で呼び出しを繰り返す。

8752

DATA パラメータで指定されたメモリ領域が小さすぎて、すべての I&M データを保存できません。読み取られた I&M データは、指定されたメモリ領域の最大長までのみが保存されます。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、S7-1500 CPU の IM0 データを読み出します。IM0 データは、デバイスの基本情報であり、製造元 ID、注文番号、シリアル番号、ハードウェアおよびファームウェアのバージョンなどが含まれています。
グローバルデータブロックに、IM0 データを保存するために 4 つのタグと IM0_Data デー
タタイプの構造体を作成します。この場合、構造体に任意の名前(「MyPLC_IM_Data」)を割
り当てることができます。

LADDR パラメータに CPU のハードウェア識別子を入力します。ハードウェア識別子は製品を一意に識別します。CPU のハードウェア識別子を判別するには、PLC タグテーブルおよび[システム定数]タブを開きます。次に、[名前]列で CPU を検索します。関連値は、LADDR
パラメータに入力するハードウェア識別子です。

2500

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断

命令が正常に実行されると、IM0 データがデータブロックに書き込まれます。

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2501

拡張命令
4.10 診断4.10.5

GET_NAME:IO デバイスまたは DP スレーブの名前の読み出し

説明「GET_NAME」命令は、IO デバイスまたは DP スレーブの名前を読み出します。この名前は、ネットワークビューおよび IO デバイスまたは DP スレーブのプロパティに表示されます。次のスクリーンショットは、IO デバイスを例として使用してこれを示しています。

PROFINET IO システムまたは DP マスタシステムのハードウェア識別子(LADDR パラメータで)および IO デバイスのデバイス番号または DP スレーブの PROFIBUS アドレス
(STATION_NR パラメータ)を使用することによって、IO デバイスまたは DP スレーブを選択します。
命令が正常に実行されると、IO デバイスまたは DP スレーブの名前が DATA パラメータでアドレス指定された領域に書き込まれます。
読み出される名前は、IO デバイスのタイプに応じて異なります。
• DP スレーブまたは IO デバイスの場合、ヘッドモジュールの名前が出力されます。
• I スレーブまたは I デバイスの場合、インターフェースモジュールの名前が出力されま
す。

2502

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断• HMI パネルの場合、インターフェースの名前が出力されます。
• PC ステーションの場合、インターフェースモジュールの名前が出力されます。
• GSD デバイスの場合、デバイスアクセスポイント(DAP)の名前が表示されます(インターフェースモジュールまたはヘッドモジュールの名前)。
名前の長さは、LEN パラメータに出力されます。名前が DATA パラメータで指定された領域よりも長い場合、アドレス領域の最大長に対応するセクションのみが書き込まれます。
名前の最大長は、128 文字です。
注記
CPU 読み出しの名前(バージョン 1.1)
LADDR および STATION_NR パラメータのそれぞれに「0」を割り当てると、この命令はCPU の名前を出力します。

パラメータ
以下の表に、「GET_NAME」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

LADDR

Input

HW_IOSYSTE

I、Q、M、D、L、 PROFINET IO または DP マスタシステム

M

または定数

のハードウェア識別子。この番号は、システム定数、または、PROFINET IO シス
テムまたは DP マスタシステムのプロパ
ティから取得されます。

STATION_NR Input

UINT

I、Q、M、D、L、 PROFINET IO デバイスのデバイス番号ままたは定数

たは DP スレーブの PROFIBUS アドレス。この番号は、ネットワークビューお
よび IO デバイスまたは DP スレーブのプ
ロパティに表示されます。

DATA

InOut

VARIANT

I、Q、M、D、L

名前が書き込まれる領域へのポインタ。

DONE

Output

BOOL

I、Q、M、D、L

命令が正常に実行されました。DATA パ
ラメータで IO デバイスまたは DP スレー
ブの名前が領域に転送されました。

BUSY

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:命令の実行が完了しました。
• 1:命令の実行が未完了です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2503

拡張命令
4.10 診断
パラメータ

宣言

データタイプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力
されます。

LEN

OutputDINT

I、Q、M、D、L

IO デバイスまたは DP スレーブの名前の長さ(文字数)。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。したがって、ステー
タスを表示するには、STATUS を空きデータ領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコー
ド*(W#16#...)

説明

0

エラーは発生していません。

7001

非同期的命令「GET_NAME」の最初の呼び出し。命令の実行が未完了です(BUSY = 1、DONE
= 0)。

7002

非同期的命令「GET_NAME」の追加呼び出し。命令の実行が未完了です(BUSY = 1、DONE =
0)。

8090

LADDR パラメータで指定されたハードウェア識別子が、プロジェクトに存在しません。

8092

LADDR パラメータの値が PROFINET IO システムまたは DP マスタシステムをアドレス指定していません。

8093

命令が、DATA パラメータのデータタイプをサポートしていません。

8095• デバイス番号(STATION_NR パラメータ)が、選択されている PROFINET IO システム内に存在していないか、IO デバイスをアドレス指定していません。
• PROFIBUS アドレス(STATION_NR パラメータ)が、選択されている DP マスタシステム内に存在しません。

80B1

2504

使用している CPU がこの命令をサポートしていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
エラーコー
ド*(W#16#...)

説明

80C3

一時的なリソースエラー:CPU は現在、可能な最大数の同時ブロック呼び出しを処理しています。「GET_NAME」は、少なくとも 1 つのブロック呼び出しが終了するまで、実行できません。

8852

DATA パラメータで指定された領域に、IO デバイスまたは DP スレーブの名前すべてが収まりません。名前が、可能な最大長まで書き込まれます。
名前全体を読み込むには、DATA パラメータにより長いデータ領域を使用します。この領域には、LEN パラメータ以上の文字数が必要です。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例は、HMI パネルのステーション名を読み出す方法を示します。
HMI パネルの設定• ステーション名「HMI_IO-Device」を持つ HMI パネルはネットワークビューで作成され、CPU と同一の PROFINET IO システムに割り当てられます。
• HMI パネルの動作モード「IO デバイス」がハードウェアコンフィグレーションのプロ
パティで有効にされ、CPU が IO コントローラとして割り当てられました。
• デバイス番号「20」が、プロパティの「イーサネットアドレス」で割り当てられました。

グローバルデータブロックにデータを保存するために、以下のタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2505

拡張命令
4.10 診断

命令「GET_NAME」へのパラメータの割り当て:• 入力パラメータ LADDR に IO システムのハードウェア識別子(262)を入力します。
• 入力パラメータ STATION_NR に HMI パネルのデバイス番号(2)を入力します。
• 「GET_NAME」命令の残りのパラメータを以下のように相互接続します。

2506

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
この命令の実行• 命令を実行した後、HMI パネルのステーションの名前(HMI_IO-Device)がパラメータ
DATA 「moduleName」()に保存されます。
• この名前の文字数がパラメータ LEN に出力されます(13)。
• IO デバイスの読み出し成功後に GET_NAME が停止されなかったため、出力パラメータ
BUSY 「busy」()が値「TRUE」を表示し、出力パラメータ STATUS 「status」()が値「16#7002」を表示します。

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.10.6

GetStationInfo: IO デバイスの情報の読み取り

説明「GetStationInfo」命令を使用し、PROFINET IO デバイスの情報を読み取ることができます。
この命令は、下位の IO システムに配置された IO デバイス(CP/CM 経由で接続済み)の情報の読み取りも可能にします。
この IO デバイスは、LADDR パラメータでステーションのハードウェア識別子によってアドレス指定されます。ハードウェア識別子は、「デバイス&ネットワーク」ビューでステーションプロパティに表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2507

拡張命令
4.10 診断
MODE パラメータを使用し、読み取る情報を選択します。
DATA パラメータで、読み出されたアドレスデータの書き込み先となるデータ領域を指定します。IP アドレスの保存には、「IF_CONF_v4」構造体を使用します。MAC アドレスの保存には、「IF_CONF_MAC」構造体を使用します。
REQ 制御パラメータを使用して、アドレスデータの読み出しを有効にします。これには、アクセス可能な IO デバイスが必要です。
読み取りジョブの実行ステータスは、BUSY、DONE、ERROR 出力パラメータおよび STATUS
出力パラメータによって表示されます。
注記
ステーションのハードウェア識別子のみを使用する IO デバイスのアドレス指定
ステーション、IO デバイス、および PROFINET インターフェースには、独自のハードウェ
ア識別子があります。「GetStationInfo」命令には、ステーションのハードウェア識別子のみを使用します。
たとえば、PROFINET インターフェースが LADDR パラメータを介してアドレス指定された
場合、アドレスデータは読み出されず、8092 エラーコードが生成されます。
集中構成で統合 PROFINET インターフェースまたは CM/CP のアドレスデータを読み取るには、「RDREC」命令を使用します。

パラメータ
以下の表に、「GetStationInfo」命令のパラメータを示します。
パラメー
タ

宣言

データタイ メモリ領域
プ

REQ

Input

BOOL

説明

I、Q、M、D、 制御パラメータ要求
L

REQ = "1"で情報の読み取りを有効
にします。

LADDR

Input

HW_DEVIC

I、Q、M、D、 IO デバイスのステーションのハー

E

L、または定数 ドウェア識別子
この番号は、ネットワークビューのステーションのプロパティから、または既定のタグテーブルの[システム定数]タブから取得しま
す。

2508

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
パラメー
タ

宣言

データタイ メモリ領域
プ

説明

DETAILInput

HW_SUBM

I、Q、M、D、 DETAIL パラメータは使用されま

ODULE

L、または定数 せん。パラメータを未接続のまま
にします。

MODE

Input

UINT

I、Q、M、D、 読み出されるアドレスデータの選
L、または定数 択:• MODE = 1:IPv4 に従ったアドレ
スパラメータ(ファームウェア
バージョン V1.1 以降のS7-1500 CPU)
• MODE = 2:MAC アドレス(ファームウェアバージョン V1.5 以
降の S7-1500 CPU)

DATA

InOut

VARIANT

D、L

IO デバイスのアドレスデータが書き込まれる領域へのポインタ。
MODE = 1 の場合は
「IF_CONF_v4」構造体を使用し、MODE = 2 の場合は
「IF_CONF_MAC」構造体を使用し
ます。

DONE

Output

BOOL

I、Q、M、D、 命令が正常に実行されました。アL

ドレスデータは DATA パラメータに転送されました。

BUSY

Output

BOOL

I、Q、M、D、 STATUS パラメータL• 0:命令の実行が完了しました。
• 1:命令の実行が未完了です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2509

拡張命令
4.10 診断
パラメー
タ

宣言

データタイ メモリ領域
プ

ERROR

OutputBOOL

説明

I、Q、M、D、 STATUS パラメータL• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、D、 STATUS パラメータ。
L

このパラメータは、1 回の呼び出
しの間のみ設定されます。このため、ステータスを表示するには、
STATUS を空きデータ領域にコピーする必要があります。

データタイプに関する詳細情報については、「AUTOHOTSPOT」を参照してください。

パラメータ DATA• DATA パラメータの「IF_CONF_v4」構造体を使用して、IPv4 に従ってアドレスパラメ
ータを保存します。
バイ パラメータト

データタイ 開始値
プ

説明

0…

Id

UINT

30

「IF_CONF_v4」構造体の ID。

Length

UNIT

18

BYTE で読み取られたデータの長さ。

Mode

UNIT

0

「GetStationInfo」命令には関連なし

1
2…
3
4 ...
5

「0」では左)。
(6 ...

InterfaceAddre ARRAY

9

ss

-

IP_V4 形式での IO デバイスの IP アドレ[1..4] ofス、たとえば 192.168.3.10 の場合:

BYTE

• addr[1] = 192• addr[2] = 168• addr[3] = 3• addr[4] = 102510

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断バイ パラメータト

データタイ 開始値
プ

説明

10

ARRAY

IP_V4 形式での IO デバイスのサブネッ

SubnetMask

… 13

-

[1..4] of

トマスク、たとえば 255.255.255.0 の

BYTE

場合:
• addr[1] = 255• addr[2] = 255• addr[3] = 255• addr[4] = 0

14 ... DefaultRouter

ARRAY

-

IP_V4 形式でのルータの IP アドレス、

17[1..4] of

たとえば 192.168.3.1 の場合:

BYTE

• addr[1] = 192• addr[2] = 168• addr[3] = 3• addr[4] = 1• パラメータ DATA の「IF_CONF_MAC」構造体を使用して、MAC アドレスを保存します。
バイ パラメータト

データタイ 開始値
プ

説明

0…

Id

UINT

3

「IF_CONF_MAC」構造体の ID。

LengthUNIT

12

BYTE で読み取られたデータの長さ。

Mode

UNIT

0

「GetStationInfo」命令には関連なし

1
2…
3
4 ...
5
6 ...

「0」では左)。
(MACAddress

11

ARRAY

-

IO デバイスの MAC アドレス、たとえ[1..6] ofば、08-00-06-12-34-56 の場合

BYTE• Mac[1] = 8• Mac[2] = 0• Mac[3] = 6• Mac[4] = 12
• Mac[5] = 34
• Mac[6] = 56

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2511

拡張命令
4.10 診断パラメータ STATUS
エラーコー 説明ド*
(W#16#...)
0

エラーは発生していません。

7000

進行中のジョブはありません。

7001

非同期的命令「GetStationInfo」の最初の呼び出し。命令の実行が未完了です(BUSY = 1、DONE = 0)。

7002

非同期的命令「GetStationInfo」の追加呼び出し。命令の実行が未完了です(BUSY = 1、DONE = 0)。

8080

MODE パラメータの値がサポートされていません。

8090

LADDR パラメータで指定されたハードウェア識別子が未設定です。

8092

LADDR パラメータが、PROFINET IO デバイスをアドレス指定していません。

8093

DATA パラメータの無効なデータタイプ。

80A0

要求された情報が読み出されません。

80C0

アドレス指定された IO デバイスに到達できません。

80C3「GetStationInfo」命令の同時呼び出しの最大数(10 インスタンス)に達しています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
下記では、„GetStationInfo“命令を使用して、IO デバイスの IP アドレスデータを読み出し、この情報をデータブロックに書き込みます。IP アドレスデータには、IP アドレス、サブネ
ットマスク、およびルータ(使用する場合)のアドレスデータが含まれます。
命令は IO コントローラ上で実行され、下位レベルの IO デバイスの IP アドレス情報(この例では ET200MP)を読み出します。

2512

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断

グローバルデータブロックに、データを保存するために 5 つのタグと IF_CONF_v4 データ
タイプの構造体を作成します。構造体に任意の名前を割り当てます(この場合、「IP_Address」)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2513

拡張命令
4.10 診断
次に GetStationInfo 命令を呼び出します。
• DATA パラメータで IF_CONF_v4 構造体を使用します。
• LADDR パラメータに IO デバイスのハードウェア識別子を入力します。ハードウェア識
別子は製品を一意に識別します。IO デバイスのハードウェア識別子を判別するには、
PLC タグテーブルおよび[システム定数]タブを開きます。次に、名前列でデバイスを検索し、データタイプ列で„Hw_Device“を検索します。関連値は、LADDR パラメータに入力するハードウェア識別子です。
• MODE パラメータで「1」を選択します(IPv4 に従ったアドレスパラメータの読み取り)。

REQ= 1 (TRUE)を使用して、アドレスデータの読み出しを開始します。命令が正常に実行されると、IP アドレスデータがデータブロックに書き込まれます。
プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

2514

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断4.10.7

GetChecksum:チェックサムを読み出し

説明「GetChecksum」命令は、オブジェクトのグループのチェックサムを読み出します。オブジェクトは、パラメータ「Scope」で選択します。
注記
ブロックのチェックサムの生成
標準ブロックとセーフティブロック間には、チェックサムの生成の点で違いがあります。
追加情報については、STEP 7 Safety オプションパッケージのヘルプを参照してください。

パラメータ
以下の表に、「GetChecksum」命令のパラメータを示します。
パラメータ

宣言

データタイプ

説明

Scope

Input

UINT

Scope パラメータを使用して、チェック
サムを読み出すオブジェクトを選択します。
• 1:標準ブロック(すなわち、セーフティ
ブロックなし)• 2:セーフティブロック
• 3:テキストリスト

Range(非表

Input

UINT

示)
Subrange(非

す。
Input

UINT

表示)
Done

「Range」の値は 0 である必要がありま「Subrange」の値は 0 である必要があります。

OutputBOOL

命令が正常に実行されました。チェック
サムは Checksum パラメータに転送され
ました。

Busy

OutputBOOL

STATUS パラメータ• 0:命令の実行が完了しました。
• 1:命令の実行が未完了です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2515

拡張命令
4.10 診断
パラメータ

宣言

データタイプ

説明

Error

OutputBOOL

STATUS パラメータ• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、「Status」パラメータで出力されます。

Status

OutputWORD

STATUS パラメータ。
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示するには、STATUS を空きデータ領域にコピーする必要があります。

Checksum

InOut

VARIANT

チェックサム「Checksum」パラメータは ARRAY[0..7]
of BYTE データタイプのタグをポイントする必要があります。未使用バイトは 0 に設定されます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ「Status」
エラーコー 説明ド*
(W#16#...)
0

エラーは発生していません。

7001

最初の呼び出し:チェックサムの生成が開始されました

7002

中間呼び出しチェックサムの生成が既に有効です

8080「Scope」パラメータの値が無効です

8081「Range」パラメータは、このファームウェアバージョンではサポートされていないため、値 0 である必要があります。

8082「Subrange」パラメータは、このファームウェアバージョンではサポートされていないため、値 0 である必要があります。

8091

2516

「GetChecksum」命令は、CPU によってサポートされていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
エラーコー 説明ド*
(W#16#...)
8852「Checksum」パラメータがポイントするタグのデータタイプが間違っています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、S7-1500 CPU の標準ブロックのチェックサムを読み出します。
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

FB を作成します。FB で以下のローカルタグを作成します。

ネットワーク 1:「GetChecksum」命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2517

拡張命令
4.10 診断

ネットワーク 2:エラーが発生した場合は、ステータスを以下のように保存します。

ノーマルオープン(「execute」)がシグナル状態「TRUE」を表示する場合、「GetChecksum」
命令が実行されます。入力パラメータ SCOPE 「scope」()の値「1」に従って、標準ブロッ
クのチェックサムが読み出されます。チェックサムは、CHECKSUM 「checksum」()パラメータに出力されます。GetChecksum の成功ステータスは出力パラメータ DONE「done」()に表示されます。
出力パラメータ STATUS 「#status」および「memErrStatus」()および ERROR 「error」()は、この例の処理がエラーなしで完了したことを示します。

2518

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断CPU のプロパティでチェックサムを確認することもできます。

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.10.8

GetSMCinfo:SIMATIC メモリカードに関する情報の読み出し

説明
命令「GetSMCinfo」を使用して、挿入された SIMATIC メモリカードに関する情報を取得します。読み出す情報は、パラメータ「Mode」で選択します。
• Mode = 0、1、2、3:標準 CPU で許可• Mode = 10～13 および 20～23:S7-1500-R/H CPU で許可
Mode の値 10～13 は、二重化 ID 1 の CPU の値です。
Mode の値 20～23 は、二重化 ID 2 の CPU の値です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2519

拡張命令
4.10 診断REQ 制御パラメータを使用して、アドレスデータの読み出しを有効にします。出力パラメ
ータ Done、Busy、Error および Status は、ジョブのステータスを示します。

2520

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断

読み出し可能な R/H システムのシステムステータスに関する情報の依存性• メモリサイズ
システム状態および CPU CPU のペアリング 許容モード値のロール(該当する場合) 状態
RUN-Solo、プライマリ

ペアリングなし

CPU• 二重化 ID=1:Mode=10 (自身のSMC)
• 二重化 ID=2:Mode=20 (自身のSMC)

ペアリングあり• 二重化 ID=1:– Mode=10 (自身の SMC)、または– Mode=20 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=10 (パートナー CPU のSMC)、または– Mode=20 (自身の SMC)SYNCUP、プライマリ-

CPU• 二重化 ID=1:– Mode=10 (自身の SMC)、または– Mode=20 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=10 (パートナー CPU のSMC)、または– Mode=20 (自身の SMC)

RUN 二重化-• 二重化 ID=1:– Mode=10 (自身の SMC)、または– Mode=20 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=10 (パートナー CPU のSMC)、または– Mode=20 (自身の SMC)

• 使用中のメモリ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2521

拡張命令
4.10 診断
システム状態および CPU CPU のペアリング 許容モード値のロール(該当する場合) 状態
RUN-Solo、プライマリ

対象外

CPU

• 二重化 ID=1:Mode=11 (自身のSMC)
• 二重化 ID=2:Mode=21 (自身のSMC)

SYNCUP、プライマリ-CPU

GetSMCinfo の開始時刻、および 2 つの CPU の同期に応じて、情報を読み出せるかどうかが決まります。
読み出せる場合:• 二重化 ID=1:– Mode=11 (自身の SMC)、または– Mode=21 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=11 (パートナー CPU のSMC)、または– Mode=21 (自身の SMC)

RUN 二重化-• 二重化 ID=1:– Mode=11 (自身の SMC)、または– Mode=21 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=11 (パートナー CPU のSMC)、または– Mode=21 (自身の SMC)

注記
メモリサイズが異なるメモリカードでの占有メモリスペースの判別
R/H システムの 2 つの CPU でメモリサイズが異なるメモリカードを使用する場合、占有
メモリスペースの判別方法によって、メモリの内容が同一であっても異なる結果となる可能性があります。これは、メモリカードのクラスタサイズが異なるためです。

2522

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断• 経過した耐用年数の割合
システム状態および CPU CPU のペアリング 許容モード値のロール(該当する場合) 状態
RUN-Solo、プライマリ

対象外

CPU

• 二重化 ID=1:Mode=12 (自身のSMC)
• 二重化 ID=2:Mode=22 (自身のSMC)

SYNCUP、プライマリ-CPU

GetSMCinfo の開始時刻、および 2 つの CPU の同期に応じて、情報を読み出せるかどうかが決まります。
読み出せる場合:• 二重化 ID=1:– Mode=12 (自身の SMC)、または– Mode=22 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=12 (パートナー CPU のSMC)、または– Mode=22 (自身の SMC)

RUN 二重化-• 二重化 ID=1:– Mode=12 (自身の SMC)、または– Mode=22 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=12 (パートナー CPU のSMC)、または– Mode=22 (自身の SMC)

• 設定済み耐用年数しきい値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2523

拡張命令
4.10 診断
システム状態および CPU CPU のペアリング 許容モード値のロール(該当する場合) 状態
RUN-Solo、プライマリ

対象外

CPU

• 二重化 ID=1:– Mode=13 (自身の SMC)、または– Mode=23 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=13 (パートナー CPU のSMC)、または– Mode=23 (自身の SMC)SYNCUP、プライマリ-

CPU• 二重化 ID=1:– Mode=13 (自身の SMC)、または– Mode=23 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=13 (パートナー CPU のSMC)、または– Mode=23 (自身の SMC)

RUN 二重化-• 二重化 ID=1:– Mode=13 (自身の SMC)、または– Mode=23 (パートナー CPU のSMC)• 二重化 ID=2:– Mode=13 (パートナー CPU のSMC)、または– Mode=23 (自身の SMC)

2524

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断パラメータ
次の表に、「GetSMCinfo」命令のパラメータを示します。
パラメータ

宣言

データタイプ 説明

REQ

Input

BOOL

制御パラメータ要求
REQ = "1"で情報の読み取りを有効にします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2525

拡張命令
4.10 診断
パラメータ

宣言

データタイプ 説明

Mode

Input

UINT

Mode パラメータを使用して、読み出す SIMATIC メモリカード
に関する情報を選択します。
• 0:KiB 単位のメモリサイズ(1 KiB = 1024 バイト)
• 1:KiB 単位の使用中のメモリサイズ• 2:保守情報:以前に消費された寿命の割合(%)
注記:– S7-1500 ソフトウェアコントローラおよび S7-PLCSIM
では、モード=2 の場合、0x00 が常に Info に入力されます(使用できる保守情報はありません)。
– 一般にこの情報をサポートしていないか、CPU の現在のファームウェアでこの情報を提供できない SIMATIC メモ
リカードでは、0xFF が Info に入力されます。
• 3:CPU が診断バッファエントリを作成し、保守 LED を有効にするまでの寿命の割合をパーセンテージとして設定。
注記:– この情報は、計画データからではなく、メモリカードか
ら読み出されます。診断割り込みの生成を無効にした場合、0xFF が Info に入力されます。
– S7-1500 ソフトウェアコントローラおよび S7-PLCSIM
では、Mode=3 の場合、0xFF が常に Info に入力されます。
• 10 または 20:標準 CPU の Mode=0 に該当– Mode 10:二重化 ID 1 の CPU 内の SMC のメモリサイズ– Mode 20:二重化 ID 2 の CPU 内の SMC のメモリサイズ• 11 または 21:標準 CPU の Mode=1 に該当– Mode 11:二重化 ID 1 の CPU 内の SMC の使用中のメモ
リ– Mode 21:二重化 ID 2 の CPU 内の SMC の使用中のメモリ• 12 または 22:標準 CPU の Mode=2 に該当– Mode 12:二重化 ID 1 の CPU の経過した耐用年数の割合– Mode 22:二重化 ID 2 の CPU の経過した耐用年数の割合• 13 または 23:標準 CPU の Mode=3 に該当– Mode 13:二重化 ID 1 の CPU の設定済み耐用年数しきい値– Mode 23:二重化 ID 2 の CPU の設定済み耐用年数しきい値

2526

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
パラメータ

宣言

データタイプ 説明

Done

OutputBOOL

1:命令は正常に実行されました。読み出された情報は Info パ
ラメータに転送されました。

Busy

OutputBOOL

STATUS パラメータ• 0:命令の実行が完了しました。
• 1:命令の実行が未完了です。

Error

OutputBOOL

STATUS パラメータ• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、Status パラメータで出力されます。

Status

Output

WORD

エラーコード

Info

InOut

UDINT

読み出された情報のバッファ。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記
I&M 0 データの識別
GetSMCinfo 命令を使用して SIMATIC メモリカードの I&M 0 データを識別することはできません。そのためには、命令「Get_IM_Data (ページ 2496)」を使用します。

パラメータ Status
エラーコード*(W#16#...)

説明

0

エラーは発生していません。

7000

進行中のジョブはありません。

7001

最初の呼び出し:ジョブのトリガ(Busy = 1、Done = 0)。

7002

中間呼び出しジョブが既に有効です(Busy = 1、Done = 0)。

8080「Mode」パラメータの値が無効です

8081 (S7-1200 の SIMATIC メモリカードが挿入されていません。
み)8086

R/H システムが、RUN 二重化システム状態ではありません。このため、パートナー CPUのデータは使用できません。

8091「Mode」パラメータの選択値は、S7-1500-R/H CPU でしか使用できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2527

拡張命令
4.10 診断
エラーコード*(W#16#...)

説明

8092

たとえば、「GetSMCinfo」が CPU でサポートされていないため、データを使用できま
せん。

80C3

「GetSMCinfo」命令の同時呼び出しの最大数に達しています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、使用された SIMATIC メモリカードのメモリサイズを識別します。
グローバルデータブロックにデータを保存するために、以下のタグを作成します。

FB を作成します。この FB のステータス領域で、Bool データタイプのローカルタグ「#done」を作成します。
「GetSMCinfo」命令のパラメータを以下のように相互接続します。

2528

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断「GetSMCinfo」命令は、入力パラメータ REQ 「execute」()がシグナル状態「TRUE」を返す
場合にしか実行されません。SIMATIC メモリカードの読み出しに使用されるモードは、入力
パラメータ MODE 「mode」()に保存されます。SIMATIC メモリカードのメモリサイズは、値「0」に従って読み出され、パラメータ INFO 「getInfo」()に KB 単位で表示されます。
GetSMCinfo の成功ステータスが出力パラメータ DONE 「#done」()に表示され、タグ「done」に保存されます。
出力パラメータ STATUS 「status」()および ERROR 「error」()は、この例の処理がエラーなしで完了したことを示します。

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

4.10.9

GetClockStatus:CPU クロックのステータスの読み出し

説明「GetClockStatus」命令を使用し、内部 CPU クロックから以下の情報を読み出します。
• CPU のプロパティで NTP サーバー経由の時刻同期が有効になっているかどうかに関する情報(ClockStatus パラメータのビット 1)。
• 時刻同期に失敗していないかどうかに関する情報(ClockStatus パラメータのビット 0)。
• サマータイムまたは標準時間が有効かどうかに関する情報(ClockStatus パラメータのビ
ット 2)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2529

拡張命令
4.10 診断パラメータ
次の表に、「GetClockStatus」命令のパラメータを示します。
パラメータ

宣言

データタイプ 説明

ClockStatus

OutputWORD

内部 CPU クロックのステータス:• ビット 0:時刻同期に失敗していないかどうかに関する情報– ビット 0 = 1:時刻同期が 1 回以上失敗している。
– ビット 0 = 0:時刻同期が失敗していない。
ビット 0 の評価に関する注記:ビット 0 は、時刻同期が有効(ビット 1 = 1)な場合しか評価できません。
以下のケースでは、ビット 0 が 0 にリセットされます。
– CPU の再起動後– 時刻設定後
S7-1500 CPU では、時刻同期に失敗してから 1 に切り替わるまでに最短でも 3 分かかることにご注意ください。
• ビット 1 = 1:時刻同期が有効• Bit2– = 1:サマータイムがアクティブ– = 0:標準時間がアクティブ• ビット 3～15:0 (予約済み)

Ret_ValOutput

INT

戻り値

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ Ret_Val
エラーコード*(W#16#...)

説明

0

エラーは発生していません。

8092

たとえば、「GetClockStatus」が CPU でサポートされていないため、データを使用できません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、CPU 内部クロックのステータスを判定します。

2530

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
データを保存するために、グローバルデータブロックで 1 つのタグ、および 5 つのタグを含む構造体を作成します。

パラメータの相互接続

命令「GetClockStatus」を FB で呼び出します。FC 内で以下のローカルタグを作成します。

ネットワーク 1:「GetClockStatus」命令のパラメータを以下のように相互接続します。

CPU 内部クロックのステータス情報を復号するには、以下のように「#clockStatus」タグを接続します。
ネットワーク 2:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2531

拡張命令
4.10 診断

ネットワーク 3:

ネットワーク 4:

結果CPU が RUN モードの場合、「GetClockStatus」命令が実行されます。CPU 内部クロックのステータスは、出力パラメータ CLOCKSTATUS 「#clockStatus」()にデータタイプ WORD で出

2532

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
力されます。以下のネットワーク(2～4)では、ステータス値が復号化され、「itemiseClockStatus」構造体にプレーンテキストの名前として出力されます。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

プログラムコード

追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

4.10.10DeviceStates: IO システムのモジュールステータス情報の読み取り

説明
IO システムのすべてのモジュールに対して特定のステータス情報を照会するには、命令「DeviceStates」を使用します。つまり、• PROFINET IO システムのすべての IO デバイス
• または DP マスタシステムのすべての DP スレーブに対してです。
出力されるブール値は、選択されたステータスが適用されるモジュールを示します。たと
えば、PROFINET IO システムで現在無効になっている IO デバイスを読み出します。
読み取られるステータス情報が 1 つ以上の IO デバイスまたは DP スレーブに適用されるかどうかに関する情報も表示されます。
この命令は、サイクリック OB でも割り込み OB でも呼び出すことができます(OB82 - 診断
割り込みなど)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2533

拡張命令
4.10 診断パラメータ
以下の表に、「DeviceStates」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

LADDR

Input

HW_IOSYSTE

I、Q、M、L、または PROFINET IO または DP マスタシス

M

定数

テムのハードウェア識別子(以下の説
明を参照)

MODE
RET_VAL

Input
ReturnUINT
INTI、Q、M、D、L、ま 読み出されるステータス情報の選択
たは定数(以下の説明を参照)

I、Q、M、D、L

命令のステータス(以下の説明を参
照)

STATE

InOut

VARIANT

I、Q、M、D、L

IO デバイスまたは DP スレーブのス
テータス用バッファ(以下の説明を参照)

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ LADDR
ハードウェア識別子によって、LADDR パラメータで PROFINET IO または DP マスタシステ
ムを選択します。
以下のハードウェア識別子が使用できます。
• ネットワークビューで、PROFINET IO または DP マスタシステムのいずれかのプロパテ
ィに入力します。
• または、PLC タグテーブルで、リストされたデータタイプ HW_IOSYSTEM のシステム定数に入力します。

パラメータ MODE
MODE パラメータを使用して、ステータス情報を読み出します。PROFINET IO または DP マ
スタシステム全体に対して、以下のステータス情報項目の 1 つを読み出すことができます。
• 1:IO デバイス/DP スレーブが設定されます• 2:IO デバイス/DP スレーブに障害があります• 3:IO デバイス/DP スレーブが無効です

2534

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断• 4:IO デバイス/DP スレーブが存在します• 5:問題が発生した IO デバイス/DP スレーブ。たとえば、– メンテナンス要求または推奨– アクセス不可能– 使用不可– エラーが発生しました。

パラメータ STATE
STATE パラメータを使用し、MODE パラメータで選択した IO デバイス/DP スレーブのステータスが出力されます。
MODE を使用して選択されたステータスが IO デバイス/DP スレーブに適用された場合、STATE パラメータで以下のビットが「1」にセットされます。
• ビット 0 = 1:グループ表示。少なくとも 1 つの IO デバイス/DP スレーブのビット n が、「1」に設定されました。
• ビット n = 1:MODE で選択されたステータスが、IO デバイス/DP スレーブに適用されます。
– PROFINET IO システムの場合、ビット n はそれぞれの IO デバイスのデバイス番号に一致します(デバイスビューおよびネットワークビューの PROFINET インターフェースのプロパティを参照)– PROFIBUS DP システムの場合、ビット n が DP スレーブの PROFIBUS アドレスに一致します(デバイスビューおよびネットワークビューの DP スレーブのプロパティを参照)
データタイプ:として、「BOOL」または「Array of BOOL」を使用します。
• ステータス情報のグループ表示のビットのみを表示するには、STATE パラメータでデータタイプ BOOL を使用することができます。
• すべての IO デバイス/DP スレーブのステータス情報を出力するには、以下の長さのArray of BOOL を使用します。
– PROFINET IO システムの場合:1024 ビット– DP マスタシステムの場合:128 ビット

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2535

拡張命令
4.10 診断パラメータ RET_VAL
エラーコー 説明ド*
(W#16#...)
0

エラーは発生していません。

8091

LADDR パラメータのハードウェア識別子が存在しません。プロジェクトに LADDR の値が存在するかどうかを(システム定数などで)チェックします。

8092

LADDR が、PROFINET IO または DP マスタシステムをアドレス指定していません。

8093

STATE パラメータの無効なデータタイプ。

80B1

命令「DeviceStates」は、CPU によってサポートされていません。

80B2

選択された MODE パラメータが、LADDR パラメータで指定された IO システムに使用されるCPU によってサポートされません。

8452

完全なステータス情報が、STATE パラメータに設定されたタグに収まりません。
注記:STATE で設定されたタグで十分なフィールド長の有無がチェックされると、CountOfElements 命令が呼び出されます。これは、データタイプ VARIANT が Array of BOOL
をポイントするときにフィルエレメントをカウントします。Array [0...120] of BOOL の場合、
たとえば、128 がフィールド長として識別されます。その結果、エラーコード W#16#8452 がDeviceStates によって返されるのは、設定したフィールドエレメントの数と CPU によって作成されたフィルエレメントの数の合計が値 1024 または 128 を下回るときだけです。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例 - PROFINET IO マスタシステムでの IO デバイスの存在の読み出し
次の例では、IO システムに IO デバイスが存在するかを照会します。IO システムは、
S7-1500 シリーズの 2 つの CPU で構成されます。「PLC_14」CPU には「DeviceStates」命令を含む、プログラムが含まれます。
「PLC_13」CPU は、IO デバイスとして構成されます。
「PLC_14」CPU で次の手順を行います。グローバルデータブロックにデータを保存するた
めに、3 つのタグと 1 つの「mySTATE」構造体(Array of BOOL データタイプ)を作成します。

2536

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断「PLC_14」CPU で次の手順を行います。命令はサイクリック OB で呼び出されます。この
命令のパラメータを以下のように相互接続します。

「PLC_13」CPU で次の手順を行います。CPU のプロパティを使用して、この CPU「PLC_13」
を IO デバイスとしてセットアップします。IO デバイスはデバイス番号 1 を受け取ります。

IO システムがネットワークビューに表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2537

拡張命令
4.10 診断「PLC_14」CPU で次の手順を行います。IO システムの HW 識別子は、パラメータLADDR(「myLADDR」)を通じて「DeviceStates」命令に伝えられます。パラメータ
MODE(「myMODE」)の値「4」に従って、IO デバイスで IO システムを検索します。
パラメータ STATE 「mySTATE」()で、(パラメータ MODE の値に基づいて) IO デバイスの存在が出力されます。ビット 0 はグループ値として機能し、IO デバイスが存在することを示します。ビット 1 は、デバイス番号 1 の IO デバイスが存在することを示します。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

例 - PROFINET IO マスタシステムの障害ステーションの読み取り
PROFINET IO システムは、デバイス番号 1、2、3、および 4 の 4 つの IO デバイスで構成されます。番号 2 の IO デバイスは障害です。
命令「DeviceStates」は、MODE = 2 の PROFINET IO システムに対して実行されます(障害/障害でない)。

2538

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断以下のビットが、STATE パラメータにセットされます。
• ビット 0 = 1:少なくとも 1 つの IO デバイスに故障が存在します。
• ビット 1 = 0:デバイス番号 1 の IO デバイスは障害ではありません。
• ビット 2 = 1:デバイス番号 2 の IO デバイスは障害です。
• ビット 3 = 0:デバイス番号 3 の IO デバイスは障害ではありません。
• ビット 4 = 0:デバイス番号 4 の IO デバイスは障害ではありません。
• ビット 5 = 0:対象外• ビット 6 = 0:対象外• ...

例 - PROFIBUS DP マスタシステムの障害ステーションの読み取り
DP マスタシステムは、PROFIBUS アドレス 3、4、5、および 6 の 4 つの DP スレーブで構成されます。アドレス 4 の DP スレーブは障害です。
命令「DeviceStates」は、MODE = 2 の DP マスタシステムに対して実行されます(障害/障害でない)。
以下のビットが、STATE パラメータにセットされます。
• ビット 0 = 1:少なくとも 1 つの DP スレーブに故障が存在します。
• ビット 1 = 0:対象外• ビット 2 = 0:対象外• ビット 3 = 0:アドレス 3 の DP スレーブは障害ではありません。
• ビット 4 = 1:アドレス 4 の DP スレーブに障害があります。
• ビット 5 = 0:アドレス 5 の DP スレーブは障害ではありません。
• ビット 6 = 0:アドレス 6 の DP スレーブは障害ではありません。
• ビット 7 = 0:対象外• ビット 8 = 0:対象外• ...

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2539

拡張命令
4.10 診断4.10.11

ModuleStates:モジュールのモジュールステータス情報読み出し

説明「ModuleStates」命令を使用し、PROFINET IO デバイスまたは PROFIBUS DP スレーブのモ
ジュールのステータス情報を読み取ることができます。
出力されるブール値は、選択されたステータスが適用されるモジュールを示します。たと
えば、PROFINET IO デバイスで現在無効になっているモジュールを読み取ることができます。
読み取られるステータス情報が 1 つ以上のモジュールに適用されるかどうかに関する情報も表示されます。
この命令は、サイクリック OB でも割り込み OB でも呼び出すことができます(OB82 - 診断
割り込みなど)。

パラメータ
以下の表に、「ModuleStates」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

LADDR

Input

HW_DEVICE

I、Q、M、D、L、 ステーションのハードウェア識別子(以
または定数

MODE

Input

UINT

説明
下の説明を参照)

I、Q、M、D、L、 読み出されるモジュールステータス情報
または定数の選択(以下の説明を参照)

RET_VAL

Return

INT

I、Q、M、D、L

命令のステータス(以下の説明を参照)

STATE

InOut

VARIANT

I、Q、M、D、L

モジュールステータス用バッファ(以下の説明を参照)有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ LADDR
ステーションのハードウェア識別子によって、LADDR パラメータで IO デバイスまたは DP
スレーブを選択します。

2540

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断以下のハードウェア識別子が使用できます。
• ネットワークビューで、IO デバイスステーションまたは DP スレーブステーションのいずれかのプロパティに入力します。
• または、PLC タグテーブルで、リストされたデータタイプ HW_DEVICE(IO デバイス用)
またはデータタイプ HW_DPSLAVE(DP スレーブ用)のシステム定数に入力します。

パラメータ MODE
MODE パラメータを使用して、ステータス情報を読み出します。モジュールに対して、以下のステータス情報項目の 1 つを読み取ることができます。
• 1:モジュールが設定されます• 2:モジュールに障害があります• 3:モジュールが無効です• 4:モジュールが存在します• 5:モジュールに問題があります。たとえば、– メンテナンス要求または推奨– アクセス不可能– 使用不可– エラーが発生しました。

パラメータ STATE
STATE パラメータは、MODE パラメータで選択されたモジュールのステータスを出力します。
MODE を使用して選択されたステータスがモジュールに適用された場合、以下のビットが「1」にセットされます。
• ビット 0 = 1:グループ表示。少なくとも 1 つのモジュールのビット n が、「1」に設定されました。
• ビット n = 1:MODE で選択されたステータスが、スロット n-1 のモジュールに適用されます(例:ビット 3 = スロット 2)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2541

拡張命令
4.10 診断
データタイプ:として、「BOOL」または「Array of BOOL」を使用します。
• ステータス情報のグループ表示のビットのみを出力するには、STATE パラメータでBOOL データタイプを使用します。
• すべてのモジュールのステータス情報を出力するには、長さが 128 ビットの Array ofBOOL を使用します。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0

エラーは発生していません。

8091

LADDR パラメータのハードウェア識別子が存在しません。プロジェクトに LADDR の値が存在するかどうかを(システム定数などで)チェックします。

8092

LADDR が、IO デバイスまたは DP スレーブをアドレス指定していません。

8093

STATE パラメータの無効なデータタイプ。

80B1

命令「ModuleStates」は、CPU によってサポートされていません。

80B2

選択された MODE パラメータが、LADDR パラメータで IO デバイス/DP スレーブに使用される CPU によってサポートされません。

8452

完全なステータス情報が、STATE パラメータに設定されたタグに収まりません。
注記:STATE で設定されたタグで十分なフィールド長の有無がチェックされると、CountOfElements 命令が呼び出されます。これは、データタイプ VARIANT が Array of BOOL
をポイントするときにフィルエレメントをカウントします。Array [0...120] of BOOL の場
合、たとえば、128 がフィールド長として識別されます。その結果、エラーコード
W#16#8452 が ModuleStates によって返されるのは、設定したフィールドエレメントの数と CPU によって作成されたフィルエレメントの数の合計が値 128 を下回るときだけです。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、PROFINET IO デバイスのモジュールの存在を照会します。IO システムは、
S7-1500 シリーズの 2 つの CPU で構成されます。「PLC_14」CPU には「ModuleStates」命令を含む、プログラムが含まれます。
「PLC_13」CPU は、IO デバイスとして構成されます。
「PLC_14」CPU で次の手順を行います。グローバルデータブロックにデータを保存するた
めに、3 つのタグと 1 つの「mySTATE」構造体(Array of BOOL データタイプ)を作成します。

2542

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断「PLC_14」CPU で次の手順を行います。命令はサイクリック OB で呼び出されます。この
命令のパラメータを以下のように相互接続します。

「PLC_13」CPU で次の手順を行います。CPU のプロパティを使用して、この CPU「PLC_13」
を IO デバイスとしてセットアップします。

IO システムがネットワークビューに表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2543

拡張命令
4.10 診断「PLC_14」CPU で次の手順を行います。モジュールが IO デバイスのスロット 1 にあります。

「PLC_14」CPU で次の手順を行います。IO デバイスの HW 識別子は、パラメータLADDR(「myLADDR」)を通じて「ModuleStates」命令に伝えられます。パラメータ
MODE(「myMODE」)の値「4」に従って、モジュールで IO デバイスを検索します。
パラメータ STATE 「mySTATE」()で、(パラメータ MODE の値に基づいて)モジュールの存在が出力されます。 ビット 0 はグループ値として機能し、モジュールが存在することを示します。ビット 2 はスロット 1 にモジュールが存在することを示します。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

2544

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断例
IO デバイスは、スロット 1～4 に 4 つのモジュールが含まれています。スロット 2 のモジ
ュールが障害です。
命令「ModuleStates」は、MODE = 2 の IO デバイスに対して実行されます(障害/障害でない)。
以下のビットが、STATE パラメータにセットされます。
• ビット 0 = 1:少なくとも 1 つのモジュールに故障が存在します。
• ビット 1 = 0:スロット番号 0 (IO デバイスによって使用)• ビット 2 = 0:スロット番号 1 のモジュールは障害ではありません。
• ビット 3 = 1:スロット番号 2 のモジュールに障害があります。
• ビット 4 = 0:スロット番号 3 のモジュールは障害ではありません。
• ビット 5 = 0:スロット番号 4 のモジュールは障害ではありません。
• ビット 6 = 0:対象外• ビット 7 = 0:対象外

4.10.12

GEN_DIAG:診断情報の生成

説明「GEN_DIAG」命令は、他のメーカーのハードウェアコンポーネントの TIA ポータル診断で使用可能な診断情報を生成します。この命令を使用するには、メーカーが提供する
GSD(GSDL/GSDML)ファイルを先にインストールする必要があります。
この命令は、すべての診断イベント(メンテナンス用診断イベントを含む)を生成します。
• LADDR パラメータを使用して、診断イベントを生成するハードウェアコンポーネントを選択します。
• MODE パラメータを使用して、イベントが送信イベントなのか、または受信イベント
なのかを指定します。
• DiagEvent パラメータを使用して、DiagnosticDetail 構造体内で診断イベントを定義します。DiagEvent パラメータでタグを定義すると、ブロックのローカルインターフェー
ス内で自動的に構造体が作成されます。
診断情報は同期的に提供されます。診断情報の転送とアラーム出力は非同期です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2545

拡張命令
4.10 診断通知
フェールセーフ固有のエラーメッセージは無効です
DiagEvent パラメータでフェールセーフ固有の診断情報を定義すると、命令がこの情報をチェックし、エラーコード 80A1 を出力します。

パラメータ
以下の表に、「GEN_DIAG」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

LADDR

Input

HW_ANY

I、Q、M、D、L、 ハードウェアコンポーネントの識別番号
または定数

MODE

Input

UINT

I、Q、M、D、L、 受信/送信情報の選択:
または定数• 1:指定された診断イベントは受信イベントです。
• 2:指定された診断イベントは送信イベントです。
• 3:すべての診断イベントが送信イベン
トです。このため、ハードウェアコ
ンポーネント障害はありません(緑の診断シンボル)。The DiagEvent パラ
メータは評価されません(MODE = 3の場合)。

DiagEvent
RET_VAL

InOut
ReturnDiagnosticDet L、D

診断イベントを指定します(「DiagEventail

パラメータ」を参照)。

INT

I、Q、M、D、L

命令/エラーメッセージのステータス「RET_VAL」パラメータを参照)(

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2546

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断パラメータ DiagEvent
構造体 DiagnosticDetail は、診断イベント指定のためのシステムデータタイプです。この構造体は、次のとおりです。
パラメータ

データタイプ 説明

DiagnosticD Struct
etail
Channe WORD

チャンネルプロパティ(0～7)

lInfo
ALID

UINT

アラームのローカル ID。ID はアラームを一意に定義します。

TextID

UINT

テキストリスト内のアラームテキストの ID。

Channe UINT

メーカー固有のチャンネル番号(0x0000～0x7FFF)

lNumber
Addval_ DWORD

追加情報のためのプレースホルダ。値/値のリストは接続エラーによって異な

0

ります。

TextID2 UINT

CPU 応答用のテキスト(モード、OB 呼び出しなど)。

LADDR

LADDR パラメータと同じ。

HW_ANY

TextListI UINT

• 0:テキストリストなし

d• ≠0:テキストリストの ID

Channe UINT

• 0000:対象外

lDirecti• FFF1:入力

on• FFF2:出力• FFF3:入力/出力

Addval_ DWORD

チャンネルエラー時の追加情報のためのプレースホルダ(GSD ファイルによ1って異なります)。
チャンネルエラーの種類については、IEC 61158 (PROFINET IO Type 10 およびPROFIBUS DP Type 3)も参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2547

拡張命令
4.10 診断パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0

エラーは発生していません。

8080

MODE パラメータの値がサポートされていません。

8090

LADDR パラメータではハードウェアコンポーネントの識別はできません。

8091

LADDR パラメータでアドレス指定されたハードウェアコンポーネントに対して診断情報を生成できません。

80A1• DiagEvent パラメータの DiagnosticsDetail 構造体の内容が、無効であるか矛盾しています。
• DiagEvent パラメータで、フェールセーフ固有の診断情報が定義されています(無効)。

80A4

アドレス指定されたハードウェアコンポーネントにアクセスできません。

80C1

並列実行のリソースが不足しています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

4.10.13

GET_DIAG:診断情報読み出し

説明「GET_DIAG」命令を使用して、ハードウェアコンポーネントの診断情報を読み出します。
ハードウェアコンポーネントは、パラメータ LADDR で選択します。MODE パラメータを使用して、読み出される診断情報を選択します。S7-1200 CPU は、Mode=0 の場合にパラ
メータ LADDR を無視します。

パラメータ
以下の表に、「GET_DIAG」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

MODE

Input

UINT

LADDR
RET_VAL

2548

Input
Return

説明

I、Q、M、D、L、ま MODE パラメータを使用して、出力たは定数される診断データを選択します。

HW_ANY

I、Q、M、L、またハードウェアコンポーネントのハー(UINT)

は定数

ドウェア ID

INT

I、Q、M、D、L

命令のステータス

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
パラメータ

宣言

データタイプ メモリ領域

説明

CNT_DIAG

OutputUINT

I、Q、M、D、L

予約済み(常時「0」)。

DIAG

InOut

VARIANT

I、Q、M、D、L

診断情報は、選択されたモードに対応します。下の表を参照してくださ
いDETAILInOut

VARIANT

I、Q、M、D、L

パラメータは非表示です。このパラメータは使用しないでください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ MODE
MODE パラメータの値に応じて、DIAG、CNT_DIAG および DETAIL 出力パラメータで異なる
診断データが出力されます。
MODE

説明

DIAG

CNT_DIAG

0

DWORD としてハードウェアコン DWORD データタイプのビット: 0
ポーネントのすべてのサポートさ • ビット 0 = 1:MODE 0 がサポれている診断情報の出力。ビットートされています
X=1 はモード X がサポートされていることを示します。

• ビット 1 = 1:MODE 1 がサポートされています• ビット 2 = 1:MODE 2 がサポートされています• ビット 3～31:関連なし
S7-1200 CPU は、Mode=0 の場合にパラメータ LADDR を無
視します。

1

アドレス指定されたハードウェア 構造体 DIS(説明は下記を参照): 0
コンポーネントの診断ステータス • MaintenanceStateの出力。
• ComponentStateDetail• OwnState• IOState• OperatingState2

アドレス指定されたハードウェア 構造体 DNN(説明は下記を参0コンポーネントのすべての従属コ 照):
ンポーネントのステータスの出• SubordinateState力。

• SubordinateIOState• DNNmode

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2549

拡張命令
4.10 診断DIS 構造体
パラメータ MODE = 1 の場合、DIS 構造体に基づいて診断情報が出力されます。この場合、タグ宣言のデータタイプとして、システムデータタイプ「DIS」を入力します。
注記
OperatingState の識別
標準 CPU の OperatingState を識別するときは、LADDR = 52 (CPUExecUnit のハードウェア識別子)を選択する必要があります。
R/H システムの CPU の OperatingState を識別するときは、LADDR = 65147(Local1~HCPUredCtrl のハードウェア識別子)または LADDR = 65347 (Local2~HCPUredCtrlのハードウェア識別子)を選択する必要があります。
R/H システムのシステム状態を識別するときは、LADDR = 34 (Local1~RHSystem のハード
ウェア識別子)を選択する必要があります。

2550

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
次の表に、個々のパラメータ値の意味を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2551

拡張命令
4.10 診断

パラメータ

データ 値
タイプ

説明

パラメータ形成のルール

Maintenance DWOR ENUM

MaintenanceState は、State

ComponentStateDetail によって異な

D

ります。
0

良好

• ComponentStateDetail のビット15 の値が常に 1。
• ComponentStateDetail のビット
11～14 の値は 0 も 1 も可。
• ComponentStateDetail のビット 3の値は 1 も可。
• ComponentStateDetail の他のすべてのビットの値が 0。

1

ハードウェアコンポーネントが無効 • ComponentStateDetail のビット
16 の値が 1 の場合。になっています。
• ComponentStateDetail のビット
17 の値が 1 の場合。

2

-

-

3

-

-

4

-

-

5

メンテナンス必須

ComponentStateDetail のビット 4 の値が 1 の場合。

6

メンテナンス要求

ComponentStateDetail のビット 5 の値が 1 の場合。

7

エラー

ComponentStateDetail のビット 6 の値が 1 の場合。

8

ステータス不明/上位レベルのハー • ComponentStateDetail のビット
11～14 の値が 3 の場合。
ドウェアコンポーネントのエラー• ComponentStateDetail のビット 7～10 の値が 3 または 4 の場合。

9

-

-

10

入力/出力が使用不可。

• ComponentStateDetail のビット
11～14 の値が 2 の場合。
• ComponentStateDetail のビット 7～10 の値が 1 または 2 の場合。
• ComponentStateDetail のビット
18 の値が 1 の場合。

2552

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
パラメータ

データ 値
タイプ

説明

パラメータ形成のルール• ComponentStateDetail のビット
19 の値が 1 の場合。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2553

拡張命令
4.10 診断
パラメータ

データ 値
タイプ

説明

パラメータ形成のルール

ComponentS DWOR ビッ

ステータス:-

tateDetail• ビット 0～15:ハードウェアコン
ポーネントのステータス

D

ト配
列

• ビット 16～31:CPU のステータ
ス
0～2

追加情報:

-

(Enu

• 0:追加情報なしm)• 1:転送が許可されていません。

3

ビット 3 = 1: 少なくとも 1 つの限定 診断が使用可能な場合

4

ビット 4 = 1:少なくとも 1 つのチャ ンネルまたはコンポーネントのメン
テナンス必須5

ビット 5 = 1:少なくとも 1 つのチャ ンネルまたはコンポーネントのメン
テナンス要求6

ビット 6 = 1:少なくとも 1 つのチャ ンネルまたはコンポーネントでエラー

7～10 • 0: Own - ハードウェアコンポー ネントが使用可能(Enum)• 1: Application Ready Pending - I/
O アクセスなし• 2: Locked by Superordinated - ハ
ードウェアコンポーネントへのアクセスなし• 3: Locked by IOController - ハードウェアコンポーネントへのア
クセスなし• 4: Locked by IOSupervisor - ハードウェアコンポーネントへのア
クセスなし

11～
14

• 0 (ビット 11 = 0、ビット 12 = 0、ビット 13 = 0、ビット 14 =

(Enu
m)

2554

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
パラメータ

データ 値
タイプ

説明

パラメータ形成のルール

0): OK - 正しいエレメントが存在します。
• 1 (ビット 11 = 1、ビット 12 =0、ビット 13 = 0、ビット 14 =0): Substitute - エレメントが互換エレメントによって置換されました。
• 2 (ビット 11 = 0、ビット 12 =1、ビット 13 = 0、ビット 14 =0): Wrong - エレメントが非互換
エレメントによって置換されました(エレメントは到達可能です
が、操作の準備ができていません)。
• 3 (ビット 11 = 1、ビット 12 =1、ビット 13 = 0、ビット 14 =0): No Submodule - エレメントが存在しません。
15

予約済み(常時「1」)。

-16～

CPU に生成されたモジュールのステ -31

ータス情報:• ビット 16 = 1:サブモジュールまたはモジュールが無効• ビット 17 = 1:CiR 操作有効
• ビット 18 = 1:入力使用不可• ビット 19 = 1:出力使用不可• ビット 20 = 1:オーバーフロー診
断バッファ• ビット 21 = 1:診断使用不可• ビット 22 = 1: Partial device
failure (共有 iDevice の PNIO で)• ビット 23～31:予約済み(常時 0)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2555

拡張命令
4.10 診断
パラメータ

データ 値
タイプ

OwnState

UINT

説明ENUM メンテナンス状態

パラメータ形成のルール
OwnState は、MaintenanceState によって異なります。

0

良好

MaintenanceState の値が 0 の場合。

1

無効

MaintenanceState の値が 1 の場合。

2

メンテナンス必須

MaintenanceState の値が 5 の場合。

3

メンテナンス要求

MaintenanceState の値が 6 の場合。

4

エラー

MaintenanceState の値が 7 の場合。

5

アクセス不可能

MaintenanceState の値が 8 の場合。

6

診断ステータスが不明

診断イベントを返さないコンポーネン
トのデフォルト値。

7

IO not available - 入力/出力が使用不 MaintenanceState の値が 10 の場合。
可。

2556

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
パラメータ

データ 値
タイプ

説明

IOState

WORD ビッハードウェアコンポーネントの I/O 1 つ以上のビットをセットできます。

ト配

ステータス

列
ビッ

パラメータ形成のルール

IOState は、ComponentStateDetail に
よって異なります。

良好

ト0=• ComponentStateDetail のビット15 の値が常に 1。
• ComponentStateDetail のビット
11～14 の値は 0 も 1 も可。

1• ComponentStateDetail のビット 3の値は 1 も可。
• ComponentStateDetail の他のすべてのビットの値が 0。
If ビット 0 = 1 の場合、ビット 1～5 およびビット 7 = 0 です。
ビッ

無効

ト1=

• ComponentStateDetail のビット
16 の値が 1 の場合。
• ComponentStateDetail のビット
17 の値が 1 の場合。

1

ビット 1 = 1 の場合、他のビットはす
べて 0 です。
ビッ

メンテナンス必須ト2=ComponentStateDetail のビット 4 の値が 1 の場合。

1
ビッ

メンテナンス要求

ト3=

ComponentStateDetail のビット 5 の値が 1 の場合。

1
ビッ

エラー

ト4=

ComponentStateDetail のビット 6 の値が 1 の場合。

1• ComponentStateDetail のビット
11～14 の値が 3 の場合。
ト 5 = reachable - ハードウェアコンポーネ• ComponentStateDetail のビット 7
1
ントにアクセスできません。
～10 の値が 3 または 4 の場合。
ビッ

Hardware component not

ビット 5 = 1 の場合、他のビットはす
べて 0 です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2557

拡張命令
4.10 診断
パラメータ

データ 値
タイプ
ビッ

説明

パラメータ形成のルール

Qualified:ビット 6 = 1: 少なくとも 1 ComponentStateDetail のビット 3 の

ト 6 = つの限定診断が使用可能な場合

値が 1 の場合。

1:

この場合はビット 0、2、または 3 がセットされます。

I/O data not available - I/O データが • ComponentStateDetail のビット
11～14 の値が 2 の場合。
ト 7 = 使用不可
• ComponentStateDetail のビット 7
1:～10 の値が 1 または 2 の場合。
ビッ

• ComponentStateDetail のビット
18 の値が 1 の場合。
• ComponentStateDetail のビット
19 の値が 1 の場合。
8～14 予約済み(常時= 0)-

ビッ

ネットワーク/ハードウェア障害

-

ト 15

• S7-1200:予約済み(常時= 0)• S7-1500:ビット 4 = 1 またはビット 5 = 1 の場合:
– ビット 15 = 0:ネットワーク
エラー– ビット 15 = 1:ハードウェア
エラー

2558

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
パラメータ

データ 値
タイプ

OperatingSta UINT

ENUM

te

0

説明

パラメータ形成のルール-

Not Supported - I/O モジュールの場 合、OperatingState の値は常に 0です。

1

STOP /ファームウェアの更新-

2

STOP /メモリリセット-

3

STOP /セルフ起動

-

4

STOP

-

5

メモリリセット-

6

スタートアップ

-

7

-

-

8

RUN

-

9

RUN 二重化

-

10

一時停止

-

11

-

-

12

-

-

13

異常(注:診断バッファエントリ内に のみ表示)

14

-

-

15

非通電状態(注:診断バッファエント リ内にのみ表示)

16

CiR

-

17

ODIS を使用せずに停止-

18

ODIS の実行-

19

PgmTest-20

RunPgmTest (バックアップ CPU が テストモードの場合のプライマリ
CPU の状態)

21

Run-Syncup (プライマリ CPU のみ-

が SYNCUP システム状態)
22

SYNCUP (バックアップ CPU のみが SYNCUP システム状態)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2559

拡張命令
4.10 診断
パラメータ

データ 値
タイプ
31

説明

パラメータ形成のルール

パートナー CPU の状態が不明(パー トナー CPU が使用できない場合な
ど)

32

-

-

33

STOP システム状態

-

34

予約済み

-

35

STARTUP システム状態

-

36

予約済み

-

37

RUN-Solo システム状態-

38

SYNCUP システム状態

-

39

予約済み

-

40

RUN 二重化システム状態-

DNN 構造体
パラメータ MODE = 2 の場合、DNN 構造体に基づいて診断情報詳細が出力されます。この場合、タグ宣言のデータタイプとして、システムデータタイプ「DNN」を入力します。
次の表に、個々のパラメータ値の意味を示します。
パラメータ

データタイ
プ

値

説明

SubordinateState

UINT

Enum

従属コンポーネントのステータス(DIS 構造体のパラメー
タ OwnState を参照)

SubordinateIOState

WORD

Bitarray

従属コンポーネントの入力および出力のステータス(DIS
構造体のパラメータ IO State を参照)

DNNmode

WORD

Bitarray• ビット 0 = 0:診断が有効• ビット 0 = 1:診断が無効• ビット 1～15:予約済み

2560

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0

エラーは発生していません。

n

DETAIL パラメータのデータ領域が小さすぎます。出力されない診断データの詳細もありま
す。

8080

MODE パラメータの値がサポートされていません。

8081

DIAG パラメータのタイプが選択したモードでサポートされていません(パラメータ MODE)。

8082

DETAIL パラメータのタイプが選択したモードでサポートされていません(パラメータ
MODE)。

8090

LADDR が存在しません。

80C1

並列実行のリソースが不足しています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、CPU の診断情報を読み出します。
グローバルデータブロックにデータを保存するために、4 つのタグと 1 つの「myDIAG」構
造体(DIS データタイプ)を作成します。

この命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2561

拡張命令
4.10 診断CPU の HW 識別子は、パラメータ LADDR(「myLADDR」)を通じて「GET_DIAG」命令に伝達されます。パラメータ MODE(「diagMODE」)の値「1」に従って、以下を適用します。
• この命令は、(CPU の)アドレス指定されたハードウェアオブジェクトのステータスを読み出します。
• パラメータ DIAG(「myDIAG」)で、診断情報が構造体(DIS データタイプ)に出力されます。
診断情報を理解するためには、16 進数値を 2 進コードに変換する必要があります。パラメータ DIAG(「myDIAG」)に、以下が示されています。
• MaintenanceState:値「0」に従って、CPU にメンテナンスは必要ありません。
• ComponentStateDetail:16 進値「0000_8000」に従って、ビット 15 が有効です。
• OwnState:値「0」に従って、障害は発生していません。
• IOState:16 進値「0001」に従って、メンテナンスは必要ありません。
• OperatingState:「0」を出力します。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。
出力パラメータ CNT_DIAG(「CountDiagDetails」)で、パラメータ DETAIL の「0」診断詳細が出力されています。

2562

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.10 診断
注記:たとえば、ComponentStateDetail タグのビット 3(チャンネル診断、はい/いいえ) を個別に読み出すことができます。
• このビットを以下のようにアドレス指定します: ComponentStateDetail.%X3
プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

例 - IO デバイスの診断
次の例では、IO デバイスの診断情報を読み出します。診断用に、IO デバイスのデバイス
ビューと命令 GET_DIAG を使用します。
デバイスビューでの診断

IO デバイスモジュールの 1 つがエラーを通知しています。デバイスステータスが変更され、以下のように表示されます。

IO デバイスのモジュールとヘッドモジュールはデバイスビューにグループステータスを表示します。したがって、両方についてエラーが表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2563

拡張命令
4.10 診断GET_DIAG 命令による診断

IO デバイスの診断情報を読み出すには、(LADDR を介して) IO デバイスのヘッドモジュー
ルをアドレス指定します。
• モード 1 (MODE の値が 1)で、IO デバイスのステータスを読み出します。
• モード 2 (MODE の値が 2)で、従属モジュールのステータスを読み出します。
MODE 1 の呼び出し:自己診断

MODE 2 の呼び出し:従属診断の要約

LADDR (HW ID) = IM151-3pn~IODevice

LADDR (HW ID) = IM151-3pn~IODevice

DIAG (DIS 構造体) = #DeviceData.DeviceState

DIAG (DNN 構造体) = #DeviceData.SubState

DIS.OwnState = 0 (エラーなし)

DNN.SubordinateState = 4 (エラー)

DIS.IOState = ビットシーケンス 0000 0000 0000

DNN.SubordianteIOState = ビットシーケンス 1000

0001

0000 0001 0001
結果

デバイスビューとは異なり、GET_DIAG 命令は IO デバイスのグループステータスを返しません。従属モジュールのエラーは、モード 2 まで読み出されません。

2564

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.11 パルス

4.11

パルス

4.11.1

CTRL_PWM:パルス幅変調

説明「CTRL_PWM」命令は、ソフトウェアを使用して CPU がサポートするパルス出力を有効/無効にするために使用されます。
• 入力 PWM の命令で制御するパルスジェネレータのハードウェア ID を入力します。
• 命令の ENABLE 入力のビットがセットされると、パルス出力が有効になります。
– ENABLE の値が TRUE の場合、パルスジェネレータは、デバイス構成で定義されたプ
ロパティを持つパルスを生成します。
– ENABLE 入力のビットがリセットされるか、または CPU が STOP に移行すると、パルス出力が無効になり、それ以上パルスは生成されません。
S7-1200 は、命令「CTRL_PWM」が実行された場合、パルスジェネレータを有効にするため、S7-1200 では、BUSY の値は常に FALSE です。
EN イネーブル入力のシグナル状態が「1」で、命令の実行中にエラーが発生しなかったと
きに、イネーブル出力 ENO がセットされます。
注記
PWM および PTO でのフォーステーブルの使用
PWM および PTO に使用されるデジタル入力および出力は強制できません。デバイス構成を使用して割り当てられたデジタル入力および出力は、フォーステーブルまたはウォッチテ
ーブルのいずれでも制御されません。
注記
PTO/PWM 出力のプロセスイメージ
PTO/PWM 出力をプロセスイメージで使用しないでください(たとえば、ユーザープログラ
ムでのアクセス、オンラインファンクション、HMI などで)。プロセスイメージの更新速度
は、信号の変化速度をはるかに下回っています。このため、プロセスイメージの表示には信号フローが反映されません。

要件
この命令の正しい実行の要件は、指定されたパルスジェネレータがハードウェアコンフィ
グレーションで有効であることです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2565

拡張命令
4.11 パルス
デバイスビューで、モジュールのプロパティを開きます。[パルスジェネレータ(PTO/PWM)]に移動し、必要な PTO/PWM を開き、[全般]のファンクション[このパルスジェネレータを有効にする]を有効にします。
[パラメータの割り当て]に移動し、パルスオプションをセットします。
注記
パルス出力パラメータは排他的にデバイス構成に割り当てられ、「CTRL_PWM」命令は使用しません。そのため、CPU への影響を目的としたパラメータの変更は、CPU が STOP モー
ドに入っている間に行う必要があります。パルスの持続時間の変更は例外です。

ユーザープログラムからのパルス持続時間の変更
ダイアログ[パルスオプション]で行ったパルス持続時間の設定は、ユーザープログラムから変更することができます。
[初期パルス持続時間]でセットされた値は、パルスジェネレータの出力バイトに書き込まれます。開始アドレスと終了アドレスが、パルスジェネレータのプロパティの[I/O アドレス]に表示されます。
パルス持続時間を変更するには、デバイス構成で指定された出力ワードアドレスに必要な値を書き込みます。
例:• 値 500 (10 進数)は、「初期パルス持続時間」で使用されます。PTO/PWM の開始アドレ
スは「1000」で、終了アドレスは「1001」です。
• 2 進数値「0000000111110100」(10 進数の 500)は、出力バイトの両方に書き込まれます。
– 開始アドレス(AB1000):0000_0001 (BIN)– 終了アドレス(AB1001):1111_0100 (BIN)
パルス持続時間は、パルス持続時間の形式としてセットされたパラメータに応じて異なることに注意してください(hundredths (100 分の 1)、thousandths (1000 分の 1)など)。

ユーザープログラムからのサイクルタイムの変更対応するパルスジェネレータの[パルスオプション]で、[ランタイム時にサイクルタイムの変更を許可]チェックボックスを選択します。このチェックボックスを選択すると、最初の2 つの出力バイトにパルス持続時間が含まれ、3 番目～6 番目の出力バイトにサイクルタ
イムが含まれます。

2566

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.11 パルス
パルスジェネレータのランタイム中に、出力の割り当て済みメモリの最後のダブルワードの値を変更できます。これにより、PWM 信号のサイクルタイムが変更されます。
例:CPU が PWM1 に 6 つの出力バイトを割り当てるようにこのチェックボックスを選択し、そのために、AB1008～AB1013 を選択します。プログラムを CPU にロードし、パルスジェネレータを起動した後、AW1008 に書き込むことによってパルス持続時間を変更し、AD1010 に書き込むことによってサイクルタイムを変更することができます。
཰
ཱ
図 4-1

ཱ

PWM_Example① サイクルタイム② パルス継続時間パラメータ
以下の表に、「CTRL_PWM」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

PWM

Input

HW_PWM

I、Q、M、D、L、 パルスジェネレータのハードウェア ID
または定数

説明

ハードウェア ID は、デバイスビューのパルスジェネレータのプロパティにあります。パルスジェネレータのハードウェ
ア ID は、システム定数にも記載されています。

ENABLE

Input

BOOL

I、Q、M、D、L、 パルス出力は、ENABLE = TRUE の場合にまたは定数有効になり、ENABLE = FALSE の場合に無効になります。

BUSY

Output

BOOL

I、Q、M、D、L

処理ステータスSTATUS

Output

WORD

I、Q、M、D、L

命令のステータス(下記を参照)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2567

拡張命令
4.11 パルス

パラメータ STATUS
エラーコード* (W#16#...)

説明

0

エラーはありません

80A1

パルスジェネレータのハードウェア ID が無効です。

80D0

指定されたハードウェア ID のパルスジェネレータは、有効になっていません。[パルスジェネレータ(PTO/PWM)]の CPU プロパティでパルスジェネレータを有効にします。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

4.11.2

CTRL_PTO:プリセットされた周波数のパルスシーケンスを出力

説明「CTRL_PTO」命令は、プリセットされた周波数のパルスシーケンスを使用できるようにします。そのために、テクノロジーオブジェクトの軸 DB は必要ありません。

要件「CTRL_PTO」命令を使用するために、有効になったパルスジェネレータは必要ありません。
ハードウェアコンフィグレーションおよび信号タイプの選択でこれを有効にします。
「PTO」パラメータでパルスジェネレータを指定し、「REQ」パラメータを TRUE に設定する必要があります。
注記
PLC パルスジェネレータの使用
パルスジェネレータは、常に 1 つの命令でしか使用できません。
注記
PWM および PTO でのフォーステーブルの使用
PWM および PTO に使用されるデジタル入力および出力は強制できません。デバイス構成を使用して割り当てられたデジタル入力および出力は、フォーステーブルまたはウォッチテ
ーブルのいずれでも制御されません。

2568

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.11 パルス
注記
PTO/PWM 出力のプロセスイメージ
PTO/PWM 出力をプロセスイメージで使用しないでください(たとえば、ユーザープログラ
ムでのアクセス、オンラインファンクション、HMI などで)。プロセスイメージの更新速度
は、信号の変化速度をはるかに下回っています。このため、プロセスイメージの表示には信号フローが反映されません。

パラメータ
以下の表に、「CTRL_PTO」命令のパラメータを示します。
パラメータ 宣言

データタイ
プ

説明

REQ

BOOL

• REQ=1:パルスジェネレータの周波数を FREQUENCY の値に設定します
REQ=1 および FREQUENCY=0:パルスジェネレータを無効にし
ます

Input

• REQ=0:パルスジェネレータでの変更なし
PTO

Input

HW_PTO

パルスジェネレータのハードウェア識別子
これは、デバイスビューのパルスジェネレータのプロパティ、またはシステム定数のリストから取得できます。

FREQUENC

Input

UDINT

出力されるパルスシーケンスの周波数(Hz 単位)

OutputBOOL

以下の値を持つ STATUS パラメータ:

Y
DONE• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブがエラーなしで完了済み
BUSY

Output

BOOL

処理ステータス「CTRL_PTO」命令が実行されると、S7-1200 によってパルスジェ
ネレータが有効になるため、S7-1200 では、BUSY の値は常にFALSE です。

ERROR

OutputBOOL

STATUS パラメータ• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。

STATUS

OutputWORD

命令のステータス(下記を参照)

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2569

拡張命令
4.12 レシピおよびデータロギング

パラメータ Status
エラーコー
ド*(W#16#...)

説明

0

エラーは発生していません。

8090

指定されたハードウェア ID のパルスジェネレータは、既に使用されています。

8091「FREQUENCY」パラメータの範囲を超えています。より詳細な情報については、マニュアルを参照してください。

80A1

PTO パラメータがパルスジェネレータのハードウェア ID をアドレス指定していません。

80D0

指定されたハードウェア ID のパルスジェネレータは、有効になっていません。[パルスジェ
ネレータ(PTO/PWM)]の CPU プロパティでパルスジェネレータを有効にします。

80D1

指定されたハードウェア ID のパルスジェネレータに「PTO」プロパティがありません。ハードウェアコンフィグレーションで[PTO]を選択します。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

4.12

レシピおよびデータロギング

4.12.1

レシピファンクション

4.12.1.1

レシピファンクション - 概要

説明
命令「RecipeExport」および「RecipeImport」を使用して、レシピデータを転送します。
• レシピデータブロックから CPU のメモリカード上の CSV ファイルへ(「RecipeExport")• CPU のメモリカード上の CSV ファイルからレシピデータブロックへ("RecipeImport")
注記
メモリカードの寿命
メモリカードの寿命は限られています。追加情報については、AUTOHOTSPOT2570

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

レシピデータの保護命令"RecipeExport"および RecipeImport"は、レシピデータに対する特別な保護が必要とな
るアプリケーションには適していません。データの保護を高めるには、HMI のレシピファンクションを使用します。

「RecipeExport」でのレシピデータブロックの位置"RecipeExport"でエクスポートされるレシピデータを含むデータブロックは、ワークメモ
リまたはロードメモリに存在しても構いません。データブロックがワークメモリとロード
メモリの両方に存在する場合は、ワークメモリからの値が使用されます。

区切り文字
さまざまな区切り文字を使用して、レシピ内の行の値を区切ることができます。たとえば、
Excel で、エクスポートされたレシピデータを含む CSV ファイルを開いた場合、カンマがピリオドに(およびその逆に)置換される可能性があることに注意してください。その理由
は、言語によって使用される小数点の記号が異なるためです。これは、CSV ファイルのイ
ンポート時に影響を及ぼす可能性があります。「RecipeImport」には、以下の規則が適用されます。最初に検出された区切り文字候補がテーブル行のすべての値の区切り文字と見なされます。
• 例 1:インポート中に最初の区切り文字としてセミコロンが検出された場合、セミコロ
ンがそれ以降のすべての値の区切り文字として使用されると見なされます。その場合、REAL タイプの値での小数区切り文字として、カンマが使用されます。
• 例 2:インポート中に最初の区切り文字としてカンマが検出された場合、カンマがそれ以降のすべての値の区切り文字として使用されると見なされます。その場合、REAL タイプの値での小数区切り文字として、ピリオドが使用されます。
レシピデータレコードに文字列が含まれている場合は、使用している区切り文字がその文字列に含まれていないことを確認してください。文字列では、改行を指定する制御文字が含
まれていないことも確認してください(ASCII の場合:LF、CR LF、CR)。
注記:スペースとタブは区切り文字として使用されません。これらはインポート中にエラーコード 80B2 の原因となります。
注記
レシピファンクションの非同期処理
レシピファンクションは非同期的に実行されるため、DONE パラメータまたは ERROR パ
ラメータが値「1」に変更されるまで、ソース領域内のデータの整合性を保持する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2571

拡張命令
4.12 レシピおよびデータロギング

4.12.1.2

RecipeExport:レシピのエクスポート

説明「RecipeExport」命令は、レシピデータをデータブロックからロードメモリ内の CSV ファ
イルにエクスポートします。
S7-1500 CPU では、エクスポートされる DB は、ワークメモリまたはロードメモリのいずれに存在しても構いません。データブロックがワークメモリとロードメモリの両方に存在する場合は、ワークメモリからの値がエクスポートされます。S7-1200 CPU の場合、エク
スポートされる DB は、ロードメモリに存在する必要があります。
CSV ファイルはロードメモリに作成されます。S7-1500 CPU の場合、これはメモリカードです。S7-1200 CPU の場合、内部または外部ロードメモリです(メモリカードが存在する場
合)。
エクスポート中にロードメモリのメインディレクトリの「Recipes」フォルダ内に CSV フ
ァイルが作成されます。データブロックの名前は、作製された CSV ファイルのファイル名
として使用されます。同名の CSV ファイルが既に存在している場合、エクスポート時に既存のファイルが上書きされます。
各レシピデータレコードは CSV ファイル内に 1 行を生成します。これらの行は、以下の構造を持ちます。
• 最初の行には、レシピコンポーネントの[インデックス]エントリと名前が含まれています。
• 各追加行には、レシピデータレコードの番号(インデックス)と関連コンポーネントが含まれています。
レシピ DB のデータタイプを取得するときは、データレコードの最大サイズは 5000 バイ
トです。これを超えた場合、エラーコード W#16#8092 が返されます。この 5000 バイトの制限は、ヘッダーのサイズにも適用されます。この制限を超える DB 内のすべての文字は切り捨てられ、プロセスは最初のレシピデータレコードに進みます。
S7-1200 CPU は列の数もモニタします。列の数は 255 を超えてはなりません(インデックス
列はカウントされません)。

2572

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

ファンクションの説明
エクスポートは「REQ」パラメータによってトリガされます。エクスポート中、BUSY パ
ラメータが「1」にセットされます。命令の実行後、BUSY が「0」にリセットされ、DONE
パラメータが「1」になることで操作の完了が示されます。
実行中にエラーが発生すると、パラメータ ERROR および STATUS によって通知されます。

パラメータ
以下の表に、「RecipeExport」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ REQUEST:立ち上がりエ
T、C、または定数 ッジでエクスポートを有効にします。
(S7-1500 では、Tおよび C は LAD
および FBD でのみ使用可能)

RECIPE_DB

InOut

VARIANTD

レシピデータブロックへのポインタ。データブロックの構造体に関する情報については、次を参照してください:レシピ
DB の構造 (ページ 2579)

DONE

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブはエラーなく実行されまし
た。

BUSY

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:命令が実行されません。
• 1:命令が実行されます。

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:警告もエラーもなし。
• 1:エラーが発生しました。STATUS に
エラーのタイプに関する詳細情報を表示します。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ「STATUS」パラメータの表を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2573

拡張命令
4.12 レシピおよびデータロギング
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコー
ド*(W#16#...)

説明

0

エラーは発生しませんでした

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

8090

CSV ファイルの名前に無効な文字が含まれています。CSV ファイルのファイル名は、データブロックの名前と同一です。

8091

RECIPE_DB によって参照されたデータ構造体を処理できないか、S7-1200 CPU 内のデータ列の数が 255 を超えています。

8092

RECIPE_DB パラメータのデータ構造体が 5000 バイトを超えています。

80B3

メモリカードまたは内部ロードメモリに十分なメモリ領域がありません。

80B4

メモリカードが書き込み禁止になっています。

80B6(S7-1200 CPU のみ)属性[ロードメモリにのみ保存]で、レシピデータブロックが有効になっていません。

80C0

CSV ファイルが一時的にロックされています。

80C1

レシピデータブロックが一時的に無効になっています。

80C3

リソースが少なすぎます* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「レシピファンクションのサンプルプログラム (ページ 2583)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

2574

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

4.12.1.3

RecipeImport:レシピのインポート

説明「RecipeImport」命令は、レシピデータをロードメモリの CSV ファイルから RECIPE_DB パ
ラメータのデータブロックにインポートします。
S7-1500 CPU の場合、CSV ファイルはメモリカード上にあります。S7-1200 CPU の場合、
内部または外部ロードメモリにあります(メモリカードが存在する場合)。
データブロック内の値は、処理中に上書きされます。S7-1500 CPU では、レシピデータのインポート先となる DB は、ワークメモリまたはロードメモリのいずれに存在しても構いません。データブロックがワークメモリとロードメモリの両方に存在する場合は、値は、
ワークメモリにあるデータブロックにインポートされます。S7-1200 CPU の場合、レシピ
データのインポート先となる DB は、ロードメモリに存在する必要があります。
レシピは、ロードメモリ DB にインポートされる場合のみ永久的に維持されます。ワーク
メモリ DB にインポートしたレシピが永久的に必要となる場合は、インポート後にWRIT_DBL 命令を使用してレシピをロードメモリ DB に転送する必要があります。
CSV ファイルのインポート時には、以下に注意してください。
• CSV ファイルは、ロードメモリの「Recipes」ディレクトリにある必要があります。
• CSV ファイルの名前は、RECIPE_DB パラメータのデータブロック名と一致している必要があります。
• CSV ファイルの各行は、1 つのレシピデータレコードに対応しています。CSV ファイルの最初の行(ヘッダー)は、レシピコンポーネントの名前を含んでいます(関連項目: レシピ
DB の構造 (ページ 2579))。インポート中は最初の行は無視されます。CSV ファイル内のレシピコンポーネントおよびデータブロックの名前は、インポート中は同期されません。エントリの数も無関係です。
• CSV ファイルの各行の最初の値は、必ずレシピのインデックス番号です。個々のレシ
ピは、インデックス順にインポートされます。レシピをインデックス順にインポート
するには、CSV ファイル内のインデックスは連番で昇順にソートされている必要があります(それ以外の場合、エラーメッセージ 80B0 が STATUS パラメータに出力されます)。
• CSV ファイルは、データブロック内で提供されている数より多いレシピデータレコー
ドを含んではなりません。データレコードの最大数は、データブロック内の配列制限値
で示されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2575

拡張命令
4.12 レシピおよびデータロギング• CSV ファイルの値が DB の関連データタイプに収まらない場合、インポートは拒否されます。必要に応じて、最大許容長以降の文字列が切り捨てられます。
DB 内のデータタイプが BOOL タイプである場合、S7-1500 CPU はすべての整数値を受け入れます。その後、値 1 が TRUE に設定され、他のすべての値が FALSE に設定されます。S7-1200 CPU は値 0 および 1 のみを受け入れます。他のすべての値は拒否されます。
• データタイプ DATE_AND_TIME の値が CSV ファイル内で定義されており、このタイプの値が許容されている値の範囲外である場合、これらの値はデータブロックへのインポ
ート時にデフォルト値に設定されます。
• レシピ DB が標準アクセスの DB であり、許可された数以上のコンポーネント(たとえば2 つの ARRAY と 1 つの構造体)で構成されている場合、レシピデータは最初の ARRAY にのみインポートされ、STATUS が W#16#0000 に設定されます。

ファンクションの説明
インポートは「REQ」パラメータによってトリガされます。インポート中、BUSY パラメータが「1」にセットされます。命令の実行後、BUSY が「0」にリセットされ、DONE パ
ラメータが「1」になることで操作の完了が示されます。
実行中にエラーが発生すると、パラメータ ERROR および STATUS によって通知されます。

パラメータ
以下の表に、「RecipeImport」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ REQUEST:立ち上がりエ
T、C、または定数 ッジでインポートを有効にします。
(S7-1500 では、Tおよび C は LAD
および FBD でのみ使用可能)

RECIPE_DB

InOut

VARIANTD

レシピデータブロックへのポインタ。データブロックの構造体に関する情報については、次を参照してください:レシピ
DB の構造 (ページ 2579)

2576

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
パラメータ

宣言

データタイプ

メモリ領域

説明

DONE

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブはエラーなく実行されまし
た。

BUSY

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:命令が実行されません。
• 1:命令が実行されます。

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:警告もエラーもなし。
• 1:エラーが発生しました。STATUS に
エラーのタイプに関する詳細情報を表示します。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ「STATUS」パラメータの表を参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコー
ド*(W#16#...)

説明

0

エラーは発生しませんでした

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQは対象外):命令が既に有効です。BUSY の値は「1」です。

8090

ファイル名に無効な文字が含まれています。

8091

データブロックが存在しないなどの理由で、RECIPE_DB で参照されるデータ構造体を処理で
きません。

8092

インポート用の一致する CSV ファイルが見つかりません。考えられる原因:CSV ファイル名がレシピ DB 名と一致していない。

80C0

CSV ファイルが一時的にロックされています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2577

拡張命令
4.12 レシピおよびデータロギング
エラーコー
ド*(W#16#...)

説明

80C1

レシピデータブロックが一時的にロックされています。

80B0

CSV ファイルのインデックスの番号が連続していない、昇順ではない、またはデータブロック
内の最大数(配列制限値)を超過しています。

80B1

レシピデータブロックの構造と CSV ファイルが一致しません:CSV ファイルのフィールドが多
すぎます。

80B2

レシピデータブロックの構造と CSV ファイルが一致しません:CSV ファイルのフィールドが少なすぎます。
注記:CSV ファイルの行は、順番に読み取られます。CSV ファイルの行に、CPU が想定する数以上の文字が含まれている場合、検出済みのフィールド数にかかわらず、エラーコード
W#16#80B2 が返されます。

80B6(S7-1200 CPU のみ)属性[ロードメモリにのみ保存]で、レシピデータブロックが有効になっていません。

80C3

リソースが少なすぎます

80D0 +n

レシピデータブロックの構造と CSV ファイルが一致しません:フィールド n のデータタイプが一致しません(n<=46)。

80FF

レシピデータブロックの構造と CSV ファイルが一致しません:フィールド n のデータタイプが一致しません(n>46)。

8624

RECIPE_DB が、ローカルデータなどの許可されていない範囲をポイントしています。

8630

ターゲット範囲が書き込み保護されています(書き込み保護された DB など)。

8652

RECIPE_DB のタグが不十分です。データブロックが書き込まれませんでした。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、レシピファンクションのサンプルプログラム (ページ 2583)を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

2578

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

4.12.1.4

レシピ DB の構造

概要
次のセクションでは、簡単な例を使用してレシピ DB の構造体について説明します。レシピ
DB は 5 つのデータレコードで構成され、そのうちの 3 つが使用されます。4 番目、および5 番目のデータレコードは、今後の拡張のために確保されています。各データレコードに 1つのレシピが含まれています。レシピはレシピ名と 8 つの原料で構成されています。
produ
ctnam
e

water

barley wheat

hops

yeast

water mashT mashT
Tmp
mp
ime

QTest

Pils

10

9

3

280

39

40

30

100

0

Lager

10

9

3

150

33

50

30

120

0

BlackB

10

9

3

410

47

60

30

90

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

eer
Not_used
Not_used

レシピデータブロックの構造
レシピデータはグローバルデータブロック内に以下のように実装します。
• すべてのレシピのテンプレートは、PLC データタイプ「Beer_Recipe」、および対応する
データタイプのレシピコンポーネント「procutname」、「water」などです。
• グローバルデータブロック内では、PLC データタイプは Array [1.. 5] of "Beer_Recipe"として使用されます。配列制限値(この例では 1～5)は、DB に含めることが可能なレシピの最大数を示します。
• レシピコンポーネントの値は、データブロック内に開始値として追加されます。
• グローバル DB は、入出力パラメータ RECIPE_DB によって命令と相互接続されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2579

拡張命令
4.12 レシピおよびデータロギング

CSV ファイルへのエクスポート「RecipeExport (ページ 2572)」命令の実行後、DB のデータは以下の構造の CSV ファイルに書き込まれます。
Recipe_DB.csv
index,productname,water,barley,wheat,hops,yeast,waterTmp,mashTmp,mashTime,QTest
1,”Pils”,10,9,3,280,39,40,30,100,02,”Lager”,10,9,3,150,33,50,30,120,0
3,”BlackBeer”,10,9,3,410,47,60,30,90,1
4,”Not_used”,0,0,0,0,0,0,0,0,05,”Not_used”,0,0,0,0,0,0,0,0,0
Excel での表示
CSV ファイルを Excel で開くことで、より簡単に確認や編集ができます。ファイルを開く
とき、カンマがセパレータとして認識されない場合、Excel のインポートファンクションを使用してデータを構造化された形式で出力します。

2580

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

CSV ファイルの編集
CSV ファイルは、Web サーバーを使用して PC/プログラミングデバイスにアップロードし、編集します。編集後、変更されたファイルを CPU に再読み込みすることができます。これに関する既存の CSV ファイルを削除する必要があります。
「RecipeImport (ページ 2575)」命令を使用して、変更されたデータを CSV ファイルからデータブロックに再インポートすることが可能です。
変更されたデータは、まだ、このデータブロックと互換性を持たなければならないことに注意してください。言い換えると、以下の通りです。
• 表の構造を変更することはできません(たとえば、新しい列に要素を加えることによって)。
• ファイルにデータレコードを追加する場合、データブロックへのインポート時に、データレコードの最大数を指定する配列制限値がデータレコード数と対応するよう注意してください。
• CSV ファイルへのエクスポート時に、インデックスが自動的に生成されます。追加のデータレコードを作成する場合は、適宜連続するインデックス番号を追加します。
• 表のセルの値は、フォーマットと長さに関して、データブロックで使用されたデータ
タイプに対応していることが必要です。
– 例 1:INT データタイプがデータブロックで使用された場合、表では、整数のみを使用します。
– 例 2:SINT データタイプがデータブロックで使用された場合、表では、値が-128～+127 の整数のみを使用します。
表で変更を行うときは、下記の表に記載されている許容データタイプおよびデータ領域
を常に銘記してください。
データタイプフォーマット

注記

浮動小数点 LReal+9.9999999999999E

常に指数関数で書き込まれる

数

+999
Real

符号付き整 LInt

+9.999999E+99

常に指数関数で書き込まれる+9999999999999999999 符号付き整数の値の範囲: -9223372036854775808～+9223372036854775807

数
DInt+9999999999

整数の値の範囲: -2147483648～+2147483647

Int+99999整数の値の範囲: -32768～+32767

SInt

+999

整数の値の範囲: -128～+127

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2581

拡張命令
4.12 レシピおよびデータロギング
データタイプフォーマット

符号なし整 ULInt+9999999999999999999 整数の値の範囲:0～+18446744073709551615

数

9

2 進数

注記

UDInt

+9999999999

整数の値の範囲:0～+4294967295

UInt+99999整数の値の範囲:0～+65535

USInt

+999

整数の値の範囲:0～+255

LWord+9999999999999999999 整数の値の範囲:0～+18446744073709551615
9

DWord

+9999999999

整数の値の範囲:0～+4294967295

Word+99999整数の値の範囲:0～+65535

バイト

+999

整数の値の範囲:0～+255

Bool

9

値の範囲:0 または 1

dddddd:hh:mm:ss.999_9

ミリ秒、マイクロ秒およびナノ秒付きの ISO フォーマ99_999ット

TIME

hhh:mm:ss.999

ミリ秒付きの ISO フォーマット

S5TIME

hhh:mm:ss.999

ミリ秒付きの ISO フォーマット

LDT

YYYY-MM-DD

ミリ秒、マイクロ秒およびナノ秒付きの ISO フォーマhh:mm:ss.999_999_999

ット

YYYY-MM-DD

ミリ秒、マイクロ秒およびナノ秒付きの ISO フォーマhh:mm:ss.999_999_999

ット

YYYY-MM-DD

ミリ秒付きの ISO フォーマット

日付と時刻 LTIME

DTL
DT

hh:mm:ss.999
DATE

YYYY-MM-DD

ISO フォーマット

LTime_Of

hh:mm:ss.999_999_999

ISO フォーマット

hh:mm:ss.999

ISO フォーマット

_Day
TOD

2582

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
データタイプ文字

WString

フォーマット

注記"abcd"• 個々の文字は、二重引用符記号で囲まなくてはいけません。レシピ DB がインポートされる場合、二重引用符記号は省略される場合があります。
• 現在の長さ• データタイプ WString の文字列は、WChar データ
タイプの要素で構成されています。レシピ DB がエ
クスポートされる場合、WChar データタイプの文
字の内容は 16#FF(例:16#1255 は 16#55 に変更されます)に制限されています。

文字列"abcd"• 個々の文字は、二重引用符記号で囲まなくてはいけません。レシピ DB がインポートされる場合、二重引用符記号は省略される場合があります。
• 現在の長さ

WChar

"a"

個々の文字は、二重引用符記号で囲まなくてはいけません。レシピ DB がインポートされる場合、二重引用
符記号は省略される場合があります。レシピ DB がエ
クスポートされる場合、WChar データタイプの文字の
内容は 16#FF(例:16#1255 は 16#55 に変更されます)に制限されています。

Char

"a"

個々の文字は、二重引用符記号で囲まなくてはいけません。レシピ DB がインポートされる場合、二重引用
符記号は省略される場合があります。

4.12.1.5

レシピファンクションのサンプルプログラム
次の例では、レシピデータをデータブロック(レシピ DB)から CSV ファイルにエクスポー
トし、新しいレシピデータをデータブロックにインポートします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2583

拡張命令
4.12 レシピおよびデータロギング

要件
レシピデータのテンプレートとして、PLC データタイプ「Beer_Recipe」を作成します。

すべてのレシピデータレコードを保存するには、レシピ DB を作成します。レシピ DB の作成に関する詳細情報については、「レシピ DB の構造体 (ページ 2579)」を参照してください。

相互接続のデータを保存するには、グローバルデータブロックに 12 個のタグを作成しま
す。

2584

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

CSV ファイルを表示および保存するには、CPU の Web サーバーを使用します。Web サー
バーおよび CSV ファイルを使用するには、以下が必要です。
• Web サーバーは CPU の設定で有効にする必要があります。
• CPU の Web サーバープロパティを持つユーザープロファイルは、次の設定でセットアップする必要があります。
– ユーザーはファイルの読み取りができる必要があります。
– ユーザーはファイルの書き込み/削除ができる必要があります。

パラメータの相互接続
命令はファンクションブロックで呼び出されます。
ネットワーク 1:「RecipeExport」命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2585

拡張命令
4.12 レシピおよびデータロギング

ネットワーク 3:「RecipeImport」命令のパラメータを以下のように相互接続します。

ネットワーク 2 および 4:パラメータ STATUS 「expSTATUS」および「impSTATUS」()は 1 サイクルの間のみ有効であるため、「MOVE」命令でパラメータを記録します。出力パラメ
ータ OUT1 「outputErr_EXP」または「outputErr_IMP」()で、エラーが発生した場合にステータスを出力します。
ネットワーク 2 のパラメータを以下のように相互接続します。

2586

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

ネットワーク 4 のパラメータを以下のように相互接続します。

「RecipeExport」命令
エクスポートするレシピ DB は、RECIPE_DB パラメータで相互接続する必要があります。
REQ 「expREQ」()パラメータのシグナル状態が「TRUE」の場合、エクスポートが開始されます。レシピ DB のデータから、CSV ファイルが生成され、CPU メモリ内のレシピフォル
ダに保存されます。出力パラメータ STATUS 「expSTATUS」()で、信号の切り替えが発生したことが表示されます。また、それ以外の処理が行われていないことを示します(値は「7000」)。
出力パラメータ ERROR ("expERROR」)で、命令の処理がエラーなしで行われたことが示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2587

拡張命令
4.12 レシピおよびデータロギング「RecipeImport」命令
インポートするレシピ DB は、RECIPE_DB パラメータで相互接続する必要があります。REQ「impREQ」()パラメータのシグナル状態が「TRUE」の場合、エクスポートが開始されます。
既存のレシピ DB に、CPU メモリ内のレシピフォルダにある対応する CSV ファイルからすべてのレシピデータがロードされます。出力パラメータ STATUS 「impSTATUS」()で、信号の切り替えが発生したことが表示されます。また、それ以外の処理が行われていないことを示します(値は「7000」)。
出力パラメータ ERROR ("impERROR」)で、命令の処理がエラーなしで行われたことが示さ
れます。

2588

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

CSV ファイルの表示と保存
Web サーバーを開く

インターネットブラウザを使用して(CPU の IP アドレスを介して) Web サーバーを開き、
Web サーバーメニューにログオンします。
[ファイルブラウザ]タブで、CPU メモリ内の[レシピ]フォルダを開きます。
「RecipeExport」命令が実行されると、CPU は CSV ファイルを直ちに出力します。CSV フ
ァイルの現在のステータスを表示するには、[自動更新]ボタンをクリックします。ファン
クションの下には「オン」と表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2589

拡張命令
4.12 レシピおよびデータロギング
CSV ファイルの編集

CSV ファイルを編集するには、次のオプションがあります。
• Web サーバーで CSV ファイルを開く。
• CSV ファイルを PG/PC に保存する。
– 注記:編集した CSV ファイルを PC から CPU メモリにロードできるようにするには、最初に、CPU メモリで同じ名前の CSV ファイルを削除します。

– 編集後、Web サーバーを使用して CSV ファイルを CPU メモリにロードします。

ランタイム中にコンポーネント値を変更
ランタイム中にレシピ DB のコンポーネント値(たとえば、Recipe_DB.Product[4])を変更す
るには、ウォッチテーブルを使用します。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

2590

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

4.12.2

データロギング

4.12.2.1

データロギング - 概要

プロセス値の保存
データロギング命令は、ユーザープログラムでデータログにプロセス値を保存するために使用されます。データログは、メモリカード(MC)または内部のロードメモリに保存できます。データログは、CSV フォーマット(カンマ区切り値)で保存されます。
通知
文字列内の特殊文字
データログ内で文字列を使用する場合は、これらの文字列内で CSV ファイルの区切り文字を使用しないことを強く推奨します。この推奨事項を無視した場合、たとえば、MS Excel
で CSV ファイルを開くと、問題が発生する可能性があります。CSV ファイルの区切り文字の代わりに、「-」、「/」、空白文字「 」など、別の文字を使用してください。
また、文字列の末尾を示す文字と CR および LF も文字列内の特殊文字です。これらは命令によって正しく処理されないため、問題の原因となります。
データタイプは、次のルールに従って文字列に変換されます。
データタイプフォーマット

注記

浮動小数点 LReal+9.9999999999999E

常に指数関数で書き込まれる

数

+999
Real

符号付き整 LInt

+9.9999999E+99

常に指数関数で書き込まれる+9999999999999999999 符号付き整数の値の範囲: -9223372036854775808～+9223372036854775807

数
DInt+9999999999

整数の値の範囲: -2147483648～+2147483647

Int+99999整数の値の範囲: -32768～+32767

SInt

+999

整数の値の範囲: -128～+127

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2591

拡張命令
4.12 レシピおよびデータロギング
データタイプフォーマット

符号なし整 ULInt+9999999999999999999 整数の値の範囲:0～+18446744073709551615

数

9

2 進数

注記

UDInt

+9999999999

整数の値の範囲:0～+4294967295

UInt+99999整数の値の範囲:0～+65535

USInt

+999

整数の値の範囲:0～+255

LWord+9999999999999999999 整数の値の範囲:0～+18446744073709551615
9

DWord

+9999999999

整数の値の範囲:0～+4294967295

Word+99999整数の値の範囲:0～+65535

バイト

+999

整数の値の範囲:0～+255

Bool

9

値の範囲:0 または 1

dddddd:hh:mm:ss.999_9

ミリ秒、マイクロ秒およびナノ秒付きの ISO フォーマ99_999ット

TIME

hhh:mm:ss.999

ミリ秒付きの ISO フォーマット

S5TIME

hhh:mm:ss.999

ミリ秒付きの ISO フォーマット

LDT

YYYY-MM-DD

ミリ秒、マイクロ秒およびナノ秒付きの ISO フォーマhh:mm:ss.999_999_999

ット

YYYY-MM-DD

ミリ秒、マイクロ秒およびナノ秒付きの ISO フォーマhh:mm:ss.999_999_999

ット

YYYY-MM-DD

ミリ秒付きの ISO フォーマット

日付と時刻 LTIME

DTL
DT

hh:mm:ss.999
DATE

YYYY-MM-DD

ISO フォーマット

LTime_Of

hh:mm:ss.999_999_999

ISO フォーマット

hh:mm:ss.999

ISO フォーマット

_Day
TOD

2592

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
データタイプ文字

WString

フォーマット

注記"abcd"• 個々の文字は、二重引用符記号で囲まなくてはいけません。
• 現在の長さは、最大長までスペースで埋められています。
• データタイプ WString の文字列は、WChar データ
タイプの要素で構成されています。データログが保存される場合、WChar データタイプの文字の内容
は 16#FF(例:16#1255 は 16#55 に変更されます)に制限されています。

文字列"abcd"• 個々の文字は、二重引用符記号で囲まなくてはいけません。
• 現在の長さは、最大長までスペースで埋められて
います。

WChar

"a"

個々の文字は、二重引用符記号で囲まなくてはいけません。データログが保存される場合、WChar データタ
イプの文字の内容は 16#FF(例:16#1255 は 16#55 に変更されます)に制限されています。

Char

"a"

個々の文字は、二重引用符記号で囲まなくてはいけません。

使用しているプログラムでデータロギング命令を使用して、データログを作成または開く、
エントリを書き込む、およびデータログファイルを閉じることができます。
警告
データロギング命令のランタイム
下記の条件により、データロギング命令の速度が低下します。この影響は、データロギ
ングファイルのサイズや数が増大するほど強くなります。
• データログファイルのファイルサイズが大きい• メモリカード上のデータログファイルの数が多い• Web サーバーによるログファイルへの同時アクセス

一部のデータロギング命令のランタイムは、通常、データログのサイズや数によって損なわれません(「DataLogWrite」など)。一方、命令「DataLogCreate」、「DataLogNewFile」、「DataLogClear」および「DataLogOpen」は、上記の動作を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2593

拡張命令
4.12 レシピおよびデータロギング
注記
データの転送に使用されるデータロギング命令
データロギングファンクションは非同期的に実行されるため、DONE パラメータまたは
ERROR パラメータが値「1」に変更されるまで、ソース領域内のデータの整合性を保持する必要があります。
データバッファを作成することで、データバッファの作成中にどのプログラム値がデータログに保存されるか決定します。データバッファは、新規のデータログエントリ用のメモ
リとして使用します。新しい値は、「DataLogWrite (ページ 2616)」が呼び出される前にバッファに書き込まれる必要があります。「DataLogWrite (ページ 2616)」命令の実行中に、データはバッファからデータログレコードに書き込まれます。

&38
3/&
'$7$

ኤዙኜዊኍ
ኝኃዐዊዙኦ

FVY:HEኒዙክዙ:HEEURZVHU

ኾ኿዇
ኈዙኦ

ኤዙኜዊኍ✌ⅳኴዊኘኖ⊳

データログファイルは、次のように PC にコピーされます。
• PROFINET インターフェースが PC に接続されている場合、Web ブラウザを使用してWeb サーバー経由でデータログにアクセスします。これは、CPU の RUN または STOP
モードで実行できます。CPU が「RUN」モードの場合、Web サーバーによるデータの転送中もプログラムは実行を継続します。
• CPU にメモリカードがある場合、このカードを取り外し、PC やプログラミングデバイ
スの SD (セキュアデジタル)カードまたは MMC (MultiMediaCard)カード用の標準スロ
ットに挿入します。File Manager を使用して、メモリカードから PC へデータログファ
イルを転送します。メモリカードを取り外すと、CPU が「STOP」に移行します。

2594

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

注記
メモリカードの寿命
メモリカードの寿命は限られています。追加情報については、AUTOHOTSPOT

データログのプロパティ
データログのデータレコードの書き込みは、リングバッファの原理に従って実行されます。
データレコードの最大数(RECORD パラメータ)に達するまで、新規データレコードが追加されます。そして、次のデータレコードが、データログの「最も古い」データレコードを上書きします。
データレコードの上書きを防ぎたい場合は、「DataLogNewFile (ページ 2623)」命令を使用して現在のデータログに基づいて新規のデータログファイルを作成します。この場合、新規のデータレコードは新規のデータログに書き込まれます。

データログの作成「DataLogCreate (ページ 2598)」命令を使用して、ロードメモリの「"\DataLogs」ディレク
トリに新規のデータログファイルを作成できます。
• NAME パラメータで割り当てられた名前がデータログの名称で、さらに CSV ファイルのファイル名としても使用されます。このファイルは、ディレクトリ「DataLogs」に保存されます。
• ブロックパラメータ DATA は、新規のデータログオブジェクト、およびデータログの列
およびデータタイプのデータバッファを決定します。データログにあるデータレコー
ドの列およびデータタイプは、このデータバッファの構造体宣言または配列宣言のエレメントによって決定されます。構造体または配列の各エレメントは、データログの 1
行の 1 列に対応します。
• HEADER ブロックパラメータを使用して、各列にヘッダーのヘッダーテキストを割り当てます。
• 「DataLogCreate (ページ 2598)」命令は ID を返します。この ID は、他のデータロギン
グ命令が作成されたデータログの参照として使用します。

データログを開く
命令「DataLogOpen」(S7-1200 および S7-1500)を使用して、メモリカードの既存のデータログを開きます。新規データレコードを書き込む前に、データログを開く必要があります。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2595

拡張命令
4.12 レシピおよびデータロギング
データログは、「DataLogCreate (ページ 2598)」および「DataLogNewFile (ページ 2623)」
命令を実行すると自動的に開きます。
同時に、10 個のデータログを開くことができます。開くデータログは、データログの ID
または名前を使用して選択できます。
• ID および NAME パラメータでデータログの ID および名前を指定した場合、それぞれデータログは ID を元に識別されます。データログの名前は比較されません。
• パラメータ NAME を使用してデータログを選択し、ID として 0 を指定した場合、デー
タログを開いたときに、データログに属している ID が ID パラメータに表示されます。
• ID パラメータを使いデータログを選択し、名前を指定しない場合、データログを開いたときに NAME パラメータに名前が表示されます。
MODE パラメータを使用し、開いたときにデータログのデータレコードを削除するかどうかを指定します。
「DataLogOpen」(S7-1500)では、整合性チェックの実行が可能です。

データログへの書き込み
データレコードをデータログに書き込むためには、データログを(「DataLogOpen (ページ 2608)」命令で)開いておく必要があります。「DataLogWrite (ページ 2616)」命令は、データレコードをデータログに書き込みます。

データログを閉じる「DataLogClose (ページ 2619)」命令を使用して、開いているデータログを閉じます。ID パ
ラメータを使用してデータログを選択します。
CPU が STOP に切り替わった場合、および再起動された場合には、データログが自動的に閉じられます。

データログの削除「DataLogDelete (ページ 2621)」命令(S7-1500)を使用し、メモリカードからデータログフ
ァイルを削除します。
ログが「DataLogCreate (ページ 2598)」命令で作成された場合のみ、ログファイルに含まれているデータログおよびデータレコードを削除することが可能です。
NAME および ID パラメータを使用して、削除するデータログを選択します。最初に ID パ
ラメータが評価されます。関連する ID のデータログが存在する場合、NAME パラメータは2596

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
評価されません。ID パラメータで値「0」が使用されている場合、NAME パラメータでは
データタイプ STRING を使用する必要があります。
注記
メモリカードのデータログの削除
PC カードリーダを使用してメモリカードからデータログをコピーできますが、PC カード
リーダを使用してデータログを変更/削除してはなりません。
データログ命令に加えて、データログの表示、ダウンロード(コピー)および削除を行うには、Web サーバーを使用することを推奨します。
ファイルエクスプローラで直接メモリカードのファイルシステムを呼び出すと、データロ
グまたはその他のシステムファイルを誤って削除/変更し、その結果、ファイルが損傷したり、メモリカードが使用できなくなったりするというリスクが生じます。PLC の外部で行ったメモリカードのデータログの変更により、PLC の電源オン時間が増加するという影響があります。

データログのクリア「DataLogClear (ページ 2614)」命令(S7-1500)を使用し、既存のデータログ内のすべてのデータレコードを削除します。この命令は、CSV ファイルのオプションヘッダーは削除しません(「DataLogCreate (ページ 2598)」命令の HEADER パラメータの説明を参照)。
ID パラメータを使用し、データレコードを削除するデータログを選択します。データレ
コードを削除するには、データログを開いておく必要があります。

データログの新規ファイル「DataLogNewFile (ページ 2623)」命令(S7-1200)、または「DataLogTypedNewFile (ページ 2626)」命令(S7-1500)を使用し、既存のデータログと同じプロパティの新規データロ
グを作成します。これにより、既存のデータログの内容の保持が可能になります。
この命令が呼び出されると、メモリカードまたは内部ロードメモリに NAME パラメータで定義された名前の新しいデータログを作成します。ID パラメータを使用し、プロパティを新しいデータログに適用する古いデータログの ID を指定します。その後、新しいデータ
ログの ID は ID パラメータで出力されます。
命令の RECORDS パラメータを使用し、新しいデータログファイルサイズを指定します。
「DataLogTypedNewFile (ページ 2626)」命令(S7-1500)では、整合性チェックの実行が可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2597

拡張命令
4.12 レシピおよびデータロギング

4.12.2.2

DataLogCreate:データログ作成

説明「DataLogCreate」命令を使用して、データログを作成します。
データログは、メモリカードまたは内部のロードメモリのディレクトリ「\DataLogs」に保存できます。データログに保存されるデータ量は、メモリカードの空き領域または使用されている CPU の内部ロードメモリの記憶領域によって異なります。生成された CSV ファ
イルの最大サイズは、S7-1200 CPU の場合は 500,000,000 バイトで、S7-1500 CPU の場合
は 1,000,000,000 バイトです。
データログに保存されるデータレコードの最大数は、RECORDS パラメータで指定します。
指定されたデータログのデータレコードの最大数に到達すると、最も古いデータレコードが上書きされます。既存のデータレコードの上書きを防ぐには、「DataLogNewFile (ページ 2623)」命令を使用します。この命令を使用して、RECORDS パラメータで指定されている数に到達したときに(「DataLogWrite (ページ 2616)」命令の STATUS パラメータの戻り値が 1)、同じ構造体の新しいデータログを作成します。この場合、データレコードが新しいデータログに保存されます。
NAME パラメータで、データログの名前を指定します。データログは、CSV 形式(カンマ区切り値)で作成されます。HEADER パラメータを使用して、データログのヘッダーを作成します(オプション)。
データログが作成されたら、自動的に開きます。これによって、データを書き込むことが
できます。

2598

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

パラメータ以下の表に、「DataLogCreate」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、L、D、 命令の実行
T、C、または定数 データログは、パラメータ REQ での信号立(S7-1500 では、T ち上がりエッジで作成されます。
および C は LAD
および FBD でのみ使用可能)

RECORDS

Input

UDInt

I、Q、M、L、D、 データログのデータレコードの最大数
または定数「DataLogWrite (ページ 2616)」命令がこのパラメータで指定されているよりも多くのレコードを書き込んだ場合、最も古いレコードが上書きされます。

FORMAT

Input

UInt

I、Q、M、L、D、 データ形式:
または定数• 0:内部(サポートなし)• 1: CSV (Comma separated values)

TIMESTAMP

Input

UInt

I、Q、M、L、D、 タイムスタンプ。詳細は下記参照。
または定数

タイムスタンプが有効になった場合、ヘッダ
ーの追加列が自動的に追加されます。

NAME

Input

VARIANT

L、D

データログの名前指定された名前は、CSV ファイルのファイル名としても使用されます。
S7-1200 CPU では、データログの名前に以下の制限事項が適用されます。
• 名前は、最大 35 文字です。
• \ ' / " : ; [ ] | = . * ? < >を除く、0x20～0x7Eのすべての ASCII 文字が許可されています。
S7-1500 CPU では、データログの名前に以下の制限事項が適用されます。
• 名前は、最大 55 文字です。
• 以下の文字が許可されています。0 ... 9,a ... z, A ... Z に加えて -および_TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2599

拡張命令
4.12 レシピおよびデータロギング
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ID

InOut

DWORD

I、Q、M、L、D

データログのオブジェクト ID (出力のみ)作成されたデータログをアドレス指定するための追加のデータロギング命令には、データ
ログの ID が必要です。

HEADERInOut

VARIANTD

データログのヘッダー(オプション)
命令が追加された後、このパラメータは非表
示になります。
ヘッダーは、CSV ファイルに最初の行として書き込まれます。

DATA

InOut

VARIANTD「DataLogWrite (ページ 2616)」命令の実行時にデータレコードとして書き込まれるデータ
構造体へのポインタ。

DONE

Output

BOOL

I、Q、M、L、D

STATUS パラメータ:• 0:処理がまだ完了していません。
• 1:命令の処理が正常に終了しました。

BUSY

Output

BOOL

I、Q、M、L、D

STATUS パラメータ:• 0:命令の処理が開始されていないか、完了したか、またはキャンセルされました。
• 1:命令の処理が進行中です。

ERROR

Output

BOOL

I、Q、M、L、D

STATUS パラメータ:• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、L、D

詳細なステータス情報
詳細なエラー情報およびステータス情報は、パラメータ STATUS で出力されます。このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示するには、STATUS パラメータを空きデータ領域に
コピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2600

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

パラメータ HEADERHEADER パラメータは、CSV ファイル(ヘッダー)のヘッダーを定義するデータブロックへの
VARIANT ポインタです。ヘッダーは、CSV ファイルの表記で必ず最初の行になります。
• HEADER を使用してプリセットされたヘッダーが CSV ファイルに転送されます。ここでは、これがデータログの残りと一致しているかどうかに関するチェックは行われません。特に、カンマで区切られた列の数がデータ列の数と一致しているかどうかのチ
ェックは行われません。
• 個々の列の名前には、STRING、Array of BYTE、または Array of CHAR データタイプを使用できます。STRING データタイプを使用する場合、長さは 254 バイトに制限されます。Array of BYTE および Array of CHAR を使用する場合、5000 個のエレメントが使用可能です。
HEADER パラメータ内で値を指定していない、またはロードメモリ内に HEADER パラメー
タが配置されている場合、ヘッダーは作成されません。
TIMESTAMP の値が 1、3、および 5 の場合、ヘッダーの先頭に次のテキストが挿入されます: "Record, Date, UTC Time,"。
TIMESTAMP の値が 2 および 4 の場合、ヘッダーの先頭に次のテキストが挿入されます:"Record, Date, Loc Time,"。

パラメータ TIMESTAMP
以下の表に、TIMESTAMP に出力される可能性がある値を示します。

値

DATE_AND_TIME のフォ タイムソース
ーマット

注記

0

-

必須

1

• S7 1200:mm/dd/yyyy, システム時刻
hh:mm:ss

タイムスタンプなし

必須• S7 1500:yyyy-mm-dd,
hh:mm:ss.999

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2601

拡張命令
4.12 レシピおよびデータロギング
値

DATE_AND_TIME のフォ タイムソース
ーマット

注記

2

• S7-1200 CPU:mm/dd/
yyyy, hh:mm:ss

オプション

ローカルタイム• ファームウェアバージ
ョン V2.6 以降のS7‑1500:
mm/dd/yyyy,
hh:mm:ss[.999](24 時間表記, [オプションでミリ秒])3

ファームウェアバージョ システム時刻オプション

ン V2.6 以降の S7‑1500:
mm/dd/yyyy,
hh:mm:ss[.999](24 時間表記, [オプションでミリ秒])
4

ファームウェアバージョ ローカルタイムオプション

ン V2.6 以降の S7‑1500:
yyyy-mm-dd, hh:mm:ss.
[999](24 時間表記, [オプションでミリ秒])
5

ファームウェアバージョ システム時刻オプション

ン V2.6 以降の S7‑1500:
yyyy-mm-dd, hh:mm:ss.
[999](24 時間表記, [オプションでミリ秒])

パラメータ DATADATA パラメータは、データブロックの基本データタイプ、構造体または配列への VARIANT
ポインタです。構造体または配列のエレメントは、特定のデータタイプのデータログの列に対応します。

2602

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
データブロックを作成する場合、次に注意してください。
• 通常、列の数は、HEADER パラメータで定義された列の数と一致します。ただし、これは規定されていません。
• 構造体または配列の各エレメントは、CSV ファイルの列エントリに対応します。したがって、データタイプ STRUCT を使用しているときは、ネスト構造(STRUCT 内の
STRUCT)を使用できません。ただし、以下を例外として、データタイプ STRUCT 内での配列の使用は許可されています。エレメントがデータタイプ「PLC データタイプ(UDT)」の配列は許可されていません。
• データ構造は、最大 256 エレメントを含むことができます。256 を超えるエレメントがある場合、STATUS パラメータでエラーコード 8C52 が出力されます。
• データブロックのタグは、保持型または非保持型のタグとして設定できます。ただし、保持設定は、データブロックのすべてのタグで同じであることが必要です。

パラメータ STATUS (S7-1200)
エラーコード* 説明(W#16#...)
0

エラーはありません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQは対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogCreate 命令の最大数に既に達しています。

8090

無効なファイル名(NAME パラメータの説明を参照)。

8093

データログが既に存在します。

8097

ファイルの長さがファイルシステムの制限または CPU 固有の制限を超えています。

80A2

ファイルシステムから書き込みエラーが返されました。

80B2

データログの最大数を超えています。

80B3

メモリカードのメモリ領域が不十分です。

80B4

メモリカードが書き込み禁止になっています。

80C0

現在アクセスできません。

80C1

開いているデータログが多すぎます。

8253

RECORDS パラメータの値が無効です。

8353

形式の選択が無効です

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2603

拡張命令
4.12 レシピおよびデータロギング
エラーコード* 説明(W#16#...)
8453

無効なタイムスタンプ

8B24

パラメータ HEADER での割り当てが無効です(例:ローカルメモリをポイントする)。

8B51

パラメータ HEADER のデータタイプが許可されていない、または長さが最大値を超過し得
いる。

8C24

パラメータ DATA での割り当てが無効です(例:ローカルメモリをポイントする)。

8C51

パラメータ DATA のデータタイプが許可されていない/ データ構造 が使用できない。

8C52

パラメータ DATA の構造体に、256 を超えるエレメントが含まれています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS (S7-1500)
エラーコード* 説明(W#16#...)
0

エラーはありません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 0

8070

同時に有効な DataLogCreate 命令の最大数に既に達しています。

8090

無効なファイル名(NAME パラメータの説明を参照)。

8091「NAME」パラメータが文字列ではありません。

8093

データログが既に存在します。

8097

ファイルの長さがファイルシステムの制限または CPU 固有の制限を超えています。

80A2

ファイルシステムから書き込みエラーが返されました。

80B2

データログの最大数を超えています。

80B3

メモリカードのメモリ領域が不十分です。

80B4

メモリカードが書き込み禁止になっています。

80C0

現在アクセスできません。

80C1

開いているデータログが多すぎます。

8253

RECORDS パラメータの値が無効です。

8353

形式の選択が無効です。

8453

無効なタイムスタンプ。

2604

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
エラーコード* 説明(W#16#...)
8B24

パラメータ HEADER での割り当てが無効です(例:ローカルメモリをポイントする)。

8B51

パラメータ HEADER のデータタイプが許可されていない、または長さが最大値を超過し得
いる。

8C24

パラメータ DATA での割り当てが無効です(例:ローカルメモリをポイントする)。

8C51

パラメータ DATA のデータタイプが許可されていない/ データ構造 が使用できない。

8C52

パラメータ DATA の構造体に、256 を超えるエレメントが含まれています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

DataLogCreate の例
次の例では、タイムスタンプと 3 つのプロセス値を持つ単純なデータログが作成されています。

グローバルデータブロック内のタグ
データログの入力パラメータの値は、グローバルデータブロック「DataLogDB」に保存されます。
• DataLogName (String):このタグには、CSV ファイルのファイル名としても使用されるデータログの名前が含まれています。
• DataLogID (DInt):命令が呼び出されたときに、データログの ID がこのタグに書き込まれます。
– ID は命令によって自動的に割り当てられます。
– このデータログをアドレス指定するには、他のデータログ命令でタグ「DataLogID」
を使用します。
• MyHeader (String):このタグには、データログのヘッダー、つまり、プロセス値の列見出しが含まれています。
• MyData (Struct):このタグには、データログに書き込まれる 3 つのプロセス値が含まれています。レコードが書き込まれるたびに(命令「DataLogWrite (ページ 2616)」)、現在値が新しいレコードに書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2605

拡張命令
4.12 レシピおよびデータロギング「DataLogCreate」命令の呼び出し
この命令は、次の入力パラメータを使用して呼び出されます。
• REQ (BOOL):REQ = 「TRUE」の場合、データログが作成されます。
• RECORD (3):最大 3 つのデータレコードをデータログに書き込むことができます。その後、最も古いデータレコードが上書きされます。
• FORMAT (1):データログは CSV ファイルとして作成されます。
• TIMESTAMP (1):有効:データログ用に 2 つの追加列(日付と時刻)が自動的に作成されます。「DataLogWrite (ページ 2616)」が実行されるたびに、現在のタイムスタンプがデータレコードに書き込まれます。
• NAME (VARIANT):データブロック「DataLogDB」内のタグ「DataLogName」へのポインタ。
• ID (DWORD):データブロック「DataLogDB」内のタグ「DataLogID」へのポインタ(出力のみ)。
• HEADER (VARIANT):データブロック「DataLogDB」内のタグ「MyHeader」へのポイン
タ。
• DATA (VARIANT):データブロック「DataLogDB」内のタグ「MyData」へのポインタ。

2606

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

Web サーバーを経由したデータログの読み出し
Web サーバーを使用して作成済みデータログを読み出します。
• CPU のプロパティで Web サーバーを有効にします。データログを読み出すには、Web
サーバーに対して「ファイルの読み取り」権限を有効にする必要があります。
• インターネットブラウザで Web サーバーにアクセスするには、URL として CPU の IP ア
ドレスを入力します。
• [Filebrowser]の下に、データログを含むディレクトリ「\DataLogs」が自動的に作成されています。または、メニューの[データログ]で確認することも可能です。
• 命令「DataLogWrite (ページ 2616)」がまだ実行されていない場合、データログには 1
つのエントリ「//END」しか含まれていません。「DataLogWrite (ページ 2616)」の初期
実行後に、最初のデータレコードが書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2607

拡張命令
4.12 レシピおよびデータロギング

DataLogCreate および追加命令の例
例については、以下を参照してください。データログを使った作業のサンプルプログラム(ページ 2628)。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
データロギング - 概要 (ページ 2591)
同期命令と非同期命令の相違 (ページ 29)

4.12.2.3

DataLogOpen:データログを開く

DataLogOpen: データログを開く
説明「DataLogOpen」命令を使用して、メモリカードにある既存のデータログを開きます。データログに新規データレコードを書き込むには、データログが開いている必要があります。
データログは、「DataLogCreate (ページ 2598)」および「DataLogNewFile (ページ 2623)」
命令を実行すると自動的に開きます。
同時に、10 個のデータログを開くことができます。開くデータログは、データログの ID
または名前を使用して選択できます。
• ID および NAME パラメータでデータログの ID および名前を指定した場合、それぞれデータログは ID を元に識別されます。データログの名前は比較されません。
• パラメータ NAME を使用してデータログを選択し、ID として 0 を指定した場合、デー
タログを開いたときに、データログに属している ID が ID パラメータに表示されます。
• ID パラメータを使いデータログを選択し、名前を指定しない場合、データログを開いたときに NAME パラメータに名前が表示されます。
MODE パラメータを使用し、開いたときにデータログのデータレコードを削除するかどうかを指定します。

2608

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

パラメータ以下の表に、「DataLogOpen」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

REQ

Input

BOOL

説明

I、Q、M、L、D、 信号立ち上がりエッジでの命令の実行。
または定数

MODE

Input

UInt

I、Q、M、L、D、 データログを開くモード:
または定数• MODE= 「0」データログのデータレコードが保持されます• MODE= 「1」データログのデータレコードは削除されますが、ヘッダーは保持されます。

NAME

Input

VARIANT

L、D

データログの(ファイル)名。

ID

InOut

DWORD

I、Q、M、L、D

データログのオブジェクト ID。

DONE

Output

BOOL

I、Q、M、L、D

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、L、D

命令の実行が未完了です。

ERROR

Output

BOOL

I、Q、M、L、D• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、L、D

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示
するには、STATUS パラメータを空きデータ
領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコード* (W#16#...)

説明

0

エラーはありません。

2

警告:このアプリケーションでデータログが既に開かれています。

7000

ジョブ処理が行われていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2609

拡張命令
4.12 レシピおよびデータロギング
エラーコード* (W#16#...)

説明

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogOpen 命令の最大数に既に達しています。

8090

データログの定義と既存のデータログデータに矛盾があります。

8091

String 以外のデータタイプが NAME パラメータで使用されました。

8092

データログが存在しません。

80B4

メモリカードが書き込み禁止になっています。

80C1

開いているファイルが多すぎます。

プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。データログを使った作業のサンプルプログラム(ページ 2628)
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

下記も参照
データロギング - 概要 (ページ 2591)
同期命令と非同期命令の相違 (ページ 29)

DataLogOpen:データログを開く

説明「DataLogOpen」命令を使用して、メモリカードにある既存のデータログを開きます。新規
データレコードを書き込むには、データログを開く必要があります。
データログは、「DataLogCreate (ページ 2598)」および「DataLogNewFile (ページ 2623)」
命令を実行すると自動的に開きます。

2610

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
同時に、10 個のデータログを開くことができます。開くデータログは、データログの ID
または名前を使用して選択できます。
• ID および NAME パラメータでデータログの ID および名前を指定した場合、それぞれデータログは ID を元に識別されます。データログの名前は比較されません。
• パラメータ NAME を使用してデータログを選択し、ID として 0 を指定した場合、デー
タログを開いたときに、データログに属している ID が ID パラメータに表示されます。
• ID パラメータを使いデータログを選択し、名前を指定しない場合、データログを開いたときに NAME パラメータに名前が表示されます。
MODE パラメータを使用し、開いたときにデータログのデータレコードを削除するかどうかを指定します。
DATA パラメータは、開くデータログと命令「DataLogCreate (ページ 2598)」のデータロ
グの定義の間の整合性チェックを有効にします。DATA パラメータのデータタイプが「DataLogCreate」のデータタイプと同一であるかどうかに関するチェックが行われます。
同一でない場合は、エラーコード W#16#8090 が STATUS パラメータに出力されます。
注記
データログが開いた状態での変更済みデータ構造体のロード
データログが開いた状態で、このデータログに属する変更済みデータ構造体をロードすると、データログが破損します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2611

拡張命令
4.12 レシピおよびデータロギング

パラメータ以下の表に、「DataLogOpen」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

REQ

Input

BOOL

説明

I、Q、M、L、D、 信号立ち上がりエッジでの命令の実行。
T、C、または定数(S7-1500 では、Tおよび C は LAD
および FBD でのみ使用可能)

MODE

Input

UInt

I、Q、M、L、D、 データログを開くモード:
または定数• MODE= 「0」データログのデータレコードが保持されます• MODE= 「1」データログのデータレコードは削除されますが、ヘッダーは保持されます。

NAME

Input

VARIANT

L、D

データログの(ファイル)名。

ID

InOut

DWORD

I、Q、M、L、D

データログのオブジェクト ID。

DATA

InOut

VARIANTD

整合性チェックあり:「DataLogCreate (ページ 2598)」命令の DATA パラメータのデータ
領域へのポインタ。

DONE

Output

BOOL

I、Q、M、L、D

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、L、D

命令の実行が未完了です。

ERROR

Output

BOOL

I、Q、M、L、D• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、L、D

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示
するには、STATUS パラメータを空きデータ
領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2612

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

STATUS パラメータ
エラーコード* (W#16#...)

説明

0

エラーはありません。

2

警告:このアプリケーションでデータログが既に開かれています。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQは対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogOpen 命令の最大数に既に達しています。

8090

データタイプの不整合。ID パラメータのデータログが、DATA パラメータに指定されたデータタイプとは異なるデータタイプを使用します。

8091

String 以外のデータタイプが NAME パラメータで使用されました。

8092

データログが存在しません。

80B4

メモリカードまたはデータログファイルが書き込み保護されています。

80C0

現在アクセスできません。このエラーは、RUN モード中にロードした場合などに発生することがあります。

80C1

開いているファイルが多すぎます。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「データログを使った作業のサンプルプログラム (ページ 2628)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

下記も参照
データロギング - 概要 (ページ 2591)
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2613

拡張命令
4.12 レシピおよびデータロギング

4.12.2.4

DataLogClear: データログを空にする

説明「DataLogClear」命令は、既存のデータログ内のすべてのデータレコードを削除します。こ
の命令は、CSV ファイルのオプションヘッダーは削除しません(「DataLogCreate (ページ 2598)」命令の HEADER パラメータの説明を参照)。
ID パラメータを使用して、データレコードを削除するデータログを選択します。

要件
データレコードを削除するには、データログを開いておく必要があります(「DataLogOpen(ページ 2608)命令」を参照)。

パラメータ
以下の表に、「DataLogClear」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、L、D、 信号立ち上がりエッジでの命令の実行。
T、C、または定数(S7-1500 では、Tおよび C は LAD
および FBD でのみ
使用可能)

ID

InOut

DWORD

I、Q、M、D、L

データログのオブジェクト ID

DONE

Output

BOOL

I、Q、M、D、L

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、D、L

命令の実行が未完了です。

2614

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
パラメータ

宣言

データタイプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータ
スを表示するには、STATUS パラメータを空きデータ領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS
エラーコー
ド*(W#16#...)

説明

0000

エラーは発生していません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogClear 命令の最大数に既に達しています。

8080

ID パラメータで選択したデータログファイルは、「DataLogClear」命令によって処理されま
せん。

8092

データログが存在しません。

80A2

ファイルシステムから書き込みエラーが返されました。

80B0

データログが開いていません。

80B4

メモリカードが書き込み禁止になっています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2615

拡張命令
4.12 レシピおよびデータロギング

下記も参照
データロギング - 概要 (ページ 2591)
同期命令と非同期命令の相違 (ページ 29)

4.12.2.5

DataLogWrite: データログ書き込み

説明「DataLogWrite」命令を使用して、既存のデータログにデータレコードを書き込みます。ID
パラメータを使用して、データレコードの書き込み先のデータログを選択します。新規のデータレコードを作成するためには、データログが開いている必要があります。この命令
は、データログ作成時に DATA パラメータで指定された形式で新規のデータレコードを作成します。
「DataLogWrite」命令を呼び出す前に、データを「DataLogCreate」命令の DATA パラメー
タで相互接続したタグに転送します。「DataLogWrite」命令が実行されると、転送された
データはデータログにコピーされます。
通知
CPU への電源が切断された時点でデータログデータが消失「DataLogWrite」命令の実行中に電源が切断されると、転送するデータレコードが失われ
ます。

2616

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

パラメータ以下の表に、「DataLogWrite」命令のパラメータを示します。
パラメータ

宣言

データタイ メモリ領域
プ

REQ

Input

BOOL

説明

I、Q、M、L、D、 信号立ち上がりエッジでの命令の実行。
T、C、または定数(S7-1500 では、Tおよび C は LAD
および FBD でのみ使用可能)

ID

InOut

DWORD

I、Q、M、L、D

データログのオブジェクト ID

DONE

Output

BOOL

I、Q、M、L、D

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、L、D

命令の実行が未完了です。

ERROR

Output

BOOL

I、Q、M、L、D• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、L、D

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示
するには、STATUS パラメータを空きデータ
領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS (S7-1200)
エラーコード* 説明(W#16#...)
0

エラーはありません

0001

ファイルの最後に、最後の可能なデータレコードが作成されました。別のデータレコードを作成すると、古いデータレコードが上書きされます。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2617

拡張命令
4.12 レシピおよびデータロギング
エラーコード* 説明(W#16#...)
8070

同時に有効な DataLogWrite 命令の最大数に既に達しています。

8090

データログの定義が既存のデータログと一致しません。

8092

データログが存在しません。

80A2

ファイルシステムから書き込みエラーが返されました。

80B0

データログが開いていません。

80B3

メモリカードのメモリ領域が不十分です。

80B4

メモリカードが書き込み禁止になっています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS (S7-1500)
エラーコード* 説明(W#16#...)
0

エラーはありません

0001

ファイルの最後に、最後の可能なデータレコードが作成されました。別のデータレコードを作成すると、古いデータレコードが上書きされます。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 0

8070

同時に有効な DataLogWrite 命令の最大数に既に達しています。

8090

データログの定義が既存のデータログと一致しません。

8092

データログが存在しません。

80A2

ファイルシステムから書き込みエラーが返されました。

80B0

データログが開いていません。

80B3

メモリカードのメモリ領域が不十分です。

80B4

メモリカードが書き込み禁止になっています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2618

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

例
例については、「データログを使った作業のサンプルプログラム (ページ 2628)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

下記も参照
データロギング - 概要 (ページ 2591)
同期命令と非同期命令の相違 (ページ 29)

4.12.2.6

DataLogClose: データログのクローズ

説明「DataLogClose」命令を使用して、開いているデータログを閉じます。ID パラメータを使用
してデータログを選択します。
注記
データログを自動的に閉じる
CPU が STOP になった場合、または再起動された場合には、データログが自動的に閉じま
す。

パラメータ
以下の表に、「DataLogClose」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、L、D、 信号立ち上がりエッジで機能を実行しま
T、C、または定数 す。
(S7-1500 では、Tおよび C は LAD
および FBD でのみ
使用可能)

ID

InOut

DWORD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

I、Q、M、L、D

データログのオブジェクト ID

2619

拡張命令
4.12 レシピおよびデータロギング
パラメータ

宣言

データタイ
プ

メモリ領域

説明

DONE

Output

BOOL

I、Q、M、L、D

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、L、D

命令の実行が未完了です。

ERROR

Output

BOOL

I、Q、M、L、D• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、L、D

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示するには、STATUS パラメータを空き
データ領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ STATUS (S7-1200)
エラーコード* 説明(W#16#...)
0

エラーはありません

1

データログが開いていません

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogClose 命令の最大数に既に達しています。

8092

データログが存在しません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2620

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

パラメータ STATUS (S7-1500)
エラーコード* 説明(W#16#...)
0

エラーはありません

1

データログが開いていません

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 0

8070

同時に有効な DataLogClose 命令の最大数に既に達しています。

8092

データログが存在しません。

80B4

メモリカードが書き込み禁止になっています。

80C0

現在アクセスできません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「データログを使った作業のサンプルプログラム (ページ 2628)」を参照してください。
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令用のサンプルライブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

4.12.2.7

DataLogDelete: データログの削除

説明「DataLogDelete」命令を使用し、メモリカードからデータログファイルを削除します。
「DataLogCreate」または「DataLogNewFile」命令で作成された場合のみ、データログとデータログに含まれているデータレコードが削除されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2621

拡張命令
4.12 レシピおよびデータロギング

パラメータ以下の表に、「DataLogDelete」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、L、D、 信号立ち上がりエッジでの命令の実行。
T、C、または定数(S7-1500 では、Tおよび C は LAD
および FBD でのみ
使用可能)

NAME

Input

VARIANTL、D

DELFILE

Input

BOOL

I、Q、M、D、L、 • 0:データログが保持されます。

データログのファイル名

または定数• 1:データログが削除されます。

ID

InOut

DWORD

I、Q、M、D、L

データログのオブジェクト ID

DONE

Output

BOOL

I、Q、M、D、L

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、D、L

データログの削除が未完了です。

ERROR

Output

BOOL

I、Q、M、D、L• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータ
スを表示するには、STATUS パラメータを空きデータ領域にコピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

NAME および ID パラメータ
NAME および ID パラメータを使用して、削除するデータログを選択します。最初に ID パ
ラメータが評価されます。関連する ID のデータログが存在する場合、NAME パラメータは評価されません。ID パラメータで値「0」が使用されている場合、NAME パラメータでは
データタイプ STRING を使用する必要があります。

2622

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0

エラーは発生していません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogDelete 命令の最大数に既に達しています。

8091

STRING 以外のデータタイプが NAME パラメータで使用されています。

8092

データログが存在しません。

80A2

ファイルシステムから書き込みエラーが返されました。

80B4

メモリカードが書き込み禁止になっています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
DataLogCreate:データログ作成 (ページ 2598)
同期命令と非同期命令の相違 (ページ 29)
Sample Library for Instructions (ページ 25)
データログを使った作業のサンプルプログラム (ページ 2628)

4.12.2.8

DataLogNewFile: 新規ファイルのデータロ

グDataLogNewFile: 新規ファイルのデータログ

説明「DataLogNewFile」命令を使用して、既存のデータログと同じプロパティを持つ新規デー
タログを作成します。これにより、既存のデータログの内容の保持が可能になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2623

拡張命令
4.12 レシピおよびデータロギング
この命令が呼び出されると、メモリカードまたは内部ロードメモリに NAME パラメータで定義された名前の新しいデータログを作成します。ID パラメータを使用し、プロパティを新しいデータログに適用する古いデータログの ID を指定します。その後、新しいデータ
ログの ID は ID パラメータで出力されます。
命令の RECORDS パラメータを使用し、新しいデータログファイルサイズを指定します。
新しいデータログが作成されたら、自動的に開きます。これによって、データを書き込むことができます。

パラメータ
以下の表に、「DataLogNewFile」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、L、D、 信号立ち上がりエッジでの命令の実行。
または定数

RECORDS

Input

UDInt

I、Q、M、L、D、 データログにあるデータレコードの数
または定数

NAME

Input

VARIANT

L、D

新しいデータログのファイル名.

ID

InOut

DWORD

I、Q、M、L、D

データログのオブジェクト ID• In:既存のデータログの ID• OUT:新しいデータログの ID

DONE

Output

BOOL

I、Q、M、L、D

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、L、D

命令の実行が未完了です。

ERROR

Output

BOOL

I、Q、M、L、D• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、L、D

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示するには、STATUS パラメータを空きデータ領域に
コピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

2624

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

STATUS パラメータ
エラーコード* 説明(W#16#...)
0

エラーはありません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogNewFile 命令の最大数に既に達しています。

8090

無効なファイル名。

8091

NAME パラメータのデータタイプが STRING ではありません。

8092

ソースデータログが存在しません。

8093

新しいデータログが既に存在しています。

8097

ファイル長さがファイルシステム制限を超えました。

80A0

データタイプの不整合。ID パラメータのデータログが、DATA パラメータに指定されたデータタイプとは異なるデータタイプを使用します。

80A2

ファイルシステムから書き込みエラーが返されました。

80B2

データログの最大数を超えているか、データログリソースを使い切りました。

80B3

ロードメモリが不足しています。

80B4

メモリカードが書き込み禁止になっています。

80C1

開いているファイルが多すぎます。

8253

RECORDS パラメータの値が無効です。

プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。データログを使った作業のサンプルプログラム(ページ 2628)
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2625

拡張命令
4.12 レシピおよびデータロギング

DataLogNewFile: 新規ファイルのデータログ

説明「DataLogNewFile」命令を使用して、既存のデータログと同じプロパティを持つ新規デー
タログを作成します。これにより、既存のデータログの内容の保持が可能になります。
この命令が呼び出されると、メモリカードまたは内部ロードメモリに NAME パラメータで定義された名前の新しいデータログを作成します。ID パラメータを使用し、プロパティを新しいデータログに適用する古いデータログの ID を指定します。その後、新しいデータ
ログの ID は ID パラメータで出力されます。
命令の RECORDS パラメータを使用し、新しいデータログファイルサイズを指定します。
パラメータ DATA は、作成される新しいデータログと命令「DataLogCreate (ページ 2598)」のデータログの定義の間の整合性チェックを有効にします。DATA パラメータのデータタ
イプが「DataLogCreate」のデータタイプと同一であるかどうかに関するチェックが行われます。これ以外の場合、エラーコード W#16#80A0 が STATUS パラメータで出力されます。
新しいデータログが作成されたら、自動的に開きます。これによって、データを書き込むことができます。

パラメータ
以下の表に、「DataLogNewFile」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、L、D、 信号立ち上がりエッジでの命令の実行。
T、C、または定数(S7-1500 では、Tおよび C は LAD
および FBD でのみ使用可能)

RECORDS

Input

UDInt

I、Q、M、L、D、 データログにあるデータレコードの数
または定数

NAME

Input

VARIANT

L、D

新しいデータログのファイル名.

ID

InOut

DWORD

I、Q、M、L、D

データログのオブジェクト ID• In:既存のデータログの ID• OUT:新しいデータログの ID

2626

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
パラメータ

宣言

データタ
イプ

メモリ領域

説明

DATA

InOut

VARIANTD

整合性チェックを行うデータタイプ

DONE

Output

BOOL

I、Q、M、L、D

命令が正常に実行されました。

BUSY

Output

BOOL

I、Q、M、L、D

命令の実行が未完了です。

ERROR

Output

BOOL

I、Q、M、L、D• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、L、D

STATUS パラメータ
このパラメータは、1 回の呼び出しの間のみ設定されます。このため、ステータスを表示するには、STATUS パラメータを空きデータ領域に
コピーします。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコー
ド*

説明

(W#16#...)
0

エラーはありません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外):命令が既に有効です。BUSY の値は「1」です。

8070

同時に有効な DataLogNewFile 命令の最大数に既に達しています。

8090

無効なファイル名。

8091

NAME パラメータのデータタイプが STRING ではありません。

8092

ソースデータログが存在しません。

8093

新しいデータログが既に存在しています。

8097

ファイルの長さがファイルシステムの制限または CPU 固有の制限を超過しています。

80A0

データタイプの不整合。ID パラメータのデータログが、DATA パラメータに指定されたデータタイプとは異なるデータタイプを使用します。

80A2

ファイルシステムから書き込みエラーが返されました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2627

拡張命令
4.12 レシピおよびデータロギング
エラーコー
ド*

説明

(W#16#...)
80B2

データログの最大数を超えているか、データログリソースを使い切りました。

80B3

ロードメモリが不足しています。

80B4

メモリカードが書き込み禁止になっています。

80C0

現在アクセスできません。

80C1

開いているファイルが多すぎます。

8253

RECORDS パラメータの値が無効です。

プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、「データログを使った作業のサンプルプログラム (ページ 2628)」を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令用のサンプルラ
イブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

4.12.2.9

データログを使った作業のサンプルプログラム

概要
以下のサンプルプログラムでは、データログの作成、1 つ以上のレコードのデータログへの書き込み、データログの開閉、およびデータログに基づいたファイルの新規作成を実行します。この例では、データログを削除する方法、および最大で 8 つのデータログを編集する方法も示されています。
個々の命令の詳細情報については、対応するリンクを使用して対応するヘルプの説明を参照
してください。

2628

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

データログの使用に関する一般的な注記• 作成したデータログは、「DataLogCreate」および「DataLogNew」命令が実行されると自動的に開きます。
• データログは、CPU 再起動後に CPU が RUN から STOP に切り替わった後に自動的に閉じます。
• 「DataLogWrite」命令を実行する場合は、データログが開いている必要があります。
• S7-1200 CPU の場合は、最大 8 個のデータログを同時に開くことができます。S7-1500
CPU の場合は、最大 10 個のデータログを同時に開くことができます。

要件
CPU プロパティで、以下の設定を実行します。
• [PROFINET インターフェース|Web サーバーへのアクセス]で、Web サーバーへのアクセスを有効にします。
• [Web サーバー]エントリで、モジュールに対して Web サーバーを有効にします。
• [ユーザー管理]セクションで、ファイルの読み取り、書き込み、および削除権限を持つ新しいユーザーを作成します。

データストレージ
データログの呼び出し、および編集には、データログの名前および ID が必要です。これ
らのデータが消失しないように、データログエントリ用のメモリを作成します。PLC デー
タタイプ「stackDataLog」によって、データログエントリの構造体を定義します。

グローバルデータブロック(SLI_gDB_Datalogging)にデータを保存するために、以下のタグを作成します。これらには、データログエントリ用のメモリ、およびメモリを制御するための変数も含まれます。
注記:CPU のロードメモリからデータログを物理的に削除する場合は、値が「TRUE」の「DLdelete.deleteMode」タグを使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2629

拡張命令
4.12 レシピおよびデータロギング

DB 「SLI_gDB_Datalogging」()を使用して、データログの作成(DataLogCreate (ページ 2598))、または削除(DataLogDelete (ページ 2621))を行います。構造体「myData」の 3
つのエントリがプロセス値(count、temerature、および pressure)として使用されます。データブロックには、これらの 3 つの値が一時的に保存され、次にデータレコードとして[DataLogWrite (ページ 2616)]命令によりデータログに転送されます。
データレコードは、以下のエントリで構成されます。
• データレコード番号(自動割り当て)• 日付(TIMESTAMP パラメータで DataLogCreate に「1」が使用される場合、自動割り当て)。
• 時刻(TIMESTAMP パラメータで DataLogCreate に「1」が使用される場合、自動割り当て)。
• 「myData」構造体からの「count」の現在値。
• 「myData」構造体からの「temperature」の現在値。
• 「myData」構造体からの「pressure」の現在値。

2630

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
グローバルデータブロック「SLI_gDB_DataLogW」を使用して、データレコードを書き込
むためのプロセス値を使用可能にします(DataLogWrite (ページ 2616))。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2631

拡張命令
4.12 レシピおよびデータロギング

FC「SLI_FC_saveEntry_DataLog」:パラメータの相互接続
FC「SLI_FC_saveEntry_DataLog」を使用して、データログの名前および ID を保存します。
その FB 内に以下のローカルタグを作成します。

ネットワーク 1:入力パラメータ「#name」および「#logID」によって、タグ「name」および「logID」の値を転送します。

ネットワーク 2:「nextPosInstack」タグは、「dataLogEntries」配列内のデータログエント
リに使用する保存先を指定します。「maxPosEntry」タグは、「dataLogEntries」配列内の最後のセルを指定します。以降の処理のために、以下のように「nextPosInstack」および「maxPosEntry」タグの値を相互接続します。

ネットワーク 3:以下の方法で、「dataLogEntries」配列に名前および ID を格納します。

2632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

ネットワーク 4:メモリの他のエントリ内に新しいデータログが格納されるように、タグ「nextPosInStack」をインクリメントします。
注記:格納制限値(「#maxPosEntry」)に達すると、「nextPosInStack」タグがインクリメント
されず、値「0」にリセットされます。これは、新しいデータログのデータが古いデータ
ログのデータを上書きすることを意味します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2633

拡張命令
4.12 レシピおよびデータロギング

FC「SLI_FC_callEntry_DataLog」:パラメータの相互接続選択したデータログエントリの名前および ID を呼び出すと、FC「SLI_FC_callEntry_DataLog」が作成されます。その FB 内に以下のローカルタグを作成します。「callEntry」タグによって、データログエントリの選択を指定します。

ネットワーク 1:以降の処理のために、以下のように「callEntry」タグの値を相互接続します。

ネットワーク 2:作成したデータログの名前および ID を以下のように呼び出します。

ネットワーク 3:出力パラメータ「#name」および「#logID」によって、タグ「dataLogEntries.name」および「dataLogEntries.ID」の値を転送します。

2634

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

FC「SLI_FC_deleteEntry_DataLog」:パラメータの相互接続
データログエントリのデータを削除するには、FC「SLI_FC_deleteEntry_DataLog」を使用します。その FB 内に以下のローカルタグを作成します。

ネットワーク 1:次に、一時タグ「#tempEntry」に値が格納されていることを確認します。

ネットワーク 2:「callEntry」タグの値が「maxPosEntry」タグの値を超えていない場合、以下の処理が発生します。
• 「callEntry」タグの値が入力パラメータ#deleteEntry で転送されます。削除するデータ
ログエントリは、タグ「callEntry」によって選択します。
• 選択されたデータログエントリのタグ「dataLogEntries.name」、「dataLogEntries.ID」、
および「dataLogEntries.DLclosed」がリセットされます。
この相互接続は、以下のように示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2635

拡張命令
4.12 レシピおよびデータロギング

FC「SLI_FC_memCloseEntry_DataLog」:パラメータの相互接続
データログのステータス(開いた、または閉じた状態)を保存するには、FC「SLI_FC_memCloseEntry_DataLog」を使用します。その FB 内に以下のローカルタグを作成します。

ネットワーク 1:データログエントリを選択するには、入力パラメータ「#callEntry」の値を転送します。さらに、入力パラメータ「#memClose」によってデータログの状態を転送します。

ネットワーク 2:適切なデータログエントリ内に、データログのステータスを保存します。
この相互接続は、以下のように示されます。

2636

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

FB「SLI_FB_DataLogging」:パラメータの相互接続
サンプルプログラムの中心的なブロックとして、FB「SLI_FB_DataLogging」を作成します。FB で以下のローカルタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2637

拡張命令
4.12 レシピおよびデータロギング
この FB に以下の相互接続を作成します。プログラムサイクル OB (OB1)で FB を呼び出します。
ネットワーク 1:入力パラメータ REQ 「DLcreate.execute」() (命令 DataLogCreate (ページ 2598)の)での立ち上がりエッジによって、データログの作成が開始されます。
DataLogCreate の出力パラメータ DONE 「#createDone」() は 1 サイクルの間のみ有効です。
そのため、このパラメータの値を「DLcreate.dlogCreated」タグに保存します。
「DLcreate.execute」タグは、プロセス内でリセットされます。
エラーが発生した場合は、「DLcreate.memErrStatus」タグ内のステータス「DLcreate.status」()が保存されます。

ネットワーク 2:FC「SLI_FC_saveEntry_DataLog」を使用して、データログの名前および IDを保存します。パラメータ DONE 「#createDone」()のシグナル状態が「TRUE」の場合、保存が実行されます。

2638

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

ネットワーク 3:立ち上がりエッジにより、新しいプロセス値が「myData」 構造体に保存される時点がトリガされます。このステップは、データブロック「SLI_gDB_DataLogging」に必要なプロセス値を一時的に保存するために使用されます。
さらに、FC「SLI_FC_callEntry_DataLog」を使用して、必要なデータログが呼び出されます。「callEntry」タグにより、「dataLogEntries」配列内のデータログエントリに単位でデータログが選択されます。

ネットワーク 4:データログが作成されており、かつ「logID」タグの値が「0」ではない場
合、DataLogWrite (ページ 2616)の入力 EN が設定されます。この照会の理由は、生成プ
ロセスが複数のサイクルに及び、書き込み操作を行うために完了する必要があるからです。
入力パラメータ REQ 「DLwrite.execute」()で、立ち上がりエッジによってデータレコードの書き込みがトリガされます。
DataLogWrite が成功(「#writeDone」が「TRUE」)すると、「DLwrite.memDone」タグによって格納されます。「DLwrite.execute」タグは、プロセス内でリセットされます。
エラーが発生した場合は、「DLwrite.memErrStatus」タグ内のステータス「DLwrite.status」()が保存されます。ステータスが「16#0001」の場合、命令「DataLogWrite」は自動的にデータログを閉じ始めます(「DLclose.execute」が「TRUE」)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2639

拡張命令
4.12 レシピおよびデータロギング

注記
データログのデータレコード数
データログは、5 個のデータレコードについて作成されます(ネットワーク 1 を参照)。
具体的には、以下のとおりです。
• 5 個のデータレコードの後に、値「0001」が命令 DataLogWrite (ページ 2616)のパラメータ
STATUS 「DLwrite.status)で出力されます。
(• 最後のデータレコードがファイルの終端で作成されます。他のデータレコードが作成されると、古いデータレコードが上書きされます。

ネットワーク 5:データログを閉じる前に、閉じるデータログを callEntry によって選択します。ノーマルオープン(「DLclose.execute」)のシグナル状態が「TRUE」の場合、必要なデータログが「dataLogEntries」配列内のエントリ単位で呼び出されます。さらに、「#executeClose」が「TRUE」にセットされます。このために、以下の相互接続を作成しま
す。

2640

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

ネットワーク 6:最後のデータレコードが書き込まれた、またはデータログの処理が終了したら、データログを閉じます。
これを行うために、DataLogClose (ページ 2619)命令を実行する REQ 「#executeClose」()入力が設定されます。データログが閉じられると、データレコードは書き込まれなくなります。
DataLogClose が成功(「#closeDone」が「TRUE」)すると、「DLclose.memDone」タグによって格納されます。

ネットワーク 7:以下のように、「DLclose.execute」タグを自動的にリセットします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2641

拡張命令
4.12 レシピおよびデータロギング
ネットワーク 8:以下の相互接続に基づき、データログの「閉じている」ステータス「DLclose.memDone」が「TRUE」()をデータログエントリに格納します「dataLogEntries.DLclosed」が「TRUE」()。

ネットワーク 9:データログを開く前に、開くデータログを「callEntry」によって選択します。ノーマルオープン(「DLopen.execute」)のシグナル状態が「TRUE」の場合、必要なデー
タログが「dataLogEntries」配列内のエントリ単位で呼び出されます。このために、以下の相互接続を作成します。

ネットワーク 10:データログは、後で再度データレコードを書き込むために、
DataLogOpen (ページ 2610)命令を使用してもう一度開く必要があります。その後で別のデータレコードが DataLogWrite (ページ 2616)によって書き込まれると、必ず最も古いデータレコードが上書きされます。
DataLogOpen が成功(「#openDone」が「TRUE」)すると、「DLopen.memDone」タグによって格納されます。「#openDone」が失敗すると、この結果が「#memOpenDone」タグ
によって保存されます。

2642

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

ネットワーク 11:以下のように、「DLopen.execute」タグを自動的にリセットします。

ネットワーク 12:以下の相互接続に基づき、データログの「開いている」ステータスをデータログエントリに格納します(「#memClose」または「dataLogEntries.DLclosed」が「FALSE」)。

ネットワーク 13:データログに基づいてファイルを新規作成するには、使用するデータロ
グを「callEntry」によって先に選択する必要があります。ノーマルオープン「DLnewfile.execute」()のシグナル状態が「TRUE」の場合、必要なデータログがTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2643

拡張命令
4.12 レシピおよびデータロギング「dataLogEntries」配列内のエントリ単位で呼び出されます。このために、以下の相互接続を作成します。

ネットワーク 14:古いデータレコードを上書きしたくない場合は、「DataLogNewFile (ページ 2626)」命令を使用して同じ構造を持つ新しいデータログを作成します。これを行うには、構造をコピーしたい既存のデータログの ID を命令の ID パラメータに入力します。
「DataLogNewFile」命令が実行されると、新しい一意の ID の値が新しいデータログに割り当てられます。
入力パラメータ REQ 「#stateMem5」()の立ち上がりエッジによって、作成プロセスがトリガされます。DataLogNewFile が成功(「#newFileDone」が「TRUE」)すると、「DLnewfile.memDone」タグによって格納されます。エラーが発生した場合は、「DLnewfile.memErrStatus」タグ内のステータス(「#newFileStatus」)が保存されます。

2644

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング

注記
複数のサイクルでの呼び出し
DataLogNewFile (ページ 2626)の呼び出しも複数のサイクルにわたって実行されることに注意してください。たとえば、DataLogWrite (ページ 2616)命令の BUSY パラメータをサンプリングすることで、準備ができていない状態での「DataLogNewFile」命令の実行を防止できます。
ネットワーク 15:以下のように、「DLnewfile.execute」タグを自動的にリセットします。

ネットワーク 16:FC「SLI_FC_saveEntry_DataLog」を使用して、データログの名前およびID を保存します。パラメータ DONE 「#newFileDone」()のシグナル状態が「TRUE」の場合、保存が実行されます。

ネットワーク 17:データログを削除するには、削除するデータログを「callEntry」によって先に選択する必要があります。ノーマルオープン(「DLdelete.execute」)のシグナル状態が「TRUE」の場合、必要なデータログが「dataLogEntries」配列内のエントリ単位で呼び出されます。このために、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2645

拡張命令
4.12 レシピおよびデータロギング

ネットワーク 18:命令「DataLogDelete (ページ 2621)」を使用して、必要がなくなったデータログを削除します。
入力パラメータ REQ 「#stateMem6」()の立ち上がりエッジによって、データログの削除プ
ロセスがトリガされます。DataLogDelete が成功(「DONE」が「TRUE」)すると、「DLdelete.dlogDeleted」タグによって格納されます。エラーが発生した場合は、「DLdelete.memErrStatus」タグ内のステータス(「#deleteStatus」)が保存されます。

ネットワーク 19:以下のように、「DLdelete.execute」タグを自動的にリセットします。

2646

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.12 レシピおよびデータロギング
ネットワーク 20:FC「SLI_FC_deleteEntry_DataLog」を使用して、データログのエントリを削除します。パラメータ DONE 「#deleteDone」()のシグナル状態が「TRUE」の場合、削除が実行されます。

結果
書き込まれたデータを Web サーバーによって開く

サンプルプログラムで作成されたデータログを Web サーバーによって表示します。これを行うには、インターネットブラウザを使用して Web サーバーを開き、「\DataLogs」ディレクトリを開きます。
CSV ファイルの内容• DataLogCreate 命令でデータログを作成するとき、データレコードの最大数として「5」が設定されます。この数を超えない場合、書き込まれたすべてのデータレコードはデータログに含まれます。

• 別のデータレコードがこれに追加される場合、最も古いデータレコード(Record 1)が上書
きされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2647

拡張命令
4.13 データブロックのファンクション

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

4.13

データブロックのファンクション

4.13.1

CREATE_DB:データブロックの作成

説明「CREATE_DB」命令を使用して、ロードメモリまたはワークメモリ、あるいはその両方に新規データブロックを作成します。
「CREATE_DB」命令は、ユーザープログラムのチェックサムを変更しません。
ワークメモリでのみ生成されたデータブロックは、以下のプロパティを持ちます。
• メモリリセットまたは電源オフ/電源オンの後、このブロックが存在しなくなります。
• ロード時または STOP-RUN 移行時、ブロックの内容は変更されません。

データブロックの番号作成されたデータブロックには、LOW_LIMIT (下限値)、および UP_LIMIT (上限値)パラメー
タで定義された範囲から、最小の空き番号が割り当てられます。この番号は、DB_NUM パ
ラメータに出力されます。CPU の許可された範囲内に番号がある場合は、DB が生成されます。
特定の番号の DB を作成するには、指定する範囲の上限値および下限値と同じ番号を入力します。ワークメモリおよび/またはロードメモリに同じ番号の DB が存在する場合、または、コピーバージョンとして DB が存在する場合、この命令は終了し、エラーメッセージが
RET_VAL パラメータで生成されます。

2648

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

データブロックの開始値
SRCBLK パラメータを使用して、作成される DB の開始値を定義します。SRCBLK パラメー
タは、開始値を適用する DB または DB 領域へのポインタです。SRCBLK パラメータでアドレス指定される DB は、標準アクセス(「最適化ブロックアクセス」属性が無効の状態)で生成されている必要があります。
• SRCBLK パラメータで指定された領域が、生成された DB よりも大きい場合、生成されたDB の長さまでの値が開始値として適用されます。
• SRCBLK パラメータで指定された領域が、生成された DB よりも小さい場合、残りの値は「0」で埋められます。
データの整合性を保証するため、「CREATE_DB」の実行中にこのデータ領域を変更しないでください(つまり、BUSY パラメータの値が TRUE の間)。
注記
TEMP タグを指す SRCBLK
標準ブロックの TEMP タグがテンポラリローカルデータ領域にあります。そのため、TEMP
タグへの SRCBLK での参照によって、値 80A3 (SRCBLK パラメータのデータブロックが標準アクセスで作成されていません)が RET_VAL として出力されます。

ファンクションの説明「CREATE_DB」命令は、非同期で動作します。複数のセルにわたって処理が行われます。
「CREATE_DB」を REQ = 1 で呼び出してジョブを開始します。
出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。
関連項目:同期命令と非同期命令の相違 (ページ 29)

パラメータ以下の表に、「CREATE_DB」命令のパラメータを示します。
パラメー
タ

宣言

データ
タイプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 レベルトリガされる制御パラメータ「request to
または定数

説明

activate」
REQ = 1:データブロックの生成要求

LOW_LIMI Input
T

UINT

I、Q、M、D、L、 DB 番号割り当ての範囲の下限値。割り当て可能な最小または定数TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020の番号は 60000 です。

2649

拡張命令
4.13 データブロックのファンクション
パラメー
タ

宣言

データ
タイプ

メモリ領域

UP_LIMIT

Input

UINT

I、Q、M、D、L、 「CREATE_DB」が DB への番号割り当てに使用する領域
または定数

COUNT

Input

UDINT

説明

の上限値(使用可能な最大 DB 番号:60999)

I、Q、M、D、L、 カウンタ値は、生成される DB に予約するバイト数を指または定数定します。バイト数は偶数であることが必要です。最大長は 65534 バイトです。

2650

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション
パラメー
タ

宣言

データ
タイプ

メモリ領域

ATTRIB

Input

BYTE

I、Q、M、D、L、 ATTRIB パラメータのバイトの最初の 4 ビットを使用し
または定数

説明

て、データブロック*のプロパティを定義します。
• ビット 0 = 0:属性[ロードメモリにのみ保存]が設定されていません。
• ビット 0 = 1:属性[ロードメモリにのみ保存]が設定されています。この設定により、DB はワークメモリ内のスペースをまったく取らず、プログラムに含まれません。DB はビットコマンドを使用してアクセスできません。ビット 0 = 1 の場合、ビット 2 の選択は対象外です。
STEP 7 V5.x との互換性を保証するために、ビット 0 お
よび 3 を一緒に使用する必要があります(下記を参照)。
• ビット 1 = 0:属性「デバイス内のデータブロックは書き込み禁止」が設定されていません。
• ビット 1 = 1:属性「デバイス内のデータブロックは書き込み禁止」が設定されています。
• ビット 2 = 0:DB は保持型です(ロードメモリおよびワークメモリに生成された DB の場合のみ)少なくとも1 つの値が保持型として設定されている場合、DB は保持型とみなされます。
• ビット 2 = 1:DB は保持型ではありません。
ロードメモリまたはワークメモリの一方にのみ保存される DB では、保持性はサポートされません。2 つの組み合わせ「保持型およびロードメモリのみ」または「保持型およびワークメモリのみ」のいずれかで「CREATE_DB」命令を呼び出すと、生成される DB は保持型としてマークされません。
• ビット 3 = 0:ロードメモリ内またはワークメモリ内のいずれかでの DB の作成(ビット 0 を使用した選択、
上記を参照)• ビット 3 = 1:ロードメモリ内およびワークメモリ内の両方での DB の作成(ビット 0 は対象外)
STEP 7 V5.x との互換性を保証するために、ビット 0 お
よび 3 を組み合わせて使用する必要があります。ビット
3 = 1 の場合、ビット 0 は対象外です。
ビット ビッ0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

DB の生成

ト3

2651

拡張命令
4.13 データブロックのファンクション
パラメー
タ

宣言

データ
タイプ

メモリ領域

説明
0

0

ワークメモリ内のみ
注記:ワークメモリ内にのみ存在するDB は、HMI デバイスなどの外部クライアントによって変更できません。

1

0

対象外 1

ロードメモリ内のみ
ワークメモリおよびロードメモリ• Bit 4 = 0 - 指定された開始値はありません(SRCBLK パ
ラメータの入力値は無視されます)。
• Bit 4 = 1 - 開始値(SRCBLK パラメータによってアドレス指定された DB に対応する値)を指定します。
SRCBLK

Input

VARIAN D

生成されるデータブロックを初期化するために値が使用Tされるデータブロックへのポインタ。

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:プロセスが未完了です。

DB_NUM

Output

DB_DY

I、Q、M、D、L

作成済みの DB 数。

N(UINT)* ここで選択したプロパティは、データブロックのプロパティの属性に対応します。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生していません。

0081

コピー先の領域がコピー元の領域よりも大きくなっています。
コピー元の領域が完全にコピー先の領域に書き込まれます。宛先領域の残りのバイトは変更さ
れません。

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありません。BUSY の値は「0」です。

7001

REQ=1 による最初の呼び出し:データ転送がトリガされました。BUSY の値は 1 です。

7002

中間呼び出し(REQは対象外):データ転送が既に有効です。BUSY の値は「1」です。

2652

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション
エラーコー 説明ド*
(W#16#...)
8081

コピー元の領域がコピー先の領域よりも大きくなっています。
完全な宛先領域が書き込まれます。ソース領域の残りのバイトは無視されます。

8092

次の理由で、「データブロックの作成」機能が現在使用できません。
• 使用している CPU のブロック最大数に既に達しています。

8093

SRCBLK パラメータにデータブロックが指定されていないか、ワークメモリにないデータブロ
ックが指定されています。

8094

パラメータ ATTRIB で無効な値が指定されています。

80A1

DB 番号エラー:• 指定範囲(LOW_LIMIT から UP_LIMIT)内の番号が割り当てられているか、CPU の許可された
範囲外の番号です。
• 下限値 > 上限値

80A2

DB 長エラー:• 長さが「0」• 長さが奇数• 長さが CPU で許可される長さを超えている

80A3

SRCBLK パラメータのデータブロックが標準アクセスで作成されていません。

80B1

空いている DB 番号がありません。

80B2

使用可能な空きメモリが不足。

80B4

メモリカードが書き込み禁止になっています。

80BB

ロードメモリが不足しています。

80C3同時に有効な「CREATE_DB」命令の最大数に既に達しています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、CREATE ファンクションのプログラム例 (ページ 2672)を参照してください。
この例の追加情報とプログラムコードが次のライブラリにあります。命令のサンプルライ
ブラリ (ページ 25)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2653

拡張命令
4.13 データブロックのファンクション

4.13.2

READ_DBL: ロードメモリのデータブロックからの読み出し

説明
この命令を使用して、DB またはロードメモリ(マイクロメモリカード)の DB の領域を宛先
DB のデータ領域にコピーします。宛先データブロックはランタイム関連でなければなりません。つまり、ロードメモリにのみ保存属性を使用して作成してはなりません。コピー処理中にロードメモリの内容は変更されません。
データの整合性を保証するために、「READ_DBL」の実行中に(つまり、BUSY パラメータの値が TRUE である間は)宛先領域を変更しないでください。
パラメータ SRCBLK および DSTBLK (ソースブロックおよび宛先ブロック)が両方とも
VARIANT データタイプでなければなりません。これにより、以下の制限事項が適用されます。
• 標準メモリ領域に対して有効:VARIANT データタイプのパラメータ(ソース領域または宛先領域)と BOOL データタイプのタグまたは BOOL の ARRAY を相互接続する場合、以下のオプションがあります。
– シンボリックにアドレス指定することができます。
例:パラメータ SRCBLK:"Data_block".myArray– 任意のポインタによって絶対アドレス指定することができます。ただし、領域の指定された長さは 8 で割り切れるようにする必要があります。割り切れない場合、この命令は実行されません。
例:パラメータ SRCBLK:P#DB123.DBX456.0 BOOL 1000
• タイプ STRING の VARIANT ポインタは、長さが 1 と等しいことが必要です。
• ソースブロックおよび宛先ブロックは、同じブロックアクセスで作成されている必要があります。つまり、両方ともアクセスタイプ「最適化された」または「標準」のいず
れかを使用している必要があります。
• ソース DB ブロックおよびターゲット DB ブロックが「最適化された」アクセスを持つ
場合、STRUCT データタイプを使用することはできません。
注記「READ_DBL」は非同期で処理されるため、ロードメモリのタグの頻繁な(または周期的な)読
み出しには適していません。
ジョブは一旦開始されると、必ず完了します。同時に有効な「READ_DBL」命令の最大数に達し、この時点で再度さらに優先度の高いクラスで「READ_DBL」を呼び出すと、エラー
コード W#16#80C3 が返されます。その結果、直ちにさらに高い優先度のジョブを再開す
る意味はありません。

2654

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

ファンクションの説明「READ_DBL」命令は、非同期で操作します。複数のセルにわたって処理が行われます。
REQ = 1 で「READ_DBL」を呼び出してジョブを開始します。
出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。
関連項目:同期命令と非同期命令の相違 (ページ 29)

パラメータ以下の表に、「READ_DBL」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、 REQ = 1:読み出し要求
または定数

SRCBLK

Input

VARIANTD

読み出し元のロードメモリのデータブロ
ックへのポインタ

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:読み出しプロセスが未完了です。

DSTBLK

Output

VARIANTD

書き込み先のワークメモリのデータブロ
ックへのポインタ

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生していません。

0081

コピー先の領域がコピー元の領域よりも大きくなっています。コピー元の領域が完全にコ
ピー先の領域に書き込まれます。コピー先の領域の残りのバイトは変更されません。

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありません。BUSY の値は「0」です。

7001

REQ=1 による最初の呼び出し:データ転送がトリガされました。BUSY の値は 1 です。

7002

中間呼び出し(REQ は対象外):データ転送が既に有効です。BUSY の値は「1」です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2655

拡張命令
4.13 データブロックのファンクション
エラーコード* 説明(W#16#...)
8x51

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
データブロックのデータタイプエラーです。

8081

コピー元の領域がコピー先の領域よりも大きくなっています。
完全な宛先領域が書き込まれます。ソース領域の残りのバイトは無視されます。

8082• 宛先 DB のタイプがソース DB のタイプと異なります(最適化/標準アクセス)。
• 宛先 DB とソース DB が、両方とも最適化アクセスを使用して作成されています。ただし、コンパイル時にデータの配列が異なる宛先 DB とソース DB を持つ構造体を使用しています。(注記:代わりに UDT を使用します。)

8093

注記:このエラーコードは S7-1500 CPU の場合のみ使用されます。
DSTBLK パラメータにデータブロックが指定されていないか、ワークメモリにないデータ
ブロックが指定されています。

80B1

注記:このエラーコードは S7-1500 CPU の場合のみ使用されます。
パラメータ SRCBLK では、ロードメモリ内にあるデータブロックのみが許可されています。

8xB1

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
SRCBLK パラメータにデータブロックが指定されていない、または、そこで指定されたデータブロックがロードメモリオブジェクトではありません。

80B4

DSTBLK は、F-属性の DB(書き込みしてはならない)を指します。

8xC0

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
宛先の DB が、別の命令または通信機能によって現在処理中です。

80C3同時に有効な「READ_DBL」命令の最大数に既に達しています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、ロードメモリ内の DB の内容をワークメモリ内の DB に読み出します。
相互接続用のデータを保存するために、グローバルデータブロックで 3 つのタグを作成し
ます。

2656

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション
送信データを保存するために、それぞれが INT データタイプの 3 つのタグを含む 2 つのグ
ローバルデータブロックを作成します。
• ロードメモリ内の受信データ用• ワークメモリ内の受信データ用

FB「SLI_FB_READ_DBL」で以下の相互接続を作成します。
ネットワーク 1:「READ_DBL」命令のパラメータを以下のように相互接続します。

ネットワーク 2:READ_DBL の処理を以下のように停止できます。

ノーマルオープン(「execute」)がシグナル状態「TRUE」を示す場合、「READ_DBL」命令が実行されます。入力パラメータ SRCBLK 「SourceDB_LoadMemory」()を使用して、DB がロ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2657

拡張命令
4.13 データブロックのファンクション
ードメモリに保存されます。
出力パラメータ DSTBLK 「TargetDB」()を使用して、DB がワークメモリに保存されます。命令「READ_DBL」はロードメモリ内の転送されるデータを呼び出し(SRCBLK)、ワークメモリ
内のデータを読み出します(DSTBLK)。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。
プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
GET_ERR_ID: ローカルでエラー ID を取得 (ページ 1533)

4.13.3

WRIT_DBL:ロードメモリのデータブロックへの書き込み

説明「WRIT_DBL」命令を使用して、DB または DB 領域の内容をワークメモリからロードメモリ(マイクロメモリカード)の DB または DB 領域に転送します。ソース DB はランタイム関連
でなければなりません。つまり、ロードメモリにのみ保存属性を使用して作成してはなりません。
注記「デバイスからアップロード」の実行中の開始値動作「WRIT_DBL」命令を使用して変更した開始値は、「デバイスからアップロード」操作を実行すると失われます。
注記
プロジェクトツリー内のオンライン/オフライン差分(S7-1200 FW V2.0 および V2.1)「WRIT_DBL」命令を使用してデータブロックを変更する場合、オンラインブロックとオフ
ラインブロックの差異がプロジェクトツリーの記号で正しく初期表示されません。その差分は、オンライン接続を終了した後、再びオンラインに戻ったときにのみ表示されます。
データの整合性を確保するため、「WRIT_DBL」の実行中(つまり、BUSY パラメータの値がTRUE の間)はソース範囲を変更しないでください。

2658

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション
パラメータ SRCBLK および DSTBLK (ソースブロックおよび宛先ブロック)が両方とも
VARIANT データタイプでなければなりません。これにより、以下の制限事項が適用されます。
• タイプ BOOL の VARIANT ポインタは、長さが 8 で割り切れることが必要です。
• タイプ STRING の VARIANT ポインタは、長さが 1 と等しいことが必要です。
• ソースおよび宛先ブロックは、同じブロックアクセスで作成されている必要があります。つまり、両方とも「最適化ブロックアクセス」または最適化アクセスを無効にしている必要があります。
• ソース DB ブロックおよびターゲット DB ブロックが「最適化された」アクセスを持つ
場合、STRUCT データタイプを使用することはできません。
「WRIT_DBL」命令は、命令を使用して作成した DB に書き込む場合は、ユーザープログラ
ムのチェックサムを変更しません。ただし、読み込まれた DB が書き込まれる場合、このDB の最初のエントリがユーザープログラムのチェックサムが変更されます。
注記「WRIT_DBL」は、ロードメモリのタグの頻繁な(または周期的な)書き込みには適していません。これは、メモリカードテクノロジーが、メモリカードへの書き込みアクセス数を制限しているためです。

ファンクションの説明「WRIT_DBL」命令は、非同期で動作します。複数のセルにわたって処理が行われます。REQ= 1 で「WRIT_DBL」を呼び出すことによって、ジョブを開始します。
出力パラメータ RET_VAL および BUSY は、ジョブのステータスを示します。
関連項目: 同期命令と非同期命令の相違 (ページ 29)。

パラメータ
以下の表に、「WRIT_DBL」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L、 REQ = 1:書き込み要求
または定数

SRCBLK

Input

VARIANTD

読み出し元のワークメモリの DB へのポ
インタ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2659

拡張命令
4.13 データブロックのファンクション
パラメータ

宣言

データタイ
プ

メモリ領域

説明

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

BUSY

Output

BOOL

I、Q、M、D、L

BUSY = 1:書き込みプロセスが未完了です。

DSTBLK

Output

VARIANTD

書き込み先のロードメモリのデータブロ
ックへのポインタ

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生していません。

0081

コピー先の領域がコピー元の領域よりも大きくなっています。
コピー元の領域が完全にコピー先の領域に書き込まれます。コピー先の領域の残りのバイトは変更されません。

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありません。BUSY の値は「0」です。

7001

REQ=1 による最初の呼び出し:データ転送がトリガされました。BUSY の値は 1 です。

7002

中間呼び出し(REQは対象外):データ転送が既に有効です。BUSY の値は「1」です。

8051

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
データブロックのタイプエラー。

8251

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
ソース DB のデータタイプエラー

8551

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
ターゲット DB のデータタイプエラー

8081

コピー元の領域がコピー先の領域よりも大きくなっています。
完全な宛先領域が書き込まれます。ソース領域の残りのバイトは無視されます。

8082

注記:このエラーコードは S7-1500 CPU の場合のみ使用されます。
• 宛先 DB のタイプがソース DB のタイプと異なります(最適化されたアクセス/最適化されていないアクセス)。
• 宛先 DB とソース DB が、両方とも最適化アクセスを使用して作成されています。ただし、コンパイル時にデータの配列が異なる宛先 DB とソース DB を持つ構造体を使用しています。(注記:代わりに UDT を使用します。)

2660

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション
エラーコード* 説明(W#16#...)
8093

注記:このエラーコードは S7-1500 CPU の場合のみ使用されます。
SRCBLK パラメータにデータブロックが指定されていないか、ワークメモリにないデータブ
ロックが指定されています。

80B1

注記:このエラーコードは S7-1500 CPU の場合のみ使用されます。
パラメータ DSTBLK では、ロードメモリ内にあるデータブロックのみが許可されています。

82B1

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
SRCBLK パラメータでデータブロックが指定されていません。

85B1

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
DSTBLK パラメータにデータブロックが指定されていない、または、そこで指定されたデータブロックがロードメモリ内に存在しません。

80B4• メモリカードが書き込み禁止になっています。
• F-属性の DB は読み出さないでください。

80BB

使用可能なロードメモリが不足。

82C0

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
ソース DB が、別の命令または通信命令によって現在処理中です。

85C0

注記:このエラーコードは S7-1200 CPU の場合のみ使用されます。
宛先の DB が、別の命令または通信命令によって現在処理中です。

80C3同時に有効な「WRIT_DBL」命令の最大数に既に達しています。

一般エラーコ

関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)ード
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、ワークメモリ内の DB の内容をロードメモリ内の DB に転送します。DB への転送が成功したことを確認するために、ワークメモリ内の別の DB の内容を読み出します。
相互接続用のデータを保存するために、グローバルデータブロックで 5 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2661

拡張命令
4.13 データブロックのファンクション

送信されるデータを保存するために、それぞれが 1 つの「myData」タグ(Array of INT データタイプ)を含む 3 つのグローバルデータブロックを作成します。
• ワークメモリ内の送信データ用の DB(SLI_srcDB_WRIT_DBL)。

• ロードメモリ内の受信データ用の DB(SLI_dstDB_WRIT_DBL)。
• ワークメモリ内の受信データ用の DB(SLI_finDB_WRIT_DBL)。
ネットワーク 1:「WRIT_DBL」命令のパラメータを以下のように相互接続します。

ネットワーク 2:「READ_DBL」命令のパラメータを以下のように相互接続します。

2662

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

ネットワーク 3:

タグ「execute」を以下のようにリセットします。

「WRIT_DBL」命令

ノーマルオープン(「execute」)がシグナル状態「TRUE」を示す場合、「WRIT_DBL」命令が実行されます。入力パラメータ SRCBLK 「SLI_srcDB_WRIT_DBL.myData」()を使用して、DB がワークメモリに保存されます。出力パラメータ DSTBLK「SLI_dstDB_WRIT_DBL.myData」()を使用して、DB がロードメモリに保存されます。
「WRIT_DBL」命令はワークメモリ内の転送されるデータを呼び出し(SRCBLK)、ロードメモ
リ内の必要な位置にデータを書き込みます(DSTBLK)。出力パラメータ
RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2663

拡張命令
4.13 データブロックのファンクション「READ_DBL」命令

WRIT_DBL の処理がエラーなしで行われ、ノーマルオープン(「execute」)がシグナル状態「TRUE」を示す場合、「READ_DBL」命令が実行されます。入力パラメータ SRCBLK「SLI_dstDB_WRIT_DBL.myData」()を使用して、DB がロードメモリに保存されます。出力パラメータ DSTBLK 「SLI_finDB_WRIT_DBL.myData」()を使用して、受信データ用の DB が保存されます。
「READ_DBL」命令はロードメモリ内の転送されるデータを呼び出し(SRCBLK)、ワークメモ
リ内の必要な位置でデータを読み出します(DSTBLK)。出力パラメータ
RET_VAL(「readRetVal」)は、処理がエラーなしで行われたことを示します。

ワークメモリ内の受信データ用の DB (SLI_finDB_WRIT_DBL)に、転送されたデータが示さ
れます。

2664

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

タグ「execute」が、READ_DBL の処理が成功した後にリセットされます(ネットワーク 3 を参照)。READ_DBL および WRIT_DBL の処理が停止されます。
プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

4.13.4

ATTR_DB: データブロック属性読み出し

説明「ATTR_DB」命令を使用して、CPU のワークメモリ内にあるデータブロック(DB)に関する情報を取得します。この命令は、選択された DB の ATTRIB パラメータで設定された属性を識別します。
最適化されたアクセスを使用するデータブロックとロードメモリにのみ存在するデータブ
ロックの長さを読み出すことはできません。このような場合、DB_LENGH パラメータの値が「0」になります。
最適化されたアクセスを使用する、メモリ予約が有効であるデータブロックに ATTR_DB を適用しないでください。
「ATTR_DB」命令を使用してモーションコントロール用のデータブロックを読み出さないでください。この場合、エラーコード 80B2 が出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2665

拡張命令
4.13 データブロックのファンクション

パラメータ
以下の表に、「ATTR_DB」命令のパラメータを示します。
パラメータ 宣言

データタ
イプ

メモリ領域

説明

REQ

BOOL

I、Q、M、D、L、まREQ = 1:ブロック属性の読み出し要求

Input

たは定数
DB_NUMBE Input

DB_ANYR

I、Q、M、D、L、ま

テストする DB の番号

たは定数

RET_VAL

Output

INT

I、Q、M、D、L

エラー情報

DB_LENGT

Output

UDINT

I、Q、M、D、L• 選択された DB が含むデータのバイト数

H

ATTRIB• 最適化されたアクセスを使用するデータブ
ロックとロードメモリにのみ存在するデー
タブロックの場合「0」です。
Output

BYTE

I、Q、M、D、L

DB プロパティ:• ビット 0*= 0:属性[ロードメモリにのみ保存]が設定されていません。
• ビット 0*= 1:属性[ロードメモリにのみ保存]が設定されています。
• ビット 1 = 0:属性「デバイス内のデータブロ
ックは書き込み禁止」が設定されていません。
• ビット 1 = 1:属性「デバイス内のデータブロ
ックは書き込み禁止」が設定されています。
ビット 0 = 1 の場合、ビット 2 は対象外であり、値 1 を取得します。
• ビット 2 = 0:保持型 - 少なくとも 1 つの値が保持型として設定されている場合、DB は保持型とみなされます。
• ビット 2 = 1:非保持型 - DB 全体が保持型でないもの。
• ビット 3*= 0:DB は、ロードメモリ内(ビット 0 = 1)、またはワークメモリ内(ビット 0= 0)のいずれかにあります。
• ビット 3*= 1:DB はロードメモリとワークメ
モリの両方に生成されます* ビット 0 とビット 3 の関係は、「CREATE_DB:データブロックの作成 (ページ 2648)」命令のパラメータ内で説明しています。

2666

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー 説明ド*
(W#16#...)
0000

エラーは発生しませんでした。

80A1

入力パラメータ DB_NUMBER のエラー:選択した実際のパラメータが• 「0」です。
• 使用している CPU の最大許容 DB 番号を超えています。

80B1

CPU に指定された番号の DB が存在しません。

80B2

モーションコントロールテクノロジーオブジェクトのデータブロックは、「ATTR_DB」命令で読み出すことができません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、データブロックのステータスを読み出します。
「myData」タグ(Array[0..3] of INT データタイプ)を含む DB を作成します。

標準アクセスのために、最適化されたデータアクセスを DB プロパティで無効にします。

相互接続用のデータを保存するために、グローバルデータブロックで 4 つのタグを作成します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2667

拡張命令
4.13 データブロックのファンクション

パラメータの相互接続: 「SLI_itemiseByte_ATTR_DB」FC

出力パラメータ ATTRIB の値を適切に評価するために、FC「SLI_itemiseByte_ATTR_DB」を作成します。
この FC に以下のローカルタグを作成します。

ネットワーク 1:ネットワーク 1 の例に従って、ローカルタグのすべてのビット(0..7)の相互接続を作成します。

パラメータの相互接続: 「SLI_FB_ATTR_DB」FB

ATTR_DB の呼び出し用の FB「SLI_FB_ATTR_DB」を作成します。この FC に以下のローカ
ルタグを作成します。

ネットワーク 1:「ATTR_DB」命令のパラメータを以下のように相互接続します。

2668

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

ネットワーク 2:FC「SLI_itemiseByte_ATTR_DB」を以下のように相互接続します。

FB「SLI_FB_ATTR_DB」の結果

ノーマルオープン(「startAttr」)がシグナル状態「TRUE」を示す場合、「ATTR_DB」命令が実行されます。評価される DB の番号が入力パラメータ DB_NUMBER 「SLI_srcDB_ATTR_DB」()
で保存されます。「ATTR_DB」命令が、この番号に基づいて DB を呼び出し、そのステータ
スを出力パラメータ ATTRIB 「#statAttrByte」()で出力します。データブロックの読み出されたデータ(4 INT)の長さが BYTE (値「8」)で、出力パラメータ DB_LENGTH「readLenByte」()で出力されます。
出力パラメータ ATTRIB の 16 進数の値が、FC「SLI_itemiseByte_ATTR_DB」を使用してビット文字列に変換されます。ビットシーケンス「00110000」(ビット 0～7)の意味は以下のとおりです。
• DB がロードメモリ内にのみ存在するとは限りません。
• DB が書き込み保護されていません。
• DB が保持型ではありません。
• DB がロードメモリとワークメモリの両方に生成されます
出力パラメータ RET_VAL(「attrRetVal」)は、処理がエラーなしで行われたことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2669

拡張命令
4.13 データブロックのファンクション

プログラムコード

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

4.13.5DELETE_DB:データブロック削除

説明
命令「DELETE_DB」を使用して、命令「CREATE_DB (ページ 2648)」を呼び出すことによってユーザープログラムから作成されたデータブロック(DB)を削除します。
データブロックが「CREATE_DB」によって作成されなかった場合は、エラーコード
W#16#80B5 が RET_VAL パラメータに出力されます。
選択されたデータブロックはすぐには削除されませんが、サイクル OB の実行後にサイクルコントロールポイントで削除されます。

ファンクションの説明「DELETE_DB」命令は、非同期で動作します。複数のセルにわたって処理が行われます。割
り込みの転送は、REQ = 1 でこの命令を呼び出して開始します。
出力パラメータ BUSY および出力パラメータ RET_VAL のバイト 2 と 3 は、ジョブのステータスを示します。
出力パラメータ BUSY の値が FALSE である場合、データブロックの削除が完了しています。

2670

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

パラメータ
以下の表に、「DELETE_DB」命令のパラメータを示します。
パラメータ

宣言

データタ メモリ領域
イプ

REQ

Input

BOOL

I、Q、M、D、L、また REQ =1:DB_NUMBER パラメータに番号が含
は定数

DB_NUMBER

Input

UINT

説明

まれる DB を削除する要求

I、Q、M、D、L、また 削除する DB 番号
は定数

RET_VAL

Output

INT

I、Q、M、D、L

エラー情報(「RET_VAL パラメータ」を参照)

BUSY

Output

BOOL

I、Q、M、D、L

BUSY =1:プロセスが未完了です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード 説明*(W#16#...)
0000

エラーは発生しませんでした。

7000

REQ=0 による最初の呼び出し:有効なデータ転送がありません。BUSY の値は「0」です。

7001

REQ=1 による最初の呼び出し:データ転送がトリガされました。BUSY の値は 1 です。

7002

中間呼び出し(REQ は対象外):データ転送が既に有効です。BUSY の値は「1」です。

80A1

入力パラメータ DB_NUMBER のエラー:• パラメータの値が「0」です。
• パラメータの値が、使用されている CPU の最大許容 DB 番号よりも大きくなっています。

80B1

CPU に指定された番号の DB が存在しません。

80B4

CPU のメモリカードが書き込み禁止になっているため、DB を削除できません。

80B5

DB が 「CREATE_DB」を使用して作成されませんでした。

80BB

ロードメモリが不足しています。

80C3

一時的なリソースのボトルネックのため、この時点で「DB を削除」ファンクションは実行できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2671

拡張命令
4.13 データブロックのファンクション
エラーコード 説明*(W#16#...)
一般エラー情 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。CREATE ファンクションのプログラム例 (ページ 2672)
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
同期命令と非同期命令の相違 (ページ 29)

4.13.6CREATE ファンクションのプログラム例

概要
次の例では、ロードメモリに DB を作成し、その内容を読み出した後で DB を削除します。

2672

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

要件
新しい DB 用のテンプレートとしての役割を果たすグローバル DB「SLI_srcDB_CREATE_DB」()を作成します。

DB のプロパティは以下のとおりです。

相互接続用のデータを保存するために、グローバルデータブロック「SLI_gDB_CREATE_DB」()で 14 個のタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2673

拡張命令
4.13 データブロックのファンクション

データを保存するために、FB「SLI_FB_CREATE_DB」で以下のローカルタグも作成します。

パラメータの相互接続: 「SLI_itemiseByte_CRDfunctions」FC「setAttrBool」タグの値を「#statAttByte」タグに変換するために、FC「SLI_itemiseByte_CRDfunctions」を作成します。
この FC に以下のローカルタグを作成します。

ネットワーク 1:ネットワーク 1 の例に従って、ローカルタグのすべてのビット(0..7)の相互接続を作成します。

2674

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

パラメータの相互接続: 「SLI_FB_CREATE_DB」FB
ネットワーク 1:「SLI_itemiseByte_CRDfunctions」FC のパラメータを以下のように相互接続します。

ネットワーク 2:「CREATE_DB」命令のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2675

拡張命令
4.13 データブロックのファンクション
ネットワーク 3:新しく作成された DB の番号を保存するために、以下の相互接続を作成します。

ネットワーク 4:CREATE_DB の実行を再び終了するために、以下の相互接続を作成します。

ネットワーク 5:「READ_DBL」命令のパラメータを以下のように相互接続します。

ネットワーク 6:READ_DBL の実行を再び終了するために、以下の相互接続を作成します。

2676

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

ネットワーク 7:「DELETE_DB」命令のパラメータを以下のように相互接続します。

ネットワーク 8:DELETE_DB の実行を再び終了するために、以下の相互接続を作成します。

ネットワーク 1 の結果
FC「SLI_itemiseByte_CRDfunctions」は、BOOL データタイプの ARRAYBYTE「#statAttByte」()の DB プロパティ(「setAttrBool」)を変換します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2677

拡張命令
4.13 データブロックのファンクション

ネットワーク 2 の結果 - 「CREATE_DB」命令
ノーマルオープン(「startCreate」)がシグナル状態「TRUE」を示す場合、「CREATE_DB」命令が実行されます。入力パラメータ COUNT 「setLenByte」()に従って、長さが 8 バイトの新しい DB がこのプロセスで作成されます。作成される DB の番号は、入力パラメータ
LOW_LIMIT 「lowLim」()または UP_LIMIT 「hiLim」()で指定します。DB の作成に使用されるプロパティ(BYTE の)が入力パラメータ ATTR 「#statAttByte」()で保存されます。DB はロー
カルメモリでのみ作成し、定義された内容で埋める必要があります。DB は、新しい DB の内容のテンプレートとしての役割を果たすために入力パラメータ SRCBLK「SLI_srcDB_CREATE_DB.myData」()で保存されます。
出力パラメータ RET_VAL(「CreateRetVal」)は、処理がエラーなしで行われたことを示します。命令「CREATE_DB」は、実行後に無効になります(「createRetVal」の値が「16#7000」)。新しい DB の番号が、実行の終了時に出力パラメータ DB_NUM「#nbrNewDB」()で一時的に出力されます。

2678

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

ネットワーク 3 の結果
CREATE_DB の処理がエラーなしで行われると、「createRetVal」の値が「16#0000」になります。その結果、DB の番号(「#nbrNewDB」)が「memNbrNewDB」タグに保存されます。

ネットワーク 4 の結果
CREATE_DB が ENO パラメータ(「#tempCreate」)でシグナル状態「TRUE」を示す場合、ネットワーク 4 の相互接続が有効です。また、CREATE_DB の処理がエラーなしで行われると、リセット(「startCreate」)が「TRUE」にセットされ、CREATE_DB の実行が終了します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2679

拡張命令
4.13 データブロックのファンクション

ネットワーク 5 の結果 - 「READ_DBL」命令
READ_DBL を実行するための前提条件は以下のとおりです。
• CREATE_DB が無効である(「createRetVal」の値が「16#7000」である)こと。
• CREATE_DB によって新しい DB が作成されており、その番号が保存されている「memNbrNewDB」の値が(0 を上回る)こと。

ノーマルオープン(「startRead」)がシグナル状態「TRUE」を示す場合、「READ_DBL」命令が実行されます。新しく作成された DB は、入力パラメータ SCRBLK を使用してロードメモリ
内で参照されます。この DB は、出力パラメータ DSTBLK を使用してワークメモリ「SLI_srcDB_CREATE_DB.readData」()内で参照されます。「READ_DBL」命令はロードメモリ
内の転送されるデータを呼び出し(SCRBLK)、ワークメモリ内の必要な位置でデータを読み出します(DSTBLK)。
出力パラメータ RET_VAL(「rdblRetVal」)は、処理がエラーなしで行われたことを示します。
ワークメモリ内の DB について、転送されたデータが示されます「SLI_srcDB_CREATE_DB.readData」
(
)。

2680

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.13 データブロックのファンクション

ネットワーク 6 の結果
READ_DBL が ENO パラメータ(「#tempRead」)でシグナル状態「TRUE」を示す場合、ネッ
トワーク 6 の相互接続が有効です。また、READ_DBL の処理が完了すると、リセット「startRead」()が「TRUE」にセットされ、READ_DBL の実行が終了します。

ネットワーク 7 の結果 - 「DELETE_DB」命令
DELETE_DB を実行するための前提条件は以下のとおりです。
• CREATE_DB が無効である(「createRetVal」の値が「16#7000」である)こと。
• CREATE_DB によって新しい DB が作成されており、その番号が保存されている「memNbrNewDB」の値が(0 を上回る)こと。

ノーマルオープン(「startDelete」)がシグナル状態「TRUE」を示す場合、「DELETE_DB」命令が実行されます。新しく作成された DB が、入力パラメータ DB_NUMBER「memNbrNewDB」()を使用して DB の番号に基づいて参照されます。「DELETE_DB」命令
が、新しく作成された DB を削除します。
出力パラメータ RET_VAL(「deleteRetVal」)は、処理がエラーなしで行われたことを示します。

ネットワーク 8 の結果
DELETE_DB が ENO パラメータ(「#tempRead」)でシグナル状態「TRUE」を示す場合、ネッ
トワーク 8 の相互接続が有効です。また、DELETE_DB の処理が完了すると、リセット「startDelete」()が「TRUE」にセットされ、DELETE_DB の実行が終了します。
以前に作成されたブロックが、DELETE_DB の実行後に削除されます。既に削除されたブロックを削除するコマンドが発行されるのを防止するために、「memNbrNewDB」タグが「0」にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2681

拡張命令
4.14 アドレス指定

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

4.14

アドレス指定4.14.1

アドレス変換の命令

説明
モジュールのアドレス指定にはさまざまなオプションがあります(IO アドレス、ハードウ
ェア識別子、スロット)。
以下の命令に従って、アドレスデータを変換することができます。
• GEO2LOG:スロットのハードウェア識別子の識別 (ページ 2683)• LOG2GEO:ハードウェア識別子からのスロットの識別 (ページ 2686)• LOG2MOD: STEP 7 V5.5 SPx のアドレス指定からのハードウェア識別子の識別 (ページ 2689)• IO2MOD:IO アドレスからのハードウェア識別子の識別 (ページ 2691)• RD_ADDR:ハードウェア識別子からの IO アドレスの識別 (ページ 2694)
移行したプロジェクトの場合、さらに以下の命令がサポートされています。
• GEO_LOG: スロットのハードウェア識別子の識別 (ページ 2698)• LOG_GEO: ハードウェア識別子からのスロットの識別 (ページ 2700)• RD_LGADR:ハードウェア識別子からの IO アドレスの識別 (ページ 2702)• GADR_LGC: ユーザーデータアドレス領域のスロットおよびオフセットからのハードウ
ェア識別子の識別 (ページ 2704)• LGC_GADR: ハードウェア識別子からのスロットの識別 (ページ 2706)

2682

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

アドレス変換のタイプ
以下の図は、アドレス変換を実行する命令を示しています。

4.14.2⚜ⓜኜኁኴ*(2/2*6)&/2**(26)&/2*02'6)&,202'

6)&

5'B$''5

6)&*(2B/2*)&/2*B*(2)&

5'B/*$'5)&*$'5B/*&)&/*&B*$'5)&,2ቿኦዉኖ

ኬዙኦኃኄቿ巧⒴⷟

ኖዊአእ

GEO2LOG:スロットのハードウェア識別子の識別

説明「GEO2LOG」命令を使用して、システムデータタイプ GEOADDR によって定義するスロッ
ト情報に基づいてハードウェア識別子を識別します。
HWTYPE パラメータで定義するハードウェアタイプに応じて、他のパラメータ GEOADDRの以下の情報が評価されます。
• HWTYPE = 1 の場合(IO システム):– IOSYSTEM のみが評価されます。GEOADDR の他のパラメータは考慮されません。
– IO システムのハードウェア識別子が出力されます。
• HWTYPE = 2 の場合(IO デバイス):– IOSYSTEM および STATION が評価されます。GEOADDR の他のパラメータは考慮されません。
– IO デバイスのハードウェア識別子が出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2683

拡張命令
4.14 アドレス指定• HWTYPE = 4 (モジュール)の場合:– IOSYSTEM、STATION、および SLOT が評価されます。GEOADDR の SUBSLOT パラメータは考慮されません。
– モジュールのハードウェア識別子が出力されます。
• HWTYPE = 5 (サブモジュール)の場合:– GEOADDR の全パラメータが評価されます。
– サブモジュールのハードウェア識別子が出力されます。
GEOADDR システムデータタイプの AREA パラメータは評価されません。

パラメータ
以下の表に、「GEO2LOG」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

GEOADDR

Input

VARIANT

D、L

GEOADDR システムデータタイプの構造体へのポインタ。
このシステムデータタイプには、ハード
ウェア ID を識別するスロット情報が含
まれています。
関連項目:システムデータタイプ
GEOADDR (ページ 2697)

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報の出力。

LADDR

Output

HW_ANY

I、Q、M、D、L

モジュールのアセンブリのハードウェア
識別子。
番号は自動的に割り当てられます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0

エラーは発生しませんでした。

8091

GEOADDR 内に、HWTYPE に対する無効な値が存在します。

8094

GEOADDR 内に、IOSYSTEM に対する無効な値が存在します。

8095

GEOADDR 内に、STATION に対する無効な値が存在します。

2684

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定
エラーコー
ド*(W#16#...)

説明

8096

GEOADDR 内に、SLOT に対する無効な値が存在します。

8097

GEOADDR 内に、SUBSLOT に対する無効な値が存在します。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、スロット情報に基づいて CPU のハードウェア ID を判別します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

ノーマルオープン(「execute」)がシグナル状態「TRUE」を示す場合、「GEO2LOG」命令が実行されます。スロット情報が入力パラメータ GEOADDR 「geoAddr」()で保存されます。命令「GEO2LOG」は、スロット「1」（SLOT の値)のラック「0」(STATION の値)の中央コントローラ(値が「0」の IOSYSTEM)のモジュール(値が「4」の HWTYPE)のハードウェア ID を呼び出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2685

拡張命令
4.14 アドレス指定
CPU のローカルコンポーネントの判別されたハードウェア ID が出力パラメータ LADDR「laddr」()で示されます。出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

下記も参照
アドレス変換の命令 (ページ 2682)

4.14.3

LOG2GEO:ハードウェア識別子からのスロットの識別

説明「LOG2GEO」命令を使用し、ハードウェア識別子に属するモジュールスロットを判別しま
す。

2686

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

パラメータ
以下の表に、「LOG2GEO」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

LADDR

Input

HW_ANY

I、Q、M、D、L、 スロットを検索するモジュールのハード
または定数

説明
ウェア識別子。
ハードウェア ID は自動的に割り当てら
れ、ハードウェアコンフィグレーション
およびシステム定数に格納されます。

RET_VAL

Output

INT

I、Q、M、D、L

エラー情報の出力。

GEOADDRInOut

VARIANT

D、L

GEOADDR システムデータタイプへのポ
インタ。
スロット情報は、システムデータタイプ
GEOADDR に書き込まれます。
関連項目:システムデータタイプ
GEOADDR (ページ 2697)

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0

エラーは発生しませんでした。

8090

LADDR パラメータで指定されたアドレスが無効です。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、ハードウェア ID に基づいて入力モジュールのスロット情報を判別します。
グローバルデータブロックにデータを保存するために、4 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2687

拡張命令
4.14 アドレス指定

この命令のパラメータを以下のように相互接続します。

ノーマルオープン(「execute」)がシグナル状態「TRUE」を示す場合、「LOG2GEO」命令が実行されます。入力パラメータ LADDR 「laddr」()を使用して、入力モジュールのハードウェア
ID が保存されます。命令「LOG2GEO」が、ハードウェア ID を使用して入力モジュールのスロット情報を呼び出します。
入力モジュールの判別されたスロット情報が出力パラメータ GEOADDR 「geoAddr」()で示されます。スロット「2」(SLOTSLOT の値)のラック「0」(STATION の値)の中央コントローラ(値が「0」の IOSYSTEM)のモジュール(値が「4」の HWTYPE)が判別されます。
出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

2688

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

4.14.4

LOG2MOD: STEP 7 V5.5 SPx のアドレス指定からのハードウェア識別子の識別

説明「LOG2MOD」命令を使用し、STEP 7 5.5 SPx (IO データアドレスまたは診断アドレス)のア
ドレス指定から IO (サブ)モジュールのハードウェア識別子を判別します。
ハードウェア識別子は LADDR 入力パラメータでさまざまな命令のアドレス指定に使用されます。先に「LOG2MOD」を呼び出すことによって、STEP 7 5.5 SPx からアドレスパラ
メータを変換します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2689

拡張命令
4.14 アドレス指定

パラメータ
以下の表に、「LOG2MOD」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

IOID

Input

BYTE

I、Q、M、D、L、 STEP 7 5.5 SPx でのアドレス領域の識別
または定数

説明
子:
• B#16#00:ADDR のビット 15 で、入力(ビット 15=0)または出力アドレス(ビット 15=1)が存在するかどうかを指定します。
• B#16#54= 周辺機器入力(PI)• B#16#55= 周辺機器出力(PQ)

ADDR

Input

WORD

I、Q、M、D、L、 オフセット(STEP 7 5.5 SPx での対応するまたは定数アドレス指定)または診断アドレスとしてのモジュールの IO データの論理アド
レス。

RET_VAL

Return

INT

I、Q、M、D、L

命令のエラーコード。

HWID

Output

HW_IO

I、Q、M、D、L

IO(サブ)モジュールの判別されたハード
ウェア識別子。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0

エラーは発生しませんでした。

8093• 指定されたアドレスは、いずれのハードウェアコンポーネントにも使用されていません。
• IOID パラメータで指定された値が無効です。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2690

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

4.14.5

IO2MOD:IO アドレスからのハードウェア識別子の識別説明「IO2MOD」命令は、モジュールの IO アドレス(I、Q、PI、PQ)からモジュールのハードウ
ェア識別子を判別します。
ADDR パラメータに IO アドレスを入力します。
- このパラメータで複数の IO アドレスが使用されている場合、ハードウェア識別子の判別には最初のアドレスのみが評価されます。
- 最初のアドレスが正しく指定されている場合、ADDR パラメータでのアドレス指定の長さは問題とはなりません。
- 複数のモジュールまたは使用されていないアドレスを含むアドレス領域が使用されている
場合、最初のモジュールのハードウェア識別子も判別できます。
- モジュールの IO アドレスがパラメータ ADDR で指定されていない場合、エラーコード
8090 がパラメータ RET_VAL で出力されます。
注記
SCL での IO アドレスの入力
SCL では、I/O アクセス ID「%QWx:P」を使用してプログラムしません。この場合、プロセ
スイメージで、シンボルタグ名または絶対アドレスを使用します。

パラメータ
以下の表に、「IO2MOD」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

ADDR

Input

VARIANT

I、Q

モジュール内の IO アドレス(I、Q、PI、PQ)。
ADDR パラメータでスライスアクセスが使用されていないことを確認します。ス
ライスアクセスが使用された場合、無効な値が LADDR パラメータに出力されます。

RET_VAL

Return

INT

I、Q、M、D、L

命令のエラーコード。

LADDR

Output

HW_IO

I、Q、M、D、L

IO モジュールの判別されたハードウェア
識別子(論理アドレス)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2691

拡張命令
4.14 アドレス指定
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0

エラーは発生しませんでした。

8090

ADDR パラメータで指定された IO アドレスは、いずれのハードウェアコンポーネントにも使用されません。

8092

パラメータ ADDR で無効なデータタイプ(WCHAR または WSTRING など)。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、IO アドレスに基づいて入力モジュールのハードウェア ID を判別します。
ハードウェア ID を読み出すために、タグテーブルで PLC タグを作成します。

グローバルデータブロックにデータを保存するために、3 つのタグを作成します。

この命令のパラメータを以下のように相互接続します。

2692

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

ノーマルオープン(「execute」)がシグナル状態「TRUE」を示す場合、「IO2MOD」命令が実行されます。ローカライズされる IO アドレスが、入力パラメータ ADDR 「SLI_IOtest」()を使用して転送されます。「IO2MOD」命令が入力モジュールを呼び出し、IO アドレスを読み出します。
入力モジュールの判別されたハードウェア ID が出力パラメータ LADDR 「ioLaddr」()で示されます。出力パラメータ RET_VAL(「returnValue」)は、処理がエラーなしで行われたことを示します。

追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2693

拡張命令
4.14 アドレス指定

4.14.6

RD_ADDR:ハードウェア識別子からの IO アドレスの識別

説明「RD_ADDR」命令は、(サブ)モジュールのハードウェア識別子に基づいて入力または出力の長さおよび開始アドレスを判別します。
• LADDR パラメータを使用して、ハードウェア識別子に基づいて入力または出力モジュールを選択します。
• 入力モジュールか、または出力モジュールかに応じて、以下の出力パラメータが使用されます。
– 入力モジュールの場合、判別された値は PIADDR および PICOUNT パラメータに出力されます。
– 出力モジュールの場合、判別された値は PQADDR および PQCOUNT パラメータに出力されます。
• PIADDR および PQADDR パラメータは、それぞれモジュールの I/O アドレスの開始アドレスを含んでいます。
• PICOUNT および PQCOUNT パラメータは、それぞれ入力または出力のバイト数を含んでいます(入力/出力が 8 の場合は 1 バイト、入力/出力が 16 の場合は 2 バイト)。
注記
ET200 のパックされたアドレスを使用した IO アドレスの判別
ET200 のパックされたアドレスを使用して、パックグループの最初のモジュールがすべてのアドレスを返します。
その他のモジュールの場合、PIADDR パラメータと PQADDR パラメータを使用して以下が出力されます。
• PROFINET、アドレス「0」として• PROFIBUS、アドレス「0」として。加えて、エラーコード W#16#8090 が出力されます。

入力と出力のバイト数(パラメータ PICOUNT と PQCOUNT)では、それぞれ「0」が出力さ
れます。

2694

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

パラメータ
以下の表に、「RD_ADDR」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

LADDR

Input

HW_IO

I、Q、M、D、L、 (サブ)モジュールのハードウェア識別子。
または定数

RET_VAL

Return

INT

I、Q、M、D、L

命令のエラーコード。

PIADDR

Output

UDINT

I、Q、M、D、L

入力モジュールの開始アドレス。

PICOUNT

OutputUINT

I、Q、M、D、L

入力のバイト数。

PQADDR

Output

UDINT

I、Q、M、D、L

出力モジュールの開始アドレス。

PQCOUNT

OutputUINT

I、Q、M、D、L

出力のバイト数。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコー
ド*(W#16#...)

説明

0

エラーは発生しませんでした。

8090

LADDR パラメータのモジュールのハードウェア識別子が正しくありません。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
次の例では、ハードウェア ID に基づいて入力モジュールの入力の長さと開始アドレスを判別します。
データを保存するために、グローバルデータブロックに 7 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2695

拡張命令
4.14 アドレス指定

この命令のパラメータを以下のように相互接続します。

ノーマルオープン(「executeRead」)がシグナル状態「TRUE」を示す場合、「RD_ADDR」命令が実行されます。入力パラメータ LADDR 「readLaddr」()を使用して、入力モジュールのハードウェア ID が保存されます。「RD_ADDR」命令がハードウェア ID を使用して入力モジ
ュールを判別し、入力の長さと開始アドレスを読み出します。
判別された開始アドレスが出力パラメータ PIADDR 「piAddr」()で示されます。入力のバイト数が出力パラメータ PICOUNT 「piCount」()で示されます。
出力パラメータ RET_VAL(「readRetVal」)は、処理がエラーなしで行われたことを示します。

2696

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)

4.14.7

システムデータタイプ GEOADDR

領域アドレス
システムデータタイプ GEOADDR には、モジュールの領域アドレス、すなわち、スロット
情報が収納されます。
• PROFINET IO の領域アドレス
PROFINET IO の場合、領域アドレスは、PROFINET IO システムの ID、デバイス番号、ス
ロット番号、およびサブモジュール(サブモジュールを使用する場合)から構成されました。
• PROFIBUS DP の領域アドレス
PROFIBUS DP の場合、領域アドレスは、DP マスタシステムの ID、ステーション番号、
およびスロット番号から構成されます。
モジュールのスロット情報は、各モジュールのハードウェアコンフィグレーションに存在します。

システムデータタイプ GEOADDR
データブロックでデータタイプとして「GEOADDR」を入力すると、構造体 GEOADDR が自動的に作成されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2697

拡張命令
4.14 アドレス指定
システムデータタイプ GEOADDR の構造を以下に示します。
パラメータ名

データタイプ 説明

GEOADDRSTRUCTHWTYPE

UINT

ハードウェアタイプ:• 1:IO システム(PROFINET/PROFIBUS)• 2:IO デバイス/DP スレーブ
• 3:Rack• 4:モジュール• 5:サブモジュール
ハードウェアタイプが命令によってサポートされていない場合、
HWTYPE「0」が出力されます。

AREA

UINT

領域 ID:• 0 = CPU
• 1 = PROFINET IO• 2 = PROFIBUS DP• 3 = AS-i

IOSYSTEMUINTPROFINET IO システム(0 = ラックの基本ユニット)

STATIONUINT• AREA = 0 (CPU):– 標準 CPU:ラック番号– R/H システム:二重化 ID (1 または 2)• AREA > 0:ステーション番号

SLOT

UINT

スロット番号SUBSLOT

UINT

サブモジュール数。サブモジュールが使用できないか、接続できない
場合、このパラメータの値は「0」です。

4.14.8レガシー

4.14.8.1

GEO_LOG: スロットのハードウェア識別子の識別

説明
シグナルモジュールの対応モジュールスロットが既知です。「GEO_LOG」命令を使用し、シグナルモジュールのチャンネルからモジュールの対応するハードウェア識別子を判別し
ます。

2698

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

パラメータ
以下の表に、「GEO_LOG」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

MASTER

Input

INT

I、Q、M、D、L、 領域 ID:
または定数

説明

• 0、集中型構成内にスロットがある場
合。
• 1～32:スロットが PROFIBUS 上のフィールドデバイスにある場合、関連するフィールドデバイスの DP マスタシステム ID• 100～115:スロットが PROFINET 上のフィールドデバイスにある場合、関連するフィールドデバイスのPROFINET IO マスタシステム ID

STATION

Input

INT

I、Q、M、D、L、 • MASTER = 0 の場合:ラック番号
または定数

SLOT

Input

INT

• MASTER > 0 の場合:フィールドデバイ
スのステーション番号

I、Q、M、D、L、 スロット番号
または定数

SUBSLOT

Input

INT

I、Q、M、D、L、 サブモジュール数。サブモジュールが存または定数在しないか、サブモジュールを挿入できない場合、SUBSLOT の値は「0」でなけ
ればなりません。

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

LADDR

Output

HW_IO

I、Q、M、D、L

モジュールのハードウェア識別子

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8094

指定された SUBNETID で構成されたサブネットがありません。

8095

STATION パラメータの無効な値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2699

拡張命令
4.14 アドレス指定
エラーコード* 説明(W#16#...)
8096

SLOT パラメータの無効な値

8097

SUBSLOT パラメータの無効な値。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
アドレス変換の命令 (ページ 2682)

4.14.8.2

LOG_GEO: ハードウェア識別子からのスロットの識別

説明「LOG_GEO」命令を使用し、ハードウェア識別子に属するモジュールスロットを判別しま
す。

パラメータ
以下の表に、「LOG_GEO」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

LADDR

Input

HW_IO

説明

I、Q、M、D、L、ま スロットが識別されるモジュールのたは定数

ハードウェア識別子。

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

AREA

Output

INT

I、Q、M、D、L

領域 ID は、残りの出力パラメータの解釈方法を示します。
• 0:基本デバイス• 2:PROFIBUS DP / PROFINET IO

2700

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定
パラメータ

宣言

データタイプ メモリ領域

説明

MASTER

OutputINT

AREA = 0 の場合:

I、Q、M、D、L• 0:ラックのいずれかにスロットがある場合(基本デバイス)。
AREA = 2 の場合:
• 1～32:スロットが PROFIBUS 上のフィールドデバイスにある場
合、関連するフィールドデバイ
スの DP マスタシステム ID• 100～115:スロットが PROFINET
上のフィールドデバイスにある
場合、関連するフィールドデバ
イスの PROFINET IO マスタシス
テム ID
STATION

Output

INT

I、Q、M、D、L• MASTER = 0 の場合:ラック番号• MASTER > 0 の場合:フィールドデ
バイスのステーション番号

SLOT

Output

INT

I、Q、M、D、L

スロット番号SUBSLOT

Output

INT

I、Q、M、D、L

サブモジュール数

OFFSET

Output

INT

I、Q、M、D、L

この命令は OFFSET パラメータを出力しません(常時「0」)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8090

指定された論理アドレスが無効

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
アドレス変換の命令 (ページ 2682)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2701

拡張命令
4.14 アドレス指定

4.14.8.3

RD_LGADR:ハードウェア識別子からの IO アドレスの識別

説明「RD_LGADR」命令を使用して、ハードウェア識別子に基づいて、モジュール、中央サブモ
ジュール、または PNIO/DP スレーブ用のサブモジュールの IO アドレスを確定できます。
• LADDR パラメータでサブモジュールのハードウェア ID を指定できます。
• アドレスは PEADDR および PAADDR パラメータに昇順で書き込まれます。
– 入力モジュールの場合、PEADDR パラメータにのみ書き込まれます。出力モジュールの場合、PAADDR パラメータに書き込まれます。
– いずれの場合にも、アドレスを格納するために Array of WORD が使用されます。
• アドレスの数は、PECOUNT パラメータ(入力モジュールの場合)および PACOUNT パラ
メータ(出力モジュールの場合)で出力されます。
注記
ボックス PEADDR および PAADDR の説明
PEADDR または PAADDR では、返されるアドレスと同じ数のアドレスのみ入力されます(この数は PECOUNT または PACOUNT で入力されます)。現在返されるアドレスの背後にある
以前の RD_LGADR 呼び出しのアドレスが保持されます。これらのアドレスを現在の呼び出しで評価してはなりません。
注記
ET200 のパックされたアドレスを使用した IO アドレスの判別
ET200 のパックされたアドレスを使用して、パックグループの最初のモジュールがすべてのアドレスを返します。
その他のモジュールの場合、PEADDR パラメータと PAADDR パラメータを使用して以下が出力されます。
• PROFINET、アドレス「0」として• PROFIBUS、アドレス「0」として。加えて、エラーコード W#16#8090 が出力されます。

入力と出力のバイト数(パラメータ PECOUNT と PACOUNT)では、それぞれ「0」が出力さ
れます。

2702

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定

パラメータ
以下の表に、「RD_LGADR」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

IOID

Input

BYTE

I、Q、M、D、L、ま 評価されません
たは定数

LADDR

Input

HW_ANY

I、Q、M、D、L、ま モジュールまたはサブモジュールのハ
たは定数

ードウェア識別子。

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

PEADDR

OutputANY

I、Q、M、D、L

Array of WORD データタイプの PI アド
レス用のフィールドPECOUNT

Output

INT

I、Q、M、D、L

返される PI アドレスの数

PAADDR

OutputANY

I、Q、M、D、L

Array of WORD データタイプの PQ ア
ドレス用のフィールド

PACOUNT

Output

INT

I、Q、M、D、L

返される PQ アドレスの数

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード説明(W#16#...)
0000

エラーは発生しませんでした。

8090

指定されたハードウェア識別子が無効です

80A0

出力パラメータ PEADDR のエラー:配列エレメントのデータタイプが WORD ではありません。

80A1

出力パラメータ PAADDR のエラー:配列エレメントのデータタイプが WORD ではありません。

80A2

出力パラメータ PEADDR のエラー:指定された配列にすべての論理アドレスが収まりません。

80A3

出力パラメータ PAADDR のエラー:指定された配列にすべての論理アドレスが収まりません。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

報

下記も参照
アドレス変換の命令 (ページ 2682)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2703

拡張命令
4.14 アドレス指定

4.14.8.4

GADR_LGC: ユーザーデータアドレス領域のスロットおよびオフセットからのハードウェ
ア識別子の識別説明「GADR_LGC」命令を使用して、シグナルモジュールのハードウェア識別子を判別します。
ハードウェア識別子は、モジュールスロットおよびモジュールのユーザーデータアドレス
領域のオフセットから識別されます。
注記
使用の制限「GADR_LGC」命令はゲートウェイの後にあるモジュールには使用できません(IE/PB リンクなど)。この命令の代わりに「GEO2LOG」命令を使用してください。

パラメータ
以下の表に、「GADR_LGC」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

SUBNETID

Input

BYTE

I、Q、M、D、L、ま 領域 ID:
たは定数

説明

• 0:基本モジュール内にスロットがある場合。
• 1～32:対応するリモート I/O システ
ム DP マスタシステム ID、スロット
がリモート I/O デバイスにある場合。
• 100～115:スロットが PROFINET 上のフィールドデバイスにある場
合、関連するフィールドデバイスの PROFINET IO マスタシステム ID

RACK

Input

WORD

I、Q、M、D、L、ま • ラック番号、領域識別子が 0 の場合。
たは定数
• リモート I/O デバイスのデバイス番号、領域識別子> 0 の場合

SLOT

Input

WORD

I、Q、M、D、L、ま スロット番号
たは定数

SUBSLOT

Input

BYTE

I、Q、M、D、L、ま 対象外
たは定数

2704

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.14 アドレス指定
パラメータ

宣言

データタイ
プ

メモリ領域

説明

SUBADDR

Input

WORD

I、Q、M、D、L、ま モジュールのユーザーデータアドレス
たは定数

領域のオフセット

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

IOID

Output

BYTE

I、Q、M、D、L

IOID 出力パラメータは書き込まれません(常時「0」)。

LADDR

Output

HW_MODUL I、Q、M、D、L

モジュールのハードウェア識別子

E
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード* 説明(W#16#...)
0000

エラーは発生しませんでした。

8094

指定された SUBNETID で構成されたサブネットがありません。

8095

RACK パラメータの無効な値。

8096

SLOT パラメータの無効な値。

8098

SUBADDR パラメータの無効な値。

一般エラー情関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)報
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
アドレス変換の命令 (ページ 2682)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2705

拡張命令
4.14 アドレス指定

4.14.8.5

LGC_GADR: ハードウェア識別子からのスロットの識別

説明「LGC_GADR」命令を使用し、ハードウェア識別子に属するモジュールスロットを判別し
ます。
注記
使用の制限
「LGC_GADR」命令はゲートウェイの後にあるモジュールには使用できません(IE/PB リンクなど)。この命令の代わりに「LOG2GEO」命令を使用してください。

パラメータ
以下の表に、「LGC_GADR」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

IOID

Input

BYTE

I、Q、M、D、L、ま 評価されません。
たは定数

LADDR

Input

HW_MODUL I、Q、M、D、L、ま モジュールのハードウェア識別子
E

たは定数

RET_VAL

Return

INT

I、Q、M、D、L

エラー情報

AREA

Output

BYTE

I、Q、M、D、L

領域 ID は、残りの出力パラメータの解釈方法を示します。
• 0:セントラルモジュール• 2:PROFIBUS DP

RACKOutput

WORD

I、Q、M、D、L

ラック番号:• 基本モジュール(AREA= 0)の場合:– ラック番号• PROFIBUS DP (AREA=2)の場合:– 下位バイト:ステーション番号– 上位バイト:DP マスタシステム
ID

2706

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.15 ファイル操作
パラメータ

宣言

データタイ
プ

メモリ領域

説明

SLOT

Output

WORD

I、Q、M、D、L

スロット番号:• 基本モジュール(AREA= 0)の場合:– スロット番号• PROFIBUS DP (AREA=2)の場合:– ステーションのスロット番号

SUBADDR

Output

WORD

I、Q、M、D、L

出力されません(常時「0」)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ RET_VAL
エラーコード*説明(W#16#...)
0000

エラーは発生しませんでした。

8090

指定された論理アドレスが無効

8093

この命令は、パラメータ IOID および LADDR で選択されたモジュールでは許可されません。

一般エラー情報 関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)
* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
アドレス変換の命令 (ページ 2682)

4.15

ファイル操作

4.15.1

FileReadC:メモリカードからのファイルの読み取り

説明「FileReadC」命令を使用して、メモリカードにあるファイルからデータを読み取り、そのデータを CPU の宛先領域に書き込みます。ファイルは、名前および完全なパスを入力して指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2707

拡張命令
4.15 ファイル操作
REQ 制御パラメータを使用して、ファイルからの読み取りを有効化します。出力パラメータ
Done、Busy、Error および Status は、ジョブのステータスを示します。
ファイル名およびパスの指定には、以下のルールが適用されます。
• ファイル名は、最大 55 文字です。
• フォルダおよびファイル名には、次の文字を使用できます:「0～9」、「a～z」、「A～Z」、「-」、「_」。
• ファイル名には、ドット(「.」)を 1 つしか含めてはなりません。このドットで、名前とファイル拡張子が分割されます。ファイル名は、1 文字以上であることが必要です。ファイル拡張子は必須ではありません。
• パス名は、「/」、「\」、または「.」で始まってはなりません。
• パス名には、「..」を含めてはなりません。
有効なパスおよびファイル名の例:「UserFiles/Lift16_DataBase.txt」、「UserFiles/
2017-04-13_ErrorLog.bin」「FileReadC」を実行することで、最大で 16 MB (16,777,216 バイト)を読み取れます。データはセグメントごとに読み取られます。セグメントサイズは、デバイスによって異なります。たとえば、S7-1500-CPU は 32 KB (32,768 バイト)ブロックを使用します。読み取る
データアイテム数がセグメントサイズよりも大きい場合は、プログラム内で命令を複数回呼び出す必要があります。整合性を保つため、最後に命令を呼び出した後でないと、読み取られたデータにアクセスしてはなりません。
パラメータ「Offset」および「Length」は、読み取られるデータアイテムの長さを指定します。読み取り処理が完了すると、占有されていたリソースが解放されます。

ファンクションの説明「FileReadC」命令は、非同期で動作します。複数のセルにわたって処理が行われます。パラメータ「REQ」の立ち上がりエッジで処理を開始します。
パラメータ「Busy」および「Done」は、ジョブのステータスを示します。
実行中にエラーが発生すると、パラメータ「Error」および「Status」によって通知されます。
関連項目:同期命令と非同期命令の相違 (ページ 29)

2708

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.15 ファイル操作

パラメータ
次の表に、「FileReadC」命令のパラメータを示します。
パラメータ

宣言

データタイプ

説明

REQ

Input

BOOL

制御パラメータ要求
立ち上がりエッジでのメモリカードからのファイルの読み取りを有効化します。

Name

Input

STRING

完全なパスを含む、読み取られるファイル名。

Offset

Input

UDINT

ファイルが読み取られるまでのオフセット。

Length

Input

UDINT

読み取られる領域のバイト単位の長さ
Length = 0 は、呼び出しごとのデータアイテムの許容最大数が読み取られることを意味します(S7-1500-CPU の場合、 32 KB または「Data」パラメータのサイズ)。

Done

OutputBOOL

1:命令は正常に実行されました。
読み取られた情報は、「Data」パラメータに転送されまし
た。

Busy

OutputBOOL

STATUS パラメータ• 0:命令の実行が完了したか、まだ開始されていません。
• 1:命令の実行が未完了です。

Error

OutputBOOL

STATUS パラメータ• 0:エラーはありません。
• 1:命令の実行中にエラーが発生しました。詳細情報は、「Status」パラメータで出力されます。

Status

Output

WORD

エラーコードResultLength

Output

UDINT

読み取られるデータの長さ(単位はバイト)

Data

InOut

VARIANT

読み取られるデータの宛先領域
許可されているデータタイプ:BYTE および BYTE 配列

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2709

拡張命令
4.15 ファイル操作

パラメータ Status
エラーコー
ド*(W#16#...)

説明

0

エラーは発生していません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ Busy = 1、Done = 0。

7002

中間呼び出し(REQは対象外):命令が既に有効です。Busy の値は「1」です。

0081

警告:Offset + Length がファイル長を超えています。データは"Offset"からファイルの終端まで読み取られます。「Data"」には、要求よりも少ない数のデータアイテムしか含まれていません。"ResultLength"は「Length"」よりも短くなっています。「Data"」内の渡されたデータ「ResultLength"」は変更されません。

8091

パスが存在しないか、無効です。

8092「Name」パラメータがデータタイプ「STRING」ではない、長すぎる、または無効な文字を含んでいます。

8093「Offset」パラメータが、読み取られるファイルの終端以降をポイントしています。

8094「Length」パラメータが、最大許容値よりも大きな値です。たとえば、 S7-1500 CPU の許容最大値は 16 MB (16,777,216 バイト)です。

80A1

読み取りエラー、「Data」パラメータで指定された宛先領域が部分的に上書きされる可能性が
あります。

80B1

「Data」パラメータで指定された宛先領域の長さが、「Length」パラメータで要求されている長さよりも短くなっています。

80C0

ファイルにアクセスできません(書き込み保護されているか、他のプロセスによってロックされています)。

80C3同時に有効な FileReadC 命令の最大数に既に達しています。

8A24「Data」が、ロードメモリやローカルデータなどの許可されていない範囲をポイントしてい
ます。

8A30

ターゲット範囲が書込み保護されています(書き込み保護された DB など)。

8A51

「Data」パラメータのデータタイプが無効です。

8A52「Data」パラメータのタグが不十分です。ソース領域データが部分的に書き込まれています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

2710

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.15 ファイル操作例
例については、以下を参照してください。FileReadC および FileWriteC のプログラム例 (ページ 2714)。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

4.15.2FileWriteC:メモリカードでファイルを書き込み

説明「FileWriteC」命令を使用して、CPU のソース領域にあるデータをメモリカード上の「UserFiles」フォルダ内にあるファイルに書き込みます。このファイルは、名前および完全なパスを入力して指定します。ファイルが存在しない場合は、CPU によって「UserFiles」
フォルダ内に作成されます。この場合、「Offset」パラメータはゼロパディングされる必要があります。ゼロパディングされていないと、「Status」パラメータに W#16#8093 が出力されます。「UserFiles」フォルダも存在していない場合も、CPU によって作成されます。サ
ブフォルダは作成されません。この場合、「Status」パラメータに W#16#8091 が出力されます。
「REQ」制御パラメータを使用して、ファイルへの書き込みを有効化します。出力パラメータ「Done」、「Busy」、「Error」および「Status」は、ジョブのステータスを示します。
ファイル名およびパスの指定には、以下のルールが適用されます。
• ファイル名は、最大 55 文字です。
• フォルダおよびファイル名には、次の文字を使用できます:「0～9」、「a～z」、「A～Z」、「-」、「_」。
• ファイル名には、ドット(「.」)を 1 つしか含めてはなりません。このドットで、名前とファイル拡張子が分割されます。ファイル名は、1 文字以上であることが必要です。ファイル拡張子は必須ではありません。
• パス名は、「/」、「\」、または「.」で始まってはなりません。
• パス名には、「..」を含めてはなりません。
有効なパスおよびファイル名の例:「UserFiles/Lift16_DataBase.txt」、「UserFiles/
2017-04-13_ErrorLog.bin」「FileWriteC」を実行することで、最大で 16 MB (16,777,216 バイト)を書き込めます。データはセグメントごとに書き込まれます。セグメントサイズは、デバイスによって異なります。たとえば、S7-1500-CPU は 32 KB (32,768 バイト)ブロックを使用します。書き込む

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2711

拡張命令
4.15 ファイル操作
データアイテム数がセグメントサイズよりも大きい場合は、プログラム内で命令を複数回呼び出す必要があります。整合性を保つため、最後に命令を呼び出した後でないと、書き込
まれたデータにアクセスしてはなりません。用意されたファイルが短すぎる場合は、必要なサイズまで拡大されます。
パラメータ「Offset」および「Length」は、データが書き込まれるファイル内の場所を指定します。書き込み処理が完了すると、占有されていたリソースが解放されます。
「FileWriteC」命令は、次の条件を満たす場合にのみ、書き込み操作を開始します: 「Offset」+ 「Length」 <= 16 MB

ファンクションの説明「FileWriteC」命令は、非同期で動作します。複数のセルにわたって処理が行われます。パラメータ「REQ」の立ち上がりエッジで処理を開始します。
パラメータ「Busy」および「Done」は、ジョブのステータスを示します。
実行中にエラーが発生すると、パラメータ「Error」および「Status」によって通知されます。
関連項目:同期命令と非同期命令の相違 (ページ 29)

パラメータ
次の表に、「FileWriteC」命令のパラメータを示します。
パラメータ

宣言

データタイプ

説明

REQ

Input

BOOL

制御パラメータ要求
立ち上がりエッジでのメモリカード上のファイルの書き込みを有効化します。

Name

Input

STRING

完全なパスを含む、書き込まれるファイル名。

Offset

Input

UDINT

ファイルが書き込まれる前のオフセット。

Length

Input

UDINT

書き込まれる領域のバイト単位の長さ「Length」 = 0 は、「Data」パラメータで指定されたソース
領域全体が書き込まれることを意味します。

Done

OutputBOOL

1:命令は正常に実行されました。

Busy

OutputBOOL

STATUS パラメータ• 0:命令の実行が完了したか、まだ開始されていません。
• 1:命令の実行が未完了です。

2712

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.15 ファイル操作
パラメータ

宣言

データタイプ

説明

Error

OutputBOOL

STATUS パラメータ• 0:エラーはありません。
• 1:命令の実行中にエラーが発生しました。詳細情報は、「Status」パラメータで出力されます。

Status

Output

WORD

エラーコードResultLength

Output

UDINT

書き込まれるデータの長さ(単位はバイト)

Data

InOut

VARIANT

ソース領域
許可されているデータタイプ:BYTE および BYTE 配列

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ Status
エラーコー
ド*(W#16#...)

説明

0

エラーは発生していません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。パラメータ Busy = 1、Done = 0。

7002

中間呼び出し(REQは対象外):命令が既に有効です。Busy の値は「1」です。

8091

パスが存在しないか、無効です。

8092「Name」パラメータがデータタイプ「STRING」ではない、長すぎる、または無効な文字を含んでいます。

8093• 「Offset」パラメータが、書き込まれるファイルの終端以降をポイントしています。
• 「Offset」がゼロよりも大きいため、ファイルの作成が拒否されました。

8094• 「Length」が、最大許容値よりも大きな値です。たとえば、 S7-1500 CPU の許容最大値は16 MB (16,777,216 バイト)です。
• 「Length」 + 「Offset」が、最大許容値よりも大きな値です。

80A1

書き込みエラー、メモリカード上のファイル内のデータが部分的に上書きされる可能性があ
ります。

80B1

「Data」パラメータで指定されたソース領域の長さが、「Length」パラメータで要求されている長さよりも短くなっています。

80B3

メモリカードまたは内部ロードメモリに十分なメモリ領域がありません。

80B4

メモリカードまたはファイルが書き込み保護されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2713

拡張命令
4.15 ファイル操作
エラーコー
ド*(W#16#...)

説明

80C0

ファイルにアクセスできません。

80C3同時に有効な FileWriteC 命令の最大数に既に達しています。

8A24「Data」が、ロードメモリやローカルデータなどの許可されていない範囲をポイントしてい
ます。

8A51

「Data」パラメータのデータタイプが無効です。

8A52「Data」パラメータのタグが不十分です。ソース領域データが部分的に書き込まれています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例については、以下を参照してください。FileReadC および FileWriteC のプログラム例 (ページ 2714)。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

4.15.3

FileReadC & FileWriteC のプログラム例
以下の例では、S7-1500 CPU のメモリカード上にファイルを作成し、このファイルにデータを書き込みます。その後、このファイル内のデータを読み出します。

2714

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.15 ファイル操作

データストレージ
データを保存するために、グローバルデータブロック内に「FileWriteC」および「FileReadC」命令用の 1 つのタグと 2 つの構造体を作成します。

ファイルに書き込むデータは、以下の通りです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2715

拡張命令
4.15 ファイル操作

パラメータの相互接続
FB 内で「FileWriteC」および「FileReadC」命令を呼び出します。FB 内で以下のローカルタグを作成します。

ネットワーク 1:「FileWriteC」命令のパラメータを以下のように相互接続します。

ネットワーク 2:「FileReadC」命令のパラメータを以下のように相互接続します。

2716

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.15 ファイル操作

ネットワーク 1 の結果
ノーマルオープン(「fileWrite.start」)のシグナル状態が「TRUE」であり、ノーマルクローズ「fileRead.busy」()のシグナル状態が「FALSE」である場合、「FileWriteC」命令が実行されます。
完全なパスを含む、書き込まれるファイルのファイル名は、入力パラメータ NAME
「name」()で命名されます。この名前およびパスのファイルはメモリカード上にまだ存在していないため、CPU によってファイルが作成されます。その後、入力パラメータ OFFSET「fileWrite.offset」()の値「0」に従って、ファイルが先頭バイトから書き込まれます。入力
パラメータ LENGTH 「fileWrite.length」()の値が「0」の場合、DATA パラメータ「fileWrite.length」()によって格納されたソース領域のすべてのデータが、メモリカード上のファイルに書き込まれます。
「FileWriteC」命令の処理が成功すると、ステータスが出力パラメータ DONE「#writeDone」()によって出力されます。書き込まれたデータの長さ(16 バイト)は、出力パラメータ RESULTLENGTH 「#writeResultLength」()に出力されます。FileWriteC が正常に実行されると、「#writeDone」タグの値(「fileWrite.done」タグ内)、および「#writeResultLength」タグの値(「fileWrite.resultLength」タグ内)の値も格納されます。さらに、「fileWrite.start」タグの値が「FALSE」にリセットされます。
「FileWriteC」命令でエラーが発生した場合は(「#writeError」が TRUE)、ステータス「fileWrite.status」()が「fileWrite.memErrStatus」タグ内に格納されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2717

拡張命令
4.15 ファイル操作
出力パラメータ STATUS 「fileWrite.status」()は、この例の処理がエラーなしで行われていることを示します。

ネットワーク 2 の結果
ノーマルオープン(「fileRead.start」)のシグナル状態が「TRUE」であり、ノーマルクローズ「fileWrite.busy」()のシグナル状態が「FALSE」である場合、「FileReadC」命令が実行されます。
完全なパスを含む、読み取られるファイルのファイル名は、入力パラメータ NAME
「name」()で命名されます。入力パラメータ OFFSET 「fileRead.offset」()の値「0」に従って、
メモリカード上のファイルが先頭バイトから読み取られます。入力パラメータ LENGTH「fileRead.length」()の値が「0」の場合、呼び出しごとに読み取り可能な最大数のデータが読み取られます。
その後、読み取られたデータは DATA パラメータ(「fileWrite.length」)によって格納されます。

「FileReadC」命令の処理が成功すると、ステータスが出力パラメータ DONE「#readDone」()
によって出力されます。読み取られたデータの長さ(16 バイト)は、出力パラメータ
RESULTLENGTH 「#readResultLength」()に出力されます。FileReadC が正常に実行されると、「#readDone」タグの値(「fileRead.done」タグ内)、および「#readResultLength」タグの値「fileRead.resultLength」タグ内)の値も格納されます。さらに、(「fileRead.start」タグの値が「FALSE」にリセットされます。

2718

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令4.15 ファイル操作「FileReadC」命令でエラーが発生した場合は(「#readError」が TRUE)、ステータス「fileRead.status」()が「fileRead.memErrStatus」タグ内に格納されます。
出力パラメータ STATUS 「fileRead.status」()は、この例の処理がエラーなしで行われていることを示します。

プログラムコード
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
FileReadC:メモリカードからのファイルの読み取り (ページ 2707)
FileWriteC:メモリカードでファイルを書き込み (ページ 2711)

4.15.4FileDelete:メモリカードでファイルを削除

有効性「FileDelete」命令は、ファームウェアバージョン V2.8 以降の S7-1500 CPU に含まれています。

説明「FileDelete」命令を使用し、メモリカードから既存のファイルを削除します。
削除するファイルが開いた状態であってはなりません。「Name」パラメータ内では、ワイルドカードはサポートされていません。つまり、「UserFiles/*.txt」や「UserFiles/?.txt」な
どの名前は使用できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2719

拡張命令
4.15 ファイル操作「FileDelete」命令は、「Recipes」および「UserFiles」フォルダ内でしか使用できません。
これらのフォルダ内のフォルダ(「UserFiles/Test/file1.txt」など)は使用可能です。
注記
データログの削除「FileDelete」命令では、「DataLog」フォルダ内のファイルは削除できません。データログを削除するには、「DataLogDelete」命令を使用する必要があります。

ファンクションの説明「FileDelete」は非同期命令です。処理を複数の呼び出しにわたって行うことが可能です。
パラメータ「REQ」の立ち上がりエッジで処理を開始します。
パラメータ「Busy」および「Done」は、ジョブのステータスを示します。
実行中にエラーが発生すると、パラメータ「Error」および「Status」によって通知されます。
関連項目:同期命令と非同期命令の相違 (ページ 29)

パラメータ以下の表に、「FileDelete」命令のパラメータを示します。
パラメータ

宣言

データタイプ

説明

REQ

Input

BOOL

制御パラメータ要求
処理は、REQ での立ち上がりエッジで開始されます。

Name

Input

STRING

削除するファイルのパスおよび名前

Done

OutputBOOL

STATUS パラメータ• 1:命令は正常に実行されました。

Busy

OutputBOOL

STATUS パラメータ• 0:命令が現在実行されていません。
• 1:命令が現在実行されています。

Error

OutputBOOL

STATUS パラメータ• 0:エラーは発生していません。
• 1:命令の実行中にエラーが発生しました。詳細は「Status」パラメータを参照してください。

Status2720

Output

WORD

エラーコードTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.16 R/H システム
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

パラメータ Status
エラーコー
ド*(W#16#...)

説明

0000

命令が正常に終了しました。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始: Busy = 1、Done = 0。

7002

中間呼び出し(REQは対象外):命令が既に有効です。Busy の値は「1」です。

8091

パスが存在しません。

8092

ファイルがパス内に存在しません。

8093

ファイルが開いています。

8094

パス内の開始フォルダが、「FileDelete」によってサポートされていません。

80A2

書き込みエラー

80B4

メモリカードが書き込み保護されています。

80C3同時に有効にできる FileDelete 命令の最大数に既に達しています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

4.16

R/H システム

4.16.1

RH_CTRL:R/H システム内のシーケンスへの効果

説明
命令「RH_CTRL」、 により R/H システムに対して以下のような効果を与えます。
• システム状態「SYNCUP」を無効化できます。「RH_CTRL」命令で無効化するまで、または R/H システムが「STOP」モードになるまで、ロックは有効です。
• システム状態「SYNCUP」を再度有効化できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2721

拡張命令
4.16 R/H システム

ファンクションの説明「RH_CTRL」命令は、非同期で動作します。複数のセルにわたって処理が行われます。
REQ =1 で「RH_CTRL」を呼び出してジョブを開始します。
出力パラメータ RET_VAL および BUSY はジョブのステータスを示します。
関連項目:同期命令と非同期命令の相違 (ページ 29)

パラメータ以下の表に、「RH_CTRL」命令のパラメータを示します。
パラメータ

宣言

データタイプ 説明

REQ

入力

BOOL

制御パラメータ要求
REQ = 「1」の場合、命令の実行が有効化されます。

モード

BYTE

入力

「Mode」パラメータを使用して、R/H システムにどのような効果を与えるかを選択します。
• 3:SYNCUP の実行をブロック• 4:SYNCUP の実行を再度有効化

Submode

入力

WORD

非表示パラメータ。この値は 0 であることが必要です。

Ret_Val

出力

INT

エラーコード

BUSY

出力

BOOL

STATUS パラメータ• 0:命令の実行が完了しました。
• 1:命令の実行が未完了です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

Ret_Val パラメータ
エラーコード*(W#16#...)

説明

0

エラーはありません。

1• Mode = 3 の場合:SYNCUP システム状態は既に無効化されています。
• Mode = 4 の場合:SYNCUP システム状態は既に有効化されています。

7000

進行中のジョブはありません(REQ = 0)。

7001

最初の呼び出しで REQ = 1:データ転送がトリガされました。BUSY の値は「1」です。

7002

中間呼び出し(REQは対象外):データ伝送は既にアクティブです。BUSY の値は 1 です。

2722

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

拡張命令
4.16 R/H システム
エラーコード*(W#16#...)

説明

8082

R/H システムが既に「SYNCUP」システム状態であるため、このシステム状態を無効にすることはできません。

8090「Mode」パラメータの値が無効です。

8091「Submode」パラメータの値が無効です。この値は 0 であることが必要です。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示されます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2723

拡張命令
4.16 R/H システム

2724

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1

モーションコントロール

5.1.1

S7-1200 モーションコントロール

5.1.1.1

MC_Power

5

MC_Power: 軸の有効化、無効化

説明
モーションコントロール命令「MC_Power」は、軸をリリースまたはロックします。

必要条件• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 未解決のイネーブル禁止エラーがないこと。

応答の無効化「MC_Power」の実行は、モーションコントロールコマンドによって中止できません。
軸の無効化(入力パラメータ「Enable」 = FALSE )は、選択した「StopMode」に従って、関連するテクノロジーオブジェクトに対するすべてのモーションコントロールコマンドを中止します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2725

テクノロジー
5.1 モーションコントロール

パラメータ
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Enable

INPUT

BOOL

FALSE

TRUE

モーションコントロールが、軸の有効化を試みています。

FALSE 設定された「StopMode」に従ってすべての動作中のコマンドが中止され、軸が停止します。
StopMode INPUT

INT

0

0

緊急停止
軸を無効にする要求が保留中の場合、設定された緊急停止減速で、軸にブレーキがかかります。軸は停止後に無効になります。

1

直ちに停止
軸を無効にする要求が保留中の場合、減速なしで、軸が無効になります。パルス出力が直ちに停止します。

2

ジャーク制御による緊急停止
軸を無効にする要求が保留中の場合、設定された緊急停止減速で、軸にブレーキがかかります。ジャーク制御が有効な場合、設定されたジャークが考慮されます。軸は停止後に無効になります。

2726

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

StatusOUTPUT

BOOL

FALSE

軸イネーブルのステータス
FALSE 軸が無効になります。
軸はモーションコントロールコマンドを実行
せず、すべての新しいコマンドの承認も行いません(例外: MC_Reset コマンド)。
軸が原点復帰していません。
無効時、軸が静止するまでは、ステータスは
FALSE に変わりません。
TRUE

軸が有効であること。
軸は、モーションコントロールコマンドを実行できる状態です。
軸が有効なときは、信号「ドライブ準備完了」が保留中になるまで、ステータスは
TRUE に変わりません。軸の構成で「ドライブ準備完了」ドライブインターフェースが設定されなかった場合、ステータスは直ちにTRUE に切り替わります。

Busy

OUTPUT

BOOL

FALSE

TRUE

MC Power が有効です。

Error

OUTPUT

BOOL

FALSE

TRUE

モーションコントロール命令「MC_Power」、または関連するテクノロジー
オブジェクトで、エラーが発生しました。エ
ラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

注記
軸がエラーのためにスイッチがオフになった場合、エラーを除去し、確認した後は、軸が自動的に有効になります。この場合、このプロセス時に、入力パラメータ「Enable」が値TRUE を保持していることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2727

テクノロジー
5.1 モーションコントロール

ドライブインターフェースが設定された軸の有効化
この軸を有効にするには、以下の手順を実行します。
1. 上記の必要条件をチェックします。
2. 入力パラメータ「StopMode」を必要な値で初期化します。入力パラメータ「Enable」をTRUE に設定します。
「ドライブ有効化済み」のためのイネーブル出力が TRUE に変わり、ドライブへの電源を有効にします。CPU は、ドライブの「ドライブ準備完了」信号を待機します。
CPU の設定された準備完了入力で「ドライブ準備完了」信号が使用可能になると、軸が有効になります。 出力パラメータ「Status」と、テクノロジーオブジェクトのタグ<軸名>.StatusBits.Enable が、値 TRUE を示します。

ドライブインターフェースが設定されていない軸の有効化
この軸を有効にするには、以下の手順を実行します。
1. 上記の必要条件をチェックします。
2. 入力パラメータ「StopMode」を必要な値で初期化します。入力パラメータ「Enable」をTRUE に設定します。軸が有効であること。 出力パラメータ「Status」と、テクノロジーオ
ブジェクトのタグ<軸名>.StatusBits.Enable が、値 TRUE を示します。

軸の無効化
軸を無効にするには、以下の手順を実行します。
1. 軸を停止します。
テクノロジーオブジェクトのタグ<軸名>.StatusBits.StandStill で、軸をいつ停止させるかを指定できます。
2. 停止した後、入力パラメータ「Enable」を FALSE に設定します。
3. 出力パラメータ「Busy」および「Status」と、テクノロジーオブジェクトのタグ<軸名>.StatusBits.Enable が値 FALSE を示すと、軸の無効化が完了です。

下記も参照
MC_Power: ファンクションチャート (ページ 2730)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)

2728

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2729

テクノロジー
5.1 モーションコントロール

MC_Power: ファンクションチャート

ファンクションチャート

)%

)%
0&B5HVHW

0&B3RZHU$[LVB
(QDB


$[LV
(QDEOH
6WRS0RGH

6WDWXV%XV\(UURU(UURU,'(UURU,QIR)%

6WDWXVB%XV\B
(UURUB$[LVB([HB

$[LV([HFXWH

'RQH
%XV\
(UURU
(UURU,'(UURU,QIR'RQHB
%XV\B



(QDB




W

6WDWXVB




W






W

([HB




W

'RQHBW%XV\BW'ULYH(QDEOHG

W'ULYH5HDG\W%XV\B
(UURUB)%'ULYH,QWHUIDFH

W① 軸が有効になった後、再び無効になります。 ドライブが「ドライブ準備完了」信号を CPU に戻すと、成功したイネーブルを「Status_1」経由で読み出すことができます。

② 軸イネーブルに続いて、軸の無効化の原因となるエラーが発生しました。 エラーが除去され、「MC_Reset」で確認されます。 この場合、軸は再び有効になります。

2730

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

下記も参照
MC_Power: 軸の有効化、無効化 (ページ 2725)

5.1.1.2

MC_Reset

MC_Reset: エラーの確認応答

説明
モーションコントロール命令「MC_Reset」を使用して、「軸停止ありの動作エラー」および「コンフィグレーションエラー」を確認することができます。 確認が必要なエラーについては、「ErrorID および ErrorInfo の一覧」の「対策」を参照してください。
バージョン V3.0 から、RUN 動作モードで、軸設定をワークメモリにダウンロードできます。

必要条件• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 確認が必要な保留中のコンフィグレーションエラーの原因が除去済みであること(たとえば、「軸」テクノロジーオブジェクトの加速が有効な値に変更済みであること)。

応答の無効化
MC_Reset コマンドは、他のモーションコントロールコマンドで中止することはできません。
新しい MC_Reset コマンドは、他のすべての動作中のモーションコントロールコマンドを中止しません。

パラメータ
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドの開始

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202731

テクノロジー
5.1 モーションコントロール
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

Restart

INPUT

BOOL

FALSE

(バージョン V3.0 から)
TRUE

軸設定をロードメモリからワークメモリにダウンロードします。 このコマンドは、軸が無効になっているときのみ実行できます。
CPU へのダウンロードに関する注記を参照してください。

FALSE 保留中のエラーを確認します
Done

OUTPUT

BOOL

FALSE

TRUE

エラーが確認応答されています。

Busy

OUTPUT

BOOL

FALSE

TRUE

コマンドを実行中です。

Error

OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。
エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

MC_Reset による確認を必要とするエラーの確認
エラーを確認するには、以下の手順を実行します。
1. 上記の必要条件をチェックします。
2. 入力パラメータ「Execute」での立ち上がりエッジで、エラーの確認を開始します。
3. 出力パラメータ「Done」が値 TRUE を示し、テクノロジーオブジェクトのタグ<軸名>.StatusBits.Error が値 FALSE を示す場合、エラーが確認応答済みです。

下記も参照
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)

2732

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)

5.1.1.3

MC_Home

MC_Home: 軸を原点復帰させ、ホーム位置を設定します。

説明
モーションコントロール命令「MC_Home」を使用して、軸座標を物理的な実際のドライブ位置に適合させます。軸の絶対位置決めには、原点復帰が必要です。次のタイプの原点復帰を実行できます。
• アクティブ原点復帰(Mode = 3)
原点復帰手順が自動的に実行されます。
• パッシブ原点復帰(Mode = 2)
パッシブ原点復帰中、モーションコントロール命令「MC_Home」は、原点復帰モーシ
ョンを実行しません。このステップに必要な移動モーションは、他のモーションコン
トロール命令を介して、ユーザーによって実装されなければなりません。原点復帰ス
イッチが検出されると、軸が原点復帰します。
• 絶対直接原点復帰(Mode = 0)
現在の軸位置が、パラメータ「Position」の値に設定されます。
• 相対直接原点復帰(Mode = 1)
現在の軸位置が、パラメータ「Position」の値だけオフセットされます。

必要条件• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 軸が有効であること。
• Mode = 0、1、または 2 での開始時に、MC_CommandTable コマンドが動作中でないこと。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202733

テクノロジー
5.1 モーションコントロール

応答の無効化応答の無効化は、選択したモードに応じて異なります。
Mode = 0, 1
MC_Home コマンドは、他のモーションコントロールコマンドで中止することはできません。
MC_Home コマンドは、他のすべての動作中のモーションコントロールコマンドを中止しません。 位置関連のモーションコマンドは、新しい原点復帰位置(入力パラメータ:「Position」での値)に従って原点復帰した後、再開されます。 "Position").
Mode = 2
MC_Home コマンドは、以下のモーションコントロールコマンドによって中止できます。
• MC_Home コマンド Mode = 2, 3
新しい MC_Home コマンドは、次の有効なモーションコントロールコマンドを中止します。
• MC_Home コマンド Mode = 2
位置関連のモーションコマンドは、新しい原点復帰位置(入力パラメータ: 「Position」での値)に従って原点復帰した後、再開されます。 "Position").
Mode = 3
MC_Home コマンドは、以下のモーションコントロールコマンドによって中止できます。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド
新しい MC_Home コマンドは、以下の動作中のモーションコントロールコマンドを中止します。
• MC_Home コマンド Mode = 2, 3
• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド

2734

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

パラメータ
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドの開始

Position

INPUT

REAL

0.0

• Mode = 0、2、および 3
原点復帰動作を完了した後の絶対位置• Mode = 1
現在の軸位置用補正値
制限値:-1.0e12 ≤ Position ≤ 1.0e12

Mode

INPUT

INT

0

原点復帰モード0

絶対直接原点復帰
新しい軸位置は、パラメータ「Position」の値です。

1

相対直接原点復帰
新しい軸位置は、現在の軸位置 + パ
ラメータ「Position」の値です。

2

パッシブ原点復帰軸の構成に従った原点復帰。原点復帰した後、パラメータ「Position」の値が新しい軸位置として設定されます。

3

アクティブ原点復帰
軸の構成に従った原点復帰位置アプ
ローチ原点復帰した後、パラメータ「Position」の値が新しい軸位置として設定されます。

Done

OUTPUT

BOOL

FALSE

TRUE

コマンドが完了しました。

Busy

OUTPUT

BOOL

FALSE

TRUE

コマンドを実行中です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202735

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

CommandAbort OUTPUT

データタイプ

デフォルト
値

説明

BOOL

FALSE

TRUE

ed
Error

実行時に、コマンドが別のコマンド
によって中止されました。

OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。エラーの原因は、パラメー
タ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

注記
以下の条件の場合、軸の原点復帰は失われます。
• モーションコントロール命令「MC_Power」による軸の無効化• 自動モードと手動コントロールの切り替え• アクティブ原点復帰の開始時。原点復帰動作が正常終了した後、軸原点復帰が再び使用できます。
• CPU の電源オフ -> 電源オンの後• CPU 再起動(RUN-STOP -> STOP-RUN)後軸の原点復帰軸を原点復帰するには、以下の手順を実行します。
1. 上記の必要条件をチェックします。
2. 必要な入力パラメータを値で初期化し、入力パラメータ「Execute」での立ち上がりエッジで原点復帰動作を開始します。
3. 出力パラメータ「Done」とテクノロジーオブジェクトタグ<軸名>.StatusBits.HomingDone
が値 TRUE を示す場合、原点復帰が完了しています。

下記も参照
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)

2736

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)

5.1.1.4

MC_Halt

MC_Halt: 軸を停止します。

説明「MC_Halt」モーションコントロール命令は、すべての動きを停止し、設定された減速で軸を停止状態にします。 停止位置は定義されていません。

必要条件• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 軸が有効であること。

応答の無効化
MC_Halt コマンドは、以下のモーションコントロールジョブによって中止できます。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202737

テクノロジー
5.1 モーションコントロール
新しい MC_Halt コマンドは、以下の有効なモーションコントロールジョブを中止します。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

パラメータ
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドの開始

Done

OUTPUT

BOOL

FALSE

TRUE

速度 0 に達しました。

Busy

OUTPUT

BOOL

FALSE

TRUE

コマンドを実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行時に、コマンドが別のコマンドに

ed
Error

よって中止されました。
OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。 エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

下記も参照
MC_Halt: ファンクションチャート (ページ 2740)
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)

2738

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202739

テクノロジー
5.1 モーションコントロール

MC_Halt: ファンクションチャート

ファンクションチャート$[LVB
([HB




)%

)%

0&B0RYH9HORFLW\

0&B+DOW$[LV,Q9HORFLW\([HFXWH%XV\
9HORFLW\ &RPPDQG$ERUWHG(UURU'LUHFWLRQ(UURU,'&XUUHQW(UURU,QIR,Q9HOB%XV\B$ERUWB$[LVB([HB

$[LV([HFXWH



'RQH
%XV\
&RPPDQG$ERUWHG(UURU(UURU,'(UURU,QIR'RQHB
%XV\B$ERUWB)%
([HB 
,Q9HOB W

%XV\B W$ERUWB 

W

W

)%


([HB 

'RQHB W

%XV\B W$ERUWB 

W

W


9HORFLW\$[LVB W

設定ウィンドウ[動的|全般]で、以下の値が設定されました。
• 加速: 10.0
• 減速: 5.0

2740

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール① 軸は、停止状態になるまで、MC_Halt コマンドによって制動します。 軸の停止は、「Done_2」によって通知されます。

② MC_Halt コマンドが軸を制動している途中でも、このコマンドは別のモーションコマンドによって中止されます。 この中止は、「Abort_2」によって通知されます。

下記も参照
MC_Halt: 軸を停止します。 (ページ 2737)

5.1.1.5

MC_MoveAbsolute

MC_MoveAbsolute: 軸の絶対位置決め

説明「MC_MoveAbsolute」モーションコントロール命令は、軸位置決めモーションを開始し、軸を絶対位置まで移動します。

必要条件• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 軸が有効であること。
• 軸が原点復帰していること。

応答の無効化
MC_MoveAbsolute コマンドは、以下のモーションコントロールコマンドによって中止できます。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2741

テクノロジー
5.1 モーションコントロール
新しい MC_MoveAbsolute コマンドは、以下の動作中のモーションコントロールコマンドを中止します。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

パラメータ
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドの開始

Position

INPUT

REAL

0.0

絶対ターゲット位置
制限値:-1.0e12 ≤ Position ≤ 1.0e12

Velocity

INPUT

REAL

10.0

軸の速度
設定された加速および減速、およびアプローチ
するターゲット位置のために、常にこの速度に達するとは限りません。
制限値:
開始/停止速度 ≤ Velocity ≤ 最大速度

Done

OUTPUT

BOOL

FALSE

TRUE

絶対ターゲット位置に到達しました

Busy

OUTPUT

BOOL

FALSE

TRUE

コマンドを実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行時に、コマンドが別のコマンドに

ed
Error

よって中止されました。
OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。 エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

2742

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

下記も参照
MC_MoveAbsolute: ファンクションチャート (ページ 2744)
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202743

テクノロジー
5.1 モーションコントロール

MC_MoveAbsolute: ファンクションチャート

ファンクションチャート)%)%
0&B0RYH$EVROXWH

0&B0RYH$EVROXWH$[LVB
([HB
$[LV([HFXWH
3RVLWLRQ
9HORFLW\'RQH%XV\&RPPDQG$ERUWHG(UURU(UURU,'(UURU,QIR'RQHB
%XV\B$ERUWB$[LVB
([HB
$[LV([HFXWH
3RVLWLRQ
9HORFLW\


)%
([HB
'RQHB
%XV\B$ERUWB)%([HB
'RQHB
%XV\B'RQH%XV\&RPPDQG$ERUWHG(UURU(UURU,'(UURU,QIR'RQHB
%XV\B







W




W



W


W




W





W


W






9HORFLW\$[LVB W

3RVLWLRQ$[LVB W

設定ウィンドウ[動的|全般]で、以下の値が設定されました。
• 加速: 10.0
• 減速: 10.0

2744

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール① 軸は、MC_MoveAbsolute コマンドによって絶対位置 1000.0 まで移動します。軸がターゲット位置に到達すると、「Done_1」によって通知されます。 「Done_1」 = TRUE の場合、ターゲット位置が 1500.0の別の MC_MoveAbsolute コマンドが開始されます。応答時間(たとえば、ユーザープログラムのサイ
クルタイムなど)のために、軸はすぐに停止状態になります(拡大された詳細図を参照)。軸が新しいターゲット位置に到達すると、「Done_2」によって通知されます。

② 動作中の MC_MoveAbsolute コマンドは、別の MC_MoveAbsolute コマンドによって中止されます。 この中止は、「Abort_1」によって通知されます。 この後、この軸は、新しい速度で新しいターゲット位置
1500.0 まで移動します。 新しいターゲット位置に到達すると、「Done_2」によって通知されます。

下記も参照
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)

5.1.1.6

MC_MoveRelative

MC_MoveRelative: 軸の相対位置決め

説明「MC_MoveRelative」モーションコントロール命令は、開始位置を基準にした位置決めモーションを開始します。

必要条件• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 軸が有効であること。

応答の無効化
MC_MoveRelative コマンドは、以下のモーションコントロールジョブによって中止できます。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202745

テクノロジー
5.1 モーションコントロール• MC_MoveVelocity コマンド
• MC_MoveJog コマンド
新しい MC_MoveRelative コマンドは、以下の有効なモーションコントロールジョブを中止します。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

パラメータ
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドの開始

Distance

INPUT

REAL

0.0

位置決め動作での移動距離
制限値:-1.0e12 ≤ Distance ≤ 1.0e12

Velocity

INPUT

REAL

10.0

軸の速度
設定された加速および減速、移動する距離のために、常にこの速度に達するとは限りません。
制限値:
開始/停止速度 ≤ Velocity ≤ 最大速度

Done

OUTPUT

BOOL

FALSE

TRUE

ターゲット位置に達しました。

Busy

OUTPUT

BOOL

FALSE

TRUE

コマンドを実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行時に、コマンドが別のコマンドに

ed
Error

よって中止されました。
OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。 エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

2746

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

下記も参照
MC_MoveRelative: ファンクションチャート (ページ 2748)
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202747

テクノロジー
5.1 モーションコントロール

MC_MoveRelative: ファンクションチャート

ファンクションチャート

)%

)%

0&B0RYH5HODWLYH

0&B0RYH5HODWLYH$[LV([HFXWH'LVWDQFH
9HORFLW\$[LVB
([HB



'RQH
%XV\
&RPPDQG$ERUWHG(UURU(UURU,'(UURU,QIR'RQHB
%XV\B$ERUWB$[LVB
([HB



$[LV
([HFXWH'LVWDQFH
9HORFLW\'RQH%XV\&RPPDQG$ERUWHG(UURU(UURU,'(UURU,QIR'RQHB
%XV\B

)%
([HB W%XV\B W'RQHB W$ERUWB 

)%
([HB

W


W




%XV\B
'RQHB

9HORFLW\$[LVB




W





2748

W






3RVLWLRQ$[LVB

W







W

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
設定ウィンドウ[動的|全般]で、以下の値が設定されました。
• 加速: 10.0
• 減速: 10.0

① 軸は、MC_MoveRelative コマンドによって、距離(「Distance」)1000.0 だけ移動します。軸がターゲット位置に到達すると、「Done_1」によって通知されます。 「Done_1」 = TRUE の場合、移動距離が 500.0の別の MC_MoveRelative コマンドが開始されます。応答時間(たとえば、ユーザープログラムのサイク
ルタイムなど)のために、軸はすぐに停止状態になります(拡大された詳細図を参照)。軸が新しいター
ゲット位置に到達すると、「Done_2」によって通知されます。

② 動作中の MC_MoveRelative コマンドは、別の MC_MoveRelative コマンドによって中止されます。 この
中止は、「Abort_1」によって通知されます。 この後、軸は、新しい速度で新しい距離(「Distance」) 500.0
だけ移動します。 新しいターゲット位置に到達すると、「Done_2」によって通知されます。

下記も参照
MC_MoveRelative: 軸の相対位置決め (ページ 2745)

5.1.1.7

MC_MoveVelocity

MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。

説明
モーションコントロール命令「MC_MoveVelocity」は、軸を常に指定された速度で移動し
ます。

必要条件
• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 軸が有効であること。

応答の無効化
MC_MoveVelocity は、以下のモーションコントロールコマンドによって中止できます。
• MC_Home コマンド Mode = 3• MC_Halt コマンド

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202749

テクノロジー
5.1 モーションコントロール• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド
この新しい MC_MoveVelocity コマンドは、以下の動作中のモーションコントロールコマ
ンドを中止します。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

パラメータ
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドの開始

Velocity

INPUT

REAL

10.0

軸モーションの速度指定
制限値:
開始/停止速度 ≤ |Velocity ≤ 最大速度
(Velocity = 0.0 は許可されます)

Direction

INPUT

INT

0

方向指定
0

回転方向は、パラメータ「Velocity」の値の符号に対応します。

1

正の回転方向(パラメータ「Velocity」の値の符号は無視されます)2

負の回転方向(パラメータ「Velocity」の値の符号は無視されます)2750

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Current

INPUT

BOOL

FALSE

現在速度の維持FALSE 「現在速度の維持」が無効になります。 パラメータ「Velocity」および「Direction」が使用されます。
TRUE 「現在速度の維持」が有効になります。 パラメータ「Velocity」および「Direction」は考慮されません。
軸が現在の速度でモーションを再開す
ると、「InVelocity」パラメータは値
TRUE を返します。

InVelocity

OUTPUT

BOOL

FALSE

TRUE

• "Current" = FALSE:
パラメータ「Velocity」で指定された速度に達しました。
• "Current" = TRUE:
軸は、開始時の現在速度で移動し
ます。

Busy

OUTPUT

BOOL

FALSE

TRUE

コマンドを実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行時に、コマンドが別のコマンドに

ed
Error

よって中止されました。
OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。 エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

速度がゼロに設定された場合の動作(Velocity = 0.0)
「Velocity」 = 0.0 の MC_MoveVelocity コマンド(MC_Halt コマンドと同様に)は、動作中のモーションコマンドを中止、設定された減速で軸を停止します。
軸が停止状態になると、出力パラメータ「InVelocity」が少なくとも 1 つのプログラムサ
イクルで TRUE を示します。
"Busy」は減速プロセス中に値 TRUE を示し、「InVelocity」とともに、FALSE に切り替わります。 パラメータ「Execute」 = TRUE を設定すると、「InVelocity」および「Busy」がラッチされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2751

テクノロジー
5.1 モーションコントロール「MC_MoveVelocity」コマンドを開始すると、テクノロジーオブジェクトで、ステータス
ビット「SpeedCommand」が設定されます。 ステータスビット「ConstantVelocity」は、
軸停止時に設定されます。 両方のビットは、新しいモーションコマンドが開始されるという新しい状況に合わせて調整されます。

下記も参照
MC_MoveVelocity: ファンクションチャート (ページ 2753)
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)2752

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

MC_MoveVelocity: ファンクションチャート

ファンクションチャート

)%

)%

0&B0RYH9HORFLW\

0&B0RYH9HORFLW\$[LV,Q9HORFLW\([HFXWH%XV\
9HORFLW\ &RPPDQG$ERUWHG(UURU'LUHFWLRQ(UURU,'&XUUHQW(UURU,QIR$[LVB
([HB




,Q9HOB%XV\B$ERUWB$[LVB
([HB




$[LV
,Q9HORFLW\([HFXWH%XV\
9HORFLW\ &RPPDQG$ERUWHG(UURU'LUHFWLRQ(UURU,'&XUUHQW(UURU,QIR,Q9HOB%XV\B

)%
([HB W%XV\B 
,Q9HOB W
W$ERUWB 

W

)%


([HB 

%XV\B

,Q9HOB 

W
W
W


9HORFLW\ $[LVB W

設定ウィンドウ[動的|全般]で、以下の値が設定されました。
• 加速: 10.0
• 減速: 10.0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202753

テクノロジー
5.1 モーションコントロール① 動作中の MC_MoveVelocity コマンドは、「InVel_1」を介して、コマンドのターゲット速度に達したことを通知します。 この後、このコマンドは、別の MC_MoveVelocity コマンドによって中止されます。
この中止は、「Abort_1」によって通知されます。 新しいターゲット速度 15.0 に達すると、「InVel_2」
によって通知されます。 この後、軸は、新しい一定の速度で動作し続けます。

② 動作中の MC_MoveVelocity コマンドは、そのターゲット速度に達する前に、別の MC_MoveVelocity コ
マンドによって中止されます。 この中止は、「Abort_1」によって通知されます。 新しいターゲット速度
15.0 に達すると、「InVel_2」によって通知されます。 この後、軸は、新しい一定の速度で動作し続け
ます。

下記も参照
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)

5.1.1.8

MC_MoveJog

MC_MoveJog: ジョギングモードでの軸の移動

説明
モーションコントロール命令「MC_MoveJog」は、ジョグモードで、指定された一定の速度で軸を移動します。 このモーションコントロール命令は、テストやコミッショニングなどのために使用します。

必要条件• テクノロジーオブジェクト「軸」が正しく設定済みであること。
• 軸が有効であること。

応答の無効化
MC_MoveJog コマンドは、以下のモーションコントロールコマンドによって中止できます。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド

2754

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール• MC_MoveVelocity コマンド
• MC_MoveJog コマンド
この新しい MC_MoveJog コマンドは、以下の動作中のモーションコントロールコマンドを中止します。
• MC_Home コマンド Mode = 3• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド

パラメータ
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

JogForward

INPUT

BOOL

FALSE

このパラメータが TRUE である限り、軸は、パ
ラメータ「Velocity」で指定された速度で、正の方向に移動します。

JogBackward

INPUT

BOOL

FALSE

このパラメータが TRUE である限り、軸は、パ
ラメータ「Velocity」で指定された速度で、負の方向に移動します。

両方のパラメータが同時に TRUE の場合、軸は、設定された減速で停止します。 エラーは、パラメータ「Error」、「ErrorID」、および「ErrorInfo」に示されます。
Velocity

INPUT

REAL

10.0

あらかじめ設定されたジョグモードの速度
制限値、命令バージョン V1.0:
開始/停止速度 ≤ |Velocity ≤ 最大速度
制限範囲、命令バージョン V2.0:
開始/停止速度 ≤ 速度 ≤ 最大速度

InVelocity

OUTPUT

BOOL

FALSE

TRUE

パラメータ「Velocity」で指定された速度に達しました。

Busy

OUTPUTBOOL

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

FALSE

TRUE

コマンドを実行中です。

2755

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

CommandAbort OUTPUT

データタイプ

デフォルト
値

説明

BOOL

FALSE

TRUE

ed
Error

実行時に、コマンドが別のコマンドによって中止されました。

OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。 エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

下記も参照
MC_MoveJog: ファンクションチャート (ページ 2757)
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)2756

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

MC_MoveJog: ファンクションチャート

ファンクションチャート)%
0&B0RYH-RJ$[LVB
-RJB)
-RJB%


$[LV
,Q9HORFLW\-RJ)RUZDUG%XV\-RJ%DFNZDUG &RPPDQG$ERUWHG(UURU
9HORFLW\(UURU,'(UURU,QIR,Q9HOB%XV\B





)%
-RJB)




W

-RJB%




W

,Q9HOB%XV\B






W
W


9HORFLW\$[LVB

W 

設定ウィンドウ[動的|全般]で、以下の値が設定されました。
• 加速: 10.0
• 減速: 5.0

① 軸は、「Jog_F」によって、ジョグモードで正の方向に移動されます。 ターゲット速度 50.0 に達すると、「InVelo_1」によって通知されます。 軸は、 Jog_F がリセットされた後、再び停止状態まで減速されます。

② 軸は、「Jog_B」によって、ジョグモードで負の方向に移動されます。 ターゲット速度 50.0 に達すると、「InVelo_1」によって通知されます。 軸は、 Jog_B がリセットされた後、再び停止状態まで減速されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202757

テクノロジー
5.1 モーションコントロール

下記も参照
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)

5.1.1.9

MC_CommandTable

MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在)説明
モーションコントロール命令「MC_CommandTable」は、複数の個別の軸コントロールコ
マンドを 1 つの移動シーケンスに結合します。

必要条件• テクノロジーオブジェクト「軸」がバージョン V2.0 に追加され、正しく設定されていること。
• テクノロジーオブジェクト「コマンドテーブル」が追加され、正しく設定済みであること。
• 軸が有効であること。

応答の無効化
MC_CommandTable コマンドは、以下のモーションコントロールコマンドによって中止できます。
• MC_Home コマンド (Mode = 3)
• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド
• MC_CommandTable コマンド

2758

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
この新しい MC_CommandTable コマンドは、以下の動作中のモーションコントロールコ
マンドを中止します。
• MC_Home コマンド (Mode = 3)
• MC_Halt コマンド
• MC_MoveAbsolute コマンド
• MC_MoveRelative コマンド
• MC_MoveVelocity コマンド
• MC_MoveJog コマンド
• MC_CommandTable コマンド
有効なモーションコントロールコマンドは、最初の「Positioning Relative」、「Positioning Absolute」、「Velocity set point」、または「Halt」コマンドの開始によってキ
ャンセルされます。

パラメータ
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

CommandT

INPUT

TO_Command -able

コマンドテーブルテクノロジーオブジェクト

Table_1

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドテーブルの開始

StartStep

INPUT

INT

1

コマンドテーブルの実行を開始するステップを定
義します
制限値:
1 ≤ StartStep ≤ EndStep

EndStep

INPUT

INT

32

コマンドテーブルの実行を行う最後のステップを定義します。
制限値:
StartStep ≤ EndStep ≤ 32

Done

OUTPUT

BOOL

FALSE

TRUE

コマンドテーブルが正常に実行されました

Busy

OUTPUT

BOOL

FALSE

TRUE

コマンドテーブルが実行中です。

CommandA OUTPUT

BOOL

FALSE

TRUE

コマンドテーブルが別のコマンドによって

bortedTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

キャンセルされました。

2759

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Error

OUTPUT

BOOL

FALSE

TRUE

コマンドテーブルの実行時にエラーが発生しました。 エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

CurrentStep OUTPUT

INT

0

コマンドテーブルのステップが現在実行中

StepCode

WORD

16#0000

現在実行中のステップのユーザー定義の数値/ビッ

OUTPUT

トパターン

下記も参照
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2761)

2760

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

5.1.1.10

MC_ChangeDynamic

MC_ChangeDynamic: 軸の動的設定の変更(テクノロジーオブジェクト「軸」 V2.0 現在)

説明
モーションコントロール命令「MC_ChangeDynamic」を使用して、軸の以下の設定を変更できます。
• ランプアップタイム(加速)値の変更• ランプダウンタイム(減速)値の変更• 緊急停止ランプダウンタイム(緊急停止減速)値の変更• スムージングタイム(ジャーク)値の変更
変更の有効性は、タグの説明に示されます。

必要条件• テクノロジーオブジェクト「軸」がバージョン V2.0 に追加されていること。
• テクノロジーオブジェクト「軸」が正しく設定済みであること。

応答の無効化
MC_ChangeDynamic コマンドは、他のモーションコントロールコマンドで中止することはできません。
新しい MC_ChangeDynamic コマンドは、動作中のモーションコントロールコマンドを中止することはしません。

パラメータ
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

Axis

INPUT

TO_AXIS_1-

軸テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのコマンドの開始

ChangeRa INPUT

BOOL

FALSE

TRUE

mpUp

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

入力パラメータ「RampUpTime」に従ったランプアップタイムの変更

2761

テクノロジー
5.1 モーションコントロール
パラメー
タ

宣言

RampUpTi INPUT

データタイプ

デフォルト
値

説明

REAL

5.00

軸を停止から設定された最大速度まで、ジャークリme

ミットなしで加速する時間(秒単位)。
この変更は、タグ<軸名>.
Config.DynamicDefaults.Acceleration に影響を与えます。変更の有効性は、このタグの説明に表示されます。

ChangeRa INPUT

BOOL

FALSE

TRUE

mpDown

入力パラメータ「RampDownTime」に従ったランプダウンタイムの変更

RampDow INPUT

REAL

5.00

nTime

軸を設定された最大速度から停止まで、ジャークリ
ミッタなしで減速する時間(秒単位)。
この変更は、タグ<軸名>.
Config.DynamicDefaults.Deceleration に影響を与えます。変更の有効性は、このタグの説明に表示されます。

ChangeE

INPUT

BOOL

FALSE

TRUE

mergency

入力パラメータ「EmergencyRampTime」に従った緊急停止ランプダウンタイムの変更

Emergenc INPUT

REAL

2.00

軸を設定された最大速度から停止まで、緊急停止モ

yRampTi

ードで、ジャークリミッタなしで減速する時間(秒)。

me

この変更は、タグ<軸名>.
Config.DynamicDefaults.EmergencyDeceleration に影響を与えます。変更の有効性は、このタグの説明に表示されます。

ChangeJer INPUT

BOOL

FALSE

TRUE

kTime
JerkTime

入力パラメータ「JerkTime」に従ったスムー
ジングタイムの変更

INPUT

REAL

0.25

軸の加速および減速ランプで使用されるスムージン
グタイム(秒単位)
この変更は、タグ<軸名>.
Config.DynamicDefaults.Jerk に影響を与えます。変
更の有効性は、このタグの説明に表示されます。

Done

OUTPUT

BOOL

FALSE

TRUE

変更された値は、テクノロジーデータブロッ
クに書き込み済みです。 タグの説明には、変更が有効になる時点が表示されます。

2762

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

Error

OUTPUT

BOOL

FALSE

TRUE

コマンドの実行時にエラーが発生しました。
エラーの原因は、パラメータ「ErrorID」および「ErrorInfo」で検出することができます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

ErrorInfoOUTPUT

WORD

16#0000

パラメータ「ErrorID」のエラー情報 ID

注記
入力パラメータ「RampUpTime」、「RampDownTime」、「EmergencyRampTime」、および「JerkTime」では、結果パラメータ: 「加速」、「減速」、「緊急停止」、および「ジャーク」の許容制限値を超える値を入力できます。
[軸テクノロジーオブジェクト|テクノロジーオブジェクトの設定|動的]の等式と制限値に注
意して、入力する値が有効な範囲内であることを確認してください。

下記も参照
MC_Power: 軸の有効化、無効化 (ページ 2725)
MC_Reset: エラーの確認応答 (ページ 2731)
MC_Home: 軸を原点復帰させ、ホーム位置を設定します。 (ページ 2733)
MC_Halt: 軸を停止します。 (ページ 2737)
MC_MoveAbsolute: 軸の絶対位置決め (ページ 2741)
MC_MoveRelative: 軸の相対位置決め (ページ 2745)
MC_MoveVelocity: 軸をあらかじめ設定された回転速度で移動します。 (ページ 2749)
MC_MoveJog: ジョギングモードでの軸の移動 (ページ 2754)
MC_CommandTable: 移動シーケンスとして軸ジョブを実行(テクノロジーオブジェクト「軸」 V2.0 現在) (ページ 2758)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202763

テクノロジー
5.1 モーションコントロール

5.1.2

S7-1500 モーションコントロール

5.1.2.1

MC_Power

MC_Power: テクノロジーオブジェクトの有効化/無効化

説明
モーションコントロール命令「MC_Power」は、テクノロジーオブジェクトを有効/無効にするために使用されます。

適用対象• 位置決め軸• 速度制御された軸• 外部エンコーダ

必要条件• テクノロジーオブジェクトが正しく設定済みであること。

応答の無効化• MC_Power ジョブは、他のすべてのモーションコントロールジョブで中止することはできません。
• パラメータが Enable = TRUE の MC_Power ジョブは、テクノロジーオブジェクトを有効にしますが、それによって、他のすべてのモーションコントロール命令を中止することはしません。
• テクノロジーオブジェクトの無効化(入力パラメータ「Enable」 = FALSE )は、選択した「StopMode」に従って、関連するテクノロジーオブジェクトに対するすべてのモーションコントロールジョブを中止します。 ユーザーは、このプロセスを中止できません。

2764

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

パラメータ
次の表に、「MC_POWER」モーションコントロール命令のパラメータを示します。
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

Axis

InOut

TO_Axis-テクノロジーオブジェクト

Enable

INPUT

BOOL

FALSE

TRUE

このテクノロジーオブジェクトは有効です。

FALSE このテクノロジーオブジェクトは無効です。
このテクノロジーオブジェクトに対するすべての現在のジョブが、設定された「StopMode」に従って中止されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2765

テクノロジー
5.1 モーションコントロール
パラメー
タ

宣言

StopMode INPUT

データタイプ

デフォルト
値

説明

INT

0

外部エンコーダテクノロジーオブジェクトには適用できません。
Enable パラメータの立ち下がりエッジでテクノロジ
ロジーオブジェクトを無効にすると、軸は選択した
StopMode に従って減速します。
0

緊急停止
このテクノロジーオブジェクトを無効にすると、軸は、[テクノロジーオブジェクト|設定|
拡張パラメータ|緊急停止ランプ]で設定された緊急停止減速を使用して、ジャーク制限なしで停止状態まで制動します。 この場合、有効化は解除されます。
(<TO>.DynamicDefaults.
EmergencyDeceleration)

1

直ちに停止
テクノロジーオブジェクトを無効にすると、セットポイント 0 が出力され、有効化が解除されます。 軸はドライブでの設定に応じて制動し、停止します。

2

最大動的値による停止
このテクノロジーオブジェクトを無効にすると、軸は、[テクノロジーオブジェクト|設定|
拡張パラメータ|動的な限界値]で設定された
最大減速を使用して、停止状態まで制動します。 同時に、設定された最大ジャークも考慮されます。 この場合、有効化は解除されます。
(<TO>.DynamicLimits.MaxDeceleration;<TO>.DynamicLimits.MaxJerk)

2766

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

StatusOUTPUT

BOOL

FALSE

テクノロジーオブジェクトの有効ステータス
FALSE [無効]‑ 位置決め軸または速度制御された軸では、モーションコントロールジョブはすべて承認されません。
‑ 速度コントロールおよび位置コントロール
が動作中ではありません。
‑ テクノロジーオブジェクトの実際の値の有効性チェックは行われません。
TRUE

有効‑ 有効な位置決め軸または速度制御された軸では、モーションコントロールジョブが承認されます。
‑ 速度コントロールおよび位置コントロール
が動作中です。
- テクノロジーオブジェクトの実際の値が有
効です。

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

Error

OUTPUT

BOOL

FALSE

TRUE

モーションコントロール命令 MC_Power
で、エラーが発生しました。 このエラーの原
因は、「ErrorID」パラメータで検出できます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

テクノロジーオブジェクトの有効化
テクノロジーオブジェクトを有効にするには、その Enable パラメータを TRUE に設定します。
この Status パラメータが値 TRUE を示す場合は、このテクノロジーオブジェクトは有効です。
軸がモーション中(現在速度が存在)にこのテクノロジーオブジェクトを有効にすると、軸は、[テクノロジーオブジェクト|設定|拡張パラメータ|動的な限界値](<TO>.DynamicLimits.MaxDeceleration)で設定された最大減速を使用して、セットポイン

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2767

テクノロジー
5.1 モーションコントロール
ト 0 まで制動します。 この制動ランプは、モーションコントロールジョブによって無効にできます。
注記
テクノロジーアラームの確認応答後の自動有効化
テクノロジーオブジェクトがテクノロジーアラームによって無効になると、アラームの原因が除去されてアラームが確認応答された後に、このオブジェクトは自動的に再び有効になります。 このためには、このプロセスの間、Enable パラメータが値 TRUE を保持していることが必要です。

テクノロジーオブジェクトの無効化
テクノロジーオブジェクトを無効にするには、その Enable パラメータを FALSE に設定します。
軸がモーション中は、選択した「StopMode」に従って、軸が停止状態まで制動します。
「Busy」および「Status」パラメータが値 FALSE を示す場合は、テクノロジーオブジェク
トの無効化が完了済みです。

PROFIdrive によるドライブ接続
ドライブを PROFIdrive と接続すると、セットポイント、有効化、およびドライブステー
タスが PROFIdrive フレームを使用して転送されます。
• テクノロジーオブジェクトおよびドライブの有効化
テクノロジーオブジェクトの有効化には、パラメータ「"Enable" = TRUE」が使用されます。 ドライブは、PROFIdrive 標準に従って有効になります。
タグ<TO>.StatusDrive.InOperation が値 TRUE を示す場合、ドライブがセットポイントを実行する準備が完了しています。 "Status"パラメータが値 TRUE に設定されます。
• テクノロジーオブジェクトおよびドライブの無効化
パラメータ"Enable" = FALSE の場合、"Status"パラメータが値 FALSE に設定され、軸は選択した「StopMode」に従って制動します。 ドライブは、PROFIdrive 標準に従って無効になります。

2768

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

アナログドライブ接続
セットポイントは、アナログ出力を介して出力されます。 オプションで、デジタル出力(<TO>.Actor.Interface.EnableDriveOutput)を介して、有効化信号とデジタル入力(<TO>.Actor.Interface.DriveReadyInput を介して準備完了信号を設定できます。
• テクノロジーオブジェクトおよびドライブの有効化
パラメータ"Enable" = TRUE の場合、有効化出力(「Enable drive output」)が設定されます。
ドライブが、準備完了入力(「Drive ready input」)を介して準備完了信号を返すと、"Status"パラメータと、テクノロジーオブジェクトの<TO>.StatusDrive.InOperation タグ
が TRUE に設定され、セットポイントがアナログ出力で切り替えられます。
• テクノロジーオブジェクトおよびドライブの無効化
パラメータ"Enable" = FALSE の場合、"Status"パラメータが値 FALSE に設定され、軸は選択した「StopMode」に従って制動します。 セットポイント 0 に達すると、有効化出力が FALSE に設定されます。

追加情報
テクノロジーオブジェクトおよびドライブの有効化および無効化に関する追加情報は、付録「MC_Power ファンクションチャートを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2769

テクノロジー
5.1 モーションコントロール

MC_Power: ファンクションチャート

ファンションチャート: テクノロジーオブジェクトの有効化とアラーム応答の例

72B
(QDEOHB$$

0&B3RZHU

0&B0RYH9HORFLW\$[LV(QDEOH
6WRS0RGH

6WDWXV%XV\(UURU(UURU,'

6WDWXVB%XV\B
(UURUB


)%

)%

72B
([HB









$[LV
,Q9HORFLW\([HFXWH%XV\
9HORFLW\ &RPPDQG$ERUWHG(UURU$FFHOHUDWLRQ'HFHOHUDWLRQ(UURU,'-HUN'LUHFWLRQ&XUUHQW(5525

(QDEOHBW%XV\BW

6WDWXVBW(UURUB




W

([HB




W

72B
$FWXDO9HORFLW\




W

テクノロジーオブジェクトは、「Enable_1 = TRUE」で有効になります。 有効化の成功は、
時刻①に、「Status_1」から読み取ることができます。 この後、軸は「MC_MoveVelocity」
ジョブによって移動します(A2)。 軸の速度プロファイルは、「Velocity Axis_1」から読み取ることができます。
時刻②に、テクノロジーオブジェクトのエラーが発生し、その結果、テクノロジーオブジ
ェクトが無効になります(アラーム応答: 有効化の解除)。 軸はドライブでの設定に応じて制動し、停止します。 テクノロジーオブジェクトが無効になると、Status_1 がリセットされます。 軸は「Enable_1」 = FALSE を使用して無効にならなかったため、選択した

2770

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール「StopMode」は適用されません。 エラーの原因を訂正し、時刻③にアラームに確認応答します。
「Enable_1」はまだ設定されているため、テクノロジーオブジェクトが再び有効になります。 有効化の成功は、「Status_1」から読み取ることができます。 次に、テクノロジーオ
ブジェクトは、「Enable_1」 = FALSE で無効になります。

5.1.2.2

MC_Home

MC_Home: テクノロジーオブジェクトの原点復帰と、原点復帰位置の設定

説明
モーションコントロール命令「MC_Home」を使用して、テクノロジーオブジェクトの位置と機械の位置の間の関係を作成します。 同時に、テクノロジーオブジェクトの位置の値
が、原点復帰マークに割り当てられます。 この原点復帰マークは、既知の機械の位置を表わします。
原点復帰プロセスは、「Mode」パラメータで選択したモードと、[テクノロジーオブジェ
クト|設定|拡張パラメータ|原点復帰]での設定に従って、行われます。

適用対象• 位置決め軸• 外部エンコーダ
次の表は、テクノロジーオブジェクトごとに、可能であるモードを示します。
動作モード

インクリメンタルエ アブソリュートエン 外部インクリメンタ 外部アブソリュート
ンコーダ付き位置決 コーダ付き位置決め ルエンコーダ
エンコーダ
め軸
軸

アクティブ原点復

X

-

-

-

X

-

X

-

X

X

X

X

帰(Mode = 4、5)
パッシブ原点復帰(Mode = 2、3、8)
位置決め値の設定("Mode" = 0)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2771

テクノロジー
5.1 モーションコントロール
動作モード

インクリメンタルエ アブソリュートエン 外部インクリメンタ 外部アブソリュート
ンコーダ付き位置決 コーダ付き位置決め ルエンコーダ
エンコーダ
め軸
軸

現在値の相対シフ

X

X

X

X

-

X

-

X

ト
("Mode" = 1)
アブソリュートエ
ンコーダの原点復帰("Mode" = 6, 7)

必要条件• テクノロジーオブジェクトが正しく設定済みであること。
• "Mode」 = 2、3、4、5、8
テクノロジーオブジェクトが有効であること。
• "Mode」 = 0、1、2、6、7
エンコーダの値が有効であること(<TO>.StatusSensor[n].State = 2)。

応答の無効化• パッシブ原点復帰用の MC_Home ジョブは、以下によって中止されます。
– 「MC_Power.Enable」 = FALSE によるテクノロジーオブジェクトの無効化– "MC_Home」ジョブ(パラメータ「Mode」 = 4、5、9)• パッシブ原点復帰用の「MC_Home」ジョブは、他のすべてのモーションコントロール
ジョブを中止しません。

2772

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール• アクティブ原点復帰用の「MC_Home」ジョブは、以下によって中止されます。
– 「MC_Power.Enable」 = FALSE のテクノロジーオブジェクトの無効化– "MC_Home」ジョブ 「Mode」 = 4、5– "MC_Halt」ジョブ– "MC_MoveAbsolute」ジョブ– "MC_MoveRelative」ジョブ– "MC_MoveVelocity」ジョブ– "MC_MoveJog」ジョブ• アクティブ原点復帰用の「MC_Home」ジョブは、以下の動作中のモーションコントロ
ールジョブを中止します。
– "MC_Home」ジョブ(パラメータ「Mode」 = 2、3、4、5)– "MC_Halt」ジョブ– "MC_MoveAbsolute」ジョブ– "MC_MoveRelative」ジョブ– "MC_MoveVelocity」ジョブ– "MC_MoveJog」ジョブ

パラメータ
次の表に、「MC_Home」モーションコントロール命令のパラメータを示します。
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

InOut

TO_Axis-テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのジョブの開始

Position

INPUT

LREAL

0.0

選択した「Mode」モードに従って、指定した値が使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2773

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Mode

INPUT

INT

0

動作モード
0

直接原点復帰(絶対)テクノロジーオブジェクトの現在の位置として、パラメータ「Position」の値が設定されます。

1

直接原点復帰(相対)テクノロジーオブジェクトの現在の位置が、パラメータ「Position」の値だ
けシフトされます。

2

パッシブ原点復帰
原点復帰マークが検出されると、現在値が「Position」パラメータの値に設定されます。

3

パッシブ原点復帰「Position」パラメータは効果を持ち(ません)
原点復帰マークが検出されると、現在値として、[テクノロジーオブジェク
ト|設定|拡張パラメータ|原点復帰|パッシブ原点復帰]で設定された原点復帰位置が設定されます。
(<TO>.Homing.HomePosition)

4

アクティブ原点復帰
TO 位置決め軸は、設定に従って、原点復帰移動を実行します。
この移動が完了した後、軸は、「Position」パラメータの値に位置決め
されます。

5

アクティブ原点復帰「Position」パラメータは効果を持ち(ません)
TO 位置決め軸は、設定に従って、原点復帰移動を実行します。
この移動が完了した後、軸は、[テクノ2774TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト値

説明
ロジーオブジェクト|設定|拡張パラメータ|原点復帰|アクティブ原点復帰]で設定された原点復帰位置に位置決めされます。
(<TO>.Homing.HomePosition)6

絶対値調整(相対)
現在の位置が、パラメータ「Position」の値に設定されます。
計算された絶対値オフセットが、CPUに保持型保存されます。
(<TO>.StatusSensor[n].
AbsEncoderOffset)7

絶対値調整(絶対)現在の位置が、パラメータ「Position」の値に設定されます。
計算された絶対値オフセットが、CPUに保持型保存されます。
(<TO>.StatusSensor[n].
AbsEncoderOffset)

8

パッシブ原点復帰(リセットなし)
ファンクションは、このファンクショ
ンを有効にしたとき、「原点復帰済み」ステータスがリセットされないことを除いて、モード 2 と同様です。

9

パッシブ原点復帰のキャンセル
パッシブ原点復帰用の実行中のジョブが中止されます。

Done

OUTPUT

BOOL

FALSE

TRUE

ジョブ完了

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行中に、ジョブが別のジョブによっed

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020て中止されました。

2775

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Error

OUTPUT

BOOL

FALSE

TRUE

ジョブの実行中にエラーが発生しました。 このジョブは拒否されます。 この
エラーの原因は、「ErrorID」パラメー
タで検出できます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID「原点復帰済み」ステータスのリセット
テクノロジーオブジェクトの「原点復帰済み」ステータスは以下の条件でリセットされます(<TO>.StatusWord.HomingDone)。
• 現在の増分値を持つテクノロジーオブジェクト:– 「MC_Home」ジョブの「Mode」 = 2、3、4、5 での開始
(原点復帰動作の正常終了後、「原点復帰済み」ステータスはリセットされます。)– エンコーダシステムのエラー、またはエンコーダ障害– テクノロジーオブジェクトの再起動– CPU の電源オフ -> 電源オンの後– メモリリセット– エンコーダ設定の変更• 絶対現在値を持つテクノロジーオブジェクト:– CPU 工場設定の復元– エンコーダ設定の変更– CPU の交換

「Mode」 = 1、8 でのテクノロジーオブジェクトの原点復帰
テクノロジーオブジェクトを原点復帰するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. 「Mode」パラメータで、必要な原点復帰ファンクションを指定します。
3. 必要なパラメータを値で初期化し、「Execute」パラメータでの立ち上がりエッジで原点復帰動作を開始します。

「Done」パラメータが値 TRUE を示す場合、「MC_Home」ジョブが、選択した「Mode」に従って完了済みです。 テクノロジーオブジェクトの「原点復帰済み」ステータスは、[テクノロジーオブジェクト|診断|ステータスおよびエラービット|モーションステータス|原
点復帰済み]で示されます(<TO>.StatusWord.HomingDone)。

2776

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール「Mode」 = 9 によるパッシブ原点復帰プロセスの終了「Mode」 = 9 の場合、テクノロジーオブジェクトは原点復帰されません。 実行中のパッシブ
原点復帰用「MC_Home」ジョブ(「Mode」 = 2、3、8)が別の「MC_Home」ジョブ「Mode」(= 9)によってオーバーライドされると、この実行中のジョブはパラメータ「CommandAborted」 = TRUE で終了します。 オーバーライドジョブ(「Mode」 = 9)は、パ
ラメータ「Done」 = TRUE で実行が成功したことを通知します。

追加情報
個々のステータスビットの評価用オプションいついては、「StatusWord、ErrorWord、および WarningWord の評価」セクションを参照してください。

5.1.2.3

MC_MoveJog

MC_MoveJog: ジョグモードでの軸の移動

説明
モーションコントロール命令「MC_MoveJog」では、ジョグモードで軸を移動できます。
移動中の動的動作は、パラメータ「Velocity」、「Jerk」、「Acceleration」、および「Deceleration」で定義されます。
• 位置決め軸速度は、「Velocity」パラメータで指定されます。
• 速度制御された軸:速度は、「Velocity」パラメータで指定されます。

適用対象• 位置決め軸• 速度制御された軸必要条件• テクノロジーオブジェクトが正しく設定済みであること。
• このテクノロジーオブジェクトが有効であること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2777

テクノロジー
5.1 モーションコントロール

応答の無効化「MC_MoveJog」ジョブは以下によって中止されます。
• 「MC_Power.Enable」 = FALSE による軸の無効化• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ「MC_MoveJog」ジョブを開始すると、以下の動作中のモーションコントロールジョブが中止されます。
• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ

パラメータ
次の表に、「MC_MoveJog」モーションコントロール命令のパラメータを示します。
パラメータ

宣言

データタイプ

デフォルト
値

Axis

InOut

TO_SpeedAxis -テクノロジーオブジェクト

JogForward

INPUT

BOOL

このパラメータが TRUE である限り、軸は、パ

FALSE

説明

ラメータ「Velocity」で指定された速度で、正の方向に移動します。
JogBackward

INPUT

BOOL

FALSE

このパラメータが TRUE である限り、軸は、パ
ラメータ「Velocity」で指定された速度で、負の方向に移動します。

2778

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Velocity

INPUT

LREAL

100.0

セットポイント速度/モーションプロセス用のセットポイント速度値 > 0.0: 指定された値が使用されます。
値 < 0.0: 指定された値が使用されます。
("Velocity」 = 0.0 は許可されます)

Acceleration

INPUT

LREAL

-1.0

加速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された加速が使用されます。
(<TO>.DynamicDefaults.Acceleration)

Deceleration

INPUT

LREAL

-1.0

減速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された減速が使用されます。
(<TO>.DynamicDefaults.Deceleration)

Jerk

INPUT

LREAL

-1.0

ジャーク
値 > 0.0: 固定加速度プロファイル; 指定されたジャークが使用されます。
値 = 0.0: 台形速度プロファイル
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定されたジャークが使用されます。
(<TO>.DynamicDefaults.Jerk)

InVelocity

OUTPUT

BOOL

FALSE

TRUE

セットポイント速度/セットポイント速さに達しました。今後この速度が保持
されます。

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行中に、ジョブが別のジョブによっed

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020て中止されました。

2779

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Error

OUTPUT

BOOL

FALSE

TRUE

ジョブの実行中にエラーが発生しました。 このジョブは拒否されます。 この
エラーの原因は、「ErrorID」パラメー
タで検出できます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

セットポイント速度/セットポイント速さが 0 の場合の動作(「Velocity」 = 0.0)
「Velocity」 = 0.0 の「MC_MoveJog」ジョブは、設定された減速で軸を停止します。 セットポイント速度/セットポイント速さ 0 に達すると、パラメータ「InVelocity」が値 TRUE を示します。
[テクノロジーオブジェクト|診断|ステータスおよびエラービット|モーションステータス]で、「一定速度」と「停止」が表示されます(<TO>.StatusWord.ConstantVelocity;<TO>.StatusWord.Standstill)。

ジョグモードでの軸の移動
ジョグモードで軸を移動するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. 軸を「JogForward」で正の方向に移動するか、「JogBackward」で負の方向に移動します。

現在のモーション状態は、「Busy」、「InVelocity」、および「Error」に示されます。
注記
オーバーライドを変更するときの動作
速度/速さが、一定のモーション中に、オーバーライド(<TO>.Override.Velocity)の変更によって影響を受けると、「InVelocity」パラメータが加速または減速中にリセットされます。
新しく計算された速度に達すると(「Velocity」 ×「Override」 %)、「InVelocity」が再び設定
されます。

追加情報
個々のステータスビットの評価用オプションについては、「StatusWord、ErrorWord、および WarningWord の評価」セクションを参照してください。

2780

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

MC_MoveJog: ファンクションチャート

ファンションチャート: ジョグモードでの軸の移動$
0&B0RYH-RJ
72B
-RJB)
-RJB%
9HOB,QSXW




$[LV
,Q9HORFLW\-RJ)RUZDUG%XV\-RJ%DFNZDUG &RPPDQG$ERUWHG(UURU
9HORFLW\$FFHOHUDWLRQ(UURU,''HFHOHUDWLRQ
-HUN





,Q9HO
%XV\
(UURU



-RJB)




W

-RJB%




W

,Q9HO




W

%XV\




W

(UURU




W


9HOB,QSXW


W



72B9HORFLW\ 

W



軸は、「Jog_B」によって、ジョグモードで負の方向に移動します。 セットポイント速
度-50.0 に達すると、このことが「InVel」 = TRUE を介して通知されます。 「Jog_B」がリセットされた後、軸は制動し、停止します。 この後、「Jog_F」によって、正の方向に移動します。 セットポイント速度 50.0 に達すると、このことが「InVel」 = TRUE を介して通知されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2781

テクノロジー
5.1 モーションコントロール
時刻①に「Jog_F」が設定されると、「Vel_Input」によって、セットポイント速度が 100.0に変更されます。 その代わりに、速度オーバーライドによって、セットポイント速度を変更することもできます。 "InVel」がリセットされます。 軸が加速中です。 新しいセット
ポイント速度 100.0 に達すると、このことが「InVel」 = TRUE を介して通知されます。
「Jog_F」が設定されると、「Jog_B」が時刻②に同様に設定されます。 「Jog_F」と「Jog_B」の両方が設定されると、軸は適用可能な最後の減速で制動します。 エラーは
「Error」によって示され、エラー 16#8007 の「ErrorID」(不正な方向指定)が出力されます。
このエラーは、2 つの入力「Jog_F」および「Jog_B」をリセットすることによって解決されます。
制動ランプ中の時刻③に、「Jog_F」が設定されます。 軸は、最後に設定された速度まで加速されます。 セットポイント速度 100.0 に達すると、このことが「InVel」 = TRUE を介して通知されます。

5.1.2.4

MC_MoveVelocity

MC_MoveVelocity: 指定した速さによる軸の移動

説明
モーションコントロール命令「MC_MoveVelocity」では、一定の速度で軸を移動できます。
移動中の動的動作は、パラメータ「Velocity」、「Jerk」、「Acceleration」、および「Deceleration」で定義されます。
• 位置決め軸速度は、「Velocity」パラメータで指定されます。
• 速度制御された軸:速度は、「Velocity」パラメータで指定されます。

適用対象• 位置決め軸• 速度制御された軸2782

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

必要条件• テクノロジーオブジェクトが正しく設定済みであること。
• このテクノロジーオブジェクトが有効であること。

応答の無効化「MC_MoveVelocity」は以下によって中止されます。
• 「MC_Power.Enable」 = FALSE による軸の無効化• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ「MC_MoveVelocity」ジョブを開始すると、以下の動作中のモーションコントロールジョブが中止されます。
• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ

パラメータ
次の表に、「MC_MoveVelocity」モーションコントロール命令のパラメータを示します。
パラメータ

宣言

データタイプ

Axis

InOut

TO_SpeedAxis -テクノロジーオブジェクト

Execute

INPUT

BOOL

立ち上がりエッジでのジョブの開始

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

デフォルト
値

FALSE

説明

2783

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Velocity

INPUT

LREAL

100.0

セットポイント速度/モーションプロセス用のセットポイント速度("Velocity」 = 0.0 は許可されます)

Acceleration

INPUT

LREAL

-1.0

加速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された加速が使用されます。
(<TO>.DynamicDefaults.Acceleration)

Deceleration

INPUT

LREAL

-1.0

減速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された減速が使用されます。
(<TO>.DynamicDefaults.Deceleration)

Jerk

INPUT

LREAL

-1.0

ジャーク
値 > 0.0: 固定加速度プロファイル; 指定されたジャークが使用されます。
値 = 0.0: 台形速度プロファイル
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定されたジャークが使用されます。
(<TO>.DynamicDefaults.Jerk)

Direction

INPUT

INT

0

軸の回転方向0「Velocity」パラメータで指定された速度の符号が、回転方向を定義します。

1

正の回転方向「Velocity」の値が使用されます。

2

負の回転方向「Velocity」の値が使用されます。

2784

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Current

INPUT

BOOL

FALSE

現在速度の維持FALSE [無効]パラメータ「Velocity」および「Direction」の値が考慮されます。
TRUE

有効パラメータ「Velocity」および「Direction」の値は考慮されません。
ファンクション開始時の現在の速度と方向が保持されます。
軸がファンクション開始時に現在速度であった速度でモーションを再開すると、「InVelocity"」パラメータが値
TRUE.を返します。

InVelocity

OUTPUT

BOOL

FALSE

TRUE

セットポイント速度/セットポイント速さに達しました。今後この速度が保持
されます。

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行中に、ジョブが別のジョブによっ

ed
Error

て中止されました。
OUTPUT

BOOL

FALSE

TRUE

ジョブの実行中にエラーが発生しました。 このエラーの原因は、「ErrorID」
パラメータで検出できます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

セットポイント速度/セットポイント速さが 0 の場合の動作(「Velocity」 = 0.0)
「Velocity」 = 0.0 の「MC_MoveVelocity」ジョブは、設定された減速で軸を停止します。
セットポイント速度/セットポイント速さ 0 に達すると、パラメータ「InVelocity」が値TRUE を示します。
[テクノロジーオブジェクト|診断|ステータスおよびエラービット|モーションステータス]で、「一定速度」と「停止」が表示されます(<TO>.StatusWord.ConstantVelocity;<TO>.StatusWord.Standstill)。
パラメータ「InVelocity」および「Busy」は、「MC_MoveVelocity」ジョブが別のモーショ
ンコントロールジョブによってオーバーライドされるまで、値 TRUE を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2785

テクノロジー
5.1 モーションコントロール

一定の速度/速さでの軸の移動
一定の速度/速さで軸を移動するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. パラメータ「Velocity」で、軸を移動する速度/速さを指定します。
3. パラメータ「Execute」の立ち上がりエッジで、「MC_MoveVelocity」ジョブを開始します。

現在のモーション状態は、「Busy」、「InVelocity」、および「Error」に示されます。
「InVelocity」パラメータが値 TRUE を示す場合、セットポイント速度/セットポイント速さに達しています。 軸は、この一定の速度で移動し続けます。 パラメータ「InVelocity」および「Busy」は、「MC_MoveVelocity」ジョブが別のモーションコントロールジョブによってオーバーライドされるまで、値 TRUE を示します。
注記
オーバーライドを変更するときの動作
速度/速さが、一定のモーション中に、オーバーライド(<TO>.Override.Velocity)の変更によって影響を受けると、「InVelocity」パラメータが加速または減速中にリセットされます。
新しく計算された速度/速さに達すると(「Velocity」 ×「Override」 %)、「InVelocity」がリセットされます。

追加情報
個々のステータスビットの評価用オプションについては、「StatusWord、ErrorWord、および WarningWord の評価」セクションを参照してください。

2786

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

MC_MoveVelocity: ファンクションチャート

ファンションチャート: 速度の指定による軸の移動と、オーバーライドジョブに対する応答

72B
([HB







$

$

0&B0RYH9HORFLW\

0&B0RYH9HORFLW\$[LV,Q9HORFLW\([HFXWH%XV\
9HORFLW\ &RPPDQG$ERUWHG$FFHOHUDWLRQ(UURU(UURU,''HFHOHUDWLRQ-HUN'LUHFWLRQ&XUUHQW,Q9HOB%XV\B$ERUWB

72B
([HB







,Q9HORFLW\$[LV([HFXWH%XV\
9HORFLW\ &RPPDQG$ERUWHG$FFHOHUDWLRQ(UURU'HFHOHUDWLRQ(UURU,'-HUN'LUHFWLRQ&XUUHQW,Q9HOB%XV\B$ERUWB)%
([HB W%XV\B 
,Q9HOB W
W$ERUWB 

W

)%


([HB 

%XV\B


WW


,Q9HOB $ERUWB

W




W


72B
9HORFLW\



W

「Exe_1」によって開始された「MC_MoveVelocity」ジョブ(A1)は、軸を加速し、時刻①に、「InVel_1」を介して、セットポイント速度 50.0 に達したことを通知します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2787

テクノロジー
5.1 モーションコントロール
時刻②に、このタスクは、別の「MC_MoveVelocity」ジョブ(A2)によって無効にされます。 この中止は、「Abort_1」によって通知されます。 新しいセットポイント速度 15.0 に達すると、「InVel_2」によって通知されます。 この後、軸は、一定の速度 15.0 で動作し続けます。
この実行中の「MC_MoveVelocity」ジョブ(A2)は、別の「MC_MoveVelocity」ジョブ(A1)によってオーバーライドされます。 この中止は、「Abort_2」によって通知されます。 軸は、
新しいセットポイント速度 50.0 まで加速されます。 このセットポイント速度に達する前に、現在の「MC_MoveVelocity」ジョブ(A1)は、時刻③に、別の「MC_MoveVelocity」ジョブ(A2)によって無効にされます。この中止は、「Abort_1」によって通知されます。 新しいセットポイント速度 15.0 に達すると、「InVel_2」によって通知されます。 この後、軸は、一定の速度 15.0 で動作し続けます。

5.1.2.5

MC_MoveRelative

MC_MoveRelative: 軸の相対位置決め

説明
モーションコントロール命令「MC_MoveRelative」では、ジョブ処理の開始時の位置を基準にして、相対的に軸を移動できます。
移動中の動的動作は、パラメータ「Velocity」、「Jerk」、「Acceleration」、および「Deceleration」で定義されます。

適用対象• 位置決め軸

必要条件• テクノロジーオブジェクトが正しく設定済みであること。
• このテクノロジーオブジェクトが有効であること。

応答の無効化「MC_MoveRelative」ジョブは以下によって中止されます。
• 「MC_Power.Enable」 = FALSE による軸の無効化• "MC_Home」ジョブ 「Mode」 = 4、5

2788

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ「MC_MoveRelative」ジョブを開始すると、以下の動作中のモーションコントロールジョブが中止されます。
• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ

パラメータ
次の表に、「MC_MoveRelative」モーションコントロール命令のパラメータを示します。
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

InOut

TO_Positionin-

テクノロジーオブジェクト

gAxis
Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのジョブの開始

Distance

INPUT

LREAL

0.0

位置決めプロセス用の距離(負または正)Velocity

INPUT

LREAL

-1.0

位置決め用のセットポイント速度値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された速度が使用されます。
(<TO>.DynamicDefaults.Velocity)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2789

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Acceleration

INPUT

LREAL

-1.0

加速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された加速が使用されます。
(<TO>.DynamicDefaults.Acceleration)

Deceleration

INPUT

LREAL

-1.0

減速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された減速が使用されます。
(<TO>.DynamicDefaults.Deceleration)

Jerk

INPUT

LREAL

-1.0

ジャーク
値 > 0.0: 固定加速度プロファイル; 指定されたジャークが使用されます
値 = 0.0: 台形速度プロファイル
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定されたジャークが使用されます。
(<TO>.DynamicDefaults.Jerk)

Done

OUTPUT

BOOL

FALSE

TRUE

ターゲット位置に達しました。

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行中に、ジョブが別のジョブによっ

ed
Error

て中止されました。
OUTPUT

BOOL

FALSE

TRUE

ジョブの実行中にエラーが発生しました。 このジョブは拒否されます。 この
エラーの原因は、「ErrorID」パラメー
タで検出できます。

ErrorID

2790

OUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

開始位置を基準にして相対的に軸を移動
開始位置を基準にして相対的に軸を移動するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. 「Distance」パラメータで、移動する距離を指定します。
3. パラメータ「Execute」の立ち上がりエッジで、「MC_MoveRelative」ジョブを開始します。

現在のモーション状態は、「Busy」、「Done」、および「Error」に示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2791

テクノロジー
5.1 モーションコントロール

MC_MoveRelative: ファンクションチャート

ファンションチャート: 軸の相対位置決めと、オーバーライドジョブへの応答$$

0&B0RYH5HODWLYH
72B
([HB






0&B0RYH5HODWLYH

'RQH
$[LV
([HFXWH%XV\'LVWDQFH &RPPDQG$ERUWHG(UURU
9HORFLW\$FFHOHUDWLRQ(UURU,''HFHOHUDWLRQ-HUN'RQHB
%XV\B$ERUWB


)%
([HB
%XV\B
'RQHB$ERUWB)%([HB
%XV\B
'RQHB

72B
9HORFLW\'RQHB
%XV\B



W




W





W


W






W



W




W



W










W

$

2792

$[LV
'RQH
([HFXWH%XV\'LVWDQFH &RPPDQG$ERUWHG(UURU
9HORFLW\(UURU,'$FFHOHUDWLRQ'HFHOHUDWLRQ-HUN

72B
3RVLWLRQ

72B
([HB






%

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

セクシ

軸は、「MC_MoveRelative」ジョブ(A1)によって、距離(「Distance」) 1000.0 だけ移動します(このョン

場合、開始位置は 0.0 です)。 軸がターゲット位置に到達すると、このことが時刻①に「Done_1」$

によって通知されます。 この時刻①に、距離が 500.0 の別の「MC_MoveRelative」ジョブ(A2)が開始されます。 軸が新しいターゲット位置に到達すると、「Done_2」によって通知されます。
「Exe_2」が以前にリセットされたため、「Done_2」は 1 つのサイクルのみに適用されます。

セクシ

実行中の「MC_MoveRelative」ジョブ(A1)が、別の「MC_MoveRelative」ジョブ(A2)によってオョンーバーライドされます。 この中止は、時刻②に、「Abort_1」によって通知されます。 この後、軸%は、新しい速度で距離(「Distance」) 500.0 だけ移動します。 新しいターゲット位置に到達すると、「Done_2」によって通知されます。

5.1.2.6

MC_MoveAbsolute

MC_MoveAbsolute: 軸の絶対位置決め

説明
モーションコントロール命令「MC_MoveAbsolute」では、絶対位置まで軸を移動できます。
移動中の動的動作は、パラメータ「Velocity」、「Jerk」、「Acceleration」、および「Deceleration」で定義されます。

適用対象• 位置決め軸

必要条件• テクノロジーオブジェクトが正しく設定済みであること。
• このテクノロジーオブジェクトが有効であること。
• テクノロジーオブジェクトが原点復帰済みであること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2793

テクノロジー
5.1 モーションコントロール

応答の無効化「MC_MoveAbsolute」ジョブは以下によって中止されます。
• 「MC_Power.Enable」 = FALSE による軸の無効化• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ「MC_MoveAbsolute」ジョブを開始すると、以下の動作中のモーションコントロールジョブが中止されます。
• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt-Auftrag"• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ

パラメータ
次の表に、「MC_MoveAbsolute」モーションコントロール命令のパラメータを示します。
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

InOut

TO_Positionin-

テクノロジーオブジェクト

gAxis
Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのジョブの開始

Position

INPUT

REAL

0.0

絶対ターゲット位置2794

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Velocity

INPUT

LREAL

-1.0

位置決め用のセットポイント速度値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された速度が使用されます。
(<TO>.DynamicDefaults.Velocity)

Acceleration

INPUT

LREAL

-1.0

加速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された加速が使用されます。
(<TO>.DynamicDefaults.Acceleration)

Deceleration

INPUT

LREAL

-1.0

減速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された減速が使用されます。
(<TO>.DynamicDefaults.Deceleration)

Jerk

INPUT

LREAL

-1.0

ジャーク
値 > 0.0: 固定加速度プロファイル; 指定されたジャークが使用されます
値 = 0.0: 台形速度プロファイル
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定されたジャークが使用されます。
(<TO>.DynamicDefaults.Jerk)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2795

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Direction

INPUT

INT

3

軸の回転方向「モジュロ」が有効な場合のみ評価されます。
[テクノロジーオブジェクト|設定|基本パラメー
タ|モジュロの有効化]
1

正の回転方向2

負の回転方向

3

最短パス

Done

OUTPUT

BOOL

FALSE

TRUE

ターゲット位置に達しました。

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行中に、ジョブが別のジョブによっ

ed
Error

て中止されました。
OUTPUT

BOOL

FALSE

TRUE

ジョブの実行中にエラーが発生しました。 このジョブは拒否されます。 この
エラーの原因は、「ErrorID」パラメー
タで検出できます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID

絶対位置まで軸を移動
絶対位置まで軸を移動するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. 「Position」パラメータで、必要なターゲット位置を指定します。
3. パラメータ「Execute」の立ち上がりエッジで、「MC_MoveAbsolute」ジョブを開始します。

現在のモーション状態は、「Busy」、「Done」、および「Error」に示されます。

2796

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

MC_MoveAbsolute: ファンクションチャート

ファンションチャート: 軸の絶対位置決めと、オーバーライドジョブへの応答$$

0&B0RYH$EVROXWH

0&B0RYH$EVROXWH
72B
([HB







'RQH
$[LV
%XV\
([HFXWH
3RVLWLRQ &RPPDQG$ERUWHG
9HORFLW\(UURU$FFHOHUDWLRQ(UURU,''HFHOHUDWLRQ-HUN'LUHFWLRQ'RQHB
%XV\B$ERUWB


)%
([HB
'RQHB
%XV\B$ERUWB)%([HB
'RQHB

72B
([HB







$[LV
'RQH
%XV\
([HFXWH
3RVLWLRQ &RPPDQG$ERUWHG(UURU
9HORFLW\$FFHOHUDWLRQ(UURU,''HFHOHUDWLRQ-HUN'LUHFWLRQ'RQHB
%XV\B







W




W



W


W




W





W


%XV\B

W






72B
9HORFLW\ W

72B
3RVLWLRQ W$

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

%

2797

テクノロジー
5.1 モーションコントロール

セクシ

軸が、「MC_MoveAbsolute」ジョブ(A1)によって、絶対位置 1000.0 まで移動します。 軸がターョン

ゲット位置に到達すると、このことが時刻①に「Done_1」によって通知されます。 この時刻①$に、ターゲット位置が 1500.0 の別の「MC_MoveAbsolute」ジョブ(A2)が開始されます。 軸がターゲット位置 1500.0 に到達すると、このことが「Done_2」によって通知されます。 「Exe_2」
が以前にリセットされたため、「Done_2」は 1 つのサイクルのみに適用されます。

セクシ

実行中の「MC_MoveAbsolute」ジョブ(A1)が、時刻②に、別の「MC_MoveAbsolute」ジョブ

ョン(A2)によって無効にされます。この中止は、「Abort_1」によって通知されます。 軸は変更された%

速度まで制動し、新しいターゲット位置 1500.0 まで移動します。新しいターゲット位置に到達すると、「Done_2」によって通知されます。

5.1.2.7

MC_Halt

MC_Halt: 軸を停止します。

説明
モーションコントロール命令「MC_Halt」では、軸を停止状態まで制動できます。
制動プロセス中の動的な動作は、パラメータ「Jerk」および「Deceleration」で定義され
ます。

適用対象
• 位置決め軸• 速度制御された軸必要条件• テクノロジーオブジェクトが正しく設定済みであること。
• このテクノロジーオブジェクトが有効であること。

応答の無効化「MC_Halt」ジョブは以下によって中止されます。
• 「MC_Power.Enable」 = FALSE による軸の無効化• "MC_Home」ジョブ 「Mode」 = 4、5

2798

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ「MC_Halt」ジョブを開始すると、以下の動作中のモーションコントロールジョブが中止されます。
• "MC_Home」ジョブ 「Mode」 = 4、5• "MC_Halt」ジョブ• "MC_MoveAbsolute」ジョブ• "MC_MoveRelative」ジョブ• "MC_MoveVelocity」ジョブ• "MC_MoveJog」ジョブ

パラメータ
次の表に、「MC_Halt」モーションコントロール命令のパラメータを示します。
パラメータ

宣言

データタイプ

デフォルト
値

説明

Axis

InOut

TO_SpeedAxis -テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのジョブの開始

Deceleration

INPUT

LREAL

-1.0

減速
値 > 0.0: 指定された値が使用されます。
値 = 0.0:不可
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定された減速が使用されます。
(<TO>.DynamicDefaults.Deceleration)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2799

テクノロジー
5.1 モーションコントロール
パラメータ

宣言

データタイプ

デフォルト
値

説明

Jerk

INPUT

LREAL

-1.0

ジャーク
値 > 0.0: 固定加速度プロファイル; 指定されたジャークが使用されます
値 = 0.0: 台形速度プロファイル
値 < 0.0: [テクノロジーオブジェクト|設定|拡張パラメータ|動的な既定]で設定されたジャークが使用されます。
(<TO>.DynamicDefaults.Jerk)

Done

OUTPUT

BOOL

FALSE

TRUE

速度 0 に達しました。

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

CommandAbort OUTPUT

BOOL

FALSE

TRUE

実行中に、ジョブが別のジョブによっ

ed
Error

て中止されました。
OUTPUT

BOOL

FALSE

TRUE

ジョブの実行中にエラーが発生しました。 このジョブは拒否されます。 この
エラーの原因は、「ErrorID」パラメー
タで検出できます。

ErrorIDOUTPUT

WORD

16#0000

パラメータ「Error」のエラー ID「MC_Halt」による軸の制動
軸を停止状態まで減速するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. パラメータ「Deceleration」および「Jerk」に必要な値を設定します。
3. パラメータ「Execute」の立ち上がりエッジで、「MC_Halt」ジョブを開始します。

現在のモーション状態は、「Busy」、「Done」、および「Error」に示されます。 軸の停止は、[テクノロジーオブジェクト|診断|ステータスおよびエラービット|モーションステータス|停止] (<TO>.StatusWord.Standstill)で示されます。

追加情報
個々のステータスビットの評価用オプションについては、「StatusWord、ErrorWord、および WarningWord の評価」セクションを参照してください。

2800

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

MC_Halt: ファンクションチャート

ファンションチャート: 軸の停止とオーバーライドジョブに対する応答

72B
([HB







$

$

0&B0RYH9HORFLW\

0&B+DOW$[LV,Q9HORFLW\%XV\([HFXWH
9HORFLW\ &RPPDQG$ERUWHG$FFHOHUDWLRQ(UURU'HFHOHUDWLRQ(UURU,'-HUN'LUHFWLRQ&XUUHQW,Q9HOB%XV\B$ERUWB


)%

72B
([HB



$[LV
'RQH
%XV\
([HFXWH'HFHOHUDWLRQ &RPPDQG$ERUWHG
(UURU
-HUN
(UURU,''RQHB
%XV\B$ERUWB,Q9HOB






W

%XV\BW$ERUWB




W

([HB

)%

W

'RQHB




W%XV\BW$ERUWB




W

([HB

W


72B
9HORFLW\



W

$

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

%

2801

テクノロジー
5.1 モーションコントロール

セクシ

軸は、「MC_MoveVelocity」ジョブ(A1)によって移動します。 セットポイント速度 50.0 に達するョンと、「InVel_1」によって通知されます。 時刻①に、この「MC_MoveVelocity」が、「MC_Halt」ジ$ョブ(A2)によって無効にされます。 このジョブ終了は、「Abort_1」によって通知されます。 軸は停止状態まで制動します。 「MC_Halt」ジョブの正常終了が、「Done_2」によって通知されます。

セクシ

軸は、「MC_MoveVelocity」ジョブ(A1)によって移動します。 セットポイント速度 50.0 に達するョンと、「InVel_1」によって通知されます。 次に、この「MC_MoveVelocity」が、「MC_Halt」ジョブ%(A2)によって無効にされます。 このジョブ終了は、「Abort_1」によって通知されます。 制動プ
ロセス中の時刻②に、「MC_Halt」が、「MC_MoveVelocity」ジョブ(A1)によって無効にされます。 このジョブ終了は、「Abort_2」によって通知されます。 セットポイント速度 50.0 に達すると、「InVel_1」によって通知されます。 この後、軸は一定速度で移動します。

5.1.2.8

MC_Reset

MC_Reset: アラームの確認応答、テクノロジーオブジェクトの再起動

説明
ユーザープログラムで確認応答できるすべてのテクノロジー割り込みは、モーションコン
トロール命令「MC_Reset」で確認応答されます。 確認応答を行うと、テクノロジーデー
タブロックの「Error」および「Warning」ビットもリセットされます。
テクノロジーオブジェクトは、「Restart」 = TRUE のモーションコントロール命令「MC_Reset」を使用して再初期化(再起動)されます。 テクノロジーオブジェクトの再起動
時、新しい設定データがテクノロジーデータブロックに適用されます。

適用対象• 位置決め軸• 速度制御された軸• 外部エンコーダ

必要条件• 保留中のテクノロジーアラームのエラーの原因が解決済みであること。
• 再起動するには、テクノロジーオブジェクトを無効にする必要があります。
「MC_Power.Status」(= FALSE および「MC_Power.Busy」 = FALSE)

2802

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.1 モーションコントロール

応答の無効化• パラメータ「Restart」 = FALSE:
命令「MC_Reset」の処理は、他のモーションコントロールジョブが中止できます。 この
MC_Reset ジョブは、すべての実行中のモーションコントロールジョブを中止しません。
• パラメータ「Restart」 = TRUE:
パラメータ「Restart」 = TRUE の命令「MC_Reset」の処理は、他のすべてのモーションコ
ントロールジョブが中止できません。

パラメータ
次の表に、「MC_Reset」モーションコントロール命令のパラメータを示します。
パラメー
タ

宣言

データタイプ

デフォルト
値

説明

Axis

InOut

TO_Axis-テクノロジーオブジェクト

Execute

INPUT

BOOL

FALSE

立ち上がりエッジでのジョブの開始

Restart

INPUT

BOOL

FALSE

TRUE

"Restart"
テクノロージーオブジェクトの再初期化と、保留中のテクノロジー割り込みの確認応答。
テクノロジーオブジェクトは、設定された初期値で、再初期化されます。

FALSE キューに登録されたテクノロジーアラームの
確認応答。
Done

OUTPUT

BOOL

FALSE

TRUE

エラーが確認応答されています。
再起動が実行済みです。

Busy

OUTPUT

BOOL

FALSE

TRUE

ジョブが実行中です。

Command OUTPUT

BOOL

FALSE

TRUE

実行中に、ジョブが別のジョブによって中止

AbortedError

されました。
OUTPUT

BOOL

FALSE

TRUE

ジョブの実行中にエラーが発生しました。 このジョブは拒否されます。 このエラーの原因
は、「ErrorID」パラメータで検出できます。

ErrorIDOUTPUTWORD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

16#0000

パラメータ「Error」のエラー ID

2803

テクノロジー
5.2 高速カウンタ

テクノロジーアラームへの確認応答
テクノロジー割り込みに確認応答するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. パラメータ「Restart」 = FALSE を設定します。
3. パラメータ「Execute」での立ち上がりエッジで、エラーの確認応答を開始します。

Done パラメータが値 TRUE を示す場合、エラーに確認応答済みです。
注記「Restart」 = FALSE での確認応答
テクノロジーアラームの確認応答のみを行う場合は、「Restart」 = FALSE を設定します。このテクノロジーオブジェクトは、再起動時には使用できません。

テクノロジーオブジェクトの再起動
テクノロジーオブジェクトを再起動するには、以下の手順に従います。
1. 上記の必要条件をチェックします。
2. パラメータ「Restart」 = TRUE を設定します。
3. 入力パラメータ「Execute」の立ち上がりエッジで、再起動を実行します。

この「Done」パラメータが値 TRUE zeigt を示す場合は、このテクノロジーオブジェクトの再起動が完了しています。
再起動に関する追加情報は、「テクノロジーオブジェクトの再起動」セクションを参照してください。

5.2

高速カウンタ

5.2.1

CTRL_HSC: 高速カウンタの制御

パラメータ

2804

パラメータ

宣言

データタイ メモリ領域
プ

説明

EN

INPUT

BOOL

I、Q、M、D、L、T、C 許可入力

ENO

OUTPUT

BOOL

I、Q、M、D、L

許可出力

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.2 高速カウンタ
パラメータ

宣言

データタイ メモリ領域
プ

説明

HSC

INPUT

HW_HSC

高速カウンタの

I、Q、M または定数

ハードウェアアドレス(HW-ID)
DIR

INPUT

BOOL

I、Q、M、D、L、また 新しいカウントは定数方向を有効にします(NEW_DIR
を参照)

CV

INPUT

BOOL

I、Q、M、D、L、また 新しいカウンタ
は定数値を有効にします(NEW_CV を参
照)

RV

INPUT

BOOL

I、Q、M、D、L、また 新しい基準値をは定数有効にします(NEW_RV を参照)PERIOD

INPUT

BOOL

I、Q、M、D、L、また 新しい周波数測は定数定時間を有効にします(NEW_PERIOD を参照)

NEW_DIR

INPUT

INT

I、Q、M、D、L、また DIR = TRUE の場
は定数合、カウント方
向が読み込まれます。

NEW_CV

INPUT

DINT

I、Q、M、D、L、また CV = TRUE の場
は定数合、カウンタ値が読み込まれます。

NEW_RV

INPUT

DINT

I、Q、M、D、L、また RV = TRUE のときは定数に読み込まれた
基準値

NEW_PERIOD INPUT

INT

I、Q、M、D、L、また PERIOD = TRUEは定数の場合、周波数
測定時間が読み込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2805

テクノロジー
5.2 高速カウンタ
パラメータ

宣言

データタイ メモリ領域
プ

説明

BUSY

OUTPUT

BOOL

I、Q、M、D、L

処理ステータス *STATUSOUTPUT

WORD

I、Q、M、D、L

演算のステータス* CPU またはシグナルボードの高速カウンタを使用する場合は、BUSY パラメータの値が常時「0」となります。

説明「高速カウンタの制御」命令を使用すると、パラメータ設定を行い、CPU でサポートされている高速カウンタを制御することができます。これは、新しい値をカウンタにロードすることによって行われます。命令を実行するには、制御される高速カウンタが有効である
必要があります。高速カウンタによっては、プログラム内で複数の「高速カウンタの制御」
命令を同時に実行することはできません。
[高速カウンタ制御]演算を使用して、以下のパラメータ値を高速カウンタに読み込むことができます。
• カウント方向(NEW_DIR):このカウント方向では、高速カウンタのカウントをアップさせるかダウンさせるかを定義します。カウント方向を定義するには、NEW_DIR 入力で次の値を使用します。1 = アップ、-1 = ダウン。
「高速カウンタの制御」命令を使用してカウント方向を変えられるのは、プログラムのパラメータで方向コントロールが設定されている場合のみです。DIR 入力のビットがセットされている場合、NEW_DIR 入力で指定されたカウント方向が高速カウンタに読み込まれます。
• カウンタ値 (NEW_CV):このカウンタ値は、高速カウンタがカウントを開始する際の初期値です。カウンタ値の範囲は、-2147483648～2147483647 です。
CV 入力のビットがセットされている場合、NEW_CV 入力で指定されたカウンタ値が高速カウンタに読み込まれます。

2806

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.2 高速カウンタ• 基準値(NEW_RV):この基準値と現在のカウンタ値を比較してアラームをトリガすることができます。カウンタ値と同様、基準値の範囲は-2147483648～2147483647 です。
RV 入力のビットがセットされている場合、NEW_RV 入力で指定された基準値が高速カ
ウンタに読み込まれます。
• 周波数測定時間(NEW_PERIOD):周波数測定時間を指定するには、NEW_PERIOD 入力で次の値を使用します。10 = 0.01s、100 = 0.1s、1000 = 1s。
指定された高速カウンタに「周波数測定」ファンクションが設定されている場合、時間を更新することが可能です。PERIOD 入力のビットがセットされている場合、
NEW_PERIOD 入力で指定された時間が高速カウンタに読み込まれます。
「高速カウンタの制御」命令を実行できるのは、EN 入力のシグナル状態が「1」の場合のみです。
EN 許可入力のシグナル状態が「1」で、かつ演算の実行時にエラーが発生しない場合にのみ、ENO 許可出力が設定されます。
「高速カウンタの制御」命令を挿入すると、演算データを保存するインスタンスデータブ
ロックが作成されます。

STATUS パラメータ
STATUS 出力では、「高速カウンタの制御」命令の実行時にエラーが発生したかどうかを照会できます。次の表に、STATUS 出力で出力される値の意味を示します。
エラーコード(16 進数)

説明0

エラーは発生していません。

80A1

高速カウンタのハードウェア識別子が無効です。

80B1DB

カウント方向(NEW_DIR)が無効です。

80B2

カウンタ値(NEW_CV)が無効です。

80B3

基準値(NEW_RV)が無効です。

80B4

周波数測定時間(NEW_PERIOD)が無効です。

80C0

高速カウンタへの複数アクセス

80D0

高速カウンタ(HSC)が CPU ハードウェアコンフィグレーシ
ョンで有効になっていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2807

テクノロジー
5.2 高速カウンタ

5.2.2

CTRL_HSC_EXT: 高速カウンタの制御(拡張)

パラメータ
パラメータ

宣言

データタイ メモリ領域
プ

説明

EN

INPUT

BOOL

I、Q、M、D、L、T、C 許可入力

ENO

OUTPUT

BOOL

I、Q、M、D、L

許可出力

HSC

INPUT

HW_HSC

I、Q、M または定数

高速カウンタのハードウェアアドレス(HW-ID)

CTRL

INOUT

VARIANT

M、D

システムデータ
タイプ(SDT)の使用

DONE

OUTPUT

BOOL

I、Q、M、D、L

命令処理正常終了後のフィードバック

BUSY

OUTPUT

BOOL

I、Q、M、D、L

処理ステータスERROROUTPUT

BOOL

I、Q、M、D、L

命令処理異常のフィードバック

STATUSOUTPUT

WORD

I、Q、M、D、L

演算のステータス

説明「高速カウンタの制御(拡張)」命令を使用すると、CPU でサポートされている高速カウンタを制御し、パラメータを設定することができます。これはソフトウェアで、新しい値をカウンタにロードすることによって行われます。命令を実行するには、制御される高速カウンタが有効である必要があります。高速カウンタによっては、プログラム内で複数の「高速カウンタの制御(拡張)」命令を同時に実行することはできません。
「高速カウンタの制御(拡張)」命令を実行できるのは、EN 入力のシグナル状態が「1」の場
合のみです。演算が実行されている間は、BUSY 出力のビットがセットされます。演算の実行が完了すると、BUSY 出力のビットがリセットされます。
EN 許可入力のシグナル状態が「1」で、かつ演算の実行時にエラーが発生しない場合にのみ、ENO 許可出力が設定されます。

2808

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.2 高速カウンタ「高速カウンタの制御(拡張)」命令を挿入すると、演算データを保存するインスタンスデータブロックが作成されます。

システムデータタイプ HSC_Period の使用「高速カウンタの制御(拡張)」命令は、周期測定に関するシステムデータタイプ SDT 381「HSC_Period」をサポートしています。
「HSC_Period」データタイプは、「時間」動作モードに対して設定される HSC に対応します。CTRL_HSC_EXT 命令を使用すると、指定された測定間隔での入力パルス数にプログラ
ムからアクセスできます。この命令により、ナノ秒範囲の分解能で入力パルス間の時間の計算が可能になります。
バ
イ
ト

パラメー
タ

宣言

データ
タイプ

説明

0

ElapsedTi

OUT

UDINT

Edge_Count の立ち上がりエッジ間の時間

EdgeCoun OUT

UDINTElapsed_Time 内の立ち上がりエッジの数。

… 3 me4…7 t

Edge_Count = 0 の場合、Elapsed_Time が最後の立ち上がりエッジ後の時間です。

8.0 EnHSC

IN

BOOL

ゲート制御による許可入力として使用します。
• FALSE:測定停止• TRUE:測定有効8.6 EnPeriod

IN

BOOL

周期の更新
• FALSE:更新なし• TRUE:更新周期

10 . NewPerio
..

IN

INT

d

周期測定の間隔(ミリ秒)。
許可値は 10、100 および 1000 です。

11
ElapsedTime は、連続する測定間隔の最後のカウンタイベント間の時間をナノ秒単位で指定します。測定間隔内でカウンタイベントが発生しなかった場合、ElapsedTime は最後のカ
ウンタイベントからの累積時間を出力します。ElapsedTime の範囲は、0～4,294,967,280
ナノ秒(0x0000 0000～0xFFFF FFF0)です。戻り値が 4,294,967,295 (0xFFFF FFFF)の場合
は、時間オーバーフローが発生しています。オーバーフローは 2 つのパルスエッジ間の時間
が 4.295 秒を超えたため、この命令でこの時間を計算できないことを意味します。0xFFFF
FFF1～0xFFFF FFFE の値は予約されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2809

テクノロジー
5.2 高速カウンタ
EdgeCount は、測定間隔内に受信したカウンタイベント数を出力します。EdgeCount の値
が 0 より大きい場合のみ、時間を計算できます。ElapsedTime が 0 (入力パルスの受信なし)
または 0xFFFF FFFF (時間オーバーフロー)の場合、EdgeCount は無効です。
EdgeCount が無効の場合は、以下の公式を使用して時間をナノ秒単位で計算します。時間= ElapsedTime/EdgeCount計算される時間値は、測定間隔内に発生するすべてのパルスの時間間隔の平均値です。受信
パルスの時間が測定間隔(10, 100 または 1000 ms)よりも大きい場合は、時間計算に複数の測定間隔が必要になります。
以下の図は、この命令を使用した時間測定の例を示しています。
例1:測定間隔内での複数のカウントイベント
PV

䂻⸩栢椣

䟹䥽ቑ━ቭ手ቢ
(W WW VDYHW䟹䥽ቑ━ቭ手ቢ≬ⷧW  䟹䥽ቑ━ቭ手ቢ(W WWVDYHWኈኃዐእኁ኶ዐእ
㣑栢ቑ+:ኊዀኴኞዀ

W

W

W

W

W

W

W

W

W

W

W

W

W

6)%✋ቖ⒉ሺ
(W(ODSVHG7LPH(&(GJH&RXQW(W 
(F 

(W 
(F 

(W WW
(F 

(W WW (F 

例2:複数の測定間隔内での0、または1つのカウントイベント
PV

䂻⸩栢椣

䟹䥽ቑ━ቭ手ቢ≬ⷧW 䟹䥽ቑ━ቭ手ቢ 䟹䥽ቑ━ቭ手ቢ
(W WW VDYHW

ኈኃዐእኁ኶ዐእ
㣑栢ቑ+:ኊዀኴኞዀ

W

W

6)%✋ቖ⒉ሺ

(W(ODSVHG7LPH(&(GJH&RXQW(W 
(F 

(W 
(F 

(W PV(F 

(W WW (F 

ወዙወ(W ቑ⫃⚗ᇬ㣑栢ሯ䎰╈ቡቂቒᇬ㦮栢 (W(&2810

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定

STATUS パラメータ
STATUS 出力では、「高速カウンタの制御(拡張)」命令の実行時にエラーが発生したかどうかを照会できます。次の表に、STATUS 出力で出力される値の意味を示します。
エラーコード(16 進数)

説明0

エラーは発生していません。

80A1

高速カウンタのハードウェア識別子が無効です。

80C0

高速カウンタへの複数アクセス

80D0

高速カウンタ(HSC)が CPU ハードウェアコンフィグレーシ
ョンで有効になっていません。

5.3

カウントと測定

5.3.1

High_Speed_Counter

5.3.1.1

High_Speed_Counter

High_Speed_Counter の説明
説明
High_Speed_Counter 命令は、ユーザープログラムによるテクノロジーモジュールのカウントおよび測定ファンクションを制御するために使用します。

呼び出し
命令 High_Speed_Counter は、周期的な場合でも時間制御されたプログラムの場合でも、カウンタごとに 1 回ずつ呼び出す必要があります。この呼び出しは、イベント制御割り込
みプログラムでは許可されていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202811

テクノロジー
5.3 カウントと測定

動作原理
カウンタ値:カウンタ値は出力パラメータ CountValue で表示されます。カウンタ値は、
High_Speed_Counter 命令が呼び出されるたびに更新されます。
測定値:テクノロジーモジュールは、設定された更新時間に基づく命令呼び出しとは非同期に測定値を更新します。テクノロジーモジュールによって最後に測定された測定値が、命令が呼び出されるたびに、出力パラメータ MeasuredValue で更新されます。
測定値とカウンタ値は、フィードバックインターフェースで、並列に使用できます。
Capture:出力パラメータ CaptureStatus = TRUE は、出力パラメータ CapturedValue の有効な Capture 値を示します。
• Capture 値は、以下の条件で取り込まれます。
– デジタル入力に、パラメータ割り当て「Capture」がある。
– CaptureEnable = TRUE
– デジタル入力のエッジで、Capture ファンクションを使用。
• 出力パラメータ CaptureStatus は、入力パラメータ CaptureEnable の立ち下がりエッジ
でリセットされます。
同期:出力パラメータ SyncStatus = TRUE は、同期が行われていることを示します。
• カウンタ値は、以下の条件で同期されます。
– デジタル入力にパラメータ割り当て「同期」があるか、 または インクリメンタル
エンコーダにパラメータ割り当て「信号 N での同期」がある。
– SyncEnable = TRUE
– SyncUpDirection (または SyncDownDirection) = TRUE
– 同期ファンクションによるデジタル入力のエッジまたはエンコーダ入力の信号 N の立
ち上がりエッジ• 出力パラメータ SyncStatus は、以下の立ち下がりエッジでリセットされます。
– 入力パラメータ SyncEnable または– 静的タグ SyncDownDirection または– 静的タグ SyncUpDirection
ユーザープログラムによるパラメータ変更

2812

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定
ユーザープログラムを使用してパラメータを変更するには、以下の手順に従います。
1. それぞれの Set タグに基づいて、テクノロジーオブジェクトがパラメータ変更の準備が完了しているかどうか(Set タグ = FALSE)、または変更ジョブがまだ実行中であるかどうか(Set タ
グ = TRUE)をチェックして識別します。
UserCmdFlags 内の以下の Set タグが、このために、テクノロジーオブジェクトインスタン
ス DB の Static タグで使用できます。

– SetReferenceValue0– SetReferenceValue1– SetUpperLimit– SetLowerLimit– SetCountValue– SetStartValue– SetNewDirection
2. テクノロジーオブジェクトがパラメータ変更の準備が完了している場合、関連する Static タ
グを変更します。
テクノロジーオブジェクトインスタンス DB の以下の Static タグをこのために使用できます。

– NewReferenceValue0 / NewReferenceValue0_M (SetReferenceValue0 用)– NewReferenceValue1 / NewReferenceValue1_M (SetReferenceValue1 用)– NewUpperLimit– NewLowerLimit– NewCountValue– NewStartValue– NewDirection
3. 対応する Set タグを変更コマンドの実行用に設定します。
4. 出力パラメータ Error を使用して、エラーが発生しているかどうかをチェックします。
エラーが発生しておらず、Set タグがテクノロジーオブジェクトによって自動的にリセットされている場合、パラメータ変更は正常に行われました。

注記
変更されたカウント制限値
新しいカウント上限値がカウンタ現在値より小さい場合、カウンタ値はパラメータ割り当てに従ってカウント下限値または開始値に設定されます。新しいカウント下限値がカウンタ
現在値より大きい場合、カウンタ値はパラメータ割り当てに従ってカウント上限値または開始値に設定されます。

動作モード(High_Speed_Counter V3.0 以降)[DQ0 の動作]で、テクノロジーオブジェクトの動作モードを設定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2813

テクノロジー
5.3 カウントと測定
その動作モードは、出力パラメータ CompareMeasuredValue によって示されます。
状態

説明

FALSE

動作モード[カウント値を基準として使用]
比較ファンクションはカウンタ値と連携します。この動作モードでは、特に以下の Static 変数が使用されます。
• NewReferenceValue0• NewReferenceValue1• CurReferenceValue0• CurReferenceValue1
動作モード[測定値を基準として使用]の 4 つの特定の Static 変数は無視されます。

TRUE

動作モード[測定値を基準として使用]:
比較ファンクションは測定値と連携します。この動作モードでは、
特に以下の Static 変数が使用されます。
• NewReferenceValue0_M• NewReferenceValue1_M• CurReferenceValue0_M• CurReferenceValue1_M
動作モード[カウント値を基準として使用]の 4 つの特定の Static 変数は無視されます。

イベントの確認通知されたイベントを入力パラメータ EventAck の立ち上がりエッジを使用して確認しま
す。EventAck は、テクノロジーオブジェクトがカウントチャンネルの以下のイベントのステータスビットをリセットするまで、設定状態であることが必要です。
• CompResult0• CompResult1• ZeroStatus• PosOverflow• NegOverflow

2814

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定

デジタル入力のステータス(TM Count および TM PosInput)
デジタル入力のステータスは、静的タグ StatusDI0、StatusDI1、または StatusDI2 で入手できます。

デジタル入力のステータス(Compact CPU)
デジタル入力のステータスは、Static タグ StatusDI0 および StatusDI1 を使用して取得できます。Compact CPU のデジタル入力がカウンタとして使用されないとき、ユーザープロ
グラム経由でそれを使用できます。

ユーザープログラムによるデジタル出力の使用(TM Count および TM PosInput)
デジタル出力を High_Speed_Counter 命令で設定できます。
• [ユーザープログラムによる使用]が[出力のセット]に対して設定されている場合。
• [CPU からのコマンド設定から比較値まで]が[出力のセット]に対して設定されている場合。
• 対応する静的タグ ManualCtrlDQm (一時的な上書き)を設定している場合。
Static タグ SetDQ0 および SetDQ1 は、これらの場合のみ効果を持ちます。1 番目と 3 番目のケースでは、DQm は SetDQm の値に従います。2 番目のケースでは、DQm は、
SetDQm の立ち上がりエッジでセットされます。DQm は、カウンタ値が比較値に一致す
るとき、または SetDQm の立ち下がりエッジで、リセットされます。

ユーザープログラムによるデジタル出力の使用(Compact CPU)DQ1 デジタル出力を High_Speed_Counter 命令で設定できます。
• [ユーザープログラムによる使用]が[出力のセット]に対して設定されている場合。
• [CPU からのコマンド設定から比較値まで]が[出力のセット]に対して設定されている場合。
• 対応する Static タグ ManualCtrlDQ1 (一時的な上書き)を設定している場合。
Static タグ SetDQ1 は、これらの場合のみ効果を持ちます。1 番目と 3 番目のケースでは、
DQ1 は SetDQ1 の値に従います。2 番目のケースでは、カウンタ値が比較値に一致するか、

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2815

テクノロジー
5.3 カウントと測定
SetDQ1 の立ち下がりエッジのとき、DQ1 は、SetDQ1 の立ち上がりエッジでセットされ、リセットされます。
注記
High_Speed_Counter 命令を使用して Compact CPU の物理的デジタル出力を設定する前に、DQ1 信号を必要なデジタル出力に割り当てる必要があります。

Static タグ StatusDQ0 付きの High_Speed_Counter 命令を使用して、DQ0 信号を設定できます。
• [ユーザープログラムによる使用]が[出力のセット]に対して設定されている場合。
• [CPU からのコマンド設定から比較値まで]が[出力のセット]に対して設定されている場
合。
• Static タグ ManualCtrlDQ0 (一時的な上書き)を設定している場合。.
Static タグ SetDQ0 は、これらの場合のみ効果を持ちます。1 番目と 3 番目のケースでは、
DQ0 は SetDQ0 の値に従います。2 番目のケースでは、StatusDQ0 は、エッジ(立ち上がり
または立ち下がり)で、SetDQ0 によってセット/リセットされ、カウンタ値が比較値に一致するときリセットされます。
注記
デジタル出力 DQ0 は、物理的出力としては使用できません。

エラーに対する応答
I 命令の呼び出し中またはテクノロジーモジュールでエラーが発生した場合、出力パラメ
ータ Error が設定されます。詳細なエラー情報は、出力パラメータ ErrorID (ページ 2823)に表示されます。
エラーの原因を取り除き、入力パラメータ ErrorAck のセットによってエラーメッセージの確認応答をします。保留中のエラーがしれ以上存在しない場合は、テクノロジーオブジェ
クトが出力パラメータ、Error をリセットします。直前のエラーを確認するまで、新しいエラーは通知されません。

2816

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定

カウント方向の変更
カウント方向は、「パルス(A)」が信号タイプとして設定されている場合、ユーザープログ
ラムによってのみ変更できます。それ以外の場合では、カウンタ方向はテクノロジーモジ
ュールの入力信号によってすべて決定されます。カウント方向は静的タグ NewDirection で制御されます。
• +1:上向きのカウント方向• -1:下向きのカウント方向
変更コマンドを実行するには、タグ SetNewDirection = TRUE をセットする必要があります。

High_Speed_Counter 入力パラメータ
パラメータ

宣言

データ
タイプ

既定

説明

SwGate

INPUT

BOOL

FALSE

ソフトウェアゲートの制御:• 立ち上がりエッジ:ソフトウェアゲートが開きます• 立ち下がりエッジ:ソフトウェアゲートが閉じます
ハードウェアゲートと共に、SwGate が内部ゲートを有効にします。

SetCountVal

INOUT

BOOL

FALSE

ue

立ち上がりエッジにより、Static タグ NewCountValue の
新しいカウンタ値のテクノロジーモジュールへの転送が開始されます。カウンタ値は、転送後に直ちに有効になります。

CaptureEnab INPUT

BOOL

le

FALSE

Capture ファンクションの有効化
その有効化の後、関連するデジタル入力の次の設定済みのエッジで Capture イベントが発生します。
CaptureEnable の立ち下がりエッジは、出力パラメータ
CaptureStatus をリセットします。CaptureEnable の立ち
下がりエッジは、Capture イベントが発生しない場合でも、その有効化をリセットします。
CaptureEnable に関係なく、最後の値は、次の Capture イ
ベントまで、出力パラメータ CapturedValue に保持されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2817

テクノロジー
5.3 カウントと測定
パラメータ

宣言

データ
タイプ

既定

説明

SyncEnable

INPUT

BOOL

FALSE

同期を有効にする
同期に対して有効になった方向は、静的タグ
SyncUpDirection および SyncDownDirection で示されます。SyncEnable の立ち下がりエッジは、出力パラメータ
SyncStatus をリセットします。

ErrorAck

INPUT

BOOL

FALSE

V3.0 以前の High_Speed_Counter:
立ち上がりエッジが、報告されたステータスを確認します。
V3.1 以降の High_Speed_Counter:
High レベルが、報告されたエラーステータスを確認します。

EventAck

INPUT

BOOL

FALSE

立ち上がりエッジが以下の出力パラメータをリセットします。
• CompResult0• CompResult1• ZeroStatus• PosOverflow• NegOverflow

High_Speed_Counter 出力パラメータ
パラメータ

宣言

データ
タイプ

既定

説明

StatusHW

OUTPUT

BOOL

FALSE

テクノロジーモジュール:のステータスビット:モジュールが設定済みで、操作準備ができています。モジュールデータが有効です。

StatusGate

OUTPUT

BOOL

FALSE

ステータスビット:パラメータがセットされている場合、内部ゲートがリリースされます。

StatusUp

OUTPUT

BOOL

FALSE

ステータスビット:最後のカウントパルスがカウンタを繰り上げましたが、このカウントパルスから 0.5 s しか経過していません。

2818

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定
パラメータ

宣言

データ
タイプ

既定

説明

StatusDown

OUTPUT

BOOL

FALSE

ステータスビット:最後のカウントパルスがカウンタをデクリメントしましたが、このカウントパルスから 0.5 s しか経過していません。

CompResult

OUTPUT

BOOL

FALSE

0

ステータスビット:選択された比較条件に基づく DQ0 用比較イベントが発生しました(ステータス変更)。
動作モード[カウント値を基準として使用]でカウンタ値が開始値にセットされた場合、CompResult0 はセットされません。
入力パラメータ EventAck の立ち上がりエッジは、
CompResult0 をリセットするために使用されます。

CompResult

OUTPUT

BOOL

FALSE

1

ステータスビット:選択された比較条件に基づく DQ1 用比較イベントが発生しました(ステータス変更)。
動作モード[カウント値を基準として使用]でカウンタ値が開始値にセットされた場合、CompResult1 はセットされません。
入力パラメータ EventAck の立ち上がりエッジは、
CompResult1 をリセットするために使用されます。

SyncStatus

OUTPUT

BOOL

FALSE

ステータスビット:同期イベントが発生しました
入力パラメータ SyncEnable がセットされている場合、設定済みエッジが、それぞれのデジタル入力のステータス
ビット SyncStatus をセットします。
SyncStatus は、以下の立ち下がりエッジでリセットされます。
• SyncEnable (入力パラメータ)または• SyncUpDirection (静的タグ)または• SyncDownDirection (静的タグ)

CaptureStat

OUTPUT

BOOL

us

FALSE

ステータスビット:Capture イベントが発生しました、出
力パラメータ CapturedValue は有効な Capture 値を所有しています
入力パラメータ CaptureEnable がセットされている場
合、設定済みのエッジによって個々のデジタル入力でス
テータスビット CaptureStatus.がセットされます。
入力パラメータ CaptureEnable の立ち下がりエッジを使用して CaptureStatus をリセットします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2819

テクノロジー
5.3 カウントと測定
パラメータ

宣言

データ
タイプ

既定

説明

ZeroStatus

OUTPUT

BOOL

FALSE

ステータスビット:CountValue が、カウント方向に関係な
く、値「0」に達しました
入力パラメータ EventAck の立ち上がりエッジを使用してZeroStatus をリセットします。

PosOverflow OUTPUT

BOOL

FALSE

ステータスビット:CountValue が、正の方向で、カウント上限値に違反しました
入力パラメータ EventAck の立ち上がりエッジを使用して
PosOverflow をリセットします。

NegOverflo

OUTPUT

BOOL

FALSE

w

ステータスビット:CountValue が、負の方向で、カウント下限値に違反しました
入力パラメータ EventAck の立ち上がりエッジを使用してNegOverflow をリセットします。

Error

OUTPUT

BOOL

FALSE

エラーが発生しました。エラーの原因は、出力パラメー
タ ErrorID を参照してください。

ErrorIDOUTPUT

WORD

0ErrorID (ページ 2823)パラメータに、エラーメッセージの番号が表示されます。
ErrorID = 0000H:エラーはありません。

CountValueOUTPUT

DINT

0

カウンタ現在値

CapturedVal

OUTPUT

DINT

0

最後に取得された Capture 値。この値は、入力パラメーue

タ CaptureEnable に関係なく、次の Capture イベントまで保持されます。
新しい Capture イベントが発生した場合、CaptureStatusがセットされ、入力パラメータ CaptureEnable の立ち下
がりエッジを使用してユーザーによってリセットされます。

MeasuredVal OUTPUT

REAL

0.0

ue
CompareMe
asuredValue
1

周波数、持続時間、または速度用の現在の測定値(構成に応じて異なる)OUTPUT

BOOL

FALSE

ステータスビット:
FALSE: 動作モード[カウント値を基準として使用]; 比較ファンクションはカウンタ値と連携します
TRUE: 動作モード[測定値を基準として使用]; 比較ファン
クションは測定値と連携します

1

High_Speed_Counter バージョン V3.0 以降で使用できます

2820

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定

High_Speed_Counter 静的変数
タグ

データタ
イプ

既定

アクセス

説明

NewCountValue

DINT

L#0

書き込み

新しいカウンタ値

NewReferenceValue0

DINT

L#0

書き込み

新しい比較値 0

NewReferenceValue1

DINT

L#10

書き込み

新しい比較値 1

NewReferenceValue0_ REAL

L#0.0

書き込み

測定モードでの新しい比較値 0L#10.0書き込み

測定モードでの新しい比較値 1

M

1

NewReferenceValue1_ REAL
M

1

NewUpperLimit

DINT

L#214748364 書き込み

新しいカウント上限値

7
NewLowerLimit

DINT

L#-21474836

書き込み

新しいカウント下限値

48
NewStartValue

DINT

L#0

書き込み

新しい開始値

CurReferenceValue0

DINT

L#0

読み出し

現在の比較値 0

CurReferenceValue1

DINT

L#10

読み出し

現在の比較値 1

CurReferenceValue0_

REAL

L#0.0

読み出し

測定モードでの現在の比較値 0

REAL

L#10.0読み出し

測定モードでの現在の比較値 1

DINT

L#214748364 読み出し

M

1

CurReferenceValue1_
M

1

CurUpperLimit

現在のカウント上限値

7
CurLowerLimit

DINT

L#-21474836

読み出し

現在のカウント下限値

48
CurStartValue

DINT

L#0

読み出し

現在の開始値

NewDirection

INT

0

書き込み

新しいカウント方向:+1:上向きのカウント方向-1:下向きのカウント方向

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2821

テクノロジー
5.3 カウントと測定
タグ

データタ
イプ

既定

アクセス

説明

AdditionalErrorID

DWORD

W#16#0000

読み出し

内部命令、たとえば RDREC のエラー情報

UserCmdFlags

STRUCT-

SetNewDirection

BOOL

FALSE

書き込み

新しいカウント方向の設定

SetUpperLimit

BOOL

FALSE

書き込み

カウント上限値の設定

SetLowerLimit

BOOL

FALSE

書き込み

カウント下限値の設定

SetReferenceValue BOOL

FALSE

書き込み

比較値 0 の設定

FALSE

書き込み

比較値 1 の設定

0
SetReferenceValue BOOL
1
SetCountValue

BOOL

FALSE

書き込み

新しいカウンタ値の設定

SetStartValue

BOOL

FALSE

書き込み

開始値のセット

SyncDownDirectio BOOL

TRUE

書き込み

下方向のカウントの同期を有効にしますnSyncUpDirection

BOOL

TRUE

書き込み

上方向のカウントの同期を有効にします

SetDQ0

BOOL

FALSE

書き込み

デジタル出力 DQ0 の設定

SetDQ1

BOOL

FALSE

書き込み

デジタル出力 DQ1 の設定

ManualCtrlDQ0

BOOL

FALSE

書き込み

デジタル出力 DQ0 の設定を有効にします
TRUE:• SetDQ0 設定 DQ0• 制御ビット TM_CTRL_DQ0 = FALSE
FALSE:• 設定が有効ではありません• 制御ビット TM_CTRL_DQ0 = TRUE

ManualCtrlDQ1

BOOL

FALSE

書き込み

デジタル出力 DQ1 の設定を有効にします
TRUE:• SetDQ1 設定 DQ1• 制御ビット TM_CTRL_DQ1 = FALSE
FALSE:• 設定が有効ではありません• 制御ビット TM_CTRL_DQ1 = TRUE

UserStatusFlags

STRUCT-

StatusDI0

BOOL

FALSE

2822

読み出し

デジタル入力 DI0 の現在のステータス

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定
タグ

1

データタ
イプ

既定

アクセス

説明

StatusDI1

BOOL

FALSE

読み出し

デジタル入力 DI1 の現在のステータス

StatusDI2

BOOL

FALSE

読み出し

デジタル入力 DI2 の現在のステータス

StatusDQ0

BOOL

FALSE

読み出し

デジタル出力 DQ0 の現在のステータス

StatusDQ1

BOOL

FALSE

読み出し

デジタル出力 DQ1 の現在のステータス

High_Speed_Counter バージョン V3.0 以降で使用できます

パラメータ ErrorID のエラーコード
エラーコード説明(W#16#...)
0000

エラーなし

テクノロジーモジュールからのエラーメッセージ
80A1

フィードバックインターフェースからの POWER_ERROR:不正な電源電圧 L+

80A2

フィードバックインターフェースからの ENC_ERROR :不正なエンコーダ信号

80A3

フィードバックインターフェースからの LD_ERROR:制御インターフェースを介したロー
ディング時のエラー

命令のエラーメッセージ High_Speed_Counter
80B1

無効なカウント方向

80B4

動作モード[カウント値を基準として使用]の場合、以下が適用されます。
新しいカウント下限値が以下の条件を満たしていません。
• カウント下限値 < カウント上限値• カウント下限値 <= 比較値/開始値
動作モード[測定値を基準として使用]の場合、以下が適用されます。
新しいカウント下限値が以下の条件を満たしていません。
• カウント下限値 < カウント上限値• カウント下限値 <= 開始値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2823

テクノロジー
5.3 カウントと測定
エラーコード説明(W#16#...)
80B5

動作モード[カウント値を基準として使用]の場合、以下が適用されます。
新しいカウント上限値が以下の条件を満たしていません。
• カウント下限値 < カウント上限値• カウント上限値 >= 比較値/開始値
動作モード[測定値を基準として使用]の場合、以下が適用されます。
新しいカウント上限値が以下の条件を満たしていません。
• カウント下限値 < カウント上限値• カウント上限値 >= 開始値

80B6

新しい開始値が以下の条件を満たしていません。
• カウント下限値 <= 開始値 <= カウント上限値

80B7

新しいカウンタ値が以下の条件を満たしていません。
• カウント下限値 <= カウンタ値 <= カウント上限値

80B8

動作モード[カウント値を基準として使用]の場合、以下が適用されます。
新しい比較値 0 が以下の条件を満たしていません。
• カウント下限値 <= 比較値 0 <= カウント上限値• 比較値 0 < 比較値 1
動作モード[測定値を基準として使用]の場合、以下が適用されます。
新しい比較値 0 が以下の条件を満たしていません。
• 比較値 0 < 比較値 1

80B9

動作モード[カウント値を基準として使用]の場合、以下が適用されます。
新しい比較値 1 が以下の条件を満たしていません。
• カウント下限値 <= 比較値 1 <= カウント上限値• 比較値 0 < 比較値 1
動作モード[測定値を基準として使用]の場合、以下が適用されます。
新しい比較値 1 が以下の条件を満たしていません。
• 比較値 0 < 比較値 1

80C0

命令 High_Speed_Counter が同じインスタンス(DB)で複数回呼び出されました。

80C1

テクノロジーモジュールとの通信が失敗しました(データレコードの読み出し):RDREC の
エラー情報が静的タグ AdditionalErrorID に保存されました。

2824

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定
エラーコード説明(W#16#...)
80C2

テクノロジーモジュールとの通信が失敗しました(データレコードの書き込み):WRREC の
エラー情報が静的タグ AdditionalErrorID に保存されました。

80C3

入力データへのアクセス(フィードバックインターフェース)が失敗しました:GETIO_PARTのエラー情報が静的タグ AdditionalErrorID に保存されました。

80C4

出力データへのアクセス(制御インターフェース)が失敗しました:SETIO_PART のエラー情報が静的タグ AdditionalErrorID に保存されました。

80C5

OB の現在の開始情報の読み取りが失敗しました:RD_SINFO のエラー情報が静的タグ
AdditionalErrorID に保存されました。

80C6

テクノロジーモジュール:の I/O アドレスの取得に失敗しました:RD_ADDR のエラー情報が静的タグ AdditionalErrorID に保存されました。

5.3.2

SSI_Absolute_Encoder

5.3.2.1

SSI_Absolute_Encoder

説明 SSI_Absolute_Encoder

説明
SSI_Absolute_Encoder 命令は、ユーザープログラム経由でテクノロジーモジュール
TM PosInput の位置入力および測定ファンクションを制御するために使用されます。

呼び出し
この命令は、周期的な場合でも時間制御されたプログラムの場合でも、チャンネルごとに 1
回呼び出す必要があります。この呼び出しは、イベント制御割り込みプログラムでは許可されていません。

動作原理
位置の値:位置の値は、出力パラメータ PositionValue に表示されます。位置の値は、命令が呼び出されるたびに更新されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2825

テクノロジー
5.3 カウントと測定
測定値:テクノロジーモジュールは、設定された更新時間に基づく命令呼び出しとは非同期に測定値を更新します。テクノロジーモジュールによって最後に測定された測定値が、命令が呼び出されるたびに、出力パラメータ MeasuredValue で更新されます。
測定値と位置の値は、出力パラメータとして同時に表示されます。
測定値の代わりに、完全な SSI フレームを出力パラメータ CompleteSSIFrame で戻すことができます。パラメータ割り当てに応じて、MeasuredValue か CompleteSSIFrame のどち
らかが有効です。
Capture:出力パラメータ CaptureStatus = TRUE は、出力パラメータ CapturedValue の有効な Capture 値を示します。
• Capture 値は、以下の条件で取り込まれます。
– デジタル入力に、パラメータ割り当て「Capture」がある。
– CaptureEnable = TRUE
– デジタル入力のエッジで、Capture ファンクションを使用。
• 出力パラメータ CaptureStatus は、入力パラメータ CaptureEnable の立ち下がりエッジ
でリセットされます。
ユーザープログラムによるパラメータ変更
ユーザープログラムを使用してパラメータを変更するには、以下の手順に従います。
1. 関連する Set タグをチェックして、テクノロジーオブジェクトがパラメータ変更の準備が完了しているかどうか(Set タグ = FALSE)、または変更ジョブがまだ実行中であるかどうか(Set
タグ = TRUE)を判定します。
テクノロジーオブジェクトインスタンス DB の Static タグで、UserCmdFlags の以下の Set
タグをこのために使用できます。

– SetReferenceValue0– SetReferenceValue1
2. テクノロジーオブジェクトがパラメータ変更の準備が完了している場合、関連する Static タ
グを変更します。
テクノロジーオブジェクトインスタンス DB の以下の Static タグをこのために使用できます。

– NewReferenceValue0 / NewReferenceValue0_M (SetReferenceValue0 用)– NewReferenceValue1 / NewReferenceValue1_M (SetReferenceValue1 用)
3. 関連する Set タグを変更ジョブの実行用に設定します。
4. 出力パラメータ Error を使用して、エラーが発生しているかどうかをチェックします。
エラーが発生しておらず、Set タグがテクノロジーオブジェクトによって自動的にリセットされている場合、パラメータ変更は正常に行われました。

動作モード[DQ0 の動作]で、テクノロジーオブジェクトの動作モードを設定します。

2826

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定
この動作モードは、出力パラメータ CompareMeasuredValue によって示されます。
状態

説明

FALSE

動作モード[位置の値(SSI 絶対値)を基準として使用]:
比較ファンクションは位置の値と連携します。この動作モードでは、特に以下の Static 変数が使用されます。
• NewReferenceValue0• NewReferenceValue1• CurReferenceValue0• CurReferenceValue1
動作モード[測定値を基準として使用]の 4 つの特定の Static 変数は無視されます。

TRUE

動作モード[測定値を基準として使用]:
比較ファンクションは測定値と連携します。この動作モードでは、
特に以下の Static 変数が使用されます。
• NewReferenceValue0_M• NewReferenceValue1_M• CurReferenceValue0_M• CurReferenceValue1_M
動作モード[位置の値(SSI 絶対値)を基準として使用]の 4 つの特定のStatic タグは無視されます。

イベントの確認通知されたイベントを入力パラメータ EventAck の立ち上がりエッジを使用して確認しま
す。EventAck は、テクノロジーオブジェクトがカウントチャンネルの以下のイベントのステータスビットをリセットするまで、設定状態であることが必要です。
• CompResult0• CompResult1• ZeroStatus• PosOverflow• NegOverflow

デジタル入力のステータス
デジタル入力のステータスは、Static タグ StatusDI0 および StatusDI1 経由で取得します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2827

テクノロジー
5.3 カウントと測定

ユーザープログラムによるデジタル出力の使用
以下のケースでは、デジタル出力を命令経由で設定できます。
ケース

説明[ユーザープログラムによる使用]が[出力 それぞれのデジタル出力 DQM は、SetDQmのセット]に対して設定されています。

の値の後に続きます。

[CPU からのコマンド設定から比較値まそれぞれのデジタル出力 DQm は、SetDQm

で]が、[出力のセット]に対して設定され の立ち下がりエッジで設定されます。DQmています。

は、位置の値が比較値に一致するとき、または SetDQm の立ち下がりエッジで、リセットされます。

それぞれの Static 変数 ManualCtrlDQm

それぞれのデジタル出力 DQM は、SetDQmを設定します(一時的な上書き)。

の値の後に続きます。

エラーに対する応答
I 命令の呼び出し中またはテクノロジーモジュールでエラーが発生した場合、出力パラメ
ータ Error が設定されます。詳細なエラー情報は、出力パラメータ ErrorID (ページ 2833)に表示されます。
エラーの原因を取り除き、入力パラメータ ErrorAck のセットによってエラーメッセージの確認応答をします。保留中のエラーがしれ以上存在しない場合は、テクノロジーオブジェ
クトが出力パラメータ、Error をリセットします。直前のエラーを確認するまで、新しいエラーは通知されません。

2828

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定

入力パラメータ SSI_Absolute_Encoder
パラメータ

宣言

データ
タイプ

既定

説明

CaptureEnab INPUT

BOOL

FALSE

Capture ファンクションの有効化

leその有効化の後、関連するデジタル入力の次の設定済みのエッジで Capture イベントが発生します。
CaptureEnable の立ち下がりエッジは、出力パラメータ
CaptureStatus をリセットします。CaptureEnable の立ち
下がりエッジは、Capture イベントが発生しない場合でも、その有効化をリセットします。
CaptureEnable に関係なく、最後の値は、次の Capture イ
ベントまで、出力パラメータ CapturedValue に保持されます。

ErrorAck

INPUT

BOOL

FALSE

SSI_Absolute_Encoder V1.0:
立ち上がりエッジが、報告されたエラーステータスを確認します。
V2.0 以降の SSI_Absolute_Encoder:High レベルが、報告されたエラーステータスを確認します。

EventAck

INPUT

BOOL

FALSE

立ち上がりエッジが以下の出力パラメータをリセットします。
• CompResult0• CompResult1• ZeroStatus• PosOverflow• NegOverflow

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2829

テクノロジー
5.3 カウントと測定

出力パラメータ SSI_Absolute_Encoder
パラメータ

宣言

データ
タイプ

既定

説明

StatusHW

OUTPUT

BOOL

FALSE

テクノロジーモジュール:のステータスビット:モジュールが設定済みで、操作準備ができています。モジュールデータが有効です。

StatusUp

OUTPUT

BOOL

FALSE

ステータスビット:最後の位置の値が正の方向に変わりましたが、変わってから 0.5 秒しか経過していません。

StatusDown

OUTPUT

BOOL

FALSE

ステータスビット:最後の位置の値が負の方向に変わりましたが、変わってから 0.5 秒しか経過していません。

CompResult

OUTPUT

BOOL

FALSE

ステータスビット:選択された比較条件の結果として、
DQ0 (状態の変化)用の比較イベントが発生しています。

0

入力パラメータ EventAck の立ち上がりエッジは、
CompResult0 をリセットするために使用されます。
CompResult

OUTPUT

BOOL

FALSE

ステータスビット:選択された比較条件の結果として、DQ1 (状態の変化)用の比較イベントが発生しています。

1

入力パラメータ EventAck の立ち上がりエッジは、
CompResult1 をリセットするために使用されます。
CaptureStat

OUTPUT

BOOL

FALSE

us

ステータスビット:Capture イベントが発生しました、出
力パラメータ CapturedValue は有効な Capture 値を所有しています
入力パラメータ CaptureEnable がセットされている場
合、設定済みのエッジによって個々のデジタル入力でス
テータスビット CaptureStatus.がセットされます。
入力パラメータ CaptureEnable の立ち下がりエッジを使用して CaptureStatus をリセットします。

ZeroStatus

OUTPUT

BOOL

FALSE

ステータスビット:PositionValue が、カウント方向に関係なく、値「0」に達するか、超えました。
入力パラメータ EventAck の立ち上がりエッジを使用してZeroStatus をリセットします。

2830

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定
パラメータ

宣言

PosOverflow OUTPUT

データ
タイプ

既定

説明

BOOL

FALSE

ステータスビット:PositionValue が、正の方向で、エンコーダの位置の値範囲の上限値を超えました。
入力パラメータ EventAck の立ち上がりエッジを使用して
PosOverflow をリセットします。

NegOverflo

OUTPUT

BOOL

FALSE

w

ステータスビット:PositionValue が、負の方向で、エンコーダの位置の値範囲の下限値を超えました。
入力パラメータ EventAck の立ち上がりエッジを使用してNegOverflow をリセットします。

Error

OUTPUT

BOOL

FALSE

エラーが発生しました。エラーの原因は、出力パラメー
タ ErrorID を参照してください。

ErrorIDOUTPUT

WORD

0ErrorID (ページ 2833)パラメータに、エラーメッセージの番号が表示されます。
ErrorID = 0000H:エラーはありません。

PositionValu OUTPUT

DINT

0

現在の位置の値

DINT

0

最後に取得された Capture 値。この値は、入力パラメー

eCapturedVal

OUTPUTue

タ CaptureEnable に関係なく、次の Capture イベントまで保持されます。
新しい Capture イベントが発生した場合、CaptureStatusがセットされ、入力パラメータ CaptureEnable の立ち下
がりエッジを使用してユーザーによってリセットされます。

MeasuredVal OUTPUT

REAL

ue

0.0

周波数、持続時間、または速度用の現在の測定値(構成に応じて異なる)[測定値]でのテクノロジーオブジェクトのパラメータ割り
当てに応じて、MeasuredValue か CompleteSSIFrame のどちらかが有効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2831

テクノロジー
5.3 カウントと測定
パラメータ

宣言

CompleteSSI OUTPUT

データ
タイプ

既定

DWORD 0Frame

説明
最後に受信された完全な SSI フレーム(最下位 32 ビット)
[測定値]でのテクノロジーオブジェクトのパラメータ割り
当てに応じて、MeasuredValue か CompleteSSIFrame のどちらかが有効です。

CompareMe

OUTPUT

BOOL

FALSE

asuredValue

ステータスビット:
FALSE: 動作モード[位置の値(SSI 絶対値)を基準として使用]; 位置の値が基準として使用されます
TRUE: 動作モード[測定値を基準として使用]; 測定値が基準として使用されます

静的タグ SSI_Absolute_Encoder
タグ

データタ
イプ

既定

アクセス

説明

NewReferenceValue0

DINT

L#0

書き込み

動作モード[位置の値(SSI 絶対値)を基準として使用]の新しい比較値 0

NewReferenceValue1

DINT

L#10

書き込み

動作モード[位置の値(SSI 絶対値)を基準として使用]の新しい比較値 1

NewReferenceValue0_ REAL

L#0.0

書き込み

M

しい比較値 0

NewReferenceValue1_ REAL

L#10.0書き込み

M
CurReferenceValue0

動作モード[測定値を基準として使用]の新動作モード[測定値を基準として使用]の新
しい比較値 1

DINT

L#0

読み出し

動作モード[位置の値(SSI 絶対値)を基準として使用]の現在の比較値 0

CurReferenceValue1

DINT

L#10

読み出し

動作モード[位置の値(SSI 絶対値)を基準として使用]の現在の比較値 1

CurReferenceValue0_

REAL

L#0.0

読み出し

M
CurReferenceValue1_

在の比較値 0
REAL

L#10.0

読み出しM

動作モード[測定値を基準として使用]の現在の比較値 1

AdditionalErrorID

DWORD

W#16#0000

UserCmdFlags

STRUCT-

2832

動作モード[測定値を基準として使用]の現読み出し

内部命令、たとえば RDREC のエラー情報

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.3 カウントと測定
タグ

データタ
イプ

SetReferenceValue BOOL

既定

アクセス

説明

FALSE

書き込み

比較値 0 の設定

FALSE

書き込み

比較値 1 の設定

0
SetReferenceValue BOOL
1
SetDQ0

BOOL

FALSE

書き込み

デジタル出力 DQ0 の設定

SetDQ1

BOOL

FALSE

書き込み

デジタル出力 DQ1 の設定

ManualCtrlDQ0

BOOL

FALSE

書き込み

デジタル出力 DQ0 の設定を有効にします。
TRUE:SetDQ0 が DQ01 を設定
FALSE:設定が有効ではありません

ManualCtrlDQ1

BOOL

FALSE

書き込み

デジタル出力 DQ1 の設定を有効にします
TRUE:SetDQ1 が DQ11 を設定
FALSE:設定が有効ではありません

1

UserStatusFlags

STRUCT-

StatusDI0

BOOL

FALSE

読み出し

デジタル入力 DI0 の現在のステータス

StatusDI1

BOOL

FALSE

読み出し

デジタル入力 DI1 の現在のステータス

StatusDQ0

BOOL

FALSE

読み出し

デジタル出力 DQ0 の現在のステータス

StatusDQ1

BOOL

FALSE

読み出し

デジタル出力 DQ1 の現在のステータス

命令が、モジュールの制御インターフェースで、TM_CTRL_DQm ビットを FALSE.にセットします。Static タグ
SetDQm は、 制御ビット SET_DQm に対して効果を持ちます。

パラメータ ErrorID のエラーコード
エラーコード説明(W#16#...)
0000

エラーなし

テクノロジーモジュールからのエラーメッセージ
80A1

フィードバックインターフェースからの POWER_ERROR:不正な電源電圧 L+

80A2

フィードバックインターフェースからの ENC_ERROR :不正なエンコーダ信号

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202833

テクノロジー
5.4 PID 制御
エラーコード説明(W#16#...)
80A3

フィードバックインターフェースからの LD_ERROR:制御インターフェースを介したロー
ディング時のエラー

命令のエラーメッセージ SSI_Absolute_Encoder
80B8

新しい比較値 0 が以下の条件を満たしていません。
• カウント下限値 <= 比較値 0 <= カウント上限値• 比較値 0 < 比較値 180B9

新しい比較値 1 が以下の条件を満たしていません。
• カウント下限値 <= 比較値 1 <= カウント上限値• 比較値 0 < 比較値 180C0

命令が同じインスタンス(DB)で複数回呼び出されました。

80C1

テクノロジーモジュールとの通信が失敗しました(データレコードの読み出し):RDREC の
エラー情報が静的タグ AdditionalErrorID に保存されました。

80C2

テクノロジーモジュールとの通信が失敗しました(データレコードの書き込み):WRREC の
エラー情報が静的タグ AdditionalErrorID に保存されました。

80C5

OB の現在の開始情報の読み取りが失敗しました:RD_SINFO のエラー情報が静的タグ
AdditionalErrorID に保存されました。

80C6

テクノロジーモジュール:の I/O アドレスの取得に失敗しました:RD_ADDR のエラー情報が静的タグ AdditionalErrorID に保存されました。

5.4

PID 制御5.4.1

PID_Compact

5.4.1.1

PID_Compact の説明

説明
PID_Compact 命令は、PID コントローラに、自動および手動モードでの統合された同調機能を提供します。

2834

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

呼び出し
PID_Compact は、一定の間隔(呼び出し OB(可能な場合、周期割り込み OB)のサイクルタイム)で呼び出されます。

スタートアップ
CPU のスタートアップ時には、PID_Compact は、最後に有効であった動作モードで開始されます。 PID_ Compact を[無効]モードのままに保持するには、
sb_RunModeByStartup = FALSE を設定してください。

サンプリング時間のモニタ PID_Compact
理想的には、サンプリング時間は呼び出し OB のサイクルタイムと等値です。PID_Compact
命令は、2 つの呼び出し間の時間間隔を測定します。 これは、現在のサンプル時間です。
動作モードの変更ごと、また、初期スタートアップ時に、最初の 10 個のサンプリング時間
からサンプリング時間の平均値が求められます。 現在のサンプリング時間がこの平均値か
ら大きくずれ過ぎている場合は、 Error = 0800 hex が発生し、PID_Compact が[無効]モードに切り替わります。
以下の条件が発生すると、PID_Compact 1.1 は、コントローラ同調時に、[無効]モードに設定されます。
• 新しい平均値 >= 1.1 x 古い平均値• 新しい平均値 <= 0.9 x 古い平均値
自動モードでは、以下の条件が発生すると、PID_Compact 1.1 は[無効]モードに設定されます。
• 新しい平均値 >= 1.5 x 古い平均値• 新しい平均値 <= 0.5 x 古い平均値
自動モードでのコントローラ同調時に、以下の条件が発生すると、PID_Compact 1.0 は[無効]動作モードに設定されます。
• 新しい平均値 >= 1.1 x 古い平均値• 新しい平均値 <= 0.9 x 古い平均値• 現在のサンプリング時間 >= 1.5 x 現在の平均値• 現在のサンプリング時間 <= 0.5 x 現在の平均値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2835

テクノロジー
5.4 PID 制御

PID アルゴリズムのサンプリング時間
コントロールされたシステムは、出力値の変更に応答するために、一定量の時間を必要とします。 このため、すべてのサイクルごとに出力値を計算することはお奨めしません。 PID
アルゴリズムのサンプリング時間は、出力の 2 つの計算の間の時間を表わします。 それはコントローラ同調時に計算され、サイクルタイムの倍数に四捨五入されます。
PID_Compact の他のすべてのファンクションはすべての呼び出しごとに実行されます。

PID アルゴリズム
PID_Compact は、比例および微分動作のワインドアップ防止および重み付け付きの PIDT1
コントローラです。 出力値の計算には、次の数式が使用されます。
1

y = KpTD · s[ (b · w - x) + T · s (w - x) + a · T · s + 1 (c · w - x) ]
I

D

シンボル

説明

y

出力値

Kp

比例ゲイン

s

ラプラス演算子B

比例動作の重み付け

W

セットポイント

x

プロセス値

TI

積分動作時間A

微分遅延係数(T1 = a × TD)
微分動作時間C

2836

微分動作重み付け

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

PID_Compact のブロックダイアグラム,QSXWB3(5EB,QSXWB3(5B2Q

6FDOH&53B,1,QSXW:DUQLQJB/



,QSXW
6HWSRLQW,QSXW:DUQLQJB+

39B$/50

3,'7
$QWL:LQGXS

/LPLW

˂X

2XWSXW
0DQXDO(QDEOH

EB,QY&WUO

,19

/LPLW


0DQXDO9DOXH









&53B287

2XWSXWB3(5
3:0

2XWSXWB3:0

ワインドアップ防止付きの PIDT1 のブロックダイアグラム
6HWSRLQW Z

Eዌኁዐኦቿአኴ棁㷱
/,0,7

,

.3

\


F

6FDOHG,QSXW [TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020



'7

2837

テクノロジー
5.4 PID 制御

エラーに対する応答
発生したエラーはパラメータ Error に出力され、PID_Compact が[無効]モードに切り替わります。 Reset パラメータを使用して、エラーをリセットしてください。

5.4.1.2

PID_Compact の入力パラメータ

表 5-1

パラメータ

データタ デフォルト
イプ

説明

Setpoint

REAL

0.0

自動モードでの PID コントローラのセットポイント

Input

REAL

0.0

ユーザープログラムの変数が、プロセス値のソースとして使用されます。
パラメータ Input を使用する場合は、
sPid_Cmpt.b_Input_PER_On = FALSE を設定する必要があります。

Input_PER

WORD

W#16#0

プロセス値のソースとしてのアナログ入力
パラメータ Input_PER を使用する場合は、
sPid_Cmpt.b_Input_PER_On = TRUE を設定する必要があります。

ManualEnable

BOOL

FALSE

• FALSE -> TRUE エッジでは「手動モード」 が選択され、State = 4, sRet.i_Mode はそのまま変わりません。
• TRUE -> FALSE エッジでは、直近の有効な動作モード State=sRet.i_Mode が選択されます。
sRet.i_Mode の変更は、ManualEnable = TRUE 時には効果を持ちません。 sRet.i_Mode の変更は、ManualEnable での TRUE-> FALSE エッジ時に考慮されます。
PID_Compact V1.2 und PID_Compact V1.0
CPU の開始時に ManualEnable = TRUE の場合、PID_Compact
が手動モードで開始されます。 ManualEnable での立ち上がり
エッジ(FALSE -> TRUE)は不要です。
PID_Compact V1.1
CPU の開始時に、ManualEnable での立ち上がりエッジ(FALSE->TRUE)の場合のみ、PID_Compact が手動モードに切り替わります。 立ち上がりエッジがない場合は、
ManualEnable が FALSE であった最後の動作モードでPID_Compact が開始されます。

2838

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
パラメータ

データタ デフォルト
イプ

説明

ManualValue

REAL

手動値

0.0

この値は、手動モードで、出力値として使用されます。
Reset

BOOL

FALSE

Reset パラメータ (ページ 2852)は、コントローラを再起動します。

5.4.1.3

PID_Compact の出力パラメータ

表 5-2

Parameter

データタ
イプ

デフォルト

説明

ScaledInput

REAL

0.0

スケーリングされたプロセス値の出力

出力「Output」、「Output_PER」、および「Output_PWM」を並行して使用できます。
Output

REAL

0.0

REAL フォーマットの出力値

Output_PER

WORD

W#16#0アナログ出力値

Output_PWM

BOOL

FALSE

パルス幅調整された出力値
出力値は、最小オン/オフ回数によって形成されます。

SetpointLimit_H

BOOL

FALSE

SetpointLimit_H = TRUE の場合、セットポイント絶対上限値に達しています。 CPU のセットポイントは、設定済みのセットポイント絶対上限値を超えることはできません。 設定済
みのプロセス値絶対上限値は、セットポイント上限値のデフ
ォルト値です。
sPid_Cmpt.r_Sp_Hlm にプロセス値の制限範囲内の値を設定すると、この値がセットポイント上限値として使用されます。

SetpointLimit_L

BOOL

FALSE

SetpointLimit_L = TRUE の場合、セットポイント絶対下限値に到達済みです。 CPU では、セットポイントは、設定済みのセットポイント絶対下限値未満であってはいけません。 設
定済みのプロセス値絶対下限値は、セットポイント下限値のデフォルト設定です。
sPid_Cmpt.r_Sp_Llm にプロセス値の制限範囲内の値を設定すると、この値がセットポイント下限値として使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202839

テクノロジー
5.4 PID 制御
Parameter

データタ
イプ

デフォルト

説明

InputWarning_H

BOOL

FALSE

InputWarning_H = TRUE の場合、プロセス値が警告上限値に到達済みか、警告上限値を超えています。

InputWarning_L

BOOL

FALSE

InputWarning_L = TRUE の場合、プロセス値が警告下限値に到達済みか、警告下限値未満になっています。

State

INT

0

State パラメータ (ページ 2847)は、PID コントローラの現在の動作モードを示します。 動作モードを変更する場合は、変数 sRet.i_Mode
を使用します。
• State = 0: 無効• State = 1: 事前同調
• State = 2: 微調整• State = 3: 自動モード• State = 4: 手動モード

Error

DWORD

W#16#0Error パラメータ (ページ 2851)は、エラーメッセージを示します。
Error = 0000: 保留エラーなし

5.4.1.4

PID_Compact の静的変数リストされていない変数を変更してはいけません。 これらは、システム内部の目的のためだけに使用されます。

表 5-3

変数

データタ
イプ

デフォルト

説明

sb_GetCycleTime

BOOL

TRUE

sb_GetCycleTime = TRUE の場合、サイクルタ
イムの自動測定が開始されます。
CycleTime.StartEstimation = FALSE の場合、すぐに、測定が完了します。

sb_EnCyclEstimation

BOOL

TRUE

sb_EnCyclEstimation = TRUE の場合、サンプリ
ング時間 PID_Compact が計算されます。

2840

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データタ
イプ

デフォルト

説明

sb_EnCyclMonitoring

BOOL

TRUE

sb_EnCyclMonitoring = FALSE の場合、
PID_Compact はモニタされません。 サンプリ
ング時間以内に PID_Compact を実行できないと、0800 エラーは出力されず、PID_Compact
は「無効」モードに切り替わりません。

sb_RunModeByStartup

BOOL

TRUE

CPU 再起動時に直近の CPU モードを有効にします。
sb_RunModeByStartup = FALSE の場合、コントローラは、CPU スタートアップ後、無効なままです。
CPU スタートアップ後に
sb_RunModeByStartup = TRUE の場合、コント
ローラは直近の有効な動作モードに戻ります。

si_Unit

INT

0

プロセス値およびセットアポイントの測定単位(たとえば、℃またはºF)

si_TypeINT0

プロセス値およびセットポイントの物理量(たとえば、温度)sd_Warning

DWORD

DW#16#0

変数 sd_warning (ページ 2853)には、リセット
後または動作モードの最後の変更後に生成された警告が表示されます。

sBackUp.r_Gain

REAL

1.0

比例ゲインの保存エリア
sPid_Cmpt.b_LoadBackUp = TRUE で、sBackUp
構造体から値を再読み込みできます。

sBackUp.r_Ti

REAL

20.0

積分動作時間[秒]の格納エリア

sBackUp.r_Td

REAL

0.0

微分動作時間[秒]の格納エリア

sBackUp.r_A

REAL

0.0

微分遅延係数の保存エリア

sBackUp.r_B

REAL

0.0

比例操作重み係数の保存エリア

sBackUp.r_C

REAL

0.0

微分操作重み係数の保存エリア

sBackUp.r_Cycle

REAL

1.0

サンプリング時間 PID アルゴリズムの保存エリア

sPid_Calc.r_Cycle

REAL

0.1

PID_Compact 命令のサンプリング時間
r_Cycle が自動的に測定されます。通常、呼び出し OB のサイクルタイムと同じ値です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2841

テクノロジー
5.4 PID 制御
変数

データタ
イプ

デフォルト

説明

sPid_Calc.b_RunIn

BOOL

FALSE

• b_RunIn = FALSE
無効なモードまたは手動モードで微調整が開始されると、事前同調が開始されます。
事前同調の要件が満たされない場合、
PID_Compact は、b_RunIn = TRUE の場合と同様に応答します。
自動モードで微調整が開始されると、セットポイントを調整するために既存の PID パ
ラメータが使用されます。
この場合のみ、微調整が開始されます。事
前同調が可能でない場合、PID_Compact は「無効」モードに切り替えます。
• b_RunIn = TRUE
事前同調はスキップされます。
PID_3Compact は、最小または最大出力値を使用してセットポイントに到達しようとします。これによって、オーバーシュートの増加が起きる場合があります。この後、微調整が自動的に開始されます。
微調整後、b_RunIn が FALSE に設定されます。

sPid_Calc.b_CalcParamSUT

BOOL

FALSE

b_CalcParamSUT = TRUE の場合、事前同調用パラメータが再計算されます。 これによって、コントローラ同調を繰り返すことなく、パラメー
タ計算方法を変更できます。
計算後、b_CalcParamSUT が FALSE に設定されます。

sPid_Calc.b_CalcParamTIR

BOOL

FALSE

b_CalcParamTIR = TRUE の場合、微調整用パラメータが再計算されます。 これによって、コン
トローラ同調を繰り返すことなく、パラメータ計算方法を変更できます。#
計算後、b_CalcParamTIR が FALSE に設定され
ます。

2842

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データタ
イプ

デフォルト

説明

sPid_Calc.i_CtrlTypeSUT

INT

0

事前同調時のパラメータの計算に使用される方法:• i_CtrlTypeSUT = 0: Chien、Hrones、およびRestwick に従った PID• i_CtrlTypeSUT = 1: Chien、Hrones、およびRestwick に従った PI

sPid_Calc.i_CtrlTypeTIR

INT0

微調整時のパラメータの計算に使用される方法:• i_CtrlTypeTIR = 0: A PID (自動)• i_CtrlTypeTIR = 1: A PID (高速)• i_CtrlTypeTIR = 2: A PID (低速)
• i_CtrlTypeTIR = 3: Ziegler-Nichols PID• i_CtrlTypeTIR = 4: Ziegler-Nichols PI• i_CtrlTypeTIR = 5: Ziegler-Nichols P

sPid_Calc.r_Progress

REAL

0.0

コントローラ同調の進捗状況(パーセンテージ(0.0 kara ～ 100.0)で表示)

sPid_Cmpt.r_Sp_Hlm

REAL+3.402822

セットポイントの上限値

e+38

プロセス値制限範囲外の sPid_Cmpt.r_Sp_Hlmを設定すると、設定されたプロセス値絶対上限
値がセットポイント上限値として使用されます。
プロセス値制限範囲内の sPid_Cmpt.r_Sp_Hlmを設定すると、この値がセットポイント上限値として使用されます。

sPid_Cmpt.r_Sp_Llm

REAL-3.402822e セットポイント下限値+38

プロセス値制限範囲外の sPid_Cmpt.r_Sp_Llm
を設定すると、設定されたプロセス値絶対下限
値がセットポイント下限値として使用されます。
プロセス値制限範囲内の sPid_Cmpt.r_Sp_Llm
を設定すると、この値がセットポイント下限値として使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202843

テクノロジー
5.4 PID 制御
変数

データタ
イプ

デフォルト

説明

sPid_Cmpt.r_Pv_Norm_IN_1

REAL

0.0

低 Input_PER のスケーリング
Input_PER は、sPid_Cmpt 構造体の 2 つの値ペア r_Pv_Norm_OUT_1、r_Pv_Norm_IN_1 および r_Pv_Norm_OUT_2、r_Pv_Norm_IN_2 に基づいてパーセントに変換されます。

sPid_Cmpt.r_Pv_Norm_IN_2

REAL

27648.0

高 Input_PER のスケーリング
Input_PER は、sPid_Cmpt 構造体の 2 つの値ペア r_Pv_Norm_OUT_1、r_Pv_Norm_IN_1 および r_Pv_Norm_OUT_2、r_Pv_Norm_IN_2 に基づいてパーセントに変換されます。

sPid_Cmpt.r_Pv_Norm_OUT_1

REAL

0.0

スケーリングされた低プロセス値
Input_PER は、sPid_Cmpt 構造体の 2 つの値ペア r_Pv_Norm_OUT_1、r_Pv_Norm_IN_1 および r_Pv_Norm_OUT_2、r_Pv_Norm_IN_2 に基づいてパーセントに変換されます。

sPid_Cmpt.r_Pv_Norm_OUT_2

REAL

100.0

スケーリングされた High プロセス値
Input_PER は、sPid_Cmpt 構造体の 2 つの値ペア r_Pv_Norm_OUT_1、r_Pv_Norm_IN_1 および r_Pv_Norm_OUT_2、r_Pv_Norm_IN_2 に基づいてパーセントに変換されます。

sPid_Cmpt.r_Lmn_Hlm

REAL

100.0

出力パラメータ「Output」の出力上限値

sPid_Cmpt.r_Lmn_Llm

REAL

0.0

出力パラメータ「Output」の出力下限値

sPid_Cmpt.b_Input_PER_On

BOOL

TRUE

b_Input_PER_On = TRUE の場合、パラメータ
Input_PER が使用されます。
b_Input_PER_On = FALSE の場合、パラメータ
Input が使用されます。

sPid_Cmpt.b_LoadBackUp

BOOL

FALSE

バックアップパラメータセットを有効にします。 最適化に失敗した場合は、このビットをセットすることにより、以前の PID パラメータを再度有効にすることができます。

sPid_Cmpt.b_InvCtrl

BOOL

FALSE

反転制御ロジック
b_InvCtrl = TRUE の場合、立ち上がり制御偏差が出力値を低減します。

2844

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データタ
イプ

デフォルト

説明

sPid_Cmpt.r_Lmn_Pwm_PPTm

REAL

0.0

パルス幅変調方式の最小オン時間(秒)が、以下に丸められます。
r_Lmn_Pwm_PPTm = r_Cycle または
r_Lmn_Pwm_PPTm = n*r_Cycle

sPid_Cmpt.r_Lmn_Pwm_PBTm

REAL

0.0

パルス幅変調方式の最小オフ時間(秒)が、以下に丸められます。
r_Lmn_Pwm_PBTm = r_Cycle または
r_Lmn_Pwm_PBTm = n*r_Cycle

sPid_Cmpt.r_Pv_Hlm

REAL

120.0

プロセス値の上限値
I/O 入力で、プロセス値が標準範囲よりも最大18%大きくなる場合があります(範囲オーバー)。 「プロセス値の上限値」の違反のエラー
はもう報告されません。 断線および短絡のみが認識され、PID_Compact が「無効」モードに切り替わります。
r_Pv_Hlm > r_Pv_Llm

sPid_Cmpt.r_Pv_Llm

REAL

0.0

プロセス値の下限値
r_Pv_Llm < r_Pv_Hlm

sPid_Cmpt.r_Pv_HWrn

REAL+3.402822

プロセス値の警告上限値

e+38

プロセス値制限範囲外の r_Pv_HWrn を設定すると、設定されたプロセス値絶対上限値が警告
上限値として使用されます。
プロセス値制限範囲内の r_Pv_HWrn を設定すると、この値が警告上限値として使用されます。
r_Pv_HWrn > r_Pv_LWrn
r_Pv_HWrn ≤ r_Pv_Hlm

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2845

テクノロジー
5.4 PID 制御
変数

データタ
イプ

デフォルト

sPid_Cmpt.r_Pv_LWrn

REAL-3.402822e プロセス値の警告下限値+38

説明

プロセス値制限範囲外の r_Pv_LWrn を設定すると、設定されたプロセス値絶対下限値が警告下限値として使用されます。
プロセス値制限範囲内の r_Pv_LWrn を設定すると、この値が警告下限値として使用されます。
r_Pv_LWrn < r_Pv_HWrn
r_Pv_LWrn ≥ r_Pv_LWrn

sParamCalc.i_Event_SUT

INT0

変数 i_Event_SUT (ページ 2854)は、「事前同調」の現在のフェースを示します。

sParamCalc.i_Event_TIR

INT0

変数 i_Event_TIR (ページ 2855)は、「微調整」の現在のフェーズを示します。

sRet.i_Mode

INT0

動作モードはエッジ制御によって変更されます。
以下への変更では、以下の動作モードが有効になります。
• i_Mode = 0: 「無効」(コントローラ停止)• i_Mode = 1: 「事前同調」モード• i_Mode = 2: 「微調整」モード• i_Mode = 3: 「自動モード」• i_Mode = 4: 「手動モード」

sRet.r_Ctrl_Gain

REAL

1.0

有効な比例ゲイン

sRet.r_Ctrl_Ti

REAL

20.0

• r_Ctrl_Ti > 0.0: 有効な積分動作時間• r_Ctrl_Ti = 0.0: 積分動作が無効です

sRet.r_Ctrl_Td

REAL

0.0

• r_Ctrl_Td > 0.0: 有効な微分動作時間• r_Ctrl_Td = 0.0: 微分動作が無効です

sRet.r_Ctrl_A

REAL

0.0

有効な微分遅延係数

sRet.r_Ctrl_B

REAL

0.0

有効な比例動作重み

sRet.r_Ctrl_C

REAL

0.0

有効な微分動作重み

sRet.r_Ctrl_Cycle

REAL

1.0

PID アルゴリズムの有効なサンプリング時間
r_Ctrl_Cycle がコントローラ同調時に計算され、r_Cycle の整数倍に丸められます。

2846

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

注記
PID コントローラの誤動作を回避するには、[無効]モードでこの表にリストされている変数を編集します。 変数「sRet.i_Mode」を「0」に設定して、「無効」モードが強制されます。

5.4.1.5

パラメータ State および sRet.i_Mode

パラメータの相互関係
State パラメータは、PID コントローラの現在の動作モードを示します。 State パラメータを変更することはできません。
動作モードを変更するには、sRet.i_Mode タグを変更する必要があります。 これは、新しい動作モードの値が sRet.i_Mode 内に存在するときにも適用されます。 最初に sRet.i_Mode= 0 を設定した後、 sRet.i_Mode = 3 を設定します。 コントローラの現在の動作モードがこの変更をサポートする場合、State は、sRet.i_Mode の値に設定されます。
PID_Compact が自動的に動作モードを切り替えるときは、State != sRet.i_Mode が適用されます。
例:
• 成功した事前同調
State = 3 で、sRet.i_Mode = 1• エラー
State = 0 で、sRet.i_Mode は同じ値のまま(たとえば、sRet.i_Mode = 3)
• ManualEnalbe = TRUE
State = 4 で、sRet.i_Mode は直前の値のまま(たとえば、sRet.i_Mode = 3)
注記
i_Mode = 0 で自動モードを終了しないで、成功した微調整を繰り返すこともできます。
1 つのサイクルについて、sRet.i_Mode を 9999 などの不正な値に設定すると、State に対して効果を持ちません。 次のサイクルで、Mode = 2 を設定します。 最初に[無効]モードに切り替えなくても、sRet.i_Mode を変更することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2847

テクノロジー
5.4 PID 制御

値の意味
State /
sRet.i_Mo
de

動作モードの説明

0

無効
コントローラがスイッチオフされます。
コントローラが、事前同調を行う前に、[無効]モードでした。
PID コントローラは、実行時にエラーが発生するか、コミッショニングウィンドウで[コント
ローラの無効化]アイコンをクリックすると、[無効]モードに切り替わります。

1

事前同調
事前同調では、出力値のジャンプに対するプロセス応答が決定され、変曲点が検索されます。
最適化 PID パラメータは、コントロールされるシステムの最大上昇率とデッドタイムの関数として計算されます。
事前同調の必要条件• コントロールが無効モードまたは手動オードであること• ManualEnable = FALSE• プロセス値は、セットポイントに近すぎる値であってはいけません。
|Setpoint - Input| > 0.3 * |sPid_Cmpt.r_Pv_Hlm - sPid_Cmpt.r_Pv_Llm|および|Setpoint - Input| > 0.5 * |Setpoint|• セットポイントは、同調時には変更できません。
プロセス値の安定性が高ければ高いほど、PID パラメータを計算し、結果の正確性を増すことが容易になります。 プロセス値のノイズは、プロセス値の上昇率がノイズに比べて大幅に高い限り、許可されます。
PID パラメータは再計算され、再び有効化される前に、sPid_Cmpt.b_LoadBackUp でバックア
ップされます。
事前同調が成功すると自動モードに切り替わり、事前同調が失敗すると[無効]モードに切り替わります。
事前同調のフェーズは、 変数 i_Event_SUT (ページ 2854)で示されます。

2848

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
State /
sRet.i_Mo
de

動作モードの説明

2

微調整
微調整は、プロセス値の一定の制限された振動を生成します。 PID パラメータは、この振動の振幅と周波数に基づいて最適化されます。 事前同調時と微調整時のプロセス応答間の相違が分析されます。 この分析の結果に基づいて、すべての PID パラメータが再計算されます。 微調整に基づく PID パラメータのほうが、通常、事前同調に基づく PID パラメータより優れたマスタ
コントロールと外乱動作を実現します。
PID_Compact は、自動的に、プロセス値のノイズよりも大きい振動を生成しようとします。 微
調整は、プロセス値の安定性によって最小限の影響しか受けません。
PID パラメータは再計算され、再び有効化される前に、sPid_Cmpt.b_LoadBackUp でバックア
ップされます。
微調整の必要条件• 外乱が予測されないこと。
• セットポイントとプロセス値が、設定済みの制限範囲内であること。
• セットポイントは、微調整時には変更できないこと。
• ManualEnable = FALSE• 自動(State = 3)、無効(State = 0)、または手動(State = 4)モードであること。
微調整は、開始されたときのモードに従って以下のように実行されます。
• 自動モード(State = 3)
コントローラ同調を使用して既存の PID パラメータを改善する場合は、自動モードで微調整を開始します。
PID_Comact は、コントロールループが安定し、微調整の必要条件が満たされるまでは、既存の PID パラメータを使用して調整されます。 この場合のみ、微調整が開始されます。
• 無効モード(State = 0)または手動(State = 4)モード
事前同調の必要条件が満たされると、事前同調が開始されます。 コントロールループが安定し、微調整の必要条件が満たされるまでは、確立された PID パラメータが調整で使用されます。 この場合のみ、微調整が開始されます。 事前同調が可能でない場合は、PID_Compactが[無効]モードに切り替わります。
事前同調のプロセス値がすでにセットポイントに非常に近いか、sPid_Calc.b_RunIn = TRUEの場合は、最小または最大出力値によるセットポイントへの到達が試みられます。 これによって、オーバーシュートの増加が起きる場合があります。
[微調整]が正常終了した後、コントローラは[自動モード]に切り替わり、[微調整]が正常終了しなかった場合、[無効]モードに切り替わります。
「微調整」のフェーズは、 変数 i_Event_TIR (ページ 2855)で示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202849

テクノロジー
5.4 PID 制御
State /
sRet.i_Mo
de

動作モードの説明

3

自動モード
自動モードでは、PID_Compact は、指定されたパラメータに従って、コントロールされるシ
ステムを訂正します。
以下の条件の 1 つが満たされた場合、コントローラは自動モードに変わります。
• 事前同調の正常終了• 微調整の正常終了• 変数 sRet.i_Mode が値 3 へ変更
CPU スタートアップの後、または STOP から RUN モードへの変更の後に、PID_Compact は、直近の有効な動作モードで開始されます。 PID_Compact を[無効]モードのままに保持するには、sb_RunModeByStartup = FALSE を設定してください。

4

手動モード
手動モードでは、手動出力値を ManualValue パラメータに指定します。
この動作モードは、sRet.i_Mode = 4 の場合、または ManualEnable の立ち上がりエッジ時に有効になります。 ManualEnable が TRUE に変わると、 State のみが変わります。sRet.i_Mode
は、その現在の値を保持します。ManualEnable の立ち下がりエッジでは、PID_Compact は直前の動作モードに戻ります。
この自動モードへの変更はバンプレスです。

下記も参照
PID_Compact の出力パラメータ (ページ 2839)
変数 i_Event_SUT (ページ 2854)
変数 i_Event_TIR (ページ 2855)

2850

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

5.4.1.6

Error パラメータ
複数のエラーが未解決の場合は、エラーコードの値がバイナリ加算によって表示されます。
たとえば、エラーコード 0003 の表示は、エラー 0001 と 0002 が同時に保留中であることを示します。

Error(DW#16#...)

説明

0000

エラーはありません。

0001「Input」パラメータがプロセス値制限範囲外です。
• Input > sPid_Cmpt.r_Pv_Hlm または• Input < sPid_Cmpt.r_Pv_Llm
エラーを取り除くまでは、アクチュエータを再度開始できません。

0002

パラメータ「Input_PER」の値が無効です。 アナログ入力でエラーが保留中であるかどうかをチェックします。

0004

微調整時のエラー。プロセス値の振動を維持できませんでした。

0008

事前同調開始時のエラー。 プロセス値がセットポイントに近すぎます。 微調整を開始してください。

0010

セットポイントが、コントローラ同調時に変更されました。

0020

自動モードおよび微調整時には、事前同調は実行できません。

0040

微調整エラー。セットポイントがセットポイント制限値に近すぎます。

0080

出力値制限値の設定が不正です。
出力値の制限範囲が正しく設定され、コントロールが動作中である方向と一致するかどうかを確認します。

0100

コントローラ同調時のエラーによって、パラメータが不正になりました。

0200

パラメータ「Input」の値が無効です。 値の数値フォーマットが不正です。

0400

出力値の計算に失敗しました。 PID パラメータをチェックしてください。

0800

サンプリング時間エラー: PID_Compact が、サイクル割り込み OB のサンプリング時間内に呼び出されていません。

1000

パラメータ「Setpoint」の値が無効です。 値の数値フォーマットが不正です。

下記も参照
PID_Compact の出力パラメータ (ページ 2839)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2851

テクノロジー
5.4 PID 制御

5.4.1.7

Reset パラメータ
Reset = TRUE に対する応答は、PID_Compact 命令のバージョンに応じて異なります。

Reset に対する応答(PID_Compact V.1.1)
Reset での立ち上がりはエラーおよび警告をリセットし、積分動作を解除します。 Reset での立ち下がりは、直近の有効な動作モードへの変更をトリガします。
5HVHW



W PV

LB0RGH



W PV

6WDWH





2852

①

有効化

②

Error

③

Reset







W PV

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

Reset に対する応答(PID_Compact V.1.0)
Reset での立ち上がりはエラーおよび警告をリセットし、積分動作を解除します。 コント
ローラは、i_Mode での次のエッジまでは、再有効化されません。
5HVHW



W PV

LB0RGH




W PV
6WDWH






5.4.1.8

①

有効化

②

Error

③

Reset







W PV

変数 sd_warning
複数の警告が保留中の場合は、変数 sd_warning の値はバイナリ加算によって表示されます。 警告 0003 の表示は、たとえば、警告 0001 と警告 0002 が同時に保留中であることを示します。

sd_warning 説明(DW#16#....
)
0000

保留中の警告がありません。

0001

事前同調時にインフレクションポイントが見つかりませんでした。

0002

微調整時に振動が増加しました。

0004

セットポイントが、設定された制限範囲外でした。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202853

テクノロジー
5.4 PID 制御
sd_warning 説明(DW#16#....
)
0008

選択された計算方法で、コントロールされるシステムの必要なプロパティの中に定義されなかったものがあります。 代わりに、「i_CtrlTypeTIR = 3」方法を使用して、PID パラメータが計算されました。

0010

ManualEnable = TRUE のために、動作モードを変更できませんでした。

0020

呼び出し OB のサイクルタイムが、PID アルゴリズムのサンプリング時間を制限します。
さらに短い OB サイクルタイムを使用して、結果を改善してください。

0040

プロセス値が、その警告制限値の 1 つを超えました。
以下の警告は、原因の対処が終わったらすぐに削除されます。
• 0004• 0020• 0040
他のすべての警告は、Reset での立ち上がりエッジで解除されます。

5.4.1.9

変数 i_Event_SUT

i_Event_SU 名前T

説明

0 SUT_INIT

事前同調の初期化

100 SUT_STDABW

標準偏差の計算200 SUT_GET_POI

インフレクションポイントの検索

9900 SUT_IO

事前同調が成功

1 SUT_NIO

事前同調が失敗

下記も参照
PID_Compact の静的変数 (ページ 2840)
パラメータ State および sRet.i_Mode (ページ 2847)

2854

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

5.4.1.10

変数 i_Event_TIR

i_Event_TIR 名前-100 TIR_FIRST_SUT

説明
微調整が実行可能ではありません。 事前同調が最初に実行されます。

0 TIR_INIT

微調整の初期化

200 TIR_STDABW

標準偏差の計算

300 TIR_RUN_IN

セットポイントへの到達の試み

400 TIR_CTRLN

既存の PID パラメータを使用した、セットポイントへの到達の試み(事前同調が成功した場合)

500 TIR_OSZIL

振動の決定とパラメータの計算

9900 TIR_IO

微調整が成功1 TIR_NIO

微調整が失敗

下記も参照
PID_Compact の静的変数 (ページ 2840)
パラメータ State および sRet.i_Mode (ページ 2847)

5.4.2

PID_3Step

5.4.2.1

PID_3Step の説明

説明
PID_3Step 命令を使用して、積分動作を行うバルブまたはアクチュエータ用の組み込まれた同調機能を使用して PID コントローラを設定します。
次の動作モードが使用可能です。
• 無効• 事前同調• 微調整• 自動モード• 手動モード

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2855

テクノロジー
5.4 PID 制御• 代替出力値アプローチ• 遷移時間の測定• エラーモニタリング付きの代替出力値アプローチ• エラーモニタリング
動作モードの詳細は、State パラメータを参照してください。

PID アルゴリズム
PID_3Step は、比例および微分動作のワインドアップ防止および重み付け付きの PIDT1 コ
ントローラです。出力値の計算に次の数式が使用されます。
1[

Δ y = K p · s · (b · w - x) +2856

TI · s(w - x) +TD · sa · TD · s + 1

シンボル

説明

Y

出力値

Kp

比例ゲイン

s

ラプラス演算子B

比例操作の計量

W

セットポイント

x

プロセス値

TI

積分動作時間A

微分の遅延係数(T1 = a × TD)

TD

微分動作時間C

微分動作の計量(c · w - x)]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

位置フィードバックなしのブロックダイアグラム,QSXW:DUQLQJB+

39B$/50,QSXW:DUQLQJB/,QSXW3HU2Q,QSXWB3(5&53B,1







,QSXW

6HWSRLQW$QWL:LQGXS

6FDOH
)DF

,QW

3,'7
$QWL:LQGXS





˂Y



/LPLW




2XWSXW3HU2Q
















5RFB/LP/LPLW

0DQXDO(QDEOH
)$&&53B287

0DQXDO9DOXH

2XWSXWB3(5

0DQXDO(QDEOH
0DQXDOB83$GHDGB%

7KU6WS

0DQXDOB'1



3XOVH2XW

2XWSXWB83
2XWSXWB'1
















TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020






2857

テクノロジー
5.4 PID 制御

位置フィードバック付きのブロックダイアグラム,QSXW:DUQLQJB+

39B$/50,QSXW:DUQLQJB/,QSXW3HU2Q,QSXWB3(5





/LPLW

,QW



,QSXW
6HWSRLQW$QWL:LQGXS

6FDOH&53B,1

3,'7
$QWL:LQGXS

)DF
;



/LPLW

˂9

)HHGEDFN3HU2Q)HHGEDFNB3(56FDOH&53B,1

)HHGEDFN

0DQXDO(QDEOH
2XWSXW3HU2Q



0DQXDO9DOXH&53B287


2XWSXWB3(5












0DQXDO(QDEOH
0DQXDOB83$GHDGB%

7KU6WS
0DQXDOB'1



3XOVH2XW

2XWSXWB83
2XWSXWB'1




2858

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

ワインドアップ防止付きの PIDT1 のブロックダイアグラム
E

6HWSRLQW Z



'7

F

'

.

3

˂\



'HDGB%





,

7L
6FDOHG,QSXW [)DF7W$QWL:LQGXS

呼び出し
PID_3Step は、一定の間隔(呼び出し OB(可能な場合、周期割り込み OB)のサイクルタイム)
で呼び出されます。

起動
CPU のスタートアップ時には、PID_3Step は、最後に有効であった動作モードで開始されます。PID_3Step を[無効]モードのままに保持するには、RunModeByStartup = FALSE を設定してください。

エラーに対する応答
エラーが発生すると、エラーは Error パラメータに出力されます。 PID_3Step の応答をErrorBehaviour および ActivateRecoverMode タグを使用して設定します。
ErrorBeh ActivateRec アクチュエータ設定
応答
aviouroverMode
Output を以下の値に設定
0

FALSE

現在の出力値「無効」モード(Mode = 0)に切り替
え

0

TRUE

エラー保留中の現在の出 「エラーモニタ」モード(Mode = 8)
力値

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

に切り替え

2859

テクノロジー
5.4 PID 制御
ErrorBeh ActivateRec アクチュエータ設定
応答
aviouroverMode
Output を以下の値に設定
1

FALSE

置換出力値

「代替出力値」モード(Mode = 5)に切り替え「無効」モード(Mode = 0)に切り替
え

1

TRUE

エラーが保留中の間、置 「エラーモニタ付きの代替出力値へのアプローチ」モード(Mode = 7)に

換出力値

切り替え
「エラーモニタ」モード(Mode = 8)に切り替え
ErrorBits パラメータで、エラーを識別します。

下記も参照
State および Retain.Mode パラメータ (ページ 2877)
ErrorBits パラメータ (ページ 2886)

5.4.2.2

PID_3Step の動作原理

プロセス値制限値のモニタリング
Config.InputUpperLimit および Config.InputLowerLimit タグに、プロセス値の絶対上限値/
下限値を指定します。 これらの制限範囲外のプロセス値は、エラーをトリガします(ErrorBits = 0001hex)。
Config.InputUpperWarning および Config.InputLowerWarning タグに、絶対警告上限値/下限値を指定します。 これらの警告範囲外のプロセス値は、警告(Warnings = 0040hex)をトリガし、出力パラメータ InputWarning_H または InputWarning_L が TRUE に切り替わります。
プロセス値の上限値/下限値は、デフォルト警告制限値として設定されます。
上記の例外として、[無効]動作モードおよびリセット時には、プロセス値制限値はモニタリングされません。

2860

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

セットポイントの制限
セットポイントの上限値/下限値を指定するには、Config.SetpointUpperLimit およびConfig.SetpointLowerLimit タグを使用します。PID_3Step は、自動的に、セットポイントの制限値をプロセス制限値に合わせます。 セットポイントを小さい範囲に制限することができます。PID_3Step は、この範囲がプロセス制限値の範囲内であるかどうかをチェックします。 これらの制限値外のセットポイントは上限値または下限値に置き換えられ、出力パラメータ SetpointLimit_H または SetpointLimit_L が TRUE に設定されます。
セットポイントは、すべての動作モードで、制限されます。

出力値制限値のモニタリング
Config.OutputUpperLimit および Config.OutputLowerLimit タグに、出力値の絶対上限値/
下限値を指定します。 出力値制限値は、「Low エンドストップ」および「High エンドストップ」内でなければなりません。
• High エンドストップ: Config.FeedbackScaling.UpperPointOut• Low エンドストップ:Config.FeedbackScaling.LowerPointOut
ルール:
UpperPointOut ≥ OutputUpperLimit > OutputLowerLimit ≤ LowerPointOut「High エンドストップ」および「Low エンドストップ」として有効な値は、以下に応じて異なります。
• FeedbackOn• FeedbackPerOn• OutputPerOn
OutputPer
On

FeedbackO FeedbackPernOn

LowerPointOut

UpperPointOut

FALSE

FALSE

FALSE

0.0%は設定不可

100.0%は設定不可

FALSE

TRUE

FALSE

-100.0 %または 0.0 % 0.0%または+100.0 %

FALSE

TRUE

TRUE

-100.0 %または 0.0 % 0.0%または+100.0 %

TRUE

FALSE

FALSE

0.0%は設定不可

TRUE

TRUE

FALSE

-100.0 %または 0.0 % 0.0%または+100.0 %

TRUE

TRUE

TRUE

-100.0 %または 0.0 % 0.0%または+100.0 %TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

100.0%は設定不可

2861

テクノロジー
5.4 PID 制御
OutputPerOn = FALSE および FeedbackOn = FALSE の場合は、出力値を制限できません。
デジタル出力は Actuator_H = TRUE または Actuator_L = TRUE でリセットされるか、モータ遷移時間の 110%に至る移動時間の後にリセットされます。
出力値は、100%で 27648 で、-100%で-27648 です。 PID_3Step は、バルブを完全に閉じることができなくてはいけません。 このため、ゼロを出力値制限範囲に含める必要があ
ります。

代替出力値
エラーが発生した場合は、PID_3Step は代替出力値を出力し、アクチュエータを
SavePosition 変数で指定された安全な位置に設定することができます。 代替出力値は、出力値制限値内でなければなりません。

信号妥当性のモニタリング
Setpoint、Input、および Output パラメータ値がモニタリングされます。

サンプリング時間のモニタリング PID_3Step
理想的には、サンプリング時間は呼び出し OB のサイクルタイムと等値です。PID_3Step 命
令は、2 つの呼び出し間の時間間隔を測定します。 これは、現在のサンプル時間です。 動
作モードの変更ごと、また、初期スタートアップ時に、最初の 10 個のサンプリング時間
からサンプリング時間の平均値が求められます。 現在のサンプリング時間とこの平均値の相違が大きすぎると、エラー(ErrorBits = 0800 hex)がトリガされます。
以下の条件が発生すると、PID_3Step は、コントローラ同調時に、[無効]モードに設定されます。
• 新しい平均値 >= 1.1 x 古い平均値• 新しい平均値 <= 0.9 x 古い平均値
自動モードでは、以下の条件が発生すると、PID_3Step は[無効]モードに設定されます。
• 新しい平均値 >= 1.5 x 古い平均値• 新しい平均値 <= 0.5 x 古い平均値

2862

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

PID アルゴリズムのサンプリング時間
コントロールされたシステムは、出力値の変更に応答するために、一定量の時間を必要とします。 このため、すべてのサイクルごとに出力値を計算することはお奨めしません。 PID
アルゴリズムのサンプリング時間は、出力の 2 つの計算の間の時間を表わします。 それはコントローラ同調時に計算され、サイクルタイムの倍数に四捨五入されます。 PID_3Stepの他のすべてのファンクションはすべての呼び出しごとに実行されます。

モータ遷移時間の測定
モータ遷移時間は、モータがアクチュエータを閉状態から開状態へ移動するために必要とする時間(秒単位)です。 アクチュエータは、モータ遷移時間の最大 110%の間、1 方向へ移動します。 PID_3Step は、優れたコントローラ結果を得るために、可能なかぎり正確なモータ遷移時間を必要とします。 アクチュエータのマニュアルに記載されているデータは、
このアクチュエータタイプの平均的な値です。 使用する特定のアクチュエータの値は異なる場合があります。 モータ遷移時間は、コミッショニング時に測定することができます。

有効な方向
冷却および放電コントロールシステムでは、有効な方向を反転させることが必要になる場合があります。 この反転は、変数 Config.InvertControl を使用してコントロールされます。

5.4.2.3

PID_3Step の入力パラメータ

表 5-4

パラメータ

データタ デフォルト
イプ

説明

Setpoint

REAL

0.0

自動モードでの PID コントローラのセットポイント

Input

REAL

0.0

ユーザープログラムの変数が、プロセス値のソースとして使用されます。
パラメータ Input を使用する場合は、
Config.InputPerOn = FALSE を設定する必要があります。

Input_PER

WORD

W#16#0アナログ入力が、プロセス値のソースとして使用されます。
パラメータ Input_PER を使用する場合は、
Config.InputPerOn = TRUE を設定する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2863

テクノロジー
5.4 PID 制御
パラメータ

データタ デフォルト
イプ

説明

Actuator_H

BOOLHigh エンドストップ用のバルブのデジタル位置フィー

FALSE

ドバック。
Actuator_H = TRUE の場合、バルブは High エンドスト
ップの位置にあり、この方向にはもう動きません。
Actuator_L

BOOL

FALSE

Low エンドストップ用のバルブのデジタル位置フィードバック。
Actuator_L = TRUE の場合、バルブは Low エンドスト
ップの位置にあり、この方向にはもう動きません。

Feedback

REAL

0.0

バルブの位置フィードバック。
パラメータ Feedback を使用する場合は、
Config.FeedbackPerOn = FALSE を設定する必要があります。

Feedback_PER

WORD

W#16#0

バルブ位置のアナログフィードバック。
パラメータ Feedback_PER を使用する場合は、
Config.FeedbackPerOn = TRUE を設定する必要があります。
Feedback_PER は、以下の変数に基づいてスケーリングされます。
• Config.FeedbackScaling.LowerPointIn• Config.FeedbackScaling.UpperPointIn• Config.FeedbackScaling.LowerPointOut• Config.FeedbackScaling.UpperPointOut

2864

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
パラメータ

データタ デフォルト
イプ

説明

ManualEnable

BOOL• FALSE -> TRUE エッジでは「手動モード」 が選択され、State = 4, Retain.Mode はそのまま変わりませ
ん。

FALSE

• TRUE -> FALSE エッジによって、最も最近にアクティブだった動作モードが選択されます。
Retain.Mode の変更は、ManualEnable = TRUE 時には効果を持ちません。 Retain.Mode の変更は、ManualEnable での TRUE -> FALSE エッジ時に考慮されます。
PID_3Step V1.1: CPU の開始時に ManualEnable =TRUE の場合、PID_3Step が手動モードで開始されます。 ManualEnable での立ち上がりエッジ(FALSE ->TRUE)は不要です。
PID_3Step V1.0
CPU の開始時に、ManualEnable での立ち上がりエッジ(FALSE->TRUE)の場合のみ、PID_3Step が手動モードに切り替わります。 立ち上がりエッジがない場合は、
ManualEnable が FALSE であった最後の動作モードでPID_3Step が開始されます。
ManualValue

REAL

0.0

手動モードでは、バルブの絶対位置を指定します。
ManualValue は、 OutputPer を使用するか、または、
位置フィードバックが使用できる場合のみ、評価されます。

Manual_UP

BOOL

FALSE

手動モードでは、すべての立ち上がりエッジごとに、
全コントロール範囲の 5%のみバルブが開くか、最小モータ遷移時間の間のみバルブが開きます。Manual_UP
は、Output_PER を使用しないで、かつ、位置フィード
バックが使用できない場合のみ、評価されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2865

テクノロジー
5.4 PID 制御
パラメータ

データタ デフォルト
イプ

説明

Manual_DN

BOOL

手動モードでは、すべての立ち上がりエッジごとに、

FALSE

全コントロール範囲の 5%のみバルブが閉じるか、最小モータ遷移時間の間のみバルブが閉じます。
Manual_DN は、Output_PER を使用しないで、かつ、位置フィードバックが使用できない場合のみ、評価さ
れます。
Reset

BOOL

FALSE

コントローラを再起動します。
• FALSE -> TRUE エッジ– [無効]モードに切り替わります。
– コントローラの中間値がリセットされます。
(PID パラメータは保持されます)• TRUE -> FALSE エッジ
直近の有効なモードに切り替わります。

5.4.2.4

PID_3Step の出力パラメータ

表 5-5

パラメータ

データタ デフォルト
イプ

説明

ScaledInput

REAL

0.0

スケーリングされたプロセス値

ScaledFeedback

REAL

0.0

スケーリングされた位置フィードバック

Output_UP

BOOL

FALSE

バルブを開くためのデジタル出力値。
Config.OutputPerOn = FALSE の場合、パラメータ
Output_UP が使用されます。

Output_DN

BOOL

FALSE

バルブを閉じるためのデジタル出力値。
Config.OutputPerOn = FALSE の場合、パラメータ
Output_DN が使用されます。

Output_PER

WORD

W#16#0アナログ出力値
Config.OutputPerOn = TRUE の場合、Output_PER が使用されます。

2866

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
パラメータ

データタ デフォルト
イプ

説明

SetpointLimit_H

BOOL

SetpointLimit_H = TRUE の場合、セットポイント絶対

FALSE

上限値に達しています。 CPU のセットポイントは、設定済みのセットポイント絶対上限値を超えることはできません。 設定済みのプロセス値絶対上限値は、セッ
トポイント上限値のデフォルト値になります。
Config.SetpointUpperLimit にプロセス値の制限範囲内の値を設定すると、この値がセットポイント上限値として使用されます。
SetpointLimit_L

BOOL

FALSE

SetpointLimit_L = TRUE の場合、セットポイント絶対下
限値に到達済みです。 CPU では、セットポイントは、設定済みのセットポイント絶対下限値未満であってはいけません。 設定済みのプロセス値絶対下限値は、セットポイント下限値のデフォルト設定です。
Config.SetpointLowerLimit にプロセス値の制限範囲内の値を設定すると、この値がセットポイント下限値として使用されます。

InputWarning_H

BOOL

FALSE

InputWarning_H = TRUE の場合、プロセス値が警告上限値に到達済みか、警告上限値を超えています。

InputWarning_L

BOOL

FALSE

InputWarning_L = TRUE の場合、プロセス値が警告下限値に到達済みか、警告下限値未満になっています。

State

INT

0

State パラメータ (ページ 2877)は、PID コントローラの
現在の動作モードを示します。 動作モードを変更する場合は、変数
Retain.Mode を使用します。
• State = 0: 無効• State = 1: 事前同調
• State = 2: 微調整• State = 3: 自動モード• State = 4: 手動モード• State = 5: 代替出力値アプローチ• State = 6: 遷移時間の測定• State = 7: エラーモニタリング付きの代替出力値ア
プローチ• State = 8: エラーモニタリング

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2867

テクノロジー
5.4 PID 制御
パラメータ

データタ デフォルト
イプ

説明

Error

BOOL

Error = TRUE の場合、少なくとも 1 つのエラーが保留

FALSE

中です。
ErrorBits

DWORD

DW#16#0

ErrorBits パラメータ (ページ 2886)は、エラーメッセー
ジを示します。

下記も参照
State および Retain.Mode パラメータ (ページ 2877)
ErrorBits パラメータ (ページ 2886)

5.4.2.5

PID_3Step 静的変数
リストされていない変数を変更してはいけません。 これらは、システム内部の目的のためだけに使用されます。

表 5-6

変数

データ
タイプ

デフォ
ルト

説明

ActivateRecoverMode

BOOL

TRUE

ActivateRecoverMode 変数 (ページ 2889)は、エラーが発生したときの動作を決定します。

RunModeByStartup

BOOL

TRUE

CPU 再起動時に直近の CPU モードを有効にします。
CPU スタートアップ後に RunModeByStartup = TRUE の場
合、コントローラは直近の有効な動作モードに戻ります。
RunModeByStartup = FALSE の場合、コントローラは、CPU
スタートアップ後、無効なままです。

PhysicalUnit

INT0

プロセス値およびセットアポイントの測定単位(たとえば、℃またはºF)

PhysicalQuantitiy

INT0

プロセス値およびセットポイントの物理量(たとえば、温
度)

2868

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データ
タイプ

デフォ
ルト

説明

ErrorBehaviour

INT

0ErrorBehaviour = 0 でエラーが発生すると、バルブはその現在位置に留まり、コントローラは「無効」モードまたは「エラーモニタ」モードに直接に切り替わります。
ErrorBehaviour = 1 でエラーが発生すると、アクチュエー
タが代替出力値まで移動した後にのみ、「無効」モードまたは「エラーモニタ」モードに切り替わります。
以下のエラーが発生すると、バルブを設定した代替出力値まで移動できません。
• 2000h: パラメータ「Feedback_PER」の値が無効です。
• 4000h: パラメータ「Feedback」の値が無効です。
• 8000h: デジタル位置フィードバックのエラーです。

Warnings

DWORD DW#16#0

変数 Warnings (ページ 2877)には、リセット後または動作モードの最後の変更後に生成された警告が表示されます。
警告: 周期的警告(たとえば、プロセス値警告)が、警告の原因が取り除かれるまで、表示されます。 警告は、その原因がなくなると、すぐに自動的に削除されます。 周期的でない警告(たとえば、インフレクションポイントが見つからないなど)はそのままで、エラーと同様に削除されます。

SavePosition

REAL

0.0

置換出力値
ErrorBehaviour = 1 でエラーが発生すると、アクチュエー
タがプラントの安全な位置まで移動した後にのみ、「無効」
モードに切り替わります。

CurrentSetpoint

REAL

0.0

現在有効なセットポイント。この値はコントローラ同調時には不変です。

Progress

REAL

0.0

コントローラ同調の進捗状況(パーセンテージ(0.0 kara～ 100.0)で表示)

Config.InputPerOn

BOOL

TRUE

InputPerOn = TRUE の場合、パラメータ Input_PER が使用されます。InputPerOn = FALSE の場合、パラメータ Inputが使用されます。

Config.OutputPerOn

BOOL

FALSE

OutputPerOn = TRUE の場合、パラメータ Output_PER が使用されます。 OutputPerOn = FALSE の場合、Ouput_UP お
よび Output_DN パラメータが使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2869

テクノロジー
5.4 PID 制御
変数

データ
タイプ

デフォ
ルト

説明

Config.LoadBackUp

BOOL

FALSE

LoadBackUp = TRUE の場合、最後の PID パラメータセット
が再読み込みされます。 このセットは、最後のコントロー
ラ同調操作の前に保存されました。

Config.InvertControl

BOOL

FALSE

反転制御ロジック
InvertControl = TRUE の場合、立ち上がり制御偏差が出力値を低減します。

Config.FeedbackOn

BOOL

FALSE

FeedbackOn = FALSE の場合、位置フィードバックがシミュレートされます。
FeedbackOn = TRUE の場合、位置フィードバックが常に有効です。

Config.FeedbackPerOn

BOOL

FALSE

FeedbackPerOn は、FeedbackOn = TRUE のときのみ有効です。
FeedbackPerOn = TRUE(パラメータ Feedback_PER)の場
合、アナログ入力が位置フィードバックとして使用されます。
FeedbackPerOn = FALSE の場合、パラメータ Feedback が位置フィードバックとして使用されます。

Config.ActuatorEndStopO

BOOL

FALSE

n
Config.InputUpperLimit

ActuatorEndStopOn = TRUE の場合、位置フィードバック
Actuator_L および Actuator_H が考慮されます。

REAL

120.0

プロセス値の上限値
I/O 入力で、プロセス値が標準範囲よりも最大 18%大きくなる場合があります(範囲オーバー)。 「プロセス値の上限値」の違反のエラーはもう報告されません。 断線および短絡のみが認識され、PID_3Step はエラー時の設定に従って動作します。
InputUpperLimit > InputLowerLimit

Config.InputLowerLimit

REAL

0.0

プロセス値の下限値
InputLowerLimit < InputUpperLimit

2870

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データ
タイプ

デフォ
ルト

説明

Config.InputUpperWarnin

REAL+3.402

プロセス値の警告上限値

822e

プロセス値制限範囲外の InputUpperWarning を設定する+38と、設定されたプロセス値絶対上限値が警告上限値としてg使用されます。
プロセス値制限範囲内の InputUpperWarning を設定すると、この値が警告上限値として使用されます。
InputUpperWarning > InputLowerWarning
InputUpperWarning ≤ InputUpperLimit
Config.InputLowerWarnin

REAL

g

-3.4028 プロセス値の警告下限値
22e+38 プロセス値制限範囲外の InputLowerWarning を設定すると、設定されたプロセス値絶対下限値が警告下限値として使用されます。
プロセス値制限範囲内の InputLowerWarning を設定すると、この値が警告下限値として使用されます。
InputLowerWarning < InputUpperWarning
InputLowerWarning ≥ InputLowerLimit

Config.OutputUpperLimit

REAL

100.0

出力値の上限値
詳細は、OutputLowerLimit を参照してください。

Config.OutputLowerLimit

REAL

0.0

出力値の下限値
OutputPerOn = TRUE または FeedbackOn = TRUE の場
合、-100% ～ +100%の値の範囲(0 を含めて)が有効です。
-100%では Output = -27648、+100%では Output = 27648です。
OutputPerOn = FALSE の場合、0% ～ 100%の値の範囲が有効です。 バルブは 0%で完全に閉じ、100%で完全に開きます。

Config.SetpointUpperLimit REAL

+3.402

セットポイントの上限値

822e

プロセス値制限範囲外の SetpointUpperLimit を設定する+38と、設定されたプロセス値絶対上限値がデフォルトでセッ
トポイント上限値になります。
プロセス値制限範囲内の SetpointUpperLimit を設定すると、この値がセットポイント上限値として使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2871

テクノロジー
5.4 PID 制御
変数

データ
タイプ

Config.SetpointLowerLimit REAL

デフォ
ルト

説明

-

セットポイント下限値

3.4028

プロセス値制限範囲外の SetpointLowerLimit を設定する
22e+38 と、設定されたプロセス値絶対下限値がデフォルトでセッ
トポイント下限値になります。
プロセス値制限範囲内の SetpointLowerLimit を設定すると、この値がセットポイント下限値として使用されます。
Config.MinimumOnTime

REAL

0.0

最小 ON 時間
サーボドライブをスイッチオンにしていなければならない
最小時間(秒単位)。

Config.MinimumOffTime

REAL

0.0

最小 OFF 時間
サーボドライブをスイッチオフにしていなければならない
最小時間(秒単位)。

Config.TransitTime

REAL

30.0

モータ遷移時間作動ドライブがバルブを閉状態から開状態に遷移させるために必要な時間(秒単位)。

Config.InputScaling.Upper REAL

27648.

高 Input_PER のスケーリング

PointIn0

Input_PER は、InputScaling 構造体の 2 つの値ペア
UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。

Config.InputScaling.Lower REAL

0.0

PointIn

低 Input_PER のスケーリング
Input_PER は、InputScaling 構造体の 2 つの値ペア
UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。

Config.InputScaling.Upper REAL

100.0

PointOut

スケーリングされた High プロセス値
Input_PER は、InputScaling 構造体の 2 つの値ペア
UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。

Config.InputScaling.Lower REAL
PointOut0.0

スケーリングされた低プロセス値
Input_PER は、InputScaling 構造体の 2 つの値ペア
UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。

2872

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データ
タイプ

デフォ
ルト

説明

Config.FeedbackScaling.U

REAL

27648.

高 Feedback_PER のスケーリング

0

Feedback_PER は、FeedbackScaling 構造体の 2 つの値ペ

pperPointIn

ア UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。
Config.FeedbackScaling.L

REAL

0.0

owerPointIn

低 Feedback_PER のスケーリング
Feedback_PER は、FeedbackScaling 構造体の 2 つの値ペ
ア UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。

Config.FeedbackScaling.U

REAL

100.0

pperPointOut

エンドポイント上限値
Feedback_PER は、FeedbackScaling 構造体の 2 つの値ペ
ア UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。

Config.FeedbackScaling.L

REAL

0.0

owerPointOut

エンドポイント下限値
Feedback_PER は、FeedbackScaling 構造体の 2 つの値ペ
ア UpperPointOut、UpperPointIn および LowerPointOut、LowerPointIn に基づいてパーセントに変換されます。

GetTransitTime.InvertDire

BOOL

FALSE

ction

InvertDirection = FALSE の場合、バルブ遷移時間を求める
ために、バルブが完全に開き、閉じた後、再び開きます。
InvertDirection = TRUE の場合、バルブが完全に閉じ、開いた後、再び閉じます。

GetTransitTime.SelectFeed BOOL

FALSE

back

SelectFeedback = TRUE の場合、Feedback_PER またはFeedback が遷移時間測定に含まれます。
SelectFeedback = FALSE の場合、Actuator_H または
Actuator_L が遷移時間測定に含まれます。

GetTransitTime.Start

BOOL

FALSE

Start = TRUE の場合、遷移時間測定が開始されます。

GetTransitTime.State

INT

0

遷移時間測定の現在のフェーズ• State = 0: 無効• State = 1: バルブを完全に開きます• State = 2: バルブを完全に閉じます• State = 3: バルブをターゲット位置に設定します(NewOutput)• State = 4: 遷移時間測定が正常に完了しました• State = 5: 遷移時間測定がキャンセルされました

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2873

テクノロジー
5.4 PID 制御
変数

データ
タイプ

デフォ
ルト

説明

GetTransitTime.NewOutp

REAL

0.0

位置フィードバック付きの遷移時間測定のターゲット位置

ut

NewOutput は、バルブの出力値の制限範囲内でなければなりません。 NewOutput と ScaledFeedback の差は、有効な制御範囲の少なくとも 50%でなければなりません。

CycleTime.StartEstimation BOOL

TRUE

StartEstimation = TRUE の場合、PID_3Step サンプリング時間の測定が開始されます。CycleTime.StartEstimation =FALSE の場合はすぐに測定が完了します。

CycleTime.EnEstimation

BOOL

TRUE

EnEstimation = TRUE の場合、サンプリング時間 PID_3Stepが計算されます。

CycleTime.EnMonitoring

BOOL

TRUE

EnMonitoring = TRUE の場合、サンプリング時間
PID_3Step がモニタされます。 サンプリング時間以内にPID_3Step を実行できない場合は、エラー 0800 が出力され、動作モードが変更されます。 ActivateRecoverMode お
よび ErrorBehaviour が、切り替え先動作モードを決定します。
EnMonitoring = FALSE の場合、サンプリング時間
PID_3Step がモニタされず、エラー 0800 が出力されず、動作モードが変更されません。

CycleTime.Value

REAL

0.1

サンプリング時間 PID_3Step
CycleTime.Value が自動的に測定されます。通常、呼び出し OB のサイクルタイムと同じ値です。

CtrlParamsBackUp.SetByU

BOOL

FALSE

ser

Retain.CtrlParams.SetByUser の保存された値。
Config.LoadBackUp = TRUE で、CtrlParamsBackUp 構造体
から値を再読み込みできます。

CtrlParamsBackUp.Gain

REAL

1.0

比例ゲインの保存エリア

CtrlParamsBackUp.Ti

REAL

20.0

積分動作時間の保存エリア

CtrlParamsBackUp.Td

REAL

0.0

微分動作時間の保存エリア

CtrlParamsBackUp.TdFiltR

REAL

0.0

微分遅延係数の保存エリア

CtrlParamsBackUp.PWeigh REAL

0.0

比例動作重みの保存エリア0.0

微分動作重みの保存エリア

1.0

サンプリング時間 PID アルゴリズムの保存エリア

atio
ting
CtrlParamsBackUp.DWeigh REAL
ting
CtrlParamsBackUp.Cycle

2874

REAL

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データ
タイプ

デフォ
ルト

説明

CtrlParamsBackUp.InputD

REAL

0.0

制御偏差のデッドバンド幅の保存エリア

FALSE

コントローラ同調時に、制御システムのプロパティが保存

eadBand
PIDSelfTune.SUT.Calculate BOOL
SUTParams

されます。 CalculateSUTParams = TRUE の場合、PID パラ
メータがこれらのプロパティに基づいて再計算されます。
TuneRuleSUT で設定された方法を使用して、PID パラメー
タが計算されます。計算の後に、CalculateSUTParams がFALSE に設定されます。

PIDSelfTune.SUT.TuneRule INT

1

SUT

事前同調時のパラメータの計算に使用される方法:• TuneRuleSUT = 0: Chien、Hrones、および Reswick PID• TuneRuleSUT = 1: Chien、Hrones、Reswick PI

PIDSelfTune.SUT.State

INT0

変数 SUT.State は、事前同調の現在のフェーズを示します。

PIDSelfTune.TIR.RunIn

BOOL

FALSE

• RunIn = FALSE
無効なモードまたは手動モードで微調整が開始されると、事前同調が開始されます。
自動モードで微調整が開始されると、セットポイントを調整するために既存の PID パラメータが使用されます。
この場合のみ、微調整が開始されます。事前同調が可能
でない場合、PID_3Step は「無効」モードに切り替えます。
• RunIn = TRUE
事前同調はスキップされます。PID_3Step は、最小または最大出力値を使用してセットポイントに到達しようとします。これによって、オーバーシュートの増加が起きる場合があります。この場合のみ、微調整が開始されます。
微調整後、RunIn が FALSE に設定されます。

PIDSelfTune.TIR.CalculateT BOOL
IRParams

FALSE

コントローラ同調時に、制御システムのプロパティが保存されます。 CalculateTIRParams = TRUE の場合、PID パラメータがこれらのプロパティに基づいて再計算されます。
TuneRuleTIR で設定された方法を使用して、PID パラメータが計算されます。計算の後に、CalculateTIRParams がFALSE に設定されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2875

テクノロジー
5.4 PID 制御
変数

データ
タイプ

PIDSelfTune.TIR.TuneRuleT INT

デフォ
ルト

説明

0

微調整時のパラメータの計算に使用される方法:

IR• TuneRuleTIR = 0: PID (自動)• TuneRuleTIR = 1: PID (高速)• TuneRuleTIR = 2: PID (低速)• TuneRuleTIR = 3: Ziegler-Nichols PID• TuneRuleTIR = 4: Ziegler-Nichols PI• TuneRuleTIR = 5: Ziegler-Nichols P

PIDSelfTune.TIR.State

INT0

変数 TIR.State は、「微調整」の現在のフェーズを示します。

Retain.Mode

INT

0Retain.Mode の値の変更は、動作モードの切り替えをトリガします。
Mode を以下に変更すると、以下の動作モードが有効になります。
• Mode = 0: 無効• Mode = 1: 事前同調
• Mode = 2: 微調整• Mode = 3: 自動モード• Mode = 4: 手動モード• Mode = 5: 代替出力値アプローチ• Mode = 6: 遷移時間の測定• Mode = 7: エラーモニタリング付きの代替出力値アプロ
ーチ• Mode = 8: エラーモニタリング

Retain.CtrlParams.SetByUs BOOL

FALSE

er

SetByUser = FALSE の場合、PID パラメータが自動的に確立され、PID_3Step が、出力値でのデッドバンド付きで動作します。 デッドバンドは、コントローラ同調時に、出力値の標準偏差に基づいて計算され、Retain.CtrlParams.OutputDeadBand に保存されます。
SetByUser = TRUE の場合、PID パラメータは手動で入力され、PID_3 Step は出力値でのデッドバンドなしで動作します。Retain.CtrlParams.OutputDeadBand = 0.0

Retain.CtrlParams.Gain

REAL

1.0

有効な比例ゲイン

Retain.CtrlParams.Ti

REAL

20.0

• Ti > 0.0: 有効な積分動作時間• Ti = 0.0: 積分動作が無効です

Retain.CtrlParams.Td

REAL

0.0

• Td > 0.0: 有効な微分動作時間• Td = 0.0: 微分動作が無効です

2876

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
変数

データ
タイプ

Retain.CtrlParams.TdFiltRa REAL

デフォ
ルト

説明

0.0

微分動作遅延の有効な係数

0.0

有効な比例動作重み0.0

有効な微分動作重み

1.0

有効なサンプリング時間 PID アルゴリズム。呼び出し OB

tio
Retain.CtrlParams.PWeight REAL
ing
Retain.CtrlParams.DWeigh REAL
ting
Retain.CtrlParams.Cycle

REALのサイクルタイムの整数倍に丸められます。
Retain.CtrlParams.InputDe REAL

0.0

制御偏差のデッドバンド幅

adBand

注記
PID コントローラの誤動作を回避するには、[無効]モードでこの表にリストされている変数を編集します。 変数「Retain.Mode」を「0」に設定して、「無効」モードが強制されます。

下記も参照
State および Retain.Mode パラメータ (ページ 2877)
ActivateRecoverMode 変数 (ページ 2889)

5.4.2.6

State および Retain.Mode パラメータ

パラメータの相互関係
State パラメータは、PID コントローラの現在の動作モードを示します。 State パラメータを変更することはできません。
動作モードを変更するには、Retain.Mode タグを変更する必要があります。 これは、新しい動作モードの値が Retain.Mode 内に存在するときにも適用されます。 最初にRetain.Mode = 0 を設定した後、Retain.Mode = 3 を設定します。 コントローラの現在の動作モードがこの変更をサポートする場合、State は、Retain.Mode の値に設定されます。
PID_3Step が自動的に動作モードを切り替えるときは、以下が適用されます。 State !
= Retain.Mode.

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2877

テクノロジー
5.4 PID 制御
例:• 成功した事前同調後State = 3 および Retain.Mode = 1• ErrorState = 0 で、Retain.Mode は同じ値のまま(たとえば、Retain.Mode = 3)
• ManualEnalbe = TRUE
State = 4 で、Retain.Mode は直前の値のまま(たとえば、Retain.Mode = 3)
注記
Mode = 0 で自動モードを終了しないで、成功した微調整を繰り返すこともできます。
1 つのサイクルについて、Retain.Mode を 9999 などの不正な値に設定すると、State に対して効果を持ちません。 次のサイクルで、Mode = 2 を設定します。 最初に[無効]モードに切り替えなくても、Retain.Mode を変更することができます。

2878

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

値の意味
State /
説明
Retain.Mo
de0

無効
コントローラはオフになり、バルブ位置の移動をもう行いません。

1

事前同調
事前同調では、出力値のパルスに対するプロセス応答が決定され、インフレクションポイン
トが検索されます。 最適化 PID パラメータは、コントロールされるシステムの最大上昇率とデッドタイムの関数として計算されます。
事前同調の必要条件• State = 0 または State = 4• ManualEnable = FALSE• モータ遷移時間が設定/測定済みであること• セットポイントとプロセス値が、設定済みの制限範囲内であること。
プロセス値の安定性が高ければ高いほど、PID パラメータを計算し、結果の正確性を増すことが容易になります。 プロセス値のノイズは、プロセス値の上昇率がノイズに比べて大幅に高い限り、許可されます。
PID パラメータは再計算され、再び有効になる前に、Config.LoadBackUp でバックアップされます。 セットポイントが、変数 CurrentSetpoint で固定されます。
事前同調が成功すると自動モードに切り替わり、事前同調が失敗すると[無効]モードに切り替わります。
事前同調フェーズは、変数 SUT.State で示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2879

テクノロジー
5.4 PID 制御
State /
説明
Retain.Mo
de2

微調整
微調整は、プロセス値の一定の制限された振動を生成します。 PID パラメータは、この振動の振幅と周波数に基づいて最適化されます。 事前同調時と微調整時のプロセス応答間の相違が分析されます。 この分析の結果に基づいて、すべての PID パラメータが再計算されます。 微調整に基づく PID パラメータのほうが、通常、事前同調に基づく PID パラメータより優れたマスタ
コントロールと外乱動作を実現します。
PID_3Step は、自動的に、プロセス値のノイズよりも大きい振動を生成しようとします。 微
調整は、プロセス値の安定性によって最小限の影響しか受けません。
PID パラメータは、微調整の前に、バックアップされます。 PID パラメータは、
Config.LoadBackUp で復元することができます。 セットポイントが、変数 CurrentSetpoint で固定されます。
微調整の必要条件• モータ遷移時間が設定/測定済みであること• セットポイントとプロセス値が、設定済みの制限範囲内であること。
• ManualEnable = FALSE• 自動(State = 3)、無効(State = 0)、または手動(State = 4)モードであること。
微調整は、開始されたときのモードに従って以下のように実行されます。
• 自動モード(State = 3)
コントローラ同調を使用して既存の PID パラメータを改善する場合は、自動モードで微調整を開始します。
PID_3Step は、コントロールループが安定し、微調整の必要条件が満たされるまでは、既存の PID パラメータを使用して調整されます。 この場合のみ、微調整が開始されます。
• 無効モード(State = 0)または手動(State = 4)モード
事前調整は、常に最初に開始されます。 コントロールループが安定し、微調整の必要条件が満たされるまでは、確立された PID パラメータが調整で使用されます。
PIDSelfTune.TIR.RunIn = TRUE の場合、事前同調がスキップされ、最小または最大出力値によるセットポイントへの到達が試みられます。 これによって、オーバーシュートの増加が起きる場合があります。 この後、微調整が自動的に開始されます。
微調整が正常終了した後、コントローラは自動モードに切り替わり、微調整が正常終了しなかった場合には、[無効]モードに切り替わります。
微調整フェーズは、変数 TIR.State によって示されます。

2880

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
State /
説明
Retain.Mo
de
3

自動モード
自動モードでは、PID_3Step は、指定されたパラメータに従って、コントロールされるシステ
ムを訂正します。
以下の必要条件の 1 つが満たされた場合、コントローラは自動モードに切り替わります。
• 事前同調の正常終了• 微調整の正常終了• 変数 Retain.Mode が値 3 へ変更
CPU スタートアップの後、または STOP から RUN モードへの変更の後に、PID_3Step は、直近の有効な動作モードで開始されます。 PID_3Step を[無効]モードのままに保持するには、
RunModeByStartup = FALSE を設定してください。
ActivateRecoverMode 変数は、自動モードで考慮されます。

4

手動モード
手動モードでは、パラメータ Manual_UP および Manual_DN、または ManualValue で、手動出力値を指定します。 I エラー発生時にアクチュエータを出力値まで移動できるかどうかは、
ErrorBits パラメータに記載されています。
この動作モードは、Retain.Mode = 4 の場合、または ManualEnable の立ち上がりエッジ時に有効になります。
ManualEnable が TRUE に切り替わると、 State のみが変わります。Retain.Mode は、その現在の値を保持します。 ManualEnable の立ち下がりエッジでは、PID_3Step は直前の動作モードに戻ります。
この自動モードへの変更はバンプレスです。
PID_3Step V1.1
エラー発生時は、手動モードは常に可能です。
PID_3Step V1.0
エラー発生時は、手動モードは ActivateRecoverMode 変数に依存します。

5

代替出力値アプローチ
この動作モードは、エラーが発生した場合、または Reset = TRUE 時 Errorbehaviour = 1 およびActivateRecoverMode = FALSE.の場合、有効になります。
PID_3Step は、アクチュエータを代替出力値まで移動した後、[無効]モードに切り替わります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2881

テクノロジー
5.4 PID 制御
State /
説明
Retain.Mode6

遷移時間の測定
閉じたバルブを完全に開くためにモータが必要とする時間を測定します。
この動作モードは、GetTransitTime.Start = TRUE が設定されたときに有効になります。
遷移時間の測定にエンドストップ信号を使用すると、バルブは、現在の位置から始めて、完全に開き、完全に閉じ、再び完全に開きます。 GetTransitTime.InvertDirection = TRUE の場合、この動作は逆転します。
遷移時間の測定に位置フィードバックを使用すると、アクチュエータが、現在の位置からターゲット位置へ移動されます。

7

エラーモニタリング付きの代替出力値アプローチ
この動作モードは、エラー発生時、または Reset = TRUE によって、「代替出力値アプローチ」の代わりに有効になります。 PID_3Step は、アクチュエータを代替出力値まで移動した後、[エラーモニタリング]モードに切り替わります。
以下のすべての条件を満たさなければなりません。
• Mode = 3 (自動モード)• Errorbehaviour = 1• ActivateRecoverMode = TRUE
• ActivateRecoverMode (ページ 2889)が有効になる 1 つまたは複数のエラーが発生しました。
保留中のエラーがなくなると、PID_3Step は直ちに自動モードに戻ります。

8

エラーモニタリング
コントロールアルゴリズムはオフになり、バルブ位置の移動をもう行いません。
この動作モードは、エラー発生時、または Reset = TRUE によって、[無効]モードの代わりに有効になります。
以下のすべての条件を満たさなければなりません。
• Mode = 3 (自動モード)• Errorbehaviour = 0• ActivateRecoverMode = TRUE
• ActivateRecoverMode (ページ 2889)が有効になる 1 つまたは複数のエラーが発生しました。
保留中のエラーがなくなると、PID_3Step は直ちに自動モードに戻ります。

2882

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

自動動作モードは、コミッショニング時に切り替わります。
PID_3Step は、エラー発生時に、動作モードを切り替えます。 次の図は、遷移時間測定、
事前同調、および微調整モードからの動作モード変更に対する ErrorBehaviour の影響を示
します。

䎰╈ 

(UURU%HKDYLRXU (UURU%HKDYLRXU (UURU%HKDYLRXU 挆䲊㣑栢ቑ䂻⸩  ℚⓜ⚛嵎 ㈽嵎㠃  (UURU%HKDYLRXU (UURU%HKDYLRXU (UURU%HKDYLRXU 呹╤኿ዙኦ  ⅲ㦎⒉┪⊳ቿኴዊዙኞ  

エラー発生時の動作モードの自動変更


現在のモードが完了したときの動作モードの自動変更

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2883

テクノロジー
5.4 PID 制御

自動モードでの動作モードの自動切り替え(PID_3Step V1.1)
PID_3Step は、エラー発生時に、動作モードを切り替えます。次の図は、動作モードの変更に対する ErrorBehaviour および ActivateRecoverMode の影響を示します。

䎰╈  

(UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH )$/6(ኅ዆ዙ኿ከኜ (UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH 758(呹╤኿ዙኦ  

(UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH )$/6((UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH 758(ⅲ㦎⒉┪⊳ቿኴዊዙኞ  ⅲ㦎⒉┪⊳ቿኴዊዙኞ
ኅ዆ዙ኿ከኜⅧሰ  

エラー発生時の動作モードの自動変更


現在のモードが完了したときの動作モードの自動変更
エラーが保留中でない場合の動作モードの自動変更

2884

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

自動モードおよび手動モード時の自動的な動作モード切り替え(PID_3Step V1.0)
PID_3Step は、エラー発生時に、動作モードを切り替えます。 次の図は、動作モードの変更に対する ErrorBehaviour および ActivateRecoverMode の影響を示します。

䎰╈  

(UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH )$/6(ኅ዆ዙ኿ከኜ዇ዐኍ (UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH )$/6((UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH 758(呹╤኿ዙኦ  㓚╤኿ዙኦ  
$FWLYDWH5HFRYHU0RGH 758((UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH )$/6((UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH )$/6(

ⅲ㦎⒉┪⊳ቿኴዊዙኞ  (UURU%HKDYLRXU $FWLYDWH5HFRYHU0RGH 758(ኅ዆ዙ኿ከኜ዇ዐኍⅧሰቑ
ⅲ㦎⒉┪⊳ቿኴዊዙኞ  

エラー発生時の動作モードの自動変更


現在のモードが完了したときの動作モードの自動変更
エラーが保留中でない場合の動作モードの自動変更

下記も参照
ActivateRecoverMode 変数 (ページ 2889)
ErrorBits パラメータ (ページ 2886)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2885

テクノロジー
5.4 PID 制御

5.4.2.7

ErrorBits パラメータ
複数のエラーが未解決の場合は、エラーコードの値がバイナリ加算によって表示されます。
たとえば、エラーコード 0003 の表示は、エラー 0001 と 0002 が同時に保留中であることを示します。

ErrorBits

説明(DW#16#...)
0000

エラーはありません。

0001「Input」パラメータがプロセス値制限範囲外です。
• Input > Config.InputUpperLimit または• Input < Config.InputLowerLimit
ActivateRecoverMode = TRUE および ErrorBehaviour = 1 の場合、アクチュエータは代替出
力値まで移動します。 ActivateRecoverMode = TRUE および ErrorBehaviour = 0 の場合、アクチュエータはその現在位置で停止します。 ActivateRecoverMode = FALSE の場合、アクチュエータはその現在位置で停止します。
PID_3Step V1.1
アクチュエータは手動モードで移動することができます。
PID_3Step V1.0
この状態では、手動モードは可能ではありません。 エラーを取り除くまでは、アクチュエータを再度開始できません。

0002

パラメータ「Input_PER」の値が無効です。 アナログ入力でエラーが保留中であるかどうかをチェックします。
エラーが発生する前に自動モードが有効で、ActivateRecoverMode = TRUE で、かつ、エラーが保留中でない場合、PID_3Step が自動モードに戻ります。

0004

微調整時のエラー。プロセス値の振動を維持できませんでした。

0008

事前同調開始時のエラー。 プロセス値がセットポイントに近すぎます。 微調整を開始してください。

0010

セットポイントは、微調整時には変更できないこと。

0020

自動モードおよび微調整時には、事前同調は実行できません。

0040

微調整エラー。セットポイントがセットポイント制限値に近すぎます。

0080

事前同調のエラー。 出力値制限値の設定が不正です。
出力値の制限範囲が正しく設定され、コントロールが動作中である方向と一致するかどうかを確認します。

0100

2886

微調整時のエラーによって、パラメータが不正になりました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
ErrorBits

説明(DW#16#...)
0200

パラメータ「Input」の値が無効です。 値の数値フォーマットが不正です。
エラーが発生する前に自動モードが有効で、ActivateRecoverMode = TRUE で、かつ、エラーが保留中でない場合、PID_3Step が自動モードに戻ります。

0400

出力値の計算に失敗しました。 PID パラメータをチェックしてください。

0800

サンプリング時間エラー: PID_3Step が、サイクル割り込み OB のサンプリング時間内に呼び出されていません。
エラーが発生する前に自動モードが有効で、ActivateRecoverMode = TRUE で、かつ、エラーが保留中でない場合、PID_3Step が自動モードに戻ります。

1000

パラメータ「Setpoint」の値が無効です。 値の数値フォーマットが不正です。
エラーが発生する前に自動モードが有効で、ActivateRecoverMode = TRUE で、かつ、エラーが保留中でない場合、PID_3Step が自動モードに戻ります。

2000

パラメータ「Feedback_PER」の値が無効です。
アナログ入力でエラーが保留中であるかどうかをチェックします。
アクチュエータを代替出力値まで移動できません。アクチュエータは現在位置から移動しません。 この状態では、手動モードは可能ではありません。 アクチュエータをこの状態から解除するには、位置フィードバックを無効にする必要があります(Config. FeedbackOn =FALSE)。
エラーが発生する前に自動モードが有効で、ActivateRecoverMode = TRUE で、かつ、エラーが保留中でない場合、PID_3Step が自動モードに戻ります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2887

テクノロジー
5.4 PID 制御
ErrorBits

説明(DW#16#...)
4000

パラメータ「Feedback」の値が無効です。 値の数値フォーマットが不正です。
アクチュエータを代替出力値まで移動できません。アクチュエータは現在位置から移動しません。 この状態では、手動モードは可能ではありません。 アクチュエータをこの状態から解除するには、位置フィードバックを無効にする必要があります(Config. FeedbackOn =FALSE)。
エラーが発生する前に自動モードが有効で、ActivateRecoverMode = TRUE で、かつ、エラーが保留中でない場合、PID_3Step が自動モードに戻ります。

8000

デジタル位置フィードバックのエラーです。Actuator_H = TRUE および Actuator_L = TRUEです。
アクチュエータを代替出力値まで移動できません。アクチュエータは現在位置から移動しません。 この状態では、手動モードは可能ではありません。
アクチュエータをこの状態から解除するには、「エンドストップ信号アクチュエータ」を無効にする必要があります(Config.ActuatorEndStopOn = FALSE)。
エラーが発生する前に自動モードが有効で、ActivateRecoverMode = TRUE で、かつ、エラーが保留中でない場合、PID_3Step が自動モードに戻ります。

2888

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

5.4.2.8

Reset パラメータ
Reset での立ち上がりはエラーおよび警告をリセットし、積分動作を解除します。 Reset での立ち下がりは、直近の有効な動作モードへの変更をトリガします。
5HVHW



W PV

0RGH



W PV

6WDWH





5.4.2.9

①

有効化

②

Error

③

Reset







W PV

ActivateRecoverMode 変数
ActivateRecoverMode 変数の効果は、PID_3Step のバージョンに応じて異なります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2889

テクノロジー
5.4 PID 制御

バージョン 1.1 の動作
ActivateRecoverMode 変数は、自動モードでのエラー発生時の動作を決定します。
ActivateRecoverMode は、事前同調、微調整、および遷移時間測定時には無効です。
ActivateReco
verMode

説明

FALSE

エラー発生時には、PID_3Step は、「無効」または「代替出力値アプローチ」動作モードに切り替わります。 コントローラは、Retain.Mode のリセットまたは変更によって有効になり
ます。

TRUE

自動モードでエラーが頻繁に発生すると、この設定はコントロール応答に対してマイナスの効果を持ちます。 この場合は、ErrorBits パラメータをチェックして、エラーの原因を取り除
いてください。
1 つまたは複数のエラーが発生する場合、PID_3Step は、「エラーモニタ付き代替出力値ア
プローチ」または「エラーモニタ」モードに切り替わります。
• 0002h:パラメータ「Input_PER」の値が無効です。
• 0200h:パラメータ「Input」の値が無効です。
• 0800h:サンプリング時間のエラー• 1000h:パラメータ「Setpoint」の値が無効です。
• 2000h:パラメータ「Feedback_PER」の値が無効です。
• 4000h:パラメータ「Feedback」の値が無効です。
• 8000h: デジタル位置フィードバックのエラーです。
エラー 2000h、4000h、および 8000h の場合、PID_3Step は、設定された代替出力値にアプローチできません。
保留中のエラーがなくなると、PID_3Step は直ちに自動モードに戻ります。

2890

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御

バージョン 1.0 の動作
ActivateRecoverMode 変数は、自動および手動モードでのエラー発生時の動作を決定します。ActivateRecoverMode は、事前同調、微調整、および遷移時間測定時には無効です。
ActivateReco
verMode

説明

FALSE

エラー発生時には、PID_3Step は、「無効」または「代替出力値アプローチ」動作モードに切り替わります。 コントローラは、Retain.Mode のリセットまたは変更によって有効になり
ます。

TRUE

自動モードでのエラー
自動モードでエラーが頻繁に発生すると、この設定はコントロール応答に対してマイナスの効果を持ちます。 この場合は、ErrorBits パラメータをチェックして、エラーの原因を取り除
いてください。
1 つまたは複数のエラーが発生する場合、PID_3Step は、「エラーモニタ付き代替出力値ア
プローチ」または「エラーモニタ」モードに切り替わります。
• 0002h:パラメータ「Input_PER」の値が無効です。
• 0200h:パラメータ「Input」の値が無効です。
• 0800h:サンプリング時間のエラー• 1000h:パラメータ「Setpoint」の値が無効です。
• 2000h:パラメータ「Feedback_PER」の値が無効です。
• 4000h:パラメータ「Feedback」の値が無効です。
• 8000h: デジタル位置フィードバックのエラーです。
エラー 2000h、4000h、および 8000h の場合、PID_3Step は、設定された代替出力値にアプローチできません。
保留中のエラーがなくなると、PID_3Step は直ちに自動モードに戻ります。
手動モードでのエラー
以下のエラーの 1 つまたは複数が発生しても、PID_3Step は手動モードのままです。
• 0002h:パラメータ「Input_PER」の値が無効です。
• 0200h:パラメータ「Input」の値が無効です。
• 0800h:サンプリング時間のエラー• 1000h:パラメータ「Setpoint」の値が無効です。
• 2000h:パラメータ「Feedback_PER」の値が無効です。
• 4000h:パラメータ「Feedback」の値が無効です。
• 8000h: デジタル位置フィードバックのエラーです。
エラー 2000h、4000h、および 8000h の場合、バルブを適切な位置まで移動できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2891

テクノロジー
5.4 PID 制御

下記も参照
PID_3Step 静的変数 (ページ 2868)
State および Retain.Mode パラメータ (ページ 2877)

5.4.2.10

警告変数
複数の警告が保留中の場合は、変数の値はバイナリ加算によって表示されます。 警告 0003の表示は、たとえば、警告 0001 と警告 0002 が同時に保留中であることを示します。

Warnings

説明(DW#16#...)
0000

保留中の警告がありません。

0001

事前同調時にインフレクションポイントが見つかりませんでした。

0002

微調整時に振動が増加しました。

0004

セットポイントが、設定済みの制限値に制限されました。

0008

選択された計算方法で、コントロールされるシステムの必要なプロパティの中に定義されなかったものがあります。 代わりに、「TuneRuleTIR = 3」方法を使用して、PID パラメータが起算されました。

0010

ManualEnable = TRUE のために、動作モードを変更できませんでした。

0020

呼び出し OB のサイクルタイムが、PID アルゴリズムのサンプリング時間を制限します。
さらに短い OB サイクルタイムを使用して、結果を改善してください。

0040

プロセス値が、その警告制限値の 1 つを超えました。

0080

Retain.Mode での値が不正です。 動作モードは変更されません。

0100

手動値が、コントローラ出力の制限値に制限されました。

0200

コントローラ同調で使用されるルールが、不正な結果を戻すか、サポートされていません。

0400

遷移時間測定で選択された方法が、アクチュエータに適合しません。
アクチュエータの設定が選択された測定方法と適合しないため、遷移時間を測定できませ
ん。

0800

現在の位置と新しい出力値の間の相違が、遷移時間測定には小さすぎます。 この状態は、
不正な結果を生じる場合があります。 現在の出力値と新しい出力値の相違は、コントロール
範囲全体の少なくとも 50%でなければなりません。

1000

2892

代替出力値が出力値制限値を超えているため、代替出力値に達することができません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.4 PID 制御
以下の警告は、原因の対処が終わったらすぐに削除されます。
• 0004• 0020• 0040• 0100
他のすべての警告は、Reset での立ち上がりエッジで解除されます。

5.4.2.11

SUT.State 変数

SUT.Sta 名前te

説明

0 SUT_INIT

事前同調の初期化

50 SUT_TPDN

位置フィードバックなしでの開始位置の決定

100 SUT_STDABW

標準偏差の計算200 SUT_GET_POI

インフレクションポイントの検索

300 SUT_GET_RISETM

立ち上がり時間の決定

9900 SUT_IO

事前同調が成功

1 SUT_NIO

事前同調が失敗

5.4.2.12

TIR.State 変数

TIR.Stat 名前e-100 TIR_FIRST_SUT

説明
微調整が実行可能ではありません。 事前同調が最初に実行されます。

0 TIR_INIT

微調整の初期化

200 TIR_STDABW

標準偏差の計算

300 TIR_RUN_IN

最大または最小出力値によるセットポイントへの到達の試み

400 TIR_CTRLN

既存の PID パラメータを使用した、セットポイントへの到達の試み(事前同調が成功した場合)

500 TIR_OSZIL

振動の決定とパラメータの計算

9900 TIR_IO

微調整が成功1 TIR_NIO

微調整が失敗TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2893

テクノロジー
5.5 Time-based IO

5.5

Time-based IO

5.5.1

Time-based IO

5.5.1.1

TIO_SYNC: TIO モジュールを同期

説明
TIO_SYNC 命令と一緒に Time-based IO を使用できます。TIO_SYNC は、共有時間ベース
TIO_Time に TIO モジュールを同期します。
最大 8 つの TIO モジュール with TIO_SYNC を同期できます。 すべての TIO モジュールは、同じプロセスイメージパーティションに割り当てる必要があります(PIP)。 入力パラメータ
PIP_Mode に「0」を選択する場合、PIP_PART 入力パラメータに、プロセスイメージパー
ティションの数を割り当てます。

スタートアップ特性
CPU のスタートアップ時に、TIO_SYNC 命令は入力パラメータを 1 回受信およびチェック
し、TIO_Time を初期化します。 エラーなしでスタートアップが行われると、命令は通常の操作に切り替わります。 エラーが発生した場合、命令は通常の操作に切り替わらず、エラーメッセージを生成します。

動作原理
通常の操作で、命令は HWID 入力で設定されたすべての TIO モジュールを確実に同期します。
TIO モジュールの命令に計算された TIO_Time は、TIO_SYNC_Data 出力で提供されます。

エラーに対する応答
Error 出力は、命令パラメータが正しく割り当てられたかどうか、エラーが発生したかどうかを示します。 命令が正常に処理されなかった場合、エラーの理由が Status 出力に表示
されます。

2894

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO

パラメータ
次の表に、TIO_SYNC 命令のパラメータを示します。
パラメータ 宣言

データタイ 既定プ

説明

S7-1500
HWID_1 ... 入力

HW_IO

-1

HWCN からの TIO モジュールのハードウェア識別子

LTime

LT#0ns同期ドメインの送信クロック。

HWID_8*
SendClock入力*

PROFINET 設定から送信クロックを適用します。

PIP_Mode* 入力

USInt

0

データ更新のモード**:• SYNC_PO および SYNC_PI によるプロセスイメージの
内部更新のある 0 : OIP モデル• プロセスイメージの内部更新のない 1: OIP モデル• プロセスイメージの内部更新のない 2: IPO モデル

PIP_PART*

USInt

入力

1

PIP_Mode = 0 の場合にのみ関連
アイソクロナス方式で更新するプロセスイメージパーテ
ィションの番号。

TIO_SYNC_ 出力"TIO_SYNC

同期に使用する TIO モジュールおよび内部データの TIO

Data_Data"

命令に計算されたシステム時間。 UDT "TIO_SYNC_Data"(ページ 2921)を参照してください。

Status

DWord

出力

16#0

命令のステータス Status パラメータの説明を参照してく
ださい。

Error

Bool

出力

False

True の場合、この出力はエラーが発生したことを示します。 詳細は Status パラメータを参照してください。
Error は、エラーの対策が取られると直ちにリセットされます。

* CPU のスタートアップ時に 1 回チェックされます** IPO モデル(PIP_Mode = 2)は応答時間が最も短いですが、システム性能に最も大きな負荷もかけます。 すべてのTIO 命令およびその他のプログラムセクションの処理は、1 つの送信クロック内で完了する必要があります。

ステータスパラメータ
エラーコードまたはステータス情報は、ダブルワードとして Status 出力で出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2895

テクノロジー
5.5 Time-based IO
ダブルワードは以下のように分割されます。
エラーコードのセグメント意味

z0yywwwwシステムファンクションのエラー:• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
下位使用のあるシステムファンクションは yy でコーディングされます。 エラーコードの表を参照してください。
wwww はシステムファンクションの RET_VAL を指定します。 エラー情報については、システムファンクションのヘルプを参照してください。

z0yy0000

システムファンクションで発生していないエラー。 このエラーは連続したエラー番号 yy を受信します。
エラーは以下の場合に発生する可能性があります。
• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
エラーコードの表

エラーコ
ード

意味

対処法

(DW#16#.
..)00000000 エラーは発生していません。
1001xxxx—

エラーがシステムファンクション RD_SINFO で発 • TIA Portal 情報システムの RD_SINFO の説明をお読みください。
生しました。 下位ワード xxxx は、RD_SINFO からの RET_VAL 戻り値のエラー情報を示します。

• TIO_SYNC を必ず「Synchronous
Cycle」OB で呼び出してください。

10020000 アイソクロナス OB の読み取りサイクルタイムは • サイクルタイムの値を訂正します。
LT#0ms または負の値であるため、無効です。

• TIO_SYNC を必ず「Synchronous
Cycle」OB で呼び出してください。
命令は、アイソクロナス OB でエラーがない場合にのみ使用できます。
10030000 TIO_SYNC 命令は、アイソクロナス OB で呼び出さ TIO_SYNC を必ず「Synchronous Cycle」
れません。この命令は、アイソクロナス OB でエラ OB で呼び出してください。
ーがない場合にのみ使用できます。
考えられる原因:
The TIO_SYNC 命令が"MC-Servo"または"MCInterpolator" OB.で呼び出された。

2896

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対処法

(DW#16#.
..)10040000 PIP_Mode 入力パラメータに割り当てられた値が、 PIP_Mode 入力パラメータの値を訂正しま
有効な 0～2 の範囲外である。

す。

10050000 割り当てられた送信クロックが許可されている 0 送信クロックの値を訂正します。
< SendClock <= 4 ms の範囲外であるため無効である。
0006xxxx

エラーが SYNC_PI システムファンクションの実行 TIA Portal 情報システムの SYNC_PI の説明中に発生しました。 下位ワード xxxx は、SYNC_PI をお読みください。
からの RET_VAL 戻り値のエラー情報を示します。

0007xxxx

エラーが SYNC_PO システムファンクションの実行 TIA Portal 情報システムの SYNC_PO の説中に発生しました。 下位ワード xxxx は、SYNC_PO 明をお読みください。
からの RET_VAL 戻り値のエラー情報を示します。

10080000 アイソクロナスモードが見つかりません。

入力パラメータ HWID_1～HWID_8 の値をTime‑based IO を使用できません。

チェックします。 TIO モジュールのハード考えられる原因:

ウェア識別子を HWCN モジュールプロパ

アドレス計算中の内部エラー

ティから指定します。

10090000 TIO モジュール HWID_1: HWID_1 の読み出し中の 個々の入力パラメータの値をチェックしまエラー。

す。 それぞれの場合で TIO モジュールのハ

100A0000 TIO モジュール HWID_2: HWID_2 の読み出し中の ードウェア識別子を HWCN のモジュール
プロパティから指定します。 データタイプ
エラー。
100B0000 TIO モジュール HWID_3: HWID_3 の読み出し中のエラー。
100C0000 TIO モジュール HWID_4: HWID_4 の読み出し中の

Hw_SubModule の内部システム定数が、シンボリックアドレス指定で使用可能です。

エラー。
100D0000 TIO モジュール HWID_5: HWID_5 の読み出し中のエラー。
100E0000 TIO モジュール HWID_6: HWID_6 の読み出し中のエラー。
100F0000 TIO モジュール HWID_7: HWID_7 の読み出し中のエラー。
10100000 TIO モジュール HWID_8: HWID_8 の読み出し中のエラー。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2897

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対処法

(DW#16#.
..)10110000 入力パラメータ PIP_PART に設定したプロセスイメ PIP_PART 入力パラメータの値を訂正しまージパーティションが、有効な範囲 1～31 内にあ す。
りません。
x0FF0000

5.5.1.2

一般的な内部エラー。

—

TIO_IOLink_IN: タイムスタンプによる入力信号の読み出しプロセス

説明
TIO_IOLink_IN 命令で、 Time-based IO を使用できます。TIO_IOLink_IN は IO-Link Device
でイベントを検出し、関連するタイムスタンプを含めてプロセス値を返します。
IO-Link Device はタイムスタンプファンクションを備えている必要があり、Port は「IOLink, Time based IN」モードにある必要があります。

スタートアップ特性
CPU のスタートアップ中、命令 TIO_IOLink_IN は入力パラメータを 1 回適用し、以下をチ
ェックします。
• HWID のチェック• Port 番号が範囲内(1～4)にあるかをチェック• TIO_SYNC_Data.Error のチェック: TIO_SYNC にエラーが存在するか?
• 正の値の To チェック• タイプ IO-Link への設定のチェック• IO-Link Time based IN の設定に関する Port モードのチェック• OB が「Synchronous Cycle」OB であるかをチェック• PortQualifier のチェック
エラーなしでスタートアップが行われると、命令は通常の操作に切り替わります。 エラーが発生した場合、命令は通常の操作に切り替わらず、エラーメッセージを生成します。

2898

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO

動作原理
通常の操作で、命令は IO-Link Device および最後の有効な変更の関連するタイムスタンプ(時刻 = TIO_Time)のプロセスデータ(SA_Data)を検出します。 SA_Data を正しく動作する
ポートで正しく変更するたびに、有効なタイムスタンプが付きます。
入力 TIO_SYNC_Data を TIO_SYNC 命令の同じ名前の出力に接続します。 これにより、共有時間ベースを確保します。

エラーに対する応答
Error 出力は、命令が正しく処理されたかどうかを示します。 エラーの原因は Status 出力に表示されます。

パラメータ
次の表に、TIO_IOLink_IN 命令のパラメータを示します。
パラメータ 宣言

データタイ 既定プ

説明

S7-1500
HWID*

入力

HW_IO

0

HWCN からの TIO モジュールのハードウェア識別子

Port*

入力

USInt

0

Port 接続済みの番号(1～4)IO-Link Device

TIO_SYNC_ 入力"TIO_SYNC

TIO_SYNC 命令によって TIO モジュールの TIO 命令に提Data*

_Data"

供されるシステム時刻。 UDT "TIO_SYNC_Data" (ページ 2921)を参照してください。
この入力パラメータを TIO_SYNC 命令の「TIO_SYNC_Data」出力パラメータに接続します。

TO*

入力

LTime

LT#0ns

To: アイソクロナス出力データの出力時刻。
To を ET 200 ステーション(PROFINET インターフェースのプロパティ)から適用します。

SA_Bit0

出力

Bool

False

プロセスデータの変更を表示します(SA_Data のビット
0)。
SA_Bit0 はイベント指向です。 有効なタイムスタンプが取得されない限り(EventCount = 0)、プロセスデータは無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2899

テクノロジー
5.5 Time-based IO
パラメータ 宣言

データタイ 既定プ

説明

S7-1500
SA_Bit1

Bool

出力

False

プロセスデータの変更を表示します(SA_Data のビット
1)。
SA_Bit1 はイベント指向です。 有効なタイムスタンプが取得されない限り(EventCount = 0)、プロセスデータは無効です。

SA_Data

DWord

出力

16#0

プロセスデータ SA_Data (センサアプリケーションデー
タ)

TimeStam

LTime

出力

LT#0nsp

タイムスタンプ: プロセス信号の変更 SA-Data が IO-Link
Device で発生した時刻。

EventCoun 出力

UInt

0

t

カウンタ: 新しい、有効なタイムスタンプごとにインクリメントします。 カウンタは、CPU がスタートアップす
るたびにリセットされます。

Status

DWord

出力

16#0

命令のステータス Status パラメータの説明を参照してく
ださい。

Error

Bool

出力

False

True の場合、この出力はエラーが発生したことを示します。 詳細は Status パラメータを参照してください。
Error は、エラーの対策が取られると直ちにリセットされます。

* CPU のスタートアップ時に 1 回チェックされます

ステータスパラメータ
エラーコードまたはステータス情報は、ダブルワードとしてステータス出力で出力されま
す。

2900

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
ダブルワードは以下のように分割されます。
エラーコードのセグメント意味

z0yywwwwシステムファンクションのエラー:• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
下位使用のあるシステムファンクションは yy でコーディングされます。 エラーコードの表を参照してください。
wwww はシステムファンクションの RET_VAL を指定します。 システムファンクションについては、システムファンクションのヘルプを参照してください。

z0yy0000

システムファンクションで発生していないエラー。 このエラーは連続したエラー番号 yy を受信します。
エラーは以下の場合に発生する可能性があります。
• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
エラーコードの表

エラーコ
ード

意味

対処法

(DW#16#.
..)00000000 エラーは発生していません。

—

10010000 Port 入力パラメータに割り当てられた番号が、有効 Port 入力パラメータの値を訂正します。
な 1～4 の範囲外である。
10020000 TIO_IOLink_IN 命令は、アイソクロナス OB で呼び TIO_IOLink_IN を必ず「Synchronous
出されません。この命令は、アイソクロナス OB で Cycle」OB で呼び出してください。
エラーがない場合にのみ使用できます。
10030000 HWID 入力パラメータの読み出し時にエラーが発生 HWID 入力パラメータの値をチェックしま
しました。

す。 TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。 データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレ
ス指定で使用可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2901

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対処法

(DW#16#.
..)x0040000 TIO_SYNC_Data のデータが無効/不正です。

TIO_SYNC 命令およびそのTIO_SYNC_Data 出力との相互接続をチェックします。

1005xxxx

エラーが RD_SINFO システムファンクションの実行 • TIA Portal 情報システムの RD_SINFO の説明をお読みください。
中に発生しました。 下位ワード xxxx は、
RD_SINFO からの RET_VAL 戻り値のエラー情報を • TIO_IOLink_IN を必ず「Synchronous
Cycle」OB で呼び出してください。
示します。

10060000 IO-Link Device が見つかりません。
考えられる原因:
ハードウェア識別子を使用して構成されたモジュー
ルが、Time‑based IO 用の IO‑Link Master ではない。
10070000 アドレス計算中に発生した内部エラー。

• 構成されたモジュールが、Time‑based IO 用の IO‑Link Master であることを確認します。
• HWID 入力パラメータの値をチェックします。 TIO モジュールのハードウェア
識別子を HWCN モジュールプロパティから指定します。
HWID 入力パラメータの値をチェックします。 TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。 データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレ
ス指定で使用可能です。

00080000 TIO モジュールが、TIO_SYNC 命令を使用して同期 命令 TIO_SYNC.をチェックします。
されていません。
10090000 アイソクロナス OB の読み出しサイクルタイムが許 • サイクルタイムを訂正します。
可されている 0 < TAPP <= 16 ms 範囲外であるため、 • TIO_IOLink_IN を必ず「Synchronous
Cycle」OB で呼び出してください。
無効です。
命令は、アイソクロナス OB でエラーがない場合にのみ使用できます。
100A0000 TO 入力パラメータに割り当てられた時間が、許可 TO 入力パラメータの値を訂正します。
されている 0 < To <= 4 ms 範囲外です。
100Bxxxx

エラーが RD_ADDR システムファンクションの実行 TIA Portal 情報システムの RD_ADDR の説中に発生しました。 下位ワード xxxx は、RD_ADDR 明をお読みください。
からの RET_VAL 戻り値のエラー情報を示します。

2902

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対処法

(DW#16#.
..)
000C0000 変換されたタイムスタンプが無効です。

接続されたセンサおよび IO‑Link Master とセンサ間の相互作用をチェックします(設定など)。

000D0000 IO-Link の値のステータス PortQualifier が、プロセ 接続されているセンサとその設定をチェッスデータが無効であることを示しています。
100E0000 IO-Link の設定されたポートモードが不正です。

クします。
S7‑PCT を使用して、接続されたセンサの設定をチェックします。

x0FF0000

5.5.1.3

一般的な内部エラー。

—

TIO_DI:デジタル入力および関連するタイムスタンプでのエッジの読み出し

説明
Time-based IO を TIO_DI 命令と一緒に使用できます。TIO_DI は、TM Timer DIDQ のデジ
タル入力のエッジを継続的に検出し、関連するタイムスタンプを返します。

スタートアップ特性
CPU のスタートアップ中、命令 TIO_DI は入力パラメータを 1 回適用し、以下をチェックします。
• HWID のチェック• デジタル入力の数(Channel)が許可されている範囲であるかどうかをチェック(アドレス指定されたモジュールとチャンネル構成に依存する)• TIO_SYNC_Data.Error のチェック:TIO_SYNC にエラーが存在するか?
• To 有効期限のチェック(0 ms～4 ms)• OB が「Synchronous Cycle」OB であるかをチェック
エラーなしでスタートアップが行われると、命令は通常の操作に切り替わります。入力パ
ラメータ EdgeSel は、通常の操作中に変更できます。エラーが発生した場合、命令は通常の操作に切り替わらず、エラーメッセージを生成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202903

テクノロジー
5.5 Time-based IO

動作原理
通常の操作で、命令は、最後の有効な、定義されたエッジペアのデジタル入力のエッジと関連するタイムスタンプを検出します(時刻 = TIO_Time)。入力パラメータ EdgeSel を使用
して、タイムスタンプが検出されるエッジを決定します。
入力 TIO_SYNC_Data を TIO_SYNC 命令の同じ名前の出力に接続します。これにより、共有時間ベースを確保します。

エラーに対する応答
Error 出力は、命令が正しく処理されたかどうかを示します。エラーの原因は Status 出力に表示されます。

パラメータ
次の表に、TIO_DI 命令のパラメータを示します。
パラメータ 宣言

データタイ デフォルト 説明
プ
S7-1500

HWID*

入力

HW_IO

0

HWCN からの TIO モジュールのハードウェア識別子

Channel*

入力

UInt

0

接続される TM Timer DIDQ のデジタル入力の数(0 ... m)

TIO_SYNC_ 入力"TIO_SYNC

TIO_SYNC 命令によって TIO モジュールの TIO 命令に提Data*

_Data"

供されるシステム時刻。UDT "TIO_SYNC_Data" (ページ 2921)を参照してください。
この入力パラメータを TIO_SYNC 命令の「TIO_SYNC_Data」出力パラメータに接続します。

EdgeSel

入力

UInt

3

タイムスタンプが検出されるエッジを指定します。
0D:予約済み
1D:立ち上がりエッジでのみ
2D:立ち下がりエッジでのみ
3D:立ち上がりおよび立ち下がりエッジ(発生による順序)
4D:最初に立ち上がり、次に立ち下がりエッジ
5D:最初に立ち下がり、次に立ち上がりエッジ
6 bis 255D:予約済み

2904

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
パラメータ 宣言

データタイ デフォルト 説明
プ
S7-1500

TO*

入力

LTime

LT#0ns

To:アイソクロナス出力データの出力時間。
To を ET 200 ステーション (PROFINET インターフェースのプロパティ)から適用します。

DI

出力

Bool

False

デジタル入力のステータス。
デジタル入力の反転が設定されている場合、このパラメータも反転されます。

TimeStam

出力

LTime

LT#0nspRE

タイムスタンプ:立ち上がりエッジが検出された時刻。
例外:
EdgeSel = 2D:立ち下がりエッジが検出された時刻。

TimeStam

出力

LTime

LT#0nspFE

タイムスタンプ:立ち下がりエッジが検出された時刻。
例外:
EdgeSel = 1D:立ち上がりエッジが検出された時刻。

EventCoun 出力

UInt

0

tRE

カウンタ:立ち上がりエッジの新しい、有効なタイムス
タンプごとにインクリメントします。カウンタは、CPUがスタートアップするたびにリセットされます。

EventCoun 出力

UInt

0

tFE

カウンタ:立ち下がりエッジの新しい、有効なタイムス
タンプごとにインクリメントします。カウンタは、CPUがスタートアップするたびにリセットされます。

LEC

出力

UInt

0

カウンタ:タイムスタンプを保存できなかったエッジの数。モジュールは、アプリケーションサイクル当たり最大 7 つのエッジをカウントできます。カウンタは、新しいアプリケーションサイクルごとにリセットされます。

Status

出力

DWord

16#0

命令のステータス Status パラメータの説明を参照してく
ださい。

Error

出力

Bool

False

True の場合、この出力はエラーが発生したことを示します。詳細は Status パラメータを参照してください。
Error は、エラーの対策が取られると直ちにリセットされます。

* CPU のスタートアップ時に 1 回チェックされます

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2905

テクノロジー
5.5 Time-based IO

ステータスパラメータ
エラーコードまたはステータス情報は、ダブルワードとしてステータス出力で出力されます。
ダブルワードは以下のように分割されます。
エラーコードのセグメント意味

z0yywwwwシステムファンクションのエラー:• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
下位使用のあるシステムファンクションは yy でコーディングされます。エラーコードの表を参照してください。
wwww はシステムファンクションの RET_VAL を指定します。システムファンクションについては、システムファンクションのヘルプを参照してください。

z0yy0000

システムファンクションで発生していないエラー。このエラーは連続したエラー番号 yy を受信します。
エラーは以下の場合に発生する可能性があります。
• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
エラーコードの表

エラーコ
ード

意味

対策

(DW#16#.
..)00000000 エラーなし—

10010000 Channel 入力パラメータに割り当てられたデジタ Channel 入力パラメータの値を訂正します。
ル入力の数が、許可されている範囲外です(アドレス指定されたモジュールとチャンネル構成に依存する)。
10020000 TIO_DI 命令がアイソクロナス OB で呼び出されて TIO_DI を必ず「Synchronous Cycle」OB でいません。命令は、アイソクロナス OB でエラー 呼び出してください。
がない場合にのみ使用できます。

2906

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対策

(DW#16#.
..)10030000 HWID 入力パラメータの読み出し時にエラーが発生 HWID 入力パラメータの値をチェックしま
しました。

す。TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレス
指定で使用可能です。

x0040000 TIO_SYNC_Data のデータが無効/不正です。

TIO_SYNC 命令およびその TIO_SYNC_Data
出力との相互接続をチェックします。

1005xxxx

エラーが RD_SINFO システムファンクションの実 • TIA Portal 情報システムの RD_SINFO の説明をお読みください。
行中に発生しました。下位ワード xxxx は、
RD_SINFO からの RET_VAL 戻り値のエラー情報を • TIO_DI を必ず「Synchronous Cycle」
OB で呼び出してください。
示します。

10060000 TM Timer DIDQ が見つかりません。
考えられる原因:• 設定されたモジュールが TM Timer DIDQであることを確認します。

ハードウェア識別子を使用して構成されたモジュ • HWID 入力パラメータの値をチェックします。TIO モジュールのハードウェア識ールが、TM Timer DIDQ ではない。
別子を HWCN モジュールプロパティから指定します。

10070000 アドレス計算中に発生した内部エラー。

HWID 入力パラメータの値をチェックしま
す。TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレス
指定で使用可能です。

00080000 TIO モジュールが、TIO_SYNC 命令を使用して同期 命令 TIO_SYNC.をチェックします。
されていません。
10090000 アイソクロナス OB の読み出しサイクルタイムが • サイクルタイムを訂正します。
許可されている 0 < TAPP <= 16 ms 範囲外であるた • TIO_DI を必ず「Synchronous Cycle」
OB で呼び出してください。
め、無効です。
命令は、アイソクロナス OB でエラーがない場合にのみ使用できます。
100A0000 TO 入力パラメータに割り当てられた時間が、許可 TO 入力パラメータの値を訂正します。
されている 0 < To <= 4 ms 範囲外です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2907

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対策

(DW#16#.
..)100Bxxxx

エラーが RD_ADDR システムファンクションの実 TIA Portal 情報システムの RD_ADDR の説明
行中に発生しました。下位ワード xxxx は、をお読みください。

RD_ADDR からの RET_VAL 戻り値のエラー情報を示します。
000C0000 変換されたタイムスタンプが無効です。
考えられる原因:

TIO モジュールとの PROFINET 通信をチェックします。

通信エラー
000D0000 デジタル入力の Quality Information は、デジタル デジタル入力の配線をチェックします。
入力でエラーが発生したことを示します。
000E0000 Channel 入力パラメータに割り当てられた数が、 • チャンネル構成をチェックします(TM Timer DIDQ 16x24V の場合のみ)。
Timer DI として設定されたデジタル入力ではありません。

• デジタル入力の動作モードをチェックします。

000F0000 EdgeSel 入力パラメータに割り当てられた値が、 EdgeSel 入力パラメータの値を訂正します。
有効な 1～5 の範囲外である。
10100000 送信クロックが許可されている 0 < SendClock

送信クロックを修正します。

<= 4 ms の範囲外であるため無効である。
エラーコードは以下のことを示す場合もあります。
• TIO_SYNC_Data のデータが無効であるか、または存在しない。
• TIO_DI 命令がアイソクロナス OB で呼び出されていません。
x0FF0000

5.5.1.4

一般的な内部エラー。

—

TIO_IOLink_OUT: 出力時刻制御されたプロセス出力信号

説明Time-based IO を TIO_IOLink_OUT 命令と一緒に使用できます。TIO_IOLink_OUT を使用して、指定した時刻に IO-Link Device の出力データを有効にすることができます。
IO-Link Device はタイムスタンプファンクションを備えている必要があり、Port は「IOLink, Time based OUT」モードにある必要があります。

2908

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO

スタートアップ特性
CPU のスタートアップ中、命令 TIO_IOLink_OUT は入力パラメータを 1 回適用し、以下をチェックします。
• HWID のチェック• Port 番号が範囲内(1～4)にあるかをチェック• TIO_SYNC_Data.Error のチェック: TIO_SYNC にエラーが存在するか?
• 正の値の To チェック• タイプ IO-Link への設定のチェック• IO-Link Time based OUT の設定に関する Port モードのチェック• OB が「Synchronous Cycle」OB であるかをチェック• PortQualifier のチェック
エラーなしでスタートアップが行われると、命令は通常の操作に切り替わります。 入力パ
ラメータ REQ、Out_Mode、TimeStamp および AA_Data は、通常の操作中に変更できます。 エラーが発生した場合、命令は通常の操作に切り替わらず、エラーメッセージを生成
します。

動作原理
通常の操作で、命令はプロセスデータ(AA_Data)を IO-Link Device に送信します。 出力データ AA_Data は、入力パラメータ TimeStamp で定義された時刻に有効になります。
入力 TIO_SYNC_Data を TIO_SYNC 命令の同じ名前の出力に接続します。 これにより、共有時間ベースを確保します。
「REQ」パラメータの立ち上がりエッジで、出力ジョブを開始します。 保留中のエラーがなく、ジョブが有効な場合にのみ新しいジョブを開始できます。 出力ジョブを開始する
とき、AA_Data (ビット 0、1)が、TimeStamp で定義された時刻に、IO-Link Device で有効になります。 ジョブは、出力時刻に達する前に最後のアプリケーションサイクルが実行さTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202909

テクノロジー
5.5 Time-based IO
れると完了します(Done)。Status および Error は、ジョブランタイム中に常に更新されています。
注記
ジョブが立ち上がりエッジで開始すると、ジョブを再起動せずに新しい TimeStamp の入力によって、出力時刻を適合させることができます。
制約:
適合されたタイムスタンプが出力時刻前の 16 ms 未満の場合(TimeStamp - TIO_Time <16)、最後の有効なタイムスタンプが使用されます。
TimeStamp として値 0 を指定すると、出力は入力 AA_Data で指定されたデータによって直接書き込まれます。 これにより、手動モードでタイムスタンプを使用せずに、TIO モジ
ュールから直接制御を実行することができます。 進行中のジョブを中断するために、直接制御を使用できます。

エラーに対する応答
Error 出力は、命令が正しく処理されたかどうかを示します。 エラーの原因は Status 出力に表示されます。

パラメータ
次の表に、TIO_IOLink_OUT 命令のパラメータを示します。
パラメータ 宣言

データタイ 既定プ

説明

S7-1500
REQ

入力

Bool

False

ジョブは立ち上がりエッジで開始します。

HWID*

入力

HW_IO

0

HWCN からの TIO モジュールのハードウェア識別子

TO*

入力

LTime

LT#0ns

To: アイソクロナス出力データの出力時刻。
To を ET 200 ステーション (PROFINET インターフェースのプロパティ)から適用します。

Port*

入力

USInt

0

指定された IO-Link Device のポート番号(1～4)

TIO_SYNC_ 入力"TIO_SYNC

TIO_SYNC 命令によって TIO モジュールの TIO 命令に提Data*

_Data"

供されるシステム時刻。 UDT "TIO_SYNC_Data" (ページ 2921)を参照してください。
この入力パラメータを TIO_SYNC 命令の「TIO_SYNC_Data」出力パラメータに接続します。

2910

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
パラメータ 宣言

データタイ 既定プ

説明

S7-1500
TimeStam

LTime

入力

LT#0nsp
AA_Data

タイムスタンプ: プロセスデータ(AAE1, AAE2)が出力さ
れる時刻。

Word

入力

16#0

プロセス出力データ: 出力される日付(ワード)。
ビット 0、1 の AAE1 および AAE2 を含みます。

Busy

出力

Bool

False

Busy = True: ジョブが未完了です。

Done

出力

Bool

False

Done = True が 1 つのサイクルについて表示されます。
ジョブは「完了、エラーなし」としてシグナルが送信さ
れます。

Error

Bool

出力

False

True の場合、この出力はエラーが発生したことを示します。 この場合、BUSY および DONE が False に設定されます。 詳細は Status パラメータを参照してください。
Error は、エラーの対策が取られると直ちにリセットされます。

Status

DWord

出力

16#0

命令のステータス Status パラメータの説明を参照してください。

* CPU のスタートアップ時に 1 回チェックされます

ステータスパラメータ
エラーコードまたはステータス情報は、ダブルワードとしてステータス出力で出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/20202911

テクノロジー
5.5 Time-based IO
ダブルワードは以下のように分割されます。
エラーコー
ドのセグメ
ント

意味

z0yywwwwシステムファンクションのエラー:• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
下位使用のあるシステムファンクションは yy でコーディングされます。 エラーコードの表を参照してください。
wwww はシステムファンクションの RET_VAL を指定します。 エラー情報については、シス
テムファンクションのヘルプを参照してください。

z0yy0000

システムファンクションで発生していないエラー。 このエラーは連続したエラー番号 yy を受信します。
エラーは以下の場合に発生する可能性があります。
• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
エラーコードの表

エラーコ
ード

意味

対処法

(DW#16#.
..)00000000 エラーは発生していません。

—

10010000 Port 入力パラメータに割り当てられた番号が、有効 Port 入力パラメータの値を訂正します。
な 1～4 の範囲外である。
10020000 TIO_IOLink_OUT 命令は、アイソクロナス OB で呼 TIO_IOLink_OUT を必ず「Synchronous
び出されません。この命令は、アイソクロナス OB Cycle」OB で呼び出してください。
でエラーがない場合にのみ使用できます。
10030000 HWID 入力パラメータの読み出し時にエラーが発生 HWID 入力パラメータの値をチェックしま
しました。

す。 TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。 データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレ
ス指定で使用可能です。

2912

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対処法

(DW#16#.
..)x0040000 TIO_SYNC_Data のデータが無効/不正です。

TIO_SYNC 命令およびそのTIO_SYNC_Data 出力との相互接続をチェックします。

1005xxxx

エラーが RD_SINFO システムファンクションの実行 • TIA Portal 情報システムの RD_SINFO の説明をお読みください。
中に発生しました。 下位ワード xxxx は、
RD_SINFO からの RET_VAL 戻り値のエラー情報を • TIO_IOLink_OUT を必ず「Synchronous Cycle」OB で呼び出して
示します。
ください。

10060000 IO-Link Device が見つかりません。
考えられる原因:
ハードウェア識別子を使用して構成されたモジュー
ルが、Time‑based IO 用の IO‑Link Master ではない。
10070000 アドレス計算中に発生した内部エラー。

• 構成されたモジュールが、Time‑based IO 用の IO‑Link Master であることを確認します。
• HWID 入力パラメータの値をチェックします。 TIO モジュールのハードウェ
ア識別子を HWCN モジュールプロパテ
ィから指定します。
HWID 入力パラメータの値をチェックします。 TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。 データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレ
ス指定で使用可能です。

00080000 TIO モジュールが、TIO_SYNC 命令を使用して同期 命令 TIO_SYNC.をチェックします。
されていません。
10090000 アイソクロナス OB の読み出しサイクルタイムが許 • サイクルタイムを訂正します。
可されている 0 < TAPP <= 16 ms 範囲外であるため、 • TIO_IOLink_OUT を必ず「Synchronous Cycle」OB で呼び出して
無効です。
ください。
命令は、アイソクロナス OB でエラーがない場合にのみ使用できます。
100A0000 TO 入力パラメータに割り当てられた時間が、許可 TO 入力パラメータの値を訂正します。
されている 0 < To <= 4 ms 範囲外です。
100Bxxxx

エラーが RD_ADDR システムファンクションの実行 TIA Portal 情報システムの RD_ADDR の説中に発生しました。 下位ワード xxxx は、RD_ADDR 明をお読みください。
からの RET_VAL 戻り値のエラー情報を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2913

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対処法

(DW#16#.
..)
000C0000 TimeStamp 入力パラメータのタイムスタンプが無 TimeStamp 入力パラメータをチェックし
効です。

ます。

000D0000 IO-Link の値のステータス PortQualifier が、プロセ 接続されているセンサとその設定をチェッスデータが無効であることを示しています。
100E0000 IO-Link の設定されたポートモードが不正です。

クします。
S7‑PCT を使用して、接続されたセンサの設定をチェックします。

100F0000 「Synchronous Cycle」OB の読み出しサイクルタイ サイクルタイムとして送信クロックの倍数
x0FF0000

5.5.1.5

ムが長すぎます。 TAPP > 16 ms.

を小さく設定します。

一般的な内部エラー。

—

TIO_DQ:デジタル出力で時間制御された出力エッジ

説明Time-based IO を TIO_DQ 命令と一緒に使用できます。TIO_DQ が、指定した時刻に
TM Timer DIDQ のデジタル出力を切り替えます。

スタートアップ特性
CPU のスタートアップ中、命令 TIO_DQ は入力パラメータを 1 回適用し、以下をチェックします。
• HWID のチェック• デジタル入力の数(Channel)が許可されている範囲であるかどうかをチェック(アドレス指定されたモジュールとチャンネル構成に依存する)• TIO_SYNC_Data.Error のチェック:TIO_SYNC にエラーが存在するか?
• To 有効期限のチェック(0 ms～4 ms)• OB が「Synchronous Cycle」OB であるかをチェック
エラーなしでスタートアップが行われると、命令は通常の操作に切り替わります。入力パ
ラメータ REQ、Out_Mode、TimeStampRE および TimeStampFE は、通常の操作中に変更できます。エラーが発生した場合、命令は通常の操作に切り替わらず、エラーメッセージを生成します。

2914

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO

動作原理
命令は、通常の操作中にデジタル出力で時刻制御されたエッジを出力します。
• TimeStampRE 入力パラメータで定義した時刻で、立ち上がりエッジがデジタル出力.で出力されます。
• TimeStampFE 入力パラメータで定義した時刻で、立ち下がりエッジがデジタル出力.で出力されます。
入力パラメータ Out_Mode を使用して、片方のエッジのみ、または両方のエッジが出力されるかどうかを決定します。
入力 TIO_SYNC_Data を TIO_SYNC 命令の同じ名前の出力に接続します。これにより、共有時間ベースを確保します。
「REQ」パラメータの立ち上がりエッジで、出力ジョブを開始します。保留中のエラーがなく、ジョブが有効な場合にのみ新しいジョブを開始できます。出力ジョブを開始するとき、デジタル出力が TimeStampRE および TimeStampFE によって定義した時刻で切り替わります。
• デジタル出力が既に時刻 TimeStampRE で設定されている場合、出力ジョブは立ち上がりエッジがあっても、モジュールに転送されません。
• デジタル出力が時刻 TimeStampFE で設定されていない場合、出力ジョブは立ち下がり
エッジがあっても、モジュールに転送されません。
つまり、デジタル出力はいずれの場合も切り替わりません。
ジョブは、出力時刻に達する前に最後のアプリケーションサイクルが実行されると完了します(DONE)。Status および Error は、ジョブランタイム中に常に更新されています。
次の図に、以下の条件での出力ジョブの開始でビット DONE および BUSY の応答の例を示します。
• Out_Mode = 2• 2 つのタイムスタンプは、ジョブの開始と出力の間で適合されていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2915

テクノロジー
5.5 Time-based IO
7$33

5(4

%86<

'21(

'4

5

)

5

TAPP

アプリケーションサイクル

R1, R2

DQ の立ち上がりエッジの指定された時刻

F1, F2

DQ の立ち下がりエッジの指定された時刻)

7,2B7LPH

注記
ジョブが立ち上がりエッジで開始すると、ジョブを再起動せずに TimeStampRE および
TimeStampFE の入力によって、出力時刻を適合させることができます。
制約:
適合されたタイムスタンプが出力時刻からの 2 つのアプリケーションサイクルよりも小さい
場合(TimeStampRE - TIO_Time < 2*TAPP または TimeStampFE - TIO_Time < 2*TAPP)、最後の有効なタイムスタンプが使用されます。
TimeStampRE または TimeStampFE として値「0」を指定した場合、入力パラメータ
Out_Mode = 3 を使用してデジタル出力で直接各エッジを出力できます。これにより、手動モードでタイムスタンプを使用せずに、TIO モジュールから直接制御を実行することができます。進行中のジョブを中断するために、直接制御を使用できます。
入力パラメータへの変更は、TIO_DQ 命令が CPU のスタートアップを検出するまで適用さ
れません。

2916

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO

エラーに対する応答
Error 出力は、命令が正しく処理されたかどうかを示します。エラーの原因は Status 出力に表示されます。

パラメータ
次の表に、TIO_DQ 命令のパラメータを示します。
パラメータ 宣言

データタイ デフォルト 説明
プ
S7-1500

REQ

入力

Bool

False

ジョブは立ち上がりエッジで開始します。

HWID*

入力

HW_IO

0

HWCN からの TIO モジュールのハードウェア識別子

Channel*

入力

UInt

0

接続される TM Timer DIDQ のデジタル出力の数(0 ... m)

TIO_SYNC_ 入力"TIO_SYNC

TIO_SYNC 命令によって TIO モジュールの TIO 命令に提Data*

_Data"

供されるシステム時刻。UDT "TIO_SYNC_Data" (ページ 2921)を参照してください。
この入力パラメータを TIO_SYNC 命令の「TIO_SYNC_Data」出力パラメータに接続します。

Out_Mode 入力

UInt

2

デジタル出力でのエッジの出力モードを指定します。
0D:立ち上がりエッジ(TimeStampRE)のみが出力されます。
1D:立ち下がりエッジ(TimeStampFE)のみが出力されます。
2D:両方のエッジが出力されます(TimeStampRE および
TimeStampFE)。
3D:各エッジが TimeStampRE = 0 またはTimeStampFE = 0 のときに直接出力されます。両方のタ
イムスタンプの値が「0」の場合、またはタイムスタン
プの値が「0」でない場合、エッジは出力されません。
4 bis 255D:予約済み

TO*

入力

LTime

LT#0ns

To:アイソクロナス出力データの出力時間。
To を ET 200 ステーション (PROFINET インターフェースのプロパティ)から適用します。

TimeStam

入力

LTime

LT#0ns

タイムスタンプ:立ち上がりエッジが出力される時刻。

pRE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2917

テクノロジー
5.5 Time-based IO
パラメータ 宣言

データタイ デフォルト 説明
プ
S7-1500

TimeStam

入力

LTime

LT#0ns

タイムスタンプ:立ち下がりエッジが出力される時刻。

出力

Bool

False

デジタル出力の現在のステータス。

pFE
StatusDQ

デジタル出力の反転が設定されている場合、 StatusDQも反転されます。
BUSY

出力

Bool

False

BUSY = True:ジョブがまだ完了していません。

DONE

出力

Bool

False

DONE = True が 1 つのサイクルについて表示されます。
ジョブは「完了、エラーなし」としてシグナルが送信されます。

Status

DWord

出力

16#0

命令のステータス Status パラメータの説明を参照してく
ださい。

Error

Bool

出力

False

True の場合、この出力はエラーが発生したことを示します。この場合、BUSY および DONE が False に設定されます。詳細は Status パラメータを参照してください。
Error は、エラーの対策が取られると直ちにリセットされます。

* CPU のスタートアップ時に 1 回チェックされます

ステータスパラメータ
エラーコードまたはステータス情報は、ダブルワードとしてステータス出力で出力されま
す。

2918

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
ダブルワードは以下のように分割されます。
エラーコー
ドのセグメ
ント

意味

z0yywwwwシステムファンクションのエラー:• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
下位使用のあるシステムファンクションは yy でコーディングされます。エラーコードの表を参照してください。
wwww はシステムファンクションの RET_VAL を指定します。エラー情報については、シス
テムファンクションのヘルプを参照してください。

z0yy0000

システムファンクションで発生していないエラー。このエラーは連続したエラー番号 yy を受信します。
エラーは以下の場合に発生する可能性があります。
• スタートアップ中(z = 0)
• 通常の操作中(z = 1)
エラーコードの表

エラーコ
ード

意味

対策

(DW#16#.
..)00000000 エラーなし—

10010000 Channel 入力パラメータに割り当てられたデジタル Channel 入力パラメータの値を訂正しま
出力の数が、許可されている範囲外です(アドレス す。
指定されたモジュールとチャンネル構成に依存する)。
10020000 TIO_DQ 命令がアイソクロナス OB で呼び出されて TIO_DQ を必ず「Synchronous Cycle」OBいません。命令は、アイソクロナス OB でエラーが で呼び出してください。
ない場合にのみ使用できます。
10030000 HWID 入力パラメータの読み出し時にエラーが発生 HWID 入力パラメータの値をチェックしま
しました。

す。TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレ
ス指定で使用可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2919

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対策

(DW#16#.
..)x0040000 TIO_SYNC_Data のデータが無効/不正です。

TIO_SYNC 命令およびそのTIO_SYNC_Data 出力との相互接続をチェックします。

1005xxxx

エラーが RD_SINFO システムファンクションの実行 • TIA Portal 情報システムの RD_SINFOの説明をお読みください。
中に発生しました。下位ワード xxxx は、RD_SINFO
からの RET_VAL 戻り値のエラー情報を示します。 • TIO_SYNC を必ず「Synchronous
Cycle」OB で呼び出してください。

10060000 TM Timer DIDQ が見つかりません。
考えられる原因:
ハードウェア識別子を使用して構成されたモジュー
ルが、TM Timer DIDQ ではない。

10070000 アドレス計算中に発生した内部エラー。

• 設定されたモジュールがTM Timer DIDQ であることを確認します。
• HWID 入力パラメータの値をチェックします。TIO モジュールのハードウェ
ア識別子を HWCN モジュールプロパテ
ィから指定します。
HWID 入力パラメータの値をチェックしま
す。TIO モジュールのハードウェア識別子
を HWCN モジュールプロパティから指定します。データタイプ Hw_SubModule の内部システム定数が、シンボリックアドレ
ス指定で使用可能です。

x0080000 TIO モジュールが、TIO_SYNC 命令を使用して同期 命令 TIO_SYNC.をチェックします。
されていません。
エラーコードは以下のことを示す場合もあります。
• 命令の最初の実行前に、ジョブが既に存在していた。
• Channel 入力パラメータに割り当てられた数がデジタル出力ではない。
10090000 アイソクロナス OB の読み取りサイクルタイムは• サイクルタイムを訂正します。

LT#0ms または負の値であるため、無効です。値を • TIO_DQ を必ず「Synchronous Cycle」
OB で呼び出してください。
訂正します。
命令は、アイソクロナス OB でエラーがない場合にのみ使用できます。
100A0000 TO 入力パラメータに割り当てられた時間が、許可 TO 入力パラメータの値を訂正します。
されている 0 < To <= 4 ms 範囲外です。

2920

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

テクノロジー
5.5 Time-based IO
エラーコ
ード

意味

対策

(DW#16#.
..)100Bxxxx

エラーが RD_ADDR システムファンクションの実行 TIA Portal 情報システムの RD_ADDR の説中に発生しました。下位ワード xxxx は、RD_ADDR 明をお読みください。
からの RET_VAL 戻り値のエラー情報を示します。

000C0000 TimeStampRE および TimeStampFE 入力パラメー

TimeStampRE および TimeStampFE 入力

タの片方または両方のタイムスタンプが無効です。 パラメータをチェックします。
エラーは、1 つのアプリケーションサイクルについてのみシグナルが送信されます。
000D0000 デジタル出力の Quality Information は、デジタル • デジタル出力のパラメータ割り当てをチェックします。
入力でエラーが発生したことを示します。
• デジタル出力の配線で短絡、過負荷、および過熱をチェックします。
000E0000 Channel 入力パラメータに割り当てられた数がデジ • チャンネル構成をチェックします(TM Timer DIDQ 16x24V の場合のみ)。
タル出力ではない。
• デジタル出力の動作モードをチェックします。
100F0000 「Synchronous Cycle」OB の読み出しサイクルタイ サイクルタイムとして送信クロックの倍数
ムが長すぎます(TAPP > 16 ms)。
10100000 送信クロックが許可されている 0 < SEND_CLOCKを小さく設定します。
送信クロックを修正します。

<= 4 ms の範囲外であるため無効である。
エラーコードは以下のことを示す場合もあります。
• TIO_SYNC_Data のデータが無効であるか、または存在しない。
• TIO_DQ 命令がアイソクロナス OB で呼び出されていません。
00110000 Out_Mode 入力パラメータに割り当てられた値が、 Out_Mode 入力パラメータの値を訂正しx0FF0000

5.5.1.6

有効な 0～3 の範囲外である。

ます。

一般的な内部エラー。

—

UDT "TIO_SYNC_Data"

説明
データタイプ UDT「TIO_SYNC_Data」は、モジュールの同期および TIO_Time の経過の中央構造体とデータを含みます。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2921

テクノロジー
5.7 SINAMICS - TO_BasicPos

パラメータ
パラメータ

データタイプ

説明S7-1500
TIO_TIME_BASE

LTime

内部使用

TIO_TIMELTime

TIO モジュールの共有時刻ベース(相対時刻)。

PIP_MODE

USInt

データ更新のモード(TIO_SYNC 命令の PIP_Mode
入力パラメータによって転送されます)

APP_CYC

LTime「Synchronous Cycle」OB のアプリケーションサイ
クル

SEND_CLOCK

LTime

同期ドメインの送信クロック(TIO_SYNC 命令の
SendClock 入力パラメータによって転送されます)

TBase

LTime

内部使用

ERROR

Bool

内部使用

5.6

ファンクションモジュール

5.7

SINAMICS - TO_BasicPos

2922

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

6

通信
6.1

S7 通信

6.1.1

データの一貫性定義
並行プロセスによって変更できないデータブロックは、整合性のあるデータ領域で呼び出されます。その結果、整合性のあるデータ領域より大きいデータブロックを転送時に全体として変更できます。すなわち、グループを形成し、整合性のあるデータ領域より大きい
データブロックが、同時に、新しい整合性のあるデータの部分と古い整合性のあるデータの部分から構成できます。

例
たとえば、高優先度のハードウェア割り込み OB によって通信用命令が割り込まれた場合、不整合が生じる可能性があります。この OB 内のユーザープログラムが、既に命令によって部分的に処理されているデータを変更する場合、転送データは以下から発生します。
• 部分的に、ハードウェア割り込みが処理される前の時点から• および部分的に、ハードウェア割り込みが処理された後の時点から
つまり、これらのデータは矛盾しています(一貫性がありません)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2923

通信
6.1 S7 通信

データ整合性の確保
通信プロセスが割り込み OB によって割り込まれる可能性がある場合は、デーの整合性を持
つ転送を確保する必要があります。転送するデータでなく、データのイメージのみが割り込
み OB によって直接に変更されないことを確認します。次のデータ転送の前に、データのイメージを通信命令の転送領域へコピーします。
• ユーザープログラムに、共通データにアクセスする通信命令が含まれる場合、このデータ領域へのアクセスは、たとえば、DONE パラメータによって調整できます。このため、通信命令でローカルに転送される通信領域のデータの整合性は、ユーザープロ
グラム内で確保できます。
• S7 通信命令「PUT (ページ 2935)」/「GET (ページ 2929)」の場合、ユーザープログラ
ムへの通信データを同期するために使用できる通信ブロックがターゲットデバイス(サーバー)のユーザープログラム内にないため、一貫性データ領域のサイズは、プログラ
ミング時または設定時に既に考慮されていることが必要です。
• S7-300 および C7-300 の場合(例外:CPU 318-2 DP)、通信データはオペレーティングシ
ステムのサイクル制御ポイントで、32 バイトのブロック内のユーザーメモリに連続的にコピーされます。これよりも大きいデータ領域に対してはデータの整合性は保証されていません。定義済みのデータ一貫性が必要な場合、ユーザープログラム内の通信データは 32 バイトを超えることはできません(バージョンに応じて、最大 8 バイト)。
• 他方、S7-400 および S7-1500 では、462 バイトのブロック内の通信データは、サイクル制御ポイントではなく、プログラムサイクル中に固定タイムスライスで処理されます。タグの一貫性はシステムによって確保されます。これらの通信領域には、「PUT (ページ 2935)」/「GET (ページ 2929)」命令を使用して、あるいは、たとえば、OP またはOS によるタグの読み取り/書き込み時に一貫してアクセスできます。
注記
データの整合性に関する追加情報については、特定の命令の説明を参照してください。
S7-1500 モジュールシリーズでは、S7 通信の命令による操作の進行中にパラメータを変更できます。ジョブがまだアクティブな状態でも、変更したパラメータが直ちに使用されます。どちらの場合でも、データの不整合が発生する可能性があります。データの不整合を回避するために、ジョブの実行中にパラメータを変更してはなりません。

割り込み応答時間に対する影響
CPU の割り込み応答時間は、データのコピーによって少し長くなります。絶対的な一貫性を持って転送する必要があるデータの量が多ければ多いほど、システムの割り込み応答時間は長くなります。

2924

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

6.1.2

S7 通信用の命令の共通パラメータ分類
S7 通信用の命令のパラメータは、そのファンクションに応じて次の 5 つのカテゴリに分けることができます。
1. 制御パラメータを使用して、命令を有効にします。
2. アドレス指定パラメータを使用して、リモート通信パートナーをアドレス指定します。
3. 送信パラメータは、リモートパートナーに送信されるデータ領域をポイントします。
4. 受信パラメータは、リモートパートナーから受信したデータが入力されるデータ領域をポ
イントします。
5. ステータスパラメータを使用して、命令がそのタスクをエラーなしで完了したかどうかをモニタしたり、発生したエラーを分析したりします。

制御パラメータ
データ交換が有効になるのは、命令が呼び出されたときや、前の呼び出し以降に値が特定の変更を受けたとき(たとえば、立ち上がりエッジ)に、適切な制御パラメータが定義済み値を持つ(たとえば、セットされる)場合のみです。

アドレス指定パラメータ
パラメー
タ

説明

ID

(接続の構成によって指定された)ローカル接続記述子への参照。

R_ID

R_ID パラメータを使用して、送信命令と受信命令がともに属するように指定します。 R_ID パラメータは、送信側の命令と受信側の命令において一致する必要があります。
これによって、同じ論理接続を介した複数の命令ペアの通信が可能になります。
• R_ID は、DW#16#wxyzWXYZ 形式で指定する必要があります。
• R_ID で指定された論理接続の命令ペアは、この接続に対して一意である必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2925

通信
6.1 S7 通信

注記
アドレス指定パラメータ ID および R_ID
ランタイム中にアドレス指定パラメータ ID および R_ID を再割り当てできます。 新しいパラメータは、前のジョブが終了した後に、新しい各ジョブによって検証されます。
次のオプションを使用して、インスタンス DB の数ひいては必要なワークメモリを減らすことができます。
1. タグ ID で、1 つのデータインスタンスブロックを介して複数の接続を使用できます。
2. タグ R_ID で、シングルインスタンスを持つジョブについて送信命令と受信命令の複数のペアを定義できます。
3. ケース 1 とケース 2 を組み合わせることができます。

前回のジョブが実行された後に新しいパラメータが有効になることに注意してください。
送信操作を有効にするときは、送信側の命令の R_ID パラメータと、受信側のこれに対応するものが一致する必要があります。

STATUS パラメータ
ステータスパラメータを使用して、命令がそのタスクを正常に完了したかどうかや、まだアクティブであるかどうかをモニタします。 また、ステータスパラメータはエラーも示します。
注記
ステータスパラメータは、1 サイクルに対してのみ有効です。つまり、呼び出しに続く最初のコマンドから次の呼び出しまでです。 そのため、各命令サイクルの後でこれらのパラメータを評価する必要があります。

送信パラメータと受信パラメータ
両端で設定された通信命令の場合• 使用する SD_i および RD_i パラメータの数が送信側と受信側で一致する必要があります。
• ともに属する SD_i および RD_i パラメータのデータタイプが送信側と受信側で一致する
必要があります。
• SD_i パラメータに応じて送信されるデータの量は、対応する RD_i によって使用可能になる範囲を超えてはなりません(「BSEND (ページ 2953)」/「BRCV (ページ 2956)」には適用されません)。 RD_i パラメータのデータサイズは同一である必要があります「BSEND」/「BRCV」は例外)。
(

2926

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信上のルールに従っていない場合、このことは ERROR = 1 および STATUS = 4 によって示されます。
注記
送信パラメータと受信パラメータの提供
VARIANT データタイプの場合、通信命令が呼び出されるときには必ず送信および受信パラ
メータが提供される必要があります。 たとえば、スタートアップ時に通信命令の送信パ
ラメータを提供することや、サイクリックオペレーションでのみ送信ジョブのトリガを行うことはできません。

ユーザーデータサイズ「USEND (ページ 2942)」、「URCV (ページ 2945)」、「GET (ページ 2929)」および「PUT (ページ 2935)」命令では、転送されるデータの量は、定義済みのユーザーデータサイズを超えてはなりません。 最大ユーザーデータサイズは次に依存します。
• 使用する命令• 通信パートナー
1～4 つのタグを持つ命令に対して保証されているユーザーデータの最小サイズを次の表に
示します。
命令

パートナー:
S7-300パートナー:
S7-400パートナー:
S7-1200

パートナー:
S7-1500

PUT / GET

160 バイト400 バイト160 バイト880 バイトUSEND / URCV

160 バイト440 バイト-920 バイトBSEND / BRCV

32768/65534

65534 バイト-• 標準アクセスの 65534 バ
イト

バイト• 最適化された
アクセスの65535 バイト
ユーザーデータサイズに関する詳細情報については、各 CPU の技術データを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2927

通信
6.1 S7 通信

正確なユーザーデータサイズ
上で指定されたユーザーデータサイズが不十分である場合は、次のようにユーザーデータの最大バイト長を決定することができます。
まず、次の表から通信に対して有効なデータブロックサイズを読み取ります。
ローカル CPU

リモート CPU

バイト単位のデータブロックサイズ

S7-1200

任意240

S7-1500

S7-300240

S7-400480

S7-1200240

S7-1500960

次の表でこの値を使用して、使用されるパラメータの合計として、バイト単位の可能な最大
ユーザーデータ長を読み取ります。 これは、領域 SD_i、RD_i および ADDR_i の偶数長に適用されます。
奇数長の範囲ごとに、可能な最大ユーザーデータ長は 1 バイト減らされます。
使用される SD_i、RD_i、ADDR_i パラメータの数
データブロックサ 命令
イズ

1

2

3

4

240 (S7-300)

160

-

-

-

PUT

212

-

-

-

ーフェースを介し GET

222

-

-

-

USEND

212

-

-

-

PUT

212

196

180

164

GET

222

218

214

210

USEND

212

-

-

-

PUT

452

436

420

404

GET

462

458

454

450

USEND

452

448

444

440

PUT

212

196

180

164

GET

222

218

214

210

PUT/GET/
USEND

240 (統合インタ
た S7-300)
240 (S7-400)

480 (S7-400)

240 (S7-1200)

2928

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信使用される SD_i、RD_i、ADDR_i パラメータの数

6.1.3

データブロックサ 命令
イズ

1

2

3

4

960 (S7-1500)

PUT

932

916

900

884

GET

942

938

934

930

USEND

932

928

924

920

GET:リモート CPU からデータを読み取ります。

説明「GET」命令を使用して、リモート CPU からデータを読み取ることができます。
命令は、制御入力 REQ での立ち上がりエッジで開始されます。
• その後、読み出される領域への関連ポインタ(ADDR_i)がパートナー CPU に送信されます。パートナー CPU は、RUN または STOP モードでも問題ありません。
• パートナー CPU は、以下のデータを返します。
– 応答が最大ユーザーデータ長を超える場合、これは STATUS パラメータのエラーコ
ード「2」で表示されます。
– 受信したデータは、次の呼び出し時に設定済み受信領域(RD_i)にコピーされます。
• この操作が完了したことは、ステータスパラメータ NDR の値が「1」になることによって示されます。
前の読み取りプロセスが完了した後にしか読み取りを再度有効にできません。データの読み
出し中にアクセス問題が発生した場合や、データタイプチェックの結果、エラーが発生した
場合は、エラーおよび警告が ERROR および STATUS を介して出力されます。
パートナー CPU 上にアドレス指定されたデータ領域内での変更は、「GET」命令では登録されません。

命令使用の要件• 「リモートパートナーからの PUT/GET 通信によるアクセスの許可」ファンクションが、パートナー CPU のプロパティの[保護]で有効にされていること。
• 「GET」命令でアクセスするブロックが、アクセスタイプ「標準」で作成されていること。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2929

通信
6.1 S7 通信• ADDR_i および SD_i パラメータで定義された領域が番号、長さ、およびデータタイプの点で確実に一致するようにしてください。
• 読み出し元の領域(ADDR_i パラメータ)をデータストレージ領域(RD_i パラメータ)よりも大きくすることはできません。

パラメータ
次の表に、「GET」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ request。立ち上がり
または定数

ID
NDR

Input
Output

WORD
BOOL

説明
エッジでデータ交換を有効にします。

I、Q、M、D、L、 パートナー CPU への接続を指定するアまたは定数

ドレスパラメータ。

I、Q、M、D、L

ステータスパラメータ NDR:
• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブが正常に完了しました。

ERROR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ ERROR および
STATUS、エラーコード:

STATUS

Output

WORD

I、Q、M、D、L• ERROR=0
STATUS の値は次のとおりです。
– 0000H:警告もエラーもなし– <> 0000H:警告、STATUS に詳細情報を表示。
• ERROR=1
エラーが発生しました。STATUS に
エラーの種類に関する詳細情報を表示します。

ADDR_1InOut

REMOTE

I、Q、M、D

読み出されるパートナー CPU 上の領域

ADDR_2InOut

REMOTEへのポインタ。

ADDR_3InOut

REMOTEREMOTE ポインタが DB にアクセスす

ADDR_4InOut

REMOTEるときは、その DB を指定する必要があります。
例:P#DB10.DBX5.0 Byte 10.

2930

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
パラメータ

宣言

データタイプ

メモリ領域

説明

RD_1

InOut

VARIANT

I、Q、M、D、L

読み取りデータが入力されるローカル

RD_2

InOut

VARIANT

RD_3

InOut

VARIANT

RD_4

InOut

VARIANTCPU 上の領域へのポインタ。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

ERROR および STATUS パラメータ
次の表には、ERROR および STATUS パラメータによって出力できる「GET」命令に固有のエラー情報がすべて含まれています。
ERROR

STATUS(10 進)

説明011

警告:前のジョブがまだ使用中であるため、新しいジョブはアクティブではありま
せん。

0

25

通信が開始しました。ジョブが処理中です。

1

1

たとえば、通信上の問題。
• 接続記述子がロードされていません(ローカルまたはリモート)• 接続が中断されました(例:ケーブル、CPU オフ、CP が STOP モード)
• パートナーへの接続がまだ確立されていません

1

2• パートナーデバイスからの否定確認。ファンクションを実行できません。
• リモートステーションからの応答が、最大ユーザーデータ長を超えています(参照: S7 通信用の命令の共通パラメータ (ページ 2925))。
• パートナー CPU で、アクセス保護が有効にされています。CPU 設定で、アクセス保護を無効にします。

1

4

データストレージ RD_i へのポインタのエラー:• パラメータ RD_i と ADDR_i のデータタイプには互換性はありません。
• 領域 RD_i の長さが、読み取られる ADDR_i パラメータのデータの長さよりも小さな値です。

1

8

パートナー CPU 上でアクセスエラーが発生しました。

1

10

ローカルユーザーメモリにアクセスできません(たとえば、削除された DB にアクセスした場合など)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2931

通信
6.1 S7 通信
ERROR

STATUS(10 進)

説明1

20• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出
し)。

1

W#16#80(S7-1500 の場合のみ)

C3• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出
し)。
注記
データの整合性
別のジョブを開始する前に、受信領域 RD_i の現在使用中の部分を完全に読み取った場合、データは一貫した状態で受信されます。

例
次の例で、S7 コネクションを使用し、CPU 1 で、CPU 2 のデータレコードを読み出します。送信するデータレコードのデータタイプは INT です。
要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。接続がまだ構成済みでないこと。
• [<CPU>|プロパティ|保護]での低い保護レベルが、CPU に対して読み出しおよび書き込
みアクセスが許可されることを保証していること。
• PUT/GET 命令によるアクセスが許可されていること。

CPU 1 のプログラム「GET」のデータを格納するために、グローバルデータブロックに 6 個のタグを作成します。

2932

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

受信するデータレコードを格納するために、グローバルデータブロックに 1 つのタグを作成します。

ネットワーク 1:「GET」命令のパラメータを以下のように相互接続します。

ネットワーク 2:GET のエラーのステータスを以下のように保存します。

ネットワーク 3:GET の成功ステータスを以下のように保存します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2933

通信
6.1 S7 通信

GET の設定

入力パラメータ ID を相互接続するには、[プロパティ|設定]で「GET」命令のウィザードを開きます。
接続用の以下の設定を行います。
セクション

設定

終点

通信パートナーを選択します。
残りの接続データ自動的に入力されます。S7 コネク
ションが自動的に作成され、その識別子が入力パラ
メータ ID に入力されます。
アクティブ接続は CPU 1 から発信することを確認し有効ます。
CPU 2 のプログラム

送信するデータレコードを格納するために、グローバルデータブロックに 1 つのタグを作成します。

データブロックの[プロパティ|属性]で、最適化ブロックアクセスを無効にします。

GET の動作

入力パラメータ REQ 「start」()がシグナル状態「TRUE」を提供すると、「GET」命令が開始されます。この命令は、接続データを画面に表示し、使用する S7 コネクションの通信パ

2934

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
ートナーに連絡します。これを達成するために、S7 コネクションの識別子が入力パラメ
ータ ID に格納されます。
パラメータ ADDR_1 経由で、送信する CPU 2 のデータレコード(「myValue」)の格納場所が識別されます。データレコード(「myValue」)が読み出され、パラメータ RD_1 に識別された格納場所(「readValue」)が入力されます。

成功した処理は、シグナル状態が「TRUE」の出力パラメータ NDR 「done」()と値が「16#0000」の出力パラメータ STATUS「status」()によって示されます。出力パラメータの値
はそれらの出力パラメータが有効な間のみ表示されるため、成功ステータスをタグ「memDoneStat」に保存します。出力パラメータ ERROR 「error」()またはタグ「memErrStatus」は、処理がエラーなしで行われたことを示します。

追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.1.4

PUT: リモート CPU にデータを書き込みます。

説明「PUT」命令を使用して、リモート CPU にデータを書き込むことが可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2935

通信
6.1 S7 通信
命令は、制御入力 REQ での立ち上がりエッジで開始されます。
• その後、書き込まれる領域へのポインタ(ADDR_i)とデータ(SD_i)がパートナー CPU に送信されます。パートナー CPU は、RUN または STOP モードでも問題ありません。
• 送信するデータは、設定された送信領域((SD_i)からコピーされます。パートナー CPU
は、データで指定されたアドレスに送信されたデータを保存し、実行確認を返します。
• エラーが発生しない場合、このことは、次の命令呼び出し時にステータスパラメータ
DONE =「1」で示されます。前回のジョブが完了した後にしか書き込みプロセスを再度有効にできません。
データの書き込み中にアクセス問題が発生した場合や、実行チェックの結果、エラーが発生した場合は、エラーおよび警告が ERROR および STATUS を介して出力されます。

命令使用の要件• 「リモートパートナーからの PUT/GET 通信によるアクセスの許可」ファンクションが、パートナー CPU のプロパティの[保護]で有効にされていること。
• 「PUT」命令でアクセスするブロックが、アクセスタイプ「標準」で作成されていること。
• ADDR_i および SD_i パラメータで定義された領域が番号、長さ、およびデータタイプの点で確実に一致するようにしてください。
• 書き込まれる領域(ADDR_i パラメータ)は送信領域(SD_i パラメータ)と同じ大きさであることが必要です。

パラメータ
次の表に、「PUT」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ request。立ち上がりエ
または定数

ID
DONE

Input
Output

WORD
BOOL

説明
ッジでデータ交換を有効にします。

I、Q、M、D、L、 パートナー CPU への接続を指定するアド
または定数

レスパラメータ。

I、Q、M、D、L

ステータスパラメータ DONE:• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブはエラーなく実行されまし
た。

2936

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
パラメータ

宣言

データタイプ メモリ領域

説明

ERROR

Output

BOOL

ステータスパラメータ ERROR およびI、Q、M、D、L

STATUS、エラーコード:
STATUS

Output

WORD

I、Q、M、D、L• ERROR=0
STATUS の値は次のとおりです。
– 0000H:警告もエラーもなし– <> 0000H:警告、STATUS に詳細情報を表示。
• ERROR=1
エラーが発生しました、STATUS はエ
ラーのタイプに関する詳細情報を提供します。

ADDR_1InOut

REMOTE

I、Q、M、D

データが書き込まれるパートナー CPU 上

ADDR_2InOut

REMOTEの領域へのポインタ。

ADDR_3InOut

REMOTEREMOTE ポインタが DB にアクセスする

ADDR_4InOut

REMOTE

ときは、その DB を指定する必要があります。
例:P#DB10.DBX5.0 Byte 10.
データ構造体を送信するときは(たとえば、Struct)、 ADDR_i パラメータでデー
タタイプ CHAR を使用する必要がありま
す。

SD_1

InOut

VARIANT

I、Q、M、D、L

SD_2

InOut

VARIANTCPU 上の領域へのポインタ。

SD_3

InOut

VARIANT

データタイプ BOOL、BYTE、CHAR、

SD_4

InOut

VARIANT

送信されるデータを格納するローカル

WORD、INT、DWORD、DINT、REAL のみが許可されています。
データ構造体を送信するときは(たとえば、Struct)、 SD_i パラメータでデータ
タイプ CHAR を使用する必要があります。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2937

通信
6.1 S7 通信

ERROR および STATUS パラメータ
次の表には、ERROR および STATUS パラメータによって出力できる「PUT」命令に固有のエラー情報がすべて含まれています。
ERROR

STATUS(10 進)

説明011

警告:前のジョブがまだ使用中であるため、新しいジョブはアクティブではありま
せん。

0

25

通信が開始しました。ジョブが処理中です。

1

1

たとえば、通信上の問題。
• 接続記述子がロードされていません(ローカルまたはリモート)。
• 接続が切断されました(たとえば、ケーブル、CPU オフ、CP が STOP モード)。
• パートナーへの接続がまだ確立されていません。

1

2• パートナー CPU の否定確認。ファンクションを実行できません。
• パートナー CPU でのアクセスが保証されませんでした。CPU 設定で、アクセスを有効にします。

1

4

データストレージへのポインタのエラー:• パラメータ SD_i と ADDR_i のデータタイプには互換性はありません。
• 領域 SD_i の長さが、書き込まれる ADDR_i パラメータのデータの長さよりも大きな値です。
• SD_i にアクセスできません。
• 最大ユーザーデータサイズを超過しました。
• SD_i および ADDR_i パラメータの数が一致しません。

1

8

パートナー CPU とのアクセスエラー(たとえば、DB が読み込まれていない、または書き込み保護されている)。

1

10

ローカルユーザーメモリにアクセスできません(たとえば、削除された DB にアクセスした場合など)。

1

20• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出
し)。

1

W#16#80C (S7-1500 の場合のみ)
3• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出
し)。

2938

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

データの整合性送信操作が有効にされると(REQ での立ち上がりエッジ)、送信領域 SD_i から送信されるデータが、ユーザープログラムからコピーされます。ブロック呼び出しの後で、現在の送信データを破損することなく、これらの領域に書き込むことができます。
注記
送信操作は、DONE ステータスパラメータの値が「1」であるときにのみ完了します。

例
次の例では、S7 コネクションを使用し、データレコードを CPU 1 から CPU 2 へ転送します。送信するデータレコードのデータタイプは INT です。
要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。接続がまだ構成済みでないこと。
• [<CPU>|プロパティ|保護]での低い保護レベルが、CPU に対して読み出しおよび書き込
みアクセスが許可されることを保証していること。
• PUT/GET 命令によるアクセスが許可されていること。

CPU 1 のプログラム「PUT」のデータを格納するために、グローバルデータブロックに 6 個のタグを作成します。

送信するデータレコードを格納するために、グローバルデータブロックに 1 つのタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2939

通信
6.1 S7 通信

ネットワーク 1:「PUT」命令のパラメータを以下のように相互接続します。

ネットワーク 2:PUT のエラーのステータスを以下のように保存します。

ネットワーク 3:PUT の成功ステータスを以下のように保存します。

PUT の設定

入力パラメータ ID を相互接続するには、[プロパティ|設定]で「PUT」命令のウィザードを
開きます。

2940

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
接続用の以下の設定を行います。
セクション

設定

終点

通信パートナーを選択します。
残りの接続データ自動的に入力されます。S7 コネク
ションが自動的に作成され、その識別子が入力パラ
メータ ID に入力されます。
アクティブ接続は CPU 1 から発信することを確認し有効ます。
CPU 2 のプログラム

受信するデータレコードを格納するために、グローバルデータブロックに 1 つのタグを作成します。

データブロックの[プロパティ|属性]で、最適化ブロックアクセスを無効にします。

PUT の動作

入力パラメータ REQ 「start」()がシグナル状態「TRUE」を返すと、「PUT」命令は開始されます。この命令は、接続データを画面に表示し、使用する S7 コネクションの通信パート
ナーに連絡します。これを達成するために、S7 コネクションの識別子が入力パラメータ IDに格納されます。
パラメータ SD_1 で、送信する CPU 1 のデータレコード(「writeValue」)の格納場所が識別されます。パラメータ ADDR_1 で、CPU 2 のデータレコードの格納場所(「myValue」)が識別されます。データレコード(「writeValue」)は転送され、CPU 2 の格納場所(「myValue)で示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2941

通信
6.1 S7 通信
成功した処理は、シグナル状態が「TRUE」の出力パラメータ DONE 「done」()と値が「16#0000」の出力パラメータ STATUS「status」()によって示されます。出力パラメータの値
はそれらの出力パラメータが有効な間のみ表示されるため、成功ステータスをタグ「memDoneStat」に保存します。出力パラメータ ERROR 「error」()またはタグ「memErrStatus」は、処理がエラーなしで行われたことを示します。

追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.1.5

その他

6.1.5.1

USEND: 未調整データの送信

説明「USEND」命令は、「URCV (ページ 2945)」タイプのリモートパートナー命令にデータを送信します。送信プロセスは、パートナー命令との調整なしで実行されます。すなわち、データ転送は、パートナー命令による確認なしで実行されます。
送信操作が有効にされると(REQ での立ち上がりエッジ)、送信領域 SD_i から送信されるデータが、ユーザープログラムからコピーされます。命令呼び出しの後で、現在の送信データを破損することなく、これらの送信領域に書き込むことができます。
送信操作が正常に完了したことは、DONE ステータスパラメータの値が「1」にセットされることによって示されます。

2942

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

パラメータ
次の表に、「USEND」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ request。立ち上がりエッ
または定数

ID

Input

CONN_PRG

Input

CONN_R_ID

ジでデータ交換を有効にします。

I、Q、M、D、L、 パートナー CPU への接続を指定するアド
P、または定数

R_ID

説明

レスパラメータ。

I、Q、M、D、L、 命令ペア「USEND」および「URCV」を定または定数義するアドレス指定パラメータ R_ID。
関連項目:S7 通信用の命令の共通パラメー
タ (ページ 2925)

DONE

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブはエラーなく実行されました。

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:警告もエラーもなし。
• 1:エラーが発生しました。STATUS にエ
ラーの種類に関する詳細情報を表示します。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ「ERROR および STATUS パラメータ」の表を参照してください。

SD_i (1≤ i ≤4)

InOut

VARIANT

I、Q、M、D、L

i 番目の送信領域のポインタ。
BOOL 、BYTE、CHAR、WORD、INT、
DWORD、DINT、REAL、または STRUCT データタイプのみが許可されています(ビット配列は許可されていません)。.
SD_i パラメータの最大ユーザーデータサイ
ズは、パートナー CPU(「URCV」命令)および使用されるパラメータ数によって異なります。
追加情報は「S7 通信用の命令の共通パラ
メータ (ページ 2925)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2943

通信
6.1 S7 通信
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

ERROR および STATUS パラメータ
ERROR

STATUS(10 進)

説明011

警告:前のジョブがまだ使用中であるため、新しいジョブはアクティブではありませ
ん。

0

25

通信が開始しました。ジョブが処理中です。

1

1

通信上の問題が発生しました。考えられる原因:• 接続記述子がロードされていません(ローカルまたはリモート)• 接続が中断されました(例:ケーブル、CPU オフ、CP が STOP モード)
• パートナーへの接続がまだ確立されていません

1

4• データ長やデータタイプに関する送信領域ポインタ SD_i でエラーが発生しました。
• 最大ユーザーデータ長を超過しました。

1

10

ローカルユーザーメモリにアクセスできません(たとえば、削除された DB にアクセ
スした場合など)。

1

18

R_ID パラメータの値が、ID パラメータで指定された接続内に既に存在しています(R_ID の値は接続内で一意である必要があります)。

1

20• 並列ジョブの最大数を超えました。
• 優先度のさらに低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

1

W#16#80 (S7-1500 の場合のみ)
C3• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

例
例は、USEND & URCV のプログラム例 (ページ 2947)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

2944

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

6.1.5.2

URCV: 未調整のデータ受信

説明「URCV」命令は、「USEND (ページ 2942)」タイプのリモートパートナー命令からデータを非同期的に受信し、このデータを設定済み受信領域にコピーします。
EN_R 入力に論理 1 がある場合に、この命令は受信準備ができています。アクティブなジョブは、EN_R=0 でキャンセルできます。
受信データ領域は、パラメータ RD_1～RD_4 によって参照されます。(関連するパートナー
命令「USEND (ページ 2942)」で)パラメータ RD_i / RD_1 および SD_i / SD_1 によって定義された領域の数と長さが一致することを確認してください。
コピー操作が正常に完了したことは、NDR ステータスパラメータの値が論理「1」にセットされたときに示されます。ステータスパラメータ NDR が「1」に切り替わると、受信領域(RD_i)に新しい受信データが格納されてることを示します。新しいブロック呼び出しを行うと、これらのデータが新しい受信データで上書きされる可能性があります。これを防ぐには、受信データの処理を終了するまでに、EN_R に値 0 を入れて「URCV」を呼び出します(たとえば、サイクリックブロックの処理中に)。

パラメータ
次の表に、「URCV」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

EN_R

Input

BOOL

I、Q、M、D、L、 制御パラメータ enabled to receive。入力が
または定数

説明

設定された場合に受信準備完了を信号で通知
します。

ID
R_ID

Input
Input

CONN_PR

I、Q、M、D、L、 パートナー CPU への接続を指定するアドレ

GP、または定数

スパラメータ。

CONN_R_I I、Q、M、D、L、 命令ペア「USEND」および「URCV".を定義
D

または定数

するアドレス指定パラメータ。
関連項目: S7 通信用の命令の共通パラメータ(ページ 2925)

NDR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブが正常に完了しました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2945

通信
6.1 S7 通信
パラメータ

宣言

データタ
イプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:警告もエラーもなし• 1:エラーが発生しました、STATUS はエラーのタイプに関する詳細情報を提供します。

STATUS

Output

WORD

I、Q、M、D、L

ステータスパラメータ「ERROR および STATUS パラメータ」の表を参照してください。

RD_i (1≤ i ≤4)

InOut

VARIANT

I、Q、M、D、L

i 番目の受信領域へのポインタ:
BOOL、BYTE、CHAR、WORD、INT、
DWORD、DINT、REAL、または STRUCT デー
タタイプのみが許可されています(ビット配
列は許可されていません)。.
追加情報は「S7 通信用の命令の共通パラメータ (ページ 2925)」を参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

ERROR および STATUS パラメータ
ERROR

STATUS説明(10 進)
09

警告:古い受信データが新しい受信データで上書きされました。

011

警告:優先度のさらに低い優先度クラスで受信データが既に処理されています(受信領域にデータをコピーしているときにエラーが発生する可能性があります)。

025

通信が開始しました。ジョブが処理中です。

1

1

通信上の問題が発生しました。考えられる原因:• 接続記述子がロードされていません(ローカルまたはリモート)• 接続が中断されました(例:ケーブル、CPU オフ、CP が STOP モード)
• パートナーへの接続がまだ確立されていません

1

4

データ長やデータタイプに関する受信領域ポインタ RD_i でエラーが発生しました。

1

10

ローカルユーザーメモリにアクセスできません(たとえば、削除された DB にアクセ
スした場合など)。

1

18

R_ID パラメータの値が、ID パラメータで指定された接続内に既に存在しています(R_ID の値は接続内で一意である必要があります)。

2946

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
ERROR

STATUS説明(10 進)
1

19

関連する「USEND (ページ 2942)」命令がデータを送信する速度が、「URCV」によってデータが受信領域にコピーされる速度よりも速くなっています。

1

20• 並列ジョブの最大数を超えました。
• 優先度のさらに低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

1

W#16#80 (S7-1500 の場合のみ)
C3• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

例
例は、USEND & URCV のプログラム例 (ページ 2947)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.1.5.3

USEND & URCV のプログラム例

概要
次の例では、S7-1500 シリーズの 2 つの CPU 間に S7 コネクションを作成します。文字列(データタイプ STRING)を CPU 1 から CPU 2 へ送信します。データ転送が、通信パートナーによる確認なしで実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2947

通信
6.1 S7 通信要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。S7 コネクションが構成済みであること。

• [<CPU>|プロパティ|保護]での低い保護レベルが、CPU に対して読み出しおよび書き込
みアクセスが許可されることを保証していること。

CPU 1 のプログラム
USEND のデータを格納するために、以下のタグをグローバルデータブロックに作成します。

FB「SLI_FB_USEND」を作成します。その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「USEND」のパラメータを以下のように相互接続します。

2948

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

ネットワーク 2:USEND のエラーの場合、ステータスを以下のように保存します。

CPU 2 のプログラム
URCV のデータを格納するために、以下のタグをグローバルデータブロックに作成します。

FB「SLI_FB_URCV」を作成します。その FB 内に以下のローカルタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2949

通信
6.1 S7 通信

ネットワーク 1:命令「URCV」のパラメータを以下のように相互接続します。

ネットワーク 2:URCV のエラーの場合、ステータスを以下のように保存します。

2950

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

通信接続の割り当て
2 つの CPU の接続用アドレス指定パラメータと、命令ペアの定義用アドレス指定パラメー
タは、同一であることが必要です。
• それぞれの場合に、設定済み S7 コネクションのハードウェア ID の 16 進数値を入力パラメータ ID 「connectionID」()に格納します。
ハードウェア識別子については、[接続]の[ネットワークビュー]を参照してください。

• それぞれの場合に、命令ペアの自身で選択した識別子(16 進数値、サイズはバイト)を入力パラメータ R_ID 「instructionPair」()に格納します。その識別子は、別の命令ペアに対して既に割り当て済みであってはいけません。

CPU 1 の動作
入力パラメータ REQ 「start」()がシグナル状態「TRUE」を提供すると、「USEND」命令が開始されます。開始されると、「USEND」命令は、入力パラメータ SD_1 「sendData」()で検出されたデータレコードを CPU のワークメモリにコピーします。成功したデータレコードのコピーは、シグナル状態が「TRUE」の出力パラメータ DONE 「#done」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功
ステータスをタグ「done」に保存します。
入力パラメータ ID 「connectionID」()および R_ID 「instructionPair」()に対応して、データレ
コード(「sendData」)の受信元としての CPU 2 の命令「URCV」は、値「HelloData」でアドレス指定されます。S7 コネクション経由のデータ転送はそれ以上の USEND による参加な
しで続きます(「start」は「FALSE」にセットできます)。
出力パラメータ ERROR 「error」()またはタグ「memErrStatus」は、例の USEND の処理がエ
ラーなしで行われていることを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2951

通信
6.1 S7 通信

CPU 2 の動作
CPU 2 は、S7 コネクション経由で、CPU 1 のデータレコードを受信します。入力パラメータ
ID 「connectionID」()および R_ID 「instructionPair」()に対応して、命令「URCV」は、データ
レコードの受信元を認識しています。
入力パラメータ EN_R「start」()がシグナル状態「TRUE」を提供すると、「URCV」命令が開始され、受信準備完了状態になります。「URCV」命令は、転送されたデータレコードを読み出し、そのデータレコードを RD_1 「rcvData」()入力パラメータの値領域にコピーします。
成功したデータレコードのコピーは、シグナル状態が「TRUE」の出力パラメータ NDR「#done」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功ステータスをタグ「done」に保存します。
出力パラメータ ERROR 「error」()またはタグ「memErrStatus」は、例の URCV の処理がエ
ラーなしで行われていることを示します。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
USEND: 未調整データの送信 (ページ 2942)
URCV: 未調整のデータ受信 (ページ 2945)

2952

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

6.1.5.4

BSEND: セグメントのデータ送信

説明「BSEND」命令は、「BRCV (ページ 2956)」タイプのリモートパートナー命令にデータを送信します。このタイプのデータ転送では、構成された S7 コネクション用の他のどの通信命令で可能であるよりも多くのデータを通信パートナー間で転送することができます。どの場合でも、統合インターフェースおよび SIMATIC NET CP の最大データ容量は、65534 バイト(標準アクセス)または 65535 バイト(最適化されたアクセス)です。

ファンクションの説明
命令ペア「BSEND」および「BRCV」を入力パラメータ R_ID とともに指定します。R_ID パ
ラメータは、関連する命令において同一である必要があります。
送信ジョブは、命令が呼び出され、制御入力 REQ で立ち上がりエッジが検出された後に有効になります。この呼び出しの後は、「BSEND」はバックグラウンドで処理されません。これは、データがユーザープログラム内でしか読み出せないことを意味します。
送信されるデータ領域はセグメント化されます。各セグメントはパートナーに個別に送信されます。各セグメントは、「BRCV (ページ 2956)」によるセグメントの適用後、パート
ナーによって確認されます。データがセグメントに分割されている場合、すべてのセグメ
ントが転送されるまで「BSEND」を複数回呼び出す必要があります。
送信されるデータのデータ領域は、SD_1 で指定します。データの整合性を保証するため、現在の送信操作が完了しないと、現在使用中の送信領域 SD_1 の部分に書き込むことができません。これは、ステータスパラメータ DONE の値が「1」に切り替わった場合です。
送信データの長さは、ジョブに基づいて LEN によって指定されます。LEN = "0"の場合、SD_1 パラメータでアドレス指定されたすべてのデータが送信されます。
制御入力 R に立ち上がりエッジがある場合、現在の送信プロセスはキャンセルされます。
非同期のデータ転送のため、新規のデータ転送は、パートナー命令の呼び出しによって前のデータがフェッチされた場合にしか開始できません。データが収集されると、ステータ
スパラメータ「NDR」がパートナー命令「BRCV」内にセットされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2953

通信
6.1 S7 通信

注記
S7-400 ユーザープログラムの移行
S7-400 CPU は、パラメータ SD_1 をポインタと解釈し、データ領域とは解釈しません。
S7-1500 の場合は、LEN が SD1 の領域を超えてはなりません。これは、S7-400 では許可されていました。推奨事項:SD_1 パラメータのデータ領域のサイズとして、LEN パラメー
タには最大サイズを使用します(統合インターフェースでは 65534 バイト)。

パラメータ
次の表に、「BSEND」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ request。立ち上がりエッジで
または定数

R

Input

BOOL

R_ID

Input
Input

データ交換を有効にします

I、Q、M、D、L、 制御パラメータ reset。立ち上がりエッジで現
または定数

ID

説明

在のデータ交換の中止を有効にします。

CONN_PR

I、Q、M、D、L、 パートナー CPU への接続を指定するアドレス

G

P、または定数

パラメータ。

CONN_R_I I、Q、M、D、L、 命令ペア「BSEND」および「BRCV (ペー
D

または定数

ジ 2956)」を定義するアドレス指定パラメー
タ。
関連項目: S7 通信用の命令の共通パラメータ(ページ 2925)

SD_1

InOut

VARIANT

I、Q、M、D、L

送信領域へのポインタ
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

LEN

InOut

WORD

I、Q、M、D、L送信されるデータブロックのバイト単位の長さ
LEN = "0"の場合、SD_1 によってすべてのデー
タが送信されます。

DONE

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました。

2954

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
パラメータ

宣言

データタ
イプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:警告もエラーもなし。
• 1:エラーが発生しました、STATUS はエラーのタイプに関する詳細情報を提供します。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ「ERROR および STATUS パラメータ」の表を参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

ERROR および STATUS パラメータ
次の表には、ERROR および STATUS パラメータによって出力できる「BSEND」に固有のエラー情報がすべて含まれています。
ERROR

STATUS(10 進)

説明011

警告:前のジョブがまだ使用中であるため、新しいジョブはアクティブではありませ
ん。

0

25

通信が開始しました。ジョブが処理中です。

1

1

通信上の問題が発生しました。考えられる原因:• 接続記述子がロードされていません(ローカルまたはリモート)• 接続が中断されました(例:ケーブル、CPU オフ、CP が STOP モード)
• パートナーへの接続がまだ確立されていません

12

パートナー命令の否定確認。命令を実行できません。

1

3

ID によって指定された接続上で R_ID が不明であるか、受信ブロックがまだ呼び出されていません。

1

4• 送信領域ポインタ SD_1 でデータ長、またはデータタイプに関するエラーが発生しました。
• LEN の値が、領域 SD_1 よりも大きくなっています。

1

5

リセット要求が実行されました。

1

6

パートナー命令が DISABLED ステータスにあります(EN_R の値が「0」です)。
「BSEND」で BRCV (ページ 2956)の入力パラメータの整合性チェックも行ってください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2955

通信
6.1 S7 通信
ERROR

STATUS(10 進)

説明1

7

最後のデータ転送であるため、「BRCV (ページ 2956)」パートナー命令は呼び出され
ません。

1

8

ユーザーメモリ内のリモートオブジェクトへのアクセスが拒否されました。関連「BRCV (ページ 2956)」のターゲット範囲が小さすぎます。
ERROR = 1、STATUS = 4 または ERROR = 1、STATUS = 10 が 「BRCV (ページ 2956)」の
出力パラメータでレポートされています。

1

10

ローカルユーザーメモリにアクセスできません(たとえば、削除された DB にアクセ
スした場合など)。

1

18

R_ID は既に接続内に存在します。

1

20• 並列ジョブの最大数を超えました。
• 優先度のさらに低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

1

W#16#8 (S7-1500 の場合のみ)
0C3• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

例
例は、BSEND & BRCV のプログラム例 (ページ 2959)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.1.5.5

BRCV: セグメントのデータ受信

説明「BRCV」命令は、「BSEND (ページ 2953)」タイプのリモートパートナー命令からデータを受信します。R_ID パラメータは、関連する命令において同一である必要があります。
制御入力 EN_R に値「1」を入れて命令が呼び出された後に、この命令はデータ受信準備が完了します(STATUS = 25)。アクティブなジョブは、EN_R=0 でキャンセルできます。

2956

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
最大受信領域が、RD_1 によって指定されます。制御入力 EN_R の値を「1」としてブロックを再度呼び出す前に、現在使用中の RD_1 受信領域の部分を完全に評価すると、データが連続して受信されます。
データセグメントを受信するたびに、確認がパートナー命令に送信されます。複数のセグメントが存在する場合、すべてのセグメントを受信するまで「BRCV」を複数回呼び出す必要があります。非同期データ受信は、STATUS = 17 によって示されます。現在受信されているデータ量は、パラメータ LEN で示されます。RD_1 パラメータは、処理中に変更してはなりません。
NDR ステータスパラメータの値「1」は、すべてのデータセグメントがエラーなしで受信されたことを示しています。受信したデータは、EN_R=1 で次の呼び出しが行われるまで
変更されません。

パラメータ
次の表に、「BRCV」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

EN_R

Input

BOOL

I、Q、M、D、L、 制御パラメータ enabled to receive。入力
または定数

説明

が設定された場合に受信準備完了を信号で通知します。

ID

Input

CONN_PRG

I、Q、M、D、L、 パートナー CPU への接続を指定するアド
P、または定数

R_ID

Input

CONN_R_ID

レスパラメータ。

I、Q、M、D、L、 命令ペア「BSEND (ページ 2953)」および
または定数「BRCV".を定義するアドレス指定パラメー
タ
関連項目: S7 通信用の命令の共通パラメー
タ (ページ 2925)

RD_1

InOut

VARIANT

I、Q、M、D、L

受信領域へのポインタ。
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要で
す。

LEN

InOut

WORD

I、Q、M、D、L

既に受信したデータのバイト単位の長さ。

NDR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブが正常に完了しました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2957

通信
6.1 S7 通信
パラメータ

宣言

データタイ
プ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ• 0:警告もエラーもなし• 1:エラーが発生しました、STATUS はエ
ラーのタイプに関する詳細情報を提供します。

STATUS

Output

WORD

I、Q、M、D、L

ステータスパラメータ「ERROR および STATUS パラメータ」の表を参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

ERROR および STATUS パラメータ
次の表には、ERROR および STATUS パラメータによって出力できる「BRCV」に固有のエラー情報がすべて含まれています。
ERROR

STATUS(10 進)

説明

017

警告:命令がデータを非同期的に受信しています。LEN パラメータは、既に受信したデータの量をバイト単位で表示します。

025

通信が開始しました。ジョブが処理中です。

1

1

通信上の問題が発生しました。考えられる原因:• 接続記述子がロードされていません(ローカルまたはリモート)• 接続が中断されました(例:ケーブル、CPU オフ、CP が STOP モード)
• パートナーへの接続がまだ確立されていません

1

2

ファンクションを実行できません(プロトコルエラー)

14

データ長やデータタイプに関する受信領域ポインタ RD_1 でエラーが発生しました。
送信データブロックが受信領域よりも長くなっています。

1

5

リセット要求を受信したため、転送が不完全です。

1

8

関連する「BSEND (ページ 2953)」でアクセスエラーが発生しました。最後の有効なデータセグメントが送信された後に、ERROR = 1 および STATUS = 4 または ERROR = 1
および STATUS = 10 がレポートされます。

1

10

ローカルユーザーメモリにアクセスできません(たとえば、削除された DB にアクセ
スした場合など)。

2958

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信
ERROR

STATUS(10 進)

説明1

18

R_ID パラメータの値が、ID パラメータで指定された接続内に既に存在しています(R_ID の値は接続内で一意である必要があります)。

1

20• 並列ジョブの最大数を超えました。
• 優先度のさらに低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

1

W#16#80 (S7-1500 の場合のみ)
C3• 並列ジョブの最大数を超えました。
• 優先度の低い優先度クラスで、現在ジョブが処理されています(最初の呼び出し)。

例
例は、BSEND & BRCV のプログラム例 (ページ 2959)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.1.5.6

BSEND & BRCV のプログラム例

概要
次の例では、S7-1500 シリーズの 2 つの CPU 間に S7 コネクションを作成します。BSENDおよび BRCV を使用して、データレコードを CPU 1 から CPU 2 へ送信します。そのデータ
転送は、BRCV による確認によって実行されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2959

通信
6.1 S7 通信要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。S7 コネクションが構成済みであること。

• [<CPU>|プロパティ|保護]での低い保護レベルが、CPU に対して読み出しおよび書き込
みアクセスが許可されることを保証していること。

CPU 1 のプログラム
BSEND のデータを格納するために、以下のタグをグローバルデータブロックに作成します。

データレコードのために、次の PLC データタイプを作成します。

データ転送のために、作成された PLC データタイプ(「BSEND_User」)に基づいて次のデー
タブロックを作成します。

2960

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

FB「SLI_FB_BSEND」を作成します。その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「BSEND」のパラメータを以下のように相互接続します。

ネットワーク 2:BSEND のエラーの場合、ステータスを以下のように保存します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2961

通信
6.1 S7 通信

CPU 2 のプログラム
BRCV のデータを格納するために、以下のタグをグローバルデータブロックに作成します。

データレコードのために、次の PLC データタイプを作成します。

データ転送のために、作成された PLC データタイプ(「BSEND_User」)に基づいて次のデー
タブロックを作成します。

FB「SLI_FB_BSEND」を作成します。その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「BRCV」のパラメータを以下のように相互接続します。

2962

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

ネットワーク 2:BRCV のエラーの場合、ステータスを以下のように保存します。

通信接続の割り当て
2 つの CPU の接続用アドレス指定パラメータと、命令ペアの定義用アドレス指定パラメー
タは、同一であることが必要です。
• それぞれの場合に、設定済み S7 コネクションのハードウェア ID の 16 進数値を入力パラメータ ID 「connectionID」()に格納します。
ハードウェア識別子については、[接続]の[ネットワークビュー]を参照してください。

• それぞれの場合に、命令ペアの自身で選択した識別子(16 進数値、サイズはバイト)を入力パラメータ R_ID 「instructionPair」()に格納します。その識別子は、別の命令ペアに対して既に割り当て済みであってはいけません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2963

通信
6.1 S7 通信

CPU 1 の動作
入力パラメータ ID 「connectionID」()および R_ID 「instructionPair」()に対応して、CPU 2 の命令「BRCV」は、データレコード(「SLI_plcDB_sendData_BSEND」)の受信元としてアドレス指定されます。
入力パラメータ REQ 「start」()がシグナル状態「TRUE」を提供すると、「BSEND」命令が開始されます。複数の呼び出しの場合、「BSEND」命令は、入力パラメータ SD_1
「SLI_plcDB_sendData_BSEND」()で検出されたセグメント単位のデータレコードを CPU 2 へ転送します。入力パラメータ LEN 「maxLength」()の値「0」に従った、データレコードの長さです。
成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE「#done」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功ステータスをタグ「done」に保存します。
出力パラメータ ERROR「error」()またはタグ「memErrStatus」は、例の処理がエラーなしで行われていることを示します。

直前のデータが BRCV の呼び出しによってフェッチされた場合にのみ、新しいデータ転送を初期化できます。

CPU 2 の動作
CPU 2 は、S7 コネクション経由で、CPU 1 のデータレコード(セグメント単位)を受信します。入力パラメータ ID 「connectionID」()および R_ID 「instructionPair」()に対応して、命令「BRCV」は、データレコードの受信元を認識しています。
入力パラメータ EN_R「start」()がシグナル状態「TRUE」を提供すると、「BRCV」命令が開始され、受信準備完了状態になります。「BRCV」命令の複数の呼び出しにわたって、セグメ
ント単位のデータレコードを読み出し、そのデータレコードを入力パラメータ RD_1
「SLI_plcDB_rcvData_BRCV」()に保存します。

2964

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.1 S7 通信

成功したデータレコード全体の受信は、シグナル状態が「TRUE」の出力パラメータ NDR「#done」()によって示されます。実際に転送されたデータレコードの BYTE 単位の長さは、
出力パラメータ LEN 「#length」()で示されます。この値は、成功ステータスの間だけ表示されます。この後、「0」が検出されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、「#done」の成功ステータスをタグ「done」に保存し、BYTE
単位の長さをタグ「readLength」に保存します。
出力パラメータ ERROR「error」()またはタグ「memErrStatus」は、例の処理がエラーなしで行われていることを示します。

プログラムコード
追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
BSEND: セグメントのデータ送信 (ページ 2953)
BRCV: セグメントのデータ受信 (ページ 2956)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2965

通信
6.2 オープンユーザーコミュニケーション

6.2

オープンユーザーコミュニケーション

6.2.1

データの整合性

データ整合性の確保
S7-1500 モジュールシリーズでは、オープンユーザーコミュニケーションの命令による操作の進行中にパラメータを変更できます。ジョブがまだアクティブな状態でも、変更したパラメータが直ちに使用されます。どちらの場合でも、データの不整合が発生する可能性があります。データの不整合を回避するために、ジョブの実行中にパラメータを変更してはなりません。

6.2.2

TSEND_C:接続の確立とデータの送信

6.2.2.1

TSEND_C: イーサネット経由のデータ送信

有効性
以下の「TSEND_C」命令の説明は、ファームウェアバージョンが V4.0 より前の S7-1200
CPU に適用されます。

説明「TSEND_C」命令は、TCP または ISO-on-TCP 通信接続を設定および確立します。接続の設定と確立が終了すると、CPU によって自動的に維持およびモニタされます。CONNECT パ
ラメータに指定された接続記述子が、通信接続の設定に使用されます。

2966

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
この命令は非同期的に実行され、次のファンクションを持ちます。
• 通信接続がセットアップされ、確立されます:
CONT=1 で、通信接続がセットアップされ、確立されます。接続が正常に確立されると、DONE パラメータが、1 サイクルの間、「1」にセットされます。CPU が STOP モードに移行すると、既存の接続が終了し、設定されていた接続が削除されます。接続を再度設定して確立するには、「TSEND_C」を再度実行する必要があります。実行可能な通信接続の数については、使用している CPU の技術仕様を参照してください。
• 既存の通信接続によるデータの送信:
DATA パラメータで送信領域を指定します。これには、アドレスと送信データの長さが含まれます。DATA パラメータで BOOL または Array of BOOL データタイプのデータ領域を使用しないでください。DATA パラメータで単にシンボリックな値を使用する場合、LEN
パラメータの値は「0」である必要があります。
• 送信ジョブは、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。LEN パラメータを使用して、送信ジョブで送信する最大バイト数を指定します。
データの送信(REQ パラメータでの信号立ち上がりエッジ)時に、接続を確立または維持するには、CONT パラメータの値は「1」である必要があります。送信データは、送信
ジョブが完了するまで編集しないでください。送信ジョブが正常に実行された場合、
DONE パラメータが「1」にセットされます。DONE パラメータのシグナル状態が「1」であっても、送信データが通信パートナーに読み取られているとは限りません。
• 通信接続の終了:
CONT パラメータが「0」にセットされると、進行中のデータ転送がまだ完了していない場合でも、通信接続は終了します。「TSEND_C」に対して既に設定した接続を使用している場合、これは適用されません。
COM_RST パラメータを「1」にセットすると、現在確立されている接続または現在のデータ伝送をいつでもリセットできます。これによって、既存の通信接続が終了し、新しい通信が確立されます。再実行時にデータを転送中の場合、データが失われる恐れがあります。
実行後(DONE = 1)に「TSEND_C」を再度有効にするには、REQ = 0 として命令を 1 回呼び出します。
注記
接続のプログラミング時のサポート
プログラムブロックで通信用の命令 TCON、TSEND_C、または TRCV_C を選択し、タイプ
TCP、UDP、または ISO-on-TCP の接続を作成し、パラメータを割り当てる場合、接続パラ
メータ割り当てのサポートを使用できます。
接続パラメータ割り当ては、プログラムエディタのインスペクタウィンドウにあります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2967

通信
6.2 オープンユーザーコミュニケーションパラメータ

次の表に、「TSEND_C」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L 信号立ち上がりエッジで送信ジョブを開始し
ます。

CONT

Input

BOOL

I、Q、M、D、L 通信接続を制御します。
• 0:通信接続の切断• 1:通信接続を確立し、維持します
データの送信(REQ パラメータでの信号立ち上がりエッジ)時に、接続を確立または維持するには、CONT パラメータの値は TRUE である必要があります。

LEN

Input

UINT

I、Q、M、D、ジョブで送信する最大バイト数。DATA パラ

L、または定数メータで単にシンボリックな値を使用する場
合、LEN パラメータの値は「0」である必要があります。

CONNECT

InOut

TCON_ParamD

接続記述子へのポインタ
関連項目:AUTOHOTSPOT

DATA

InOut

VARIANT

I、Q、M、D、L アドレスと送信データの長さの入っている送信領域へのポインタ(最大長:8192 バイト)。
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

COM_RST

InOut

BOOL

I、Q、M、D、L 命令を再起動します。
• 0:対象外• 1:既存の接続を終了させ、新しい接続を確立させる命令の完全な再起動

DONE

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました

BUSY

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または既に完了しています。
• 1:ジョブがまだ完了していません。新しいジョブを開始することはできません。

2968

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L 命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータで、ジョブが正常に実行されたかどうかをチェックできます。「TSEND_C」の実行中にエラーが発生す
ると、ERROR パラメータが設定されます。エラー情報が STATUS パラメータに出力されます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
BUSY

DONE

ERROR

説明

1

-

-

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。エラーの原因は、STATUS パラメータに明記されています。

0

0

0

新しいジョブが割り当てられませんでした。

ERROR および STATUS パラメータ
ERROR

STATUS*

説明(W#16#...
)
0

0000

ジョブがエラーなしで完了済み。

0

0001

接続の確立が完了しています。

0

0003

接続の終了が完了しています。

0

7000

ジョブ処理が行われていません。

0

7001

• ジョブの実行を開始します。
• 接続の確立• 接続パートナーを待っています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2969

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*

説明(W#16#...
)
0

7002

データが送信されました。

0

7003

接続を終了中です。

07004

接続が確立され、モニタされています。ジョブ処理は行われていません。

1

80A0

エラーコード 80A1 および 80A2 のグループエラーです。

1

80A1

• 接続またはポートが既にユーザーによって使用中です。
• 通信エラー:– 指定された通信がまだ確立されていません。
– 指定された接続を終了中です。この接続による転送は行えません。
– インターフェースを再初期化中です。

1

80A2

ローカルまたはリモートポートがシステムによって使用中です。

1

80A3

存在していない接続を終了しようとしています。

1

80A4

接続のリモートエンドポイントの IP アドレスが無効です。つまり、ローカルパー
トナーの IP アドレスと一致しています。

1

80A7

通信エラー:送信ジョブの完了前に、COM_RST = 1 で命令を呼び出しました。

1

80AA

別のブロックによって同じ接続 ID を持つ接続が現在確立されています。REQ パラ
メータの新しい立ち上がりエッジでジョブを繰り返します。

1

80B2

CONNECT パラメータが、属性「ロードメモリにのみ保存」を使用して生成されたデータブロックをポイントしています。

1

80B3

パラメータの割り当てに整合性がありません。エラーコード 80A0～80A2、80A4、
80B4～80B9 のグループエラーです。

1

80B4

接続のパッシブ確立(active_est = FALSE)のためにプロトコルバリエーション ISO on
TCP (connection_type = B#16#12)を使用するとき、次の条件の 1 つまたは両方が違反されました: 「local_tsap_id_len >= B#16#02」および/または「local_tsap_id[1]= B#16#E0」。

1

80B5

接続タイプ 13 = UDP の場合、パッシブ接続の確立以外は許可されていません。

1

80B6

接続記述子のデータブロックの connection_type パラメータにパラメータ割り当て
エラーがあります。

1

80B7

接続記述用のデータブロックの次のパラメータの 1 つにエラーがあります:
block_length、local_tsap_id_len、rem_subnet_id_len、rem_staddr_len、
rem_tsap_id_len、next_staddr_len。

1

8085

LEN パラメータが最大許容値よりも大きくなっています。

1

8086

CONNECT パラメータ内の ID パラメータが許容範囲外です。

2970

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*

説明(W#16#...
)
1

8087

最大接続数に達しました。これ以上の接続は行えません。

1

8088

LEN パラメータの値が、DATA パラメータで設定された受信領域と一致していませ
ん。

1

8089

CONNECT パラメータがデータブロックをポイントしていません。

1

8091

最大ネスト深さを超えています。

1

809A

CONNECT パラメータが、接続記述子の長さと一致しないフィールドをポイントし
ています。

1

809B

接続記述子のローカルデバイスの ID が、CPU と一致していません。

1

80C3

• すべての接続リソースが使用中です。
• この ID を持つブロックは、別の優先度グループで既に処理中です。

1

80C4

一時的な通信エラー:• 現時点では、接続を確立できません。
• 接続パスのファイアウォールが必要なポートのために開いていないため、接続を確立できません。
• インターフェースが新しいパラメータを受信中であるか、接続が確立中です。
• 設定した接続が現在「TDISCON」命令によって削除されています。
• 使用された接続が、COM_RST= 1 での呼び出しによって終了されています。

1

80C6

リモートネットワークエラー。リモートパートナーに到達できません。

1

8722

パラメータ CONNECT：ソース領域が無効です。領域が DB 内に存在していません。

1

873A

パラメータ CONNECT：接続記述子にアクセスできません(DB が存在していないな
ど)。

1

877F

パラメータ CONNECT：内部エラー

1

8822

パラメータ DATA：ソース領域が無効です。領域が DB 内に存在していません。

1

8824

パラメータ DATA：VARIANT ポインタで領域エラーが発生しました。

1

8832

パラメータ DATA：DB 番号が大きすぎます。

1

883A

パラメータ CONNECT：指定された接続データにアクセスできません(たとえば、DBが存在しないため)。

1

887F

パラメータ DATA：内部エラー。たとえば、VARIANT 参照が無効です。

1

893A

パラメータ DATA：送信領域にアクセスできません(たとえば、DB が存在しないため)。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2971

通信
6.2 オープンユーザーコミュニケーション

注記「TCON」、「TSEND」、「T_DIAG」および「TDISCON」命令のエラーメッセージ
内部的には、「TSEND_C」命令は、命令「TCON (ページ 3053)」、「TSEND (ページ 3074)」、「T_DIAG (ページ 3135)」、「T_RESET (ページ 3129)」および「TDISCON (ページ 3067)」を使用します。これらの命令のエラーメッセージは、ステータスパラメータで出力されることもあります。エラーコードの意味は、対応する命令に記載されています。内部的に使用されている異なる意味を持つ命令に対して同一のエラーコードが発生した場合は、「TSEND_C」のインスタンスデータブロックを使用してどの命令がエラーを出力したかを識別できます。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.2.2.2

TSEND_C:接続の確立とデータの送信

有効性「TSEND_C」命令の以下の説明は、以下に対して有効です。
• Ethernet– ファームウェアバージョン V4.0 以降の CPU S7-1200 と CPU S7-1500– ファームウェアバージョン V2.1 以降の CPU S7‑1500:UDP マルチキャスト通信– ファームウェアバージョン V2.0 以降の CPU S7-1500 および命令バージョン V3.2 以
降の TSEND_C:セキュリティで保護された通信• PROFIBUS
S7-1500 と、V2.0 以降でシステムデータタイプ TCON_FDL を備えた CM 1542‑5 の FDL
接続

説明「TSEND_C」命令は、通信接続を設定および確立します。接続の設定と確立が終了すると、CPU によって自動的に維持およびモニタされます。

2972

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
この命令は非同期的に実行され、次のファンクションを持ちます。
• 通信接続の設定および確立• 既存の通信接続を経由したデータ送信• 通信接続の終了またはリセット
内部的には、命令「TSEND_C」は、通信命令「TCON」、「TSEND」、「T_DIAG」、「T_RESET」、
および「TDISCON」を使用します。
注記
接続のプログラミング時のサポート
プログラムブロックで通信用の命令 TCON、TSEND_C、または TRCV_C を選択し、タイプ
TCP、UDP、ISO-on-TCP、または FDL の接続を作成し、パラメータを割り当てる場合、接続パラメータ割り当てのサポートを使用できます。ファームウェアバージョン V2.1 以降のS7-1500-CPU の場合、統合 PROFINET インターフェース経由の UDP マルチキャスト接続が可能です。
接続パラメータ割り当ては、プログラムエディタのインスペクタウィンドウにあります。

通信接続の設定および確立
CONT=1 で、通信接続がセットアップされ、確立されます。実行可能な通信接続の数については、使用している CPU の技術仕様を参照してください。CONNECT パラメータに指定された接続記述子が、通信接続の設定に使用されます。次の接続タイプを使用できます。
• プログラミングされた接続(「TCON」を経由した接続の構造):– TCP / UDP:TCON_IP_v4 システムデータタイプによる接続記述子– secure communication を使用した TCP/UDP:システムデータタイプ TCON_IP_V4_SEC
または TCON_QDN_SEC による接続記述子– ISO-on-TCP:TCON_IP_RFC システムデータタイプによる接続記述子– ISO:システムデータタイプ TCON_ISOnative による接続記述子(CP 1543‑1 /CP 1545‑1)– SMS クライアントへの遠隔制御接続:TCON_PHONE システムデータタイプによる接続記述
この接続タイプの場合、ステーションは、モバイルネットワーク CP 経由のモバイ
ルネットワークへのアクセスを必要とします。
– S7-1500 と、V2.0 以降でシステムデータタイプ TCON_FDL を備えた CM 1542‑5 のFDL 接続• 設定した接続– 既存の接続を TCON_Configured システムデータタイプに指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2973

通信
6.2 オープンユーザーコミュニケーション
CPU が STOP モードに移行すると、既存の接続が終了し、設定されていた接続が削除されます。接続を再度設定して確立するには、「TSEND_C」を再度実行する必要があります。

既存の通信接続を経由したデータ送信
送信ジョブは、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
前述の通り、先に通信接続が確立されます。
DATA パラメータで送信領域を指定します。これには、アドレスと送信データの長さが含まれます。DATA パラメータで BOOL または Array of BOOL データタイプのデータ領域を使用
しないでください。LEN パラメータを使用して、送信ジョブで送信する最大バイト数を指定します。DATA パラメータで最適化されたアクセスのある送信領域を使用する場合、LEN パ
ラメータの値は「0」である必要があります。
送信データは、送信ジョブが完了するまで編集しないでください。

通信接続の終了およびリセット
CONT パラメータが「0」にセットされると、進行中のデータ転送がまだ完了していない場
合でも、通信接続は終了します。「TSEND_C」に対して設定した接続を使用している場合、これは適用されません。
パラメータ COM_RST を「1」にセットすることによって、接続をいつでもリセットできます。これによって、既存の通信接続が終了し、新しい通信が確立されます。この時にデータを転送中の場合、データが失われる恐れがあります。

パラメータ
次の表に、「TSEND_C」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、

信号立ち上がりエッジで送信ジョブを開始し

L、T、C、また

ます。

は定数
CONT

Input

BOOL

I、Q、M、D、L 通信接続を制御します。
• 0:通信接続を切断します。
• 1:通信接続を確立し、維持します。

2974

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

LEN

Input

UDINT

I、Q、M、D、オプションパラメータ(非表示)

L、または定数

ジョブで送信する最大バイト数。DATA パラ
メータで最適化されたアクセスのある送信領域を使用する場合、LEN パラメータでは値「0」が使用される必要があります。
CM 1542‑5 の FDL 接続の場合、最大長は240 バイトです。これに関しては、接続パートナーが処理できる最大長に注意してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2975

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

CONNECTInOut

VARIANTD

接続記述子の構造へのポインタ:• プログラミングされた接続:– TCP または UDP の場合は、
TCON_IP_v4 システムデータタイプを使用します。説明は、AUTOHOTSPOTを参照してください。
– secure communication を使用した
TCP または UDP には、構造体
TCON_IP_V4_SEC または
TCON_QDN_SEC を使用します。
説明は、を参照してください
TCON_IP_V4_SEC に準拠した接続パラ
メータまたは TCON_QDN_SEC に準拠
した接続パラメータを参照してください。
– ISO-on-TCP の場合、TCON_IP_RFC シ
ステムデータタイプを使用します。説
明は、AUTOHOTSPOT を参照してくだ
さい。
– ISO の場合、TCON_ISOnative システ
ムデータタイプを使用します(CP 1543‑1 / CP 1545‑1)。詳細については、命令「TCON (ページ 3057)」を参照してください。
– SMS クライアントへの接続の場合は、
TCON_PHONE システムデータタイプ
を使用します。説明は、AUTOHOTSPOT を参照してください。
– CM 1542‑5 の FDL 接続の場合は、システムデータタイプ TCON_FDL を使用します; AUTOHOTSPOT を参照してください。
• 設定した接続:– 既存の接続の場合、TCON_Configured
システムデータタイプを使用します。
説明については、下の「設定した接続のシステムデータタイプ」を参照して
ください。

2976

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

DATA

InOut

VARIANT

I、Q、M、D、L アドレスと送信データの長さの入っている送信領域へのポインタ
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

ADDR

InOut

VARIANTD

ただし、UDP では、非表示パラメータを使用する必要があります。この場合、それは、システムデータタイプ TADDR_Param へのポイ
ンタを含みます。受信者のアドレス情報(IP
アドレスおよびポート番号)をシステムデー
タタイプ TADDR_Param のデータブロックに格納します。
関連項目:UDP によるリモートパートナーのアドレス情報の構造体 (ページ 3117)

COM_RST

InOut

BOOL

I、Q、M、D、L オプションパラメータ(非表示)
接続のリセット:• 0:対象外• 1:既存の接続がリセットされます。
COM_RST パラメータは、「TSEND_C」命令による評価の後にリセットされるため、スタティックに相互接続してはなりません。

DONE

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:送信ジョブがまだ開始されていないか、または実行中です。
• 1:送信ジョブがエラーなしで実行されました。この状態は、1 つのサイクルに対してのみ常時されます。
処理中(接続の確立、送信、接続の終了)に中
間ステップが正常に完了した場合、および「TSEND_C」の実行が正常に完了した場合、
出力パラメータ DONE が設定されます。

BUSY

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:送信ジョブがまだ開始されていないか、または既に完了しています。
• 1:送信ジョブがまだ完了していません。
新しい送信ジョブを開始することはできません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2977

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:エラーなし• 1:接続確立、データ転送、または接続終了中にエラーが発生しました。
「TSEND_C」命令のエラーまたは内部で使用される通信命令のために、出力パラメータ
ERROR が設定されることがあります。

STATUS

Output

WORD

I、Q、M、D、L 命令のステータス(「ERROR」および「STATUS」パラメータ」の説明を参照)。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

REQ、CONT および COM_RST パラメータ
パラメータ CONT は、REQ パラメータに関係なく、「TSEND_C」命令の接続の確立を制御します。CONT パラメータの動作は、プログラミングされた接続が使用されるか、または設定した接続が使用されるかに、部分的に依存します。
• CONT = "0"の場合:データは送信されません(プログラミングされた接続が使用されるか、または設定した接続が使用されるかに無関係)。
• CONT = "0"を"1"に変更する場合:– プログラミングされた接続を使用する場合、「TCON」で確立されます。
– 設定した接続を使用する場合、「T_DIAG」でチェックされます。
• CONT = "1"の場合:– データが送信されない限り(REQ="0")、接続は「T_DIAG」でチェックされます。
– 内部で使用される通信命令が、接続エンドポイントが存在しないことを通知した場
合、接続が「TCON」で自動的に再確立されます。
• CONT = "1"を"0"に変更する場合:– プログラミングされた接続を使用する場合、「TDISCON」で終了されます。
– 設定した接続を使用する場合、「T_RESET」でリセットされます。
パラメータ COM_RST は、「0」から「1」に切り替わると、接続をリセットします。
• 接続が確立された場合、「T_RESET」でリセットされます(プログラミングされた接続が使用されるか、または設定した接続が使用されるかに無関係)。
• 接続が確立されない場合、パラメータの設定は影響を及ぼしません。

2978

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
REQ および COM_RST パラメータが影響を及ぼすのは、CONT が「1」にセットされている場合のみです。次の表に、 REQ、CONT 、 COM_RST パラメータの関係を示します。
REQ

CONT

対象外 0

COM_ 命令のステー
RST
タス

説明

対象外 まだ実行され動作中のジョブはありません(STATUS = 7000)。

ていません
対象外 0

対象外 初期化

接続を終了中です。命令をリセット中です。

対象外 0 > 1

対象外 接続の確立

接続を確立中です。データはまだ転送されていません。

00

接続が確立され、命令「T_DIAG」でモニタされます。

1

接続が確立さ
れました。

対象外 1
0>1

1

0>1
0

接続が確立さ接続が「T_RESET」によって一時的に割り込まれ、リセットされ

れました。

ます。

接続が確立さ命令が送信を開始します。

れました。
対象外 1

0>1

データを送信データ転送が中断します。接続をリセットしています。

中です

設定した接続のシステムデータタイプ
CONNECT パラメータで設定した接続の場合、接続の記述には、TCON_Configured に従って以下の構造を使用します。
バイ パラメータト

データタイ 開始値
プ

説明

0…

HW_ANY

ローカルインターフェースのハードウェア識別子(値InterfaceID

-

1
2…

の範囲:0～65535)。
ID

CONN_OUC -34接続への参照(値の範囲:1～4095)。
既存の接続の接続 ID を入力します。

ConnectionType

BYTE

-

接続タイプ
設定した接続に対して 254 (10 進数)を選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2979

通信
6.2 オープンユーザーコミュニケーション

注記
互換性の理由のために、パラメータ InterfaceID および ConnectionType は、
TCON_Configured への接続記述用の構造体の一部です。これらのパラメータは接続パラメータ割り当てに対して効果を持ちません; 接続 ID 用のパラメータ ID のみが接続パラメータ割り当てで評価されます。

BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータで、送信ジョブが正常に実行されたかどうかをチェックできます。「TSEND_C」の実行中にエラーが発生すると、ERROR パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
DONE

BUSY

ERROR

説明

0

0

0

命令はまだ実行されていません(REQ パラメータに立ち上がりエッジなし)。

0

1

0

命令を実行中であり、内部で使用される通信命令を呼び出します。

1

0

0

「0000」が、ステータスパラメータに出力
送信ジョブが正常に完了しました。
されます。DONE = "1"が、1 つのサイクルに対してのみ表示されます。

0

0

1

命令の実行または処理中の中間ステップが、エラーで終了されました。内部で使用される通信命令のために、その後のエラーが発生した場合は、処理中に最初に発生したエラーが表示されます。この状態は、1 つのサイクルに対してのみ常時されます。

ERROR および STATUS パラメータ
ERROR

STATUS*

説明(W#16#...
)
0

0000

送信ジョブがエラーなしで実行されました。

0

0001

通信接続が確立されました。

0

0003

通信接続が終了しました。

0

7000

実行中の送信ジョブはありません。接続された通信接続はありません。

0

7001

接続を確立するための最初の呼び出し。

2980

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*

説明(W#16#...
)
0

7002

現在接続を確立中です(REQ 対象外)。

0

7003

通信接続を終了中です。

0

7004

通信接続が確立されており、モニタされています。有効な送信ジョブの実行はあり
ません。

0

7005

データ転送が進行中です。

1

80A1

• 接続またはポートが既にユーザーによって使用中です。
• 通信エラー:– 指定された通信がまだ確立されていません。
– 指定された接続を終了中です。
この接続による転送は行えません。
– インターフェースを再初期化中です。

1

80A3

ネストされた「T_DIAG」命令によって、接続が終了したことがレポートされました。

1

80A4

接続のリモートエンドポイントの IP アドレスが無効であるか、またはローカルパートナーの IP アドレスと一致します。

1

80A7

通信エラー:送信ジョブの完了前に、COM_RST = 1 で命令を呼び出しました。

1

80AA

別のブロックによって同じ接続 ID を持つ接続が現在確立されています。REQ パラ
メータの新しい立ち上がりエッジでジョブを繰り返します。

1

80B3

• プロトコルバリエーション UDP を使用するとき、ADDR パラメータはデータを含みません。
• 接続記述子のエラー• このローカルポートは、異なる接続記述で既に使用中です。

1

80B4

ISO-on-TCP プロトコルの種類(connection_type = B#16#12)を使用するときに、パッシブ接続の確立(active_est = FALSE)について、次の条件の一方または両方に違反しました。
• local_tsap_id_len >= B#16#02• local_tsap_id[1] = B#16#E0

1

80B5

接続タイプ 13 = UDP の場合、パッシブ接続の確立以外は許可されていません。

1

80B6

接続記述子のデータブロックの connection_type パラメータにパラメータ割り当て
エラーがあります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2981

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*

説明(W#16#...
)
1

80B7

• システムデータタイプ TCON_Param の場合:
接続記述用のデータブロックの次のパラメータの 1 つにエラーがあります:
block_length、local_tsap_id_len、rem_subnet_id_len、rem_staddr_len、
rem_tsap_id_len、next_staddr_len。
• システムデータタイプ TCON_IP_V4 および TCON_IP_RFC の場合:
パートナーエンドポイントの IP アドレスが 0.0.0.0 に設定されました。

1

8085

LEN パラメータが最大許容値よりも大きくなっています。

1

8086

CONNECT パラメータ内の ID パラメータが許容範囲外です。

1

8087

最大接続数に達しました。これ以上の接続は行えません。

1

8088

LEN パラメータの値が、DATA パラメータで設定された受信領域と一致していませ
ん。

1

8089

• CONNECT パラメータがデータブロックをポイントしていません。
• CONNECT パラメータが接続記述を指していません。
• 手動で作成された接続記述が、選択された接続タイプの不正な構造体を所有し
ています。

1

8091

最大ネスト深さを超えています。

1

809A

CONNECT パラメータが、接続記述子の長さと一致しないフィールドをポイントし
ています。

1

809B

InterfaceID が無効です。
• ローカル CPU インターフェースまたは CP をポイントしていません。
• 接続パラメータ割り当てを使用している場合、この値を 0 にはできません。
• 使用している TCON_xxx 構造体内で、この値を 0 にしてはなりません。「」を参照 TCON:通信接続の確立 (ページ 3057)

1

80C3

• すべての接続リソースが使用中です。
• この ID を持つブロックは、別の優先度グループで既に処理中です。

2982

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*

説明(W#16#...
)
1

80C4

一時的な通信エラー:• 現時点では、接続を確立できません。
• 接続パスのファイアウォールが必要なポートのために開いていないため、接続を確立できません。
• インターフェースが新しいパラメータを受信中であるか、接続が確立中です。
• 設定した接続が、現在「TDISCON (ページ 3067)」命令によって削除されています。
• 使用された接続が、COM_RST = 1 で呼び出されたことで終了しています。
• 一時的に、受信リソースが接続パートナーで使用できません。接続パートナーが受信する準備が完了していません。

1

80C5

• 接続が通信パートナーによって終了されました。
• リモート接続パートナーの LSAP がリリースされていません。

1

80C6

ネットワークエラー:• リモートパートナーに到達できません。
• PROFIBUS 上の物理的切断

1

8722

パラメータ CONNECT：ソース領域が無効です。領域が DB 内に存在していません。

1

873A

パラメータ CONNECT：接続記述子にアクセスできません(DB が使用できないなど)。

1

877F

パラメータ CONNECT：内部エラー

1

8822

パラメータ DATA：ソース領域が無効です。領域が DB 内に存在していません。

1

8824

パラメータ DATA：VARIANT ポインタで領域エラーが発生しました。

1

8832

パラメータ DATA：DB 番号が大きすぎます。

1

883A

パラメータ DATA:たとえば、データブロックが存在しないため、データ領域にアクセスできません。

1

887F

パラメータ DATA：内部エラー。たとえば、VARIANT 参照が無効です。

1

893A

パラメータ ADDR:送信領域にアクセスできません(たとえば、DB が存在しないため)。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2983

通信
6.2 オープンユーザーコミュニケーション

注記「TCON」、「TSEND」、「T_DIAG」、「T_RESET」および「TDISCON」命令のエラーメッセー
ジ
内部的には、「TSEND_C」命令は、命令「TCON」、「TSEND (ページ 3074)」、「T_DIAG (ページ 3135)」、「T_RESET (ページ 3129)」および「TDISCON (ページ 3067)」を使用します。
これらの命令のエラーメッセージは、STATUS パラメータで出力されることもあります。エラーコードの意味は、対応する命令に記載されています。内部的に使用されている異なる意味を持つ命令に対して同一のエラーコードが発生した場合は、「TSEND_C」のインスタンスデータブロックを使用してどの命令がエラーを出力したかを識別できます。

例
例は、送信ファンクションのプログラム例 (ページ 3004)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.2.3

TRCV_C:接続の確立とデータの受信

6.2.3.1

TRCV_C: イーサネット経由のデータ受信送信

有効性
以下の「TRCV_C」命令の説明は、ファームウェアバージョンが V4.0 より前の S7-1200
CPU に適用されます。

2984

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
説明「TRCV_C」命令は非同期的に実行され、次のファンクションを持ちます。
1. 通信接続の設定および確立:「TRCV_C」は、TCP または ISO-on-TCP 通信接続をセットアップし、確立します。接続の設定と確立が終了すると、CPU によって自動的に維持およびモニタされます。
CONNECT パラメータに指定された接続記述子が、通信接続の設定に使用されます。接続を確立するには、CONT パラメータを値「1」にセットする必要があります。接続が正常に確立されると、DONE パラメータが「1」にセットされます。
CPU が STOP モードに移行すると、既存の接続が終了し、設定されていた接続が削除されます。接続を再度設定して確立するには、「TRCV_C」を再度実行する必要があります。
実行可能な通信接続の数については、使用している CPU の技術仕様を参照してください。
2. 既存の通信接続によるデータの受信:
EN_R パラメータが値「1」に設定されている場合、データの受信が可能です。データの受信(EN_R パラメータでの信号立ち上がりエッジ)時に、接続を確立または維持するには、CONT
パラメータの値は TRUE である必要があります。
受信データは、受信領域に入力されます。使用中のプロトコルの種類に応じて、LEN パラ
メータ(LEN <> 0 の場合)または DATA パラメータの長さ情報(LEN = 0 の場合)のいずれかを使用して、受信領域の長さを指定します。DATA パラメータで単にシンボリックな値を使用する
場合、LEN パラメータの値は「0」である必要があります。
データが正常に受信されると、DONE パラメータのシグナル状態は「1」です。データ転送
でエラーが発生した場合、DONE パラメータが「0」にセットされます。
3. 通信接続の終了:
CONT パラメータが「0」にセットされると、すぐに通信接続が終了します。

COM_RST パラメータが設定されると、TRCV_C が再度実行されます。これによって、既存の通信接続が終了し、新しい通信が確立されます。再実行時にデータを受信中の場合、データが失われる恐れがあります。
注記
接続のプログラミング時のサポート
プログラムブロックで通信用の命令 TCON、TSEND_C、または TRCV_C を選択し、タイプ
TCP、UDP、または ISO-on-TCP の接続を作成し、パラメータを割り当てる場合、接続パラ
メータ割り当てのサポートを使用できます。
接続パラメータ割り当ては、プログラムエディタのインスペクタウィンドウにあります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2985

通信
6.2 オープンユーザーコミュニケーション
TRCV_C の受信モード
次の表に、受信データがどのように受信領域に入力されるかを示します。
プロトコルの種類

受信領域内のデータの可用性

接続記述子の
LEN パラメータ
connection_type パラメータ

TCP

データはすぐに使用可能です。

16 進数値:B#16#11(アドホックモード)
TCP0

整数値:17
LEN パラメータで指定されたデー 16 進数値:B#16#11(指定された長さの タ長が完全に受信されるとすぐに、データが使用可能になりま
データの受信)1～8192

整数値:17す。
ISO on TCP

LEN パラメータで指定されたデー 16 進数値:B#16#12(メッセージ指向の タ長が完全に受信されるとすぐに、データが使用可能になりま
データ転送)

整数値:18• 1～1452、CPを使用する場合。
• 1～8192、CPを使用しない場合。

す。

TCP (アドホックモード)
アドホックモードは、TCP プロトコル種類でのみ使用可能です。「TRCV」命令で長さが動的なデータを受信するには、アドホックモードを使用します。
アドホックモードは、値「0」を LEN パラメータに割り当てることで設定できます。アドホックモードを使用すると、データブロックに対して標準アクセスですべてのデータタイ
プを使用できます。最適化されたアクセスのあるデータブロックには、ARRAY of BYTE ま
たは長さが 8 ビットのデータタイプのみを使用できます(CHAR、USINT、SINT など)。実際の受信データ長は、RCVD_LEN パラメータに出力されます。

TCP (指定された長さのデータの受信)
LEN パラメータの値を使用し、データ受信の長さを指定します。LEN パラメータで指定された長さのデータが完全に受信されるまで、データの受信は完了しません。受信領域でデータが使用可能になるのは、そのときだけです(DATA パラメータ)。RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後の LEN パラメータのデータ長に相当
します。

2986

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ISO on TCP (メッセージ指向のデータ転送)
プロトコルのバリエーション ISO on TCP を使用する接続を経由して、メッセージブロック
全体が送信されます。これらは受信によってそのように認識されます。ISO on TCP を使用している場合、メッセージブロックが完全に受信されると直ちに、「TRCV_C」がデータの受信を通知します。受信領域は、LEN および DATA パラメータによって定義されます。送信
データに対して受信バッファ(DATA パラメータ)が小さすぎる場合、「TRCV_C」がエラーを通知します。RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後のLEN パラメータのデータ長に相当します。

パラメータ
次の表に、「TRCV_C」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

EN_R

Input

BOOL

I、Q、M、D、L 受信可能です。

CONT

Input

BOOL

I、Q、M、D、L 通信接続を制御します。
• 0:通信接続の切断• 1:通信接続を確立し、維持します
データの受信(EN_R パラメータでの信号立ち上がりエッジ)時に、接続を確立または維持するには、CONT パラメータの値は TRUE である必要があります。

LEN

Input

UINT

I、Q、M、D、

受信するデータの最大長(最大値:8192 バイ

L、または定数ト)。DATA パラメータで単にシンボリックな値を使用する場合、LEN パラメータの値は「0」である必要があります。

CONNECT

InOut

TCON_ParamD

接続記述子へのポインタ
関連項目:AUTOHOTSPOT

DATA

InOut

VARIANT

I、Q、M、D、L 受信領域へのポインタ
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

COM_RST

InOut

BOOL

I、Q、M、D、L 命令を再起動します。
• 0:対象外• 1:既存の接続を終了させる命令の完全な再起動

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2987

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

DONE

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました

BUSY

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または既に完了しています。
• 1:ジョブがまだ完了していません。新しいジョブを開始することはできません。

ERROR

Output

BOOL

I、Q、M、D、L ステータスパラメータ ERROR:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L 命令のステータス

RCVD_LEN

OutputUINT

I、Q、M、D、L 実際に受信されたバイト単位のデータ量「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータで、ジョブが正常に実行されたかどうかをチェックできます。「TRCV_C」の実行中にエラーが発生すると、ERROR パラメータが設定されます。エラー情報が STATUS パラメータに出力されます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
BUSY

DONE

ERROR

説明

1

-

-

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。STATUS パラメータにエラーの原因が出力されます。

0

2988

0

0

新しいジョブが割り当てられませんでした。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR および STATUS パラメータ
ERROR

STATUS*

説明(W#16#...
)
0

0000

ジョブがエラーなしで完了済み。

0

0001

接続の確立が完了しています。

0

0003

接続の終了が完了しています。

0

7000

ジョブ処理が行われていません。

0

7001

• ジョブの実行を開始します。
• 接続の確立• 接続パートナーを待っています。

0

7002

データを受信中です。

0

7003

接続を終了中です。

07004• 接続が確立され、モニタされています。
• ジョブ処理が行われていません。

0

7006

現在データを受信中です。

1

8085

• LEN パラメータが最大許容値よりも大きくなっています。
• 最初の呼び出しの後に、LEN または DATA パラメータの値が変更されました。

1

8086

ID パラメータが許容範囲外です。

1

8087

最大接続数に達しました。これ以上の接続は行えません。

1

8088

LEN パラメータの値が、DATA パラメータで設定された受信領域と一致していません。

1

8089

CONNECT パラメータがデータブロックをポイントしていません。

1

8091

最大ネスト深さを超えています。

1

809A

CONNECT パラメータが、接続記述子の長さと一致しないフィールドをポイントして
います。

1

809B

接続記述子のローカルデバイスの ID (local_device_id)が、CPU と一致していません。

1

80A0

エラーコード W#16#80A1 および W#16#80A2 のグループエラーです。

1

80A1

• 接続またはポートが既にユーザーによって使用中です。
• 通信エラー:– 指定された通信がまだ確立されていません。
– 指定された接続を終了中です。
この接続による転送は行えません。
– インターフェースを再初期化中です。

1

80A2

ローカルまたはリモートポートがシステムによって使用中です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2989

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*

説明(W#16#...
)
1

80A3

• 既存の接続を再確立しようとしています。
• 存在していない接続を終了しようとしています。

1

80A4

接続のリモートエンドポイントの IP アドレスが無効です。つまり、ローカルパート
ナーの IP アドレスと一致しています。

1

80A7

通信エラー:送信ジョブの完了前に、COM_RST = 1 で命令を呼び出しました。

1

80B2

CONNECT パラメータが、属性「ロードメモリにのみ保存」を使用して生成されたデータブロックをポイントしています。

1

80B3

パラメータの割り当てに整合性がありません。エラーコード W#16#80A0～
W#16#80A2、W#16#80A4、W#16#80B4～W#16#80B9 のグループエラーです。

1

80B4

接続のパッシブ確立(active_est = FALSE)のためにプロトコルバリエーション ISO on
TCP (connection_type = B#16#12)を使用するとき、次の条件の 1 つまたは両方が違反されました: 「local_tsap_id_len >= B#16#02」および/または「local_tsap_id[1] =B#16#E0」。

1

80B5

接続タイプ 13 = UDP の場合、パッシブ接続の確立以外は許可されていません。

1

80B6

接続記述子のデータブロックの connection_type パラメータにパラメータ割り当てエラーがあります。

1

80B7

接続記述用のデータブロックの次のパラメータの 1 つにエラーがあります:
block_length、local_tsap_id_len、rem_subnet_id_len、rem_staddr_len、
rem_tsap_id_len、next_staddr_len。

1

80C3

• すべての接続リソースが使用中です。
• この ID を持つブロックは、別の優先度グループで既に処理中です。

1

80C4

一時的な通信エラー:• 現時点では、接続を確立できません。
• 接続パスのファイアウォールが必要なポートのために開いていないため、接続を確立できません。
• インターフェースが新しいパラメータを受信中であるか、接続が確立中です。
• 設定した接続が現在「TDISCON」命令によって削除されています。
• 使用された接続が、COM_RST= 1 での呼び出しによって終了されています。

1

80C6

リモートパートナーに到達できません(ネットワークエラー)。

1

8722

CONNECT パラメータでエラーが発生しました。ソース領域(データブロックで宣言されていない領域)が無効です。

1

873A

CONNECT パラメータでエラーが発生しました。接続記述へのアクセスが行えません(データブロックにアクセスできません)。

2990

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*

説明(W#16#...
)
1

877F

CONNECT パラメータでエラーが発生しました。内部エラー

1

8922

パラメータ DATA：無効な宛先領域; その領域が DB 内に存在しません。

1

8924

パラメータ DATA：VARIANT ポインタで領域エラーが発生しました。

1

8932

パラメータ DATA：DB 番号が大きすぎます。

1

893A

パラメータ CONNECT：指定された接続データにアクセスできません(たとえば、DB が存在しないため)。

1

897F

パラメータ DATA：内部エラー。たとえば、VARIANT 参照が無効です。

1

8A3A

パラメータ DATA：たとえば、データブロックが存在しないため、データ領域にアクセスできません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
注記
命令「TCON」、「TRCV」および「TDISCON」のエラーメッセージ
内部的には、TRV_C 命令は「TCON (ページ 3053)」、「TRCV (ページ 3079)」および「TDISCON (ページ 3067)」命令を使用します。これらの命令のエラーメッセージは、それぞれの説明に含まれています。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2991

通信
6.2 オープンユーザーコミュニケーション
6.2.3.2

TRCV_C:接続の確立とデータの受信有効性「TRCV_C」命令の以下の説明は、以下に対して有効です。
• Ethernet:– ファームウェアバージョン V4.0 以降の CPU S7-1200 および CPU S7-1500– ファームウェアバージョン V2.1 以降の CPU S7‑1500:UDP マルチキャスト通信– ファームウェアバージョン V2.0 以降の CPU S7-1500 および命令バージョン V3.2 以
降の TRCV_C:セキュリティで保護された通信• PROFIBUS:S7-1500 と、V2.0 以降でシステムデータタイプ TCON_FDL を備えた
CM 1542‑5 の FDL 接続

説明「TRCV_C」命令は非同期的に実行され、シーケンス内の次のファンクションを実行します。
• 通信接続の設定および確立• 既存の通信接続を経由したデータ受信• 通信接続の終了またはリセット
内部的には、命令「TRCV_C」は、通信命令「TCON」、「TRCV」、「T_DIAG」、「T_RESET」、
および「TDISCON」を使用します。
注記
接続のプログラミング時のサポート
プログラムブロックで通信用の命令 TCON、TSEND_C、または TRCV_C を選択し、タイプ
TCP、UDP、ISO-on-TCP、または FDL の接続を作成し、パラメータを割り当てる場合、接続パラメータ割り当てのサポートを使用できます。ファームウェアバージョン V2.1 以降のS7-1500-CPU の場合、統合 PROFINET インターフェース経由の UDP マルチキャスト接続が可能です。
接続パラメータ割り当ては、プログラムエディタのインスペクタウィンドウにあります。

2992

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
通信接続の設定および確立
CONT=1 で、通信接続がセットアップされ、確立されます。実行可能な通信接続の数については、使用している CPU の技術仕様を参照してください。CONNECT パラメータに指定された接続記述子が、通信接続の設定に使用されます。次の接続タイプを使用できます。
• プログラミングされた接続(「TCON」を経由した接続の構造):– TCP / UDP:TCON_IP_v4 システムデータタイプによる接続記述子– secure communication を使用した TCP/UDP:システムデータタイプ TCON_IP_V4_SEC
または TCON_QDN_SEC による接続記述子– ISO-on-TCP:TCON_IP_RFC システムデータタイプによる接続記述子– ISO:システムデータタイプ TCON_ISOnative による接続記述子(CP 1543‑1 /CP 1545‑1)– SMS クライアントへの遠隔制御接続:TCON_PHONE システムデータタイプによる接続記述
この接続タイプの場合、ステーションは、モバイルネットワーク CP 経由のモバイ
ルネットワークへのアクセスを必要とします。
– S7-1500 と、V2.0 以降でシステムデータタイプ TCON_FDL を備えた CM 1542‑5 のFDL 接続• 設定した接続– 既存の接続を TCON_Configured システムデータタイプに指定します。
CPU が STOP モードに移行すると、既存の接続が終了し、設定されていた接続が削除されます。接続を再度設定して確立するには、「TRCV_C」を再度実行する必要があります。

既存の通信接続を経由したデータ受信
EN_R パラメータが値「1」にセットされると、データの受信が可能になります。受信デー
タは、受信領域に入力されます。使用されているプロトコル変数に応じて、受信エリアの長さを LEN パラメータ(LEN <> 0 の場合)、または DATA パラメータの長さの情報(LEN = 0 の場合)で指定します。DATA パラメータで単にシンボリックな値を使用する場合、LEN パラ
メータの値は「0」である必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2993

通信
6.2 オープンユーザーコミュニケーション
TRCV_C の受信モード:• TCP (アドホックモード)
アドホックモードは、TCP プロトコル種類でのみ使用可能です。「TRCV_C」命令で長さが動的なデータを受信するには、アドホックモードを使用します。
アドホックモードは、値「1」を ADHOC パラメータに割り当てることで設定できます。
アドホックモードを使用すると、データブロックに対して標準アクセスですべてのデータタイプを使用できます。最適化されたアクセスのあるデータブロックには、ARRAY
of BYTE または長さが 8 ビットのデータタイプのみを使用できます(CHAR、USINT、SINTなど)。実際の受信データ長は、RCVD_LEN パラメータに出力されます。
• TCP (指定された長さのデータの受信)指定された長さのデータの受信の場合、ADHOC パラメータに値「0」を割り当てます。
アドホックモードが無効の場合、LEN パラメータで指定された長さのデータが完全に受信されるまで、データの受信は完了しません。受信領域でデータが使用可能になるのは、そのときだけです(DATA パラメータ)。RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後の LEN パラメータのデータ長に相当します。
• ISO‑on‑TCP (メッセージ指向のデータ転送)
プロトコルのバリエーション ISO‑on‑TCP を使用する接続を経由して、メッセージブロ
ック全体が送信されます; これらは受信者によってそのようなものとして認識されます。
受信領域は、LEN および DATA パラメータによって定義されます。送信データに対して受信バッファ(DATA パラメータ)が小さすぎる場合、「TRCV_C」がエラーを通知します。
RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後の LEN パラ
メータのデータ長に相当します。
次の表に、受信データがどのように受信領域に入力されるかを示します。
プロトコルの種類

受信領域内のデータの可用性

接続記述子の
LEN パラメータ
connection_type パラメータ

TCP

データはすぐに使用可能です。

16 進数値:B#16#11

1 から最大長(CPU に

整数値:17

よって異なる)(アドホックモード)
TCP

LEN パラメータで指定されたデー 16 進数値:B#16#11(指定された長さの タ長が完全に受信されるとすぐに、データが使用可能になりま
データの受信)1～8192

整数値:17す。

2994

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
接続記述子の
LEN パラメータ
connection_type パラメータ

プロトコルの種類

受信領域内のデータの可用性

ISO‑on‑TCP

LEN パラメータで指定されたデー 16 進数値:B#16#12(メッセージ指向の タ長が完全に受信されるとすぐに、データが使用可能になりま
データ転送)

1～8192

整数値:18す。
FDL

LEN パラメータで指定されたデー 16 進数値:B#16#15
タ長が完全に受信されるとすぐ

1 ～ 240

10 進数:21に、データが使用可能になります。

通信接続の終了
CONT パラメータが「0」にセットされると、進行中のデータ転送がまだ完了していない場
合でも、通信接続は終了します。ただし、設定した接続を使用している場合、これは適用されません。
パラメータ COM_RST を「1」にセットすることによって、接続をいつでもリセットできます。これによって、既存の通信接続が終了し、新しい通信が確立されます。この時にデータを転送中の場合、データが失われる恐れがあります。

パラメータ
次の表に、「TRCV_C」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

説明

EN_R

Input

BOOL

I、Q、M、D、受信可能です。

L、T、C、また
は定数
CONT

Input

BOOL

I、Q、M、D、L 通信接続を制御します。
• 0:通信接続を切断します。
• 1:通信接続を確立し、データ受信後も維
持します。

LEN

Input

UDINT

I、Q、M、D、

受信するデータの最大長。DATA パラメータ

L、または定数で最適化されたアクセスのある受信領域を使用する場合、LEN パラメータでは値「0」が使用される必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2995

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

ADHOC

Input

BOOL

I、Q、M、D、オプションパラメータ(非表示)

L、または定数

TCP プロトコルのバリエーションの場合は、アドホックモードを使用します。
TCP プロトコルを使用していない場合、
ADHOC の値は FALSE であることが必要で
す。

2996

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

CONNECTInOut

VARIANTD

接続記述子へのポインタ• プログラミングされた接続:– TCP または UDP の場合、構造体
TCON_IP_v4 を使用します。
説明は、AUTOHOTSPOT を参照してく
ださい– secure communication を使用した
TCP または UDP には、構造体
TCON_IP_V4_SEC または
TCON_QDN_SEC を使用します。
説明は、を参照してください
TCON_IP_V4_SEC に準拠した接続パラ
メータまたは TCON_QDN_SEC に準拠
した接続パラメータを参照してください。
– ISO-on-TCP の場合、構造体
TCON_IP_RFC を使用します。
説明は、AUTOHOTSPOT を参照してく
ださい– ISO の場合、構造体 TCON_ISOnativeを使用します(CP 1543‑1 / CP 1545‑1)。
詳細については、「TCON (ページ 3057)」命令「TCON_ISOnative に従った接続記述の構造体」を参照してください。
– SMS クライアントへの接続の場合は、
TCON_PHONE システムデータタイプ
を使用します。
説明は、AUTOHOTSPOT を参照してください。
– CM 1542‑5 の FDL 接続の場合は、システムデータタイプ TCON_FDL を使用します; AUTOHOTSPOT を参照してください。
• 設定した接続:– 既存の接続の場合、TCON_Configured
システムデータタイプを使用します。
説明については、下の「設定した接続のシステムデータタイプ」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2997

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

DATA

InOut

VARIANT

I、Q、M、D、L 受信領域へのポインタ。
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

ADDR

InOut

VARIANTD

ただし、UDP では、非表示パラメータを使用する必要があります。この場合、それは、システムデータタイプ TADDR_Param へのポイ
ンタを含みます。送信元のアドレス情報(IP
アドレスおよびポート番号)をシステムデー
タタイプ TADDR_Param のデータブロックに格納します。
関連項目:UDP によるリモートパートナーのアドレス情報の構造体 (ページ 3117)

COM_RST

InOut

BOOL

I、Q、M、D、L オプションパラメータ(非表示)
接続のリセット:• 0:対象外• 1:既存の接続がリセットされます。
COM_RST パラメータは、「TRCV_C」命令による評価の後にリセットされるため、スタテ
ィックに相互接続してはなりません。

DONE

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:受信がまだ開始されていないか、または実行中です。
• 1:受信がエラーなしで実行されました。
この状態は、1 つのサイクルに対してのみ常時されます。
処理中(接続の確立、受信、接続の終了)に中
間ステップが正常に完了した場合、および「TRCV_C」の実行が正常に完了した場合、出力パラメータ DONE が設定されます。

BUSY

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:受信がまだ開始されていないか、既に完了しています。
• 1:受信がまだ完了していません。新しい
送信ジョブを開始することはできません。

2998

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:エラーなし• 1:接続確立、データ受信、または接続終了時にエラーが発生しました。
「TRCV_C」命令のエラーまたは内部で使用される通信命令のために、出力パラメータ
ERROR が設定されることがあります。

STATUS

Output

WORD

I、Q、M、D、L 命令のステータス

RCVD_LEN

Output

UDINT

I、Q、M、D、L 実際に受信されたバイト単位のデータ量「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

EN_R、CONT および COM_RST パラメータ
パラメータ CONT は、EN_R パラメータに関係なく、「TRCV_C」命令の接続の確立を制御します。CONT パラメータの動作は、プログラミングされた接続が使用されるか、または設定した接続が使用されるかに、部分的に依存します。
• CONT = "0"の場合:データは受信されません(プログラミングされた接続が使用されるか、または設定した接続が使用されるかに無関係)。
• CONT = "0"を"1"に変更する場合:– プログラミングされた接続を使用する場合、「TCON」で確立されます。
– 設定した接続を使用する場合、「T_DIAG」でチェックされます。
• CONT = "1"の場合:– データが受信されない限り(EN_R="0")、接続は「T_DIAG」でチェックされます。
– 内部で使用される通信命令が、接続エンドポイントが存在しないことを通知した場
合、接続が「TCON」で自動的に再確立されます。
• CONT = "1"を"0"に変更する場合:– プログラミングされた接続を使用する場合、「TDISCON」で終了されます。
– 設定した接続を使用する場合、「T_RESET」でリセットされます。
パラメータ COM_RST は、「0」から「1」に切り替わると、接続をリセットします。
• 接続が確立された場合、「T_RESET」でリセットされます(プログラミングされた接続が使用されるか、または設定した接続が使用されるかに無関係)。
• 接続が確立されない場合、パラメータの設定は影響を及ぼしません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

2999

通信
6.2 オープンユーザーコミュニケーション
EN_R および COM_RST パラメータが影響を及ぼすのは、CONT が「1」にセットされている場合のみです。次の表に、 EN_R、CONT 、および COM_RST の関係を示します。
EN_R

CONT

対象外 0

COM_ 命令のステー
RST
タス

説明

対象外 まだ実行され動作中のジョブはありません(STATUS = 7000)。

ていません
対象外 0

対象外 初期化

接続を終了中です。命令をリセット中です。

対象外 0 > 1

対象外 接続の確立

接続を確立中です。データはまだ転送されていません。

00

接続が確立され、命令「T_DIAG」でモニタされます。

1

接続が確立さ
れました。

対象外 1
0>1

1

0>1
0

接続が確立さ接続が「T_RESET」によって一時的に割り込まれ、リセットされ

れました。

ます。

接続が確立さ命令が受信を開始します。

れました。
対象外 1

0>1

データを受信データ転送が中断します。接続をリセットしています。

中です。

設定した接続のシステムデータタイプ
CONNECT パラメータで設定した接続の場合、接続の記述には、TCON_Configured に従って以下の構造を使用します。
バイ パラメータト

データタイ 開始値
プ

説明

0…

HW_ANY

ローカルインターフェースのハードウェア識別子(値InterfaceID

-

1
2…

の範囲:0～65535)。
ID

CONN_OUC -34接続への参照(値の範囲:1～4095)。
既存の接続の接続 ID を入力します。

ConnectionType

BYTE

-

接続タイプ
設定した接続に対して 254 (10 進数)を選択します。

3000

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータで、ジョブが正常に実行されたかどうかをチェックできます。「TRCV_C」の実行中にエラーが発生すると、ERROR パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
DONE

BUSY

ERROR

説明

0

0

0

命令はまだ実行されていません(EN_R パラメータに立ち上がりエッジなし)。

0

1

0

命令を実行中であり、内部で使用される通信命令を呼び出します。

1

0

0

受信が正常に完了しました。「0000」が、パラメータ STATUS に出力されます。DONE = 「1」は、1 サイクルの間のみ表示されます。

0

0

1

命令の実行または処理中の中間ステップが、エラーで終了されました。内部で使用される通信命令のために、その後のエラーが発生した場合は、処理中に最初に発生したエラーが表示されます。この状態は、1 つのサイクルに対してのみ常時されます。

ERROR および STATUS パラメータ
ERROR

STATUS

説明(W#16#...
)
0

0000

受信ジョブがエラーなしで実行されました。

0

0001

通信接続が確立されました。

0

0003

通信接続が終了しました。

0

7000

ジョブ処理が行われていません。

0

7001

接続を確立するための最初の呼び出し。

0

7002

現在接続を確立中です(REQ 対象外)。

0

7003

通信接続を終了中です。

0

7004

通信接続が確立されており、モニタされています。受信ジョブの処理が行われてい
ません。

0

7006

現在データを受信中です。

1

8085

• LEN パラメータが最大許容値よりも大きくなっています。
• 最初の呼び出しの後に、LEN または DATA パラメータの値が変更されました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3001

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS

説明(W#16#...
)
1

8086

ID パラメータが許容範囲外です。

1

8087

最大接続数に達しました。これ以上の接続は行えません。

1

8088

LEN パラメータの値が、DATA パラメータで設定された受信領域と一致していません。

1

8089

• CONNECT パラメータがデータブロックをポイントしていません。
• CONNECT パラメータが接続記述を指していません。
• 手動で作成された接続記述が、選択された接続タイプの不正な構造体を所有して
います。

1

8091

最大ネスト深さを超えています。

1

809A

CONNECT パラメータが、接続記述子の長さと一致しないフィールドをポイントして
います。

1

809B

InterfaceID が無効です。
• ローカル CPU インターフェースまたは CP をポイントしていません。
• 接続パラメータ割り当てを使用している場合、この値を 0 にはできません。
• 使用している TCON_xxx 構造体内で、この値を 0 にしてはなりません。「」を参照 TCON:通信接続の確立 (ページ 3057)

1

80A1

• 接続またはポートが既にユーザーによって使用中です。
• 通信エラー:– 指定された通信がまだ確立されていません。
– 指定された接続を終了中です。
この接続による転送は行えません。
– インターフェースを再初期化中です。

1

80A3

ネストされた「T_DIAG」命令によって、接続が終了したことがレポートされました。

1

80A4

接続のリモートエンドポイントの IP アドレスが無効であるか、またはローカルパー
トナーの IP アドレスと一致します。

1

80A7

通信エラー:送信ジョブの完了前に、COM_RST = 1 で命令を呼び出しました。

1

80AA

別のブロックによって同じ接続 ID を持つ接続が現在確立されています。REQ パラメータの新しい立ち上がりエッジでジョブを繰り返します。

1

80B3

• プロトコルバリエーション UDP を使用するとき、ADDR パラメータはデータを含みません。
• 接続記述子のエラー• このローカルポートは、異なる接続記述で既に使用中です。

3002

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS

説明(W#16#...
)
1

80B4

接続のパッシブ確立(active_est = FALSE)のためにプロトコルバリエーション ISO on
TCP (connection_type = B#16#12)を使用するとき、次の条件の 1 つまたは両方が違反されました: 「local_tsap_id_len >= B#16#02」および/または「local_tsap_id[1] =B#16#E0」。

1

80B5

接続タイプ 13 = UDP の場合、パッシブ接続の確立以外は許可されていません。

1

80B6

接続記述子のデータブロックの connection_type パラメータにパラメータ割り当てエラーがあります。

1

80B7• システムデータタイプ TCON_Param の場合:
接続記述用のデータブロックの次のパラメータの 1 つにエラーがあります:
block_length、local_tsap_id_len、rem_subnet_id_len、rem_staddr_len、
rem_tsap_id_len、next_staddr_len。
• システムデータタイプ TCON_IP_V4 および TCON_IP_RFC の場合:
パートナーエンドポイントの IP アドレスが 0.0.0.0 に設定されました。

1

80C3

• すべての接続リソースが使用中です。
• この ID を持つブロックは、別の優先度グループで既に処理中です。

1

80C4

一時的な通信エラー:• 現時点では、接続を確立できません。
• 接続パスのファイアウォールが必要なポートのために開いていないため、接続を確立できません。
• インターフェースが新しいパラメータを受信中であるか、接続が確立中です。
• 設定した接続が現在「TDISCON」命令によって削除されています。
• 使用された接続が、COM_RST = 1 で呼び出されたことで終了しています。

1

80C6

リモートパートナーに到達できません(ネットワークエラー)。

1

8722

CONNECT パラメータでエラーが発生しました。ソース領域(データブロックで宣言されていない領域)が無効です。

1

873A

CONNECT パラメータでエラーが発生しました。接続記述へのアクセスが行えません(データブロックにアクセスできません)。

1

877F

CONNECT パラメータでエラーが発生しました。内部エラー

1

8922

パラメータ DATA：無効な宛先領域; その領域が DB 内に存在しません。

1

8924

パラメータ DATA：VARIANT ポインタで領域エラーが発生しました。

1

8932

パラメータ DATA：DB 番号が大きすぎます。

1

893A

パラメータ DATA:たとえば、データブロックが存在しないため、データ領域にアクセスできません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3003

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS

説明(W#16#...
)
1

897F

パラメータ DATA：内部エラー。たとえば、VARIANT 参照が無効です。

1

8A3A

パラメータ ADDR:たとえば、データブロックが存在しないため、アドレス範囲にア
クセスできません。
注記
命令「TCON」、「TRCV」および「TDISCON」のエラーメッセージ
内部的には、「TRV_C」命令は「TCON (ページ 3057)」、「TRCV (ページ 3079)」および「TDISCON (ページ 3067)」命令を使用します。これらの命令のエラーメッセージは、それぞれの説明に含まれています。

例
例は、送信ファンクションのプログラム例 (ページ 3004)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
TSEND_C:接続の確立とデータの送信 (ページ 2972)
同期命令と非同期命令の相違 (ページ 29)

6.2.4

送信ファンクションのプログラム例

概要
次の例では、S7-1500 シリーズの 2 つの CPU 間にプログラムされた接続を作成し、文字列を CPU 1 から CPU 2 へ送信します。送信する文字列のデータタイプは STRING です。

3004

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。それらの接続がまだ構成済みでないこと。

• [プロパティ|保護]での低い保護レベルは、CPU ごとに読み出しおよび書き込みアクセスが許可されることを保証します。

CPU 1 のプログラム「TSEND_C」のデータを格納するために、グローバルデータブロックに 9 つのタグを作成します。

FB「SLI_FB_TSEND_C」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:「TSEND_C」命令のパラメータを以下のように相互接続します。パラメー
タ CONNECT はまだ相互接続してはいけません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3005

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 2:TSEND_C のエラーのステータスを以下のように保存します。

TSEND_C の設定

パラメータ CONNECT を相互接続するには、[プロパティ|設定]で「TSEND_C」命令のウィ
ザードを開きます。
「TSEND_C」に関して、以下の設定を行います。
入力フィールド

入力

終点

ドロップダウンリストを使用して、送信元および受信元の CPU を選択します。
インターフェース、サブネット、およびアドレスは自動的に入力されます。

接続データドロップダウンリストを使用して、[新規作成]を選択して、CPU ごとに 1 つのデータブロックを作成します。
このデータブロックは、接続データを格納するために必要です。データブロックの名前は自由に選択できます。
アクティブ接続の確立は、CPU 1 (ローカル CPU)に対して有効化されます。

3006

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
入力フィールド

入力

接続タイプ

エントリ「TCP」を選択します。
これは、「TCP」プロトコルによるイーサネット接続が接続確立で使用されることを示
します。

構成モード

エントリ「プログラムブロックを使用」を選択します。
これは、接続確立がプログラムされた接続によって行われることを示します。

接続 ID

通信接続で自由に選択された接続 ID を入力します。
接続 ID は、プロジェクトで既に割り当て済みであってはいけません。

パートナーポートパートナーポートの値を入力します。その値は、2000 以上であることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3007

通信
6.2 オープンユーザーコミュニケーション
CPU 2 のプログラム「TRCV_C」のデータを格納するために、グローバルデータブロックに 10 個のタグを作成します。

FB「SLI_FB_TRCV_C」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:「TRCV_C」命令のパラメータを以下のように相互接続します。パラメータ
CONNECT はまだ相互接続してはいけません。

ネットワーク 2:TRCV_C のエラーのステータスを以下のように保存します。

3008

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

TRCV_C の設定「TRCV_C」に関して、以下の設定を行います。
注記
接続データ
TSEND_C を設定することによって、CPU ごとの接続データが格納されたデータグロック("SLI_cDB_Connector")を既に作成しています。新しいデータブロックを作成し、接続デー
タを入力する代わりに、作成済みのデータブロック(「SLI_cDB_Connector」)をそのまま使用できます。
作成されたデータブロックが選択で使用できるには、それらが、プロジェクトツリーの[プログラムブロック|システムブロック]でまだ使用できることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3009

通信
6.2 オープンユーザーコミュニケーション接続確立の手順
RUN モードで通信接続を確立するには、次の手順を実行します。
1. TRCV_C の場合、EN_R パラメータを「1」に変更します。
2. TRCV_C の場合、CONT パラメータを「1」に変更します。
3. TSEND_C の場合、REQ パラメータを「1」に変更します。
4. TSEND_C の場合、CONT パラメータを「1」に変更します。

接続終了の手順
RUN モードで通信接続を終了するには、次の手順を実行します。
1. TSEND_C の場合、CONT パラメータを「0」に変更します。
2. TSEND_C の場合、REQ パラメータを「0」に変更します。
3. TRCV_C の場合、CONT パラメータを「0」に変更します。
4. TRCV_C の場合、EN_R パラメータを「0」に変更します。

CPU 1 の動作
入力パラメータ REQ 「start」()がシグナル状態「TRUE」を返すと、「TSEND_C」命令は開始されます。入力パラメータ CONT 「comControl」()がシグナル状態「TRUE」を提供すると、「TSEND_C」命令は CPU 1 と CPU 2 間に通信接続を作成します。これを行うために、接続データが入力パラメータ CONNECT (またはデータブロック「SLI_cDB_Connector」)によってリトリーブされます。
複数の呼び出しの場合、「TSEND_C」命令は、入力パラメータ DATA 「sendData」()で検出されたデータレコードを転送します。成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE 「#statDone」()と値が「0000」の出力パラメータ STATUS「status」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功ステータス DONE 「#statDone」()をタグ「done」に保存します。
データレコードを CPU 2 へ転送した後、通信接続はモニタされ続けます(ステータス「7004」)。出力パラメータ ERROR 「error」()またはタグ「memErrStatus」は、例の処理がエ
ラーなしで行われていることを示します。

3010

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

CPU 2 の動作
入力パラメータ EN_R 「start」()がシグナル状態「TRUE」を返すと、「TRCV_C」命令は開始されます。入力パラメータ CONT 「comControl」()がシグナル状態「TRUE」を提供すると、「TRCV_C」命令は CPU 2 と CPU 1 間に通信接続を作成します。これを行うために、接続データが入力パラメータ CONNECT (またはデータブロック「SLI_cDB_Connector」)によってリトリーブされます。
複数の呼び出しの場合、「TRCV_C」命令は、転送されたデータレコードを受信します。そのデータレコードは、パラメータ DATA 「rcvData」()に記録されます。成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE 「done」()と値が「0000」の出力パラメータ STATUS 「status」()によって示されます。実際に転送されたデータレコー
ドの BYTE 単位の長さは、出力パラメータ RCVD_LEN 「#statRcvLen」()で示されます。この値は、成功ステータスの間だけ表示されます。この後、「0」が検出されます。
出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、以下を実行します。
• 「#statRcvLen」の値を「rcvLen」に保存します。
• 「#statDone」の値を「done」に保存します。
• 「#status」の値を「memErrStatus」に保存します。
データレコードが CPU 2 によって受信された後、通信接続はモニタされ続けます(ステータス「7006」)。出力パラメータ ERROR 「error」()またはタグ「memErrStatus」は、例の処理がエラーなしで行われていることを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3011

通信
6.2 オープンユーザーコミュニケーション

プログラムコード
追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

6.2.5

TMAIL_C:電子メールの転送

6.2.5.1

TMAIL_C の説明

説明「TMAIL_C」命令を使用し、S7-1500 CPU または V4.0 よりも新しい S7-1200、通信モジュール(CM)、または通信プロセッサ(CP)のイーサネットインターフェースを経由して電子メールを送信します。
この命令は、ハードウェアが構成済みであり、かつネットワークインフラがメールサーバ
ーへの通信接続を許可している場合にのみ使用可能です。
以下のパラメータを使用し、電子メールの内容および通信データを定義します。
• パラメータ TO_S および CC を使用して、宛先のアドレスを定義します。
• パラメータ SUBJECT および TEXT を使用して、電子メールの内容を定義します。
• ATTACHMENT および ATTACHMENT_NAME パラメータで VARIANT ポインタを使用して、添付ファイルを定義できます。

3012

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション• MAIL_ADDR_PARAM パラメータでシステムデータタイプ TMail_V4、TMail_V6 、またはTMail_FQDN を使用して、通信データを定義し、メールサーバーのアドレス指定および認証を実行します。
– S7-1500 CPU のインターフェースを使用している場合、システムデータタイプ
TMail_V4 を使用する必要があります。この場合、電子メールは SMTP によってのみ送信可能です。
– CM/CP のインターフェースを使用している場合、任意のシステムデータタイプを使用できます。この場合、電子メールも SMTPS 経由で送信することができます。
• 電子メールの送信は、REQ パラメータの「0」から「1」へのエッジの切り替えで開始します。
• ジョブステータスは、出力パラメータ「BUSY」、「DONE」、「ERROR」、および「STATUS」で示されます。
「TMAIL_C」命令では、SMS を直接送信することはできません。電子メールがメールサー
バーによって SMS として転送されるかどうかは、通信プロバイダに依存します。
注記
送信する電子メールの数
PLC を使用して同時に複数の電子メールを送信できます。CP 1243-8 IRC または CP 154x-1を使用するときは、CP ごとに 1 つの電子メールのみの送信が可能です。2 つの CP を使用するときは、2 つの電子メールの同時送信が可能です。

命令の操作「TMAIL_C」命令は、非同期で動作します。つまり、複数の呼び出しにわたって実行されます。「TMAIL_C」命令を呼び出すとき、インスタンスを指定する必要があります。
以下の場合、メールサーバへの接続が切断されます。
• 「TMAIL_C」がアクティブであるにもかかわらず、CPU が STOP に切り替わった場合。
• 産業用イーサネットバスで通信異常が発生した場合。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3013

通信
6.2 オープンユーザーコミュニケーション
この場合、電子メールの転送が割り込みされ、宛先に到達しません。命令が正常に実行され、電子メールが送信された場合も、通信が中止されます。
通知
ユーザープログラムの変更「TMAIL_C」の呼び出しに直接影響を与える部分
使用しているユーザープログラムでは、のみを変更できます。
• CPU が「STOP」モードの場合。
• 電子メールが送信されない場合(REQ = 0 および BUSY = 0)。

これは、特に、「TMAIL_C」呼び出しまたは「TMAIL_C」インスタンスの呼び出しを含むプログラムブロックの削除および置き換えに関連します。
この制限を無視すると、接続リソースが占有される場合があります。産業用イーサネット
経由で、オートメーションシステムの TCP/IP 通信ファンクションが未定義ステータスに変更されることがあります。
この切り替えが転送された後、CPU のウォームリスタートまたはコールドリスタートが必要になります。

データの整合性
TO_S、CC、SUBJECT、TEXT、ATTACHMENT、および MAIL_ADDR_PARAM パラメータは、「TMAIL_C」命令の実行中にこの命令によって適用されます。これは、これらのパラメー
タがジョブの完了後(BUSY = 0)以外には変更できないことを意味します。

SMTP 認証
認証は、ID の確認手順、たとえばパスワードのクエリなどで、これを参照します。
S7-1500 CPU インターフェースを使用している場合、命令「TMAIL_C」は、ほとんどのメールサーバーによって要求されている SMTP 認証手順 AUTH-LOGIN をサポートしています。

3014

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
お客様のメールサーバーの認証手順については、メールサーバーのマニュアルか、お客様のインターネットサービスプロバイダの Web サイトを参照してください。
• AUTH-LOGIN 認証手順を使用する場合、その前に、「TMAIL_C」命令は、メールサーバ
ーへのログオンに使用するユーザー名を要求します。このユーザー名は、メールサー
バーでユーザーがメールアカウントをセットアップするときに使用するユーザー名に対応します。このユーザー名は、UserName パラメータによって、パラメータ
MAIL_ADDR_PARAM の構造体に転送されます。
MAIL_ADDR_PARAM パラメータでユーザー名が指定されていない場合、AUTH-LOGIN 認
証手続きは使用されません。電子メールは、認証なしで送信されます。
• ログオンするために、「TMAIL_C」命令は、関連するパスワードを要求します。このパスワードは、お使いのメールアカウントを設定したときに指定したパスワードに対応します。パスワードは PassWord パラメータによって、パラメータ MAIL_ADDR_PARAM の構造体に転送されます。

パラメータ
次の表に、「TMAIL_C」命令のパラメータを示します。
パラメータ

宣言

データ
タイプ

メモリ領域 説明

REQ

Input

BOOL

I、Q、M、

制御パラメータ REQUEST:信号立ち上

D、L、T、

がりエッジで電子メールの送信を有効

C、または定 にします。
数
TO_S (ペーInput

STRINGジ 3028)

D、L、また 宛先アドレスは定数

最大長 240 文字(バイト)の STRING。
電子メールアドレス書式については、
パラメータの説明に記載されている例
を参照してください。

CC (ペーInput

STRINGジ 3028)

D、L、また CC 宛先アドレス(オプション)は定数

最大長 240 文字(バイト)の STRING。
TO_S パラメータと同じ電子メールア
ドレス書式です。ここに空の文字列が割り当てられている場合、電子メール
は CC 受信者には送信されません。

SUBJECT

Input

STRING

D、L、また 電子メールの件名
は定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

最大長 240 文字(バイト)の STRING。

3015

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データ
タイプ

メモリ領域 説明

TEXT

Input

STRING

D、L、また 電子メールのテキスト(オプション)は定数

最大長 240 文字(バイト)の STRING。
このパラメータに空の文字列が割り当てられている場合、電子メールはテキストなしで送信されます。

ATTACHMEN Input

VARIAN

T

T

D

電子メールの添付ファイル(オプション)
最大長 64KB のバイト/ワード/ダブルワ
ードフィールド(ArrayOfByte、
ArrayOfWord、または ArrayOfDWord)の参照。値が割り当てられていない場
合、電子メールは添付ファイルなしで送信されます。

ATTACHMEN Input

STRING

T_NAME

D、L、また 電子メールの添付ファイル名(オプショは定数ン)
添付ファイル名を定義する最大長 50
文字の文字列の参照。このパラメータに空の文字列が割り当てられている場
合、電子メールの添付ファイルは、電子メール受信プログラムによって割り当てられたファイル名で受信されます。このため、定義されたファイル名を使用することをお奨めします。

MAIL_ADDR

Input_PARAM (ペVARIAN

D

T

電子メールサーバーの接続パラメータ
およびアドレスージ 3029)

接続パラメータを定義するには、構造体 TMail_V4、TMail_V6 、またはTMail_FQDN を使用します(パラメータの説明を参照)。

DONE (ページ 3043)

Output

BOOL

I、Q、M、STATUS パラメータ

D、L• DONE = 0:ジョブがまだ開始されていないか、または実行中です。
• DONE = 1:ジョブはエラーなく実行されました。

3016

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データ
タイプ

メモリ領域 説明BUSY (ペーOutput

BOOL

I、Q、M、STATUS パラメータ

D、L• BUSY = 0:「TMAIL_C」の処理が終了しました

ジ 3043)• BUSY = 1:電子メールの送信がまだ完了していません。
ERROR (ペー Output

BOOL

ジ 3043)

I、Q、M、STATUS パラメータ

D、L• ERROR = 0:エラーは発生しませんでした。
• ERROR = 1:処理中にエラーが発生しました。STATUS が、エラーのタイプに関する詳細情報を提供します。

STATUS (ペOutputージ 3044)

WORD

I、Q、M、STATUS パラメータ

D、L「TMAIL_C」命令の戻り値またはエラー
情報(パラメータの説明を参照)。

「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、
注記
オプションのパラメータ
オプションのパラメータ CC、TEXT、および ATTACHMENT は、対応するパラメータが長さ> 0 の文字列を含む場合のみ電子メールと一緒に送信されます。

例
TMAIL_C 命令による電子メールの送信の例は、次のリンクを参照してください:例: TMAIL_C
による電子メールの送信 (ページ 3050)

下記も参照
同期命令と非同期命令の相違 (ページ 29)
説明 TMAIL_C (バージョン V4.0 以降) (ページ 3018)
バージョン V5.0 以降の TMAIL_C の説明 (ページ 3020)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3017

通信
6.2 オープンユーザーコミュニケーション
6.2.5.2

説明 TMAIL_C (バージョン V4.0 以降)

概要
バージョン V4.0 以降の命令 TMAIL_C について説明します。この説明にはすべての詳細は含まれず、V4.0 バージョンより前の命令との相違を説明します。
必要な証明書の処理についてもここでは説明しません。

Secure Communication を使用する CP
以下の CP は、バージョン V4.0 以降の命令 TMAIL_C によってセキュアな電子メールを送信します。
• CP 1543‑1 ‑ V2.0
• CP 1545‑1• CP 1542SP‑1 IRC ‑ V1.0, CP 1543SP‑1 ‑ V1.0
• CP 1243‑1 ‑ V2.1
• CP 1242‑7 GPRS V2 ‑ V2.1
• CP 1243‑7 LTE ‑ V2.1
• CP 1243‑8 IRC ‑ V2.1
以下のシステムデータタイプのパラメータ MAIL_ADDR_PARAM で、送信されるデータ、および電子メールサーバーの TCP ポートを設定します。
TMAIL_V4_SEC, TMAIL_V6_SEC, TMAIL_QDN_SEC
注記
TMAIL_C バージョン V4.0 より前のバージョンとの互換性
互換性の理由から、以下の通り既存のシステムデータタイプ TMAIL_V4、TMAIL_V6、および TMAIL_FQDN も使用できます。
• CPU:TMAIL_V4, TMAIL_FQDN• 上記のすべての CP および CP 1542SP‑1:
TMAIL_V4, TMAIL_V6, TMAIL_FQDN

3018

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
CP のルール
次のルールに従います。
• CPU の TMAIL_C インスタンスに対して、電子メールクライアントとして 1 つの CP しか使用できません。
• CP(電子メールクライアント)の電子メールサーバーは、IP ネットワークからアクセス可
能であることが必要です。
• 電子メールサーバーへその完全修飾ドメイン名によって到達する場合、CP で構成される
DNS サーバーも IP ネットワークで到達可能であること。

パラメータ
パラメータ

宣言

データ
タイプ

メモリ領域 説明Input

VARIAND...
MAIL_ADDR_PARAM (ページ 3034)

T

送信プロセスに必要なデータ(接続パラ
メータ、電子メールサーバーのアドレス、および使用される TCP ポートを含めて)このために、以下のシステムデータタ
イプの 1 つを選択します。
• TMail_V4_SEC• TMail_V6_SEC• TMail_QDN_SEC...

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3019

通信
6.2 オープンユーザーコミュニケーション
エラーが発生したときの診断オプション
エラーが発生したときには、以下の 2 つの診断オプションがあります。
• STATUS パラメータの評価
V4.0 より前のバージョンの命令の場合と同じ値が生じることがあります。
値 W#16#8015 のみが拡張を受け取ります。「」を参照 STATUS パラメータ (ページ 3044)• TMAIL_C のインスタンスデータでの MS_STATUS タグの評価。このタグは、TMAIL_C のバージョン V4.0 で追加されました。これには、プロトコルコード、およびこれに対応するテキスト記述の両方が含まれますプロトコルコードは、RFC 5321 "Simple Mail
Transfer Protocol"で定義されています。関連するテキスト記述も、対応する拡張またはその他のメディアとして、ここに記載されています。
MS_STATUS 内の診断情報の例:– 550 サブミットする前に SMTP 認証が必要です– 550 StartTLS が必要です– 550 要求された操作は実行されません– 550 有効なアドレスが必要です。

6.2.5.3

バージョン V5.0 以降の TMAIL_C の説明

概要
以下では、バージョン V5.0 以降の命令 TMAIL_C について説明します。この説明にはすべての詳細は含まれず、V5.0 バージョンより前の命令との相違のみを説明します。

説明V5.0 以降の TMAIL_C 命令では、ATTACHMENT パラメータがサポートするデータタイプが増えています。
V5.0 以降では TMAIL_C 命令を使用して、S7-1500 の内蔵イーサネットポート経由でのSecure Communication による電子メール送信も可能です。これは、S7-1500 CPU のファームウェアバージョンが V2.5 以上である場合のみ行えます。送信プロセスに必要なデー
タは、MAIL_ADDR_PARAM パラメータのシステムデータタイプ TMAIL_V4_SEC またはTMAIL_QDN_SEC のいずれかで定義されます。
システムデータタイプ TMAIL_V4 を使用する場合、電子メールは S7-1500 CPU の内蔵イー
サネットポート経由で、セキュアではない状態でしか送信できません。

3020

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
S7-1500 CPU の内蔵イーサネットポート経由での電子メール送信では、システムデータタ
イプ TMAIL_FQDN および TMAIL_V6 はサポートされていません。
注記
S7-1500 ソフトウェアコントローラ
ID が 59 よりも大きな S7-1500 ソフトウェアコントローラでは、システムデータタイプ
TMAIL_V4_SEC または TMAIL_QDN_SEC は使用できません。

ATTACHMENT パラメータ
V5.0 以降の TMAIL_C 命令では、ATTACHMENT パラメータが次のデータタイプもサポートします。CHAR ARRAY、LWORD ARRAY (S7-1500 CPU のみ)、および STRING(注:ATTACHMENT パラメータに空文字が格納されていると、電子メールが添付なしで送信されます)。
これは、STATUS の値 W#16#8016 にも影響します。バージョン V5.0 以降の命令では、データタイプ CHAR ARRAY、LWORD ARRAY (S7-1500 CPU のみ)、および STRING 使用時にはこの値が出力されません。

STATUS パラメータのその他の戻り値バージョン V5.0 の TMAIL_C 命令では、STATUS (ページ 3044)パラメータに以下の戻り値も出力されます。
STATUS(W#16#...)

説明

8009

内部ファンクショ 内部ファンクションがエラーを返しました。詳細は、インスタンス DB の
ンエラー

注記

SFB_STATUS パラメータに出力されています。出力される可能性がある値について、以下で説明します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3021

通信
6.2 オープンユーザーコミュニケーション
次の表に、インスタンス DB の SFB_STATUS パラメータに出力される可能性がある値を示
します。
パラメータ

説明

SFB_STATUS(W#16#...)
8080

T_MAIL サブインスタンスの Status パラメータを評価します。
• 8080_04xx:SMTP サーバーから一時的な否定応答が返されました。再試行してください。
詳細は、RFC 5321 を参照してください。
• 8080_05xx:SMTP サーバーから永続的な否定応答が返されました。詳細は、RFC 5321 を参照してください。

8085

接続 ID (ID パラメータ)は、設定した接続によって既に使用されています。

8086

ID パラメータが有効範囲外です。

8087

最大接続数に達しました。これ以上の接続は行えません。

8090

ウォッチドッグタイムはゼロよりも大きくなければなりません。

8092

TO_S および CC パラメータが空であるか、サブパラメータ From が空、または不完全です。

8093

MAIL_ADDR_PARAM パラメータが、接続をセキュリティで保護された接続にアップグレー
ドすることを要求していますが、メールサーバーが STARTTLS コマンドをサポートしていま
せん。

8095

メールサーバーからの応答が無効です。メールサーバーが RFC に準拠していない可能性が
あります。

809A

MAIL_ADDR_PARAM パラメータの SDT 構造体が、標準搭載インターフェースではサポートされていません。

809B

MAIL_ADDR_PARAM の SDT 内のインターフェース ID が無効です。

80A1

指定された接続またはリモートポートが既に使用中です。

80A3

ID が、ユーザープログラムで作成された接続によって使用されています。

80A4

接続のリモートエンドポイントの IP アドレスが無効であるか、またはローカルパートナーのIP アドレスと同じです。

80A7

通信エラー:TMAIL_C の完了前に TDISCON を実行しました。

80B7

リモートポートが 0 であるか、パートナーエンドポイントの IP アドレスが 0.0.0.0 に設定されています。

80C33022

CPU 内のリソースが少なすぎます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

説明

SFB_STATUS(W#16#...)
80C4

一時的な通信エラー:• 現時点では、接続を確立できません。
• 接続パスのファイアウォールが必要なポートのために開いていないため、接続を確立できません。
• インターフェースが現在、新しいパラメータを受信中です。
• 設定した接続が現在 TDISCON 命令によって削除されています。

80C5

メールサーバーが接続の確立を拒否している、接続を終了した、または能動的に接続を切断しています。

80C6

接続パートナーに到達できません(ネットワークエラー)。

80C7

実行がタイムアウトしました。

80C8

既存の接続を再確立しようとしています。

80C9

接続パートナーの検証に失敗しました。メールサーバーが、Parameter MailServerAddress の定義済みパートナーに対応していません。

80CE

ローカルインターフェースの IP アドレスが 0.0.0.0 です。

80D0

DNS の使用を試行する際に、MailServerAddress パラメータに空文字列が検出されました。

80D1

MailServerAddress パラメータが完全修飾ドメイン名ではありません。終端のドットが欠落している可能性があります。

80D2

DNS サーバーアドレスが設定されていません。

80D3

完全修飾ドメイン名を解決できませんでした。考えられる原因:• DNS-サーバーがシャットダウンされている、またはリモートポートに到達できないなどの理由で、DNS サーバーに到達できません。
• DNS-サーバーとの通信中にエラーが発生しました。
• DNS サーバーが有効な DNS 応答を返しましたが、その応答に IPv4 アドレスが含まれていませんでした。

80E0

メッセージにエラーが含まれているため、メールサーバーとの通信に失敗しました。考えられる原因:• メッセージ認証コードが不正である。
• メッセージのデコードに失敗した。
• メッセージの解凍中にエラーが発生した。
• 内部的な容量オーバーフローが発生した。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3023

通信
6.2 オープンユーザーコミュニケーション
パラメータ

説明

SFB_STATUS(W#16#...)
80E1

ハンドシェイク中のエラー。考えられる原因:• ユーザーによる中止• セキュリティが不足しています• ネゴシエーションの更新はサポートされていません• SSL/TLS のバージョンがサポートされていない。
• 複合エラーが発生した。

80E2サポートされていない、または無効な証明書考えられる原因:関連モジュールの時刻が設定されていないか、モジュールが同期されていません。
例:モジュールの日付の初期設定が 2012 年 1 月 1 日であり、この日付がコミッショニング中に設定されませんでした。その証明書の有効期間は 2016 年 8 月 20 日に始まり、2024 年 8
月 20 日に終わります。この場合、モジュールの日付は証明書の有効期間外です; その証明書はこのモジュールに対して無効です。

80E3

メールサーバー証明書が破棄されています。

80E4

メールサーバー証明書に対して、有効な認証局が見つかりません。

80E5

メールサーバー証明書の期限が切れています。

80E6

Transport-Layer-Security プロトコル内での整合性エラー。

80E7

メールサーバー証明書の拡張子がサポートされていません。

80E9

サーバー証明書のない TLS サーバーはサポートされていません。

接続パラメータ InterfaceID および ID の拡張された値の範囲
S7-1500 CPU の内蔵ポートを経由してセキュリティで保護された接続によって電子メールを送信する際には、SDT TMAIL_V4_SEC および TMAIL_QDN_SEC 内の接続パラメータ
InterfaceID および ID に対して以下が適用されます。
パラメータ

説明

InterfaceID

インターフェースのハードウェア識別子。値の範囲:• 0 (新規):オペレーティングシステム自身が適切な内蔵ポートを選択します。
• 使用される内蔵ポートのハードウェア識別子。

ID

接続への参照。値の範囲:• 0 (新規):オペレーティングシステムが内部の範囲から空いている接続 ID を選択します。
• 1～4095:使用される接続 ID

3024

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
6.2.5.4

バージョン V6.0 以降の TMAIL_C の説明

概要
以下では、バージョン V6.0 以降の命令 TMAIL_C について説明します。この説明にはすべての詳細は含まれず、V6.0 バージョンより前の命令との相違を説明します。
注記
S7-1200 CPU
バージョン V6.0 以降の命令では、セクション「バージョン V5.0 以降の TMAIL_C の説明」に記載されたすべての拡張が S7-1200 CPU にも適用されます。

概要
TMAIL_C 命令のバージョン V6.0 以降では、CPU の標準搭載インターフェース経由で、SIMATIC メモリカード上のデータログ、レシピ、およびユーザーファイルを電子メールの添付として送信できます。SIMATIC メモリカードがない場合は、S7-1200 CPU の CPU 内部
ロードメモリのファイルを使用できます。
ATTACHMENT パラメータで TMail_FileReference システムデータタイプを使用します。
SDT TMail_FileReference は、V16.0 以降の TIA ポータル、ファームウェアバージョン V4.4以降の S7-1200 CPU、およびファームウェアバージョン V2.8 以降の S7-1500 CPU で使用できます。
MAIL_ADDR_PARAM で使用可能な構造体内では、WatchDogTime パラメータで値 null も使用できるようになりました。
TMail_FileReference SDT 使用時には、添付ファイル名が自動的に ATTACHMENT_NAME パ
ラメータに割り当てられます。
無効なパスおよびファイル名を通知するエラー情報も導入されました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3025

通信
6.2 オープンユーザーコミュニケーション
TMail_FileReference システムデータタイプの構造体
パラメー
タ

データタ 開始値
イプ

DirectoryP String[2

"/

ath

DataLogs/

54]

説明添付するファイルのパス"
FileName

String[2"datalog.c 拡張子あり、または拡張子なしのファイル名

54]

sv"

送信されるファイルのサイズは、TMAIL_C 命令では制限されません。

TMail_FileReference SDT を使用したファイルのアドレス指定のルール
最初に、DirectoryPath パラメータおよび FileName の両方に適用されるルールについて説明します。これらのルールに違反すると、STATUS パラメータにエラー情報が出力されます。
• いずれのパラメータも、空の文字列にすることはできません。
• ASCII 制御文字(0x00～0x1F)は使用できません。
• 次の文字は使用できません。
– <
– >
– :
– "
– / (この文字は、DirectoryPath パラメータ内で区切り記号として使用できます。)
– \
– |
– ?
– *
• このパラメータは、空白文字またはハイフンでは終了できません。

TMail_FileReference SDT の DirectoryPath パラメータ
必要なパスを SDT の DirectoryPath パラメータに入力する際には、PLC のファームウェア
ロジックからルートディレクトリを外挿できますが、これについて認識する必要はありません。ディレクトリを正しくアドレス指定するには、DirectoryPath パラメータが「/」で開始および終了する必要があります。このため、パスはすべて「/abcdef/」の形式になります。

3026

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ルートディレクトリよりも 1 つ下の階層のディレクトリにアクセスすることも可能です。
この場合、パスは「/abc/def/」の形式となります。「/」は新しいディレクトリを意味します。ルートディレクトリを含んだ最大階層数は 8 です。
ルートディレクトリ内のファイルをアドレス指定する場合は、DirectoryPath 内に「/」を 1
つ配置します。
前のセクションに記載したルールに加えて、相対パスを使用できないことにも注意が必要です。これにより、「../」は無効なパス名となります。さらに、現在のディレクトリを示す
ためのドットも使用できません。たとえば、「./」は使用できません。

TMail_FileReference SDT の Filename パラメータ指定されたルールに加えて、PLC のオペレーティングシステムによって、ファイル名が 60
文字に制限されることにもご注意ください。60 以上の文字を含むファイル名を入力しようとすると、エラーが発生して TMAIL_C 命令が中止されます。
ファイル拡張子は使用できますが、必須ではありません。

パラメータ WatchDogTime
MAIL_ADDR_PARAM パラメータで使用可能な構造体はすべて WatchDogTime パラメータを含んでいます。このパラメータを使用して、送信処理の最大実行時間を定義します。
TMAIL_C の命令バージョン V6.0 以降では、このパラメータに値 null も割り当てられます。
値が null の場合、TMAIL_C の実行に対して時間のモニタリングが行われないことを意味します。
命令バージョン V6.0 以降では、インスタンス DB の SFB_STATUS パラメータで値
W#16#8090 は発生しません。

パラメータ ATTACHMENT_NAME
ATTACHMENT_NAME パラメータでは、受信者が電子メールを受信した際に表示される電子メール添付の名前を定義できます。
TMail_FileReference を使用すると、FileName パラメータが自動的に ATTACHMENT_NAME
パラメータに割り当てられます。このため、この場合には値を ATTACHMENT_NAME パラ
メータに割り当ててはなりません。値を割り当てると、TMAIL_C 命令がエラーを生成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3027

通信
6.2 オープンユーザーコミュニケーション
新しいエラーコード
TMAIL_C のバージョン V6.0 以降では、TMAIL_C の STATUS パラメータ、またはインスタ
ンス DB の SFB_STATUS パラメータに以下の戻り値も用意されています。

TMAIL_C の STATUS パラメータ、またはインスタン 説明
ス DB の SFB_STATUS パラメータ(W#16#...)
8088

ファイルが存在しないか、現在使用できません。

8089

既に同時に開くことが可能なファイルの最大数(S7-1500 CPU では 59、S7-1200 CPU では 26)に達しているため、ファイルを開けません。

808A

DirectoryPath パラメータに無効な文字列が含まれているか、パラメータが空です。

808B

FileName パラメータに無効な文字列が含まれているか、パラメータが空です。

808C

TMail_FileReference を使用している場合は、
ATTACHMENT_NAME パラメータが空であることが必要です。

6.2.5.5

TO_S および CC パラメータ

説明
TO_S および CC パラメータは、たとえば次の内容を持つ文字列です。
• <wenna@mydomain.com>, <ruby@mydomain.com>• <admin@mydomain.com>, <judy@mydomain.com>

3028

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータの入力時には、次のルールに注意してください。
• バージョンが V6.0 以前(S7-1500)、または V7.0 以前(S7-1200)の OUC では、各アドレ
スの前に空白文字と「<」を入力することを推奨します。他のすべてのアプリケーショ
ンバージョンでは、「<」はオプションです。
• バージョンが V6.0 以前(S7-1500)、または V7.0 以前(S7-1200)の OUC では、各アドレ
スの後に空白文字と「>」を入力することを推奨します。他のすべてのアプリケーショ
ンバージョンでは、「>」はオプションです。
• TO_S および CC では、アドレスの間にカンマを入力する必要があります。
ランタイムおよびメモリ領域の理由で、「TMAIL_C」命令はパラメータ TO_S または CC の構文チェックを行いません。

6.2.5.6

MAIL_ADDR_PARAM パラメータ

説明
MAIL_ADDR_PARAM パラメータでは、構造体 TMail_V4、TMail_V6、または Tmail_FQDN
で電子メール送信のための接続を定義し、電子メールサーバーのアドレスおよびログイン
情報を保存します。
MAIL_ADDR_PARAM パラメータで使用する構造体は、電子メールサーバをアドレス指定する形式によって異なります。
• TMail_V4:IP アドレス(IPv4)によるアドレス指定。
• TMail_V6:IP アドレス(IPv6)によるアドレス指定。
• TMail_FQDN:完全修飾ドメイン名(FQDN)によるアドレス指定。
どの構造体が使用可能であるかは、InterfaceId パラメータでアドレス指定されたインター
フェースによって異なります。
• 内部インターフェースで「TMAIL_C」命令を使用する場合、TMail_V4 構造体をMAIL_ADDR_PARAM パラメータで使用する必要があります。
• 通信プロセッサ(CP)または通信モジュール(CM)を使用している場合は、これら 3 つす
べてのアドレス指定方法(IPv4、IPv6、および FQDN)が使用可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3029

通信
6.2 オープンユーザーコミュニケーション

表 6-1

TMail_V4:IP アドレス(IPv4)によるメールサーバーのアドレス指定

パラメータ

データタイプ 説明

TMail_V4

StructInterfaceId

LADDR

インターフェースのハードウェア識別子

ID

CONN_OUC

接続 ID

ConnectionType

BYTE

接続タイプ。IPv4 の接続タイプとして 16#20 を選択します。

ActiveEstablished BOOL

ステータスビット。接続が確立されると「1」にセットされます。

CertIndex

BYTE• =0:SMTP を使用(Simple Mail Transfer
Protocol)。電子メールを S7-1500 CPU のインターフェース経由で送信する場合は、SMTP を使用する必要があります。
• ≠0:SMTPS を使用すると、CP/CM との接続が確立前にセキュアになります。

WatchDogTime

TIME

実行ウォッチドッグ。このパラメータを使用して、送信処理の最大実行時間を定義します。
注記:接続が遅い場合、接続の確立により時間がかかります(約 1 分)。WATCH_DOG_TIME パラメータを指定した場合、接続を確立するために必要な時間を考慮してください。
指定された時間が経過すると、接続が終了します。

MailServerAddres IP_V4

メールサーバーの IP アドレス。次の形式の IPv4:s

XXX.XXX.XXX.XXX (10 進数)。
例: 192.142.131.237。

UserName

STRING[254]メールサーバーのログイン名

PassWord

STRING[254]メールサーバーのパスワード

From

EMAIL_ADDR 以下の 2 つの STRING パラメータを使用して定義される電子メール送信元アドレス。例:「myname@mymailserver.com」。

3030

LocalPartPlusAt STRING[64]送信元アドレスの@記号を含むローカル部分。例:

Sign「myname@」FullQualifiedDo STRING[254]メールサーバーの Fully Qualified Domain Name

mainName(FQDN と略記されます)。例: 「mymailserver.com」

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
表 6-2

TMail_V6:IP アドレス(IPv6)によるメールサーバーのアドレス指定

パラメータ

データタイプ 説明

TMail_V6

StructInterfaceId

LADDR

インターフェースのハードウェア識別子

ID

CONN_OUC

接続 ID

ConnectionType

BYTE

接続タイプ。IPv6 の接続タイプとして 16#21 を選択します。

ActiveEstablished BOOL

ステータスビット。接続が確立されると「1」にセットされます。

CertIndex

BYTE• =0:SMTP を使用(Simple Mail Transfer Protocol)。
電子メールを S7-1500 CPU のインターフェース
経由で送信する場合は、SMTP を使用する必要があります。
• ≠0:SMTPS を使用すると、CP/CM との接続が確立前にセキュアになります。CertIndex パラメータを使用し、使用する証明書を指定します([プロジェクトナビゲーション|グローバルセキュリティ設定|証明書マネージャ]を参照)。

WatchDogTime

TIME

実行ウォッチドッグ。このパラメータを使用して、送信処理の最大実行時間を定義します。
注記:接続が遅い場合、接続の確立により時間がかかります(約 1 分)。WATCH_DOG_TIME パラメータを指定した場合、接続を確立するために必要な時間を考慮してください。
指定された時間が経過すると、接続が終了します。

MailServerAddres IP_V6

次の形式のメールサーバーの IP アドレス(IPv6):s

XXXX.XXXX.XXXX.XXXX.XXXX.XXXX.XXXX.XXXX(16 進数)。
アドレスは、それぞれ 2 バイトの 8 つのブロックに分けられます(合計で 16 バイト)。
例:2001:db8:1f11:08d3:290:27ff:0370:2093

UserName

STRING[254] メールサーバーのログイン名

PassWord

STRING[254] メールサーバーのパスワード

From

EMAIL_ADDR 以下の 2 つの STRING パラメータを使用して定義される電子メール送信元アドレス。例:「myname@mymailserver.com」。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3031

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明

LocalPartPlusAt STRING[64]送信元アドレスの@記号を含むローカル部分。例:

Sign「myname@」FullQualifiedDo STRING[254] メールサーバーの Fully Qualified Domain Name
mainName

3032(FQDN と略記されます)。例: 「mymailserver.com」

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
表 6-3

TMail_FQDN:FQDN によるメールサーバーのアドレス指定

パラメータ

データタイプ 説明

TMail_FQDNStructInterfaceId

LADDR

インターフェースのハードウェア識別子

ID

CONN_OUC

接続 ID

ConnectionType

BYTE

接続タイプ。FQDN の接続タイプとして 16#22 を選択します。

ActiveEstablished BOOL

ステータスビット。接続が確立されると「1」にセットされます。

CertIndex

BYTE• =0:SMTP を使用(Simple Mail Transfer Protocol)。
電子メールを S7-1500 CPU のインターフェース
経由で送信する場合は、SMTP を使用する必要があります。
• ≠0:SMTPS を使用すると、CP/CM との接続が確立前にセキュアになります。CertIndex パラメータを使用し、使用する証明書を指定します([プロジェクトナビゲーション|グローバルセキュリティ設定|証明書マネージャ]を参照)。

WatchDogTime

TIME

実行ウォッチドッグ。このパラメータを使用して、送信処理の最大実行時間を定義します。
注記:接続が遅い場合、接続の確立により時間がかかります(約 1 分)。WATCH_DOG_TIME パラメータを指定した場合、接続を確立するために必要な時間を考慮してください。
指定された時間が経過すると、接続が終了します。

MailServerAddres STRING[254] メールサーバーの FQDN (Fully Qualified DomainName)。そのメールサーバーは、完全修飾ドメインs名を使用してアドレス指定されます。
例: 「www.mymailserver.com.」
UserName

STRING[254] メールサーバーのログイン名

PassWord

STRING[254] メールサーバーのパスワード

From

Struct

以下の 2 つの STRING パラメータを使用して定義される電子メール送信元アドレス。例:「myname@mymailserver.com」。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3033

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明

LocalPartPlusAt STRING[64]送信元アドレスの@記号を含むローカル部分。例:

Sign「myname@」FullQualifiedDo STRING[254] メールサーバーの Fully Qualified Domain Name
mainName

6.2.5.7(FQDN と略記されます)。例: 「mymailserver.com」

バージョン 4.0 以降の TMAIL_C のパラメータ MAIL_ADDR_PARAM

説明
MAIL_ADDR_PARAM パラメータを使用して、送信プロセスに必要なデータ、たとえば、接続パラメータ、電子メールサーバーのアドレス、および使用される TCP ポートを指定します。
電子メールサーバーがアドレス指定される形式に応じて、MAIL_ADDR_PARAM パラメータで以下の構造体の 1 つを使用します。
• TMail_V4_SEC:IPv4 形式の IP アドレスによるアドレス指定• TMail_V6_SEC:IPv6 形式の IP アドレスによるアドレス指定• TMail_QDN_SEC:完全修飾ホスト名(FQDN)によるアドレス指定

3034

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
TMail_V4_SEC:IPv4 形式の IP アドレスによるメールサーバーのアドレス指定
パラメータ

データタイプ 説明

TMail_V4_SEC

StructTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3035

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明

InterfaceId

LADDR

イーサネットインターフェースのハー
ドウェア識別子ID

CONN_OUC

接続 ID

ConnectionType

BYTE

接続タイプ。IPv4 の接続タイプとして
16#20 を選択します。

ActiveEstablishment

BOOL

アクティブ/パッシブ接続の確立。そのCP は常に SMTP クライアントであるため、このパラメータは「1」にセットする必要があります。

WatchDogTime

TIME

実行ウォッチドッグ。このパラメータを使用して、送信処理の最大実行時間を定義します。
注記:接続が遅い場合、接続の確立によ
り時間がかかります(約 1 分)。
WatchDogTime パラメータを指定する
ときは、接続を確立するために必要な時間を考慮することを忘れないでください。
指定された時間が経過すると、接続が終了します。

MailServerAddress

IP_V4

IPv4 形式に固有のメールサーバーの IP
アドレス: XXX.XXX.XXX.XXX (小数位
置)。
例: 192.142.131.237。

UserName

STRING[254]ユーザー名。
これは、ユーザーが電子メール受信ト
レイにアクセスするとき、自身を電子メール受信トレイの所有者として電子
メールプロバイダに証明するために必要です。

PassWord

STRING[254]ユーザーパスワード
これは、ユーザーが電子メール受信ト
レイにアクセスするとき、自身を電子メール受信トレイの所有者として電子

3036

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明
メールプロバイダに証明するために必
要です。

From

EMAIL_ADDR 以下の 2 つの STRING パラメータを使用して定義される電子メール送信元アドレス。例:「myname@mymailserver.com」。

LocalPartPlusAtSign

STRING[64]送信元アドレスの@記号を含むローカ
ル部分。例: 「myname@」

FullQualifiedDomainName

STRING[254]メールサーバーの Fully Qualified
Domain Name (FQDN と略記されます)。例: 「mymailserver.com」

RemotePort

UINT

メールサーバーの TCP ポート

ActivateSecureConn

BOOL• 1:セキュアな SMTP 接続• 0:SMTP 接続(非セキュア)。この場
合、以下のパラメータは無関係です。

ExtTLSCapabilities

BYTE

現在未使用

TLSServerCertRef

UDINT

メールサーバーの X.509 V3 (CA)証明書の参照、この証明書は、TLS サーバ
ーの認証を検証するために TLS クライ
アントによって使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3037

通信
6.2 オープンユーザーコミュニケーション
TMail_V6_SEC:IPv6 形式の IP アドレスによる電子メールサーバーのアドレス指定

3038

パラメータ

データタイプ 説明

TMail_V6_SEC

StructTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明

InterfaceId

LADDR

イーサネットインターフェースのハー
ドウェア識別子ID

CONN_OUC

接続 ID

ConnectionType

BYTE

接続タイプ。IPv6 の接続タイプとして
16#21 を選択します。

ActiveEstablishment

BOOL

アクティブ/パッシブ接続の確立。そのCP は常に SMTP クライアントであるため、このパラメータは「1」にセットする必要があります。

WatchDogTime

TIME

実行ウォッチドッグ。このパラメータを使用して、送信処理の最大実行時間を定義します。
注記:接続が遅い場合、接続の確立によ
り時間がかかります(約 1 分)。
WatchDogTime パラメータを指定する
ときは、接続を確立するために必要な時間を考慮することを忘れないでください。
指定された時間が経過すると、接続が終了します。

MailServerAddress

IP_V6

IPv6 形式のメールサーバーの IP アド
レス:
XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX (16 進数)。アドレスは、それぞれ 2 バイトの 8 つのブロックに分けられます(合計で 16 バイト)。
例:2001:db8:1f11:08d3:290:27ff:037
0:2093UserName

STRING[254]ユーザー名。
これは、ユーザーが電子メール受信ト
レイにアクセスするとき、自身を電子メール受信トレイの所有者として電子
メールプロバイダに証明するために必要です。

PassWord

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

STRING[254]ユーザーパスワード

3039

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明
これは、ユーザーが電子メール受信ト
レイにアクセスするとき、自身を電子メール受信トレイの所有者として電子
メールプロバイダに証明するために必
要です。

From

EMAIL_ADDR 以下の 2 つの STRING パラメータを使用して定義される電子メール送信元アドレス。例:「myname@mymailserver.com」。

LocalPartPlusAtSign

STRING[64]送信元アドレスの@記号を含むローカ
ル部分。例: 「myname@」

FullQualifiedDomainName

STRING[254]メールサーバーの Fully Qualified
Domain Name (FQDN と略記されます)。例: 「mymailserver.com」

RemotePort

UINT

メールサーバーの TCP ポート

ActivateSecureConn

BOOL• 1:セキュアな SMTP 接続• 0:SMTP 接続(非セキュア)。この場
合、以下のパラメータは無関係です。

ExtTLSCapabilities

BYTE

現在未使用

TLSServerCertRef

UDINT

メールサーバーの X.509 V3 (CA)証明書の参照、この証明書は、TLS サーバ
ーの認証を検証するために TLS クライ
アントによって使用されます。

3040

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
TMail_QDN_SEC:FQDN によるメールサーバーのアドレス指定
パラメータ

データタイプ 説明

TMail_QDN_SEC

StructTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3041

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明

InterfaceId

LADDR

イーサネットインターフェースのハー
ドウェア識別子ID

CONN_OUC

接続 ID

ConnectionType

BYTE

接続タイプ。FQDN 用の接続タイプとして 16#22 を選択します。

ActiveEstablishment

BOOL

アクティブ/パッシブ接続の確立。そのS7-CP は常に SMTP クライアントであるため、このパラメータは「1」にセットする必要があります。

WatchDogTime

TIME

実行ウォッチドッグ。このパラメータを使用して、送信処理の最大実行時間を定義します。
注記:接続が遅い場合、接続の確立によ
り時間がかかります(約 1 分)。
WatchDogTime パラメータを指定する
ときは、接続を確立するために必要な時間を考慮することを忘れないでください。
指定された時間が経過すると、接続が終了します。

MailServerQDN

STRING[254]メールサーバーの FQDN (Fully
Qualified Domain Name)。そのメールサーバーは、完全修飾ドメイン名を使用してアドレス指定されます。完全修飾ドメイン名は、「.」で終わる必要があります。
例: 「www.mymailserver.com.」

UserName

STRING[254]ユーザー名
これは、ユーザーが電子メール受信ト
レイにアクセスするとき、自身を電子メール受信トレイの所有者として電子
メールプロバイダに証明するために必要です。

PassWord

3042

STRING[254]ユーザーパスワード

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

データタイプ 説明
これは、ユーザーが電子メール受信ト
レイにアクセスするとき、自身を電子メール受信トレイの所有者として電子
メールプロバイダに証明するために必
要です。

From

EMAIL_ADDR 以下の 2 つの STRING パラメータを使用して定義される電子メール送信元アドレス。例:「myname@mymailserver.com」。

LocalPartPlusAtSign

STRING[64]送信元アドレスの@記号を含むローカ
ル部分。例: 「myname@」

FullQualifiedDomainName

STRING[254]メールサーバーの Fully Qualified
Domain Name (FQDN と略記されます)。例: 「mymailserver.com」

RemotePort

UINT

メールサーバーの TCP ポート

ActivateSecureConn

BOOL• 1:セキュアな SMTP 接続• 0:非セキュアな SMTP 接続。この場
合、以下のパラメータは無関係です。

ExtTLSCapabilities

BYTE

現在未使用

TLSServerCertRef

UDINT

メールサーバーの X.509 V3 (CA)証明書の参照、この証明書は、TLS サーバ
ーの認証を検証するために TLS クライ
アントによって使用されます。

6.2.5.8

DONE、BUSY、および ERROR パラメータ説明
出力パラメータ DONE、BUSY および ERROR は、それぞれ BUSY 出力パラメータのステー
タスが「1」から「0」に切り替わった場合に、1 サイクルのみ表示されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3043

通信
6.2 オープンユーザーコミュニケーション
次の表に、DONE、BUSY、および ERROR の関係を示します。この表を使って、「TMAIL_C」
命令の現在のステータスと、電子メールの送信がいつ完了するか決定できます。
DONE BUSY

ERRO
R

説明

0

1

0

ジョブが処理中です。

1

0

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。 エラーの原因は、STATUS(ページ 3044)パラメータで確認できます。

0

6.2.5.900「TMAIL_C」命令に(新規)ジョブが割り当てられていません。

STATUS パラメータ説明
次の表に、STATUS パラメータでの「TMAIL_C」の戻り値を示します。
戻り値

説明

注記

STATUS*(W#16#...
):
0000「TMAIL_C」の処理がエラーなし 「TMAIL_C」がエラーなしで完了しても、で完了されました。

送信した電子メールが届いたことを意味しません。
受信者のアドレスの不正な入力では、「TMAIL_C」命令のステータスエラーは生成されません。この場合、これらが正し
く入力されていても、電子メールの他の受信者への送信は保証されません。

7001「TMAIL_C」が動作中(BUSY = 1)。 最初の呼び出し:ジョブがトリガされてい
ます。

7002

「TMAIL_C」が動作中(BUSY = 1)。 中間呼び出しジョブが既にアクティブで
す。

3044

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
戻り値

説明

注記

STATUS*(W#16#...
):
8xxx「TMAIL_C」の処理が、内部呼び 詳細情報については、「TCON (ペー
出しの通信命令のエラーコードで ジ 3057)」、「TDISCON (ページ 3067)」、
完了しました。

「TSEND (ページ 3074)」、および「TRCV(ページ 3079)」通信命令の STATUS パラ
メータの説明を参照してください。

8010

接続の確立中にエラーが発生しま 評価に関する詳細情報については、した。

インスタンスデータブロックのSFB_STATUS パラメータに記載されています。SFB_STATUS パラメータに表示されるエラーコードは、「TCON (ページ 3057)」命令の STATUS パラメータの説明に記載されています。

8011

データ送信のエラー評価に関する詳細情報については、
インスタンスデータブロックのSFB_STATUS パラメータに記載されています。SFB_STATUS パラメータに表示されるエラーコードは、「TSEND (ページ 3074)」命令の STATUS パラメータの説明に記載されています。

8012

データ受信のエラー評価に関する詳細情報については、
インスタンスデータブロックのSFB_STATUS パラメータに記載されています。SFB_STATUS パラメータに表示されるエラーコードは、「TRCV (ページ 3079)」命令の STATUS パラメータの説明に記載されています。

8013

接続の確立中にエラーが発生しま 評価に関する詳細情報については、した。

インスタンスデータブロックのSFB_STATUS パラメータに記載されています。SFB_STATUS パラメータに表示されるエラーコードは、「TCON (ページ 3057)」および「TDISCON (ページ 3067)」命令の STATUS パラメータの説明に記載されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3045

通信
6.2 オープンユーザーコミュニケーション
戻り値

説明

注記

接続の確立が不可能です。

不正なメールサーバーの IP アドレス

STATUS*(W#16#...
):
8014(MailServerAddress (ページ 3029))、または接続を確立するためには短すぎる時間(WatchDogTime (ページ 3029))を入力した可能性があります。また、CPU がネットワークに接続していない、またはCPU の設定が不正である可能性もあります。
8015

MAIL_ADDR_PARAM のデータタ

有効なデータタイプは、システムデータ

イプが不正ですタイプ(構造体) TMail_V4、TMail_V6、および TMail_FQDN のみです。
命令バージョン V4.0 以降では、次のシ
ステムデータタイプも有効です:
TMail_V4_SEC、TMail_V6_SEC、およびTMail_QDN_SEC

8016

ATTACHMENT パラメータのデー 有効なデータタイプは、ArrayOfByte、
タタイプが不正です

ArrayOfWord、および ArrayOfDWord の
みです。

8017

ATTACHMENT パラメータのデー データ長は 65534 バイト以下である必要
タ長が不正です

8401があります。

使用可能なチャンネルがありませ CP 154x‑1 固有のエラーん。考えられる原因:CP 経由の電子メール接続が既に存在します。
2 番目の接続を並列に確立することはできません。

8403

メールサーバーに TCP/IP 接続で

CP 154x‑1 固有のエラー

きませんでした。
8405

サーバーがログイン要求を拒否し CP 154x‑1 固有のエラー
ました。

8406

SMTP クライアントが、内部的な CP 154x‑1 固有のエラー
SSL エラー、または証明書の構造の問題を検出しました。

3046

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
戻り値

説明

注記

SSL の使用要求が拒否されましCP 154x‑1 固有のエラー

STATUS*(W#16#...
):
8407

た。
8408

メールサーバーへの TCP/IP 接続

CP 154x‑1 固有のエラーのためのソケットをクライアント
が識別できません。
8409

この接続を経由して書き込みでき CP 154x‑1 固有のエラーません。考えられる原因:通信パ
ートナーが接続をリセットしたか、または接続が切断されまし
た。

8410

この接続を経由して読み取りでき CP 154x‑1 固有のエラーません。考えられる原因:通信パ
ートナーが接続をリセットしたか、または接続が切断されまし
た。

8411

電子メールを送信できませんでし CP 154x‑1 固有のエラー
た。原因:送信処理の実行のためのメモリ領域が不足しています。

8412

構成された DNS サーバーが、指 CP 154x‑1 固有のエラー
定されたドメイン名を解決できませんでした。

8413

DNS サブシステムの内部エラーに CP 154x‑1 固有のエラー
より、ドメイン名を解決できませ
んでした。

8414

ドメイン名としてからの文字列が CP 154x‑1 固有のエラー
入力されています。

8415

cURL モジュールで内部エラーが CP 154x‑1 固有のエラー発生しました。実行が停止されま
した。

8416

SMTP モジュールで内部エラーが CP 154x‑1 固有のエラー発生しました。実行が停止されました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3047

通信
6.2 オープンユーザーコミュニケーション
戻り値

説明

注記

STATUS*(W#16#...
):
8417

SMTP に対する要求がチャンネル CP 154x‑1 固有のエラー
で既に使用されているか、チャンネル ID が無効です。実行は停止されました。

8418

電子メール送信ジョブが中止され CP 154x‑1 固有のエラーました。考えられる原因:実行時
間(WatchDogTime パラメータ)を超過したか、または CP が開始から停止に移行しました。

8419

チャンネルに割り込みが発生した CP 154x‑1 固有のエラー
ため、接続が閉じられるまで使用できません。

8420

サーバー証明書の文字列を CP ル CP 154x‑1 固有のエラー
ート証明書で検証できませんでし
た。

8421

内部エラーが発生しました。実行 CP 154x‑1 固有のエラーが停止されました。

82xx,

エラーメッセージがメールサーバ SMTP エラーコードおよびその他のエラ

84xx, また ーから発信され、SMTP プロトコ ーコードの詳細は、インターネットのは 85xxルのエラー番号に対応します

SMTP プロトコルまたはメールサーバー「8」を除く)。
(のエラーマニュアルを参照してくださ

次の行に、発生する可能性のある い。メールサーバーからの最新のエラー
メッセージは、BUFFER1 パラメータのイ
エラーコードを示します。
ンスタンス DB で表示することもできます。「TMAIL_C」命令によって最後に送信されたデータは、インスタンス DB のDATEN で確認できます。
8450

操作が実行されませんでした:メ 後で再度実行してみてください。
ールボックスが使用できないか、
到達できませんでした。

8451

操作が中止されました:ローカル 後で再度実行してみてください。
の処理エラー3048

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
戻り値

説明

注記

STATUS*(W#16#...
):
8500

シンタックスエラー:エラーが認 「TMAIL_C」のパラメータをチェックしま
識されませんでした.これには、 す。電子メールを認証なしで送信してみコマンド文字列が長すぎる場合の てください。これを行うには、エラーも含まれます。これは、電 UserName パラメータの内容を空の文字
子メールが LOGIN 認証手続きを 列で置き換えます。ユーザー名が指定さサポートしない場合にも発生しま れていない場合、LOGIN 認証手続きは使
す。

8501

用されません。

シンタックスエラー:パラメータ 考えられる原因:パラメータ TO_S またはの入力が不正ですCC の無効なアドレス(関連項目: TO_S お
よび CC パラメータ (ページ 3028))。

8502

コマンドが不明または実装されて エントリ、特に FROM パラメータをチェいません

ックします。コマンドが不完全である可能性があります。「@」または「.」が抜けている場合があります(関連項目: TO_S
および CC パラメータ (ページ 3028))。

8504

コマンドパラメータが実装されて エントリ、特に FROM パラメータをチェいません

ックします。コマンドが不完全である可能性があります。「@」が抜けている場合があります(関連項目: TO_S および CC パ
ラメータ (ページ 3028))。

8535

SMTP 認証が不完全です

不正なユーザー名または不正なパスワー
ドを入力した可能性があります。

8550

メールサーバーに到達できませ不正なユーザー名または不正なパスワー

ん。アクセス権がありません。

ドを入力した可能性があります。または、使用しているログイン方法をメールサーバーがサポートしていない可能性があります。エラーの別の原因としては、「@」の後の無効なドメイン名の入力、または TO_S、CC、および FROM パラメー
タでの「.」の不足が考えられます(関連
項目: TO_S および CC パラメータ (ページ 3028))。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3049

通信
6.2 オープンユーザーコミュニケーション
戻り値

説明

注記

STATUS*(W#16#...
):
8552

操作が中止されました:割り当て 後で再度実行してみてください。
られたメモリサイズを超えまし
た。

8554

転送に失敗しました8555

電子メールアドレスの不正な入力 複数のアドレスを入力した場合、「,」でによるエラー。

後で再度実行してみてください。
区切る必要があります。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。
表示形式の切り替えについては、「関連項目」を参照してください。

6.2.5.10

例: TMAIL_C による電子メールの送信

概要
次の呼び出しの例で、TMAIL_C 命令がどのように機能するかを示します。

要件
電子メールを送信するにはハードウェアが事前に構成済みであり、かつネットワークイン
フラがメールサーバーへの通信接続を許可している必要があります。 さらに、TMAIL_C の下記の入力パラメータを提供するために 2 つの構造体を作成する必要があります。 1 つは
電子メール添付に関する入力パラメータ、もう 1 つは接続情報とアドレスデータに関する
入力パラメータです。

電子メール添付電子メールは添付ファイル付きで送信されます。 添付ファイルのソースとしてグローバ
ルデータブロックにファイル名「Data」の Array of Byte を作成します。 この配列は、後でATTACHMENT 入力パラメータと相互接続します。

3050

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

接続情報およびアドレスデータ
CPU の接続情報とメールサーバーのアドレスデータを TMail_V4 システムデータタイプで入力します。
• グローバルデータブロックに「TMail_V4」データタイプの「Par1」タグを作成します。
• 以下の構造体に、使用しているメールサーバーの設定と接続データに基づいて使用している CPU のパラメータを入力します。 詳細情報については、MAIL_ADDR_PARAM (ページ 3029)入力パラメータの説明を参照してください。
「Par1」タグは、後で MAIL_ADDR_PARAM 入力パラメータと相互接続します。

命令の呼び出しSCL 言語で以下のインターフェースを持つ新しいファンクションブロックを作成します。
• InOut– 名前:SendEMail– データタイプ:Bool• Static– 名前:STATUS– データタイプ: Word

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3051

通信
6.2 オープンユーザーコミュニケーション

TMAIL_C の呼び出しとともに、下記のソースコードをプログラミングウィンドウにコピーします。
TMAIL_C を呼び出します。
BEGIN
IF #SendEMail = true THEN
"TMAIL_C_DB"(REQ := NOT "TMAIL_C_DB".BUSY,TEXT := 'The cpu switched to run',
ATTACHMENT := "MyDBMailAttachment".Data,
MAIL_ADDR_PARAM := "MyDBSendMail".Par1);
IF ("TMAIL_C_DB".BUSY = false) AND ("TMAIL_C_DB".DONE = false)
AND("TMAIL_C_DB".ERROR = false) THEN
#SendEMail := false;
END_IF;
IF ("TMAIL_C_DB".DONE = false) OR ("TMAIL_C_DB".ERROR = true) THEN#STATUS := "TMAIL_C_DB".STATUS;
END_IF;
END_IF;

結果
この命令は SendEMail = true で 1 回呼び出す必要があります。 以下の呼び出しでは、呼び出し時に SendEMail を割り当てないでください。電子メールが送信されるか送信中にエラーが発生するとすぐに、表示された命令で SendEMail がリセットされます。
電子メールが正常に送信されなかった場合、STATUS パラメータには TMAIL_C 命令の
STATUS パラメータの対応する値が含まれます。

下記も参照
TMAIL_C の説明 (ページ 3012)

3052

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

6.2.6

その他

6.2.6.1

TCON:通信接続の確立

TCON: 通信接続の確立

有効性
以下の「TCON」命令の説明は、ファームウェアバージョンが V4.0 より前の S7-1200 CPUに適用されます。

説明「TCON」命令を使用し、通信接続を設定して確立します。接続のセットアップと確立が終了
すると、CPU によって自動的に維持およびモニタされます。「TCON」は非同期に実行されます。
CONNECT および ID パラメータに対して指定された接続データは、通信接続の設定に使用されます。接続を確立するには、REQ パラメータで信号立ち上がりエッジを検出する必要があります。接続が正常に確立されると、DONE パラメータが「1」にセットされます。
注記
接続のプログラミング時のサポート
プログラムブロックで通信用の命令 TCON、TSEND_C、または TRCV_C を選択し、タイプ
TCP、UDP、または ISO-on-TCP の接続を作成し、パラメータを割り当てる場合、接続パラ
メータ割り当てのサポートを使用できます。
接続パラメータ割り当ては、プログラムエディタのインスペクタウィンドウにあります。

実行可能な接続数
実行可能な通信接続の数については、使用している CPU の技術仕様を参照してください。

TCP および ISO‑on‑TCP 接続
通信パートナーの両方が、「TCON」命令を呼び出して通信接続を設定し、確立します。パラメータ割り当て中に、アクティブ通信エンドポイントとなるパートナーとパッシブ通信
エンドポイントとなるパートナーを指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3053

通信
6.2 オープンユーザーコミュニケーション
断線やリモート通信パートナーなどが原因で接続が中断された場合、アクティブパートナ
ーは設定した接続の再確立を試みます。「TCON」を再度呼び出す必要はありません。これは、一度「TCON」が正常に確立された場合のみ適用されます(DONE = 1)。
「TDISCON (ページ 3067)」命令が実行されるか、CPU が STOP モードに切り替わると、既存の接続が終了し、設定された接続が削除されます。接続を再度設定して確立するには、「TCON」を再実行する必要があります。

パラメータ
次の表に、「TCON」命令のパラメータを示します。
パラメータ

宣言

データタイプ

REQ

Input

BOOL

メモリ領域

I、Q、M、D、L、 ID で指定された接続を確立するジョブを
または定数

ID
CONNECT

Input
InOut

CONN_OUC
TCON_Param

説明
信号立ち上がりエッジで開始します。

I、Q、M、D、L、 割り当てられた接続へのリファレンス
または定数値の範囲:W#16#0001～W#16#0FFF

D

接続記述子へのポインタ
関連項目:AUTOHOTSPOTDONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブはエラーなく実行されました

BUSY

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、
または既に完了しています。
• 1:ジョブがまだ完了していません。新
しいジョブを開始することはできま
せん。

ERROR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ ERROR:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

3054

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータを使用し、ジョブが正常に実行されたかどうかをチェックします。「TCON」の実行中にエラーが発生す
ると、ERROR パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
BUSY

DONE

ERROR

説明

1

0

0

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。STATUS パラメータにエラーの原因が出力されます。

000

新しいジョブが割り当てられませんでした。

ERROR および STATUS パラメータ
ERROR

STATUS*
説明(W#16#...)

0

0000

接続が正常に確立されました。

0

7000

ジョブ処理が行われていません。

0

7001

ジョブの実行を開始し、接続を確立します。

0

7002

接続を確立中です(REQ 対象外)。

1

8085

接続 ID (ID パラメータ)は、設定した接続によって既に使用されています。

1

8086

ID パラメータが有効範囲外です。

1

8087

最大接続数に達しました。これ以上の接続は行えません。

1

8089

CONNECT パラメータがデータブロックをポイントしていません。

1

809A

CONNECT パラメータの構造体が標準搭載インターフェースでサポートされていな
いか、長さが無効であるか、または無効な「InterfaceID」が接続記述(SDT)で指定されています。

1

809B

TCON_xxx 構造体内のエレメント InterfaceId が、CPU または CM/CP インターフェースのハードウェア識別子を参照しないか、値が「0」です。

1

80A0

エラーコード W#16#80A1 および W#16#80A2 のグループエラーです。

1

80A1

指定された接続またはポートが既に使用中です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3055

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*
説明(W#16#...)

1

80A2

ローカルまたはリモートポートがシステムによって使用中です。

1

80A3

既存の接続を再確立しようとしています。

1

80A4

接続のリモートエンドポイントの IP アドレスが無効です。つまり、ローカルパー
トナーの IP アドレスと一致しています。

1

80A5

接続 ID が既に使用されています。

1

80A7

通信エラー:「TCON」の完了前に「TDISCON (ページ 3067)」を実行しました。

1

80B2

CONNECT パラメータが、属性「ロードメモリにのみ保存」を使用して生成されたデータブロックをポイントしています。

1

80B4

ISO-on-TCP プロトコルの種類(connection_type = B#16#12)を使用したパッシブ接続の確立について、次の条件の 1 つ以上に違反しました。
• local_tsap_id_len >= B#16#02• local_tsap_id[1] = B#16#E0• local_tsap_id_len >= B#16#03 の場合、local_tsap_id[1]は ASCII 文字であること。
• local_tsap_id[1]は ASCII 文字であり、local_tsap_id_len >= B#16#03 であるこ
と。

1

80B5

接続タイプ 13 = UDP の場合、パッシブ接続の確立以外は許可されていません。

1

80B6

SDT TCON_Param の connection_type パラメータでのパラメータ割り当てエラー。

1

80B7

接続記述用のデータブロックの次のパラメータの 1 つにエラーがあります:
block_length、local_tsap_id_len、rem_subnet_id_len、rem_staddr_len、
rem_tsap_id_len、next_staddr_len。
注記:パッシブ側用の TCP で TCON を呼び出す場合、local_tsap_id_len は値 2 を持ち、rem_tsap_id_len は値 0 を持つ必要があります。

1

80B8

構造体エレメント ID およびブロックパラメータ ID の接続記述子が同一ではありま
せん。

1

3056

80C3

すべての接続リソースが使用中です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*
説明(W#16#...)

1

80C4

一時的な通信エラー:• 現時点では、接続を確立できません。
• 接続パスのファイアウォールが必要なポートのために開いていないため、接続を確立できません。
• インターフェースが現在、新しいパラメータを受信中です。
• 設定した接続が、現在「TDISCON (ページ 3067)」命令によって削除されています。

* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

TCON:通信接続の確立

説明「TCON」命令を使用し、通信接続を設定して確立します。接続のセットアップと確立が終了
すると、CPU によって自動的に維持およびモニタされます。「TCON」は非同期に実行されます。
ファームウェアバージョン V2.0 以降の S7-1500-CPU の場合、標準搭載された PROFINET
インターフェース経由で命令「TCON」を使用して、IPv4 マルチキャスト通信用のアクセ
スポイントをセットアップすることができます。
CONNECT および ID パラメータに対して指定された接続データは、通信接続の設定に使用されます。CONNECT パラメータでは、可能な場合は、プログラムエディタのインスペク
タウィンドウ内の接続パラメータ割り当てによって作成された状態の、あらかじめ定義された構造を使用してください。
S7-1500 CPU のファームウェアバージョン V2.0 以降では、Interface ID パラメータで特定の TCON_xxx 構造体に対して値 0 を指定することができます。この場合、使用する産業用
イーサネットインターフェースをファームウェアが選択します。この値 0 の指定は、次のSDT で可能です:TCON_IP_V4_SEC、TCON_QDN、TCON_QDN_SEC、TMail_QDN_SEC、
TMail_V4、および TMAIL_V4_SEC。その他すべての SDT では、Interface ID に固定値を割り当てる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3057

通信
6.2 オープンユーザーコミュニケーション
接続を確立するには、REQ パラメータで信号立ち上がりエッジを検出する必要があります。
接続が正常に確立されると、DONE パラメータが「1」にセットされます。
注記
接続のプログラミング時のサポート
プログラムブロックで通信用の命令 TCON、TSEND_C、または TRCV_C を選択し、タイプ
TCP、UDP、ISO-on-TCP、または FDL の接続を作成し、パラメータを割り当てる場合、接続パラメータ割り当てのサポートを使用できます。
接続パラメータ割り当ては、プログラムエディタのインスペクタウィンドウにあります。

実行可能な接続数
実行可能な通信接続の数については、使用している CPU の技術仕様を参照してください。

TCP および ISO-on-TCP での接続
通信パートナーの両方が、「TCON」命令を呼び出して通信接続を設定し、確立します。パラメータ割り当て中に、アクティブ通信エンドポイントとなるパートナーとパッシブ通信
エンドポイントとなるパートナーを指定します。
断線やリモート通信パートナーなどが原因で接続が中断された場合、アクティブパートナ
ーは設定した接続の再確立を試みます。「TCON」を再度呼び出す必要はありません。これは、一度「TCON」が正常に確立された場合のみ適用されます(DONE = 1)。
「TDISCON (ページ 3067)」命令が実行されるか、CPU が STOP モードに切り替わると、既存の接続が終了し、設定された接続が削除されます。接続を再度設定して確立するには、「TCON」を再実行する必要があります。

CP と SMS クライアント間の遠隔制御接続
CONNECT パラメータの接続記述用の TCON_PHONE システムデータタイプを使用します。
この接続タイプの場合、ステーションは、モバイルネットワーク CP 経由のモバイルネッ
トワークへのアクセスを必要とします。

FDL 接続CM 1542‑5 の FDL 接続をセットアップする場合、AUTOHOTSPOT を参照してください。

3058

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ
次の表に、
「TCON」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 指定された接続を確立するジョブを信号
または定数

ID

Input

CONN_OUC

立ち上がりエッジで開始します。

I、Q、M、D、L、 割り当てられた接続へのリファレンス
または定数

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明値の範囲:W#16#0001～W#16#0FFF

3059

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

CONNECTInOut

VARIANTD

接続記述子へのポインタ• TCP または UDP の場合は、構造体
TCON_IP_v4 または TCON_QDN を使用します
説明は、を参照してください
AUTOHOTSPOT または
AUTOHOTSPOT• セキュリティで保護された通信を使用する TCP または UDP の場合は、構造体 TCON_IP_V4_SEC または
TCON_QDN_SEC を使用します
説明は、を参照してください
AUTOHOTSPOT または
AUTOHOTSPOT• ISO-on-TCP の場合、構造体
TCON_IP_RFC を使用します。
説明は、AUTOHOTSPOT を参照してください• CP 1543‑1 / CP 1545‑1 の ISO 接続の場合は、構造体 TCON_ISOnative を使用します。
説明は、を参照してください「TCON_ISOnative に従った接続記述の構造体」• SMS クライアントへの接続の場合
は、TCON_PHONE システムデータタ
イプを使用します。
説明は、AUTOHOTSPOT を参照してください。
• CM 1542‑5 の FDL 接続の場合は、システムデータタイプ TCON_FDL を使用します; AUTOHOTSPOT を参照して
ください。

DONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブがエラーなしで完了済み

3060

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

BUSY

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、
または既に完了しています。
• 1:ジョブがまだ完了していません。新
しいジョブを開始することはできま
せん。

ERROR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ ERROR:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータを使用し、ジョブが正常に実行されたかどうかをチェックします。「TCON」の実行中にエラーが発生す
ると、ERROR パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。
リモートパートナーへのアクティブ接続の確立が失敗した場合、バージョン 3.0 では命令
「TCON」がエラーメッセージを生成します。もう一度接続を確立するには、REQ パラメー
タで信号立ち上がりエッジを作成します。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
BUSY

DONE

ERROR

説明

1

0

0

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。STATUS パラメータにエラーの原因が出力されます。

000

新しいジョブが割り当てられませんでした。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3061

通信
6.2 オープンユーザーコミュニケーション
TCON_ISOnative に基づいた接続記述子の構造
TCON_ISOnative に基づいた構造の接続記述子 DB を使用して、ISO 用の通信接続パラメー
タを割り当てます。TCON_ISOnative の既定のデータ構造体には、接続の確立に必要なす
べてのパラメータが含まれています。
バ
イ
ト

パラメータ

0 … InterfaceId

データタイプ 開始値

説明

HW_ANY0

CP インターフェースのハードウェア識別子

CONN_OUC

1

この接続の参照(次の値の範囲の一意となる ID:1～

1
2 … ID34095)。

4

ConnectionType

BYTE

16#16

接続タイプ:ISO

5

ActiveEstablished

BOOL

TRUE

接続の確立方法の ID:• FALSE:パッシブ接続の確立• TRUE:アクティブ接続の確立

8RemoteMacAddress ARRAY [1..6]～-

パートナーエンドポイントの MAC アドレス。たとえば 00-74-41-FD-AE-84 の場合

of BYTE

13• MacAddr[1] = 00
• MacAddr[2] = 74
• MacAddr[3] = 41
• MacAddr[4] = FD
• MacAddr[5] = AE
• MacAddr[6] = 84

14 - LocalMacAddress

ARRAY [1..6]19

of BYTE-

ローカルエンドポイントの MAC アドレス。たとえば00-74-41-FD-AE-84 の場合• MacAddr[1] = 00
• MacAddr[2] = 74
• MacAddr[3] = 41
• MacAddr[4] = FD
• MacAddr[5] = AE
• MacAddr[6] = 843062

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
バ
イ
ト

パラメータ

20 - RemoteTSelector

データタイプ 開始値

説明

Struct

リモート接続パートナーの TSelector。

-

53• バイト 20～21 = TSelLength• バイト 22～53 = TSel[1-32]
TSelLength

UINT

-

値の範囲は 0～32 です。

TSel

ARRAY

-

どの場合も値の範囲は 0～255-

リモート接続パートナーの TSelector。

[1..32] of
BYTE
54 - LocalTSelector

Struct87• バイト 20～21 = TSelLength• バイト 22～53 = TSel[1-32]
TSelLength

UINT

TSel

ARRAY

値の範囲は 0～32 です。
-

どの場合も値の範囲は 0～255-

接続試行が繰り返される時間(秒単位)。

100 ms

データ転送が繰り返される時間(ミリ秒単位)。

UINT

-

繰り返しの最大数。

UINT

-

単位は秒

[1..32] of
BYTE
88 - CrRetransmitionTim UINT89e90 - DataRetransmitionTi UINT
91

me

92 - MaxRetransmitionC
93

ount

94 - InactivityTime
95
96 - WindowTime

UINT

単位は秒

97

ERROR および STATUS パラメータ
ERROR

STATUS*
説明(W#16#...)

0

0000

接続が正常に確立されました。

0

7000

ジョブ処理が行われていません。

0

7001

ジョブの実行を開始し、接続を確立します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3063

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*
説明(W#16#...)

0

7002

接続を確立中です(REQ 対象外)。

1

8085

接続 ID (ID パラメータ)は、設定した接続によって既に使用されています。

1

8086

ID パラメータが有効範囲外です。

1

8087

最大接続数に達しました。これ以上の接続は行えません。

1

8089

CONNECT パラメータが接続記述子をポイントしていないか、または接続記述子が手動で作成されています。

1

809A

CONNECT パラメータの構造体が標準搭載インターフェースでサポートされていな
いか、長さが無効です。

1

809B

• TCON_xxx 構造体内の InterfaceId エレメントが、CPU または CM/CP インターフ
ェースのハードウェア識別子を参照していません。
• 使用している TCON_xxx 構造体内では、InterfaceId エレメントの値を「0」にはできません。セクション「記述子」を参照してください。
• 使用している TCON_QDN または TCON_QDN_SEC 構造体内では、InterfaceId エ
レメントの値は「0」ではなく、有効な CP の InterfaceId でもありません。

1

809C

UDP マルチキャスト通信では、InterfaceID = 0 にはできません。マルチキャスト通信専用のローカル PLC または CP インターフェースのハードウェア識別子を入力する必要があります。

1

80A1

指定された接続またはポートが既に使用中です。

1

80A2

ローカルまたはリモートポートがシステムによって使用中です。以下のポートがローカルで予約済みです。20、21、80、102、135、161、162、443、34962、34963、34964 および 49152～65535 の領域。

1

80A3

ID が、CONNECT パラメータで同一の接続記述子を使用する、ユーザープログラムで作成された接続によって使用されています。

1

80A4

接続のリモートエンドポイントの IP アドレスが無効であるか、またはローカルパートナーの IP アドレスと同じです。

1

80A7

通信エラー:「TCON」の完了前に「TDISCON (ページ 3067)」を実行しました。

1

80B4

TCON_IP_RFC のみ:ローカルの T セレクタが指定されていないか、最初のバイトが値
0x0E を含んでいない(T セレクタの長さ = 2 の場合のみ)、またはローカルの T セレ
クタが「SIMATIC-」で始まっています。

1

80B5

接続タイプ 13 = UDP の場合、パッシブ接続の確立以外は許可されていません(構造体 TCON_IP_v4 / TCON_PARAM のパラメータ ActiveEstablished の値が TRUE です)。

3064

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*
説明(W#16#...)

1

80B6

接続記述子のデータブロックの ConnectionType パラメータにパラメータ割り当て
エラーがあります。
• TCON_IP_v4 の場合のみ有効:0x11、0x0B、および 0x13。
• TCON_IP_RFC の場合のみ有効:0x0C および 0x12。

1

80B7

TCON_IP_v4 の場合:
• TCP (アクティブ接続の確立):リモートポートは「0」です。
• TCP (パッシブ接続の確立):ローカルポートは「0」です。
• UDP:ローカルポートは「0」です。
• パートナーエンドポイントの IP アドレスが 0.0.0.0 に設定されました。
TCON_IP_RFC の場合:
• ローカル(LocalTSelector)またはリモート(RemoteTSelector)の T セレクタが、32バイトを超える長さで指定されています。
• T セレクタ(ローカルまたはリモート)の TSelLength に対して、32 を超える長さが入力されています。
• 特定の接続パートナーのアドレス長のエラー。
• パートナーエンドポイントの IP アドレスが 0.0.0.0 に設定されました。

1

80B8

ローカル接続記述子のパラメータ ID(CONNECT パラメータの構造体)と命令のパラ
メータ ID が異なります。

1

80C3

すべての接続リソースが割り当て済みであるか、またはポートが他のアプリケーシ
ョンまたは接続によって動的に使用されている可能性があります。

1

80C4

一時的な通信エラー:• 現時点では、接続を確立できません。
• 接続パスのファイアウォールが必要なポートのために開いていないため、接続を確立できません。
• インターフェースが現在、新しいパラメータを受信中です。
• 設定した接続が、現在「TDISCON (ページ 3067)」命令によって削除されていま
す。

1

80C5

接続パートナーが接続の確立を拒否したか、接続を終了したか、または能動的に接続を切断しました。

1

80C6

接続パートナーに到達できません(ネットワークエラー)。

1

80C7

実行がタイムアウトしました。

1

80C8

ID パラメータの値が、ユーザープログラムを使用して作成された接続によって既に使用されています。接続は同じ ID を使用していますが、パラメータ CONNECT での接続設定が異なっています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3065

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*
説明(W#16#...)

1

80C9

接続パートナーの検証に失敗しました。接続を確立しようとしている接続パートナ
ーが、CONNECT パラメータの構造の指定されたパートナーと一致していません。

1

80CE

ローカルインターフェースの IP アドレスが 0.0.0.0 です。

1

80D0

TCP およびアクティブ接続のエンドポイントに関連して:remote_qdn パラメータが空の文字列です。この場合、接続は確立できません。

1

80D1

remote_qdn パラメータが完全修飾ドメイン名ではありません。終端のドットが欠落している可能性があります。

1

80D2

DNS サーバーアドレスが設定されていません。

1

80D3

完全修飾ドメイン名を解決できませんでした。考えられる原因:• DNS サーバーに、たとえば、それがシャットダウンされているか、リモートポートに到達できないため、到達できません。
• DNS サーバーとの通信中にエラーが発生しました。
• DNS サーバーが有効な DNS 応答を返しましたが、その応答に IPv4 アドレスが含
まれていません。

1

80E0

不適切なまたは不十分なメッセージが受信されました。

1

80E1

ハンドシェイク中のエラー。考えられる原因:• ユーザーによる中止• セキュリティが不足しています• ネゴシエーションの更新はサポートされていません• SSL/TLS バージョンはサポートされていません• ホスト名の検証が失敗しました

1

80E2

サポートされていない、または無効な証明書であるか、証明書がありません。
考えられる原因:関連モジュールの時刻が設定されていないか、モジュールが同期されていません。
例:モジュールの日付の初期設定が 2012 年 1 月 1 日であり、この日付がコミッシ
ョニング中に設定されませんでした。その証明書の有効期間は 2016 年 8 月 20 日に始まり、2024 年 8 月 20 日に終わります。この場合、モジュールの日付は証明書の有効期間外です; その証明書はこのモジュールに対して無効です。

1

80E3

証明書は破棄されました。

1

80E4

有効な証明機関が見つかりません。

1

80E5

証明書が期限切れになりました。

1

80E6

トランスポートレイヤーセキュリティプロトコルの整合性エラー

1

80E7

X.509-V3 証明書のサポートされていない拡張

3066

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*
説明(W#16#...)

1

80E9

サーバー証明書なしの TLS サーバーはサポートされていません。

1

80EA

DTLS (UDP)プロトコルはサポートされていません。

1

80EB

クライアントは、クライアント証明書を要求できません。

1

80EC

サーバーは、subjectAlternateName に基づく検証を実行できません(クライアンのみがこれを行うことができます)。

1

80ED

TLSServerCertRef_m-ID が無効です1xxyy, xx >全般的なエラーの情報については、を参照してください。 AUTOHOTSPOT80* プログラムエディタ内のエラーコードは、整数または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、TCON、TDISCON、TSEND & TRCV のプログラム例 (ページ 3093)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)
TCON: 通信接続の確立 (ページ 3053)

6.2.6.2

TDISCON: 通信接続の終了

説明「TDISCON」命令は、CPU から接続パートナーへの通信接続を終了します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3067

通信
6.2 オープンユーザーコミュニケーション
ファンクションの説明「TDISCON」は非同期で動作する命令で、そのジョブ処理は複数の呼び出しに渡って行われます。REQ = 1 で「TDISCON」命令を呼び出すことによって、接続を終了するためのジョブを開始します。
「TDISCON」が正常に実行された後、「TCON」に対して指定された ID は無効になるため、送受信に使用できません。
ジョブステータスは、出力パラメータ BUSY および STATUS によって示されます。ここでは、STATUS は非同期命令の出力パラメータ RET_VAL に対応します(関連項目: 同期命令と非同期命令の相違 (ページ 29))。
次の表に、BUSY、DONE、ERROR の関係を示します。この表を使用して、「TDISCON」の
現在のステータスや、接続の確立がいつ完了したかを認識できます。
BUSY

DONE

ERROR

説明

1

0

0

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。エラーの原因は、STATUS パラ
メータで確認できます。

0

0

0

命令に(新しい)ジョブが割り当てられませんでした。

パラメータ
次の表に、
「TDISCON」命令のパラメータを示します。
パラメータ 宣言
REQ

Input

メモリ領域

説明

データタ
イプ

S7-1200

S7-1500

BOOL

I、Q、M、

I、Q、M、D、

制御パラメータ REQUEST は、ID に

D、L、または L、または定数

よって指定された接続を終了するた

定数めのジョブを開始します。このジョブは信号立ち上がりエッジで開始し
ます。

ID

Input

CONN_OU D、L、または I、Q、M、D、C (WORD) 定数

L、または定数終了する接続の参照(接続 ID)
値の範囲:W#16#0001～
W#16#0FFF

3068

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ 宣言
DONE

Output

データタ
イプ

メモリ領域
S7-1200

S7-1500

BOOL

I、Q、M、

I、Q、M、D、L ステータスパラメータ:

D、L

説明

• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されま
した

BUSY

Output

BOOL

I、Q、M、

I、Q、M、D、L ステータスパラメータ:

D、L• BUSY = 1:ジョブが未完了です。
• BUSY = 0:ジョブが完了したか、まだ開始されていません。

ERROR

Output

BOOL

I、Q、M、

I、Q、M、D、L ステータスパラメータ:

D、L• ERROR = 0:エラーはありません。
• ERROR=1:処理中にエラーが発生しました。STATUS が、エラーのタイプに関する詳細情報を提供します

STATUS

Output

WORD

I、Q、M、

I、Q、M、D、L ステータスパラメータ:

D、L

エラー情報(「パラメータ ERROR および STATUS」を参照)

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

ERROR および STATUS パラメータ
ERROR

STATUS*( 説明W#16#...)

00000

接続が正常に終了しました。

0

7000

ジョブ処理が行われていません。

0

7001

ジョブ処理を開始します。接続を終了中です。

0

7002

中間呼び出し(REQ は対象外)。接続を終了中です。

1

8086

ID パラメータが許容値の範囲内にありません。

1

80A3

存在していない接続を終了しようとしているか、接続が既に終了しています。

1

80C4

一時的な通信エラー:インターフェースに新しいパラメータを割り当て中であるか、接続が現在確立中です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3069

通信
6.2 オープンユーザーコミュニケーション例

例は、TCON、TDISCON、TSEND & TRCV のプログラム例 (ページ 3093)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

6.2.6.3

TSEND:通信接続経由のデータ送信

TSEND: 通信接続経由のデータ送信
説明「TSEND」命令の以下の説明は、CPU S7-1200 のバージョン 3.0 以下に対して有効です。
「TSEND」命令を使用し、既存の通信接続によってデータを送信します。TSEND は非同期で実行されます。
DATA パラメータで送信領域を指定します。これには、アドレスと送信データの長さが含まれます。BOOL および Array of BOOL を除くすべてのデータタイプを送信データに使用できます。
送信ジョブは、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。
LEN パラメータを使用して、送信ジョブで送信する最大バイト数を指定します。
• TCP(ストリーミングプロトコル)を使用してデータが転送されるとき、「TSEND」命令は、「TRCV (ページ 3079)」に送信されるデータの長さに関する情報を提供しません。
• ISO-on-TCP(メッセージ指向プロトコル)を使用してデータが転送されるとき、送信デー
タの長さが「TRCV (ページ 3079)」に通知されます。「TSEND」でパケットとして送信される量のデータが、受信側でも再度受信される必要があります(「TRCV (ページ 3079)」)。
– 送信データに対して受信バッファが小さすぎる場合、受信側でエラーが発生します。
– 受信バッファが十分に大きくない場合、データパケットが受信されると直ちに、「TRCV」は DONE=1 を返します。
送信データは、送信ジョブが完了するまで編集しないでください。送信ジョブが正常に実行された場合、DONE パラメータが「1」にセットされます。DONE パラメータのシグナル状
態が「1」であっても、送信データが通信パートナーに読み取られているとは限りません。

3070

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ
次の表に、
「TSEND」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、

信号立ち上がりエッジで送信ジョブを開始しま

L、または定数

す。

ID
LEN

Input
Input

CONN_OUCUINT

I、Q、M、D、 「TCON」で確立された接続への参照。
L、または定数値の範囲:W#16#0001～W#16#0FFF

I、Q、M、D、ジョブで送信する最大バイト数。

L、または定数
DATA

InOut

VARIANT

I、Q、M、D

アドレスと送信データの長さの入っている送信
領域へのポインタアドレスは、以下を参照します。
• 入力のプロセスイメージ• 出力のプロセスイメージ• ビットメモリ• データブロック
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

DONE

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブがエラーなしで完了済み

BUSY

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または既に完了しています。
• 1:ジョブがまだ完了していません。新しいジョブを開始することはできません。

ERROR

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L 命令のステータス「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3071

通信
6.2 オープンユーザーコミュニケーション
LEN および DATA パラメータ• LEN = 0 の場合、DATA パラメータで指定されたすべてのデータが送信されます。
• LEN パラメータでのバイト数が、DATA パラメータで定義された送信データの長さよりも大きい場合、エラーコード 8088 が STATUS パラメータに出力されます(以下の STATUS
パラメータの説明を参照)。
• 構造体(Struct)が DATA パラメータによって参照される場合、LEN をこの構造体よりも短くすることができます。この場合、LEN パラメータの長さまでのデータ以外は転送されません。
• データタイプ STRING および WSTRING では、パラメータ LEN = 0 の場合にすべてのデータが転送されます。LEN > 0 の場合、長さは少なくとも最大バイト数に、長さ情報を含む 2 バイトを追加したものである必要があります。データタイプの構造体に関する詳細情報については、「AUTOHOTSPOT」を参照してください。
• 送信できる最大バイト数は 65534 です。
• 最適化された DB の構造化タグを使用するときは、構造化タグのアドレスを、DATA パ
ラメータおよびパラメータ LEN = 0 で、相互接続する必要があります。これは、同一の構造体が受信側で使用される場合、構造体全体の安全な伝送を保証します。

BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータで、ジョブが正常に実行されたかどうかをチェックできます。「TSEND」の実行中にエラーが発生すると、ERROR パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
BUSY

DONE

ERROR

説明

1

0

0

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。エラーの原因は、STATUS パラメータに明記されています。

0

3072

0

0

新しいジョブが割り当てられませんでした。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

注記「TSEND」は非同期的に実行されるため、DONE パラメータまたは ERROR パラメータが値「1」に変更されるまで、送信領域内のデータの整合性を保持する必要があります。

ERROR および STATUS パラメータ
ERROR

STATUS* 説明(W#16#..
.)

0

0000

送信ジョブがエラーなしで完了しました。

0

7000

ジョブ処理が行われていません。

0

7001

ジョブの実行が開始され、データが送信中です。
このジョブの処理時に、オペレーティングシステムが DATA 送信領域内のデータにア
クセスします。

07002

ジョブを実行中です(REQ は対象外)。
このジョブの処理時に、オペレーティングシステムが DATA 送信領域内のデータにア
クセスします。

18085• LEN パラメータが最大許容値よりも大きくなっています(65536)。
• DATA および LEN パラメータの値が両方とも「0」です。

1

8086

ID パラメータが許容アドレス範囲(1～0xFFF)外です。

1

8088

LEN パラメータが、DATA で指定された領域よりも大きくなっています。

1

80A1

通信エラー:• 指定された通信がまだ確立されていません。
• 指定された接続を終了中です。この接続による転送は行えません。
• インターフェースを再初期化中です。

1

80B3

プロトコルの種類(接続記述子内の ConnectionType パラメータ)が UDP に設定されています。UDP 接続では命令「TUSEND」を使用します。

1

80C3

• この ID を持つブロックは、別の優先度グループで既に処理中です。
• リソースが内部的に不足しています。

1

80C4

一時的な通信エラー:• 現時点では、パートナーに対する接続を確立できません。
• インターフェースが新しいパラメータの設定を受信中であるか、接続が確立中で
す。

1

80C5

接続が通信パートナーによって終了されました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3073

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS* 説明(W#16#..
.)

1

80C6

ネットワークエラー。通信パートナーに到達できません。

1

80C7

実行がタイムアウトしました。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

TSEND:通信接続経由のデータ送信

説明「TSEND」命令の以下の説明は、以下に対して有効です。
• Ethernet
ファームウェアバージョン V4.0 以降の CPU S7-1200 と CPU S7-1500• PROFIBUS
S7-1500 と、V2.0 以降でシステムデータタイプ TCON_FDL を備えた CM 1542‑5 の FDL
接続「TSEND」命令を使用し、既存の通信接続によってデータを送信します。TSEND は非同期で実行されます。
DATA パラメータで送信領域を指定します。これには、アドレスと送信データの長さが含まれます。BOOL および Array of BOOL を除くすべてのデータタイプを送信データに使用できます。
送信ジョブは、REQ パラメータで信号立ち上がりエッジが検出されたときに実行されます。

3074

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
LEN パラメータを使用して、送信ジョブで送信する最大バイト数を指定します。
• TCP(ストリーミングプロトコル)を使用してデータが転送されるとき、「TSEND」命令は、「TRCV (ページ 3079)」に送信されるデータの長さに関する情報を提供しません。
• ISO-on-TCP(メッセージ指向プロトコル)を使用してデータが転送されるとき、送信デー
タの長さが「TRCV (ページ 3079)」に通知されます。「TSEND」でパケットとして送信される量のデータが、受信側でも再度受信される必要があります(「TRCV (ページ 3079)」)。
– 送信データに対して受信バッファが小さすぎる場合、受信側でエラーが発生します。
– 受信バッファが十分に大きくない場合、データパケットが受信されると直ちに、「TRCV」は DONE=1 を返します。
送信データは、送信ジョブが完了するまで編集しないでください。送信ジョブが正常に実行された場合、DONE パラメータが「1」にセットされます。DONE パラメータのシグナル状
態が「1」であっても、送信データが通信パートナーに読み取られているとは限りません。

パラメータ
次の表に、「TSEND」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、

信号立ち上がりエッジで送信ジョブを開始しま

L、または定数

す。

ID
LEN

Input
Input

CONN_OUC
UDINT

I、Q、M、D、 「TCON」で確立された接続への参照。
L、または定数値の範囲:W#16#0001～W#16#0FFF

I、Q、M、D、ジョブで送信される最大バイト数(S7-1200 のL、または定数

最大許容値:8192、S7-1500 の最大許容値:65536).
CM 1542‑5 の FDL 接続の場合、最大長は 240
バイトです。これに関しては、接続パートナーが処理できる最大長に注意してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3075

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイ
プ

メモリ領域

説明

DATA

InOut

VARIANT

I、Q、M、D、L アドレスと送信データの長さの入っている送信
領域へのポインタアドレスは、以下を参照します。
• 入力のプロセスイメージ• 出力のプロセスイメージ• ビットメモリ• データブロック• ローカルデータ
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

DONE

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブがエラーなしで完了済み

BUSY

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または既に完了しています。
• 1:ジョブがまだ完了していません。新しいジョブを開始することはできません。

ERROR

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L 命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

LEN および DATA パラメータ• LEN = 0 の場合、DATA パラメータで指定されたすべてのデータが送信されます。
• LEN パラメータでのバイト数が、DATA パラメータで定義された送信データの長さよりも大きい場合、エラーコード 8088 が STATUS パラメータに出力されます(以下の STATUS
パラメータの説明を参照)。
• 構造体(Struct)が DATA パラメータによって参照される場合、LEN をこの構造体よりも短くすることができます。この場合、LEN パラメータの長さまでのデータ以外は転送さ
れません。

3076

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション• データタイプ STRING および WSTRING では、パラメータ LEN = 0 の場合にすべてのデータが転送されます。LEN > 0 の場合、長さは少なくとも最大バイト数に、長さ情報を含む 2 バイトを追加したものである必要があります。データタイプの構造体に関する詳細情報については、「AUTOHOTSPOT」を参照してください。
• 送信できる最大バイト数は、デバイスに依存します。
• 最適化された DB の構造化タグを使用するときは、構造化タグのアドレスを、DATA パ
ラメータおよびパラメータ LEN = 0 で、相互接続する必要があります。これは、同一の構造体が受信側で使用される場合、構造体全体の安全な伝送を保証します。

BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。DONE パラメータで、ジョブが正常に実行されたかどうかをチェックできます。「TSEND」の実行中にエラーが発生すると、ERROR パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
BUSY

DONE

ERROR

説明

1

0

0

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。エラーの原因は、STATUS パラメータに明記されています。

0

0

0

新しいジョブが割り当てられませんでした。

注記「TSEND」は非同期的に実行されるため、DONE パラメータまたは ERROR パラメータが値「1」に変更されるまで、送信領域内のデータの整合性を保持する必要があります。

ERROR および STATUS パラメータ
ERROR

STATUS* 説明(W#16#..
.)

0

0000

送信ジョブがエラーなしで完了しました。

0

7000

ジョブ処理が行われていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3077

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS* 説明(W#16#..
.)

0

7001

ジョブの実行が開始され、データが送信中です。
このジョブの処理時に、オペレーティングシステムが DATA 送信領域内のデータにア
クセスします。

07002

ジョブを実行中です(REQ は対象外)。
このジョブの処理時に、オペレーティングシステムが DATA 送信領域内のデータにア
クセスします。

18085• LEN パラメータが最大許容値よりも大きくなっています。
S7-1200 の場合:8192; S7-1500 (TCP)の場合:65536; S7-1500 (FDL)の場合:240 /236• DATA および LEN パラメータの値が両方とも「0」です。

1

8086

ID パラメータが許容アドレス範囲(1～0xFFF)外です。

1

8088

LEN パラメータが、DATA で指定された領域よりも大きくなっています。

1

80A1

通信エラー:• 指定された通信がまだ確立されていません。
• 指定された接続を終了中です。この接続による転送は行えません。
• インターフェースを再初期化中です。

1

80B1

現在のジョブを終了する前に DATA パラメータが変更されました。

1

80B3

プロトコルの種類(接続記述子内の ConnectionType パラメータ)が UDP に設定されています。UDP 接続では命令「TUSEND」を使用します。

1

80C3

• この ID を持つブロックは、別の優先度グループで既に処理中です。
• リソースが内部的に不足しています。

1

80C4

一時的な通信エラー:• 現時点では、パートナーに対する接続を確立できません。
• インターフェースが新しいパラメータの設定を受信中であるか、接続が確立中です。
• FDL / PROFIBUS のみ:一時的に、受信リソースが接続パートナーで使用できません。接続パートナーが受信する準備が完了していません。
• R/H システムが SYNCUP システム状態であるか、プライマリとバックアップが切り替えられています。接続が終了します。TSEND の処理が停止されます。

1

80C5

• 接続が通信パートナーによって終了されました。
• リモート接続パートナーの LSAP がリリースされていません。

1

80C6

ネットワークエラー:• リモートパートナーに到達できません。
• PROFIBUS 上の物理的切断

3078

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS* 説明(W#16#..
.)

1

80C7

実行がタイムアウトしました。

1

80EE

ハンドシェイクがまだ完了していません

1xxyy, xx

全般的なエラーの情報については、を参照してください。 AUTOHOTSPOT> 80*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、TCON、TDISCON、TSEND & TRCV のプログラム例 (ページ 3093)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)
TSEND: 通信接続経由のデータ送信 (ページ 3070)

6.2.6.4

TRCV:通信接続経由のデータ受信

TRCV:通信接続経由のデータ受信

説明「TRCV」命令の以下の説明は、CPU S7-1200 のバージョン 3.0 以下に対して有効です。
「TRCV」命令を使用し、既存の通信接続によってデータを受信します。「TRCV」は非同期で実行されます。
EN_R パラメータが値「1」にセットされると、データの受信が可能になります。受信デー
タは、受信領域に入力されます。使用されているプロトコル変数に応じて、受信エリアの長さを LEN パラメータ(LEN <> 0 の場合)、または DATA パラメータの長さの情報(LEN = 0 の場合)で指定します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3079

通信
6.2 オープンユーザーコミュニケーション
データを受信している間、受信されたデータの整合性を確保するために、DATA パラメー
タまたは定義済み受信領域に対して変更を行うことはできません。
データが正常に受信されると、NDR パラメータが値「1」にセットされます。RCVD_LEN
パラメータで、実際に受信したデータの量を照会できます。

「TRCV」の受信モード
次の表に、受信データがどのように受信領域に入力されるかを示します。
プロトコルの種類

受信領域内のデータの可用性

接続記述子のconnection_type*パ
ラメータ

LEN パラメータ

TCP

データはすぐに使用可能です。

16 進数値:B#16#11

0(アドホックモード)
TCP

整数値:17
LEN パラメータで指定されたデータ 16 進数値:B#16#11

1～8192(指定された長さのデー 長が完全に受信されるとすぐに、デ 整数値:17ータが使用可能になります。
タの受信)
ISO on TCP

LEN パラメータで指定されたデータ 16 進数値:B#16#12(メッセージ指向のデー 長が完全に受信されるとすぐに、デ 整数値:18ータが使用可能になります。
タ転送)• 1～1452、CP を使用する場合。
• 1～8192、CP を使用しない場合。

* 「AUTOHOTSPOT」を参照してください。

TCP (アドホックモード)
アドホックモードは、TCP プロトコル種類でのみ使用可能です。「TRCV」命令で長さが動的なデータを受信するには、アドホックモードを使用します。
アドホックモードは、値「0」を LEN パラメータに割り当てることで設定できます。アドホックモードを使用すると、データブロックに対して標準アクセスですべてのデータタイ
プを使用できます。最適化されたアクセスのあるデータブロックには、ARRAY of BYTE ま
たは長さが 8 ビットのデータタイプのみを使用できます(CHAR、USINT、SINT など)。アド
ホックモードが有効の場合、データの受信は、NDR パラメータの受信バイトの後に、既に信号で示されています。

3080

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
TCP (指定された長さのデータの受信)指定された長さのデータの受信の場合、LEN パラメータにデータの長さを入力します。LEN
パラメータで指定された長さのデータが完全に受信されるまで、データの受信は完了しま
せん。受信領域でデータが使用可能になるのは、そのときだけです(DATA パラメータ)。デ
ータの受信は、NDR 出力パラメータによって信号で示されます。RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後の LEN パラメータのデータ長に相当します。

ISO on TCP (メッセージ指向のデータ転送)
プロトコルのバリエーション ISO on TCP を使用する接続を経由して、メッセージブロック
全体が送信されます。これらは受信によってそのように認識されます。ISO on TCP を使用している場合、メッセージブロックが完全に受信されると直ちに、「TRCV」がデータの受信を通知します。受信領域は、LEN および DATA パラメータによって定義されます。送信データに対して受信バッファ(DATA パラメータ)が小さすぎる場合、「TRCV」がエラーを通知します。データの正常な受信は、NDR 出力パラメータによって信号で示されます。
RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後の LEN パラメ
ータのデータ長に相当します。

パラメータ
次の表に、「TRCV」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

EN_R

Input

BOOL

I、Q、M、D、受信可能です。

L、または定数
ID

Input

CONN_OUC

I、Q、M、D、「TCON (ページ 3053)」で確立された接続へのL、または定数参照。
値の範囲:W#16#0001 (1) ～ W#16#0FFF(4095)

LEN

Input

UINT

I、Q、M、D、受信領域のバイト単位の長さ(非表示)。

L、または定数

DATA パラメータで最適化されたアクセスのあるメモリ領域を使用する場合、LEN パラメー
タの値は「0」である必要があります。

DATA

InOut

VARIANT

I、Q、M、D

受信領域へのポインタ
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3081

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイ
プ

メモリ領域

説明

NDR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ(New Data Received):• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブがエラーなしで完了済み

BUSY

Output

BOOL

I、Q、M、D、L

ステータスパラメータ:• 0:ジョブがまだ開始されていないか、または既に完了しています。
• 1:ジョブがまだ完了していません。新しいジョブを開始することはできません。

ERROR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ:• 0:エラーはありません。
• 1:命令の実行中にエラーが発生しました。
詳細情報は、STATUS パラメータで出力されます。

STATUS

Output

WORD

I、Q、M、D、L

ステータスパラメータ:
ステータスおよびエラー情報の出力。

RCVD_LEN

OutputUINT

I、Q、M、D、L

実際に受信されたバイト単位のデータ量

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

3082

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
LEN、DATA および RCVD_LEN パラメータ• LEN = 0 の場合、受信データは、DATA パラメータで指定された受信領域に保存されます。受信したバイト数は、RCVD_LEN パラメータで示されます。
LEN = 0 (LEN パラメータの既定の設定)の場合、受信するデータの長さを DATA パラメータで定義します。受信領域(DATA パラメータ)のサイズは、TSEND によって送信されるデータのサイズと同じであることをお奨めします。
LEN の値が 0 で、送信データが DATA 受信領域より小さいセグメント単位で転送される
場合、以下が適用されます。関連 TSEND 命令がすべてのデータを送信するまで、EN_R
はセットしたままにしておくことを推奨します。TSEND によって送信されたデータのサイズが DATA 受信領域のサイズと等しくない限り、STATUS は値 7002 を示します。
受信されたデータ量が DATA 受信領域のサイズと等しくなるまで、EN_R をセットする必要があります。EN_R を印加する場合は、BUSY=0 または ERROR <> 0 になるまでそうする必要があります。
DATA 受信領域のデータは、BUSY の値が 0 のときのみ有効です。
• LEN パラメータで指定された長さが、DATA パラメータで受信したデータの長さよりも大きい場合、エラーコード 8088 が STATUS パラメータに出力されます(以下の STATUS パ
ラメータの説明を参照)。
• 構造体(Struct)が DATA パラメータによって参照される場合、LEN をこの構造体よりも短くすることができます。この場合、LEN パラメータの長さまでのデータ以外は転送されません。
• DATA パラメータが最適化されたアクセスでデータブロックを参照する場合、LEN パラ
メータを「0」にセットする必要があります。
• STRING データタイプが DATA パラメータによって参照される場合、LEN パラメータで指定される長さを 0 または 2 以上にする必要があります(LEN = 1 は許可されません)。
• WSTRING データタイプが DATA パラメータによって参照される場合、LEN パラメータで指定される長さを 0 または 5 以上にする必要があります。

BUSY、NDR および ERROR パラメータ
BUSY、NDR、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。NDR パラメータで、ジョブが正常に実行されたかどうかをチェックできます。TRCV の実行中にエラーが発生すると、ERROR
パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3083

通信
6.2 オープンユーザーコミュニケーション
次の表に、BUSY、NDR、ERROR パラメータの関係を示します。
BUSY

NDR

ERROR

説明

1

-

-

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。STATUS パラメータにエラーの原因が出力されます。

000

新しいジョブが割り当てられませんでした。

注記「TRCV」は非同期的に実行されるため、受信領域内のデータは、NDR パラメータが値「1」にセットされたときにのみ整合性があります。

ERROR および STATUS パラメータ
ERROR

STATUS* 説明(W#16#.
..)

0

0000

ジョブが正常に完了しました。受信データの現在の長さが RCVD_LEN パラメータに出力されます。

07000

ブロックの受信準備ができていません。

0

7001

ブロックの受信準備が完了し、受信ジョブが有効になりました。

0

7002

中間呼び出し。受信ジョブを実行中です。
注記:ジョブが処理されている間に、データが受信領域に書き込まれます。この間の受信領域へのアクセスでは、矛盾したデータが提供される場合があります。

1

8085

• LEN パラメータが最大許容値よりも大きくなっています。
• 最初の呼び出しの後に、LEN または DATA パラメータの値が変更されました。
• LEN パラメータおよび DATA パラメータの値が「0」であるか、または LEN が最大許容値(65536)よりも大きな値です。

1

8086

ID パラメータが許容アドレス範囲(1～0x0FFF)外です。

1

8088

• 受信領域が小さすぎます。
• LEN パラメータの値が、DATA パラメータで設定された受信領域よりも大きくなっ
ています。

3084

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS* 説明(W#16#.
..)

1

80A1

通信エラー:• 指定された通信がまだ確立されていません。
• 指定された接続を終了中です。この接続による受信ジョブは行えません。
• 接続を最初期化中です。

1

80B3

プロトコルの種類(接続記述子内の connection_type パラメータ)が UDP に設定されています。UDP 接続では命令「TURCV」を使用します。

1

80C3

• この ID を持つブロックは、別の優先度グループで既に処理中です。
• リソースが内部的に不足しています。

1

80C4

一時的な通信エラー:• 現時点では、パートナーに対する接続を確立できません。
• インターフェースが新しいパラメータの設定を受信中であるか、接続が確立中で
す。

1

80C5

リモートパートナーによって接続が終了しました。

1

80C6

リモートパートナーに到達できません(ネットワークエラー)。

1

80C7

実行がタイムアウトしました。

1

80C9

受信領域の長さが送信データの長さよりも小さくなっています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3085

通信
6.2 オープンユーザーコミュニケーション
TRCV:通信接続経由のデータ受信

説明「TRCV」命令の以下の説明は、以下に対して有効です。
• Ethernet
ファームウェアバージョン V4.0 以降の CPU S7-1200 と CPU S7-1500• PROFIBUS
S7-1500 と、V2.0 以降でシステムデータタイプ TCON_FDL を備えた CM 1542‑5 の FDL
接続「TRCV」命令を使用し、既存の通信接続によってデータを受信します。「TRCV」は非同期で実行されます。
EN_R パラメータが値「1」にセットされると、データの受信が可能になります。受信デー
タは、受信領域に入力されます。使用されているプロトコル変数に応じて、受信エリアの長さを LEN パラメータ(LEN <> 0 の場合)、または DATA パラメータの長さの情報(LEN = 0 の場合)で指定します。
データを受信している間、受信されたデータの整合性を確保するために、DATA パラメー
タまたは定義済み受信領域に対して変更を行うことはできません。
データが正常に受信されると、NDR パラメータが値「1」にセットされます。RCVD_LEN
パラメータで、実際に受信したデータの量を照会できます。

3086

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション「TRCV」の受信モード
次の表に、受信データがどのように受信領域に入力されるかを示します。
プロトコルの種類 ADHOC パ 受信領域内のデータの可用 接続記述子のラメータ
性connection_type パラ
メータ

LEN パラメータ

TCP

1 (アドホ

データはすぐに使用可能で 16 進数値:B#16#11

現在使用できるデー(アドホックモー

ック有効)

す。

タが読み出されま

整数値:17

す; LEN によって指ド)定されたデータ長を超えることはありま
せん。
LEN = 0 (推奨値):DATA によって参照される受信領域の長さ
TCP

0 (アドホ

LEN パラメータで指定され 16 進数値:B#16#11(指定された長さの ック無効)

たデータ長が完全に受信さ 整数値:17

データの受信)れるとすぐに、データが使用可能になります。

ISO on TCP-

LEN パラメータで指定され 16 進数値:B#16#12(メッセージ指向のたデータ長が完全に受信さ 整数値:18

データ転送)

れるとすぐに、データが使FDL-• S7-1200:1～
8192• S7-1500:1 ～65536• S7-1200:1～
8192

用可能になります。

• S7-1500:1 ～65536

LEN パラメータで指定され 16 進数値:B#16#15

1 ～ 240

たデータ長が完全に受信さ 10 進数:21
れるとすぐに、データが使用可能になります。

TCP (アドホックモード)
アドホックモードは、TCP プロトコル種類でのみ使用可能です。「TRCV」命令で長さが動的なデータを受信するには、アドホックモードを使用します。
アドホックモードは、値「1」を ADHOC パラメータに割り当てることで設定できます。ア
ドホックモードが有効の場合、データの受信は、NDR パラメータの受信バイトの後に、既に信号で示されています。アドホックモードを使用すると、データブロックに対して標準アクセスですべてのデータタイプを使用できます。最適化されたアクセスのあるデータブ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3087

通信
6.2 オープンユーザーコミュニケーション
ロックには、ARRAY of BYTE または長さが 8 ビットのデータタイプのみを使用できます(CHAR、USINT、SINT など)。

TCP (指定された長さのデータの受信)指定された長さのデータの受信の場合、ADHOC パラメータに値「0」を割り当てます。ア
ドホックモードが無効の場合、LEN パラメータで指定された長さのデータが完全に受信されるまで、データの受信は完了しません。受信領域でデータが使用可能になるのは、そのときだけです(DATA パラメータ)。データの正常な受信は、NDR 出力パラメータによって信号で示されます。RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後の LEN パラメータのデータ長に相当します。

ISO on TCP (メッセージ指向のデータ転送)
プロトコルのバリエーション ISO on TCP を使用する接続を経由して、メッセージブロック
全体が送信されます。これらは受信によってそのように認識されます。ISO on TCP を使用している場合、メッセージブロックが完全に受信されると直ちに、「TRCV」がデータの受信を通知します。受信領域は、LEN および DATA パラメータによって定義されます。送信データに対して受信バッファ(DATA パラメータ)が小さすぎる場合、「TRCV」がエラーを通知します。データの正常な受信は、NDR 出力パラメータによって信号で示されます。
RCVD_LEN パラメータの実際に受信されたデータ長(バイト単位)は、受信後の LEN パラメ
ータのデータ長に相当します。

パラメータ
次の表に、「TRCV」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

説明

EN_R

Input

BOOL

I、Q、M、D、L、 受信可能です。
または定数

ID

Input

CONN_OUC I、Q、M、D、L、 「TCON」で確立された接続への参照。
または定数

3088

値の範囲:W#16#0001～W#16#0FFF

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイ
プ

メモリ領域

LEN

Input

UDINT

I、Q、M、D、L、 受信領域のバイト単位の長さ(非表示)
または定数

説明

S7-1200 の場合の最大値:8192; S7-1500 の場合の最大値:65536; CM 1542‑5 (FDL)の場
合の最大値:240.
DATA パラメータで最適化されたアクセスのある受信領域を使用する場合、LEN パラメー
タの値は「0」である必要があります。

ADHOC

Input

BOOL

I、Q、M、D、L、 TCP プロトコルのバリエーションの場合は、
または定数

アドホックモードを使用します(非表示)。
TCP プロトコルを使用していない場合、
ADHOC の値は FALSE であることが必要です。

DATA

InOut

VARIANT

I、Q、M、D、L

受信領域へのポインタ
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

NDR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ(New Data Received):• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:新しいデータが受信されました

BUSY

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または既に完了しています。
• 1:ジョブがまだ完了していません。新しいジョブを開始することはできません。

ERROR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ ERROR:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

RCVD_LEN

Output

UDINT

I、Q、M、D、L

実際に受信されたバイト単位のデータ量「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3089

通信
6.2 オープンユーザーコミュニケーション
LEN、DATA および RCVD_LEN パラメータ• LEN = 0 の場合、受信データは、DATA パラメータで指定された受信領域に保存されます。受信したバイト数は、RCVD_LEN パラメータで示されます。
LEN = 0 (LEN パラメータの既定の設定)の場合、受信するデータの長さを DATA パラメータで定義します。受信領域(DATA パラメータ)のサイズは、TSEND によって送信されるデータのサイズと同じであることをお奨めします。
LEN の値が 0 で、送信データが DATA 受信領域より小さいセグメント単位で転送される
場合、以下が適用されます。関連 TSEND 命令がすべてのデータを送信するまで、EN_R
はセットしたままにしておくことを推奨します。TSEND によって送信されたデータのサイズが DATA 受信領域のサイズと等しくない限り、STATUS は値 7002 を示します。
受信されたデータ量が DATA 受信領域のサイズと等しくなるまで、EN_R をセットする必要があります。EN_R を印加する場合は、BUSY=0 または ERROR <> 0 になるまでそうする必要があります。
DATA 受信領域のデータは、BUSY の値が 0 のときのみ有効です。
• LEN パラメータで指定された長さが、DATA パラメータで受信したデータの長さよりも大きい場合、エラーコード 8088 が STATUS パラメータに出力されます(以下の STATUS パ
ラメータの説明を参照)。
• 構造体(Struct)が DATA パラメータによって参照される場合、LEN をこの構造体よりも短くすることができます。この場合、LEN パラメータの長さまでのデータ以外は転送されません。
• DATA パラメータが最適化されたアクセスでデータブロックを参照する場合、LEN パラ
メータを「0」にセットする必要があります。基本データタイプのデータの長さが一致しない場合、データは受信されず、エラーコード 8088 が STATUS パラメータに出力されます。
• STRING データタイプが DATA パラメータによって参照される場合、LEN パラメータで指定される長さを 0 または 2 以上にする必要があります(LEN = 1 は許可されません)。
• WSTRING データタイプが DATA パラメータによって参照される場合、LEN パラメータで指定される長さを 0 または 5 以上にする必要があります。

BUSY、NDR および ERROR パラメータ
BUSY、NDR、ERROR および STATUS パラメータを使用してジョブのステータスを確認できます。BUSY パラメータは、処理ステータスを示します。NDR パラメータで、ジョブが正常に実行されたかどうかをチェックできます。TRCV の実行中にエラーが発生すると、ERROR
パラメータがセットされます。エラー情報が STATUS パラメータに出力されます。

3090

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
次の表に、BUSY、NDR、ERROR パラメータの関係を示します。
BUSY

NDR

ERROR

説明

1

-

-

ジョブが処理中です。

0

1

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。STATUS パラメータにエラーの原因が出力されます。

000

新しいジョブが割り当てられませんでした。

注記「TRCV」は非同期的に実行されるため、受信領域内のデータは、NDR パラメータが値「1」にセットされたときにのみ整合性があります。

ERROR および STATUS パラメータ
ERROR

STATUS* 説明(W#16#.
..)

0

0000

ジョブが正常に完了しました。受信データの現在の長さが RCVD_LEN パラメータに出力されます。

07000

ブロックの受信準備ができていません。

0

7001

ブロックの受信準備が完了し、受信ジョブが有効になりました。

0

7002

中間呼び出し。受信ジョブを実行中です。
注記:ジョブが処理されている間に、データが受信領域に書き込まれます。この間の受信領域へのアクセスでは、矛盾したデータが提供される場合があります。

1

8085

• LEN パラメータの値が最大許容値よりも大きくなっています(S7-1200 の場合:8192
バイト、S7-1500 の場合:65536 バイト)。
• 最初の呼び出しの後に、LEN または DATA パラメータの値が変更されました。
• LEN パラメータおよび DATA パラメータの値が「0」であるか、または LEN が最大許容値よりも大きな値です(S7-1200 の場合:8192 バイト、S7-1500 の場合:65536
バイト)。

1

8086

ID パラメータが許容値の範囲(1 ..0x0FFF)外です。

1

8088

• 受信領域が小さすぎます。
• LEN パラメータの値が、DATA パラメータで設定された受信領域よりも大きくなっています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3091

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS* 説明(W#16#.
..)

1

80A1

通信エラー:• 指定された通信がまだ確立されていません。
• 指定された接続を終了中です。この接続による受信ジョブは行えません。
• 接続を最初期化中です。

1

80B1

現在のジョブを終了する前に DATA パラメータが変更されました。

1

80B3

プロトコルの種類(接続記述子内の connection_type パラメータ)が UDP に設定されています。UDP 接続では命令「TURCV」を使用します。

1• この ID を持つブロックは、別の優先度グループで既に処理中です。

80C3• リソースが内部的に不足しています。
1

80C4

一時的な通信エラー:• 現時点では、パートナーに対する接続を確立できません。
• インターフェースが新しいパラメータの設定を受信中であるか、接続が確立中です。
• R/H システムが SYNCUP システム状態であるか、プライマリとバックアップが切り替えられています。接続が終了します。TRCV の処理が停止されます。

1

80C5

リモートパートナーによって接続が終了しました。

1

80C6

リモートパートナーに到達できません(ネットワークエラー)。

1

80C7

実行がタイムアウトしました。

1

80C9

受信領域の長さが送信データの長さよりも小さくなっています。

1

80EE

ハンドシェイクがまだ完了していません

1xxyy, xx

全般的なエラーの情報については、を参照してください。 AUTOHOTSPOT> 80*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、TCON、TDISCON、TSEND & TRCV のプログラム例 (ページ 3093)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

3092

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
下記も参照
TRCV:通信接続経由のデータ受信 (ページ 3079)
TCON:通信接続の確立 (ページ 3057)
同期命令と非同期命令の相違 (ページ 29)

6.2.6.5

TCON、TDISCON、TSEND & TRCV のプログラム例

概要
次の例では、S7-1500 シリーズの 2 つの CPU 間にプログラムされた接続を作成し、デー
タレコードを CPU 1 から CPU 2 へ送信します。

要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。それらの接続がまだ構成済みでないこと。

• [プロパティ|保護]での低い保護レベルは、CPU ごとに読み出しおよび書き込みアクセスが許可されることを保証します。

CPU 1 のプログラム:データストレージ
データレコードのために、次の PLC データタイプを作成します。

データ転送のために、作成された PLC データタイプに基づいて次のデータブロック「SLI_plcDB_sendData_TSEND」()を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3093

通信
6.2 オープンユーザーコミュニケーション

データを格納するために、以下の構造体およびタグを備えたグローバルデータブロック「SLI_gDB_TSEND」()を作成します。

CPU 1 のプログラム:パラメータの相互接続
FB「SLI_FB_TSEND」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「TCON」のパラメータを以下のように相互接続します。

3094

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 2:TCON のエラーの場合、ステータスを以下のように保存します。

ネットワーク 3:命令「TSEND」のパラメータを以下のように相互接続します。

ネットワーク 4:TSEND のエラーの場合、ステータスを以下のように保存します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3095

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 5:命令「TDISCON」のパラメータを以下のように相互接続します。

ネットワーク 6:TDISCON のエラーの場合、ステータスを以下のように保存します。

CPU 1 のプログラム:TCON の設定
入力パラメータ CONNECT を相互接続するには、[プロパティ|設定]で「TCON」命令のウ
ィザードを開きます。

3096

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション「TCON」に関して、以下の設定を行います。
入力フィールド 入力
終点

ドロップダウンリストを使用して、送信元および受信元の CPU を選択します。
インターフェース、サブネット、およびアドレスは自動的に入力され
ます。

接続データ

ドロップダウンリストを使用して、[新規作成]を選択して、CPU ごとに
1 つのデータブロックを作成します。
このデータブロックは、接続データを格納するために必要です。データブロックの名前は自由に選択できます。
アクティブ接続の確立は、CPU 1 (ローカル CPU)に対して有効化されま
す。

接続タイプ

エントリ「ISO-on-TCP」を選択します。
これは、「ISO-on-TCP」プロトコルによるイーサネット接続が接続セットアップで使用されることを示します。

接続 ID

通信接続で自由に選択された接続 ID を入力します。
接続 ID は、プロジェクトで既に割り当て済みであってはいけません。
その値が、使用される「connectionID」タグの値と一致することを確認します。

TSAP ID

そのアドレス詳細は、接続タイプ「ISO-on-TCP」の選択中に、自動的に入力されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3097

通信
6.2 オープンユーザーコミュニケーション

CPU 2 のプログラム:データストレージ
データレコードのために、次の PLC データタイプを作成します。

データ転送のために、作成された PLC データタイプに基づいて次のデータブロック「SLI_plcDB_rcvData_TRCV」()を作成します。

データを格納するために、以下の構造体およびタグを備えたグローバルデータブロック)を作成します。
「SLI_gDB_TRCV」(

3098

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

CPU 2 のプログラム:パラメータの相互接続
FB「SLI_FB_TRCV」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「TCON」のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3099

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 2:TCON のエラーの場合、ステータスを以下のように保存します。

ネットワーク 3:命令「TRCV」のパラメータを以下のように相互接続します。

ネットワーク 4:TRCV のエラーの場合、ステータスを以下のように保存します。

3100

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 5:命令「TDISCON」のパラメータを以下のように相互接続します。

ネットワーク 6:TDISCON のエラーの場合、ステータスを以下のように保存します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3101

通信
6.2 オープンユーザーコミュニケーション
CPU 2 のプログラム:TCON の設定
CPU 1 / TCON の例に従って、CPU 2 / TCON の接続のために以下の設定を行います。
注記
接続データ
CPU 1 / TCON を設定することによって、CPU ごとの接続データが格納されたデータブロック「PLC_Tsend_Connection_DB」(、「PLC_Trcv_Connection_DB」)を既に作成しています。新しいデータブロックを作成し、接続データを入力する代わりに、作成済みのデータブロック「PLC_Tsend_Connection_DB」(、「PLC_Trcv_Connection_DB」)をそのまま使用できます。
作成されたデータブロックが選択で使用できるには、それらが、プロジェクトツリーの[プログラムブロック|システムブロック]でまだ使用できることが必要です。

接続確立の手順
操作ステップの順序を遵守してください。
1.CPU 2 / TCON の場合、パラメータ REQ を「TRUE」に変更します。
2.CPU 1 / TCON の場合、パラメータ REQ を「TRUE」に変更します。

3102

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
3.CPU 2 / TCON の場合、パラメータ REQ を「FALSE」に変更します。
4.CPU 1 / TCON の場合、パラメータ REQ を「FALSE」に変更します。

接続終了の手順
操作ステップの順序を遵守してください。
1.CPU 1 / TDISCON の場合、パラメータ REQ を「TRUE」に変更します。
2.CPU 2 / TDISCON の場合、パラメータ REQ を「TRUE」に変更します。
3.CPU 1 / TDISCON の場合、パラメータ REQ を「FALSE」に変更します。
4.CPU 2 / TDISCON の場合、パラメータ REQ を「FALSE」に変更します。

CPU 1 の動作
ネットワーク 1 (TCON):

入力パラメータ REQ 「TCON.start」()がシグナル状態「TRUE」を提供すると、「TCON」命令が開始されます。複数の呼び出しの場合、「TCON」命令は、パートナー CPU への通信接続を作成します。これを行うために、接続データが入力パラメータ CONNECT (データブロッ
ク「PLC_Trcv_Connection_DB」)によってリトリーブされます。
成功した接続セットアップは、シグナル状態が「TRUE」の出力パラメータ DONE「#doneCON」()と値が「0000」の出力パラメータ STATUS 「TCON.status」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功
ステータスをタグ「TCON.done」に保存します。すべての過去の接続終了の成功ステータ
ス("TDISCON.done")をリセットします。
出力パラメータ ERROR 「TCON.error」()またはタグ「TCON.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

ネットワーク 2 (TCON):

TCON がエラー(「TCON.error」=「TRUE」)を通知するとき、報告されたステータス「TCON.status」()は持続的に保管されます(「TCON.memErrStatus」)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3103

通信
6.2 オープンユーザーコミュニケーション
ネットワーク 3 (TSEND):

入力パラメータ ID 「connectionID」()に基づいて、「TSEND」命令は、通信接続が使用されることを認識しています。
入力パラメータ REQ 「TSEND.start」()がシグナル状態「TRUE」を提供すると、「TSEND」命令が開始されます。複数の呼び出しの場合、「TSEND」命令は、入力パラメータ DATA「SLI_plcDB_sendData_TSEND」()で検出されたデータレコードを転送します。
成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE「#doneSEND」()と値が「0000」の出力パラメータ STATUS 「TSEND.status」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、
成功ステータスをタグ「TSEND.done」に保存します。
出力パラメータ ERROR 「TSEND.error」()またはタグ「TSEND.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

ネットワーク 4 (TSEND):TSEND がエラー(「TSEND.error」=「TRUE」)を通知するとき、報告されたステータス「TSEND.status」()は持続的に保管されます(「TSEND.memErrStatus」)。
ネットワーク 5 (TDISCON):

入力パラメータ REQ「TDISCON.start」()がシグナル状態「TRUE」を提供すると、「TDISCON」
命令が開始されます。複数の呼び出しの場合、「TDISCON」命令は、通信接続を終了します。
入力パラメータ ID 「connectionID」()で使用された通信接続は、この目的のためにリトリー
ブされます。
成功した接続の終了は、シグナル状態が「TRUE」の出力パラメータ DONE 「#doneDISC」()と値が「0000」の出力パラメータ STATUS 「TDISCON.status」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功ステータ
スをタグ「TDISCON.done」に保存します。接続セットアップ用の成功メッセージ("TCON.done")とデータ転送用の成功メッセージ("TSEND.done")をリセットします。
出力パラメータ ERROR 「TDISCON.error」()またはタグ「TDISCON.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

3104

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 6 (TDISCON):

TDISCON がエラー(「TDISCON.error」=「TRUE」)を通知するとき、報告されたステータス「TDISCON.status」()は持続的に保管されます(「TDISCON.memErrStatus」)。

CPU 2 の動作
TCON および TDISCON の場合は、動作は CPU 1 の場合と同じです。

ネットワーク 3 (TRCV):

入力パラメータ ID 「connectionID」()に基づいて、「TRCV」命令は、通信接続が使用されることを認識しています。
入力パラメータ EN_R 「TRCV.start」()がシグナル状態「TRUE」を提供すると、「TRCV」命令が開始されます。複数の呼び出しの場合、「TRCV」命令は、転送されたデータレコードを受信します。そのデータレコードは、入力パラメータ DATA「SLI_plcDB_rcvData_TRCV」()で検出されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3105

通信
6.2 オープンユーザーコミュニケーション
実際に転送されたデータレコードの BYTE 単位の長さは、出力パラメータ LEN 「#length」()
で示されます。この値は、成功ステータスの間だけ表示されます。この後、「0」が検出されます。成功したデータレコードの受信は、シグナル状態が「TRUE」の出力パラメータ
DONE 「#doneRCV」()と値が「0000」の出力パラメータ STATUS 「TRCV.status」()によって示されます。
出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、以下を実行します。
• 成功ステータスをタグ「TRCV.done」に保存します• BYTE 単位の長さをタグ「TRCV.readLength」に保存します。
出力パラメータ ERROR 「TRCV.error」()またはタグ「TRCV.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

ネットワーク 4 (TRCV):TRCV がエラー(「TRCV.error」=「TRUE」)を通知するとき、報告されたステータス「TRCV.status」()は持続的に保管されます(「TRCV.memErrStatus」)。

プログラムコード
追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
TCON:通信接続の確立 (ページ 3057)
TDISCON: 通信接続の終了 (ページ 3067)
TSEND:通信接続経由のデータ送信 (ページ 3074)
TRCV:通信接続経由のデータ受信 (ページ 3086)

3106

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
6.2.6.6

イーサネット(UDP)または FDL によるデータの送信と受信

TUSEND:データ送信

説明
TUSEND は、システムデータタイプ TCON_FDL を使用して、UDP 経由(ファームウェアバージョンが V2.0 以降の S7-1500-CPU の場合、標準搭載された PROFINET インターフェー
ス経由でマルチキャスト通信も可能です)、および CM 1542-5 V2.0 以降を備えた S7-1500の FDL 接続経由のデータ転送をサポートしています。
「TUSEND」命令は、ADDR パラメータによってアドレス指定された通信パートナーへデータを送信します。
警告
UDP 経由でのデータ転送
RFC 768 準拠の UDP を使用してデータを転送するときは、データは確認なしでパートナーに転送されるため、セキュアではありません。つまり、ブロックによって示されずにデータが失われる可能性があります。
1472 バイト以上転送されると、検出されない転送エラーのリスクが大幅に増加します。
注記異なるパートナーに対する順次送信操作の場合、「TUSEND」を呼び出すときに ADDR パラ
メータを調整するだけで済みます。「TCON (ページ 3053)」および「TDISCON (ページ 3067)」命令を再度呼び出す必要はありません。特定のパートナーがデータを受信する
ためには、このパートナーで UDP ポートをセットアップする必要があります。

1472 バイト以上の送信
S7-1500 CPU のファームウェアバージョン V2.5 以降では、ユニキャストまたはマルチキ
ャストを使用している場合、1472 バイトではなく、UDP 経由で最大 2048 バイトのデー
タを送信できます。
1472 バイト以上を送信する場合は、受信者が 1472 バイト以上をサポートしているかを確認する必要があります。そうでない場合、受信エラーが発生しても送信者側には通知されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3107

通信
6.2 オープンユーザーコミュニケーション
ファンクションの説明「TUSEND」命令は、非同期で動作します。すなわち、複数の呼び出しにわたってジョブ処理が行われます。もう一度接続を確立するには、REQ パラメータで信号立ち上がりエッジを作成します。
出力パラメータ BUSY、DONE、ERROR および STATUS は、ジョブのステータスを示します。
関連項目: 同期命令と非同期命令の相違 (ページ 29)。
次の表に、BUSY、DONE、ERROR の関係を示します。この表を使用して、「TUSEND」の現在のステータスや、送信プロセスがいつ終了したかを判別できます。
BUSY

DONE

ERROR

説明

TRUE

FALSE

FALSE

ジョブが処理中です。

FALSE

TRUE

FALSE

ジョブが正常に完了しました。

FALSE

FALSE

TRUE

ジョブがエラーありで終了しました。エラーの原因は、STATUS パラ
メータで確認できます。

FALSE

FALSE

FALSE

命令に(新しい)ジョブが割り当てられませんでした。

注記「TUSEND」の非同期操作が行われるため、DONE パラメータまたは ERROR パラメータの値
が TRUE になるまで、送信領域内のデータの整合性を保持してください。

3108

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ
次の表に、
「TUSEND」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ REQUEST は、信号立ち上が
または定数

説明

りエッジで送信ジョブを開始します。
DATA および LEN によって指定された領域か
らデータが転送されます。

ID

Input

CONN_OU I、Q、M、D、L、 ユーザープログラムとオペレーティングシス
C

または定数

テムの通信レイヤー間の関連接続を参照します。ID は、.TCON 命令を含むローカル接続記
述内の関連パラメータ ID と同一であることが必要です。
値の範囲:W#16#0001～W#16#0FFF

LEN

Input

UDINT

I、Q、M、D、L、 ジョブで送信するバイト数
または定数

イーサネット/UDP 用の値の範囲:1～1472(S7-1500 CPU のファームウェアバージョン
V2.5 以降でのユニキャストまたはマルチキャ
ストの場合:1～2048)
CM 1542‑5 の FDL 接続の場合、最大長は240 バイトです。これに関しては、接続パートナーが処理できる最大長に注意してくださ
い。

DONE

Output

BOOL

I、Q、M、D、L

ステータスパラメータ DONE:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました。この値は、1 つのサイクルに対してのみ表示
されます。

BUSY

Output

BOOL

I、Q、M、D、L• BUSY = 1:ジョブが未完了です。新しいジョブをトリガできません。
• BUSY = 0:ジョブが完了しました。

ERROR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ ERROR:• ERROR = 1:処理中にエラーが発生しまし
た。STATUS が、エラーのタイプに関する詳細情報を提供します

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3109

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタ
イプ

メモリ領域

説明

STATUS

Output

WORD

I、Q、M、D、L

ステータスパラメータ STATUS:エラー情報

DATA

InOut

VARIANT

I、Q、M、D

送信領域、アドレスおよび長さを含む
このアドレスは以下を参照します:• 入力のプロセスイメージ• 出力のプロセスイメージ• ビットメモリ• データブロック
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

ADDR

InOut

VARIANT

D

通信パートナーのアドレス情報
関連項目:TADDR_Param によるリモートパー
トナーのアドレス指定 (ページ 3117)および TADDR_SEND_QDN および TADDR_RCV_IP
によるリモートパートナーのアドレス指定(ページ 3119)
および AUTOHOTSPOT「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

ERROR および STATUS パラメータ
ERROR

STATUS*(W#16
#...)

説明

0

0000

送信ジョブがエラーなしで完了しました。

0

7000

ジョブ処理が行われていません。

0

7001

ジョブ処理が開始され、データを送信中です。
注記:この処理フェーズ中に、オペレーティングシステムが DATA 送信領域内のデー
タにアクセスします。

0

7002

中間呼び出し(REQ は対象外)。ジョブを処理中です。
注記:この処理フェーズ中に、オペレーティングシステムが DATA 送信領域内のデー
タにアクセスします。

1

3110

8085

LEN パラメータの値が「0」であるか、最大許容値よりも大きくなっています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*(W#16
#...)

説明

1

8086

ID パラメータが許容値の範囲内にありません。

0

8088

LEN パラメータが、DATA で指定されたメモリ領域よりも大きくなっています。

1

8089

パラメータ ADDR は、構造体 TADDR_Param または TADDR_SEND_QDN を備えたデー
タブロックを指していません。

1

80A1

通信エラー:• ユーザープログラムとオペレーティングシステムの通信レイヤ間の指定された接続がまだ確立されていません。
• ユーザープログラムとオペレーティングシステムの通信レイヤ間の指定された接続を現在終了中です。この接続を経由した送信はできません。
• インターフェースを再初期化中です。

1

80B1

現在のジョブを終了する前に DATA パラメータが変更されました。

1

80A4

リモート接続エンドポイントの IP アドレス(ADDR パラメータ)が無効です。ローカル
パートナー自身の IP アドレスと同一である可能性があります。

1

80B3

• プロトコルの種類(接続記述子内の connection_type パラメータ)が UDP に設定されていません。「TSEND (ページ 3074)」を使用してください。
• パラメータ ADDR:ポート番号に関する情報が無効です。

1

80B7

パラメータ ADDR によって参照される構造体の長さは 8 バイトではありません。

1

80C3

• この ID を持つブロックは、別の優先度クラスで既に処理中です。
• リソースが内部的に不足しています。

1

80C4

一時的な通信エラー:• リモートパートナーに到達できません。
• 現時点では、ユーザープログラムとオペレーティングシステムの通信レイヤ間の接続を確立できません。
• 新しいパラメータ設定がインターフェースに割り当てられています。
• FDL / PROFIBUS のみ:一時的に、受信リソースが接続パートナーで使用できません。
接続パートナーが受信する準備が完了していません。
• R/H システムが SYNCUP システム状態であるか、プライマリとバックアップが切り替えられています。接続が終了します。TUSEND の処理が停止されます。

1

80C5

• 接続が通信パートナーによって終了されました。
• リモート接続パートナーの LSAP がリリースされていません。

1

80C6

ネットワークエラー:• リモートパートナーに到達できません。
• PROFIBUS 上の物理的切断

1

80C7

実行がタイムアウトしました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3111

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*(W#16
#...)

説明

1

80D3

完全修飾ドメイン名を解決できませんでした。考えられる原因:• DNS サーバーに、たとえば、それがシャットダウンされているか、リモートポー
トに到達できないため、到達できません。
• DNS サーバーとの通信中にエラーが発生しました。
• DNS サーバーが有効な DNS 応答を返しましたが、その応答に IPv4 アドレスが含
まれていません。

1

80EA

DTLS (UDP)プロトコルはサポートされていません

1xxyy, xx

全般的なエラーの情報については、を参照してください。 AUTOHOTSPOT> 80*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、TUSEND & TURCV のプログラム例 (ページ 3121)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

3112

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
TURCV:データ受信

説明「TURCV」は、UDP 経由(ファームウェアバージョンが V2.0 以降の S7-1500-CPU の場合、標準搭載された PROFINET インターフェース経由でマルチキャスト通信も可能です)、および CM 1542-5 V2.0 以降を備えた S7-1500 の FDL 接続経由でデータを受信します。
「TURCV」が正常に完了すると、ADDR パラメータはリモートパートナー(送信者)のアドレ
スを表示します。
警告
セキュアでないデータ転送
RFC 768 準拠の UDP を使用してデータを転送するときは、データは確認なしでリモートパートナーに転送されるため、信頼性がありません。つまり、ブロックによって示されずにデータが失われる可能性があります。

1472 バイト以上の受信
S7-1500 CPU のファームウェアバージョン V2.5 以降では、以前のように 1472 バイトではなく、UDP 経由で最大 2048 バイトのデータを受信できます。
ただし、受信モジュールが最大 1472 バイトしかサポートしておらず、送信モジュールが1472 バイト以上を転送する場合、TURCV が STATUS パラメータに値 W#16#8085 またはW#16#80C9 を返します。

ファンクションの説明「TURCV」は非同期で動作する命令で、そのジョブ処理は複数の呼び出しに渡って行われます。EN_R = 1 で「TURCV」を呼び出すことによって、受信ジョブを開始します。
出力パラメータ BUSY、DONE、ERROR および STATUS は、ジョブのステータスを示します。
関連項目: 同期命令と非同期命令の相違 (ページ 29)。
次の表に、BUSY、NDR、ERROR の関係を示します。この表を使用して、TURCV の現在のステータスや、受信プロセスがいつ終了したかを判別できます。
BUSY

NDR

ERROR

説明

TRUE

FALSE

FALSE

ジョブが処理中です。

FALSE

TRUE

FALSE

ジョブが正常に完了しました。新しいデータが受信されました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3113

通信
6.2 オープンユーザーコミュニケーション
BUSY

NDR

ERROR

説明

FALSE

FALSE

TRUE

ジョブがエラーありで終了しました。エラーの原因は、STATUS パラ
メータで確認できます。

FALSE

FALSE

FALSE

命令に(新しい)ジョブが割り当てられませんでした。

注記「TURCV」の非同期操作が行われるため、受信領域内のデータは、NDR パラメータの値がTRUE であるときにのみ整合性があります。

パラメータ「TURCV」命令のパラメータを示します。
次の表に、
パラメータ

宣言

データタ
イプ

メモリ領域

説明

EN_R

Input

BOOL

I、Q、M、D、

制御パラメータ enabled to receive

L、または定数

EN_R = 1 の場合、「TURCV」は受信する準備ができています。受信ジョブを処理中です。

ID

Input

CONN_O

I、Q、M、D、

ユーザープログラムとオペレーティングシステムのUC

L、または定数

通信レイヤー間の関連接続を参照します。ID は、
ローカル接続記述内の関連 ID パラメータと同一であることが必要です。
値の範囲:W#16#0001～W#16#0FFF

LEN

Input

UDINT

I、Q、M、D、受信領域のバイト単位の長さ:0 (推奨値)、または 1

L、または定数～1472 (S7-1500 CPU のファームウェアバージョ
ン V2.5 以降でのユニキャストまたはマルチキャス
トの場合:1～2048)
CM 1542‑5 (FDL)の場合の最大値:240

NDR

Output

BOOL

I、Q、M、D、L ステータスパラメータ NDR:
• NDR = 0:ジョブがまだ開始されていないか、または実行中です。
• NDR = 1:ジョブが正常に完了しました

ERROR

Output

BOOL

I、Q、M、D、L ステータスパラメータ ERROR:• ERROR=1:処理中にエラーが発生しました。
STATUS が、エラーのタイプに関する詳細情報を
提供します

3114

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタ
イプ

メモリ領域

説明

BUSY

Output

BOOL

I、Q、M、D、L • BUSY = 1:ジョブが未完了です。新しいジョブをトリガできません。
• BUSY = 0:ジョブが完了しました。

STATUS

Output

WORD

I、Q、M、D、L ステータスパラメータ STATUS:エラー情報

RCVD_LEN

Output

UDINT

I、Q、M、D、L 実際に受信されたバイト単位のデータ量

DATA

InOut

VARIANT

I、Q、M、D、L 受信領域
アドレスは、以下を参照します。
• 入力のプロセスイメージ• 出力のプロセスイメージ• ビットメモリ• データブロック
構造体を転送するとき、それらの構造体は送信元と受信先で同一であることが必要です。

ADDR

InOut

VARIANTD

リモートパートナーのアドレス情報
関連項目:TADDR_Param によるリモートパートナ
ーのアドレス指定 (ページ 3117)および TADDR_SEND_QDN および TADDR_RCV_IP によるリモートパートナーのアドレス指定 (ページ 3119)および AUTOHOTSPOT「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

ERROR および STATUS パラメータ
ERROR

STATUS*( 説明W#16#...)

00000

新しいデータが受け入れられました。受信したデータの現在の長さは、RCVD_LEN に表示されます。

07000

ブロックの受信準備ができていません。

0

7001

ブロックの受信準備が完了し、受信ジョブが有効になりました。

0

7002

中間呼び出し。受信ジョブを処理中です。
注記:この処理フェーズ中に、「TURCV」が受信領域にデータを書き込みます。そのため、エラーによって受信領域内のデータの不一致が起こる恐れがあります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3115

通信
6.2 オープンユーザーコミュニケーション
ERROR

STATUS*( 説明W#16#...)

1

8085

LEN パラメータが最大許容値よりも大きいか、最初の呼び出し以降に LEN またはDATA パラメータの値を変更しました。

1

8086

ID パラメータが許容値の範囲内にありません

1

8088

• 受信領域が小さすぎます• LEN の値が、DATA によって指定された受信領域よりも大きくなっています。

1

8089

パラメータ ADDR は、構造体 TADDR_Param または TADDR_RCV_IP を備えたデータブ
ロックを指していません。

1

80A1

通信エラー:• ユーザープログラムとオペレーティングシステムの通信レイヤ間の指定された接続がまだ確立されていません。
• ユーザープログラムとオペレーティングシステムの通信レイヤ間の指定された接続を現在終了中です。この接続による受信ジョブは行えません。
• 新しいパラメータ設定がインターフェースに割り当てられています。

1

80B1

現在のジョブを終了する前に DATA パラメータが変更されました。

1

80B3

プロトコルの種類(接続記述子内の connection_type パラメータ)が UDP に設定されていません。「TRCV (ページ 3079)」を使用してください。

1

80B7

ADDR パラメータの長さが 8 バイトではありません。

1

80C3

• この ID を持つブロックは、別の優先度クラスで既に処理中です。
• リソースが内部的に不足しています。

1

80C4

一時的な通信エラー:• 新しいパラメータ設定がインターフェースに割り当てられています。
• R/H システムが SYNCUP システム状態であるか、プライマリとバックアップが切り替えられています。接続が終了します。TURCV の処理が停止されます。

1

80C5

リモートパートナーによって接続が終了しました。

1

80C7

実行がタイムアウトしました。

1

80C9

RFC1006 / UDP の場合:指定されている長さよりも長い受信データです(受信バッファのサイズを超えています)。

1

80EA

DTLS (UDP)プロトコルはサポートされていません

1xxyy, xx >全般的なエラーの情報については、を参照してください。 AUTOHOTSPOT

80*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

3116

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
例
例は、TUSEND & TURCV のプログラム例 (ページ 3121)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
TCON: 通信接続の確立 (ページ 3053)
TDISCON: 通信接続の終了 (ページ 3067)
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

TADDR_Param によるリモートパートナーのアドレス指定

概要
UDP 接続を使用するとき、リモートパートナーのアドレス情報をシステムデータタイプ
TADDR_Param に可能できます。
• 「TUSEND (ページ 3107)」命令では、パラメータ ADDR の TADDR_Param によって、受信元のアドレス情報を転送します。
リモートパートナーの格納されたアドレスデータが、この命令によって、システムデータタイプから読み出されます。
注記
リミテッドブロードキャストのサポート
ファームウェアバージョン V2.0 以降の S7-1500 CPU の場合、以下が命令「TUSEND」に適用されます。「TADDR_Param」システムデータタイプによってリモートパートナーのアドレス指定を行うとき、リミテッドブロードキャスト(リモートパートナーの IP ア
ドレス 255.255.255.255)は、IP ルーティングルールに従ってサポートされます。その
結果、リミテッドブロードキャストは、構成に従って既定のルータへのアクセスが可能なインターフェース経由でのみ送信されます。
IP 標準に従ってこの制限の対象でないため、ディレクテッドブロードキャストアドレ
スを使用することをお奨めします。
• 「TURCV (ページ 3113)」命令では、パラメータ ADDR の TADDR_Param によって送信元のアドレスを受信します。
アドレスデータが、この命令によって、システムデータタイプに書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3117

通信
6.2 オープンユーザーコミュニケーション
TADDR_Param に従ったアドレス情報の構造
システムデータタイプ TADDR_Param は、リモートパートナーのアドレス情報を収納し、IP
アドレスとポート番号から構成されます。
システムデータタイプ TADDR_Param の構造を以下に示します。
バイト パラメータ データタイプ
0～3

開始値

rem_ip_add ARRAY [1..4] of B#16#00 ...
r

USINT

説明
• リモートパートナーの IP アドレス。たとえば192.168.002.003 の場合:
– rem_ip_addr[1] = B#16#C0 (192)– rem_ip_addr[2] = B#16#A8 (168)– rem_ip_addr[3] = B#16#02 (002)– rem_ip_addr[4] = B#16#03 (003)
IP アドレスは、リモートパートナーのインターフェースプロパティのデバイス & ネットワークビュ
ーから取得できます。別の方法として、IP アドレ
スは、UDP 接続のプロパティのアドレス詳細にも表示されます。
• IPv4 マルチキャストグループのマルチキャストア
ドレス(ファームウェアバージョン V2.0 以降のS7-1500-CPU での「TUSEND」命令の場合。注記:「TURCV」命令の場合、マルチキャスト通信の場合にも送信元の IP アドレスを指定する必要がありま
す。)

4～5

rem_port_n UINT

B#16#00 ...

r

リモートポート番号(可能な値については、
AUTOHOTSPOT を参照してください)。
• 」を参照 rem_port_nr[1] = 16 進数のポート番号の上位バイト• rem_port_nr[2] = 16 進数のポート番号の下位バイ
ト
ポート番号は、UDP 接続プロパティのデバイス & ネットワークビューから取得できます。ポート番号は、
アドレス詳細に 10 進数値として表示されます。
例:ポート番号 = 2000 (10 進数) / W#16#07D0 (16 進数)• rem_port_nr[1] = 07 (上位バイト)• rem_port_nr[2] = D0 (下位バイト)

6～7

3118

reserved

WORD

B#16#00 ...

未使用。このパラメータの値は「0」のままです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
データブロックの TADDR_Param の作成
TADDR_Param を作成する場合、以下のオプションがあります。
• 新しいデータブロックを作成し、ダイアログ[新しいデータブロックの追加]で、タイプとして TADDR_Param を選択する。
• 既存のデータブロックを開き、新しいタグを作成して、列データタイプ TADDR_Paramに入力する。
データブロックには、複数のシステムデータタイプ TADDR_Param を収納できます。

TADDR_SEND_QDN および TADDR_RCV_IP によるリモートパートナーのアドレス指定

概要
ファームウェアバージョン V2.0 以降の S7-1500-CPU の場合、UDP 経由でデータを送信するとき、受信元のアドレス指定をその完全修飾ドメイン名を使用して行うことができます。
この場合、命令 TUSEND のパラメータ ADDR で、タイプ TADDR_SEND_QDN の構造体を参照します。
受信元は、IPv4 または IPv6 アドレスを返すことができます。このため、TURCV 命令のADDR パラメータで、タイプ TADDR_RCV_IP の構造体を参照します。この構造体のみに、両方の IP アドレスタイプが含まれる場合があります。

TADDR_SEND_QDN に従ったアドレス情報の構造
システムデータタイプ TADDR_SEND_QDN は、リモートパートナーの(受信元の)アドレス
情報を収納し、完全修飾ドメイン名とポート番号から構成されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3119

通信
6.2 オープンユーザーコミュニケーション
この文字列の構造を次に示します。
バイト パラメータ データタイプ

開始値

説明

0～

RemoteQD

ARRAY of-パートナーエンドポイントの Fully qualified domain

255

N

STRING[1..254

name、完全修飾ドメイン名は「.」で終わる必要があ]ります。
SIMATIC 環境では、その名前(最後のピリオドを含めて)は 254 文字を超えてはいけないことに注意してください。

256 ～ RemotePort UINT

B#16#00 ...

257

リモートポート番号(可能な値については、
AUTOHOTSPOT を参照してください)。
• RemotePort[1] = ポート番号の上位バイト(16 進数
表記)• RemotePort[2] = ポート番号の下位バイト(16 進数
表記)
例:ポート番号 = 2000 (10 進数) / W#16#07D0 (16 進数)• RemotePort[1] = 07 (上位バイト)• RemotePort[2] = D0 (下位バイト)

258 ～ reserved

WORD

W#16#00

未使用。このパラメータの値は「0」のままです。

259
注記
命令 TUSEND のランタイム
TUSEND のそれぞれの呼び出しで、完全修飾ドメイン名は解決され、IP アドレスが得られます。その結果、受信元をその IPv4 アドレスで直接に指定した場合より、TUSEND の実
行時間は長くなります。

TADDR_RCV_IP に従ったアドレス情報の構造
システムデータタイプ TADDR_RCV_IP は、リモートパートナーの(送信元の)アドレス情報を収納し、IP アドレス、ポート番号、および IP アドレスが IPv4 と IPv6 のどちらであるかに関する情報から構成されます。

3120

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
この文字列の構造を次に示します。
バイト パラメータ データタイプ

開始値

説明

0 ～ 15 RemoteAdd ARRAY [1..16]

B#16#00 ...

リモートパートナーの IP アドレス、たとえば IPv4 ア

ress

of BYTE

ドレス 192.168.002.003 の場合:
• RemoteAddress[1] = B#16#C0 (192)• RemoteAddress[2] = B#16#A8 (168)• RemoteAddress[3] = B#16#02 (002)• RemoteAddress[4] = B#16#03 (003)
以下が IPv6 アドレスに適用されます。

16 ～RemotePort UINT

B#16#00 ...

17

リモートポート番号(可能な値については、
AUTOHOTSPOT を参照してください)。
• RemotePort[1] = ポート番号の上位バイト(16 進数
表記)• RemotePort[2] = ポート番号の下位バイト(16 進数
表記)
例:ポート番号 = 2000 (10 進数) / W#16#07D0 (16 進数)• RemotePort[1] = 07 (上位バイト)• RemotePort[2] = D0 (下位バイト)

18

RemAddrTy BYTE

B#16#00

pe

リモートアドレスのタイプ:• B#16#03:IPv4• B#16#04:IPv6

19

reserved

BYTE

B#16#00

未使用。このパラメータの値は「0」のままです。

TUSEND & TURCV のプログラム例

概要
次の例では、S7-1500 シリーズの 2 つの CPU 間の設定済みの UDP 接続を作成します。命令「TUSEND」および「TURCV」を使用して、データレコードを CPU1 から CPU2 へ転送します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3121

通信
6.2 オープンユーザーコミュニケーション
要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。UDP 接続が構成されていること。

• [<CPU>|プロパティ|保護]での低い保護レベルが、CPU に対して読み出しおよび書き込
みアクセスが許可されることを保証していること。

CPU 1 のプログラム
データレコードのために、次の PLC データタイプ「TUSEND_User」を作成します。

データ転送のために、PLC データタイプ「TUSEND_User」に基づいて次のデータブロック「SLI_plcDB_sendData_TUSEND」()を作成します。

通信パートナーのアドレス指定のために、システムデータタイプ「TADDR_Param」に基づいて、次のデータブロック(「SLI_plcDB_taddr_param_TUSEND」)を作成します。

3122

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

アドレス日付については、[接続|プロパティ|アドレス詳細]の[ネットワークビュー]を参照
してください。以前に選択された CPU のデータは、[ローカル]のアドレス詳細で指定されています。次の図では、CPU 1 「TUsend」が選択されています。

データを格納するために、以下の構造体およびタグを備えたグローバルデータブロック「SLI_gDB_TUSEND」()を作成します。

FB「SLI_FB_TUSEND」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「TUSEND」のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3123

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 2:TUSEND のエラーの場合、ステータスを以下のように保存します。

CPU 2 のプログラム
データレコードのために、CPU 1 の例に基づいて PLC データタイプ「TUSEND_User」を作成します。
受信データのために、作成された PLC データタイプ(「TUSEND_User」)に基づいて次のデー
タブロック(「SLI_plcDB_rcvData_TURCV」)を作成します。

3124

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

通信パートナーのアドレス指定のために、システムデータタイプ「TADDR_Param」に基づいて、次のデータブロック(「SLI_plcDB_taddr_param_TURCV」)を作成します。

データを格納するために、以下の構造体およびタグを備えたグローバルデータブロック「SLI_gDB_TURCV」()を作成します。

FB「SLI_FB_TURCV」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「TURCV」のパラメータを以下のように相互接続します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3125

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 2:TURCV のエラーの場合、ステータスを以下のように保存します。

通信接続の割り当て
2 つの CPU の接続用アドレスパラメータは同一であることが必要です。
• それぞれの場合に、設定済み UDP 接続のハードウェア識別子の 16 進数値を入力パラ
メータ ID 「connectionID」()に格納します。
ハードウェア識別子については、[接続]の[ネットワークビュー]を参照してください。

3126

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
CPU 1 の結果
ネットワーク 1 (TUSEND):

入力パラメータ ID 「connectionID」()に基づいて、「TUSEND」命令は、通信接続が使用されることを認識しています。入力パラメータ ADDR「SLI_plcDB_taddr_param_TUSEND」()に基
づいて、通信パートナー(CPU 2)のアドレスを指定できます。
入力パラメータ REQ ("TUSEND.start")がシグナル状態「TRUE」を提供すると、「TUSEND」
命令が開始されます。複数の呼び出しの場合、「TUSEND」命令は、入力パラメータ DATA「SLI_plcDB_sendData_TUSEND」()で検出されたデータレコードを転送します。転送するデータレコードのサイズは、入力パラメータ LEN 「TUSEND.maxLength」()の値によって制限されます。
成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE「#doneSEND」()と値が「0000」の出力パラメータ STATUS「TUSEND.status」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、
成功ステータスをタグ「TUSEND.done」に保存します。
出力パラメータ ERROR「TUSEND.error」()またはタグ「TUSEND.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

ネットワーク 2 (TUSEND):

TUSEND がエラー(「TUSEND.error」=「TRUE」)を通知するとき、報告されたステータス「TUSEND.status」()は持続的に保管されます(「TUSEND.memErrStatus」)。

CPU 2 の結果
ネットワーク 1 (TURCV):

入力パラメータ ID 「connectionID」()に基づいて、「TURCV」命令は、通信接続が使用されることを認識しています。入力パラメータ ADDR 「SLI_plcDB_taddr_param_TURCV」()に基
づいて、通信パートナー(CPU 1)のアドレスを指定できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3127

通信
6.2 オープンユーザーコミュニケーション
入力パラメータ EN_R「TURCV.start」()がシグナル状態「TRUE」を提供すると、「TURCV」命
令が開始されます。複数の呼び出しの場合、「TURCV」命令は、転送されたデータレコー
ドを受信します。そのデータレコードは、入力パラメータ DATA「SLI_plcDB_rcvData_TURCV」()で検出されます。

実際に転送されたデータレコードの BYTE 単位の長さは、出力パラメータ LEN 「#length」()
で示されます。この値は、成功ステータスの間だけ表示されます。この後、「0」が検出されます。成功したデータレコードの受信は、シグナル状態が「TRUE」の出力パラメータ
DONE 「#doneRCV」()と値が「0000」の出力パラメータ STATUS 「TURCV.status」()によって示されます。
出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、以下を実行します。
• 成功ステータスをタグ「TURCV.done」に保存します• BYTE 単位の長さをタグ「TURCV.readLength」に保存します。
出力パラメータ ERROR 「TURCV.error」()またはタグ「TURCV.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

ネットワーク 2 (TURCV):TURCV がエラー(「TURCV.error」=「TRUE」)を通知するとき、報告されたステータス「TURCV.status」()は持続的に保管されます(「TURCV.memErrStatus」
)。

3128

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
プログラムコード
追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
TUSEND:データ送信 (ページ 3107)
TURCV:データ受信 (ページ 3113)

6.2.6.7

T_RESET: 接続のリセット

説明「T_RESET」命令は、既存の接続を終了した後で、再度確立します。
接続のローカルエンドポイントは保持されます。次の場合、ローカルエンドポイントは自動的に生成されます。
• 接続が設定されており、CPU に読み込み済みである場合。
• 接続が、ユーザーブログラム(たとえば「TCON (ページ 3053)」命令の呼び出し)によって生成済みである場合。
命令「T_RESET」は、すべての接続タイプ(TCP、UDP、ISO-on-TCP など)に対して実行することができます。この接続に CPU のローカルインターフェースまたは CM/CP のインターフェースが使用されたかどうかは重要ではありません。
REQ パラメータを使用して「T_RESET」命令が呼び出されると、ID パラメータで指定された接続が終了し、必要に応じてデータ送信および受信バッファがクリアされます。接続をキャンセルすると、進行中のすべてのデータ転送もキャンセルされます。このため、データ転送が進行中の場合はデータが喪失するリスクがあります。その後、アクティブな接続パートナーとして定義された CPU は、中断された通信接続の復元を自動的に試行します。このため、「TCON (ページ 3053)」命令を呼び出して通信接続を再確立する必要はありません。
出力パラメータ DONE、BUSY、および STATUS は、ジョブのステータスを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3129

通信
6.2 オープンユーザーコミュニケーション
パラメータ
次の表に、
「T_RESET」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 制御パラメータ REQUEST は、ID によっ
または定数

説明
て指定された接続を終了するためのジョブを開始します。このジョブは信号立ち上がりエッジで開始します。

ID

Input

CONN_OUC

I、Q、M、D、L、 中断されるパッシブパートナーへの接続
または定数の参照 ID は、ローカル接続記述子内の対応するパラメータ ID と同一であることが必要です。
値の範囲:W#16#0001～W#16#0FFF

DONE

Output

BOOL

I、Q、M、D、L

STATUS パラメータ DONE
• 0:ジョブがまだ開始されていないか、
または実行中です。
• 1:ジョブはエラーなく実行されました

BUSY

Output

BOOL

I、Q、M、D、L

STATUS パラメータ BUSY
• 0:ジョブが完了しました。
• 1:ジョブが未完了です。

ERROR

Output

BOOL

I、Q、M、D、L

STATUS パラメータ ERROR• 0:エラーは発生しませんでした。
• 1:処理中にエラーが発生しました。
STATUS パラメータにエラーの種類に関する詳細情報を表示します。

STATUS

Output

WORD

I、Q、M、D、L

STATUS パラメータ STATUS
エラー情報(「STATUS パラメータ」の表を参照)。

「AUTOHOTSPOT」を参照してください。
有効なデータタイプに関する追加情報については、

3130

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
STATUS パラメータ
STATUS* 説明(W#16#...
)
0000

エラーはありません。

0001

接続が確立されていません

7000

ジョブ処理が行われていません。

7001

接続終了処理が開始しました。

7002

接続を終了しています。

8081

ID パラメータで不明な接続が指定されています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

例
例は、T_RESET のプログラム例 (ページ 3131)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

6.2.6.8

T_RESET のプログラム例

概要
次の例では、2 つの CPU 間の設定済み接続(たとえば、UDP による)を使用します(S7-1500)。命令「T_RESET」を使用して接続をリセットします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3131

通信
6.2 オープンユーザーコミュニケーション
要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。UDP 接続が構成されていること。

• [<CPU>|プロパティ|保護]での低い保護レベルが、CPU に対して読み出しおよび書き込
みアクセスが許可されることを保証していること。

タグの作成とパラメータの相互接続(CPU 1 のプログラム)
データを格納するために、以下の構造体およびタグを備えたグローバルデータブロック「SLI_gDB_T_RESET」()を作成します。

FB「SLI_FB_T_RESET」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「T_RESET」のパラメータを以下のように相互接続します。

3132

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 2:T_RESET のエラーの場合、ステータスを以下のように保存します。

ネットワーク 3:「REQ」パラメータをリセットするために、以下の相互接続を作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3133

通信
6.2 オープンユーザーコミュニケーション
通信接続の割り当て
パラメータのアドレス指定は、接続に適合することが必要です。
• 設定済み UDP 接続のハードウェア識別子の 16 進数値を入力パラメータ ID「connectionID」()に格納します。
ハードウェア識別子については、[接続]の[ネットワークビュー]を参照してください。

結果
ネットワーク 1:

入力パラメータ ID 「connectionID」()に基づいて、「T_RESET」命令は、通信接続が使用されることを認識しています。
入力パラメータ REQ 「T_RESET.start」()がシグナル状態「TRUE」を提供すると、「T_RESET」
命令が開始されます。「T_RESET」命令は、指定された通信接続を終了します。接続を使用するすべてのジョブが終了します。この後、動作中の接続パートナー(CPU 1)が、自動的に接続を再確立します。
成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE「#done」()と値が「0000」の出力パラメータ STATUS 「T_RESET.status」()によって示されます。
出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功ステ
ータスをタグ「T_RESET.done」に保存します。
出力パラメータ ERROR「T_RESET.error」()またはタグ「T_RESET.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

3134

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ネットワーク 2:

T_RESET がエラー(「T_RESET.error」=「TRUE」)を通知するとき、報告されたステータス「T_RESET.status」()は持続的に保管されます(「T_RESET.memErrStatus」)。
ネットワーク 3:

T_RESET の処理が成功した後(「T_RESET.done」)、T_RESET は停止されます。

プログラムコード
追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
T_RESET: 接続のリセット (ページ 3129)

6.2.6.9

T_DIAG: 接続のチェック

説明「T_DIAG」命令を使用し、接続のステータスをチェックし、この接続のローカルエンドポ
イントに関する詳細情報を読み出します。
• 接続は ID パラメータによって参照されます。接続エディタで設定した接続エンドポイ
ント、および、たとえば「TCON」命令によってプログラミングされた接続エンドポイ
ントの両方を読み出すことが可能です。
一時接続エンドポイント(たとえばエンジニアリングステーションに接続する際に作成されたエンドポイント)は、この処理では接続 ID が生成されないため、診断することはできません。
• 読み出された接続情報は、RESULT パラメータが参照する構造体に格納されます。
• 出力パラメータ STATUS は、接続情報を読み出せたかどうかを示します。RESULT パラ
メータの構造体内の接続情報は、「T_DIAG」命令が STATUS = W#16#0000、および
ERROR = FALSE で完了した場合のみ有効です。
エラーが発生する場合、接続情報は評価できません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3135

通信
6.2 オープンユーザーコミュニケーション
接続情報に含まれる情報
RESULT パラメータでの接続情報の読み出しには、2 つの異なる構造体が使用できます。
• 「TDiag_Status」構造体には、使用されるプロトコル、接続ステータス、送信または受信されるデータのバイト数といった、接続エンドポイントに関する最も重要な情報のみが含まれます。
• 構造体「TDiag_StatusExt」には最も重要な情報だけではなく、接続試行の回数や接続中止の理由なども含まれます。
この 2 つの構造体の構造およびパラメータを以下に記載します(「TDIAG_Status および
TDIAG_StatusExt 構造体」の表を参照)。

パラメータ
次の表に、「T_DIAG」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジが存在する場合、
または定数

説明
命令を開始して ID パラメータで指定された接続をチェックします。

ID
RESULT

Input
InOut

CONN_OUC

I、Q、M、D、L、 割り当てられた接続へのリファレンス(WORD)

または定数

値の範囲:W#16#0001～W#16#0FFF

VARIANT

D

接続情報が格納されている構造体へのポインタ。構造体 TDiag_Status またはTDiag_StatusExt は、RESULT パラメータで使用可能です(詳細については、「TDIAG_Status および TDIAG_StatusExt
構造体」の表を参照)。

DONE

Output

BOOL

I、Q、M、D、L

ステータスパラメータ:• 0:命令がまだ開始されていないか、または実行中です。
• 1:命令がエラーなしで実行されまし
た。

BUSY

Output

BOOL

I、Q、M、D、L

ステータスパラメータ:• 0:命令がまだ開始されていないか、既に完了しています。
• 1:命令がまだ完了していません。新しいジョブを開始することはできませ
ん。

3136

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ

宣言

データタイプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L

ステータスパラメータ:• 0:エラーはありません。
• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

BUSY、DONE および ERROR パラメータ
BUSY、DONE、ERROR、および STATUS パラメータを使用して、「T_DIAG」命令の実行ス
テータスをチェックできます。BUSY パラメータは、処理ステータスを示します。DONE パ
ラメータを使用し、命令が正常に実行されたかどうかをチェックします。「T_DIAG」の実
行中にエラーが発生すると、ERROR パラメータがセットされます。
次の表に、BUSY、DONE、ERROR パラメータの関係を示します。
BUSY DONE ERRO 説明
R
1

-

-

命令が処理中です。

0

1

0

命令は正常に実行されました。RESULT が参照する構造体内のデータは、この場合のみ有効です。

00

1

命令完了(エラーあり)。STATUS パラメータにエラーの原因が出力されます。

0

0

0

新しい命令が割り当てられていません。

STATUS パラメータ
次の表に、STATUS パラメータの値の意味を示します。
STATU
S*
(W#16
#...)

説明

0000

「T_DIAG」命令は正常に実行されました。RESULT パラメータで参照される構造体内のデータを評価
できます。

7000

命令の処理が行われていません。

7001

命令の処理が開始されました。

7002

接続情報が読み出されています(REQ パラメータは対象外)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3137

通信
6.2 オープンユーザーコミュニケーション
STATU
S*
(W#16
#...)

説明

8086

ID パラメータの値が有効な範囲(W#16#0001～W#16#0FFF)外にあります。

8089

RESULT パラメータが不正なデータタイプをポイントしています(構造体 TDIAG_Status および
TDIAG_StatusExt のみ)。

80A3

ID パラメータが、存在していない接続エンドポイントを参照しています。プログラミングされた接続の場合、このエラーは「TDISCON」命令の呼び出し後も発生する可能性があります。

80B1

T_DIAG の実行が完了する前に、RESULT パラメータが変更されました。T_DIAG の実行中に、
RESULT の変更は許可されません。

80C4

内部エラー一時的に接続エンドポイントにアクセスできません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

構造体 TDIAG_Status および TDIAG_StatusExt
以下の表で、TDIAG_Status および TDIAG_StatusExt 構造体の形式について説明します。
• InterfaceID から ReceivedBytes パラメータまでは、「TDIAG_StatusExt」と「TDIAG_Status」命令で同じです。
• 構造体 TDIAG_StatusExt には、パラメータ ConnTrials～LastDisconnTimeStamp も含まれています。
各エレメントの値は、命令がエラーなく実行された場合にのみ有効です。エラーが発生する
場合、パラメータの内容は変化しません。
名前

データタ
イプ

説明

以下のパラメータは、TDIAG_Status および TDIAG_StatusExt 構造体の両方で使用されます。
InterfaceID

HW_ANYCPU または CM/CP のインターフェース ID (LADDR)

ID

CONN_O

診断される接続 ID。呼び出しに成功すると、このエレメントの値はUC「T_DIAG」命令のパラメータ ID と同じになります。

3138

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
名前

データタ
イプ

ConnectionType BYTE

説明
接続に使用されるプロトコルタイプ:• 0x01:未使用。
• ...
• 0x0B:TCP プロトコル(IP_v4)• 0x0C:ISO-on-TCP プロトコル(RFC1006)• 0x0D:TCP プロトコル(DNS)• 0x0E:ダイヤルインプロトコル• 0x0F:WDC プロトコル• 0x10:SMTP プロトコル• 0x11:TCP プロトコル• 0x12:TCP および ISO-on-TCP プロトコル(RFC1006)• 0x13:UDP プロトコル• 0x14:予約済み• 0x15:PROFIBUS バスアクセスプロトコル(FDL)• 0x16:ISO 8073 転送プロトコル(ISO ネイティブ)• ...
• 0x20:IPv4 に基づく SMTP または SMTPS プロトコル• 0x21: IPv6 に基づく SMTP または SMTPS プロトコル• 0x22:FQDN (Fully Qualified Domain Name)に基づく SMTP または SMTPS
プロトコル
• ...
• 0x70:S7 コネクション• その他:予約済み

ActiveEstablishe BOOL

• FALSE:ローカル、パッシブ接続エンドポイントd• TRUE:ローカル、アクティブ接続エンドポイント

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3139

通信
6.2 オープンユーザーコミュニケーション
名前

データタ
イプ

説明

State

BYTE

接続エンドポイントの現在のステータス• 0x00:未使用。
• 0x01:接続が終了しました。「T_RESET」命令呼び出し後などの、一時的なステータス。この後、システムは接続の再確立を自動的に試行します。
• 0x02:アクティブ接続エンドポイントが、リモート通信パートナーへの接続確立を試行しています。
• 0x03:パッシブ接続エンドポイントが、リモート通信パートナーへの接続確立を待機しています。
• 0x04:接続が確立されました。
• 0x05:接続を終了中です。これは、"T_RESET"または"T_DISCON」命令が呼び出されたためである可能性があります。Other possible reasons areprotocol errors and line breaks.
• 0x06～0xFF:未使用。

Kind

BYTE

接続エンドポイントのモード:• 0x00:未使用。
• 0x01:設定済み、スタティック接続が設定され CPU に読み込まれています。
• 0x02:設定済み、ダイナミック接続が設定され CPU に読み込まれています(現在はサポートされていません)。
• 0x03:「TCON"命令を使用してユーザープログラムによって生成された、プログラミングされた接続です。「TDISCON」命令の呼び出し、または CPUの STOP ステータスへの移行によって、接続エンドポイントが破棄されました。
• 0x04:エンジニアリングステーション(ES)またはオペレータステーション(OS)によって一時的で動的な接続が確立されています(この接続は、ID が不明なために、現在診断されていません)。
• 0x05～0xFF:未使用。

SentBytes

UDINT

送信済みデータバイト数。

ReceivedBytes

UDINT

受信済みデータバイト数。

以下のパラメータは、TDiag_StatusExt 構造体でのみ使用します。
ConnTrials

UDINT

接続試行の回数。接続が正常に確立されると、ConnTrials の値は 0 になります。このエレメントが 0 と等しくない場合は、接続上の問題があることを示します。
注記:パッシブ接続エンドポイントの場合、この値は「1」よりも大きくなる
ことはありません。

3140

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
名前

データタ
イプ

説明

ConnTrialsSucce UDINT

成功した接続試行の回数。このエレメントは接続エンドポイントのライフサ

ss

イクル中にリセットされることはなく、0xFFFF FFFF に到達すると 0 に戻ります。
注記:この接続に問題が発生していない場合、このパラメータは「1」です。

LastConnErrRea UDINT

エラーが発生した最後の接続試行中の出力されたエラー ID(エラーメッセージsonは LastDisconnReason パラメータのものと同じです):• 0x4F01:リモート接続エンドポイントに到達できません(通常、このエラー
は接続の確立中に発生します。)。
• 0x4F02:接続がローカルで終了しました。
• 0x4F03:接続がリモート通信パートナーによって終了されました。
• 0x4F04:接続がプロトコルエラーよって終了されました。
• 0x4F05:接続がローカルで検出されたネットワークの問題よって終了されました。
• 0x4F06:接続がリモートで検出されたネットワークの問題よって終了されました。
• 0x4F07:接続がプロトコルのタイムアウトによって終了されました。
• 0x4F08:不正なパラメータ割り当て:ローカルパートナー自身のアドレスに接続を確立しようとしています。
• 0x4F09:接続が「T_RESET」命令の呼び出しによって一時的にリセットされました。
• 0x4F0A:使用可能な接続リソースが不足しています(数が多すぎます)。
• 0x4F0B:内部エラー:不正なアドレスパラメータ• 0x4F0C:内部 CPU 通信エラー• 0x4F0D:CPU と CM/CP 間の内部 AS 通信エラー• 0x4F0E:指定されたローカル TCP/UDP ポート(または RFC1006-T セレクタ)
が、既に使用されています。

LastConnErrTim LDT

エラーが発生した最後の接続試行の時間。

eStamp

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3141

通信
6.2 オープンユーザーコミュニケーション
名前

データタ
イプ

説明

LastDisconnRea UDINT

最後の接続が終了する原因となったエラー ID(エラーメッセージは

son

LastConnErrReason パラメータのものと同じです):• 0x4F01:リモート接続エンドポイントに到達できません(通常、このエラー
は接続の確立中に発生します。)。
• 0x4F02:接続がローカルで終了しました。
• 0x4F03:接続がリモート通信パートナーによって終了されました。
• 0x4F04:接続がプロトコルエラーよって終了されました。
• 0x4F05:接続がローカルで検出されたネットワークの問題よって終了されました。
• 0x4F06:接続がリモートで検出されたネットワークの問題よって終了されました。
• 0x4F07:接続がプロトコルのタイムアウトによって終了されました。
• 0x4F08:不正なパラメータ割り当て:ローカルパートナー自身のアドレスに接続を確立しようとしています。
• 0x4F09:接続が「T_RESET」命令の呼び出しによって一時的にリセットされました。
• 0x4F0A:使用可能な接続リソースが不足しています(数が多すぎます)。
• 0x4F0B:内部エラー:不正なアドレスパラメータ• 0x4F0C:内部 CPU 通信エラー• 0x4F0D:CPU と CM/CP 間の内部 AS 通信エラー• 0x4F0E:指定されたローカル TCP/UDP ポート(または RFC1006-T セレクタ)
が、既に使用されています。

LastDisconnTim LDT

最後の接続終了の時間。

eStamp例
例は、T_DIAG のプログラム例 (ページ 3143)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

3142

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
6.2.6.10

T_DIAG のプログラム例

概要
次の例では、2 つの CPU 間の設定済み接続(たとえば、UDP による)を使用します(S7-1500)。命令「T_DIAG」は、接続を診断し、接続のローカルエンドポイントから情報を読み出すために使用されます。

要件• S7-1500 シリーズの 2 つの CPU が使用でき、PROFINET 経由で相互に接続されていること。UDP 接続が構成されていること。

• [<CPU>|プロパティ|保護]での低い保護レベルが、CPU に対して読み出しおよび書き込
みアクセスが許可されることを保証していること。

タグの作成とパラメータの相互接続(CPU 1 のプログラム)
データを格納するために、以下の構造体およびタグを備えたグローバルデータブロック「SLI_gDB_T_DIAG」()を作成します。
注記: 「TDiag_StatusExt」は、記録された診断データ用のシステムデータタイプです。

FB「SLI_FB_T_DIAG」を作成し、その FB 内に以下のローカルタグを作成します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3143

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 1:命令「T_DIAG」のパラメータを以下のように相互接続します。

ネットワーク 2:T_DIAG のエラーの場合、ステータスを以下のように保存します。

通信接続の割り当て
パラメータのアドレス指定は、接続に適合することが必要です。
• 設定済み UDP 接続のハードウェア識別子の 16 進数値を入力パラメータ ID「connectionID」()に格納します。
ハードウェア識別子については、[接続]の[ネットワークビュー]を参照してください。

3144

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
結果
ネットワーク 1:

入力パラメータ ID 「connectionID」()に基づいて、「T_DIAG」命令は、通信接続が使用されることを認識しています。
入力パラメータ REQ 「T_DIAG.start」()がシグナル状態「TRUE」を提供すると、「T_DIAG」
命令が開始されます。「T_DIAG」命令は、接続のステータス、および接続のローカルエン
ドポイントのステータスを読み出します。
成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE「#done」()と値が「0000」の出力パラメータ STATUS 「T_DIAG.status」()によって示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功
ステータスをタグ「T_DIAG.done」に保存します。
出力パラメータ ERROR 「T_DIAG.error」()またはタグ「T_DIAG.memErrStatus」は、例の処理がエラーなしで行われていることを示します。

診断データは、RESULT パラメータ(「TDiag_StatusExt」)に記録されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3145

通信
6.2 オープンユーザーコミュニケーション
ネットワーク 2:

T_DIAG がエラー(「T_DIAG.error」=「TRUE」)を通知するとき、報告されたステータス「T_DIAG.status」()は持続的に保管されます(「T_DIAG.memErrStatus」)。

プログラムコード
追加情報および前述の例のプログラムコードについては、以下を参照してください。命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
T_DIAG: 接続のチェック (ページ 3135)

6.2.6.11

T_CONFIG:インターフェースの設定

T_CONFIG の説明

説明「T_CONFIG」命令は、CPU の統合 PROFINET インターフェース、または、CP/CM のイーサ
ネットインターフェースのプログラム制御設定に使用されます。

CPU の標準搭載された PROFINET インターフェースの設定
ユーザープログラム内でこの「T_CONFIG」命令を使用して、イーサネットアドレス、
PROFINET デバイス名、または時刻同期用の NTP サーバーの IP アドレスを変更できます。
既存の構成データが上書きされます。

3146

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
以下の変更を行うことができます。
• IP プロトコルの設定– IP アドレス– サブネットマスク– ルータアドレス• PROFINET の設定– PROFINET デバイス名の割り当て
注記
デバイス名と IP プロトコル間の依存関係
新しいデバイス名を割り当てるときは、IP プロトコルも設定する必要があります。
• 時刻同期用の設定– 時刻同期用 NTP サーバーの IP アドレスの割り当て(S7-1500 および S7-1500 モジュール式 CPU の PROFINET インターフェース[X1]の場合のみ)
これらの設定は、[イーサネットアドレス]ダイアログの[IP プロトコル]および[PROFINET]の設定オプションまたは[時刻同期]ダイアログの[NTP モード]の設定オプションに対応します。
これは、[デバイス & ネットワーク]ビューの PROFINET インターフェースのプロパティに表示されます。
警告「T_CONFIG」命令の実行後の CPU の再起動(ファームウェアバージョン V2.0 ～ V4.1.2 のS7-1200 CPU のみ)
CPU は、この命令を実行して IP パラメータを変更した後に、再起動されます。CPU が
STOP モードに移行し、ウォームリスタートが実行されてから、CPU が再起動します(RUN
モード)。
この命令の実行に続いて CPU が再起動された後に、制御プロセスが安全な動作モードであることを確認します。制御されていない操作は、たとえば、誤動作またはプログラミ
ングエラーのために、重大な機器の損傷または人身傷害を招く場合があります。非保持データは失われる場合があります。

CP 154x-1 のイーサネットインターフェースの設定
この「T_CONFIG」命令を使用して、IPv6 アドレス、MAC アドレス、または CP のイーサ
ネットインターフェースの最大 2 つの DNS サーバーの IP アドレスをユーザープログラム内
から変更できます。さらに、CP に対して NTP サーバーを設定できます。既存の構成デー
タが上書きされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3147

通信
6.2 オープンユーザーコミュニケーション
要件• この命令を使用するには、PROFINET インターフェースの特定のプロパティを設定する必要があります。このために、デバイスビューで、PROFINET インターフェースのプロ
パティを開きます。「イーサネットアドレス」または「時刻同期」ダイアログで、以下のオプションを有効にします。
– 「T_CONFIG」を使用して IP アドレスパラメータを変更するには:[IP プロトコル]の設定[IP アドレスをデバイスに直接設定する]を選択します。
– 「T_CONFIG」を使用して PROFINET デバイスネームを変更するには:[PROFINET]の設定[PROFINET デバイスネームをデバイスに直接設定する]を選択します。
[IP プロトコル]の設定[IP アドレスは、デバイスで直接設定されます]も選択します。
– 「T_CONFIG」を使用して NTP サーバーの IP アドレスを変更します。
[IP プロトコル]の設定[IP アドレスをデバイスに直接設定する]を選択します。
[NTP サーバー経由の時間同期の有効化]を選択し、少なくとも 1 つの NTP サーバーのIP アドレスを指定します。
• 構成データを以下のシステムデータタイプに格納し、パラメータ CONF_DATA (ページ 3150)に割り当てる必要があります。
– IP アドレス、サブネットマスク、およびルータアドレスは、システムデータタイプ
IF_CONF_V4 に格納します。
– デバイス名は、システムデータタイプ IF_CONF_NOS に格納します。デバイス名の割り当てに関する制限を遵守してください(パラメータ CONF_DATA (ページ 3150)を参照)。
– 「NTP 時刻同期用 IP アドレスをシステムデータタイプ IF_CONF_NTP に格納」を使用します。
– CP 1543-1 の PROFINET インターフェースの IPv6 アドレスをシステムデータタイプ
IF_CONF_IPV6 に格納します。
– CP 1543-1 の PROFINET インターフェースの MAC アドレスをシステムデータタイプ
IF_CONF_MAC に格納します。
– CP 1543-1 の PROFINET インターフェース用の最大 2 つの DNS サーバーの IP アドレ
スをシステムデータタイプ IF_CONF_DNS に格納します。

ファンクションの説明「T_CONFIG」命令は、非同期で動作します。つまり、複数の呼び出しにわたって実行されます。この設定プロセスは、REQ = 1 で「T_CONFIG」を呼び出すことによって開始されます。常に 1 つのジョブしかアクティブにできません。
このブロックはエッジでトリガされます。すなわち、BUSY = FALSE の後に、REQ = FALSE
でブロックを再び呼び出して、インスタンスを有効にする必要があります。

3148

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
パラメータ
次の表に、
「T_CONFIG」命令のパラメータを示します。
パラメータ

宣言

データタイプ メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、命令の呼び出しが REQ = 1 の場合、命令の処

L、または定数理を開始します。

HW_INTERFA

I、Q、M、D、

インターフェースのハードウェア識別子

CE

L、または定数

ハードウェア ID は、デバイスビューのインタ

INTERFACE

Input

ーフェースのプロパティ、および、PLC タグのシステム定数に表示されます。
CONF_DATA Input

VARIANT

D、L

システムデータタイプ IF_CONF_HEADER、(ペー

IF_CONF_V4、IF_CONF_NOS、

ジ 3150)

IF_CONF_NTP、IF_CONF_V6、
IF_CONF_MAC、および IF_CONF_DNS を含む
上位レベル構造体へのポインタ(パラメータ
CONF_DATA の説明を参照)。

DONE (ペー Output

BOOL

ジ 3158)

I、Q、M、D、L ステータスパラメータ:• 0:処理がまだ完了していません。
• 1:命令の処理が正常に終了しました。

BUSY (ペーOutputBOOL

ジ 3158)

I、Q、M、D、L ステータスパラメータ:• 0:命令の処理がまだ開始されていないか、完了したか、またはキャンセルされました。
• 1:命令の処理が進行中です

ERROR (ペー Output

BOOL

ジ 3158)

I、Q、M、D、L ステータスパラメータ:• 0:エラーなし• 1:エラーSTATUS (ペOutputDWORDージ 3159)

I、Q、M、D、L 詳細なステータス情報
エラーコードの形式での詳細なエラーおよびステータス情報が、パラメータ STATUS に出力されます。

ERR_LOC (ペ Output

DWORD

ージ 3159)

I、Q、M、D、L エラーの場所:• 0:命令の実行またはパラメータの割当時のエラー。
• > 0:CONF_DATA パラメータの設定データの構造体または内容のエラー。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3149

通信
6.2 オープンユーザーコミュニケーション
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

例
例は、T_CONFIG のプログラム例 (ページ 3162)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
同期命令と非同期命令の相違 (ページ 29)

パラメータ CONF_DATA

構成データの構造体
CONF_DATA パラメータの構成データは、グローバルデータブロック、または、ブロック
インターフェースのセクション「Static」に格納できます。
構成データは、以下の構造体に従って、格納する必要があります。
名前

データタイプ説明

ConfData

StructCONF_DATA パラメータに割り当てられる親構造体。

IF_CONF_HEA

ヘッダーは、システムデータタイプの数を定義するために使用されます。シDER

ステムデータタイプ IF_CONF_HEADER は常に含まれます。

IF_CONF_V4

IP アドレス、サブネットマスク、およびルータアドレスは、このシステムデ

HeaderIPDataータタイプに格納されます。
NoS

IF_CONF_NOS

PROFINET デバイスネームは、このシステムデータタイプに格納されます。
IF_CONF_NOS は、「T_CONFIG」を使用してデバイス名を変更する場合のみ、作成します。

NTP

IF_CONF_NTP「時刻同期用 NTP サーバーの IP アドレスをこのシステムデータタイプでは、格納」を使用します。

IP_V6

IF_CONF_V6

CP 154x-1 の IPv6 アドレスをこのシステムデータタイプに格納します。

MAC

IF_CONF_MAC CP 154x-1 の MAC アドレスをこのシステムデータタイプに格納します。

DNS

IF_CONF_DNS

CP 154x-1 用の最大 2 つの DNS サーバーの IP アドレスをこのシステムデータ
タイプに格納します。

3150

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
データブロックまたはブロックインターフェースの「データタイプ」列にシステムデータ
タイプの名前を入力することによって、システムデータタイプ IF_CONF_HEADER、
IF_CONF_V4、IF_CONF_NOS、IF_CONF_NTP、IF_CONF_V6、IF_CONF_MAC、および
IF_CONF_DNS を作成します。システムデータタイプの名前は、自由に割り当てることができます。システムデータタイプは、任意の順序で、組み合わせることができます。

システムデータタイプ IF_CONF_Header
システムデータタイプ IF_CONF_Header を使用して、「T_CONFIG」を実行するときに使用するシステムデータタイプ IF_CONF_V4、IF_CONF_NOS、IF_CONF_NTP、IF_CONF_V6、
IF_CONF_MAC、および IF_CONF_DNS の数を指定します。
バイト

パラメータ

データタイ 開始値
プ

説明

0 ... 1

FieldTypeUINT

0フィールドタイプ:常に値が「0」。

2 ... 3

FieldId

UINT

0。
エラー ID:常に値が「0」4 ... 5

SubfieldCount

UINT

0

使用するシステムデータタイプ
IF_CONF_V4、IF_CONF_NOS、
IF_CONF_NTP、IF_CONF_V6、
IF_CONF_MAC、および IF_CONF_DNS の数

システムデータタイプ IF_CONF_V4
IP アドレス、サブネットマスク、およびルータアドレスは、システムデータタイプ
IF_CONF_V4 で定義されます。
バイト

パラメータ

データタイ 開始値
プ

説明

0 ... 1

Id

UINT

システムデータタイプ ID。このパラメータの30

開始値は変更してはいけません。
2 ... 3

LengthUINT

18

システムデータタイプ IF_CONF_V4 の長さ
IF_CONF_V4 の複数のパラメータは固定長および構造体を持つため、長さ指定で開始値を使用する必要があります。

4 ... 5

Mode

UINT

0

アドレス指定の有効性• 1:構成データが固定的に有効• 2:既存の固定構成データの削除を含めて、構成データが一時的に有効

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3151

通信
6.2 オープンユーザーコミュニケーション
バイト

パラメータ

データタイ 開始値
プ

説明

6 ... 9InterfaceAddress

IP_V4 *

0.0.0.0

IP アドレス

10 - 12SubnetMask

IP_V4 *

0.0.0.0

サブネットマスク

14 - 16

DefaultRouter

IP_V4 *

0.0.0.0

ルータアドレス*データタイプ IP_V4 は 4BYTE の構造体です。この構造体には、それぞれのパラメータのそれぞれのアドレス(たとえばパラメータ SubnetMask では、IP プロトコルのサブネットマスクの 4 桁のアドレス)が含まれています。

システムデータタイプ IF_CONF_NOS
システムデータタイプ IF_CONF_NOS を使用して、「T_CONFIG」命令を実行するときに割り当てるステーション名を指定します。
バイト

パラメータ

データタイ 開始値
プ

説明

0 ... 1

Id

UINT

システムデータタイプ ID。このパラメータの40

開始値は変更してはいけません。
2 ... 3

LengthUINT

246

システムデータタイプ IF_CONF_NOS の長さ(バイト単位)。
• 絶対長の場合、Lenght パラメータの値は以下から構成されます:– Id、Length、および Mode パラメータの 6 バイト。
– デバイス名(パラメータ NOS)用の最大240 バイト。
例:長さ全体が 10 は、デバイス名「plc1」
が長さ 4 文字(= 4 バイト)の場合の結果です。
• 動的な長さの場合、Lenght パラメータで既定開始値 246 を使用します。
名前の後に必ず値「0」を入力してください(NOS パラメータの説明を参照)。

3152

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
バイト

パラメータ

データタイ 開始値
プ

説明

4 ... 5

Mode

UINT

デバイス名の変更の有効性:

0• 1:デバイス名の永続的な有効性。
• 2:デバイス名の一時的な有効性。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3153

通信
6.2 オープンユーザーコミュニケーション
バイト

パラメータ

6 ... 244 NOS

データタイ 開始値
プ

説明

ARRAY

デバイス名(Name of Station)[1...240] of
Byte

0• ARRAY を最初のバイトから占有する必要があります。最初のバイトとして「0」が割り当てられた場合、ステーション名は削除されます。
• この名前の最小長さは 1 バイトです。名前の最大長は、240 文字です。
• デバイス名がパラメータ Length で指定された長さよりも短い場合は、現在のステー
ション名の後にゼロバイト(16#0 16 進数)を入力する必要があります(IEC61185-6-10 に準拠)。ゼロバイトを入力しないと、NOS は拒否され、命令「T_CONFIG」がパラメータ STATUS にエラーコード DW#16#C0809400 を出力します。
• デバイス名がパラメータ Length で指定された長さよりも長い場合は、指定された長さのみデバイス名が書き込まれます。

デバイス名では、以下の制限が適用されます。
• 名前は ASCII コードで指定する必要があります。
• 名前には、小文字、数字、ハイフン、または点のみを使用できます。
– 名前は、ハイフンで開始/終了してはなりません。
– 名前の形式が、n.n.n.n (n = 0～999)であってはなりません。

3154

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
バイト

パラメータ

データタイ 開始値
プ

説明
– 名前は、文字列「port-xyz」または「port-xyz-abcde」(a、b、c、d、e、
x、y、z = 0～9)で開始してはなりません。
• 2 つの点の間の名前要素は、最大 63 文字の長さまで可能です。
• ウムラウト、括弧、アンダースコア、スラッシュ、空白などの特殊文字は使用できません。
無効な文字が使用されると、エラーコード
C080_9400 がパラメータ STATUS に出力されます。

システムデータタイプ IF_CONF_NTP
システムデータタイプ IF_CONF_NTP を使用して、時刻同期用の NTP サーバーの IP アドレスを指定します。
バイト

パラメータ

データタイ 開始値
プ

説明

0 ... 1

Id

UINT

システムデータタイプ ID。このパラメータの17

開始値は変更してはいけません。
2 ... 3

LengthUINT

22

システムデータタイプ IF_CONF_NTP の長さ(バイト単位)IF_CONF_NTP のパラメータは固定長の構造体を持つため、長さ指定では開始値を使用する必要があります。

4 ... 5

Mode

UINT

2

有効性:
• 1:常時有効性(不可)• 2:一時的有効性

6 ... 9NTP_IP[1]ARRAY

NTP サーバー 1 の IP アドレス

[1...4] of
IP_V4

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3155

通信
6.2 オープンユーザーコミュニケーション
バイト

パラメータ

...

...

データタイ 開始値
プ

説明
NTP サーバー 2 ～ 3 の IP アドレス

18 ... 21 NTP_IP[4]ARRAY

NTP サーバー 4 の IP アドレス

[1...4] of
IP_V4

システムデータタイプ IF_CONF_V6 (CP 154x-1 使用時のみ)
システムデータタイプ IF_CONF_V6 を使用して、INTERFACE で選択したインターフェース
用の IPv6 アドレスを割り当てます。
バイト

パラメータ

データタイ 開始値
プ

説明

0 ... 1

Id

UINT

システムデータタイプ ID。このパラメータの22

開始値は変更してはいけません。
2 ... 3

LengthUINT

22

システムデータタイプ IF_CONF_V6 の長さ(バイト単位)IF_CONF_V6 のパラメータは固定長の構造体を持つため、長さ指定では開始値を使用する必要があります。

4 ... 5

Mode

UINT

0

IPv6 アドレスの有効性:• 1:常時有効性• 2:一時的有効性

6 ... 21

InterfaceAddress

IP_V6 *

IPv6 アドレス* データタイプ IP_V6 は、16 バイトの構造体です。

3156

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
システムデータタイプ IF_CONF_MAC (CP 154x-1 使用時のみ)
システムデータタイプ IF_CONF_MAC を使用して、INTERFACE で選択したインターフェー
ス用の MAC アドレスを割り当てます。
バイト

パラメータ

データタイ 開始値
プ

説明

0 ... 1

Id

UINT

システムデータタイプ ID。このパラメータの3

開始値は変更してはいけません。
2 ... 3

LengthUINT

12システムデータタイプ IF_CONF_MAC の長さ(バイト単位)IF_CONF_MAC のパラメータは固定長の構造体を持つため、長さ指定では開始値を使用する必要があります。

4 ... 5

Mode

UINT

0

MAC アドレスの有効性:• 1:常時有効性• 2:一時的有効性

6 ... 11

Mac

ARRAY

MAC アドレス[1...6] of

MAC アドレスを変更することによって、接続

Byteが停止される場合があることに注意してください。

システムデータタイプ IF_CONF_DNS (CP 154x-1 使用時のみ)
システムデータタイプ IF_CONF_DNS を使用して、INTERFACE で選択したインターフェース用の最大 2 つの DNS サーバーの IP アドレスを割り当てます。
バイト

パラメータ

データタイ 開始値
プ

説明

0 ... 1

Id

UINT

システムデータタイプ ID。このパラメータの16

開始値は変更してはいけません。
2 ... 3

LengthUINT

14

システムデータタイプ IF_CONF_DNS の長さ(バイト単位)IF_CONF_DNS のパラメータは固定長の構造体を持つため、長さ指定では開始値を使用する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3157

通信
6.2 オープンユーザーコミュニケーション
バイト

パラメータ

データタイ 開始値
プ

説明

4 ... 5

Mode

UINT

有効性:

0

• 1:常時有効性• 2:一時的有効性
6 ... 9

DNS_IP1

IP_V4

DNS サーバー 1 の IP アドレス

10 ... 13 DNS_IP2

IP_V4

DNS サーバー 2 の IP アドレス
1 つのアドレスのみを設定する場合は、DNS
サーバー 2 のアドレスを 0.0.0.0 に設定する必要があります。

DONE、BUSY、および ERROR パラメータ説明
次の表に、BUSY、DONE、ERROR の関係を示します。この表を使用して、命令の現在のステータスと、構成データの転送がいつ終了したかを判別できます。
BUSY

DONE

ERROR

説明

TRUE

FALSE

FALSE

ジョブが処理中です。

FALSE

TRUE

FALSE

ジョブが正常に完了しました。

FALSE

FALSE

TRUE

ジョブがエラーありで終了しました。 エラーの原因は、STATUS (ページ 3159)パラメータで確認できます。

FALSE

3158

FALSE

FALSE

命令に(新しい)ジョブが割り当てられませんでした。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
STATUS および ERR_LOC パラメータ

説明
命令「T_CONFIG」のステータスおよびエラーメッセージは、パラメータ STATUS および
ERR_LOC に出力されます。
• パラメータにエラーの原因が出力されます。STATUS• 発生したエラーの場所は、パラメータ ERR_LOC に出力されます。この場合、以下のオプションが使用できます。
– 16#0000_0000:命令呼び出し時のエラー(たとえば、命令へのパラメータ割当時のエラー、または、PROFINET インターフェースとの通信でのエラー)。
– 16#0001_0000:システムデータタイプ IF_CONF_HEADER のパラメータの構成データ
エラー。
– 16#0001_000x:システムデータタイプ IF_CONF_V4、IF_CONF_NOS、
IF_CONF_NTP、IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のパラメータの設定データのエラー(x は、T_CONFIG 構造体の不良なサブブロックの位置を指定します。たとえば、T_CONFIG 構造体が IP アドレスのサブブロックとステーション名のサブブロックを含み、エラーがステーション名のサブブロックに存在する場合、
ERR_LOC の値は 0001_0002 です。)
次の表に、パラメータ STATUS および ERR_LOC の可能な値を示します。
STATUS*

ERR_LOC*

説明

0000_000 0000_0000 命令処理がエラーなしで完了しました。
00070_000 0000_0000 ジョブ処理が行われていません。
00070_010 0000_0000 命令処理の開始。
00070_020 0000_0000 中間呼び出し(REQ は対象外)。
0
C0xx_yy00 0000_0000 一般エラー情報関連項目:GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)
, xx>80
C080_800 0000_0000 命令呼び出し時のエラー:
0Interface パラメータのハードウェア ID が無効です。

C080_810 0000_0000 命令呼び出し時のエラー:
0Interface パラメータのハードウェア ID が、PROFINET インターフェースをアドレ
ス指定していません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3159

通信
6.2 オープンユーザーコミュニケーション
STATUS*

ERR_LOC*

説明

C080_870 0000_0000 命令呼び出し時のエラー:
0

パラメータでのデータブロックの長さが正しくありません。CONF_DATA

C080_880 0001_0000 システムデータタイプ IF_CONF_HEADER のエラー:
0

FieldType パラメータの値が無効です。FieldType で値「0」を使用します。

C080_890 0001_0000 システムデータタイプ IF_CONF_HEADER のエラー:
0

FieldId パラメータの値が無効です。FieldId で値「0」を使用します。

C080_8A0 0001_0000 システムデータタイプ IF_CONF_HEADER のエラー:
0

SubfieldCount パラメータの番号が正しくありません。使用するシステムデータ
タイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、IF_CONF_V6、
IF_CONF_MAC、または IF_CONF_DNS の正しい数を入力します。

C080_8B0 0001_000x システムデータタイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、
0

IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のエラー:
パラメータ Id の値が無効です。IF_CONF_V4 では「30」、IF_CONF_NOS では「40」、IF_CONF_NTP では「17」、IF_CONF_V6 では「22」、IF_CONF_MAC では「3」、IF_CONF_DNS では「16」を使用します。
注記:IF_CONF_NTP は、T_CONFIG が S7-1500 モジュール式 CPU の最初のインターフェース[X1]で使用される場合のみ、許可されます。

C080_8C0 0001_000x システムデータタイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、
0

IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のエラー:
不正なシステムデータタイプが使用されているか、順序が間違っているか、またはシステムデータタイプが複数使用されています。

C080_8D0 0001_000x システムデータタイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、
0

IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のエラー:
パラメータ Length の値が不正または無効です。

C080_8E0 0001_000x システムデータタイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、
0

IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のエラー:
パラメータ Mode の値が不正または無効です。
•

IF_CONF_V4 および IF_CONF_NOS では、 値「1」(常時)または「2」(一時)のみが許可されます。

• IF_CONF_NTP では、値「2」(一時)のみが許可されます。

3160

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
STATUS*

ERR_LOC*

説明

C080_900 0001_000x システムデータタイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、
0

IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のエラー:
構成データを適用できません。考えられる原因:• IF_CONF_V4:ハードウェアコンフィグレーションで、設定[デバイスの IP アド
レスの設定]が選択されませんでした。
• IF_CONF_NOS:ハードウェアコンフィグレーションで、設定[デバイスのPROFINET デバイスネームの設定]が選択されませんでした。
• IF_CONF_NTP:ハードウェアコンフィグレーションで、設定[NTP サーバー経由の時間同期の有効化]が選択されず、NTP サーバーとして IP アドレスが設定されませんでした。

C080_940 0001_000x システムデータタイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、
0

IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のエラー:
パラメータの値が未定義または無効です。

C080_950 0001_000x システムデータタイプ IF_CONF_V4、 IF_CONF_NOS、IF_CONF_NTP、
0

IF_CONF_V6、IF_CONF_MAC、または IF_CONF_DNS のエラー:
2 つのパラメータの値が矛盾しています。

C080_C20 0000_0000 命令呼び出し時のエラー:
0

構成データを転送できません。考えられる原因:PROFINET インターフェースにア
クセスできません。

C080_C30 0000_0000 命令呼び出し時のエラー:
0

リソースが不足しています(たとえば、異なるパラメータで「T_CONFIG」を複数回呼び出すなど)

C080_C40 0000_0000 命令呼び出し時のエラー:
0

一時的な通信エラー。時間が経過してから、再び命令の呼び出しを試みます。

C080_D20 0000_0000 命令呼び出し時のエラー:
0

呼び出しができません。命令が、選択された PROFINET インターフェースによってサポートされていません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3161

通信
6.2 オープンユーザーコミュニケーション
T_CONFIG のプログラム例

概要
次の例では、2 つの CPU 間の設定済み接続(たとえば、UDP による)を使用します。命令「T_CONFIG」を使用して、CPU 1 の IP アドレスと PROFINET デバイスネームを設定します。

要件
接続の設定:• 2 つの CPU(たとえば、S7-1513-1 PN)が使用でき、PROFINET 経由で相互に接続されていること。
• 設定済みの接続は不要です。
CPU 1 の PROFINET のセットアップ:
1. [プロパティ||PROFINET インターフェース|イーサネットアドレス|PROFINET]を使用して、CPU 1 のデバイスビューを開きます。
2. デバイスネームを設定するには、以下のオプションを選択します。

– [IP アドレスは、デバイスで直接設定されます]。
– [PROFINET デバイスネームは、デバイスで直接設定されます]。
「hwid」の値の調整:• ユーザーのローカルデバイス(CPU 1)の PROFINET インターフェースのハードウェア識
別子に従って、「hwid」の値を変更します。
注記[PLC タグ|すべてのタグを表示|システム定数]を開きます。データタイプ「Hw_Interface」を使用して、エントリ「<Local~PROFINET_interface_1>」を見つけます。[値]セルには、ハードウェア識別子が格納されています。

3162

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
タグの作成とパラメータの相互接続(CPU 1 のプログラム)
データを格納するために、以下の構造体およびタグを備えたグローバルデータブロック「SLI_gDB_T_CONFIG」()を作成します。

構造体「configData」で:PROFINET データのサイズを指定するために、システムデータタ
イプ「IF_CONF_Header」のパラメータを以下のように割り当てます。

構造体「configData」で:IP アドレスを定義するために、システムデータタイプ「IF_CONF_v4」のパラメータを以下のように割り当てます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3163

通信
6.2 オープンユーザーコミュニケーション

構造体「configData」で:PROFINET デバイスネームを定義するために、システムデータタ
イプ「IF_CONF_NOS」のパラメータを以下のように割り当てます。

3164

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

注記「configData」の構造体
構造体「configData」の情報は以下のように解釈できます。
• Header (IF_CONF_Header)
SubfieldCount = 2:その値は:2 つの追加構造体(「deviceIP」、「deviceName」) (*)が下で使用されることを示します。
*両方の構造体の順序を必ず守ってください。
• 構造体「deviceName」 (システムデータタイプ IF_CONF_NOS)– Lenght = 11 (*)。その値は、構造体 NOS 全体の長さに対応します(デバイスネーム「myplc」用の 5 バイト + パラメータ Id、Length、および Mode 用の 6 バイト)
*絶対長の代わりに、動的長さの既定開始値(Lenght = 0)を使用できます。
– Mode = 1。その値は、「myplc」内のデバイスネームの常時変更を生じます。
– NOS[1] ... NOS[5].その NOS 配列に新しいデバイスネームが格納されます(1 文字/バイト)。

FB「SLI_FB_T_CONFIG」を作成し、その FB 内に以下のローカルタグを作成します。

ネットワーク 1:命令「T_CONFIG」のパラメータを以下のように相互接続します。

ネットワーク 2:T_CONFIG のエラーの場合、ステータスを以下のように保存します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3165

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 3:T_CONFIG を終了するために、以下の相互接続を作成します。

結果
ネットワーク 1:)がシグナル状態「TRUE」を提供すると、入力パラメータ REQ 「T_CONFIG.start」(「T_CONFIG」命令が開始されます。命令「T_CONFIG」は、CPU の標準搭載された
PROFINET インターフェースを複数の呼び出し向けに設定します。入力パラメータ
INTERFACE 「T_CONFIG.hwid」()に基づいて、「T_CONFIG」命令は、そのインターフェースが使用されることを認識しています。
成功したデータレコードの転送は、シグナル状態が「TRUE」の出力パラメータ DONE「#done」()によって示されます。同時に、値「0000_0000」が出力パラメータ STATUS「T_CONFIG.status」()に表示されます。出力パラメータの値はそれらの出力パラメータが有効な間のみ表示されるため、成功メッセージをタグ「T_CONFIG.done」に保存します。
出力パラメータ ERROR 「T_CONFIG.error」()またはタグ「T_CONFIG.memErrStat」は、例の処理がエラーなしで行われていることを示します。

3166

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

ネットワーク 2:「T_CONFIG.error」、「TRUE」)を通知する場合、そのアラームを以下のT_CONFIG がエラー(ように保存します。
• ステータス(「T_CONFIG.status」)を「T_CONFIG.memErrStat」タグに保存します。
• エラー位置を、T_CONFIG の出力パラメータ ERR_LOC 「#errorLocation」()、タグ「T_CONFIG.errorLocation」に保存、出力します。
オンライン＆診断

PROFINET データが変更されたかどうかをチェックするために、プロジェクトツリーのパス[オンライン＆診断|ファンクション|名前の割り当て]を開きます。

プログラムコード
追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

下記も参照
T_CONFIG の説明 (ページ 3146)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3167

通信
6.2 オープンユーザーコミュニケーション

6.2.7

通信命令の変更

6.2.7.1

OUC ライブラリのバージョン V3.x 以前とバージョン V4.1 以降の相違

概要
ファームウェアバージョン 4.1 以降の CPU S7-1200 は、開放型ユーザー間通信(OUC)用の新しい命令バージョンをサポートしています。バージョン 4.1 のライブラリには、新しい命令が含まれています。
このライブラリを使用する場合は、ユーザープログラムの変更を行う必要があります。それは、オープンユーザーコミュニケーション用の新しい命令の中に異なる動作を行う命令が存在するためです。
このセクションでは詳細な相違点、特に命令の呼び出し動作について説明します。
注記
この説明は、CPU S7-1200 V4.0 以前から S7-1200 V4.1 以降にアップグレードする場合のみ適用されます。
S7-1500 CPU を使用している場合は、ライブラリバージョン間の相違はありません。バージョン 4.1 以降の S7-1200 を使用している場合も同じことが適用され、オープンユーザーコミュニケーション用のライブラリをバージョン 4.1 より前のバージョンには変換しま
せん。

オープンユーザーコミュニケーションライブラリのバージョン V3.x 以前とバージョン V4.1 以降の相違
次の表に、オープンユーザーコミュニケーションライブラリのバージョン V3.x 以前とバージョン V4.1 以降との間で相違がある命令を示します。詳細情報は、該当する命令の名前をクリックします。
ライブラリのバージョン <= V3.x

ライブラリのバージョン >= V4.1

(V4.0 以前の CPU FW)(V4.1 以降の CPU FW)

TSEND_C (ページ 3169)

V2.1

V3.0

TRCV_C (ページ 3171)

V2.1

V3.0

TMAIL_C *

V2.1

V3.0

TCON (ページ 3173)

V3.0

V4.0

TDISCON

V2.1

V2.1 (V3.x 以前のライブラリと同じ)

命令

3168

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
ライブラリのバージョン <= V3.x

ライブラリのバージョン >= V4.1

(V4.0 以前の CPU FW)(V4.1 以降の CPU FW)

TSEND (ページ 3175)

V3.0

V4.0

TRCV (ページ 3177)

V3.0

V4.0

TUSEND (ページ 3175)

V3.0

V4.0

TURCV (ページ 3177)

V3.0

V4.0

T_RESET *

V1.1

V1.2

T_DIAG *

V1.1

V1.2

T_CONFIG

V1.0

V1.0 (V3.x 以前のライブラリと同じ)

命令* ユーザープログラムに影響を及ぼすバージョンの相違はありません。
注記
オープンユーザーコミュニケーションライブラリをバージョン V3.x 以前から V4.1 以降へ変更
オープンユーザーコミュニケーションライブラリをバージョン V3.x 以前からバージョン
V4.1 以降へ置き換えるときは、Modbus TCP ライブラリも置換する必要があります。その後で、ユーザープログラムに関連するすべての命令をチェックします。

下記も参照
Modbus TCP ライブラリのバージョン V3.x 以前とバージョン V4.0 以降の相違 (ページ 3726)

6.2.7.2

TSEND_C 命令での変更

TSEND_C の呼び出し動作(V3.0 より前)
TSEND_C 命令のバージョン 2.1 までは、DONE 出力パラメータは 2 回設定されます。 内
部的に使用される TCON 命令によって接続が確立されるときに 1 回、次に内部的に使用される TSEND 命令によって送信操作が行われた後に 1 回設定されます。
次の図に、TSEND_C V2.1 による接続確立およびデータの送信を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3169

通信
6.2 オープンユーザーコミュニケーション5(4&217&20B567
'21(
%86<
(5525
67$786

[ [ [ [ [ [ [ [ [ [ [ [ [㘴倩㘴倩ሸቯ቉ሧቡሾቶ

76(1'B&ኖኣዙኜኖ 槭ቿኌኣኀኳ

㘴倩

䭉䵚䂗ቢ
㘴倩

㘴倩

7&21'21(
7',$*'21(

抐≰

抐≰

抐≰䂗ቢ

㘴倩

㘴倩

76(1''21(

抐≰

抐≰

抐≰䂗ቢ

㘴倩

76(1''21(

COM_RST パラメータを「1」にセットすると、現在確立されている接続または現在のデータ伝送をいつでもリセットできます。これによって、既存の通信接続が終了し、新しい通信が確立されます。

TSEND_C の呼び出し動作(V3.0 以降)
TSEND_C バージョン以降、DONE パラメータは、内部的に使用される TSEND 命令(STATUS= 0000)によってデータ転送が完了した場合にのみ設定されます。
5(4&217&20B567
'21(
%86<
(5525
67$786

[ [ [ [ [ [ [ [ [ [ [ [ [㘴倩㘴倩ሸቯ቉ሧቡሾቶ

76(1'B&ኖኣዙኜኖ 槭ቿኌኣኀኳ

㘴倩

䭉䵚䂗ቢ
㘴倩

㘴倩

7&21'21(
7',$*'21(抐≰抐≰76(1''21(

抐≰䂗ቢ

㘴倩

㘴倩

抐≰

抐≰

抐≰䂗ቢ

㘴倩

76(1''21(

COM_RST パラメータが「1」にセットされると、既存の接続が一時的に切断されリセットされます。 ただし、TSEND_C V2.1 とは異なり、接続エンドポイントは保持されます。

3170

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション

注記
バージョン 3.0 以降の TSEND_C での追加プロトコル
TSEND_C 命令のバージョン 3.0 でも、CPU のインターフェース経由および CM/CP 経由の
UDP および UDP ブロードキャストをサポートしています。

下記も参照
TSEND_C: イーサネット経由のデータ送信 (ページ 2966)
TSEND_C:接続の確立とデータの送信 (ページ 2972)

6.2.7.3

TRCV_C 命令での変更

TRCV_C の呼び出し動作(V3.0 より前)
TRCV_C 命令のバージョン 2.1 までは、DONE 出力パラメータは接続確立後に設定されます。 STATUS 出力パラメータは、接続またはデータ転送が完了したかどうかは区別しません。
次の図に、TRCV_C V2.1 による接続確立およびデータの送信を示します。
(1B5
&217
&20B567
'21(
%86<
(5525
67$786

[ [ [ [ [ [ [ [ [ [㘴倩㘴倩ሸቯ቉ሧቡሾቶ

75&9B&ኖኣዙኜኖ

槭ቿኌኣኀኳ

㘴倩

䭉䵚䂗ቢ
㘴倩

㘴倩

7&21'21(
7',$*'21(♦≰♦≰

75&9'21(

♦≰

♦≰

♦≰

♦≰

75&9'21(

COM_RST パラメータを「1」にセットすると、現在確立されている接続または現在のデータ伝送をいつでもリセットできます。これによって、既存の通信接続が終了し、新しい通信が確立されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3171

通信
6.2 オープンユーザーコミュニケーション
TRCV_C の呼び出し動作(V3.0 以降)
TRCV_C バージョン以降、DONE パラメータは、内部的に使用される TRCV 命令(STATUS =0000)によってデータ転送が完了した場合にのみ設定されます。 内部的に使用される TCON
命令による接続確立の完了は、STATUS パラメータでの出力値 0x0001 によって表示され
ます。
(1B5
&217
&20B567
'21(
%86<
(5525
67$786

[ [ [ [ [ [ [ [ [ [㘴倩㘴倩ሸቯ቉ሧቡሾቶ

75&9B&ኖኣዙኜኖ

槭ቿኌኣኀኳ

㘴倩

䭉䵚䂗ቢ
㘴倩

㘴倩

7&21'21(
7',$*'21(

♦≰

♦≰

♦≰

♦≰

75&9'21(♦≰♦≰

75&9'21(

COM_RST パラメータが「1」にセットされると、既存の接続が一時的に切断されリセットされます。 ただし、TSEND_C V2.1 とは異なり、接続エンドポイントは保持されます。
注記
バージョン 3.0 以降の TRCV_C での追加プロトコル
TRCV_C 命令のバージョン 3.0 でも、CPU のインターフェース経由および CM/CP 経由の
UDP および UDP ブロードキャストをサポートしています。
注記
TCP プロトコルのバリエーションの場合は ADHOC モードを使用
TRCV 命令に従って、バージョン 2.1 までの TRCV_C を使用して LEN パラメータに値「0」を割り当てると、ADHOC モードが有効になります。 この命令のバージョン 3.0 以降では、このために ADHOC パラメータを使用します。 詳細は、命令の記述を参照してください。

下記も参照
TRCV/TURCV 命令での変更 (ページ 3177)
TRCV_C: イーサネット経由のデータ受信送信 (ページ 2984)
TRCV_C:接続の確立とデータの受信 (ページ 2992)

3172

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
6.2.7.4

TCON 命令での変更

接続エラーがある場合の呼び出し動作の変更
TCON の以前の呼び出し動作(V4.0 より前)
• 以前の TCON 命令(V4.0 より前)は、 REQ 入力パラメータの立ち上がりエッジで有効になります。
• リモート通信パートナーが接続できない場合、命令は BUSY 出力パラメータを設定します。
• エラーメッセージは出力されません。
次の図に、アクティブ接続パートナー部分での TCON の動作を示します。 接続が確立しない場合、命令は再び呼び出されません。
✋ቖ⒉ሺ













[

[ [ [

5(4
'21(
%86<
(5525
67$786

[ [∎䞷ₜ♾

዇኿ዙእኮዙእኧዙ
㘴倩
7&21ኖኣዙኜኖ

槭ቿኌኣኀኳ

㘴倩

㘴倩

㘴倩

㘴倩

㘴倩

TCON の新しい呼び出し動作(V4.0 以降)• 新しい TCON 命令も、REQ 入力パラメータの立ち上がりエッジで有効になります。
• 以前とは異なり、リモート通信パートナーが接続できない場合はエラーメッセージが出力されます。 このエラーは照会でき、呼び出しは REQ パラメータの新しいエッジにより再び開始できます。
• ユーザープログラムでは、以下の点が変更されました。
– 評価することが可能な TCON の追加エラーメッセージ(TCON (ページ 3057)の説明を参照)。
– 接続確立は、新しい立ち上がりエッジにより再初期化することができます。 これを行うには、DONE および ERROR パラメータを照会してエラーが存在することを確認します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3173

通信
6.2 オープンユーザーコミュニケーション
次の図に、アクティブ接続パートナー部分での TCON の動作を示します。 命令は、ネッ
トワークエラー(エラーコード 80C6)の後に再び呼び出されます。
✋ቖ⒉ሺ















[

[ [& [





5(4
'21(
%86<
(5525
67$786

[ [[ [[

∎䞷ₜ♾

዇኿ዙእኮዙእኧዙ
㘴倩
7&21ኖኣዙኜኖ

㘴倩槭ቿኌኣኀኳ

㘴倩

㘴倩

ኅ዆ዙ

槭ቿኌኣኀኳ

㘴倩㘴倩㘴倩

通信エラーなしの呼び出し動作
接続エラーがない場合、TCON バージョンは同じ動作を行います。
次の図に、アクティブ接続パートナー部分での TCON の動作を示します。
✋ቖ⒉ሺ













[ [ [

5(4
'21(
%86<
(5525
67$786

[ [[

዇኿ዙእኮዙእኧዙ

∎䞷ₜ♾

∎䞷♾厌

㘴倩
7&21ኖኣዙኜኖ

槭ቿኌኣኀኳ

㘴倩

㘴倩

㘴倩

㘴倩

㘴倩

下記も参照
TCON: 通信接続の確立 (ページ 3053)

3174

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
6.2.7.5

TSEND/TUSEND 命令での変更

接続確立での送信操作
送信中に遅延や割り込みが発生しない場合、TSEND/TUSEND 命令のバージョン 3.0 と 4.0
は同じ動作を行います。
• 命令は、「REQ」パラメータの立ち上がりエッジで開始します。 命令は非同期で実行されます。つまり、完全な実行が DONE パラメータによって示されるまで、呼び出しを行う必要があります。
• TSEND を使用して、最大で 8 KB のデータを送信できます。 TUSEND を使用して、最大で 1472 バイトのデータを送信できます。 このデータ量は命令が完全に実行された場合の数値で、DONE パラメータが設定されるまで必要なすべての呼び出しが行われます。
• データ伝送は 3 段階で行われます。
– データはオペランド領域から内部バッファ(STATUS=7001 によって表示)に書き込まれます。
– 次にリモート通信パートナーへの伝送を行います。
– 伝送が正常に完了した場合、DONE に「1」が設定され、STATUS が「0」にリセットされます(下図の呼び出し 5 を参照)。
✋ቖ⒉ሺ













[

[ [ [

5(4
'21(
%86<
(5525
67$786/(1 㦏⮶[ [
.%

.%

␔捷

槭ቿኌኣኀኳ抐≰抐≰㘴倩
76(1'ኖኣዙኜኖ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020抐≰抐≰䂗ቢ 槭ቿኌኣኀኳ

3175

通信
6.2 オープンユーザーコミュニケーション
遅延呼び出しでの送信操作
送信操作が通信モジュール(CM)または 通信プロセッサ(CP)経由で実行されない場合、
TSEND/TUSEND 命令のバージョン 3.0 と 4.0 は同じ動作を行います。
• 次の例では、TSEND または TUSEND が REQ パラメータの立ち上がりエッジで 1 回だけ呼び出されます(下図の呼び出し 2 を参照)。
• 遅延が十分に長く、データの転送が可能である場合、次の呼び出しで DONE パラメー
タが直接「1」に設定されます(ここでは呼び出し 3)。
✋ቖ⒉ሺ



拔ㆅ㣑栢





✋ቖ⒉ሺቍሺ



5(4
'21(
%86<
(5525
67$786/(1 㦏⮶[ [[ [

.%

.%

␔捷

槭ቿኌኣኀኳ抐≰抐≰㘴倩
76(1'ኖኣዙኜኖ

抐≰抐≰䂗ቢ 槭ቿኌኣኀኳ

送信操作が CM/CP 経由で実行される場合、TSEND/TUSEND 命令のバージョン 4.0 は異なる動作を行います。 この場合、TRCV/TURCV 命令の NDR パラメータによってデータの受信が確認されるまで、複数回にわたり命令を呼び出す必要があります。

割り込み接続での送信操作
送信操作中に接続が中断する場合、ERROR および STATUS パラメータがエラーとその原因を表示します。 次の例では、呼び出し番号 5 で接続が中断し、その結果、このエラーがSTATUS パラメータで表示されます。
TSEND/TUSEND 命令のバージョン 4.0 以降では、その他の STATUS アラームが使用可能で、それに応じて評価を行うことができます(TSEND (ページ 3074)/TUSEND (ページ 3107)の説
明を参照)。

3176

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション


✋ቖ⒉ሺ













[

[ [& [





5(4
'21(
%86<
(5525
67$786

[ [/(1 㦏⮶.%㘴倩
76(1'ኖኣዙኜኖ

.%

␔捷

.%

抐≰

.%

₼㠼ሸቯቡሺቂ

䭉䵚䂗ቢ槭ቿኌኣኀኳ

[ [

抐≰

抐≰

ኅ዆ዙ

槭ቿኌኣኀኳ

[

␔捷
䭉䵚䂗ቢ

抐≰

抐≰

抐≰

下記も参照
TSEND: 通信接続経由のデータ送信 (ページ 3070)

6.2.7.6

TRCV/TURCV 命令での変更

接続確立での受信操作
送信中に遅延や割り込みが発生しない場合、TRCV/TURCV 命令のバージョン 3.0 と 4.0 は同じ動作を行います。
• TRCV を使用して、最大で 8 KB のデータを送信できます。 TURCV を使用して、最大で1472 バイトを受信できます。 このデータ量は命令が完全に実行された場合の数値で、DONE パラメータが設定されるまで必要なすべての呼び出しが行われます。
• EN_R パラメータが「1」に設定される場合、命令はデータを受信します。
• LEN パラメータで指定された長さのデータが完全に受信されるまで、データの受信は完了しません。 受信データの長さが、RCVD_LEN 出力パラメータに出力されます。 その時に初めて、DATA パラメータで定義された領域のデータが使用可能になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3177

通信
6.2 オープンユーザーコミュニケーション
✋ቖ⒉ሺ













(1B5
/(1 㦏⮶
1'5

.%

.%

␔捷

[

[

[

[

[

[

㦏⮶.%

♦≰槭ቿኌኣኀኳ

%86<(5525
67$786
5&9'B/(1㘴倩
75&9ኖኣዙኜኖ

䭉䵚䂗ቢ♦≰槭ቿኌኣኀኳ

♦≰♦≰遅延呼び出しでの受信操作
送信操作が通信モジュール(CM)または 通信プロセッサ(CP)経由で実行されない場合、TRCV/TURCV 命令のバージョン 3.0 と 4.0 は同じ動作を行います。
• 次の例では、TRCV または TURCV が EN_R パラメータの立ち上がりエッジで 1 回だけ呼び出されます(下図の呼び出し 2 を参照)。
• 遅延が十分に長く、データの転送が可能である場合、次の呼び出しで NDR パラメータが直接「1」に設定されます(ここでは呼び出し 3)。
✋ቖ⒉ሺ



拔ㆅ
✋ቖ⒉ሺቍሺ[

[

㦏⮶.%

♦≰槭ቿኌኣኀኳ

(1B5/(1 㦏⮶
1'5
%86<

.%

.%

[

[





␔捷

(5525
67$786
5&9'B/(1㘴倩
75&9ኖኣዙኜኖ

3178


䭉䵚䂗ቢ

槭ቿኌኣኀኳ

♦≰♦≰♦≰TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.2 オープンユーザーコミュニケーション
送信操作が CM/CP 経由で実行される場合、TSEND/TUSEND 命令のバージョン 4.0 は異なる動作を行います。 この場合、NDR パラメータによってデータの受信が確認されるまで、複数回にわたり命令を呼び出す必要があります。

割り込み接続での受信操作
送信操作中に接続が中断する場合、ERROR および STATUS パラメータがエラーとその原因を表示します。 次の例では、呼び出し番号 5 で一時的な通信エラーが発生し、その結果がSTATUS パラメータによって表示されます。
✋ቖ⒉ሺ















[

[ [& [





(1B5
/(1
1'5
%86<
(5525
67$786

[ [
.%

.%

␔捷

.%

[ [.%

5&9'B/(1

␔捷
䭉䵚䂗ቢ

㘴倩
75&9ኖኣዙኜኖ

[

䭉䵚䂗ቢ槭ቿኌኣኀኳ

抐≰

抐≰

抐≰

ኅ዆ዙ

槭ቿኌኣኀኳ

抐≰抐≰抐≰

TRCV/TURCV 命令のバージョン 4.0 以降では、その他の STATUS アラームが使用可能で、それに応じて評価を行うことができます(TRCV (ページ 3086)/TURCV (ページ 3113)の説明を参照)。

ADHOC モードを使用した受信操作
ADHOC モードは、TCP プロトコルのバリエーションでのみ使用可能です。 ADHOC モード
を使用して、TRCV/TURCV 命令で可変長データを受信することができます。 ADHOC モー
ドがアクティブである場合、少なくとも 1 バイトが転送された時に NDR パラメータでデータの受信が確認されます。

TRCV 3.0 以前(S7-1200 V4.0 以前)による ADHOC モードのデータ受信
TRCV (ページ 3079)の以前のバージョンでは、LEN パラメータを「0」に設定すると ADHOC
モードが有効になりました。 次の例では、10 バイトのデータが呼び出し 5 で転送されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3179

通信
6.2 オープンユーザーコミュニケーション
✋ቖ⒉ሺ













(1B5
/(1 㦏⮶1'5

 $'+2&኿ዙኦቑ㦘╈▥

%86<
(5525
67$786

[

[

[

[

[

[









ክኁእ



♦≰

槭ቿኌኣኀኳ

5&9'B/(1㘴倩
75&9ኖኣዙኜኖ

䭉䵚䂗ቢ♦≰槭ቿኌኣኀኳ

♦≰♦≰TRCV 3.0 以降(S7-1200 V4.0 以降または S7-1500)による ADHOC モードのデータ受信
TRCV 命令のバージョン 3.0 以降では、ADHOC モードは独自のパラメータ(ADHOC)で有効になります。
✋ቖ⒉ሺ













(1B5
/(1

㦏⮶.% 㦏⮶.%

␔捷

$'+2&
1'5
%86<
(5525
67$786
5&9'B/(1[

[

[

[

[

[









ክኁእ



♦≰

槭ቿኌኣኀኳ

㘴倩
75&9ኖኣዙኜኖ

䭉䵚䂗ቢ槭ቿኌኣኀኳ

♦≰♦≰♦≰実行中にエラーが発生した場合、TRCV 命令のバージョン 4.0 以降では、その他の STATUS
アラームが使用可能で、それに応じて評価を行うことができます。
送信操作が CM/CP 経由で実行される場合、TRCV/TURCV 命令のバージョン 4.0 は異なる動作を行います。 この場合、NDR パラメータによってデータの受信が確認されるまで、複数回にわたり命令を呼び出す必要があります。

3180

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

6.3

OPC UA

6.3.1

クライアント命令

6.3.1.1

OPC UA Client

下記も参照
OPC_UA_TranslatePathList:現在の NodeIds の識別 (ページ 3224)
シーメンスエラーコード (ページ 3351)
OPC Foundation のエラーコード (ページ 3354)
PLCopen のエラーコード (ページ 3372)
エラーコード (ページ 3351)

6.3.1.2

データ交換の準備

OPC_UA_Connect:接続の作成

有効性
以下の「OPC_UA_Connect」命令の説明は、ファームウェアバージョン V2.6 以降のS7-1500 CPU に適用されます。

説明「OPC_UA_Connect」命令は、OPC UA サーバーへの接続を確立します。
下図に、エディタ(FBD)内での命令のアイコンを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3181

通信
6.3 OPC UA

上図では、命令のパラメータはまだ提供されていません。
この命令を使用して、OPC UA サーバーと OPC UA クライアント間のデータ交換を準備します。下図の①の説明を参照してください。
この命令は、接続を参照するために以下の命令を使用する接続ハンドル(数値参照)を返し
ます。





23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B5HDG/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW

23&B8$B:ULWH/LVW①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令(アプリケーションによっては命令を繰り返し呼び出
し)

③

3182

読み取りまたは書き込み操作完了後にリソースを解放するための命令

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「OPC_UA_Connect」のパラメータ
パラメータ

領域での宣言データタ 意味
イプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ
0 → 1 になると、命令の実行がトリガされます。

ServerEndpointUrl

InOut

VARIANT OPC UA サーバーのアドレス(URL)を含む、タイプが STRING またはWSTRING のタグへのポインタ。IPv4
アドレス、および CPU プロパティ内
で DNS サーバーを設定している場合
は FQDN (完全修飾ドメイン名)を使用できます。

SessionConnectInfo InOut

VARIANT システムデータタイプが「OPC_UA_SessionConnectInfo (ページ 3341)」のタグ内の接続デスクリ
プションへのポインタ。

Timeout

Input

TIME

ミリ秒単位の接続確立の最大時間 。
「Timeout」パラメータは、クライア
ントがサーバーに送信する下位レベ
ル OUC UA サービス要求のサービス
タイムアウトを定義します。
100 ミリ秒未満は意味がないため、100 ミリ秒未満または負の値のタイ
ムアウト値は 100 ミリ秒に設定され
ます。

Done

OutputBOOL

実行ステータスパラメータ:• 0:命令の実行が中止された、まだ完了していない、またはまだ開始していません。
• 1:命令の実行がエラーなしで完了
しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3183

通信
6.3 OPC UA
パラメータ

領域での宣言データタ 意味イプ

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

ConnectionHdl

Output

DWORD

確立された接続の固有の識別子。
このハンドルは、他の OPC UA 命令
が入力パラメータとして必要とします。

Status のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。

3184

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
次の表では、エラーコードについて説明します。
エラーコードエラーの名前説明

OpcUa_Good

命令が正常に終了しまし(16 進数の値)
0000_0000

た。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3185

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadOutOfMemory

OPC UA クライアントが使(16 進数の値)
8003_0000

用できるメモリがありません。
OPC UA クライアントおよ
び OPC UA サーバーがメモ
リ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC
タグ数を減らす。
• 現在サーバーに接続されている OPC UA クライ
アント数を減らす。
• サブスクリプション数を減らす。
• 全般:登録されている
OPC UA エレメント数を減らす。非アクティブなセッションおよびサ
ブスクリプションがな
いか確認するために、
OPC UA サーバー診断ツール(Unified
Automation のUaExpert など)を使用してください。対策として、クライアントで対応するタイムアウトを選択できます(サブスクリプションタイムアウ
ト <= セッションタイム
アウト)。

3186

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadCommunicationError

接続のタイムアウト。

(16 進数の値)
8005_0000

考えられる原因:• サーバーアドレス(ServerEndpointURL)が正しくないか、不完全です。
• このサーバーは、接続確立中にクライアント
によって送信されたバッファサイズを受け入
れません。
対策:
• ServerEndpointURL をチェックして修正してください。
• 許可されているバッフ
ァサイズをチェックします。S7-1500 CPU のクライアントは 8192 バ
イトを提供します。サーバーはこの値を受け入れる必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3187

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadTimeout

ネットワークタイムアウト(16 進数の値)
800A_0000が発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
• このサーバーは、接続確立中にクライアント
によって送信されたバッファサイズを受け入れない可能性があります。
対策:• OPC UA サーバーの URLを確認してください。
• 命令 OPC_UA_Connectのタイムアウト値を増やしてください。
• 許可されているバッフ
ァサイズをチェックします。S7-1500 CPU のクライアントは 8192 バ
イトを提供します。サーバーがこの値をサポートしている必要があります。
803D_0000

OpcUa_BadNotSupported

考えられる原因:• サーバーアドレス(ServerEndpointURL)が正しくないか、不完全です。
• 要求された操作をサー
バーがサポートしてい
ません。

3188

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadSecurityModeInsufficient

サーバーがより強度の高い(16 進数の値)
8054_0000

セキュリティ要件(セキュリ
ティポリシー)を設定しています。
可能な対策:• サーバーへの接続に対してより強度の高いセキュリティ設定を使用します。
8055_0000

OpcUa_BadSecurityPolicyRejected

要求されたセキュリティポ
リシーまたは転送プロファ
イルをサーバーがサポートしていません。

8056_0000

BadTooManySessions

サーバーの最大セッション
数に達しました。

8081_0000

BadTcpNotEnoughResources

接続の確立に必要なクライ
アントの接続リソースがすべて使用されています。
可能な対策:• 接続の確立と終了が短
い時間で連続する場合
は、この周期を低減する必要があります。

B080_0100

Simatic_BadType_VariantInput1

パラメータ「ServerEndpointUrl」のデータタイプが正しくありま
せん。

B080_0200

Simatic_BadType_VariantInput2

パラメータ「SessionConnectInfo」のデータタイプが正しくありません。

B080_2200

Simatic_BadValue_VariantInput2

タグ「SessionConnectInfo」の値が正しくありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3189

通信
6.3 OPC UA
エラーコードエラーの名前説明

Simatic_ClientNotEnabled

OPC UA クライアントが無(16 進数の値)
B080_C400

効化されています。
対策:CPU のプロパティ([OPC UA|クライアント]エリア)で OPU UA クライアン
トを有効にします。
B080_C500

Simatic_NothingToDo

クライアントの初期化中にエラーが発生しました。

B080_C600

Simatic_ClientNotAvailable

クライアントの初期化中にエラーが発生しました。

C080_C300

Simatic_OutOfResources

同時に使用可能なクライア
ント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのクライアン
ト命令数を減らします。関連項目:
AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

接続確立および接続終了の説明
リソース不足を示すエラーメッセージが表示される場合は、接続診断を使用して、現在「OPC UA クライアント/サーバー通信」サービスに割り当てられている接続リソースを識別できます。接続診断では、まだ使用可能なリソース数を確認できます。
OPC UA クライアント/サーバー通信は、TCP プロトコルに基づいています。接続が既に終了されていても、TCP プロトコルにより、接続終了中に特定の待機時間の間は接続リソースが依然としてロックされていることにご注意ください。有効な接続が確立される前に、必要な接続パートナーとの接続のためのエンドポイントを識別(ディスカバリー)するために、OPC
UA に対して接続がセットアップされます。
推奨事項:必要な接続数が、使用可能な接続リソースの制限値に近い場合は、OPC UA 接続の時間をより長くしてセットアップする必要があります。短い間隔での CPU OPC UA 接続を
セットアップすると、リソース不足が発生する可能性があります。

3190

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
下図は、それぞれの待機時間で接続がどのように確立/終了されるか、およびそれによって生じるリソース割り当てを示しています。
関連項目:AUTOHOTSPOT

この命令の使用方法
以下のセクションでは、OPC UA サーバーとデータ交換を行うプログラム内での命令「OPC_UA_Connect」の使用方法について説明します。

要件
この説明では、以下のことを仮定しています。
• クライアントインターフェースが作成済みであること。「AUTOHOTSPOT」を参照。
• このクライアントインターフェースのプロパティ内で OPC UA サーバーへの接続が設定済みであること。

セキュリティで保護された接続の設定
命令「OPC_UA_Connect」を使用して、OPC UA サーバーへのセキュリティで保護されていない接続を確立することは可能です。ただし、必ずセキュリティで保護された接続を使用することを強く推奨します。

クライアントインターフェースの使用方法
1. [プロジェクトツリー]エリアで、クライアントとして動作する CPU を選択します。
2. 新規ファンクションブロックを[プログラムブロック]フォルダに追加します。
この例では、ファンクションブロックを「ReadFromProductionline」とします。
使用言語:SCL。
3. ドラッグ＆ドロップで、命令「OPC_UA_Connect」をフォルダ[命令|通信|OPC UA|OPC UA ク
ライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「"OPC_UA_Connect_Instance」と命名します。
5. 「OPC_UA_Connect_Instance」命令の[設定の開始]のアイコンをクリックします。

STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3191

通信
6.3 OPC UA
6. [OPC UA 接続のクライアントインターフェースを選択]で、この命令で使用するクライアン
トインターフェースを選択します。
この例では、クライアントインターフェースを「Productionline」とします。

STEP 7 は命令のパラメータに、クライアントインターフェースに対して設定済みの値を自動的に供給します。
7. [ブロックパラメータ]をクリックし、タグを残りのパラメータ(REQ、Busy、Done、Error、
Status)に手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

この命令の呼び出し
以下のソースコードは、命令「OPC_UA_Connect」を使用して OPU UA サーバーへの接続を確立する方法を示しています。
完全なプログラムは、セクション「OPC UA クライアントのプログラム例 (ページ 3373)」に記載されています。
このサンプルプログラムは、CASE 命令によって複数のプログラムセクション(ケース)に分割されています。#State タグは、どのプログラムセクションを実行されているかを制御し
ます。

3192

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
最初のプログラムセクションで、接続が確立されます。
SCL
1: // case 1, connect to server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Connect_Instance(REQ := #Req,
ServerEndpointUrl := "Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN// Did we get a connection handle?
IF "Productionline_Configuration".Connection.ConnectionHdl <> 0 THEN// We have to release all resources in the server and disconnect#State := 100;//In case 100, to set REG of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;ELSE#State := 99;
END_IF;#Mem_Status := #Status;// set parameter REQ of OPC_UA_Connect to FALSE#OPC_UA_Connect_Instance(ServerEndpointUrl :="Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
REQ := FALSE,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout);
END_IF;

このサンプルプログラムは、以下の理由で「OPC_UA_Connect」命令を呼び出します。
• OPC UA サーバーへの接続を確立するため。
• エラーが発生すると、「REQ」パラメータの値が「FALSE」に設定されます。
非同期実行

命令「OPC_UA_Connect」は、ユーザープログラムとは非同期で動作し、複数のプログラ
ムサイクルを必要とします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3193

通信
6.3 OPC UA「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明
このプログラムの部分では、クライアントインターフェース設定時に入力した OPU UA サーバーへの接続を確立します。
タグ「#State」には、プログラム開始時に値「1」が含まれます。
「OPC_UA_Connect」命令がまだ実行されていない場合、#Busy は FALSE であるため、#Req は TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req
が FALSE になります。
出力パラメータ「Done」が TRUE である場合、接続が確立できています。ステータスが接続成功になると、#State タグの値が 1 増加します。これは、次のプログラムセクション(2:)
が次のサイクルで実行されることを意味します。OPC_UA_NamespaceGetIndexList:名前空間インデックスの読み取り (ページ 3195)を参照してください。また、ステータスが接続成功を示すと、「ConnectionHdl」出力パラメータに、確立された接続の数値参照が出力されます。
エラーが発生すると、「Error」出力パラメータの値が TRUE.になります。
• エラーイベントで接続ハンドルが返される場合は、サーバー内のリソースは解放される必要があります。このため、#State タグに値 100 が割り当てられます。
• エラーイベントで接続ハンドルが返されない場合は、#State タグに値 99 が割り当てられます。
プログラムセクション 99 および 100 は、エラー処理用に予約されています。

下記も参照
PLC タグを読み取るプログラム例 (ページ 3379)
OPC_UA_TranslatePathList:現在の NodeIds の識別 (ページ 3224)
シーメンスエラーコード (ページ 3351)(ページ 3181)

3194

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

プログラミングの推奨事項:接続のモニタリング

接続のモニタリングに関する推奨事項
接続の中止に明確に応答できるようにするため、およびエラーイベントで新規接続を直ちに確立できるようにするため、命令 OPC_UA_Connect」で作成した接続を周期的にモニタリ
ングすることを推奨します。
以下の S7-1500 CPU の OPC UA クライアント用の S7 ユーザーブロックの説明には、接続
モニタリングの統合方法が記載されています。
SIMATIC S7-1500 の OPC UA クライアント用の S7 ユーザーブロック
CPU ファームウェアバージョン V2.8 以降の変更点

OPC UA では、接続ハンドルが接続を参照します。ファームウェアバージョン 2.8 移行では、障害イベント時、または接続中断時に、「OPC_UA_Disconnect」命令を呼び出すことで適切な接続ハンドルを明示的に解放する必要があります。OPC UA は、接続ハンドルが解放されるまで無効となり、使用できなくなります。
接続ハンドルの解放後、CPU は新規接続(OPC_UA_Connect)に対してこの接続ハンドルを拒否する場合があります。

下記も参照
OPC_UA_ConnectionGetStatus:読み取り接続ステータス (ページ 3300)

OPC_UA_NamespaceGetIndexList:名前空間インデックスの読み取り

有効性
以下の「OPC_UA_NamespaceGetIndexList」命令の説明は、ファームウェアバージョン
V2.6 以降の S7-1500 CPU に適用されます。

説明「OPC_UA_NamespaceGetIndexList」命令を使用して、OPC UA サーバー内の名前空間の現在のインデックスを要求します。
下図に、エディタ(FBD)内での命令のアイコンを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3195

通信
6.3 OPC UA

上図では、命令のパラメータはまだ提供されていません。
命令「OPC_UA_NamespaceGetIndexList」を使用して、OPC UA サーバーとのデータ交換を準備します。下図の①を参照してください。
PLC タグの読み取り/書き込み、またはメソッドの呼び出しを行うには、PLC タグが位置している名前空間のインデックスが分かっている必要があります。インデックスは、OPC UA
サーバーのアドレス空間内にある、この PLC タグのアドレスの一部(NodeId)です。
この命令は、OPC UA サーバーの名前空間のインデックスを含むリストを返します。
このリストは、「OPC_UA_NodeGetHandleList」命令で読み取りおよび書き込みジョブの送信に使用可能な NodeIDs の要求に必要です。

23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B5HDG/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW

23&B8$B:ULWH/LVW

3196

①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み操作完了後にリソースを解放するための命令

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「OPC_UA_NamespaceGetIndexList」のパラメータ
表 6-4

命令「OPC_UA_NamespaceGetIndexList」のパラメータ

パラメータ

領域での宣言 データタ 意味
イプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ
0 → 1 になると、命令の実行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 OPC_UA_Connect:接続の作成 (ページ 3181)からハンドルを取得します。

NamespaceUrisCou Input

UINT

nt
NamespaceUris

NamespaceUris パラメータ内の名前空間
の数

InOut

VARIANT タイプ STRING または WSTRING の配列へのポインタ。
この配列には、インデックスが要求される個々の名前空間の URIs が含まれます。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間 。
このパラメータの説明について
は、OPC_UA_Connect:接続の作成 (ページ 3181)も参照してください。

StatusList

InOut

VARIANT タイプ DWORD の配列へのポインタ(オプション)。
この配列には、個々の名前空間のエラーコードが含まれます。
各名前空間に対して、システムは対応するインデックスを見つけられたかどうかを指定します。

NamespaceIndexes InOut

VARIANT タイプ UINT の配列へのポインタ。
この配列には、OPC UA サーバーから要求された個々の名前空間のインデックスが含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3197

通信
6.3 OPC UA
パラメータ

領域での宣言 データタ 意味
イプ

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、まだ完了していない、またはまだ開始していません。
• 1:命令の実行がエラーなしで完了しま
した。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されています。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
「Status」• 1:エラーが発生しました。
パラメータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

Status のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。

3198

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
次の表に、この命令のエラーコードの概要を示します。
エラーコードエラーの名前説明

OpcUa_Good

命令が正常に終了しまし(16 進数の値)
0000_0000

た。
8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモリがありません。
OPC UA クライアントおよ
び OPC UA サーバーがメモ
リ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC
タグ数を減らす。
• 現在サーバーに接続されている OPC UA クライア
ント数を減らす。
• サブスクリプション数を減らす。

8009_0000

OpcUa_BadUnknownResponse

サーバーが、予期される名前空間配列のエレメントで応答しません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3199

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadTimeout

ネットワークタイムアウト(16 進数の値)
800A_0000が発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URLを確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect のTimeout パラメータの値を増加)。
800D_0000

OpcUa_BadServerNotConnected

サーバーが接続されていな
いか、接続ハンドルが正し
くない、または無効です。

800F_0000

OpcUa_BadNothingToDo

NamespaceUrisCount が 0です。

8010_0000

OpcUa_BadTooManyOperations

1 つの接続につき同時に呼び出せる「OPC_UA_NamespaceGetI
ndexList」命令の数(1)を超えました。関連項目:
AUTOHOTSPOT

809E_0000

OpcUa_BadDataUnavailable

名前空間のインデックス
が、現在使用できません。

3200

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

BadConnectionClosed

対応する ConnectionHdl で(16 進数の値)
80AE_0000の接続が「ShutDown」ス
テータスです(接続が終了しています)。接続/セッショ
ンを自動的に「再有効化」
できませんでした。考えられる原因:再起動またはタイ
ムアウトなどにより、サー
バーでセッションが削除されています。
この場合、命令「OPC_UA_Disconnect」によって接続を明示的に終了
し、接続リソースを再度解放する必要があります。ユーザープログラム内で、この接続に対して無効になっている ConnectionHdl をリセットする必要があります。
その後、サーバーへの接続を新規に確立する必要があります(命令「OPC_UA_Connect」を参照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3201

通信
6.3 OPC UA
エラーコードエラーの名前説明

BadInvalidState

対応する ConnectionHdl で(16 進数の値)
80AF_0000の接続が「ConnectinError」ステータ
スです(一時的な接続エラ
ー、接続が中断されています)。CPU が接続の「再有効化」を試行します。設定されたタイムアウト時間(OPC UA Session Timeout)
中に「再有効化」に失敗す
ると接続が「Shutdown」
状態になります。状態遷移の要件:セッションがアクテ
ィブかどうかを確認するた
めに、CPU が OPC UA サー
バーに到達できること。
A000_0105

PLCopenUA_Bad_ConnectionInvalidH

接続ハンドルdl(ConnectionHdl)が無効または不明です。
「」を参照
OPC_UA_ConnectionGetSt
atus:読み取り接続ステータ
ス (ページ 3300)

B080_0100

Simatic_BadType_VariantInput1

パラメータ「NamenspaceUris」のデー
タタイプが正しくありません。

B080_0200

Simatic_BadType_VariantInput2

パラメータ「StatusList」のデータタイプが正しくありません。

B080_0300

Simatic_BadType_VariantInput3

パラメータ「NamenspaceIndexes」のデータタイプが正しくあり
ません。

3202

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

Simatic_ArrayElements_TooMany

NamespaceUrisCount >(16 進数の値)
B080_1100

MAX_ELEMENTS_NAMESP
ACES
B080_3100

BadNumElements_VariantInput1

NamespaceUrisCount >「NamespaceUris」パラメ
ータの配列のエレメント
数。

B080_3200

BadNumElements_VariantInput2

NamespaceUrisCount >「StatusList」パラメータの配列のエレメント数。

B080_3300

BadNumElements_VariantInput3

NamespaceUrisCount >「NamespaceIndexes」パラ
メータの配列のエレメント
数。

B080_C500

Simatic_NothingToDo

行う処理がありません:この命令は、エレメント(名前空間)が含まれていないリスト
を使用しています。

C080_C300

Simatic_InsufficientResources

同時に使用可能なクライア
ント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのクライアント命
令数を減らします。関連
項目: AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

「StatusList」のエラー番号
このパラメータには、各名前空間に対するエラーコードが含まれています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3203

通信
6.3 OPC UA
次の表では、エラーコードについて説明します。
エラーコードエラーの名前説明

OpcUa_Good

名前空間が見つかりました。

(16 進数の値)
0000_0000

名前空間のインデックスが、「NamespaceIndexes」パラメータがポイントしている配列内に格納されています。
806F_0000

OpcUA_BadNoMatch

名前空間が見つかりません。

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

この命令の使用方法
このセクションではプログラム例を使用して、OPC UA サーバーとデータ交換を行うプロ
グラム内での命令「OPC_UA_NamespaceGetIndexList」の使用方法について説明します。

要件
この説明では、以下のことを仮定しています。
• クライアントインターフェースが作成済みであること。「AUTOHOTSPOT」を参照。
• このクライアントインターフェースのプロパティ内で OPC UA サーバーへの接続が設定済みであること。「AUTOHOTSPOT」を参照。
さらに、命令「OPC_UA_NamespaceGetIndexList」では、以下の要件も満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 OPC_UA_Connect:接続の作成 (ページ 3181)を呼び出すことで、接続ハンドルを取得します。

命令のファンクション
データ交換を行うには、プログラムを使用して読み取り/書き込みを行うタグを含む名前
空間のインデックスが必要です。
また、呼び出しメソッドのメソッドを含む名前空間の現在のインデックスも必要です。
OPC UA 仕様に基づき、新しい名前空間が追加される、または名前空間が削除される場合な
どには、OPC UA サーバーでは名前空間および関連するインデックス間の割り当ては固定されず、変更が可能です。

3204

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
このため、命令 OPC_UA_NodeGetHandleList を使用してノードハンドルを取得する前に、
OPC UA サーバーから現在のインデックスを要求する必要があります。これは、命令「OPC_UA_NamespaceGetIndexList」を使用して行います。
この命令が返す情報

この命令は以下の情報を返します。
• 個々の名前空間のインデックスのリスト(「NamespaceIndexes」パラメータ)。インデックスの順序は、「NamespaceUris」パラメータ内の名前空間の順序に対応します。
• エラーメッセージのリスト(「StatusList」パラメータ)。
このリスト内の各エラーメッセージは、「NamespaceUris」パラメータ内の対応する名
前空間に関連しています。
各名前空間に対して、その名前空間に対するインデックスが正常に返されたかどうかをチェックできます。

UaExpert を使用した名前空間およびそのインデックスの識別
この命令を使用するには、名前空間 URI (Uniform Resource Identifier)が既知であることが必要です。以下の例が示す通り、UaExpert を使用して名前空間 URI および名前空間イン
デックスを識別できます。

クライアントインターフェースの使用方法
1. [プロジェクトツリー]エリアで、クライアントとして動作する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を含めるファンクションブロックを選択します。
この例では、ファンクションブロックを「ReadFromProductionline」とします。
選択言語:SCL
3. ドラッグ＆ドロップで、命令「OPC_UA_NamespaceGetIndexList」をフォルダ[命令|通信|
OPC UA|OPC UA クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「OPC_UA_NamespaceGetIndexList_Instance」と命名します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3205

通信
6.3 OPC UA
5. 「OPC_UA_NamespaceGetIndexList_Instance」命令の[設定の開始]のアイコンをクリックします。
STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、クライアントインターフェースを「Productionline」と命名します。
「AUTOHOTSPOT」を参照してください。
これにより、STEP 7 は命令のパラメータに、クライアントインターフェースに対して設定済
みの値を自動的に供給します。
7. [ブロックパラメータ]をクリックし、タグを残りのパラメータ REQ、Busy、Done、Error、
Status に手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

この命令の呼び出し
以下のソースコードで、命令「OPC_UA_NamespaceGetIndexList」を使用して、OPC UA サーバーによって現在使用されている名前空間のインデックスを要求する方法を示します。
完全なプログラムは、セクション「PLC タグを読み取るプログラム例 (ページ 3379)」に記載されています。
このサンプルプログラムは、CASE 命令によって複数のセクション(ケース)に分割されて
います。

3206

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
2 番目のプログラムセクションで、名前空間のインデックスが要求されます。
SCL2:// case 2, get index for namespace

IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NamespaceGetIndexList_Instance(NamespaceUris :="Productionline_Configuration".Namespaces.NamespaceURIs,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceUrisCount := "Productionline_Configuration".Namespaces.NamespaceCount,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
REQ := #Req,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF "Productionline_Configuration".Namespaces.NamespaceStatusList[0] = 0 THEN
#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NamespaceGetIndexList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REG of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NamespaceGetIndexList_Instance(NamespaceUris :="Productionline_Configuration".Namespaces.NamespaceURIs,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
REQ := FALSE);
END_IF;

このサンプルプログラムは、以下の理由で「OPC_UA_NamespaceGetIndexList」命令を呼び出します。
• 名前空間のインデックスを要求するため。
• エラーが発生すると、「REQ」パラメータの値が「FALSE」に設定されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3207

通信
6.3 OPC UA
非同期実行

命令「OPC_UA_NamespaceGetIndexList」は、ユーザープログラムとは非同期で動作し、複数のプログラムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明
上図は、ケース 2 を表しています。プログラムのこの部分で、名前空間のインデックスを要求します。
#State タグが 2 の場合、ケース 2 が実行されます。
「OPC_UA_NamespaceGetIndexList」命令がまだ実行されていない場合、#Busy は FALSE となり、「#Req」タグは TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req が FALSE になります。
出力パラメータ「Error」が TRUE の場合、命令の実行中にエラーが発生します。これにより、#State タグが値 100 に設定されます。このケースは、トラブルシューティング用に予約されています。
出力パラメータ「Done」が TRUE の場合、命令は正常に実行されています。ステータスが接続成功になると、「#State」タグの値が 1 増加します。これは、次のプログラムセクシ
ョン(ケース 3、読み取りアクセスおよび書き込みアクセス用のハンドル取得)が次のサイクルで実行されることを意味します。
ケース 3 については、OPC_UA_NodeGetHandleList:読み取り/書き込みアクセス用のハンドルの取得 (ページ 3209)で説明されています。
注記
命令の実行
命令が正常に実行されている(「Error」パラメータが設定されず、「Done」パラメータが設定される)にもかかわらず、特定の名前空間のインデックスが返されない場合もあります。
このため、この例では照会された名前空間に対してインデックスが見つかったかどうかを判定するためのチェックが行われています。インデックスが見つかった場合は、「StatusList」パラメータがポイントする配列の最初のエレメントに値 0 が含まれます。

3208

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

下記も参照
OPC_UA_TranslatePathList:現在の NodeIds の識別 (ページ 3224)

OPC_UA_NodeGetHandleList:読み取り/書き込みアクセス用のハンドルの取得

有効性
以下の「OPC_UA_NodeGetHandleList」命令の説明は、ファームウェアバージョン V2.6 以
降の S7-1500 CPU に適用されます。

説明「OPC_UA_NodeGetHandleList」命令を使用して、OPC UA サーバーに PLC タグを登録します。
下図に、エディタ(FBD)内での命令のアイコンを示します。

上図では、命令のパラメータはまだ提供されていません。
命令"OPC_UA_NodeGetHandleList を使用して、OPC UA サーバーとのデータ交換を準備します。下図の①を参照してください。
この命令を使用して、読み取りまたは書き込みを行うサーバーに PLC タグを登録します。
この手順により、命令「OPC_UA_ReadList」および「OPC_UA_WriteList」による後のアクセスが最適化されます。
この命令は、登録済み PLC タグの数値参照(ハンドル)を含むリストを返します。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3209

通信
6.3 OPC UA
23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B5HDG/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW

23&B8$B:ULWH/LVW①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み操作完了後にリソースを解放するための命令「OPC_UA_NodeGetHandleList」のパラメータ
表 6-5

命令「OPC_UA_NodeGetHandleList」のパラメータ

パラメータ

領域での データタ 意味
宣言
イプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ
0 → 1 になると、命令の実行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

NodeIDCount

Input

UINT

NodeIDs パラメータ内のエレメント数

NodeIDs

InOut

VARIANT タイプ AUTOHOTSPOT のエレメントを格納する配列へのポインタ。
この配列には、数値参照(ハンドル)が提供される OPC UA サーバーのタグのNodeIds が含まれます(上記「ブロックのファンクション」を参照)。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間 。
このパラメータの説明については、
AUTOHOTSPOT も参照してください。

NamespaceIndexCount

Input

UINT

「NamespaceIndexes」パラメータ内のエ
レメント数

3210

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
パラメータ

領域での データタ 意味宣言
イプ

NamespaceIndexes

InOut

VARIANT タイプ UINT の配列へのポインタ。
NamespaceIndexCount パラメータ内にエレメントがない場合(NamespaceIndexCount = 0).、このパラメータは不要です。
この配列は、NodeIDs パラメータ内の名
前空間のインデックスに新しいインデッ
クスを割り当てるために使用します。
例:
NamespaceIndexes[4]内に値 10 が存在する場合、以前は名前空間インデックス
が 4 であった「NodeIDs」パラメータ内のすべての NodeIDs に名前空間インデックスとして 10 が割り当てられます。

NodeStatusList

InOut

VARIANT タイプ DWORD の配列へのポインタ。
この配列には、個々のタグの NodeIds に対するエラーコードが含まれています。
下記の「NodeStatusList のエラー番号」
を参照してください。
ハンドルが各 NodeId に割り当てられるかどうかを指定します。
ファンクションブロックが正常に実行された(「Error」パラメータが設定されない)にもかかわらず、特定の NodeId (タグ)に対してハンドルが見つからない場合もあります。
NodeId は、名前空間インデックス、タグ
名(識別子)、および識別子タイプで構成されます。OPC_UA_NodeID を参照してください。

NodeHdls

InOut

VARIANT タイプ DWORD の配列へのポインタ。
この配列には、OPC UA サーバーから要求された個々の NodeIds のハンドルが含まれます(上記「ブロックのファンクショ
ン」を参照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3211

通信
6.3 OPC UA
パラメータ

領域での データタ 意味
宣言
イプ

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、まだ完了していない、またはまだ開始していません。
• 1:命令の実行がエラーなしで完了しま
した。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されています。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
「Status」• 1:エラーが発生しました。
パラメータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

Status のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。

3212

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
次の表に、この命令のエラーコードの概要を示します。
エラーコードエラーの名前説明

0000_0000

OpcUa_Good

命令が正常に終了しました。

8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモ(16 進数の値)

リがありません。
OPC UA クライアントおよび OPC UA サ
ーバーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている OPC
UA クライアント数を減らす。
• サブスクリプション数を減らす。
8009_0000
800A_0000

OpcUa_BadUnknownRespo

サーバーが、認識できない応答を送信

nse

しました。

OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout パラ
メータの値を増加)。

800D_0000

OpcUa_BadServerNotConn

サーバーが接続されていないか、接続

ected

ハンドルが正しくない、または無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3213

通信
6.3 OPC UA
エラーコードエラーの名前説明(16 進数の値)
8010_0000

OpcUa_BadTooManyOperat 1 つの接続につき同時に呼び出せる
ions「OPC_UA_NodeGetHandleList」命令の数(1)を超えました。関連項目:
AUTOHOTSPOT

8033_0000

OpcUa_BadNodeIdInvalid

ノードの構文が無効です。

8034_0000

OpcUa_BadNodeIdUnknow

ノードの ID(NodeId)が、サーバーのアn

ドレス空間内に存在しないノードを参照しています。

80AE_0000

BadConnectionClosed

対応する ConnectionHdl での接続が「ShutDown」ステータスです(接続が終了しています)。接続/セッションを自動的に「再有効化」できませんでした。
考えられる原因:再起動またはタイムア
ウトなどにより、サーバーでセッションが削除されています。
この場合、命令「OPC_UA_Disconnect」によって接続を明示的に終了し、接続リソースを再度解放する必要があります。ユーザープ
ログラム内で、この接続に対して無効になっている ConnectionHdl をリセットする必要があります。
その後、サーバーへの接続を新規に確立する必要があります(命令「OPC_UA_Connect」を参照)。

3214

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

BadInvalidState

対応する ConnectionHdl での接続が(16 進数の値)
80AF_0000「ConnectinError」ステータスです(一時的な接続エラー、接続が中断されています)。CPU が接続の「再有効化」を試行します。設定されたタイムアウト時
間(OPC UA Session Timeout)中に「再有効化」に失敗すると接続が「Shutdown」状態になります。状態遷
移の要件:セッションがアクティブかどうかを確認するために、CPU が OPC UA
サーバーに到達できること。
B080_0100
B080_0200
B080_0300
B080_0400
B080_1100
B080_3100

B080_3200

Simatic_BadType_VariantIn

パラメータ「NodeIDs」のデータタイプ

put1

が正しくありません。

Simatic_BadType_VariantIn

パラメータ「NamenspaceIndexes」のput2

データタイプが正しくありません。

Simatic_BadType_VariantIn

パラメータ「NodeStatusList」のデータ

put3

タイプが正しくありません。

Simatic_BadType_VariantIn

パラメータ「NodeHdls」のデータタイ

put4

プが正しくありません。

Simatic_ArrayElements_Too NodeIDCount >Many

MAX_ELEMENTS_NODELIST

BadNumElements_VariantI

NodeIDCount > 「NodeIDs」パラメー

nput1

タの配列のエレメント数。

BadNumElements_VariantI

NamespaceIndexCount >nput2「NamespaceIndexes.」パラメータの配列のエレメント数。

B080_3300
B080_3400
B080_C400

BadNumElements_VariantI

NodeIDCount > 「NodeStatusList」パ

nput3

ラメータの配列のエレメント数。

BadNumElements_VariantI

NodeIDCount > 「NodeHdls」パラメー

nput4

タの配列のエレメント数。

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3215

通信
6.3 OPC UA
エラーコードエラーの名前説明

Simatic_NothingToDo

行う処理がありません:この命令は、エ(16 進数の値)
B080_C500

レメントが含まれていないリストを使用しています。
C080_C300

Simatic_OutOfResources

同時に使用可能なクライアント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのク
ライアント命令数を減らします。関
連項目: AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

「NodeStatusList」のエラー番号「NodeStatusList」パラメータには、個々の NodeId (タグ)に対するエラーコードが含まれています。
次の表では、エラーコードについて説明します。
エラーコードエラーの名前説明

OpcUa_Good

PLC タグ(NodeId)が見つかりません(16 進数の値)
0000_0000でした。
タグの Handle が、「NodeHdls」パラ
メータがポイントしている Array に格納されています。
8033_0000

OpcUa_BadNodeIdInvalid

NodeId の構文が正しくありません。

8034_0000

OpcUa_BadNodeIdUnknown

NodeId が、OPC UA サーバー内に存在しないノード(タグ)を参照しています。

A000_0309

PLCopenUA_Bad_OutOfHandle ノードの最大数
s(PLCOPEN_MAXREGISTEREDNODES)に達したため、NodeId は登録されませんでした。

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

3216

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

この命令の使用方法
このセクションではプログラム例を使用して、OPC UA サーバーとデータ交換を行うプロ
グラム内での命令「OPC_UA_NodeGetHandleList」の使用方法について説明します。

要件
この説明では、以下のことを仮定しています。
• クライアントインターフェースが作成済みであること。「AUTOHOTSPOT」を参照。
• このクライアントインターフェースのプロパティ内で OPC UA サーバーへの接続が設定済みであること。「AUTOHOTSPOT」を参照。
さらに、命令「OPC_UA_NodeGetHandleList」では、以下の要件も満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 AUTOHOTSPOT から接続ハンドルを取得します。
• クライアントで読み取りまたは書き込みを行うタグが格納されている名前空間のイン
デックス。
命令 AUTOHOTSPOT からインデックスを取得します。

命令のファンクション
タグへのアクセスを最適化するため、OPC UA には繰り返しアクセスを行う際に使用できる「RegisterNodes」サービスが用意されています。
サーバーはこのサービスを使用して、タグへの最適化されたアクセスを準備します。
「OPC_UA_NodeGetHandleList」命令は明示的にこのサービスを呼び出して、サーバーでの最適化されたアクセスを準備します(OPC UA 内での「Registered Read/Write」)。
このようにして、「OPC_UA_NodeGetHandleList」命令の呼び出しによって OPC UA サーバ
ーから数値参照(ハンドル)を取得します。これらのハンドルは、「Registered Read/Write」
での最適化されたアクセスに対応する、「OPC_UA_ReadList」または「OPC_UA_WriteList」
命令で使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3217

通信
6.3 OPC UA
必要な情報

数値参照(ハンドル)を要求するために、この命令は以下の情報を必要とします。
• 読み取られる、または設定されるタグのリスト(「NodeIDs」パラメータ、システムデー
タタイプ「AUTOHOTSPOT」を参照)。
このリストには、各タグに対する以下の情報が含まれています– タグが格納されている名前空間のインデックス。
– タグ識別子(タグ名)。
– 識別子のタイプ
この命令が返す情報

この命令は以下の情報を返します。
• タグのハンドルのリスト(「NodeHdls」)。
ハンドルの順序は、NodeIDs パラメータ内のタグの順序に対応します。
• エラーメッセージのリスト(「NodeStatusList」パラメータ)。
このリスト内の各エラーメッセージは、NodeIDs パラメータ内の対応するタグに関連しています。
個々のタグに対して、OPC UA サーバーがハンドルを返せたかどうかを確認する必要があります。

クライアントインターフェースの使用方法
1. [プロジェクトツリー]エリアで、クライアントとして動作する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を含めるファンクションブロックを選択します。
この例では、ファンクションブロックを「ReadFromProductionline」とします。
選択言語:SCL。
3. ドラッグ＆ドロップで、命令「OPC_UA_NodeGetHandleList」をフォルダ[命令|通信|OPC
UA|OPC UA クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「OPC_UA_NodeGetHandleList_Instance」と命名します。
5. 「OPC_UA_NodeGetHandleList_Instance」命令の[設定の開始]のアイコンをクリックします。
STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、サンプルプラント用に作成されたクライアントインターフェース「Productionline」が選択されています。

3218

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
7. [データアクセス]をクリックし、読み取りリストを選択します。
この例では、読み取りリストは「ReadListProduct」です。
これにより、STEP 7 は命令のパラメータに、クライアントインターフェースに対して設定済
みの値を自動的に供給します。
8. [ブロックパラメータ]をクリックし、タグを残りのパラメータ REQ、Busy、Done、Error、
Status に手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

命令の呼び出し(初期呼び出し)
完全なプログラムは、セクション「AUTOHOTSPOT」に記載されています。
このプログラム例で使用する読み取りリスト「ReadListProduct」には、以下の PLC タグが含まれています。
• NewProduct• ProductNumber
プログラムは、サーバーからこれらのタグに対する数値参照(ハンドル)を受信します。
このサンプルプログラムは、CASE 命令によって複数のセクション(ケース)に分割されています。
3 番目のプログラムセクション内では、読み取られる、または書き込まれるノードのハンドル(PLC タグ)が要求されます。
SCL
3: // case 3, get handles for nodes
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NodeGetHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeIDs := "Productionline_Configuration".ReadLists."ReadListProduct".Nodes,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount := "Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
NodeHdls := "Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3219

通信
6.3 OPC UA
非同期実行

命令「OPC_UA_NodeGetHandleList」は、ユーザープログラムとは非同期で動作し、複数のプログラムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明(初期呼び出し)
上図のプログラムパートは、PLC タグのハンドルを要求するために「OPC_UA_NodeGetHandleList」命令を呼び出します。
命令がまだ実行されていない場合、#Busy は FALSE であるため、「#Req」タグは値 TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req が FALSE にな
ります。

3220

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出し(トラブルシューティング)
下図は、「Done」および「Error」パラメータの評価を示しています。
SCL
IF #Done = TRUE THEN
IF "Productionline_Data"."ReadListProduct".NodeStatusList[0] = 0 AND"Productionline_Data"."ReadListProduct".NodeStatusList[1] = 0
THEN#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#OPC_UA_NodeGetHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeIDs := "Productionline_Configuration".ReadLists."ReadListProduct".Nodes,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount := "Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
NodeHdls := "Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls);
END_IF;

命令の呼び出しの説明(トラブルシューティング)
エラーが発生すると、「Error」出力パラメータの値が TRUE に設定されます。これにより、「#State」タグの値が 100 に設定されます。このケースは、トラブルシューティング用に予約されています。このサンプルプログラムは、REQ パラメータを FALSE に設定するために
命令「OPC_UA_NodeGetHandleList」も呼び出します。
出力パラメータ「Done」が TRUE の場合、命令は正常に実行されています。
注記:命令が正常に実行された(「Error」パラメータが設定されず、「Done」パラメータが設定される)にもかかわらず、特定の PLC タグのハンドルが返されていない場合もあります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3221

通信
6.3 OPC UA
このため、このサンプルプログラムでは各 PLC タグに対してハンドルが返されたかどうかを判定するためのチェックが行われています。
• 最初のタグに対してハンドルが返される場合、「NodeStatusList」パラメータがポイン
トする配列の最初のエレメントに値 0 が含まれます。
• 2 番目のタグに対してハンドルが返される場合、「NodeStatusList」パラメータがポイントする配列の 2 番目のエレメントに値 0 が含まれます。
両方の条件を満たす場合、出力パラメータ「NodeHdls」は登録されている PLC タグのハ
ンドルが含まれる有効なリストをポイントします。
「#State」タグの値が 1 増加します。これは、次のプログラムセクション(ケース 4)が次のサイクルで実行されることを意味します。
ケース 4 については、OPC_UA_Readlist (ページ 3244)で説明されています。
注記
アプリケーション内で OPC_UA_NodeGetHandleList を使用して大量のタグを登録する場合
は、#Done = TRUE の時に必ず#State を 1 つ増加させると便利です。この場合、要求した値を使用する際に、個々の値が有効かどうかをチェックする必要があります。

ヒント:一般エラー処理のプログラミング
上記のサンプルプログラム(命令「エラー処理」の呼び出し)では、明確かつ簡単に理解できるように、2 つの PLC タグのハンドルのみを照会し、それぞれのタグに対してハンドルが返されているかどうかをチェックしています。このタイプの照会は柔軟性に欠けます。
プログラム内で 2 つ以上の PLC タグのハンドルをスキャンする場合は、PLC タグの数とは無関係にプログラムを記述したい場合は、ループ内で「NodeStatusList」を評価するために以下のプログラムコードを使用する必要があります。
IF #Done = TRUE THEN
FOR #i := 0 TO
UINT_TO_INT("Productionline_Configuration".ReadLists."ReadListPro
duct".NodeCount) - 1 DO
IF NOT("Productionline_Data"."ReadListProduct".NodeStatusList[#i] = 0)
THEN
#Output_Error_Message := CONCAT_WSTRING(IN1 :=WSTRING#'Error at NodeGetHandleList, Index: ',IN2 := INT_TO_WSTRING(#i));
END_IF;
END_FOR;#State := #State + 1;
END_IF;

3222

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

パラメータ「NamespacesIndexes」の目的
パラメータ「NamespaceIndexes」は、名前空間のインデックスを実装します。
たとえば、エクスポートされた OPC UA XML ファイルなどの外部リストから、ユーザープ
ログラム内のノード識別子を読み取る場合などには、インデックスの実装が必要となります。
この場合、リスト内のすべての識別子の名前空間に対して OPC UA サーバーが現在使用しているインデックスを入力する必要があります。
さらに、名前空間のインデックスが変更される場合があるため、リストを毎回調整する必要があります。
インデックスの自動変更

名前空間のインデックスを自動的に実装できます。これを行うには、「OPC_UA_NodeGetHandleList」命令のパラメータ「NamespaceIndexes」および「"NamespacesIndexCount"」を使用します。
次の手順を実行します。
1. リストから読み取る NodeIds に割り当てられている名前空間を確認します。
この例では、NodeIds が名前空間インデックス 0 に割り当てられています。
この例では、NodeIds は Siemens 名前空間「http://www.siemens.com/simatic-s7-opcua」にあります。
2. タイプ「WString」の配列を作成します。
この例では、配列を「myNamespaces」と命名しています。
3. "myNamespaces[0]に、Siemens 名前空間「http://www.siemens.com/simatic-s7-opcua」
を格納します(配列エレメント 0 にも格納)。
4. 「NamespaceUris」パラメータに、新しい配列「myNamespaces」を提供します。
この命令は、パラメータ「NamespaceIndexes」で結果(現在のインデックス)を提供します。
5. 結果用に、タイプ「UInt」の配列を作成します。
この例では、配列を「myNamespaceIndexes」と命名しています。
6. 「NamespaceIndexes」パラメータに、新しい配列「myNamespaceIndexes」を提供します。
7. この配列「myNamespaceIndexes」を命令「OPC_UA_NodeGetIndexList」の「NamespacesIndexes」パラメータにも割り当てます。
その後、この命令は「myNamespaceIndexes[0]」から Siemens 名前空間の現在のインデッ
クスを読み取り、元の名前空間インデックス 0 の代わりにこの値を使用します。これによってインデックスが実装されます。
8. 値 1 を命令「OPC_UA_NodeGetIndexList」の「NamespacesIndexCount"」パラメータに割り当てます(この例では名前空間を 1 つしか使用していません)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3223

通信
6.3 OPC UA
以下のプログラムコードは、実装例を示しています。
SCL#OPC_UA_NodeGetHandleList_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
NodeIDCount := 2,
NodeIDs := #TargetNodeIds,
Timeout := T#6S,
NamespaceIndexCount := 1,NamespaceIndexes := #myNamespaceIndexes,
NodeStatusList := #NodeStatusList,
NodeHdls := #NodeHdls,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

パラメータ「NamespaceIndexes」および「NamespaceIndexCount」はオプションです。

インデックス変換が不要な場合は、「NamespaceIndexes」および「NamespaceIndexCount」パラメータを提供する必要はありません。
OPC_UA_TranslatePathList 命令を使用して NodeIds を識別する場合など、NodeIds が正しい名前空間で直接指定される場合は、インデックス変換は不要です。

下記も参照
OPC_UA_TranslatePathList:現在の NodeIds の識別 (ページ 3224)(ページ 3181)
OPC_UA_ConnectionGetStatus:読み取り接続ステータス (ページ 3300)

OPC_UA_TranslatePathList:現在の NodeIds の識別

有効性
以下の「OPC_UA_TranslatePathList」命令の説明は、ファームウェアバージョン V2.6 以降の S7-1500 CPU に適用されます。

説明「OPC_UA_TranslatePathList」命令を使用して、OPC UA サーバーのアドレス空間内をナビ
ゲート(参照)し、OPC UA サーバーが使用するノードのノード ID(NodeId)を識別します。

3224

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
この命令は、ノードの BrowseNames およびパスが定義されているにもかかわらず、
NodeIds が不明であるため、サーバーによって異なる可能性がある場合に使用します。
原則として、以下のルールが適用されます。NodeId が既知のノードでナビゲーションを開始します。たとえば OPC Foundation の「http:\\opcfoundation.org/UA/」名前空間のノードは既知です。
。その他の始点となり得るノードは、NodeId を識別済みのサ開始ノードの例: 「Objects」
ーバーのアドレス空間内で使用されている情報モデルの「DeviceSet」、またはその下のルートノードです。
以下の例では、「Objekts」ノードを使用しています。この開始ノードから開始し、既存のBrowseName を使用して、最終的にターゲットノードに到着するまでノードからノードへとナビゲートします。ターゲットノードでは、NodeId の後に目的の情報を読み取ります「NodeID」属性)。
(
例

デバイスの OPC UA サーバーは、コンパニオン仕様 AutoID に適合するサーバーインター
フェースを発行します。コンパニオン仕様は、OPC UA ノードの BrowseName を定義します。これには、これらのノードの BrowseName 名が既知であることが必要です。しかし、照会している OPC UA サーバーがこれらのノードに対してどの NodeIds を使用しているかは分かりません。この場合に、「OPC_UA_TranslatePathList」命令を使用します。
代替手順

STEP 7 (TIA ポータル)には、「OPC_UA_TranslatePathList」命令の代替方法が用意されています。[プロジェクトツリー|<CPU 名>|OPC UA 通信]で STEP 7 内にクライアントインター
フェースを作成し、読み取り、書き込み、またはメソッドリストを設定できます。その後、
STEP 7 はノードの NodeIds を自動的に識別します。
ただし、この代替方法を使用する場合は、このデバイスの OPC UA サーバーに到達できる、またはデバイスの OPC UA XML ファイルを使用できる必要があります。
命令のシンボル

下図に、エディタ(FBD)内での命令のアイコンを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3225

通信
6.3 OPC UA

上図では、命令のパラメータはまだ提供されていません。
OPC_UA_TranslatePathList を使用して、データ交換を準備します。下図の①を参照してください。
これを行うには、この命令に参照パスを提供します。命令は、検索しているノードの
NodeIds を返します。
23&B8$B&RQQHFW
23&B8$B'LVFRQQHFW

23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B7UDQVODWH3DWK/LVW
23&B8$B1RGH*HW+DQGOH/LVW

3226

23&B8$B5HDG/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW

23&B8$B:ULWH/LVW①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み操作完了後にリソースを解放するための命令

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「OPC_UA_TranslatePathList」のパラメータ
表 6-6

命令「OPC_UA_TranslatePathList」のパラメータ

パラメータ

領域での データタ 意味
宣言
イプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、命令の実行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

BrowsePathsCount

Input

UINT

BrowsePaths 内のエレメント数(最大 10)。

BrowsePaths

InOut

VARIANT タイプ AUTOHOTSPOT の配列へのポインタ。
この配列には、辿りたい個々の参照パスが含まれています。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間 。
このパラメータの説明については、
AUTOHOTSPOT も参照してください。

NamespaceIndexCo Input

UINT

NamespaceIndexes 内のエレメント数。

unt
NamespaceIndexes InOut

VARIANT タイプ UINT の配列へのポインタ。
NamespaceIndexCount が 0 の場合、このパラメータは無視されます。
この配列は、BrowsePaths パラメータ内に渡される名前空間のインデックスを変換するために使用します。
例:
NamespaceIndexes[4]内に値 10 が存在する
場合、以前は名前空間インデックスが 4 であった「BrowsePaths」パラメータ内のすべての NodeIds に名前空間インデックスとして10 が割り当てられます。

TargetNodeIDs

InOut

VARIANT タイプ AUTOHOTSPOT の配列へのポインタ。
この配列には、見つかった NodeIds が含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3227

通信
6.3 OPC UA
パラメータ

領域での データタ 意味
宣言
イプ

TargetStatusList

InOut

VARIANT タイプ DWORD の配列へのポインタ。
この配列には、個々の参照パスのエラー番号が含まれます。
この配列の最初のエレメントは、
BrowsePaths パラメータなどの最初のエレメントを参照します。「TargetStatusList のエラー番号」を参照してください。

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、まだ完了していない、またはまだ開始していません。
• 1:命令の実行がエラーなしで完了しまし
た。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されています。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
「Status」パラ• 1:エラーが発生しました。
メータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status の
エラー番号」を参照してください。

3228

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「NamespacesIndexes」パラメータ
名前空間インデックスを変換するための「NamespaceIndexes」パラメータはオプションです。
• このパラメータを使用すると(「NamespaceIndexCount」 > 0)、パラメータ「BrowsePaths」の名前空間インデックスが参照(BrowseNames および開始ノード)に変換されます。
• 以下の例(「NamespaceIndexCount」 = 0)のように、このパラメータを使用しない場合
は、「BrowsePaths」内の名前空間インデックスを正しく設定する必要があります。これは、命令「OPC_UA_TranslatePathList」は「NamespaceIndexes"」パラメータを評価しないことを意味します。次のステップで「OPC_UA_NodeGetHandleList」命令を呼び出す場合、名前インデックスは更新済みであるため、これらを変換してもなりません。
このため、命令「OPC_UA_NodeGetHandleList」の「NamespaceIndexCount」パラメ
ータは 0 に設定します。この設定を行っておけば、「NamespaceIndexes」パラメータを供給する必要はなくなります。

Status のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。
次の表に、この命令のエラーコードの概要を示します。
エラーコードエラーの名前説明

0000_0000

OpcUa_Good

命令が正常に終了しました。

8002_0000

OpcUa_BadInternalError

ファンクションブロック内の内(16 進数の値)部プログラミングエラーにより、エラーが発生しました。
サポートにお問い合わせください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3229

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadOutOfMemory

OPC UA クライアントが使用で(16 進数の値)
8003_0000

きるメモリがありません。
OPC UA クライアントおよびOPC UA サーバーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タ
グ数を減らす。
• 現在サーバーに接続されている OPC UA クライアント数を減らす。
• サブスクリプション数を減らす。
8009_0000

OpcUa_BadUnknownResponse

サーバーが、予期される結果の数で応答しませんでした。

800A_0000

OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブ
ロック OPC_UA_Connect のTimeout パラメータの値を
増加)。

3230

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadServerNotConnected

サーバーが接続されていない(16 進数の値)
800D_0000

か、接続ハンドルが正しくない、または無効です。
800F_0000

OpcUa_BadNothingToDo

行う処理がありません:OPC UA
サーバーが、OPC UA クライア
ントから命令が格納されていな
い空のリストを受信しました。

8010_0000

OpcUa_BadTooManyOperations

1 つの接続につき同時に呼び出せる「OPC_UA_TranslatePathList」
命令の数(1)を超えました。
関連項目: AUTOHOTSPOT80AE_0000

BadConnectionClosed

対応する ConnectionHdl での接続が「ShutDown」ステータスです(接続が終了しています)。
接続/セッションを自動的に「再有効化」できませんでした。考
えられる原因:再起動またはタイ
ムアウトなどにより、サーバー
でセッションが削除されています。
この場合、命令「OPC_UA_Disconnect」によって接続を明示的に終了し、接続リソースを再度解放する必要があります。ユーザープログラム
内で、この接続に対して無効になっている ConnectionHdl をリセットする必要があります。
その後、サーバーへの接続を新規に確立する必要があります(命令「OPC_UA_Connect」を参照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3231

通信
6.3 OPC UA
エラーコードエラーの名前説明

BadInvalidState

対応する ConnectionHdl での接(16 進数の値)
80AF_0000

続が「ConnectinError」ステー
タスです(一時的な接続エラー、接続が中断されています)。CPUが接続の「再有効化」を試行します。設定されたタイムアウト
時間(OPC UA Session Timeout)
中に「再有効化」に失敗すると接続が「Shutdown」状態になります。状態遷移の要件:セッシ
ョンがアクティブかどうかを確認するために、CPU が OPC UA
サーバーに到達できること。
B080_0100

Simatic_BadType_VariantInput1

パラメータ「BrowsePaths」のデータタイプが正しくありません。

B080_0200

Simatic_BadType_VariantInput2

パラメータ「NamespaceIndexes」のデータ
タイプが正しくありません。

B080_0300

Simatic_BadType_VariantInput3

パラメータ「TargetNodeIDs」のデータタイプが正しくありま
せん。

B080_0400

Simatic_BadType_VariantInput4

パラメータ「TargetStatusList」のデータタイプが正しくありま
せん。

B080_1100

Simatic_ArrayElements_TooMan

BrowsePathscount >y

MAX_ELEMENTS_RELATIVEPAT
H

B080_3100

BadNumElements_VariantInput1 BrowsePathsCount >「BrowsePaths」パラメータの配列のエレメント数。

B080_3200

BadNumElements_VariantInput2 NamespaceIndexCount >「NamspaceIndexes」パラメー
タの配列のエレメント数。

3232

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明(16 進数の値)
B080_3300

BadNumElements_VariantInput3 BrowsePathsCount >「TargetNodeIDs」パラメータの配列のエレメント数。

B080_3400

BadNumElements_VariantInput4 BrowsePathsCount >「TargetStatusList」パラメータの配列のエレメント数。

B080_C400

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

B080_C500

Simatic_NothingToDo

行う処理がありません:パラメー
タ「BrowsePathsCount" 」が提供されていないか、「BrowsePathsCount」 = 0 です。

B080_C600

Simatic_ClientNotAvailable

クライアントの初期化中にエラーが発生しました。

C080_C300

Simatic_OutOfResources

同時に使用可能なクライアント
命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイ
プのクライアント命令数を減らします。関連項
目:AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

「TargetStatusList」のエラー番号「TargetStatusList」パラメータには、個々の NodeId (タグ)に対するエラーコードが含まれています。
次の表では、エラーコードについて説明します。
エラーコー
ド

エラーの名前説明

0000_0000

OpcUa_Good

値が正常に読み取られました。

8033_0000

OpcUa_BadNodeIdInvalid

NodeId の構文が正しくありません。

(16 進数の値)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3233

通信
6.3 OPC UA
エラーコー
ド

エラーの名前説明

OpcUa_BadNodeUnknown

転送されたノードハンドルが不明で(16 進数の値)
8034_0000

す。
8035_0000

OpcUa_BadAttributeInvalid

必要な属性が、指定されたノードでサポートされていません。

8037_0000

OpcUa_BadIndexRangeNoD

インデックス範囲にデータが存在しません。

8039_0000

OpcUa_BadDataEncodingUnsuppor OPC UA サーバーが、このノードでted必要なデータ復号化をサポートしていません。

803A_0000

OpcUa_BadNotReadable

このノードの読み取りまたはサブス
クライブ(Subscribing)の権限がありません。

803C_0000

OpcUa_BadOutOfRange

NodeAddInfos パラメータで指定されたインデックス値が、許容範囲外にあります。

803D_0000

OpcUa_BadNotSupported

OPC UA サーバーが、要求された命令のいずれかをサポートしていません。配列のインデックス範囲へのア
クセスを許可しない OPC UA サーバ
ーがあります。

8060_0000

OpcUa_BadBrowseNameInvalid

QualifiedName の NamespaceIndexが存在しません。

806F_0000

OpcUa_BadNoMatch指定されたパスでは、ノードに到達できません。

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

この命令の使用方法
このセクションでは、例に基づいて、プログラム内での命令「OPC_UA_TranslatePathList」の使用方法について説明します。
例

RFID リーダーがプラントのゲートで搬出される製品をスキャンすると仮定します。

3234

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
この例では、最初のリーダーを「RfidReader_Door_1」と呼びます。
RFID リーダーは、OPC UA クライアントにデータおよびメソッドを提供する OPC UA サー
バーです。
仕様 AutoID

RFID リーダーには、コンパニオン仕様「AutoID」に基づき標準化されたインターフェースが搭載されています。
RFID リーダーのプロパティおよびメソッドの名前は、規格によって指定されています。
下図は、Unified Automation 社のツールである UAExpert 内での、リーダー"FfidReaderDoor_1 のアドレス空間のセクションを示しています。
ノード「RfidReader_Door_1」は、"DeviceSet 配下に位置しています。
この下に、AutoId に基づいたリーダーのリリース済みプロパティおよびメソッドが表示されます。:

リーダーのプロパティおよびメソッドが既知であるのは、リーダーが AutoID 仕様に準拠しているためです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3235

通信
6.3 OPC UA
以下は、既知ではないエレメントです。
• 名前「RfidReader_Door_1」。この名前は、各プラントにおいて自由に選択または指定可能です。
• リーダーのアドレス空間内の「RfidReader_Door_1」の NodeId。
• 「RfidReader_Door_1」配下のすべてのノードである、リーダーのプロパティおよびメ
ソッドの NodeIds。上図を参照。
NodeIds の識別の手順• クライアントインターフェースに対する作業を行い、ドラッグ＆ドロップに読み取り、
書き込み、またはメソッドリストを設定します。
これを行うには、OPC UA サーバーにオンラインでアクセスするか、検索しているタグの
NodeIds を含むサーバーの OPC UA XML ファイルを使用します。その後、STEP 7 (TIA ポータル)はタグの NodeIDs を自動的に識別します。
ここでは、「OPC_UA_TranslatePathList」命令の呼び出しは不要です。
• UAExpert などのツールを使用します。
– 「RfidReader_Door_1」からの NodeId の読み取り。
– ユーザープログラム内で使用する、このリーダーのすべての下位レベルのプロパテ
ィおよびメソッドの NodeIds の読み取り。
ユーザープログラム内での次のステップは、「OPC_UA_NodeGetHandleList」の呼び出しです。
• 命令「OPC_UA_TranslatePathList」を使用します。
最初に、この命令の参照パス(BrowsePath)を定義します。このパスは「Objects」ノードから開始できますが、NodeId を使い慣れている他のノードから開始することも可能です。
「Objects」ノードには、NodeId「i=85」が常に割り当てられています(OPC UA 仕様に準拠)。以下の例では、「Objects」ノードから開始する BrowsePath を使用します。
「OPC_UA_TranslatePathList」で検索しているタグの NodeIds を識別してから、次のステップで「OPC_UA_NodeGetHandleList」命令を呼び出す際にこれらの NodeIDs を使用します。

プログラム例の概要
以下のプログラム例では、「OPC_UA_TranslatePathList」命令を使用して 2 つのタグのNodeIds を判別する方法を示しています。
この例の後で検索されるタグは「DeviceInfo」および「DeviceStatus」であり、使用されるパス(BrowsePath)は「Objects」ノード(NodeId: i=85)から始まって、「productionline」、

3236

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「DataBlocksGlobal」、および「RfidReader_Door_1」を経由して検索されたタグに到達します。

要件
命令「OPC_UA_TranslatePathList」では、以下の要件を満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 AUTOHOTSPOT から接続ハンドルを取得します。
TIA ポータル内の OPC UA 用の接続の構成定義を使用して、OPC UA サーバーへの接続を構成できます。
この接続の構成定義を使用しない場合は、ユーザープログラム内で接続パラメータを設定する必要があります。設定の方法は、この説明のセクション「OPC UA サーバーへの接続の確立」で後述します。

命令の呼び出し(初期呼び出し)
このセクションでは、ファンクションブロック「Read_from_RfidReader_Door_1」について説明します。このファンクションブロックで、命令「OPC_UA_TranslatePathList」の使用方法を示しています。
完全な例は、セクション「AUTOHOTSPOT」に記載されています。
タグの宣言

命令「OPC_UA_TranslatePathList」のインスタンス、および命令のパラメータに値を供給するためのタグを宣言します。
このプログラム例では、以下の宣言を使用しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3237

通信
6.3 OPC UA
ユーザープログラム

以下のユーザープログラムの抜粋部分で、PLC タグ「DeviceInfo」の参照パスを定義しています。「DeviceStatus」の定義は記載していません。
最初に、開始ノード(StartingNode)を定義します。このノードから、検索するノードの参照
パスに到達します。検索するノードのパス(RelativePath)を以下で定義します。
最初の参照パス(BrowsePaths[0])は「Objects」ノード(NodeId i=85)から始まり、「productionline」、「DataBlocksGlobal」、および「RfidReader_Door_1」を経由して検索された「DeviceInfo」タグまで到達します。
開始ノードの定義

以下のユーザープログラムでは、最初に開始ノードを「"Objects」に設定します。
「Objects」ノードは、名前空間「http://opcfoundation.org/UA/」内の OPC Foundation によって定義されています。OPC UA サーバーの名前空間配列のインデックス 0 は、常にこの名前空間に割り当てられています。
OPC UA クライアントがノードをアドレス指定する際に、名前空間の代わりにインデック
スを使用できるよう、OPC UA サーバーはアドレス空間内にこの名前空間配列を発行します。
「Objects」ノードの NodeId は「i=85」、名前空間インデックスは 0 です(NodeID を簡略化するため、名前空間インデックス 0 は指定されません)。
NodeId 「i=85」により、識別子のタイプも示されます。この NodeId は数値識別子(整数)です。
以下のプログラム行では、識別子「85」を渡し、識別子のタイプ を識別して、名前空間インデックスを設定します。
#BrowsePaths[0].StartingNode.Identifier := WString#'85';#BrowsePaths[0].StartingNode.IdentifierType := 0;#BrowsePaths[0].StartingNode.NamespaceIndex := 0;
RelativePath の定義

以下のプログラム例におけるナビゲーションの最初の段階で、BrowseName が「productionline」のノードに到達します。
その後、ナビゲーションは「DataBlocksGlobal」、「RfidReader_Door_1」と続き、最終的に「DeviceInfo」に到達します。
このプログラム例では、これらのノードはすべて名前空間「http://www.siemens.com/
simatic-s7-opcua」内に存在しています。この名前空間のインデックスは、ローカルタグ「#NamespaceIndexes[0]」内に格納され、プログラムコード内に直接設定されます。

3238

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
OPC UA への参照

OPC UA サーバーのアドレス空間は、相互に参照する OPC UA ノードで構成されています。
1 つのノードから他のノードへのポインタは、参照と呼ばれます。OPC UA は、複数のタ
イプの参照を定義しています。
以下のプログラム例では、他の OPC UA ノード配下に存在する OPC UA ノードの NodeIds
を識別するために、階層的な参照を使用しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3239

通信
6.3 OPC UA
例で使用されている参照:BrowseName が「DeviceInfo」のノードが、「RfidReader_Door_1」配下に配置されています。これは、2 つのノード間に階層関係が存在していることを意味しています。
SCL//Sets the first BrowsePath, BrowsePath[0]//This BrowsePath starts at node "Objects" and leads to node "DeviceInfo"//First, we assign "Objects" to "StartingNode".
//"Objects" has always NodeId i=85. It is a numerical NodeId with namespaceindex 0.
#BrowsePaths[0].StartingNode.Identifier := WString#'85';#BrowsePaths[0].StartingNode.IdentifierType := 0;#BrowsePaths[0].StartingNode.NamespaceIndex := 0;//Second, we set "RelativePath".
//Our BrowsePath goes to "productionline", "DataBlocksGlobal", "RfidReader_Door_1",//and finally to "DeviceInfo".
//Therefore, we set "NoOfElements" to four elements.
#BrowsePaths[0].RelativePath.NoOfElements := 4;//The first element of our RelativePath is "productionline'.
//Therefore, we set "TargetName.Name" to "productionline'//In our example code, the namespaceindex of "productionline' is stored//in our local variable "#NamespaceIndexes[0]";//The node "productionline' is conntected to our starting node//"Objects" via a HierarchicalReference.
//This reference always has the numerical NodeId i=33 assigned to it, with namespaceindex 0.
//This reference is set by default.
//Therefore, you can skip the following three lines of code.
#BrowsePaths[0].RelativePath.Elements[1].ReferenceTypeId.Identifier := WString#'33';#BrowsePaths[0].RelativePath.Elements[1].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[0].RelativePath.Elements[1].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[0].RelativePath.Elements[1].TargetName.Name := WString#'productionline';#BrowsePaths[0].RelativePath.Elements[1].TargetName.NamespaceIndex :=#NamespaceIndexes[0];//The second element of our RelativePath is "DataBlocksGlobal'.
#BrowsePaths[0].RelativePath.Elements[2].TargetName.Name := WString#'DataBlocksGlobal';#BrowsePaths[0].RelativePath.Elements[2].TargetName.NamespaceIndex :=#NamespaceIndexes[0];//The third element of our RelativePath is "RfidReader_Door_1'.
#BrowsePaths[0].RelativePath.Elements[3].TargetName.Name := WString#'RfidReader_Door_1';#BrowsePaths[0].RelativePath.Elements[3].TargetName.NamespaceIndex :=#NamespaceIndexes[0];//The fourth element of our RelativePath is "DeviceInfo'.
#BrowsePaths[0].RelativePath.Elements[4].TargetName.Name := WString#'DeviceInfo';#BrowsePaths[0].RelativePath.Elements[4].TargetName.NamespaceIndex :=#NamespaceIndexes[0];3240TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

OPC UA サーバーへの接続の確立
サンプルプログラムの以下のセクションでは、STEP 7 (TIA ポータル)が提供する接続の構
成定義を使用せずに、OPC UA サーバーへの接続をユーザープログラム内において手動で設定する方法について示しています。
これを行うために、SCL プログラムが対応する値をパラメータに割り当てます。
プログラム例では OPC UA に対して「opc.tcp」が使用され、サーバーの IP アドレスが「192.168.1.1」であるため、最初にサーバーエンドポイント「opc.tcp://
192.168.1.1:4840」を定義しています。
メッセージが署名付きで転送されるように、セキュリティモード「2」(SecurityMsgMode)を設定します。署名のプロシージャ(SecurityPolicy)として、値「Basic128Rsa15」を設定します。クライアント証明書の番号(CerificateID)も指定します。この例では、番号 6 が使用されています。
SCL
CASE #State OF
1: // case 1, connect to server
IF #FirstCall = TRUE THEN
#FirstCall := FALSE;//set ServerEndPointUrl of the server we want to connect to#SeverEndpointUrl := WString#'opc.tcp://192.168.1.1:4840';//set Securtiy Message Mode// 1 = None, 2 = Sign, 3 = Sign & Encrypt#SessionConnectInfo.SecurityMsgMode := 1;//set Security Policy// 1 = None, 2 = Basic128Rsa15,, 3 = Basic256, 4 = Basic256Sha256#SessionConnectInfo.SecurityPolicy := 2;//set the number of the client certificate you are using//in our case, this is 6//#SessionConnectInfo.CertificateID := 6;
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Connect_Instance(REQ:=#Req,
ConnectionHdl=>#ConnectionHdl,
ServerEndpointUrl:=#SeverEndpointUrl,
SessionConnectInfo:=#SessionConnectInfo,
Timeout:=T#8S,
Done=>#Done,
Busy=>#Busy,
Error=>#Error,
Status=>#Status);

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3241

通信

DeviceInfo および DeviceStatus ノードの NodeIds の識別以下のサンプルプログラム「Read_From_RfidReader_Door_1」の抜粋部分では、OPC UA
サーバーに対して、BrowseName が「DeviceInfo」および「DeviceStatus」のノードのNodeIds を照会します。
完全な例は、セクションに記載されています。
SCL
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_TranslatePathList_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl),
BrowsePathsCount := 2,
BrowsePaths := #BrowsePaths,
Timeout := T#6S,
NamespaceIndexCount := 0,
TargetNodeIDs := #TagetNodeIds,
TargetStatusList := #TargetStatusList,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF #TargetStatusList[0] = 0 AND #TargetStatusList[1] = 0 THEN
#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at TranslatePathList';
END_IF;#FirstCall := TRUE;
END_IF;
IF #Error = TRUE THEN//In case 100, to set REQ of instruction "OPC_UA_TranslatePathList" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#OPC_UA_TranslatePathList_Instance(REQ := FALSE,
ConnectionHdl := #ConnectionHdl,
BrowsePathsCount := 2,
BrowsePaths := #BrowsePaths,
TargetNodeIDs := #TagetNodeIds,
TargetStatusList := #TargetStatusList);#FirstCall := TRUE;
END_IF;

3242

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
このサンプルプログラムは、以下の理由で「OPC_UA_TranslatePathList」命令を呼び出します。
• BrowseName が「DeviceInfo」および「DeviceStatus」のノードの NodeId を要求するため。
• エラーが発生した場合に、REQ パラメータを FALSE に設定するため。
非同期実行

命令「OPC_UA_TranslatePathList」は、ユーザープログラムとは非同期で動作し、複数のプログラムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

NodeIds の識別方法の説明「OPC_UA_TranslatePathList」命令がまだ実行されていない場合、#Busy は FALSE となり、「#Req」タグは TRUE に設定されます。これによって命令が開始します。
次のサイクルでは、#Req が FALSE になります。
出力パラメータ「Error」が TRUE の場合、命令の実行中にエラーが発生します。これにより、「#State」タグが値 100 に設定されます。このケースは、トラブルシューティング用に予約されています。
出力パラメータ「Done」が TRUE の場合、命令は正常に実行されています。
注記:命令が正常に実行された(「Error」パラメータが設定されず、「Done」パラメータが設定される)にもかかわらず、PLC タグの NodeId が返されない場合もあります。
このため、この例では各 PLC タグに対してプログラムが NodeId を取得したかどうかを判定するためのチェックが行われています。
• 最初のタグに対して NodeId が返される場合、「TargetStatusList」パラメータがポイン
トする配列の最初のエレメントに値 0 が含まれます。
• 2 番目のタグに対して NodeId が返される場合、「TargetStatusList」パラメータがポイントする配列の最初のエレメントに値 0 が含まれます。
両方の条件を満たす場合、出力パラメータ「TargetNodeHdls」は NodeIds が格納された有効なリストをポイントします。これにより、「#State」タグの値が 1 増加します。その後、次のプログラムセクション(ケース 4)が次のサイクルで実行されます。
ケース 4 については、AUTOHOTSPOT で説明されています。
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3243

通信

6.3.1.3

データ交換

OPC_UA_ReadList:タグの読み出し

有効性
以下の「OPC_UA_ReadList」命令の説明は、ファームウェアバージョン V2.6 以降のS7-1500 CPU に適用されます。

説明「OPC_UA_ReadList」命令を使用して、PLC タグの値を読み取ります。
下図に、エディタ(FBD)内での命令のアイコンを示します。

上図では、命令のパラメータはまだ提供されていません。
命令"OPC_UA_ReadList を使用して、OPC UA サーバーからタグを読み取ります。下図の②を参照してください。
この命令は、タグ値が格納されたリストを返します。
タグ値に加えて、他のタグ属性も読み取れます。これは、AttributeID で指定されます。
AUTOHOTSPOT を参照してください。

3244

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B5HDG/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW

23&B8$B:ULWH/LVW①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み操作完了後にリソースを解放するための命令「OPC_UA_ReadList」のパラメータ
表 6-7

命令「OPC_UA_ReadList」のパラメータ

パラメータ

宣言

データタイプ 意味

REQ

Input

BOOL

このパラメータで立ち上がりエッジ
0 → 1 になると、命令の実行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

NodeHdlCount

Input

UINT

NodeHdls パラメータをポイントする配列内のエレメント数。

NodeHdls

InOut

VARIANTタイプ DWORD の配列へのポイン
タ。
この配列には、値が読み取られるタ
グのノードハンドルが含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3245

通信
6.3 OPC UA
パラメータ

宣言

データタイプ 意味

NodeAddInfosInOut

VARIANT

タイプ AUTOHOTSPOT または
AUTOHOTSPOT の配列へのポイン
タ。
この配列は、ノード(タグ)内のどの属性を読み取るかを定義します。
この配列の最初のエレメントは、「NodeHdls」パラメータがポイントする配列内の最初のエレメントを参照します。
パラメータはオプションです。このパラメータが設定されていない場合
は、すべてのノード(タグ)の値が読み取られます。
配列読み取り時、配列のどのエレメ
ントを読み取るかを限定できます。OPC_UA_ReadList での配列範囲
情報の読み取り (ページ 3257)を参照
してください。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間 。
このパラメータの説明については、
AUTOHOTSPOT も参照してください。

NodeStatusList

InOut

VARIANTタイプ DWORD の配列へのポイン
タ。
この配列には、個々のタグに対するエラーコードが含まれています（下記の「NodeStatusList のエラー番号」を参照)。
各タグに対して、値が読み取ることができたかどうかが指定されます。
命令が正常に実行された(「Error」パ
ラメータが設定されない)にもかかわらず、特定の NodeId (タグ)について値が読み取られていない場合もあり
ます。

3246

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
パラメータ

宣言

データタイプ 意味

TimeStamps

InOut

VARIANT

タイプ LDT の配列へのポインタ。
この配列の最初のエレメントは、
NodeHdls パラメータがポイントする配列内の最初のエレメントを参照
します。
パラメータはオプションです。このパラメータが設定されていない場
合、OPC UA サーバーはタイムスタ
ンプを返しません。

Variable

InOut

VARIANT

読み取られる値を保存するタグへのポインタ。
このタグに対して、PLC データタイ
プ(UDT)または構造体(STRUCT)を作成する必要があります。

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、まだ完了していない、またはまだ開始していません。
• 1:命令の実行がエラーなしで完了
しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されています。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

Status のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3247

通信
6.3 OPC UA
次の表に、この命令のエラーコードの概要を示します。
エラーコード エラーの名前

説明(16 進数の値)
0000_0000

OpcUa_Good

ファンクションブロックが正常に実行されました。

8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモリがありません。
OPC UA クライアントおよび OPC
UA サーバーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている
OPC UA クライアント数を減らす。
• サブスクリプション数を減らす。

8009_0000

OpcUa_BadUnknownResponse

サーバーが、予期される結果の数で応答しませんでした。

800A_0000

OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認
してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout
パラメータの値を増加)。

3248

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコード エラーの名前

説明(16 進数の値)
800D_0000

OpcUa_BadServerNotConnected

サーバーが接続されていないか、
接続ハンドルが正しくない、または無効です。

800F_0000

OpcUa_BadNothingToDo

行う処理がありません:OPC UA サーバーが、OPC UA クライアントから命令が格納されていない空のリストを受信しました。

8010_0000

OpcUa_BadTooManyOperations

1 つの接続につき同時に呼び出せる「OPC_UA_ReadList」命令の数(5)を超えました。関連項目:
AUTOHOTSPOT

8074_0000

OpcUa_BadTypeMismatch

サーバー内のデータタイプに対応
していないデータタイプを使用しています。

80AE_0000

BadConnectionClosed

対応する ConnectionHdl での接続が「ShutDown」ステータスです(接続が終了しています)。接続/セッションを自動的に「再有効化」
できませんでした。考えられる原
因:再起動またはタイムアウトなど
により、サーバーでセッションが削除されています。
この場合、命令「OPC_UA_Disconnect」によって接続を明示的に終了し、接続リソー
スを再度解放する必要があります。ユーザープログラム内で、この接続に対して無効になっている
ConnectionHdl をリセットする必
要があります。
その後、サーバーへの接続を新規に確立する必要があります(命令「OPC_UA_Connect」を参照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3249

通信
6.3 OPC UA
エラーコード エラーの名前

説明(16 進数の値)
80AF_0000

BadInvalidState

対応する ConnectionHdl での接続が「ConnectinError」ステータスです(一時的な接続エラー、接続が中断されています)。CPU が接続の「再有効化」を試行します。設定されたタイムアウト時間(OPC UA
Session Timeout)中に「再有効化」に失敗すると接続が「Shutdown」
状態になります。状態遷移の要件:
セッションがアクティブかどうかを確認するために、CPU が OPC UA
サーバーに到達できること。

B080_0100

Simatic_BadType_VariantInput1

パラメータ「NodeHdls」のデータ
タイプが正しくありません。

B080_0200

Simatic_BadType_VariantInput2

パラメータ「NodeAddInfos」のデータタイプが正しくありません。

B080_0300

Simatic_BadType_VariantInput3

パラメータ「NodeStatusList」のデータタイプが正しくありません。

B080_0400

Simatic_BadType_VariantInput4

パラメータ「TimeStamps」のデー
タタイプが正しくありません。

B080_0500

Simatic_BadType_VariantInput5

パラメータ「Variable」のデータタ
イプが正しくありません(UDT ではない)。

B080_1100

Simatic_ArrayElements_TooMany

NodeHdlCount >MAX_ELEMENTS_NODELISTNamespaceIndexCount >MAX_ELEMENTS_NAMESPACES

B080_3100

BadNumElements_VariantInput1「NodeHdlCount」パラメータが、「NodeHdls」パラメータ内のARRAY のエレメント数を上回っています。

B080_3200

BadNumElements_VariantInput2「NodeHdlCount」パラメータが、「NodeAddInfos」パラメータ内のARRAY のエレメント数を上回って
います。

3250

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコード エラーの名前

説明(16 進数の値)
B080_3300

BadNumElements_VariantInput3「NodeHdlCount」パラメータが、「NodeStatusList」パラメータ内のARRAY のエレメント数を上回っています。

B080_3400

BadNumElements_VariantInput4「NodeHdlCount」パラメータが、「TimeStamps」パラメータ内のARRAY のエレメント数を上回っています。

B080_C400

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

B080_C500

Simatic_NothingToDo

行う処理がありません:この命令
は、エレメントが含まれていないリストを使用しています。

C080_C300

Simatic_OutOfResources

同時に使用可能なクライアント命
令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのクライアント命令数を減らします。関連項目:
AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

「NodeStatusList」のエラー番号「NodeStatusList」パラメータには、個々のノードハンドル(タグ)に対するエラーコードが含
まれています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3251

通信
6.3 OPC UA
次の表では、エラーコードについて説明します。
エラーコー
ド

エラーの名前説明

OpcUa_Good

値が正常に読み取られまし(16 進数の値)
0000_0000

た。
8034_0000

OpcUa_BadNodeIdUnknown

転送されたノードハンドルが不明です。

8035_0000

OpcUa_BadAttributeInvalid

必要な属性が、指定されたノードでサポートされていません。

8037_0000

OpcUa_BadIndexRangeNoD

インデックス範囲にデータが存在しません。

8039_0000

OpcUa_BadDataEncodingUnsupported

OPC UA サーバーが、このノードで必要なデータ復号化をサポートしていません。

8074_0000

OpcUa_BadTypeMismatch

ReadResponse 内の Double/
Float 値が NaN です。
UDT Member タグのタイプ
が正しくありません。

803A_0000

OpcUa_BadNotReadable

このノードの読み取りまたはサブスクライブ(Subscribing)の権限がありません。

803C_0000

OpcUa_BadOutOfRange

NodeAddInfos パラメータで指定されたインデックス値
が、許容範囲外にあります。

803D_0000

OpcUa_BadNotSupported

OPC UA サーバーが、要求された命令のいずれかをサポートしていません。
配列のインデックス範囲へのアクセスを許可しない
OPC UA サーバーがありま
す。

3252

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコー
ド

エラーの名前説明

OpcUa_BadInvalidArgument

StartIndex > EndIndex(16 進数の値)
80AB_0000

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

この命令の使用方法
このセクションでは、プログラム例に基づいて、PLC タグの値を読み取るユーザープログ
ラム内での命令「OPC_UA_ReadList」の使用方法について説明します。

要件
この説明では、以下のことを仮定しています。
• クライアントインターフェースが作成済みであること。「AUTOHOTSPOT」を参照。
• OPC UA サーバーへの接続が作成済み、かつ構成済みであること。「AUTOHOTSPOT」を参照。
さらに、命令「OPC_UA_ReadList」では、以下の要件も満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 AUTOHOTSPOT から接続ハンドルを取得します。
• OPC UA サーバーから値を読み取る個々のタグに対するハンドルのリスト。
命令 AUTOHOTSPOT からハンドルのリストを取得します。

命令のファンクション
命令「OPC_UA_ReadList」を使用して、たとえば OPC UA サーバーからのタグ値の読み取りなどを行います(上記参照)。
必要な情報

この命令は以下の情報を必要とします。
• 値を読み取るタグのハンドル(「NodeHdls」パラメータ)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3253

通信
6.3 OPC UA
この命令が返す情報

この命令は以下の情報を返します。
• タグ(「Variable」パラメータ)の現在値。
値の順序は、「NodeHdls」パラメータ内のハンドルの順序に対応します。
これについては、以下のケースを参照してください。
– 読み取りリストが含まれるクライアントインターフェースを使用する場合、STEP 7 は読み取りが必要なタグを含むシステムデータタイプを自動的に作成します。
– クライアントインターフェースを使用していない場合は、「Variable」パラメータに対して PLC データタイプ(UDT)または構造体(STRUCT)を作成する必要があります。
読み取りが必要なタグに基づいて、この UDT のコンポーネントを定義します。
各 OPC UA データタイプと互換性のある SIMATIC データタイプを使用します。
AUTOHOTSPOT を参照してください。
• エラーメッセージのリスト(「NodeStatusList」パラメータ)。
このリスト内の各エラーメッセージは、「NodeHdls」パラメータ内の対応するハンドルに関連しています。NodeStatusList[0]は NodeHdls[0]を参照します。
個々のタグ(個々の NodeHdl)に対して、OPC UA サーバーが有効値を返せたかどうかを確認する必要があります。

構成済み接続の使用方法
1. [プロジェクトツリー]エリアで、クライアントとして動作する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を含めるファンクションブロックを選択します。
この例では、ファンクションブロックを「ReadFromProductionline」とします。
選択言語:SCL。
3. ドラッグ＆ドロップで、命令「OPC_UA_ReadList」をフォルダ[命令|通信|OPC UA|OPC UA ク
ライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンス「OPC_UA_ReadList_Instance」を作成します。
5. 「OPC_UA_ReadList_Instance」命令の[設定の開始]のアイコンをクリックします。
STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、クライアントインターフェースを「Productionline」と命名します。
7. [データアクセス]をクリックし、読み取りリストを選択します。
この例では、読み取りリストを「ReadListProduct」と命名します。
これにより、STEP 7 は命令のパラメータに、クライアントインターフェースに対して設定済
みの値を自動的に供給します。
8. [ブロックパラメータ]をクリックし、タグを残りのパラメータ REQ、Busy、Done、Error、
Status に手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

3254

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出し(初期呼び出し)
完全なプログラムは、セクション「AUTOHOTSPOT」に記載されています。
このプログラム例で使用する読み取りリスト「ReadListProduct」には、以下の PLC タグが含まれています。
• NewProduct• ProductNumber
プログラムはサーバーからこれらのタグの値を読み取ります。
セクション AUTOHOTSPOT は、クライアントインターフェースの作成方法、および PLC タ
グを含む読み取りリストのクライアントインターフェースへの追加方法について示しています。
このサンプルプログラムは、CASE 命令によって複数のセクション(ケース)に分割されています。
4 番目のプログラムセクションでは、タグ値が読み取られます。
SCL
4: // case 4, read from nodes
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;
OPC_UA_ReadList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls := "Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
TimeStamps := "Productionline_Data"."ReadListProduct".TimeStamps,
Variable := "Productionline_Data"."ReadListProduct".Variable,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

非同期実行

命令「OPC_UA_ReadList」は、ユーザープログラムとは非同期で動作し、複数のプログラ
ムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3255

通信
6.3 OPC UA
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明(初期呼び出し)
上図は、ケース 4 を表しています。
プログラムのこの部分では、「OPC_UA_ReadList」命令を呼び出して PLC タグの値を読み取ります。
命令がまだ実行されていない場合、#Busy は FALSE であるため、「#Req」タグは値 TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req が FALSE になります。

命令の呼び出し(トラブルシューティング)
下図は、「Done」および「Error」パラメータの評価を示しています。
SCL
IF #Done = TRUE THEN
FOR #i := 0 TO
UINT_TO_INT("Productionline_Configuration".ReadLists."ReadListProduct".NodeCount) - 1 DO
IF NOT ("Productionline_Data"."ReadListProduct".NodeStatusList[#i] = 0) THEN
#Output_Error_Message := CONCAT_WSTRING(IN1 := WSTRING#'Error at Readlist"ReadListProduct", Index: ',IN2 := INT_TO_WSTRING(#i));
END_IF;
END_FOR;#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REG of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_ReadList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
TimeStamps := "Productionline_Data"."ReadListProduct".TimeStamps,
Variable := "Productionline_Data"."ReadListProduct".Variable);
END_IF;

3256

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出しの説明(トラブルシューティング)
エラーが発生すると、「Error」出力パラメータの値が「TRUE」に設定されます。これにより、「#State」タグの値が 100 に設定されます。このケースは、トラブルシューティング用に予約されています。このサンプルプログラムは、REQ パラメータを FALSE に設定するために命令「OPC_UA_ReadList」も呼び出します。
「Done」出力パラメータの値が TRUE である場合、命令は正常に実行されています。
注記:命令が正常に実行された(「Error」パラメータが設定されず、「Done」パラメータが設定される)にもかかわらず、PLC タグが読み取られていない場合もあります。
このため、この例では各 PLC タグに対してプログラムが有効値を取得したかどうかを判定するためのチェックが行われています。
• サーバーが最初の PLC タグに対して有効値を送信している場合、「NodeStatusList」パ
ラメータがポイントする配列の最初のエレメントに値 0 が含まれます。
この例では、ステータスコードが"Productionline_Data"."ReadListProduct".NodeStatusList[0].内にリストされます。
• サーバーが 2 番目の PLC タグに対して有効値を送信している場合、「NodeStatusList」
パラメータがポイントする配列の 2 番目のエレメントに値 0 が含まれます。
この例では、ステータスコードが"Productionline_Data"."ReadListProduct".NodeStatusList[1]にリストされます。
このプログラムは、無効な値を認識するとエラーメッセージを出力します。
無効な値が 1 つまたは 2 つ検出されても、「#State」タグの値は 1 増加します。これは、次のプログラムセクション(ケース 5)が次のサイクルで実行されることを意味します。
ケース 5 については、OPC_UA_NodeReleaseHandleList:読み取り/書き込みアクセス用のハ
ンドルの解放 (ページ 3282)で説明されています。

下記も参照
OPC_UA_TranslatePathList:現在の NodeIds の識別 (ページ 3224)(ページ 3181)

OPC_UA_ReadList での配列範囲情報の読み取り

概要
このセクションは、「OPC_UA_ReadList」に基づいています。OPC_UA_ReadList:タグの読み
出し (ページ 3244)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3257

通信
6.3 OPC UA
このセクションでは、「OPC_UA_ReadList」命令による配列の部分的な読み取り方法について説明します。
基本的に、OPC UA サーバーからの配列の部分的な読み取りは以下のように行われます。
23&8$6HUYHU

23&8$&OLHQW
>@>@>@>@>@>@>@>@>@

>@>@>@>@>@①

3258

OPC UA サーバーからの配列の部分的な読み取り

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

要件
この説明では、以下のことを仮定しています。
• CPU を OPC UA サーバーとして設定済みであること。
サーバーは、OPC UA クライアントが読み取れる配列を提供します。
この例では、「Productionline」と命名された CPU が、OPC UA クライアントにデータブ
ロック「Data_for_OPC_UA_Clients」を提供します。

• CPU を OPC UA クライアントとして設定済みであること。
クライアント内にクライアントインターフェースを作成します。
クライアントインターフェースには配列の読み取りリストが含まれており、このリス
トから部分的な読み取りを行います。
この例では、読み取りリスト「ReadListProduct」を含んだクライアントインターフェ
ースを「Productionline」と命名しています。

「Temperature[5]」から「Temperature[9] 」に含まれる値は、サーバーの「Temperature」配列から読み取られます。

追加情報の提供「OPC_UA_ReadList」は、「OPC_UA_ReadList」命令を使用してスカラー(値が格納されたタグ)または配列(複数の値が格納されたタグ)全体を読み取る方法を示しています。
以下のセクションでは、「OPC_UA_ReadList」を使用した配列の部分的な読み取りに必要な「OPC_UA_ReadList」の追加情報について記載します。
OPC_UA_NodeAdditionalInfo

最初に、タイプ「OPC_UA_NodeAdditionalInfo」のローカルタグを作成します「OPC_UA_NodeAdditionalInfo (ページ 3347)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3259

通信
6.3 OPC UA
このタグを使用して、配列のどの部分を読み取るかを「OPC_UA_ReadList」命令に知らせ
ます。

3260

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
以下のように実行します。
1. タイプ「OPC_UA_NodeAdditionalInfo」の配列を作成します。
この例では、「OPC_UA_ReadList」命令を呼び出すファンクションブロックの宣言セクション
内でタグを作成します。
新しいローカルタグを「NodeAdditionalInformation」とします。

読み取りリスト「ReadListProduct」にノードが 3 つ含まれているため、新しいローカルタグ「NodeAdditionalInformation」にはタイプ OPC_UA_AdditionalInfo のコンポーネントが 3 つ含まれます。
NodeAdditionalInformation[0]は、最初に読み取られるタグ(この例では「NewProduct」)に関する追加情報を提供します。
NodeAdditionalInformation[1]は、2 番目に読み取られるタグ(この例では「ProductNumber」)に関する追加情報を提供します。
NodeAdditionalInformation[2]は、3 番目に読み取られるタグ(この例では「Temperature」)
に関する追加情報を提供します。
2. 新しいタグに値を割り当てます(宣言セクションの「デフォルト値」列)。
この例では、3 番目のタグ(Temperature が部分的に読み取られます。
このため、NodeAdditionalInformation[2].AttributeId に 13 が割り当てられます(つまり、配列の値が読み取られます)。
NodeAdditionalInformation[2].StartIndex はインデックス 5 から読み取りを開始するため、
値 5 が割り当てられます。
NodeAdditionalInformation[2].EndIndex はインデックス 9 から読み取りを開始するため、
値 9 が割り当てられます。
NodeAdditionalInformation[0] NodeAdditionalInformation[1]は、デフォルト値に設定されます。
「#ignore」定数には、値 4_294_967_295 が含まれます。サーバーはこの StartIndex およびEndIndex の値を無視し、スカラーおよび配列全体を読み取ります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3261

通信
6.3 OPC UA

代替手順
ユーザープログラム内で NodeAdditionalInformation の値を設定することも可能です。
// set additonal information to Array-Index 0// we set default values here
#NodeAdditionalInformation[0].AttributeID := 13;#NodeAdditionalInformation[0].StartIndex :=4_294_967_295;#NodeAdditionalInformation[0].EndIndex :=4_294_967_295;// set additonal information to Array-Index 1// we set default values here
#NodeAdditonalInformation[1].AttributeID := 13;#NodeAdditonalInformation[1].StartIndex :=4_294_967_295;#NodeAdditonalInformation[1].EndIndex := 4_294_967_295;// set additonal information to Array-Index 2// because we want to read only five values from anarray in the OPC UA server#NodeAdditonalInformation[2].AttributeID := 13;#NodeAdditonalInformation[2].StartIndex := 5;#NodeAdditonalInformation[2].EndIndex := 9;
注記:
タイプ「OPC_UA_NodeAdditionalInfo」の配列 NodeAdditionalInformation には、読み取り
リストと同数のコンポーネントが含まれている必要があります(この例では 3)。
3. 命令「OPC_UA_ReadList」のパラメータ「NodeAddInfos」に、NodeAdditionalInformation
を割り当てます。
下図は、「NodeAddInfos」パラメータに新しい値が提供された状態での OPC_UA_ReadListの呼び出しを示しています。
#OPC_UA_ReadList_Instance(REQ := #Req,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
NodeStatusList :="myProductionline_Data"."ReadListProduct".NodeStatusList,
Variable :="myProductionline_Data"."ReadListProduct".Variable,

3262

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ConnectionHdl :="Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCou
nt,
NodeAddInfos := #NodeAddtionalInformation,
TimeStamps :="myProductionline_Data".ReadListProduct.TimeStamps,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

クライアントでの結果
これで、「OP_UA_ReadList」命令は OPU UA サーバーから「Temperature」配列を部分的に読み取るようになりました。
下図は、配列「Temperature」を示しています。クライアントは、インデックス 0 以降の読み取り値を割り当てます。

注記
多次元配列(最大 6 次元)のセクションを読み取るには、「OPC_UA_NodeAdditionalInfoExt」データタイプを使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3263

通信
6.3 OPC UA

OPC_UA_WriteList:タグの書き込み有効性
以下の「OPC_UA_WriteList」命令の説明は、ファームウェアバージョン V2.6 以降のS7-1500 CPU に適用されます。

説明
命令「OPC_UA_WriteList」を使用して、PLC タグに新しい値を書き込みます。
下図に、エディタ(FBD)内での命令のアイコンを示します。

上図では、命令のパラメータはまだ提供されていません。
命令「"OPC_UA_WriteList」を使用して、PLC タグに新しい値を割り当てます。下図の②を参照してください。
この命令は、各 PLC タグに対するステータス情報が格納されたリストを返します。



23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B5HDG/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW

23&B8$B:ULWH/LVW

3264

①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み操作完了後にリソースを解放するための命令

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「OPC_UA_WriteList 」のパラメータ
表 6-8

命令「OPC_UA_WriteList 」のパラメータ

パラメータ

領域での データタ 意味
宣言
イプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、命令の実行がトリガされます。

ConnectionHdl Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

NodeHdlCount Input

UINT

NodeHdls パラメータをポイントする配列内のエレメント数。

NodeHdls

InOut

VARIANT タイプ DWORD の配列へのポインタ。
この配列には、値が書き込まれるタグのノードハ
ンドルが含まれます。

NodeAddInfosInOut

VARIANT タイプ AUTOHOTSPOT または AUTOHOTSPOT の配列へのポインタ。
この配列は、ノード(タグ)内にどの属性を設定するかを定義します。
この配列の最初のエレメントは、「NodeHdls」パ
ラメータがポイントする配列内の最初のエレメン
トを参照します。
パラメータはオプションです。このパラメータが設定されていない場合は、すべてのノード(タグ)に値が設定されます。
配列書き込み時、配列のどのエレメントを書き込
むかを限定できます。OPC_UA_WriteList での配列
セクションの書き込み (ページ 3276)を参照してく
ださい。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間 。
このパラメータの説明については、
AUTOHOTSPOT も参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3265

通信
6.3 OPC UA
パラメータ

領域での データタ 意味
宣言
イプ

NodeStatusList InOut

VARIANT タイプ DWORD の配列へのポインタ。
この配列には、個々のタグに対するエラーコードが含まれています（下記の「NodeStatusList のエ
ラー番号」を参照)。
各タグに対して、値を設定できたかどうかが示されます。
命令が正常に実行された(Error パラメータが設定されない)にもかかわらず、特定のタグに値が割り当てられていない場合もあります。
NodeStatusList[0]は、NodeHdls[0]などに対応します。

Variable

InOut

VARIANT 書き込まれる値を含むタグへのポインタ。
このタグに対して、PLC データタイプ(UDT)を作成する必要があります。

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、まだ完了していな
い、またはまだ開始していません。
• 1:命令の実行がエラーなしで完了しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されています。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
「Status」パラメータ• 1:エラーが発生しました。
を参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

Status のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。

3266

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
次の表に、この命令のエラーコードの概要を示します。
エラーコードエラーの名前説明

OpcUa_Good

ファンクションブロックが正常に実行(16 進数の値)
0000_0000

されました。
8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメ
モリがありません。
OPC UA クライアントおよび OPC UA
サーバーがメモリ領域を共有している
ため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている
OPC UA クライアント数を減らす。
• サブスクリプション数を減らす。

8009_0000

OpcUa_BadUnknownResponse サーバーが、認識できない応答を送信しています。

800A_0000

OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout パラ
メータの値を増加)。

800D_0000

OpcUa_BadServerNotConnecte サーバーが接続されていないか、接続d

ハンドルが正しくない、または無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3267

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadNothingToDo

行う処理がありません:OPC UA サーバ(16 進数の値)
800F_0000

ーが、OPC UA クライアントから命令が格納されていない空のリストを受信しました。
8010_0000

OpcUa_BadTooManyOperation 1 つの接続につき同時に呼び出せるs「OPC_UA_WriteList」命令の数(5)を超えました。関連項目: AUTOHOTSPOT80AE_0000

BadConnectionClosed

対応する ConnectionHdl での接続が「ShutDown」ステータスです(接続が終了しています)。接続/セッションを自動的に「再有効化」できませんでした。考えられる原因:再起動またはタイ
ムアウトなどにより、サーバーでセッションが削除されています。
この場合、命令「OPC_UA_Disconnect」によって接続を明示的に終了し、接続リソースを再度解放する必要があります。ユーザー
プログラム内で、この接続に対して無効になっている ConnectionHdl をリセットする必要があります。
その後、サーバーへの接続を新規に確立する必要があります(命令「OPC_UA_Connect」を参照)。

80AF_0000

BadInvalidState

対応する ConnectionHdl での接続が「ConnectinError」ステータスです(一時的な接続エラー、接続が中断されています)。CPU が接続の「再有効化」を試行します。設定されたタイムアウト
時間(OPC UA Session Timeout)中に「再有効化」に失敗すると接続が「Shutdown」状態になります。状態遷
移の要件:セッションがアクティブかどうかを確認するために、CPU が OPC
UA サーバーに到達できること。

3268

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明(16 進数の値)
B080_0100

Simatic_BadType_VariantInput パラメータ「NodeHdls」のデータタイ
1

B080_0200

Simatic_BadType_VariantInput パラメータ「NodeAddInfos」のデータ
2

B080_0300

プが正しくありません(UDT ではない)。

Simatic_ArrayElements_TooMa 一般エラーコード。配列のエレメント
ny

B080_3100

タタイプが正しくありません。

Simatic_BadType_VariantInput パラメータ「Variable」のデータタイ
4

B080_1100

タイプが正しくありません。

Simatic_BadType_VariantInput パラメータ「NodeStatusList」のデー
3

B080_0400

プが正しくありません。

数が多すぎる場合に発生します。

BadNumElements_VariantInpu 「NodeHdlCount」パラメータが、
t1「NodeHdls」パラメータ内の ARRAY のエレメント数を上回っています。

B080_3200

BadNumElements_VariantInpu 「NodeHdlCount」パラメータが、
t2「NodeAddInfos」パラメータ内のARRAY のエレメント数を上回っています。

B080_3300

BadNumElements_VariantInpu 「NodeHdlCount」パラメータが、
t3「NodeStatusList」パラメータ内のARRAY のエレメント数を上回っています。

B080_C400

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

B080_C500

Simatic_NothingToDo

行う処理がありません:この命令は、エレメントが含まれていないリストを使用しています。

C080_C300

Simatic_OutOfResources

同時に使用可能なクライアント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのク
ライアント命令数を減らします。関連項目:
AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3269

通信
6.3 OPC UA「NodeStatusList」のエラー番号「NodeStatusList」パラメータには、個々のノードハンドル(タグ)に対するエラーコードが含
まれています。
次の表では、エラーコードについて説明します。
エラーコード エラーの名前

説明(16 進数の値)
0000_0000

OpcUa_Good

値が正常に読み取られました。

8034_0000

OpcUa_BadNodeUnknown

転送されたノードハンドルが不明です。

8035_0000

OpcUa_BadAttributeInvalid

必要な属性が、指定されたノードでサポートされていません。

8037_0000

OpcUa_BadIndexRangeNoD

インデックス範囲にデータが存在しません。

8039_0000

OpcUa_BadDataEncodingUnsupported OPC UA サーバーが、このノードで必要なデータ復号化をサポートしていません。

803B_0000

OpcUa_BadNotWritable

このノードに対する書き込み権限がありません。

803C_0000

OpcUa_BadOutOfRange

NodeAddInfos パラメータで指定されたインデックス値が、許容範囲外にあります。

803D_0000

OpcUa_BadNotSupported

OPC UA サーバーが、要求された命令のいずれかをサポートしていません。
配列のインデックス範囲へのア
クセスを許可しない OPC UA サーバーがあります。

80AB_0000

OpcUa_BadInvalidArgument

1 つ以上の引数が無効です。

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

この命令の使用方法
このセクションでは、プログラム例に基づいて、PLC タグ内に新しい値を設定するユーザ
ープログラム内での命令「OPC_UA_WriteList」の使用方法について説明します。

3270

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

要件
この説明では、以下のことを仮定しています。
• クライアントインターフェースが作成済みであること。
「AUTOHOTSPOT」を参照。
• OPC UA サーバーへの接続が作成済み、かつ構成済みであること。「AUTOHOTSPOT」を参照。
さらに、「OPC_UA_WriteList」命令では、以下の要件も満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 AUTOHOTSPOT から接続ハンドルを取得します。
• クライアントで書き込みを行うタグが格納されている名前空間のインデックス。
命令 AUTOHOTSPOT からインデックスを取得します。
• OPC UA サーバー内に値を設定する個々のタグに対するハンドルのリスト。
命令 AUTOHOTSPOT からこのハンドルリストを取得します。
以下のプログラム例では、OPC UA サーバーに有効な信号を送信するため、命令が 1 回呼び出されます。

ブロックのファンクション
命令「OPC_UA_WriteList」を使用して、OPC UA サーバー内でタグの値を書き込みます。
必要な情報

このファンクションは以下の情報を必要とします。
• 値を書き込むタグのハンドル(「NodeHdls」パラメータ)。
• 個々タグに対して転送する値(「Variable」パラメータ)。
これについては、以下のケースを参照してください。
– 書き込みリストが含まれるクライアントインターフェースを使用する場合、STEP 7 は転送が必要なタグを含むシステムデータタイプを自動的に作成します。
– クライアントインターフェースを使用していない場合は、「Variable」パラメータに対して PLC データタイプ(UDT)または構造体(STRUCT)を作成する必要があります。
転送が必要なタグに基づいて、この UDT のコンポーネントを定義します。
各 OPC UA データタイプと互換性のある SIMATIC データタイプを使用します。
AUTOHOTSPOT を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3271

通信
6.3 OPC UA
この命令が返す情報

この命令は以下の情報を返します。
• エラーメッセージのリスト(「NodeStatusList」パラメータ)。
このリスト内の各エラーメッセージは、「NodeHdls」パラメータ内の対応するハンドルに関連しています。
個々のタグ(「NodeHdl」)に対して、OPC UA サーバーが新しい値を受け入れられたかど
うかを確認する必要があります。

構成済み接続の使用方法
1. [プロジェクトツリー]エリアで、クライアントとして動作する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を実行するファンクションブロックを選択します。
この例では、ファンクションブロックを「WriteToProductionline」とします。
選択言語:SCL。
3. ドラッグ＆ドロップで、命令「OPC_UA_WriteList」をフォルダ[命令|通信|OPC UA|OPC UA
クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「OPC_UA_WriteList_Instance」と命名します。
5. [OPC_UA_WriteList_Instance]クリックします。
STEP 7 が[設定]を開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、クライアントインターフェースを「Productionline」と命名します(AUTOHOTSPOT および「AUTOHOTSPOT」を参照)。
7. [データアクセス]をクリックし、書き込みリストを選択します。
この例では、読み取りリストを「WriteListStatus」と命名します。
これにより、STEP 7 は命令のパラメータに、クライアントインターフェースに対して設定済
みの値を自動的に供給します。
8. [ブロックパラメータ]をクリックし、タグを残りのパラメータ REQ、Busy、Done、Error、
Status に手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

命令の呼び出し(初期呼び出し)
完全なプログラムは、セクション「AUTOHOTSPOT」に記載されています。
このプログラム例で使用する書き込みリスト「WriteListStatus」には、以下の PLC タグが含まれています。
• ProductionEnabledプログラムは、このタグの新しい値をサーバーに書き込みます。

3272

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
セクション「AUTOHOTSPOT」は、クライアントインターフェースの作成方法、および PLC
タグを含む書き込みリストのクライアントインターフェースへの追加方法について示しています。
このサンプルプログラムは、CASE 命令によって複数のセクション(ケース)に分割されています。
4 番目のプログラムセクションでは、タグ値が書き込まれます。
SCL
4: // case 4; write value to PLC variable "ProductionEnabled"
IF #SetProductionEnabled = TRUE THEN
#SetProductionEnabled := FALSE;//set new value to true
"Productionline_Data"."WriteListStatus".Variable.ProductionEnabled := TRUE;
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;
OPC_UA_WriteList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList,
Variable := "Productionline_Data"."WriteListStatus".Variable,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

非同期実行

命令「OPC_UA_WriteList」は、ユーザープログラムとは非同期で動作し、複数のプログラ
ムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3273

通信
6.3 OPC UA

命令の呼び出しの説明(初期呼び出し)
上の例は、ケース 4 を表しています。
このサンプルプログラムでは、このケースは 1 つの PLC タグにしか新しい値を割り当てません。実際のアプリケーションでは、大量の PLC タグに新しい値を割り当てられます。
「#SetProductionEnabled」タグに値「TRUE」が含まれている場合、新しい値が TRUE に設定されます。
その後、「#SetProductionEnabled」が FALSE に設定されます。これは、初期化が 1 回だけ(最初のサイクル)しか実行されないためです。
「OPC_UA_WriteList」命令は、OPC UA サーバー内の PLC タグ「ProductionEnabled」に新
しい値を書き込みます。
命令がまだ実行されていない場合、#Busy は FALSE であるため、「#Req」タグは値 TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req が FALSE にな
ります。

3274

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出し(トラブルシューティング)
下図は、「Done」および「Error」パラメータの評価を示しています。
SCL
IF #Done = TRUE THEN
FOR #i := 0 TO
UINT_TO_INT("Productionline_Configuration".WriteLists.WriteListStatus.NodeCount) - 1 DO
IF NOT ("Productionline_Data"."WriteListStatus".NodeStatusList[#i] = 0) THEN
#Output_Error_Message := CONCAT_WSTRING(IN1 := WSTRING#'Error at Writelist"WriteListStauts", Index: ',IN2 := INT_TO_WSTRING(#i));
END_IF;
END_FOR;#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REG of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_WriteList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList,
Variable := "Productionline_Data"."WriteListStatus".Variable);
END_IF;

命令の呼び出しの説明(トラブルシューティング)
エラーが発生すると、「Error」出力パラメータの値が「TRUE」に設定されます。これにより、「#State」タグが値 100 に設定されます。このケースは、トラブルシューティング用に予約されています。このサンプルプログラムは、REQ パラメータを FALSE に設定するために「OPC_UA_WriteList」命令も呼び出します。
出力パラメータ「Done」が TRUE の場合、命令は正常に実行されています。
注記:命令が正常に実行された(「Error」パラメータが設定されず、「Done」パラメータが設定される)にもかかわらず、PLC タグが設定されていない場合もあります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3275

通信
6.3 OPC UA
このため、この例では PLC タグに対してプログラムが有効値を設定できたかどうかを判定するためのチェックが行われています。
• サーバーが最初の PLC タグに新しい値を割り当てられた場合、「NodeStatusList」パラ
メータがポイントする配列の最初のエレメントに値 0 が含まれます。
この例では、タグは 1 つしか使用されていません。ステータスコードは「Productionline_Data"."WriteListStatus".NodeStatusList[0]」で確認できます。
PLC タグが設定できなかった場合、プログラムがエラーメッセージを出力します。
「#State」タグの値が 1 増加します。これは、次のプログラムセクション(ケース 5、Release Handle List)が次のサイクルで実行されることを意味します。

下記も参照(ページ 3181)
OPC_UA_NodeReleaseHandleList:読み取り/書き込みアクセス用のハンドルの解放 (ページ 3282)

OPC_UA_WriteList での配列セクションの書き込み

概要
このセクションは、「OPC_UA_WriteList」に基づいています。OPC_UA_WriteList:タグの書
き込み (ページ 3264)を参照してください。
このセクションでは、「OPC_UA_WriteList」命令による配列の一部への新しい値の割り当て(書き込み)方法について説明します。
基本的に、OPC UA サーバーの配列の一部への書き込みは以下のように行われます。
23&8$6HUYHU

23&8$&OLHQW

>@>@>@>@>@

>@>@>@>@>@>@>@①3276

OPC UA サーバーの配列の一部への配列エレメントの書き込み

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

要件
この説明では、以下のことを仮定しています。
• CPU を OPC UA サーバーとして設定済みであること。
サーバーは、OPC UA クライアントが書き込める配列を提供します。
この例では、OPC UA クライアントにデータブロック「Data_from_OPC_UA_Clients」を提供する CPU「Productionline"」を使用します。

• CPU を OPC UA クライアントとして設定済みであること。
クライアント内にクライアントインターフェースを作成します。「AUTOHOTSPOT」を参照してください。
クライアントインターフェースには、配列が格納された書き込みリストが含まれています。
この配列の一部のみが、サーバーでの配列の書き込みに使用されます。
この例では、書き込みリスト「WriteListStatus」を含んだクライアントインターフェー
ス「Productionline」を使用します。

サーバーの「Serial_Number」配列内では、新しい値が「Serial_Number[5]" 」から「Serial_Number[9]」まで書き込まれます。

書き込みリストデータタイプおよび書き込みリスト DB の調整「OPC_UA_WriteList」は、「OPC_UA_WriteList」命令を使用してスカラー(値が格納されたタグ)および配列(複数の値が格納されたタグ)全体に新しい値を書き込む方法を示しています。
以下のセクションでは、OPC_UA_WriteList を使用した配列の一部への新しい値の書き込みに必要な「OPC_UA_WriteList」の追加情報について記載します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3277

通信
6.3 OPC UA
手順 1:書き込みリストデータタイプのコピーおよび調整

最初に、OPC UA サーバーに書き込む値を提供するタグのデータタイプを変更します。
STEP 7 によって生成されるデータタイプは非常に長いため、この変更が必要になります。
このデータタイプが非常に長いのは、新しい値を配列全体にではなく、配列のの一部にのみ割り当てるためです。
この例では、10 のエレメントを含む配列「 "Serial_Number」にアクセスします。
このため、STEP 7 は 10 のエレメントを含むデータタイプを生成します。
このデータタイプを短縮するには、以下の手順を実行します。
1. プロジェクトツリーで、[PLC データタイプ]フォルダを開きます。
2. [システムデータタイプ]フォルダを開きます。
3. データタイプ「<クライアントインターフェース>.<書き込みリスト>」をコピーします。
この例では、このデータタイプを「"Productionline.WriteListStatus」と命名しています。
4. コピーしたデータタイプを[PLC データタイプ]フォルダに貼り付けます。
5. プロジェクト内で意味のある名前となるように、挿入したデータタイプ名を変更します。
この例では、名前を「myUDTProductionline.WriteListStatus」に変更しています。
6. 配列のデータタイプを変更します。
この例では、OPC UA サーバーに Serial_Number[5]から Serial_Number[9]まで値を書き込みます。
このため、データタイプを「Lint の Array[0..9]」から「Lintl の Array[0..4]」に短縮します。
この例では、

手順 2:書き込みリスト DB のコピーおよび新しい書き込みリストデータタイプの適用

このステップでは、新しいデータブロック内の新しいデータタイプを使用します。
STEP 7 によって生成されたデータブロックには配列の元のデータタイプが含まれているため、このステップを行う必要があります。
データタイプは変更できません。データブロックをコンパイルするたびに、元のデータタ
イプが復元され、変更は失われます。
以下の手順に従って、新しいデータブロックを作成します。
1. [プロジェクトツリー]エリアで、クライアントとして動作する CPU を選択します。
2. [プログラムブロック]フォルダを開きます。

3278

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
3. データタイプ<クライアントインターフェース>_Data をコピーします。
この例では、データブロックに「Productionline_Data」と命名しています。
4. コピーしたデータブロックを[プログラムブロック]フォルダに貼り付けます。
5. プロジェクト内で意味のある名前となるように、挿入したデータブロック名を変更します。
この例では、名前を「myProductionline_Data」に変更しています。
6. ここで、ステップ 1 で作成した新しいデータタイプを使用します。
この例では、新しいデータタイプを書き込みリスト「WriteListStatus」内のタグ「Variable」に割り当てています。

7. 命令「OPC_UA_WriteList」の「Tag」パラメータに新しいデータブロック(この例では「myProductionline_Data」)を提供します。
Variable := "myProductionline_Data"."WriteListStatus".Variable,
手順 3:OPC_UA_ReadList パラメータ「NodeAddInfos」のタグの作成

このステップでは、タイプ「OPC_UA_NodeAdditionalInfo」のローカルタグを作成します。
このタグを使用して、配列のどの部分に新しい値に割り当てるかを「OPC_UA_WriteList」
命令に知らせます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3279

通信
6.3 OPC UA
以下のように実行します。
1. タイプ「OPC_UA_NodeAdditionalInfo」の配列を作成します。
この例では、命令「OPC_UA_WriteList」を呼び出すファンクションブロックの宣言セクシ
ョン内でタグを作成します。
新しいローカルタグを「NodeAdditionalInformation」と命名します。

新しいローカルタグ「NodeAdditionalInformation」には、タイプ「OPC_UA_AdditonalInfo」の 2 つのエレメントが含まれます。
NodeAdditionalInformation[0]は、最初に書き込まれるタグ(この例では「ProductionEnabled」)に関する追加情報を提供します。
NodeAdditionalInformation[1]は、2 番目に書き込まれるタグ(この例では「Serial_Number」)に関する追加情報を提供します。
2. 新しいタグに値を割り当てます(宣言セクションの「デフォルト値」列)。
この例では、2 番目のタグ(Serial_Number)については、すべてのエレメントには書き込みを行いません。
このため、 NodeAdditionalInformation[1].AttributeId には値 13 を割り当てます(つまり、配列の値が書き込まれます)。
NodeAdditionalInformation[1].StartIndex にはインデックス 5 から書き込みを開始するため、値 5 が割り当てられます。
NodeAdditionalInformation[1].EndIndex にはインデックス 9 から書き込みを開始するため、値 9 が割り当てられます。
書き込みリストの最初のエレメントは配列の一部ではなく、完全な書き込みが行われるス
カラーまたは配列であることをサーバーに通知するため、 NodeAdditionalInformation[0]に以下の値を設定します。
この定数には、値 4_294_967_295 が含まれます。サーバーはこの StartIndex およびEndIndex の値を無視し、スカラーおよび配列全体に対して書き込みを行います。

代替手順
ユーザープログラム内で NodeAdditionalInformation の値を設定することも可能です。
// set additonal information to Array-Index 0// we set default values here
#NodeAdditonalInformation[0].AttributeID := 13;#NodeAdditonalInformation[0].StartIndex :=4_294_967_295;

3280

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA#NodeAdditonalInformation[0].EndIndex :=4_294_967_295;// set additonal information to Array-Index 1// because we want to write only five values to thearray in the OPC UA server#NodeAdditonalInformation[1].AttributeID := 13;#NodeAdditonalInformation[1].StartIndex := 5;#NodeAdditonalInformation[1].EndIndex := 9;
注記:
タイプ「OPC_UA_NodeAdditionalInfo」の配列 NodeAdditionalInformation には、書き込みリストと同数のエレメントが含まれている必要があります(この例では 2)。
3. 「OPC_UA_WriteList」命令のパラメータ「NodeAddInfos」に、ローカルタグ
NodeAdditionalInformation を割り当てます。
下図は、パラメータ「Variable」および「NodeAddInfos」に新しい値が提供された状態でのOPC_UA_WriteList の呼び出しを示しています。
#OPC_UA_WriteList_Instance(REQ := #Req,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHd
ls,
NodeStatusList :="myProductionline_Data"."WriteListStatus".NodeStatusList,
Variable :="myProductionline_Data"."WriteListStatus".Variable,
ConnectionHdl :="Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeHdlCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCo
unt,
NodeAddInfos := #NodeAdditonalInformation,
Busy => #Busy,
Error => #Error,
Status => #Status,
Done => #Done);

サーバーでの結果
これで、「OP_UA_WriteList」命令は OPU UA サーバーに「Serial_Number」配列を部分的に書き込むようになりました。
下図は、配列「Serial_Number」を示しています。サーバーは、
NodeAdditionalInformation で指定したインデックス以降に値を書き込みます(この例では
インデックス 5 以降)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3281

通信
6.3 OPC UA

注記
多次元配列(最大 6 次元)のセクションに書き込むには、データタイプ「OPC_UA_NodeAdditionalInfoExt」を使用します。

6.3.1.4

データ交換の終了

OPC_UA_NodeReleaseHandleList:読み取り/書き込みアクセス用のハンドルの解放

有効性
以下の「OPC_UA_NodeReleaseHandleList」命令の説明は、ファームウェアバージョン
V2.6 以降の S7-1500 CPU に適用されます。

説明
命令「OPC_UA_NodeReleaseHandleList」を使用して、ハンドルを解放します。
下図に、エディタ(FBD)内での命令のアイコンを示します。

3282

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

上図では、命令のパラメータはまだ提供されていません。
命令「OPC_UA_NodeReleaseHandleList」を使用して、命令「OPC_UA_NodeGetHandleList」で登録済みの PLC タグに対するハンドルを解放します。下図の③を参照してください。
OPC UA サーバーへの接続を解除しない場合は、命令"OPC_UA_NodeReleaseHandleList"は不要です。この場合、「AUTOHOTSPOT」命令を直ちに呼び出します。この命令は、すべてのハンドルを自動的に解放します。



23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B5HDG/LVW
23&B8$B:ULWH/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み操作完了後にリソースを解放するための命令

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3283

通信
6.3 OPC UA「OPC_UA_NodeReleaseHandleList」のパラメータ
表 6-9

ファンクションブロック「OPC_UA_NodeReleaseHandleList」のパラメータ

パラメータ

領域での S7 デー 意味
宣言
タタイプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、ブロックの実行がトリガされます。

ConnectionHdl Input

DWORD

確立された接続の固有の識別子。接続ハンドル。
ファンクションブロック OPC_UA_Connect を呼び出すことで、接続ハンドルを取得します。

NodeHdlCount Input

UINT

NodeHdls

VARIANT タイプ DWORD の配列へのポインタ。

InOut

NodeHdls パラメータ内のエレメント数

この配列には、プログラム内で読み取りまたは設定を行わなくなったタグのハンドルが含まれます。
Timeout

Input

TIME

ファンクションブロックの最大実行時間。
このパラメータの説明については、
AUTOHOTSPOT も参照してください。

NodeStatusList InOut

VARIANT タイプ DWORD の配列へのポインタ。
この配列には、個々のノードハンドル(タグ)に対するエラーコードが含まれています。
「NodeStatusList パラメータ内のエラー番号」を参照してください。
各ノードハンドルに対して、解放できたかどうかを確認できます。

Done

OutputBOOL

ブロック処理のステータスパラメータ• 0:ブロック処理が中止された、未完了である、
またはまだ開始していません• 1:ブロック処理がエラーなしで完了しました

Busy

OutputBOOL

ブロック処理のステータスパラメータ• 0:ブロックが実行されていません。
• 1:ブロックが現在実行されています。

3284

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
パラメータ

領域での S7 デー 意味
宣言
タタイプ

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。「Status」パラメータを参照。

Status

Output

DWORD

下記「Status パラメータ内のエラー番号」を参照

Status のエラー番号
次の表に、この命令のエラーコードの概要を示します。
エラーコードエラーの名前説明

OpcUa_Good

ファンクションブロックが正常に実(16 進数の値)
0000_0000

行されました。
8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモリがありません。
OPC UA クライアントおよび OPC UA
サーバーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている
OPC UA クライアント数を減らす。
• サブスクリプション数を減らす。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3285

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadTimeout

ネットワークタイムアウトが発生し(16 進数の値)
800A_0000

ました。
考えられる原因:• OPC UA サーバーへの接続が遅す
ぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout パ
ラメータの値を増加)。
800D_0000

OpcUa_BadServerNotConne

サーバーが接続されていないか、接

cted

続ハンドルが正しくない、または無効です。

800F_0000

OpcUa_BadNothingToDo

行う処理がありません:OPC UA サー
バーが、OPC UA クライアントから命令が格納されていない空のリスト
を受信しました。

8010_0000

OpcUa_BadTooManyOperati

1 つの接続につき同時に呼び出せる

ons「OPC_UA_NodeReleaseHandleList」命令の数(1)を超えました。関連項
目: AUTOHOTSPOT3286

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

BadConnectionClosed

対応する ConnectionHdl での接続

(16 進数の値)
80AE_0000

が「ShutDown」ステータスです(接続が終了しています)。接続/セッシ
ョンを自動的に「再有効化」できませんでした。考えられる原因:再起動
またはタイムアウトなどにより、サーバーでセッションが削除されています。
この場合、命令「OPC_UA_Disconnect」によって接続を明示的に終了し、接続リソースを再度解放する必要があります。ユーザープログラム内で、この接続に対して無効になっている
ConnectionHdl をリセットする必要があります。
その後、サーバーへの接続を新規に確立する必要があります(命令「OPC_UA_Connect」を参照)。
80AF_0000

BadInvalidState

対応する ConnectionHdl での接続が「ConnectinError」ステータスです(一時的な接続エラー、接続が中断されています)。CPU が接続の「再有効化」を試行します。設定されたタイムアウト時間(OPC UA
Session Timeout)中に「再有効化」に失敗すると接続が「Shutdown」
状態になります。状態遷移の要件:セッションがアクティブかどうかを確認するために、CPU が OPC UA サー
バーに到達できること。

B080_0100
B080_1100

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Simatic_BadType_VariantInp パラメータ「NodeHdls」のデータ
ut1

タイプが正しくありません。

Simatic_ArrayElements_Too

NodeHdlCount >Many

MAX_ELEMENTS_NODELIST

3287

通信
6.3 OPC UA
エラーコードエラーの名前説明(16 進数の値)
B080_0200
B080_3100
B080_3200

Simatic_BadType_VariantInp パラメータ「NodeStatusList」のデ
ut2

ータタイプが正しくありません。

BadNumElements_VariantIn

NodeHdlCount > 「NodeHdls」パラ

put1

メータの配列のエレメント数。

BadNumElements_VariantIn

NodeHdlCount >put2「NodeStatusList」パラメータの配列のエレメント数。

B080_C400

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

B080_C500

Simatic_NothingToDo

行う処理がありません:この命令は、エレメントが含まれていないリスト
を使用しています。

C080_C300

Simatic_OutOfResources

同時に使用可能なクライアント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのクライアント命令数を減らします。関連項目:
AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

「NodeStatusList」のエラー番号「NodeStatusList」パラメータには、個々のノードハンドル(タグ)に対するエラーコードが含
まれています。
次の表では、エラーコードについて説明します。
エラーコード エラーの名前

説明(16 進数の値)
0000_0000

OpcUa_Good

ハンドルが正常に解放されました。

8034_0000

OpcUa_BadNodeUnknown

転送されたノードハンドルが不明です。

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

3288

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

この命令の使用方法
このセクションではプログラム例を使用して、OPC UA サーバーとデータ交換を行うプロ
グラム内での命令「OPC_UA_NodeReleaseHandleList」の使用方法について説明します。

要件
この説明では、以下のことを仮定しています。
• クライアントインターフェースが作成済みであること。
• OPC UA サーバーへの接続が作成済み、かつ構成済みであること。「AUTOHOTSPOT」を参照。
さらに、命令「OPC_UA_NodeReleaseHandleList」では、以下の要件も満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
ファンクションブロック「AUTOHOTSPOT」を呼び出すことで、接続ハンドルを取得します。
• プログラム内で値の読み取りまたは書き込みを行わなくなった個々のタグに対するハ
ンドルのリスト。
ファンクションブロック「AUTOHOTSPOT」を呼び出すことで、このハンドルリストを取得します。

命令のファンクション
命令「OPC_UA_NodeReleaseHandleList」を呼び出して、プログラム内で不要になったノードハンドルを解放します。
ノードハンドルは、OPC UA サーバー上のノード(PLC タグなど)への数値参照です。
ファンクションブロックで必要な情報

このファンクションブロックは以下の情報を必要とします。
• 値の読み取りまたは書き込みを行わなくなったタグ(または他のノード)に対するハンド
ルのリスト(「NodeHdls」パラメータ内)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3289

通信
6.3 OPC UA
このファンクションブロックが返す情報

このファンクションブロックは以下の情報を返します。
• エラーメッセージのリスト(「NodeStatusList」パラメータ内)。
このリスト内の各エラーメッセージは、「NodeHdls」パラメータ内の対応するハンドルに関連しています。
個々のノードハンドルに対して、OPC UA サーバーがハンドルを解放できたかどうかを確認する必要があります。
ノードハンドルを解放できていない場合は、ユーザープログラムがこのエラーをキャッチする必要があります。たとえば、この命令をトラブルシューティングセッション内
で再度呼び出します。

構成済み接続の使用方法
1. [プロジェクトツリー]エリアで、クライアントとして使用する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を実行するファンクションブロックを選択します。
この例では、ファンクションブロックを「ReadFromProductionline」とします。
選択言語:SCL。
3. ドラッグ＆ドロップで、命令「OPC_UA_NodeReleaseHandleList」をフォルダ[命令|通信|
OPC UA|OPC UA クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「OPC_UA_NodeReleaseHandleList_Instance」と命名します。
5. 「OPC_UA_NodeReleaseHandleList_Instance」命令の[設定の開始]のアイコンをクリックします。
STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、AUTOHOTSPOT に対して作成したクライアントインターフェースを「Productionline 」とします。
7. [データアクセス]をクリックし、読み取りリストを選択します。
この例では、読み取りリスト「ReadListProduct」を選択します。
これにより、STEP 7 は命令のパラメータに、クライアントインターフェースに対して設定済
みの値を自動的に供給します。
8. [ブロックパラメータ]をクリックし、タグをパラメータ REQ、Busy、Done、Error、Statusに手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

命令の呼び出し(初期呼び出し)
完全なプログラムは、セクション「PLC タグを読み取るプログラム例 (ページ 3379)」に記載されています。

3290

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
このプログラム例で使用する読み取りリスト「ReadListProduct」には、以下の PLC タグが含まれています。
• NewProduct• ProductNumber
以下のプログラム例で、これらの PLC タグのハンドルを解放します。
CASE 命令

このサンプルプログラムは、CASE 命令によって複数のセクション(ケース)に分割されています。
ここに、ケース 5 を記載します。
SCL
5:// case 5, release node handles
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NodeReleaseHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

非同期実行

命令「OPC_UA_NodeReleaseHandleList」は、ユーザープログラムとは非同期で動作し、複数のプログラムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3291

通信
6.3 OPC UA

命令の呼び出しの説明(初期呼び出し)
上図は、ケース 5 を表しています。
プログラムのこの部分で、命令「OPC_UA_NodeReleaseHandleList」を呼び出します。こ
れにより、PLC タグのハンドルが解放されます。タグは、「ReadListProduct」読み取りリ
スト内にリストされます。
命令がまだ実行されていない場合、#Busy は FALSE であるため、「#Req」タグは値 TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req が FALSE になります。

命令の呼び出し(トラブルシューティング)
下図は、「Done」および「Error」パラメータの評価を示しています。
SCL
IF #Done = TRUE THEN
IF "Productionline_Data"."ReadListProduct".NodeStatusList[0] = 0 AND"Productionline_Data"."ReadListProduct".NodeStatusList[1] = 0
THEN#State := #State + 1;
ELSE
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeReleaseHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REG of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NodeReleaseHandleList_Instance(REQ := FALSE,
ConnectionHdl :="Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList :="Productionline_Data"."ReadListProduct".NodeStatusList);
END_IF;

3292

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出しの説明(トラブルシューティング)
エラーが発生すると、「Error」出力パラメータの値が「TRUE」に設定されます。これにより、#State タグが値 100 に設定されます。このケースは、トラブルシューティング用に予約されています。このサンプルプログラムは、REQ パラメータを FALSE に設定するために
命令「OPC_UA_NodeReleaseHandleList」も呼び出します。
「Done」出力パラメータの値が TRUE である場合、命令は正常に実行されています。
注記:命令が正常に実行された(「Error」パラメータが設定されず、「Done」パラメータが設定される)にもかかわらず、PLC タグのハンドルが解放されていない場合もあります。
このため、この例では両方のタグのハンドルが解放されているかどうかを判定するためのチェックが行われています。
• サーバーが最初の PLC タグに対してハンドルを解放している場合、「NodeStatusList」
パラメータがポイントする配列の最初のエレメントに値 0 が含まれます。
この例では、"Productionline_Data"."ReadListProduct".NodeStatusList[0]内にステータ
スコードが出力されます。
• サーバーが 2 番目の PLC タグに対してハンドルを解放している場合、「NodeStatusList」
パラメータがポイントする配列の 2 番目のエレメントに値 0 が含まれます。
この例では、"Productionline_Data"."ReadListProduct".NodeStatusList[1]内にステータ
スコードが出力されます。
両方の条件を満たす場合、タグ「#State」の値が 1 増加します。これは、次のプログラム
セクション(ケース 6、接続の終了)が次のサイクルで実行されることを意味します。
ケース 6 については、AUTOHOTSPOT で説明されています。
注記
ケース 6 では、OPC UA サーバーへの接続の有効化が行われます。また、サーバー内でクライアントプログラムが占有しているその他のリソースがすべて解放されます。サーバーへの接続を終了する場合は、ユーザープログラムでケース 5 をスキップして、直ちにケース
6 を実行できます。

下記も参照(ページ 3181)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3293

通信
6.3 OPC UA

OPC_UA_Disconnect:接続の終了

有効性
特に記載のない限り、以下の「OPC_UA_Disconnect」命令の説明は、ファームウェアバー
ジョン V2.6 以降の S7-1500 CPU に適用されます。

説明
命令「OPC_UA_Disconnect」を使用して、OPC UA サーバーへの接続を切断します。
注記
ファームウェアバージョン V2.8 以降での接続ハンドル(ConnectionHdl)の処理
ファームウェアバージョン V2.8 以降では、接続エラー(エラーコード「BadConnectionClosed」)の後に、命令「OPC_UA_Disconnect」によって接続を明示的に終了し、接続リソースを再度解放する必要があります。ユーザープログラム内で、この無効な接続に対する ConnectionHdl をリセットする必要があります。
下図に、エディタ(FBD)内での命令のアイコンを示します。

上図では、命令のパラメータはまだ提供されていません。
命令「"OPC_UA_Disconnect」を使用して、OPC UA サーバーへの接続を切断し、セッションを終了します。下図の③を参照してください。

3294

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B5HDG/LVW
23&B8$B:ULWH/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み操作完了後にリソースを解放するための命令「OPC_UA_Disconnect」のパラメータ
表 6-10

ファンクションブロック「OPC_UA_Disconnect」のパラメータ

パラメータ

領域での データタ 意味
宣言
イプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、ブロックの実行がトリガされます。

ConnectionHdl Input

DWORD

確立された接続の固有の識別子。接続ハンドル。
ファンクションブロック OPC_UA_Connect を呼び出すことで、接続ハンドルを取得します。

Timeout

Input

TIME

ファンクションブロックの最大実行時間。
このパラメータの説明について
は、OPC_UA_Connect:接続の作成 (ページ 3181)
も参照してください。

Done

OutputBOOL

ブロック処理のステータスパラメータ• 0:ブロック処理が中止された、未完了である、
またはまだ開始していません• 1:ブロック処理がエラーなしで完了しました
注記:「OPC_UA_Disconnect」命令の処理がDone=1 で終了しても、コネクションリソースは
約 60 秒間占有されたままとなります。
AUTOHOTSPOT を参照してください。

Busy

OutputBOOL

ブロック処理のステータスパラメータ• 0:ブロックが実行されていません。
• 1:ブロックが現在実行されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3295

通信
6.3 OPC UA
パラメータ

領域での データタ 意味
宣言
イプ

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照。

Status

Output

DWORD

下記「Status パラメータ内のエラー番号」を参照

Status パラメータ内のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。
エラーコードエラーの名前説明

OpcUa_Good

ファンクションブロックが正常(16 進数の値)
0000_0000に実行されました。
8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモリがありません。
OPC UA クライアントおよびOPC UA サーバーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ
数を減らす。
• 現在サーバーに接続されている OPC UA クライアント数を減らす。
• サブスクリプション数を減ら
す。

3296

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコードエラーの名前説明

OpcUa_BadTimeout

ネットワークタイムアウトが発(16 進数の値)
800A_0000

生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブ
ロック OPC_UA_Connect のTimeout パラメータの値を増加)。
800D_0000

OpcUa_BadServerNotConnected サーバーが接続されていない
か、接続ハンドルが正しくない、または無効です。

800F_0000

OpcUa_BadNothingToDo

行う処理がありません:OPC UA
サーバーが、OPC UA クライア
ントから命令が格納されていな
い空のリストを受信しました。

8010_0000

OpcUa_BadTooManyOperations

1 つの接続につき同時に呼び出せる「OPC_UA_Disconnect」命令の数(1)を超えました。関連項
目: AUTOHOTSPOT

B080_C400

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

B080_C600

Simatic_ClientNotAvailable

クライアントの初期化中にエラーが発生しました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3297

通信
6.3 OPC UA
エラーコードエラーの名前説明

Simatic_OutOfResources

同時に使用可能なクライアント(16 進数の値)
C080_C300

命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイ
プのクライアント命令数を減らします。関連項目:
AUTOHOTSPOT
その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

この命令の使用方法
このセクションではプログラム例を使用して、OPC UA サーバーとデータ交換を行うプロ
グラム内での命令「OPC_UA_Disconnect」の使用方法について説明します。

要件
この説明では、以下のことを仮定しています。
• クライアントインターフェースが作成済みであること。「AUTOHOTSPOT」を参照。
• OPC UA サーバーへの接続が作成済み、かつ構成済みであること。「AUTOHOTSPOT」を参照。
さらに、命令「OPC_UA_Disconnect」では、以下の要件も満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
この命令を呼び出すことで、接続ハンドルを取得します。OPC_UA_Connect:接続の作成(ページ 3181)を参照してください。

命令のファンクション
命令「OPC_UA_Disconnect」を呼び出して、OPC UA サーバーへの接続を切断します。

構成済み接続の使用方法
1. [プロジェクトツリー]エリアで、クライアントとして使用する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を実行するファンクションブロックを選択します。
この例では、ファンクションブロックを「ReadFromProductionline」とします。
選択言語:SCL。

3298

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
3. ドラッグ＆ドロップで、命令「OPC_UA_Disconnect」をフォルダ[命令|通信|OPC UA|OPC UA
クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「"OPC_UA_Disconnect_Instance」と命名します。
5. 「OPC_UA_Disconnect_Instance」命令の[設定の開始]のアイコンをクリックします。
STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、AUTOHOTSPOT に対して作成したクライアントインターフェースを「Productionline」とします。「AUTOHOTSPOT」を参照してください。
これにより、STEP 7 は命令のパラメータに、クライアントインターフェースに対して設定済
みの値を自動的に供給します。
7. [ブロックパラメータ]をクリックし、タグを残りのパラメータ REQ、Busy、Done、Error、
Status に手動で割り当てます。
STEP 7 が、選択済みのタグを命令の呼び出しに追加します。

この命令の呼び出し
完全なプログラムは、セクション「AUTOHOTSPOT」に記載されています。
このサンプルプログラムは、OPC UA サーバーへの接続およびセッションを終了します。
SCL
6:// case 6, disconnect from server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

このサンプルプログラムは、以下の理由で「OPC_UA_Disconnect」命令を呼び出します。
• OPC UA サーバーへの接続を終了するため。
• エラーが発生した場合に、REQ パラメータを FALSE に設定するため。
非同期実行

命令「OPC_UA_Disconnect」は、ユーザープログラムとは非同期で動作し、複数のプログ
ラムサイクルを必要とします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3299

通信
6.3 OPC UA「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明
上図は、ケース 6 を示しています。プログラムのこの部分で、OPC UA サーバーへの接続
およびセッションを終了します。
#State タグが 6 の場合、ケース 6 が実行されます。
「OPC_UA_Disconnect」命令がまだ実行されていない場合、#Busy は FALSE となり、「#Req」タグは値 TRUE に設定されます。これによって命令が開始します。次のサイクル
では、#Req が FALSE になります。
出力パラメータ「Done」が TRUE の場合、この接続のハンドルの解放、および接続の終了ができています。これにより、「#State」タグの値が 1 増加します。これは、次のプログ
ラムセクション(ケース 7)が次のサイクルで実行されることを意味します。このケースでは、このファンクションブロックに対してステータス情報が設定されます(Output_Busy =FALSE、Output_Done = TRUE)。
この命令がエラーなしで実行できない場合、出力パラメータ「Error」が TRUE となり、タグ#State が値 100 となります。このケースは、トラブルシューティング用に予約されています。

6.3.1.5

診断

OPC_UA_ConnectionGetStatus:読み取り接続ステータス

有効性
特に記載のない限り、以下の「OPC_UA_ConnectionGetStatus」命令の説明は、ファーム
ウェアバージョン V2.6 以降の S7-1500 CPU に適用されます。

説明
命令「OPC_UA_ConnectionGetStatus」を使用し、OPC UA サーバーへの接続の品質に関する情報を取得して、接続をモニタします。

3300

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
この命令は以下の情報を返します。
• 接続のステータス• 接続されている OPC UA サーバーのステータスおよびサービスレベル(Status のノード識別子:i=2259、ServiceLevel のノード識別子:i=2267)

23&B8$B&RQQHFW
23&B8$B'LVFRQQHFW

23&B8$B&RQQHFWLRQ*HW6WDWXV

23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B7UDQVODWLRQ3DWK/LVW
23&B8$B5HDG/LVW

23&B8$B1RGH*HW+DQGOH/LVW

23&B8$B:ULWH/LVW

23&B8$B1RGH5HOHDVH+DQGOH/LVW①

読み取りおよび書き込み操作の準備のための命令②

読み取りおよび書き込み命令③

読み取りまたは書き込み処理完了後の「クリーンアップ」に使用する命令「OPC_UA_ConnectionGetStatus」のパラメータ
表 6-11

ファンクションブロック「OPC_UA_ConnectionGetStatus」のパラメータ

パラメータ

領域での データタ 意味
宣言
イプ

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、命令の実行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間 。
このパラメータの説明については、
AUTOHOTSPOT も参照してください。

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、まだ完了していない、またはまだ開始していません。
• 1:命令の実行がエラーなしで完了しました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3301

通信
6.3 OPC UA
パラメータ

領域での データタ 意味
宣言
イプ

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されています。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
「Status」パラ• 1:エラーが発生しました。
メータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status の
エラー番号」を参照してください。

ConnectionStatus

OutputUDINT

ConnectionHdl パラメータによって識別される接続のステータス。
Done=1 の場合に有効。
意味:• 0:OPC UA サーバーへの接続が確立されています。
• 1:OPC UA サーバーへの接続が無効です「ConnectionError」()。この状態では、CPUが接続の「再有効化」を試行します。
• 2:OPC UA サーバーへの接続を再有効化できませんでした。CPU がサーバーから切断されています(「ShutDown」)。接続を終了(OPC_UA_Disconnect)してから、OPC UA
サーバーへの接続(OPC_UA_Connect)を新規に確立する必要があります。

3302

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
パラメータ

領域での データタ 意味
宣言
イプServerState

OutputUDINT

OPC UA サーバーに関する情報、Done=1 かつConnectionStatus=0 の場合に有効。
値の意味:• 0:サーバーが正常に動作しています。
• 1:サーバー内でエラーが発生しています。
サーバー動作の信頼性を保証できません。
• 2:サーバーが動作しています。ただし、コンフィグレーションがロードされていない
ため、データが交換されていません。
• 3:サーバーが一時的に使用できません。
• 4:サーバーがシャットダウン済み、またはシャットダウン処理中です。
• 5:サーバーがテストモードで動作しています。出力は相互接続されていません。
• 6:サーバーが正常に動作しています。ただし、PLC タグの読み取りに問題があります。
• 7:サーバーステータスが不明です。
サーバーへの接続がないと、この値が設定されます。

ServiceLevel

OutputByte

接続 s らえている OPC UA サーバーのパワーに関する情報。Done=1 かつConnectionStatus=0 の場合に有効。
サーバーは、自身のパワーを示す 0～255 の数値を返します。数値が大きくなるほど、サーバーのパワーが大きくなります。

Status のエラー番号「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3303

通信
6.3 OPC UA
次の表に、この命令のエラーコードの概要を示します。
エラーコー
ド

エラーの名前説明

0000_0000

OpcUa_Good

命令が正常に終了しました。

8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメ(16 進数の値)

モリがありません。
OPC UA クライアントおよび OPC UA
サーバーがメモリ領域を共有している
ため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている
OPC UA クライアント数を減らす。
• サブスクリプション数を減らす。
8009_0000

OpcUa_BadUnknownResponse

サーバーが、不明または無効な応答を送信しています。

800A_0000

OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout パラ
メータの値を増加)。

3304

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコー
ド

エラーの名前説明

OpcUa_BadServerNotConnected

サーバーが接続されていないか、接続(16 進数の値)
800D_0000

ハンドルが正しくない、または無効です。
8010_0000

OpcUa_BadTooManyOperations

1 つの接続につき同時に呼び出せる「OPC_UA_ConnectionGetStatus」命
令の数(1)を超えました。関連項目:
AUTOHOTSPOT

8074_0000

OpcUa_BadTypeMismatch

ServerState / ServiceLevel が予期しないタイプです。

A000_0105

PLCopenUA_Bad_ConnectionInva 接続ハンドル(ConnectionHdl)が無効
lidHdlまたは不明です。新規接続を確立する必要があります。
「OPC_UA_Disconnect」命令で接続が解放されると、この接続に対するConnection Handle も無効になります。注記:ファームウェアバージョン
V2.8 以降の S7-1500 CPU では、
OPC_UA_Disconnect 命令が呼び出される場合しか接続ハンドルは解放されず、無効になりません。

B080_C400

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

C080_C300

Simatic_OutOfResources

同時に使用可能なクライアント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのク
ライアント命令数を減らします。関
連項目: AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3305

通信
6.3 OPC UA

要件
命令「OPC_UA_ConnectionGetStatus」では、以下の要件を満たす必要があります。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 AUTOHOTSPOT から接続ハンドルを取得します。

この命令の呼び出し
このセクションでは、ファンクションブロック「Analyze_Connection」について説明します。このファンクションブロックで、命令「OPC_UA_ConnectionGetStatus」の使用方法を示しています。
完全な例は、セクション「OPC_UA_ConnectionGetStatus のプログラム例 (ページ 3373)」に記載されています。
タグの宣言

命令「OPC_UA_ConnectionGetStatus」のインスタンス、および命令のパラメータに値を供給するためのタグを宣言します。
このプログラム例では、以下の宣言を使用しています。

ユーザープログラム

下図は、サーバーへの津族の品質を判定するサンプルプログラム「Analyze_Connection」のセクションを示しています。
このサンプルプログラムは、CASE 命令によって複数のセクション(ケース)に分割されて
います。

3306

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ここに、ケース 2 (接続の分析)を記載します。
SCL
2: // case 2, analyse connection
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_ConnectionGetStatus_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
Timeout := T#6S,
Done => #Done,
Error => #Error,
Busy => #Busy,
Status => #Status,
ConnectionStatus => #ConnectionStatus,
ServerState => #ServerState,
ServiceLevel => #ServiceLevel);IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;
#Mem_Status := #Status;#OPC_UA_ConnectionGetStatus_Instance(REQ := FALSE, ConnectionHdl :=#ConnectionHdl);
END_IF;

エラーが発生すると、命令「OPC_UA_ConnectionGetStatus」(#Error の値が「TRUE」)のパ
ラメータ REQ が値 FALSE に設定されます。
非同期実行

命令「OPC_UA_ConnectionGetStatus」は、ユーザープログラムとは非同期で動作し、複数のプログラムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明
上図は、サンプルプログラム「Analyze_Connection」のケース 2 を示しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3307

通信
6.3 OPC UA
プログラムのこの部分で、OPC UA サーバーからの「ConnectionStatus」、「ServerState」、
および「ServiceLevel」の現在値を要求します。ただし、これらの値の評価は行われていません。
#State タグが 2 の場合、ケース 2 が実行されます。
「OPC_UA_ConnectionGetStatus」命令がまだ実行されていない場合、#Busy は FALSE となり、「#Req 」タグは TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req が FALSE になります。
出力パラメータ「Error」が TRUE の場合、命令の実行中にエラーが発生します。これにより、「#State」タグが値 100 に設定されます。このケースは、トラブルシューティング用に予約されています。
出力パラメータ「Done」が TRUE の場合、命令は正常に実行されています。これにより、「#State」タグの値が 1 増加します。これは、次のプログラムセクション(ケース 3)が次のサイクルで実行されることを意味します。ケース 3 については、OPC_UA_Disconnect:接続の終了 (ページ 3294)で説明されています。

6.3.1.6

メソッド

OPC_UA_MethodGetHandleList:メソッド呼び出し用のハンドルの取得

有効性
以下の「OPC_UA_MethodGetHandleList」命令の説明は、ファームウェアバージョン V2.6以降の S7-1500 CPU に適用されます。

説明
プログラミング例を使用して、SCL でのこの命令の使用方法について説明します。
このセクションでは、OPC UA 通信用のクライアントインターフェースを作成および構成していると仮定します。「AUTOHOTSPOT」を参照してください。効率的なプロシージャにより、クライアント命令のほとんどのパラメータ対して値が自動的に供給されます。
ユーザープログラム内で命令「OPC_UA_MethodGetHandleList」を使用して、サーバーがOPC UA クライアントに提供するメソッドの数値参照(ハンドル)をサーバーから受信します。
OPC_UA_MethodGetHandleList を使用して、メソッド呼び出しを準備します。下図の①を参照してください。
この命令は、サーバーメソッドのハンドルを返します。

3308

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B0HWKRG*HW+DQGOH/LVW

23&B8$B0HWKRG&DOO

23&B8$B0HWKRG5HOHDVH+DQGOH/LVW①

メソッド呼び出しの準備のための命令②

メソッド呼び出し③

メソッド呼び出し完了後の「クリーンアップ」に使用する命令「OPC_UA_MethodGetHandleList」のパラメータ
表 6-12

命令「OPC_UA_MethodGetHandleList」のパラメータ

パラメータ

領域での宣言 データタイプ 意味

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、命令の実
行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

NodeIDCount

Input

UINT

ObjectNodeIDs またはMethodeNodeIDs パラメータ内のエレメント数

ObjectNodeIDs

InOut

VARIANT

タイプ AUTOHOTSPOT のエレメ
ントを格納する配列へのポイン
タ。
この配列には、メソッドが配置されているオブジェクト(フォルダ)のノード ID(NodeIDs)が含まれています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3309

通信
6.3 OPC UA
パラメータ

領域での宣言 データタイプ 意味

MethodNodeIDs

InOut

VARIANT

タイプ AUTOHOTSPOT のエレメ
ントを格納する配列へのポイン
タ。
この配列には、サーバーからハンドルが要求されるメソッドのノード ID(NodeIDs)が含まれています。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間 。このパラメータの説明については、AUTOHOTSPOT も参照
してください。

NamespaceIndexCount

Input

UINT

パラメータ NamespaceIndexes内の配列のエレメント数。

NamespaceIndexes

InOut

VARIANTタイプ UINT の配列へのポイン
タ。
NamespaceIndexCount パラメータ内にエレメントがない場合(NamespaceIndexCount = 0).、
このパラメータは不要です。
この配列は、NodeIDs パラメー
タ内の名前空間のインデックスに新しいインデックスを割り当てるために使用します。
例:
NamespaceIndexes[4]内に値10 が存在する場合、以前は名前
空間インデックスが 4 であった
「NodeIDs」パラメータ内のすべての NodeIds に名前空間インデックスとして 10 が割り当てら
れます。

3310

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
パラメータ

領域での宣言 データタイプ 意味

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、
まだ完了していない、または
まだ開始していません。
• 1:命令の実行がエラーなしで完了しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されていま
す。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

StatusList

InOut

VARIANTタイプ DWORD の配列へのポインタ。
この配列には、個々のメソッドに対するエラーコードが含まれています（下記の「NodeStatusList のエラー番号」を参照)。
各メソッドに対して、システムは対応するハンドルを見つけられたかどうかを指定します。

MethodHdls

InOut

VARIANTタイプ DWORD の配列へのポインタ。
この配列には、OPC UA サーバ
ーによって返された、個々のメソッドに対するハンドル(NodeIDs)が含まれています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3311

通信
6.3 OPC UA「ObjectNodeIDs」および「MethodNodeIDs」パラメータの判定
ObjectNodeIDs

UaExpert などを使用して、「ObjectNodeIDs」パラメータに格納する必要がある
OPC_UA_NodeId を判定できます。

MethodNodeIDs「MethodNodeIDs」パラメータで、OPC_UA_NodeId を検索できます。

3312

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

Status のエラー番号
次の表に、この命令のエラーコードの概要を示します。
エラーコー エラーの名前
ド(16 進数
値)

説明

0000_0000 OpcUa_Good

命令が正常に終了しました。

8003_0000 OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモリがありません。
OPC UA クライアントおよび OPC UA サー
バーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている OPC UA
クライアント数を減らす。
• サブスクリプション数を減らす。

8009_0000 OpcUa_BadUnknownResponse サーバーが、予期される結果の数で応答しません。
800A_0000 OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout パラメー
タの値を増加)。

800D_000

OpcUa_BadServerNotConnect

サーバーが接続されていないか、接続ハン0ed

ドルが正しくない、または無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3313

通信
6.3 OPC UA
エラーコー エラーの名前
ド(16 進数値)

説明

800F_0000 OpcUa_BadNothingToDo

行う処理がありません:OPC UA サーバー
が、OPC UA クライアントから命令が格納されていない空のリストを受信しました。

8010_0000 OpcUa_BadTooManyOperation 1 つの接続につき同時に呼び出せるs「OPC_UA_MethodGetHandleList」命令の数(1)を超えました。関連項目:
AUTOHOTSPOT

8074_0000 OpcUa_BadTypeMismatch

サーバー内のデータタイプに対応していな
いデータタイプを使用しています。

B080_0100 Simatic_BadType_VariantInput パラメータ「ObjectNodeIDs」のデータタ
1

イプが正しくありません。

B080_0200 Simatic_BadType_VariantInput パラメータ「MethodNodeIDs」のデータ
2

タイプが正しくありません。

B080_0300 Simatic_BadType_VariantInput パラメータ「NamenspaceIndexes」のデ3ータタイプが正しくありません。

B080_0400 Simatic_BadType_VariantInput パラメータ「StatusList」のデータタイプ
4が正しくありません。

B080_0500 Simatic_BadType_VariantInput パラメータ「MethodHdls」のデータタイ
5プが正しくありません。

B080_1100 Simatic_ArrayElements_TooMa メソッドリストで許可されている最大数
ny(Max_ELEMENTS_METHODLIST)を超えま
した。

3314

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコー エラーの名前
ド(16 進数値)

説明

B080_3100 Simatic_BadNumElements_Var • 1 番目の VARIANT パラメータ(VariantInput1)で配列のエレメント数
B080_3200 iantInput1
が正しくありません:
B080_3300 Simatic_BadNumElements_Var
NodeIDCount > ObjectNodeIDs からのiantInput2
配列のエレメント数
B080_3400
Simatic_BadNumElements_Var • 2 番目の VARIANT パラメータ
B080_3500
iantInput3(VariantInput2)で配列のエレメント数
全般:
が正しくありません:
Simatic_BadNumElements_Var
B080_3N0
NodeIDCount > MethodNodeIDs から
iantInput4の配列のエレメント数0(N=命令のSimatic_BadNumElements_Var • 3 番目の VARIANT パラメータ
N 番目のiantInput5(VariantInput3)で配列のエレメント数
VARIANT)が正しくありません:
全般:
NamespaceIndexCount >Simatic_BadNumElements_Var
NamespaceIndexes からの配列のエレ
iantInputN
メント数(N=命令の N 番目のバージョ • 4 番目の VARIANT パラメータン)(VariantInput4)で配列のエレメント数
が正しくありません:
NodeIDCount > StatusList からの配列のエレメント数• 5 番目の VARIANT パラメータ(VariantInput5)で配列のエレメント数
が正しくありません:
NodeIDCount > MethodHdls からの配列のエレメント数
全般:N 番目の VARIANT パラメータのエレ
メント数が正しくありません。

B080_C400 Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

B080_C500 Simatic_NothingToDo

行う処理がありません:この命令は、エレメントが含まれていないリストを使用しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3315

通信
6.3 OPC UA
エラーコー エラーの名前
ド(16 進数値)

説明

C080_C300 Simatic_OutOfResources

同時に使用可能なクライアント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのクライアント命令数を減らします。関連項
目: AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

StatusList のエラー番号
StatusList パラメータには、個々のノード ID (メソッド)に対するエラーコードが含まれています。
次の表では、エラーコードについて説明します。
エラーコー エラーの名前
ド(16 進数

説明

値)
0000_0000 OpcUa_Good

エラーは発生していません。

8033_0000 OpcUa_BadNodeIdInvalid

ノード ID (NodeId)の構文が正しくありません。

8034_0000 OpcUa_BadNodeIdUnknown

NodeId が、OPC UA サーバー内に存在しないノード(メソッド)を参照しています。

8074_0000 OpcUa_BadTypeMismatch

InputArguments / OutputArguments のタイプが正しくありません。

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

要件
この説明では、以下のことを仮定しています。
「AUTOHOTSPOT」を参照。
• クライアントインターフェースが作成済みであること。
• OPC UA サーバーへの接続が作成済み、かつ構成済みであること。「AUTOHOTSPOT」を
参照。

3316

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
さらに、命令「OPC_UA_MethodGetHandleList」では、以下の要件も満たす必要があります(上図を参照)。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 OPC_UA_Connect から接続ハンドルを取得します。
• 呼び出すメソッドが格納されている名前空間のインデックス。
命令 AUTOHOTSPOT からインデックスを取得します。

命令のファンクション
メソッド呼び出しを速く行うために、OPC UA サーバーはメソッドに対する数値参照(ハンドル)を使用します。
命令「OPC_UA_MethodGetHandleList」を使用して、OPC UA サーバーからこれらのハンドルを取得します。
メソッド呼び出し「OPC_UA_MethodCall」を行うために、OPC UA 命令ではこれらのハンドルが必要です。

構成済み接続の使用方法
1. [プロジェクトツリー]エリアで、クライアントとして使用する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を実行するファンクションブロックを選択します。
この例では、ファンクションブロックを「Call_OpenDoor_On_Productionline」とします。
選択言語:SCL。
3. ドラッグ＆ドロップで、命令「OPC_UA_MethodGetHandleList」をフォルダ[命令|通信|OPC
UA|OPC UA クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「OPC_UA_MethodGetHandleList_Instance」と命名します。
5. 「OPC_UA_MethodGetHandleList_Instance」命令の[設定の開始]のアイコンをクリックします。
STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、クライアントインターフェースを「Productionline」と命名します。
「AUTOHOTSPOT」を参照してください。
7. [データアクセス]をクリックし、メソッドリストを選択します。
この例では、メソッドリストを「MethodListOpenDoor」と命名します。
これで、STEP 7 は命令のほとんどのパラメータに正しいタグを自動的に供給します。
8. [ブロックパラメータ]をクリックし、タグを残りのパラメータに手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3317

通信
6.3 OPC UA

命令の呼び出し(初期呼び出し)
以下のプログラム「Call_OpenDoor_On_Productionine」の抜粋部分で、命令「OPC_UA_MethodGetHandleList」の使用方法を示しています。
完全なサンプルプログラムは、セクション「AUTOHOTSPOT」に記載されています。
このサンプルプログラムは、CASE 命令によって複数のセクション(Cases)に分割されています。
ここに、ケース 3 を記載します。
SCL
3:// case 3, get an handle for server method OpenDoor
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_MethodGetHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,ObjectNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".ObjectNodes,
MethodNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodNodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status,
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls);

非同期実行

命令「OPC_UA_MethodGetHandleList」は、ユーザープログラムとは非同期で動作し、複数のプログラムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

3318

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出しの説明(初期呼び出し)
上図は、ケース 3 を表しています。プログラムのこの部分で、OPC UA サーバーに「OpenDoor」メソッドを登録します。このために、「OPC_UA_MethodGetHandleList」メソ
ッドが呼び出されます。
命令がまだ実行されていない場合、#Busy は FALSE であるため、「#Req」タグは値 TRUE に設定されます。これによって命令が開始します。次のサイクルでは、#Req が FALSE になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3319

通信
6.3 OPC UA

命令の呼び出し(トラブルシューティング)
下図は、「Done」および「Error」パラメータの評価を示しています。
SCL
IF #Done = TRUE THEN
IF "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0] = 0 THEN//
one method#State := #State + 1;
ELSE
#State := 100;//In case 100, set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#'Error at MethodGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REG of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_MethodGetHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,ObjectNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".ObjectNodes,
MethodNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodNodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls);
END_IF;

命令の呼び出しの説明(トラブルシューティング)
エラーが発生すると、「Error」出力パラメータに値 TRUE が設定されます。これにより、「#State」が値 100 に設定されます。このケースは、トラブルシューティング用に予約されています。
出力パラメータ「Done」が TRUE の場合、命令は正常に実行されています。

3320

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
命令が正常に実行された(「Error」パラメータが設定されず、「Done」パラメータが設定される)にもかかわらず、メソッドのハンドルが返されていない場合もあります。
このため、この例では「OpenDoor」のハンドルが返されたかどうかを判定するためのチ
ェックが行われています。
• 条件を満たす場合、「#State」タグの値が 1 増加します。これは、次のプログラムセク
ション(ケース 4、メソッドの呼び出し)が次のサイクルで実行されることを意味します。
ケース 4 については、OPC_UA_MethodCall:メソッドの呼び出し (ページ 3321)で説明されています。
• 条件を満たさない場合はエラーとみなされ、#State の値が 100 になります。エラーケ
ースは次のサイクルまで継続します。
注記
アプリケーション内において OPC_UA_MethodGetHandleList に複数のメソッドを登録する
場合は、#Done = TRUE の場合のみ#State を 1 増加させ、ケース 4 で「OPC_UA_MethodCall」によって個々のメソッドを呼び出す前に、指定したメソッドに対して有効なハンドルが返されたかどうかのみをチックすると便利です。

OPC_UA_MethodCall:メソッドの呼び出し

有効性
以下の「OPC_UA_MethodCall」命令の説明は、ファームウェアバージョン V2.6 以降のS7-1500 CPU に適用されます。

説明
ユーザープログラム内で命令「OPC_UA_MethodCall」を使用して、サーバー上のメソッドを呼び出します。
下の図は、ユーザープログラムの構造を示しています。
「OPC_UA_MethodCall」命令がセ
クション②に配置されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3321

通信
6.3 OPC UA
23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B0HWKRG*HW+DQGOH/LVW

23&B8$B0HWKRG&DOO

23&B8$B0HWKRG5HOHDVH+DQGOH/LVW①

メソッド呼び出しの準備のための命令②

メソッド呼び出し③

メソッド呼び出し完了後の「クリーンアップ」に使用する命令「OPC_UA_MethodCall」のパラメータ
表 6-13

命令「OPC_UA_MethodCall」のパラメータ

パラメータ

領域での宣言 データタイプ 意味

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、命令の実
行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間。
このパラメータの説明について
は、AUTOHOTSPOT も参照してください。

MethodHdl

Input

DWORD

呼び出されるメソッドのハンド
ル。

InputArguments

InOut

VARIANT想定される入力パラメータに対応する PLC データタイプ(UDT)または STRUCT、名前、番号、順序、およびデータタイプのタ
グへのポインタ。

3322

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
パラメータ

領域での宣言 データタイプ 意味

OutputArguments

InOut

VARIANT想定される出力パラメータに対応する PLC データタイプ(UDT)または STRUCT、名前、番号、順序、およびデータタイプのタ
グへのポインタ。

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、
まだ完了していない、または
まだ開始していません。
• 1:命令の実行がエラーなしで完了しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されていま
す。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3323

通信
6.3 OPC UA
パラメータ

領域での宣言 データタイプ 意味

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

MethodResult

InOut

VARIANT

呼び出されたサーバーメソッドのエラーコード(結果)を含むタ
イプ DWORD のタグへのポイン
タ。
このエラーコードは、OPC UA
サーバーのユーザープログラム
によって提供されます。OPC UA
サーバーが S7-1500 CPU の場
合、クライアント命令「OPC_UA_MethodCall」で読み出せるのは、サーバー命令「OPC_UA_ServerMethodPost」の「UAMethod_Result」パラメータです。
命令「OPC_UA_MethodCall」
が実行されない場合(Error =true、Status <> 0)、
MethodResult には値が設定されません。

Status のエラー番号
Status パラメータは、命令の実行中に発生するエラーに関する情報を提供します。

3324

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
次の表では、エラーコードについて説明します。
エラーコード(16 進数値)

エラーの名前説明

0000_0000

OpcUa_Good

命令が正常に終了しました。

8003_0000

OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモリがありません。
OPC UA クライアントおよび OPC UA
サーバーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている
OPC UA クライアント数を減らす。
• サブスクリプション数を減らす。

8006_0000

OpcUa_BadEncodingError

出力引数のデーコード時のエラー。

8009_0000

OpcUa_BadUnknownResponse

サーバーが、予期される結果の数で応答しません。

800A_0000

OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅す
ぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout パ
ラメータの値を増加)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3325

通信
6.3 OPC UA
エラーコード(16 進数値)

エラーの名前説明

800D_0000

OpcUa_BadServerNotConnected

サーバーが接続されていないか、接続ハンドルが正しくない、または無効です。

800F_0000

OpcUa_BadNothingToDo

行う処理がありません:OPC UA サー
バーが、OPC UA クライアントから命令が格納されていない空のリスト
を受信しました。

8010_0000

OpcUa_BadTooManyOperations

1 つの接続につき同時に呼び出せる「OPC_UA_MethodCall」命令の数(5)を超えました。関連項目:
AUTOHOTSPOT

8034_0000

BadNodeIdUnknown

The node id refers to a node that
does not exist in the server address
space.
指定された NodeId のNamespaceIndex が存在しない可能性があります。命令「OPC_UA_MethodCall」呼び出し時にエラーコードが表示される場合:
その他の原因として、事前の
OPC_UA_MethodGetHandleList の呼び出しで無効な ObjectIDs が使用されていることが考えられます。命令「OPC_UA_MethodGetHandleList」
は ObjectIDs を評価しません。

8074_0000

OpcUa_BadTypeMismatch

引数の変数のタイプが正しくありま
せん。

8075_0000

OpcUa_BadMethodInvalid指定された MethodHdl に対してメ
ソッドが登録されていません。

8076_0000

BadArgumentsMissing

クライアントの入力引数で指定されていないものがあります。

80AB_0000

OpcUa_BadInvalidArgument

入力引数のタイプが正しくありませ
ん。

3326

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコード(16 進数値)

エラーの名前説明

B080_0100

Simatic_BadType_VariantInput1

命令の 1 番目の変数パラメータがポイントするパラメータ「MethodResult」のデータタイプが正しくありません。

B080_0200

Simatic_BadType_VariantInput2

命令の 2 番目の変数パラメータがポイントするパラメータ「InputArguments」のデータタイプ
が正しくありません。

B080_0300

Simatic_BadType_VariantInput3

命令の 3 番目の変数パラメータがポイントするパラメータ「OutputArguments」のデータタイ
プが正しくありません。

B080_1100

Simatic_ArrayElements_TooMany 一般エラーコード。配列のエレメン
ト数が多すぎる場合に発生します。

B080_C400

Simatic_ClientNotEnabled

OPC UA クライアントが無効化されています。

B080_C500

Simatic_NothingToDo

行う処理がありません:この命令は、エレメントが含まれていないリスト
を使用しています。

C080_C300

Simatic_OutOfResources

同時に使用可能なクライアント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのクライアント命令数を減らします。関連項目:
AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

要件
この説明では、以下のことを仮定しています。
「AUTOHOTSPOT」を参照。
• クライアントインターフェースが作成済みであること。
• OPC UA サーバーへの接続が作成済み、かつ構成済みであること。「AUTOHOTSPOT」を参照。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3327

通信
6.3 OPC UA
さらに、命令「OPC_UA_MethodCall」では、以下の要件も満たす必要があります(上図を参照)。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
この命令から接続ハンドルを取得します。AUTOHOTSPOT を参照してください。
• クライアントで呼び出すメソッドが格納されている名前空間のインデックス。
命令「OPC_UA_NamespaceGetIndexList」からインデックスを取得します。
ユーザープログラム内で呼び出すメソッドのハンドル。
この命令からハンドルを取得します。AUTOHOTSPOT を参照してください。

命令のファンクション
命令「OPC_UA_MethodCall」を使用して、OPC UA サーバー内で解放されているメソッドを呼び出します。

構成済み接続の使用方法
1. [プロジェクトツリー]エリアで、クライアントとして使用する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を実行するファンクションブロックを選択します。
この例では、ファンクションブロックを「Call_OpenDoor_On_Productionline」とします。
選択言語:SCL。
3. ドラッグ＆ドロップで、命令「OPC_UA_MethodCall」をフォルダ[命令|通信|OPC UA|OPC UA
クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「OPC_UA_MethodCall_Instance」と命名します。
5. 「OPC_UA_MethodCall_Instance」命令の[設定の開始]のアイコンをクリックします。
STEP 7 が、インスペクタウィンドウ内で[設定]タブを開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、クライアントインターフェースを「Productionline」とします。
7. [データアクセス]をクリックし、メソッドリストを選択します。
この例では、メソッドリストを「MethodListOpenDoor」と命名します。
STEP 7 は、命令の Busy、Done、Error 以外のパラメータにタグを自動的に供給します。
8. まだ供給されていないパラメータのローカルタグを作成します。
9. [ブロックパラメータ]をクリックし、ローカルタグを残りのパラメータに割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

3328

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出し(初期呼び出し)
以下のプログラム「Call_OpenDoor_On_Productionine」の抜粋部分で、命令「OPC_UA_MethodCall」の使用方法を示しています。
完全なサンプルプログラムは、セクション「AUTOHOTSPOT」に記載されています。
このサンプルプログラムは、CASE 命令によって複数のセクション(Cases)に分割されています。
ここに、ケース 4 を記載します。
SCL
4: // case 4, call method OpenDoor
IF #Init_Method_InputParameter = TRUE THEN
#Init_Method_InputParameter := FALSE;//for our server method at Productionline, we set input parameters to 1
"Productionline_Data".MethodListOpenDoor.Method.Inputs.Number := 1;
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_MethodCall_Instance(REQ := #Req,
ConnectionHdl:="Productionline_Configuration".Connection.ConnectionHdl,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdl :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls[0],Status => "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0],InputArguments := "Productionline_Data"."MethodListOpenDoor"."Method".Inputs,
OutputArguments := "Productionline_Data"."MethodListOpenDoor"."Method".Outputs,
MethodResult := "Productionline_Data"."MethodListOpenDoor".MethodResultList[0],Done => #Done,
Busy => #Busy,
Error => #Error);//"Productionline_Data"."MethodListOpenDoor".MethodResultList[0]] contains//the status/error codes of the server method//which was run on the connected CPU as user program//These codes are defined as follows:////
Good: 0x0000_0000 TO 0x3FFF_ FFFF//
Uncertain: 0x4000_0000 TO 0x7FFF_FFFF//
Bad: 0x8000_0000 TO 0xFFFF_FFFF

非同期実行

命令「OPC_UA_MethodCall」は、ユーザープログラムとは非同期で動作し、複数のプログ
ラムサイクルを必要とします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3329

通信
6.3 OPC UA「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明(初期呼び出し)
上図は、ケース 4 を表しています。プログラムのこの部分で、OPC UA サーバーのサーバ
ーメソッド「OpenDoor」を呼び出します。
「OPC_UA_MethodCall」命令は、このサーバーメソッドのハンドルおよび入力パラメータを受信します。
この例では、「Number」入力パラメータのみ使用しています。このサーバーメソッドが完全に実行されるように、このパラメータの値を 1 に設定します。

3330

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

命令の呼び出し(トラブルシューティング)
下図は、「Done」および「Error」パラメータの評価を示しています。
SCL
IF #Done = TRUE THEN
IF "Productionline_Data".MethodListOpenDoor.MethodResultList[0] < 16#8000_0000 THEN
#State := #State + 1;
ELSE//server method did not run successfully#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#' Error at server method';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := "Productionline_Data".MethodListOpenDoor.MethodStatusList[0];#OPC_UA_MethodCall_Instance(REQ := #Req,
ConnectionHdl:="Productionline_Configuration".Connection.ConnectionHdl,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdl :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls[0],Status => "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0],InputArguments := "Productionline_Data"."MethodListOpenDoor"."Method".Inputs,
OutputArguments := "Productionline_Data"."MethodListOpenDoor"."Method".Outputs,
MethodResult := "Productionline_Data"."MethodListOpenDoor".MethodResultList[0],Done => #Done,
Busy => #Busy,
Error => #Error);
END_IF;

命令の呼び出しの説明(トラブルシューティング)
出力パラメータ「Done」が TRUE の場合、「OPC_UA_MethodCall」命令は正常に実行されています。
OPC UA サーバー「Productionline」で呼び出されたメソッドが正常に実行されたかどうかもチェックします。パラメータ「MethodResult」に 16#8000_0000 未満の値が含まれていれば、正常に実行されています。
正常に実行されると、「"#State」タグの値が 1 増加します。これは、次のプログラムセク
ション(ケース 5)が次のサイクルで実行されることを意味します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3331

通信
6.3 OPC UA
ケース 5 については、OPC_UA_MethodReleaseHandleList:メソッド呼び出しのハンドルの解放 (ページ 3332)で説明されています。
エラーが発生すると、「OPC_UA_MethodCall」命令の「Error」出力パラメータの値が TRUEに設定されます。これにより、「#State」タグの値が 100 に設定されます。このケースは、
トラブルシューティング用に予約されています。

OPC_UA_MethodReleaseHandleList:メソッド呼び出しのハンドルの解放

有効性
以下の「OPC_UA_MethodReleaseHandleList」命令の説明は、ファームウェアバージョン
V2.6 以降の S7-1500 CPU に適用されます。

説明
プログラミング例を使用して、SCL プログラミング言語でこの命令を手動で使用する方法について説明します。
このセクションでは、OPC UA 通信用のクライアントインターフェースを作成および構成していると仮定します。「AUTOHOTSPOT」を参照してください。効率的なプロシージャにより、クライアント命令のほとんどのパラメータ対して値が自動的に供給されます。
ユーザープログラム内で命令「OPC_UA_MethodReleaseHandleList」を使用して、メソッドに対する数値参照(ハンドル)を解放します。
OPC_UA_MethodReleaseHandleList を使用して、メソッドハンドルを解放します。下図の③を参照してください。

23&B8$B'LVFRQQHFW

23&B8$B&RQQHFW
23&B8$B1DPHVSDFH*HW,QGH[/LVW
23&B8$B0HWKRG*HW+DQGOH/LVW

23&B8$B0HWKRG&DOO

23&B8$B0HWKRG5HOHDVH+DQGOH/LVW①

メソッド呼び出しの準備のための命令②

メソッド呼び出し③

メソッド呼び出し完了後の「クリーンアップ」に使用する命令

3332

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「OPC_UA_MethodReleaseHandleList」のパラメータ
表 6-14

命令「OPC_UA_MethodReleaseHandleList」のパラメータ

パラメータ

領域での宣言 データタイプ 意味

REQ

Input

BOOL

このパラメータで立ち上がりエッジ 0 → 1 になると、命令の実
行がトリガされます。

ConnectionHdl

Input

DWORD

確立された接続の固有の識別子。
命令 AUTOHOTSPOT からハンドルを取得します。

Timeout

Input

TIME

ミリ秒単位の命令実行の最大時間。
このパラメータの説明について
は、AUTOHOTSPOT も参照してください。

MethodHdlCount

Input

UINT

MethodHdls パラメータ内のエ
レメント数

MethodHdls

InOut

VARIANTタイプ DWORD の配列へのポインタ。
この配列には、解放される個々のメソッドのハンドル(NodeIds)が含まれます。

StatusList

InOut

VARIANTタイプ DWORD の配列へのポインタ。
この配列には、個々のメソッドに対するエラーコードが含まれています（下記の「NodeStatusList のエラー番号」を参照)。
各メソッドに対して、ハンドルが正常に解放されたかどうかが指定されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3333

通信
6.3 OPC UA
パラメータ

領域での宣言 データタイプ 意味

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、
まだ完了していない、または
まだ開始していません。
• 1:命令の実行がエラーなしで完了しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されていま
す。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラー番号」を参照してください。

3334

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

Status のエラー番号
次の表に、この命令のエラーコードの概要を示します。
エラーコー エラーの名前
ド(16 進数
値)

説明

0000_0000 OpcUa_Good

命令が正常に終了しました。

8003_0000 OpcUa_BadOutOfMemory

OPC UA クライアントが使用できるメモリがありません。
OPC UA クライアントおよび OPC UA サー
バーがメモリ領域を共有しているため、サーバーのメモリ要件を低減する必要があります。
以下のオプションがあります。
• 解放する OPC UA の PLC タグ数を減らす。
• 現在サーバーに接続されている OPC UA
クライアント数を減らす。
• サブスクリプション数を減らす。

800A_0000 OpcUa_BadTimeout

ネットワークタイムアウトが発生しました。
考えられる原因:• OPC UA サーバーへの接続が遅すぎます(容量不足)。
• ネットワーク負荷が高すぎます。
• OPC UA サーバーが使用できません。
可能な対策:• OPC UA サーバーの URL を確認してください。
• タイムアウト設定を増やしてください(ファンクションブロック
OPC_UA_Connect の Timeout パラメー
タの値を増加)。

800D_000

OpcUa_BadServerNotConnect

サーバーが接続されていないか、接続ハン0ed

ドルが正しくない、または無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3335

通信
6.3 OPC UA
エラーコー エラーの名前
ド(16 進数値)

説明

800F_0000 OpcUa_BadNothingToDo

行う処理がありません:OPC UA サーバー
が、OPC UA クライアントから命令が格納されていない空のリストを受信しました。

8010_0000 OpcUa_BadTooManyOperation 1 つの接続につき同時に呼び出せるs「OPC_UA_MethodReleaseHandleList」命
令の数(1)を超えました。関連項目:
AUTOHOTSPOT

B080_0100 Simatic_BadType_VariantInput パラメータ「MethodHdls」のデータタイ
1

プが正しくありません。

B080_0200 Simatic_BadType_VariantInput パラメータ「StatusList」のデータタイプ
2が正しくありません。

B080_1100 Simatic_ArrayElements_TooMa MethodHdlCount >ny

MAX_ELEMENTS_METHOD

B080_3100 BadNumElements_VariantInpu MethodHdlCount > 「MethodHdls」パラt1

メータの配列のエレメント数。

B080_3200 BadNumElements_VariantInpu MethodHdlCount > 「StatusList」パラメ
t2
B080_C400 Simatic_ClientNotEnabledータの配列のエレメント数。
OPC UA クライアントが無効化されています。

B080_C500 Simatic_NothingToDo

行う処理がありません:この命令は、エレメントが含まれていないリストを使用しています。

C080_C300 Simatic_OutOfResources

同時に使用可能なクライアント命令の最大数を超えました。
可能な対策:• 同時に実行されている同タイプのクライアント命令数を減らします。関連項
目: AUTOHOTSPOT

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

「StatusList」のエラー番号「StatusList」パラメータには、個々のハンドルに対するエラーコードが含まれています。

3336

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
次の表では、エラーコードについて説明します。
エラーコード(16 進数

エラーの名前説明

0000_0000

OpcUa_Good

エラーは発生していません。

8034_0000

OpcUa_BadNodeIdUnknown 転送されたメソッドハンドルが不明で値)す。
その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

要件
この説明では、以下のことを仮定しています。
「AUTOHOTSPOT」を参照。
• クライアントインターフェースが作成済みであること。
• OPC UA サーバーへの接続が作成済み、かつ構成済みであること。「AUTOHOTSPOT」を参照。
さらに、命令「OPC_UA_MethodReleaseHandleList」では、以下の要件も満たす必要があります(上図を参照)。
• OPC UA サーバーへの接続のハンドルが使用可能であること。
命令 AUTOHOTSPOT から接続ハンドルを取得します。
• ユーザープログラム内での呼び出しが不要となったメソッドハンドルのリスト。
命令 AUTOHOTSPOT からこのハンドルリストを取得します。
• オプション(ここでは不要):メソッドを含む名前空間のインデックス。
命令 AUTOHOTSPOT からインデックスを取得します。

命令のファンクション
命令「OPC_UA_MethodReleaseHandleList」を呼び出して、プログラム内で不要になったメソッドのハンドルを解放します。

構成済み接続の使用方法
1. [プロジェクトツリー]エリアで、クライアントとして使用する CPU を選択します。
2. 「Program blocks」フォルダ内で、クライアント命令を実行するファンクションブロックを選択します。
この例では、ファンクションブロックを「Call_OpenDoor_On_Productionline」とします。
選択言語:SCL。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3337

通信
6.3 OPC UA
3. ドラッグ＆ドロップで、命令「OPC_UA_MethodReleaseHandleList」をフォルダ[命令|通信|
OPC UA|OPC UA クライアント]からエディタに移動します。
4. マルチインスタンスとしての呼び出しを選択します。
STEP 7 がこの命令のインスタンスを作成し、「OPC_UA_MethodReleaseHandleList_Instance」と命名します。
5. [OPC_UA_MethodReleaseHandleList_Instance]クリックします。
STEP 7 が[設定]を開きます。
6. [OPC UA インターフェースのクライアントインターフェースを選択]で、この命令で使用するクライアントインターフェースを選択します。
この例では、作成されたクライアントインターフェースを「Productionline」と命名します。
「AUTOHOTSPOT」を参照してください。
7. [データアクセス]をクリックし、メソッドリストを選択します。
この例では、メソッドリストを「MethodListOpenDoor」と命名します。
STEP 7 は、命令の Busy、Done、Error 以外のパラメータにタグを自動的に供給します。
8. まだ供給されていないパラメータのローカルタグを作成します。
9. [ブロックパラメータ]をクリックし、タグを残りのパラメータに手動で割り当てます。
STEP 7 が、選択済みのタグをファンクション呼び出しに追加します。

命令の呼び出し(初期呼び出し)
以下のプログラム「Call_OpenDoor_On_Productionine」の抜粋部分で、命令「OPC_UA_MethodReleaseHandleList」の使用方法を示しています。
完全なサンプルプログラムは、セクション「AUTOHOTSPOT」に記載されています。
このサンプルプログラムは、CASE 命令によって複数のセクション(Cases)に分割されてい
ます。

3338

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ここに、ケース 5 を記載します。
SCL
5:// case 5, release method handle
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_MethodReleaseHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdlCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls,
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

非同期実行

命令「OPC_UA_MethodReleaseHandleList」は、ユーザープログラムとは非同期で動作し、複数のプログラムサイクルを必要とします。
「Busy」、「Done」、「Error」、および「Status」パラメータを使用してジョブのステータスを確認できます。
非同期プログラム実行については、セクション「同期命令と非同期命令の相違 (ページ 29)」を参照してください。

命令の呼び出しの説明(初期呼び出し)
上図は、ケース 5 を表しています。プログラムのこの部分で、サーバーメソッドのハンド
ルを再度解放します。
この例では、「OpenDoor」サーバーメソッドのハンドルが「MethodHdls」パラメータに渡されます。
このハンドルが解放できない場合、「StatusList」パラメータにエラーコードが含まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3339

通信
6.3 OPC UA

命令の呼び出し(トラブルシューティング)
下図は、「Done」および「Error」パラメータの評価を示しています。
SCL
IF #Done = TRUE THEN
#Mem_Status := #Status;
IF "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0] = 0 THEN
#State := #State + 1;
ELSE
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;
Mem_Status := #Status;#Output_Error_Message := WString#'Error at MethodGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REG of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_MethodReleaseHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdlCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls,
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList);
END_IF;

命令の呼び出しの説明(トラブルシューティング)
エラーが発生すると、「OPC_UA_MethodReleaseHandleList」命令の「Error」出力パラメー
タの値が TRUE に設定されます。これにより、「#State」タグの値が 100 に設定されます。
このケースは、トラブルシューティング用に予約されています。このサンプルプログラム
は、REQ パラメータを FALSE に設定するために命令「OPC_UA_MethodReleaseHandleList」も呼び出します。
出力パラメータ「Done」が TRUE の場合、「OPC_UA_MethodReleaseHandleList」命令は正常に実行されています。
この例では、「OpenDoor」サーバーメソッドのハンドルが解放されたかどうかを判定するためのチェックも行われています。
正常に実行されると、「"#State」タグの値が 1 増加します。これは、次のプログラムセク
ション(ケース 6)が次のサイクルで実行されることを意味します。

3340

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ケース 6 については、OPC_UA_Disconnect:接続の終了 (ページ 3294)で説明されています。
注記
ケース 6 では、OPC UA サーバーへの接続の有効化が行われます。また、サーバー内でクライアントプログラムが占有しているその他のリソースがすべて解放されます。サーバーへの接続を終了する場合は、ユーザープログラムでケース 5 をスキップして、直ちにケース
6 を実行できます。

6.3.1.7

OPC UA クライアント命令のシステムデータタイプ

OPC_UA_SessionConnectInfo
OPC_UA_SessionConnectInfo
以下の表に、「OPC_UA_Connect」命令の「SessionConnectInfo」パラメータに対する接続
情報の意味を示します。
表 6-15

システムデータタイプ「OPC_UA_SessionConnectInfo」のパラメータ

パラメータ

S7 データタ 意味
イプ

SessionName

WSTRING[64 セッション名。ここで入力が可能です。このパラメータ]は空にすることができます。
名前を入力しない場合は、OPC UA サーバーが名前を付けます。
たとえば、診断時にセッション名を使用して接続を識別します。

ApplicationNam WSTRING[64 OPC UA クライアントの名前。アプリケーション名はクe]

ライアントデスクリプションのコンポーネントであり、クライアントデスクリプションはセッションのコンポーネントです(SessionName を参照)。各セッションに対して固有の ApplicationName は設定できません。STRING
は空にする必要があります。空でない場合、エラーコー
ド「Simatic_BadValue_VariantInput2 (0xB080_2200)」が返されます。設定済みのアプリケーション名が、SIMATIC (OPC UA エリアの CPU パラメータ)のApplicationName として使用されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3341

通信
6.3 OPC UA
パラメータ

S7 データタ 意味
イプ

SecurityMsgMo

UDINT

de

セキュリティプロセス
• 0 = 最良のプロセス。ご注意:この設定はできません!
• 1 = None
• 2 = Sign
• 3 = Sign&Encrypt

SecurityPolicy

UDINT

Security プロファイル• 0 = 最良のセキュリティプロファイル。ご注意:この設定はできません!
• 1 = セキュリティプロファイルなし• 2 = Basic128Rsa15• 3 = Basic256• 4 = Basic256Sha256

ServerUri

STRING[254] ゲートウェイサーバー経由での OPC UA サーバーとの接続時のみ。
ファームウェアバージョンが V2.6 以前の CPU は、ゲー
トウェイサーバーをサポートしていません。このため、
このパラメータには空の文字列が渡されます。

CheckServerCer BOOL

このビットがセットされている場合、クライアントはサ

tificate

ーバーによって送信された証明書を、設定済みの信頼できる証明書と照らし合わせてチェックします。[クライアント CPU|保護およびセキュリティ|証明書マネージャ]のプロパティから、信頼証明書のリストにアクセスできます。ここに表示される[パートナーデバイスの証明書]
テーブルに入力する必要があります。
入力を行う前に、グローバル証明書マネージャ([プロジェクトツリー|証明書マネージャ|信頼証明書およびルート証明書認証局]タブ)から必要な証明書がインポートされている必要があります。
このビットがセットされていない場合、クライアントはサーバー証明書をチェックしません。

TransportProfile

UDINT

1 = UATP_UATcp
PLCopen 指定に従い、この転送プロファイルのみがサポートされます。

UserIdentityTokenType

3342

UDINT

ユーザー認証データについては、この表の下に記載されている説明を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
パラメータ

S7 データタ 意味
イプ

UserTokenPara

WSTRING[64 UserIdentityTokenType によって意味が異なります(たとm1]

UserTokenPara

WSTRING[64 UserIdentityTokenType によって意味が異なります(たとm2]

えばパスワード)。

CertificateID

UDINT

OPC UA クライアント用に使用する証明書の ID。

えばユーザー名)。

この ID は STEP 7 (TIA ポータル)の[グローバルセキュリ
ティ設定|証明書マネージャ|デバイス証明書]、および
CPU プロパティ([保護およびセキュリティ|証明書マネージャ]エリア)に表示されています。ここには、証明書のID が記載された[デバイス証明書]テーブルが表示されます。
クライアント用の証明書を生成するには、以下のように実行します。
1. TIA ポータルで、クライアントとして使用する CPUのプロパティを選択します。
2. 自己署名証明書で十分な場合は、このステップは飛ばします。CA によって署名された証明書を使用する
場合は、[セキュリティ|証明書マネージャ|グローバ
ルセキュリティ設定]の[証明書マネージャのグローバ
ルセキュリティ設定の使用]オプションを選択します。
3. [デバイス証明書]テーブルに移動し、[証明書ホルダ
ー]列の空のフィールドをダブルクリックします。
その行の左端に証明書アイコンが表示されます。
4. [証明書ホルダー]フィールドを再度クリックします。
既存のデバイス証明書を含んだドロップダウンリス
トが開きます。
5. [追加]ボタンをクリックします。
証明書の設定オプションを含んだダイアログが表示されます。
6. [OPC UA クライアント]または[OPC UA クライアント& サーバー]を選択して、[OK]をクリックします。
SessionTimeout

TIME

OPC UA サーバーへの接続が中断後にセッションが維持される最大時間(ミリ秒単位)。
初期設定:20000 (20 秒)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3343

通信
6.3 OPC UA
パラメータ

S7 データタ 意味
イプ

MonitorConnect TIME

接続モニタ時間(ミリ秒単位)

ion

接続を使用してデータが現在転送されていないことを確認する時間間隔。
初期設定:5000 (5 秒)

LocaleIDs

ARRAY[1..5]

RFC 3066 に従うオプションの言語と地域の識別子。

of STRING[6] 0 = LocaleID が存在しないか不明です。

3344

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「UserIdentityTokenType」パラメータ
次の表に、システムデータタイプ「UASessionConnectInfo」の「UserIdentityTokenType」、「UserTokenParam1」、および「UserTokenParam2」パラメータの関係を示します。
UserIdentityTokenT
ype

UserTokenParam1

UserTokenParam2

説明

0:匿名アクセス

無視されます無視されますゲストアカウント、
認証なし

1:ユーザー名および ユーザー名

パスワード

パスワードは、対応

パスワードを使用しするグローバルデー

たアクセス

タブロックまたはインスタンスデータブ
ロック内にプレーン
テキストで保存されており、読み取ることが可能です。
推奨事項:代わりに
SIMATIC User タイプ
を使用してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3345

通信
6.3 OPC UA
UserIdentityTokenT
ype

UserTokenParam1

UserTokenParam2

42:SIMATIC User

STEP 7 で設定された 無視されます

SIMATIC User の場

ユーザー名。

合、パスワードを他

説明のユーザーデータや構成データとともにクライアント CPU に
ダウンロードします。
これにより、外部からのアクセスからパスワードを保護します。プロジェクトツ
リー内([セキュリテ
ィ設定|ユーザーおよびロール])で、ファンクション権限「OPC UA クライアン
トのユーザー認証」
をユーザー(SIMATIC
User)に割り当て済み
であることが必要です。
OPC UA クライアン
トインターフェース
内でのユーザー認証の設定時、オプショ
ン[ユーザー(TIA ポー
タル – セキュリティ設定)]を選択し、設定済みのユーザー名を入力します。

下記も参照
OPC_UA_Connect:接続の作成 (ページ 3181)

3346

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

OPC_UA_NodeAdditionalInfo
OPC_UA_NodeAdditionalInfo「OPC_UA_ReadList」および「OPC_UA_WriteList」命令の「NodeAddInfos」パラメータに対して、ノードの属性タイプおよびインデックス範囲を指定します。
• このデータタイプは、スカラー地および 1 次元配列に使用されます。
多次元配列(最大 6 次元、マトリックス)のセクションを読み取るには、「OPC_UA_NodeAdditionalInfoExt」データタイプを使用します。
AUTOHOTSPOT に関する情報をお読みください。
• StartIndex は「0」値以上、かつ EndIndex の値以下であることが必要です。
• スカラーおよび配列で構成される読み取りリストの完全読み取りのための設定:
StartIndex および EndIndex の両方の値が 4_294_967_295 (UDINT_MAX)である場合、サーバーは StartIndex および EndIndex の値を無視し、スカラーおよび配列を完全に読み取ります。OPC_UA_ReadList での配列範囲情報の読み取り (ページ 3257)を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3347

通信
6.3 OPC UA
表 6-16

システムデータタイプ「OPC_UA_NodeAdditionalInfo」のパラメータ

パラメータ

データタイ 意味プ

AttributeId

UDINT

ノード(タグ)のどの属性を読み取るかを指定します。
属性の ID は、OPC UA ENUM タイプ「UAAttributeId」で定義されます。
例:• 5:Description (説明)• 13: Value (値)• 14:DataType (データタイプ)• 15: ValueRank (Value 属性内の次元数)• 16: ArrayDimensions (配列の長さ、エレメント数)
デフォルトは 13 (Value)です。

StartIndex

UDINT

AttributeId = 13 の場合:配列の開始インデックス。このインデックスから値が読み取られます。

EndIndex

UDINT

AttributeId = 13 の場合:配列の終了インデックス。このインデックスまで値が読み取られます。

下記も参照(ページ 3348)

3348

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

OPC_UA_BrowsePath
OPC_UA_BrowsePath
以下のシステムデータタイプ「OPC_UA_BrowsePath」の構造体についての表を参照してください。
表 6-17

システムデータタイプ「OPC_UA_BrowsePath」のパラメータ

名前

データタイプ意味StartingNode

OPC_UA_NodeId

パスが開始するノード(またはタグ)の NodeId。
このノード以降が参照されます。

RelativePath

OPC_UA_RelativePath

参照の相対パス。
AUTOHOTSPOT を参照してくだ
さい。

OPC_UA_RelativePath
OPC_UA_RelativePath
以下のシステムデータタイプ「OPC_UA_RelativePath」の構造体についての表を参照してください。
表 6-18

システムデータタイプ「OPC_UA_RelativePath」のパラメータ

名前

データタイプ意味

NoOfElements

UINT

Elements 内のエレメント数

Elements

Array [4] of

最大 4 つのタイ

OPC_UA_RelativePathElement

プ
OPC_UA_RelativePathElement(ページ 3350)のエレメントを含む配列

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3349

通信
6.3 OPC UA

OPC_UA_RelativePathElement
OPC_UA_RelativePathElement
以下のシステムデータタイプ「OPC_UA_RelativePathElement」の構造体についての表を参照してください。
表 6-19

システムデータタイプ「OPC_UA_RelativePathElement」のパラメータ

名前

データタイプ意味

ReferenceTypeId

OPC_UA_NodeId

この RelativePathElement で辿られる参照タイプ
階層参照用にデフォルトではReferenceTypeId が設定されます。

IsInverse

BOOL

TRUE の場合、逆方向に辿られます。
デフォルトは FALSE です。

IncludeSubtypes

BOOL

TRUE の場合、ReferenceTypeId で指定されるタイプから派生する参照タイプも辿られます。
デフォルトは TRUE です。

TargetName

OPC_UA_QualifiedName

システムデータタイプ AUTOHOTSPOT
を参照

3350

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

6.3.1.8

エラーコードシーメンスエラーコード

OPC UA 命令の SIMATIC ステータスコード
以下の表に、OPC UA クライアント命令のシーメンスエラーコードを記載します。
ステータスコード意味

B080_0100

BadType_VariantInput1:
命令の 1 番目の変数パラメータがポイントしているタグのデータタイプが正しくありません。
例:
命令「OPC_UA_Connect」の場合、パラメータ「ServerEndpointUrl」が 1 番目の変数パラメータです。
VariantInput1 から VariantInput5 の順序は、各 OPC UA 命
令のマニュアルに記載されている変数パラメータの順序に対応します。
1 番目の変数パラメータが、データタイプが正しくないタ
グをポイントしている場合、ステータスコード"B080_0100
が返されます。
正しいデータタイプは、各命令の「パラメータ」の表に記載されています。
この例では、命令「OPC_UA_Connect:接続の作成 (ページ 3181)」に関するセクション内の『「OPC_UA_Connect」のパラメータ』の表にデータタイプが記載されています。

B080_0200

BadType_VariantInput2.
命令の 2 番目の変数パラメータがポイントしているタグのデータタイプが正しくありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3351

通信
6.3 OPC UA
ステータスコード意味

B080_0300

BadType_VariantInput3:
命令の 3 番目の変数パラメータがポイントしているタグのデータタイプが正しくありません。

B080_0400

BadType_VariantInput4:
命令の 4 番目の変数パラメータがポイントしているタグのデータタイプが正しくありません。

B080_0500

BadType_VariantInput5:
命令の 5 番目の変数パラメータがポイントしているタグのデータタイプが正しくありません。

B080_3100

BadNumElements_VariantInput1:
変数 1 内の配列のエレメント数が、命令のカウントパラメ
ータ内に格納されている数を下回っています(OPC_UA_NodeGetHandleList の NodeIDCount、またはOPC_UA_NamespaceGetIndexList のNamespaceUrisCount など)。

B080_3200

BadNumElements_VariantInput2:
変数 2 内のエレメント数が、命令のカウントパラメータ内に格納されている数を下回っています。

B080_3300

BadNumElements_VariantInput3:
変数 3 内のエレメント数が、命令のカウントパラメータ内に格納されている数を下回っています。

B080_3400

BadNumElements_VariantInput4:
変数 4 内のエレメント数が、命令のカウントパラメータ内に格納されている数を下回っています。

B080_3500

BadNumElements_VariantInput5:
変数 5 内のエレメント数が、命令のカウントパラメータ内に格納されている数を下回っています。

B080_C400

Simatic_ClientNotEnabled:
OPC UA クライアントが無効化されています。

B080_C500

SimaticNothingToDo:
クライアントの初期化中にエラーが発生しました。

B080_C600

ClientNotAvailable
クライアントの初期化中にエラーが発生しました。

3352

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータスコード意味

B080_0B00

ArrayElements_TooMany:
配列のエレメント数が多すぎます。

B080_1100

ArrayElements_TooMany:
一般エラーコード。配列のエレメント数が多すぎる場合に発生します。
NamespaceUrisCount > MAX_ELEMENTS_NAMESPACES
NodeIDCount > MAX_ELEMENTS_NODELISTBrowsePathscount > MAX_ELEMENTS_RELATIVEPATH
MethodHdlCount > MAX_ELEMENTS_METHODLISTMAX_ELEMENTS_NAMESPACES= 20
MAX_ELEMENTS_NODELIST= 300
MAX_ELEMENTS_METHODLIST= 100
MAX_ELEMENTS_BROWSEPATH= 10

B080_1200

ArrayElements_TooFew

B080_2100

BadValue_VariantInput1:
命令の 1 番目の変数がポイントしているタグの値が正しくありません。

B080_2200

BadValue_VariantInput2:
命令の 2 番目の変数がポイントしているタグの値が正しくありません。

B080_2300

BadValue_VariantInput3:
命令の 3 番目の変数がポイントしているタグの値が正しくありません。

B080_2400

BadValue_VariantInput4:
命令の 4 番目の変数がポイントしているタグの値が正しくありません。

B080_2500

BadValue_VariantInput5:
命令の 5 番目の変数がポイントしているタグの値が正しくありません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3353

通信
6.3 OPC UA
ステータスコード意味

B080_B000

TooManyMethods:
サーバーメソッドの最大数、またはサーバーメソッドイン
スタンスの最大数を超えています。
(命令 OPC_UA_ServerMethodPre、
OPC_UA_ServerMethodPost の呼び出し):
S7-1510～S7-1513 の場合:最大 20
S7-1515、S7-1516 の場合:最大 50
S7-1517、S7-1518、S7-1507S の場合:最大 100

C080_C300

InsufficientResources:
不十分なリソース。(a)メモリ割り当てエラー、または SFB
インスタンス過多

OPC Foundation のエラーコード
エラーコード以下の表に、OPC Foundation のエラーコードを記載します。
エラーの名前および説明は原文(英語)で表記されています。エラーによっては、追加情報が記載されています。

エラーコードステータス "Good" (0000_0000 - 3FFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

0000_000

Success, no error.

Good

0
002D_000GoodSubscriptionTransfe The subscription was transferred to another session.

0

rred

002E_000

GoodCompletesAsynchro The processing will complete asynchronously.

0

nously002F_000

GoodOverload

Sampling has slowed down due to resource limitations.

0

3354

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Good" (0000_0000 - 3FFF_FFFF)
エラーコー 名前
ド(16 進数)

意味0030_000

GoodClamped

The value written was accepted but was clamped.

GoodLocalOverride

The value has been overridden.

GoodEntryInserted

The data or event was successfully inserted into the historical

00096_000000A2_000000A3_000

database.
GoodEntryReplaced

database.

000A5_000

The data or event field was successfully replaced in the historical

GoodNoData

No data exists for the requested time range or event filter.

GoodMoreData

The data or event field was successfully replaced in the historical

000A6_000

database.

000A7_000

GoodCommunicationEve The communication layer has raised an event.

0nt

00A8_000GoodShutdownEvent

The system is shutting down.

GoodCallAgain

The operation is not finished and needs to be called again.

000A9_000000AA_000

GoodNonCriticalTimeout A non-critical timeout occurred.

000BA_000

GoodResultsMayBeIncom The server should have followed a reference to a node in a remote

0

plete

server but did not. The result set may be incomplete.

00D9_000

GoodDataIgnored

The request pecifies fields which are not valid for the EventType orcannot be saved by the historian.

000DC_000

GoodEdited

The value does not come from the real source and has been edited0by the server.

00DD_000 GoodPostActionFailed

There was an error in execution of these post-actions.

000E0_000

GoodDependentValueCh A dependent value has been changed but the change has not been

0

anged

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

applied to the device.

3355

通信
6.3 OPC UA

ステータス "Uncertain" (4000_0000 - 7FFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

406C_000

UncertainReferenceOutO One of the references to follow in the relative path references to a

0

fServer

408F_000

UncertainNoCommunica Communication to the data source has failed. The variable value is0tionLastUsableValue

4090_000

UncertainLastUsableValu Whatever was updating this value has stopped doing so.

0e4091_000

UncertainSubstituteValu0e4092_000

UncertainInitialValue

node in the address space in another server.
the last value that had a good quality.

The value is an operational value that was manually overwritten.
The value is an initial value for a variable that normally receives its
value from another variable.

04093_000

UncertainSensorNotAccu The value is at one of the sensor limits.

0

rate

4094_000

UncertainEngineeringUni The value is outside of the range of values defined for this0

tsExceededparameter.

4095_000

UncertainSubNormal

The value is derived from multiple sources and has less than therequired number of Good sources.

0
40A4_000

UncertainDataSubNorma The value is derived from multiple values and has less than the0l

40BC_000

UncertainReferenceNotD The server was not able to delete all target references.

0

eleted40C0_000

UncertainNotAllNodesAv The list of references may not be complete because the underlying

0

ailable40DE_000

UncertainDominantValue The related EngineeringUnit has been changed but the Variable0

Changed40E2_000

UncertainDependentValu A dependent value has been changed but the change has not been

0eChangedrequired number of Good values.

system is not available.
Value is still provided based on the previous unit.
applied to the device. The quality of the dominant variable isuncertain.

3356

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

8001_000

BadUnexpectedError

An unexpected error occurred

BadInternalError

An internal error occurred as a result of a programming or0
8002_000

configuration error.

0

考えられる原因:
データタイプが DTL のタグのシングルエレメントに書き込みアクセスしています。データタイプが DTL のタグへの書き込みアクセ
スは、完全な構造体にのみ可能です。
8003_000

BadOutOfMemory0

Not enough memory to complete the operation.
考えられる原因:
OPC UA サーバーの最大数量構造を超えています。
対策:
登録されている OPC UA エレメント数を減らす。
非アクティブなセッションおよびサブスクリプションがないか確認するために、OPC UA サーバー診断ツール(Unified Automation のUaExpert など)を使用してください。対策として、クライアントで対応するタイムアウトを選択できます(サブスクリプションタイム
アウト <= セッションタイムアウト)。
エラーメッセージ OPC_UA_Connect:接続の作成 (ページ 3181)の説
明も参照してください。

8004_000

BadResourceUnavailable

An operating system resource is not available

BadCommunicationError

A low level communication error occurred.

08005_0000考えられる原因:
サーバーアドレス(ServerEndpointURL)が正しくないか、不完全です。
このパラメータの説明については、OPC_UA_Connect:接続の作成(ページ 3181)も参照してください。

8006_000

BadEncodingError

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

Encoding halted because of invalid data in the objects being
serialized.

3357

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

8007_000

BadDecodingError

Decoding halted because of invalid data in the stream.

8008_000

BadEncodingLimits‐

The message encoding/decoding limits imposed by the stack have0

Exceeded

been exceeded.

8009_000

BadUnknownResponse

An unrecognized response was received from the server.

BadRequestTooLarge

The request message size exceeds limits set by the server.

BadResponseTooLarge

The response message size exceeds limits set by the client.

BadTimeout

The operation timed out.

00
80B8_0000
80B9_0000
800A_0000

OPC_UA_Connect:接続の作成 (ページ 3181)のエラーメッセージも参照してください。

800B_000

BadServiceUnsupported

The server does not support the requested service.

BadShutdown

The operation was cancelled because the application is shutting

0
800C_0000800D_000

down.
BadServerNotConnectedconnected to the server.

0
800E_000

The operation could not complete because the client is not

BadServerHalted

The server has stopped and cannot process any requests.

BadNothingToDo

There was nothing to do because the client passed a list of0
800F_000

operations with no elements.

08010_000

BadTooManyOperations

The request could not be processed because it specified too many
operations.

0

OPC_UA_NamespaceGetIndexList:名前空間インデックスの読み取
り (ページ 3195)のエラーメッセージも参照してください。
8011_000

BadDataTypeIdUnknown

id is not recognized.

08012_000

The extension object cannot be (de)serialized because the data type

BadCertificateInvalid

The certificate provided as a parameter is not valid.

0

3358

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

8013_000

An error occurred verifying security. The certificate provided as a

BadSecurityChecksFailed

parameter is not valid.

08014_000

BadCertificateTimeInvalid The Certificate has expired or is not yet valid.

0
An Issuer Certificate has expired or is not yet valid.

8015_000

BadCertificateIssuer

0

TimeInvalid

8016_000

BadCertificateHost

The HostName used to connect to a Server does not match a0

NameInvalid

HostName in the Certificate.

8017_000

BadCertificateUriInvalid

The URI specified in the Application Description does not match the
URI in the Certificate.

08018_000

BadCertificateUseNotAllo The Certificate may not be used for the requested operation.

0

wed

8019_000

BadCertificateIssuerUse

0

NotAllowed

801A_000

BadCertificateUntrusted

The Issuer Certificate may not be used for the requested operation.
The Certificate is not trusted.

0
801B_000

BadCertificateRevocation It was not possible to determine if the Certificate has been revoked.

0

Unknown

801C_000

BadCertificateIssuer

It was not possible to determine if the Issuer

0

RevocationUnknown

Certificate has been revoked.

801D_000

BadCertificateRevoked

The Certificate has been revoked.

801E_000

BadCertificateIssuerRevo

The Issuer Certificate has been revoked.

0ked

801F_000

BadUserAccessDenied

User does not have permission to perform the requested operation.

BadIdentityTokenInvalid

The user identity token is not valid.

8021_000

BadIdentityTokenRejecte

The user identity token is valid but the server has rejected it.

0d8022_000

BadSecureChannelIdInval The specified secure channel is no longer valid.

0

id

0

0
8020_000
0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3359

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味8023_000

BadInvalidTimestamp

The timestamp is outside the range allowed by the server.

BadNonceInvalid

The nonce does appear to be not a random value or it is not the08024_000

correct length.

08025_000

BadSessionIdInvalid

The session id is not valid.

BadSessionClosed

The session was closed by the client.

BadSessionNotActivated

The session cannot be used because ActivateSession has not been08026_00008027_00008028_000

called.
BadSubscriptionIdInvalid

The subscription id is not valid.

802A_000

BadRequestHeaderInvali

The header for the request is missing or invalid.

0d802B_000

BadTimestampsTo

0

ReturnInvalid

802C_000

BadRequestCancelled

0

ByClient

8031_000

BadNoCommunication0

Communication with the data source is defined, but not

BadWaitingForInitialData Waiting for the server to obtain values from the underlying data

08033_000

The request was cancelled by the client.

established, and there is no last known value available.

08032_000

The timestamps to return parameter is invalid.

source.
BadNodeIdInvalid

The syntax of the node id is not valid.

0

3360

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

8034_000

The node id refers to a node that does not exist in the server address

BadNodeIdUnknown

0

space.
指定された NodeId の NamespaceIndex が存在しない可能性があります。命令「OPC_UA_MethodCall」呼び出し時にエラーコードが表示される場合:
その他の原因として、事前の OPC_UA_MethodGetHandleList の呼び出しで無効な ObjectIDs が使用されていることが考えられます。
命令「OPC_UA_MethodGetHandleList」は ObjectIds を評価しません。

8035_000

BadAttributeIdInvalid

The attribute is not supported for the specified Node.

BadIndexRangeInvalid

The syntax of the index range parameter is invalid.

BadIndexRangeNoData

No data exists within the range of indexes specified.

BadDataEncodingInvalid

The data encoding is invalid.

8039_000

BadDataEncoding

The server does not support the requested data encoding for the0

Unsupported

node.

803A_000

BadNotReadable

The access level does not allow reading or subscribing to the Node.

BadNotWritable

The access level does not allow writing to the Node.

BadOutOfRange

The value was out of range.

08036_00008037_00008038_00000803B_0000803C_0000配列に対して可能な対策:未定義の配列のエレメントにアクセスできるかどうかをチェックします。

803D_000

BadNotSupported

0

The requested operation is not supported.
考えられる原因:
サーバーアドレス(ServerEndpointURL)が正しくないか、不完全です。

803E_000

BadNotFound

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

A requested item was not found or a search operation ended
without success.

3361

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

803F_000

BadObjectDeleted

The object cannot be used because it has been deleted.

BadNotImplemented

Requested operation is not implemented.

08040_00008041_000

BadMonitoringModeInval The monitoring mode is invalid.

0

id8042_000

BadMonitoredItemIdInval The monitoring item id does not refer to a valid monitored item.

0

id8043_000

BadMonitoredItem

0

FilterInvalid

8044_000

BadMonitoredItem

0

FilterUnsupported

8045_000

BadFilterNotAllowed

The server does not support the requested monitored item filter.
A monitoring filter cannot be used in combination with the attribute
specified.

08046_000

The monitored item filter parameter is not valid.

BadStructureMissing

A mandatory structured parameter was missing or null.

BadEventFilterInvalid

The event filter is not valid.

BadContentFilterInvalid

The content filter is not valid.

BadFilterOperandInvalid

The operand used in a content filter is not valid.

804A_000

BadContinuation

The continuation point provide is longer valid.

0

PointInvalid

804B_000

BadNoContinuationPoint The operation could not be processed because all continuation

0s

804C_000

BadReferenceTypeIdInval The operation could not be processed because all continuation0

id

804D_000

BadBrowseDirectionInvali The browse direction is not valid.

0d804E_000

BadNodeNotInView

08047_00008048_00008049_0000points have been allocated.
points have been allocated.

The node is not part of the view.

0

3362

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

804F_000

BadServerUriInvalid

The ServerUri is not a valid URI.

BadServerNameMissing

No ServerName was specified

BadDiscoveryUrlMissing

No DiscoveryUrl was specified.

08050_00008051_00008052_000

BadSempahoreFileMissin The semaphore file specified by the client is not valid.

0g8053_000

BadRequestTypeInvalid

The security token request type is not valid.

8054_000

BadSecurityModeRejecte

The security mode does not meet the requirements set by the0dServer.

0

サーバーが、より強度の高いセキュリティ要件を設定しています。
可能な対策:サーバーへの接続に対してより強度の高いセキュリティ
設定を使用します。
8055_000

BadSecurityPolicyRejecte

The security policy does not meet the requirements set by the0dServer.

8056_000

BadTooManySessions

The server has reached its maximum number of sessions.

BadUserSignatureInvalid

The user token signature is missing or invalid.

8058_000

BadApplicationSignature

The signature generated with the client certificate is missing or0Invalidinvalid.

8059_000

BadNoValidCertificates

The client did not provide at least one software certificate that is08057_0000valid and meets the profile requirements for the server.

0805A_000

BadRequestCancelled

0

ByRequest

805B_000

BadParentNodeIdInvalid

The request was cancelled by the client with the Cancel service.
The parent node id does not to refer to a valid node.

0805C_000

BadReferenceNotAllowed The reference could not be created because it violates constraints

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

imposed by the data model.

3363

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

805D_000

The requested node id was reject because it was either invalid or

BadNodeIdRejectedserver does not allow node ids to be specified by the client.

0805E_000

BadNodeIdExists

The requested node id is already used by another node.

BadNodeClassInvalid

The node class is not valid.

BadBrowseNameInvalid

The browse name is invalid.

0805F_00008060_00008061_000

BadBrowseNameDuplicat The browse name is not unique among nodes that share the same0edrelationship with the parent.

8062_000

BadNodeAttributesInvali

The node attributes are not valid for the node class.

0d8063_000

BadTypeDefinitionInvalid

node.

0
8064_000

The type definition node id does not reference an appropriate type

BadSourceNodeIdInvalid

The source node id does not reference a valid node.

BadTargetNodeIdInvalid

The target node id does not reference a valid node.

8066_000

BadDuplicateReference

The reference type between the nodes is already defined.

0

NotAllowed

8067_000

BadInvalidSelfReference

The server does not allow this type of selfreference on this node.

BadReferenceLocalOnly

The reference type is not valid for a reference to a remote server.

BadNoDeleteRights

The server will not allow the node to be deleted.

BadServerIndexInvalid

The server index is not valid.

BadViewIdUnknown

The view id does not refer to a valid view node.

BadTooManyMatches

The requested operation has too many matches to return.

08065_000008068_00008069_0000806A_0000806B_0000806D_000
03364

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

806E_000

BadQueryTooComplex

The requested operation requires too many resources in the server.

BadNoMatch

The requested operation has no match to return.

BadMaxAgeInvalid

The max age parameter is invalid.

0806F_00008070_00008071_000

BadHistoryOperationInva The history details parameter is not valid.

0

lid8072_000

BadHistoryOperation0

Unsupported

8073_000

BadWriteNotSupported
BadTypeMismatch

The value supplied for the attribute is not of the same type as theattribute's value.

08075_000

The server not does support writing the combination of value,
status and timestamps provided.

08074_000

The server does not support the requested operation.

BadMethodInvalid

The method id does not refer to a method for the specified object.

BadArgumentsMissing

The client did not specify all of the input arguments for the method.

08076_00008077_000

BadTooManySubscription The server has reached its maximum number of subscriptions.

0s考えられる原因:
サブスクリプションの最大数を超えています。
対策:
新しいセッションでサブスクリプションを作成します。

8078_000

BadTooManyPublish

The server has reached the maximum number of queued publish

0

Requests

requests.

8079_000

BadNoSubscription

There is no subscription available for this session.

807A_000

BadSequenceNumber

The sequence number is unknown to the server.

0

Unknown

807B_000

BadMessageNotAvailable The requested notification message is no longer available.

00

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3365

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

807C_000

BadInsufficientClientProfi The Client of the current Session does not support one or more

0leProfiles that are necessary for the Subscription.

80BF_000

BadStateNotActive

The sub-state machine is not currently active.

BadTcpServerTooBusy

The server cannot process the request because it is too busy.

0807D_0000807E_000

BadTcpMessageTypeInval The type of the message specified in the header invalid.

0

id807F_000

BadTcpSecureChannel

0

Unknown

8080_000

BadTcpMessageTooLarge The size of the message specified in the header is too large.

The SecureChannelId and/or TokenId are not currently in use.

08081_000

BadTcpNotEnough

There are not enough resources to process the request.

0

Resources

OPC_UA_Connect:接続の作成 (ページ 3181)のエラーメッセージも参照してください。

8082_000

BadTcpInternalError

An internal error occurred.

8083_000

BadTcpEndpointUrlInvali

The Server does not recognize the QueryString specified.

0d8084_000

BadRequestInterrupted

The request could not be sent because of a network interruption.

BadRequestTimeout

Timeout occurred while processing the request.

008085_0000
8086_000

BadSecureChannelClosed The secure channel has been closed.

08087_000

BadSecureChannelToken0

Unknown

8088_000

BadSequenceNumberInv

0

alid

8089_000

BadConfigurationError

0

3366

The token has expired or is not recognized.
The sequence number is not valid.
There is a problem with the configuration that affects the usefulnessof the value.

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

808A_000

The variable should receive its value from another variable, but has

BadNotConnected

never been configured to do so.

0
808B_000

BadDeviceFailure

value that has affected the value.

0
808C_000

BadSensorFailure

There has been a failure in the sensor from which the value isderived by the device/data source.

0
808D_000

There has been a failure in the device/data source that generates the

BadOutOfService

The source of the data is not operational.

808E_000

BadDeadbandFilterInvali

The dead band filter is not valid.

0d8097_000

BadRefreshInProgress0This Condition refresh failed, a Condition refresh operation isalready in progress.

08098_000

BadConditionAlreadyDisa This condition has already been disabled.

0

bled

8099_000

BadConditionDisabled

Property not available, this condition is disabled.

BadEventIdUnknown

The specified event id is not recognized.

BadNoData

No data exists for the requested time range or event filter.

BadDataLost

Data is missing due to collection started/stopped/lost.

BadDataUnavailable

Expected data is unavailable for the requested time range due to an

0809A_0000809B_0000809D_0000809E_000

unmounted volume an off-line archive or tape or similar reason for0

temporary unavailability.
809F_000

BadEntryExists

entry exists.

0
80A0_000

The data or event was not successfully inserted because a matching

BadNoEntryExists

The data or event was not successfully updated because nomatching entry exists.

0
80A1_000

BadTimestampNotSuppo The client requested history using a timestamp format the server

0

rted

does not support (i. e. requested ServerTimestamp when server
only supports SourceTimestamp).

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3367

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

80AB_000

One or more arguments are invalid.

BadInvalidArgument0

考えられる原因:
サーバーアドレス(ServerEndpointURL)が正しくないか、不完全です。

80AC_000

BadConnectionRejected

Could not establish a network connection to remote server.

BadDisconnect

The server has disconnected from the client.

BadConnectionClosed

The network connection has been closed.

BadInvalidStateThe operation cannot be completed because the object is closed

080AD_000080AE_000080AF_000

uninitialized or in some other invalid state.

0
80B0_000

BadEndOfStream

Cannot move beyond end of the stream.

BadNoDataAvailable

No data is currently available for reading from a non-blocking

080B1_000080B2_000

stream.
BadWaitingForResponse

The asynchronous operation is waiting for a response.

0
80B3_000

BadOperationAbandoned The asynchronous operation was abandoned by the caller.

0
80B4_000

BadExpectedStreamToBlo The stream did not return all data requested (possibly because it is0

ck

a non-blocking stream).

80B5_000

BadWouldBlockNon-blocking behavior is required and the operation would block.

BadSyntaxError

A value had an invalid syntax.

80B7_000

BadMaxConnections

The operation could not be finished because all available

0

Reachedconnections are in use.

80BB_000

BadEventNot

The event cannot be acknowledged.

0

Acknowledgeable

80BD_000

BadInvalidTimestamp

0

Argument

0
80B6_000
03368

The defined timestamp to return was invalid.

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

80BE_000

BadProtocolVersion

The applications do not have compatible protocol versions.

0Unsupported

80C1_000

BadFilterOperatorInvalid

An unrecognized operator was provided in a filter.

80C2_000

BadFilterOperator

A valid operator was provided, but the server does not provide

0

Unsupported

support for this filter operator.

80C3_000

BadFilterOperandCountThe number of operands provided for the filter operator was less0

Mismatchthan expected for the operand provided.

80C4_000

BadFilterElementInvalid

The referenced element is not a valid element in the content filter.

BadFilterLiteralInvalid

The referenced literal is not a valid value.

0080C5_000080C6_000

BadIdentityChangeNotSu The Server does not support changing the user identity assigned to0

pportedthe session.

80C8_000

BadNotTypeDefinition

The provided NodeId was not a type definition NodeId.

0
80C9_000

BadViewTimestampInvali The view timestamp is not available or not supported.

0d80CA_000

BadViewParameterMism

0

atch

80CB_000

BadViewVersionInvalid

The view version is not available or not supported.

80CC_000

BadConditionAlreadyThis condition has already been enabled.

0

Enabled

80CD_000

BadDialogNotActive

The view parameters are not consistent with each other.

0

The dialog condition is not active.

080CE_000

BadDialogResponseInvali The response is not valid for the dialog.

0d80CF_000

BadConditionBranch0

AlreadyAcked

80D0_000

BadConditionBranch0

AlreadyConfirmed

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

The condition branch has already been acknowledged.
The condition branch has already been confirmed.

3369

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

80D1_000

BadConditionAlreadyShel The condition has already been shelved.

0

ved

80D2_000

BadConditionNotShelved The condition is not currently shelved.

0
The shelving time not within an acceptable range.

80D3_000

BadShelvingTimeOutOfR

0

ange

80D4_000

BadAggregateListMismat The requested number of Aggregates does not match the requested

0ch

80D5_000

BadAggregateNotSuppor The requested Aggregate is not support by the server.

0

ted

80D6_000

BadAggregateInvalidInpu The aggregate value could not be derived due to invalid data inputs.

0ts

80DB_000

BadTooManyMonitoredIt

The request could not be processed because there are too many0

ems

monitored items in the subscription.

number of NodeIds.

考えられる原因:
サブスクリプション内で、監視されるエレメントの最大数に達しています。
対策:
エレメントを追加登録するには、新しいサブスクリプションを作成する必要があります。
TIA ポータル V15 以降のプロジェクトでは、監視されるエレメントの最大数を CPU 構成内でも設定できます。
考えられるその他の原因:
リクエストのエレメントが多すぎます。
対策:
サーバーで指定されている「ServerCapabilities」オブジェクト内の最大値に注意してください。
80D7_000

BadBoundNotFoundNo data found to provide upper or lower bound value.

BadBoundNotSupported

The server cannot retrieve a bound for the variable.

0
80D8_000
03370

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ステータス "Bad" (8000_0000 - FFFF_FFFF)
エラーコー 名前
ド(16 進数)

意味

80DA_000

BadAggregateConfigurati The aggregate configuration is not valid for specified node.

0on
Rejected

80E1_000

BadDominantValueChan

The related EngineeringUnit has been changed but this change has0

ged

not been applied to the device. The Variable Value is still dependent
on the previous unit but its status is currently bad.

80E3_000

BadDependentValueCha

A dependent value has been changed but the change has not been

0

nged

applied to the device. The quality of the dominant variable is bad.

80E4_000

BadRequestNotAllowed

The request was rejected by the server because it did not meet thecriteria set by the server.

0
80E5_000

BadTooManyArguments

Too many arguments were provided.

080E6_000

BadSecurityModeInsuffici The operation is not permitted over the current secure channel.

0

ent

810D_000

BadCertificateChainInco0mplete810E_000

BadLicenseExpired

The certificate chain is incomplete.
The server requires a license to operate in general or to perform aservice or operation, but existing license is expired.

0810F_000

BadLicenseLimitsExceede The server has limits on number of allowed operations / objects,

0dbased on installed licenses, and these limits where exceeded.

8110_000

BadLicenseNotAvailable

The server does not have a license which is required to operate ingeneral or to perform a service or operation.

0
8111_000

BadNotExecutable

08112_000

The executable attribute does not allow the execution of themethod.

BadNumericOverflow

The number was not accepted because of a numeric overflow.

08113_000

BadRequestNotComplete The request has not been processed by the server yet.

0

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3371

通信
6.3 OPC UA

PLCopen のエラーコード

エラーコード以下の表には、PLCopen エラーコードが記載されています。
エラーの名前および説明は、原文(英語)でのみ記載されています。でのみ記載されています。

PLCopen のエラーコード
ErrorID
(hex)

名前

意味

A000_000

PLCopenUA_Bad_FW_

Internal, permanent error.

1

PermanentError

A000_000

PLCopenUA_Bad_FW_

2

TempError

A000_010

PLCopenUA_Bad_0

ConnectionError

A000_010

PLCopenUA_Bad_

1

HostNotFound

A000_010

PLCopenUA_Bad_2

AlreadyConnected

A000_010

PLCopenUA_Bad_

3

SecurityFailed

A000_010

PLCopenUA_Bad_4

Suspended

A000_010

PLCopenUA_Bad_

Provided ConnectionHdl is not known.

5

ConnectionInvalidHdl

追加情報については、命令 OPC_UA_ConnectionGetStatus」のエラ

Temp. Error; FB could retry to reach FW.
Connection could not be established.
The requested hostname could not be found.
Connection was already established.
Connection failed due to security setup.
Connection is suspended.

ーコードの説明を参照してください。
A000_020

PLCopenUA_Bad_0

NSNotFound

A000_030

PLCopenUA_Bad_0

ResultTooLong

A000_030

PLCopenUA_Bad_1

InvalidType

3372

A namespace with the requested name cannot be found on server.
Target PLC variable is too short for retrieved data.
Invalid or unsupported Type.

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
ErrorID
(hex)

名前

意味

A000_030

PLCopenUA_Bad_

Provided NodeHdl is not known.

2

NodeInvalidHdl

A000_030

PLCopenUA_Bad_3

MethodInvalidHdl

A000_030

PLCopenUA_Bad_

4

ReadFailed

A000_030

PLCopenUA_Bad_

5

WriteFailed

A000_030

PLCopenUA_Bad_

6

CallFailed

A000_030

PLCopenUA_Bad_

7

InParamFailed

A000_030

PLCopenUA_Bad_

Method Call Output parameter conversion failed. ATTENTION: this8

OutParamFailedmeans the MethodCall was executed successfully but the returned

Provided MethodHdl is not known.
Read failed for unknown reason.
Write failed for unknown reason.
Method Call failed for unknown reason.
Method Call Input parameter conversion failed.

values could not be converted.
A000_050

PLCopenUA_Bad_0

SubscriptionInvalidHdl

A000_050

PLCopenUA_Bad_

1

MonitoredItemInvalidHdl

6.3.1.9

Provided SubscriptionHdl is not known.
Provided MonitoredItemHdl is not known.

OPC UA クライアントのプログラム例

OPC_UA_ConnectionGetStatus のプログラム例

接続分析のプログラム例
このセクションには、プログラム例「Analyze_Connection」の完全なプログラムコードが記載されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3373

通信
6.3 OPC UA
この例は、ユーザープログラムが命令「OPC_UA_ConnectionGetStatus」を使用して、OPC
UA サーバーへの接続に関する情報を取得する方法を示しています。
「OPC_UA_ConnectionGetStatus」命令の説明は、セクション
OPC_UA_ConnectionGetStatus:読み取り接続ステータス (ページ 3300)に記載されています。
プログラム構造プログラムは以下のセクションで構成され、OPC UA クライアントとして動作します。
1. OPC UA サーバーへの接続の確立。
2. 接続の分析。
3. OPC UA サーバーへの接続の終了。

「Input_REQ」の立ち上がりエッジでプログラムを開始します。

3374

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

宣言
下図は、命令「OPC_UA_ConnectionGetStatus」を使用するファンクションブロックのローカルタグの宣言を示しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3375

通信
6.3 OPC UA

プログラム
SCL
IF #Run = FALSE THEN
#Started := #Input_REQ AND NOT #Mem_Input_REQ;#Mem_Input_REQ := #Input_REQ;
IF #Started THEN
#Output_Busy := TRUE;#Output_Done := FALSE;#Output_Error := FALSE;#State := 1;#Run := TRUE;#ResetREQ_For_OPC_UA_Disconnect := TRUE;#SetServerEndpoint := TRUE;
END_IF;
END_IF;
IF #Run = TRUE THEN
CASE #State OF
1: // case 1, connect to server
IF #SetServerEndpoint = TRUE THEN
#SetServerEndpoint := FALSE;//set ServerSendpoint#ServerEndpointUrl := WSTRING#'opc.tcp://192.168.1.1:4840';/setting for SecurityMsgMode//1 = None//2 = Sign//3 = Sign & Encrypt#OPC_UA_SessionConnectInfo_Instance.SecurityMsgMode := 3;//setting for SecurityPolicy//1 = None//2 = Basic128Rsa15//3 = Basic256//4 = Basic256Sha256#OPC_UA_SessionConnectInfo_Instance.SecurityPolicy := 4;//set TransportProfile to 1
#OPC_UA_SessionConnectInfo_Instance.TransportProfile := 1;/we are using our Client-Certificate Nr. 10//because Nr. 10 is the lastest Certificate we created for our client application//please look into Certificate manager for the number of your Client certificate//Certificate manager is located at// "Project tree > Security settings > Security features"#OPC_UA_SessionConnectInfo_Instance.CertificateID := 10;
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Connect_Instance(REQ := #Req,
ServerEndpointUrl := #ServerEndpointUrl,

3376

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL
SessionConnectInfo := #OPC_UA_SessionConnectInfo_Instance,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status,
ConnectionHdl => #ConnectionHdl);
IF #Done = TRUE THEN
#State := #State + 1;
#ResetREQ_For_OPC_UA_Disconnect := TRUE;
END_IF;
IF #Error = TRUE THEN// Did we get a connection handle?
IF #ConnectionHdl <> 0 THEN// We have to release all resources in the server and disconnect#State := 100;
ELSE
#State := 99;
END_IF;#Mem_Status := #Status;#OPC_UA_Connect_Instance(REQ := FALSE,
ServerEndpointUrl := #ServerEndpointUrl,
SessionConnectInfo := #OPC_UA_SessionConnectInfo_Instance);#ResetREQ_For_OPC_UA_Disconnect := TRUE;
END_IF;
2: // case 2, analyse connection
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_ConnectionGetStatus_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
ConnectionStatus => #ConnectionStatus,
ServerState => #ServerState,
ServiceLevel => #ServiceLevel,
Timeout := T#6S,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;
#Mem_Status := #Status;#OPC_UA_ConnectionGetStatus_Instance(REQ := FALSE,
ConnectionHdl := #ConnectionHdl);
END_IF;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3377

通信
6.3 OPC UA
SCL
3: // case 3, disconnect from server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
Timeout := T#6S,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;
#Mem_Status := #Status;#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := #ConnectionHdl);
END_IF;
4: //case = 4, function block has run successfully#Output_Done := TRUE;#Output_Busy := FALSE;#State := 0;#Mem_Input_REQ := FALSE;#Run := FALSE;#Started := FALSE;
99: // ERROR handling#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
100:

3378

// ERROR handling, disconnect from server to release resources (handles)
IF #ResetREQ_For_OPC_UA_Disconnect = TRUE THEN
#ResetREQ_For_OPC_UA_Disconnect := FALSE;//set REQ to FALSE#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := #ConnectionHdl);
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UASCL
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
Timeout := T#6S,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
IF #Error = TRUE THEN
#Output_Error_Message := WString#'Error handling: Resources cannot bereleased!';#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
END_CASE;
END_IF;

PLC タグを読み取るプログラム例
PLC タグを読み取るプログラム例
このセクションには、プログラム例「ReadFromProductionline」の完全なプログラムコー
ドが記載されています。
この例は、ユーザープログラムが PLC タグの値を読み取る方法を示しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3379

通信
6.3 OPC UA
プログラム構造プログラムは以下のステップで構成され、OPC UA クライアントとして動作します。
1. 値が読み出される CPU の OPC UA サーバーへの接続の確立。
2. 値の読み出し。
3. OPC UA サーバーへの接続の終了。

「Input_REQ」の立ち上がりエッジでプログラムを開始します。

要件
このプログラム例では、「Productionline」というクライアントインターフェースを設定済みであり、以下のデータブロックが使用可能であると仮定しています。
• Productionline_Configuration• Productionline_Data
クライアントインターフェースが作成済みの場合、STEP 7 (TIA ポータル)はこれらのデー
タブロックを自動的に生成します。AUTOHOTSPOT を参照してください。
さらに、このプログラム例では、OPC UA サーバーへの接続が作成および設定済みである
ことが必要です。AUTOHOTSPOT を参照してください。

3380

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

宣言
下図は、ファンクションブロック「ReadFromProductionline」のローカルタグの宣言を示しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3381

通信
6.3 OPC UA

プログラム
SCL
IF #Run = FALSE THEN
Started := #Input_REQ AND NOT #Mem_Input_REQ;#Mem_Input_REQ := #Input_REQ;
IF #Started THEN
#Output_Busy := TRUE;#Output_Done := FALSE;#Output_Error := FALSE;#Output_Status := 0;#State := 1;#Run := TRUE;#Set_REQ_To_FALSE := TRUE;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE
END_IF;
END_IF;
IF #Run = TRUE THEN
CASE #State OF
1: // case 1, connect to server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Connect_Instance(REQ := #Req,
ServerEndpointUrl :="Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN// Did we get a connection handle?
IF "Productionline_Configuration".Connection.ConnectionHdl <> 0 THEN// We have to release all resources in the server and disconnect#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;ELSE#State := 99;
END_IF;#Mem_Status := #Status;

3382

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL// set parameter REQ of OPC_UA_Connect to FALSE#OPC_UA_Connect_Instance(REQ := FALSE,
ServerEndpointUrl :="Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl);
END_IF;
2: // case 2, get index for namespace
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NamespaceGetIndexList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NamespaceUrisCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceUris := "Productionline_Configuration".Namespaces.NamespaceURIs,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF "Productionline_Configuration".Namespaces.NamespaceStatusList[0] = 0 THEN
#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NamespaceGetIndexList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NamespaceGetIndexList_Instance(REQ := FALSE,
NamespaceUris := "Productionline_Configuration".Namespaces.NamespaceURIs,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes);
END_IF;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3383

通信
6.3 OPC UA
SCL
3: // case 3, get handles for nodes
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NodeGetHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeIDs := "Productionline_Configuration".ReadLists."ReadListProduct".Nodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF "Productionline_Data"."ReadListProduct".NodeStatusList[0] = 0 AND"Productionline_Data"."ReadListProduct".NodeStatusList[1] = 0
THEN#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#OPC_UA_NodeGetHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeIDs := "Productionline_Configuration".ReadLists."ReadListProduct".Nodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,

3384

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls);
END_IF;
4: // case 4, read from nodes
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_ReadList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
TimeStamps := "Productionline_Data"."ReadListProduct".TimeStamps,
Variable := "Productionline_Data"."ReadListProduct".Variable,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
FOR #i := 0 TO
UINT_TO_INT("Productionline_Configuration".ReadLists."ReadListProduct".NodeCount) - 1 DO
IF NOT ("Productionline_Data"."ReadListProduct".NodeStatusList[#i] = 0) THEN
#Output_Error_Message := CONCAT_WSTRING(IN1 := WSTRING#'Error at Readlist"ReadListProduct",
Index: ',IN2 := INT_TO_WSTRING(#i));
END_IF;
END_FOR;#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_ReadList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
TimeStamps := "Productionline_Data"."ReadListProduct".TimeStamps,

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3385

通信
6.3 OPC UA
SCL
Variable := "Productionline_Data"."ReadListProduct".Variable);
END_IF;
5: // case 5, release node handles
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NodeReleaseHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList,
Done => #Done,
Error => #Error,
Busy => #Busy,
Status => #Status);
IF #Done = TRUE THEN
IF "Productionline_Data"."ReadListProduct".NodeStatusList[0] = 0 AND"Productionline_Data"."ReadListProduct".NodeStatusList[1] = 0
THEN#State := #State + 1;
ELSE
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeReleaseHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NodeReleaseHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".ReadLists."ReadListProduct".NodeCount,
NodeHdls :="Productionline_Configuration".ReadLists."ReadListProduct".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."ReadListProduct".NodeStatusList);
END_IF;

3386

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL
6: // case 6, disconnect from server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;
END_IF;
7: //case = 7, function block has run successfully#Output_Done := TRUE;#Output_Busy := FALSE;#State := 0;#Mem_Input_REQ := FALSE;#Run := FALSE;#Started := FALSE;
99: // ERROR handling#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
100: // ERROR handling, disconnect from server to release resources (handles)
IF #Set_REQ_To_FALSE = TRUE THEN
#Set_REQ_To_FALSE := FALSE;/set REQ to FALSE#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout);
END_IF;
IF #Busy = FALSE THEN

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3387

通信
6.3 OPC UA
SCL#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
IF #Error = TRUE THEN
#Output_Error_Message := WString#'Error handling: Resources cannot be released!';#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
END_CASE;
END_IF;

PLC タグを書き込むプログラム例
PLC タグを書き込むプログラム例
このセクションには、プログラム例「WriteToProductionline」の完全なプログラムコードが記載されています。
この例は、ユーザープログラムが PLC タグの値を書き込む方法を示しています。

3388

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
プログラム構造プログラムは以下のステップで構成され、OPC UA クライアントとして動作します。
1. 値が書き込まれる CPU の OPC UA サーバーへの接続の確立。
2. 値の書き込み。
3. OPC UA サーバーへの接続の終了「Input_REQ」の立ち上がりエッジでプログラムを開始します。

宣言
下図は、ファンクションブロック「WriteToProductionline」のローカルタグの宣言を示しています。

このプログラム例では、以下のデータブロックも使用しています。
• Productionline_Configuration• Productionline_Data

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3389

通信
6.3 OPC UA
このプログラム例では OPC UA に対するパラメータ割り当てを使用するため、これらのデータブロックは STEP 7 (TIA ポータル)によって自動的に作成されます。

3390

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

プログラム
SCL
IF #Run = FALSE THEN
#Started := #Input_REQ AND NOT #Mem_Input_REQ;#Mem_Input_REQ := #Input_REQ;
IF #Started THEN
#Output_Busy := TRUE;#Output_Done := FALSE;#Output_Error := FALSE;#Output_Status := 0;#State := 1;#Run := TRUE;#FirstCall := TRUE;#Set_REQ_To_FALSE := TRUE;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE

END_IF;
END_IF;
IF #Run = TRUE THEN
CASE #State OF
1: // case 1, connect to server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Connect_Instance(REQ := #Req,
ServerEndpointUrl :="Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN// Did we get a connection handle?

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3391

通信
6.3 OPC UA
SCL
IF "Productionline_Configuration".Connection.ConnectionHdl <> 0 THEN// We have to release all resources in the server and disconnect#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;ELSE#State := 99;
END_IF;#Mem_Status := #Status;#OPC_UA_Connect_Instance(REQ := FALSE,
ServerEndpointUrl :="Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl);
END_IF;
2: // case 2, get index for namespace
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NamespaceGetIndexList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NamespaceUrisCount := "Productionline_Configuration".Namespaces.NamespaceCount,NamespaceUris := "Productionline_Configuration".Namespaces.NamespaceURIs,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
Done => #Done,
Busy => #Busy,
Error => #Error);IF #Done = TRUE THEN
IF "Productionline_Configuration".Namespaces.NamespaceStatusList[0] = 0 THEN
#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NamespaceGetIndexList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NamespaceGetIndexList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,

3392

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL
NamespaceUrisCount := "Productionline_Configuration".Namespaces.NamespaceCount,NamespaceUris := "Productionline_Configuration".Namespaces.NamespaceURIs,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes);
END_IF;
3: // case 3, get handles for nodes
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NodeGetHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeIDs := "Productionline_Configuration".WriteLists."WriteListStatus".Nodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status =>#Status);
IF #Done = TRUE THEN
IF "Productionline_Data"."WriteListStatus".NodeStatusList[0] = 0
THEN#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NodeGetHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3393

通信
6.3 OPC UA
SCL
NodeIDCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeIDs := "Productionline_Configuration".WriteLists."WriteListStatus".Nodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls);
END_IF;
4: // case 4; write value to PLC variable "ProductionEnabled"
IF #SetProductionEnabled = TRUE THEN
#SetProductionEnabled := FALSE;//set new value to true
"Productionline_Data"."WriteListStatus".Variable.ProductionEnabled := TRUE;
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_WriteList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList,
Variable := "Productionline_Data"."WriteListStatus".Variable,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
FOR #i := 0 TO
UINT_TO_INT("Productionline_Configuration".WriteLists.WriteListStatus.NodeCount) - 1 DO
IF NOT ("Productionline_Data"."WriteListStatus".NodeStatusList[#i] = 0) THEN
#Output_Error_Message := CONCAT_WSTRING(IN1 := WSTRING#'Error at Writelist"WriteListStauts", Index: ',IN2 := INT_TO_WSTRING(#i));
END_IF;
END_FOR;#State := #State + 1;
END_IF;
IF #Error = TRUE THEN

3394

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_WriteList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList,
Variable := "Productionline_Data"."WriteListStatus".Variable);
END_IF;
5: // case 5, release node handles
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NodeReleaseHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF "Productionline_Data"."WriteListStatus".NodeStatusList[0] = 0
THEN#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeReleaseHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NodeReleaseHandleList_Instance(REQ := FALSE,

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3395

通信
6.3 OPC UA
SCL
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeHdlCount :="Productionline_Configuration".WriteLists."WriteListStatus".NodeCount,
NodeHdls :="Productionline_Configuration".WriteLists."WriteListStatus".NodeHdls,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NodeStatusList := "Productionline_Data"."WriteListStatus".NodeStatusList);//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;
END_IF;
6: // case 6, disconnect from server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;
END_IF;
7: //case = 7, function block has run successfully#Output_Done := TRUE;#Output_Busy := FALSE;#State := 0;#Mem_Input_REQ := FALSE;#Run := FALSE;#Started := FALSE;
99: // ERROR handling#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;

3396

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL#Mem_Input_REQ := FALSE;#Started := FALSE;
100: // ERROR handling, disconnect from server to release resources (handles)
IF #Set_REQ_To_FALSE = TRUE THEN
#Set_REQ_To_FALSE := FALSE;//set REQ to FALSE#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout);
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
IF #Error = TRUE THEN
#Output_Error_Message := WString#'Error handling: Resources cannot be released!';#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
END_CASE;
END_IF;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3397

通信
6.3 OPC UA

OPC_UA_TranslatePathList のプログラム例

命令「OPC_UA_TranslatePathList」のプログラム例
このセクションには、プログラム例「Read_From_RfidReader_Door_1」の完全なプログラ
ムコードが記載されています。
この例では、ユーザープログラムが命令「OPC_UA_TranslatePathList」を使用し、ノードの
NodeIds を取得して、これらのノードの値を読み取る方法を示しています。
「OPC_UA_TranslatePathList」命令の説明は、セクション OPC_UA_TranslatePathList:現在の NodeIds の識別 (ページ 3224)に記載されています。
プログラム構造プログラムは以下のステップで構成され、OPC UA クライアントとして動作します。
1. 値が読み出される CPU の OPC UA サーバーへの接続の確立。
2. 値の読み出し。
3. OPC UA サーバーへの接続の終了。

「Input_REQ」の立ち上がりエッジでプログラムを開始します。

宣言
下図は、命令「OPC_UA_TanslatePathList」を使用するファンクションブロック"Read_From_RfidReader_Door_1 のローカルタグの宣言を示しています。

3398

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

読み取られる値の「UDT_Variable」データタイプ
ローカルタグ「Variable」(上図の 43 行目を参照)は、データタイプ「UDT_Variable」を使用しています。
このプログラム例で「DeviceInfo」および「DeviceStatus」に対する値を「Variable」タグに挿入できるようにするには、TIA ポータルプロジェクト内でユーザー定義データタイプ「UDT_Variable」を作成する必要があります。
下図に、「UDT_Variable」データタイプの構造を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3399

通信
6.3 OPC UA

プログラム
以下の例では、命令「OPC UA-TranslatePathList」の使用方法を示します。

3400

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

SCL
IF #Run = FALSE THEN
#Started := #Input_REQ AND NOT #Mem_Input_REQ;#Mem_Input_REQ := #Input_REQ;
IF #Started THEN
#Output_Busy := TRUE;#Output_Done := FALSE;#Output_Error := FALSE;#Output_Status := 0;#State := 1;#Run := TRUE;#FirstCall := TRUE;#Set_REQ_To_FALSE := TRUE; //In case 100, to set REQ of instruction"OPC_UA_Disconnect" to FALSE
END_IF;
END_IF;
IF #Run = TRUE THEN
CASE #State OF
1: // case 1, connect to server
IF #FirstCall = TRUE THEN
#FirstCall := FALSE;//set ServerEndPointUrl of the server we want to connect to#SeverEndpointUrl := WString#'opc.tcp://192.168.1.1:4840';//set Securtiy Message Mode// 1 = None, 2 = Sign, 3 = Sign & Encrypt#SessionConnectInfo.SecurityMsgMode := 1;//set Security Policy// 1 = None, 2 = Basic128Rsa15,, 3 = Basic256, 4 = Basic256Sha256#SessionConnectInfo.SecurityPolicy := 1;//set the number of the client certificate you are using//in our case, this is 6//#SessionConnectInfo.CertificateID := 6;
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Connect_Instance(REQ:=#Req,
ConnectionHdl=>#ConnectionHdl,
ServerEndpointUrl:=#SeverEndpointUrl,
SessionConnectInfo:=#SessionConnectInfo,
Timeout:=T#8S,
Done=>#Done,
Busy=>#Busy,
Error=>#Error,
Status=>#Status);
IF #Done = TRUE THEN

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3401

通信
6.3 OPC UA
SCL#State := #State + 1;
#FirstCall := TRUE;
END_IF;
IF #Error = TRUE THEN// Did we get a connection handle?
IF #ConnectionHdl <> 0 THEN// We got a connection handle// We have to release all resources in the server and disconnect#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;
ELSE// We did not get a connection handle#State := 99;
END_IF;#Mem_Status := #Status;// set parameter REQ of OPC_UA_Connect to FALSE#OPC_UA_Connect_Instance(REQ := FALSE,
ServerEndpointUrl := #SeverEndpointUrl,
SessionConnectInfo := #SessionConnectInfo);#FirstCall := TRUE;
END_IF;
2: // case 2, get index of Siemens namespace
IF #FirstCall = TRUE THEN
#FirstCall := FALSE;//set Simatic namespace#NamespaceUris[0] := WString#'http://www.siemens.com/simatic-s7-opcua';
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NamespaceGetIndexList_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
NamespaceUrisCount := 1,NamespaceUris := #NamespaceUris,
Timeout := T#6S,
StatusList := #NamespaceStatusList,
NamespaceIndexes := #NamespaceIndexes,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF #NamespaceStatusList[0] = 0 THEN //one namespace#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;

3402

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL#Output_Error_Message := WString#' Error at NamespaceGetIndexList, Index 0';
END_IF;#FirstCall := TRUE;
END_IF;
IF #Error = TRUE THEN//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#OPC_UA_NamespaceGetIndexList_Instance(REQ := FALSE,
NamespaceUris := #NamespaceUris,
StatusList := #NamespaceStatusList,
NamespaceIndexes := #NamespaceIndexes);#FirstCall := TRUE;
END_IF;
3: // case 3, get NodeIds from server
IF #FirstCall = TRUE THEN//set BrowsePath[0] for DeviceInfo//set BrowsePath.StartingNode#BrowsePaths[0].StartingNode.Identifier := WString#'85';#BrowsePaths[0].StartingNode.IdentifierType := 0;#BrowsePaths[0].StartingNode.NamespaceIndex := 0;//set BrowsePath.RelativePath#BrowsePaths[0].RelativePath.NoOfElements := 4;#BrowsePaths[0].RelativePath.Elements[1].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[0].RelativePath.Elements[1].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[0].RelativePath.Elements[1].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[0].RelativePath.Elements[1].TargetName.Name :=WString#'productionline';#BrowsePaths[0].RelativePath.Elements[1].TargetName.NamespaceIndex :=#NamespaceIndexes[0];#BrowsePaths[0].RelativePath.Elements[2].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[0].RelativePath.Elements[2].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[0].RelativePath.Elements[2].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[0].RelativePath.Elements[2].TargetName.Name :=WString#'DataBlocksGlobal';#BrowsePaths[0].RelativePath.Elements[2].TargetName.NamespaceIndex :=#NamespaceIndexes[0];#BrowsePaths[0].RelativePath.Elements[3].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[0].RelativePath.Elements[3].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[0].RelativePath.Elements[3].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[0].RelativePath.Elements[3].TargetName.Name :=WString#'RfidReader_Door_1';

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3403

通信
6.3 OPC UA
SCL#BrowsePaths[0].RelativePath.Elements[3].TargetName.NamespaceIndex :=#NamespaceIndexes[0];#BrowsePaths[0].RelativePath.Elements[4].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[0].RelativePath.Elements[4].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[0].RelativePath.Elements[4].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[0].RelativePath.Elements[4].TargetName.Name := WString#'DeviceInfo';#BrowsePaths[0].RelativePath.Elements[4].TargetName.NamespaceIndex :=#NamespaceIndexes[0];//set BrowsePath[1] for DeviceStatus//set BrowsePath.StartingNode#BrowsePaths[1].StartingNode.Identifier := WString#'85';#BrowsePaths[1].StartingNode.IdentifierType := 0;#BrowsePaths[1].StartingNode.NamespaceIndex := 0;//set BrowsePath.RelativePath#BrowsePaths[1].RelativePath.NoOfElements := 4;#BrowsePaths[1].RelativePath.Elements[1].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[1].RelativePath.Elements[1].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[1].RelativePath.Elements[1].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[1].RelativePath.Elements[1].TargetName.Name :=WString#'productionline';#BrowsePaths[1].RelativePath.Elements[1].TargetName.NamespaceIndex :=#NamespaceIndexes[0];#BrowsePaths[1].RelativePath.Elements[2].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[1].RelativePath.Elements[2].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[1].RelativePath.Elements[2].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[1].RelativePath.Elements[2].TargetName.Name :=WString#'DataBlocksGlobal';#BrowsePaths[1].RelativePath.Elements[2].TargetName.NamespaceIndex :=#NamespaceIndexes[0];#BrowsePaths[1].RelativePath.Elements[3].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[1].RelativePath.Elements[3].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[1].RelativePath.Elements[3].ReferenceTypeId.NamespaceIndex := 0;#BrowsePaths[1].RelativePath.Elements[3].TargetName.Name :=WString#'RfidReader_Door_1';#BrowsePaths[1].RelativePath.Elements[3].TargetName.NamespaceIndex :=#NamespaceIndexes[0];#BrowsePaths[1].RelativePath.Elements[4].ReferenceTypeId.Identifier :=WString#'33';#BrowsePaths[1].RelativePath.Elements[4].ReferenceTypeId.IdentifierType := 0;#BrowsePaths[1].RelativePath.Elements[4].ReferenceTypeId.NamespaceIndex := 0;3404

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL#BrowsePaths[1].RelativePath.Elements[4].TargetName.Name :=WString#'DeviceStatus';#BrowsePaths[1].RelativePath.Elements[4].TargetName.NamespaceIndex :=#NamespaceIndexes[0];END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_TranslatePathList_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
BrowsePathsCount := 2,
BrowsePaths := #BrowsePaths,
Timeout := T#6S,
NamespaceIndexCount := 0,
TargetNodeIDs := #TagetNodeIds,
TargetStatusList := #TargetStatusList,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF #TargetStatusList[0] = 0 AND #TargetStatusList[1] = 0 THEN
#State := #State + 1;
ELSE
#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at TranslatePathList';
END_IF;#FirstCall := TRUE;
END_IF;
IF #Error = TRUE THEN//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#OPC_UA_TranslatePathList_Instance(REQ := FALSE,
ConnectionHdl := #ConnectionHdl,
BrowsePaths := #BrowsePaths,
TargetNodeIDs := #TagetNodeIds,
TargetStatusList := #TargetStatusList);#FirstCall := TRUE;
END_IF;
4: // case 4, get handles for the NodeIds we have got in case 3
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3405

通信
6.3 OPC UA
SCL#OPC_UA_NodeGetHandleList_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
NodeIDCount := 2,
NodeIDs := #TagetNodeIds,
Timeout := T#6S,
NodeStatusList := #NodeStatusList,
NodeHdls := #NodeHdls,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF #NodeStatusList[0] = 0 AND #NodeStatusList[1] = 0
THEN#State := #State + 1;
ELSE//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#OPC_UA_NodeGetHandleList_Instance(REQ := FALSE,
NodeIDs := #TagetNodeIds,
NodeStatusList := #NodeStatusList,
NodeHdls := #NodeHdls);
END_IF;
5: // case 5, read the values of the NodeIds
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_ReadList_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
NodeHdlCount := 2,
NodeHdls := #NodeHdls,
Timeout := T#6S,
NodeStatusList := #NodeStatusList,
Variable := #Variable,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);

3406

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL
IF #Done = TRUE THEN
FOR #i := 0 TO 1 DO
IF NOT (#NodeStatusList[#i] = 0) THEN
#Output_Error_Message := CONCAT_WSTRING(IN1 := WSTRING#'Error at Readlist,
Index: ',IN2 := INT_TO_WSTRING(#i));
END_IF;
END_FOR;#State := #State + 1;
END_IF;
IF #Error = TRUE THEN//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#OPC_UA_ReadList_Instance(REQ := FALSE,
NodeHdls := #NodeHdls,
NodeStatusList := #NodeStatusList,
Variable := #Variable);
END_IF;
6: // case 6, release the node handles
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NodeReleaseHandleList_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
NodeHdlCount := 1,
NodeHdls := #NodeHdls,
Timeout := T#6S,
NodeStatusList := #NodeStatusList,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #NodeStatusList[0] = 0 AND #NodeStatusList[1] = 0
THEN#State := #State + 1;
ELSE//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#Output_Error_Message := WString#'Error at NodeReleasetHandleList';
END_IF;
IF #Error = TRUE THEN//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3407

通信
6.3 OPC UA
SCL#Mem_Status := #Status;#OPC_UA_NodeReleaseHandleList_Instance(REQ := FALSE,
NodeHdls := #NodeHdls,
NodeStatusList := #NodeStatusList);
END_IF;
7: // case 7; disconnect form server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
Timeout := T#6S,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#State := 100;
#Mem_Status := #Status;#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := #ConnectionHdl);
END_IF;
8: //case = 8, function block has run successfully#Output_Done := TRUE;#Output_Busy := FALSE;#State := 0;#Mem_Input_REQ := FALSE;#Run := FALSE;#Started := FALSE;
99: // ERROR handling#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
100: // ERROR handling, disconnect from server to release resources (handles)
IF #Set_REQ_To_FALSE = TRUE THEN
#Set_REQ_To_FALSE := FALSE;

3408

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL//set REQ to FALSE#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := #ConnectionHdl);
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := #ConnectionHdl,
Timeout := T#6S,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
IF #Error = TRUE THEN
#Output_Error_Message := WString#'Error handling: Resources cannot be released!';#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
END_CASE;
END_IF;OPC UA サーバーのメソッド呼び出しのプログラム例

サーバーメソッド呼び出しのプログラム例
このセクションには、プログラム例「Call_OpenDoor_On_Productionline」の完全なプロ
グラムコードが記載されています。
この例では、ユーザープログラムが命令「OPC_UA_MethodCall」を使用して、サーバーメ
ソッドを呼び出す方法を示しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3409

通信
6.3 OPC UA「OPC_UA_MethodCall」命令の説明は、セクション OPC_UA_MethodCall:メソッドの呼び
出し (ページ 3321)に記載されています。
プログラム構造プログラムは以下のステップで構成され、OPC UA クライアントとして動作します。
1. OPC UA サーバーへの接続の確立。
2. サーバーメソッドの呼び出し。
3. OPC UA サーバーへの接続の終了。

「Input_REQ」の立ち上がりエッジでプログラムを開始します。

宣言
下図は、ファンクションブロック「"Call_OpenDoor_On_Productionline」のローカルタグの宣言を示しています。

3410

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

プログラム
SCL
IF #Run = FALSE THEN
#Started := #Input_REQ AND NOT #Mem_Input_REQ;#Mem_Input_REQ := #Input_REQ;
IF #Started THEN
#Output_Busy := TRUE;#Output_Done := FALSE;#Output_Error := FALSE;#Output_Status := 0;#Output_Error_Message := WSTRING#'';#State := 1;#Run := TRUE;#Init_Method_InputParameter := TRUE;#Set_REQ_To_FALSE := TRUE;
END_IF;
END_IF;
IF #Run = TRUE THEN
CASE #State OF
1: // case 1, connect to server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Connect_Instance(REQ := #Req,
ServerEndpointUrl := "Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
Timeout := "Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl);
IF #Done = TRUE THEN
#State := #State + 1;
END_IF;
IF #Error = TRUE THEN// Did we get a connection handle?
IF "Productionline_Configuration".Connection.ConnectionHdl <> 0 THEN// We have to release all resources in the server and disconnect#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;ELSE#State := 99;
END_IF;#Mem_Status := #Status;#OPC_UA_Connect_Instance(REQ := FALSE,

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3411

通信
6.3 OPC UA
SCL
ServerEndpointUrl :="Productionline_Configuration".Connection.ServerEndpointUrl,
SessionConnectInfo := "Productionline_Configuration".Connection.ConnectInfo,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
ConnectionHdl => "Productionline_Configuration".Connection.ConnectionHdl);
END_IF;
2: // case 2, get index of Siemens namespace
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_NamespaceGetIndexList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NamespaceUrisCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceUris := "Productionline_Configuration".Namespaces.NamespaceURIs,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
IF "Productionline_Configuration".Namespaces.NamespaceStatusList[0] = 0 THEN //one namespace#State := #State + 1;
ELSE
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#' Error at NamespaceGetIndexList, Index 0';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_NamespaceGetIndexList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NamespaceUrisCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceUris := "Productionline_Configuration".Namespaces.NamespaceURIs,

3412

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCLTimeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
StatusList := "Productionline_Configuration".Namespaces.NamespaceStatusList,
NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes);
END_IF;
3: // case 3, get an handle for server method OpenDoor
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_MethodGetHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,ObjectNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".ObjectNodes,
MethodNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodNodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status,
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls);
IF #Done = TRUE THEN
IF "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0] = 0 THEN //one
method#State := #State + 1;
ELSE
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#'Error at MethodGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3413

通信
6.3 OPC UA
SCL#OPC_UA_MethodGetHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
NodeIDCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,ObjectNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".ObjectNodes,
MethodNodeIDs :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodNodes,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
NamespaceIndexCount :="Productionline_Configuration".Namespaces.NamespaceCount,NamespaceIndexes :="Productionline_Configuration".Namespaces.ServerNamespaceIndexes,
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls);
END_IF;
4: // case 4, call method OpenDoor
IF #Init_Method_InputParameter = TRUE THEN
#Init_Method_InputParameter := FALSE;// for our server method at Productionline, we set input parameters to 1
"Productionline_Data".MethodListOpenDoor.Method.Inputs.Number := 1;
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;
OPC_UA_MethodCall_Instance(REQ := #Req,
ConnectionHdl:="Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdl :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls[0],InputArguments := "Productionline_Data"."MethodListOpenDoor"."Method".Inputs,
OutputArguments :="Productionline_Data"."MethodListOpenDoor"."Method".Outputs,
Done => #Done,
Busy => #Busy,
Error => #Error
Status => "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0],MethodResult :="Productionline_Data"."MethodListOpenDoor".MethodResultList[0]);//"Productionline_Data"."MethodListOpenDoor".MethodResultList[0]] contains//the status/error codes of the server method//which was run on the connected CPU as user program//These codes are defined as follows://
Good: 0x0000_0000 TO 0x3FFF_ FFFF//
Uncertain: 0x4000_0000 TO 0x7FFF_FFFF

3414

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL//
Bad: 0x8000_0000 TO 0xFFFF_FFFF#Output_MethodResult :="Productionline_Data".MethodListOpenDoor.MethodResultList[0];IF #Done = TRUE THEN
IF #MethodResult < 16#8000_0000 THEN
#State := #State + 1;
ELSE//server method did not run successfully#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#' Error at server method';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := "Productionline_Data".MethodListOpenDoor.MethodStatusList[0];#OPC_UA_MethodCall_Instance(REQ := #Req,
ConnectionHdl:="Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdl :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls[0],InputArguments := "Productionline_Data"."MethodListOpenDoor"."Method".Inputs,
OutputArguments :="Productionline_Data"."MethodListOpenDoor"."Method".Outputs,
Done => #Done,
Busy => #Busy,
Error => #Error
Status => "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0],MethodResult :="Productionline_Data"."MethodListOpenDoor".MethodResultList[0]);END_IF;
5: // case 5, release method handle
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_MethodReleaseHandleList_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdlCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls,

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3415

通信
6.3 OPC UA
SCL
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#Mem_Status := #Status;
IF "Productionline_Data"."MethodListOpenDoor".MethodStatusList[0] = 0 THEN
#State := #State + 1;
ELSE
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#Output_Error_Message := WString#'Error at MethodGetHandleList';
END_IF;
END_IF;
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_MethodReleaseHandleList_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
MethodHdlCount :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodCount,
MethodHdls :="Productionline_Configuration".MethodLists."MethodListOpenDoor".MethodHdls,
StatusList := "Productionline_Data"."MethodListOpenDoor".MethodStatusList);
END_IF;
6: // case 6, disconnect from server
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN
#State := #State + 1;
#Mem_Status := #Status;
END_IF;

3416

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
SCL
IF #Error = TRUE THEN
#State := 100;//In case 100, to set REQ of instruction "OPC_UA_Disconnect" to FALSE#Set_REQ_To_FALSE := TRUE;#Mem_Status := #Status;#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout);
END_IF;
7: //case = 7, function block has run successfully#Output_Done := TRUE;#Output_Busy := FALSE;#State := 0;#Mem_Input_REQ := FALSE;#Run := FALSE;#Started := FALSE;
99: // ERROR handling#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
100: // ERROR handling, disconnect from server to release resources (handles)
IF #Set_REQ_To_FALSE = TRUE THEN
#Set_REQ_To_FALSE := FALSE;//set REQ to definitely to FALSE#OPC_UA_Disconnect_Instance(REQ := FALSE,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout);
END_IF;
IF #Busy = FALSE THEN
#Req := TRUE;
ELSE#Req := FALSE;
END_IF;#OPC_UA_Disconnect_Instance(REQ := #Req,
ConnectionHdl := "Productionline_Configuration".Connection.ConnectionHdl,
Timeout :="Productionline_Configuration".Connection.ConnectInfo.SessionTimeout,
Done => #Done,
Busy => #Busy,
Error => #Error,
Status => #Status);
IF #Done = TRUE THEN

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3417

通信
6.3 OPC UA
SCL#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
IF #Error = TRUE THEN
#Output_Error_Message := WString#'Error handling: Resources cannot bereleased!';#Output_Error := TRUE;#Output_Status := #Mem_Status;#State := 0;#Output_Busy := FALSE;#Run := FALSE;#Mem_Input_REQ := FALSE;#Started := FALSE;
END_IF;
END_CASE;
END_IF;

6.3.2

サーバー命令6.3.2.1

メソッド

OPC_UA_ServerMethodPre:サーバーメソッド呼び出しの準備

有効性
以下の「OPC_UA_ServerMethodPre」命令の説明は、ファームウェアバージョン V2.5 以降の S7-1500 CPU に適用されます。

説明
このセクションでは、命令「OPC_UA_ServerMethodPre」について説明します。
命令「OPC_UA_ServerMethodPre」および「OPC_UA_ServerMethodPost」はユーザープロ
グラム内で常にペアで呼び出される必要があるため、命令「OPC_UA_ServerMethodPost」のセクションも考慮してください。

3418

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「OPC_UA_ServerMethodPre」のパラメータ
表 6-20

命令「OPC_UA_ServerMethodPre」のパラメータ

パラメータ

宣言

データタイプ 意味

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、
まだ完了していない、または
まだ開始していません。
• 1:命令の実行がエラーなしで完了しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されていま
す。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラーコード」を参照してください。

UAMethodCalled

Output

BOOL

提供されたメソッドが OPC UA
サーバーによって呼び出されています。

UAMethod_InParameter InOuts

VARIANT提供されたメソッドに対する入力パラメータを含むタグへのポインタ。

Status のエラーコード「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3419

通信
6.3 OPC UA
次の表では、エラーコードの各種カテゴリについて説明します。
表 6-21

Status のエラーコード

エラーコード説明(16 進数の値)
0000_0000

命令が正常に終了しました。

8xxx_xxxx

OPC UA 固有のエラー

Axxx_xxxx

PLCopen 固有のエラー

B080_C300

リソース不足B08x_yz00

SIMATIC 固有のエラー

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

タグの宣言
命令「OPC_UA_ServerMethodPre」のインスタンス、および命令のパラメータに値を供給するためのタグを宣言します。OPC UA クライアントへのメソッド提供のプログラム例 (ページ 3427)も参照してください。

3420

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
宣言では、以下の点が重要です。
• 呼び出しファンクションブロック内に、命令「OPC_UA_ServerMethodPre」をマルチイ
ンスタンスとして作成します。
注記
マルチインスタンスの名前
マルチインスタンスには「OPC_UA_ServerMethodPre_Instance」と命名する必要があります。この名前を付けないと、メソッドがサーバー上で作成されません。
ドラッグ＆ドロップで、命令をフォルダ[命令|通信|OPC UA|OPC UA サーバー]からエディタに移動します。
次に、[マルチインスタンス]をクリックします。
• サーバーメソッドに 1 つ以上の入力パラメータがある場合は、名前が「UAMethod_InParameters」のタグを宣言する必要があります。
最初に、サーバーメソッドの入力パラメータに対して PLC データタイプ(UDT)を作成します。
それから、タグ「UAMethod_InParameters」に対してこの UDT を使用します。
この例では、このデータタイプを「UDT_OpenDoorInArguments」と命名し、エレメン
ト Number を含めています。
代替手順
データタイプ「Struct」をタグ「UAMethod_InParameters」に割り当てることも可能です。この場合、サーバーメソッドの入力パラメータに応じて(同名かつ同じデータタ
イプで)、このデータタイプのコンポーネントを作成します。

この命令の呼び出し
命令「OPC_UA_ServerMethodPre」はオペレーティングシステムに照会し、サーバーメソ
ッドが呼び出されたかどうかを識別します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3421

通信
6.3 OPC UA
クライアントによってサーバーメソッドが呼び出された場合、命令「OPC_UA_ServerMethodPre」がサーバーメソッドの入力パラメータを提供します。

データタイプの割り当て(SIMATIC – OPC UA)
メソッドの入力および出力パラメータについては、セクション「AUTOHOTSPOT」に記載されている、使用可能なデータタイプのルールに関する説明をお読みください。
注記
構造化データタイプへのネスト配列の供給
構造化データタイプ(Struct/UDT)に配列が含まれる場合、OPC UA サーバーはこの配列の長さに関する情報を提供しません。
このような構造体をサーバーメソッドの入力または出力パラメータとして使用する場合は、
メソッド呼び出し時にネスト配列に正しい長さを確実に供給する必要があります。
このルールに従わない場合、メソッドが失敗して、エラーコード「BadInvalidArgument」
が出力されます。

OPC_UA_ServerMethodPost:サーバーメソッド呼び出しの後準備

有効性
以下の「OPC_UA_ServerMethodPost」命令の説明は、ファームウェアバージョン V2.5 以
降の S7-1500 CPU に適用されます。

説明
このセクションでは、命令「OPC_UA_ServerMethodPost」について説明します。
命令「OPC_UA_ServerMethodPre」および「OPC_UA_ServerMethodPost」はユーザープロ
グラム内で常にペアで呼び出される必要があるため、命令「OPC_UA_ServerMethodPre」のセクションも考慮してください。

3422

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA「"OPC_UA_ServerMethodPost"」のパラメータ
表 6-22

命令「OPC_UA_ServerMethodPost」のパラメータ

パラメータ

宣言

データタイプ 意味

Done

Output

BOOL

実行のステータス:• 0:命令の実行が中止された、
まだ完了していない、または
まだ開始していません。
• 1:命令の実行がエラーなしで完了しました。

Busy

OutputBOOL

実行ステータスパラメータ:• 0:命令が実行されていません。
• 1:命令が現在実行されていま
す。

Error

OutputBOOL

エラー表示• 0:エラーは発生していません。
• 1:エラーが発生しました。
「Status」パラメータを参照。

Status

Output

DWORD

エラーの原因については、下記の「Status のエラーコード」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3423

通信
6.3 OPC UA
パラメータ

宣言

データタイプ 意味

UAMethod_Result

Input

DWORD

ユーザープログラムによって提供される、OPC UA サーバーのエラーコード。
推奨事項:0xFF で始まるエラー
コードのフィードバックメッセージを使用してください。OPC
UA では、以下の領域が定義されます:• Good:0x0000_0000～
0x3FFF_ FFFF
• Uncertain:0x4000_0000～
0x7FFF_FFFF• Bad:0x8000_0000～
0xFFFF_FFFF
クライアントによっては、領域「Good」および「Uncertain」のコードが出力されない場合があります。

UAMethod_Finished

Input

BOOL

提供されるメソッドが実行されている場合、このパラメータの値を TRUE にセットします。

UAMethod_OutParamet InOut

VARIANTers

提供されたメソッドに対する入力パラメータを含むタグへのポインタ。

Status のエラーコード「Status」パラメータは、命令の実行中に発生したエラーに関する情報を提供します。
次の表では、エラーコードの各種カテゴリについて説明します。
表 6-23

Status のエラーコード

エラーコード説明(16 進数の値)

3424

0000_0000

命令が正常に終了しました。

8xxx_xxxx

OPC UA 固有のエラー

Axxx_xxxx

PLCopen 固有のエラー
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
エラーコード説明(16 進数の値)
B080_C300

リソース不足B08x_yz00

SIMATIC 固有のエラー

その他のエラーコードについては、エラーコード (ページ 3351)を参照してください。

タグの宣言
命令「OPC_UA_ServerMethodPost」のインスタンス、および命令のパラメータに値を供給するためのタグを宣言します。OPC UA クライアントへのメソッド提供のプログラム例 (ページ 3427)も参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3425

通信
6.3 OPC UA
宣言では、以下の点が重要です。
• 呼び出しファンクションブロック内に、命令「OPC_UA_ServerMethodPost」をマルチインスタンスとして作成します。
注記
マルチインスタンスの名前
マルチインスタンスには「OPC_UA_ServerMethodPost_Instance」と命名する必要があります。この名前を付けないと、メソッドがサーバー上で作成されません。
ドラッグ＆ドロップで、命令をフォルダ[命令|通信|OPC UA|OPC UA サーバー]からエディタに移動します。次に、[マルチインスタンス]をクリックします。
• サーバーメソッドに 1 つ以上の出力パラメータがある場合は、名前が「UAMethod_OutParameters」のタグを宣言する必要があります。
最初に、サーバーメソッドの出力パラメータに対して PLC データタイプ(UDT)を作成します。
それから、タグ「UAMethod_OutParameters」に対してこの UDT を使用します。
この例では、このデータタイプを「UDT_OpenDoorOutArguments」と命名します。出
力パラメータは Result のみです。
代替手順
データタイプ「Struct」をタグ「UAMethod_OutParameters」に割り当てることも可能です。この場合、サーバーメソッドの出力パラメータに応じて(同名かつ同じデータ
タイプで)、このデータタイプのコンポーネントを作成します。

図 6-1

タグの宣言

この命令の呼び出し「OPC_UA_ServerMethodPost」命令を使用して、サーバーメソッドが実行されていること、および出力パラメータの値が有効であることをオペレーティングシステムに通知しま
す。

3426

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA

データタイプの割り当て(SIMATIC – OPC UA)
メソッドの入力および出力パラメータについては、セクション「AUTOHOTSPOT」に記載されている、使用可能なデータタイプのルールに関する説明をお読みください。
注記
構造化データタイプへのネスト配列の供給
構造化データタイプ(Struct/UDT)に配列が含まれる場合、OPC UA サーバーはこの配列の長さに関する情報を提供しません。
このような構造体をサーバーメソッドの入力または出力パラメータとして使用する場合は、
メソッド呼び出し時にネスト配列に正しい長さを確実に供給する必要があります。
このルールに従わない場合、メソッドが失敗して、エラーコード「BadInvalidArgument」
が出力されます。

OPC UA クライアントへのメソッド提供のプログラム例

サーバーメソッドのプログラム例
このセクションには、プログラム例「OpenDoor」の完全なプログラムコードが記載されています。
この例は、ユーザープログラムが命令「OPC_UA_ServerMethodPre」および「OPC_UA_ServerMethodPost」を使用する方法を示しています。
これらの命令については、セクション OPC_UA_ServerMethodPre:サーバーメソッド呼び出しの準備 (ページ 3418) および OPC_UA_ServerMethodPost:サーバーメソッド呼び出しの後準備 (ページ 3422)で説明されています。
このプログラムは、OPC UA クライアントにサーバーメソッドを提供します。入力パラメータ「Number」の値が「1」の場合、プログラムは出力パラメータ「Result」を値「1」に設定します。
例を分かりやすく単純にするために、詳細なエラー評価(「Status」パラメータ)は含めていません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3427

通信
6.3 OPC UA
プログラム構造

このプログラムは、次のセクションに分かれています。
1. サーバーメソッドがクライアントによって呼び出されたかどうかを識別する「OPC_UA_ServerMethodPre」命令の呼び出し。
2. サーバーメソッドが呼び出されていた場合、サーバーメソッドが実行されます。これにより、メソッドが OPC UA クライアントによって呼び出される際の実際の機能が定義されます。
3. サーバーメソッドの完了時に、命令「OPC_UA_ServerMethodPost」が呼び出されます。このセクションは、サーバーメソッドが実行されたことをオペレーティングシステムに通知します。

宣言
下図は、このプログラム例のローカルタグの宣言を示しています。

プログラム
以下のプログラムは、OPC UA クライアントにユーザープログラム内で実行されるメソッド(サーバーメソッド)を提供するための OPC UA 命令の使用方法を示しています。
「OPC_UA_ServerMethodPre」命令の呼び出し

最初に、OPC UA クライアントによってサーバーメソッドが呼び出されたかどうかについてオペレーティングシステムに紹介するために、「OPC_UA_ServerMethodPre」命令が呼び出されます。

3428

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UA
サーバーメソッドが呼び出されていた場合、タグ「#Method_Called」は「TRUE」です。
「OPC_UA_ServerMethodPre」命令も正常に実行されていた場合は(#Pre_Done = TRUE)、タグ「#Started」が値「TRUE」に設定されます。
サーバーメソッド

タグ「#Started」の値が「TRUE」の場合、これによって実際のユーザープログラムが開始されます。
このセクションには、すべての種類のプログラミングオプションを使用できます。入力または出力プロセス値の読み取り、グローバルデータブロックへのアクセス。ファンクショ
ンおよびファンクションブロックの呼び出しなどが可能です。
アプリケーションプログラムは、複数回のサイクルにわたる場合があります。
ユーザープログラムの終了を通知するには、タグ「#Method_Finished」を「TRUE」に設定します。
「#Method_Result」を使用して、命令「OPC_UA_ServerMethodPost」のブロックパラメー
タ「UAMethod_Result」で使用する自己定義のエラーコードを転送します。
「OPC_UA_ServerMethodPost」命令の呼び出し

ユーザープログラムが実行されたという状態を保存するために、タグ「#Method_Finished」が設定されます(サーバーメソッド)。
命令「OPC_UA_ServerMethodPost」内でこのタグを使用して、サーバーメソッドが実行されたかどうかをオペレーティングシステムに通知します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3429

通信
6.3 OPC UA
その後、オペレーティングシステムはメソッドを呼び出したクライアントへの確認を引き継
ぎます。

3430

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.3 OPC UASCLREGION PRE
IF #Started = FALSE AND #Method_Finished = FALSE THEN
#OPC_UA_ServerMethodPre_Instance(Done => #Pre_Done,
Error => #Pre_Error,
UAMethod_Called => #Method_Called,
UAMethod_InParameters := #UAMethod_InParameters);
IF #Pre_Error THEN
#Error_Message := WString#'Error at OPC_UA_ServerMethodPre';END_IF;
IF #Pre_Done AND #Method_Called THEN
#Started := TRUE;#Error_Message := WString#'';
END_IF;
END_IF;
END_REGIONREGION FUNCTIONALITY// このデモメソッドの目的は、サーバーメソッドの基本構造のデモンストレーションです
IF #Started = TRUE THEN// このデモサーバーメソッドは、入力パラメータ#UAMethod_InParameters.Number が 1 であるかどうかをチェックします// 1 である場合、サーバーメソッドは出力パラメータを設定します
IF #UAMethod_InParameters.Number = 1 THEN//ドアが開けられるように、doorLocked を false に設定します#doorLocked := FALSE;//出力パラメータの値を設定します//これは単なる一例です#UAMethod_OutParameters.Result := 1;#Method_Result := 16#0000_0000;#Method_Finished := TRUE;#Started := FALSE;
ELSE#Error_Message := WString#'Input-Parameter Number must be 1 to run this example
server method';//呼び出し元の OPC UA クライアントにエラーコードを返します//この例では、16#FFFF_FFFF = 「入力パラメータ番号が 1 でなければならない」と定義します#Method_Result := 16#FFFF_FFFF;#Started := FALSE;#Method_Finished := TRUE;
END_IF;
END_IF;
END_REGION

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3431

通信
6.4 Web サーバーSCL
REGION POST
IF #Method_Finished = TRUE THEN
#OPC_UA_ServerMethodPost_Instance(UAMethod_Result := #Method_Result,
UAMethod_Finished := #Method_Finished,
Done => #Post_Done,
Error => #Post_Error,
UAMethod_OutParameters := #UAMethod_OutParameters);
IF #Post_Error = TRUE THEN
#Error_Message := WString#'Error at OPC_UA_ServerMethodPost';#Method_Finished := FALSE;
END_IF;
IF #Post_Done = TRUE THEN
#Method_Finished := FALSE;
END_IF;
END_IF;
END_REGION

メソッドの削除
サーバーメソッドが不要になり、削除する場合は、対応する FB の呼び出しだけでなく、インスタンスデータブロックも削除する必要があります。
インスタンスデータブロックが削除されないと、メソッドがアドレス空間内に表示されます。タグへは値が供給されません。

6.4

Web サーバー

6.4.1

WWW:ユーザーページの同期

6.4.1.1

WWW:ユーザーページの同期

説明
命令 WWW は、CPU の Web サーバーを初期化するか、またはユーザー定義 Web ページ、
すなわち、「ユーザーページ」を CPU のユーザープログラムと同期させます。

3432

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.4 Web サーバー
Web サーバーとユーザー Web ページを一緒に使用することにより、CPU は、Web ブラウ
ザを使用して、CPU の設計済み Web ページに自由にアクセスすることができます。
ユーザー Web ページ内のスクリプト命令(Javascript など)および HTML コードを使用して、それ以降の処理のために Web ブラウザ経由でデータを CPU に転送し、CPU のオペランド
領域のデータを Web ブラウザで表示します。ユーザープログラムと Web サーバーを同期させるため、さらに、初期化を行うために、ユーザープログラムで命令「WWW」を呼び出
します。

初期化
ユーザー Web ページは、CPU による処理のために、データブロック内に「パッケージ化」
されます。構成中に、ソースファイル(HTML ファイル、画面、JavaScript ファイル、...)か
ら適切なデータブロックを生成する必要があります。Web コントロール DB には特殊なロールがあります(既定:DB 333)。これはステータス情報や制御情報が格納している上に、コード化された Web ページがある追加のデータブロックにリンクしています。コード化された Web ページを有するデータブロックではフラグメント DB が呼び出されます。
データブロックが CPU にダウンロードされている場合、CPU はユーザー Web ページがその内部にコード化されていることを「認識」していません。たとえば、スタートアップ OB の命令「WWW」は CPU に対し、どの DB が Web コントロール DB であるかを通知します。
この初期化の後、ユーザーページには Web ブラウザを使用してアクセスできます。

同期
ユーザープログラムとユーザーページが相互に対話を行う場合は、周期的プログラム部分で命令「WWW」を使用する必要があります。
ユーザープログラムと Web ページ間の操作例• 受信されたデータのチェック• データをアセンブルし、Web ブラウザに戻して要求を作成する
この場合、現在のステータス情報を評価できなければならず、Web サーバーは Web ブラ
ウザによって要求された Web ページのリリースなど、コントロール情報を受信する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3433

通信
6.4 Web サーバーパラメータ
次の表に、「WWW」命令のパラメータを示します。
パラメー
タ

宣言

データタ メモリ領域
イプ

説明

CTRL_DB

Input

DB_WW

I、Q、M、

ユーザーページを記述するデータブ

W

D、L、またロック(Web コントロール DB)

は定数
RET_VAL

Output

INT

I、Q、M、

エラー情報

D、L
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

RET_VAL パラメータ
エラーコー 説明ド
(W#16#...)
0000

エラーは発生しませんでした。ユーザープログラムによってリリースする必要がある Web ページ要求はありません。

00xy

x:Web コントロール DB (CTRL_DB)の初期化中にエラーが発生したかどうかを示します。
x=0:エラーは発生しませんでした。
x=1:エラーが発生しました。エラーは Web コントロール DB のバイト
「CTRL_DB.last_error」でコード化されます。Web コントロール DB の説明を参照してください。
y:保留中の要求数。複数の要求が可能です(たとえば、要求「0」と「1」が保留中:y="3".
y="1":要求「0」y="2":要求「1」y="4":要求「2」y="8":要求「3」

3434

803A

CPU に指定した Web コントロール DB がありません。

8081

Web コントロール DB のバージョンおよび形式が不正。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.4 Web サーバー
エラーコー 説明ド
(W#16#...)
8082

Web サーバーが無効です。

80C1

2 または 4 個の Web アプリケーションのみを実行できるため、たとえばWeb アプリケーションを初期化するリソースがありません。

例
例は、WWW のプログラム例 (ページ 3435)を参照してください。
追加情報と、例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

6.4.1.2

WWW のプログラム例

概要
次の例では、ユーザー定義 Web サイトを CPU S7-1500 のプログラム例と同期させ、Web
サーバーを使用してプログラム例のテストを行います。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3435

通信
6.4 Web サーバー

要件
データを格納するために、19 個のタグをグローバルデータブロックに作成していること。

パラメータの相互接続 - FB「SLI_FB_www」内
FB「SLI_FB_www」内に以下の相互接続を作成します。OB1 でその FB を呼び出します。
ネットワーク 1:「WWW」命令のパラメータを以下のように相互接続します。

ネットワーク 2:FC「SLI_FC_MainWebProg_www」内に Web サイト用のプログラムを作成します。この後、FB のネットワーク 2 で、FC「SLI_FC_MainWebProg_www」を呼び出し
ます。

3436

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.4 Web サーバー

パラメータの相互接続 - FC「SLI_FC_SetTOD_www」内
FC「SLI_FC_SetTOD_www」内で、時刻割り込み OB (OB11)を使用するプログラムを作成します。以下の相互接続を作成します。
ネットワーク 1:その FC 内で、以下のローカルタグを命令「RD_SYS_T」および「T_ADD」と相互接続します。

ネットワーク 2:次に、時刻割り込み OB 設定用のタグの相互接続が行われます。
ローカルタグ「#startDateTime」 (データタイプ「Date_And_Time」)は、開始時間を時刻割
り込み OB へ転送します。

ネットワーク 3:次に、時刻割り込み OB の有効化用のタグの相互接続が行われます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3437

通信
6.4 Web サーバー

パラメータの相互接続 - OB「SLI_todOB_www」内
時刻割り込み OB「SLI_todOB_www」 (OB11)内で、タグ「tankLevel」のサイクリック増
加用の以下の相互接続を作成します。

パラメータの相互接続 - FC「SLI_FC_MainWebProg_www」内
FC「SLI_FC_MainWebProg_www」内に以下の相互接続を作成します。
プログラム「SLI_FC_MainWebProg_www」によって、モータ、バルブ、およびタンク充填を制御することができます。これに加えて、さまざまな割り込みステータスの出力もコントロールを可能にさせます。プログラムは、Web サーバー経由で制御されます。
ネットワーク 1:FC「SLI_FC_MainWebProg_www」内で FC「SLI_FC_SetTOD_www」を呼び出します。

ネットワーク 2:次に、バルブを開くためのタグの相互接続が行われます。

ネットワーク 3:次に、モータを開始するためのタグの相互接続が行われます。

3438

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.4 Web サーバー

ネットワーク 4:次に、割り込みステータス「1」クエリ用のタグの相互接続が行われます。

ネットワーク 5～8:次に、割り込みステータス「2」クエリ用のタグの相互接続が行われます。
その他の割り込みステータスを照会するためのタグの相互接続を同じ方法で行います。

ネットワーク 9:次に、モータをリセットし、タンクを充填するためのタグの相互接続を行います。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3439

通信
6.4 Web サーバー
ネットワーク 10:次に、他のすべての値(BOOL)をリセットするためのタグの相互接続を行います。

CPU プロパティの設定
CPU プロパティで、以下の設定を行います。
• [... |PROFINET インターフェース|Web サーバへのアクセス]で、Web サーバーアクセスを有効化します。
• [CPU のプロパティ|Web サーバー]で、モジュール用 Web サーバーを有効化します。
• セクション[ユーザー管理]で、読み取りおよび書き込み権限を持つ新しいユーザーを作成します。
• セクション[ユーザーページ]で以下の設定を行います。
– [HTML ファイルパス]を設定します。
注記
その格納パスは、Sample Library for Instructions (SLI)のパスと同一であることが必要です。フォルダ名は「SLI_html」です。例: 「C:\TIA\_library\SLI_html」。
– 開始 HTML ページ用のテキスト「index.html」を入力します。
– アプリケーションの場合、名前「WWW sample」を入力します。
– [ブロックの作成]ボタンをクリックします。この後、Web DB (333)と Fragment DB(334)が作成されます。

WWW の結果
ノーマルオープン(「executeWWW」)がシグナル状態「TRUE」を提供すると、「WWW」命令が実行されます。ユーザー定義 Web サイトを記述するデータブロックの番号は、入力パラメータ CTRL_DB 「333」()経由で格納されます。「WWW」命令は、CPU の Web サーバーのユーザー定義 Web サイトを初期化し、直ちにプログラム例を同期します。
出力パラメータ RET_VAL 「returnValueWWW」()は、処理がエラーなしで行われていることを示します。

3440

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.4 Web サーバー

Web サーバーの結果[インターネットブラウザ|Web サーバーの IP]経由で、Web サーバーを呼び出します。ユーザー名、またはユーザー名およびパスワードでログインします。
Web サーバーの「ユーザーページ」に、ユーザーによって定義された Web サイトへのリンクが表示されます。

プログラム例の Web サイトで、タグを出力し、新しい値をタグへ転送することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3441

通信
6.4 Web サーバー

HTML 文書で使用されるファンクション
下に、タグが HTML 文書のソースコードに転送されているプログラム例で使用されている
ファンクションの抜粋が表示されます。ファンクションごとに、1 つのタグが HTML 文書内の 1 つの呼び出しによって実装され、HTML 文書内の関連位置でのその他の 1 つの呼び出
しによって使用されます。
ファンクション

HTML 文書内での呼び出しのため HTML エレメント内での出力のため

データ出力:<!-- AWP_In_Variable:="SLI_gDB_www".tankLevel:
Name='"SLI_gDB_www".tankLevel' -->列挙(値置換):<!-- AWP_Enum_Def
Name="OpValvValue"
Values='0:"Closed",
1:"Opened"' -->3442<!-- AWP_Enum_Ref
Name='"SLI_gDB_www".valveOutp
ut' Enum="OpValvValue" ->:="SLI_gDB_www".valveOutput:

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
ファンクション

HTML 文書内での呼び出しのため HTML エレメント内での出力のため

値の変更(INT):<!-- AWP_In_Variable<form method="post"
Name='"SLI_gDB_www".flowrate' action="" onsubmit="return-->
check();"><input type="text"
name='"SLI_gDB_www".flowrate'
size="10px"/><input class="button1"
type="submit" value="Set
flowrate"/></form>値の変更(BOOL):<!-- AWP_Enum_Def
Name="ResetValue"
Values='0:"Off", 1:"On"' --><form method="post"
action=""><input class="button1"
type="submit" value="Reset"/><input type="hidden"
name='"SLI_gDB_www".reset'
size="34px" value="1"/></form>プログラムコード
追加情報と、上記の名前付きの例のプログラムコードは、命令のサンプルライブラリ (ページ 25)を参照してください。

6.5

通信プロセッサ

6.5.1

SIMATIC NET CM/CP

6.5.2

ポイントツーポイント

6.5.2.1

フリーポート通信の概要
STEP 7 では、ユーザープログラムで指定されたプロトコルによるフリーポート通信で使用できる拡張命令が提供されます。 この命令は 2 つのカテゴリに分類できます。
• 設定命令• 通信命令TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3443

通信
6.5 通信プロセッサ

注記
CPU の容量フリーポート命令は、データレコードの読み出し/書き込みによって通信モジュールとの通信を行います。
そのため、命令を使用するときに、データレコードの読み出しと書き込みのための CPU の
容量をチェックする必要があります。
複数の命令が CPU 上で同時にデータレコードの読み出し/書き込みを行う必要がある場合、ユーザープログラムで各命令の呼び出しの間に時間オフセットを作成する必要が生じる場合があります。

設定命令
ユーザープログラムがフリーポート通信を開始するには、その前に、通信インターフェー
スとデータの送受信用のパラメータを設定する必要があります。
インターフェースの設定とデータの設定は、デバイス構成で CM ごとに設定するか、ユー
ザープログラムの以下の命令で設定することができます。
• Port_Config (ページ 3450)• Send_Config (ページ 3454)• Receive_Config (ページ 3456)• P3964_Config (ページ 3463)
通知
デバイス構成 <-> 設定命令
デバイス構成パラメータは、CPU の Power On (電圧の復旧)ごとに、CM に転送されます。
設定命令のパラメータは、ユーザープログラムでの定義に従って CM に転送されます。
デバイス構成のパラメータは、設定命令のパラメータと同期していません。すなわち、設
定命令のパラメータは CPU デバイス構成には適用されません。
ユーザープログラムで、CM で適用するパラメータと、パラメータを適用する時点を決定
します。

3444

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

通信命令
ユーザープログラムは、フリーポート通信用の命令を使用して通信インターフェースとのデータの送受信を行います。 CM は、通信ステーションとのデータの送受信を行います。
• Send_P2P (ページ 3465)• Receive_P2P (ページ 3470)
注記
データの整合性• 送信するデータが整合性を保持して伝送される場合は、DONE が Send_P2P 命令によって設定されるまでは、REQ パラメータでの立ち上がりエッジ後にデータを変更することはできません。
• 受信データを整合性を保持して読み出す場合、受信データは、NDR = TRUE のサイクルでのみ評価できます。

受信バッファは追加命令でリセットすることができ、特殊な RS232 信号を照会して設定することが可能です。
• Receive_Reset (ページ 3473)• Signal_Get (ページ 3474)• Signal_Set (ページ 3476)
以下の命令がモジュールでサポートされている場合は、以下の命令を使用して拡張ファン
クションを読み出しまたは書き込むことができます。
• Get_Features (ページ 3478)• Set_Features (ページ 3479)
すべてのフリーポート命令は非同期で動作します。 このため、フリーポート命令は、DONE
出力パラメータによって実行の完了が示されるまで、呼び出す必要があります。
ユーザープログラムは、照会アーキテクチャを使用して送信および受信ステータスを判定できます。Send_P2P および Receive_P2P は同時に実行可能です。 通信モジュールは、モジュール固有の最大バッファサイズに達するまで、要求に従って送信および受信データを
バッファリングします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3445

通信
6.5 通信プロセッサ

注記
ビット時間単位の分解能
各パラメータに対して設定されたデータ伝送率で、ビット時間数を指定します。 パラメ
ータをビット時間で指定すると、パラメータがデータ伝送率と無関係になります。 ビット
時間単位のすべてのパラメータでは、最大 65535 までの数を指定できます。

6.5.2.2

命令の使用
フリーポート命令は、受信データ、または、送信プロセスの伝送の終了を照会するために、周期的に呼び出す必要があります。
データ量に応じて、データ伝送は複数の呼び出し(プログラムサイクル)にわたって行われる場合があります。
コマンドが DONE = TRUE または NDR = TRUE で完了する場合、コマンドはエラーなしで実行されたことになります。
注記
STATUS のバックアップ
DONE、NDR、ERROR、および STATUS パラメータは、1 つのブロックサイクルでのみ使用できます。 このため、STATUS を表示するには、それを空きのデータ領域にコピーする必要があります。

マスタ
マスタの代表的なシーケンス
1. Send_P2P 命令は、CM への伝送をトリガします。
データ伝送は、REQ 入力での立ち上がりエッジで開始されます。
2. その後のサイクルで Send_P2P 命令が実行されて、伝送プロセスのステータスが照会されます。
3. Send_P2P 命令が、DONE 出力で、伝送が完了したことを通知すると、ユーザーコードは応答の受信準備を行うことができます。
4. Receive_P2P 命令が応答を照会するために繰り返し実行されます。 CM が応答データを取得
すると、Receive_P2P 命令はその応答を CPU にコピーし、NDR 出力で新規データが受信されたことを通知します。
5. ユーザープログラムは応答を処理することができます。
6. ステップ 1 に戻って、シーケンスを繰り返します。

3446

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

スレーブ
スレーブの代表的なシーケンス
1. ユーザープログラムが、サイクルごとに Receive_P2P 命令を実行します。
2. CM が要求を受信すると、Receive_P2P は、NDR 出力で新規データが使用できることを通知
し、要求は CPU にコピーされます。
3. ユーザープログラムが要求を処理し、応答を作成します。
4. 応答が Send_P2P 命令でマスタに返されます。
5. 送信プロセスが実際に行われるようにするために、Send_P2P 命令を繰り返し実行する必要があります。
6. ステップ 1 に戻って、シーケンスを繰り返します。

スレーブは、応答待機中のタイムアウトのためにプロセスをキャンセルする前に、マスタが伝送を受信するのに十分な回数の Receive_P2P の呼び出しを行う必要があります。 そのため、タイムアウト設定が経過する前にマスタが伝送を受信できるような短いサイクルタ
イムのサイクル OB 内から、ユーザープログラム Receive_P2P を呼び出すことができます。 OB サイクルタイムが、マスタのタイムアウト設定内で 2 回の実行が行われるように設定されている場合、ユーザープログラムは一切の損失なしですべての伝送を受信することができます。

6.5.2.3
表 6-24

フリーポート操作の一般パラメータ
Freeport 命令の一般的な入力パラメータ

パラメータ

説明

REQ

データ伝送は、REQ 入力の立ち上がりエッジで開始されます。コマンドが終了した後(DONE または ERROR)でないと、REQ の次のエッジは作成できません。データ伝送
は、データの量によって数回の呼び出し(プログラムサイクル)がかかることがあります。
STEP 7 では、ユーザープログラムに Freeport 命令を追加すると、インスタンス DB の指定(STEP 7 による対応インスタンス DB の作成)を促すプロンプトが表示されます。
PtP 命令の呼び出しごとに、一意の DB を使用します。

PORT

ポートアドレスは、通信モジュールの構成時に割り当てられます。PORT パラメータ
は、特定の通信モジュールへの割り当てを命令に通知します。
構成後に、標準ポートのシンボル名を選択できます。割り当てられた CM ポート値
は、S7-1200/1500 の場合はデバイス構成の「ハードウェア ID」プロパティ、
S7-300/400 の場合は「入力アドレス」です。シンボルポート名は、シンボルテーブ
ルで割り当てられます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3447

通信
6.5 通信プロセッサ
Freeport 命令の出力パラメータ DONE、NDR、ERROR、および STATUS は、Freeport ファ
ンクションの実行ステータスを示します。
表 6-25出力パラメータ DONE、NDR、ERROR、および STATUS

パラメータ

データタイプ

標準

説明

DONE

Bool

FALSE

最後の要求がエラーで終了したことを示すために、1 サイ
クルの間 TRUE に設定されます。それ以外の場合は、
FALSE に設定されます。

NDR

Bool

FALSE

新しいデータが受信されたことを示すために、1 サイクルの間 TRUE に設定されます。それ以外の場合は、FALSE に設定されます。

ERROR

Bool

FALSE

最後の要求がエラーで終了したことを示すために、1 サイ
クルの間 TRUE に設定されます。対応するエラーコード
は、STATUS にあります。それ以外の場合は、FALSE に設定されます。

STATUS

Word

16#0000 また 結果ステータス
は 16#7000• DONE または NDR ビットが設定されている場合、
STATUS が 0/16#7000 または特定のエラーコードに設定されます。
• ERROR ビットが設定されている場合、STATUS にエラー
コードが表示されます。
• 上記のビットがどれも設定されていない場合、命令は
ファンクションの現在のステータスを説明するステー
タス結果を返します。
STATUS の値は、この命令を(同一のポートアドレスを使用
して)再度呼び出すまで有効です。

3448

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
表 6-26

COM_RST 入力/出力パラメータ

パラメータ

データタイプ

標準

説明

COM_RST

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。次に、COM_RST の設定はFALSE に戻ります
注記:スタートアップ中に COM_RST を TRUE に設定する必要があり、その後にパラメータを変更することはできません(つまり、命令を呼び出す時に値を割り当てません)。
COM_RST は、インスタンス DB の初期化後の命令によってリセットされます。

注記
パラメータ DONE、NDR、ERROR、および STATUS は 1 サイクルに対してのみ設定されます。

表 6-27

共有エラーコード

エラーコード説明

16#0000

エラーなし

16#7000

ファンクションがアクティブではありません

16#7001

要求後に初期呼び出しが開始されました。

16#7002

要求後に後続呼び出しが開始されました。

16#8x3A

パラメータ x のポインタが無効

表 6-28STATUS パラメータの共有エラークラス

クラスの説明エラークラス

ポートの構成16#81Ax

インターフェースの構成で頻繁に発生するエラーの説明

送信構成

16#81Bx

送信構成のエラーの説明

受信構成

16#81Cx

受信構成のエラーの説明

送信

16#81Dx

送信中のランタイムエラーの説明

受信

16#81Ex

受信中のランタイムエラーの説明

RS232 の付随信号

16#81Fx

信号処理との接続のエラーの説明

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

説明

3449

通信
6.5 通信プロセッサ

6.5.2.4

Port_Config: PtP 通信ポートを設定
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Port_Config 命令(ポートの構成)使用して、データ伝送率などのパラメータをユーザープロ
グラムでランタイム時に変更することができます。CM 内のデータ保留は Port_Config の実
行で削除されます。
Port_Config の構成の変更は CM に保存され、CPU には保存されません。電圧が復旧すると、CM はデバイス構成に保存されたデータで構成定義されます。

パラメータ
パラメー 宣言タ

REQ

データタイプS71200/15
00

IN

既定

説明

FALSE

この入力での立ち上がりエッジ時に CM へのデ

S7300/400/
WinAC

Bool

ータ伝送が開始されます。
PORT

IN

PORT

Word

0

(UInt)

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW 識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パ
ラメータに、HWCN で割り当てられた入力ア
ドレスが割り当てられます。

PROTOCO IN
L

UInt

Word

0

プロトコル
• 0 = Freeport プロトコル• 1 = プロトコル 3964(R)3450

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言
タ

BAUD

IN

データタイプS71200/15
00

S7300/400/
WinAC

UInt

Word

既定

説明

6

ポートのデータ伝送率• 1 = 300 bps• 2 = 600 bps• 3 = 1200 bps• 4 = 2400 bps• 5 = 4800 bps• 6 = 9600 bps• 7 = 19200 bps• 8 = 38400 bps• 9 = 57600 bps• 10 = 76800 bps• 11 = 115200 bps

PARITY

IN

UInt

Word

1

ポートのパリティ:• 1 = パリティなし• 2 = 偶数パリティ• 3 = 奇数パリティ• 4 = マークパリティ• 5 = スペースパリティ• 6 = 任意DATABITS IN

UInt

Word

1

文字当たりのビット数:• 1 = 8 データビット• 2 = 7 データビット

STOPBITS IN

UInt

Word

1

ストップビット:• 1 = 1 ストップビット• 2 = 2 ストップビット

FLOWCTR IN

UInt

Word

L

1

フロー制御
• 1 = フロー制御なし• 2 = XON/XOFF• 3 = ハードウェア RTS は常に ON• 4 = ハードウェア RTS 切り替え済み• 5 = ハードウェア RTS は常に ON、DTR/DSR
を無視

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3451

通信
6.5 通信プロセッサ
パラメー 宣言タ

XONCHA

データタイプS71200/15
00

IN

既定

説明

16#0011

XON 文字として機能する文字が指定されます。

S7300/400/
WinAC

Char

R

これは、通常、DC1 文字です(11H)。このパラメータはソフトウェアフロー制御が有効な場合のみ評価されます。

XOFFCHA IN

Char

16#0013R

XOFF 文字として機能する文字が指定されます。
これは、通常、DC3 文字です(13H)。このパラメータはソフトウェアフロー制御が有効な場合のみ評価されます。

WAITIME

IN

UInt

Word

2000

XON 文字の受信後の XOFF 文字の待機時間、または CTS = OFF 後の CTS = ON 信号の待機時間が指定されます(0～65535 ms)。このパラメータはフロー制御が有効の場合にのみ評価されます。

MODE

IN

USInt

Byte

0

動作モード
有効な動作モード以下のとおりです。
• 0 = 全二重(RS232)• 1 = 全二重(RS422) 4 線式モード(ポイントツ
ーポイント)• 2 = 全二重(RS422) 4 線式モード(マルチポイ
ントマスタ; CM PtP (ET 200SP))• 3 = 全二重(RS422) 4 線式モード(マルチポイ
ントスレーブ; CM PtP (ET 200SP))• 4 = 半二重(RS485) 2 線式モード 1)

3452

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言タ

データタイプ

LINE_PRE IN

S71200/15
00

S7300/400/
WinAC

USInt

Byte

既定

説明

0

回線初期状態の受信
有効な初期状態は以下のとおりです。
• 0 = 初期状態「なし」 1)• 1 = シグナル R(A) 5 V、シグナル R(B) 0 V (ブレーク検出)
この初期状態では、ブレーク検出が可能です。
以下とともにのみ選択できます。「全二重(RS422) 4 線式モード(ポイントツーポイント
接続)」および「全二重(RS422) 4 線式モード(マルチポイントスレーブ)」• 2 = シグナル R(A) 0 V/シグナル R(B) 5 V
この初期設定はアイドル状態に相当します(送信動作がアクティブでない)。この初期状態では、ブレーク検出は不可能です。

BRK_DET

IN

USInt

Byte

0

ブレーク検出
以下の設定が許可されています。
• 0 = ブレーク検出が無効• 1 = ブレーク検出が有効

COM_RST IN/OUT

---

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

DONE

OUT

Bool

FALSE

最後の要求がエラーなしで完了した後、1 サイクルの間 TRUE

ERROR

OUT

Bool

FALSE

最後の要求がエラーありで完了した後、1 サイクルの間 TRUESTATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参照)

1)

RS485 の CM 1241 で PROFIBUS ケーブルを使用するために必要な設定。

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3453

通信
6.5 通信プロセッサ

6.5.2.5

Send_Config PtP 送信元を設定
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Send_Config 命令(送信構成)を使用して、ユーザープログラムでランタイム中に送信パラメータ(送信するデータの開始と終了を識別する条件)を変更できます。Send_Config を実行
すると、CM 内のすべての保留中のデータが削除されます。
Send_Config の構成の変更は CM に保存され、CPU には保存されません。デバイス構成に保存されたパラメータは、電圧が CPU または通信モジュールに復旧すると、復元されます。

パラメータ
パラメー 宣言タ

REQ

データタイプ

既定

説明

FALSE

この入力の立ち上がりエッジで構成の変更を有効

S7S71200/15 300/400/
00
WinAC

IN

Bool

にします。
PORT

IN

PORT
(UInt)

Word0

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アド
レスが割り当てられます。

3454

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言タ

RTSONDL IN

データタイプ

既定

説明

0

RTS の有効化から送信データの伝送の開始までのS7S71200/15 300/400/
00
WinAC
UInt

Word

Y

待機時間(ミリ秒)。このパラメータはハードウェ
アフロー制御が有効の場合にのみ有効です。有効な範囲は 0 ～ 65535 ms です。値 0 はファンクシ
ョンを無効にします。

RTSOFFD IN

UInt

Word

0

LY

送信データの伝送から RTS の無効化までの待機時
間(ミリ秒)。このパラメータはハードウェアフロー制御が有効の場合にのみ有効です。有効な範囲
は 0～65535 ms です。値 0 はファンクションを無効にします。

BREAK

IN

UInt

Word

0

このパラメータは、BREAK が各フレームの開始時に、指定されたビット時間数の間、送信されることを指定します。最大値は 65535 ビット時間です。値 0 はファンクションを無効にします。

IDLELINE

IN

UInt

Word

0

このパラメータは、ラインが各フレームの開始前に、指定されたビット時間数の間、アイドルになっていることを指定します。最大値は 65535 ビ
ット時間です。値 0 はファンクションを無効にします。

USR_END INSTRING[2]0エンドデリミタの入力
2 つ以上のエンドデリミタを構成定義することはできません。
エンドデリミタを含むすべてのデータが、構成定義されたフレーム長とは無関係に送信されます。

APP_END INSTRING[5]0追加する文字の入力。
最大 5 文字まで追加できます。

COM_RST IN/OUT

---

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

DONE

OUT

Bool

FALSE

最後の要求がエラーなしで完了した後、1 サイクルの間 TRUE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3455

通信
6.5 通信プロセッサ
パラメー 宣言タ

ERROR

データタイプ

既定

説明

FALSE

最後の要求がエラーありで完了した後、1 サイク

S7S71200/15 300/400/
00
WinAC

OUT

Bool

ルの間 TRUESTATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

6.5.2.6

Receive_Config: PtP 受信先を設定
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Receive_Config 命令(受信構成)を使用して、ユーザープログラムでランタイム中に受信パラメータを変更できます。この命令は、受信データの開始と終了をマークする条件を構成定義します。Receive_Config を実行すると、CM 内のすべての保留中のデータが削除されます。
Receive_Config の構成の変更は、非保持で CM に保存されます。デバイス構成に保存されたパラメータは、電圧が CPU または通信モジュールに復旧すると、復元されます。したがって、デバイス構成に保存されたパラメータを上書きするには、電圧が CPU または通信モジュールに復旧するときに、Receive_Config 命令をユーザープログラムから再度呼び出す必要があります。

3456

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータ
パラメー 宣言タ

REQ

データタイプS71200/15
00

IN

既定

説明

FALSE

この入力の立ち上がりエッジで構成の変更を有効

S7300/400
/
WinAC

Bool

にします。
PORT

IN

PORT

Word

0

(UInt)

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アド
レスが割り当てられます。

RECEIVE_ IN

Variant

Any‑

Receive_Conditions のデータ構造体は、フレーム

CONDITIの開始と終了を識別するのに使用する開始およびONS

終了条件を指定します。

COM_RST IN/OUT

---

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

DONE

OUT

Bool

FALSE

最後の要求がエラーなしで完了した後、1 サイクルの間 TRUE

ERROR

OUT

Bool

FALSE

最後の要求がエラーありで完了した後、1 サイクルの間 TRUESTATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3457

通信
6.5 通信プロセッサ

Receive_P2P 命令の開始条件
Receive_P2P 命令は、デバイス構成または Receive_Config 命令で指定された構成を使用して、Freeport 通信フレームの開始と終了を識別します。フレームの開始は開始条件で定義されます。フレームの開始は、1 つまたは複数の開始条件を使用して識別できます。
ブレークとアイドルラインが有効になると、最初にブレークを満たし、その後にアイドルラインも満たす必要があります。その後、他の条件の 1 つ(開始文字または開始シーケンス)を満たすと、データ伝送が開始されます。
開始条件「任意の文字」は、他の開始条件と組み合わせることはできません。

Receive_Conditions パラメータのデータタイプ構造、パート 1 (開始条件)
表 6-29Receive_Conditions の開始条件の構造

パラメータ

宣言

START.STARTC IN

データ
タイプ

既定

説明

Word

16#0002

開始条件の指定

OND• 01H - 開始文字の検出• 02H - 任意の文字• 04H - 改行の検出• 08H - アイドルラインの検出• 10H - 開始シーケンス 1 の検出• 20H - 開始シーケンス 2 の検出• 40H - 開始シーケンス 3 の検出• 80H - 開始シーケンス 4 の検出開始条件は、値の追加によって組み合わせることができます。

START.IDLETI

IN

Word

16#0028

ME

アイドル状態で新しいフレームの開始が検出されるのに必要なビット時間数(既定値:W#16#28)。条件「アイドルラインの検出」での接続時のみ。
0～FFFFSTART.STARTC IN

Byte

16#0002

条件「開始文字」の開始文字。(既定値:B#16#2)

HAR

3458

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

START.SEQ[1]. IN

データ
タイプ

既定

説明

Byte

0

開始シーケンス 1、文字ごとの比較の無効化/有効化: (既CTL

定値:B#16#0)
以下は、開始文字列の文字ごとの有効化ビットです。
• 01H - 文字 1
• 02H - 文字 2
• 04H - 文字 3
• 08H - 文字 4
• 10H - 文字 5
ビットが特定の文字に対して無効になっている場合、文字列内の当該位置の各文字は有効な開始文字列を表しています(たとえば、1FH = 解釈済みのすべての 5 文
字)。

START.SEQ[1]. IN

Char[5]0

開始シーケンス 1、開始文字(5 文字)

Byte

0

開始シーケンス 2、文字ごとの比較の無効化/有効化。

STR[1] ..START.SEQ[1].STR.
[5]
START.SEQ[2]. IN
CTL
START.SEQ[2]. IN

既定値:B#16#0)
Char[5]0

開始シーケンス 2、開始文字(5 文字)

Byte

0

開始シーケンス 3、文字ごとの比較の無効化/有効化。

STR[1] ..START.SEQ[2].STR.
[5]
START.SEQ[3]. IN
CTL
START.SEQ[3]. IN

既定値:B#16#0
Char[5]0

開始シーケンス 3、開始文字(5 文字)

Byte

0

開始シーケンス 4、文字ごとの比較の無効化/有効化。

STR[1] ..START.SEQ[3].STR.
[5]
START.SEQ[4]. IN
CTL
START.SEQ[4]. IN

既定値:B#16#0
Char[5]0

開始シーケンス 4、開始文字(5 文字)

STR[1] ..START.SEQ[4].STR.
[5]

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3459

通信
6.5 通信プロセッサ例
次のような 16 進コードの受信データを見てみましょう:「68 10 aa 68 bb 10 aa 16」構成
定義済みの開始文字列を以下の表に示します。最初の文字 68H が正常に受信されると、開始文字列が評価されます。4 番目の文字が正常に受信されると(2 つ目の 68H)、開始条件 1が満たされます。開始条件が満たされると、終了条件の評価が開始されます。
開始文字列の処理は、パリティ、フレーミング、文字間の時間間隔のさまざまなエラーによってキャンセルされることがあります。これらのエラーにより、開始条件が満たされな
いため、データの受信が阻止されます(エラーメッセージが出力されます)。
表 6-30

開始条件

開始条件

最初の文字

最初の文字+1

最初の文字+2

最初の文字+3

最初の文字+4

1

68H

xx

xx

68H

xx

2

10H

aaH

xx

xx

xx

3

dcH

aaH

xx

xx

xx

4

e5H

xx

xx

xx

xx

Receive_P2P 命令の終了条件
フレームの終了は、構成定義された 1 つ以上の終了条件の最初の発生によって定義されます。
終了条件は、デバイス構成の通信インターフェースのプロパティまたは Receive_Config 命
令のいずれかで構成定義できます。受信パラメータ(開始および終了条件)は、電圧が CPU
または通信モジュールに復旧するたびにデバイス構成の設定にリセットされます。STEP 7
ユーザープログラムによって Receive_Config が実行されると、設定は Receive_Config のパラメータにセットされます。

3460

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

Receive_Conditions パラメータのデータタイプ構造、パート 2 (終了条件)
表 6-31

Receive_Conditions の終了条件の構造

パラメータ

宣言

データ
タイプ

既定

説明

END.ENDCON

IN

Word

0

このパラメータはフレーム終了の条件を指定します。

D• 01H - 応答タイムアウト• 02H - メッセージタイムアウト• 04H - キャラクタ遅延時間• 08H - 最大フレーム長• 10H - メッセージからのメッセージ長の読み出し(N+LEN+M)• 20H - 終了シーケンス• 40H - 固定フレーム長

END.FIXLEN

IN

Word

1

固定フレーム長:終了条件[固定フレーム長]が選択されている場合にのみ使用されます。
1～4000 バイト(モジュールに応じて最大 4 KB)

END.MAXLEN

IN

Word

1

最大フレーム長:終了条件[最大フレーム長]が選択されている場合にのみ使用されます。
1～4000 バイト(モジュールに応じて最大 4 KB)

END.N

IN

Word

0

フレームの長さフィールドのバイト位置。終了条件 N+LEN+M でのみ使用。
1～4000 バイト(モジュールに応じて最大 4 KB)

END.LENGTHS IN

Word

0

IZE
END.LENGTH

長さフィールドのサイズ(1、2、または 4 バイト)。終了条件 N+LEN+M でのみ使用。

IN

Word

0

M

長さフィールドの値に含まれていない、長さフィール
ドの後の文字数このエントリは終了条件 N+LEN+M でのみ使用されます。0～255 バイト

END.RCVTIME IN

Word

200

フレームが送信された後の最初の受信文字の待機時間を指定します。文字が指定した時間内に受信されない場
合、この受信命令はエラーメッセージ付きで終了します。この情報は条件「応答タイムアウト」でのみ使用されます。(0～65535 ms)。
注記:このパラメータは単独の終了条件として使用することはできず、最低でも 1 つの他の終了条件と組み合わせてのみ使用可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3461

通信
6.5 通信プロセッサ
パラメータ

宣言

データ
タイプ

既定

説明

END.MSGTIM

IN

Word

200

最初の文字を受信してからフレーム全体を受信するまE

での待機時間を指定します。このパラメータは、条件「メッセージタイムアウト」を選択した場合のみ使用されます。(0～65535 ms)

END.CHARGA

IN

Word

12

P

文字間の最大ビット時間数を入力します。文字間のビ
ット時間数が指定された値を超えている場合、終了条件は満たされていません。この情報は条件「キャラクタ
間遅延時間」でのみ使用されます。(0～65535 ビット
時間)

END.SEQ.CTL

IN

Byte

0

文字シーケンス 1、文字ごとの比較の無効化/有効化:
以下は、開始文字列の文字ごとの有効化ビットです。
文字 1 はビット 0、文字 2 はビット 1、...、文字 5 はビ
ット 4 です。ビットが特定の文字に対して無効になっている場合、各文字は文字列の当該位置が適合していることを表しています。

END.SEQ.STR[ IN

Char[5]0

文字列 1、開始文字(5 文字)

1] ..END.SEQ.
STR[5]

3462

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
表 6-32

Receive_P2P 命令の一般パラメータ

パラメータ

宣言

データ
タイプ

既定

説明

GENERAL.MB

IN

Byte

255

CM の受信バッファにバッファリングされるフレームの

UF_SIZE

数を入力します。
受信バッファの応答に影響する他の条件(タイムアウトの阻止、データフロー制御)が有効でない場合は、この限界値に達すると、追加のフレームは破棄されます。(1～255 フレーム)

GENERAL.OW

IN

Byte

0

_PROT

CM が新しいフレームを受信し、CM の受信バッファがまだ読み出されていない場合に、バッファリングされたフレームの上書き防止ファンクションをアクティブにします。このステップによって、バッファ済みの受信フレームが失われるのを防ぎます。
• 0 - 有効になっていません• 1 - 有効になっています

GENERAL.CLR

IN

Byte

_MBUF

0

CPU スタートアップ中の受信バッファの削除を有効にします。
受信バッファは、CPU が STOP から RUN に切り替わると自動的に削除されます。受信バッファには、CPU のスタートアップ後に受信されたフレームのみが格納されています。
• 0 - 有効になっていません• 1 - 有効になっています

6.5.2.7

P3964_Config: 3964(R)プロトコルの設定
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3463

通信
6.5 通信プロセッサ説明
P3964_Config 命令(プロトコルの構成)を使用して、キャラクタ間遅延時間、優先度、およびブロックチェックなどの 3964(R)用プロトコルパラメータをユーザープログラムでラン
タイム中に変更することができます。
P3964_Config の構成の変更は CM に保存され、CPU には保存されません。デバイス構成に保存されたパラメータは、電圧が CPU または通信モジュールに復旧すると、復元されます。

パラメータ
パラメータ

宣言

データタイプ

既定

説明

FALSE

この入力での立ち上がりエッジ時に命令が開始

S7S71200/15 300/400/
00
WinAC
REQ

IN

Bool

されます。
PORT

IN

PORT

Word

0

(UInt)

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW 識別子]。
シンボリックポート名は、PLC タグテーブ
ルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パ
ラメータに、HWCN で割り当てられた入力
アドレスが割り当てられます。

BCC

IN

USInt

Byte

1

ブロックチェックの使用の有効化/無効化• 0 = ブロックチェックなし• 1 = ブロックチェックあり

Priority

IN

USInt

Byte

1

優先度の選択• 0 = 低い優先度• 1 = 高い優先度

CharacterDel
ayTime

IN

UInt

Word

16#00DC

キャラクタ間遅延時間の設定(設定されたデー
タ伝送速度に応じて異なります) (既定値:220
ミリ秒)
1～65535 ms

3464

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

データタイプ

既定

説明

16#07D0

確認遅延時間の設定(設定されたデータ伝送速S7S71200/15 300/400/00
WinAC
AcknDelayTi

IN

UInt

Word

me

度に応じて異なります) (既定値:2000 ミリ秒)
1～65535 ms

BuildupAttem IN

USInt

Byte

16#0006pts

接続試行回数の設定(既定値:6 回の接続試行回
数)
1～255

RepetitionAtt

IN

USInt

Byte

16#0006

empts

伝送試行回数の設定(既定値:6 回の接続試行回
数)
1～255

COM_RST

IN/OUT

---

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。その後、命令は COM_RST を FALSE にリセットします。

DONE

OUT

Bool

FALSE

最後の要求がエラーなしで完了した後、1 サイ
クルの間 TRUE

ERROR

OUT

Bool

FALSE

最後の要求がエラーありで完了した後、1 サイ
クルの間 TRUESTATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)
を参照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

6.5.2.8

Send_P2P:データ送信
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3465

通信
6.5 通信プロセッサ

説明
Send_P2P 命令(ポイントツーポイントデータの送信)はデータの伝送を開始し、割り当てられたバッファの内容を通信モジュールに伝送します。CM が指定されたデータ伝送速度
でデータを送信している間、CPU プログラムがまだ実行中です。1 回に保留できる送信命令
は通信モジュール当たり 1 つのみです。CM が既にフレームを送信中に 2 番目の Send_P2P命令が実行されると、CM はエラーを通知します。

パラメータ
パラメー 宣言タ

REQ

データタイプS71200/1
500

IN

既定

説明

FALSE

この入力での立ち上がりエッジ時に CM へのデー

S7300/400/
WinAC

Bool

タ伝送が開始されます。
PORT

IN

PORT
(UInt)

Word0

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アドレ
スが割り当てられます。

3466

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言タ

BUFFERIN

データタイプS71200/1
500

S7300/400/
WinAC

Variant

Any

既定

説明

0

このパラメータは、送信バッファのメモリ領域を
指します。
注記:
• Boolean データと Boolean フィールドはサポー
トされていません。
• 送信バッファが最適化されたメモリ領域内に存在する場合、送信データの最大許容長は 1024
バイトです。
例外:Arrays of Byte、Word、または DWord の場合、最大 4096 バイトの長さまでサポートされます。
• 送信バッファが String または WString の場合、文字列の内容が現在の長さおよび最大長のフィ
ールドなしで転送されます。
追加情報については、「通信操作に対する BUFFER
および LENGTH パラメータの使用 (ページ 3469)」
を参照してください。

LENGTH

IN

UInt

Word

0

転送されるデータの長さ(バイト単位)
BUFFER パラメータでアドレス指定されたメモリ領
域は、LENGTH = 0 で完全に伝送されます。
追加情報については、「通信操作に対する BUFFER
および LENGTH パラメータの使用 (ページ 3469)」
を参照してください。

COM_RST IN/OUT

---

Bool

FALSE

Send_P2P 命令の初期化
命令は 1 で初期化されます。その後、命令は
COM_RST を 0 にリセットします。

DONE

OUT

Bool

FALSE

最後の要求がエラーなしで完了した後、1 サイクルの間 TRUE

ERROR

OUT

Bool

FALSE

最後の要求がエラーありで完了した後、1 サイクルの間 TRUESTATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参照)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3467

通信
6.5 通信プロセッサ
一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

パラメータ
送信命令が処理中の場合、DONE および ERROR 出力は FALSE ステータスです。送信命令の終了時に、DONE または ERROR 出力の 1 つが、送信命令のステータスを通知するために、
1 サイクルの間 TRUE に設定されます。STATUS 出力のエラーコードは、ERROR のステー
タスが TRUE の場合に評価することができます。
この命令は、通信インターフェースが送信データを承認すると、ステータス 16#7001 を出力します。Send_P2P のそれ以後の実行では、CM がまだ送信中の場合、値 16#7002 が出力されます。送信命令の終了時に、CM は送信命令のステータス 16#0000 を出力します(エラーが発生しなかった場合)。それ以後の REQ = 0 の Send_P2P の実行では、ステータス
16#7000 (空き)が出力されます。
下の図に、出力値と REQ との間の関係を示します。これは、送信プロセスのステータス(STATUS 値で示される)をチェックするために命令が周期的に呼び出されることを前提にしています。

下の図に、送信命令をトリガするパルスが REQ ラインで保留中になっている場合に(1 サイクルの間)、DONE および STATUS パラメータが 1 サイクルの間のみ有効になる様子を示します。

下の図に、エラー発生時の、DONE、ERROR、および STATUS パラメータの関係を示します。

3468

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

DONE、ERROR、および STATUS の値は、Send_P2P が同一インスタンス DB で再び実行されると無効になります。

6.5.2.9

通信操作に対する BUFFER および LENGTH パラメータの使用

Send_P2P の BUFFER パラメータと LENGTH パラメータの相互関係「Send_P2P」命令によって送信できる最小データサイズは、1 バイトです。
呼び出し中に LENGTH パラメータで「0」が渡される場合、BUFFER パラメータに送信するデータのサイズを指定します。これにはタグを指定すれば十分です。
データタイプ Bool または Bool タイプの配列を BUFFER パラメータで使用することはできません。大量のデータが転送される場合は、配列または構造体データタイプへのマッピン
グをお勧めします。
表 6-33

BUFFER パラメータ

BUFFER

説明

基本データタイプ

送信時:LENGTH 値には、このデータタイプのバイトサイズを含める必要があります。
例:Word 値の場合、LENGTH は 2 です。DWord 値または Real 値の場合、LENGTH は 4
です。

構造体

最適化されたメモリの場合:BUFFER の最大許容長は 1024 Byte です; その他の場合、モジュールに応じて 4 KB が許可されます。
送信の場合:LENGTH 値には、構造体の全体のバイト長よりも小さいバイトサイズを格納できます。この場合、BUFFER の構造体の最初の LENGTH バイトのみが送信されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3469

通信
6.5 通信プロセッサ
BUFFER

説明

Array

最適化されたメモリの場合:配列データタイプが Byte、Word または DWord と等しくな
い場合、最大許容バッファ長は 1024 Byte. です。モジュールに応じて異なりますが、メモリが最適化されていない場合は、データ構造には関わりなく、最大 4 KB を送信できます。
送信の場合:LENGTH 値には、配列の全体のバイト長よりも小さいバイトサイズを格納できます。このため、このバイトサイズはデータエレメントのバイトサイズの倍数になります。例:Word タイプの配列の LENGTH パラメータは 2 の倍数、Real タイプの配列の場合は 4 の倍数とする必要があります。
LENGTH を指定すると、そのバイト数に対応する数の配列エレメントが送信されます。
たとえば、BUFFER に 15 個の DWord エレメント(合計で 60 Bytes)の配列を格納し、LENGTH = 20 を指定すると、配列の最初の 5 つの DWord エレメントが送信されます。

StringLENGTH パラメータには、送信する文字数を格納します。String の文字のみが転送されます。String の現在の最大長のバイトは送信されません。

表 6-34

LENGTH パラメータ

LENGTH

説明=0

BUFFER で指定されたメモリ領域の内容全体が転送されます。
BUFFER が文字列を指す場合、最大長および現在の長さのバイトなしで、文字列の内
容全体が転送されます。

>0

6.5.2.10

BUFFER で指定されたメモリ領域の設定済みの長さまでの内容が転送されます。

Receive_P2P:データ受信
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Receive_P2P 命令(ポイントツーポイント通信を使用したデータの受信)は、CM で受信したフレームをチェックします。フレームが使用可能の場合、CM から CPU に転送されます。
受信エラーは STATUS パラメータで示されます。

3470

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータ
宣言

既定

説明

0

通信に使用される通信モジュールを指定します。

S7S71200/15 300/400
00
/
WinAC

パラメー
タ

PORT

データタイプ

IN

PORT

Word

(UInt)• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アドレ
スが割り当てられます。

BUFFERIN

VariantAny0

このパラメータは、受信バッファの開始アドレス
をポイントします。このバッファは、最大フレーム長を受信するのに十分な大きさである必要があります。
注記:• Boolean データまたは Boolean フィールドはサポートされていません。
• 受信バッファが最適化されたメモリ領域内に存在する場合、受信データの最大許容長は 1024
バイトです。
例外:Arrays of Byte、Word、または DWord の場合、最大 4096 バイトの長さまでサポートされます。
• 受信バッファが String または WString の場合
は、受信データが文字列の内容に書き込まれ、文字列の現在の長さがそれに応じて設定されます。
追加情報については、「通信操作に対する BUFFER
および LENGTH パラメータの使用 (ページ 3469)」
を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3471

通信
6.5 通信プロセッサ宣言

データタイプ説明0

受信されたフレームの長さ(バイト単位)

S7S71200/15 300/400
00
/
WinAC

パラメー
タ

LENGTH

既定

OUT

UInt

Word

追加情報については、「通信操作に対する BUFFER
および LENGTH パラメータの使用 (ページ 3469)」
を参照してください。
NDR

OUT

Bool

FALSE

新しいデータが使用可能で、命令がエラーなしで完了した場合、1 サイクルの間 TRUE。

COM_RST IN/OUT

---

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

ERROR

OUT

Bool

FALSE

命令がエラーで完了した場合、1 サイクルの間
TRUE。

STATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。
STATUS 出力のエラーコードは、ERROR のステータスが TRUE の場合に評価することができます。STATUS 値は、CM で受信動作を終了する理由を提供します。
この値は、通常、受信動作が成功したことと、検出されたフレーム条件を示す正の値です。
STATUS 値が負の場合(16 進数値の最上位ビットが設定されている)、受信動作はパリティ
エラー、フレームエラー、またはオーバーフローエラーなどのエラー条件によって終了しました。
各通信モジュールは、モジュール固有の数のフレームをバッファリングすることができます。CM で複数のフレームが使用可能な場合、Receive_P2P 命令は最も古い使用可能なフレームを出力します(FIFO)。

3472

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.2.11

Receive_Reset: 受信バッファのクリア
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Receive_Reset 命令(受信元のリセット)は CM の受信バッファをクリアします。

パラメータ
パラメー 宣言タ

REQ

データタイプ

既定

説明

FALSE

この入力での立ち上がりエッジ時に CM へのデー

S7S71200/15 300/400
00
/
WinAC

IN

Bool

タ伝送が開始されます。
PORT

IN

PORT

Word

0

(UInt)

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アドレ
スが割り当てられます。

COM_RST IN/OUT

---

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

DONE

OUT

Bool

FALSE

1 サイクルの間の TRUE は、最後の要求がエラーなしで完了したことを示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3473

通信
6.5 通信プロセッサ
パラメー 宣言タ

ERROR

データタイプ

既定

説明

FALSE

TRUE は、最後の要求がエラーで完了したことを示

S7S71200/15 300/400
00
/
WinAC

OUT

Bool

します。この出力が TRUE の場合、STATUS 出力には対応するエラーコードが含まれています。
STATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

6.5.2.12

Signal_Get: ステータスの読み出し
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Signal_Get 命令(RS232 信号の取得)は、RS232 に付随する信号の現在の状態を読み出し、対応する命令出力にそれを表示します。
注記
制約• この命令は、CM RS232 BA および RS232 HF の場合のみ使用できます。
• 動作モードに対して RS232C が設定されている場合、この命令は、CM PtP (ET200SP)でも使用できます。

3474

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータ
パラメー 宣言タ

REQ

データタイプ

既定

説明

FALSE

この入力での立ち上がりエッジ時に CM へのデー

S7S71200/15 300/400/
00
WinAC

IN

Bool

タ伝送が開始されます。
PORT

IN

PORT

Word

0

(UInt)

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アドレ
スが割り当てられます。

NDR

OUT

Bool

FALSE

RS232 付随信号が読み出され、命令がエラーなし
で完了した場合、1 サイクルの間 TRUE。

ERROR

OUT

Bool

FALSE

命令がエラーで完了した場合、1 サイクルの間
TRUE

STATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を
参照)

DTR

OUT

Bool

FALSE

データデバイス準備完了、モジュール準備完了(出
力)

DSR

OUT

Bool

FALSE

データデバイス準備完了、通信ステーション準備
完了(入力)

RTS

OUT

Bool

FALSE

送信要求、モジュールの送信準備完了(出力)

CTS

OUT

Bool

FALSE

送信準備完了、通信ステーションがデータを受信できます(入力)

DCD

OUT

Bool

FALSE

データキャリア信号検出済み、信号レベル受信済
み

RING

OUT

Bool

FALSE

呼び出し表示、着信呼び出しの通知

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3475

通信
6.5 通信プロセッサ

6.5.2.13

Signal_Set: 付属信号の設定
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Signal_Set 命令(RS232 信号の設定)を使用して、RS232 通信信号を設定することができま
す。
注記
制約事項
• この命令は、CM RS232 BA および RS232 HF の場合のみ使用できます。
• 動作モードに対して RS232C が設定されている場合、この命令は、CM PtP (ET200SP)でも使用できます。

パラメータ
パラメー 宣言タ

REQ

データタイプ

既定

説明

FALSE

この入力の立ち上がりエッジ時に命令が開始され

S7S71200/15 300/400
00
/
WinAC

IN

Bool

ます。
PORT

IN

PORT
(UInt)

Word0

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アドレ
スが割り当てられます。

3476

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言タ

SIGNAL

データタイプ

既定

説明

0

設定する信号の選択(複数の選択が可能)

S7S71200/15 300/400
00
/
WinAC

IN

Byte

• 01H = RTS• 02H = DTR• 04H = DSR (インターフェースタイプ DCE の場合
のみ)
RTS

IN

Bool

FALSE

送信要求、モジュールの送信準備完了
出力にこの値を設定します(TRUE または FALSE)、
既定値:FALSE

DTR

IN

Bool

FALSE

データ端末準備完了、モジュール準備完了
出力にこの値を設定します(TRUE または FALSE)、
既定値:FALSE

DSR

IN

Bool

FALSE

データ端子準備完了(DCE インターフェースタイプの場合のみ)、未使用。

COM_RST IN/OUT

---

Bool

FALSE

命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

DONE

OUT

Bool

FALSE

最後の要求がエラーなしで完了した後、1 サイクルの間 TRUE

ERROR

OUT

Bool

FALSE

最後の要求がエラーありで完了した後、1 サイクルの間 TRUESTATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参
照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3477

通信
6.5 通信プロセッサ

6.5.2.14

Get_Features: 拡張ファンクションを取得
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
モジュールでサポートされている場合は、Get_Features 命令(拡張ファンクションを取得)を使用して、CRC をサポートし診断メッセージを生成するためのモジュールの機能についての情報を取得できます。

パラメータ
パラメー
タ

宣言

REQ

IN

データタイプS71200/1
500

既定

説明

FALSE

この入力の立ち上がりエッジ時に命令が開始され

S7300/400/
WinAC
Bool

ます。
PORT

IN

PORT

Word

0

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラ
メータに、HWCN で割り当てられた入力アドレ
スが割り当てられます。

NDR

OUT

Bool

FALSE

新しいデータが使用可能で、命令がエラーなしで完了した場合、1 サイクルの間 TRUEMODBUS_ OUT

Bool

FALSE

Modbus CRC のサポート

CRC

3478

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー
タ

宣言

データタイプS71200/1
500

DIAG_ALA OUT

既定

説明

Bool

FALSE

診断メッセージの生成

Bool

FALSE

電源電圧 L+が不明の診断が使用できます

FALSE

命令の初期化

S7300/400/
WinAC

RM
SUPPLY_V

OUT

OLT
COM_RST

IN/OUT---

Bool

命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。
ERROR

OUT

Bool

FALSE

命令がエラーで完了した場合、1 サイクルの間
TRUE

STATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)を参照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

6.5.2.15

Set_Features: 拡張ファンクションの設定
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
モジュールでサポートされている場合、Set_Features 命令(拡張ファンクションの選択)を使用して、CRC サポートと診断メッセージの生成を有効にすることができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3479

通信
6.5 通信プロセッサ

パラメータ
パラメータ

宣言

データタイプS71200/15
00

REQ

IN

既定

説明

FALSE

拡張ファンクションを設定するための命令は、

S7300/400/
WinAC

Bool

当該入力の立ち上がりエッジで開始されます。
PORT

IN

PORT

Word

0

(UInt)

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW 識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パ
ラメータに、HWCN で割り当てられた入力
アドレスが割り当てられます。

EN_MODBUS IN

Bool

FALSE

Modbus CRC のサポートの有効化

Bool

FALSE

診断メッセージの生成の有効化

Bool

FALSE

電源電圧 L+が不明の診断の有効化

FALSE

命令の初期化_CRC
EN_DIAG_AL IN
ARM
EN_SUPPLY_ IN
VOLT
COM_RST

IN/OUT---

Bool

命令は TRUE に初期化されます。その後、命令は COM_RST を FALSE にリセットします。
DONE

OUT

Bool

FALSE

最後の要求がエラーなしで完了した後、1 回の実行の間 TRUE

ERROR

OUT

Bool

FALSE

命令がエラーで完了した場合、1 サイクルの間
TRUE

STATUS

OUT

Word

16#7000

エラーコード(エラーメッセージ (ページ 3481)
を参照)

一般パラメータに関する追加情報については、「フリーポート操作の一般パラメータ (ページ 3447)」を参照してください。

3480

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.2.16

エラーメッセージ

エラーメッセージの概要 - PtP
エラーメッセージは命令の STATUS 出力で提供され、そこで評価したりユーザープログラ
ムで処理したりすることができます。
エラーコ
ード

説明

対策

16#0000

エラーなし‑

受信ステータスとエラーコード
16#0094 「固定/最大フレーム長の受信」に基づいて識別 ‑されたフレームの終了
16#0095 「メッセージタイムアウト」に基づいて識別さ ‑れたフレームの終了
16#0096 「キャラクタ遅延時間」の経過に基づいて識別さ ‑れたフレームの終了
16#0097

最大応答時間に達したためにフレームが中止さ ‑れました。

16#0098 「メッセージからのメッセージ長の読み出し」条 ‑件の適合に基づいて識別されたフレームの終了
16#0099 「終了シーケンス」の受信に基づいて識別され ‑たフレームの終了
送信ステータスとエラーコード
16#7000

ブロックアイドル‑

16#7001

新しいフレームの最初の呼び出しデータ伝送が ‑開始されました

16#7002

中間呼び出し:データ伝送が実行中‑

16#8085

長さが無効

適切なフレーム長を選択します。
以下が有効です(モジュールによって異なります):1-1024/2048/4096 (Byte)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3481

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8088指定された長さが受信バッファの設定された範 受信バッファの範囲を変更するか、または受信囲を超えています。

対策

バッファの設定された範囲に対応するフレーム

注記:データタイプ STRING が BUFFER パラメー 長を選択します。
タで指定されている場合、現在の文字列が以下が有効です(モジュールによって異なりまLENGTH パラメータで指定された長さよりも短 す):16#8090

いと、このエラーコードも表示されます。

1～1024/2048/4096 (バイト)構成エラー:WString のバイト数が奇数です

偶数のバイト数を選択します。

受信ステータスとエラーコード
16#7002

中間呼び出し:データ伝送が実行中

16#8088

受信した文字数が BUFFER パラメータで指定さ 適切なフレーム長を選択します。
れた文字数を超えています。

‑

以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)16#8090

構成エラー:WString のバイト数が奇数です

偶数のバイト数を選択します。

特殊ファンクションのエラーメッセージコード
16#818F

不正なパラメータ番号の設定(USS のみ)

適切なパラメータ番号(PARAM)を選択します。
次の番号が有効です。0-2047

16#8190

CRC 計算の不正な設定

CRC 計算の適切な値を選択します。
以下が有効です。無効または有効。
アドレス指定されたモジュールが CRC 計算をサポートしているかどうかチェックします。

16#8191

診断エラー割り込みの不正な設定[診断エラー割り込み]の適切な値を選択します。
以下が有効です。診断エラー割り込みが無効、または診断エラー割り込みが有効。
アドレス指定されたモジュールが診断割り込みの生成をサポートしているかどうかをチェックします。

「ポートの構成」のエラーメッセージコード
16#81A0

モジュールがこのプロトコルをサポートしてい モジュールの有効なプロトコル(PROTOCOL)をません。

16#81A1

モジュールがこのデータ伝送率をサポートして モジュールの有効なデータ伝送速度(BAUD)を
いません。

3482

選択します。
選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#81A2

モジュールがこのパリティ設定をサポートして 「パリティ」(PARITY)の適切な値を選択します。
いません。

対策

以下が有効です。
• なし(1)• 偶数(2)• 奇数(3)• マーク(4)• スペース(5)• 任意(6)16#81A3

モジュールがこのデータビット数をサポートし 「データビット数」(DATABITS)の適切な値を選ていません。

択します。
以下が有効です。
• 7 (2)• 8 (1)

16#81A4

モジュールがこのストップビット数をサポート 「ストップビット数」(STOPBITS)の適切な値をしていません。

選択します。
以下が有効です。
• 1 (1)• 2 (2)16#81A5
16#81A7

モジュールがこのタイプのデータフロー制御を モジュールの有効なデータフロー制御
サポートしていません。

(FLOWCTRL)を選択します。

XON または XOFF の無効な値

XON (XONCHAR)および XOFF (XOFFCHAR)の適切な値を選択します。
値の有効な範囲:0...255

16#81AA

動作モードが無効

有効な動作モード以下のとおりです。
• 全二重(RS232) (0)• 全二重(RS422) 4 線式モード(ポイントツー
ポイント) (1)/ (CM PtP (ET 200SP))• 全二重 (RS422) 4 線式モード(マルチポイン
トマスタ) (2)/ (CM PtP (ET 200SP))• 全二重(RS422) 4 線式モード(マルチポイン
トスレーブ) (3)• 半二重(RS485) 2 線式モード(4)TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3483

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81AB

回線初期状態が無効

有効な初期状態は以下のとおりです。
• 初期設定[なし] (0)• シグナル R(A) 5 V、シグナル R(B) 0 V (ブレーク検出) (1)以下とともにのみ選択できます。「全二重(RS422) 4 線式モード(ポイントツーポイン
ト接続)」および「全二重(RS422) 4 線式モード(マルチポイントスレーブ)」• シグナル R(A) 0 V/シグナル R(B) 5 V (2):この
初期設定はアイドル状態に相当します(送信動作がアクティブでない)。

16#81AC[ブレーク検出]の値が無効[ブレーク検出]の適切な値を選択します。以下が有効です。
• ブレーク検出が無効(0)• ブレーク検出が有効(1)16#81AF

モジュールがこのプロトコルをサポートしてい モジュールの有効なプロトコルを選択します。
ません。

「送信構成」のエラーコード
16#81B5

エンドデリミタが 2 つ以上、または[エンドデリミタ]と[終了シーケンス]に適切な終了シーケンスが 5 文字以上値を選択します。
以下が有効です。
• 無効(0)、• 1 つ (1)または 2 つ (2)のエンドデリミタ
または• 無効(0)、• 終了シーケンスに 1 文字 (1)から 5 文字 (5)16#81B63964(R)プロトコルが選択されていたため、送 3964(R)プロトコルが設定されている場合は、信構成が拒否されました。

送信構成が送信されないようにします。

「受信構成」のエラーコード
16#81C0

開始条件が無効適切な開始条件を選択します。
以下が有効です。
• フレーム開始前の送信中断• アイドルラインの送信

16#81C1

終了条件が無効、または終了条件が選択されて 適切な条件を選択します(AUTOHOTSPOT を参
いません

3484

照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81C3[最大メッセージ長]の値が無効「最大メッセージ長」(MAXLEN)の適切な値を選択します。
値の有効な範囲(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81C4[メッセージ内の長さ指定のオフセット]の値が [メッセージ内の長さ指定のオフセット]に有効
無効な値を選択します。
値の有効な範囲(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81C5[長さフィールドのサイズ]の値が無効「長さフィールドのサイズ」(LENGTHSIZE)の適切な値を選択します。
値の有効な範囲(バイト単位):• 1 (1)• 2 (2)• 4 (4)16#81C6[長さ指定でカウントされていない文字数]の値 「長さ指定でカウントされていない文字数」
が無効(LENGTHM)の適切な値を選択します。
値の有効な範囲:0～255 (バイト)16#81C7 「メッセージ内のオフセット + 長さフィールド [メッセージ内のオフセット]、[長さフィールのサイズ + カウントされていない文字数」の合 ドのサイズ]、および[カウントされていない文計が最大フレーム長を超えています

字数]に適切な値を選択します。
値の有効な範囲:• メッセージ内のオフセット(モジュールによって異なります):0～1024/2048/4096 (バイト)• 長さフィールドのサイズ:1、2、または 4(バイト)• カウントされていない文字数:0～255 (バイト)

16#81C8[応答タイムアウト]の値が無効[応答タイムアウト]に適切な値を選択します。
値の有効な範囲:1～65535 (ms)

16#81C9[キャラクタ遅延時間]の値が無効[キャラクタ遅延時間]に適切な値を選択します。
値の有効な範囲:1～65535 (ビット時間)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3485

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81CB

フレーム終了シーケンスが有効になっています チェック用に 1 つ以上の文字を有効にします。
が、チェック用の文字が有効になっていません

16#81CC

フレーム開始シーケンスが有効になっています チェック用に 1 つ以上の文字を有効にします。
が、チェック用の文字が有効になっていません

16#81CD[上書き禁止]の値が無効[上書き禁止]に適切な値を選択します。
以下が有効です。
• 上書き禁止が無効(0)または• 上書き禁止が有効(1)16#81CE[スタートアップ時に受信バッファをクリアす [スタートアップ時に受信バッファをクリアする]の値が無効る]に適切な値を選択します。
以下が有効です。
• スタートアップ時に受信バッファをクリア
が無効(0)• スタートアップ時に受信バッファをクリアが無効(1)

送信ステータスとエラーコード
16#81D0

送信コマンドのランタイム中の送信要求の受信 送信コマンドのランタイム中に追加の送信要求を受信するのを防止します。

16#81D1

XON または CTS = ON の待機時間が経過しまし 通信パートナーで障害が発生したか、速度が遅た。

すぎるか、またはオフラインになっています。
通信パートナーをチェックするか、または必要に応じてパラメータを変更します。

16#81D2 「ハードウェア RTS は常に ON」:DSR = ON から 通信パートナーをチェックします。伝送時間全OFF への切り替えのために送信ジョブがキャン 体にわたって、DSR が確実に ON になるようセルされました
16#81D3にします。

送信バッファオーバーフロー/送信フレームが長 短いフレーム長を選択します。
すぎます

以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81D5

パラメータ変更、断線の検出、または CPU の パラメータ割り当て、断線、および CPU ステ
STOP によって、伝送がキャンセルされました ータスをチェックします。

16#81D6

終了識別子が受信されなかったため、伝送がキ 終了文字のパラメータ割り当てと通信パートナ
ャンセルされました。

16#81D7

ユーザープログラムとモジュール間の通信エラ 通信をチェックします(たとえば、シーケンス
ー

3486

ーのフレームをチェックします。
番号の一致など)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81D8

モジュールが構成定義されていないため、伝送 モジュールを構成定義します。
の試行が拒否されました。

16#81DF

次のいずれかの理由でモジュールが FB へのイ —ンターフェースをリセットしました。
• モジュールが再起動された• モジュールパラメータが再割り当てされた• CPU STOP

受信構成のエラーコード
16#81E0

フレームが中断されました:送信バッファオーバ ユーザープログラムで受信ファンクションの呼ーフロー/送信フレームが長すぎます

び出し率を上げるか、またはデータフロー制御
による通信を構成定義する必要があります。

16#81E1

フレームが中断されました:パリティエラー

通信パートナーの接続線をチェックするか、両方のデバイスに対して同じデータ伝送速度、パ
リティ、ストップビット数が設定されているかどうかを確認します。

16#81E2

フレームが中断されました:キャラクタフレーム スタートビット、データビット、パリティビッ
エラー

ト、データ伝送率、ストップビットの設定をチ
ェックします。

16#81E3

フレームが中断されました:キャラクタオーバー ファームウェアエラー:カスタマーサポートに
フロエラー

16#81E4

問い合わせてください。

フレームが中断されました:「メッセージ内のオ メッセージ内のオフセット、長さフィールドのフセット + 長さフィールドのサイズ + カウント サイズ、およびカウントされていない文字数にされていない文字数」の合計長が受信バッファ 適切な値を選択します。
を超えています16#81E5

フレームが中断されました:break

パートナーへの受信ラインが中断しています。
再接続するか、またはパートナーのスイッチをオンにします。

16#81E6[バッファリングされる受信フレーム]の最大数 ユーザープログラムで命令を呼び出す回数を増を超過しましたやすか、データフロー制御による通信を構成定義するか、またはバッファリングされるフレームの数を増やします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3487

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81E7

同期エラーモジュールと Receive_P2P

Receive_P2P のさまざまな異なるインスタンス
が確実に同一モジュールにアクセスしないようにします。

16#81E8

フレームが中断されました:メッセージまたは条 パートナーデバイスに障害が発生しているか、件が検出される前に、キャラクタ遅延時間が経 またはパートナーデバイスが遅すぎます。必要過しました。

に応じてインターフェーステスターを使用し、パートナーデバイスが伝送線で相互接続されていることをチェックします。

16#81E9

Modbus CRC エラー(Modbus をサポートしてい Modbus フレームのチェックサムエラー.通信
る通信モジュールのみ)

16#81EA

Modbus フレームが短すぎます(Modbus をサポ Modbus フレームの最小長さが満たされていまートしている通信モジュールのみ)

16#81EB

パートナーをチェックします。
せん通信パートナーをチェックします。

フレームが中断されました:最大フレーム長に達 通信パートナー側で短いフレーム長を選択しましましたす。
以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)フレーム終了検出のパラメータをチェックします。

エラーコード V24 に付随する信号
16#81F0

モジュールが V24 に付随する信号をサポートし V24 に付随する信号をサポートしていないモていません。

ジュールに対して付随する信号の設定を試みました。必ず RS232 モジュールにするか、または RS232 モード(ET 200SP)を設定します。

16#81F1

V24 に付随する信号を操作できません

ハードウェアデータフロー制御が有効の場合、
V24 に付随する信号を手動で操作することはできません。

16#81F2

モジュールのタイプが DTE であるため、DSR 信 モジュールの設定済みタイプをチェックしま号を設定できません。

す。
モジュールタイプは DCE (データ通信装置)でなければなりません。

16#81F3モジュールのタイプが DCE であるため、DTR 信 モジュールの設定済みタイプをチェックしま号を設定できません。

す。
モジュールタイプは DTE (データ端末装置)でなければなりません。

3488

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81F4

ブロックヘッダーエラー(ブロックタイプが正し インスタンス DB およびブロックヘッダーをチ
くない、ブロックの長さが正しくない、など) ェックします。

受信構成のエラーコード
16#8201

Receive_Conditions は無効なデータタイプへの データタイプ

1)

ポインタです。

DB、BOOL、BYTE、CHAR、WORD、INT、
DWORD、DINT、REAL、DATE、
TIME_OF_DAY、TIME、S5TIME、
DATE_AND_TIME、STRING の 1 つを指すポインタを入力します。

16#8225

Receive_Conditions が、1 KB 以上の最適化され 以下の最大長を持つ領域へのポインタを入力したメモリ領域をポイントしています。

ます。

または

• 最適化されたメモリ領域:1 KB

Receive_Conditions が最適化されたメモリ領域 • 最適化されていないメモリ領域:4 KB
注記:ポインタが最適化されたメモリ領域をポをポイントしており、受信長がReceive_Conditions でアドレス指定された領域 イントしている場合、1 KB 以上を送信しないでください。
を超えています。
16#8229

Receive_Conditions が、ビット数が n * 8 と等 BOOL へのポインタを使用している場合、ビッ

1)

しくない BOOL へのポインタです。

ト数は 8 の倍数とする必要があります。

エラーコード、一般
16#8280

モジュールの読み出し時の否定確認

エラーの原因の詳細については、
RDREC.STATUS 静的パラメータと、SFB RDRECの説明を参照してください。
• PORT パラメータの入力をチェックします。
• 初期呼び出しの前に、COM_RST パラメー
タを設定します。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
WRREC.STATUS 静的パラメータと、SFB
WRREC の説明を参照してください。

16#8282

モジュールが使用不可

PORT パラメータの入力をチェックし、モジュールに確実にアクセスできるようにします。

受信構成のエラーコード

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3489

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#82C1[バッファリングされた受信フレーム]の値が無 [バッファリングされた受信フレーム]に適切な
効

対策値を選択します。
値の有効な範囲:1-255

16#82C23964(R)プロトコルが選択されていたため、受 3964(R)プロトコルが設定されている場合は、信構成が拒否されました。

受信構成が送信されないようにします。

16#8301

Receive_Conditions は無効なデータタイプへの 有効なデータタイプを選択します。

1)

ポインタです。

以下が有効です。DB、BOOL、BYTE、CHAR、
WORD、INT、DWORD、DINT、REAL、DATE、
TIME_OF_DAY、TIME、S5TIME、
DATE_AND_TIME、STRING

16#8322

パラメータ読み出し時の範囲長さエラー

Receive_Conditions パラメータの入力をチェックします。

16#8324

パラメータ読み出し時の範囲エラー

Receive_Conditions パラメータの入力をチェックします。

16#8328

パラメータ読み出し時の設定エラー

Receive_Conditions パラメータの入力をチェックします。

送信ステータスとエラーコード
16#8328

BUFFER が、ビット数が n * 8 と等しくない

BOOL へのポインタを使用している場合、ビッ

1)

BOOL へのポインタです

ト数は 8 の倍数とする必要があります。

受信構成のエラーコード
16#8332

Receive_Conditions パラメータの無効なデータ Receive_Conditions パラメータの入力をチェ
ブロック

16#833A

ックします。

Receive_Conditions パラメータのデータブロッ Receive_Conditions パラメータの入力をチェ
クの名称が、ロードされていないデータブロッ ックします。
クを示しています。

16#8351

無効なデータタイプ

Receive_Conditions パラメータの入力をチェックします。

16#8352

Receive_Conditions がデータブロックをポイン Receive_Conditions へのポインタをチェック

1)

トしていません。

16#8353

Receive_Conditions タイプの構造をポイントし Receive_Conditions へのポインタをチェック

1)ていません。Receive_Conditions

します。
します。

エラーコード 3964(R)プロトコル

3490

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8380

パラメータ割り当てエラー:[キャラクタ遅延時 [キャラクタ遅延時間](CharacterDelayTime)に間]の値が無効対策

適切な値を選択します。
値の有効な範囲:1～65535 (ms)

16#8381

パラメータ割り当てエラー:[応答タイムアウト] [応答タイムアウト](AcknDelayTime)に適切なの値が無効値を選択します。
値の有効な範囲:1～65535 (ms)

16#8382

パラメータ割り当てエラー:[優先度]の値が無効 [優先度](Priority)に適切な値を選択します。
以下が有効です。
• 高い(1)• 低い(0)

16#8383

パラメータ割り当てエラー:[ブロックチェック] [ブロックチェック] (BCC)の適切な値を選択し
の値が無効

ます。
以下が有効です。
• ブロックチェックあり(1)• ブロックチェックなし(0)16#8384

パラメータ割り当てエラー:[接続試行]の値が無 [接続試行](BuildupAttempts)に適切な値を選
効.

択します。
値の有効な範囲:1-255

16#8385

パラメータ割り当てエラー:[送信試行]の値が無 [送信試行](RepetitionAttempts)に適切な値を効.

選択します。
値の有効な範囲:1-255

16#8386

ランタイムエラー:接続試行回数を超過しました インターフェースケーブルおよび伝送パラメー
タをチェックします。
さらに、パートナーデバイス側で受信ファンク
ションが正しく構成定義されているかどうかもチェックします。

16#8387

ランタイムエラー:送信試行回数を超過しました インターフェースケーブル、伝送パラメータ、および通信パートナーの構成をチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3491

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8388

ランタイムエラー:「ブロックチェックキャラク 接続が致命的に中断されていないかどうかチェ
タ」のエラー対策

ックします。その場合は、こまめにエラーコー

内部的に計算したブロックチェックキャラクタ ドをチェックすることをお勧めします。パートの値が、接続の終了時にパートナーが受信した ナーデバイスが正しく動作していることをチェ
ブロックチェックキャラクタに対応していませ ックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェックでん。
きる場合があります。
16#8389

ランタイムエラー:空き受信バッファの待機中に 通信パートナーの送信要求(STX, 02H)は、受信無効な文字が受信されました

バッファが空いている場合のみ、DLE で応答します。この前に、追加文字を受信することはできません(再び、STX を除いて)。
パートナーデバイスが正しく動作していることをチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェ
ックできる場合があります。

16#838A

ランタイムエラー:受信時の論理エラー

フレームヘッダー内およびデータ文字列内のパ

DLE 受信後、追加のランダム文字(DLE またはートナー DLE が常に重複しているか、または

ETX を除く)を受信しました。

接続が DLE ETX でリリースされているかをチェックします。パートナーデバイスが正しく動作していることをチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェックできる場合があります。

16#838B

ランタイムエラー:キャラクタ遅延時間を超過し パートナーデバイスが遅すぎるか、またはパーました

トナーデバイスに障害が発生しています。
必要に応じて、伝送線内に接続されたインター
フェーステストデバイスを使用して検証します。

16#838C

ランタイムエラー:空き受信バッファの待機時間 ユーザープログラムで命令を呼び出す回数を増が開始されました

やすか、またはデータフロー制御による通信を構成定義します。

16#838D

ランタイムエラー:フレームの繰り返しが NAK 通信パートナーをチェックします。破壊されて後、4 秒以内に開始されません。

いる可能性のある受信フレームをパートナーが4 秒以内に繰り返す必要があります。

3492

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#838E

ランタイムエラー:アイドルモードで、1 つ以上 パートナーデバイスが正しく動作していることの文字(NAK、STX 以外)を受信しました。

対策をチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェ
ックできる場合があります。

16#838F

ランタイムエラー:初期化の競合 - 両方のパート パートナーのどちらかで、「低い」優先度を設ナーが高い優先度を設定しています。

16#8391

定します。

パラメータ割り当てエラー:Freeport が設定され Freeport プロトコルが設定されている場合ているため、3964 構成データが拒否されまし は、3964 パラメータ割り当てデータが送信さた

1)

れないようにします。

S7-300/400 CPU 用の命令の場合のみ

エラーメッセージの概要 - Modbus
エラーコ
ード

説明

対策

16#0000

エラーなし‑

インターフェースの設定エラー -Modbus_Comm_Load
16#8181

モジュールがこのデータ伝送率をサポートして BAUD パラメータで、モジュールの有効なデーいません。

16#8182

タ伝送速度を選択します。

モジュールがこのパリティ設定をサポートして PARITY パラメータの「パリティ」の適切な値いません。

を選択します。
以下が有効です。
• なし(1)• 偶数(2)• 奇数(3)• マーク(4)• スペース(5)• 任意(6)16#8183
16#8184

モジュールがこのタイプのデータフロー制御を FLOW_CTRL パラメータで、モジュールの有効サポートしていません。

なデータフロー制御を選択します。

[応答タイムアウト]の値が無効

RESP_TO パラメータで、[応答タイムアウト]の適切な値を選択します。
値の有効な範囲:1～65535 (ms)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3493

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
Send_Config.RDREC.STATUS/
Receive_Config.RDREC.STATUS 静的パラメー
タまたは RDREC.STATUS と、SFB RDREC の説
明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
Send_Config.WRREC.STATUS/
Receive_Config.WRREC.STATUS 静的パラメー
タまたは WRREC.STATUS と、SFB WRREC の説
明を参照してください。

16#8282

モジュールが使用不可

PORT パラメータの入力をチェックし、モジュールに確実にアクセスできるようにします。

構成エラー -Modbus_Slave
16#8186

スレーブアドレスが無効

MB_ADDR パラメータで、適切なスレーブアドレスを選択します。
以下が有効です。標準アドレス領域では 1～
247;
拡張アドレス領域では 1～65535(0 はブロードキャスト用に予約済みです)

16#8187

MB_HOLD_REG パラメータの無効な値

MB_HOLD_REG パラメータで、保持レジスタの適切な値を選択します。

16#8188

動作モードまたはブロードキャストが無効

ブロードキャストモードで MODE の値 1 を選

(MB_ADDR = 0)および MODE パラメータ ≠ 1択するか、または異なる動作モードを選択します。

16#818C

MB_HOLD_REG 領域へのポインタは、データブ MB_HOLD_REG 領域へのポインタの適切な値
ロックまたはビットメモリアドレス領域である を選択します。
ことが必要です。

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.RDREC.STATUS またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

3494

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.WRREC.STATUS またはReceive_P2P.WRREC.STATUS と、SFB WRRECの説明を参照してください。

16#8452

MB_HOLD_REG が、DB またはビットメモリ領 MB_HOLD_REG ポインタをチェックします1)

域へのポインタではありません

16#8453

MB_HOLD_REG が、タイプ BOOL または WORD MB_HOLD_REG ポインタをチェックします

1)のポインタではありません

16#8454

MB_HOLD_REG でアドレス指定された領域が1)

DB よりも長いか、またはアドレス指定された領MB_HOLD_REG ポインタをチェックします

域が読み出しまたは書き込みされるデータバイ
トの数に対して小さすぎます。
16#8455

MB_HOLD_REG が書き込み禁止 DB を指してい MB_HOLD_REG ポインタをチェックします1)ます

16#8456

命令実行中のエラーエラーの原因は、STATUS SFCSTATUS パラメータの値を識別します。

1)

パラメータに示されます。

SFC51、STATUS パラメータの説明でこの値が意味することをチェックします。

構成エラー -Modbus_Master
16#8180

MB_DB パラメータの値が無効

Modbus_Comm_Load 命令で MB_DB(インスタンスデータ DB)に構成定義された値が有効ではありません。
Modbus_Comm_Load 命令とそのエラーメッ
セージの相互接続をチェックします。

16#8186

ステーションアドレスが無効

MB_ADDR パラメータで、適切なステーション
アドレスを選択します。
以下が有効です。標準アドレス領域では 1～
247;
拡張アドレス領域では 1～65535(0 はブロードキャスト用に予約済みです)

16#8188

動作モードまたはブロードキャストが無効

ブロードキャストモードで MODE の値 1 を選

(MB_ADDR = 0)および MODE パラメータ ≠ 1択するか、または異なる動作モードを選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3495

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8189

データアドレスが無効

DATA_ADDR パラメータで、データアドレスの適切な値を選択します。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818A

長さが無効

DATA_LEN パラメータで、適切なデータ長を選択します。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818B

DATA_PTR の値が無効

DATA_PTR パラメータで、データポインタの適切な値を選択します(M または DB アドレス)。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818C

DATA_PTR パラメータの相互接続エラー

16#818D

DATA_PTR でアドレス指定された領域が DB よ DATA_PTR ポインタをチェックします。

命令の相互接続をチェックしてください。

りも長いか、またはアドレス指定された領域が読み出しまたは書き込みされるデータバイトの数に対して小さすぎます。
16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.RDREC.STATUS またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。.
エラーの原因の詳細については、静的パラメー
タ Send_P2P.WRREC.STATUS、
Receive_P2P.WRREC.STATUS 、またはReceive_Reset と、SFB WRREC の説明を参照してください。

通信エラー - Modbus_Master および Modbus_Slave
16#80D1

XON または CTS = ON の待機時間が経過しまし 通信パートナーで障害が発生したか、速度が遅た。

すぎるか、またはオフラインになっています。
通信パートナーをチェックするか、または必要に応じてパラメータを変更します。

3496

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#80D2 「ハードウェア RTS は常に ON」:DSR = ON から 通信パートナーをチェックします。伝送時間全OFF への切り替えのために送信ジョブがキャン 体にわたって、DSR が確実に ON になるようセルされました
16#80E0にします。

フレームが中断されました:送信バッファオーバ ユーザープログラムで命令を呼び出す回数を増ーフロー/送信フレームが長すぎます

やすか、またはデータフロー制御による通信を構成定義します。

16#80E1

フレームが中断されました:パリティエラー

通信パートナーの接続線をチェックするか、両方のデバイスに対して同じデータ伝送速度、パ
リティ、ストップビット数が設定されているかどうかを確認します。

16#80E2

フレームが中断されました:キャラクタフレーム スタートビット、データビット、パリティビッ
エラー

ト、データ伝送率、ストップビットの設定をチ
ェックします。

16#80E3

フレームが中断されました:キャラクタオーバー 通信パートナーのフレーム内のデータ数をチェ
フロエラー

16#80E4

ックします。

フレームが中断されました:最大フレーム長に達 通信パートナー側で短いフレーム長を選択しましましたす。
以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)通信エラー - Modbus_Master
16#80C8

スレーブが設定された時間内に応答しません。 スレーブのデータ伝送率、パリティ、および配線をチェックします。

16#80C9

スレーブが Blocked_Proc_Timeout によって設 Blocked_Proc_Timeout の設定をチェックしま
定された時間内に応答しません。

す。
モジュールが、Modbus_Comm_Load 命令を使用して構成定義されたかどうかをチェックします。モジュールは、抜き差し後または電圧復
旧後に Modbus_Comm_Load を使用して再構成しなければならない場合があります。

16#8200

インターフェースが出力要求でビジーになって 後からコマンドを繰り返します。新しいコマンいます。

ドを開始する前に、まだ実行中のコマンドが存在しないことを確認します。

プロトコルエラー - Modbus_Slave (Modbus をサポートしている通信モジュールの場合のみ)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3497

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8380

CRC エラー

Modbus フレームのチェックサムエラー.通信
パートナーをチェックします。

16#8381

ファンクションコードがサポートされていな通信パートナーをチェックして、有効なファン

い、またはブロードキャストでサポートされて クションコードが送信されていることを確認し
16#8382

いません。

ます。

要求フレーム内の情報の長さが無効

DATA_LEN パラメータで、適切なデータ長を選択します。

16#8383

要求フレーム内のデータアドレスが無効

DATA_ADDR パラメータで、データアドレスの適切な値を選択します。

16#8384

要求フレーム内のデータ値無効エラー

Modbus マスタの要求フレーム内のデータ値をチェックします。

16#8385

診断値が Modbus スレーブでサポートされませ Modbus スレーブは、診断値 16#0000 およびん(ファンクションコード 08)

16#000A のみをサポートします。

プロトコルエラー - Modbus_Master (Modbus をサポートしている通信モジュールの場合のみ)
16#8380

CRC エラー

Modbus フレームのチェックサムエラー.通信
パートナーをチェックします。

16#8381

Modbus Slave からの応答フレームに以下のエラ 通信パートナーをチェックして、有効なファン
ーメッセージがあります:ファンクションコード クションコードが送信されていることを確認しがサポートされていません。

16#8382

ます。

Modbus Slave からの応答フレームに以下のエラ 適切なデータ長を選択します。
ーメッセージがあります:長さが無効

16#8383

Modbus Slave からの応答フレームに以下のエラ DATA_ADDR パラメータで、データアドレスのーメッセージがあります:要求フレーム内のデー 適切な値を選択します。
タアドレスが無効

16#8384

Modbus Slave からの応答フレームに以下のエラ Modbus スレーブへの要求フレームをチェック
ーメッセージがあります:データ値エラー

16#8385

します。

Modbus Slave からの応答フレームに以下のエラ Modbus スレーブは、診断値 16#0000 およびーメッセージがあります:診断値が Modbus ス 16#000A のみをサポートします。
レーブでサポートされていません。

16#8386
16#8387

戻されたファンクションコードが要求されたフ スレーブの応答フレームとアドレス指定をチェァンクションコードと一致しません。

ックします。

応答を要求されなかったスレーブ

スレーブの応答フレームをチェックします。ス
レーブのアドレス設定をチェックします。

16#83883498

書き込み要求に対するスレーブの応答のエラー スレーブの応答フレームをチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8828

DATA_PTR が、n * 8 と等しくないビットアドレ DATA_PTR ポインタをチェックします。

1)

スを指しています

16#8852

DATA_PTR が、DB またはビットメモリ領域への DATA_PTR ポインタをチェックします。

1)

ポインタではありません

16#8853

DATA_PTR が、タイプ BOOL または WORD のポ DATA_PTR ポインタをチェックします。

1)

インタではありません

16#8855

DATA_PTR が書き込み禁止 DB を指しています DATA_PTR ポインタをチェックします。

1)

16#8856

SFC51 呼び出し中のエラー

1)

Modbus_Master 命令を再度呼び出してください。

エラー - Modbus_Slave (Modbus をサポートしている通信モジュールの場合のみ)
16#8428

MB_HOLD_REG が、n * 8 と等しくないビット MB_HOLD_REG ポインタをチェックします1)

アドレスを指しています

16#8452

MB_HOLD_REG が、DB またはビットメモリ領 MB_HOLD_REG ポインタをチェックします1)

域へのポインタではありません

16#8453

MB_HOLD_REG が、タイプ BOOL または WORD MB_HOLD_REG ポインタをチェックします

1)のポインタではありません

16#8454

MB_HOLD_REG でアドレス指定された領域が1)

DB よりも長いか、またはアドレス指定された領MB_HOLD_REG ポインタをチェックします

域が読み出しまたは書き込みされるデータバイ
トの数に対して小さすぎます。
16#8455

MB_HOLD_REG が書き込み禁止 DB を指してい MB_HOLD_REG ポインタをチェックします1)ます

16#8456

SFC51 呼び出し中のエラー

1)

1)

Modbus_Slave 命令を再度呼び出してください。

S7-300/400 CPU 用の命令の場合のみ

エラーメッセージの概要 - USS
エラーコ
ード

説明

対策

16#0000

エラーなし‑

16#8180ドライブの応答の長さエラー:

ドライブの応答フレームをチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3499

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8181

データタイプエラー

適切なデータタイプを選択します。
以下が有効です。
• REAL• ワード• ダブルワード

16#8182

データタイプエラー:「ダブルワード」または ドライブの応答フレームをチェックします。
「実数」を「ワード」要求に対して返すことはできません。

16#8183

データタイプエラー:「ワード」を「ダブルワー ドライブの応答フレームをチェックします。
ド」または「実数」要求に対して返すことはできません。

16#8184

ドライブの応答のチェックサムエラー:

ドライブと通信接続をチェックします。

16#8185

アドレス指定エラー

有効なドライブアドレス範囲:1～16

16#8186

セットポイントエラー

有効なセットポイント範囲: -200%～+200%

16#8187

不正なドライブ番号が返されました

ドライブの応答フレームをチェックします。

16#8188

PZD 長さが無効許可されている PZD 長さ:2、4、6、8 ワード

16#8189

モジュールがこのデータ伝送率をサポートして モジュールの有効なデータ伝送率を選択しまいません。

16#818A

す。

このドライブに対する別の要求が現在有効です。 後から、パラメータ読み出しまたは書き込みコ
マンドを繰り返します。

16#818B

ドライブが応答しません。

16#818C

ドライブがパラメータ要求に対してエラーメッ ドライブの応答フレームをチェックします。
セージで応答しました

ドライブをチェックします。

パラメータ要求をチェックします。
命令 USS_Read_Param、USS_Write_Param ま
たは USS_Port_Scan にエラーの報告があるかチェックします。エラーの報告がある場合、
USS_Drive_Control 命令の静的タグ USS_DB.
w_USSExtendedError の値をチェックします。

16#818D
16#818E

ドライブがパラメータ要求に対してアクセスエ ドライブの応答フレームをチェックします。
ラーメッセージで応答しました

パラメータ要求をチェックします。

ドライブが初期化されていません。

ユーザープログラムをチェックして、
USS_Drive_Control 命令がこのドライブに対して呼び出されていることを確認します。

3500

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Port_Config.RDREC.STATUS、
Send_Config.RDREC.STATUS 、
Receive_Config.RDREC.STATUS 、
Send_P2P.RDREC.STATUS 、またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。.
エラーの原因の詳細については、静的パラメー
タ Port_Config.WRREC.STATUS、
Send_Config.WRREC.STATUS 、
Receive_Config.WRREC.STATUS 、
Send_P2P.RDREC.STATUS 、またはReceive_P2P.RDREC.STATUS と、SFB WRRECの説明を参照してください。

1)

S7-300/400 CPU 用の命令の場合のみ

6.5.3

USS

6.5.3.1

USS 通信の概要

USS 通信
USS 命令は、ユニバーサルシリアルインターフェース(USS)のプロトコルをサポートする
ドライブ操作を制御します。 RS485 接続によって複数のドライブと、USS 命令によって PtP
通信モジュールとの通信を行うことができます。 RS485 の各ポートは最大 16 ドライブを操作できます。
USS プロトコルは、シリアルバスを経由して通信にマスタ/スレーブネットワークを使用します。マスタはアドレスパラメータを使用してデータを選択されたスレーブに送信します。
スレーブは、最初に送信要求を受信しないと送信できません。 個々のスレーブ間の通信は行えません。 USS 通信は半二重モードで動作します。 下の図に、16 ドライブによるアプ
リケーション例のネットワーク図を示します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3501

通信
6.5 通信プロセッサ
1

2

&38

&0

3

               

①

CPU

②

CM

③

USS ネットワーク内の USS ドライブ

図 6-2

S7-1500 通信モジュールでの配線例

注記
RS232 によるドライブとの通信
ドライブとの通信では、基本的に CM PtP RS232 BA および CM PtP RS232 HF も使用できます。 ただし、RS232 ポートに接続できるドライブは 1 つのみです。
RS422 によるドライブとの通信
ドライブとの通信では、基本的に CM PtP RS422/485 BA および CM PtP RS422/485 HF のRS422 インターフェースも使用できます。 ただし、RS422 ポートに接続できるドライブ
は 1 つのみです。

プログラムの USS 命令• USS_Port_Scan: 命令 USS_Port_Scan では、USS ネットワークを使用して最大 16 台のドライブと通信モジュール経由の通信を行うことができます(周期的に命令を呼び出す必要があります)。
プログラムには、PtP 通信ポートあたり 1 つずつ USS_Port_Scan 命令があり、この命令がすべてのドライブへの通信を制御します。
• USS_Drive_Control: 命令 USS_Drive_Control を使用して、USS_Port_Scan からのドライ
ブへの送信データを準備し、その受信データを表示することができます。
USS_Drive_Control は、送信するデータを設定し、前の要求で USS_Port_Scan から受信したデータを評価します。

3502

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ• USS_Read_Param: 命令 USS_Read_Param を使用して、ドライブからパラメータを読み出すことができます。
• USS_Write_Param: 命令 USS_Write_Param を使用して、ドライブのパラメータを変更することができます。

6.5.3.2

USS プロトコル使用の必要条件
4 つの USS 命令は、2 つの FB と 2 つの FC を使用して USS プロトコルをサポートします。
各 USS ネットワークで、1 つのインスタンスデータブロック(DB)が USS_Port_Scan に使用され、1 つのインスタンスデータブロックが USS_Drive_Conrol のすべての呼び出しに使用されます。
ኁዐኖኜዐኖ'%
866B3RUWB6FDQኁዐኖኜዐኖ'%
866B'ULYHB&RQWURO
ኦ዆ኁኳ

6HQGB33抩≰኿ንዂዙወኻኖኜ

5HFHLYHB33

866B'ULYHB&RQWURO
ኦ዆ኁኳ

866B'ULYHB&RQWURO
ኦ዆ኁኳ

B&RQILJ

866ኦ዆ኁኳ
866ኦ዆ኁኳ
866ኦ዆ኁኳ

866B5HDGB3DUDP
866B:ULWHB3DUDP

図 6-3

USS プログラムシーケンス

1 つの RS485 ポートに接続されたすべてのドライブ(最大 16)は、同じ USS ネットワークの一部です。別の RS485 ポートに接続されたすべてのドライブは、別の USS ネットワークの一部です。各 USS ネットワークは、すべての USS_Drive_Control 命令に対する固有のイン
スタンスデータブロックと、USS_Port_Scan 命令に対するもう 1 つのインスタンスデータ
ブロックで管理されます。USS ネットワークの一部であるすべての命令は、
USS_Drive_Conrol 用のこのインスタンスデータブロックを共有する必要があります。
USS_Port_Scan, USS_Read_Param および USS_Write_Param 命令には、このファンクショ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3503

通信
6.5 通信プロセッサンのための USS_DB パラメータがあります。このパラメータは、USS_Drive_Control 命令のインスタンス DB の(静的)USS_DB パラメータと接続する必要があります。
• 命令 USS_Drive_Control および USS_Port_Scan はファンクションブロック(FB)です。
USS_Drive_Control または USS_Port_Scan 命令をプログラムエディタに追加する場合、[呼び出しオプション]ダイアログでこの FB 用の DB の割り当てを促すプロンプトが表示されます。この命令が、この USS ネットワークのこのプログラム内の最初のUSS_Drive_Control 命令であった場合、DB の標準割り当てを適用(または、必要に応じて名前を変更)することができ、新しい DB が作成されます。ただし、この命令がこのドライブに対する最初の USS_Drive_Control 命令ではない場合、[呼び出しオプション]ダ
イアログのドロップダウンリストから、この USS ネットワークに既に割り当て済みのDB を選択する必要があります。
• USS_Write_Param および USS_Read_Param 命令はファンクション(FC)です。エディタ
でこれらの FC を追加する場合、DB は割り当てられません。エディタでこれらの FC ま
たは USS_Port_Scan 命令を追加する場合は、対応する USS_Drive_Control インスタンス
DB の USS_DB パラメータをこれらの命令の USS_DB 入力に割り当てる必要があります。
パラメータフィールドをダブルクリックし、シンボルをクリックして使用可能な DB を表示します。ピリオド「.」を入力し、ドロップダウンリストから USS_DB パラメータを選択します。
• USS_Port_Scan ファンクションは、ポイントツーポイント RS485 通信ポート経由の CPUとドライブ間の通信を制御します。ドライブとの通信は、このファンクションを呼び出すたびに処理されます。ドライブがタイムアウトを通知しないように、このファンク
ションを素早く呼び出す必要があります。フレーム通信に対して一定の時間応答を保証するには、この命令をサイクリック割り込み OB で呼び出す必要があります。
• USS_Drive_Control 命令を使用すると、プログラムが USS ネットワーク内の指定したドライブにアクセスできます。入力と出力はドライブの状態およびオペレーティングファンクションに対応します。ネットワーク内に 16 のドライブがある場合、プログラム
内で USS_Drive_Control を少なくとも 16 回呼び出す必要があります。つまりドライブ
ごとに 1 回です。
USS_Drive_Control 命令は、サイクリック OB からのみ呼び出します。
• ドライブの動作パラメータは、USS_Read_Param および USS_Write_Param ファンクシ
ョンで読み出しおよび書き込みします。これらのパラメータは、ドライブの内部動作を制御します。これらのパラメータの定義については、ドライブのマニュアルを参照してください。プログラムにはこれらのファンクションの番号も含まれていることがありますが、ドライブに対しては 1 回の読み出し要求または 1 回の書き込み要求のみが有効です。メインプログラムのサイクル OB から USS_Read_Param および
USS_Write_Param ファンクションのみを呼び出すことができます。

3504

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

通知
USS 命令の呼び出し
メインプログラムのサイクル OB からは、常に USS_Drive_Control, USS_Read_Param または USS_Write_Param のみを呼び出してください。USS_Port_Scan 命令ファンクションはどの OB からも呼び出せますが、通常はサイクリック割り込み OB から呼び出されます。
USS_Drive_Control, USS_Read_Param または USS_Write_Param 命令を対応する
USS_Port_Scan 命令よりも優先度の高い OB で使用しないでください。たとえば、
USS_Port_Scan をメインプログラムに追加したり、USS_Read_Param をサイクリック割り
込み OB に追加したりしないでください。USS_Port_Scan の実行が別の命令で中断した場
合、予期しないエラーが発生することがあります。

ドライブとの通信に必要な時間の計算
ドライブとの通信は、CPU のサイクルとは非同期で行われます。CPU は通常、ドライブとの通信が完了する前に複数のサイクルを実行します。
ドライブに設定されたウォッチドッグがトリガされないように、送信フレームをウォッチ
ドッグタイム内にドライブに送信する必要があります。通信エラーの発生時にトランザク
ションを完了するのに必要な試行回数を考慮してください。既定では、USS プロトコルによるトランザクションごとに 2 回までの試行が行われます。
2 つの送信フレーム間の最大時間間隔は、以下のように計算されます。
N * (5 * サイクルタイム + フレームランタイム + 最大受信フレームのタイムアウト) * (送信試行回数)
N

このネットワーク内のドライブの数

係数 5

フレームの送受信には通常、5 サイクルが必要です。

サイクルタイム

USS_Port_Scan 命令が呼び出されるサイクリック割り込み OB の最大サイクルタイム

フレームのランタイ フレームタイム = (フレーム当たりの文字数) * (文字当たり 11 Bit) /ム(Bit/s 単位のデータ伝送速度)

送信試行回数

試行回数+ 1

受信フレームのタイ RCVTIME(ドライブから応答を受信しない場合)
ムアウト
最大受信フレームの RCVTIME + MSGTIME(RCVTIME の期限切れの少し前に不完全な応答
タイムアウトを受信し、MSGTIME のモニタリングが期限切れの場合、あるいは
RCVTIME の期限切れの時に応答がまだ処理中の場合、タイムアウ
トは MSGTIME によって延長されます)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3505

通信
6.5 通信プロセッサ「フレーム受信タイムアウト」(ミリ秒)では、以下の時間が適用されます。
ビット/秒

115200

57600

38400

19200

9600

4800

2400

1200

Receive_Conditions.E

25

29

33

56

72

100

100

100

25

29

33

56

72

124

240

460

ND.RCVTIME
Receive_Conditions.E
ND.MSGTIME
最大受信フレームのタイムアウト = (Receive_Conditions.END.RCVTIME (0.072 s) +Receive_Conditions.END.MSGTIME (0.072 s))
例:
5 ライブ
データ伝送速度 = 9600 bps
28 文字/フレーム
サイクルタイム = 0.020 s
リトライ回数 = 2
時間間隔 = 5 * (5 * 0.02 s + 1 * 28 * 11 / 9600 s + 0.072 s + 0.072 s) * 3 = 3 s
この場合、ドライブの時間モニタリングは 3 秒に設定する必要があります。

6.5.3.3

USS_Port_Scan / USS_Port_Scan_31:USS ネットワークによる通信
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。
注記
USS_Port_Scan_31 命令の使用
USS_Port_Scan_31 命令は、S7-1500 CPU でのみ使用できます。

説明
USS_Port_Scan 命令は、最大 16 台のドライブについて、USS ネットワークを使用して通信処理を行います。

3506

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
USS_Port_Scan_31 命令は、最大 31 台のドライブについて、USS ネットワークを使用して通信処理を行います。
この命令を追加すると、STEP 7 は自動的にインスタンス DB を作成します。

パラメータ
パラメー 宣言
タ

PORT

IN

データタイプS7-1200/
1500

S7-300/
400/
WinAC

Port

Word

標準

説明

0

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW
識別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラメ
ータに、HWCN で割り当てられた入力アドレスが割り当てられます。

BAUD

IN

DInt

9600

USS 通信のデータ伝送率以下が有効です。
• 1200 bps• 2400 bps• 4800 bps• 9600 bps• 19200 bps• 38400 bps• 57600 bps• 115200 bps

USS_DBINOUT

USS_BASE–

この USS_DB パラメータは、USS_Drive_Control /USS_Drive_Control_31 命令をプログラムに追加するときに生成され、初期化されるインスタンス DBの(静的) USS_DB パラメータに接続する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3507

通信
6.5 通信プロセッサ
パラメー 宣言タ

データタイプ

COM_RST INOUT

S7-1200/
1500

S7-300/
400/
WinAC

---

Bool

標準

説明

FALSE

USS_Port_Scan / USS_Port_Scan_31 命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

ERROR

OUT

Bool

FALSE

TRUE の場合、この出力はエラーが発生したことと、STATUS 出力が有効であることを示します。
USS_Drive_Control / USS_Drive_Control_31 命令のインスタンス DB の静的タグ USS_DB.
w_USSExtendedError の値のチェックが必要になる場合があります。

STATUS

OUT

Word

0

エラーコード(エラーメッセージ (ページ 3526)を参照)。

プログラムには、PtP 通信ポートあたり 1 つずつ USS_Port_Scan / USS_Port_Scan_31 命令があり、この命令の各呼び出しがこのネットワーク内のすべてのドライブとの通信を制御します。1 つの USS ネットワークと 1 つの PtP 通信ポートに割り当てられたすべての USS
ファンクションが、同じインスタンス DB を使用する必要があります。
プログラムは、ドライブ内でのタイムアウトを防止するために十分な回数の
USS_Port_Scan / USS_Port_Scan_31 命令を実行する必要があります(USS プロトコル使用の必要条件 (ページ 3503)「ドライブとの通信に必要な時間を計算」を参照)。
通常、USS_Port_Scan / USS_Port_Scan_31 命令はドライブのタイムアウトを防止し、最後の USS データの更新を USS_Drive_Control / USS_Drive_Control_31 の呼び出しに使用可能にするために、サイクリック割り込み OB から呼び出されます。

3508

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

USS_Port_Scan / USS_Port_Scan_31 データブロックタグ
下の表に、プログラムで使用できる USS_Port_Scan / USS_Port_Scan_31 のインスタンス DB
内のパブリックな静的タグを示します。
表 6-35

インスタンス DB の静的タグ

タグ

データタ
イプ

標準

説明

MODE

USInt

4

動作モード
有効な動作モード以下のとおりです。
• 0 = 全二重(RS232)• 1 = 全二重(RS422) 4 線式モード(ポイントツーポイント)• 2 = 全二重(RS422) 4 線式モード(マルチポイントマスタ; CM PtP(ET 200SP))• 3 = 全二重(RS422) 4 線式モード(マルチポイントスレーブ; CM PtP(ET 200SP))• 4 = 半二重(RS485) 2 線式モード 1)

LINE_PRE

USInt

2

回線初期状態の受信
有効な初期状態は以下のとおりです。
• 0 = 初期状態「なし」 1)• 1 = シグナル R(A) 5 V、シグナル R(B) 0 V (ブレーク検出)
この初期状態では、ブレーク検出が可能です。
以下とともにのみ選択できます。「全二重(RS422) 4 線式モード(ポイントツーポイント接続)」および「全二重(RS422) 4 線式モード(マルチポイントスレーブ)」• 2 = シグナル R(A) 0 V/シグナル R(B) 5 V
この初期設定はアイドル状態に相当します(送信動作がアクティブでない)。この初期状態では、ブレーク検出は不可能です。

BRK_DET

USInt

0

診断割り込みを有効にします。
• 0 - 有効になっていません• 1 - 有効になっています

RETRIES_MAX

SInt/Byte2

通信エラーが発生した場合の試行回数。
このパラメータを使用して、応答フレームが設定時間内に受信されなかった場合の要求フレームの送信試行回数を設定できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3509

通信
6.5 通信プロセッサ
タグ
EN_DIAG_ALA

データタ
イプ
Bool

標準

説明

0

診断割り込みを有効にします。

RM• 0 - 有効になっていません• 1 - 有効になっています

EN_SUPPLY_V

Bool

0

OLT

電源電圧 L+が不明の診断の有効化• 0 - 有効になっていません• 1 - 有効になっています1)

RS485 の CM 1241 で PROFIBUS ケーブルを使用するために必要な設定。

6.5.3.4

USS_Drive_Control / USS_Drive_Control_31:ドライブ用のデータの準備と表示
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。
注記
USS_Drive_Control_31 命令の使用
USS_Drive_Control_31 命令は、S7-1500 CPU でのみ使用できます。

説明
USS_Drive_Control 命令は、最大 16 台のドライブの送信データを準備し、ドライブの応答
データを評価します。
USS_Drive_Control_31 命令は、最大 31 台のドライブの送信データを準備し、ドライブの応答データを評価します。
ドライブごとに個別の命令のインスタンスを使用する必要があります。また、1 つの USS
ネットワークと 1 つの PtP 通信ポートに割り当てられたすべての USS ファンクションが、同じインスタンス DB を使用する必要があります。最初の USS_Drive_Control /USS_Drive_Control_31 命令を追加するときに DB 名を入力する必要があります。その後、最初の命令の追加時に作成されたこの DB を参照します。
この命令を追加すると、STEP 7 は自動的にこの DB を作成します。

3510

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータ
パラメー 宣言タ

RUN

データタイプS71200/15
00

IN

標準

説明

FALSE

ドライブの始動ビット:このパラメータが TRUE の場

S7-300/
400/
WinAC

Bool

合、この入力を使用して事前に設定された速度でドライブを操作することができます。ドライブの操作
中に RUN が FALSE に切り替わった場合、モータは停止するまで惰性運転します。この動作は、電源の切断(OFF2)およびモータのブレーキ(OFF3)の場合とは異なります。
OFF2

IN

Bool

FALSE

「停止するまで惰性運転」ビット:このパラメータがFALSE の場合、このビットによってドライブはブレーキをかけずに停止するまで惰性運転します。

OFF3

IN

Bool

FALSE

即時停止ビット:このパラメータが FALSE の場合、このビットによってドライブにブレーキがかけられ、即時停止します。

F_ACK

IN

Bool

FALSE

エラー確認ビット:このビットは、ドライブのエラー
ビットをリセットします。このビットはエラーのク
リア後に設定され、ドライブはそれによって前のエラーを報告する必要がなくなったことを検出します。

DIR

IN

Bool

FALSE

ドライブの方向制御ドライブを正転する場合(SPEED_SP が正の場合、表「SPEED_SP パラメータと DIR パラメータの相互関係」を参照してくださ
い).はこのビットを設定します

DRIVE

IN

USInt

Byte

1

ドライブのアドレス:この入力は USS ドライブのアドレスです。有効な範囲はドライブ 1 からドライブ
16 です。

PZD_LEN

IN

USInt

Byte

2

ワード長:これは PZD データワード数です。有効な値は、2、4、6 または 8 ワードです。

SPEED_S

IN

Real

P

0.0

速度セットポイント:これはドライブの速度で、構成定義した周波数のパーセンテージとして表されます。正の値の場合、ドライブは正転します(DIR が真の場合)。有効な範囲は 200.00～-200.00 です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3511

通信
6.5 通信プロセッサ
パラメー 宣言タ

CTRL3

データタイプS71200/15
00

IN

標準

説明

0

コントロールワード 3:ドライブのユーザー定義パラ

S7-300/
400/
WinAC

Word

メータに書き込まれる値。これは、ドライブで構成定義する必要があります(オプションパラメータ)。
CTRL4

IN

Word

0

コントロールワード 4:ドライブのユーザー定義パラ
メータに書き込まれる値。これは、ドライブで構成定義する必要があります(オプションパラメータ)。

CTRL5

IN

Word

0

コントロールワード 5:ドライブのユーザー定義パラ
メータに書き込まれる値。これは、ドライブで構成定義する必要があります(オプションパラメータ)。

CTRL6

IN

Word

0

コントロールワード 6:ドライブのユーザー定義パラ
メータに書き込まれる値。これは、ドライブで構成定義する必要があります(オプションパラメータ)。

CTRL7

IN

Word

0

コントロールワード 7:ドライブのユーザー定義パラ
メータに書き込まれる値。これは、ドライブで構成定義する必要があります(オプションパラメータ)。

CTRL8

IN

Word

0

コントロールワード 8:ドライブのユーザー定義パラ
メータに書き込まれる値。これは、ドライブで構成定義する必要があります(オプションパラメータ)。

COM_RST IN/OUT

---

Bool

FALSE

USS_Drive_Control / USS_Drive_Control_31 命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

NDR

OUT

Bool

FALSE

新しいデータが使用可能:このパラメータが真の場
合、ビットは新しい通信要求のデータが出力で使用可能であることを通知します。

ERROR

OUT

Bool

FALSE

エラー発生:TRUE の場合、この出力はエラーが発生したことと、STATUS 出力が有効であることを示します。エラーの場合、他のすべての出力はゼロにセットされます。通信エラーは、USS_Port_Scan /USS_Port_Scan_31 命令の ERROR および STATUS 出
力でのみ通知されます。

STATUS

OUT

Word

0

エラーコード(エラーメッセージ (ページ 3526)を参
照)。

3512

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言タ

RUN_EN

OUT

データタイプS71200/15
00

標準

説明

FALSE

操作が有効:このビットは、ドライブが稼動中かどう

S7-300/
400/
WinAC

Bool

かを通知します。
D_DIR

OUT

Bool

FALSE

ドライブの回転方向:このビットは、ドライブが正転するかどうかを通知します。
• FALSE – 正転
• TRUE – 逆転

INHIBIT

OUT

Bool

FALSE

ドライブブロック済み:このビットは、ドライブのブ
ロックビットのステータスを通知します。
• FALSE – ブロックなし• TRUE – ブロック済み

FAULT

OUT

Bool

FALSE

ドライブエラー:このビットは、ドライブでエラーが発生したことを通知します。異常を解消し、F_ACK
ビットを設定してこのビットをクリアする必要があ
ります。

速度

OUT

Real

0.0

ドライブ速度現在値(ドライブの STATUS 2 のスケー
ル値):これはドライブの速度で、構成定義した速度のパーセンテージとして表されます。

STATUS1

OUT

Word

0

ドライブの STATUS 1
この値には、ドライブの固定ステータスビットが含まれています。

STATUS3

OUT

Word

0

ドライブの STATUS 3
この値には、ドライブのユーザー定義可能なステー
タスワードが含まれています。

STATUS4

OUT

Word

0

ドライブの STATUS 4
この値には、ドライブのユーザー定義可能なステー
タスワードが含まれています。

STATUS5

OUT

Word

0

ドライブの STATUS 5
この値には、ドライブのユーザー定義可能なステー
タスワードが含まれています。

STATUS6

OUT

Word

0

ドライブの STATUS 6
この値には、ドライブのユーザー定義可能なステー
タスワードが含まれています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3513

通信
6.5 通信プロセッサ
パラメー 宣言タ

STATUS7

データタイプS71200/15
00

OUT

標準

説明

0

ドライブの STATUS 7

S7-300/
400/
WinAC

Word

この値には、ドライブのユーザー定義可能なステー
タスワードが含まれています。
STATUS8

OUT

Word

0

ドライブの STATUS 8
この値には、ドライブのユーザー定義可能なステー
タスワードが含まれています。

USS_Drive_Control / USS_Drive_Control_31 が最初に実行されるときに、USS アドレス
(DRIVE パラメータ)で指定されたドライブがインスタンス DB で初期化されます。初期化後、後続の USS_Port_Scan / USS_Port_Scan_31 命令でこのドライブ番号からのドライブとの通信を開始することができます。
ドライブ番号を変更した場合、まず CPU を STOP に切り替えた後で RUN に戻し、インス
タンス DB を初期化する必要があります。入力パラメータは USS 送信バッファで設定され、すべての出力が「前の」有効な応答バッファから読み出されます。USS_Drive_Control /USS_Drive_Control_31 は、送信するデータを設定し、前の要求で受信されたデータの評価のみを行います。
D_IR 入力(Bool)、または、SPEED_SP 入力(Real)の符号(正または負)を使用して、ドライブの回転方向を制御できます。モータが正転する場合、これらの入力が共に作動してドライ
ブの回転方向を決定する方法を下の表に示します。
表 6-363514

SPEED_SP パラメータと DIR パラメータの相互関係

SPEED_SP

DIR

ドライブの回転方向

値>0

0

逆転

値>0

1

正転

値< 0

0

正転

値< 0

1

逆転

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

USS_Drive_Control / USS_Drive_Control_31 データブロックタグ
下の表に、プログラムで使用できる USS_Drive_Control / USS_Drive_Control_31 のインス
タンス DB 内のパブリックな静的タグを示します。
表 6-37

インスタンス DB の静的タグ

タグ

データタ 標準
イプ

説明

USS_DB.

Word

USS ドライブ拡張エラーコード - ドライブ固有値

16#0

w_USSExtende

エラーメッセージの意味は、最初にエラーを報告した命令によって

dError

異なります(ERROR = TRUE)。以下のケースが区別されます。
• USS_Write_Param / USS_Write_Param_31:エラーコードの意味については、ドライブの説明を参照してください。
• USS_Read_Param / USS_Read_Param_31:エラーコードの意味については、ドライブの説明を参照してください。
• USS_Port_Scan / USS_Port_Scan_31:エラーメッセージの影響を受けるドライブの番号。

6.5.3.5

USS_Read_Param / USS_Read_Param_31:データをドライブから読み出す
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。
注記
USS_Read_Param_31 命令の使用
USS_Read_Param_31 命令は、S7-1500 CPU でのみ使用できます。

説明
USS_Read_Param 命令は、最大 16 台のドライブのいずれかからパラメータを読み出します。
USS_Read_Param_31 命令は、最大 31 台のドライブのいずれかからパラメータを読み出します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3515

通信
6.5 通信プロセッサ
1 つの USS ネットワークと 1 つの PtP 通信ポートに割り当てられたすべての USS ファンクションは、USS_Drive_Control / USS_Drive_Control_31 命令のインスタンスデータブロック
を使用する必要があります。USS_Read_Param / USS_Read_Param_31 は、メインプログラ
ムのサイクル OB から呼び出す必要があります。

パラメータ
パラメー 宣言タ

REQ

データタイプ

標準

説明–

REQ の立ち上がりエッジで新しい読み出し要求が作S7S71200/15 300/400
00
/
WinAC

IN

Bool

成されます。
DRIVE

IN

USInt

Byte

–

ドライブのアドレス:DRIVE は USS ドライブのアドレスです。有効な範囲はドライブ 1 からドライブ
16 です。

PARAM

IN

UInt

–

パラメータ番号 PARAM では、書き込むドライブのパラメータが指定されます。このパラメータの範囲
は 0～2047 です。一部のドライブでは、INDEX パ
ラメータの最上位バイトを使用して、2047 よりも大きいパラメータ値にアクセスすることができます。拡張された範囲へのアクセスの追加情報については、ドライブのマニュアルを参照してください。

INDEX

IN

UInt

–

パラメータインデックス:INDEX では、書き込むド
ライブパラメータインデックスが指定されます。これは 16 ビットの値で、最下位ビットは範囲(0～255)の実際のインデックス値です。ドライブは、ドライブ固有の最上位バイトを使用することもできます。追加情報については、ドライブのマニュアルを参照してください。

USS_DBINOUT

USS_BASE–

この USS_DB パラメータは、USS_Drive_Control /USS_Drive_Control_31 命令をプログラムに追加するときに生成され、初期化されるインスタンス DBの(静的) USS_DB パラメータに接続する必要があり
ます。

3516

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言タ

DONE1

データタイプ

標準

説明

FALSE

このパラメータが TRUE の場合、直前に要求された

S7S71200/15 300/400
00
/
WinAC

OUT

Bool

読み出しパラメータの値は VALUE 出力で入手できます。USS_Drive_Control / USS_Drive_Control_31
命令がドライブの読み出し応答を認識するときに、このビットがセットされます。このビットは、次に
USS_Read_Param / USS_Read_Param_31 が呼び出されたときにリセットされます。
ERROR

OUT

Bool

FALSE

ERROR = TRUE:エラーが発生し、STATUS 出力が有効です。エラーの場合、他のすべての出力はゼロにセットされます。通信エラーは、USS_Port_Scan /USS_Port_Scan_31 命令の ERROR および STATUS 出
力でのみ通知されます。
USS_Drive_Control / USS_Drive_Control_31 命令のインスタンス DB の静的タグ USS_DB.
w_USSExtendedError の値のチェックが必要になる場合があります。

STATUS

OUT

Word

0

エラーコード(エラーメッセージ (ページ 3526)を参
照)。

VALUE

OUT

Variant

Any(Word,(Word,–

これは読み出されたパラメータの値で、DONE ビッ
トの値が真の場合のみ有効です。

Int, UInt, Int,
DWord,

UInt,

DInt,

DWord,UDInt,

DInt,

Real)

UDInt,Real)1

DONE ビットは、有効なデータが参照されたモータドライブから読み出されて、CPU に伝送されたことを示します。それは、この命令が追加のパラメータを直ちに読み出すことができることを示してはいません。個々のドライブで使用するためにパラメータチャンネルを開放する前に、空の読み出し要求をモータドライブに送信し命令によって確認応答される必要があります。特定のモータドライブに対して USS_Read_Param /USS_Read_Param_31 または USS_Write_Param / USS_Write_Param_31 を即時に呼び出すと、エラー 16#818Aが発生します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3517

通信
6.5 通信プロセッサ

6.5.3.6

USS_Write_Param / USS_Write_Param_31:ドライブのデータを変更
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。
注記
USS_Write_Param_31 命令の使用
USS_Write_Param_31 命令は、S7-1500 CPU でのみ使用できます。
注記
EEPROM 書き込み命令の場合(USS ドライブ内の EEPROM):
EEPROM のサービス寿命を最大限にするために、EEPROM の書き込み操作回数を最小限に抑えてください。

説明
USS_Write_Param 命令は、最大 16 台のドライブのいずれかのパラメータを変更します。
USS_Write_Param_31 命令は、最大 31 台のドライブのいずれかのパラメータを変更します。
1 つの USS ネットワークと 1 つの PtP 通信ポートに割り当てられたすべての USS ファンクションが USS_Drive_Control / USS_Drive_Control_31 のインスタンスデータブロックを使用する必要があります。
USS_Write_Param / USS_Write_Param_31 は、メインプログラムのサイクル OB から呼び出す必要があります。

3518

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータ
表 6-38

パラメータのデータタイプ

パラメー 宣言タ

REQ

データタイプ

標準

説明–

REQ の立ち上がりエッジで新しい書き込み要求が作

S7S7-300/4
1200/15
00/
00
WinAC

IN

Bool

成されます。
DRIVE

IN

USInt

Byte

–

ドライブのアドレス:DRIVE は USS ドライブのアドレスです。有効な範囲はドライブ 1 からドライブ
16 です。

PARAM

IN

UInt

–

パラメータ番号 PARAM では、書き込むドライブのパラメータが指定されます。このパラメータの範囲
は 0～2047 です。一部のドライブでは、INDEX パ
ラメータの最上位バイトを使用して、2047 よりも大きいパラメータ値にアクセスすることができます。拡張された範囲へのアクセスの追加情報については、ドライブのマニュアルを参照してください。

INDEX

IN

UInt

–

パラメータインデックス:INDEX では、書き込むド
ライブパラメータインデックスが指定されます。これは 16 ビットの値で、最下位ビットは範囲(0～255)の実際のインデックス値です。ドライブは、ドライブ固有の最上位バイトを使用することもできます。追加情報については、ドライブのマニュアルを参照してください。

EEPROM

IN

Bool

–

ドライブの EEPROM に保存:TRUE の場合、ドライ
ブへの書き込み用パラメータのトランザクションがドライブの EEPROM に保存されます。FALSE の場
合、書き込まれた値が一時的にのみ保存され、次にドライブの電源を入れた時に失われます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3519

通信
6.5 通信プロセッサ
パラメー 宣言
タ

VALUE

IN

データタイプ

標準説明–

書き込み先のパラメータの値。REQ の立ち上がりエS7S7-300/4
1200/15
00/
00
WinAC
Variant

Any(Word,(Word,

ッジで有効になる必要があります。

Int, UInt, Int, UInt,

USS_DB

INOUT

DWord,

DWord,

DInt,

DInt,

UDInt,UDInt,

Real)

Real)
USS_BASE–

この USS_DB パラメータは、USS_Drive_Control /USS_Drive_Control_31 命令をプログラムに追加するときに生成され、初期化されるインスタンス DBの(静的) USS_DB パラメータに接続する必要があり
ます。

DONE1

OUT

Bool

FALSE

TRUE の場合、VALUE 入力がドライブに書き込まれます。USS_Drive_Control / USS_Drive_Control_31
命令がドライブの書き込み応答を認識するときに、このビットがセットされます。このビットは、次にUSS_Write_Param / USS_Write_Param_31 が呼び出されたときにリセットされます。

ERROR

OUT

Bool

FALSE

TRUE の場合、エラーが発生し、STATUS 出力が有効です。エラーの場合、他のすべての出力はゼロにセットされます。通信エラーは、USS_Port_Scan /USS_Port_Scan_31 命令の ERROR および STATUS
出力でのみ通知されます。
USS_Drive_Control / USS_Drive_Control_31 命令のインスタンス DB の静的タグ USS_DB.
w_USSExtendedError の値のチェックが必要になる場合があります。

STATUS

OUT

Word

0

エラーコード(エラーメッセージ (ページ 3526)を参照)。

1

DONE ビットは、有効なデータが参照されたモータドライブから読み出されて、CPU に伝送されたことを示します。USS ライブラリが追加パラメータを即時読み出せることを示してはいません。個々のドライブで使用するためにパラメータチャンネルを開放する前に、空の書き込み要求をモータドライブに送信し命令によって確3520

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
認応答される必要があります。特定のモータドライブに対して USS_Read_Param / USS_Read_Param_31 または
USS_Write_Param / USS_Write_Param_31 FC を即時に呼び出すと、エラー 0x818A が発生します。

6.5.3.7

ドライブのセットアップにつぃての一般情報

ドライブセットアップの要件• ドライブに対して 4 つの PIV ワード(ParameterIDValue)の使用を設定する必要があります。
• ドライブが 2、4、6、または 8 つの PZD ワード(process data area (プロセスデータ領
域))に対して設定可能であること。
• ドライブの PZD ワード数が、ドライブの USS_Drive_Control 命令の PZD_LEN 入力に対応していること。
• すべてのドライブのデータ伝送速度が、USS_Port_Scan 命令の BAUD 入力に必ず対応していること。
• ドライブが、必ず USS 通信用にセットアップ済みであること。
• 周波数セットポイントが USS インターフェースによって提供されることが、ドライブで必ず指定されていること。
• ドライブアドレスが必ず指定されていること(領域: 1-16).
このアドレスは、ドライブの USS_Drive_Control ブロックの DRIVE 入力に対応している必要があります。
• RS485 ネットワークが正しく終了すること。

SINAMICS V20 ドライブの接続とセットアップ
S7-1200 での SINAMICS V20 の動作の応用例が、インターネット (http://
support.automation.siemens.com/WW/view/en/63696870)で入手できます。

SINAMICS V20 ドライブの接続
USS ネットワークへの SIEMENS G120(C)ドライブの接続例。 他のドライブの接続例は、それぞれのドライブのマニュアルを参照してください。
USS ネットワークへの SINAMICS G120(C)ドライブの接続は、差し込み式接続によって行われます。 この接続は短絡耐性を持ち、絶縁されています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3521

通信
6.5 通信プロセッサ

10 V 基準電位2

RS485N、受信および送信(-)

3

RS485N、受信および送信(+)

4

ケーブルシールド

5

未使用

図 6-4

USS 接続通知
互いに異なる基準電圧
基準電圧が同じでないデバイスを接続すると、接続ケーブルに不要な電流が生じることがあります。 この不要な電流により通信エラーが発生したり、デバイスが損傷することがあります。
通信ケーブルで接続するすべてのデバイスが回路内に同じ基準コンダクタを持っているか、不要な電流の発生を防止するために電気的に切り離されていることを確認してください。
必ず、シールドが接地されるか、またはドライブのバスコネクタのピン 1 に接続されるようにしてください。
必ず、G120(C)の配線端子 2 (GND)が接地されるようにしてください。
RS485 マスタ(たとえば、CM1241 通信モジュール付きの S7-1200 CPU)を PROFIBUS コネ
クタによって接続する場合は、以下に示すようにバスケーブルを配線してください。

図 6-5

A1

A2

B1

B2

通信モジュールの接続

RS485 マスタがネットワークまたはポイントツーポイント接続の終端ステーションの場合、
端子 A1 および B1 は終端設定用であるため(たとえば、DP プラグコネクタ

3522

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
6ES7972‑0BB52‑0XA0 を使用)、PROFIBUS コネクタの端子 A1 および B1 (A2 および B2 ではなく)を使用する必要があります。
G120(C)がネットワークの終端ステーションとして設定される場合は、バス終端レジスタ用のスイッチを「ON」に設定する必要があります。
ኲኀዙወኦክኖኔኖኣኽ
俛䟀ቑ抩≰䞷56ነኪ
ኌኜ俑䵾ዉንኖኜ䞷
ኖኁአኞ

図 6-6

終端ステーションの接続

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3523

通信
6.5 通信プロセッサ

G120(C)ドライブのセットアップ
ドライブを S7-1500 または ET 200SP に接続する前に、ドライブに以下のシステムパラメータがあることを確認します。
ステッ 命令プ
1

取扱説明書
G120 1)G120C 2)

オペレータパネル BOP-2 を使用して、ドライブの基本コミッショニ 章 4.4.3

章 6.4.1

ングを実行します。
このコンバータは、その入力/出力およびフィールドバスインターフ
ェース用のさまざまな既定値(マクロ)を提供します。 基本コミッショ
ニングの 9 番目のステップ(MAC PAR p15)で、USS 通信用のマクロ 21
を選択します。 これによって、以下のパラメータの既定値が決まります。
• データ伝送速度(p2020):38400 bps• PZD の数(p2022): 2• PIV の数(p2023):variable
注記:
STARTER コミッショニングソフトウェアまたは SINAMICS Startdriveを使用して、基本コミッショニングを行うこともできます。
2

G120 の制御ユニットまたは G120(C)のアドレススイッチを使用し

章 6.2.2.1

章 8.4.2.1て、コンバータの USS アドレスを指定します。
• 有効なアドレス範囲 1～30
注記:
パラメータ p2021、または、STARTER/SINAMICS Startdrive を使用して、USS アドレスを設定することもできます。
以下のステップでは、BOP-2 を使用してパラメータの数を入力した 章 4.4.2

章 6.4.2

り、値を変更することによって、直接にパラメータにアクセスしてい
ます。

3524

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
ステッ 命令プ
3

取扱説明書
G120 1)

ユーザーアプリケーションの以下の通信関連コンバータパラメータを 章 6.2.2.2

G120C 2)章 8.4.2.1

調整します。
• データ伝送速度(p2020)、38400 bps でない場合(設定が、USS_Port_Scan 通信命令の BAUD パラメータと同一であることを確認します。)• PZD の数(p2022)、2 でない場合(設定が、USS_Drive_Control 通信命令の PZD_LEN パラメータと同一であることを確認します。)• PIV の数(p2023) = 4(既定でマクロ 21 によって「variable」(127)に設定された値を「4」に変更します(命令 USS_Read_Param および
USS_Write_Param で必要))• フィールドバス SS モニタ時間[ms] (p2040)
4

速度セットポイントのソースを指定します。
• n_set Eval (p1000[0]) = 6(速度セットポイントは、USS バスによって提供されます。)

5

速度および周波数の基準値を設定します。
• n_reference f_reference (p2000) = (6,00 分-1～210000,00 分-1)
(すべての相対速度または周波数はこの基準値を参照します。
) この基
準値は、100%、400016 進(ワード)、または 4000 000016 進(ダブルワード)に対応します。以下が当てはまります。
f 基準値 (Hz 単位) = n 基準値 (((分-1) / 60) x ポールペアの数)単位)6

これらのパラメータは不揮発性メモリに転送します。
• Save par (p0971) = 1
1) G120 (http://support.automation.siemens.com/WW/view/en/62089662)
2) G120(C) (http://support.automation.siemens.com/WW/view/en/61462568)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3525

通信
6.5 通信プロセッサ

6.5.3.8

エラーメッセージ

エラーメッセージの概要 - PtP
エラーメッセージは命令の STATUS 出力で提供され、そこで評価したりユーザープログラ
ムで処理したりすることができます。
エラーコ
ード

説明

対策

16#0000

エラーなし‑

受信ステータスとエラーコード
16#0094 「固定/最大フレーム長の受信」に基づいて識別 ‑されたフレームの終了
16#0095 「メッセージタイムアウト」に基づいて識別さ ‑れたフレームの終了
16#0096 「キャラクタ遅延時間」の経過に基づいて識別さ ‑れたフレームの終了
16#0097

最大応答時間に達したためにフレームが中止さ ‑れました。

16#0098 「メッセージからのメッセージ長の読み出し」条 ‑件の適合に基づいて識別されたフレームの終了
16#0099 「終了シーケンス」の受信に基づいて識別され ‑たフレームの終了
送信ステータスとエラーコード
16#7000

ブロックアイドル‑

16#7001

新しいフレームの最初の呼び出しデータ伝送が ‑開始されました

16#7002

中間呼び出し:データ伝送が実行中‑

16#8085

長さが無効

適切なフレーム長を選択します。
以下が有効です(モジュールによって異なります):1-1024/2048/4096 (Byte)

3526

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8088指定された長さが受信バッファの設定された範 受信バッファの範囲を変更するか、または受信囲を超えています。

対策

バッファの設定された範囲に対応するフレーム

注記:データタイプ STRING が BUFFER パラメー 長を選択します。
タで指定されている場合、現在の文字列が以下が有効です(モジュールによって異なりまLENGTH パラメータで指定された長さよりも短 す):16#8090

いと、このエラーコードも表示されます。

1～1024/2048/4096 (バイト)構成エラー:WString のバイト数が奇数です

偶数のバイト数を選択します。

受信ステータスとエラーコード
16#7002

中間呼び出し:データ伝送が実行中

16#8088

受信した文字数が BUFFER パラメータで指定さ 適切なフレーム長を選択します。
れた文字数を超えています。

‑

以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)16#8090

構成エラー:WString のバイト数が奇数です

偶数のバイト数を選択します。

特殊ファンクションのエラーメッセージコード
16#818F

不正なパラメータ番号の設定(USS のみ)

適切なパラメータ番号(PARAM)を選択します。
次の番号が有効です。0-2047

16#8190

CRC 計算の不正な設定

CRC 計算の適切な値を選択します。
以下が有効です。無効または有効。
アドレス指定されたモジュールが CRC 計算をサポートしているかどうかチェックします。

16#8191

診断エラー割り込みの不正な設定[診断エラー割り込み]の適切な値を選択します。
以下が有効です。診断エラー割り込みが無効、または診断エラー割り込みが有効。
アドレス指定されたモジュールが診断割り込みの生成をサポートしているかどうかをチェックします。

「ポートの構成」のエラーメッセージコード
16#81A0

モジュールがこのプロトコルをサポートしてい モジュールの有効なプロトコル(PROTOCOL)をません。

16#81A1

選択します。

モジュールがこのデータ伝送率をサポートして モジュールの有効なデータ伝送速度(BAUD)をいません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

選択します。

3527

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#81A2

モジュールがこのパリティ設定をサポートして 「パリティ」(PARITY)の適切な値を選択します。
いません。

対策

以下が有効です。
• なし(1)• 偶数(2)• 奇数(3)• マーク(4)• スペース(5)• 任意(6)16#81A3

モジュールがこのデータビット数をサポートし 「データビット数」(DATABITS)の適切な値を選ていません。

択します。
以下が有効です。
• 7 (2)• 8 (1)

16#81A4

モジュールがこのストップビット数をサポート 「ストップビット数」(STOPBITS)の適切な値をしていません。

選択します。
以下が有効です。
• 1 (1)• 2 (2)16#81A5
16#81A7

モジュールがこのタイプのデータフロー制御を モジュールの有効なデータフロー制御
サポートしていません。

(FLOWCTRL)を選択します。

XON または XOFF の無効な値

XON (XONCHAR)および XOFF (XOFFCHAR)の適切な値を選択します。
値の有効な範囲:0...255

16#81AA

動作モードが無効

有効な動作モード以下のとおりです。
• 全二重(RS232) (0)• 全二重(RS422) 4 線式モード(ポイントツー
ポイント) (1)/ (CM PtP (ET 200SP))• 全二重 (RS422) 4 線式モード(マルチポイン
トマスタ) (2)/ (CM PtP (ET 200SP))• 全二重(RS422) 4 線式モード(マルチポイン
トスレーブ) (3)• 半二重(RS485) 2 線式モード(4)3528

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81AB

回線初期状態が無効

有効な初期状態は以下のとおりです。
• 初期設定[なし] (0)• シグナル R(A) 5 V、シグナル R(B) 0 V (ブレーク検出) (1)以下とともにのみ選択できます。「全二重(RS422) 4 線式モード(ポイントツーポイン
ト接続)」および「全二重(RS422) 4 線式モード(マルチポイントスレーブ)」• シグナル R(A) 0 V/シグナル R(B) 5 V (2):この
初期設定はアイドル状態に相当します(送信動作がアクティブでない)。

16#81AC[ブレーク検出]の値が無効[ブレーク検出]の適切な値を選択します。以下が有効です。
• ブレーク検出が無効(0)• ブレーク検出が有効(1)16#81AF

モジュールがこのプロトコルをサポートしてい モジュールの有効なプロトコルを選択します。
ません。

「送信構成」のエラーコード
16#81B5

エンドデリミタが 2 つ以上、または[エンドデリミタ]と[終了シーケンス]に適切な終了シーケンスが 5 文字以上値を選択します。
以下が有効です。
• 無効(0)、• 1 つ (1)または 2 つ (2)のエンドデリミタ
または• 無効(0)、• 終了シーケンスに 1 文字 (1)から 5 文字 (5)16#81B63964(R)プロトコルが選択されていたため、送 3964(R)プロトコルが設定されている場合は、信構成が拒否されました。

送信構成が送信されないようにします。

「受信構成」のエラーコード
16#81C0

開始条件が無効適切な開始条件を選択します。
以下が有効です。
• フレーム開始前の送信中断• アイドルラインの送信

16#81C1

終了条件が無効、または終了条件が選択されて 適切な条件を選択します(AUTOHOTSPOT を参いません

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

照)。

3529

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81C3[最大メッセージ長]の値が無効「最大メッセージ長」(MAXLEN)の適切な値を選択します。
値の有効な範囲(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81C4[メッセージ内の長さ指定のオフセット]の値が [メッセージ内の長さ指定のオフセット]に有効
無効な値を選択します。
値の有効な範囲(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81C5[長さフィールドのサイズ]の値が無効「長さフィールドのサイズ」(LENGTHSIZE)の適切な値を選択します。
値の有効な範囲(バイト単位):• 1 (1)• 2 (2)• 4 (4)16#81C6[長さ指定でカウントされていない文字数]の値 「長さ指定でカウントされていない文字数」
が無効(LENGTHM)の適切な値を選択します。
値の有効な範囲:0～255 (バイト)16#81C7 「メッセージ内のオフセット + 長さフィールド [メッセージ内のオフセット]、[長さフィールのサイズ + カウントされていない文字数」の合 ドのサイズ]、および[カウントされていない文計が最大フレーム長を超えています

字数]に適切な値を選択します。
値の有効な範囲:• メッセージ内のオフセット(モジュールによって異なります):0～1024/2048/4096 (バイト)• 長さフィールドのサイズ:1、2、または 4(バイト)• カウントされていない文字数:0～255 (バイト)

16#81C8[応答タイムアウト]の値が無効[応答タイムアウト]に適切な値を選択します。
値の有効な範囲:1～65535 (ms)

16#81C9[キャラクタ遅延時間]の値が無効[キャラクタ遅延時間]に適切な値を選択します。
値の有効な範囲:1～65535 (ビット時間)

3530

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81CB

フレーム終了シーケンスが有効になっています チェック用に 1 つ以上の文字を有効にします。
が、チェック用の文字が有効になっていません

16#81CC

フレーム開始シーケンスが有効になっています チェック用に 1 つ以上の文字を有効にします。
が、チェック用の文字が有効になっていません

16#81CD[上書き禁止]の値が無効[上書き禁止]に適切な値を選択します。
以下が有効です。
• 上書き禁止が無効(0)または• 上書き禁止が有効(1)16#81CE[スタートアップ時に受信バッファをクリアす [スタートアップ時に受信バッファをクリアする]の値が無効る]に適切な値を選択します。
以下が有効です。
• スタートアップ時に受信バッファをクリア
が無効(0)• スタートアップ時に受信バッファをクリアが無効(1)

送信ステータスとエラーコード
16#81D0

送信コマンドのランタイム中の送信要求の受信 送信コマンドのランタイム中に追加の送信要求を受信するのを防止します。

16#81D1

XON または CTS = ON の待機時間が経過しまし 通信パートナーで障害が発生したか、速度が遅た。

すぎるか、またはオフラインになっています。
通信パートナーをチェックするか、または必要に応じてパラメータを変更します。

16#81D2 「ハードウェア RTS は常に ON」:DSR = ON から 通信パートナーをチェックします。伝送時間全OFF への切り替えのために送信ジョブがキャン 体にわたって、DSR が確実に ON になるようセルされました
16#81D3にします。

送信バッファオーバーフロー/送信フレームが長 短いフレーム長を選択します。
すぎます

以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81D5

パラメータ変更、断線の検出、または CPU の パラメータ割り当て、断線、および CPU ステ
STOP によって、伝送がキャンセルされました ータスをチェックします。

16#81D6

終了識別子が受信されなかったため、伝送がキ 終了文字のパラメータ割り当てと通信パートナ
ャンセルされました。

16#81D7

ーのフレームをチェックします。

ユーザープログラムとモジュール間の通信エラ 通信をチェックします(たとえば、シーケンスー

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

番号の一致など)。

3531

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81D8

モジュールが構成定義されていないため、伝送 モジュールを構成定義します。
の試行が拒否されました。

16#81DF

次のいずれかの理由でモジュールが FB へのイ —ンターフェースをリセットしました。
• モジュールが再起動された• モジュールパラメータが再割り当てされた• CPU STOP

受信構成のエラーコード
16#81E0

フレームが中断されました:送信バッファオーバ ユーザープログラムで受信ファンクションの呼ーフロー/送信フレームが長すぎます

び出し率を上げるか、またはデータフロー制御
による通信を構成定義する必要があります。

16#81E1

フレームが中断されました:パリティエラー

通信パートナーの接続線をチェックするか、両方のデバイスに対して同じデータ伝送速度、パ
リティ、ストップビット数が設定されているかどうかを確認します。

16#81E2

フレームが中断されました:キャラクタフレーム スタートビット、データビット、パリティビッ
エラー

ト、データ伝送率、ストップビットの設定をチ
ェックします。

16#81E3

フレームが中断されました:キャラクタオーバー ファームウェアエラー:カスタマーサポートに
フロエラー

16#81E4

問い合わせてください。

フレームが中断されました:「メッセージ内のオ メッセージ内のオフセット、長さフィールドのフセット + 長さフィールドのサイズ + カウント サイズ、およびカウントされていない文字数にされていない文字数」の合計長が受信バッファ 適切な値を選択します。
を超えています16#81E5

フレームが中断されました:break

パートナーへの受信ラインが中断しています。
再接続するか、またはパートナーのスイッチをオンにします。

16#81E6[バッファリングされる受信フレーム]の最大数 ユーザープログラムで命令を呼び出す回数を増を超過しましたやすか、データフロー制御による通信を構成定義するか、またはバッファリングされるフレームの数を増やします。

3532

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81E7

同期エラーモジュールと Receive_P2P

Receive_P2P のさまざまな異なるインスタンス
が確実に同一モジュールにアクセスしないようにします。

16#81E8

フレームが中断されました:メッセージまたは条 パートナーデバイスに障害が発生しているか、件が検出される前に、キャラクタ遅延時間が経 またはパートナーデバイスが遅すぎます。必要過しました。

に応じてインターフェーステスターを使用し、パートナーデバイスが伝送線で相互接続されていることをチェックします。

16#81E9

Modbus CRC エラー(Modbus をサポートしてい Modbus フレームのチェックサムエラー.通信
る通信モジュールのみ)

16#81EA

Modbus フレームが短すぎます(Modbus をサポ Modbus フレームの最小長さが満たされていまートしている通信モジュールのみ)

16#81EB

パートナーをチェックします。
せん通信パートナーをチェックします。

フレームが中断されました:最大フレーム長に達 通信パートナー側で短いフレーム長を選択しましましたす。
以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)フレーム終了検出のパラメータをチェックします。

エラーコード V24 に付随する信号
16#81F0

モジュールが V24 に付随する信号をサポートし V24 に付随する信号をサポートしていないモていません。

ジュールに対して付随する信号の設定を試みました。必ず RS232 モジュールにするか、または RS232 モード(ET 200SP)を設定します。

16#81F1

V24 に付随する信号を操作できません

ハードウェアデータフロー制御が有効の場合、
V24 に付随する信号を手動で操作することはできません。

16#81F2

モジュールのタイプが DTE であるため、DSR 信 モジュールの設定済みタイプをチェックしま号を設定できません。

す。
モジュールタイプは DCE (データ通信装置)でなければなりません。

16#81F3モジュールのタイプが DCE であるため、DTR 信 モジュールの設定済みタイプをチェックしま号を設定できません。

す。
モジュールタイプは DTE (データ端末装置)でなければなりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3533

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81F4

ブロックヘッダーエラー(ブロックタイプが正し インスタンス DB およびブロックヘッダーをチ
くない、ブロックの長さが正しくない、など) ェックします。

受信構成のエラーコード
16#8201

Receive_Conditions は無効なデータタイプへの データタイプ

1)

ポインタです。

DB、BOOL、BYTE、CHAR、WORD、INT、
DWORD、DINT、REAL、DATE、
TIME_OF_DAY、TIME、S5TIME、
DATE_AND_TIME、STRING の 1 つを指すポインタを入力します。

16#8225

Receive_Conditions が、1 KB 以上の最適化され 以下の最大長を持つ領域へのポインタを入力したメモリ領域をポイントしています。

ます。

または

• 最適化されたメモリ領域:1 KB

Receive_Conditions が最適化されたメモリ領域 • 最適化されていないメモリ領域:4 KB
注記:ポインタが最適化されたメモリ領域をポをポイントしており、受信長がReceive_Conditions でアドレス指定された領域 イントしている場合、1 KB 以上を送信しないでください。
を超えています。
16#8229

Receive_Conditions が、ビット数が n * 8 と等 BOOL へのポインタを使用している場合、ビッ

1)

しくない BOOL へのポインタです。

ト数は 8 の倍数とする必要があります。

エラーコード、一般
16#8280

モジュールの読み出し時の否定確認

エラーの原因の詳細については、
RDREC.STATUS 静的パラメータと、SFB RDRECの説明を参照してください。
• PORT パラメータの入力をチェックします。
• 初期呼び出しの前に、COM_RST パラメー
タを設定します。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
WRREC.STATUS 静的パラメータと、SFB
WRREC の説明を参照してください。

16#8282

モジュールが使用不可

PORT パラメータの入力をチェックし、モジュールに確実にアクセスできるようにします。

受信構成のエラーコード3534

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#82C1[バッファリングされた受信フレーム]の値が無 [バッファリングされた受信フレーム]に適切な
効

対策値を選択します。
値の有効な範囲:1-255

16#82C23964(R)プロトコルが選択されていたため、受 3964(R)プロトコルが設定されている場合は、信構成が拒否されました。

受信構成が送信されないようにします。

16#8301

Receive_Conditions は無効なデータタイプへの 有効なデータタイプを選択します。

1)

ポインタです。

以下が有効です。DB、BOOL、BYTE、CHAR、
WORD、INT、DWORD、DINT、REAL、DATE、
TIME_OF_DAY、TIME、S5TIME、
DATE_AND_TIME、STRING

16#8322

パラメータ読み出し時の範囲長さエラー

Receive_Conditions パラメータの入力をチェックします。

16#8324

パラメータ読み出し時の範囲エラー

Receive_Conditions パラメータの入力をチェックします。

16#8328

パラメータ読み出し時の設定エラー

Receive_Conditions パラメータの入力をチェックします。

送信ステータスとエラーコード
16#8328

BUFFER が、ビット数が n * 8 と等しくない

BOOL へのポインタを使用している場合、ビッ

1)

BOOL へのポインタです

ト数は 8 の倍数とする必要があります。

受信構成のエラーコード
16#8332

Receive_Conditions パラメータの無効なデータ Receive_Conditions パラメータの入力をチェ
ブロック

16#833A

ックします。

Receive_Conditions パラメータのデータブロッ Receive_Conditions パラメータの入力をチェ
クの名称が、ロードされていないデータブロッ ックします。
クを示しています。

16#8351

無効なデータタイプ

Receive_Conditions パラメータの入力をチェックします。

16#8352

Receive_Conditions がデータブロックをポイン Receive_Conditions へのポインタをチェック

1)

トしていません。

16#8353

Receive_Conditions タイプの構造をポイントし Receive_Conditions へのポインタをチェック

1)ていません。Receive_Conditions

します。
します。

エラーコード 3964(R)プロトコル

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3535

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8380

パラメータ割り当てエラー:[キャラクタ遅延時 [キャラクタ遅延時間](CharacterDelayTime)に間]の値が無効対策

適切な値を選択します。
値の有効な範囲:1～65535 (ms)

16#8381

パラメータ割り当てエラー:[応答タイムアウト] [応答タイムアウト](AcknDelayTime)に適切なの値が無効値を選択します。
値の有効な範囲:1～65535 (ms)

16#8382

パラメータ割り当てエラー:[優先度]の値が無効 [優先度](Priority)に適切な値を選択します。
以下が有効です。
• 高い(1)• 低い(0)

16#8383

パラメータ割り当てエラー:[ブロックチェック] [ブロックチェック] (BCC)の適切な値を選択し
の値が無効

ます。
以下が有効です。
• ブロックチェックあり(1)• ブロックチェックなし(0)16#8384

パラメータ割り当てエラー:[接続試行]の値が無 [接続試行](BuildupAttempts)に適切な値を選
効.

択します。
値の有効な範囲:1-255

16#8385

パラメータ割り当てエラー:[送信試行]の値が無 [送信試行](RepetitionAttempts)に適切な値を効.

選択します。
値の有効な範囲:1-255

16#8386

ランタイムエラー:接続試行回数を超過しました インターフェースケーブルおよび伝送パラメー
タをチェックします。
さらに、パートナーデバイス側で受信ファンク
ションが正しく構成定義されているかどうかもチェックします。

16#8387

ランタイムエラー:送信試行回数を超過しました インターフェースケーブル、伝送パラメータ、および通信パートナーの構成をチェックしま
す。

3536

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8388

ランタイムエラー:「ブロックチェックキャラク 接続が致命的に中断されていないかどうかチェ
タ」のエラー対策

ックします。その場合は、こまめにエラーコー

内部的に計算したブロックチェックキャラクタ ドをチェックすることをお勧めします。パートの値が、接続の終了時にパートナーが受信した ナーデバイスが正しく動作していることをチェ
ブロックチェックキャラクタに対応していませ ックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェックでん。
きる場合があります。
16#8389

ランタイムエラー:空き受信バッファの待機中に 通信パートナーの送信要求(STX, 02H)は、受信無効な文字が受信されました

バッファが空いている場合のみ、DLE で応答します。この前に、追加文字を受信することはできません(再び、STX を除いて)。
パートナーデバイスが正しく動作していることをチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェ
ックできる場合があります。

16#838A

ランタイムエラー:受信時の論理エラー

フレームヘッダー内およびデータ文字列内のパ

DLE 受信後、追加のランダム文字(DLE またはートナー DLE が常に重複しているか、または

ETX を除く)を受信しました。

接続が DLE ETX でリリースされているかをチェックします。パートナーデバイスが正しく動作していることをチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェックできる場合があります。

16#838B

ランタイムエラー:キャラクタ遅延時間を超過し パートナーデバイスが遅すぎるか、またはパーました

トナーデバイスに障害が発生しています。
必要に応じて、伝送線内に接続されたインター
フェーステストデバイスを使用して検証します。

16#838C

ランタイムエラー:空き受信バッファの待機時間 ユーザープログラムで命令を呼び出す回数を増が開始されました

やすか、またはデータフロー制御による通信を構成定義します。

16#838D

ランタイムエラー:フレームの繰り返しが NAK 通信パートナーをチェックします。破壊されて後、4 秒以内に開始されません。

いる可能性のある受信フレームをパートナーが4 秒以内に繰り返す必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3537

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#838E

ランタイムエラー:アイドルモードで、1 つ以上 パートナーデバイスが正しく動作していることの文字(NAK、STX 以外)を受信しました。

対策をチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェ
ックできる場合があります。

16#838F

ランタイムエラー:初期化の競合 - 両方のパート パートナーのどちらかで、「低い」優先度を設ナーが高い優先度を設定しています。

16#8391

定します。

パラメータ割り当てエラー:Freeport が設定され Freeport プロトコルが設定されている場合ているため、3964 構成データが拒否されまし は、3964 パラメータ割り当てデータが送信さた

1)

れないようにします。

S7-300/400 CPU 用の命令の場合のみ

エラーメッセージの概要 - Modbus
エラーコ
ード

説明

対策

16#0000

エラーなし‑

インターフェースの設定エラー -Modbus_Comm_Load
16#8181

モジュールがこのデータ伝送率をサポートして BAUD パラメータで、モジュールの有効なデーいません。

16#8182

タ伝送速度を選択します。

モジュールがこのパリティ設定をサポートして PARITY パラメータの「パリティ」の適切な値いません。

を選択します。
以下が有効です。
• なし(1)• 偶数(2)• 奇数(3)• マーク(4)• スペース(5)• 任意(6)16#8183
16#8184

モジュールがこのタイプのデータフロー制御を FLOW_CTRL パラメータで、モジュールの有効サポートしていません。

なデータフロー制御を選択します。

[応答タイムアウト]の値が無効

RESP_TO パラメータで、[応答タイムアウト]の適切な値を選択します。
値の有効な範囲:1～65535 (ms)3538

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
Send_Config.RDREC.STATUS/
Receive_Config.RDREC.STATUS 静的パラメー
タまたは RDREC.STATUS と、SFB RDREC の説
明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
Send_Config.WRREC.STATUS/
Receive_Config.WRREC.STATUS 静的パラメー
タまたは WRREC.STATUS と、SFB WRREC の説
明を参照してください。

16#8282

モジュールが使用不可

PORT パラメータの入力をチェックし、モジュールに確実にアクセスできるようにします。

構成エラー -Modbus_Slave
16#8186

スレーブアドレスが無効

MB_ADDR パラメータで、適切なスレーブアドレスを選択します。
以下が有効です。標準アドレス領域では 1～
247;
拡張アドレス領域では 1～65535(0 はブロードキャスト用に予約済みです)

16#8187

MB_HOLD_REG パラメータの無効な値

MB_HOLD_REG パラメータで、保持レジスタの適切な値を選択します。

16#8188

動作モードまたはブロードキャストが無効

ブロードキャストモードで MODE の値 1 を選

(MB_ADDR = 0)および MODE パラメータ ≠ 1択するか、または異なる動作モードを選択します。

16#818C

MB_HOLD_REG 領域へのポインタは、データブ MB_HOLD_REG 領域へのポインタの適切な値
ロックまたはビットメモリアドレス領域である を選択します。
ことが必要です。

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.RDREC.STATUS またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3539

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.WRREC.STATUS またはReceive_P2P.WRREC.STATUS と、SFB WRRECの説明を参照してください。

16#8452

MB_HOLD_REG が、DB またはビットメモリ領 MB_HOLD_REG ポインタをチェックします1)

域へのポインタではありません

16#8453

MB_HOLD_REG が、タイプ BOOL または WORD MB_HOLD_REG ポインタをチェックします

1)のポインタではありません

16#8454

MB_HOLD_REG でアドレス指定された領域が1)

DB よりも長いか、またはアドレス指定された領MB_HOLD_REG ポインタをチェックします

域が読み出しまたは書き込みされるデータバイ
トの数に対して小さすぎます。
16#8455

MB_HOLD_REG が書き込み禁止 DB を指してい MB_HOLD_REG ポインタをチェックします1)ます

16#8456

命令実行中のエラーエラーの原因は、STATUS SFCSTATUS パラメータの値を識別します。

1)

パラメータに示されます。

SFC51、STATUS パラメータの説明でこの値が意味することをチェックします。

構成エラー -Modbus_Master
16#8180

MB_DB パラメータの値が無効

Modbus_Comm_Load 命令で MB_DB(インスタンスデータ DB)に構成定義された値が有効ではありません。
Modbus_Comm_Load 命令とそのエラーメッ
セージの相互接続をチェックします。

16#8186

ステーションアドレスが無効

MB_ADDR パラメータで、適切なステーション
アドレスを選択します。
以下が有効です。標準アドレス領域では 1～
247;
拡張アドレス領域では 1～65535(0 はブロードキャスト用に予約済みです)

16#8188

動作モードまたはブロードキャストが無効

ブロードキャストモードで MODE の値 1 を選

(MB_ADDR = 0)および MODE パラメータ ≠ 1択するか、または異なる動作モードを選択しま
す。

3540

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8189

データアドレスが無効

DATA_ADDR パラメータで、データアドレスの適切な値を選択します。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818A

長さが無効

DATA_LEN パラメータで、適切なデータ長を選択します。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818B

DATA_PTR の値が無効

DATA_PTR パラメータで、データポインタの適切な値を選択します(M または DB アドレス)。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818C

DATA_PTR パラメータの相互接続エラー

16#818D

DATA_PTR でアドレス指定された領域が DB よ DATA_PTR ポインタをチェックします。

命令の相互接続をチェックしてください。

りも長いか、またはアドレス指定された領域が読み出しまたは書き込みされるデータバイトの数に対して小さすぎます。
16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.RDREC.STATUS またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。.
エラーの原因の詳細については、静的パラメー
タ Send_P2P.WRREC.STATUS、
Receive_P2P.WRREC.STATUS 、またはReceive_Reset と、SFB WRREC の説明を参照してください。

通信エラー - Modbus_Master および Modbus_Slave
16#80D1

XON または CTS = ON の待機時間が経過しまし 通信パートナーで障害が発生したか、速度が遅た。

すぎるか、またはオフラインになっています。
通信パートナーをチェックするか、または必要に応じてパラメータを変更します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3541

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#80D2 「ハードウェア RTS は常に ON」:DSR = ON から 通信パートナーをチェックします。伝送時間全OFF への切り替えのために送信ジョブがキャン 体にわたって、DSR が確実に ON になるようセルされました
16#80E0にします。

フレームが中断されました:送信バッファオーバ ユーザープログラムで命令を呼び出す回数を増ーフロー/送信フレームが長すぎます

やすか、またはデータフロー制御による通信を構成定義します。

16#80E1

フレームが中断されました:パリティエラー

通信パートナーの接続線をチェックするか、両方のデバイスに対して同じデータ伝送速度、パ
リティ、ストップビット数が設定されているかどうかを確認します。

16#80E2

フレームが中断されました:キャラクタフレーム スタートビット、データビット、パリティビッ
エラー

ト、データ伝送率、ストップビットの設定をチ
ェックします。

16#80E3

フレームが中断されました:キャラクタオーバー 通信パートナーのフレーム内のデータ数をチェ
フロエラー

16#80E4

ックします。

フレームが中断されました:最大フレーム長に達 通信パートナー側で短いフレーム長を選択しましましたす。
以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)通信エラー - Modbus_Master
16#80C8

スレーブが設定された時間内に応答しません。 スレーブのデータ伝送率、パリティ、および配線をチェックします。

16#80C9

スレーブが Blocked_Proc_Timeout によって設 Blocked_Proc_Timeout の設定をチェックしま
定された時間内に応答しません。

す。
モジュールが、Modbus_Comm_Load 命令を使用して構成定義されたかどうかをチェックします。モジュールは、抜き差し後または電圧復
旧後に Modbus_Comm_Load を使用して再構成しなければならない場合があります。

16#8200

インターフェースが出力要求でビジーになって 後からコマンドを繰り返します。新しいコマンいます。

ドを開始する前に、まだ実行中のコマンドが存在しないことを確認します。

プロトコルエラー - Modbus_Slave (Modbus をサポートしている通信モジュールの場合のみ)

3542

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8380

CRC エラー

Modbus フレームのチェックサムエラー.通信
パートナーをチェックします。

16#8381

ファンクションコードがサポートされていな通信パートナーをチェックして、有効なファン

い、またはブロードキャストでサポートされて クションコードが送信されていることを確認し
16#8382

いません。

ます。

要求フレーム内の情報の長さが無効

DATA_LEN パラメータで、適切なデータ長を選択します。

16#8383

要求フレーム内のデータアドレスが無効

DATA_ADDR パラメータで、データアドレスの適切な値を選択します。

16#8384

要求フレーム内のデータ値無効エラー

Modbus マスタの要求フレーム内のデータ値をチェックします。

16#8385

診断値が Modbus スレーブでサポートされませ Modbus スレーブは、診断値 16#0000 およびん(ファンクションコード 08)

16#000A のみをサポートします。

プロトコルエラー - Modbus_Master (Modbus をサポートしている通信モジュールの場合のみ)
16#8380

CRC エラー

Modbus フレームのチェックサムエラー.通信
パートナーをチェックします。

16#8381

Modbus Slave からの応答フレームに以下のエラ 通信パートナーをチェックして、有効なファン
ーメッセージがあります:ファンクションコード クションコードが送信されていることを確認しがサポートされていません。

16#8382

ます。

Modbus Slave からの応答フレームに以下のエラ 適切なデータ長を選択します。
ーメッセージがあります:長さが無効

16#8383

Modbus Slave からの応答フレームに以下のエラ DATA_ADDR パラメータで、データアドレスのーメッセージがあります:要求フレーム内のデー 適切な値を選択します。
タアドレスが無効

16#8384

Modbus Slave からの応答フレームに以下のエラ Modbus スレーブへの要求フレームをチェック
ーメッセージがあります:データ値エラー

16#8385

します。

Modbus Slave からの応答フレームに以下のエラ Modbus スレーブは、診断値 16#0000 およびーメッセージがあります:診断値が Modbus ス 16#000A のみをサポートします。
レーブでサポートされていません。

16#8386
16#8387

戻されたファンクションコードが要求されたフ スレーブの応答フレームとアドレス指定をチェァンクションコードと一致しません。

ックします。

応答を要求されなかったスレーブ

スレーブの応答フレームをチェックします。ス
レーブのアドレス設定をチェックします。

16#8388

書き込み要求に対するスレーブの応答のエラー スレーブの応答フレームをチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3543

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8828

DATA_PTR が、n * 8 と等しくないビットアドレ DATA_PTR ポインタをチェックします。

1)

スを指しています

16#8852

DATA_PTR が、DB またはビットメモリ領域への DATA_PTR ポインタをチェックします。

1)

ポインタではありません

16#8853

DATA_PTR が、タイプ BOOL または WORD のポ DATA_PTR ポインタをチェックします。

1)

インタではありません

16#8855

DATA_PTR が書き込み禁止 DB を指しています DATA_PTR ポインタをチェックします。

1)

16#8856

SFC51 呼び出し中のエラー

1)

Modbus_Master 命令を再度呼び出してください。

エラー - Modbus_Slave (Modbus をサポートしている通信モジュールの場合のみ)
16#8428

MB_HOLD_REG が、n * 8 と等しくないビット MB_HOLD_REG ポインタをチェックします1)

アドレスを指しています

16#8452

MB_HOLD_REG が、DB またはビットメモリ領 MB_HOLD_REG ポインタをチェックします1)

域へのポインタではありません

16#8453

MB_HOLD_REG が、タイプ BOOL または WORD MB_HOLD_REG ポインタをチェックします

1)のポインタではありません

16#8454

MB_HOLD_REG でアドレス指定された領域が1)

DB よりも長いか、またはアドレス指定された領MB_HOLD_REG ポインタをチェックします

域が読み出しまたは書き込みされるデータバイ
トの数に対して小さすぎます。
16#8455

MB_HOLD_REG が書き込み禁止 DB を指してい MB_HOLD_REG ポインタをチェックします1)ます

16#8456

SFC51 呼び出し中のエラー

1)

1)

Modbus_Slave 命令を再度呼び出してください。

S7-300/400 CPU 用の命令の場合のみ

エラーメッセージの概要 - USS
エラーコ
ード

説明

対策

16#0000

エラーなし‑

16#8180ドライブの応答の長さエラー:

ドライブの応答フレームをチェックします。

3544

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8181

データタイプエラー

適切なデータタイプを選択します。
以下が有効です。
• REAL• ワード• ダブルワード

16#8182

データタイプエラー:「ダブルワード」または ドライブの応答フレームをチェックします。
「実数」を「ワード」要求に対して返すことはできません。

16#8183

データタイプエラー:「ワード」を「ダブルワー ドライブの応答フレームをチェックします。
ド」または「実数」要求に対して返すことはできません。

16#8184

ドライブの応答のチェックサムエラー:

ドライブと通信接続をチェックします。

16#8185

アドレス指定エラー

有効なドライブアドレス範囲:1～16

16#8186

セットポイントエラー

有効なセットポイント範囲: -200%～+200%

16#8187

不正なドライブ番号が返されました

ドライブの応答フレームをチェックします。

16#8188

PZD 長さが無効許可されている PZD 長さ:2、4、6、8 ワード

16#8189

モジュールがこのデータ伝送率をサポートして モジュールの有効なデータ伝送率を選択しまいません。

16#818A

す。

このドライブに対する別の要求が現在有効です。 後から、パラメータ読み出しまたは書き込みコ
マンドを繰り返します。

16#818B

ドライブが応答しません。

16#818C

ドライブがパラメータ要求に対してエラーメッ ドライブの応答フレームをチェックします。
セージで応答しました

ドライブをチェックします。

パラメータ要求をチェックします。
命令 USS_Read_Param、USS_Write_Param ま
たは USS_Port_Scan にエラーの報告があるかチェックします。エラーの報告がある場合、
USS_Drive_Control 命令の静的タグ USS_DB.
w_USSExtendedError の値をチェックします。

16#818D
16#818E

ドライブがパラメータ要求に対してアクセスエ ドライブの応答フレームをチェックします。
ラーメッセージで応答しました

パラメータ要求をチェックします。

ドライブが初期化されていません。

ユーザープログラムをチェックして、
USS_Drive_Control 命令がこのドライブに対して呼び出されていることを確認します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3545

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Port_Config.RDREC.STATUS、
Send_Config.RDREC.STATUS 、
Receive_Config.RDREC.STATUS 、
Send_P2P.RDREC.STATUS 、またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。.
エラーの原因の詳細については、静的パラメー
タ Port_Config.WRREC.STATUS、
Send_Config.WRREC.STATUS 、
Receive_Config.WRREC.STATUS 、
Send_P2P.RDREC.STATUS 、またはReceive_P2P.RDREC.STATUS と、SFB WRRECの説明を参照してください。

1)

S7-300/400 CPU 用の命令の場合のみ

6.5.4

MODBUS (RTU)

6.5.4.1

Modbus RTU 通信の概要

Modbus RTU 通信
Modbus RTU (Remote Terminal Unit)はネットワーク内での通信用の標準プロトコルで、
RS232 または RS422/485 接続を使用してネットワーク内の Modbus デバイス間のシリア
ルデータ伝送を行います。
Modbus RTU は、マスタ/スレーブネットワークを使用します。すべての通信が 1 台のマス
タデバイスでトリガされ、スレーブはマスタの要求への応答のみを行います。 マスタはスレーブアドレスに要求を送信し、このスレーブアドレスを持つスレーブのみがコマンドに応答します。
例外: Modbus スレーブアドレス 0 は、すべてのスレーブにブロードキャストフレームを送信します(スレーブ応答なし)。

3546

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

Modbus ファンクションコード
• Modbus RTU マスタとして操作される CPU は、通信接続によって接続されている
Modbus RTU スレーブとの間でデータおよび I/O 状態の読み出しおよび書き込みを行う
ことができます。
• Modbus RTU スレーブとして操作される CPU により、通信接続で接続されている
Modbus RTU マスタが自分の CPU 内のデータおよび I/O 状態の読み出しおよび書き込みを行うことができます。
表 6-39

データ読み出し用ファンクション リモート I/O とプログラムデータの読み出し

MODBUS ファンクショ スレーブ(サーバー)からのデータ読み出し用ファンクション ンコード
標準アドレス指定
01

出力ビットの読み出し: 要求当たり 1～2000/19921)ビット

02

入力ビットの読み出し: 要求当たり 1～2000/19921)ビット

03

保持レジスタの読み出し 要求当たり 1～125/1241)ワード

04

入力ワードの読み出し: 要求当たり 1～125/1241)ワード

1) 拡張アドレス指定の場合

表 6-40

データ書き込み用ファンクション リモート I/O とプログラムデータの変更

MODBUS ファンクショ スレーブ(サーバー)へのデータ書き込み用ファンクション - 標準
ンコード
アドレス指定05

1 つの出力ビットの書き込み: 要求当たり 1 ビット06

1 つの保持レジスタの書き込み: 要求当たり 1 ワード

15

1 つ以上の出力ビットの書き込み: 要求当たり 1～1960 ビット

16

1 つ以上の保持レジスタの書き込み: 要求当たり 1～122 ワー
ド• Modbus ファンクションコード 08 および 11 は、スレーブデバイスとの通信用診断オ
プションを提供します。
• Modbus スレーブアドレス 0 は、すべてのスレーブにブロードキャストフレームを送信します(スレーブ応答なし; ファンクションコード 5、6、15、16 の場合)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3547

通信
6.5 通信プロセッサ
表 6-41

Modbus ネットワーク内のステーションアドレス

ステーション

アドレス

RTU ステーション

標準ステーションアドレス

1～247 、およびブロードキャストの場
合は 0

拡張ステーションアドレス

1～65535、およびブロードキャストの場合は 0

Modbus メモリアドレス
実際に使用可能な Modbus メモリアドレス(入力/出力アドレス)の数は、CPU バージョンと使用可能なワークメモリに応じて異なります。

プログラムの Modbus RTU 命令• Modbus_Comm_Load: Modbus_Comm_Load を実行して、データ伝送率、パリティ、
データフロー制御などの PtP パラメータをセットアプする必要があります。 Modbus
RTU プロトコル用の通信モジュールを設定すると、このモジュールは Modbus_Master
命令または Modbus_Slave 命令以外では使用できなくなります。
• Modbus_Master: Modbus マスタ命令で、CPU を Modbus RTU マスタデバイスとして、1つ以上の Modbus スレーブデバイスとの通信に使用することができます。
• Modbus_Slave: Modbus スレーブ命令で、CPU を Modbus RTU スレーブデバイスとして、1 つの Modbus マスタデバイスとの通信に使用することができます。

6.5.4.2

Modbus_Comm_Load: Modbus 用の通信モジュールを設定
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
Modbus_Comm_Load 命令は、Modbus RTU プロトコルを使用した通信用の通信モジュー
ルを構成定義します。使用しているプログラムに Modbus_Comm_Load 命令を追加すると、インスタンスデータブロックが自動的に割り当てられます。

3548

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
Modbus_Comm_Load の構成の変更は CM に保存され、CPU には保存されません。電圧復
旧および抜き差しにより、CM はデバイス構成に保存されたデータで構成定義されます。
Modbus_Comm_Load 命令は、以下のシナリオで呼び出す必要があります。

パラメータ
パラメータ 宣言

データタイプ

標準

説明

FALSE

この入力の立ち上がりエッジ時に命令が開始されまS7S71200/15 300/400
00
/
WinAC
REQ

IN

Bool

す。
PORT

IN

Port

Laddr

0

通信に使用される通信モジュールを指定します。
• S7-1500/S7-1200 の場合:デバイス構成の[HW 識
別子]。
シンボリックポート名は、PLC タグテーブルの[システム定数]タブで割り当てられ、そこから適用できます。
• S7-300/S7-400 の場合:デバイス構成の[入力アドレス]。
S7-300/400/WinAC システムでは、PORT パラメ
ータに、HWCN で割り当てられた入力アドレスが割り当てられます。

BAUD

IN

UDInt

DWord

9600

データ伝送速度の選択
有効な値:300, 600, 1200, 2400, 4800, 9600,
19200, 38400, 57600, 76800, 115200 bit/s.

PARITY

IN

UInt

Word

1

パリティの選択:• 0 – なし
• 1 – 奇数• 2 – 偶数

FLOW_CTR IN

UInt

Word

L

0

フロー制御の選択• 0 – (既定)フロー制御なし• 1 – RTS が常にオンのハードウェアフロー制御(RS422/485 CM の場合、無効)• 2 – RTS が切り替えられるハードウェアフロー制
御(RS422/485 CM の場合、無効)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3549

通信
6.5 通信プロセッサ
パラメータ 宣言

データタイプ

標準説明

0

RTS オンディレイの選択

S7S71200/15 300/400
00
/
WinAC
RTS_ON_D IN

UInt

Word

LY

• 0 – フレームの最初の文字が送信されるまで、「RTS 有効」からの遅延なし。
• 1～65535 – フレームの最初の文字が送信されるまで、「RTS 有効」からの遅延あり(ミリ秒)(RS422/485 CM の場合、無効)。RTS ディレー
は、FLOW_CTRL の選択とは関わりなく、使用する必要があります。

RTS_OFF_

IN

UInt

Word

0

DLY

RTS オフ遅延の選択:• 0 – 最後の文字が転送された後、「RTS 無効」までの遅延なし• 1～65535 – 最後の文字が転送された後、「RTS 無効」までの遅延あり(ミリ秒) (RS422/485 ポートの場合、無効)。RTS ディレーは、FLOW_CTRL の選択とは関わりなく、使用する必要があります。

RESP_TO

IN

UInt

Word

1000

応答タイムアウト:
5 ms～65535 ms - Modbus_Master がスレーブからの応答を待機するミリ秒単位の時間。スレーブがこの時間内に応答しない場合、Modbus_Master は要求を繰り返すか、または指定された繰り返し回数(下記、RETRIES パラメータを参照)の要求が送信された場合には要求をエラーで終了します。

MB_DB

IN/OUT

MB_BASE‑

Modbus_Master または Modbus_Slave 命令のイン
スタンスデータブロックへの参照。
この MB_DB パラメータは、Modbus_Master またはModbus_Slave 命令の(静的であるため、命令に表示されない) MB_DB パラメータと接続する必要があります。

COM_RST

IN/OUT

---

Bool

FALSE

Modbus_Comm_Load 命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

DONE

OUT

Bool

FALSE

DONE ビットは、最後の要求がエラーなしで完了した後、1 サイクルの間 TRUE です。

3550

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ 宣言

データタイプ

標準

説明

FALSE

ERROR ビットは、最後の要求がエラーで完了した

S7S71200/15 300/400
00
/
WinAC
ERROR

OUT

Bool

後、1 サイクルの間 TRUE です。STATUS パラメータのエラーコードは、ERROR = TRUE のサイクルでのみ有効です。
STATUS

OUT

Word

16#700 エラーコード(エラーメッセージ (ページ 3581)を参0照)Modbus_Comm_Load は、Modbus RTU プロトコル用のポートを構成定義する場合に実行します。Modbus RTU プロトコル用のポートを構成定義すると、このポートは命令
Modbus_Master または命令 Modbus_Slave 以外では使用できなくなります。
Modbus 通信に使用する通信ポートの構成ごとに、Modbus_Comm_Load を実行する必要があります。使用する各ポートに、一意の Modbus_Comm_Load インスタンス DB を割り当てます。データ伝送速度またはパリティなどの通信パラメータを変更する必要がある場
合、またはネットワークが復旧した場合にのみ、再度 Modbus_Comm_Load を実行します。
たとえば、Modbus_Master または Modbus_Slave をプログラムに追加すると、インスタン
スデータブロックが命令に割り当てられます。Modbus_Comm_Load 命令の MB_DB パラ
メータを Modbus_Master または Modbus_Slave 命令の MB_DB パラメータに接続する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3551

通信
6.5 通信プロセッサ

Modbus_Comm_Load データブロックタグ
下の表に、プログラムで使用できる Modbus_Comm_Load のインスタンス DB 内のパブリックな静的タグを示します。
表 6-42

インスタンス DB の静的タグ

タグ

データタイプS71200/15
00

ICHAR_GAP

標準

説明

0

キャラクタ間最大遅延時間。このパラメータはミリ秒単位で

S7300/40
0/
WinAC

Word

指定され、受信文字間の予想時間を大きくします。このパラメータに対応するビット時間数が、Modbus 既定値の 35 ビット時間(3.5 キャラクタ時間)に追加されます。
RETRIES

Word

2「応答なし」のエラーコード 0x80C8 が返される前に、マスタが実行する再試行回数。

EN_SUPPLY_V

Bool

0

電源電圧 L+が不明の診断の有効化

0

動作モード

OLT
MODE

USInt

バイト

有効な動作モード以下のとおりです。
• 0 = 全二重(RS232)• 1 = 全二重(RS422) 4 線式モード(ポイントツーポイント)• 2 = 全二重(RS422) 4 線式モード(マルチポイントマスタ;
CM PtP (ET 200SP))• 3 = 全二重(RS422) 4 線式モード(マルチポイントスレーブ;
CM PtP (ET 200SP))• 4 = 半二重(RS485) 2 線式モード 1)

3552

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
タグ

LINE_PRE

データタイプS71200/15
00

S7300/40
0/
WinAC

USInt

バイト

標準

説明

0

回線初期状態の受信
有効な初期状態は以下のとおりです。
• 0 = 初期状態「なし」 1)• 1 = シグナル R(A) 5 V、シグナル R(B) 0 V (ブレーク検出)
この初期状態では、ブレーク検出が可能です。
以下とともにのみ選択できます。「全二重(RS422) 4 線式モード(ポイントツーポイント接続)」および「全二重(RS422) 4 線式モード(マルチポイントスレーブ)」• 2 = シグナル R(A) 0 V/シグナル R(B) 5 V
この初期設定はアイドル状態に相当します(送信動作がア
クティブでない)。この初期状態では、ブレーク検出は不可能です。

BRK_DET

USInt

バイト

0

ブレーク検出以下が有効です。
• 0 = ブレーク検出が無効• 1 = ブレーク検出が有効

EN_DIAG_ALA

Bool

0

RM

診断割り込みを有効にします。
• 0 - 有効になっていません• 1 - 有効になっています

STOP_BITS

USINT

バイト

1

ストップビット数:• 1 = 1 ストップビット• 2 = 2 ストップビット• 0、3～255 = 予約済み

1)

RS485 の CM 1241 で PROFIBUS ケーブルを使用するために必要な設定。

6.5.4.3

Modbus_Master: Modbus マスタとして通信
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3553

通信
6.5 通信プロセッサ説明
Modbus_Master 命令により、Modbus_Comm_Load 命令で構成定義されたポート経由でModbus マスタとして通信します。使用しているプログラムに Modbus_Master 命令を追加すると、インスタンスデータブロックが自動的に割り当てられます。Modbus_Comm_Load
命令の MB_DB パラメータ を Modbus_Master 命令の(静的) MB_DB パラメータ に接続する必要があります。

パラメータ
パラメー 宣言タ

REQ

データタイプ

標準

説明

FALSE

FALSE = 要求なし

S7S71200/15 300/400
00
/
WinAC

IN

Bool

TRUE = Modbus スレーブへのデータの送信要求
MB_ADD

IN

UInt

Word

‑

R

Modbus RTU ステーションアドレス:
標準アドレス指定の範囲(1～247、 の場合 0) for
Broadcast)
拡張アドレス指定の範囲(1～65535、 の場合 0 for
Broadcast)
値 0 は、すべての Modbus スレーブへのフレームのブロードキャスト用に予約されています。
Modbus ファンクションコード 05、06、15、および 16 のみが、ブロードキャスト用にサポートされ
ています。

MODE

IN

USInt

Byte

0

モードの選択:要求のタイプ(読み出し、書き込み、または診断)を指定します。追加情報については、
下記の Modbus ファンクションの表を参照してください。

DATA_AD IN

UDInt

DWord

0

DR

スレーブの開始アドレス:Modbus スレーブでアクセスするデータの開始アドレスを指定します。有効なアドレスは、下記の Modbus ファンクションの表に記載されています。

DATA_LE
N

IN

UInt

Word

0

データ長:この要求でアクセスするビットまたはワードの数を指定します。有効な長さは、下記のModbus ファンクションの表に記載されています。

3554

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメー 宣言タ

COM_RST IN/OUT

データタイプ

標準

説明

FALSE

Modbus_Master 命令の初期化

S7S71200/15 300/400
00
/
WinAC
---

Bool

命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。
DATA_PT

IN/OUT

Variant

Any

‑

R
DONE

データポインタ:書き込みまたは読み出しするデー
タのフラグまたは DB をポイントします。

OUT

Bool

FALSE

DONE ビットは、最後の要求がエラーなしで完了した後、1 サイクルの間 TRUE です。

BUSY

OUT

Bool

‑

• FALSE – Modbus_Master の有効なコマンドなし• TRUE – Modbus_Master のコマンドが進行中

ERROR

OUT

Bool

FALSE

ERROR ビットは、最後の要求がエラーで完了した
後、1 サイクルの間 TRUE です。STATUS パラメー
タのエラーコードは、ERROR = TRUE のサイクルでのみ有効です。

STATUS

OUT

Word

0

エラーコード(エラーメッセージ (ページ 3581)を参照)TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3555

通信
6.5 通信プロセッサ

Modbus マスタのデータブロック内のタグ
下の表に、プログラムで使用できる Modbus_Master のインスタンス DB 内のパブリックな
静的タグを示します。
表 6-43

インスタンス DB の静的タグ

タグ

データ
タイプ

Blocked_Proc_Timeout Real

標準

説明

3.0

このインスタンスが ACTIVE として削除されるまで、ブロックされた Modbus マスタが待機する時間(秒単位)。これは、たとえば、マスタ要求が出力され、マスタファンクシ
ョンが要求を完了する前にプログラムがその呼び出しを停止したときに発生します。時間値は、エラーの発生を避けるために 0 以上、55 未満であることが必要です。
「Modbus-Master による通信のルール」および「異なったパラメータ設定の Modbus_Master 命令の呼び出し」も参照してください。

Extended_Addressing

Bool

FALSE

スレーブステーションアドレスをシングルまたはダブルバ
イトとして構成定義します。
• FALSE = 1 バイトアドレス; 0～247• TRUE = 2 バイトアドレス(拡張アドレス指定に対応);
0～655353556

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
タグ

データ
タイプ

Compatibility_Mode 1) Bool

標準

説明

FALSE

CP 341 および CP 441-2 との互換モード、Modbus RTU 用
ドライバを備えた ET 200SP 1SI との互換モード、およびModbus 用 ET 200SP 1SI との互換モード。
既定値は 0 です。
• FALSE = Modbus 仕様により、互換性なし• TRUE = 互換性あり– FC1 および FC2 の場合:受信フレームから読み出されたデータはアドレス指定された CPU メモリにワード単位で書き込まれ、バイト単位で交換されます。
伝送するビット数が 16 の倍数でない場合、関連のないビットは最後のワードで null に設定されます。
– FC15 の場合:送信されるワードはアドレス指定されたメモリからワード単位で読み出され、送信フレー
ムにバイト単位で書き込まれます。
送信するビット数が 8 の倍数でない場合、最後のバ
イト内の関連のないビットはそのままアドレス指定
されたメモリから読み出され、送信フレームに入力
されます。

MB_DB

MB_BAS -Modbus_Comm_Load 命令の MB_DB パラメータをE

Modbus_Master 命令のこの MB_DB パラメータに接続する必要があります。

1)

PtP 通信モジュールは、Modbus 指定での定義に従って応答します。Modbus 用の CP 341, CP 441‑2、およびET 200SP 1SI と同様に応答を保持するために、「Compatibility_Mode」パラメータを使用します。

使用しているプログラムは、Blocked_Proc_Timeout および Extended_Addressing タグに値を書き込み、Modbus マスタの操作を制御できます。

Modbus-Master による通信のルール• Modbus_Master 命令がポートと通信できるようにするには、Modbus_Comm_Load を実行してポートを構成定義する必要があります。
• Modbus マスタとして使用されるポートは、Modbus_Slave で使用できません。このポートでは、1 つまたは複数の Modbus_Master のインスタンス 1)を使用できます。ただし、Modbus_Master のすべてのバージョンがポートに対して同じインスタンス DB を使用する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3557

通信
6.5 通信プロセッサ• Modbus 命令は、通信プロセスを制御するために、通信アラームイベントを使用しません。ユーザープログラムは、Modbus_Master 命令を使用して、完了したコマンド(DONE、ERROR)を照会する必要があります。
• 特定のポートに対する Modbus_Master のすべての実行をプログラムサイクル OB から呼び出すことをお勧めします。Modbus マスタ命令は、1 つのプログラムサイクルまたは 1つの周期/時間制御処理レベル以外では実行できません。異なった処理レベルでは処理できません。Modbus マスタ命令が、優先度の高い処理レベルで別のマスタ命令から優
先度割り込みを受けると、正しく動作できなくなります。Modbus マスタ命令は、スタートアップレベル、診断レベル、またはエラーレベルでは処理できません。
1)

この場合の「Modbus マスタのインスタンス」は、Modbus_Master 命令との同一の相互接続と、Modbus_Comm_Load MB_ADDR、MODE、DATA_ADDR、 および DATA_LEN パラ
メータに対する同一の設定によるの呼び出しを示します。
例
Modbus_Master は、MODE = 0 および DATA_ADDR = 10 で呼び出されます
このジョブは、DONE = 1 または ERROR = 1 で完了するか、または Blocked_Proc_Timeout
パラメータで構成定義されたタイムモニタリングの時間が経過するまで有効です。ウォッ
チドッグタイムの経過後で、直前のコマンドが完了する前に新しいコマンドが開始された
場合、直前のコマンドはエラーメッセージなしで中止されます。
このコマンドの実行中に、この命令の 2 回目の呼び出しが、インスタンスデータは同一であるが、MODE および DATA_ADDR パラメータ設定は異なるという条件で行われると、この2 回目の呼び出しは ERROR = 1 および STATUS = 8200 で終了します。

異なったパラメータ設定の Modbus_Master 命令の呼び出し
MB_ADDR、MODE, DATA_ADDR 、または DATA_LEN の設定が異なる Modbus_Master 命令の複数の呼び出しをユーザープログラムに配置した場合は、いつでもこれらの呼び出しの 1
つのみが必ず有効になるようにしてください。これを行わない場合、エラーメッセージ
16#8200 が出力されます(インターフェースが進行中の要求でビジーです)。
呼び出しを完全に処理できない場合、ウォッチドッグが Blocked_Proc_Timeout パラメー
タによって有効になり、進行中のコマンドを終了します。

REQ パラメータ
FALSE = 要求なし; TRUE = Modbus スレーブへのデータの送信要求要求された伝送を有効にします。これにより、バッファの内容がポイントツーポイント通信
インターフェースに伝送されます。

3558

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

DATA_ADDR および MODE パラメータを使用して、Modbus ファンクションコードを選択します。
DATA_ADDR (スレーブの Modbus 開始アドレス):Modbus スレーブでアクセスするデータの開始アドレスを指定します。
Modbus_Master 命令は、ファンクションコード入力の代わりに MODE 入力を使用します。
MODE と DATA_ADDR の組み合わせによって、実際の Modbus フレームで使用されるファ
ンクションコードが指定されます。下の表に、MODE パラメータ、Modbus ファンクショ
ンコード、および DATA_ADDR の Modbus アドレス範囲の関係を示します。
表 6-44

MOD
E

Modbus ファンクション

DATA_ADDR (Modbus DATA_LEN
アドレス)(データ長)

0

Modbus ファ 操作およびデータ
ンクションコード
01 出力ビットの読み出し:

要求当たりのビット
1 ～

9999

1 ～

2000/1992

0 ～

9998

1

0

02 入力ビットの読み出し:

要求当たりのビット
10001 ～

19999

1 ～

2000/1992

0 ～

9998

1

0

03 保持レジスタの読み出し要求当たりのワード40001 ～

49999

1 ～

125/124 1

0 ～

9998

40000 ～

4655351 ～

125/124 1

0 ～

65534

1
0

04 入力ワードの読み出し:

要求当たりのワード30001 ～

39999

1

1 ～

125/124 1

9999

1

9998

05 1 つの出力ビットの書き込み:要求当たりのビット
1 ～

0 ～

1

0 ～

要求当たり 1 ワード

9998

06 1 つの保持レジスタの書き込み:

40001 ～

49999

1

0 ～

9998

40000 ～

465535

1

0 ～

65524

1
1

15 複数の出力ビットの読み出し:

要求当たりのビット
1 ～

9999

2 ～

1968/1960

0 ～

9998

1

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3559

通信
6.5 通信プロセッサ
MOD
E

DATA_ADDR (Modbus DATA_LEN
アドレス)(データ長)

1

Modbus ファ 操作およびデータ
ンクションコード
16 複数の保持レジスタの書き込み要求当たりのワード40001 ～

49999

2 ～

123/1220 ～9998

40000 ～

4655342 ～

123/122 1

0 ～

65534

1
2

2

15 1 つ以上の出力ビットの書き込

要求当たりのビット

み:
1 ～

9999

2 ～

1968/1960

0 ～

9998

1

22

要求当たりのワード

16 1 つ以上の保持レジスタの書き込み:

40001 ～

49999

1 ～

123

0 ～

9998

40000 ～

465535

1 ～

122 1

0 ～

65534

1
11 このファンクションでは、Modbus_Master の

11 スレーブ通信のステータスワー

DATA_ADDR オペランドと DATA_LEN オペランド

ドおよびイベントカウンタを読の両方が無視されます。

み出します。ステータスワードはビジーを示します(0 – ビジー
でない、0xFFFF - ビジー)。イ
ベントカウンタは、フレームの処理が正常に行われるたびにインクリメントされます。

80

要求当たり 1 ワード

08 データ診断コード 0x0000 でス
レーブのステータスをチェックします(ループバックテスト –スレーブが要求のエコーを返し
ます)。

81

1
要求当たり 1 ワード

08 データ診断コード 0x000A を使用してスレーブのイベントカウ
ンタをリセットします。

-

3560

1

-

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
MOD
E

DATA_ADDR (Modbus DATA_LEN
アドレス)(データ長)

104

要求当たりのワード
0 ～3～

Modbus ファ 操作およびデータ
ンクションコー
ド

-

65535

1 ～

04 入力ワードの読み出し

125/124 1

-

0 ～

65535

予備

10、
12 ～
79、
82 ～
103、
105
～
255
1

拡張アドレス指定では、Extended_Adressing パラメータを参照してください。最大データ長が、ファンクシ
ョンのデータタイプに応じて 1 バイトまたは 1 ワード短くなります。

2

MODE 2 では、Modbus ファンクション 15 および 16 を使用して、1 つ以上の出力ビットと 1 つ以上の保持レ
ジスタを書き込むことができます。
MODE 1 は Modbus ファンクション 5 および 6 を使用して、1 つの出力ビットと 1 つの保持レジスタを書き込
み、Modbus ファンクション 15 および 16 を使用して、複数の出力ビットと複数の保持レジスタを書き込みます。

DATA_PTR パラメータ
DATA_PTR パラメータは、読み出し元または書き込み先の DB またはビットメモリアドレ
スをポイントします。データブロックを使用する場合は、Modbus スレーブで読み出し処理と書き込み処理を行うためのデータメモリを提供するグローバルデータブロックを作成する必要があります。
注記
S7-1200/1500 - DATA_PTR を使用してアドレス指定されたデータブロックは、ダイレクト
アドレス指定をサポートしている必要があります。
データブロックは、ダイレクト(絶対)およびシンボリックアドレスを許可する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3561

通信
6.5 通信プロセッサ
注記
ファンクションコード 5 を使用
ファンクションコード 5 は、個々のビットを設定または削除するために使用されます。
ビットがセットされると、値「16#FF00」は DATA_PTR によってアドレス指定された DB
またはビットメモリ領域の先頭のワードに指定される必要があります。
• S7-1200 の場合、値「16#0100」はビットを設定するためにも指定できます。
• ビットをリセットするには、値「16#0000」は DATA_PTR によってアドレス指定された DB
またはビットメモリ領域の先頭のワードに指定される必要があります。

その他のすべての値は、ERROR = TRUE および STATUS = 16#8384 により拒否されます。

DATA_PTR パラメータのデータブロック構造体• 以下のデータタイプは、Modbus アドレス範囲(DATA_PTR) 30001～39999、40001～
49999、および 400001～465535 からのワード読み出しで有効であるだけでなく、
Modbus アドレス範囲(DATA_PTR パラメータ) 40001～49999 および 400001～465535
へのワード書き込みでも有効です。
– データタイプ WORD、UINT、または INT の標準配列– WORD、UINT、または INT タイプの名前付き構造体。構造体内の各エレメントには、一意の名前と 16 ビットのデータタイプがあります。
– 各エレメントが一意の名前と 16 ビットまたは 32 ビットのデータタイプを持つ、名前を付けられた複雑な構造体。
• Modbus アドレス範囲(DATA_PTR パラメータ) 00001 09999 に対するビットの読み出し
および書き込みの場合と、10001～19999 からのビットの読み出しの場合。
– Bool データタイプの標準フィールド– 明白な名前が付けられた Bool タグの、名前が付けられた Bool 構造体。
• 絶対に必要というわけでありませんが、各 Modbus_Master に独自の個別のメモリ領域を割り当てることをお勧めします。その理由は、複数の Modbus_Master 命令が同じメ
モリ領域で読み出しと書き込みを行うと、データが破損する確率が極めて高くなるためです。
• DATA_PTR の複数のデータ領域が、同じグローバルデータブロックにある必要はありません。Modbus 読み出し処理用に複数の領域を持つ 1 つのデータブロック、Modbus 書
き込み処理用に 1 つのデータブロック、または各スレーブステーションに 1 つのデー
タブロックを作成することができます。

下記も参照
Modbus_Slave: Modbus スレーブとして通信 (ページ 3563)

3562

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.4.4

Modbus_Slave: Modbus スレーブとして通信
注記
CM1241 での使用
CM1241 でこの命令を使用できるのは、モジュールのファームウェアバージョン V2.1 以降の場合のみです。

説明
ユーザープログラムは Modbus_Slave 命令を使用して、CM (RS422/485 または RS232).経由の Modbus スレーブとしての通信を行うことができます。この命令を追加すると、STEP 7 は自動的にインスタンス DB を作成します。Modbus_Comm_Load 命令の MB_DB パ
ラメータを Modbus_Slave 命令の(静的) MB_DB パラメータに接続する必要があります。

パラメータ
パラメー
タ

宣言

MB_ADDRIN

データタイプS71200/15
00

S7300/400
/
WinAC

UInt

Word

標準

説明

‑

Modbus スレーブの標準アドレス:
標準アドレス指定範囲(1～247)
拡張アドレス指定範囲(0～65535)
注記:0 はブロードキャストアドレスです。

COM_RST

IN/OUT

---

Bool

FALSE

Modbus_Slave 命令の初期化
命令は TRUE に初期化されます。その後、命令は
COM_RST を FALSE にリセットします。

MB_HOLD IN/OUT

Variant

Any

_REG

‑

Modbus 保持レジスタ DB へのポインタ:Modbus 保
持レジスタは、フラグまたはデータブロックのメモ
リ領域です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3563

通信
6.5 通信プロセッサ
パラメー
タ

宣言

NDR

OUT

データタイプS71200/15
00

標準

説明

FALSE

新しいデータが使用可能:

S7300/400
/
WinAC

Bool

• FALSE – 新規データなし• TRUE – Modbus マスタによって新規のデータが書き込まれたことを示します。
NDR ビットは、最後の要求がエラーなしで完了した
後、1 サイクルの間 TRUE です。
DR

OUT

Bool

FALSE

データの読み出し:• FALSE – 読み出しデータなし• TRUE – この命令が、Modbus マスタによって受信されたデータをターゲット領域に格納したことを示します。
DR ビットは、最後の要求がエラーなしで完了した
後、1 サイクルの間 TRUE です。

ERROR

OUT

Bool

FALSE

ERROR ビットは、最後の要求がエラーで完了した
後、1 サイクルの間 TRUE です。実行がエラーで終了した場合、STATUS パラメータのエラーコード
は、ERROR = TRUE のサイクルでのみ有効です。

STATUS

OUT

Word

0

エラーコード(エラーメッセージ (ページ 3581)を参照)Modbus 通信のファンクションコード(1、2、4、5 、および 15)は、CPU のプロセスイメ
ージ入力およびプロセスイメージ出力でビットとワードの読み書きができます。
MB_HOLD_REG パラメータは、これらのファンクションコードに対して 1 バイト以上のデ

3564

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサータタイプとして定義する必要があります。下の表に、CPU のプロセスイメージへのModbus アドレスの割り当て例を示します。
表 6-45

Modbus アドレスのプロセスイメージへの割り当て

Modbus ファンクション

S7-1200

コード

ファンク
ション

データ領域

アドレス領域

01

ビットの

出力

0 ～

819 プロセスイメージ出力

ビットの

入力

0 ～

819 プロセスイメージ入力

ワードのI0.0 ～ I1023.7

1

読み出し
04

O0.0 ～ O1023.7

1

読み出し
02

CPU アドレス

データ領域

入力

0 ～

511 プロセスイメージ入力

IW0 ～ IW1022

出力

0 ～

819 プロセスイメージ出力

O0.0 ～ O1023.7

読み出し
05

ビットの

1

書き込み
15

ビットの

出力

0 ～

819 プロセスイメージ出力1

書き込み

表 6-46

Modbus アドレスのプロセスイメージへの割り当て

Modbus ファンクション
ファンクショ ファンク データ領域
ンコード
ション
01

ビットの 出力

S7-1500/S7-300/S7-400

アドレス領域0 ～

データ領域9998 プロセスイメージ出力

ビットの 入力

CPU アドレス
O0. ～ A1249.6
0

読み出し
02

O0.0 ～ O1023.7

0 ～9998 プロセスイメージ入力

I0.0 ～ I1249.6

0 ～9998 プロセスイメージ入力

IW0 ～ IW19996

0 ～9998 プロセスイメージ出力

O0. ～ A1249.6

読み出し
04

ワードの 入力
読み出し

05

ビットの 出力

0

書き込み
15

ビットの 出力
書き込み

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

0 ～9998 プロセスイメージ出力

O0. ～ A1249.6
0

3565

通信
6.5 通信プロセッサ

注記
使用可能なアドレス領域は、CPU のメモリの構成に従って小さくなることがあります。
Modbus 通信のファンクションコード(3、6、16)は、フラグまたはデータブロックのメモリ
領域内のアドレス領域である Modbus 保持レジスタを使用します。保持レジスタのタイプ
は、Modbus_Slave 命令の MB_HOLD_REG パラメータで指定されます。
注記
S7-1200/1500 - MB_HOLD_REG データブロックのタイプ
Modbus 保持レジスタを持つデータブロックは、ダイレクト(絶対)およびシンボリックア
ドレス指定を許可する必要があります。

表 6-47

診断機能S7-1200 Modbus_Slave の Modbus 診断機能
ファンクション サブファン 説明
コード
クション
08

0000H

エコーテストの出力要求データ:Modbus_Slave 命令が、受信したデータワー
ドのエコーを Modbus マスタに返します。

08

000AH

通信イベントカウンタのクリア:Modbus_Slave 命令が、Modbus ファンクション 11 で使用される通信イベントカウンタをクリアします。

11

通信イベントカウンタの呼び出し:Modbus_Slave 命令は、内部通信イベント
カウンタを使って、Modbus スレーブに送信された Modbus の読み出しおよび書き込み要求の成功した数を検出します。ファンクション 8、ファンクション 11、およびブロードキャスト要求では、カウンタは繰り上げられません。また、結果として通信エラー(たとえば、パリティまたは CRC エラー)になる要求でも繰り上げられません。
Modbus_Slave 命令は、Modbus マスタからのブロードキャスト書き込み要求に有効なア
ドレスへのアクセスが含まれている場合、この要求をサポートします。Modbus_Slave は、ブロードキャストファクションでサポートされていないファンクションコードに対して、
エラーコード 16#8188 を生成します。

3566

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

Modbus スレーブの変数
下の表に、プログラムで使用できる Modbus_Slave のインスタンスデータブロック内のパブリックな静的タグを示します。
表 6-48

Modbus スレーブの変数

タグ

データ
タイプ

標準

説明

HR_Start_Offset

Word

0

Modbus 保持レジスタの開始アドレスが指定されます(既定値= 0)。

QB_Start

Word0

出力の有効な書き込み可能アドレス指定範囲の開始アドレス(バイト 0～65535)

QB_Count

Word

0xFFFF

Modbus マスタが書き込み可能な出力バイト数。
例:
IB_Start = 0 および IB_Count = 10; 出力バイト 0～9 をアドレス指定できますIB_Count = 0; アドレス指定可能な出力バイトなし

Extended_Addressing

Bool

FALSE

拡張アドレス指定、スレーブアドレスをシングルまたはダブルバイトとして構成定義します。
(FALSE = シングルバイトアドレス、TRUE = ダブルバイトア
ドレス)

Request_Count

Word

0

このスレーブが受信したすべての要求の数

Slave_Message_Count Word0

この特定のスレーブに対して受信された要求の数

Bad_CRC_Count

Word

0

CRC エラーのある受信された要求の数

Broadcast_Count

Word

0

受信されたブロードキャスト要求の数

Exception_Count

Word

0

マスタを除いて確認が必要な Modbus 固有のエラー

Success_Count

Word

0

プロトコルエラーなしでこの特定のスレーブに対して受信し
た要求の数

MB_DB

MB_BAS -Modbus_Comm_Load 命令の MB_DB パラメータをE

Modbus_Master 命令のこの MB_DB パラメータに接続する必
要があります。

使用しているプログラムは、HR_Start_Offset および Extended_Addressing タグに値を書き込み、Modbus スレーブの操作を制御できます。その他のタグを読み出して、Modbus ス
テータスをモニタすることができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3567

通信
6.5 通信プロセッサ

Modbus スレーブ通信のルール• Modbus_Slave 命令がポートと通信できるようにするには、Modbus_Comm_Load を実行してポートを構成定義する必要があります。
• ポートが Modbus マスタにスレーブとして応答しようとする場合、ポートはModbus_Master 命令でプログラムされていない可能性があります。
• 特定のポートに対して、Modbus_Slave のインスタンスは 1 つしか使用できません。これに従わない場合、予期しない動作が行われることがあります。
• Modbus 命令は、通信プロセスを制御するために、通信アラームイベントを使用しません。使用しているプログラムが、完了した送信および受信操作に対して Modbus_Slave
命令を照会して通信プロセスを制御する必要があります。
• Modbus_Slave 命令は、Modbus マスタの着信要求にタイムリーに応答できる頻度で定期的に実行する必要があります。サイクルごとに Modbus_Slave をプログラムサイクル
OB から実行することをお勧めします。Modbus_Slave はサイクリック割り込み OB から実行できますが、割り込みプログラムでの遅延が大きくなると、他の割り込みプログ
ラムの実行を一時的にブロックすることがあるため、お勧めできません。

Modbus 信号の時間制御
Modbus_Slave は、Modbus マスタの各要求を定期的に受信し、それに従って応答する必要があります。Modbus_Slave が実行される頻度は、Modbus マスタからの応答に指定されたタイムアウト値によって異なります。下の図にこれを示します。

$'5

)&

'DWD

&5&

㉫䷣ኜኁኽቿኃእ㣑栢ኖዉዙኳ抐≰ኻኖኜ抐≰栚ⱚ
&5& 栢椣 㠖ⷦ⥭

$'5

㉫䷣
拔ㆅ㣑栢

$'5

)&

'DWD

栚ⱚ
&5& 栢椣(RESP_TO)応答のタイムアウト時間は、Modbus マスタが Modbus スレーブからの応答の開始まで待機する時間です。この時間は Modobus プロトコルではなく、
Modbus_Comm_Load 命令のパラメータによって定義されます。フレームの受信と送信の両方で Modbus_Slave 命令の複数の呼び出し(最低 3 回)が必要なため、Modbus スレーブ
がタイムアウト時間で指定された回数の 2 倍の回数のデータの送受信を行うことができる
ように、Modbus マスタの応答のタイムアウト時間中に Modbus_Slave を最低 12 回実行する必要があります。

3568

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

HR_Start_Offset
Modbus 保持レジスタアドレスは、40001 または 400001 から開始されます。これらのアドレスは、ターゲットシステムメモリの開始アドレスに対応しています。ただし、
HR_Start_Offset タグを使用して、40001 または 400001 と異なる Modbus 保持レジスタの開始アドレスを構成定義できます。
受信フレームのアドレス 0 は、ターゲットシステムメモリの保持レジスタの開始アドレスに対応します。0 と異なる Modbus 保持レジスタの開始アドレスを構成定義するには、タグ
HR_Start_Offset を使用します。
たとえば、MW100 から開始され、長さが 100 ワードの保持レジスタを構成定義することができます。HR_Start_Offset = 20 の場合、受信フレームのアドレス 20 がターゲットメモ
リ(MW100)の保持レジスタの開始アドレスに対応します。受信フレームの各アドレスが 20未満であるか、または 119 を超えると、アドレス指定エラーが発生します。
表 6-49DATA_PTR が長さが 100 ワードの MW100 へのポインタであるときの、Modbus 保持レジスタのアドレス指定の例

HR_Start_Offset
0
20

アドレス

最小値

最大

Modbus アドレス(ワード)099

S7-1500 アドレス

MW100

MW298

Modbus アドレス(ワード)

20

119

S7-1500 アドレス

MW100

MW298

HR_Start_Offset は、Modbus 保持レジスタの開始アドレスを指定するワード値で、Modbus_Slave インスタンスデータブロックに保存されます。このパブリックな静的タグ
は、プログラムに Modbus_Slave を追加した後で、パラメータのドロップダウンリストで選択します。
たとえば、Modbus_Slave を LAD ネットワークに追加した場合、前のネットワークに移動
して移動コマンドを使用して値 HR_Start_Offset を割り当てることができます。値は、Modbus_Slave を実行する前に割り当てる必要があります。
標準の DB 名を使用して Modbus スレーブタグを入力します。
1. カーソルを OUT1 パラメータフィールドに置いて、文字 m を入力します。
2. ドロップダウンリストから、Modbus_Slave 命令の必要なインスタンス DB を選択します。
3. カーソルを DB 名の右側(疑問符の後ろ)に置いて、ポイントを入力します。
4. ドロップダウンリストで[Modbus_Slave_DB.HR_Start_Offset]を選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3569

通信
6.5 通信プロセッサ

6.5.4.5

フレーム構造Extended_Addressing
Extended_Addressing タグが Bool 値の場合を除き、説明に従って HR_Start_Offset リファ
レンスのために Extended_Addressing タグにアクセスします。
Modbus スレーブのアドレス指定で、Extended_Adressing = FALSE を使用してシングルバイト(Modbus 標準)を設定できます。また、Extended_Adressing = TRUE を使用して 2 バイ
トを設定することもできます。 拡張アドレス指定を使って、1 つのネットワークで 247 個
以上のデバイスをアドレス指定できます。 Extended_Adressing = TRUE の場合、最大65535 のアドレスを指定できます。 次の例は、Modbus フレームを示します。
表 6-501 バイトのスレーブアドレス(バイト 0)

要求

バイト 0

バイト 1

[スレーブ

ファンク

アドレス]

ションコ

バイト 2

バイト 3

バイト 4

バイト 5
DATA

開始アドレス

ード
有効な応答

[スレーブ

ファンク

アドレス]

ションコ

長さ

データ...

ード
エラーメッセ

[スレーブ

ージ

アドレス]

表 6-51

0xxx

例外コード

2 バイトのスレーブアドレス(バイト 0 およびバイト 1)

バイト 0
要求

バイト 1

[スレーブアドレス]

バイト 2
ファンクシ

バイト 3

バイト 4

開始アドレス

バイト 5

バイト 6
DATA

ョンコード
有効な応答

[スレーブアドレス]

ファンクシ

長さ

データ...

ョンコード
エラーメッセ[スレーブアドレス]

0xxx

例外コード

ージ

3570

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

フレームの説明
マスタとスレーブ間/スレーブとマスタ間のデータトラフィックは、スレーブアドレスで開始され、その後にファンクションコードが続きます。 その後、データが転送されます。 データフィールドの構造は、使用するファンクションコードに依存します。 チェックサム
(CRC)は、フレームの終了で伝送されます。

ファンクションコード 1 - このファンクションで、個々の出力ビットを読み出すことができます。
表 6-52

Query
有効な応答

FC 1 - 出力ビットの読み出し

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 1[スレーブアファンクショ 長さ: 1

ドレス]

ンコード 1

エラーメッセ [スレーブア
ージ

バイト 2

0x81

バイト 3

バイト 4

開始アドレス

バイト 5
出力の数

出力データ 3)---

例外コード 2

ドレス]

1

長さ: 出力数を 8 で除算した時に余りが出た場合、バイト数に 1 を足す必要があります。

2

E コード: 01、02、03、または 04

3

出力データは複数のバイトで構成できます。

バイト 0
Query

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

ファンクシ

バイト 4

バイト 5

開始アドレス

バイト 6

出力の数

ョンコード
1
有効な応答

[スレーブアドレス]

ファンクシ

長さ: 1

出力データ

例外コー

---

ョンコード
1
エラーメッ

[スレーブアドレス]

0x81

セージ

ド

2

1

長さ: 出力数を 8 で除算した時に余りが出た場合、バイト数に 1 を足す必要があります。

2

E コード: 01、02、03、または 04

3

出力データは複数のバイトで構成できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3571

通信
6.5 通信プロセッサ

ファンクションコード 2 - このファンクションで、個々の入力ビットを読み出すことができます。
表 6-53

Query
有効な応答

FC 2 - 入力ビットの読み出し

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 2[スレーブアファンクショ 長さ: 1

ドレス]

ンコード 2

エラーメッセ [スレーブア
ージ

バイト 2

0x82

バイト 3

バイト 4

開始アドレス

バイト 5
入力数

入力データ
---

例外コード 2

ドレス]

1

長さ: 入力数を 8 で除算した時に余りが出た場合、バイト数に 1 を足す必要があります。

2

E コード: 01、02、03、または 04

バイト 0
Query

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

ファンクシ

バイト 4

バイト 5

開始アドレス

バイト 6

入力数

ョンコード
2
有効な応答

[スレーブアドレス]

ファンクシ

長さ: 1

入力データ

例外コー

---

ョンコード
2
エラーメッ

[スレーブアドレス]

セージ

0x82

ド

2

1

長さ: 入力数を 8 で除算した時に余りが出た場合、バイト数に 1 を足す必要があります。

2

E コード: 01、02、03、または 04

3572

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

ファンクションコード 3 - このファンクションで、個々のレジスタを読み出すことができます。
表 6-54

Query
有効な応答

FC 3 - 保持レジスタの読み出し

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 3[スレーブアファンクショ 長さ: 1

ドレス]

ンコード 3

エラーメッセ [スレーブア
ージ

バイト 2

0x83

バイト 3

バイト 4

開始アドレス

バイト 5

レジスタの数
レジスタデータ---

例外コード 2

ドレス]

1

長さ: バイト数2

E コード: 01、02、03、または 04

バイト 0
Query

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

ファンクシ

バイト 4

開始アドレス

バイト 5

バイト 6

レジスタの数

ョンコード
3
有効な応答

[スレーブアドレス]

ファンクシ

長さ: 1

レジスタデータ

例外コー

---

ョンコード
3
エラーメッ

[スレーブアドレス]

セージ
1

長さ: バイト数2

E コード: 01、02、03、または 04

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

0x83

ド

2

3573

通信
6.5 通信プロセッサ

ファンクションコード 4 - このファンクションで、個々のレジスタを読み出すことができます。
表 6-55

Query
有効な応答

FC 4 - 入力ワードの読み出し

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 4[スレーブアファンクショ 長さ: 1

ドレス]

ンコード 4

エラーメッセ [スレーブア
ージ

0x84

バイト 3

バイト 4

開始アドレス

バイト 5

入力ワードの数
入力データ---

例外コード 2

ドレス]

1

長さ: 2 * 入力ワードの数

2

E コード: 01、02、03、または 04

バイト 0
Query

バイト 2

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

ファンクシ

バイト 4

開始アドレス

バイト 5

バイト 6

入力ワードの数

ョンコード
4
有効な応答

[スレーブアドレス]

ファンクシ

長さ: 1

入力データ

例外コー

---

ョンコード
4
エラーメッ

[スレーブアドレス]セージ
1

長さ: 2 * 入力ワードの数

2

E コード: 01、02、03、または 04

3574

0x84

ド

2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

ファンクションコード 5 - このファンクションで、個々のビットを設定または削除できます。
表 6-56

Query
有効な応答

FC 5 - 1 つの出力ビットの書き込み

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 5[スレーブアファンクショ 長さ

ドレス]

ンコード 5

エラーメッセ [スレーブア
ージ
1

バイト 2

0x85

バイト 3

バイト 4

バイト 5

開始アドレス値
値---

例外コード 1ドレス]

E コード: 01、02、03、または 04

バイト 0
Query

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

ファンクシ

バイト 4

バイト 5

開始アドレス

バイト 6
値

ョンコード
5
有効な応答

[スレーブアドレス]

ファンクシ

長さ

値

例外コー

---

ョンコード
5
エラーメッ

[スレーブアドレス]

セージ
1

0x85

ド

1

E コード: 01、02、03、または 04

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3575

通信
6.5 通信プロセッサ

ファンクションコード 6 - このファンクションで、個々のレジスタに書き込むことができます。
表 6-57

Query
有効な応答

FC 6 - 保持レジスタの書き込み

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 6[スレーブアファンクショ

ドレス]

ンコード 6

エラーメッセ [スレーブア
ージ
1

バイト 2

0x86

バイト 3

バイト 4

バイト 5

アドレス

Register

アドレス

Register---

例外コード 1ドレス]

E コード: 01、02、03、または 04

バイト 0
Query

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

ファンクシ

バイト 4

バイト 5

バイト 6

アドレス

Register

アドレス

Register

ョンコード
6
有効な応答

[スレーブアドレス]

ファンクシ
ョンコード
6

エラーメッ

[スレーブアドレス]

セージ
1

0x86

例外コー
ド

---

1

E コード: 01、02、03、または 04

3576

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

ファンクションコード 8 - このファンクションを使用して、通信接続をチェックします。
表 6-58

Query
有効な応答

FC 8 - スレーブステータス

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 8[スレーブアファンクショ

ドレス]

ンコード 8

エラーメッセ [スレーブア
ージ
1

バイト 2

0x88

バイト 3

バイト 4

バイト 5

診断コード

テスト値

診断コード

テスト値
---

例外コード 1ドレス]

E コード: 01、03、または 04

バイト 0
Query

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

ファンクシ

バイト 4

バイト 5

バイト 6

診断コード

テスト値

診断コード

テスト値

ョンコード
8
有効な応答

[スレーブアドレス]

ファンクシ
ョンコード
8

エラーメッ

[スレーブアドレス]

セージ
1

0x88

例外コー
ド

---

1

E コード: 01、03、または 04

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3577

通信
6.5 通信プロセッサ

ファンクションコード 11 - このファンクションは、「ステータスワード」の 2 バイトまたは「イベントカウンタ」の 2 バイトを読み出すことができます。
表 6-59

Query
有効な応答

FC 11 - スレーブ通信のイベントカウンタ

バイト 0

バイト 1

[スレーブアファンクショ

ドレス]

ンコード 11[スレーブアファンクショ

ドレス]

ンコード 11

エラーメッセ [スレーブア
ージ
1

バイト 2

0x8B

バイト 3

バイト 4

バイト 5

--ステータス

イベントカウンタ---

例外コード 1ドレス]

E コード: 01 または 04

バイト 0
Query

バイト 1

[スレーブアドレス]

バイト 2

バイト 3

バイト 4

バイト 5

バイト 6

---

ファンクシ
ョンコード
11

有効な応答

[スレーブアドレス]

ファンクシ

ステータス

イベントカウンタ

ョンコード
11
エラーメッ

[スレーブアドレス]

セージ
1

0x8B

例外コー
ド

---

1

E コード: 01 または 04

3578

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

ファンクションコード 15 - このファンクションで、複数のビットを書き込むことができます。
表 6-60

FC 15 - 1 つ/複数の入力ビットの書き込み

バイト 0
Query

バイト 1

[スレーブア ファンク
ドレス]

バイト
2

バイト
3

開始アドレス

バイト
5

バイト 6

出力ワードの数

バイトカ

バイト
4

ションコ

ウンタ

バイト
7

バイト
n
値

1

ード 15
有効な応答 [スレーブア ファンクドレス]

開始アドレス---

出力ワードの数

ションコ
ード 15

エラーメッ [スレーブア 0x8F
セージ

ドレス]

---

例外コ
ード

2

1

バイトカウンタ: バイト数を 8 で除算した時に余りが出た場合、バイト数に 1 を足す必要があります。

2

E コード: 01、02、03、または 04

バイ
ト0
Query

バイ
ト1

バイト 2

[スレーブアド ファンク
レス]

バイ
ト3

バイ
ト4

開始アドレス

バイト 5 バイト 6 バイト 7 バイト バイト
8n出力ワードの数

ションコ

バイトカ
ウンタ

値

1

ード 15
有効な応答 [スレーブアド ファンクレス]

開始アドレス---

出力ワードの数

ションコ
ード 15

エラーメッ [スレーブアド 0x8F
セージ

例外コード 2

---

レス]

1

バイトカウンタ: バイト数を 8 で除算した時に余りが出た場合、バイト数に 1 を足す必要があります。

2

E コード: 01、02、03、または 04

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3579

通信
6.5 通信プロセッサ

ファンクションコード 16 - このファンクションで、個々のレジスタまたは複数のレジスタに書き込むことができます。
表 6-61

FC 16 - 1 つ/複数の保持レジスタの書き込み

バイト 0
Query

バイト 1

[スレーブア ファンク
ドレス]

バイト
2

バイト
3

開始アドレス

バイト
5

バイト 6

レジスタの数

バイトカ

バイト
4

ションコ

ウンタ

バイト
7

バイト
n
値

1

ード 16
有効な応答 [スレーブア ファンクドレス]

開始アドレス---

レジスタの数

ションコ
ード 16

エラーメッ [スレーブア 0x90
セージ

ドレス]

ード

1

バイトカウンタ: レジスタの数 * 2

2E コード: 01、02、03、または 04

バイ
ト0
Query

バイ
ト1

バイト 2

[スレーブアド ファンク
レス]

---

例外コ
2

バイ
ト3

バイ
ト4

開始アドレス

バイト 5 バイト 6 バイト 7 バイト バイト
8nレジスタの数

ションコ

バイトカ
ウンタ

値

1

ード 16
有効な応答 [スレーブアド ファンクレス]

開始アドレス---

レジスタの数

ションコ
ード 16

エラーメッ [スレーブアド 0x90
セージ

---

レス]

1

バイトカウンタ: レジスタの数 * 2

2E コード: 01、02、03、または 04

3580

例外コード 2

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.4.6

エラーメッセージ

エラーメッセージの概要 - PtP
エラーメッセージは命令の STATUS 出力で提供され、そこで評価したりユーザープログラ
ムで処理したりすることができます。
エラーコ
ード

説明

対策

16#0000

エラーなし‑

受信ステータスとエラーコード
16#0094 「固定/最大フレーム長の受信」に基づいて識別 ‑されたフレームの終了
16#0095 「メッセージタイムアウト」に基づいて識別さ ‑れたフレームの終了
16#0096 「キャラクタ遅延時間」の経過に基づいて識別さ ‑れたフレームの終了
16#0097

最大応答時間に達したためにフレームが中止さ ‑れました。

16#0098 「メッセージからのメッセージ長の読み出し」条 ‑件の適合に基づいて識別されたフレームの終了
16#0099 「終了シーケンス」の受信に基づいて識別され ‑たフレームの終了
送信ステータスとエラーコード
16#7000

ブロックアイドル‑

16#7001

新しいフレームの最初の呼び出しデータ伝送が ‑開始されました

16#7002

中間呼び出し:データ伝送が実行中‑

16#8085

長さが無効

適切なフレーム長を選択します。
以下が有効です(モジュールによって異なります):1-1024/2048/4096 (Byte)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3581

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8088指定された長さが受信バッファの設定された範 受信バッファの範囲を変更するか、または受信囲を超えています。

対策

バッファの設定された範囲に対応するフレーム

注記:データタイプ STRING が BUFFER パラメー 長を選択します。
タで指定されている場合、現在の文字列が以下が有効です(モジュールによって異なりまLENGTH パラメータで指定された長さよりも短 す):16#8090

いと、このエラーコードも表示されます。

1～1024/2048/4096 (バイト)構成エラー:WString のバイト数が奇数です

偶数のバイト数を選択します。

受信ステータスとエラーコード
16#7002

中間呼び出し:データ伝送が実行中

16#8088

受信した文字数が BUFFER パラメータで指定さ 適切なフレーム長を選択します。
れた文字数を超えています。

‑

以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)16#8090

構成エラー:WString のバイト数が奇数です

偶数のバイト数を選択します。

特殊ファンクションのエラーメッセージコード
16#818F

不正なパラメータ番号の設定(USS のみ)

適切なパラメータ番号(PARAM)を選択します。
次の番号が有効です。0-2047

16#8190

CRC 計算の不正な設定

CRC 計算の適切な値を選択します。
以下が有効です。無効または有効。
アドレス指定されたモジュールが CRC 計算をサポートしているかどうかチェックします。

16#8191

診断エラー割り込みの不正な設定[診断エラー割り込み]の適切な値を選択します。
以下が有効です。診断エラー割り込みが無効、または診断エラー割り込みが有効。
アドレス指定されたモジュールが診断割り込みの生成をサポートしているかどうかをチェックします。

「ポートの構成」のエラーメッセージコード
16#81A0

モジュールがこのプロトコルをサポートしてい モジュールの有効なプロトコル(PROTOCOL)をません。

16#81A1

モジュールがこのデータ伝送率をサポートして モジュールの有効なデータ伝送速度(BAUD)を
いません。

3582

選択します。
選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#81A2

モジュールがこのパリティ設定をサポートして 「パリティ」(PARITY)の適切な値を選択します。
いません。

対策

以下が有効です。
• なし(1)• 偶数(2)• 奇数(3)• マーク(4)• スペース(5)• 任意(6)16#81A3

モジュールがこのデータビット数をサポートし 「データビット数」(DATABITS)の適切な値を選ていません。

択します。
以下が有効です。
• 7 (2)• 8 (1)

16#81A4

モジュールがこのストップビット数をサポート 「ストップビット数」(STOPBITS)の適切な値をしていません。

選択します。
以下が有効です。
• 1 (1)• 2 (2)16#81A5
16#81A7

モジュールがこのタイプのデータフロー制御を モジュールの有効なデータフロー制御
サポートしていません。

(FLOWCTRL)を選択します。

XON または XOFF の無効な値

XON (XONCHAR)および XOFF (XOFFCHAR)の適切な値を選択します。
値の有効な範囲:0...255

16#81AA

動作モードが無効

有効な動作モード以下のとおりです。
• 全二重(RS232) (0)• 全二重(RS422) 4 線式モード(ポイントツー
ポイント) (1)/ (CM PtP (ET 200SP))• 全二重 (RS422) 4 線式モード(マルチポイン
トマスタ) (2)/ (CM PtP (ET 200SP))• 全二重(RS422) 4 線式モード(マルチポイン
トスレーブ) (3)• 半二重(RS485) 2 線式モード(4)TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3583

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81AB

回線初期状態が無効

有効な初期状態は以下のとおりです。
• 初期設定[なし] (0)• シグナル R(A) 5 V、シグナル R(B) 0 V (ブレーク検出) (1)以下とともにのみ選択できます。「全二重(RS422) 4 線式モード(ポイントツーポイン
ト接続)」および「全二重(RS422) 4 線式モード(マルチポイントスレーブ)」• シグナル R(A) 0 V/シグナル R(B) 5 V (2):この
初期設定はアイドル状態に相当します(送信動作がアクティブでない)。

16#81AC[ブレーク検出]の値が無効[ブレーク検出]の適切な値を選択します。以下が有効です。
• ブレーク検出が無効(0)• ブレーク検出が有効(1)16#81AF

モジュールがこのプロトコルをサポートしてい モジュールの有効なプロトコルを選択します。
ません。

「送信構成」のエラーコード
16#81B5

エンドデリミタが 2 つ以上、または[エンドデリミタ]と[終了シーケンス]に適切な終了シーケンスが 5 文字以上値を選択します。
以下が有効です。
• 無効(0)、• 1 つ (1)または 2 つ (2)のエンドデリミタ
または• 無効(0)、• 終了シーケンスに 1 文字 (1)から 5 文字 (5)16#81B63964(R)プロトコルが選択されていたため、送 3964(R)プロトコルが設定されている場合は、信構成が拒否されました。

送信構成が送信されないようにします。

「受信構成」のエラーコード
16#81C0

開始条件が無効適切な開始条件を選択します。
以下が有効です。
• フレーム開始前の送信中断• アイドルラインの送信

16#81C1

終了条件が無効、または終了条件が選択されて 適切な条件を選択します(AUTOHOTSPOT を参
いません

3584

照)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81C3[最大メッセージ長]の値が無効「最大メッセージ長」(MAXLEN)の適切な値を選択します。
値の有効な範囲(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81C4[メッセージ内の長さ指定のオフセット]の値が [メッセージ内の長さ指定のオフセット]に有効
無効な値を選択します。
値の有効な範囲(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81C5[長さフィールドのサイズ]の値が無効「長さフィールドのサイズ」(LENGTHSIZE)の適切な値を選択します。
値の有効な範囲(バイト単位):• 1 (1)• 2 (2)• 4 (4)16#81C6[長さ指定でカウントされていない文字数]の値 「長さ指定でカウントされていない文字数」
が無効(LENGTHM)の適切な値を選択します。
値の有効な範囲:0～255 (バイト)16#81C7 「メッセージ内のオフセット + 長さフィールド [メッセージ内のオフセット]、[長さフィールのサイズ + カウントされていない文字数」の合 ドのサイズ]、および[カウントされていない文計が最大フレーム長を超えています

字数]に適切な値を選択します。
値の有効な範囲:• メッセージ内のオフセット(モジュールによって異なります):0～1024/2048/4096 (バイト)• 長さフィールドのサイズ:1、2、または 4(バイト)• カウントされていない文字数:0～255 (バイト)

16#81C8[応答タイムアウト]の値が無効[応答タイムアウト]に適切な値を選択します。
値の有効な範囲:1～65535 (ms)

16#81C9[キャラクタ遅延時間]の値が無効[キャラクタ遅延時間]に適切な値を選択します。
値の有効な範囲:1～65535 (ビット時間)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3585

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81CB

フレーム終了シーケンスが有効になっています チェック用に 1 つ以上の文字を有効にします。
が、チェック用の文字が有効になっていません

16#81CC

フレーム開始シーケンスが有効になっています チェック用に 1 つ以上の文字を有効にします。
が、チェック用の文字が有効になっていません

16#81CD[上書き禁止]の値が無効[上書き禁止]に適切な値を選択します。
以下が有効です。
• 上書き禁止が無効(0)または• 上書き禁止が有効(1)16#81CE[スタートアップ時に受信バッファをクリアす [スタートアップ時に受信バッファをクリアする]の値が無効る]に適切な値を選択します。
以下が有効です。
• スタートアップ時に受信バッファをクリア
が無効(0)• スタートアップ時に受信バッファをクリアが無効(1)

送信ステータスとエラーコード
16#81D0

送信コマンドのランタイム中の送信要求の受信 送信コマンドのランタイム中に追加の送信要求を受信するのを防止します。

16#81D1

XON または CTS = ON の待機時間が経過しまし 通信パートナーで障害が発生したか、速度が遅た。

すぎるか、またはオフラインになっています。
通信パートナーをチェックするか、または必要に応じてパラメータを変更します。

16#81D2 「ハードウェア RTS は常に ON」:DSR = ON から 通信パートナーをチェックします。伝送時間全OFF への切り替えのために送信ジョブがキャン 体にわたって、DSR が確実に ON になるようセルされました
16#81D3にします。

送信バッファオーバーフロー/送信フレームが長 短いフレーム長を選択します。
すぎます

以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)16#81D5

パラメータ変更、断線の検出、または CPU の パラメータ割り当て、断線、および CPU ステ
STOP によって、伝送がキャンセルされました ータスをチェックします。

16#81D6

終了識別子が受信されなかったため、伝送がキ 終了文字のパラメータ割り当てと通信パートナ
ャンセルされました。

16#81D7

ユーザープログラムとモジュール間の通信エラ 通信をチェックします(たとえば、シーケンス
ー

3586

ーのフレームをチェックします。
番号の一致など)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81D8

モジュールが構成定義されていないため、伝送 モジュールを構成定義します。
の試行が拒否されました。

16#81DF

次のいずれかの理由でモジュールが FB へのイ —ンターフェースをリセットしました。
• モジュールが再起動された• モジュールパラメータが再割り当てされた• CPU STOP

受信構成のエラーコード
16#81E0

フレームが中断されました:送信バッファオーバ ユーザープログラムで受信ファンクションの呼ーフロー/送信フレームが長すぎます

び出し率を上げるか、またはデータフロー制御
による通信を構成定義する必要があります。

16#81E1

フレームが中断されました:パリティエラー

通信パートナーの接続線をチェックするか、両方のデバイスに対して同じデータ伝送速度、パ
リティ、ストップビット数が設定されているかどうかを確認します。

16#81E2

フレームが中断されました:キャラクタフレーム スタートビット、データビット、パリティビッ
エラー

ト、データ伝送率、ストップビットの設定をチ
ェックします。

16#81E3

フレームが中断されました:キャラクタオーバー ファームウェアエラー:カスタマーサポートに
フロエラー

16#81E4

問い合わせてください。

フレームが中断されました:「メッセージ内のオ メッセージ内のオフセット、長さフィールドのフセット + 長さフィールドのサイズ + カウント サイズ、およびカウントされていない文字数にされていない文字数」の合計長が受信バッファ 適切な値を選択します。
を超えています16#81E5

フレームが中断されました:break

パートナーへの受信ラインが中断しています。
再接続するか、またはパートナーのスイッチをオンにします。

16#81E6[バッファリングされる受信フレーム]の最大数 ユーザープログラムで命令を呼び出す回数を増を超過しましたやすか、データフロー制御による通信を構成定義するか、またはバッファリングされるフレームの数を増やします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3587

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81E7

同期エラーモジュールと Receive_P2P

Receive_P2P のさまざまな異なるインスタンス
が確実に同一モジュールにアクセスしないようにします。

16#81E8

フレームが中断されました:メッセージまたは条 パートナーデバイスに障害が発生しているか、件が検出される前に、キャラクタ遅延時間が経 またはパートナーデバイスが遅すぎます。必要過しました。

に応じてインターフェーステスターを使用し、パートナーデバイスが伝送線で相互接続されていることをチェックします。

16#81E9

Modbus CRC エラー(Modbus をサポートしてい Modbus フレームのチェックサムエラー.通信
る通信モジュールのみ)

16#81EA

Modbus フレームが短すぎます(Modbus をサポ Modbus フレームの最小長さが満たされていまートしている通信モジュールのみ)

16#81EB

パートナーをチェックします。
せん通信パートナーをチェックします。

フレームが中断されました:最大フレーム長に達 通信パートナー側で短いフレーム長を選択しましましたす。
以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)フレーム終了検出のパラメータをチェックします。

エラーコード V24 に付随する信号
16#81F0

モジュールが V24 に付随する信号をサポートし V24 に付随する信号をサポートしていないモていません。

ジュールに対して付随する信号の設定を試みました。必ず RS232 モジュールにするか、または RS232 モード(ET 200SP)を設定します。

16#81F1

V24 に付随する信号を操作できません

ハードウェアデータフロー制御が有効の場合、
V24 に付随する信号を手動で操作することはできません。

16#81F2

モジュールのタイプが DTE であるため、DSR 信 モジュールの設定済みタイプをチェックしま号を設定できません。

す。
モジュールタイプは DCE (データ通信装置)でなければなりません。

16#81F3モジュールのタイプが DCE であるため、DTR 信 モジュールの設定済みタイプをチェックしま号を設定できません。

す。
モジュールタイプは DTE (データ端末装置)でなければなりません。

3588

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#81F4

ブロックヘッダーエラー(ブロックタイプが正し インスタンス DB およびブロックヘッダーをチ
くない、ブロックの長さが正しくない、など) ェックします。

受信構成のエラーコード
16#8201

Receive_Conditions は無効なデータタイプへの データタイプ

1)

ポインタです。

DB、BOOL、BYTE、CHAR、WORD、INT、
DWORD、DINT、REAL、DATE、
TIME_OF_DAY、TIME、S5TIME、
DATE_AND_TIME、STRING の 1 つを指すポインタを入力します。

16#8225

Receive_Conditions が、1 KB 以上の最適化され 以下の最大長を持つ領域へのポインタを入力したメモリ領域をポイントしています。

ます。

または

• 最適化されたメモリ領域:1 KB

Receive_Conditions が最適化されたメモリ領域 • 最適化されていないメモリ領域:4 KB
注記:ポインタが最適化されたメモリ領域をポをポイントしており、受信長がReceive_Conditions でアドレス指定された領域 イントしている場合、1 KB 以上を送信しないでください。
を超えています。
16#8229

Receive_Conditions が、ビット数が n * 8 と等 BOOL へのポインタを使用している場合、ビッ

1)

しくない BOOL へのポインタです。

ト数は 8 の倍数とする必要があります。

エラーコード、一般
16#8280

モジュールの読み出し時の否定確認

エラーの原因の詳細については、
RDREC.STATUS 静的パラメータと、SFB RDRECの説明を参照してください。
• PORT パラメータの入力をチェックします。
• 初期呼び出しの前に、COM_RST パラメー
タを設定します。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
WRREC.STATUS 静的パラメータと、SFB
WRREC の説明を参照してください。

16#8282

モジュールが使用不可

PORT パラメータの入力をチェックし、モジュールに確実にアクセスできるようにします。

受信構成のエラーコード

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3589

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#82C1[バッファリングされた受信フレーム]の値が無 [バッファリングされた受信フレーム]に適切な
効

対策値を選択します。
値の有効な範囲:1-255

16#82C23964(R)プロトコルが選択されていたため、受 3964(R)プロトコルが設定されている場合は、信構成が拒否されました。

受信構成が送信されないようにします。

16#8301

Receive_Conditions は無効なデータタイプへの 有効なデータタイプを選択します。

1)

ポインタです。

以下が有効です。DB、BOOL、BYTE、CHAR、
WORD、INT、DWORD、DINT、REAL、DATE、
TIME_OF_DAY、TIME、S5TIME、
DATE_AND_TIME、STRING

16#8322

パラメータ読み出し時の範囲長さエラー

Receive_Conditions パラメータの入力をチェックします。

16#8324

パラメータ読み出し時の範囲エラー

Receive_Conditions パラメータの入力をチェックします。

16#8328

パラメータ読み出し時の設定エラー

Receive_Conditions パラメータの入力をチェックします。

送信ステータスとエラーコード
16#8328

BUFFER が、ビット数が n * 8 と等しくない

BOOL へのポインタを使用している場合、ビッ

1)

BOOL へのポインタです

ト数は 8 の倍数とする必要があります。

受信構成のエラーコード
16#8332

Receive_Conditions パラメータの無効なデータ Receive_Conditions パラメータの入力をチェ
ブロック

16#833A

ックします。

Receive_Conditions パラメータのデータブロッ Receive_Conditions パラメータの入力をチェ
クの名称が、ロードされていないデータブロッ ックします。
クを示しています。

16#8351

無効なデータタイプ

Receive_Conditions パラメータの入力をチェックします。

16#8352

Receive_Conditions がデータブロックをポイン Receive_Conditions へのポインタをチェック

1)

トしていません。

16#8353

Receive_Conditions タイプの構造をポイントし Receive_Conditions へのポインタをチェック

1)ていません。Receive_Conditions

します。
します。

エラーコード 3964(R)プロトコル

3590

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8380

パラメータ割り当てエラー:[キャラクタ遅延時 [キャラクタ遅延時間](CharacterDelayTime)に間]の値が無効対策

適切な値を選択します。
値の有効な範囲:1～65535 (ms)

16#8381

パラメータ割り当てエラー:[応答タイムアウト] [応答タイムアウト](AcknDelayTime)に適切なの値が無効値を選択します。
値の有効な範囲:1～65535 (ms)

16#8382

パラメータ割り当てエラー:[優先度]の値が無効 [優先度](Priority)に適切な値を選択します。
以下が有効です。
• 高い(1)• 低い(0)

16#8383

パラメータ割り当てエラー:[ブロックチェック] [ブロックチェック] (BCC)の適切な値を選択し
の値が無効

ます。
以下が有効です。
• ブロックチェックあり(1)• ブロックチェックなし(0)16#8384

パラメータ割り当てエラー:[接続試行]の値が無 [接続試行](BuildupAttempts)に適切な値を選
効.

択します。
値の有効な範囲:1-255

16#8385

パラメータ割り当てエラー:[送信試行]の値が無 [送信試行](RepetitionAttempts)に適切な値を効.

選択します。
値の有効な範囲:1-255

16#8386

ランタイムエラー:接続試行回数を超過しました インターフェースケーブルおよび伝送パラメー
タをチェックします。
さらに、パートナーデバイス側で受信ファンク
ションが正しく構成定義されているかどうかもチェックします。

16#8387

ランタイムエラー:送信試行回数を超過しました インターフェースケーブル、伝送パラメータ、および通信パートナーの構成をチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3591

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#8388

ランタイムエラー:「ブロックチェックキャラク 接続が致命的に中断されていないかどうかチェ
タ」のエラー対策

ックします。その場合は、こまめにエラーコー

内部的に計算したブロックチェックキャラクタ ドをチェックすることをお勧めします。パートの値が、接続の終了時にパートナーが受信した ナーデバイスが正しく動作していることをチェ
ブロックチェックキャラクタに対応していませ ックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェックでん。
きる場合があります。
16#8389

ランタイムエラー:空き受信バッファの待機中に 通信パートナーの送信要求(STX, 02H)は、受信無効な文字が受信されました

バッファが空いている場合のみ、DLE で応答します。この前に、追加文字を受信することはできません(再び、STX を除いて)。
パートナーデバイスが正しく動作していることをチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェ
ックできる場合があります。

16#838A

ランタイムエラー:受信時の論理エラー

フレームヘッダー内およびデータ文字列内のパ

DLE 受信後、追加のランダム文字(DLE またはートナー DLE が常に重複しているか、または

ETX を除く)を受信しました。

接続が DLE ETX でリリースされているかをチェックします。パートナーデバイスが正しく動作していることをチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェックできる場合があります。

16#838B

ランタイムエラー:キャラクタ遅延時間を超過し パートナーデバイスが遅すぎるか、またはパーました

トナーデバイスに障害が発生しています。
必要に応じて、伝送線内に接続されたインター
フェーステストデバイスを使用して検証します。

16#838C

ランタイムエラー:空き受信バッファの待機時間 ユーザープログラムで命令を呼び出す回数を増が開始されました

やすか、またはデータフロー制御による通信を構成定義します。

16#838D

ランタイムエラー:フレームの繰り返しが NAK 通信パートナーをチェックします。破壊されて後、4 秒以内に開始されません。

いる可能性のある受信フレームをパートナーが4 秒以内に繰り返す必要があります。

3592

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

16#838E

ランタイムエラー:アイドルモードで、1 つ以上 パートナーデバイスが正しく動作していることの文字(NAK、STX 以外)を受信しました。

対策をチェックします。伝送線内に接続されたインターフェーステストデバイスを使用するとチェ
ックできる場合があります。

16#838F

ランタイムエラー:初期化の競合 - 両方のパート パートナーのどちらかで、「低い」優先度を設ナーが高い優先度を設定しています。

16#8391

定します。

パラメータ割り当てエラー:Freeport が設定され Freeport プロトコルが設定されている場合ているため、3964 構成データが拒否されまし は、3964 パラメータ割り当てデータが送信さた

1)

れないようにします。

S7-300/400 CPU 用の命令の場合のみ

エラーメッセージの概要 - Modbus
エラーコ
ード

説明

対策

16#0000

エラーなし‑

インターフェースの設定エラー -Modbus_Comm_Load
16#8181

モジュールがこのデータ伝送率をサポートして BAUD パラメータで、モジュールの有効なデーいません。

16#8182

タ伝送速度を選択します。

モジュールがこのパリティ設定をサポートして PARITY パラメータの「パリティ」の適切な値いません。

を選択します。
以下が有効です。
• なし(1)• 偶数(2)• 奇数(3)• マーク(4)• スペース(5)• 任意(6)16#8183
16#8184

モジュールがこのタイプのデータフロー制御を FLOW_CTRL パラメータで、モジュールの有効サポートしていません。

なデータフロー制御を選択します。

[応答タイムアウト]の値が無効

RESP_TO パラメータで、[応答タイムアウト]の適切な値を選択します。
値の有効な範囲:1～65535 (ms)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3593

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
Send_Config.RDREC.STATUS/
Receive_Config.RDREC.STATUS 静的パラメー
タまたは RDREC.STATUS と、SFB RDREC の説
明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、
Send_Config.WRREC.STATUS/
Receive_Config.WRREC.STATUS 静的パラメー
タまたは WRREC.STATUS と、SFB WRREC の説
明を参照してください。

16#8282

モジュールが使用不可

PORT パラメータの入力をチェックし、モジュールに確実にアクセスできるようにします。

構成エラー -Modbus_Slave
16#8186

スレーブアドレスが無効

MB_ADDR パラメータで、適切なスレーブアドレスを選択します。
以下が有効です。標準アドレス領域では 1～
247;
拡張アドレス領域では 1～65535(0 はブロードキャスト用に予約済みです)

16#8187

MB_HOLD_REG パラメータの無効な値

MB_HOLD_REG パラメータで、保持レジスタの適切な値を選択します。

16#8188

動作モードまたはブロードキャストが無効

ブロードキャストモードで MODE の値 1 を選

(MB_ADDR = 0)および MODE パラメータ ≠ 1択するか、または異なる動作モードを選択します。

16#818C

MB_HOLD_REG 領域へのポインタは、データブ MB_HOLD_REG 領域へのポインタの適切な値
ロックまたはビットメモリアドレス領域である を選択します。
ことが必要です。

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.RDREC.STATUS またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

3594

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.WRREC.STATUS またはReceive_P2P.WRREC.STATUS と、SFB WRRECの説明を参照してください。

16#8452

MB_HOLD_REG が、DB またはビットメモリ領 MB_HOLD_REG ポインタをチェックします1)

域へのポインタではありません

16#8453

MB_HOLD_REG が、タイプ BOOL または WORD MB_HOLD_REG ポインタをチェックします

1)のポインタではありません

16#8454

MB_HOLD_REG でアドレス指定された領域が1)

DB よりも長いか、またはアドレス指定された領MB_HOLD_REG ポインタをチェックします

域が読み出しまたは書き込みされるデータバイ
トの数に対して小さすぎます。
16#8455

MB_HOLD_REG が書き込み禁止 DB を指してい MB_HOLD_REG ポインタをチェックします1)ます

16#8456

命令実行中のエラーエラーの原因は、STATUS SFCSTATUS パラメータの値を識別します。

1)

パラメータに示されます。

SFC51、STATUS パラメータの説明でこの値が意味することをチェックします。

構成エラー -Modbus_Master
16#8180

MB_DB パラメータの値が無効

Modbus_Comm_Load 命令で MB_DB(インスタンスデータ DB)に構成定義された値が有効ではありません。
Modbus_Comm_Load 命令とそのエラーメッ
セージの相互接続をチェックします。

16#8186

ステーションアドレスが無効

MB_ADDR パラメータで、適切なステーション
アドレスを選択します。
以下が有効です。標準アドレス領域では 1～
247;
拡張アドレス領域では 1～65535(0 はブロードキャスト用に予約済みです)

16#8188

動作モードまたはブロードキャストが無効

ブロードキャストモードで MODE の値 1 を選

(MB_ADDR = 0)および MODE パラメータ ≠ 1択するか、または異なる動作モードを選択します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3595

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8189

データアドレスが無効

DATA_ADDR パラメータで、データアドレスの適切な値を選択します。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818A

長さが無効

DATA_LEN パラメータで、適切なデータ長を選択します。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818B

DATA_PTR の値が無効

DATA_PTR パラメータで、データポインタの適切な値を選択します(M または DB アドレス)。
情報システムの説明 Modbus_Master (ページ 3553)を選択します。

16#818C

DATA_PTR パラメータの相互接続エラー

16#818D

DATA_PTR でアドレス指定された領域が DB よ DATA_PTR ポインタをチェックします。

命令の相互接続をチェックしてください。

りも長いか、またはアドレス指定された領域が読み出しまたは書き込みされるデータバイトの数に対して小さすぎます。
16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Send_P2P.RDREC.STATUS またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。.
エラーの原因の詳細については、静的パラメー
タ Send_P2P.WRREC.STATUS、
Receive_P2P.WRREC.STATUS 、またはReceive_Reset と、SFB WRREC の説明を参照してください。

通信エラー - Modbus_Master および Modbus_Slave
16#80D1

XON または CTS = ON の待機時間が経過しまし 通信パートナーで障害が発生したか、速度が遅た。

すぎるか、またはオフラインになっています。
通信パートナーをチェックするか、または必要に応じてパラメータを変更します。

3596

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#80D2 「ハードウェア RTS は常に ON」:DSR = ON から 通信パートナーをチェックします。伝送時間全OFF への切り替えのために送信ジョブがキャン 体にわたって、DSR が確実に ON になるようセルされました
16#80E0にします。

フレームが中断されました:送信バッファオーバ ユーザープログラムで命令を呼び出す回数を増ーフロー/送信フレームが長すぎます

やすか、またはデータフロー制御による通信を構成定義します。

16#80E1

フレームが中断されました:パリティエラー

通信パートナーの接続線をチェックするか、両方のデバイスに対して同じデータ伝送速度、パ
リティ、ストップビット数が設定されているかどうかを確認します。

16#80E2

フレームが中断されました:キャラクタフレーム スタートビット、データビット、パリティビッ
エラー

ト、データ伝送率、ストップビットの設定をチ
ェックします。

16#80E3

フレームが中断されました:キャラクタオーバー 通信パートナーのフレーム内のデータ数をチェ
フロエラー

16#80E4

ックします。

フレームが中断されました:最大フレーム長に達 通信パートナー側で短いフレーム長を選択しましましたす。
以下が有効です(モジュールによって異なります):1～1024/2048/4096 (バイト)通信エラー - Modbus_Master
16#80C8

スレーブが設定された時間内に応答しません。 スレーブのデータ伝送率、パリティ、および配線をチェックします。

16#80C9

スレーブが Blocked_Proc_Timeout によって設 Blocked_Proc_Timeout の設定をチェックしま
定された時間内に応答しません。

す。
モジュールが、Modbus_Comm_Load 命令を使用して構成定義されたかどうかをチェックします。モジュールは、抜き差し後または電圧復
旧後に Modbus_Comm_Load を使用して再構成しなければならない場合があります。

16#8200

インターフェースが出力要求でビジーになって 後からコマンドを繰り返します。新しいコマンいます。

ドを開始する前に、まだ実行中のコマンドが存在しないことを確認します。

プロトコルエラー - Modbus_Slave (Modbus をサポートしている通信モジュールの場合のみ)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3597

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8380

CRC エラー

Modbus フレームのチェックサムエラー.通信
パートナーをチェックします。

16#8381

ファンクションコードがサポートされていな通信パートナーをチェックして、有効なファン

い、またはブロードキャストでサポートされて クションコードが送信されていることを確認し
16#8382

いません。

ます。

要求フレーム内の情報の長さが無効

DATA_LEN パラメータで、適切なデータ長を選択します。

16#8383

要求フレーム内のデータアドレスが無効

DATA_ADDR パラメータで、データアドレスの適切な値を選択します。

16#8384

要求フレーム内のデータ値無効エラー

Modbus マスタの要求フレーム内のデータ値をチェックします。

16#8385

診断値が Modbus スレーブでサポートされませ Modbus スレーブは、診断値 16#0000 およびん(ファンクションコード 08)

16#000A のみをサポートします。

プロトコルエラー - Modbus_Master (Modbus をサポートしている通信モジュールの場合のみ)
16#8380

CRC エラー

Modbus フレームのチェックサムエラー.通信
パートナーをチェックします。

16#8381

Modbus Slave からの応答フレームに以下のエラ 通信パートナーをチェックして、有効なファン
ーメッセージがあります:ファンクションコード クションコードが送信されていることを確認しがサポートされていません。

16#8382

ます。

Modbus Slave からの応答フレームに以下のエラ 適切なデータ長を選択します。
ーメッセージがあります:長さが無効

16#8383

Modbus Slave からの応答フレームに以下のエラ DATA_ADDR パラメータで、データアドレスのーメッセージがあります:要求フレーム内のデー 適切な値を選択します。
タアドレスが無効

16#8384

Modbus Slave からの応答フレームに以下のエラ Modbus スレーブへの要求フレームをチェック
ーメッセージがあります:データ値エラー

16#8385

します。

Modbus Slave からの応答フレームに以下のエラ Modbus スレーブは、診断値 16#0000 およびーメッセージがあります:診断値が Modbus ス 16#000A のみをサポートします。
レーブでサポートされていません。

16#8386
16#8387

戻されたファンクションコードが要求されたフ スレーブの応答フレームとアドレス指定をチェァンクションコードと一致しません。

ックします。

応答を要求されなかったスレーブ

スレーブの応答フレームをチェックします。ス
レーブのアドレス設定をチェックします。

16#83883598

書き込み要求に対するスレーブの応答のエラー スレーブの応答フレームをチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8828

DATA_PTR が、n * 8 と等しくないビットアドレ DATA_PTR ポインタをチェックします。

1)

スを指しています

16#8852

DATA_PTR が、DB またはビットメモリ領域への DATA_PTR ポインタをチェックします。

1)

ポインタではありません

16#8853

DATA_PTR が、タイプ BOOL または WORD のポ DATA_PTR ポインタをチェックします。

1)

インタではありません

16#8855

DATA_PTR が書き込み禁止 DB を指しています DATA_PTR ポインタをチェックします。

1)

16#8856

SFC51 呼び出し中のエラー

1)

Modbus_Master 命令を再度呼び出してください。

エラー - Modbus_Slave (Modbus をサポートしている通信モジュールの場合のみ)
16#8428

MB_HOLD_REG が、n * 8 と等しくないビット MB_HOLD_REG ポインタをチェックします1)

アドレスを指しています

16#8452

MB_HOLD_REG が、DB またはビットメモリ領 MB_HOLD_REG ポインタをチェックします1)

域へのポインタではありません

16#8453

MB_HOLD_REG が、タイプ BOOL または WORD MB_HOLD_REG ポインタをチェックします

1)のポインタではありません

16#8454

MB_HOLD_REG でアドレス指定された領域が1)

DB よりも長いか、またはアドレス指定された領MB_HOLD_REG ポインタをチェックします

域が読み出しまたは書き込みされるデータバイ
トの数に対して小さすぎます。
16#8455

MB_HOLD_REG が書き込み禁止 DB を指してい MB_HOLD_REG ポインタをチェックします1)ます

16#8456

SFC51 呼び出し中のエラー

1)

1)

Modbus_Slave 命令を再度呼び出してください。

S7-300/400 CPU 用の命令の場合のみ

エラーメッセージの概要 - USS
エラーコ
ード

説明

対策

16#0000

エラーなし‑

16#8180ドライブの応答の長さエラー:

ドライブの応答フレームをチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3599

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8181

データタイプエラー

適切なデータタイプを選択します。
以下が有効です。
• REAL• ワード• ダブルワード

16#8182

データタイプエラー:「ダブルワード」または ドライブの応答フレームをチェックします。
「実数」を「ワード」要求に対して返すことはできません。

16#8183

データタイプエラー:「ワード」を「ダブルワー ドライブの応答フレームをチェックします。
ド」または「実数」要求に対して返すことはできません。

16#8184

ドライブの応答のチェックサムエラー:

ドライブと通信接続をチェックします。

16#8185

アドレス指定エラー

有効なドライブアドレス範囲:1～16

16#8186

セットポイントエラー

有効なセットポイント範囲: -200%～+200%

16#8187

不正なドライブ番号が返されました

ドライブの応答フレームをチェックします。

16#8188

PZD 長さが無効許可されている PZD 長さ:2、4、6、8 ワード

16#8189

モジュールがこのデータ伝送率をサポートして モジュールの有効なデータ伝送率を選択しまいません。

16#818A

す。

このドライブに対する別の要求が現在有効です。 後から、パラメータ読み出しまたは書き込みコ
マンドを繰り返します。

16#818B

ドライブが応答しません。

16#818C

ドライブがパラメータ要求に対してエラーメッ ドライブの応答フレームをチェックします。
セージで応答しました

ドライブをチェックします。

パラメータ要求をチェックします。
命令 USS_Read_Param、USS_Write_Param ま
たは USS_Port_Scan にエラーの報告があるかチェックします。エラーの報告がある場合、
USS_Drive_Control 命令の静的タグ USS_DB.
w_USSExtendedError の値をチェックします。

16#818D
16#818E

ドライブがパラメータ要求に対してアクセスエ ドライブの応答フレームをチェックします。
ラーメッセージで応答しました

パラメータ要求をチェックします。

ドライブが初期化されていません。

ユーザープログラムをチェックして、
USS_Drive_Control 命令がこのドライブに対して呼び出されていることを確認します。

3600

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコ
ード

説明

対策

16#8280

モジュールの読み出し時の否定確認

PORT パラメータの入力をチェックします。
エラーの原因の詳細については、静的パラメー
タ Port_Config.RDREC.STATUS、
Send_Config.RDREC.STATUS 、
Receive_Config.RDREC.STATUS 、
Send_P2P.RDREC.STATUS 、またはReceive_P2P.RDREC.STATUS と、SFB RDREC の説明を参照してください。

16#8281

モジュールの書き込み時の否定確認

PORT パラメータの入力をチェックします。.
エラーの原因の詳細については、静的パラメー
タ Port_Config.WRREC.STATUS、
Send_Config.WRREC.STATUS 、
Receive_Config.WRREC.STATUS 、
Send_P2P.RDREC.STATUS 、またはReceive_P2P.RDREC.STATUS と、SFB WRRECの説明を参照してください。

1)

S7-300/400 CPU 用の命令の場合のみ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3601

通信
6.5 通信プロセッサ

6.5.5

ET 200S

6.5.5.1

S7-1500 の使用に関する注

S7-1500 の S_SEND/S_RCV/S_USSI/S_MODB
S7-1500 で ET 200S 1SI リモート I/O の S_SEND、S_RCV、S_USSI、または S_MODB 命令を使用するときは以下のことに注意してください。
• S_SEND
パラメータ DB_NO のデータタイプ: UInt。
最適化されていないメモリ領域のデータのみを送信できます。 DB_NO、DBB_NO、および LEN パラメータの割り当て中は、これを銘記してください。
• S_RCV
パラメータ DB_NO のデータタイプ: UInt。
最適化されていないメモリ領域のデータのみを受信できます。 DB_NO、DBB_NO、および LEN パラメータの割り当て中は、これを銘記してください。
• S_USSI– パラメータ DBND、DBPA、および DBCP のデータタイプ: UInt
DBND、DBPA、および DBCP パラメータの無効な DB 番号:60000～60999– エラーに対する CPU の応答
CPU は、エラーに応答して、STOP に切り替えられることはありません。
エラーに応答して CPU を STOP に切り替える場合は、ユーザープログラムで ANZ パ
ラメータを評価する必要があります(ANZ がゼロでない場合は、STP 命令を開始する必要があります):• S_MODB
パラメータ DB_NO のデータタイプ: DB_ANY。
最適化されていないメモリ領域のデータのみを交換できます。 DB_NO パラメータとModbus データ変換テーブル付きのデータブロックの割り当て中は、これを銘記してく
ださい。

3602

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ[通信プロセッサ|ET200S シリアルインターフェース]ライブラリの命令
S7-1500 で ET 200S 1SI リモート I/O の命令を使用するときは以下のことに注意してください(ライブラリ: [通信プロセッサ|ET200S シリアルインターフェース])。
• LADDR パラメータで、通信モジュールのハードウェア識別子を設定する必要があります。
• 送信バッファと受信バッファは、両方とも最適化されたメモリ領域の外部に配置する必要があります。

6.5.6

ポイントツーポイント

6.5.6.1

PORT_CFG: 動的に通信パラメータを設定
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「PORT_CFG」命令を使用して、ポイントツーポイント通信ポートの通信パラメータを動的に設定することができます。
ハードウェアコンフィグレーションで、ポートのオリジナルの静的構成を設定します。
「PORT_CFG」命令を実行することによって、この構成を変更できます。また、このファンクションを使用して、作成済みブロックをライブラリに保存し、再使用時にハードウェア
コンフィグレーションでの構成を避けることもできます。
「PORT_CFG」を使用して、次の通信パラメータ設定に影響を与えることができます。
• パリティ
• ボーレート

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3603

通信
6.5 通信プロセッサ• 文字当たりのビット数• ストップビット数• フロー制御のタイプとプロパティ「PORT_CFG」命令で行われた変更は、ターゲットシステムに恒久的には格納されません。
シリアルデータは、電気的接続の RS-232 (半二重および全二重)および RS-485 (半二重)で転送することができます。

パラメータ
次の表に、「PORT_CFG」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジで構成の変更を有効にし
または定数

PORT

Input

PORT

説明

ます。

I、Q、M、D、L、 通信ポートの ID (HW-ID)
または定数

PROTOCOL

Input

UINT

I、Q、M、D、L、 伝送プロトコル:
または定数• 0:ポイントツーポイント通信プロトコル• 1..n:特定の伝送プロトコルの将来の定義

BAUD

Input

UINT

I、Q、M、D、L、 ポートのボーレート:
または定数• 1:300 ボー• 2:600 ボー• 3:1200 ボー• 4:2400 ボー• 5:4800 ボー• 6:9600 ボー(デフォルト)• 7:19200 ボー• 8:38400 ボー• 9:57600 ボー• 10:76800 ボー• 11:115200 ボー

3604

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

PARITY

Input

UINT

I、Q、M、D、L、 ポートのパリティ:
または定数

説明

• 1:パリティなし(デフォルト)• 2:偶数パリティ• 3:奇数パリティ• 4:マークパリティ• 5:スペースパリティ

DATABITS

Input

UINT

I、Q、M、D、L、 文字当たりのビット数:
または定数• 1:文字当たり 8 ビット(デフォルト)• 2:文字当たり 7 ビット

STOPBITS

Input

UINT

I、Q、M、D、L、 ストップビット数:
または定数• 1:1 ストップビット(デフォルト)• 2:2 ストップビット

FLOWCTRL

Input

UINT

I、Q、M、D、L、 データフロー制御
または定数• 1:なし(デフォルト)• 2:XON/XOFF• 3:ハードウェアフロー制御((RTS は常に有効)
• 4:ハードウェアフロー制御(送信中に RTS を無効にすることが可能)

XONCHAR

Input

CHAR

I、Q、M、D、L、 XON 文字として使用される文字を示します。
または定数

文字 DC1 (11H)がデフォルトとして設定されます。

XOFFCHAR

Input

CHAR

I、Q、M、D、L、 XOFF 文字として使用される文字を示します。
または定数

文字 DC3 (13H)がデフォルトとして設定されます。

WAITTIME

Input

UINT

I、Q、M、D、L、 送信開始後の XON または CTS に対する待ち時
または定数間を指定します。
指定された値は、デフォルトとして設定されている 0. 2000 ミリ秒を超えてはなりません。

DONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3605

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコード* 説明(W#16#...)
80A0

指定されたプロトコルが無効です。

80A1

指定されたボーレートが無効です。

80A2

指定されたパリティレートが無効です。

80A3

指定された文字当たりのビット数が無効です。

80A4

指定されたストップビット数が無効です。

80A5

指定されたフロー制御のタイプが無効です。

80A6

WAITTIME パラメータの値が正しくありません。
データフロー制御が有効の場合、WAITTIME パラメータの値は 0 よりも大きくなければな
りません。

80A7

XONCHAR および XOFFCHAR パラメータの値が無効です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

6.5.6.2

SEND_CFG: 動的にシリアル伝送パラメータを設定
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

3606

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

説明「SEND_CFG」命令を使用して、ポイントツーポイント通信ポートのシリアル伝送パラメ
ータを動的に設定することができます。転送待機中のすべてのメッセージは、SEND_CFGの実行後に破棄されます。
ハードウェアコンフィグレーションで、ポートのオリジナルの静的構成を設定します。
「SEND_CFG」命令を実行することによって、この構成を変更できます。また、このファンクションを使用して、作成済みブロックをライブラリに保存し、再使用時にハードウェ
アコンフィグレーションでの構成を避けることもできます。「SEND_CFG」を使用して、次の伝送パラメータ設定に影響を与えることができます。
• RTS (Request to Send)の有効化から伝送の開始までの時間• 伝送の終了から RTS の無効化までの時間• ブレークのビット時間の定義「SEND_CFG」命令で行われた変更は、ターゲットシステムに恒久的には格納されません。
シリアルデータは、電気的接続の RS-232 (半二重および全二重)および RS-485 (半二重)で転送することができます。

パラメータ
次の表に、「SEND_CFG」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジで構成の変更を有効にし
または定数

PORT

Input

PORT

説明

ます。

I、Q、M、D、L、 通信ポートの ID (HW-ID)
または定数

RTSONDLY

Input

UINT

I、Q、M、D、L、 RTS が有効になってから伝送が開始されるまで
または定数の経過時間。
このパラメータに有効な値は、次の通りです。
• 0 (デフォルト)• 1 ms 単位で 0～65535 ms
このパラメータは、RS-485 モジュールには適用されません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3607

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

RTSOFFDLY

Input

UINT

I、Q、M、D、L、 伝送が終了してから RTS が無効になるまでの
または定数

説明

経過時間。
このパラメータに有効な値は、次の通りです。
• 0 (デフォルト)• 1 ms 単位で 0～65535 ms
このパラメータは、RS-485 モジュールには適用されません。

BREAK

Input

UINT

I、Q、M、D、L、 メッセージの開始時に送信される、改行のビッ
または定数

ト時間を指定します。
デフォルトとして、12 ビット時間が設定されます。最大で 25000 ビット時間を指定することができます。

IDLELINE

Input

UINT

I、Q、M、D、L、 メッセージの開始時の改行後のアイドルライン
または定数のビット時間を指定します。
デフォルトとして、12 ビット時間が設定されます。最大で 25000 ビット時間を指定することができます。

DONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました

ERROR

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコード* 説明(W#16#...)
80B0

送信中断の構成は行えません。

80B1

指定された改行時間が、最大許容の 25000 ビット時間を超えています。

3608

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコード* 説明(W#16#...)
80B2

アイドルラインに指定された時間が、最大許容の 25000 ビット時間を超えています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

6.5.6.3

RCV_CFG: 動的にシリアル受信パラメータを設定
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「RCV_CFG」命令を使用して、ポイントツーポイント通信ポートのシリアル受信パラメー
タを動的に設定することができます。この命令を使用して、メッセージ送信の開始と終了を指定する条件を構成できます。この条件に対応するメッセージの受信は、「RCV_PTP (ページ 3622) 」命令で有効にすることができます。
ハードウェアコンフィグレーションのプロパティで、ポートのオリジナルの静的な構成を行います。構成を変更するには、プログラムで「RCV_CFG」命令を実行します。また、このファンクションを使用して、作成済みブロックをライブラリに保存し、再使用時にハード
ウェアコンフィグレーションでの構成を避けることもできます。「RCV_CFG」命令で行われた変更は、ターゲットシステムに恒久的には格納されません。
転送待機中のすべてのメッセージは、「RCV_CFG」命令の実行後に破棄されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3609

通信
6.5 通信プロセッサパラメータ
次の表に、「RCV_CFG」命令のパラメータを示します。
パラメータ

宣言

データタイプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジで構成の変更を
または定数

PORT

Input

PORT

説明
有効にします。

I、Q、M、D、L、 通信ポートの ID (HW-ID)
または定数

CONDITIONS

Input

CONDITIONS

D、L

データ伝送の開始および終了条件を定義するデータ構造体。

DONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されまし
た

ERROR

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

データタイプ CONDITIONSCONDITIONS 構造体を使用して、メッセージ送信の開始および終了条件を定義できます。
構造体 CONDITIONS は、「RCV_CFG」命令のインスタンス DB に含まれています。構造体
CONDITIONS を使用して、メッセージの送信がいつ完了するか、また、次のメッセージ転送
をいつ開始するかという開始条件および終了条件を定義します。
• START 構造体でデータ転送の開始条件を定義します。
• END 構造体でデータ転送の終了条件を定義します。
1 つまたは複数の開始および終了条件を定義することができます。複数の開始または終了
条件を指定した場合、条件は OR 論理命令でリンクされます。

3610

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
次の表に、「CONDITIONS」構造体を示します。
パラメータ

データタイ
プ

説明

START

STRUCT

開始条件

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3611

通信
6.5 通信プロセッサ
パラメータ
STARTCOND

データタイ
プ

説明

UINT

開始条件を指定します(詳細については、下記を参照)。
開始条件を 16 ビットの 16 進値で指定できます。開始条件に使用可能な値は次の通りです。
• 1:開始文字• 2:任意の文字(デフォルト)• 4:改行• 8:アイドルライン• 16:文字列 1• 32:文字列 2• 64:文字列 3• 128:文字列 4
STARTCOND パラメータで複数の開始条件を定義することもできます。
この場合は、個々の条件の値の合計を指定します。たとえば、「アイドルライン」OR「文字列 1」OR「文字列 4」を開始条件として定義した
い場合、値「152」を指定する必要があります。

IDLETIME

UINT

受信が開始される前の行の最大アイドル時間を指定します。
このパラメータに有効な値は、次の通りです。
• 40 ビット時間(デフォルト)• 0～2500 ビット時間

STARTCHAR

BYTE

開始文字を指定します。この設定は、構成された開始条件が「開始文字」の場合にのみ有効です。
このパラメータに有効な値は、次の通りです。
• 02 (STX):デフォルト設定• B#16#00～B#16#FF

SEQ[1].CTL

BYTE

文字列 1:文字ごとのコントロールシーケンス
文字のビット位置を使用して、文字列のどの文字を考慮または無視するかを定義することができます。文字を評価するには、対応するビットを設定する必要があります。
• ビット 0:1 文字• ビット 1:2 文字• ビット 2:3 文字• ビット 3:4 文字• ビット 4:5 文字
対応するビットがリセットされると、文字は無視されます。

3612

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

END

データタイ
プ

説明

SEQ[1].STR

CHAR[5]

文字列 1:開始文字(5 文字)SEQ[2].CTL

BYTE

文字列 2:文字ごとのコントロールシーケンスを無視/比較します。

SEQ[2].STR

CHAR[5]

文字列 2:開始文字(5 文字)

SEQ[3].CTL

BYTE

文字列 3:文字ごとのコントロールシーケンスを無視/比較します。

SEQ[3].STR

CHAR[5]

文字列 3:開始文字(5 文字)

SEQ[4].CTL

BYTE

文字列 4:文字ごとのコントロールシーケンスを無視/比較します。

SEQ[4].STR

CHAR[5]

文字列 4:開始文字(5 文字)

STRUCT

終了条件

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3613

通信
6.5 通信プロセッサ
パラメータ
ENDCOND

データタイ
プ

説明

UINT

終了条件を指定します(詳細については、下記を参照)。
終了条件を 16 ビットの 16 進値として指定することができます。終了
条件に使用可能な値は以下の通りです。
• 1:応答タイムアウト• 2:メッセージタイムアウト• 4:文字列内でのタイムアウト• 8:最大長• 16:N+LEN+M。メッセージの長さに関する情報がメッセージに統合
され、評価されます。
• 32:文字列 1
ENDCOND パラメータで複数の終了条件を定義することもできます。この場合は、個々の終了条件の値の合計を指定します。たとえば、終了
条件「最大長」OR「シーケンス 1」を定義したい場合は、値「40」を指定する必要があります。

MAXLEN

UINT

メッセージ内の最大文字数を指定します。
このパラメータに有効な値*は、次の通りです。
• 1 文字(デフォルト)• 0～1024 文字
この設定は、「最大長」終了条件が ENDCOND パラメータで設定されている場合にのみ有効です。

N

UINT

メッセージ内の長さフィールドのオフセット
このパラメータに有効な値は、次の通りです。
• 0 文字(デフォルト)• 0～1024 文字
この設定は、「N+LEN+M」終了条件が ENDCOND パラメータで設定されている場合にのみ有効です。

LENGTHSIZE

UINT

長さフィールドのバイト単位のサイズ
このパラメータに有効な値*は、次の通りです。
• 0 バイト(デフォルト)• 1 バイト• 2 バイト• 4 バイトこの設定は、「N+LEN+M」終了条件が ENDCOND パラメータで設定されている場合にのみ有効です。

3614

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ
LENGTHM

データタイ
プ

説明

UINT

長さフィールドの後に続いているが、メッセージの長さには含まれない
終了文字の数を指定します。
このパラメータに有効な値は、次の通りです。
• 0 文字(デフォルト)• 0～255 文字
この設定は、「N+LEN+M」終了条件が ENDCOND パラメータで設定されている場合にのみ有効です。

RCVTIME

UINT

メッセージの最初の文字の受信について最大継続時間を指定します。
このパラメータに有効な値は、次の通りです。
• 200 ms (デフォルト)• 1 ms 単位で 0～65535 ms
この設定は、「応答タイムアウト」終了条件が ENDCOND パラメータで設定されている場合にのみ有効です。

MSGTIME

UINT

メッセージの受信の最大継続時間を指定します。
このパラメータに有効な値は、次の通りです。
• 200 ms (デフォルト)• 1 ms 単位で 0～65535 ms
この設定は、「メッセージタイムアウト」終了条件が ENDCOND パラメータで設定されている場合にのみ有効です。

CHARGAPUINT

連続する文字と文字の間の受信時間間隔を指定します。
このパラメータに有効な値は、次の通りです。
• 12 ビット時間(デフォルト)• 0～2500 ビット時間
この設定は、「文字列内でのタイムアウト」終了条件が ENDCOND パラ
メータで設定されている場合にのみ有効です。

SEQ.CTL

BYTE

文字列:文字ごとのコントロールシーケンス
文字のビット位置を使用して、文字列のどの文字を考慮または無視するかを定義することができます。文字を評価するには、対応するビットを設定する必要があります。
• ビット 0:1 文字• ビット 1:2 文字• ビット 2:3 文字• ビット 3:4 文字• ビット 4:5 文字

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3615

通信
6.5 通信プロセッサ
パラメータ

データタイ
プ

説明
対応するビットがリセットされると、文字は無視されます。

SEQ.STRCHAR[5]

文字列:開始文字(5 文字)* 上記の値の範囲は、メッセージの終了を指定するための、対応するハードウェアの設定にも適用されます。

メッセージ受信の開始条件(STARTCOND パラメータ)
メッセージの開始は、構成された開始条件が適用される場合に受信側に認識されます。次の条件が、メッセージ受信の開始条件として定義可能です。
• 開始文字:メッセージの開始は、特定の文字が現れた時に認識されます。この文字は、メッセージの最初の文字として保存されます。開始文字の前に受信された文字はすべて拒否されます。
• 任意の文字:任意の文字をメッセージの開始として定義できます。この文字は、メッセージの最初の文字として保存されます。
• 改行:メッセージの開始は、受信したデータストリームに 1 文字の長さよりも長い中断があった場合に認識されます。
• アイドルライン:送信伝送ラインが特定の時間(ビット時間で指定)アイドル状態になり、その後に文字の新たな伝送が続いたときに、メッセージの開始が認識されます。
• 文字列(シーケンス):データストリームに指定された文字シーケンスが現れたときに、メッセージの開始が認識されます。最大で 4 つまでの文字シーケンスをそれぞれ 5 文字までで指定することができます。
例:受信した 16 進メッセージに次の文字が含まれています。「68 10 aa 68 bb 10 aa 16」
設定済みの開始文字シーケンスを以下の表に示します。最初の 68H 文字が正常に受信されると、開始文字シーケンスが評価されます。
has been received successfully.4 番目の文字(
2 番目の 68H)が正常に受信された後に、開始条件「1」が満たされます。開始条件が満たされると、終了条件の評価が開始します。
開始文字シーケンスの処理は、各種パリティエラー、フレームエラー、文字間の時間
間隔エラーが原因で終了する可能性があります。
framing or time intervals between characters.開始条件が満たされていないため、これらのエラーによって、メッセージを受信できなくなります。
reception of the message, because the start condition has notbeen met.

3616

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

開始条件

最初の文字

最初の文字+1

最初の文字+2

最初の文字+3

最初の文字+4

1

68H

xx

xx

68H

xx

2

10H

aaH

xx

xx

xx

3

dcH

aaH

xx

xx

xx

4

e5H

xx

xx

xx

xx

メッセージ受信の終了条件(ENDCOND パラメータ)
メッセージの開始は、構成された終了条件が適用される場合に受信側に認識されます。次の条件が、メッセージ受信の終了条件として定義可能です。
• 応答タイムアウト:文字の受信について指定された最大継続時間を超えると、メッセー
ジの受信が終了します。最大継続時間は、RCVTIME パラメータで定義されます。定義
された時間は、最後の送信が完了して RCV_PTP 命令によってメッセージの受信が可能になると、カウントダウンが直ちに開始されます。定義された時間(RCVTIME)内に文字が受信されなかった場合、RCV_PTP 命令によってエラーがレポートされます。
• メッセージタイムアウト:メッセージの受信について指定された最大継続時間を超えると、メッセージの受信が終了します。最大継続時間は、MSGTIME パラメータで定義されます。メッセージの最初の文字が受信されると、定義された時間のカウントダウンが直ちに開始されます。
• 文字列内でのタイムアウト:2 つの連続する文字の受信間の時間間隔が CHARGAP パラ
メータの値よりも長くなると、メッセージの受信が終了します。
• 最大長:MAXLEN パラメータで定義されたメッセージの長さを超えると、メッセージの受信が終了します。
• 読み出しメッセージの長さ(N+LEN+M):特定のメッセージ長に達したときに、メッセー
ジの受信が終了します。この長さは、以下のパラメータの値で計算されます。
– N:長さフィールドが始まる、メッセージ内の文字の位置。
– LENGTHSIZE:長さフィールドのバイト単位のサイズ– LENGTHM:長さフィールドの後に続く終了文字の数。この文字は、メッセージ長の計算で考慮されません。
• 文字列:定義された文字シーケンスが受信されたときに、メッセージの受信が終了します。文字列には、最大で 5 文字を入れることができます。文字列の文字ごとに、ビット位置を使用して、この文字を計算で考慮するか無視するかを定義することができます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3617

通信
6.5 通信プロセッサSTATUS パラメータ
エラーコー
ド*

説明

(W#16#...)
80C0

開始条件のエラー

80C1• 終了条件のエラー• 終了条件が定義されていません。

80C2

割り込みの受信が有効です。

80C30 に等しいか 4132 よりも大きい値が MAXLEN パラメータに入力される一方で、「最大長」終了条件が設定されています。

80C44131 よりも大きい値が N パラメータに入力される一方で、「N+LEN+M」終了条件が設定されています。

80C50 に等しいか無効な値が LENGTHSIZE パラメータに入力される一方で、「N+LEN+M」終了条件が設定されています。

80C6

255 よりも大きい値が LENGTHM パラメータに入力される一方で、「N+LEN+M」終了条件が設定されています。

80C74132 よりも大きいメッセージ長が計算される一方で、「N+LEN+M」終了条件が設定されて
います。

80C8

0 に等しい値が RCVTIME パラメータに入力される一方で、「応答タイムアウト」終了条件が設定されています。

80C90 に等しいかまたは 2500 よりも大きい値が CHARGAP パラメータに入力される一方で、「文字列内でのタイムアウト」終了条件が設定されています。

80CA

0 に等しいかまたは 2500 よりも大きい値が IDLETIME パラメータに入力される一方で、「アイドルライン」開始条件が設定されています。

80CB「文字列」が終了条件として設定されているにもかかわらず、文字列のすべての文字が「Don'tcare」としてマークされています。

80CC「文字列」が開始条件として設定されているにもかかわらず、文字列のすべての文字が「Don'tcare」としてマークされています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

3618

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.6.4

SEND_PTP: 送信バッファデータの送信
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「SEND_PTP」命令を使用してデータの伝送を開始します。「SEND_PTP」命令は、実際のデータ伝送を実行しません。送信バッファのデータは、関連するポイントツーポイント接続
用通信モジュール(CM)に送信されます。CM が実際の送信を実行します。

パラメータ
次の表に、「SEND_PTP」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 このイネーブル入力信号の立ち上がりエッジで
または定数

説明

要求された送信を有効にします。バッファの内容がポイントツーポイント接続用通信モジュー
ル(CM)に送信されます。

PORT

Input

PORT

I、Q、M、D、L、 通信ポートの ID (HW-ID)
または定数

BUFFERInput

VARIANT

I、Q、M、D、L、 送信バッファの開始アドレスへのポインタ。ブまたは定数

ール値または Array of BOOL はサポートされていません。

LENGTH

Input

UINT

I、Q、M、D、L、 送信バッファの長さ
または定数

PTRCL

Input

BOOL

I、Q、M、D、L、 このパラメータは、接続されている CM に実装または定数される通常のポイントツーポイント通信プロト
コルまたは特定の Siemens プロトコルについてバッファを選択します。
FALSE = ユーザープログラムによって制御されるポイントツーポイント操作(唯一の有効なオ
プション)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3619

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

説明

DONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました

ERROR

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコード* 説明(W#16#...)
7000

送信操作が行われていません。

7001

送信操作が最初の呼び出しを処理中です。

7002

送信操作が後続の呼び出し(最初の呼び出しに続く問い合わせ)を処理中です。

8080

通信ポート番号について入力された識別子が無効です。

8088

LENGHT パラメータの長さが、送信データの長さと一致しません。関連項目:LENGHT および
BUFFER パラメータ。

80D0

送信の実行中に、新しい送信要求が受信されました。

80D1

指定された待機時間内に CTS 信号が確認されなかったため、送信が中断されました。

80D2

通信パートナー(DCE)から受信を望まないことを信号で通知されたため(DSR)、送信要求が中断されました。

80D3

待機ループの最大サイズを超えた(1024 バイトを超える)ため、送信要求が中断されました。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

3620

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

LENGTH および BUFFER パラメータ「PTP_SEND」命令によって送信できる最小データサイズは、1 バイトです。BUFFER パラ
メータは、送信されるデータのサイズを定義します。BUFFER パラメータには BOOL もArray of BOOL データタイプも使用できません。
LENGTH パラメータ

BUFFER パラメータ

説明

LENGTH = 0

未使用

BUFFER パラメータで定義された完全なデータが送信されます。LENGTH = 0 の場合、転送されるバイト数を指定する必要はありません。

LENGTH > 0

基本データタイプ

LENGTH 値には、このデータタイプのバイト数を含める必要があります。それ以外の場合、データは転送されず、エラー 8088 が出力されます。

STRUCTLENGTH 値には、構造体の完全なバイト長よりも小さいバ
イト数を含めることができます。この場合、最初の
LENGTH バイトのみが転送されます。

ARRAY

LENGTH 値には、フィールドの完全なバイト長よりも小さいバイト数を含めることができます。この場合、LENGTH
バイト内に完全に収まるフィールドエレメントのみが転送されます。
LENGTH 値は、データエレメントのバイト数の倍数である
必要があります。それ以外の場合、STATUS = 8088、
ERROR = 1 となり、データは転送されません。

STRING

文字列の最大長および文字列の実際の長さに関する情報とともに、文字シーケンスフォーマットの完全なメモリ配列が送信されます。
LENGTH 値には、最大長、実際の長さおよび文字列の文字のバイトを含める必要があります。
データタイプ STRING では、すべての長さと文字のサイズ
は 1 バイトです。
文字列が BUFFER パラメータに使用された場合、LENGTH
値にも 2 つの長さフィールドについて 2 バイトを含める必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3621

通信
6.5 通信プロセッサ

6.5.6.5

RCV_PTP: 受信メッセージの有効化
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明
RCV_PTP 命令を使用して、送信メッセージの受信を有効にします。各メッセージを個別に有効にする必要があります。メッセージが対応する通信パートナーによって確認応答済みの場合にのみ、送信データは受信領域内で使用可能です。

パラメータ
次の表に、「RCV_PTP」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

EN_R

Input

BOOL

I、Q、M、D、

信号立ち上がりエッジで受信を有効にします。

L、または定数
PORT

Input

PORT

I、Q、M、D、

通信ポートの ID (HW-ID)

L、または定数BUFFERInput

VARIANT

I、Q、M、D、

受信バッファの開始アドレスをポイントします。

L、または定数

受信バッファで STRING タイプのタグを使用しな
いでください。

NDR

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました

ERROR

Output

BOOL

I、Q、M、D、L 以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L 命令のステータス

LENGTH

OutputUINT

I、Q、M、D、L 受信バッファ内のメッセージの長さ

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

3622

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサSTATUS パラメータ
エラーコード* 説明(W#16#....)
80E0

受信バッファが一杯のため、メッセージの受信が終了しました。

80E1

パリティエラーの結果、メッセージの受信が終了しました。

80E2

フレームエラーの結果、メッセージの受信が終了しました。

80E3

オーバーフローエラーの結果、メッセージの受信が終了しました。

80E4計算されたメッセージ長(N+LEN+M)が受信バッファのサイズを超えているため、メッセー
ジの受信が終了しました。

8080

通信ポート番号について入力された識別子が無効です。

8088

データタイプ STRING が BUFFER パラメータによって参照されています。

0094

最大文字長が受信されたため、メッセージの受信が終了しました。

0095

タイムアウトの結果、メッセージの受信が終了しました。

0096

文字列内でのタイムアウトのため、メッセージの受信が終了しました。

0097

応答タイムアウトの結果、メッセージの受信が終了しました。

0098「N+LEN+M」の長さ条件が満たされる場合、メッセージの受信が終了しました。

0099

終了条件として定義されている文字列が受信されたため、メッセージの受信が終了しました。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

6.5.6.6

RCV_RST:受信バッファの削除
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「RCV_RST」命令を使用して、通信パートナーの受信バッファを削除します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3623

通信
6.5 通信プロセッサパラメータ
次の表に、「RCV_RST」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジで受信バッファの削除
または定数

PORT

Input

PORT

説明

を有効にします。

I、Q、M、D、L、 通信ポートの ID (HW-ID)
または定数

DONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました

ERROR

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

6.5.6.7

SGN_GET: RS-232 信号の問い合わせ
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「SGN_GET」命令を使用して、RS-232 通信モジュールの複数の信号の現在の状態を問い合
わせます。

3624

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサパラメータ
次の表に、「SGN_GET」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジで問い合わせを有効
または定数

PORT

Input

PORT

説明

にします。

I、Q、M、D、L、 通信ポートの ID (HW-ID)
または定数

NDR

Output

BOOL

I、Q、M、D、L

新しいデータの送信が準備完了し、命令がエラーなしで実行された場合に、1 サイクルに対して設定されます。

DTR

Output

BOOL

I、Q、M、D、L

データ端末準備完了、モジュール準備完了

DSR

Output

BOOL

I、Q、M、D、L

データセット準備完了、通信パートナー準
備完了

RTS

Output

BOOL

I、Q、M、D、L

送信要求、モジュールの送信準備完了

CTS

Output

BOOL

I、Q、M、D、L

送信可、通信パートナーはデータを受信可能(モジュールの RTS = ON への応答)。

DCD

Output

BOOL

I、Q、M、D、L

データキャリア検出、受信信号レベル

RING

Output

BOOL

I、Q、M、D、L

リング表示、着呼の表示

ERROR

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。

STATUS

Output

WORD

I、Q、M、D、L

命令のステータス

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコード*説明(W#16#....)
80F0

通信モジュールが RS-485 モジュールで、信号は使用できません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3625

通信
6.5 通信プロセッサ
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

6.5.6.8

SGN_SET: RS-232 信号の設定
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「SGN_SET」命令を使用して、RS-232 通信モジュールの出力信号のステータスを設定しま
す。

パラメータ
次の表に、
「SGN_SET」命令のパラメータを示します。
パラメータ

宣言

データタイ
プ

メモリ領域

REQ

Input

BOOL

I、Q、M、D、L、 信号立ち上がりエッジで操作を起動します。
または定数

PORT

Input

PORT

Input

BYTE

初期値: FALSE

I、Q、M、D、L、 通信ポートの ID (HW-ID)
または定数

SIGNAL説明

初期値: FALSE

I、Q、M、D、L、 設定する信号を指定します。
または定数• 01H = RTS を設定• 02H = DTR を設定• 04H = DSR を設定
初期値: FALSE

RTS

Input

BOOL

I、Q、M、D、L、 送信要求、モジュールの送信準備完了
または定数

DTR

Input

BOOL

I、Q、M、D、L、 データ端末準備完了、モジュール準備完了
または定数

3626

初期値: FALSE
初期値: FALSE

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

データタイ
プ

メモリ領域

DSR

Input

BOOL

I、Q、M、D、L、 データの設定準備完了(DCE タイプのインタ
または定数

説明

ーフェースにのみ適用されます)
初期値: FALSE

DONE

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:ジョブがまだ開始されていないか、または実行中です。
• 1:ジョブはエラーなく実行されました
初期値: FALSE

ERROR

Output

BOOL

I、Q、M、D、L

以下の値を持つステータスパラメータ:• 0:エラーなし• 1:エラーが発生しました。
初期値: FALSESTATUS

Output

WORD

I、Q、M、D、L

命令のステータス
初期値:0

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコード* 説明(W#16#...)
80F0

通信モジュールが RS-485 モジュールで、信号は使用できません。

80F1

H/W フロー制御が有効になっているため、信号を設定できません。

80F2

モジュールが DTE デバイスであるため、DSR 信号を設定できません。

80F3モジュールが DCE デバイスであるため、DTR 信号を設定できません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
通信命令の一般エラーコードに関する詳細情報については、「通信ブロックの全般的なス
テータス情報 (ページ 3628)」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3627

通信
6.5 通信プロセッサ

6.5.6.9

通信ブロックの全般的なステータス情報

通信ブロックの実行ステータスに関する全般情報
次の表に、通信ブロックの STATUS パラメータに出力できる全般情報を示します。
エラーコード* 説明(W#16#....)
0000

エラーは発生していません。

7000

ジョブ処理が行われていません。

7001

ジョブ処理の開始。 パラメータ BUSY = 1、DONE = 07002

中間呼び出し(REQ は対象外): 命令が既に有効です。BUSY の値は「1」です。

8x3A

パラメータ x のポインタが無効です。

8070

すべての内部インスタンスメモリが使用されます。

8080

通信ポートに入力された識別子が無効です。

8081

タイムアウト、モジュールエラー、内部エラー

8082

現在、パラメータ割り当てがバックグラウンドで実行されているため、パラメータ割り当てに失敗しました。

8083

バッファオーバーフロー: CM または CB が長さパラメータによって許可されているよりも長い受信メッセージを返しました。

8085

LENGHT パラメータで長さを指定しているときにエラーが発生しました。 指定された長さが「0」であるか、最大許容値よりも大きくなっています。

8090

メッセージ長が無効、モジュールが無効、メッセージが無効

8091

パラメータ設定メッセージ内のバージョンが正しくありません。

8092

パラメータ設定メッセージ内のレコード長が無効です。

* エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。 表示形式の切り替えについては、「関連項目」を参照してください。

3628

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.7

USS

6.5.7.1

USS 命令の概要

概要
USS 命令は、ユニバーサルシリアルインターフェースをサポートするドライブ操作を制御します(USS)。 USS 命令を使用して、RS-485 接続を経由して複数のドライブと通信できます。
通信するには、CM 1241 RS-485 通信モジュールまたは CB 1241 RS-485 通信ボードが必要です。 S7-1200 CPU には、最大 3 つの CM 1241 RS-485 モジュールと 1 つの CB 1241
RS-485 をインストールできます。
各 RS-485 ポートは最大 16 ドライブを操作できます。
USS プロトコルは、シリアルバスを経由して通信にマスタ/スレーブネットワークを使用します。マスタはアドレスパラメータを使用してメッセージを選択されたスレーブに送信します。 スレーブ自体は前もって要求を受信せずに、送信することはありません。 スレーブ
間のメッセージの直接交換はできません。 USS 通信は半二重モードで動作します。
次の図に、USS ネットワークダイアグラムの例を示します。
&0b
56኿ንዂዙወ

6&38

866ኦ዆ኁኳᇬኪአእዌዙኌ              

866ኦ዆ኁኳᇬኪአእዌዙኌ

  

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3629

通信
6.5 通信プロセッサ

6.5.7.2

USS プロトコル使用の必要条件

ドライブ設定の一般的な必要条件• 4 PKW ワードを使用するにはドライブを設定する必要があります。
• 2、4、6 または 8 PZD ワードに対して、ドライブを設定できます。
• ドライブの PZD ワード数は、ドライブの「USS_DRIVE (ページ 3635)」命令の PZD_LEN
入力と一致している必要があります。
• すべてのドライブのボーレートは、「USS_PORT (ページ 3634)」命令の BAUD 入力パラ
メータのボーレートと一致している必要があります。
• リモート制御にドライブを設定しなければなりません。
• USS は、ドライブの COM 接続では、目的の周波数値を指定する必要があります。
• ドライブアドレスとして 1~16 をセットしなければなりません。 このアドレスは、「USS_DRV (ページ 3635)」命令の DRIVE 入力パラメータのアドレスと一致している必要があります。
• ドライブの方向を制御するには、ドライブの極性に目的の値をセットしなければなりません。
• RS-485 ネットワークを正確に接続する必要があります。

定義: PKW / PZD 領域• PKW 領域は、パラメータ-識別子-値インターフェースの処理に関連します。
PKW インターフェースは物理的インターフェースではありませんが、2 つの通信パートナー間のパラメータ交換を制御するメカニズムを示しています。言い換えれば、パラメータ値の読み出しと書き込み、パラメータの記述と対応するテキスト、および未処理メッセージのためのパラメータ変更の処理です。 PKW インターフェースを経由して処理されたタスクはすべて、基本的には、オペレータコントロールおよびモニタリン
グ、サービスと診断のためのタスクです。
• PZD 領域には、自動化に必要なシグナルが含まれます。
– コントロールワード、マスタからスレーブへのセットポイント– ステータスワード、スレーブからマスタへの現在値。
両方の領域は共に、結果としてユーザーデータフィールドになります。 これは、マスタによってジョブフレームとしてスレーブに転送され、スレーブによって応答フレームとしてマスタに転送されます。

3630

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ説明
各通信モジュール CM 1241 RS485 は、最大 16 ドライブをサポートします。 単一のイン
スタンスデータブロックには、インストール済みの PtP 通信モジュールに接続される USS
ネットワークのすべてのドライブに対する一時メモリとバッファファンクションが含まれます。 これらのドライブの USS 命令はこのデータブロックの情報へのアクセスを共有しています。
866B3257ኤዙኜኳዊአኌ866B'59B'%ቒᇬ
866㝜⇫ት⅚ሺ቉栢㘴䤓቎ቑቢቿኌ
ኘኖቊሰቮክአኲቾቊሼᇭ

866B'59B'%

866B'%

866B'59B'%
373&20ኤዙኜክኁእቑቂቤ቎℗侓䂗ቢ
'ULYHGDWD

866B'59B'%
866B'59








'5,9(

&056
RGHU&%56







抩≰኿ንዂዙወቒ㦏⮶⊚ቑኦ዆ኁኳትኒኺዙእ
ሺቡሼᇭኦ዆ኁኳኮ዆ኾ
ዙኜቑ%R[LQSXWቋሺ቉ᨺት⏴┪ሺቡሼᇭ




866B530


'5,9(




'ULYH
'ULYH



866B:30
'5,9(

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3631

通信
6.5 通信プロセッサ•

RS485 ポートに接続されたすべてのドライブ(最大 16)は、同じ USS ネットワークの一部です。 異なる RS485 ポートに接続されあたすべてのドライブは、異なる USS ネット
ワークの一部です。 S7-1200 は最大 3 つの CM 1241 RS485 モジュールをサポートするので、最大 3 つの USS ネットワークを設定できます。それぞれ最大 16 ドライブを保持するので、合計 48 USS のドライブがサポートされます。

• 各 USS ネットワークは固有のデータブロックによって管理されます(3 つの CM 1241
RS485 モジュール付き 3 つの USS ネットワークには 3 つのデータブロックが必要です)。 USS ネットワークに属するすべての命令はこのデータブロックを共有しなければなりません。 これには、USS ネットワークのすべてのドライブを制御するために必要な、「USS_DRIVE (ページ 3635)」、「USS_PORT (ページ 3634)」、「USS_RPM (ページ 3640)」および「USS_WPM (ページ 3642)」命令がすべて含まれています。
• 「USS_DRIVE (ページ 3635)」命令はファンクションブロック(FB)です。 エディタで「USS_DRIVE」命令を挿入する場合、DB を命令に割り当てるか[呼び出しオプション]ダ
イアログで問われます。
– この USS ネットワークのプログラム内で最初の「USS_DRIVE」命令の場合、デフォ
ルトの DB 割り当てを使用することができ(必要な場合は名前を変更)、新規の DB が作成されます。
– ただし、このネットワークの最初の「USS_DRIVE」命令でない場合、[呼び出しオプション]ダイアログのドロップダウンリストで、以前この USS ネットワークに割り当てられた DB の中から適切な DB を選択する必要があります。
• すべての「USS_PORT (ページ 3634)」、「USS_RPM (ページ 3640)」、および「USS_WPM(ページ 3642)」命令はファンクション(FC)です。 エディタでこれらの FC を挿入する場
合、DB は割り当てられません。 代わりに、当該の DB をこれらの命令の USS_DB 入力に割り当てる必要があります(パラメータフィールドをダブルクリックし、次にアイコンをダブルクリックして、使用可能な DB を表示します)。

3632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ• 「USS_PORT (ページ 3634)」命令は、PtP 通信モジュールを経由して CPU とドライブ間の通信を制御します。 この命令を呼び出す時は必ず、ドライブによる通信が処理されます。 ドライブがタイムアウトをレポートしないように、このファンクションを素早く呼び出す必要があります。 この命令は、メインプログラムまたは任意の割り込み OB から呼び出すことができます。
• ファンクションブロック「USS_DRIVE (ページ 3635)」を使用すると、USS ネットワーク
内の指定したドライブにアクセスできます。 入力と出力はドライブの状態およびオペ
レーティングファンクションに対応します。ネットワーク内に 16 のドライブがある場
合、プログラム内で「USS_DRIVE」を少なくとも 16 回呼び出す必要があります。つまりドライブごとに 1 回です。 ブロックをどの程度素早く呼び出す必要があるかは、ドライブファンクションを制御するのに必要な速度によって異なります。
「USS_DRIVE」命令は、メインプログラム OB からのみ呼び出すことができます。
注意「USS_DRIVE」、「USS_RPM」、「USS_WPM」は、メインプログラム OB からのみ呼び出
してください。「USS_PORT」命令は任意の OB から呼び出すことができますが、通常は遅延割り込み OB から呼び出されます。「USS_PORT」命令が実行中に割り込まれた場
合、予期しないエラーが発生する可能性があります。
「USS_RPM」および「USS_WPM」命令は、ドライブのオペレーティングパラメータを読み出す/書き込むために使用されます。 これらのパラメータは、ドライブ操作の内部モードを制御します。 パラメータの定義はドライブマニュアルに記載されています。
プログラムにはこれらの命令の番号も含まれていることがあります。しかし、ドライブでは
1 つの読み出し要求または 1 つの書き込み要求のみ有効です。 メインプログラム OB から「USS_RPM」および「USS_WPM」命令のみ呼び出しできます。

ドライブとの通信時間の計算
ドライブとの通信は、S7-1200 のサイクルと非同期に実行されます。S7-1200 は複数のサイクルを実行してから、ドライブとの通信を完了します。
「USS_PORT」の間隔はドライブトランザクションに必要な時間です。 次の表に、ボーレ
ートごとの「USS_PORT」の最小間隔を示します。 「USS_PORT」間隔よりも頻繁に「USS_PORT」を呼び出しても、トランザクション数は増えません。 ドライブのタイムア
ウト間隔とは、通信エラーのためトランザクションを完了するには 3 回の試行が必要な場合

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3633

通信
6.5 通信プロセッサのトランザクションに使用できる時間です。 デフォルトでは、USS プロトコルを使用したトランザクションごとに最大 2 回の試行が行われます。

6.5.7.3

ボーレート

USS_PORT を呼び出すための計算済み ドライブあたりのドライブメッ
最小間隔(ミリ秒)
セージ間隔タイムアウト(ミリ秒)

1200

790

2370

2400

405

1215

4800

212.5

638

9600

116.3

349

19200

68.2

205

38400

44.1

133

57600

36.1

109

11520028.1

85

USS_PORT: USS ネットワーク経由の通信編集
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「USS_PORT」命令は USS ネットワーク上の通信を処理します。プログラムでは、PtP 通信
ポートあたり 1 つの「USS_PORT」命令を使用して、1 つのドライブへの転送や 1 つのドライブからの転送を制御します。
1 つの USS ネットワークと 1 つの PtP 通信ポートに割り当てられるすべての USS 命令は、
おなじインスタンスデータブロックを使用する必要があります。

呼び出し
ドライブのタイムアウトを防ぐため、「USS_PORT」命令を頻繁に実行しなければなりません。したがって、サイクル割り込み OB から「USS_PORT」命令を呼び出し、最新の USS
データを「USS_DRIVE (ページ 3635)」呼び出しに使用できるよう更新する必要があります。

3634

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサパラメータ
次の表に、「USS_PORT」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

PORT

Input

PORT

D、L、または定数 PtP 通信ポート識別子
デフォルトタグテーブルの[定数]タブ内で参照できる定数。

BAUD

Input

DINT

I、Q、M、D、L、 USS 通信のボーレート。
または定数

USS_DBInOut

USS_BASE D「USS_DRIVE (ページ 3635)」命令のインスタン
ス DB への参照

ERROR

Output

BOOL

I、Q、M、D、L

エラーが発生する場合、ERROR は TRUE にセットされる。対応するエラーコードは STATUS
出力で出力されます。

STATUS (ペOutput

WORD

I、Q、M、D、L

ージ 3645)

要求のステータス値。サイクルまたは初期設定の結果を示す。一部のステータスコードの追加
情報については、「USS_Extended_Error (ページ 3645)」タグを参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

6.5.7.4

USS_DRIVE: データとドライブをスワップ
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3635

通信
6.5 通信プロセッサ

説明「USS_DRIVE」命令は、要求メッセージを作成し、ドライブ応答メッセージを割り込んでドライブとデータを交換します。ドライブごとに個別の命令を使用する必要がありますが、
1 つの USS ネットワークおよび 1 つの PtP 通信モジュールに割り当てられたすべての USS
命令は同じインスタンスデータブロックを使用しなければなりません。最初の「USS_DRIVE」命令を設定する時に DB 名を作成する必要があります。初期命令が挿入された時に作成されたこの DB を再使用します。
「USS_DRIVE」命令が最初に実行される時、USS アドレス(パラメータ DRIVE)によって指示されたドライブは、インスタンス DB で初期化されます。この初期設定の後、後続の「USS_PORT (ページ 3634)」命令は、このドライブ番号のドライブと通信を開始できます。
ドライブ番号を変更する場合、PLC STOP をインスタンス DB を初期化する RUN モードに移行する必要があります。入力パラメータは USS 送信バッファで設定され、出力がある場合、出力は「以前の」有効な応答バッファから読み取られます。「USS_DRIVE」命令の実行中は、データ転送は行われません。「USS_PORT (ページ 3634)」を実行した後、ドライブとの通信が存在するため、「USS_DRIVE」のみが、送信するメッセージを設定し、以前の要求で受信したデータを評価します。
DIR (BOOL)入力を使用するか、または SPEED_SP (REAL)入力で符号(正または負)を使用す
ると、ドライブの回転方向を制御できます。次の表に、これらの入力が共に作動し、モータが前転するよう配線されていると想定した場合のドライブ方向の決定方法を示します。
SPEED_SP

DIR

ドライブの回転方向

値>0

0

反転

値>0

1

前転

値< 0

0

前転

値< 0

1

反転

パラメータ
ボックスの下をクリックして、ボックスを拡大しすべてのパラメータを表示します。グレイ
表示されているパラメータ接続はオプションで、割り当てる必要はありません。

3636

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
次の表に、「USS_DRIVE」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

RUN

Input

BOOL

I、Q、M、D、L、 ドライブのスタートビット:このパラメータ値
または定数

説明

が TRUE の場合、この入力によってドライブを事前設定された速度で実行できます。

OFF2

Input

BOOL

I、Q、M、D、L、 「電気停止」ビット。このパラメータ値がまたは定数

FALSE の場合、このビットによってドライブはブレーキをかけることなく停止に向かって惰行
運転します。

OFF3

Input

BOOL

I、Q、M、D、L、 即時停止ビット - パラメータの値が FALSE の場
または定数合、このビットによってドライブにブレーキをかけて即時停止させます。

F_ACK

Input

BOOL

I、Q、M、D、L、 故障確認ビット - このビットによってドライブ
または定数で故障ビットがリセットされます。このビットは故障が除去された後にセットされ、前の故障を示す必要がないことをドライブに指示しま
す。

DIR

Input

BOOL

I、Q、M、D、L、 ドライブの方向制御 - このビットは方向が前転または定数であることを示すためにセットされます(SPEED_SP が正の場合)。

DRIVE

Input

USINT

I、Q、M、D、L、 ドライブアドレス:この入力は USS ドライブのまたは定数アドレスです。有効な範囲はドライブ 1 からドライブ 16 です。

PZD_LEN

Input

USINT

I、Q、M、D、L、 ワード長さ - これは PZD データのワード数でまたは定数す。有効な値は、2、4、6 または 8 ワードです。デフォルトは 2 です。

SPEED_SP

Input

REAL

I、Q、M、D、L、 速度セットポイント - これはドライブの速度または定数で、設定した頻度のパーセンテージとして表されます。正の値は前転方向を指定します(DIRの値が TRUE の場合)。

CTRL3

Input

WORD

I、Q、M、D、L、 コントロールワード 3 - ドライブ上でユーザーまたは定数が設定可能なパラメータに書き込まれた値。ユーザーはドライブにこの値を設定する必要があります。オプションパラメータTIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3637

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

CTRL4

Input

WORD

I、Q、M、D、L、 コントロールワード 4 - ドライブ上でユーザー
または定数

説明

が設定可能なパラメータに書き込まれた値。ユーザーはドライブにこの値を設定する必要があります。オプションパラメータ

CTRL5

Input

WORD

I、Q、M、D、L、 コントロールワード 5 - ドライブ上でユーザーまたは定数が設定可能なパラメータに書き込まれた値。ユーザーはドライブにこの値を設定する必要があります。オプションパラメータ

CTRL6

Input

WORD

I、Q、M、D、L、 コントロールワード 6 - ドライブ上でユーザーまたは定数が設定可能なパラメータに書き込まれた値。ユーザーはドライブにこの値を設定する必要があ
ります。

CTRL7

Input

WORD

I、Q、M、D、L、 コントロールワード 7 - ドライブ上でユーザーまたは定数が設定可能なパラメータに書き込まれた値。ユーザーはドライブにこの値を設定する必要があります。オプションパラメータ

CTRL8

Input

WORD

I、Q、M、D、L、 コントロールワード 8 - ドライブ上でユーザーまたは定数が設定可能なパラメータに書き込まれた値。ユーザーはドライブにこの値を設定する必要があります。オプションパラメータ

NDR

Output

BOOL

I、Q、M、D、L

新規データ準備完了 - このパラメータの値がTRUE の場合、このビットは出力に新規通信要
求からのデータが含まれることを示します。

ERROR

Output

BOOL

I、Q、M、D、L

エラー発生 - このパラメータの値が TRUE の場
合、エラーが発生し、STATUS 出力は有効であることを示します。他のすべて出力はエラーにゼロがセットされます。通信エラーは、「USS_PORT」命令の ERROR と STATUS 出力でのみ報告されます。

STATUS (ペOutput

WORD

I、Q、M、D、L

ージ 3645)

要求のステータス値。サイクルの結果を示します。これはドライブから返されるステータスワ
ードではありません。

RUN_EN

Output

BOOL

I、Q、M、D、L実行が有効 - このビットは、ドライブが実行中かどうかを示します。

3638

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

説明

D_DIR

Output

BOOL

I、Q、M、D、L

ドライブ方向 - このビットは、ドライブが前転の実行中かどうかを示します。

INHIBIT

Output

BOOL

I、Q、M、D、L

ドライブ禁止 - このビットはドライブでの禁止
ビットの状態を示します。

FAULT

Output

BOOL

I、Q、M、D、L

ドライブ故障 - このビットはドライブが故障を登録したことを示します。故障を除去し、
F_ACK ビットをセットして、このビットを消
去します。

SPEED

OutputREAL

I、Q、M、D、L

現在のドライブ速度(ドライブステータスワー
ド 2 のスケールされた値) - 設定された速度のパーセンテージとして表されるドライブの速度値。

STATUS1

Output

WORD

I、Q、M、D、L

ドライブステータスワード 1 - この値には、ドライブの固定ステータスビットが含まれます。

STATUS3

Output

WORD

I、Q、M、D、L

ドライブステータスワード 3 - この値には、ドライブ上でユーザーが設定可能なステータスワードが含まれます。

STATUS4

Output

WORD

I、Q、M、D、L

ドライブステータスワード 4 - この値には、ドライブ上でユーザーが設定可能なステータスワードが含まれます。

STATUS5

Output

WORD

I、Q、M、D、L

ドライブステータスワード 5 - この値には、ドライブ上でユーザーが設定可能なステータスワードが含まれます。

STATUS6

Output

WORD

I、Q、M、D、L

ドライブステータスワード 6 - この値には、ドライブ上でユーザーが設定可能なステータスワードが含まれます。

STATUS7

Output

WORD

I、Q、M、D、L

ドライブステータスワード 7 - この値には、ドライブ上でユーザーが設定可能なステータスワードが含まれます。

STATUS8

Output

WORD

I、Q、M、D、L

ドライブステータスワード 8 - この値には、ドライブ上でユーザーが設定可能なステータスワードが含まれます。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3639

通信
6.5 通信プロセッサ

6.5.7.5

USS_RPM: ドライブからパラメータの読み出し
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「USS_RPM」命令はドライブからパラメータを読み出します。1 つの USS ネットワークと 1
つの PtP 通信モジュールに割り当てられるすべての USS ファンクションは同じデータブロ
ックを使用する必要があります。「USS_RPM」は、メインプログラム OB から呼び出す必要があります。

パラメータ
次の表に、「USS_RPM」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L

要求の送信:このパラメータの値が TRUE の場
合、新規の読み出し要求が求められていることを示します。このパラメータの要求がすでに保留中であれば、これは無視されます。

DRIVE

Input

USINT

I、Q、M、D、L、 ドライブアドレス:この入力は USS ドライブのまたは定数アドレスです。有効な範囲はドライブ 1 からドライブ 16 です。

PARAM

Input

UINT

I、Q、M、D、L、 パラメータ番号この入力は、書き込まれるドラ
または定数

イブパラメータを指定します。このパラメータの範囲は、0 ～ 2047 です。この範囲を超える
パラメータにアクセスする方法の詳細は、ユー
ザーのドライブのマニュアルを参照してくださ
い。

3640

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

INDEX

Input

UINT

I、Q、M、D、L、 パラメータインデックス:この入力は、書き込
または定数

説明

まれるドライブパラメータインデックスを指定します。これは 16 ビットの値で、最下位ビッ
トは範囲(0～255)の実際のインデックス値です。最上位ビットもドライブによって使用されることがあり、ドライブ固有です。追加情報については、ドライブマニュアルを参照してください。

USS_DBInOut

USS_BASE D「USS_DRIVE」命令がプログラムに挿入される時に作成され、初期化されるインスタンス DB
への参照。

DONE

Output

BOOL

I、Q、M、D、L

このパラメータの値が TRUE の場合、VALUE
出力は以前に要求した読み出しパラメータ値を保持することを示します。
「USS_DRIVE」命令がドライブからの読み出し応答を認識する時に、このビットがセットされます。
次のいずれかの場合、このビットはリセットされます。
• 別の「USS_RPM」ポーリングを経由して応答データを要求する場合
または• 「USS_DRIVE (ページ 3635)」の次の 2 つの呼び出しの 2 番目の呼び出しが実行された
場合

ERROR

Output

BOOL

I、Q、M、D、L

エラー発生 - このパラメータの値が TRUE の場
合、エラーが発生し、STATUS 出力は有効であることを示します。他のすべて出力はエラーにゼロがセットされます。通信エラーは、「USS_PORT (ページ 3634)」命令の ERROR とSTATUS 出力でのみ報告されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3641

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

説明

STATUS (ペOutput

WORD

I、Q、M、D、L

これは、要求のステータス値です。読み出し要

ージ 3645)

求の結果を示します。一部のステータスコードの追加情報については、「USS_Extended_Error(ページ 3645)」タグを参照してください。

VALUE

Output

VARIANT

I、Q、M、D、L

これは読み出されたパラメータの値であり、DONE ビットの値が TRUE の場合のみ有効です。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

6.5.7.6

USS_WPM: ドライブのパラメータ変更
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「USS_WPM」命令はドライブのパラメータを変更します。1 つの USS ネットワークと 1 つの PtP 通信モジュールに割り当てられるすべての USS ファンクションは同じデータブロッ
クを使用する必要があります。「USS_WPM」は、メインプログラム OB から呼び出す必要があります。
注記
EEPROM 書き込み操作
EEPROM 書き込み操作の乱用に気をつけてください。EEPROM 書き込み操作数を最小限に抑え、EEPROM 寿命を延長します。

3642

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサパラメータ
次の表に、「USS_WPM」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L 要求の送信:このパラメータの値が TRUE の場
合、新規の書き込み要求が求められていることを示します。このパラメータの要求がすでに保留中であれば、これは無視されます。

DRIVE

Input

USINT

I、Q、M、D、

ドライブアドレス:この入力は USS ドライブのアL、または定数

ドレスです。有効な範囲はドライブ 1 からドラ
イブ 16 です。

PARAM

Input

UINT

I、Q、M、D、

パラメータ番号この入力は、書き込まれるドラ

L、または定数

イブパラメータを指定します。このパラメータの範囲は、0 ～ 2047 です。この範囲を超えるパラメータにアクセスする方法の詳細は、ユーザーのドライブのマニュアルを参照してください。

INDEX

Input

UINT

I、Q、M、D、

パラメータインデックス:この入力は、書き込ま

L、または定数れるドライブパラメータインデックスを指定します。これは 16 ビットの値で、最下位ビットは範囲(0～255)の実際のインデックス値です。最上位ビットもドライブによって使用されることがあり、ドライブ固有です。追加情報について
は、ドライブマニュアルを参照してください。

EEPROM

Input

BOOL

I、Q、M、D、ドライブ EEPROM への保存:このパラメータの値

L、または定数が TRUE の場合、ドライブパラメータに書き込まれた値はドライブ EEPROM に保存されます。このパラメータの値が FALSE の場合、書き込まれた値のみが一時的に保存され、ドライブが次にオンになった時に失われます。

VALUE
USS_DB

Input
InOut

VARIANT

I、Q、M、D、書き込まれるパラメータの値。REQ の移行時にL、または定数

有効でなければなりません。

USS_BASE D

これは、「USS_DRIVE (ページ 3635)」命令がプ
ログラムに挿入される時に作成され、初期化されるインスタンス DB への参照です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3643

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

説明

DONE

Output

BOOL

I、Q、M、D、L このパラメータの値が TRUE の場合、VALUE 入
力がドライブに書き込まれました。
「USS_DRIVE (ページ 3635)」命令がドライブからの書き込み応答を認識する時に、このビットがセットされます。
次のいずれかの場合、このビットはリセットされます。
別の「USS_WPM」クエリを使用して書き込み操作が完了しているか、または「USS_DRIVE (ページ 3635)」の次の 2 つの呼び出しの 2 番目の呼び出しが実行された時に、ドライブの確認が必要になります。

ERROR

Output

BOOL

I、Q、M、D、L エラー発生:このパラメータの値が TRUE の場
合、エラーが発生し、STATUS 出力は有効である
ことを示します。他のすべて出力はエラーにゼロがセットされます。通信エラーは、「USS_PORT (ページ 3634)」命令の ERROR とSTATUS 出力でのみ報告されます。

STATUS (ページ 3645)

Output

WORD

I、Q、M、D、L これは、要求のステータス値です。書き込み要求の結果を示します。一部のステータスコードの追
加情報については、「USS_Extended_Error (ページ 3645)」タグを参照してください。

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

3644

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.7.7

USS 命令のパラメータ STATUS

STATUS パラメータ
次の表は、USS 命令の STATUS 出力で出力される USS 操作のステータスコードを示しています。
STATUS*(W#16#....)

説明

0000

エラーは発生していません。

8180

ドライブ応答の長さは、ドライブから受信された文字に一致していません。 エラーが発生したドライブ番号が「USS_Extended_Error」タグに返されます。 この表の下の詳細なエラー説
明を参照してください。

8181

パラメータ VALUE は、データタイプ WORD、REAL または DWORD ではありません。

8182

ユーザーはタイプワードのパラメータ値を提供し、応答でドライブから DWORD または REAL
を受信しました。

8183

ユーザーはタイプ DWORD または REAL のパラメータ値を提供し、応答でドライブからワードを受信しました。

8184

ドライブからの応答テレグラムに不正なチェックサムがありました。 エラーが発生したドラ
イブ番号が「USS_Extended_Error」タグに返されます。 この表の下の詳細なエラー説明を参照してください。

8185

無効なドライブアドレス(有効なドライブアドレス範囲: 1-16)8186

速度のセットポイントが有効な範囲外(有効な速度 SP 範囲: -200%～200%)

8187

送信された要求に対応していたドライブ番号が誤りでした。 エラーが発生したドライブ番号が「USS_Extended_Error」タグに返されます。 この表の下の詳細なエラー説明を参照してくだ
さい。

8188

無効な PZD ワード長さを指定しました(有効な範囲= 2、4、6 または 8 ワード)

8189

無効なボーレートを指定しました。

818A

パラメータ要求チャンネルはこのドライブの別の要求によって使用されています。

818B

ドライブが要求と再試行に対応していませんでした。 エラーが発生したドライブ番号が「USS_Extended_Error」タグに返されます。 この表の下の詳細なエラー説明を参照してくだ
さい。

818C

ドライブはパラメータ要求操作で拡張エラーを返しました。 この表の下の詳細なエラー説明を参照してください。

818D

ドライブは、パラメータ要求操作で無効なアクセスエラーを返しました。 パラメータアクセ
スが制限される理由については、ドライブマニュアルを参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3645

通信
6.5 通信プロセッサSTATUS*(W#16#....)

説明

818E

ドライブは初期化されませんでした: 「USS_DRIVE (ページ 3635)」命令がこのドライブに対して少なくとも 1 回呼び出されなかった場合、このエラーコードは「USS_RPM (ページ 3640)」
または「USS_WPM (ページ 3642)」に出力されます。 これによって、「USS_DRIVE (ページ 3635)」の最初のサイクルの初期設定が保持され、新規のエントリとしてドライブを初期化して以降、保留中のパラメータ読み出し要求または書き込み要求が上書きされません。 エラーを除去するには、このドライブの「USS_DRIVE (ページ 3635)」命令を呼び出します。

80Ax-80Fx

特定のエラーは、USS ライブラリによって呼び出された PtP(ポイントツーポイント)通信命令
から返されました。 これらのエラーコード値は USS ライブラリでは変更されず、PtP 命令の記述に定義されます。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。 表示形式の切り替えに関する追加情報は、「関連項目」を参照してください。

USS_Extended_Error - USS ドライブはエラーコードを拡張しました。
USS ドライブはドライブの内部パラメータへの読み出しアクセスと書き込みアクセスをサポートしています。 この機能によって、ドライブの構成やコントロールを分散できます。
ドライブパラメータアクセス操作は失敗しますが、値が範囲外またはドライブの現在のモードでの無効な要求などのエラーのためです。 ドライブは「USS_DRIVE (ページ 3635)」命
令のインスタンス DB 内の「USS_Extended_Error」変数内に出力されるエラーコードを生成します。 このエラーコード値は、「USS_RPM (ページ 3640)」または「USS_WPM (ページ 3642)」命令の最終実行にのみ有効です。 ドライブエラーコードは、STATUS の値が 16
進数 818C の場合、「USS_Extended_Error」タグに置かれます。 「USS_Extended_Error」のエラーコードは、ドライブの種類によって異なります。 読み出しと書き込みパラメータ
操作の拡張エラーコードの説明については、ドライブのマニュアルを参照してください。

3646

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

6.5.8

MODBUS (RTU)

6.5.8.1

MB_COMM_LOAD: MODBUS RTU の PtP モジュールの設定ポート
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「MB_COMM_LOAD」命令は、MODBUS RTU プロトコルを使った通信のためのポートを設定します。次のハードウェアをこの操作に使用できます。
• 最大 3 つのポイントツーポイントモジュール(PtP) CM 1241 RS485 または CM 1241
RS232
• これに追加される通信ボード CB 1241 RS485
ポートの設定後、「MB_SLAVE」または「MB_MASTER」命令を実行して Modbus 経由で通
信します。

呼び出し
Modbus RTU プロトコル用ポートを設定するには、「MB_COMM_LOAD」を 1 度呼び出す必要があります。設定が完了すると、「MB_MASTER (ページ 3651)」および「MB_SLAVE (ページ 3661)」命令でポートを使用できます。
通信パラメータの 1 つを変更する必要がある場合のみ、「MB_COMM_LOAD」を再度呼び出す必要があります。「MB_COMM_LOAD」を呼び出すたびに、通信バッファが削除されます。通信中のデータの損失を防ぐため、必要のない場合はこの命令は呼び出さないようにしてください。
「MB_COMM_LOAD」の 1 つのインスタンスを使って、MODBUS 通信に使用される各通信モジュールのポートを設定する必要があります。使用する各ポートに、一意の「MB_COMM_LOAD」インスタンスデータブロックを割り当てます。S7-1200 CPU は、3 つの通信モジュールに限られます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3647

通信
6.5 通信プロセッサ「MB_MASTER (ページ 3651)」または「MB_SLAVE (ページ 3661)」命令を挿入すると、インスタンスデータブロックが割り当てられます。MB_DB パラメータを「MB_COMM_LOAD」命令に指定すると、このインスタンスデータブロックが参照されま
す。

パラメータ
次の表に、
「MB_COMM_LOAD」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、L

信号立ち上がりエッジでの命令の実行。

PORT

Input

PORT

I、Q、M、D、L、 通信ポートの ID:
または定数

通信モジュールをデバイス構成に挿入した
後、PORT ボックス接続のドロップダウンリ
ストにポート ID が表示されます。この定数は、タグテーブルの「定数」タブでも参照で
きます。

BAUD

Input

UDINT

I、Q、M、D、L、 ボーレートの選択:
または定数300, 600, 1200, 2400, 4800, 9600, 19200,
38400, 57600, 76800, 115200
その他すべての値は無効です。

PARITY

Input

UINT

I、Q、M、D、L、 パリティの選択:
または定数• 0 – なし
• 1 – 奇数• 2 – 偶数

FLOW_CTRL

Input

UINT

I、Q、M、D、L、 フロー制御の選択:または定数• 0 – (デフォルト)フロー制御なし• 1 – RTS が常にオンのハードウェアフロー
制御(RS485 ポートには適用されません)• 2 - RTS 切り替えのハードウェアフロー制
御3648

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

RTS_ON_DLY

Input

UINT

I、Q、M、D、L、 RTS オンディレーの選択:
または定数

説明

• 0 – (デフォルト) メッセージの最初の文字が転送されるまで RTS の有効な遅延なし。
• 1 ～ 65535 – メッセージの最初の文字が転送されるまでの「RTS が有効」の遅延(ミリ秒単位) (RS-485 ポートには適用されません)。RTS 遅延は、FLOW_CTRL の選択に応じて使用する必要があります。

RTS_OFF_DLY

Input

UINT

I、Q、M、D、L、 RTS オフ遅延の選択:
または定数• 0 – (デフォルト)最後の文字が送信されてから「RTS 無効」までの遅延なし。
• 1 ～ 65535 – 最後の文字が転送されてか
ら「RTS が無効」までの遅延(ミリ秒単位) (RS-485 ポートには適用されません)。RTS 遅延は、FLOW_CTRL の選択とは関わりなく、使用する必要があります。

RESP_TO

Input

UINT

I、Q、M、D、L、 応答タイムアウト:
または定数「MB_MASTER (ページ 3651)」がスレーブが応答するまで許容するミリ秒単位の時間。ス
レーブがこの時間内に応答しない場合、「MB_MASTER (ページ 3651)」が要求を繰り返すか、指定された数の再試行が既に送信された場合はエラーで要求を終了します。
5 ミリ秒～65535 ミリ秒(デフォルト= 1000
ミリ秒)。

MB_DB

Input

MB_BASED「MB_MASTER (ページ 3651)」または「MB_SLAVE (ページ 3661)」命令のインスタンスデータブロックの参照。使用しているプ
ログラムに「MB_SLAVE (ページ 3661)」または「MB_MASTER (ページ 3651)」を挿入した後、MB_DB ボックス接続のドロップダ
ウンリストに DB 識別子が表示されます。

DONE

OutputBOOL

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

I、Q、M、D、L

命令の実行がエラーなしで完了しました。

3649

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

説明

ERROR

Output

BOOL

I、Q、M、D、L

エラー:• 0 – エラーが検出されませんでした。
• 1 – エラーが検出されたことを示します。
STATUS パラメータでエラーコードが出力されました。

STATUS

Output

WORD

I、Q、M、D、L

ポートの構成エラーコード

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
エラーコード* 説明(W#16#...)
0000

エラーなし

8180

ポート ID の無効な値(通信モジュールの誤ったアドレス)。

8181

無効なボーレート値。

8182

無効なパリティ値。

8183

無効なフロー制御値。

8184

応答のタイムアウトの無効な値(タイムアウトがレポートされるまでの時間は少なくとも 25
ミリ秒必要です)。

8185

MB_DB パラメータの「MB_MASTER (ページ 3651)」または「MB_SLAVE (ページ 3661)」命
令のインスタンス DB への不正なポインタ。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

3650

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

MB_COMM_LOAD データブロックタグ
以下の表に、プログラムで使用できる MB_COMM_LOAD のインスタンス DB 内の公開静的タグを示します。
表 6-62

インスタンス DB の静的タグ

タグ

データ
タイプ

既定

説明

ICHAR_GAP

WORD

0

文字間の文字間隔の遅延。このパラメータはミリ秒単位で指定され、受信文字間の予想時間を大きくするために使用されます。このパラメータに対応するビット時間数が、Modbus 標準値の 35 ビット時間(3.5 文字時間)に追加されます。

RETRIES

WORD

2「応答なし」のエラーコード 0x80C8 が返されるまでのマスタによる試行の繰り返し回数。

STOP_BITS

USINT

1

文字有効値 1 および 2 あたりのストップビット数

6.5.8.2

MB_MASTER: PtP ポート経由で Modbus マスタとして通信

MB_MASTER の説明
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「MB_MASTER」命令によって、ポイントツーポイントモジュール(CM)または通信ボード(CB)を使って、使用しているプログラムが Modbus マスタとして通信できます。1 つ以上のModbus スレーブデバイスのデータにアクセスすることができます。
「MB_MASTER」命令がポートで通信できるためには、まず「MB_COMM_LOAD (ページ 3647)」を実行する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3651

通信
6.5 通信プロセッサ使用しているプログラムに「MB_MASTER」命令を挿入すると、インスタンス DB が作成されます。このインスタンス DB は、「MB_COMM_LOAD (ページ 3647)」命令の MB_DB 入力
パラメータで指定します。

Modbus マスタ通信のルール• Modbus マスタ要求で使用するポートは、「MB_SLAVE」には使用できません。
• 同じインスタンス DB を使用している場合、1 つのポートを 1 つ以上の「MB_MASTER」
呼び出しに使用することができます。
• Modbus 命令は、通信プロセスを制御するために、通信割り込みイベントを使用しません。使用しているプログラムが完了した送信および受信操作の「MB_MASTER」命令をポーリングする必要があります。
• 命令の呼び出し:– サイクリックプログラム OB で可能な場合、「MB_MASTER」命令を呼び出します。
この命令は、遅延またはサイクリック割り込み OB でのみ呼び出すことができます。
– 異なる優先度クラスのオーガニゼーションブロックで複数の「MB_MASTER」命令を呼び出さないでください。「MB_MASTER」命令がより高い優先度クラスから「先行して」呼び出された場合、この命令は不正に実行される場合があります。
– 「MB_MASTER」命令は、スタートアップ、診断または時刻エラー OB で呼び出さな
いでください。
• 転送が開始された後、命令によって DONE または ERROR 出力パラメータが「1」にセットされるまで、EN パラメータ(LAD/FBD)が値「1」にセットされた状態であることが必要です。命令の実行中に REQ パラメータによる新たな呼び出しを行うと、エラーの原因になります。命令の実行後、REQ パラメータのビットがインスタンス DB のBLOCKED_PROC_TIMEOUT パラメータで指定された時間に設定された状態が継続します。
• 「MB_MASTER」がスレーブに要求を送信する場合、スレーブからの応答が届くまで「MB_MASTER」の実行が継続するようにしてください。

3652

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサパラメータ
次の表に、「MB_MASTER」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

REQ (ペー

Input

BOOL

I、Q、M、D、L 要求入力:

ジ 3656)

説明• 0 – 要求なし
• 1 – Modbus スレーブへのデータ転送の要求

MB_ADDR

Input

UINT

I、Q、M、D、

MODBUS RTU ステーションアドレス:

L、または定数• デフォルトのアドレス範囲:0～247• 拡張されたアドレス範囲:0～65535
値「0」は、すべての Modbus スレーブへのメッ
セージのブロードキャスト用に予約されています。MODBUS ファンクションコード 05、06、
15、および 16 のみが、ブロードキャストでサポートされるファンクションコードです。

MODE (ペー Input

USINT

ジ 3656)

I、Q、M、D、モードの選択:要求のタイプを指定します:読み出

L、または定数

し、書き込み、または診断:
詳細については、MODBUS ファンクションテー
ブルを参照してください。

DATA_ADDR Input

UDINT

(ペー

I、Q、M、D、スレーブの開始アドレス:Modbus スレーブでア

L、または定数クセスするデータの開始アドレスを指定します。

ジ 3656)

有効なアドレスについては、MODBUS ファンク
ションテーブルを参照してください。

DATA_LEN

Input

UINT

I、Q、M、D、

データ長:この要求でアクセスするビットまたは

L、または定数

ワードの数を指定します。有効な長さについて
は、MODBUS ファンクションテーブルを参照してください。

DATA_PTR

Input

VARIANT

M、D

読み出す、または書き込むデータの DB または(ペー

CPU のビットメモリアドレスをポイントしま

ジ 3658)す。DB の場合、これは「標準 (S7-300/400 との互換性あり)」アクセスタイプで作成する必要が
あります。

DONE

Output

BOOL

I、Q、M、D、L • 0:トランザクションが未完了• 1:トランザクションがエラーなしで完了

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3653

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

メモリ領域

説明

BUSY

Output

BOOL

I、Q、M、D、L • 0:進行中の「MB_MASTER」トランザクショ
ンなし• 1: 「MB_MASTER」トランザクションが進行
中

ERROR

Output

BOOL

I、Q、M、D、L • 0:エラーなし• 1:エラー、エラーコードは STATUS パラメー
タで示されます。

STATUS

Output

WORD

I、Q、M、D、L 実行条件コード

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

STATUS パラメータ
表 6-63命令の通信および構成エラーメッセージ

エラーコード* 説明(W#16#....)
0000

エラーなし

80C8

スレーブタイムアウトスレーブのボーレート、パリティおよびコネクタをチェックしてく
ださい。

80D1

受信元が有効な転送を保留するためにフロー制御要求を発行し、転送は待機時間内に再度有効にはなりません。
受信元が待機時間内に CTS を検出しない場合、このエラーはハードウェアフロー制御中にも生成されます。

80D2

DCE から DSR シグナルが受信されなかったため、送信要求が中止されました。

80E0

受信バッファが不足しているため、メッセージが終了しました。

80E1

パリティエラーの結果、メッセージが終了しました。

80E2

フレームエラーの結果、メッセージが終了しました。

80E3

オーバーランエラーの結果、メッセージが終了しました。

80E4指定された長さが合計バッファサイズを超えた結果、メッセージが終了しました。

8180

ポート ID の無効な値。

8186

無効な MODBUS ステーションアドレス

8188

MODE パラメータが無効な値がブロードキャスト呼び出しの不正な値を持ちます。

3654

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
エラーコード* 説明(W#16#....)
8189

無効なデータアドレス値。

818A

無効なデータ長の値。

818B

ローカルデータソース/宛先への無効なポインタ:サイズが不正

818C

DATA_PTR パラメータに不正なポインタがあります。ビットメモリエリアへのポインタまたは「標準 (S7-300/400 との互換性あり)」アクセスタイプの DB を使用します。

8200

リクエストの送信の処理でポートが使用中*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

表 6-64

MODBUS プロトコルのエラーメッセージ

エラーコード* スレーブの応答 説明
コード(W#16#....)
8380-

CRC エラー

8381

01

ファンクションコードがサポートされていません。

8382

03

データ長エラー

8383

02

データアドレスのエラー、またはアドレスが DATA_PTR の有効範囲外

8384

> 03

データ値エラー

8385

03

データ診断コード値がサポートされていません(ファンクションコード
08)

8386

-

応答のファンクションコードが、クエリのファンクションコードと一致
しません。

8387

-

不正なスレーブからの応答

8388

-

スレーブの書き込み呼び出しに対する応答が不正です。スレーブによって送信されたデータが、マスターからのクエリと一致しません。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3655

通信
6.5 通信プロセッサ

パラメータ REQ

説明
• REQ = FALSE: 要求なし
• REQ = TRUE: データの Modbus スレーブへの転送の要求
レベル制御接点またはエッジ制御接点によって、この入力を制御できます。
同一のインスタンス DB を使用する別の命令「MB_MASTER」が、現在の要求が処理されたときのみ、要求を出すことができるようにするために、この入力が有効にされるたびに、
状態マシンが開始されます。 応答が受信されるか、エラーが検出されるまで、現在の要求の他のすべての入力状態が記録され、内部に保存されます。
現在の要求が完全に処理される前に、「MB_MASTER」の同一のインスタンスが REQ 入力= 1 で再び実行されると、それ以降の転送は行われません。 ただし、要求の処理が終了した
場合は、「MB_MASTER」が REQ 入力 = 1 で再び実行されるときに、新しい要求が出されます。

DATA_ADDR および MODE パラメータ

説明
DATA_ADDR パラメータを使って、Modbus スレーブのデータアクセスの開始アドレスを指定します。
MODE パラメータと MODBUS アドレスを使って、Modbus スレーブに転送されるファン
クションコードを指定します。 次の表は、MODE パラメータ、ファンクションコードお
よび MODBUS アドレス範囲の関係を示します。
MODE

MODBUS
ファンク
ション

データ長

操作およびデータ

MODBUS アドレス

001

1～2000

出力ビットの読み出し:

1～99991～1992 (1)

照会あたり 1～(1992 または 2000)ビット

1～2000

入力ビットの読み出し:

1～1992 (1)

照会あたり 1～(1992 または 2000)ビット

1～125

保持レジスタの読み出し:

40001～49999 ま

照会あたり 1～(124 または 125) WORD

たは

0
0

02
03

1～124

(1)

10001～19999

400001～465535

3656

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
MODE

MODBUS
ファンク
ション

データ長

操作およびデータ

MODBUS アドレス

0

04

1～125

入力 WORD の読み出し:

30001～39999

1～124 (1)

照会あたり 1～(124 または 125) WORD

1

出力ビットの書き込み:

105

1～9999照会あたり 1 ビット
1

06

1

保持レジスタの書き込み:

40001～49999 ま

1 照会あたり WORD

たは
400001～465535

1152～19682～19601

16

複数の出力ビットの書き込み(1)

1～9999照会あたり 2～(1960 または 1968)ビット

2～123

複数の保持レジスタの書き込み:

40001～49999 ま2～122 (1)

照会あたり 2～(122 または 123) WORD

たは
400001～465535

2
2

15
16

1～1968

1 つ以上の出力ビットの書き込み:

1～99992～1960 (1)

照会あたり 1～(1960 または 1968)ビット

1～123

1 つ以上の保持レジスタの書き込み:

40001～49999 ま2～122 (1)

照会あたり 1～(122 または 123) WORD

たは
400001～465535

11

11

0

スレーブおよびイベントカウンタの通信ステ ータスワードの読み出し:
ステータスワードは、命令の実行を示します(0: 実行されていない、0xFFFF: 実行中)。 イ
ベントカウンタは、メッセージの転送が成功するたびに繰り上げられます。
「MB_MASTER」命令の DATA_ADDR および
DATA_LEN パラメータは、このファンクショ
ンでは無視されます。

80

08

1

エラーコード(0x0000)の読み出しによるスレ ーブステータスをチェック:
1 照会あたり WORD

81

08

1

診断コード 0x000A によるスレーブのイベン トカウンタのリセット:
1 照会あたり WORD

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3657

通信
6.5 通信プロセッサ
MODE

MODBUS
ファンク
ション

データ長

3～10、

操作およびデータ

MODBUS アドレス

予備-

12～79、
82～2555(1)「拡張アドレス範囲」の場合、ファンクションに使用しているデータタイプによって最大データ長は 1 バ

イトまたは 1 WORD 減少します。

パラメータ DATA_PTR

説明
DATA_PTR パラメータは、データを読み書きするデータブロックまたはビットメモリへのポインタです。 データブロックを使用する場合、「標準 (S7-300/400 との互換性あり)」アクセスタイプのグローバルデータブロックを作成します。

DATA_PTR パラメータのデータブロック構造体• これらのデータタイプは、MODBUS アドレス 30001～39999、40001～49999、および 400001～465536 のワードの読み出しに、また MODBUS アドレス 40001～49999
および 400001～465536 のワードの書き込みに有効です。
– WORD、UINT、または INT データタイプの標準配列(以下参照)。
– 各エレメントが一意の名前と 16 ビットのデータタイプを持つ、名前を付けられた
WORD、UINT、または INT 構造体。
– 各エレメントが一意の名前と 16 ビットまたは 32 ビットのデータタイプを持つ、名前を付けられた複雑な構造体。
• MODBUS アドレス 00001～09999 および 10001～19999 のビットの読み出しおよび書
き込み。
– Bool データタイプの標準配列。
– 一意の名前が付けられた Bool 変数の名前が付けられた Bool 構造体。

3658

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ• 必須ではないものの、各「MB_MASTER」命令が、グローバルデータブロック内に独自に独立したメモリ領域を持つようにすることを推奨します。 この推奨の理由は、複数の「MB_MASTER」命令がグローバルデータブロックの同じ領域で読み書きをするとデータが破損される可能性が高くなるからです。
• DATA_PTR のメモリ領域が、同じグローバルデータブロックにある必要はありません。
MODBUS 読み出し操作用に複数のエリアを持つ 1 つのデータブロック、MODBUS 書き
込み操作用に 1 つのデータブロック、または各スレーブステーションに 1 つのデータブロックを作成することができます。

「MB_MASTER」命令のインスタンス DB
インスタンス DB の静的変数
次の表は、ユーザープログラムで使用できる命令のインスタンス DB の静的変数を説明し
ます。
変数

データタ
イプ

説明

MB_STATEUINTMODBUS 命令の内部ステータス

BLOCKED_

REAL

命令呼び出しの完了からインスタンス DB の ACTIVE ビット

PROC_TIMEOUTのリセットまでの時間。 タイムバッファを使って、ジョブが完全に送信される前に命令の実行が終了されるのを防ぎます。 デフォルトの時間は 500 ミリ秒です。

EXTENDED_
ADDRESSING

BOOL

アドレス指定の設定:• 0: デフォルトのアドレス領域(1 バイト)
• 1: 拡張アドレス領域(2 バイト)
追加情報については、セクション「EXTENDED_ADDRESSING」を参照してください。 「MB_SLAVE」命令のインスタンス DB (ページ 3667)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3659

通信
6.5 通信プロセッサ

Modbus マスタのサンプルプログラム

ネットワーク(LAD)
ネットワーク 1: 最初の周期中に RS-485 モジュールのパラメータを 1 回のみ初期化します。

ネットワーク 2: スレーブの保持レジスタから 100 ワード読み出します。

ネットワーク 3: これは、読み出し操作が実行されてからすぐに最初の 3 ワードの値を表示
するオプションのネットワークです。

3660

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
ネットワーク 4: スレーブアドレス Q2.0 から開始して、64 ビットをプロセス画面出力に書き込みます。

6.5.8.3

MB_SLAVE: Modbus スレーブとして PtP ポート経由の通信

MB_SLAVE の説明
注記
CM1241 との併用
この命令と CM1241 の併用は、ファームウェアバージョン V2.1 以降のモジュールの場合のみ可能です。

説明「MB_SLAVE」命令によって、ポイントツーポイントモジュール(PtP)または通信ボード(CB)を使って、使用しているプログラムが Modbus スレーブとして通信できます。MODBUS
RTU マスタは要求を発行でき、その後、「MB_SLAVE」の実行によって使用しているプログ
ラムが応答します。
「MB_SLAVE」命令を使用しているプログラムに挿入する場合は、一意のインスタンスデータブロックを割り当てる必要があります。このインスタンスデータブロックは、これを「MB_COMM_LOAD (ページ 3647)」命令の MB_DB パラメータで指定する場合に使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3661

通信
6.5 通信プロセッサ
MODBUS 通信ファンクションコード(1、2、4、5、および 15)は、ターゲットシステムのプロセスイメージ入力およびプロセスイメージ出力でビットとワードの読み書きができます。次の表は、MODBUS アドレスの CPU のプロセスイメージへのマッピングを示します。
「MB_SLAVE」の MODBUS ファンクション
コード

ファンクショ

データ領域

アドレス範囲出力

1

S7-1200
データ領域

CPU アドレスン
01

ビットの読み

～

8192

出し
02

力

ビットの読み入力

ワードの読み

入力

～

3000

～

1

出し
05

1000
1

出し
04

ビットの書き

出力

1

～

1819

プロセスイメージ入 I0.0～I1023.7

2

力

3051

プロセスイメージ入 IW0～IW1022

2

力

8192

プロセスイメージ出 Q0.0～Q1023.7

込み
15

力

ビットの書き込み

プロセスイメージ出 Q0.0～Q1023.7

出力

1

～

8192

プロセスイメージ出 Q0.0～Q1023.7
力

MODBUS 通信ファンクションコード(ファンクションコード 3、6、16)は個別の保持レジ
スタを使用します。これを行うには、「標準 (S7-300/400 との互換性あり)」アクセスタイ
プのビットメモリまたはデータブロックを使用することができます。

3662

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
MB_SLAVE 命令の MB_HOLD_REG パラメータを使用して保持レジスタのタイプを指定します。次の表は、MODBUS 保持レジスタからターゲットシステムの MB_HOLD_REG の DB ア
ドレスへのマッピングを示します。
「MB_SLAVE」の MODBUS ファンクション
コー

ファンクション データ領域

ド

S7-1200

アドレス範囲DB のアドレス

ビットメモリアド(WORD 番号)(BYTE 番号)レス
(BYTE 番号)03

06

ワードの読み出 保持レジス

40001～49999 また DW0～DW19998 また MW0～CPU 制限値

し

は

は

400001～465535

DW0～DW131068

タ

書き込みワード 保持レジス
タ

16

40001～49999 また DW0～DW19998 またはは400001～465535

DW0～DW131068

ワードの書き込 保持レジス

40001～49999 また DW0～DW19998 また

み

は

は

400001～465535

DW0～DW131068

タ

次の表に、サポートされている MODBUS 診断ファンクションを示します。
S7-1200「MB_SLAVE」MODBUS 診断ファンクション
コード

サブファン

説明

クション
08

0000H

クエリデータエコーの返しテスト:「MB_SLAVE」命令が、受信したデータワードのエコーを Modbus マスタに返します。

08

000AH

通信イベントカウンタのクリア:「MB_SLAVE」命令が、MODBUS ファンクション
11 で使用される通信イベントカウンタをクリアします。

11-

通信イベントカウンタの取得:「MB_SLAVE」命令は、内部通信イベントカウンタを使って、Modbus スレーブに送信された MODBUS の読み出しおよび書き込み要求の成功した数を記録します。いずれのファンクション 8、ファンクション 11、またはブロードキャスト要求でも、カウンタは繰り上げられません。また、結果として通信エラー(たとえば、パリティまたは CRC エラー)になるあらゆる要求でも繰り上げられません。
「MB_SLAVE」命令は、要求に有効なアドレスへのアクセスが含まれる限り、Modbus マス
タからのブロードキャスト書き込み要求をサポートします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3663

通信
6.5 通信プロセッサ要求の有効性に関係なく、「MB_SLAVE」はブロードキャスト要求の結果として Modbus マ
スタに応答しません。

Modbus スレーブ通信のルール• 「MB_SLAVE」命令がこのポートと通信できるようにするには、「MB_COMM_LOAD」を実行してポートを設定する必要があります。
• ポートがスレーブとして Modbus マスタに応答する場合、「MB_MASTER (ページ 3651)」はそのポートを使用できません。特定のポートで使用できるのは、「MB_SLAVE」のインスタンスのみです。
• Modbus 命令は、通信プロセスを制御するために、通信割り込みイベントを使用しません。使用しているプログラムが、完了した送信および受信操作に対して「MB_SLAVE」
命令をポーリングして通信プロセスを制御する必要があります。
• 「MB_SLAVE」命令は、Modbus マスタから着信する要求にタイミング良く応答することができるレートで定期的に実行する必要があります。このため、サイクリックプロ
グラム OB でこの命令を呼び出すことをお奨めします。割り込み OB でこの「MB_SLAVE」命令を呼び出すことも可能ですが、実行までに長い遅延を要する場合があるため、お奨めしません。

「MB_SLAVE」の実行頻度
Modbus マスタからの要求を受信し、必要に応じて応答するため、「MB_SLAVE」命令を定期的に実行する必要があります。「MB_SLAVE」の実行頻度は、Modbus マスタの指定された応答タイムアウト時間によって異なります。これは、次の図で説明されています。

$'5

)&

'$7$

&5&

㉫䷣
ኜኁኽቿኃእ㣑栢ኻኖኜሯ抐≰
栚ⱚ&5& 栢椣 㠖ⷦ⒕$'5ኖዉዙኳሯ抐≰
㉫䷣
拔ㆅ㣑栢

$'5

)&

'$7$

栚ⱚ
&5& 栢椣

応答タイムアウト時間は、Modbus マスタが Modbus スレーブからの応答の開始まで待機する時間です。この時間は、MODBUS プロトコルで定義するのではなく、各 Modbus マ
スタのパラメータで定義します。「MB_SLAVE」の実行の頻度(ある実行と次の実行の間の時間)は、使用している Modbus マスタの専用のパラメータに基づく必要があります。最低3664

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
でも、Modbus マスタの応答タイムアウト時間内に「MB_SLAVE」を 2 回実行してくださ
い。

パラメータ
次の表に、「MB_SLAVE」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

MB_ADDR

Input

V1.0:USIN I、Q、M、D、

Modbus スレーブのステーションアドレス

T

L、または定数(アドレス範囲:0～255)

D

MODBUS 保持レジスタ DB へのポインタ。

V2.0:UINT
MB_HOLD_REG

Input

VARIANT

DB は、「標準 (S7-300/400 との互換性あり)」アクセスタイプで作成する必要があります。
NDR

Output

BOOL

I、Q、M、D、L 新規データの準備完了:• 0:新規データなし• 1:Modbus マスタによって新規のデータが書き込まれたことを示します。

DR

Output

BOOL

I、Q、M、D、L データの読み出し:• 0:データ読み出しなし• 1:Modbus マスタによってデータが読み出されたことを示します。

ERROR

Output

BOOL

I、Q、M、D、L • 0:エラーが検出されませんでした。
• 1:エラー、対応するエラーコードが
STATUS に出力されます。

STATUS

Output

WORD

I、Q、M、D、L エラーコード

有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3665

通信
6.5 通信プロセッサSTATUS パラメータ
STATUS*(W#16#....)

説明

80C8

指定された応答タイムアウト(RCVTIME または MSGTIME を参照)が「0」になっています。

80D1

受信元が有効な転送を保留するためにフロー制御要求を発行し、転送は待機時間内に再度有効にはなりません。
受信元が待機時間内に CTS を検出しない場合、このエラーはハードウェアフロー制御中にも生成されます。

80D2

DCE から DSR シグナルが受信されなかったため、送信要求が中止されました。

80E0

受信バッファが不足しているため、メッセージが終了しました。

80E1

パリティエラーの結果、メッセージが終了しました。

80E2

メッセージフレームエラーの結果、メッセージが終了しました。

80E3

オーバーランエラーの結果、メッセージが終了しました。

80E4指定された長さが合計バッファサイズを超えた結果、メッセージが終了しました。

8180

ポート ID の無効な値。

8186

無効な MODBUS ステーションアドレス

8187

MB_HOLD_REG-DB への無効なポインタ

818C

タイプセーフな DB タイプ MB_HOLD_REG へのポインタ(クラシック DB タイプであることが必要)

応答コードが Modbus マスタに送信された(B#16#...)
8380

応答なし

CRC エラー

8381

01

ファンクションコードがサポートされていない、またはブロードキャ
ストでサポートされていない

8382

03

データ長エラー

8383

02

データアドレスのエラー、またはアドレスが MB_HOLD_REG の有効範
囲外

8384

03

データ値エラー

8385

03

データ診断コード値がサポートされていません(ファンクションコード
08)*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

3666

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ「MB_SLAVE」命令のインスタンス DB
インスタンス DB の静的変数
次の表は、ユーザープログラムで使用できる命令のインスタンス DB の静的変数を説明します。 使用しているプログラムは、HR_Start_Offset および Extended_Addressing 変数に値を書き込み、Modbus スレーブの操作を制御できます。
その他の変数を読み出して、MODBUS ステータスをモニタすることができます。
変数

データタ
イプ

説明

HR_Start_Offset WORDMODBUS 保持レジスタの開始アドレス(デフォルト=「0」)Extended_

アドレス指定の設定:

BOOL

Addressing• 0: デフォルトのアドレス領域(1 バイト)
• 1: 拡張アドレス領域(2 バイト)

Request_Count

WORD

スレーブが受信した照会の合計数

Slave_Message

WORD

この特定のスレーブに送信された照会の数_Count
Bad_CRC_Count WORD

受信した CRC エラー付きのエラーの数

Broadcast_Cou

WORD

受信されたブロードキャスト照会の数

WORD

例外を返す必要のある Modbus 固有のエラーの数

WORD

プロトコルエラーなしでこの特定のスレーブについて受信

nt
Exception_Cou
nt
Success_Count

した要求の数

HR_Start_Offset
40001 または 400001 から開始される MODBUS 保持レジスタのアドレス。これらのアド
レスは、ターゲットシステムメモリの保持レジスタの開始アドレスに対応します。
HR_Start_Offset 変数を使って、異なる開始アドレスに対するオフセットを設定できます。
例: 保持レジスタは、MW 100 から開始され、長さは 100 WORD です。 HR_Start_Offset パ
ラメータのオフセットが 20 の場合、保持レジスタはアドレス 40001 ではなく 40021 から

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3667

通信
6.5 通信プロセッサ
開始されます。40021 および未満および 400119 を超えるそれぞれのアドレスは、アドレ
ス指定エラーの原因になります。
HR_Start_Offset = 0

HR_Start_Offset = 20

MODBUS ワー

S7-1200 バイ

MODBUS ワード

S7-1200 バイト

ドアドレス

トアドレス

アドレス

アドレス

最小値

40001

MW100

40021

MW100

最大

40099

MW198

40119

MW198

Extended_Addressing
Modbus スレーブのアドレス指定をするため、シングルバイト(デフォルトアドレス範囲)またはダブルバイト(拡張アドレス範囲)を設定できます。 拡張アドレス指定を使って、1 つのネットワークで 247 個以上のデバイスをアドレス指定できます。 拡張アドレス指定を使用する場合、最大 64,000 個のアドレスをアドレス指定できます。 次に、MODBUS ファン
クション 1 のフレームを例として示します。
表 6-65

1 バイトのスレーブアドレス(バイト 0)

ファンクショ
ン1

バイト 0

要求

[スレーブ

バイト 1
F コード

バイト 2

バイト 3

開始アドレス

バイト 4

バイト 5

コイルの長さ

アドレス]
[スレーブ

有効な応答

F コード

長さ

0x81

E コード

コイルのデータ

アドレス]
[スレーブ

エラー応答

アドレス]

表 6-662 バイトのスレーブアドレス(バイト 0 およびバイト 1)

バイト 1

バイト 2

要求

[スレーブアドレス]

F コード

有効な応答

[スレーブアドレス]

F コード

長さ

エラー応答

[スレーブアドレス]

0x81

F コード

ファンクショ
ン1

3668

バイト 0

バイト 3

バイト 4

開始アドレス

バイト 5

バイト 6

コイルの長さコイルのデータ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

Modbus スレーブのサンプルプログラム

ネットワーク(LAD)
ネットワーク 1: 最初の周期中に RS-485 モジュールのパラメータを 1 回のみ初期化します。

ネットワーク 2: 各サイクルで Modbus マスタの要求をチェックします。 MW1000 で始まる 100 ワードは、MODBUS 保持レジスタ用に設定されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3669

通信
6.5 通信プロセッサ

6.5.9

MODBUS (TCP)

6.5.9.1

S7-1200 CPU のライブラリバージョン V2.1 および V3.x 用の MODBUS (TCP)

MB_CLIENT: PROFINET を介した Modbus TCP クライアントとしての通信MB_CLIENT の説明

説明「MB_CLIENT」命令は、S7-1200CPU の PROFINET 接続を経由した Modbus TCP クライアン
トとして通信します。 この命令を使用するためにハードウェアモジュールを追加する必要はありません。 「MB_CLIENT」命令を使用し、クライアントとサーバー間の接続を確立
し、リクエストの送信、応答の受信、および Modbus TCP サーバーの制御接続終了を行い
ます。

3670

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサパラメータ
以下の表に、「MB_CLIENT」命令のパラメータを示します。
パラメータ

宣言

データタイ 説明プ

REQ (ペー

Input

BOOL

ジ 3674)

Modbus TCP サーバーとの通信要求
REQ パラメータがレベル制御されます。 すなわち、この入力がセットされている限り(REQ=true)、この命令は通信要求を送信します。
• その他のクライアントのインスタンス DB は、通信要求でブロックされます。
• サーバーが応答するか、またはエラーメッセージが出力されるまで、入力パラメータへの変更は有効になりません。
• Modbus 要求の進行中にパラメータ REQ が再度設定された場合、その後は追加の送信は実行されません。

DISCONNECT (ペ

Input

BOOL

ージ 3674)

このパラメータを使用し、Modbus サーバーへの接続の確
立および終了を制御します。
• 0: 指定された IP アドレスおよびポート番号への通信接続を確立します。
• 1: 通信接続を切断します。 接続終了中は、他のファンクションは実行されません。 正常な接続の終了の後に、値 7003 が STATUS パラメータに出力されます。
接続の確立中に REQ パラメータがセットされた場合、要求が直ちに送信されます。

CONNECT_ID

Input

UINT

接続を識別する一意の ID。 「MB_CLIENT」および「MB_SERVER (ページ 3682)」命令の各インスタンスは、一意の接続 ID に割り当てられる必要があります。

IP_OCTET_1

Input

USINT

1. Modbus TCP サーバーの IP アドレス*のオクテット。

IP_OCTET_2

Input

USINT

2. Modbus TCP サーバーの IP アドレス*のオクテット。

IP_OCTET_3

Input

USINT

3. Modbus TCP サーバーの IP アドレス*のオクテット。

IP_OCTET_4

Input

USINT

4. Modbus TCP サーバーの IP アドレス*のオクテット。

IP_PORT

Input

UINT

TCP/IP プロトコルを使用してクライアントが接続および通信を確立するサーバーの IP ポート番号(既定値: 502).

MB_MODE (ペー

Input

USINT

ジ 3675)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

要求のモード(読み取り、書き込み、または診断)を選択し
ます。

3671

通信
6.5 通信プロセッサ
パラメータ

宣言

データタイ 説明プ

MB_DATA_ADDR

Input

UDINT

(ページ 3675)
DATA_LEN「MB_CLIENT」命令によってアクセスされるデータの開始
アドレス。

Input

UINT

データ長: データアクセス用ビットまたはワードの数「MB_MODE(および MB_DATA_ADDR パラメータ」 - データ
長を参照してください)。

MB_DATA_PTR (ペ InOut

VARIANTージ 3677)

Modbus データレジスタへのポインタ。 このレジスタは、
Modbus サーバーから受信する、または Modbus サーバーに送信するデータ用のバッファです。 ポインタは、グロー
バルデータブロックを標準アクセスで参照する必要があります。
アドレス指定されたビットの数は、8 で割り切れる必要が
あります。

DONE

Out

BOOL

最後のジョブが正常に完了すると、すぐに出力パラメータ
DONE のビットが「1」にセットされます。

BUSY

Out

BOOL

• 0: 進行中の「MB_CLIENT 」ジョブはありません。
• 1: "「MB_ CLIENT 」ジョブが進行中です。

ERROR

Out

BOOL

• 0: エラーは発生していません。
• 1: エラーが発生しました。 エラーの原因は、STATUS パ
ラメータによって識別されます。

STATUS (ペー

Out

WORD

命令のエラーコード。

ジ 3678)* Mdbus TCP サーバーの 32 ビット IPv4 IP アドレスの 8 ビット長コンポーネント。
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記「MB_CLIENT」呼び出し中の一貫した入力データ。
Modbus クライアントが Modbus 命令を呼び出す際に、入力パラメータのステータスが内部的に保存され、次回の呼び出し時に比較されます。 この比較は、その特定の呼び出しが現在の要求を初期化したかどうかを判定するために使用されます。 共通のインスタンス DB
を使用している場合、複数の「MB_CLIENT」呼び出しを実行できます。 「MB_CLIENT」インスタンスの実行中は、入力パラメータの値を変更してはなりません。 実行中に入力パラメータが変更されると、インスタンスを現在実行中か否かのチェックに「MB_CLIENT」
を使用できなくなります。

3672

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

複数クライアントの接続
Modbus TCP クライアントは複数の TCP 接続をサポートしています。接続の最大数は、使用している CPU によって異なります。 Modbus TCP クライアントおよびサーバーの接続を含
む 1 つの CPU の接続合計数は、サポートされている接続の最大数を超えてはなりません。
Modbus TCP 接続は、クライアント、またはサーバー、またはその両方の接続で共有することが可能です。
個別のクライアント接続では、以下のルールに注意してください。
• 各「MB_CLIENT」接続は、固有のインスタンス DB を使用する必要があります。
• 各「MB_CLIENT」接続では、固有のサーバー IP アドレスが指定されている必要があります。
• 各「MB_CLIENT」接続は、固有の接続 ID を必要とします。
命令の各インスタンス DB に対しては、関連する個別の接続 ID を使用する必要があります。 接続 ID およびインスタンス DB は対となり、各接続に対して固有である必要があります。
• 固有の IP ポート番号が必要かどうかは、サーバー設定によって異なります。

命令の静的タグ
以下の表では、「MB_CLIENT」命令のインスタンスデータブロックの編集可能な静的タグについて説明します。
タグ

データタイ
プ

Blocked_Proc_Tim REAL

開始値

説明

3.0

ブロックされた Modbus インスタンスが存在する場合、静eout

的タグ ACTIVE がリセットされるまでの待機秒数。 これは、たとえばクライアントが要求を出力し、その要求が完全に実行される前にクライアントファンクションの実行が中止された場合などに発生します。 最大待機時間は 55 秒です。

MB_Transaction_I

WORD

1

D

Modbus TCP プロトコルのトランザクション ID。 開始値「1」は、Modbus TCP サーバーが異なる値を要求する場合にのみ変更されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3673

通信
6.5 通信プロセッサ
タグ

データタイ
プ

開始値

説明

MB_Unit_ID

BYTE

255

Modbus デバイスの検出:
Modbus TCP サーバーは、IP アドレスを使用してアドレス指定します。 このため、MB_UNIT_ID パラメータはModbus TCP アドレス指定の場合には使用されません。
MB_UNIT_ID パラメータは、Modbus RTU プロトコルのス
レーブアドレスのフィールドに対応します。 Modbus TCP
サーバーを Modbus RTU プロトコルのゲートウェイとして使用する場合、MB_UNIT_ID を使用してシリアルネットワ
ークのスレーブデバイスを識別できます。 この場合、
MB_UNIT_ID パラメータは正しい Modbus RTU スレーブア
ドレスに要求を転送します。
Modbus TCP デバイスによっては、制限された値の範囲内
で初期化を行うために MB_UNIT_ID パラメータを要求する
場合があります。

RCV_TIMEOUT

REAL

2.0

「MB_CLIENT」命令がサーバーからの応答を待機する時間
間隔の秒数。

Connected

BOOL0

割り当てられたクライアントへの接続が確立されているかどうかを示します: 1 = 接続済み、0 = 未接続。

下記も参照
MB_CLIENT 例 1: TCP 接続を介した複数要求の送信 (ページ 3691)
MB_CLIENT 例 2: 複数の TCP 接続を介した複数要求の送信 (ページ 3692)
MB_CLIENT 例 3: 複数要求の調整 (ページ 3693)
同期命令と非同期命令の相違 (ページ 29)

REQ および DISCONNECT パラメータ

説明
実行中の「MB_CLIENT」命令のインスタンスがなく、DISCONNECT パラメータの値が「0」であると、REQ = 1 の場合、新しいジョブが実行されます。まだ接続が存在しない場合は、実行中に接続が確立されます。

3674

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
アクティブなジョブの実行前に「MB_CLIENT」命令の同一のインスタンスが再度実行されると(DISCONNECT = 0 および REQ = 1)、アクティブなジョブの完了時にはこのインスタン
スは実行されません。 新しいジョブは、アクティブなジョブの完了時(REQ = 1)にのみ開始
することが可能です。
実行のステータスは、DONE パラメータを使用してモニタすることができます。
「MB_CLIENT」命令が順番に実行される場合、このパラメータを使用して実行のステータ
スをモニタすることが可能です。

下記も参照
MB_CLIENT の説明 (ページ 3670)

MB_MODE、MB_DATA_ADDR、および DATA_LEN パラメータ
説明
MB_MODE、MB_DATA_ADDR、および DATA_LEN パラメータの組み合わせは、値 0、1、および 2 の MB_MODE の現在の Modbus メッセージで使用される Modbus ファンクション
コードを定義します。
• MB_MODE は、読み出すか、または書き込むかに関する情報を含みます。
MB_MODE=0:読み出し、MB_MODE=1 および 2:書き込み• MB_DATA_ADDR は、読み出す/書き込む対象に関する情報と、「MB_CLIENT」命令がそれからリモートアドレスを計算するアドレス情報を含みます。
• DATA_LEN は、読み出す/書き込む値の数を含みます。
例:• 組み合わせ MB_MODE=1、MB_DATA_ADDR=1、DATA_LEN=1 はファンクションコード
05 を指定します。1 つの出力ビットが、リモートアドレス 0 から始めて、書き込まれます。
• 組み合わせ MB_MODE=1、MB_DATA_ADDR=1、DATA_LEN=2 はファンクションコード
15 を指定します。2 つの出力ビットが、リモートアドレス 0 から始めて、書き込まれます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3675

通信
6.5 通信プロセッサ
次の表に、「MB_CLIENT」命令の入力パラメータ MB_MODE、MB_DATA_ADDR、DATA_LENと、関連 Modbus ファンクションの間の関係を示します。
MB_MODE

MB_DATA_AD
DR

DATA_LEN

Modbusファンク
ション

0

1 ～ 9,999

1 ～ 2,000 01

ファンクションおよびデータタイプ

リモートアドレス 0 ～ 9,998 の 1 ～ 2,000 出力ビッ
トの読み出し0

10,001 ～1 ～ 2,000 02

19,999040,001 ～トの読み出し1～125

03

49,999030,001 ～1 ～ 9,999

リモートアドレス 0 ～ 9,998 の 1 ～ 125 保持レジス
タの読み出し1～125

04

39,9991

リモートアドレス 0 ～ 9,998 の 1 ～ 2,000 入力ビッ

リモートアドレス 0 ～ 9,998 の 1 ～ 125 入力ワード
の読み出し

1

05

リモートアドレス 0 ～ 9,998 への 1 出力ビットの書
き込み

140,001 ～1

06

49,9991

1 ～ 9,999

リモートアドレス 0 ～ 9,998 への 1 保持レジスタの書き込み

2 ～ 1,968 15

リモートアドレス 0 ～ 9,998 への 2 ～ 1,968 出力ビットの書き込み1

40,001 ～

2～123

16

49,9992

1 ～ 9,999

リモートアドレス 0 ～ 9,998 への 2 ～ 123 保持レジ
スタの書き込み

1 ～ 1,968 15

リモートアドレス 0 ～ 9,998 への 1 ～ 1,968 出力ビットの書き込み2
11

40,001 ～1～123

リモートアドレス 0 ～ 9,998 への 1 ～ 123 保持レジ49,999スタの書き込み

このファンクションが実行 11

サーバーのステータスワードおよびイベントカウン

される場合、

タの読み取り:MB_DATA_ADDR および• ステータスワードは処理ステータスを表します(0 処理中ではない、0xFFFF - 処理中)。

DATA_LEN パラメータは評価されません。

3676

16• このイベントカウンタは、Modbus 要求が正常に実行された場合にインクリメントされます。
Modbus ファンクションの実行中にエラーが発生した場合、サーバーによってメッセージが送信されますが、イベントカウンタはインクリメントされません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
MB_MODE

MB_DATA_AD
DR

DATA_LEN

Modbusファンクション

ファンクションおよびデータタイプ

80

-

1

08

診断コード 0x0000 でサーバーステータスをチェック(戻り値ループテスト - サーバーが要求を返信します):• 呼び出しごとに 1WORD

81

-

1

08

診断コード 0x000A でサーバーのイベントカウンタをリセット:• 呼び出しごとに 1WORD

3～10、

予約済み

12～79、
82～255

下記も参照
MB_CLIENT の説明 (ページ 3670)

MB_DATA_PTR パラメータ

説明
MB_DATA_PTR パラメータは、Modbus サーバーから読み取られた、または Modbus サー
バーに書き込まれたデータの格納用データバッファに対するポインタです。 グローバル
データブロックまたはメモリ領域(M)をデータバッファとして使用することが可能です。
メモリ領域(M)内のバッファの場合、次の要領で ANY 形式のポインタを使用します。 「P#
ビットアドレス」 「データタイプ」 「長さ」(例: P#M1000.0 WORD 500).
以下の場合、MB_DATA_PTR パラメータは通信バッファを使用します。
• 「MB_CLIENT」命令の通信ファンクションの場合:– Modbus サーバーアドレス 00001～09999 および 10001～19999 のデータの 1 ビットの読み取りおよび書き込み。
– Modbus サーバーアドレス 30001～39999 および 40001～49999 の 16 ビット
WORD データの読み取り。
– Modbus サーバーアドレス 40001～49999 の 16 ビット WORD データの書き込み。
•

MB_DATA_PTR パラメータで割り当てたグローバル DB またはメモリ領域(M)とのデータ転送中(長さ:ビットまたは WORD)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3677

通信
6.5 通信プロセッサ
MB_DATA_PTR パラメータ内でバッファ用のデータブロックを使用する場合、DB エレメン
トにデータタイプを割り当てる必要があります。
• Modbus ビットアドレスには、1 ビットデータタイプ BOOL を使用します。
• ModbusWORD アドレスには、WORD、UINT、INT、または REAL などの 16 ビットデー
タタイプを使用します。
• 2 つの ModbusWORD アドレスには、DWORD、DINT、または REAL などの 32 ビットデータタイプ(ダブルワード)を使用します。
• MB_DATA_PTR では、以下のような複合 DB エレメントにもアクセス可能です。
– 標準配列– エレメント名が一意の構造体– エレメント名が一意、かつデータタイプ長が 16 または 32 ビットの複合構造体。
• MB_DATA_PTR パラメータのデータ領域は、別のグローバルデータブロック(または別のメモリ領域)にも確保することができます。 例えば、読み取りジョブと書き込みジョブで異なるデータブロックを使用することや、各「MB_CLIENT」ステーションに対して個別のデータブロックを使用することが可能です。

下記も参照
MB_CLIENT の説明 (ページ 3670)

パラメータステータス

パラメータ STATUS (全般ステータス情報) (ライブラリバージョン V2.1)
STATUS*(W#16#)

説明

0000

命令がエラーなしで実行されました。

7000

動作中の呼び出しはありません(REQ=0)。

7001

REQ=1 による最初の呼び出し:処理が開始されます。BUSY の値は 1 です。

7002

中間呼び出し(REQ は無関係)。処理が既に有効です。BUSY の値は 1 です。

7003

接続を終了中です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

3678

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータ STATUS (全般ステータス情報) (ライブラリバージョン V3.x)
STATUS*(W#16#)

説明

0000

命令がエラーなしで実行されました。

0001

接続が確立されました。

0003

接続が終了しました。

7000

動作中の呼び出しはありません(REQ=0)。

7001

REQ=1 による最初の呼び出し:処理が開始されます。BUSY の値は 1 です。

7002

中間呼び出し(REQ は対象外)。処理が既に有効です。BUSY の値は 1 です。

7003

接続の終了。

7004

接続が確立され、モニタされています。ジョブ処理が行われていません。

7005

データが送信されました。

7006

データが受信されました。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS(プロトコルエラー)
STATUS
*
(W#16
#)

ローカル
および/ま
たはリモ
ートエラ
ー

MB_SERVER から 説明の応答内のエラー
コード(B#16#)

80C8

ローカル

-

定義された期間内にサーバーの応答がありませんでした。
Modbus サーバーへの接続をチェックします。このエラーは、設定された繰り返し試行回数が完了した場合にのみ、報告されます。
この「MB_CLIENT」命令が、定義された期間以内に、最初に転送されたトランザクション ID (MB_TRANSACTION_ID タグ)の応答を受信しないと、このエラーコードが出力されます。

8380

ローカル

-

受信された Modbus フレームの形式が不正であるか、または受信されたバイト数が少なすぎます。

8381

リモート

01

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

ファンクションコードはサポートされていません。

3679

通信
6.5 通信プロセッサSTATUS
*
(W#16
#)

ローカル
および/ま
たはリモ
ートエラ
ー

MB_SERVER から 説明の応答内のエラー
コード(B#16#)

8382

ローカル

-

• フレームヘッダーの Modbus フレームの長さが、受信したバ
イト数と一致しません。
• バイト数が、実際に送信されたバイト数と一致しません(ファンクション 1-4 のみ)。たとえば、「MB_CLIENT」が奇数のワードを要求するが、「MB_SERVER」は常に偶数のワードを送信する場合などがその場合に当たります。
• 受信されたフレームの開始アドレスが、保存された開始アドレスと一致しません(ファンクション 5、6、15、16)。
• ワード数が、実際に転送されたワード数と一致しません(ファンクション 15 および 16)。

リモート

03

受信した Modbus フレームでの不正な長さ指定。サーバー側をチェックします。

8383

ローカル

-

データの読み出しまたは書き込みのエラー、または MB_DATA_PTR (ページ 3677)のアドレス領域外へのアクセス。

リモート

02

データの読み出しまたは書き込みのエラー、またはサーバーのア
ドレス領域外へのアクセス

8384

ローカル

-

• 無効な例外コードが受信されました。
• クライアントによって最初に送信されたデータ値とは異なる
データ値が受信されました(ファンクション 5、6、および 8)。
• 無効なステータス値が受信されました(ファンクション 11)

8385

リモート

03

データ値のエラー(ファンクション 5)

ローカル

-

• 診断コードはサポートされていません。
• クライアントによって最初に送信されたコードと異なるサブ
ファンクションコードが受信されました(ファンクション 8)。

8386

リモート

03

診断コードはサポートされていません

ローカル

-

受信したファンクションコードが、最初に送信されたファンクションコードと一致しません。

8387

ローカル

-

• 割り当てられた接続 ID が、前回の要求で使用されたものと異なります。「MB_CLIENT」命令のそれぞれのインスタンス DB
で使用できる接続 ID は 1 つのみです。
• サーバーによって受信される Modbus TCP プロトコルの ID が「0」でない場合も、このエラーコードが出力されます。

3680

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサSTATUS
*
(W#16
#)

ローカル
および/ま
たはリモ
ートエラ
ー

MB_SERVER から 説明の応答内のエラー
コード(B#16#)

8388

ローカル

-

Modbus サーバーが、要求されたデータ長とは異なるデータ長を送信しました。このエラーは、Modbus ファンクション 15 または 16 の使用時にのみ発生します。

*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS (パラメータエラー)
以下の表に記載されたエラーの他に、「MB_CLIENT」では通信命令(「TCON」、「TDISCON」、「TSEND」、および「TRCV」)によって引き起こされるエラーが発生する可能性があります。
STATUS*(W#16#)

説明

80BB

ACTIVE_EST パラメータ(接続確立のタイプ識別子、T_CON_PARAM を参照)の値が無効です:• サーバーの場合、パッシブ接続確立のみが許可されています(ACTIVE_EST = FALSE)。
• クライアントの場合、アクティブ接続確立のみが許可されています(ACTIVE_EST = TRUE)。

8188

MB_MODE パラメータの値が無効です。

8189

MB_DATA_ADDR パラメータのデータのアドレス指定が無効です。

818A

MB_DATA_LEN パラメータのデータ長が無効です。

818B

MB_DATA_PTR パラメータのポインタが無効です。MB_DATA_ADDR (ページ 3675)および
MB_DATA_LEN パラメータの値もチェックする必要があります。

818C• MB_DATA_PTR (ページ 3670)ポインタは、最適化されたデータブロックを参照します。標準
アクセスのデータブロックを使用するか、メモリ領域を使用します。
• パラメータ BLOCKED_PROC_TIMEOUT でのタイムアウト(命令の静的タグを参照)。制限値の55 秒を超えました。

8200• 現在、このポート経由で別の Modbus 応答が処理されています。
• 同じ接続パラメータの MB_CLIENT の別のインスタンスが、既存の Modbus 要求を処理しています。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3681

通信
6.5 通信プロセッサ

注記
内部で使用される通信命令のエラーコード。
「MB_CLIENT」命令を使用すると、表にリストされたエラーに加えて、命令によって使用される通信命令(「TCON」、「TDISCON」、「TSEND」、および「TRCV」)が原因のエラーが発生する可能性があります。
エラーコードが、「MB_CLIENT」命令のインスタンスデータブロックを介して割り当てられます。それぞれの命令に対して、エラーコードが Static セクションの STATUS に表示されます。
エラーコードの意味は、対応する通信命令の文書で入手できます。

下記も参照
MB_HOLD_REG パラメータ (ページ 3688)

MB_SERVER: PROFINET を介した Modbus TCP サーバーとしての通信
MB_SERVER の説明

説明「MB_SERVER」命令は、S7-1200CPU の PROFINET 接続を経由した Modbus TCP サーバーとして通信します。この命令を使用するためにハードウェアモジュールを追加する必要はありません。「MB_SERVER」命令は、Modbus TCP クライアントの接続要求の処理、Modbus
ファンクションからの要求の受信、および応答の送信を行います。
通知
セキュリティ情報
ネットワークの各クライアントは、プロセスイメージ入出力や、Modbus 保持レジスタによって定義されるデータブロックまたはビットメモリ領域に対する読み出し/書き込みのアクセスが与えられていることに注意してください。
このオプションは、IP アドレスへのアクセスを制限して、未許可の読み出しおよび書き込
み操作を防止するために使用できます。ただし、未許可のアクセスの場合でも、共有ア
ドレスは使用できることに注意してください。

3682

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサパラメータ
次の表に、「MB_SERVER」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

説明

DISCONNECT

Input

BOOL

命令「MB_SERVER」が、パートナーモジュールとのパッシブ接続を作成します。つまり、要求中の各 IP アドレスからの TCP 接
続要求にサーバーが応答します。このパラメータを使用して、接続要求の承認のタイミングを制御することが可能です。
• 0:パッシブ接続は、通信接続がない場合に確立されます。
• 1:接続終了の初期化。入力が設定された場合、その他の操作は実行されません。正常な接続の終了の後に、値 7003 がSTATUS パラメータに出力されます。

CONNECT_ID

Input

UINT

このパラメータは、CPU 内の接続を一意に識別します。
「MB_CLIENT (ページ 3670)」および「MB_SERVER」命令の各イ
ンスタンスには、それぞれ一意となる CONNECT_ID パラメータがあります。

IP_PORT

Input

UINT

開始値=502.IP ポートの番号は、Modbus クライアントの接続要求に対してモニタされる IP ポートを定義します。
次の TCP ポート番号は、「MB_SERVER」命令のパッシブ接続で使用してはなりません。20、21、25、80、102、123、
5001、34962、34963、および 34964。

MB_HOLD_REG

InOut

VARIANT 「MB_SERVER」命令の Modbus 保持レジスタへのポインタ。グ(ページ 3688)

ローバルデータブロックを標準アクセスで保持レジスタとして使用します。保持レジスタは、Modbus クライアントがModbus ファンクション 3 (読み取り)、6 (書き込み)、および16 (読み取り)を使用してアクセスする可能性のある値を含んで
います。

NDR

Output

BOOL"New Data Ready":• 0:新規データなし• 1:新規データが Modbus クライアントによって書き込まれました。

DROutputBOOL"Data Read":• 0:データ読み出しなし• 1:データが Modbus クライアントによって読み取られました。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3683

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

説明

ERROR

Output

BOOL「MB_SERVER」命令の呼び出し中にエラーが発生した場合、
ERROR パラメータの出力は TRUE にセットされます。問題の原因に関する詳細情報は、STATUS パラメータによって示されます。

STATUS (ペーOutputWORD

命令のエラーコード。

ジ 3689)
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

Modbus アドレスのプロセスイメージへのマッピング「MB_SERVER」命令によって、受信 Modbus ファンクション(1、2、4、5、および 15)がS7-1200 CPU (データタイプ BOOL および WORD の使用)のプロセスイメージ入力および出力に対し、直接読み取りおよび書き込みアクセスを実行できるようになります。
ファンクションコード 3、6、および 16 のデータ転送の場合、保持レジスタ(MB_HOLD_REG パラメータ)には 1 バイト以上が定義される必要があります。次の表に、
Modbus アドレスの CPU のプロセスイメージへのマッピングを示します。
Modbus ファンクション
コー

ファンクショ

データ領域

ド

ン

01

読み取り:ビッ Output

S7-1200

アドレス空間データ領域

CPU アドレス

0

～

8191

プロセスイメージ出力 Q0.0～Q1023.7

0

～

8191

プロセスイメージ入力 I0.0～I1023.7

0

～

1021

プロセスイメージ入力 IW0～IW1022

0

～

8191

プロセスイメージ出力 Q0.0～Q1023.7

0

～

8191

プロセスイメージ出力 Q0.0～Q1023.7

ト02

読み取り:ビッ Input
ト

04

読み取

Input

り:WORD05

書き込み:ビッ Output
ト

15

書き込み:ビッ Output
トファンクションコード 3、6、および 16 の受信 Modubus アラームは、Modbus 保持レジ
スタ(保持レジスタは MB_HOLD_REG パラメータで指定)に書き込み、または Modbus 保持
レジスタから読み出しを行います。

3684

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

複数のサーバー接続
複数のサーバー接続を作成することが可能です。これによって、単一の CPU が同時に 1 つ
以上の Modbus TCP クライアントに対して接続を確立することが可能になります。
Modbus TCP サーバーは複数の TCP 接続をサポートしています。接続の最大数は、使用している CPU によって異なります。
Modbus TCP クライアントおよびサーバーの接続を含む 1 つの CPU の接続合計数は、サポートされている接続の最大数を超えてはなりません。
Modbus TCP 接続は、クライアント、またはサーバー、またはその両方の接続で共有することが可能です。
サーバー接続の場合は、以下のルールに注意してください。
• 各「MB_SERVER」接続は、固有のインスタンス DB を使用する必要があります。
• 各「MB_SERVER」接続は、固有の IP ポート番号で作成する必要があります。各ポートに対して、1 つの接続のみサポートされます。
• 各「MB_SERVER」接続は、固有の接続 ID を使用する必要があります。
命令の各インスタンス DB に対しては、関連する個別の接続 ID を使用する必要があります。接続 ID およびインスタンス DB は対となり、各接続に対して固有である必要があります。
• 「MB_SERVER」命令は、各接続に対し個別に呼び出される必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3685

通信
6.5 通信プロセッサ

Modbus 診断ファンクション
次の表に、Modbus 診断ファンクションの説明を記載しています。
コードサブファンクション

説明

080x0000

エコーテスト:「MB_SERVER」命令は、データワードを受信し、これを変更せずに
Modbus マスタに返します。

08

0x000A

イベントカウンタのリセット:「MB_SERVER」命令は、Modbus ファンクション 11に使用される通信用のイベントカウンタをリセットします。

11-

通信イベントカウンタのフェッチ:「MB_SERVER」命令は通信用の内部イベントカ
ウンタを使用し、Modbus サーバーに送信された、正常に実行された読み取りおよび書き込み要求の回数を記録します。
このイベントカウンタは、ファンクション 8、11、またはブロードキャスト要求ではインクリメントされません。通信エラー(たとえばパリティエラーや CRC エラー)となる要求の場合もインクリメントされません。同時に存在可能なクライアント/サーバー通信は 1 つのみであるため、Modbus TCP ではブロードキャストファンクシ
ョンは使用できません。

命令の静的タグ
以下の表では、プログラム内で使用される「MB_SERVER」命令のインスタンスデータブ
ロックの静的タグについて説明します。HR_Start_Offset タグを書き込むことができます。
他のタグを読み取り、Modbus ステータスをモニタすることができます。
タグ

データタ
イプ

開始値

説明

HR_Start_Offset

WORD

0

Modbus 保持レジスタの開始アドレスを割り当てます。

Request_Count

WORD

0

サーバーが受信した要求の合計数です。

Server_Message_

WORD

0

受信した関連するサーバーへのアラームの合計数です。

WORD

0

エラーが発生した転送数を検知するためのカウンタです。このCount
Xmt_Rcv_Count

カウンタは、無効な Modbus アラームを受信した場合もインクリメントされます。
Exception_Count

WORD

0

Modbus が例外を発生させた場合のエラー数を検知するためのカウンタです。

3686

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
タグ

データタ
イプ

開始値

説明

Success_Count

WORD

0

転送プロトコルにエラーを含まない要求数を検知するためのカウンタです。

Connected

BOOL0

割り当てられたクライアントへの接続が確立されているかどうかを示します:1 = 接続済み、0 = 未接続。

例:静的タグ HR_Start_Offset でのアドレス指定。
Modbus 保持レジスタのアドレスは 0 (MB_CLIENT の観点からは 40.001)から開始されます。これらのアドレスは、保持レジスタ用の CPU メモリ領域のアドレス領域に対応します。Modbus 保持レジスタが 0 以外の開始アドレスを持つように、HR_Start_Offset タグを定義することもできます。
例:保持レジスタを MW100 から開始し、長さを 100 WORD とします。HR_Start_Offset パ
ラメータのオフセット値は、この保持レジスタ開始アドレスが 0 から 20 へ移動することを示します。これによって、保持レジスタに対して、20 未満のアドレスや 119 を超えるア
ドレスを指定すると、常にエラーが発生します。
HR_Start_Offse アドレス
t

最小値

最大値

0

Modbus アドレス(WORD)

099

CPU アドレス

MW100

MW298

Modbus アドレス(WORD)

20

119

CPU アドレス

MW100

MW298

20

下記も参照
MB_SERVER 例: 複数の TCP 接続 (ページ 3694)
同期命令と非同期命令の相違 (ページ 29)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3687

通信
6.5 通信プロセッサ

MB_HOLD_REG パラメータ

説明
MB_HOLD_REG パラメータは、Modbus サーバーから読み取られた、または Modbus サー
バーに書き込まれたデータの格納用データバッファに対するポインタです。データバッフ
ァとしては、グローバルデータブロックまたはメモリ領域(M)を使用できます。
• データブロック(D)のアドレス数の上限値は、CPU の最大ワークメモリによって決まります。
• ビットメモリ(M)の数の上限値は、CPU のメモリ領域のサイズによって決まります。
次の表に、Modbus ファンクション 3 (WORD の読み取り)、6 (WORD の書き込み)、16 (複数の WORD の書き込み)、および 23 (複数のワードの読み取りおよび書き込み)用の保持レ
ジスタに対する Modbus アドレスのマッピング例を示します。
Modbus アドレス

MB_HOLD_REG パラメータ - 例

0

MW100

DB10.DBW0"Recipe".ingredient[1]

1

MW102

DB10.DBW2"Recipe".ingredient[2]

2

MW104

DB10.DBW4"Recipe".ingredient[3]

3

MW106

DB10.DBW6"Recipe".ingredient[4]

4

MW108

DB10.DBW8"Recipe".ingredient[5]下記も参照
MB_SERVER の説明 (ページ 3682)

3688

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータステータス

パラメータ STATUS (全般ステータス情報) (ライブラリバージョン V2.1)

STATUS*(W#16#)

説明

0000

命令がエラーなしで実行されました。

7000

動作中の呼び出しはありません(REQ=0)。

7001

REQ=1 による最初の呼び出し:処理が開始されます。BUSY の値は 1 です。

7002

中間呼び出し(REQ は無関係)。処理が既に有効です。BUSY の値は 1 です。

7003

接続を終了中です。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS (全般ステータス情報) (ライブラリバージョン V3.x)
STATUS*(W#16#)

説明

0000

命令がエラーなしで実行されました。

0001

接続が確立されました。

0003

接続が終了しました。

7000

動作中の呼び出しはありません(REQ=0)。

7001

最初の呼び出し。接続の確立がトリガされました。

7002

中間呼び出し。接続の確立。

7003

接続の終了。

7005

データを送信中です。

7006

データを受信中です。

*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3689

通信
6.5 通信プロセッサ

パラメータ STATUS(プロトコルエラー)
STATUS
*
(W#16
#)

ローカル
および/ま
たはリモ
ートエラ
ー

MB_SERVER から 説明の応答内のエラー
コード(B#16#)

8380

ローカル

-

受信された Modbus フレームの形式が不正であるか、または受信されたバイト数が少なすぎます。

8381

リモート

01

ファンクションコードはサポートされていません。

8382

リモート

03

データ長のエラー

8383

ローカル

-

データの読み出しまたは書き込みのエラー、または MB_HOLD_REG (ページ 3688)のアドレス領域外へのアクセス。

リモート

02

データの読み出しまたは書き込みのエラー、またはサーバーのア
ドレス領域外へのアクセス

8384

ローカル

-

• 無効な例外コードが受信されました。
• サーバーによって最初に送信されたデータ値とは異なるデータ値が受信されました(ファンクション 5、6、および 8)。
• 無効なステータス値が受信されました(ファンクション 11)

8385

リモート

03

データ値のエラー(ファンクション 5)

ローカル

-

• 診断コードはサポートされていません。
• サーバーによって最初に送信されたコードと異なるサブファ
ンクションコードが受信されました(ファンクション 8)。

リモート

03

診断コードはサポートされていません*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS (パラメータエラー)
STATUS*(W#16#)

説明

80BB

ACTIVE_EST パラメータ(接続確立のタイプ識別子、T_CON_PARAM を参照)の値が無効です:• サーバーの場合、パッシブ接続確立のみが許可されています(ACTIVE_EST = FALSE)。
• クライアントの場合、アクティブ接続確立のみが許可されています(ACTIVE_EST =TRUE)。

8187

3690

MB_HOLD_REG パラメータのポインタが無効です。データ領域が小さすぎます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサSTATUS*(W#16#)

説明818C• パラメータ MB_HOLD_REG のポインタは、最適化されたデータブロックを参照します。標準アクセスのデータブロックを使用するか、メモリ領域を使用します。
• 実行のタイムアウトによるエラー(55 秒以上)。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
注記
内部で使用される通信命令のエラーコード。
「MB_SERVER」命令を使用すると、表にリストされたエラーに加えて、命令によって使用される通信命令(「TCON」、「TDISCON」、「TSEND」、および「TRCV」)が原因のエラーが発生する可能性があります。
エラーコードが、「MB_SERVER」命令のインスタンスデータブロックを介して割り当てられます。それぞれの命令に対して、エラーコードが Static セクションの STATUS に表示されます。
エラーコードの意味は、対応する通信命令の文書で入手できます。

下記も参照
MB_SERVER の説明 (ページ 3682)

例

MB_CLIENT 例 1: TCP 接続を介した複数要求の送信

説明
Modbus クライアントの複数の要求を TCP 接続経由で送信することが可能です。 これを行うには、同一のインスタンス DB、同一の接続 ID、および同一のポート番号を使用します。
1 回に 1 つのクライアントのみを有効にすることができます。 クライアントの処理完了後、次のクライアントを処理します。 実行順序はプログラム内で定義する必要があります。
以下のサンプルプログラムでは、STATUS 出力パラメータの値もコピーされます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3691

通信
6.5 通信プロセッサ

ネットワーク 1: Modbus ファンクション 1 - 16 出力ビットの読み取り

ネットワーク 2: Modbus ファンクション 2 - 32 出力ビットの読み取り

MB_CLIENT 例 2: 複数の TCP 接続を介した複数要求の送信

説明
Modbus クライアントからの要求を異なる TCP 接続経由で送信することが可能です。 これを行うには、異なるインスタンス DB および異なる接続 ID を使用します。
同一の Modbus サーバーに対する接続である場合は、異なるポート番号を使用します。 異なる Modbus サーバーに対する接続である場合は、ポート番号を自由に割り当てることが
可能です。

3692

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

ネットワーク 1: Modbus ファンクション 4 - 入力の読み取り(WORD)

ネットワーク 2: Modbus ファンクション 3 - 保持レジスタの読み取り(WORD)

MB_CLIENT 例 3: 複数要求の調整

説明
個々の Modbus 要求が実行されていることを確認します。 要求の調整は、プログラムで制御します。 以下の例は、1 番目および 2 番目のクライアント要求の出力パラメータが、命令の実行の調整にどのように使用できるかを説明しています。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3693

通信
6.5 通信プロセッサ

ネットワーク 1: Modbus ファンクション 3 - 保持レジスタの読み取り(WORD)

ネットワーク 2: Modbus ファンクション 3 - 保持レジスタの読み取り(WORD)

MB_SERVER 例: 複数の TCP 接続

説明
複数の Modbus サーバー接続を使用することが可能です。 これを行うには、「MB_SERVER」命令を各接続に対して個別に呼び出す必要があります。

3694

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
各接続には、以下のことが要求されます。
• 命令の独立したインスタンスデータブロック• 固有の接続 ID• 個別の IP ポート(S7-1200 では、1 つの IP ポートにつき 1 つの接続のみが許可されています)
パフォーマンスを最適化するために、「MB_SERVER」は各接続に対してプログラムサイク
ルごとに 1 回実行される必要があります。

ネットワーク 1: 関連する IP ポート接続 ID およびインスタンス DB での接続#1

ネットワーク 2: 関連する IP ポート接続 ID およびインスタンス DB での接続#1

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3695

通信
6.5 通信プロセッサ

6.5.9.2

S7-1200 CPU のライブラリバージョン V4.0 以降および S7-1500 CPU の V3.x 以降用の
MODBUS (TCP)

MB_CLIENT:PROFINET を介した Modbus TCP クライアントとしての通信
MB_CLIENT の説明

説明「MB_CLIENT」命令は、PROFINET 接続を経由して Modbus TCP クライアントとして通信します。「MB_CLIENT」命令を使用し、クライアントとサーバー間の接続を確立し、Modbus
要求の送信、応答の受信、および Modbus TCP クライアントの制御接続終了を行います。
ファームウェアバージョン V4.0 の S7-1200 の場合、ライブラリバージョン V3.1 までの「MB_CLIENT」命令を使用できます。S7-1200 (ファームウェアバージョンが V4.1 以降)および S7-1500 の場合、すべてのライブラリバージョンの「MB_CLIENT」命令を使用できます。
この接続は、CPU または CM/CP のローカルインターフェースを経由して実行できます。
この命令を使用するためにハードウェアモジュールを追加する必要はありません。

複数クライアントの接続
Modbus TCP クライアントは複数の TCP 接続をサポートしています。接続の最大数は、使用している CPU によって異なります。Modbus TCP クライアントおよびサーバーの接続を含
む 1 つの CPU の接続合計数は、サポートされている接続の最大数を超えてはなりません。
Modbus TCP 接続は、「MB_CLIENT」および「MB_SERVER」インスタンスのいずれかまたは両方によって共有することもできます。
個別のクライアント接続では、以下のルールに注意してください。
• 各「MB_CLIENT」接続は、固有のインスタンス DB を使用する必要があります。
• 各「MB_CLIENT」接続では、固有のサーバー IP アドレスが指定されている必要があり
ます。

3696

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ• 各「MB_CLIENT」接続は、固有の接続 ID を必要とします。
命令の各インスタンス DB に対しては、関連する個別の接続 ID を使用する必要があります。接続 ID およびインスタンス DB は対となり、各接続に対して固有である必要があります。
• 固有の IP ポート番号が必要かどうかは、サーバー設定によって異なります。

パラメータ
次の表に、「MB_CLIENT」命令のパラメータを示します。
パラメータ

宣言

データタイ 説明プ

REQ (ペー

Input

BOOL

ジ 3701)

Modbus TCP サーバーへの Modbus クエリ
REQ パラメータがレベル制御されます。すなわち、この入力がセットされている限り(REQ=true)、この命令は通信要求を送信します。
• Modbus クエリが開始した後、このインスタンス DB が他のクライアントに対してロックされます。
• サーバーが応答するか、またはエラーメッセージが出力されるまで、入力パラメータへの変更は有効になりません。
• Modbus 要求の進行中にパラメータ REQ が再度設定された場合、その後は追加の送信は実行されません。

DISCONNECT (ペ

Input

BOOL

ージ 3701)

このパラメータを使用し、Modbus サーバーへの接続の確
立および終了を制御します。
• 0:CONNECT パラメータで設定された接続パートナーへの通信接続を確立します(CONNECT パラメータを参照)。
• 1:通信接続を切断します。接続終了中は、他のファンク
ションは実行されません。正常な接続の終了の後に、値0003 が STATUS パラメータに出力されます。
接続の確立中に REQ パラメータがセットされた場合、Modbus 要求が直ちに送信されます。

MB_MODE (ペー

Input

USINT

ジ 3702)

Modbus 要求のモード(読み出し、書き込み、または診断)を選択するか、Modbus ファンクションを直接に選択します

MB_DATA_ADDR

Input

UDINT

MB_MODE によって異なります(ページ 3702)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3697

通信
6.5 通信プロセッサ
パラメータ

宣言

データタイ 説明プ

MB_DATA_LEN

Input

UINT

データ長:データアクセス用ビットまたはワードの数(MB_MODE、MB_DATA_ADDR、および MB_DATA_LEN パ
ラメータ (ページ 3702)を参照)。

MB_DATA_PTR (ペ InOut

VARIANTージ 3705)

Modbus サーバーから受信するデータ用の、またはModbus サーバーに送信するデータ用のデータバッファへのポインタ。

CONNECT (ペーInOutVARIANTジ 3707)

接続記述子の構造へのポインタ
以下の構造体(システムデータタイプ)を使用できます。
• TCON_IP_v4:プログラムされた接続の確立に必要なすべてのアドレスパラメータを含みます。TCON_IP_v4 を使用している場合、「MB_CLIENT」命令を呼び出すと、接続が確立されます。
• TCON_Configured:設定した接続のアドレスパラメータを含みます。TCON_Configured を使用している場合、
ハードウェアコンフィグレーションのダウンロード後に、CPU によって作成された既存の接続が使用されま
す。

DONE

Out

BOOL

最後の Modbus ジョブがエラーなしで完了するとすぐに、
出力パラメータ DONE のそのビットが「1」にセットされ
ます。

BUSY

Out

BOOL

• 0:進行中の Modbus 要求はありません• 1:Modbus 要求を処理しています。
出力パラメータ BUSY は、接続の確立および終了中には設定されません。

ERROR

Out

BOOL

• 0:エラーなし• 1:エラーが発生しました。エラーの原因は、STATUS パ
ラメータによって識別されます。

STATUS (ペー

Out

WORD

命令の詳細なステータス情報。

ジ 3709)3698

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記「MB_CLIENT」呼び出し中の一貫した入力データ。
Modbus クライアント命令が呼び出されると、入力パラメータの値が内部的に保存され、次の呼び出し時に比較されます。この比較は、その特定の呼び出しが現在の要求を初期化したかどうかを判定するために使用されます。共通のインスタンス DB を使用している場合、複数の「MB_CLIENT」呼び出しを実行できます。「MB_CLIENT」インスタンスの実行中は、
入力パラメータの値を変更してはなりません。実行中に入力パラメータが変更されると、インスタンスを現在実行中か否かのチェックに「MB_CLIENT」を使用できなくなります。

命令の静的タグ
以下の表では、「MB_CLIENT」命令のインスタンスデータブロックの編集可能な静的タグについて説明します。
タグ

データタイ
プ

Blocked_Proc_Tim REAL

開始値

説明

3.0

ブロックされた Modbus インスタンスが存在する場合、静eout

的タグ ACTIVE がリセットされるまでの待機秒数。これは、たとえばクライアントが要求を出力し、その要求が完全に実行される前にクライアントファンクションの実行が中止された場合などに発生します。待機時間は、範囲 0.5～ 55 秒内であることが必要です。

MB_Transaction_I

WORD

1

D

Modbus TCP プロトコルのトランザクション ID。開始値「1」は、Modbus TCP サーバーが異なる値を要求する場合にのみ変更されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3699

通信
6.5 通信プロセッサ
タグ

データタイ
プ

開始値

説明

MB_Unit_ID

BYTE

255

Modbus デバイスの検出:
Modbus TCP サーバーは、IP アドレスを使用してアドレス指定します。このため、MB_UNIT_ID パラメータはModbus TCP アドレス指定の場合には使用されません。
MB_UNIT_ID パラメータは、Modbus RTU プロトコルのス
レーブアドレスのフィールドに対応します。Modbus TCP
サーバーを Modbus RTU プロトコルのゲートウェイとして使用する場合、MB_UNIT_ID を使用してシリアルネットワ
ークのスレーブデバイスを識別できます。この場合、
MB_UNIT_ID パラメータは正しい Modbus RTU スレーブア
ドレスに要求を転送します。
Modbus TCP デバイスによっては、制限された値の範囲内
で初期化を行うために MB_UNIT_ID パラメータを要求する
場合があります。
以下のリンクを使用して、MB_Unit_ID パラメータに関する詳細情報を取得します。
https://support.industry.siemens.com/cs/ww/en/view/
102420337
http://support.automation.siemens.com/WW/view/en/
109736516

RCV_TIMEOUT

REAL

2.0

「MB_CLIENT」命令がサーバーからの応答を待機する時間
間隔(秒単位)。その間隔は、範囲 0.5 ～ 55 秒内であることが必要です。

Connected

BOOL0

割り当てられたサーバーへの接続が確立されているかどうかを示します。1 = 接続済み、0 = 未接続。

RETRIES

WORD

0「MB_CLIENT」命令がエラー W#16#80C8 を返す前に、実行する送信試行回数。

注記
タグ MB_Transaction_ID
Modbus TCP サーバーの応答のトランザクション ID が、「MB_CLIENT」のジョブのトラン
ザクション ID と一致しない場合、「MB_CLIENT」命令は、時間間隔 RCV_TIMEOUT *RETRIES、Modbus TCP サーバーの応答(正しいトランザクション ID を持つ)を待機します;
この時間が期限切れになると、命令はエラー W#16#80C8 を返します。

3700

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ例
2 つの S7-1500 CPU 間の Modbus TCP 通信のサンプルプロジェクトは、エントリ ID
94766380 (http://support.automation.siemens.com/WW/view/en/94766380)のサービス
およびサポートポータルにあります。
このサンプルでは 2 つの Modbus ファンクションが使用されています。各 Modbus ファンクションでは、Modbus ブロックペア(MB_CLIENT および MB_SERVER)を使用してModbus TCP 接続が確立されます。

)%)& :5B+ROGLQJ5HJLVWHU>)&@

2%)& :5B+ROGLQJ5HJLVWHU>)&@

0%B&/,(17'% '$7$B
&21
>'%@

0DLQ
>2%@
0%B
&/,(17'% '$7$B
&21
>'%@

)&

5'B
+ROGLQJ5HJLVWHU>)&@'% '$7$B
&21
>'%@

ዃዙናዙኴዊኍ዆ኽ
6&38
0RGEXVኌ዆ኁቿዐእ

ኔኖኣኽ
ኳዊአኌ

ኤዙኜ
ኳዊአኌ

0%B
6(59(50DLQ>2%@

7&3㘴倩 ,' 
0RGEXVኲቾዐኌኔዄዐ
宖㟿ቑ≬㖐ዉንኖኜቑ㦇ሰ手ቢ

)%)& 5'B+ROGLQJ5HJLVWHU>)&@

2%

)%

)%

0%B
6(59(5'% '$7$B
&21
>'%@

7&3㘴倩 ,' 
0RGEXVኲቾዐኌኔዄዐ
≬㖐ዉንኖኜቑ崼ቢ♥ቭ

ኤዙኜ
ኳዊአኌ

ኔኖኣኽ
ኳዊአኌ

ዃዙናዙኴዊኍ዆ኽ
6&38
0RGEXVኒዙክዙ

下記も参照
同期命令と非同期命令の相違 (ページ 29)

REQ および DISCONNECT パラメータ説明
動作中のジョブがなく、DISCONNECT パラメータの値が「0」のとき、REQ=1 の場合、新しいジョブが実行されます。接続が存在していない場合は、実行中に接続が確立されます。
アクティブなジョブの実行前に「MB_CLIENT」命令の同一のインスタンスが再度実行されると(DISCONNECT = 0 および REQ = 1)、アクティブなジョブの完了時にはこのインスタン
スは実行されません。新しいジョブは、アクティブなジョブの完了時(REQ = 1)にのみ開始
することが可能です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3701

通信
6.5 通信プロセッサ
実行のステータスが、出力パラメータによって出力されます。「MB_CLIENT」命令が順番に実行される場合、このパラメータを使用して実行のステータスをモニタすることが可能です。

MB_MODE、MB_DATA_ADDR、および MB_DATA_LEN パラメータ
説明
MB_MODE、MB_DATA_ADDR、および MB_DATA_LEN パラメータの組み合わせは、値 0、1、および 2 の MB_MODE の現在の Modbus メッセージで使用される Modbus ファンクションコードを定義します。
• MB_MODE は、読み出すか、または書き込むかに関する情報を含みます。
MB_MODE=0:読み出し、MB_MODE=1 および 2:書き込み(注記:MB_MODE=2 の場合、
Modbus ファンクション 15 と 05、または、Modbus ファンクション 16 と 06 の間の区別はありません。)• MB_DATA_ADDR は、読み出す/書き込む対象に関する情報と、「MB_CLIENT」命令がそれからリモートアドレスを計算するアドレス情報を含みます。
• MB_DATA_LEN は、読み出す/書き込む値の数を含みます。
例:• 組み合わせ MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=1 はファンクションコード 05 を指定します。1 つの出力ビットが、リモートアドレス 0 から始めて、書き込まれます。
• 組み合わせ MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=2 はファンクションコード 15 を指定します。2 つの出力ビットが、リモートアドレス 0 から始めて、書き込まれます。
MB_MODE の値 101 ～ 106 および 115 ～ 116 には、以下が適用されます。
• MB_MODE は、Modbus ファンクションコードを定義します。
• MB_DATA_ADDR には、リモートアドレスが格納されます。
• MB_DATA_LEN は、読み出す/書き込む値の数を含みます。

3702

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ例:• MB_MODE=104、MB_DATA_ADDR=17,834、MB_DATA_LEN=125– MB_MODE=104 は、ファンクションコード 04 (入力ワードの読み出し)。
– MB_DATA_ADDR=17,834 は、リモートアドレス 17,834 を定義します。
– MB_DATA_LEN=125 は、125 個の値が読み出されることを定義します。
次の表に、「MB_CLIENT」命令の入力パラメータ MB_MODE、MB_DATA_ADDR、
MB_DATA_LEN と、関連 Modbus ファンクションの間の関係を示します。
MB_MODE

MB_DATA_AD
DR

MB_DATA Modbus
_LEN
ファンク
ション

ファンクションおよびデータタイプ

0

1 ～ 9,999

1 ～ 2,000 01

リモートアドレス 0 ～ 9,998 の 1 ～ 2,000 出力ビッ
トの読み出し0

10,001 ～1 ～ 2,000 02

19,9990• 40,001 ～49,999トの読み出し1～125

03• 400,001 ～465,535030,001 ～1 ～ 9,999• リモートアドレス 0 ～ 9,998 の 1 ～ 125 保持レジ
スタの読み出し• リモートアドレス 0 ～ 65,534 の 1 ～ 125 保持レ
ジスタの読み出し

1～125

04

39,9991

リモートアドレス 0 ～ 9,998 の 1 ～ 2,000 入力ビッ

リモートアドレス 0 ～ 9,998 の 1 ～ 125 入力ワード
の読み出し

1

05

リモートアドレス 0 ～ 9,998 への 1 出力ビットの書
き込み

1• 40,001 ～49,9991

06• 400,001 ～465,535
1

1 ～ 9,999• リモートアドレス 0 ～ 9,998 への 1 保持レジスタの書き込み• リモートアドレス 0 ～ 65,534 への 1 保持レジス
タの書き込み2 ～ 1,968 15

リモートアドレス 0 ～ 9,998 への 2 ～ 1,968 出力ビットの書き込み1• 40,001 ～49,9992～123

16• 400,001 ～465,535
2

1 ～ 9,999• リモートアドレス 0 ～ 9,998 への 2 ～ 123 保持レ
ジスタの書き込み• リモートアドレス 0 ～ 65,534 への 2 ～ 123 保持
レジスタの書き込み1 ～ 1,968 15

リモートアドレス 0 ～ 9,998 への 1 ～ 1,968 出力ビットの書き込み

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3703

通信
6.5 通信プロセッサ
MB_MODE

MB_DATA_AD
DR

MB_DATA Modbus
_LEN
ファンク
ション

ファンクションおよびデータタイプ

2• 40,001 ～49,9991～123• リモートアドレス 0 ～ 9,998 への 1 ～ 123 保持レ
ジスタの書き込み

1116• 400,001 ～465,535• リモートアドレス 0 ～ 65,534 への 1 ～ 123 保持
レジスタの書き込み

このファンクションが実行 11

サーバーのステータスワードおよびイベントカウン

される場合、

タの読み取り:MB_DATA_ADDR および• ステータスワードは処理ステータスを表します(0 処理中ではない、0xFFFF - 処理中)。

MB_DATA_LEN パラメータ• このイベントカウンタは、Modbus 要求が正常に実行された場合にインクリメントされます。
Modbus ファンクションの実行中にエラーが発生した場合、サーバーによってメッセージが送信されますが、イベントカウンタはインクリメントされません。

は評価されません。

80

-

1

08

診断コード 0x0000 でサーバーステータスをチェック(戻り値ループテスト - サーバーが要求を返信します):• 呼び出しごとに 1WORD

81

-

1

08

診断コード 0x000A でサーバーのイベントカウンタをリセット:• 呼び出しごとに 1WORD

101

0 ～ 65,535

1 ～ 2,000 01

リモートアドレス 0 ～ 65,535 の 1 ～ 2,000 出力ビッ
トの読み出し102

0 ～ 65,535

1 ～ 2,000 02

リモートアドレス 0 ～ 65,535 の 1 ～ 2,000 入力ビッ
トの読み出し103

0 ～ 65,535

1～125

03

リモートアドレス 0 ～ 65,535 の 1 ～ 125 保持レジ
スタの読み出し104

0 ～ 65,535

1～125

04

リモートアドレス 0 ～ 65,535 の 1 ～ 125 入力ワードの読み出し105

0 ～ 65,535

105

リモートアドレス 0 ～ 65,535 への 1 出力ビットの書
き込み

106

0 ～ 65,535

1

06

リモートアドレス 0 ～ 65,535 への 1 保持レジスタの
書き込み

115

0 ～ 65,535

1 ～ 1,968 15

リモートアドレス 0 ～ 65,535 への 1 ～ 1,968 出力ビットの書き込み

3704

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
MB_MODE

MB_DATA_AD
DR

MB_DATA Modbus
_LEN
ファンク
ション

ファンクションおよびデータタイプ

116

0 ～ 65,535

1～123

リモートアドレス 0 ～ 65,535 への 1 ～ 123 保持レ

16

ジスタの書き込み
3 ～ 10、予約済み

12 ～ 79、82 ～ 100、
107 ～
114、
117 ～ 255

下記も参照
MB_CLIENT の説明 (ページ 3696)

MB_DATA_PTR パラメータ

説明
MB_DATA_PTR パラメータは、Modbus サーバーから受信される、または Modbus サーバ
ーに送信されるデータ用のデータバッファに対するポインタです。データバッファとしては、グローバルデータブロックまたはメモリ領域(M)を使用できます。
メモリ領域(M)内のバッファの場合、次の要領で ANY 形式のポインタを使用します。「P#ビットアドレス」 「データタイプ」 「長さ」(例: P#M1000.0 WORD 500)。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3705

通信
6.5 通信プロセッサ
データバッファが存在するメモリ領域に応じて、MB_DATA_PTR は、さまざまなデータ構
造体を参照できます。
• アクセスが最適化されたグローバル DB を使用するとき、MB_DATA_PTR は、基本デー
タタイプまたは基本データタイプの配列のタグを参照できます。以下のデータタイプ
がサポートされています。
データタイプ

ビット単位での長さ

Bool

1

Byte、SInt、USInt、Char

8

Word、Int、WChar、UInt

16

DWord、DInt、UDInt、Real32

このような場合、すべてのサポートされているデータタイプはすべての Modbus ファンクションで使用できます。たとえば、MB_CLIENT は、バイトタイプのタグで受信されたビットを、このバイトの他のビットを変更しないで指定されたアドレスに書き込むこともできます。このため、ビット指向のファンクションを実行するためにビットの配列を持つことは不要です。
• ビットメモリアドレス領域、またはメモリ領域として標準アクセスのグローバル DB を使用する場合、MB_DATA_PTR 用の基本データタイプに対する制限はもう存在しません;
この場合、MB_DATA_PTR は、PLC データタイプ(UDT)およびシステムデータタイプ(SDT)などの複合データ構造体を参照することもできます。
注記
ビットメモリアドレス領域をデータバッファとして使用
ビットメモリアドレス領域を MB_DATA_PTR 用のデータバッファとして使用する場合、この変数を監視する必要があります。S7-1500-CPU の場合、それは 16 KB で、S7-1200-CPU の場合、それは 8 KB です。

3706

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

CONNECT パラメータ
CONNECT パラメータの接続記述子「MB_CLIENT」命令には、2 つの異なる接続記述子を使用できます。
• 構造 TCON_IP_v4 によるプログラミングされた接続
接続パラメータは TCON_IP_v4 構造体に保存され、接続は命令「MB_CLIENT」の呼び出
しによってセットアップされます。
• 構造 TCON_Configured による設定した接続
設定した接続は、既に CPU によって確立されています。 構造 TCON_Configured を使用
して、命令に対して使用する既存の接続を指定します。
命令「MB_CLIENT」の各インスタンスには、一意の接続が必要です。 命令の各インスタンスに対して個別の構造 TCON_IP_v4 または TCON_Configured を作成して、接続を記述します。

プログラミングされた接続の接続記述子
CONNECT パラメータでプログラミングされた接続の場合、接続の記述には TCON_IP_v4 に従って以下の構造を使用します。
• タイプ TCP の接続のみが TCON_IP_v4 構造に指定されていることを確認します。
• この接続は、以下の TCP ポート番号を使用できません。 20、21、25、80、102、
123、5001、34962、34963、および 34964。
バイ パラメータト

データタイ 開始値
プ

説明

0…

HW_ANY

ローカルインターフェースのハードウェア識別子(値InterfaceID

-

1
2…

の範囲:0～65535)。
ID

CONN_OUC -3

この接続への参照(値の範囲:1～4095)。
このパラメータは、CPU 内の接続を一意に識別します。 命令「MB_CLIENT」の個々のインスタンスは、固有の ID を使用する必要があります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3707

通信
6.5 通信プロセッサ
バイ パラメータト

データタイ 開始値
プ

説明

4

BYTE

接続タイプ

ConnectionType11

TCP の場合は、11 (10 進数)を選択します。 その他の接続タイプは、許可されていません。 別の接続タイプ(UDP など)が使用された場合、対応するエラーメッセ
ージが命令の STATUS パラメータで出力されます。
5

ActiveEstablishe

BOOL

TRUE

d
6…

接続の確立方法の ID
アクティブ接続の確立の場合は、TRUE を選択します。

RemoteAddress

9

ARRAY

-

接続パートナーの IP アドレス(Modbus サーバー)、た[1..4] of

とえば、192.168.0.1:

BYTE• addr[1] = 192• addr[2] = 168• addr[3] = 0• addr[4] = 1

10RemotePort

UINT

502

… 11

リモート接続パートナーのポート番号(値の範囲:1～49151)。
TCP/IP プロトコルを使用してクライアントが接続および通信を確立するサーバーの IP ポート番号を使用(既定値: 502).

12

LocalPort

UINT

… 13

0

ローカル接続パートナーのポート番号:• ポート番号:1～49151• 任意のポート: "0"

注記
命令「MB_CLIENT」バージョン 2.1 の移行
パラメータ CONNECT_ID、IP_PORT、および IP_OCTET_x が、「MB_CLIENT」命令のバージ
ョン 3.0 で TCON_IP_v4 構造体にマッピングされます。
• 「MB_CLIENT」V2.1 命令のパラメータ「CONNECT_ID」は、TCON_IP_v4 のパラメータ ID に相当します。
• 「MB_CLIENT」V2.1 命令のパラメータ「IP_PORT」は、TCON_IP_v4 のパラメータ
RemotePort に相当します。
• 「MB_CLIENT」V2.1 命令の 4 つのパラメータ「 IP_OCTET_x 」は、TCON_IP_v4 のパラメー
タ RemoteAddress の配列に相当します。

3708

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

設定した接続の接続記述子
CONNECT パラメータでプログラミングした接続の場合、接続の記述には
TCON_Configured.に従って以下の構造を使用します。
• タイプ TCP の接続のみが TCON_Configured 構造に指定されていることを確認します。
• この接続は、以下の TCP ポート番号を使用できません。20、21、25、80、102、123、
5001、34962、34963、および 34964。
バイ パラメータト

データタイ 開始値
プ

説明

0…

HW_ANY

ローカルインターフェースのハードウェア識別子(値InterfaceId

-

1
2…

の範囲:0～65535)。
ID

CONN_OUC -34

この接続への参照(値の範囲:1～4095)。
既存の接続の接続 ID を入力します。

ConnectionType

BYTE

0

接続タイプ
設定した接続に対して 254 (10 進数)を選択します。

パラメータステータス

パラメータ STATUS (全般的なステータス情報)
STATUS*(W#16#)

説明

0000

命令がエラーなしで実行されました。

0001

接続が確立されました。

0003

接続が終了しました。

7000

動作中のジョブはなく、確立された接続もありません(REQ=0、DISCONNECT=1)。

7001

接続の確立がトリガされました。

7002

中間呼び出し。接続を確立中です。

7003

接続を終了中です。

7004

接続が確立され、モニタされています。ジョブ処理が行われていません。

7005

データを送信中です。

7006

データを受信中です。

*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3709

通信
6.5 通信プロセッサ

パラメータ STATUS(プロトコルエラー)
STATUS
*
(W#16
#)

ローカル
および/ま
たはリモ
ートエラ
ー

MB_SERVER から 説明の応答内のエラー
コード(B#16#)

80C8

ローカル

-

定義された期間内にサーバーの応答がありませんでした。
Modbus サーバーへの接続をチェックします。このエラーは、設定された繰り返し試行回数が完了した場合にのみ、報告されます。
「MB_CLIENT」命令が、定義された時間以内に、最初に転送されたトランザクション ID (Static タグ MB_TRANSACTION_ID を参照)を持つ応答を受信しないと、このエラーコードが出力されま
す。

8380

ローカル

-

受信された Modbus フレームの形式が不正であるか、または受信されたバイト数が少なすぎます。

8381

リモート

01

ファンクションコードはサポートされていません。

8382

ローカル

-

• フレームヘッダーの Modbus フレームの長さが、受信したバ
イト数と一致しません。
• バイト数が、実際に送信されたバイト数と一致しません(ファンクション 1-4 のみ)。たとえば、「MB_CLIENT」が奇数のワードを要求するが、「MB_SERVER」は常に偶数のワードを送信する場合などがその場合に当たります。
• 受信されたフレームの開始アドレスが、保存された開始アドレスと一致しません(ファンクション 5、6、15、16)。
• ワード数が、実際に転送されたワード数と一致しません(ファンクション 15 および 16)。

リモート

03

受信した Modbus フレームでの不正な長さ指定。サーバー側をチェックします。

8383

ローカル

-

データの読み出しまたは書き込みのエラー、または MB_DATA_PTR (ページ 3705)のアドレス領域外へのアクセス。

リモート

02

データの読み出しまたは書き込みのエラー、またはサーバーのア
ドレス領域外へのアクセス

3710

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサSTATUS
*
(W#16
#)

ローカル
および/ま
たはリモ
ートエラ
ー

MB_SERVER から 説明の応答内のエラー
コード(B#16#)

8384

ローカル

-

• 無効な例外コードが受信されました。
• クライアントによって最初に送信されたデータ値とは異なる
データ値が受信されました(ファンクション 5、6、および 8)。
• 無効なステータス値が受信されました(ファンクション 11)

8385

リモート

03

データ値のエラー(ファンクション 5)

ローカル

-

• 診断コードはサポートされていません。
• クライアントによって最初に送信されたコードと異なるサブ
ファンクションコードが受信されました(ファンクション 8)。

8386

リモート

03

診断コードはサポートされていません

ローカル

-

受信したファンクションコードが、最初に送信されたファンクションコードと一致しません。

8387

ローカル

-

サーバーによって受信された Modbus TCP フレームのプロトコル
ID が、「0」ではありません。

8388

ローカル

-

Modbus サーバーが、要求されたデータ長とは異なるデータ長を送信しました。Modbus ファンクション 5、6、15、または 16 を使用するときのみ、このエラーが発生します。

*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

パラメータ STATUS (パラメータエラー)
STATUS*(W#16#)

説明

80B6

無効な接続タイプ。TCP 接続のみがサポートされています。

80BB

ActiveEstablished パラメータ(接続確立のタイプ識別子、CONNECT パラメータ (ページ 3707)を参照)の値が無効です:• サーバーの場合、パッシブ接続確立のみが許可されています(ActiveEstablished = FALSE)。
• クライアントの場合、アクティブ接続確立のみが許可されています(ActiveEstablished =TRUE)。

8188

MB_MODE パラメータの値が無効です。

8189

MB_DATA_ADDR パラメータのデータのアドレス指定が無効です。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3711

通信
6.5 通信プロセッサSTATUS*(W#16#)説明

818A

MB_DATA_LEN パラメータのデータ長が無効です。

818B

MB_DATA_PTR パラメータのポインタが無効です。MB_DATA_ADDR (ページ 3705)および
MB_DATA_LEN パラメータの値もチェックする必要があります。

818C

パラメータ BLOCKED_PROC_TIMEOUT または RCV_TIMEOUT のタイムアウト(命令の Static タグを参照)。BLOCKED_PROC_TIMEOUT および RCV_TIMEOUT は、範囲 0.5 ～ 55 秒内であることが必要です。

8200• 現在、このポート経由で別の Modbus 応答が処理されています。
• 同じ接続パラメータの MB_CLIENT の別のインスタンスが、既存の Modbus 要求を処理しています。

*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
注記
内部で使用される通信命令のエラーコード「MB_CLIENT」命令を使用すると、表にリストされたエラーに加えて、命令によって使用される通信命令(「TCON」、「TDISCON」、「TSEND」、「TRCV」、「T_DIAG」、および「TRESET」)
が原因のエラーが発生する可能性があります。
エラーコードが、「MB_CLIENT」命令のインスタンスデータブロックを介して割り当てられます。それぞれの命令に対して、エラーコードが"Static"セクションの STATUS に表示されます。
エラーコードの意味は、対応する通信命令の文書で入手できます。
注記
データの送信または受信時の通信エラー
データの送信または受信時に通信エラーが発生すると(80C4 (Temporary communications
error. The specified connection is temporarily down.)、80C5 (Remote partner closed
connection actively.)、80A1 (The specified connection is disconnected or is not yet
established.))、その既存の接続が終了します。
これは、接続が終了するとき返されるすべての STATUS 値が表示され、接続の終了の原因となった STATUS コードが接続が終了したときにのみ出力されることも示します。
例:データを受信したとき、一時的な通信エラーが発生すると、STATUS 7003 (ERROR=false)が最初に出力された後、80C4 (ERROR=true)が出力されます。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

3712

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

MB_SERVER:PROFINET を介した Modbus TCP サーバーとしての通信
MB_SERVER の説明

説明「MB_SERVER」命令は、PROFINET 接続を経由して Modbus TCP サーバーとして通信します。「MB_SERVER」命令は、Modbus TCP クライアントの接続要求の処理、Modbus の要求の受信および処理、および応答の送信を行います。
ファームウェアバージョン V4.0 の S7-1200 の場合、ライブラリバージョン V3.1 までの「MB_SERVER」命令を使用できます。S7-1200 (ファームウェアバージョンが V4.1 以降)および S7-1500 の場合、すべてのライブラリバージョンの「MB_SERVER」命令を使用できます。
この接続は、CPU または CM/CP のローカルインターフェースを経由して実行できます。
この命令を使用するためにハードウェアモジュールを追加する必要はありません。
通知
セキュリティ情報
ネットワークの各クライアントは、プロセスイメージ入出力や、Modbus 保持レジスタによって定義されるデータブロックまたはビットメモリ領域に対する読み出し/書き込みのアクセスが与えられていることに注意してください。
このオプションは、IP アドレスへのアクセスを制限して、未許可の読み出しおよび書き込
み操作を防止するために使用できます。ただし、未許可のアクセスの場合でも、共有ア
ドレスは使用できることに注意してください。

複数のサーバー接続
複数のサーバー接続を作成することが可能です。これによって、単一の CPU が同時に複数の Modbus TCP クライアントからの接続を受け入れることができます。
Modbus TCP サーバーは複数の TCP 接続をサポートしています。接続の最大数は、使用している CPU によって異なります。
Modbus TCP クライアントおよびサーバーの接続を含む 1 つの CPU の接続合計数は、サポートされている接続の最大数を超えてはなりません。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3713

通信
6.5 通信プロセッサ
Modbus TCP 接続は、「MB_CLIENT」および「MB_SERVER」インスタンスのいずれかまたは両方によって共有することもできます。
サーバー接続の場合は、以下のルールに注意してください。
• 各「MB_SERVER」接続は、固有のインスタンス DB を使用する必要があります。
• 各「MB_SERVER」接続は、固有の接続 ID を使用する必要があります。
命令の各インスタンス DB に対しては、関連する個別の接続 ID を使用する必要があります。接続 ID およびインスタンス DB は対となり、各接続に対して固有である必要があります。
• 「MB_SERVER」命令は、各接続に対し個別に呼び出される必要があります。

パラメータ
次の表に、「MB_SERVER」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

説明

DISCONNECT

Input

BOOL

「MB_SERVER」命令を使用し、パートナーモジュールとのパッシブ接続を開始します。サーバーが、CONNECT パラメータでSDT 「TCON_IP_v4」に入力される IP アドレスからの接続要求に応答します。
このパラメータを使用して、接続要求の承認のタイミングを制御することが可能です。
• 0:パッシブ接続は、通信接続がない場合に確立されます。
• 1:接続終了の初期化。入力が設定された場合、その他の操作は実行されません。正常な接続の終了の後に、値 0003 がSTATUS パラメータに出力されます。

MB_HOLD_REG(ページ 3719)

InOut

VARIANT 「MB_SERVER」命令の Modbus 保持レジスタへのポインタ
MB_HOLD_REG は、常に、2 バイトより大きいメモリ領域を参照する必要があります。
保持レジスタは、Modbus クライアントが Modbus ファンクション 3 (読み出し)、6 (書き込み)、16 (複数の書き込み)、および23 (1 つのジョブでの読み出しと書き込み)を使用してアクセスできる値を含みます。
保持レジスタとして、最適化されたアクセスのあるグローバル
データブロックまたはビットメモリのメモリ領域を使用します。

3714

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
パラメータ

宣言

データタ
イプ

説明

CONNECT (ペー InOut

VARIANT

接続記述子の構造へのポインタ

ジ 3720)以下の構造(SDT)を使用できます。
• TCON_IP_v4:プログラムされた接続の確立に必要なすべてのアドレスパラメータを含みます。既定のアドレスは 0.0.0.0(任意の IP アドレス)ですが、サーバーがこのアドレスからの要求のみに応答するように、特定の IP アドレスを入力できます。TCON_IP_v4 を使用している場合、「MB_SERVER」命
令を呼び出すと、接続が確立されます。
• TCON_Configured:設定した接続のアドレスパラメータを含みます。TCON_Configured を使用している場合、ハードウェアコンフィグレーションのダウンロード後に、CPU によって接続が確立されます。

NDR

Output

BOOL"New Data Ready":• 0:新規データなし• 1:新規データが Modbus クライアントによって書き込まれました。

DROutputBOOL"Data Read":• 0:データ読み出しなし• 1:データが Modbus クライアントによって読み取られまし
た。

ERROR

Output

BOOL「MB_SERVER」命令の呼び出し中にエラーが発生した場合、
ERROR パラメータの出力が「1」にセットされます。問題の原因に関する詳細情報は、STATUS パラメータによって示されます。

STATUS (ペーOutputWORD

命令の詳細なステータス情報。

ジ 3723)
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3715

通信
6.5 通信プロセッサ

命令の静的タグ
以下の表では、プログラム内で使用される「MB_SERVER」命令のインスタンスデータブ
ロックの静的タグについて説明します。HR_Start_Offset タグを書き込むことができます。
他のタグを読み取り、Modbus ステータスをモニタすることができます。
タグ

データタ
イプ

開始値

説明

HR_Start_Offset

WORD

0

Modbus 保持レジスタの開始アドレスを割り当てます。

QB_Start

WORD

0

書き込み可能な出力の許可されているアドレス範囲の開始アドレス(バイト 0 ～ 65535)

QB_Count

WORD

0xFFFF

Modbus マスタが書き込み可能な出力バイト数。
例:
QB_Start=0 および QB_Count=10:出力バイト 0 ～ 9 を書き込みできます。
QB_Count=0:出力バイトを書き込みできません。

Request_Count

WORD

0

サーバーが受信した要求の合計数です。

Server_Message_

WORD

0

受信した関連するサーバーへのアラームの合計数です。

WORD

0

エラーが発生した転送数を検知するためのカウンタです。このCount
Xmt_Rcv_Count

カウンタは、無効な Modbus 要求を受信する場合のみインクリ
メントされます。
Exception_Count

WORD

0

特に「MB_CLIENT」へのエラーメッセージの原因になる
Modbus に対してエラー数を検知するためのカウンタです。

Success_Count

WORD

0

サーバーによって正常に実行された要求の数を検知するためのイベントカウンタです。

Connected

BOOL0

割り当てられたクライアントへの接続が確立されているかどうかを示します:1 = 接続済み、0 = 未接続。

Modbus アドレスのプロセスイメージへのマッピング「MB_SERVER」命令によって、受信 Modbus ファンクション(1、2、4、5、および 15)がCPU (データタイプ BOOL および WORD の使用)のプロセスイメージ入力および出力に対し、直接読み取りおよび書き込みアクセスを実行できるようになります。
S7-1200-CPU の場合、入力のプロセスイメージのアドレス空間と出力のプロセスイメージのアドレス空間は 1 KB です; S7-1500-CPU の場合、各アドレス空間は 32 KB です。

3716

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
次の表に、上にリストした Modbus ファンクションのアドレス空間を示します。
Modbus ファンクション
ファンクシ

ファンクション

データ領域

アドレス空間01

読み取り:ビット

Output0～65.53502

読み取り:ビット

Input

0

～

65.53504

読み取り:WORD

Input

0

～

65.53505

書き込み:ビット

Output0～65.53515

書き込み:ビット

Output0～65.535ョンコード

ファンクションコード 3、6、16、および 23 の受信 Modbus 要求は、Modbus 保持レジス
タ(保持レジスタは MB_HOLD_REG パラメータで指定)への書き込み、または Modbus 保持
レジスタから読み取りを行います。

例:静的タグ HR_Start_Offset でのアドレス指定。
Modbus 保持レジスタのアドレスは 0 (MB_CLIENT の観点からは 40.001)から開始されます。これらのアドレスは、保持レジスタ用の CPU メモリ領域のアドレス領域に対応します。Modbus 保持レジスタが 0 以外の開始アドレスを持つように、HR_Start_Offset タグを定義することもできます。
例:保持レジスタを MW100 から開始し、長さを 100 WORD とします。HR_Start_Offset パ
ラメータのオフセット値は、この保持レジスタ開始アドレスが 0 から 20 へ移動することを示します。これによって、保持レジスタに対して、20 未満のアドレスや 119 を超えるア
ドレスを指定すると、常にエラーが発生します。
HR_Start_Offse アドレス
t

最小値

最大値

0

Modbus アドレス(WORD)

099

CPU アドレス

MW100

MW298

Modbus アドレス(WORD)

20

119

CPU アドレス

MW100

MW298

20

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3717

通信
6.5 通信プロセッサ

Modbus ファンクション
次の表に、「MB_SERVER」命令によってサポートされているすべての Modobus ファンクションをリストします。
ファンクショ 説明
ンコード
01

出力ビットの読み出し

02

入力ビットの呼び出し

03

保持レジスタの読み出し

04

入力ワードの読み出し

05

出力ビットの書き込み

06

保持レジスタの書き込み

08

診断ファンクション:• エコーテスト(サブファンクション 0x0000):「MB_SERVER」命令は、データワードを受信し、これを変更せずに Modbus クライアントに返します。
• イベントカウンタのリセット(サブファンクション 0x000A):「MB_SERVER」命令は次のイベントカウンタをリセットします: 「Success_Count」、「Xmt_Rcv_Count」、「Exception_Count」、「Server_Message_Count」、および「Request_Count」。

11

診断ファンクション:通信のイベントカウンタのフェッチ「MB_SERVER」命令は通信用の内部イベントカウンタを使用し、Modbus サーバーに送信された、正常に実行された読み取りおよび書き込み要求の回数を記録します。
このイベントカウンタは、ファンクション 8 または 11 ではインクリメントされません。同じことが、通信エラーの原因になる要求についても言えます。たとえば、プロトコルエラーが発生した場合です(受信した Modbus 要求のファンクションコードがサポートされていない
など)。

15

出力ビットの書き込み

16

保持レジスタの書き込み

23

要求による保持レジスタの書き込みと保持レジスタの読み出し例
2 つの S7-1500 CPU 間の Modbus TCP 通信のサンプルプロジェクトは、エントリ ID
94766380 (http://support.automation.siemens.com/WW/view/en/94766380)のサービス
およびサポートポータルにあります。

3718

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
このサンプルでは 2 つの Modbus ファンクションが使用されています。各 Modbus ファンクションでは、Modbus ブロックペア(MB_CLIENT および MB_SERVER)を使用してModbus TCP 接続が確立されます。

)%)& :5B+ROGLQJ5HJLVWHU>)&@

2%)& :5B+ROGLQJ5HJLVWHU>)&@

0%B&/,(17'% '$7$B
&21
>'%@

0DLQ
>2%@
0%B
&/,(17'% '$7$B
&21
>'%@

)&

5'B
+ROGLQJ5HJLVWHU>)&@'% '$7$B
&21
>'%@

ዃዙናዙኴዊኍ዆ኽ
6&38
0RGEXVኌ዆ኁቿዐእ

ኔኖኣኽ
ኳዊአኌ

ኤዙኜ
ኳዊአኌ

0%B
6(59(50DLQ>2%@

7&3㘴倩 ,' 
0RGEXVኲቾዐኌኔዄዐ
宖㟿ቑ≬㖐ዉንኖኜቑ㦇ሰ手ቢ

)%)& 5'B+ROGLQJ5HJLVWHU>)&@

2%

)%

)%

0%B
6(59(5'% '$7$B
&21
>'%@

7&3㘴倩 ,' 
0RGEXVኲቾዐኌኔዄዐ
≬㖐ዉንኖኜቑ崼ቢ♥ቭ

ኤዙኜ
ኳዊአኌ

ኔኖኣኽ
ኳዊአኌ

ዃዙናዙኴዊኍ዆ኽ
6&38
0RGEXVኒዙክዙ

下記も参照
同期命令と非同期命令の相違 (ページ 29)

MB_HOLD_REG パラメータ
説明
MB_HOLD_REG パラメータは、Modbus サーバーから読み取られた、または Modbus サー
バーに書き込まれたデータの格納用データバッファに対するポインタです。グローバルデ
ータブロック、またはメモリ領域としてのビットメモリ(M)を使用できます。
• データブロック(D)のアドレス数の上限値は、CPU の最大ワークメモリによって決まります。
• ビットメモリ(M)の数の上限値は、CPU のメモリ領域のサイズによって決まります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3719

通信
6.5 通信プロセッサ
次の表に、Modbus ファンクション 3 (WORD の読み取り)、6 (WORD の書き込み)、16 (複数の WORD の書き込み)、および 23 (複数のワードの読み取りおよび書き込み)用の保持レ
ジスタに対する Modbus アドレスのマッピング例を示します。
Modbus アドレス

MB_HOLD_REG パラメータ - 例

0

MW100

DB10.DBW0"Recipe".ingredient[1]

1

MW102

DB10.DBW2"Recipe".ingredient[2]

2

MW104

DB10.DBW4"Recipe".ingredient[3]

3

MW106

DB10.DBW6"Recipe".ingredient[4]

4

MW108

DB10.DBW8"Recipe".ingredient[5]CONNECT パラメータ
CONNECT パラメータの接続記述子「MB_SERVER」命令には、2 つの異なる接続記述子を使用できます。
• 構造 TCON_IP_v4 によるプログラミングされた接続
接続パラメータは TCON_IP_v4 構造体に保存され、接続は命令「MB_SERVER」の呼び出
しによってセットアップされます。
• 構造 TCON_Configured による設定した接続
設定した接続は、既に CPU によって確立されています。 構造 TCON_Configured を使用
して、命令に対して使用する既存の接続を指定します。
命令「MB_SERVER」の各インスタンスには、一意の接続が必要です。 命令の各インスタンスに対して個別の構造 TCON_IP_v4 または TCON_Configured を作成して、接続を記述します。

プログラミングされた接続の接続記述子
CONNECT パラメータでプログラミングした接続の場合、接続の記述には TCON_IP_v4.に従って以下の構造を使用します。
• タイプ TCP の接続のみが TCON_IP_v4 構造に指定されていることを確認します。
• この接続は、以下の TCP ポート番号を使用できません。20、21、25、80、102、123、
5001、34962、34963、および 34964。

3720

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

バイ パラメータト

データタイ 開始値
プ

説明

0…

HW_ANY

ローカルインターフェースのハードウェア識別子(値InterfaceID

-

1
2…

の範囲:0～65535)。
ID

CONN_OUC -3

この接続への参照(値の範囲:1～4095)。
このパラメータは、CPU 内の接続を一意に識別します。 命令「MB_SERVER」の個々のインスタンスは、固有の ID を使用する必要があります。

4

ConnectionType

BYTE

11

接続タイプ
TCP の場合は、11 (10 進数)を選択します。 その他の接続タイプは、許可されていません。 別の接続タイプ(UDP など)が使用された場合、対応するエラーメッセ
ージが命令の STATUS パラメータで出力されます。

5

ActiveEstablishe

BOOL

FALSE

d
6…
9

RemoteAddress接続の確立方法の ID
パッシブ接続の確立の場合は、FALSE を選択します。

ARRAY

0.0.0.0

接続パートナーの IP アドレス、たとえば、[1..4] of

192.168.0.1:

BYTE• addr[1] = 192• addr[2] = 168• addr[3] = 0• addr[4] = 1
命令「MB_SERVER」が任意の接続パートナーからの接続要求を受け入れる必要がある場合、IP アドレスとして「0.0.0.0」を使用します。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3721

通信
6.5 通信プロセッサ
バイ パラメータト

データタイ 開始値
プ

説明

10

UINT

リモート接続パートナーのポート番号(値の範囲:1～

RemotePort

0

… 11

49151)。
命令「MB_SERVER」が任意のリモートパートナーからの接続要求を受け入れる必要がある場合、ポート番号として「0」を使用します。

12

LocalPort

UINT

502

… 13

ローカル接続パートナーのポート番号(値の範囲:1～49151)。
IP ポートの番号は、Modbus クライアントの接続要求に対してモニタされる IP ポートを定義します。
次の TCP ポート番号は、「MB_SERVER」命令のパッシ
ブ接続で使用してはなりません。20、21、25、80、
102、123、5001、34962、34963、および34964。

注記
命令「MB_SERVER」バージョン 2.1 の移行
パラメータ CONNECT_ID および IP_PORT は、「MB_SERVER」命令のバージョン 3.0 でTCON_IP_v4 構造にマッピングされます。
• 「MB_SERVER」V2.1 命令のパラメータ「CONNECT_ID」は、TCON_IP_v4 のパラメータ ID に相当します。
• 「MB_SERVER」V2.1 命令のパラメータ「IP_PORT」は、TCON_IP_v4 のパラメータ LocalPortに相当します。

設定した接続の接続記述子
CONNECT パラメータで設定した接続の場合、接続の記述には TCON_Configured に従って
以下の構造を使用します。
• タイプ TCP の接続のみが TCON_Configured 構造に指定されていることを確認します。
• この接続は、以下の TCP ポート番号を使用できません。20、21、25、80、102、123、
5001、34962、34963、および 34964。

3722

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

バイ パラメータト

データタイ 開始値
プ

説明

0…

HW_ANY

ローカルインターフェースのハードウェア識別子(値InterfaceID

-

1
2…

の範囲:0～65535)。
ID

CONN_OUC -34

この接続への参照(値の範囲:1～4095)。
既存の接続の接続 ID を入力します。

ConnectionType

BYTE

-

接続タイプ
設定した接続に対して 254 (10 進数)を選択します。

パラメータステータス

パラメータ STATUS (全般的なステータス情報
STATUS*(W#16#)

説明

0000

命令がエラーなしで実行されました。

0001

接続が確立されました。

0003

接続が終了しました。

7000

動作中の呼び出しはなく、確立された接続もありません(REQ=0、DISCONNECT=1)。

7001

最初の呼び出し。接続の確立がトリガされました。

7002

中間呼び出し。接続を確立中です。

7003

接続を終了中です。

7005

データを送信中です。

7006

データを受信中です。

*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3723

通信
6.5 通信プロセッサ

パラメータ STATUS(プロトコルエラー)
STATUS
*
(W#16
#)

ローカル
および/ま
たはリモ
ートエラ
ー

MB_SERVER から 説明の応答内のエラー
コード(B#16#)

8380

ローカル

-

受信された Modbus フレームの形式が不正であるか、または受信されたバイト数が少なすぎます。

8381

リモート

01

ファンクションコードはサポートされていません。

8382

リモート

03

データ長のエラー• 受信した Modbus フレームでの不正な長さ指定• Modbus フレームのヘッダーに入力されたフレーム長が、実際に受信したバイト数と一致しません。
• Modbus フレームのヘッダーに入力されたバイト数が、実際に受信したバイト数と一致しません(ファンクション 15 および
16)。

8383

ローカル

-

データの読み出しまたは書き込みのエラー、または MB_HOLD_REG (ページ 3719)のアドレス領域外へのアクセス。

リモート

02

データの読み出しまたは書き込みのエラー、またはサーバーのア
ドレス領域外へのアクセス

8384

ローカル

-

• 無効な例外コードが受信されました。
• サーバーによって最初に送信されたデータ値とは異なるデータ値が受信されました(ファンクション 5、6、および 8)。
• 無効なステータス値が受信されました(ファンクション 11)

8385

リモート

03

データ値のエラー(ファンクション 5)

ローカル

-

• 診断コードはサポートされていません。
• サーバーによって最初に送信されたコードと異なるサブファ
ンクションコードが受信されました(ファンクション 8)。

リモート

03

診断コードはサポートされていません*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。

3724

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

パラメータ STATUS (パラメータエラー)
STATUS*(W#16#)

説明

80BB

ActiveEstablished パラメータ(接続確立のタイプ識別子、CONNECT パラメータ (ページ 3720)を参照)の値が無効です:• サーバーの場合、パッシブ接続確立のみが許可されています(active_established =FALSE)。
• クライアントの場合、アクティブ接続確立のみが許可されています(active_established= TRUE)。

8187

MB_HOLD_REG パラメータのポインタが無効です。データ領域が小さすぎます。

*ステータスコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
注記
内部で使用される通信命令のエラーコード「MB_SERVER」命令を使用すると、表にリストされたエラーに加えて、命令によって使用される通信命令(「TCON」、「TDISCON」、「TSEND」、「TRCV」、「T_DIAG」、および「T_RESET」)が原因のエラーが発生する可能性があります。
エラーコードが、「MB_SERVER」命令のインスタンスデータブロックを介して割り当てられます。それぞれの命令に対して、エラーコードが"Static"セクションの STATUS に表示されます。
エラーコードの意味は、対応する通信命令の文書で入手できます。
注記
データの送信または受信時の通信エラー
データの送信または受信時に通信エラーが発生すると(80C4 (Temporary communications
error. The specified connection is temporarily down.)、80C5 (Remote partner closed
connection actively.)、80A1 (The specified connection is disconnected or is not yet
established.))、その既存の接続が終了します。
これは、接続が終了するとき返されるすべての STATUS 値が表示され、接続の終了の原因となった STATUS コードが接続が終了したときにのみ出力されることも示します。
例:データを受信したとき、一時的な通信エラーが発生すると、STATUS 7003 (ERROR=false)が最初に出力された後、80C4 (ERROR=true)が出力されます。

下記も参照
GET_ERR_ID:ローカルでエラー ID を取得 (ページ 384)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3725

通信
6.5 通信プロセッサ

統計用のタグ NDR_immediate および
DR_immediate NDR_immediate および
DR_immediate
統計用のタグ NDR_immediate および DR_immediate は、命令バージョン V5.0 以降の命令
MB_SERVER のインスタンスデータブロック内に含まれています。
タグ

データタイ
プ

NDR_immediate BOOL

開始値

意味

FALSE

パラメータ NDR (New Data Ready)と同じ意味です。
NDR_immediate は、MODBUS-TCP 書き込み要求が処理される
MB_SERVER による同一の呼び出し内で更新されます。

DR_immediate

BOOL

FALSE

パラメータ DR (Data Read)と同じ意味です。
DR_immediate は、MODBUS-TCP 読み取り要求が処理される
MB_SERVER による同一の呼び出し内で更新されます。

Modbus TCP ライブラリのバージョン V3.x 以前とバージョン V4.0 以降の相違
Modbus 命令のバージョン V3.x 以前とバージョン V4.0 以降の相違
MB_SERVER/MB_CLIENT MODBUS 命令では、バージョン間で以下の相違が存在します。
• アドレスパラメータ– バージョン 3.x 以前では、Modbus TCP サーバー用のアドレスデータが、入力パラ
メータ「IP_x」によって指定されます。
– バージョン 4.0 以降は、この目的のために、CONNECT 入力パラメータのTCON_IP_V4 および TCON_Configured システムデータタイプを使用します。
• 実行中にエラーが発生した場合、Modbus 命令のバージョン 4.0 以降では、その他の
STATUS アラームが使用可能で、それに応じて評価を行うことができます。

3726

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ
この命令の詳細は、MB_CLIENT (ページ 3696) and MB_SERVER (ページ 3713)の説明を参照
してください。
注記
Modbus TCP ライブラリをバージョン V3.x 以前から V4.0 以降へ変更
Modbus TCP ライブラリをバージョン V3.x 以前から V4.0 以降へ置き換えるときは、オー
プンユーザーコミュニケーションライブラリも置換する必要があります。その後で、ユー
ザープログラムに関連するすべての命令をチェックします。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3727

通信

3728

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.5 通信プロセッサ

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3729

通信

6.6

TeleService

6.6.1

TM_MAIL:電子メールの転送

6.6.1.1

TM_MAIL の説明

説明「TM_MAIL」命令は、非同期で動作します。つまり、複数の呼び出しにわたって実行されます。「TM_MAIL」命令を呼び出すとき、インスタンスを指定する必要があります。インスタンスには、属性「保持」を設定してはなりません。この属性は、CPU が STOP から
RUN に切り替わった場合にインスタンスが初期化され、その後、新規の電子メール送信ジ
ョブがトリガされるようにします。
電子メールの送信は、REQ パラメータの「0」から「1」へのエッジの切り替えで開始します。ジョブステータスは、出力パラメータ「BUSY」、「DONE」、「ERROR」、「STATUS」、
および「SFC_STATUS」によって示されます。この場合、「SFC_STATUS」は、呼び出された
通信ブロックの「STATUS」出力パラメータに対応します。

3730

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.6 TeleService
出力パラメータ DONE、ERROR、STATUS、および SFC_STATUS は、それぞれ BUSY 出力パ
ラメータのステータスが「1」から「0」に切り替わった場合に、1 サイクルのみ表示されます。次の表に、BUSY、DONE、および ERROR の関係を示します。この表を使って、「TM_MAIL」命令の現在のステータスと、電子メールの送信がいつ完了するか決定できま
す。
DONE

BUSY

ERROR

説明

0

1

0

ジョブが処理中です。

1

0

0

ジョブが正常に完了しました。

0

0

1

ジョブがエラーありで終了しました。エラーの原因は、STATUS および
SFC_STATUS パラメータで参照できます。

0

0

0

「TM_MAIL」命令に(新規)ジョブが割り当てられていません。

「TM_MAIL」が有効なときに CPU が STOP モードに移行した場合、メールサーバーへの通信接続が中止されます。メールサーバーへの通信接続は、産業用イーサネットバスで通信上の問題が発生した場合にも、失われます。この場合、電子メールの転送が割り込みされ、宛先に到達しません。
通知
ユーザープログラムの変更「TM_MAIL」の呼び出しに直接影響を与える部分
使用しているユーザープログラムでは、のみを変更できます。
• CPU が「STOP」モードの場合。
• メールが送信されない場合(REQ = 0 および BUSY = 0)。

これは、特に、「TM_MAIL」呼び出しまたは「TM_MAIL」インスタンスの呼び出しを含むプログラムブロックの削除および置き換えに関連します。
この制限を無視すると、接続リソースが占有される場合があります。産業用イーサネット
経由で、オートメーションシステムの TPC/IP 通信ファンクションが未定義ステータスに変更されることがあります。
この切り替えが転送された後、CPU のウォームリスタートまたはコールドリスタートが必要になります。

データの整合性
電子メールの送信がトリガされるたびに、この命令の ADDR_MAIL_SERVER 入力パラメー
タが再度「TM_MAIL」命令から取得されます。操作中に変更が加えられた場合、「新しい」値は電子メールが再度トリガされた場合にのみ有効になります。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3731

通信
6.6 TeleService
一方、WATCH_DOG_TIME、TO_S、CC、FROM、SUBJECT、TEXT、ATTACHMENT、および該当する場合は USERNAME および PASSWORD パラメータも実行中に「TM_MAIL」命令から取得されます。つまり、これらはジョブの完了後(BUSY = 0)のみに変更可能です。

TS Adapter IE のパラメータの設定
TS Adapter IE では、TS Adapter IE が使用しているサービスプロバイダのダイヤルアップサ
ーバーへの接続を確立できるように、発信呼び出しのパラメータを指定する必要があります。
接続の確立を「必要に応じて」に設定すると、電子メールを送信する必要がある場合にのみ接続が確立されます。
アナログモデム接続の場合、接続の確立にかかる時間が長くなる場合があります(約 1 分)。
WATCH_DOG_TIME パラメータを指定した場合、接続を確立するために必要な時間を考慮
してください。

パラメータ
次の表に、「TM_MAIL」命令のパラメータを示します。
パラメータ

宣言

データタ
イプ

メモリ領域

説明

REQ

Input

BOOL

I、Q、M、D、

制御パラメータ REQUEST:信号立ち上がりエッ

L、または定数ジで電子メールの送信を有効にします。

ID

Input

CONN_OU D、L、または定 確立する接続の参照。TCON (ページ 3053)、
C (Word)

数

TDISCON (ページ 3067)、TSEND (ページ 3074)、および TRCV (ページ 3079)命令のID パラメータを参照してください。ここでは、ユーザープログラムでこの命令の追加のイ
ンスタンスに使用されていない番号を入力する必要があります。

TO_S (ページ 3736)Input

STRINGD

受信元アドレスの入力パラメータ:
最大長 240 文字の STRING (呼び出しの例を参
照)。

3732

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.6 TeleService
パラメータ

宣言

データタ
イプ

メモリ領域

説明

CC (ペーInput

STRINGD

CC 受信者アドレスの入力パラメータ(オプショ

ジ 3736)ン):最大長 240 文字の STRING (呼び出しの例を参照)。
ここに空の文字列が割り当てられている場合、
電子メールは CC 受信者には送信されません。

SUBJECT

Input

STRING

D

電子メールの件名の入力パラメータ。
最大長 240 文字の STRING。

TEXT

Input

STRING

D

電子メールのテキストの入力パラメータ(オプション):
最大長 240 文字のデータ文字列の参照。
このパラメータに空の文字列が割り当てられている場合、電子メールはテキストなしで送信されます。

ATTACHMENT

Input

VARIANT

I、Q、M、D、L 電子メール添付ファイルの入力パラメータ(オプション):最大長 65534 バイトのバイト/ワー
ド/ダブルワードフィールドの参照。指定された添付ファイルは、ファイル形式 BIN であることが必要です。
値が割り当てられていない場合、電子メールは添付ファイルなしで送信されます。

DONE

Output

BOOL

I、Q、M、D、L • DONE = 0:ジョブがまだ開始されていないか、または実行中です。
• DONE = 1:ジョブはエラーなく実行されまし
た。

BUSY

Output

BOOL

I、Q、M、D、L • BUSY = 1:電子メールの送信がまだ完了していません。
• BUSY = 0:「TM_MAIL」の処理が終了しまし
た

ERROR

Output

BOOL

I、Q、M、D、L ERROR = 1:処理中にエラーが発生しました。
STATUS および SFC_STATUS は、エラーのタイプに関する詳細情報を提供します。

STATUS (ペーOutputWORD

ジ 3736)

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

I、Q、M、D、L 出力/ステータスパラメータ STATUS:「TM_MAIL」命令の戻り値またはエラー情報。

3733

通信
6.6 TeleService
パラメータ

宣言

ADDR_MAIL_S Static*

データタ
イプ

メモリ領域

DWORD

I、Q、M、D、L メールサーバーの IP アドレス入力パラメータ:

ERVER

説明

たとえば、16 進数フォーマットのデータワー
ドとしての指定:IP アドレス= 192.168.0.200.
ADDR_MAIL_SERVER = DW#16#C0A800C8、
ただし:• 192 = 16#C0,• 168 =16#A8• 0 = 16#00 および• 200 = 16#C8.

WATCH_DOG_ Static*

TIME

I、Q、M、D、L 最大時間の入力パラメータ:

TIME「TM_MAIL」命令は、WATCH_DOG_TIME で指定された時間内に接続を確立するはずです。この時間が経過すると、ブロックがエラーで終了されます。接続の切断には特定の時間がかかる
ため、ブロックが終了されエラーが出力されるまでの時間が WATCH_DOG_TIME を超える場
合があります。まず、2 分の設定から始めてく
ださい。ISDN 電話接続を使用する場合、大幅に短い時間を選択できます。

USERNAME

Static*STRING

D

ユーザー名の入力パラメータ:
最大長 180 文字の STRING。ユーザー名は認証の必須条件です。

PASSWORD

Static*STRING

D

パスワードの入力パラメータ:
最大長 180 文字の STRING。パスワードは認証の必須条件です。

FROM (ペーStatic*STRINGジ 3736)D

送信元アドレスの入力パラメータ:
最大長 240 文字の STRING (呼び出しの例を参照)。

SFC_STATUS(ページ 3736)

Static*

WORD

I、Q、M、D、L 出力/ステータスパラメータ「SFC_STATUS」:
呼び出された通信ブロックのエラー情報。

*パラメータの値は、「TM_MAIL」命令の呼び出しごとには変更されません。値はインスタンスの静的パラメータ内にあり、命令が最初に呼び出されたときに 1 回のみ書き込まれます。

3734

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.6 TeleService
有効なデータタイプに関する追加情報については、「AUTOHOTSPOT」を参照してください。
注記
オプションのパラメータ
オプションのパラメータ CC、TEXT、および ATTACHMENT は、対応するパラメータが長さ> 0 の文字列を含む場合のみ電子メールと一緒に送信されます。
注記
ATTACHMENT パラメータ指定された添付ファイルは、ファイル形式 BIN であることが必要です。テキストを転送する
場合、以下のオプションがあります。
• Windows で、ファイル形式 BIN をテキストエディタとリンクします。
• Windows ファンクション[送信]または[開く]を使用します。

SMTP 認証
認証は、ID の確認手順、たとえばパスワードのクエリなどに、これを参照します。
「TM_MAIL」命令は、ほとんどのメールサーバーによって要求されている SMTP 認証手順
AUTH-LOGIN をサポートしています。お客様のメールサーバーの認証手順については、メールサーバーのマニュアルか、お客様のインターネットサービスプロバイダの Web サイトを参照してください。
AUTH-LOGIN 認証手順を使用する場合、「TM_MAIL」命令は、メールサーバーへのログオ
ンに使用するユーザー名を要求します。このユーザー名は、メールサーバーでユーザーがメールアカウントをセットアップするときに使用するユーザー名に対応します。このユーザー名を USERNAME パラメータに設定することによって、「TM_MAIL」命令が使用できるようになります。
ログオンするために、「TM_MAIL」命令は、関連するパスワードを要求します。このパス
ワードは、お使いのメールアカウントを設定したときに指定したパスワードに対応します。
これは、PASSWORD パラメータで「TM_MAIL」命令が使用できるようになります。
ユーザー名およびパスワードが、それぞれ暗号化されていない状態で(BASE64 コード)、メ
ールサーバーに転送されます。
DB でユーザー名が指定されていない場合、AUTH-LOGIN 認証プロシージャは使用されません。電子メールは、認証なしで送信されます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3735

通信
6.6 TeleService

例
詳細な応用例は、Siemens Industry Online Support の次の FAQ ID を参照してください。
67262019.

6.6.1.2

パラメータ TO_S、CC、および FROM

説明
TO_S、CC、および FROM パラメータは、たとえば次の内容を持つ文字列です。
• TO: <wenna@mydomain.com>, <ruby@mydomain.com>,• CC: <admin@mydomain.com>, <judy@mydomain.com>,• FROM: <admin@mydomain.com>
パラメータの入力時には、次のルールに注意してください。
• 「TO:」、「CC:」、および「FROM:」文字を入力する必要があります。
• それぞれのアドレスの前に空白文字および右開きの括弧「<」を入力する必要があります。
• それぞれのアドレスの後に左開きの括弧「>」を入力する必要があります。
• TO および CC では、それぞれのアドレスの後にコンマを入力する必要があります。
• FROM には 1 通の電子メールアドレスのみを入力でき、このアドレスの後にはコンマを入力できません。
ランタイムおよびメモリ領域の理由で、「TM_MAIL」命令はパラメータ TO_S、CC および
FROM の構文チェックを行いません。

6.6.1.3

STATUS および SFB_STATUS パラメータ

説明「TM_MAIL」命令の戻り値は、次のように分類されます。
• W#16#0000:「TM_MAIL」が正常に完了しました。
• W#16#7xxx:「TM_MAIL」のステータス• W#16#8xxx:通信ブロックの内部呼び出し中、またはメールサーバーからエラーが報告されました。

3736

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.6 TeleService
次の表に、内部呼び出しの通信ブロックのエラーコードを除く「TM_MAIL」の戻り値を示
します。
戻り値

戻り値

STATUS*SFB_STATUS(W#16#...):(W#16#...):

0000

-

説明

注記

「TM_MAIL」の処理がエラーなしで完了 「TM_MAIL」がエラーなしで完了されました。

しても、送信した電子メールが届いたことを意味しません(以下参照 - ポイント 1 の注)

7001「TM_MAIL」が動作中(BUSY = 1)。

最初の呼び出し、ジョブが開始さ
れました。

7002

7002

「TM_MAIL」が動作中(BUSY = 1)。

中間呼び出し、ジョブが既に有効
です。

8xxx

xxxx

「TM_MAIL」の処理が、内部呼び出しの SFB_STATUS パラメータの評価の
通信命令のエラーコードで完了しまし 詳細情報については、通信命令のた。

STATUS パラメータの説明を参照
してください。

8010

xxxx

接続の確立中のエラー。

SFB_STATUS パラメータの評価の詳細情報については、「TCON (ページ 3053)」命令の STATUS パラ
メータの説明を参照してください。

8011

xxxx

データ送信のエラー。

SFB_STATUS パラメータの評価の詳細情報については、「TSEND」(ページ 3074)命令の STATUS パラ
メータの説明を参照してください。

8012

xxxx

データ受信のエラー。

SFB_STATUS の評価の詳細情報については、「TRCV (ページ 3079)」
命令の STATUS パラメータの説明を参照してください。

8013

xxxx

接続の確立中のエラー。

SFB_STATUS の評価の詳細情報については、「TCON (ページ 3053)」および「TDISCON (ページ 3067)」命令の STATUS パラ
メータの説明を参照してください。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3737

通信
6.6 TeleService
戻り値

戻り値

STATUS*SFB_STATUS(W#16#...):(W#16#...):

8014

-

説明

注記

接続の確立が不可能です。

不正なメールサーバーの IP アドレス(ADDR_MAIL_SERVER)、または接続を確立するためには短すぎる
時間(WATCH_DOG_TIME)を入力した可能性があります。また、CPU がネットワークに接続していない、または CPU の設定が不正である可能性もあります。

8016

-

-

添付ファイルのコピー中のエラー

82xx, 84xx, ま -このエラーメッセージは最初にメール 注のポイント 2 を参照してくださたは 85xx

サーバーから発信され、最後の 3 桁は い。
SMTP プロトコルのエラー番号に対応します。
次の列に、発生する可能性のあるエラーコードを示します。

8450

-

操作が実行されませんでした:メールボ 後で再度実行してみてください。
ックスが使用不可/到達不可。

8451

-

操作が中止されました:ローカルの処理 後で再度実行してみてください。
エラー

8500

-

シンタックスエラー:エラーが認識され 「TM_MAIL」のパラメータをチェませんでした.これには、コマンド文字 ックします。電子メールを認証な列が長すぎる場合のエラーも含まれま しで送信してみてください。これす。これは、電子メールが LOGIN 認証 を行うには、USERNAME パラメー
手続きをサポートしない場合にも発生 タを空の文字列で置き換えます。
します。

8501

-

シンタックスエラー:パラメータまたは TO_S または CC に不正なアドレス
引数が不正

8502

-

を入力した可能性があります。

コマンドが不明または実装されていま エントリ、特に FROM パラメータ
せん。

をチェックします。これが不完全であったり、「@」または「.」が抜けていたりする場合があります。

8535

-

SMTP 認証が不完全。

不正なユーザー名または不正なパスワードを入力した可能性があり
ます。

3738

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

通信
6.6 TeleService
戻り値

戻り値

STATUS*SFB_STATUS(W#16#...):(W#16#...):

8550

-

説明

注記

メールサーバーに接続できない、アク 不正なユーザー名または不正なパセス権がありません。

スワードを入力した可能性があります。または、メールサーバーが使用している LOGIN をサポートしていません。また、別のエラーの原因は、TO_S または CC で「@」の後に不正なドメイン名を入力した可能性もあります。

8552

-

操作が中止されました:割り当てられた 後で再度実行してみてください。
メモリサイズを超えました。

8554

-

送信に失敗しました。

後で再度実行してみてください。

*エラーコードはプログラムエディタ内に整数、または 16 進数の値として表示できます。表示形式の切り替えについては、「関連項目」を参照してください。
注記
ステータスエラー
1. 受信者のアドレスの不正な入力では、「TM_MAIL」命令のステータスエラーは生成されません。この場合、これらが正しく入力されていても、電子メールの他の受信者への送信は保証されません。
2. SMTP エラーコードおよびその他のエラーコードの詳細は、インターネットの SMTP プロト
コルまたはメールサーバーのエラーマニュアルを参照してください。メールサーバーからの最新のメッセージは、BUFFER1 パラメータのインスタンス DB で表示することもできます。
「データ」以下で、「TM_MAIL」命令で最後に送信したデータを参照できます。

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3739

通信
6.6 TeleService

3740

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引
–

7

–D, 1167–I, 1163–R, 1174

7 セグメント表示, 448, 874, 1586
7 セグメント表示のビットパターンの作成, 1785
7 セグメント表示のビットパターン作成, 1108*

A

*D, 1167*I, 1164*R, 1175[RLO]「0」にリセット, 1129
1 に設定, 1129
反転, 36, 460, 1128

A, 1112A(, 1120
ABS, 206, 631, 1176, 1352, 1622
ACOS, 226, 651, 1182, 1368, 1636
ACT_TINT, 2336
AD, 1252
ADD, 194, 617
AN, 1113
AN(, 1121
AND, 393, 453, 454, 818
ASI_CTRL, 2208
ASIN, 225, 650, 1180, 1367, 1635
ATAN, 228, 653, 1184, 1369, 1637
ATH, 1940
ATTACH, 2307
ATTR_DB, 2665
AW, 1247+

B+AR1, 1276
+AR2, 1277
+D, 1166+I, 1163+R, 1173

BCD, 1199, 1201
BCDCPL, 450, 876, 1110, 1588, 1787
BCD を整数に変換, 1201
BE, 1241
BEC, 1241
BEU, 1242
BITSUM, 452, 878, 1111, 1589, 1788
BLD, 1278
BLKMOV, 327, 753, 1024, 1465, 1694
BR, 1130
BRCV, 2956
BSEND, 2953
BTD, 1201
BTI, 1199
BUFFER パラメータ、Send_P2P, 3469
BY, 1507//D, 1168/I, 1165/R, 1175[1
10 の補数, 450, 876, 1110, 1588, 1787
1 の補数, 398, 824, 1204, 1205

22 の補数の, 201, 626, 1206, 1207, 1208, 1621
2 乗値, 214, 640, 1177, 1361
2 乗値の形成, 1629

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3741

索引

C
CAD, 1209
CALC, 190, 612
CALL, 1243
CAN_DINT, 2351
CAN_TINT, 2334
CAR, 1195
CASE, 1504
CAW, 1208
CD, 146, 571, 1156
CDB, 1237
CEIL, 342, 768, 1479, 1706
Chars_TO_Strg (文字から文字列), 1899
CLR, 1129
CMP <, 167, 591
CMP <=, 162, 586
CMP <>, 153, 578
CMP ==, 148, 573
CMP >, 164, 589
CMP >=, 159, 584
CMP>T, 1797, 1810
CMP>T_MAX, 1800, 1813
CMP>T_WARN, 1801, 1814
CMP>U, 1798, 1811
CONCAT, 1949
CONTINUE, 1514
CONVERT, 338, 764, 1476, 1704
COS, 222, 647, 1181, 1365, 1633
COUNTER, 141, 1344
CountOfElements, 317, 743, 1020, 1461
CPU
RD_SYS_T による日付と時刻の読み出し, 1850
WR_SYS_T による時刻の設定, 1846
CREATE_DB, 2648
CTD, 129, 554, 906, 1334, 1615
CTRL_HSC, 2804
CTRL_HSC_EXT, 2808
CTRL_PTO, 2568
CTRL_PWM, 2565
CTU, 126, 551, 903, 1331, 1612
CTUD, 132, 557, 909, 1337, 1618
CU, 145, 570, 1155, 1156

DataLogDelete, 2621
DataLogNewFile (データログ新規ファイル), 2623
DataLogOpen (データログオープン), 2608
DataLogTypedNewFile, 2626
DataLogTypedOpen, 2610
DataLogWrite (データログ書き込み), 2616
DB_ANY_TO_VARIANT, 1042, 1493
DCAT, 430, 856, 1085, 1569, 1763
DEC, 204, 629, 1171
DECO, 400, 825, 1072, 1541, 1738
DELETE, 1956
DELETE_DB, 2670
DEMUX, 409, 835, 1549, 1745
DETACH, 2312
DeviceStates (デバイス状態), 2533
DIS_AIRT, 2395
DIS_IRT, 2385
DIV, 199, 623
DMSK_FLT, 2369
DO, 1507, 1511
DP_TOPOL, 2204
DPNRM_DG, 2199
DPRD_DAT, 2164
DPSYC_FR, 2192
DPWR_DAT, 2166
DP スレーブ
D_ACT_DP による有効化および無効化, 2130
DP_SYC_FR によるグループの同期, 2192
DPNRM_DG による診断データの読み出し, 2199
DP マスタシステム
DP_TOPOL によるトポロジの決定, 2204
DP 標準スレーブ
DPRD_DAT による整合性のあるデータの読み出
し, 2164
DPWR_DAT による整合性のあるデータの書き込
み, 2166GETIO_PART による入力の部分の読み出し, 2061
GETIO によるすべての入力の読み出し, 2049
SETIO_PART による出力の部分の書き込み, 2063
SETIO によるすべての出力の書き込み, 2051
DRUM, 422, 848, 1076, 1560, 1755
DTB, 1202
DTR, 1203

E
D
D_ACT_DP, 2130
DataLogClear, 2614
DataLogClose (データログクローズ), 2619
DataLogCreate (データログ作成), 2598

3742

ELSE, 1502, 1504
ELSIF, 1502
EN_AIRT, 2396
EN_IRT, 2387
ENCO, 401, 827, 1073, 1543, 1739
END_CASE, 1504
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

END_FOR, 1507
END_IF, 1502
END_REPEAT, 1512
END_WHILE, 1511
Endian, 1008, 1010, 1013, 1015, 1447, 1449, 1452,
1455
ENDIS_PW, 369, 795, 1051, 1519, 1721
EQ_ElemType, 179, 602, 923
EQ_Type, 174, 598, 913, 919
EQUAL ARRAY, 185, 608, 929, 1349
EXCLUSIVE OR, 457, 458
ビット論理演算, 457
EXIT, 1514
EXP, 219, 644, 1178, 1364, 1631
EXPT, 231, 656

F
F_TRIG, 57, 481, 880, 1280
FALSE, 56, 57, 480, 481, 879, 880, 1279, 1280
FieldRead, 322, 748
FieldWrite, 324, 750
FILL, 334, 760, 1031, 1472, 1700
FILL_BLK, 265, 690, 963, 1395, 1657
FIND, 1963
FLOOR, 344, 769, 1480, 1707
FN, 1131
FOR, 1507
FP, 1132
FR, 1134, 1150
FRAC, 230, 654, 1370, 1638

G
GADR_LGC, 2704
GEN_DIAG, 2545
Gen_UsrMsg, 2425
GEO_LOG, 2698
GEO2LOG, 2683
GET, 2929
Get_AlarmState, 2418
GET_DIAG, 2548
Get_IM_Data, 2496
GET_NAME, 2502
GetBlockName, 1981
GetChecksum, 2515
GetError, 379, 804, 1060, 1529, 1728
GetErrorID, 384, 809, 1065, 1533, 1732
GetInstanceName, 1973
GetInstancePath, 1975
GETIO, 2049

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

GETIO_PART, 2061
GetSMCinfo, 2519
GetStationInfo, 2507
GetSymbolName, 1965
GetSymbolPath, 1969
GOTO, 1515

H
High_Speed_Counter, 2811
エラー応答, 2816
呼び出し, 2811
出力パラメータ, 2821
静的タグ, 2823
説明, 2811
動作原理, 2812
入力パラメータ, 2818
HTA, 1944

I
I&M データ:Get_IM_Data による読み出し, 2496
IF, 1502
IM0_Data, 2496
IMC, 439, 865, 1093, 1577, 1772
IN_RANGE, 169, 593
INC, 203, 628, 1170
INIT_RD, 388, 813, 1068, 1537, 1735
INSERT, 1959
INV, 1737
INVD, 1205
INVERT, 398, 824
INVI, 1204
IO2MOD, 2691
IO-Link, 2894, 2898, 2908
IO アドレス, 2682
IO システムの再構成, 2135
IP 構成
ユーザープログラムからのパラメータの変
更, 3146
IS_ARRAY, 185, 608, 929, 1349
IS_NULL, 183, 606, 926
ITB, 1200
ITD, 1202

J
JBI, 1219
JC, 1215
JCB, 1217
JCN, 1216

3743

索引

JL, 1233
JM, 1228
JMP, 358, 784
JMP_LIST, 362, 787
JMPN, 359, 785
JMZ, 1231
JN, 1225
JNB, 1218
JNBI, 1220
JO, 1221
JOIN, 1904
JOS, 1222
JP, 1226
JPZ, 1229, 1231
JU, 1214
JUO, 1232
JZ, 1223

LL, 1135, 1151, 1185
L DBLG, 1238
L DBNO, 1239
L DILG, 1239
L DINO, 1240
L STW, 1187
LABEL, 360, 786
LAR1, 1188
LAR1 <D>, 1188
LAR1 AR2, 1190
LAR2, 1190
LAR2 <D>, 1191
LC, 1137, 1152
LEAD_LAG, 445, 871, 1105, 1582, 1782
LED, 2492
LED ステータス
LED による読み出し, 2492
LEFT, 1951
LEN, 1947
LENGTH パラメータ、Send_P2P, 3469
LGC_GADR, 2706
LIMIT, 211, 637, 936, 1358, 1627
LN, 217, 643, 1179, 1363, 1631
LOG_GEO, 2700
LOG2GEO, 2686
LOG2MOD, 2689

M
MAX, 209, 634, 934, 1356, 1625
MAX_LEN, 1902

3744

MB_CLIENT, 3670, 3696
MB_COMM_LOAD, 3647
MB_MASTER, 3651
MB_SERVER, 3682, 3713
MB_SLAVE, 3661
MC_ChangeDynamic:パラメータ, 2761
MC_ChangeDynamic:命令, 2761
MC_CommandTable: 命令, 2758
MC_CommandTable:パラメータ, 2759
MC_Halt: ファンクションチャート, 2740
MC_Halt:パラメータ, 2738, 2799
MC_Halt:ファンクションチャート, 2801
MC_Halt:命令, 2737, 2798
MC_Home:パラメータ, 2735, 2773
MC_Home:命令, 2733, 2771
MC_MoveAbsolute: ファンクションチャート, 2744
MC_MoveAbsolute: 命令, 2741
MC_MoveAbsolute:パラメータ, 2742, 2794
MC_MoveAbsolute:ファンクションチャート, 2797
MC_MoveAbsolute:命令, 2793
MC_MoveJog: ファンクションチャート, 2781
MC_MoveJog: 命令, 2777
MC_MoveJog:パラメータ, 2755, 2778
MC_MoveJog:ファンクションチャート, 2757
MC_MoveJog:命令, 2754
MC_MoveRelative: ファンクションチャート, 2748
MC_MoveRelative:パラメータ, 2746, 2789
MC_MoveRelative:ファンクションチャート, 2792
MC_MoveRelative:命令, 2745, 2788
MC_MoveVelocity: ファンクションチャート, 2753
MC_MoveVelocity:パラメータ, 2783
MC_MoveVelocity:ファンクションチャート, 2787
MC_MoveVelocity:命令, 2749, 2782
MC_Power:パラメータ, 2726, 2765
MC_Power:ファンクションチャート, 2730, 2770
MC_Power:命令, 2725, 2764
MC_Reset: パラメータ, 2731
MC_Reset: 命令, 2731
MC_Reset:パラメータ, 2803
MC_Reset:命令, 2802
MCAT, 434, 860, 1089, 1572, 1767
MID, 1954
MIN, 207, 632, 933, 1353, 1623
MOD, 200, 624, 1172
ModbusModbus_Comm_Load, 3548
Modbus_Slave, 3554, 3563
Modbus_Comm_Load, 3548
Modbus_Slave, 3554, 3563
Modbus 通信
MB_COMM_LOAD によるポートの設定, 3647

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

MB_MASTER で Modbus マスタとして, 3651
MB_SLAVE でスレーブとして, 3661
ModuleStates (モジュール状態), 2540
MOVE, 233, 658, 938
MOVE_BLK, 253, 678, 953, 1384, 1648
MOVE_BLK_VARIANT, 256, 681, 955, 1387, 1650
MSK_FLT, 2367
MUL, 197, 621
MUX, 405, 831, 1546, 1742

NN, 49, 52, 473, 476
N_TRIG, 55, 478
NE_ElemType, 181, 604, 925
NE_Type, 177, 600, 921
NEG, 201, 626, 1621
NEGD, 1207
NEGI, 1206
NEGR, 1208
NOP 0, 1278
NOP 1, 1279
NORM_X, 349, 775, 1037, 1487, 1712
NOT, 36, 1128, 1737
NOT_NULL, 184, 607, 928
NOT_OK, 173, 597
NULL 命令, 1278, 1279

OO, 1114, 1120
O(, 1122
OD, 1253
OF, 1504
OK, 172, 596
ON(, 1122
OPN, 1236
OPNDI, 1237
OR, 395, 455, 456, 820
OUT_RANGE, 171, 594
OW, 1248

PP, 47, 51, 471, 474
P_TRIG, 53, 477
P3964_Config, 3464
PE_CMD, 2226
PE_DS3_Write_ET200S, 2232
PE_End_RSP, 2275
PE_Error_RSP, 2271
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

PE_Get_Mode_RSP, 2278
PE_I_DEV, 2266
PE_List_Modes_RSP, 2276
PE_Measurement_List_RSP, 2286
PE_Measurement_Value_RSP, 2288
PE_PEM_Status_RSP, 2281
PE_Start_End, 2220
PE_Start_RSP, 2273
PE_WOL, 2233
PEEK, 997, 1436
メモリアドレスの読み取り, 997, 1436
PEEK_BOOL, 999, 1438
メモリビットの読み取り, 999, 1438
PID_3Step
出力パラメータ, 2866
静的変数, 2868
入力パラメータ, 2863
命令, 2855
PID_Compact
出力パラメータ, 2839
静的変数, 2840
入力パラメータ, 2838
命令, 2834
PIP_Mode, 2922
PLC, 422, 848, 1076, 1560, 1755
POKE, 1001, 1440
メモリアドレスの書き込み, 1001, 1440
POKE_BLK, 1005, 1444
メモリ領域の書き込み, 1005, 1444
POKE_BOOL, 1003, 1442
メモリビットの書き込み, 1003, 1442
POP, 1275
PORT_CFG, 3603
Port_Config, 3450
PROFIenergy
I デバイスでの PROFIenergy コマンドの制御, 2266
PE_CMD, 2226
PE_DS3_Write_ET200S, 2232
PE_End_RSP, 2275
PE_Error_RSP, 2271
PE_Get_Mode_RSP, 2278
PE_I_DEV, 2266
PE_Identify_RSP, 2284
PE_List_Modes_RSP, 2276
PE_Measurement_List_RSP, 2286
PE_Measurement_Value_RSP, 2288
PE_PEM_Status_RSP, 2281
PE_Start_End, 2220
PE_Start_RSP, 2273
PEM ステータスを応答として生成, 2281
Wake on LAN, 2233

3745

索引

コマンドへの否定応答の生成, 2271
サポートされている PROFIenergy コマンドを応答として生成, 2284
サポートされている測定値のリストを応答として生成, 2286
ステータス情報の読み出し, 2226
一時停止の開始時にコマンドへの応答を生成, 2273
一時停止の終了時にコマンドへの応答を生成, 2275
照会された省電力データを応答として生成, 2278
照会された省電力モードを応答として生成, 2276
照会された測定値を応答として生成, 2288
省電力モードの開始と終了, 2220, 2226
説明, 2218
電源モジュールの切り替え動作を設定します。, 2232
PROFINET IO デバイス
DPRD_DAT による整合性のあるデータの読み出
し, 2164
DPWR_DAT による整合性のあるデータの書き込
み, 2166GETIO_PART による入力の部分の読み出し, 2061
SETIO_PART による出力の部分の書き込み, 2063
SETIO によるすべての出力の書き込み, 2051
Program_Alarm, 2409
PRVREC, 2180
PT, 522
PtP エラークラス, 3449
PtP 通信
プログラミング, 3443
PtP 命令の戻り値, 3448
PUSH, 1274
PUT, 2935

Q
QRY_CINT, 2320
QRY_DINT, 2352
QRY_TINT, 2337

RD_DPAR, 2291
RD_DPARA, 2298
RD_DPARM, 2301
RD_LGADR, 2702
RD_LOC_T, 1852
RD_REC, 2157
RD_SINFO, 2470
RD_SYS_T, 1850
RDREC, 2005
RE_TRIGR, 378, 803, 1059, 1528, 1727
READ_BIG, 1013, 1452
READ_DBL, 2654
READ_ERR, 2370
READ_LITTLE, 1008, 1447
ReadFromArrayDB, 299, 725, 985, 1424, 1682
ReadFromArrayDBL, 305, 731, 990, 1429, 1687
Receive_Config, 3456
Receive_P2P, 3470
Receive_Reset, 3473
RecipeExport, 2572
RecipeImport, 2575
ReconfigIOSystem, 2135
REPEAT, 1512
REPLACE, 1961RESET_BF, 42, 466
RET, 367, 793
RETURN, 1516
RIGHT, 1952
RLD, 1268
RLDA, 1272
RND, 1210
RND-, 1212
RND+, 1211
ROL, 419, 845, 1558, 1753
ROR, 417, 843, 1556, 1751
ROUND, 341, 766, 1478, 1705
RRD, 1270
RRDA, 1272
RS, 45, 469
RT, 95, 519, 897, 1306
RT_INFO, 2484
RTM, 1872

R
R, 38, 462, 1127, 1139, 1153
R_TRIG, 56, 480, 879, 1279
RALRM, 2076
RCV_CFG, 3609
RCV_PTP, 3622
RCV_RST, 3623
RCVREC, 2169
RD_ADDR, 2694

3746

SS, 39, 463, 1127, 1154
S_AVERZ, 112
S_CD, 139, 564
S_COMP, 1877
S_CONV, 1880
S_CU, 137, 562, 1340
S_CUD, 566
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

S_EVERZ, 106
S_MOVE, 1876
S_ODT, 106, 531, 1317
S_ODTS, 109, 534, 1320
S_OFFDT, 112, 537, 1323
S_PEXT, 103, 528, 1314
S_PULSE, 100, 525, 1311
S_SEVERZ, 109
S7 通信
BRCV によるリモートパートナー命令からのデータの受信, 2956
BSEND によるリモートパートナー命令へのデータの送信, 2953
URCV によるリモートパートナー命令からのデータの受信, 2945
USEND によるリモートパートナー命令へのデータの送信, 2942
パラメータ, 2925
ユーザーデータサイズ, 2927
送信パラメータと受信パラメータ, 2926
SAVE, 1130
SC, 144, 569
SCALE, 352, 778, 1045, 1496, 1714
SCALE_X, 347, 772, 1035, 1484, 1709
SCL
コメント挿入, 1517
SD, 117, 119, 544, 1142, 1144
SE, 117, 542, 1142
SEG, 448, 874, 1108, 1586, 1785
SEL, 402, 828, 1074, 1544, 1741
SEND_CFG, 3607
Send_Config, 3454
Send_P2P, 3466
LENGH および BUFFER パラメータ, 3469
SEND_PTP, 3619
SET, 1129
SET_BF, 40, 464
SET_CINT, 2318
SET_TIMEZONE (タイムゾーンの設定), 1858
SET_TINT, 2328
SET_TINTL, 2331
SETIO, 2051
SETIO_PART, 2063
SF, 124, 548, 1148
SGN_GET, 3624
SGN_SET, 3626
SHL, 415, 841, 1554, 1749
SHR, 412, 839, 1552, 1747
SHUT_DOWN, 376, 801, 1057, 1526
Signal_Get (RS232 信号の取得), 3474
Signal_Get (RS232 信号の設定), 3476
SIN, 220, 645, 1180, 1365, 1632

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

SLD, 1264
Slot, 2682
SLW, 1261
SMC, 442, 868, 1099, 1580, 1777
SNC_RTCB, 1869
SP, 115, 540, 1140
SPLIT, 1920
SQR, 214, 640, 1177, 1361, 1629
SQRT, 216, 641, 1177, 1362, 1630
SR, 43, 468
SRD, 1266
SRT_DINT, 2349
SRW, 1262
SS, 121, 547, 1146
SSD, 1259
SSI, 1257
SSI_Absolute_Encoder, 2825
エラー応答, 2828
呼び出し, 2825
出力パラメータ, 2832
静的タグ, 2833
説明, 2825
動作原理, 2825
入力パラメータ, 2829
STP, 379, 804, 1059, 1529, 1727
Strg_TO_Chars (文字列から文字), 1895
STRG_VAL, 1884
SUB, 196, 619
SWAP, 297, 723, 1422, 1679
SWITCH, 364, 789
SYNC_PI, 1990
SYNC_PO, 1993

TT, 1192
T STW, 1194
T_ADD, 1836
T_COMBINE, 1844
T_COMP, 1832
T_CONFIG, 3146
T_CONV, 1834
T_DIAG, 3135
T_DIFF, 1842
T_RESET, 3129
T_SUB, 1839
TADDR_Param, 3117
TADDR_RCV_IP, 3119
TADDR_SEND_QDN, 3119
TAK, 1273
Tan, 1366
TAN, 223, 648, 1183, 1634

3747

索引

TAR1, 1195
TAR1 <D>, 1196
TAR1 AR2, 1197
TAR2, 1197
TAR2 <D>, 1198
TCON, 3053, 3057
TDISCON, 3067
TeleService
TM_MAIL による電子メールの転送, 3730
THEN, 1502
TIME_TCK, 1871
TIME_TCK によるシステム時間の読み出し, 1871
TIO_DI, 2903
TIO_DQ, 2914
TIO_IOLink_IN, 2898
TIO_IOLink_OUT, 2908
TIO_SYNC, 2894
TIO_Time
TIO_DI, 2903
TIO_DQ, 2914
TIO_IOLink_IN, 2898
TIO_SYNC, 2894
UDT "TIO_SYNC_Data", 2921
TM_MAIL, 3730
TMAIL_C, 3012
TMAIL_C V4.0, 3018
TO, 1507
TOF, 68, 87, 492, 511, 889, 1296, 1604
TON, 63, 83, 487, 507, 885, 1291, 1600
TONR, 73, 91, 497, 515, 893, 1301, 1608
TP, 59, 79, 482, 502, 881, 1286, 1595
TRCV, 3079, 3086
TRCV_C, 2985, 2992
TRUE, 56, 57, 480, 481, 879, 880, 1279, 1280
TRUNC, 345, 771, 1211, 1482, 1708
TSEND, 3070, 3074
TSEND_C, 2966, 2972
TURCV, 3113
TUSEND, 3107
TypeOf, 1346
TypeOfElements, 1348U
UBLKMOV, 331, 757, 1028, 1469, 1697
UC, 1246
UDT "TIO_SYNC_Data", 2921
UFILL_BLK, 269, 695, 967, 1399, 1661
UMOVE_BLK, 262, 687, 961, 1391, 1655
UNSCALE, 355, 781, 1048, 1499, 1717
UNTIL, 1512
UPDAT_PI, 1983

3748

UPDAT_PO, 1986
URCV, 2945
USEND, 2942
USS_DRIVE, 3636
USS_Drive_Control, 3502
USS_Drive_Control / USS_Drive_Control_31, 3510
USS_PORT, 3634
USS_Port_Scan, 3502, 3507
USS_Port_Scan_31, 3507
USS_Read_Param, 3503
USS_Read_Param / USS_Read_Param_31, 3516
USS_RPM, 3640
USS_WPM, 3642
USS_Write_Param, 3503
USS_Write_Param / USS_Write_Param_31, 3518
USS ステータスコード, 3645
USS プロトコル
命令, 3629
USS プロトコルのライブラリ
USS_Drive_Control / USS_Drive_Control_31, 3510
USS_Port_Scan, 3507
USS_Port_Scan_31, 3507
USS_Read_Param / USS_Read_Param_31, 3516
USS_Write_Param / USS_Write_Param_31, 3518
ドライブのセットアップに関する一般情報, 3521
概要, 3501
使用の必要条件, 3503
USS 通信
USS_DRIVE 経由のドライブとのデータ交換, 3636
USS_PORT を使用したドライブへの転送の制
御, 3634
USS_RPM によるドライブからのパラメータの読み出し, 3640
USS_WPM によるドライブのパラメータ変更, 3642V
VAL_STRG, 1888
VARIANT, 174, 177, 179, 181, 313, 315, 317, 598,
600, 602, 604, 739, 741, 743, 913, 919, 921, 923,
925, 1017, 1019, 1020, 1039, 1042, 1346, 1348,
1457, 1459, 1461, 1490, 1493
VARIANT_TO_DB_ANY, 1039, 1490
VariantGet, 313, 739, 1017, 1457
VariantPut, 315, 741, 1019, 1459

W
WAIT, 390, 815, 1070, 1538, 1736
Wake on LAN, 2233

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

WHILE, 1511
WR_DPARM, 2304
WR_LOC_T, 1854
WR_REC, 2163
WR_SYS_T, 1846
WRIT_DBL, 2658
WRITE_BIG, 1015, 1455
WRITE_LITTLE, 1010, 1449
WriteToArrayDB, 302, 728, 988, 1426, 1684
WriteToArrayDBL, 309, 735, 994, 1432, 1690
WRREC, 2026
WWW ユーザーページの同期, 3432

エX, 1117X(, 1123
XN, 1118
XN(, 1124
XOD, 1255
XOR, 397, 457, 458, 822
XOW, 1250

エッジ
正, 47, 51, 53, 471, 474, 477, 1132, 1279
負, 49, 52, 55, 473, 476, 478, 1131, 1280
エラー ID, 2825, 2834
エラーコードTIO_DI, 2906
TIO_DQ, 2918
TIO_IOLink_IN, 2900
TIO_IOLink_OUT, 2911
TIO_SYNC, 2895
エラー応答
High_Speed_Counter, 2816
SSI_Absolute_Encoder, 2828
エラー処理
GetError, 379, 804, 1060, 1529, 1728
GetErrorID, 384, 809, 1065, 1533, 1732
エラー情報, 379, 384, 804, 809, 1060, 1065, 1529,
1533, 1728, 1732
エンコード, 401, 827, 1073, 1543, 1739

アオ

アキュムレータ, 1273, 1274, 1275
アドレス
GEO_LOG によるモジュールの確定, 2698
GetStationInfo による MAC アドレスの読み出
し, 2507
GetStationInfo によるステーションアドレスの読み取り, 2507
アドレスレジスタ, 1276, 1277
アドレス変換用の命令, 2682
アナログ値, 347, 349, 772, 775, 1035, 1037, 1484,
1487, 1709, 1712
アナログ値の処理, 347, 349, 772, 775, 1035, 1037,
1484, 1487, 1709, 1712
アプリケーションサイクル, 2922

オーガニゼーションブロック(OB)ATTACH によるイベントの割り当て, 2307
DETACH によるイベント割り当てのキャンセ
ル, 2312
RD_SINFO による開始情報の読み出し, 2470
RT_INFO によるランタイムの測定, 2484
サイクリック割り込み OB、QRY_CINT によるパラメータの照会, 2320
サイクリック割り込み OB、SET_CINT によるパラメータの設定, 2318
オフディレー, 68, 87, 112, 124, 492, 537, 548, 889,
1148, 1296, 1323, 1604
オフディレータイマ, 1604
オフディレータイマの起動, 511
オン, 1116
オンディレー, 63, 83, 106, 119, 487, 531, 544, 885,
1144, 1291, 1317, 1600
保持型, 109, 121, 534, 547, 1146, 1320
オンディレータイマ, 1600
オンディレータイマの起動, 507

X

イ
イベント
ATTACH によるオーガニゼーションブロック(OB)の割り当て, 2307
DETACH を使ったオーガニゼーションブロック(OB)
への割り当てのキャンセル, 2312
インクリメント, 203, 628, 1170
インターフェースの設定
命令, 3444
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

カカウンタ
高速カウンタ, 2804, 2808

3749

索引

高速カウンタの制御, 2804
高速カウンタの制御(拡張), 2808
カウンタ演算セット, 1154
リセット, 1153
有効, 1150
カウント
アップ, 126, 137, 145, 551, 562, 570, 903, 1155,
1331, 1340, 1612
アップ/ダウン, 132, 141, 557, 566, 909, 1337,
1344, 1618
ダウン, 129, 139, 146, 554, 564, 571, 906, 1156,
1334, 1342, 1615

ク
グローバルライブラリ
USS プロトコルの概要, 3501

ココイル, 36
否定, 37
コメントセクションを挿入, 1517

結果がゼロよりも大きい場合, 1226
結果がゼロ以下の場合, 1231
結果がゼロ以上の場合, 1229
結果がゼロ未満の場合, 1228
結果が無効の場合, 1232
条件なし, 1214
ジャンプラベル, 360, 786, 1213, 1515
ジャンプリスト, 362, 787, 1233
シリアル化:, 247, 672, 948, 1378, 1644ス
スキャンマトリックスの比較, 442, 868, 1099, 1580,
1777
スケール, 347, 352, 772, 778, 1035, 1045, 1484,
1496, 1709, 1714
スケール解除, 355, 781, 1048, 1499, 1717
ステーション
GetStationInfo による情報の読み取り, 2507
ステップ有効化時間よりも長い, 1797, 1810
スロット
LGC_GADR による論理アドレスの確定, 2706
LOG_GEO による論理アドレスの確定, 2700

すサ
サイクリック割り込み OB
QRY_CINT によるパラメータの照会, 2320
SET_CINT によるパラメータの設定, 2318
サイクルモニタリングタイム, 378, 803, 1059, 1528,
1727

シ
シフト
右, 412, 839, 1257, 1259, 1262, 1266, 1552,
1747
左, 415, 841, 1261, 1264, 1554, 1749
シャットダウン(PC システム), 376, 801, 1057, 1526
ジャンプ, 358, 359, 360, 362, 364, 367, 784, 785,
786, 787, 789, 793, 1213, 1233
BR = 0 の場合, 1220
BR = 1 の場合, 1219
OS = 1 の場合, 1222
OV = 1 の場合, 1221
RLO = 0 の場合, 1216, 1218
RLO = 1 の場合, 1215, 1217
結果がゼロでない場合, 1225
結果がゼロの場合, 1223

3750

すべての保持データの初期化, 388, 813, 1068, 1537,
1735

セ
セット
[RLO], 1129
オペランド, 39, 43, 463, 468, 1127
カウンタ演算, 1154
カウンタ開始値, 144, 569
ビットフィールド, 40, 464

タターゲットシステムのシャットダウン, 376, 801,
1057, 1526
タイマ, 100, 525
T_COMBINE を使用して日付と時刻を結合, 1844
T_COMP による時間タグの比較, 1832
T_CONV による変換, 1834
T_DIFF による差の確定, 1842
T_SUB による減算, 1839
リセット, 1139
記録中, 91

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

命令 T_ADD による加算, 1836
有効, 1134
タイマのリセット, 519
タイムアキュムレータ, 73, 497, 515, 893, 1301,
1608
タグ
正, 56, 480, 879
負, 57, 481, 880

チ
チェックサム
GetChecksum による読み出し, 2515

テ
ディストリビュータにジャンプ, 364, 789
データタイプ
明示的な変換, 338, 764, 1476
明示的変換, 1704
データの書き込み
DPWR_DAT を使って DP 標準スレーブ/PROFINET IO
デバイスへ, 2166
PUT によるリモート CPU への, 2935
データの整合性, 2923
データの読み出し
DPRD_DAT で DP 標準スレーブ/PROFINET IO デバイ
スから, 2164
GET によるリモート CPU からの, 2929
データブロック
ATTR_DB による属性読み出し, 2665
CREATE_DB による作成, 2648
DELETE_DB による削除, 2670
Open (開く), 1236, 1237
READ_DBL によるロードメモリからの読み出
し, 2654
WRIT_DBL によるロードメモリへの書き込
み, 2658
データブロックレジスタ, 1237
データレコード
PRVREC によって I デバイスで使用可能にする, 2180
RCVREC を使って I デバイスで受信する, 2169
RD_DPARA によるモジュールのデータレコードの非同期読み出し, 2298
RD_DPARM による設定したシステムデータの読み出し, 2301
RD_DPAR によるモジュールの読み出し, 2291
RD_REC による読み出し, 2157
RDREC による読み出し, 2005

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

WR_DPARM による定義済みパラメータの書き込
み, 2304
WR_REC による書き込み, 2163
WRREC による転送, 2026
データレコードの書き込みと読み出し, 2290
データログ
DataLogClear を使用して空にする, 2614
DataLogClose によって閉じる, 2619
DataLogCreate による作成, 2598
DataLogDelete による削除, 2621
DataLogNewFile による作成, 2623
DataLogOpen で開く, 2608
DataLogTypedNewFile による作成, 2626
DataLogTypedOpen で開く, 2610
DataLogWrite による書き込み, 2616
データ受信
I デバイスで RCVREC を使う, 2169
データ伝送、トリガ, 3466
デクリメント, 204, 629, 1171
デコード, 400, 825, 1072, 1541, 1738
デジタル出力TIO_DQ, 2914
デジタル入力TIO_DI, 2903

ノノーマルオープン, 33
ノーマルクローズ, 34

ハ
ハードウェア識別子, 2682
LOG2MOD による識別, 2689
バイト
スワップ, 297, 723, 1422, 1679
バイトシーケンスの配置, 723, 1422
バイトのスワップ, 297, 1679
パスワードの適正化, 369, 795, 1051, 1519, 1721
パスワードの適正化の制限および有効化, 369, 795,
1051, 1519, 1721
パラメータ
あらかじめ定義済み - WR_DPARM による書き込
み, 2304
エラー ID, 2825, 2834
パラメータの設定
Send_P2P の LENGH および BUFFER, 3469
パルス, 59, 79, 100, 115, 482, 525, 540, 881, 1140,
1286, 1311, 1595
拡張, 103, 117, 528, 542, 1142, 1314

3751

索引

パルスシーケンスを出力
プリセットされた周波数の, 2568
パルスジェネレータ
CTRL_PWM による有効化/無効化, 2565
パルスタイマの起動, 502
パルスの生成, 1595

ヒ
ビット
カウント, 452, 878, 1111, 1589, 1788
ビットフィールド
セット, 464
リセット, 42, 466
設定, 40
ビットマスク, 439, 865, 1093, 1577, 1772
ビット論理演算
AND, 453, 454, 1112, 1113, 1120, 1121
EXCLUSIVE OR, 458, 1117, 1118, 1123, 1124
OR, 455, 456, 1114, 1116, 1120, 1122
入力の挿入, 459

フフィールドの書き込み, 324, 750
フィールドの読み出し, 322, 748
フィル命令ブロック, 265, 334, 690, 760, 963, 1031, 1395,
1472, 1657, 1700
割り込みなしブロック, 269, 695, 967, 1399,
1661
フリップフロップ
セット/リセット, 43, 468
リセット/セット, 45, 469
フレームの設定
命令, 3444
プログラミング
PtP 命令, 3443
プログラムアラーム
Program_Alarm での生成, 2409
プログラムランタイムの測定, 391, 816, 1070, 1539
プログラムループ, 1235
プログラム制御演算, 379, 804, 1059, 1529, 1727
プログラム表示, 1278
プロセスイメージ
GETIO_PART によるプロセスイメージ領域の読み出し, 2061GETIO による入力の読み出し, 2049
SETIO_PART によるプロセスイメージ領域の転送, 2063
SETIO による出力の書き込み, 2051

3752

SYNC_PI による入力の更新, 1990
SYNC_PO による出力の更新, 1993
UPDAT_PI による入力の更新, 1983
UPDAT_PO による出力の更新, 1986
プロセスデータ
AA_Data, 2908
SA_Data, 2898
ブロック
Leave, 1516
フィル命令, 265, 334, 690, 760, 963, 1031, 1395,
1472, 1657, 1700
ブロック, 753
移動, 253, 327, 678, 953, 1024, 1384, 1465,
1648, 1694
割り込みなしブロック転送, 262, 331, 687, 757,
961, 1028, 1391, 1469, 1655, 1697
割り込み不可能なフィル命令, 269, 695, 967,
1399, 1661
条件付き呼び出し, 1245
ブロックの移動, 256, 681, 955, 1387, 1650
ブロックの終了, 1241, 1242

ホ
ポイントツーポイントプログラミング, 3443
ポイントツーポイント接続
PORT_CFG による通信パラメータの設定, 3603
RCV_CFG による受信パラメータの設定, 3609
RCV_PTP による受信の有効化, 3622
RCV_RST による受信バッファの削除, 3623
SEND_CFG によるシリアル伝送パラメータの設定, 3607
SEND_PTP によるデータ転送の開始, 3619
SGN_GET によるシグナル状態の問い合わ
せ, 3624
SGN_SET による出力信号の設定, 3626

メ
メモリアドレスの書き込み, 1001, 1440
メモリアドレスの読み取り, 997, 1436
メモリカードGetSMCinfo による情報の読み出し, 2519
メモリビットの書き込み, 1003, 1442
メモリビットの読み取り, 999, 1438
メモリ領域の書き込み, 1005, 1444

モ
モジュール
GADR_LGC による論理アドレスの確定, 2704
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

GEO_LOG による開始アドレスの確定, 2698
LGC_GADR 論理アドレスのスロットの確定, 2706
LOG_GEO によるスロットの論理アドレスの確
定, 2700
RD_DPARA によるデータレコードの非同期読み出し, 2298
RD_DPAR によるデータレコードの読み出し, 2291
RD_LGADR による論理アドレスの確定, 2702

SET_TIMEZONE による計算, 1858
WR_LOC_T を使用した書き込み, 1854
ローテーション
右, 417, 843, 1272, 1556, 1751
左, 419, 845, 1268, 1270, 1272, 1558, 1753
ロード, 1185, 1187, 1188, 1190, 1191, 1238, 1239,1240
カウンタ値, 1151, 1152
タイマ値, 1135, 1137

ユ移ユーザーページの同期, 3432
ユニバーサルシリアルインターフェースプロトコル,(USS プロトコルの使用)

移動
Strg_TO_Chars による配列内の文字列, 1895
ブロック, 253, 327, 678, 753, 953, 1024, 1384,
1465, 1648, 1694
割り込みなしブロック, 262, 331, 687, 757, 961,
1028, 1391, 1469, 1655, 1697
値, 233, 658, 938

ラランタイム, 391, 816, 1070, 1539
RT_INFO による測定, 2484
プログラムランタイムの測定, 391, 816, 1070,
1539

加加算, 194, 617, 1163, 1166, 1169, 1173
T_ADD によるタイマの加算, 1836リ
リード/ラグアルゴリズム, 445, 871, 1105, 1582,
1782
リセット
[RLO], 1129
IEC タイマ, 95, 897, 1306
オペランド, 38, 45, 462, 469, 1127
カウンタ演算, 1153
タイマ, 1139
ビットフィールド, 42, 466

ルループ, 1235, 1502, 1507, 1511, 1512, 1514

レ
レシピ
CSV ファイルへのエクスポート, 2572
データブロックへのインポート, 2575

ロ
ローカルタイム
RD_LOC_T による読み出し, 1852

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

開開放型ユーザー間通信
T_CONFIG による IP 設定パラメータの変更, 3146
TCON による通信接続の確立, 3053, 3057
TDISCON による通信接続の終了, 3067
TRCV_C による接続の確立とデータの読み出
し, 2985, 2992
TRCV によるデータ受信, 3079, 3086
TSEND_C による接続の確立とデータの送信, 2966,
2972
TSEND によるデータ送信, 3070, 3074
TURCV による UDP を経由したデータ受信, 3113
TUSEND による UDP 経由のデータ送信, 3107

割
割り込み
ACT_TINT による時刻割り込みの有効化, 2336
CAN_DINT による遅延割り込みのキャンセ
ル, 2351
CAN_TINT による時刻割り込みのキャンセ
ル, 2334
QRY_DINT による遅延割り込みの照会, 2352
QRY_TINT による時刻割り込みの照会, 2337

3753

索引

RALRM を使った I/O モジュールからの受信, 2076
SET_TINTL による時刻割り込みの設定, 2331
SET_TINT による時刻割り込みの設定, 2328
SRT_DINT による開始遅延割り込み, 2349
割り込みイベント
DIS_AIRT による遅延, 2395
DIS_IRT による無効化, 2385
EN_AIRT による有効化, 2396
EN_IRT による有効化, 2387
割り込みなしステップの有効化時間よりも長い, 1798,
1811
割り当て, 36, 460, 1126
否定, 37, 461

根
根、平方, 1362

最最小値, 207, 632, 933, 1353, 1623
最大, 934, 1625
最大ステップ有効化時間よりも長い, 1800, 1813
最大値, 209, 634, 1356

四機
機械の調整, (IO システムの再構成を参照)

四捨五入, 341, 342, 344, 345, 766, 768, 769, 771,
1210, 1211, 1212, 1478, 1479, 1480, 1705, 1706,
1707, 1708

逆逆シリアル化, 241, 666, 941, 1372, 1640
逆正弦, 225, 650, 1180, 1367, 1635
逆正接, 1184, 1369
逆正接値, 228, 653, 1637
逆多重化, 409, 835, 1549, 1745
逆余弦, 226, 651, 1182, 1368, 1636

指指数値, 219, 644, 1178, 1631
指数値の形成, 1364

持持続時間, 97, 522, 900, 1308

共共有 PtP パラメータエラー, 3449

計計算, 190, 612

警
警告時間よりも長い, 1801, 1814

減時
時刻
RD_SYS_T による CPU の日付と時刻の読み出
し, 1850
SET_TIMEZONE による現地時刻の計算, 1858
TIME_TCK による CPU のシステム時刻の読み出
し, 1871
WR_SYS_T による CPU の設定, 1846
時刻割り込みACT_TINT による有効化, 2336
CAN_TINT によるキャンセル, 2334
QRY_TINT による照会, 2337
SET_TINT による設定, 2328, 2331

減算, 196, 619, 1163, 1167, 1174
T_SUB によるタイマの減算, 1839

終呼呼び出し, 1243, 1245, 1246
High_Speed_Counter, 2811
SSI_Absolute_Encoder, 2825

3754

終了
ユーザープログラム, 379, 804, 1059, 1529,
1727

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

出
出力パラメータ
High_Speed_Counter, 2821
SSI_Absolute_Encoder, 2832

制限値の設定, 211, 637, 936, 1358, 1627
制御タイマアラーム, 430, 434, 856, 860, 1085, 1089,
1569, 1572, 1763, 1767

整
整数, 345, 771, 1211, 1482, 1708

書
書き込み
WR_REC とデータレコード, 2163

正正規化, 349, 775, 1037, 1487, 1712
正弦, 220, 645, 1180, 1365, 1632
正接, 223, 648, 1183, 1366, 1634

除除算, 199, 623, 1165, 1168, 1175
除算の余り, 200, 624, 1172

小

静
静的タグ
High_Speed_Counter, 2823
SSI_Absolute_Encoder, 2833

小数点以下の桁数, 230, 654, 1370, 1638

切照照会アーキテクチャ, 3446
照会アーキテクチャスレーブ, 3447
照会アーキテクチャマスタ, 3446

切り替え, 1195, 1208, 1209, 1237

接接続のチェック, 3135
接続のリセット, 3129

乗
乗算, 197, 621, 1164, 1167, 1175

絶絶対値, 206, 631, 1176, 1352, 1622

信
信号立ち下がりエッジのオペランドの設定, 52, 476
信号立ち上がりエッジのオペランドの設定, 51, 474

選
選択, 402, 828, 1074, 1544, 1741

診
診断
DP スレーブ、DPNRM_DG による診断データの読み出し, 2199
診断データ
GET_DIAG による読み出し, 2548
診断情報の生成, 2545

送送信クロック, 2922

多多重化, 405, 831, 1546, 1742

制
制限値, 211, 637, 1358
TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

3755

索引

対

動

対数, 217, 643, 1179, 1363, 1631

動作原理
High_Speed_Counter, 2812
SSI_Absolute_Encoder, 2825
動作時間カウンタ
RTM による操作, 1872

値
値, 206, 631, 1176

遅遅延割り込みCAN_DINT によるキャンセル, 2351
QRY_DINT による照会, 2352
SRT_DINT による開始, 2349
命令, 2347
遅延時間, 390, 815, 1070, 1538, 1736

通通信
照会アーキテクチャ, 3446
通信インターフェース
プログラミング, 3443
通信モジュール(CM), 3631
データ受信, 3470
プログラミング, 3443

定同
同期
DP_SYC_FR によって DP スレーブから, 2192
SNC_RTCB によるスレーブクロック, 1869
同期エラー
DMSK_FLT のアンマスク, 2369
MSK_FLT によるマスク, 2367
READ_ERR によるエラーレジスタの照会, 2370

読
読み出し
LED による LED ステータス, 2492
RD_LOC_T によるローカルタイム, 1852
RD_REC によるデータレコード, 2157
READ_DBL によるロードメモリのデータブロックからの, 2654
モジュールのデータレコードと RD_DPAR, 2291
非同期 - モジュールのデータレコードとRD_DPARA, 2298

定数, 1169

入転転送, 1192, 1194, 1195, 1196, 1197, 1198

入力
Insert, 459
入力パラメータ
High_Speed_Counter, 2818
SSI_Absolute_Encoder, 2829

電
電子メール
TM_MAIL による電子メールの転送, 3730
TMAIL_C による電子メールの転送, 3012

配
配列データブロック, 299, 302, 305, 309, 725, 728,
731, 735, 985, 988, 990, 994, 1424, 1426, 1429,
1432, 1682, 1684, 1687, 1690

等
等価, 183, 606, 926

反反転, 36, 398, 460, 824, 1128, 1204, 1205

3756

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

索引

範

符

範囲
範囲外の値, 171, 594
範囲内の値, 169, 593

符号, 206, 631, 1176, 1622

負否負, 1206, 1207, 1208

否定, 201, 626, 1621

分
比
比較
S_COMP による文字列, 1877
ビットマスク, 439, 865, 1093, 1577, 1772
以下, 162, 586
以上, 159, 584
整数(16 ビット), 1157
整数(32 ビット), 1159
超過, 164, 589, 1797, 1798, 1800, 1801, 1810,
1811, 1813, 1814
等価, 148, 573
不等価, 153, 578
浮動小数点数, 1161
未満, 167, 591
比較演算
時間タグ, 1832

分岐, 1125, 1502, 1504

文

非同期エラーイベント
DIS_AIRT による遅延, 2395
DIS_IRT による無効化, 2385
EN_AIRT による有効化, 2396
EN_IRT による有効化, 2387

文字列
ATH による 16 進数への変換, 1940
Chars_TO_Strg による文字の文字列へのコピ
ー, 1899
CONCAT による文字列の結合, 1949
DELETE による文字の削除, 1956
FIND による文字の検索, 1963
HTA による 16 進数からの変換, 1944
INSERT による文字の挿入, 1959
LEFT による左側の文字の読み出し, 1951
LEN による長さの定義, 1947
MAX_LEN を使用して最大長を定義, 1902
MID による中央の文字の読み出し, 1954
REPLACE による文字置換, 1961
RIGHT による右側の文字の読み出し, 1952
S_COMP によるタグの比較, 1877
S_COMP による文字列タグの比較, 1877
S_CONV による変換, 1880
S_MOVE を使用した移動, 1876
STRG_VAL による数字列の変換, 1884
VAL_STRG による数字の文字列への変換, 1888

不平

不等価, 184, 607, 928

平方根, 216, 641, 1177, 1362
平方根の形成, 1630

非浮浮動小数点数無効性のチェック, 173, 597
有効性のチェック, 172, 596

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020

変変換, 338, 764, 1199, 1200, 1202, 1203, 1476,
1704
ATH による文字列の 16 進数への, 1940
Chars_TO_Strg による文字の数値文字列へのコピ
ー, 18993757

索引

HTA による 16 進数の文字列への変換, 1944
HW 識別子からスロットへ, 2682
IO アドレスから HW 識別子へ, 2682
S_CONV による文字列, 1880
Strg_TO_Chars による配列内の文字列, 1895
STRG_VAL による数字列の数字への変換, 1884
T_CONV によるタイマの変換, 1834
VAL_STRG による数字の数字列への変換, 1888
スロットから HW 識別子へ, 2682
変換操作
T_CONV によるタイマの変換, 1834
変更
高速カウンタ, 2804, 2808

保保存
BR ビット内の RLO, 1130

命
命令
P3964_Config, 3464
Port_Config, 3450
Receive_Config, 3456
Receive_P2P, 3470
Receive_Reset, 3473
Send_Config, 3454
Send_P2P, 3466
Signal_Get (RS232 信号の取得), 3474
Signal_Get (RS232 信号の設定), 3476
USS_Drive_Control / USS_Drive_Control_31, 3510
USS_Port_Scan, 3507
USS_Port_Scan_31, 3507
USS_Read_Param / USS_Read_Param_31, 3516
USS_Write_Param / USS_Write_Param_31, 3518

立ち下りエッジのオペランドスキャン, 49, 473
立ち上がりエッジの RLO スキャン, 53, 477
立ち上がりエッジのオペランドスキャン, 47, 471

累累乗, 231, 656

論
論理アドレス
GADR_LGC によるモジュールの確定, 2704
LGC_GADR による関連スロットの確定, 2706
LOG_GEO による関連するスロットの確定, 2700
RD_LGADR によるモジュールの確定, 2702
論理演算
AD, 1252
AND, 393, 818
AW, 1247
EXCLUSIVE OR, 397, 822
OD, 1253
OR, 395, 820
OW, 1248
XOD, 1255
XOW, 1250

戻戻り値
PtP 命令, 3448
戻り値受信ランタイム, 3470

余余弦, 222, 647, 1181, 1365, 1633

立
立ち下がりエッジの RLO スキャン, 55, 478

3758

TIA ポータルの説明 S7-1200/1500
プログラミング/操作マニュアル, 12/2020