Programmierung mit PAS4000----------------------------- 目次 ----------------------------1

IEC 61131-3の歴史 ..............................................................4

2

POU (プログラム構成要素) .................................................6
2.1

3

プログラミング言語 ............................................................8
3.1
3.2
3.3
3.4
3.5
3.6

4

FBとファンクションのインスタンス化 ..................................... 7

IL: ............................................................................................... 8
LD: .............................................................................................. 9
FBD: ........................................................................................... 9
STL: ............................................................................................ 9
SFC: ......................................................................................... 10
Multi Editor: ............................................................................. 11

変数とデータ型 .................................................................12
4.1 変数タイプ ................................................................................ 12
4.1.1 変数の宣言 ................................................................................ 13
4.1.2 変数タイプの属性 ..................................................................... 13
4.1.3 Retain、Persistent、およびRetain/Persistent .......................... 14
4.1.4 グローバル変数......................................................................... 14
4.2 基本データ型 (Elementary data type) .................................... 15
4.2.1 I/Oアドレス指定の変数 ............................................................ 16
4.2.2 エッジ検出の変数 (R_EDGE、F_EDGE) ................................ 17
4.2.3 定数値の変数 (CONSTANT) ..................................................... 17
4.3 派生データ型 (derived data type) ........................................... 18
4.3.1 直接派生したデータ型.............................................................. 18
4.3.2 「範囲」データ型 (RANGE)..................................................... 19
4.3.3 「列挙」データ型 (ENUM) ....................................................... 19
4.3.4 「配列」データ型 (ARRAY) ..................................................... 19
4.3.5 「構造」データ型 (STRUCT) ................................................... 22
4.4

Präfix/Suffix für Variablen ...................................................... 235

演習: 選択肢問題 ...............................................................24

6

一般ファンクションとスタンダードファンクション
ブロック (IEC 61131 – 適合リスト) ..................................28
6.1

一般ファンクション ................................................................. 28

6.2 スタンダードファンクションブロック .................................... 32
6.2.1 インスタンス化......................................................................... 33

7

システムファンクション ...................................................34

8

プログラム内の定数 ..........................................................35

9リソース ............................................................................36
9.1

プログラミングモデル.............................................................. 37

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-1Programmierung mit PAS4000
9.2

リソースの割り付け: ................................................................ 37

10 タスク ............................................................................... 38
10.1 タスクの実行 ............................................................................ 38
10.2 タスクのプロパティ ................................................................. 39
10.3 優先度 ....................................................................................... 39
10.4 タスクのタイプ......................................................................... 40
10.5 タスクのデフォルトコンフィグレーション ............................. 42
10.6 ネームスペース内のタスク情報 ............................................... 43
10.7 実践的な実装 ............................................................................ 44

11 I/Oマッピング ................................................................... 45
12 PSS 4000のコンフィグレーション (リソース、タス
ク、 I/Oマッピング) .......................................................... 48
12.1 手順 ........................................................................................... 48
12.1.1 デバイスとI/Oモジュールの定義 (リソース) ........................... 48
12.1.2 タスクの定義 ........................................................................... 49
12.1.3 展開 (POUのハードウェアへの割り付け)................................ 50
12.1.4 I/Oマッピングの定義 ............................................................... 51

13 その他 ............................................................................... 53
13.1 キーワード ................................................................................ 53
13.2 コメント.................................................................................... 54
13.3 スペースの使用......................................................................... 54
13.4 区切り記号 ................................................................................ 54
13.5 プログラミング言語 ................................................................. 55
13.5.1 IL - インストラクションリスト ............................................... 55
13.5.2 STL – ストラクチャードテキスト ........................................... 57

14 プログラミング演習1 ........................................................ 60
15 型変換 ............................................................................... 62
15.1 Implicit型変換 .......................................................................... 62
15.2 Explicit型変換 .......................................................................... 65

16 演習: 選択肢問題 ............................................................... 66
17 ライブラリ ........................................................................ 68
17.1 ライブラリマネージャ .............................................................. 68
17.1.1 パレット ................................................................................... 68
17.1.2 ピルツライブラリ .................................................................... 68
17.1.3 システムライブラリ................................................................. 68
17.1.4 ユーザライブラリ .................................................................... 68

18 プログラミング演習2 ........................................................ 69

1-2

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000

2011 年 12 月
Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-3Programmierung mit PAS4000
1

IEC 61131-3 の歴史
IEC 61131-3 は、産業用オートメーションのための、ベンダに依存しない最初の標準プログラミング言語です。この言語は、世界中で認められる標準や規格を策定する国際電気標準会議 (IEC) によって確立されました。
歴史: IEC は 1906 年に創設されました。当初はロンドンを拠点としていまし
たが、1948 年に本部をジュネーブに移しました。IEC は本来、計量単位、特にガウス、ヘルツ、およびウェーバーの規格を調整することに関与していました。1938 年、IEC は電気技術用語を標準化するために、多国語の国際辞書を出版しました。その業務は今日まで続いており、国際電気標準用語集は、電
気および電子業界において重要な役割を果たしています。
この規格の構成は次の通りです。
第 1 部:

一般的な情報; 現在のバージョンは 3.2004

第 2 部:

装置の要件とテスト; 現在のバージョンは 2.2004

第 3 部:

プログラミング言語; 現在のバージョンは 12.2003

第3部
付属書 1:

プログラマブルロジックコントローラ用プログラミング言語のアプリケーションと実装のガイドライン; 現在のバージョン
は 4.2005

第 5 部:

通信; 現在のバージョンは 11.2001

第 7 部:

ファジー制御プログラミング; 現在のバージョンは 11.2001

IEC 61131-3 は産業およびプロセス制御のシステムとして、ヨーロッパでは確固たる基盤が確立されており、北米およびアジアでも急速に普及してきています。
IEC 61131-3 は、産業用制御とオートメーションがソフトウェアソリューション
によって管理されるようになることで、その要件がますます複雑化していると考えています。
標準のプログラミング言語を適用することは、分析、設計、製造、テスト (検証)、インストール、運用、およびメンテナンスの要件を含むソフトウェアラ
イフサイクルにプラスの影響を与えます。
この場合、メンテナンスに及ぼす影響が重要な役割を果たします。というのは、制御ソフトウェアのアップグレードなどのメンテナンスに要する時間は、
元の計画で想定されたものより 2～4 倍も長くなるのが一般的なためです。

1-4

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000
POU (プログラム構成要素) コンポーネントは、個別での実行が可能なタスクとして定義することができます。また、タスクは、1 つの大型コントローラに集約するのではなく、複数の PLC (プログラマブルロジックコントローラ)に分散することもできます。
IEC 61131-3 は、1 つの制御プログラムで複数のプログラミング言語のサポートを提供します。これにより制御プログラムの開発者は、特定のタスクを解決するのに最も適した言語を選択でき、生産性を大幅に高めることができます。
エンジニアリングプロセスに携わる担当者が容易に理解して学習できる、
ベン
ダに依存しない標準言語が設計されました。ヨーロッパでは、次のグラフィ
カルなドキュメンテーション形式が確立されています。


制御およびインターロック用 CFC (コンティニュアスファンクション
チャート)
シーケンス制御用 SFC (シーケンシャルファンクションチャート)

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-5Programmierung mit PAS4000

2POU (プログラム構成要素)
IEC 61131-3 は、PLC プログラミングのための基本モデルを導入しています。
古い PLC で通常使用される DIN 19239 に基づいたブロックモデルは、すでに外されています。下のテーブルはこれらの違いを示しています。
DIN 19239

IEC 61131-3

 OB (オーガニゼーションブロック) PB (プログラムブロック) FB (ファンクションブロック) SB (シーケンスブロック) DB (データブロック) プログラム (PRG) ファンクションブロック (FB) ファンクション

OB:OB は周期的または時間起動型のプログラムシーケンスを制御

タスク:
タスクは時系列的なプログラム
シーケンスを制御

DIN 19239

IEC 61131-3

POE
POU 1

OB 1
PB 1
機械

サイクル

PB 10
ステーション 1

PB 11
ステーション 2

FB 1

機械
プログラム

ファンク
ション
ブロック

ファンクション
ブロック

ファンクション

スイッチ

PB 12
ステーション 3

ファンクション
ブロック

FB 1
スイッチ

PB 2
Seq

ファンク
ション
ブロック

SB 1
Seq 1

ファンクション

ファンクション

OB 10
PB 100
診断

時間

タスク 1

POU 1
POU 2
POU 3

タスク 2

POU 4
POU 5

タスク

説明

タスク 1 … n

タスクは定期的に処理されるか、またはイベントの結果として処理されます。タスクには優先度も指定され、この優先度に従ってリソース内に割り付けされます。
タスクの宣言は、タスクの名前、タスクの優先度のエントリ、タスクの実行条件のエントリで構成されます。条件は、タスクが実行されるまでの時間の間隔、イベント (デジタル入力での立上りやグローバル変数の FALSE/TRUE の切り換わり)、または遮1-6

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000
タスク

説明

タスク 1 … n断のいずれかです。タスクごとに、タスクから呼び出すプログ
ラムのシーケンスを指定することができます。これらのプログ
ラムは記述された順序で実行されます。

POU

説明

POU:

IEC 61131-3 では、プログラム、ファンクションブロック、およびファンクションは、プログラム構成要素 (POU) と呼ばれます。
POU のプロパティにより、ユーザプログラムの大規模なモジュラ化と、実装およびテスト済みソフトウェアブロックの再使用を可能にします。POU はタスク宣言によって呼び出すことができます。

プログラム:

主要なプログラムを形成するプログラムは、PSS 4000 の構造化
プログラミングに大きな役割を果たします。プログラムは呼び出
されず、タスクに割り付けられます。プログラムが割り付けられたタスクはリソースに割り付けられます。プログラムから FB とファンクションを呼び出すことができます。

ファンクションブ
ロック:

ファンクションブロックにより、PSS 4000 の構造化プログラミン
グはさらに強化されます。FB にはデータを転送するための入力変数および出力変数が格納されます。FB はプログラムおよび FB によって呼び出され、呼び出された FB は他の FB およびファンク
ションを呼び出すことができます。

ファンクション:ファンクションには次の規則が適用されます。ファンクションが呼び出される回数や呼び出される時点に関わらず、同じ入力値では常に同じ出力値とファンクション値が提供されます。ファンクションには FB のようにメモリはありません。
ファンクションは、プログラム、FB、またはファンクションによって呼び出される他、自身で他のファンクションを呼び出すこともできます。

2.1 FBとファンクションのインスタンス化
FB とファンクションは、データ型のように、使用前にシステムに認識させる必要があります。これは、一般ファンクション (「一般ファンクション」を参照) には当てはまりません。一般ファンクションの場合は、すでに PSS 4000で使用できるよう定義されています。


FB/FUN/スタンダード FB を使ったインスタンス:
データ型と同様、定義する必要があります。結果として、計算規則 (コマンド文字列) が戻されます。データ構造 (変数) は複製されます。
一般ファンクションを使ったインスタンス:
不要 - 定義は PSS 4000 に認識されています。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-7Programmierung mit PAS4000

3

プログラミング言語
IEC 61131-3 にはテキスト言語とグラフィカル言語、さらにシーケンシャル
ファンクションチャートが含まれています。シーケンシャルファンクション
チャートはテキストですが、グラフィカルに使用することもできます。これらの IEC 61131-3 言語に加えて、PSS 4000 には PNOZmulti の使い慣れたMulti Editor も含まれています。グラフィカル言語は既製の入力、ロジック、および出力ファンクションと連携して機能します。
IEC 61131-3適合のプログラミング言語

テキストベース言語

グラフィカル言語

シーケンシャル
ファンクションチャート(SFC)

インストラクション
リスト (IL)

ストラクチャード
テキスト (STL)

ファンクション
ブロック
ダイアグラム(FBD)

ラダーダイアグラム(LD)

Multi Editor

図: プログラミング言語

3.1 IL:インストラクションリストプログラミング言語でプログラミングするためのエディタ。テキスト言語 IL のコードは一連の命令で構成されます。各命令 (オペレータ) は新しい行で始まり、そのあとにオペランドが続きます。IL のオ
ペランドは変数、定数、またはファンクションブロックのインスタンス名で、これらは PAS4000 に別々の色で示されます。
IL では分岐コマンドやラベルも使用できます。プログラムを実行すると、プ
ログラムは分岐コマンドのある行で分岐し、ラベルのある行に移動します。
LD TRUEST b_Start
LD T#1000ms
ST t_Time_value // set time value
CAL T_clockTP( // Standard-Function_Block “Timer as Impuls
in := b_Start,
pt := t_Time_value,q => b_Output)

1-8

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000
3.2 LD:
ラダーダイアグラムプログラミング言語でプログラミングするためのエディタ。
この言語のコードは接点とコイルで構成されます。接点は電流を左から右に導通します。コイルは受電値を保存します。両方とも BOOL 値の変数です。
接点とコイルはラインでつながれ、電源レールによって左右に拘束されます。

3.3 FBD:
ファンクションブロックダイアグラムプログラミング言語でプログラミング
するためのエディタ。この言語のプログラムコードはファンクションとファン
クションブロックで構成され、ファンクションとファンクションブロックはラインで相互接続されるか、または変数に接続されます。

3.4 STL:
ストラクチャードテキストプログラミング言語でプログラミングするためのエディタ。
このテキスト言語のプログラムコードは命令と式で構成されます。コードの各行はセミコロンで終わります。
式は命令の一部を形成し、その命令を実行するための値を提供する接点です。
式はオペレータとオペランドで構成されます。オペランドのオペレータは、優先度の最も高いものから順に来るように適用しなければなりません。オペ
ランドは定数、変数、またはファンクションの名前です。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-9Programmierung mit PAS4000
IF (b_MACHINE_ON = TRUE) THEN
di_TARGET_POSITION := di_TARGET_POSITION + 100;b_INPUT1 := b_INPUT1 AND b_INPUT2;
b_OUTPUT1 := TRUE;ELSIF b_MACHINE_ON = FALSE THEN
b_OUTPUT1 := FALSE;
END_IF;

3.5 SFC:
SFC (シーケンシャルファンクションチャート) でプログラミングするためのエディタ。以前は、この言語を SB (シーケンスブロックまたはシーケンサ) と呼ぶこともありました。グラフィカル言語 SFC のプログラムコードはステップとトランジションで構成され、これらのステップとトランジションはラインで接続されます。1 つのステップに 1 つ以上のブロックを割り付けることができます。この種のプログラミングは、主に設備シーケンスを構造的に表すのに使用されます。複雑なシーケンスをより管理しやすくするのに役立ちます。
シーケンスは初期化のステップから始まり、これによりプラントが定義済みの初期化状態になります。あるステップから次のステップへの移行は、トランジション (条件を有効にするステップ) によって制御されます。

1-10

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000

3.6 Multi Editor:
PNOZmulti の使い慣れたグラフィックエディタ。
プログラムコードは既製のファンクション、ロジック、および出力ファンク
ションで構成され、これらの要素はラインで接続されます。非常にシンプルな原理で、管理が簡単です。この種のプログラミングは、シンプルな安全制
御機能および監視機能に役立ちます。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-11Programmierung mit PAS4000

4

変数とデータ型

4.1 変数タイプ
IEC 61131-3 は 7 種類の変数を認識し、これらは関連するキーワードで識別されます。制御プログラムの POU 内または POU 間での変数の使用方法は、
変数タイプを使って記述します。
変数タイプ

説明

アクセス権

VAR

POU 内でのみ使用されるローカル変数です。

VAR_INPUT

入力変数は POU 内では読み取り専用ですが、呼び出された POU 内では読み取り／書き込
み可能です。イネーブルパラメータとして機能します。
出力変数は POU 内では読み取り／書き込み可能ですが、呼び出された POU 内では読み取り専用です。イネーブルパラメータとして機能します。
入出力変数は、POU 内および呼び出された
POU の両方で読み取り／書き込み可能です。
イネーブルパラメータとして機能します。
この変数は「グローバル変数エディタ」
を使って宣言され、すべての POU で読み取り／書き込み可能です。POU 内では
VAR_EXTERNAL として宣言する必要があります。
POU 内でグローバル変数 (VAR_GLOBAL) へのアクセスを有効にするには、
VAR_EXTERNAL として宣言する必要があります。
POU 内でのみ使用される一時ローカル変数
です。POU が呼び出されるたびに初期化され、初期値などにリセットされます。

VAR_
OUTPUT

VAR_IN_OUT
VAR_
GLOBAL

VAR_
EXTERNAL

VAR_TEMP

アプリケー
ション

内部
POU
読み取り／
書き込み

外部
POU
-

読み取り専用

PRG

FB

FUN

X

X

X

読み取り／
書き込み

X

X

読み取り／
書き込み

読み取り
専用

X

X

読み取り／
書き込み

読み取り／
書き込み

X

X

読み取り／
書き込み

読み取り／
書き込み

X

X

読み取り／
書き込み

読み取り／
書き込み

X

X

読み取り／
書き込み

-

X

X

X

変数の宣言の例:

FUNCTION_BLOCK Station1
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VARVAR
b_Start:BOOL;
b_Stop: BOOL;
END_VAR1-12

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000
4.1.1 変数の宣言
宣言はテキストとして作成され、すべてのプログラミング言語で同じです。
ほとんどのデータ型は POU の宣言セクションで宣言されますが、グローバ
ル変数だけは「グローバル変数エディタ」内で個別に宣言されます。
原則として、変数の宣言は次に示すようになります。

<属性>

変数タイプ

VAR_OUTPUT RETAIN
b_myVar1: BOOL;b_myVar2: BOOL := FALSE;
i_myVar3, i_myVar4 : INT;
i_myVar3, i_myVar4 : INT := 100;
識別子

宣言ブロック

<初期値>

データ型

VAR_END
キーワード

4.1.2 変数タイプの属性
属性 RETAIN、PERSISTENT、PERSISTENT/RETAIN、R_EDGE、
F-EDGE、READ_ONLY、および READ_WRITE は変数タイプのすぐ後ろに指定します。次のテーブルは、各変数タイプに使用できる属性を示しています。
例:
VAR_GLOBAL RETAIN
G_b_myGlobalRetain: BOOL;
END VARPERSISTENT

RETAINPERSISTENT
RETAINCONSTANT

R_EDGE
F_EDGE

READ_
ONLY
READ_
WRITE

VAR

○

○

○

○

-

-

VAR_INPUT

-

-

-

-

○

-

VAR_OUTPUT

○

○

○

-

-

-

VAR_IN_OUT

-

-

-

-

-

-

VAR_GLOBAL

○

○

○

○

-

-

VAR_EXTERNAL

-

-

-

-

-

-

VAR_TEMP

-

-

-

-

-

-

変数

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-13Programmierung mit PAS4000
4.1.3 Retain、Persistent、およびRetain/Persistent
次のテーブルは、各属性がダウンロード、ウォームリセット、コールドリセッ
ト、またはオリジナルリセットの間に使用された場合の、変数タイプの動作を示しています。
キーワード

RETAINPERSISTENTRETAINPERSISTENT

ダウンロード

ウォーム
リセット

コールド
リセット

初期値へのリセット (初期値が使用できない場合はデフォルト値へのリセット)
○
○
○
X
○
○
X
○
○
X

X

オリジナル
リセット
変数削除
○
○
○

○

○

変数タイプと属性の例:

4.1.4 グローバル変数
グローバル変数にはリソース内のすべての POU からアクセスできるため、個々の POU 間でデータを交換できます。
POU 1
VAR -Declaration

GlobalVariables

ProgramVAR
VAR_EXTERNALVAR_GLOBAL
G_i_myGlobalVar1: INT;
G_i_myGlobalVar2: INT;END_VARPOU 2
VAR -Declaration

Program

VAR

G_i_myGlobalVar1: INT;VAR_EXTERNAL

グローバル変数の例:

1-14

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000

4.2 基本データ型 (Elementary data type)
基本データ型のテーブル:ST リソースの基本データ型
ビット数

データ型

説明

値の範囲

BOOL

シングルビット

1

0、1、TRUE、FALSE

BYTE

8 ビットのビット配列

80 … FFWORD

16 ビットのビット配列

160 … FFFF

DWORD

32 ビットのビット配列

32

0 … FFFF_FFFF

LWORD

64 ビットのビット配列

64

0 … FFFF_FFFF_FFFF_FFFF

SINT

短整数

8

-128 ... +127

INT

整数

16

-32.768 ... +32.767

DINT

倍精度整数

32

-2.147.483.648 ... +2.147.483.647

LINT

長整数

64

-263 ... +263-1

USINT

符号なし短整数

80 ... 255

UINT

符号なし整数

16

0 ... 65.535

UDINT

符号なし倍精度整数

32

0 ... 4.294.967.295

ULINT

符号なし倍精度整数

64

0 ... +264-1

REAL

実数

32

0.0 … X

LREAL

長実数

64

0.0 … X

TIME

スタンダード FB TP、TON、TOF の時間

32

0 ... 4.294.967.295

DATE

日付

D#1970-01-01...D#294247-01-10

TIME_OF_DAY
または TOD

1 日のうちの時間

0 ... TOD#23:59:59.999

DATE_AND_TIME
または DT

日付と時間

DT#1970-01-01-00:00:00 ...DT#2106-01-19-3:14:08

FS リソースの基本データ型
ビット数

データ型

説明

SAFEBOOL

シングルビット

1

0、1、TRUE、FALSESAFEBYTE

8 ビットのビット配列

80 … FFSAFEWORD

16 ビットのビット配列

160 … FFFF

SAFEDWORD

32 ビットのビット配列

32

0 … FFFF_FFFF

SAFESINT

短整数

8-128 ... +127

SAFEINT

整数

16-32.768 ... +32.767

SAFEDINT

倍精度整数-2.147.483.648 ... +2.147.483.647

SAFEUSINT

符号なし短整数

32
8

SAFEUINT

符号なし整数

16

0 ... 65.535

SAFEUDINT

符号なし倍精度整数

32

0 ... 4.294.967.295

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

値の範囲

0 ... 255

1-15

Programmierung mit PAS4000
データ型宣言の例:

VAR
b_START:BOOL;
b_STOP:BOOL;
di_Speed_actual:DINT;
di_Speed_target:DINT;END_VAR4.2.1 I/Oアドレス指定の変数
固定の入力アドレスおよび出力アドレスへのアクセスには、IEC 61131-3 に従ってキーワード AT を使用します。

PROGRAM Main_Program
VAR(*Prozess-Image-Variables:Inputs
for PSSu PLC_left*)
I_b_Digital_Input_1 AT %I*:BOOL;
I_b_Digital_Input_2 AT %I*:SAFEBOOL;
I_w_Analogue_Input_1 AT %I*:WORD;
I_w_Analogue_Input_2 AT %I*:SAFEWORD;(*Prozess-Image-Variables:Outputs
for PSSu PLC_left*)
I_b_Digital_Output_1 AT %Q*:BOOL;
I_b_Digital_Output_2 AT %Q*:SAFEBOOL;
I_w_Analogue_Output_1 AT %Q*:WORD;
I_w_Analogue_Output_2 AT %Q*:SAFEWORD;
END_VAR絶対 I/O アドレスは、I/O マッピングによってのみ定義されます (「I/O マッピング」を参照)。



1-16

I/O マ ッ ピ ン グ で は 、 こ れ ら の 変 数 は PI- 変 数(Process-Image-Variables) と呼ばれます。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000

4.2.2 エッジ検出の変数 (R_EDGE、F_EDGE)
属性 R_EDGE および F_EDGE は BOOL 値の入力変数で、それぞれエッジの立上りと立下りを示します。これらの属性は、変数タイプ VAR_INPUT の個々の変数のファンクションブロックで使用できます。例:
VAR_INPUT
myRisingEdge: BOOL R_EDGE;
myFallingEdge: BOOL F_EDGE;
END_VAR4.2.3 定数値の変数 (CONSTANT)
ユーザプログラムで固定値を使用するには 2 つのオプションがあります。


POU のステートメントの部分に直接入力する
CONSTANT 属性を使った変数を宣言し、固定値を割り付ける

変数に固定値を割り付けるには、宣言ブロックに進み、データ型のキーワー
ドの後にスペースを 1 つ入力してから、CONSTANT 属性を挿入します。変数の固定値は、データ型および割り付けオペレータ「:=」の後ろに記述します。固定値はデータ型の値の範囲を超えてはなりません。
VAR CONSTANT
b_myconst1: BOOL := TRUE;
i_myconst2: INT := INT#-273;
di_myconst3: DINT := -1234567;
END_VAR
CONSTANT 属性は常に宣言ブロック内のすべての変数を参照します。ある
データ型に 1 つの定数値と複数の定数以外の値を宣言する場合、2 つの宣言
ブロックを作成する必要があります。CONSTANT属性は、VAR_GLOBAL デー
タ型、および VAR データ型のプログラム、ファンクションブロック、ファン
クションで使用できます。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-17Programmierung mit PAS4000

4.3 派生データ型 (derived data type)
派生データ型 (derived data type) はユーザによって宣言されるデータ型で、基本データ型をベースにしています。ただし、派生データ型には変更または拡張されたプロパティがあります。派生データ型を宣言する理由は、データ型のプロパティをモニタリングするためです。変数が、指定されたプロパティと一致しない場合は、リンク時または実行時にエラーメッセージがトリガされます。
派生データ型を、新しい派生データ型のベースとして再使用することもできます。
派生データ型の宣言は POUの宣言部分で行い、キーワード TYPEと END_TYPEの間に定義します。
派生データ型は、基本データ型と同様、変数宣言内で使用でき、キーワード
TYPE から END_TYP までの間に定義します。
派生データ型にはさまざまな種類があります。
 直接派生したデータ型
 「範囲」データ型 (RANGE) 「列挙」データ型 (ENUM)
 「配列」データ型 (ARRAY) 「構造」データ型 (STRUCT) PSS_ERROR データ型

4.3.1 直接派生したデータ型
直接派生したデータ型は 1 つの基本データ型に対応していますが、別の名前、および場合によっては別の初期値を持ちます。
直接派生したデータ型の変数は、基本データ型を使用できるすべての場所で使用できます。つまり、「mytype」データ型の変数は、INT データ型の変数を使用できるあらゆる場所で使用できます。
説明例

基本データ型 INT と同じプロパティ (この例では 0) を持つ派生データ型である「mytype」の
宣言。

TYPE
i_mytype :END_TYPE

ただし、初期値は変更することもできます(この例では 3)。

TYPE
di_mytype : DINT :=3;
END_TYPE

1-18

INT;

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000
4.3.2 「範囲」データ型 (RANGE)「範囲」データ型は、制限された範囲内で基本データ型の整数値 (ANY_INT) に対応します。
説明

例

値の幅は-20～35

TYPE
di_mytype : DINT (-20..35);
END_TYPE
TYPE
di_mytype : DINT (-20..35) := 5;
END_TYPE

値の幅は-20～35 で初期値が 54.3.3 「列挙」データ型 (ENUM)「列挙」
データ型は、変数が受け入れることのできる値をすべてリストします。
説明

例

値「red」、「amber」、「green」を持つ派生
データ型「traffic light」の宣言。初期値は、自動的に列挙の最初の値を取ります。この例では「red」。

TYPE
e_Ampel : (red, yellow, green);
END_TYPE

ただし、初期値を定義することもできます。この例では「amber」。

TYPE
e_Ampel : (red, yellow, green):= yellow;
END_TYPE

さまざまな列挙の値は、データ型の識別子を記述することで区別できます。2 つの列挙に同じ値が含まれている場合は、データ型の識別子を入力する必要があります。例は、2 つの似通っ
た列挙。

TYPE
e_Ampel : (red, yellow, green);
LED : (red, yellow, green);
END_TYPEPOU のステートメント部分で指定する場合、「traffic light」と「LED」の「amber」値はデータ型の識別子を記述することで区別されます。

e_Ampel#yellow
e_LED#yellow「列挙」データ型は明示的に宣言する必要はな
く、匿名の宣言でも構いません。つまり、「列挙」データ型に識別子を定義する代わりに、変数を宣言するときに列挙を記述します。

VAR
e_myvar : (red, yellow, green):= yellow;
END_VAR4.3.4 「配列」データ型 (ARRAY)
同じ基本データ型または派生データ型のいくつかの変数を 1 つの配列にまとめることができます。また、ファンクションブロックインスタンスの配列を作成することもできます。


配列は、同じデータ型の変数の集合である
グローバル変数またはローカル変数として宣言できる
設計内の 1 次元または 2 次元、さらに 3 次元も指定できる配列の個々のファンクションにはインデックスを使ってアクセスできます。
配列をデータ型として宣言するには、まず識別子を記述する必要があります。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-19Programmierung mit PAS4000
コロンの後にキーワード「ARRAY」を指定し、その後、配列ファンクションに対応させるインデックスを角括弧で囲んで記述します。インデックスには整数とゼロのみ使用できます。配列に 5 つのファンクションを含める場合は、
たとえば、インデックスとして「0.0.4」または「32..36」と入力できます。
最後に、キーワード「OF」の後ろにデータ型を記述します。
説明例

1 次元の配列(8 配列)

0 1 2 3 4 5

6 7

VAR
a_di_mytype : ARRAY [0..7] OF DINT;END_VAR2 次元の配列:(8 x 6 = 48 配列)

5
4
3
2
1
0
0 1 2 3 4 5

6 7

VAR
a_di_mytype: ARRAY [0..7, 0..5] OF DINT;END_VAR

3 次元の配列(8 x 6 x 3 = 144 配列)

5
4
3
2
1
0
0 1 2 3 4 5

6 7

0

1

2

VAR
a_di_mytype: ARRAY [0..7] OF DINT;END_VAR1-20

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000
説明

例

初期値:
配列ファンクションごとに別々の初期値を指定できます。

TYPE
a_di_mytype : ARRAY [0..7] OF DINT := [3, -4, 88, 16, -89, 5, 5, 0];
END_TYPE

省略構文の初期値:
丸括弧の中の値を繰り返す回
数を、括弧の前に記述します。

すべての配列ファンクションの初期値は 3:
TYPE
a_di_mytype : ARRAY [0..7] OF DINT := [8(3)];
END_TYPE
初期値の例 [1, 2, 3, 4, 4, 1, 2, 3]:
TYPE
a_di_mytype : ARRAY [0..7] OF DINT := [1,2,3,2(4),1,2,3];
END_TYPE

多次元配列の初期値:
配列ファンクションごとに別々の初期値を指定できます。

2 次元配列の例:
ARRAY [0.0.7, 0.0.5,] 初期値は次の順序で記述する:

多次元配列の省略構文の初期値:
丸括弧の中の値を繰り返す回
数を、括弧の前に記述します。

2 次元配列の例:
ARRAY [0.0.7, 0.0.5,] 初期値は次の順序で記述する:
Element [0,...7, 0,...7,0,…7,0,…7,0,…7];

Element [0,...7, 0,...7,0,…7,0,…7,0,…7];
TYPE
a_di_mytype : ARRAY [0..7, 0..5] OF DINT := [3, -4, 88, 16, -89,
5, 5, 0, 3, -4, 88, 16, -89, 5];
END_TYPE

TYPE
a_di_mytype : ARRAY [0..7, 0..5] OF DINT :=[1,2,3,4,5,6,7,8,9,36(0),1,2,3];
END_TYPE

データ型「DINT」の変数のみ、データ型の初期値指定を省略できます。たとえば、データ型「INT」の場合、初期値は次のように入力します。[# 1 INT, INT # 5, etc.]
初期値が宣言されてもその数が配列ファンクションの数に満たなかった場合は、そのデータ型の開始値が残りの配列
ファンクションに適用されます。記述された初期値の数が配列ファンクションの数を超えている場合は、余分な初期値は無視されます。どちらの場合も、PAS4000 から警告が出されます。
「ARRAY」データ型の変数の個々のファンクションは、
ベースとなった基本データ型の変数を使用できるすべての場所で使用できます。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-21Programmierung mit PAS4000
4.3.5 「構造」データ型 (STRUCT)「構造」データ型は、さまざまな基本データ型や派生データ型の複数のファン
クションの組み合わせです。ファンクションブロックインスタンスも構造ファン
クションになり得ます。個々の構造ファンクションにアクセスするには、変数名の後に構造ファンクションの名前を記述します。
説明

例

構造の宣言:
構造ファンクションの初期値は、自動的にそれらのデータ型の初期値と同じになり
ます。

TYPE
st_AnalogInput : STRUCTMinValue : INT;
MaxValue : INT;READY : BOOL;
END_STRUCT;END_TYPE

初期値の定義:TYPE
st_AnalogInput : STRUCTMinValue : INT :=45;
MaxValue : INT:=90;
Ready : BOOL:=TRUE;END_STRUCT;END_TYPE

構造がデータ型のベースとして使用された TYPE
st_mytype : st_AnalogInput := (MinValue := 50,場合、初期値の定義は次のようになります。 MaxValue := 100, Ready := FALSE);
END_TYPE





1-22

構造の個々のファンクションに初期値が定義されていない
場合は、ベースとなったデータ型の初期値がこれらのファンクションに適用されます。記述された初期値の数が配列
ファンクションの数を超えている場合は、余分な初期値は無視されます。どちらの場合も、PAS4000 から警告が出されます。
「構造」データ型の変数の個々のファンクションは、ベースとなった基本データ型の変数が使用できる状況であればどのような状況でも使用できます。「構造」データ型は匿名で宣言できません。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000
4.4 Präfix/Suffix für Variablen
変数およびファンクションの名前に変数の内容が反映されるようにします。
また、変数名には 1 つまたは複数のプレフィックスをつける必要があります。
これらのプレフィックスはデータ型および変数のプロパティによって異なり、
アンダーバーで区切ります。
基本データ型:
ST-データ型
BOOL
BYTE
WORD
DWORD
LWORD
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
STRINGTIMEDATETIME_OF_DAY
または TODDATE_AND_TIME
または DT
ENUM
派生データ型:
データ型
POINTERARRAYSTRUCT
POINTER

FS-データ型

プレフィックスSAFEBOOLSAFEBYTESAFEWORD
SAFEDWORDSAFESINT
SAFEINTSAFEDINT
SAFEUSINTSAFEUINT
SAFEUDINT
-

b_
by_
w_
dw_
lw_
si_
i_
di_
li_
usi_
ui_
udi_
uli_
r_
lr_
s_
t_
d_
tod_

b_MyFirstBool : BOOL;
by_MyFirstByte : BYTE;
w_MyFirstWord : WORD;
dw_MyFirstDWord : DWORD;
lw_MyFirstLWord : LWORD;
si_MyFirstSInt : SINT;
i_MyFirstInt : INT;
di_MyFirst: Dint : DINT;
li_MyFirstLInt : LINT;
usi_MyFirstUSInt : USINT;
ui_MyFirstUInt : UINT;
udi_MyFirstUDInt : UDINT;
uli_MyFirstULInt : ULINT;
r_MyFirstReal : REAL;
lr_MyFirstLReal : LREAL;
s_MyFirstString : STRING;
t_MyFirstTime : TIME;
d_MyFirstDate : DATE;
tod_MyFirstTod : TOD;-dt_

dt_MyFirstDt : DT;-e_e_MyNumbers: (red,yellow,green);

プレフィックス
p_
a_
st_
p_

例

例
p_dw_MyFirstPointer : POINTER TO DWORD;
a_di_MyFirstArray : ARRAY [0..9] OF DINT;
st_MyFirstStruct : STRUCT;
p_dw_MyFirstPointer : POINTER TO DWORD;

E/Amapping „AT“ = PII / PIO の変数
AT-変数
プレフィックス
例
PII =入力
PIO =出力I_
Q_

I_b_MyFirstInput AT %I* : BOOL;
Q_w_MyFirstOutput AT %Q* : WORD;

グローバル変数
プレフィックス
基本データ型
PII =入力
PIO =出力

G_
G_I_
G_Q_

例
G_b_MyFirst_GlobalVar: BOOL;
G_I_b_MyFirst_GlobalVar AT%I: BOOL;
G_Q_b_MyFirst_GlobalVar AT%Q: BOOL;

スタンダードファンクションブロック:
FB 名
プレフィックス
例SR
RS
R_TRIG
F_TRIGCTU…
CTUD_ULINT
TP
TON
TOF

sr_
rs_
rt_
ft_
C_i
…
C_uli
T_
T_
T_

sr_MyFirstSr_Filpflop: SR;
rs_MyFirstRs_Filpflop: RS;
rt_MyFirstR_Trig : R_TRIG;
ft_MyFirstF_Trig : F_TRIG;
C_i_MyFirstCtu: CTU;…
C_uli_MyFirstCtu: CTUD_ULINT;
T_MyFirstTp: TP;
T_MyFirstTon: TON;
T_MyFirstTof: TOF;

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-23

演習: 選択肢「4択」問題

5

演習: 選択肢問題
問題 1
コンベヤベルトシステムの 20 個のスイッチに POU を作成する必要があります。
POU には、さまざまなセンサまたはアクチュエータ用の入力変数および出力変数を含めなければなりません。また、診断用など、さまざまなスイッチ条件を認識できるようにする必要があります。どのような種類の POU が必要ですか？

正解
1. プログラム
2. ファンクションブロック
3. ファンクション
4. タスク






問題 2
さまざまな信号や制御ランプの点滅を有効にするためのパルスジェネレータが必要です。どのような種類の POU を作成する必要がありますか？
正解
1. プログラム
2. ファンクションブロック
3. ファンクション
4. タスク

1-24






Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

演習: 選択肢「4択」問題
問題 3
ドライブ用に単純な PI コントローラをプログラミングする必要があります。これは、ドライブ自体にはメモリを持たずに、設定／実速度に基づいて転送速度を規制するためのものです。このような場合、どのような POU が最も適していますか？
正解
1. プログラム
2. ファンクションブロック
3. ファンクション
4. タスク






問題 4
ファンクションブロックおよびファンクション POU を呼び出せるのは、どの POUからですか？
正解
1. プログラム POU のみ
2. プログラムおよびファンクションブロック POU
3. 2. プログラムおよびファンクション POU
4. すべての POU (プログラム、ファンクションブロック、
ファンクション)






問題 5
プログラム POU はどの POU から呼び出せますか？
正解
1. どの POU からも呼び出せない
2. プログラム POU のみ
3. プログラムおよびファンクションブロック POU
4. すべての POU (プログラム、ファンクションブロック、
ファンクション)Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung






1-25

演習: 選択肢「4択」問題
問題 6
変数タイプ「VAR」および「VAR_TEMP」についての記述で正しいものはどれですか？
正解
1. これらは自身の POU の中のローカル変数です。
両方とも、POU が呼び出されるたびに初期値にリセットされます。



2. これらは自身の POU の中のローカル変数です。
「VAR_TEMP」だけが POU が呼び出されるたびに初期値にリセットされます。「VAR」はその値を維持します。



3. これらは自身の POU の中のローカル変数です。
「VAR」だけが POU が呼び出されるたびに初期値にリセットされます。「VAR_TEMP」はその値を維持します。



4. これらは自身の POU の中のローカル変数です。
両方とも、その値を維持します。



問題 7
データを他の POU に転送するための入出力変数を含むファンクションブロックを作る必要があります。これらの変数のうちの 1 つの値は、この FB および呼び出された POU の両方で上書きされる必要があります。
どの変数タイプを選択しますか？
正解

1. VAR_INPUT
2. VAR_OUTPUT
3. VAR_IN_OUT
4. このファンクションは不可能

1-26






Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

演習: 選択肢「4択」問題
問題 8
さまざまな POU で使用できるよう、点滅装置 (1 Hz) に変数を設定する必要があります。どの変数タイプを選択しますか？
正解

1. VAR_GLOBAL
2. VAR_TEMP
3. VAR
4. VAR_IN_OUT






問題 9
-100 000～+100 000 の数字を PSS 4000 で処理する必要があります。どのデータ型を選択できますか？
正解






1. DINT
2. UDINT
3. INT
4. UINT問題 10

変数はどのように宣言しますか。下の空欄に適切なプレフィックスを記入してくだ
さい。

VAR
Start-Button AT %I* :BOOL;
Pressure_switch AT %I* :WORD;
Pressure_monitoring :UDINT;
Machine_datas :ARRAY [0..99] OF DINT;END_VARHandbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-27

PAS4000でのプログラミング
6

一般ファンクションとスタンダードファンクションブロック(IEC 61131 – 適合リスト)

6.1 一般ファンクション
一般ファンクションは数多くの用途に使用できます。ファンクションの呼び出しをサポートするすべてのプログラミング言語で使用できます。ファンク
ションに、「ストラクチャードテキスト (ST)」プログラミング言語で異なる
名前 (「SUB」や「-」など) がある場合、その両方が表示されます。
下のテーブルに関するメモ: 「ANY」データ型: すべてのデータ型 (基本データ型および派生データ型)。
 「ANY_BIT」データ型: BOOL、BYTE、WORD、DWORD、LWORD。
 「ANY_NUM」データ型: 次以外のすべてのデータ型: BOOL、BYTE、WORD、
DWORD、LWORD。

「ステップ」の列には、ファンクションがどのバージョンからサポートされているかが記載されています。
ステップ = 0: PAS4000 バージョン 1.0 以降
ステップ = 1: PAS4000 バージョン 1.1 以降
ステップ = 2: PAS4000 バージョン 1.2 以降ステップ = 3: PAS4000 バージョン 1.3 以降
ステップ = 4: PAS4000 バージョン 1.4 以降…
…
…
ステップ=99: 計画中、サポート予定

1-28

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
PAS4000 の一般ファンクションのテーブル:
ス
テ
ッ
プ

一般ファン
クション
の名前

変数
(許可された
データ型)

型変換ファンクション
ANY*_TO_**TRUNC

ANY_NUM

数値ファンクション
ANY_NUMABS

SQRT

ANY_NUM

ANY_NUM
EXP
ANY_NUM-LN
ANY_NUM
LOG
角度ファンクション
ANY_NUMSIN
ANY_NUM
COS
ANY_NUMTAN
ANY_NUM
ASIN
ANY_NUM
ACOS
ANY_NUM
ATAN
算術ファンクション
ANY_NUM
ADD+ (ST)
算術ファンクション
ANY_NUM
SUB- (ST)
ANY_NUM
MUL* (ST)
ANY_NUM
DIV/ (ST)

MOD

説明

データ型の型変換。例:
BYTE_TO_INT または
TIME_TO_DINT など。
切り捨てファンクション:REAL 値の少数値は切り捨てられ、整数値になります。
絶対値の算出。値は維持され、符号は正に変わります。
平方根の算出。
指数関数の算出。
自然対数の算出。
10 を底とする対数の算出。
正弦の算出。(ラジアンでは IN を記述)
余弦の算出。(ラジアンでは IN を記述)
正接の算出。(ラジアンでは IN を記述)
逆正弦の算出 (主要値)。(ラジアンでは IN を記述)
逆余弦の算出 (主要値)。(ラジアンでは IN を記述)
逆正接の算出 (主要値)。(ラジアンでは IN を記述)
加算。任意の数の入力パラメータを指定できます。

減算。任意の数の入力パラメータを指定できます。
乗算。任意の数の入力パラメータを指定できます。
除算。任意の数の入力パラメータを指定できます。

ANY_NUM

除算の余りの算出。
例:
If IN2 = 0, then OUT = 0
If IN2 <> 0, then OUT := IN1 - (IN1 / IN2) * IN2
ANY_NUM
EXPT
入力パラメータの累乗。
** (ST)
例: OUT := IN1IN2( IN1 と OUT が同じデータ型であることが必須)
ANY
MOVE
入力パラメータの出力パラメータへのアロケーション。
:= (ST)
例: OUT := IN
シフトおよびローテートファンクション
ANY
SHL
左シフト: IN は左に N ビットシフトされ、ゼロは右側から埋められます。N はゼロ以上にする必要があります。
ANY
SHR
右シフト: IN は右に N ビットシフトされ、ゼロは左側から埋められます。N はゼロ以上にする必要があります。
ANY
ROR
右ローテート: IN は右に N ビット回されます。ビット列の最下位ビット (ビット 0) は、最上位ビット (ビット 15) に回されます。N はゼロ以上にする必要があります。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-29

PAS4000でのプログラミング
ス
テ
ッ
プ

一般ファン
クション
の名前
ROL

変数
(許可されたデータ型)
ANY

選択ファンクション
ANY
SEL
MAX

ANY_NUM

MIN

ANY_NUM

LIMIT

ANY_NUM

選択ファンクション
ANY_NUM
MUX

比較ファンクション
ANY
GT> (ST)

左ローテート: IN は左に N ビット回されます。ビット列の最上位ビット (ビット 15) は、最下位ビット (ビット 0) に回されます。
N はゼロ以上にする必要があります。
バイナリの選択:
例: If G = 0, then OUT := IN0
If G = 1, then OUT:= IN1
最大値の定義: 最大入力パラメータの定義。任意の数の入力
パラメータを指定できます。
例: OUT := MAX (IN1, IN2, ..., INn)
最小値の定義: 最小入力パラメータの定義。任意の数の入力
パラメータを指定できます。
例: OUT := MIN (IN1, IN2, ..., INn)
LIMIT –リミッタ: MN は下限値、MX は上限値で、IN は測定値などです。このファンクションは、IN が制限値内である
限り、OUT が IN と等価となるようにします。値が下限値のMN を下回る場合、OUT は MN と等価になります。値が上
限値の MX を上回る場合、OUT は MX と等価になります。
例: OUT := MIN (MAX (IN, MN), MX)
マルチプレクサ: 入力パラメータ K は、出力に切り換える入力パラメータを決定します。K は 0～n-1 の範囲内であることが必要です。任意の数の入力パラメータを指定できます。
例: If K = i, then OUT := INi「>」比較: IN1 が IN2 よりも大きく、IN2 が IN3 よりも大きいといった場合、OUT は 1 になります。任意の数の入力パラメータを指定できます。
例: OUT := 1, if IN1 > IN2 > ...> INn「>=」比較: IN1 が IN2 よりも大きいかまたは等しく、IN2 がIN3 よりも大きいかまたは等しいといった場合、OUT は 1になります。任意の数の入力パラメータを指定できます。
例: OUT := 1, if IN1 >= IN2 >= ...>= INn「=」比較: IN1 が IN2 と等しく、IN2 が IN3 と等しいといった場合、OUT は 1 になります。任意の数の入力パラメータを指定できます。
例: OUT := 1, if IN1 = IN2 = ...= Inn

GE

ANY

EQ
= (ST)

ANY

NE

ANY

「<>」比較: IN1 が IN2 と等しくない場合、OUT は 1 になります。
例: OUT := 1, if IN1 <> IN2

LT< (ST)

ANY「<」比較: IN1 が IN2 よりも小さく、IN2 が IN3 よりも小さいといった場合、OUT は 1 になります。任意の数の入力パラメータを指定できます。
例: OUT := 1, if IN1 < IN2 < ...< Inn>= (ST)<> (ST)

1-30

説明

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
ス
テ
ッ
プ

一般ファン
クション
の名前
LE

変数
(許可された
データ型)

説明

ANY

「Less than or equal to」比較: IN1 が IN2 よりも小さいかまたは等しく、IN2 が IN3 よりも小さいかまたは等しいといった場合、OUT は 1 になります。任意の数の入力パラメータを指定できます。
例: OUT := 1, if IN1 <= IN2 <= ...<= Inn
時間と日付ファンクション
TIME
ADD_TIME
時間の加算<= (ST)+ (ST)

ADD_TOD_TIME
ADD_DT_
TIME
SUB_TIME

TIME / DATE

時間または日付と時間の加算

TIME / DATE

日付と時間の加算

SUB_TOD_TIME
SUB_DT_
TIME

TIME / DATE

時間または日付と時間の減算

TIME / DATE

日付と時間の減算+ (ST)

TIME

時間の減算

DATE
SUB_DATE
2 つの日付の減算_DATE
時間と日付ファンクション
TIME / DATE 時間指定のある 2 つの日付の減算
SUB_DT_DT
SUB_TOD_ TIME / DATE 2 つの時間または日付の減算
TOD
TIME
MULTIME
時間の乗算
TIME
DIVTIME
時間の除算
CONCAD_ TIME / DATE 日付と時間の結合: 日付 (DATE) と一日のうちの時間 (TOD)
DATE_
が日付と時間 (DT) に結合されます。
TOD

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-31

PAS4000でのプログラミング
6.2 スタンダードファンクションブロック
PAS4000 では、次のスタンダードファンクションブロックを使用することができます。
スタンダードファンク
ションブロックの名前
フリップフロップ
SR
RS
パルス立上り／立下り
R_EDGE
F_EDGER_TRIG
F_TRIG
カウンタ
CTU
CTU_DINT
CTU_LINTCTU_UDINTCTU_ULINT
CTD
CTD_DINT
CTD_LINT
CTD_UDINT

変数(許可された
データ型)

BOOL

SR-フリップフロップ: 先行の設定 (優先の設定)
RS-フリップフロップ: 先行のリセット (優先の
リセット)

BOOL

BOOL

エッジ情報: 立上り
エッジ情報: 立下り
立上りでトリガ
立下りでトリガ

BOOL
BOOL
BOOL
INT
DINT
LINT
UDINT
ULINT
INT
DINT
LINT
UDINT

CTD_ULINT
CTUD
CTUD_DINTULINTCTUD_LINT
カウンタ
CTUD_UDINT

LINT

CTUD_ULINT
タイマ
TP
TON
TOF

1-32

INT
DINT

UDINT
ULINT
TIME
TIME
TIME

説明

整数形式の加算カウンタ
倍精度浮動小数点形式ダブルの加算カウンタ
長整数形式の加算カウンタ
倍精度浮動小数点形式ダブルの加算カウンタ(符号なし)
長整数形式の加算カウンタ(符号なし)
減算カウンタ
倍精度浮動小数点形式ダブルの減算カウンタ
長整数形式の減算カウンタ
倍精度浮動小数点形式ダブルの減算カウンタ(符号なし)
長整数形式の減算カウンタ(符号なし)
整数形式の加算／減算カウンタ
倍精度浮動小数点形式ダブルの加算／
減算カウンタ
長整数形式の加算／減算カウンタ(符号なし)
倍精度浮動小数点形式ダブルの加算／減算
カウンタ (符号なし)
符号なし長整数形式の加算／減算カウンタ
パルス幅
スイッチオンディレイ時間
スイッチオフディレイ時間

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
スタンダードファンクションブロックの使用例:
FUNCTION_BLOCK
VAR
b_Start :BOOL;
b_Output AT%Q*:BOOL;
t_Time_value:TIME;
T_ClockTP:TP;
END_VARLD TRUEST b_Start
LD T#1000ms
ST t_Time_value
CAL T_ClockTP(
in := b_Start,
pt := t_Time_value,q => b_Output)
END_FUNCTION_BLOCK

スタンダード FB
TP = パルス幅

スタンダード FBの呼び出し

6.2.1 インスタンス化
IEC 61131-3 では、ファンクションブロックのインスタンス化が利用できます。インスタンスとは、FB が呼び出されたときにすべての内部変数および入出力変数が保存される構造を指します。つまり、プログラムコードは転送されますが、データ構造は複製されます。
「TP」FB を 3 回呼び出すプログラムには、この FB のインスタンスが 3 つ含
まれています (呼び出し 1 回につき 1 つ)。
このオブジェクト指向型プロシージャにより、プログラム評価は呼び出しごとに行われ、副次的な影響がなくなります。すべてのインスタンスが同じプ
ログラムコードを使用することが重要です。そうすることで、プログラムコー
ドに加えるあらゆる変更が、すべての呼び出しに同様の影響を与えます。
PAS4000 のような最新のソフトウェアツールは、自動宣言を使ったインスタンス化を実装するのに役立ちます。自動宣言では、FBを呼び出す際にインスタン
ス名が単純に定義され、これが呼び出しのデータ構造を管理します。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-33

PAS4000でのプログラミング
FB のインスタンス化の例:
VAR INPUT
t_Pulse_duration, t_Pause_time:TIME;END_VAR
VAR OUTPUT
b_Clock_output:BOOL;
END_VARFB「TP」の最初のインスタンスVAR

FB「TP」のb_End_time:BOOL;
2番目の
T_ON :TP; (*1. Instance of TP*)
インスタンス
T_OFF :TP; (*2. Instance of TP*)b_Enable1, b_Enable2:BOOL;
END_VARLDN T_OFF.q (*with Output „q“ of TP „OFF“*)ST b_ Enable 1
最初の
CAL T_ON( (*Call of 1. Instance*)
インスタンス
in := b_ Enable1,
pt := t_Pulse_durationの呼び出し)
LD T_ON.q (*with Output „q“ of TP „ON“*)ST b_Clock_output
STN b_ Enable2
2番目の
CAL T_OFF( (*Call of 2. Instance*)
in := b_ Enable2,
インスタンス
pt := t_Pulse_duration
の呼び出し
)
)
END_FUNCTION_BLOCK

7

システムファンクション
PAS4000 では、次のシステムファンクションを使用することができます。

システムファンク
ションの名前フリップフロップ
pssGetMsTickCounter

VALID
IO_DatatypeMerger
IO_DatatypeSplitter

1-34

変数
(許可された
データ型)
UDINT

BOOL

説明

ミリ秒のカウンタの読み取り
pssGetMsTickCounter ファンクションを使って、ミリ秒のカウンタからカウントを要求できます。
リソースが停止状態にない場合、カウンタは毎ミリ秒増加します。
カウンタの最大値に達すると 0 に切り替わり、カウントを続けます。
ホットスタートの後は、カウンタは停止したポイン
トからカウントを再開します。その 他のすべてのケース (ウォームリスタート、ウォームリセッ
ト、コールドリスタート、コールドリセット、オ
リジナルリセット、およびダウンロード) では、
カウンタはゼロにリセットされます。
有効なビットがポーリングされます。

ANY_NUM
ANY_NUM

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
8プログラム内の定数

定数の形式
BOOL#0 … 1
BYTE#0 … 255
WORD#0 … 65.535
DWORD#0 … 4.294.967.295
LWORD#0 … +264-1
SINT#-128 ... +127
INT#-32.768 ... +32.767
DINT#-2.147.483.648 ... +2.147.483.647
LINT#-263 ... +263-1
USINT#0 ... 255
UINT#0 ... 65.535
UDINT#0 ... 4.294.967.295
ULINT#0 ... +264-1
REAL#0.0 … X
LREAL#0.0 … X
TIME#0 ... 4.294.967.295
T#0 ... 4.294.967.295
DATE#1970-01-01 ... 294247-01-10
D#1970-01-01 ... 294247-01-10
TIME_OF_DAY
TOD#0 ... 23:59:59.999
DATE_AND_TIME#1970-01-01-00:00:00 ...2106-01-19-3:14:08
DT#1970-01-01-00:00:00 ... 2106-01-19-3:14:08

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-35

PAS4000でのプログラミング

9

リソース
リソースはコードを実行する実体を指し、FS リソース、ST リソース、VISU
リソース、MC リソースなどがあります。
PSS 4000 には、フェイルセーフ (FS) IEC 61 131 コードを実行するリソースと、非フェイルセーフ (ST) IEC 61 131 コードを実行するリソースの 2 つがあります。
プロジェクトは複数の PSS 4000 ヘッドモジュールに配布されます。その結果、2 つの追加リソース (FS と ST) が PSS 4000 の各ヘッドモジュールに発生します。
これにより、各リソースには最大 9 つのタスクを含めることができます (「タスク」の項を参照)。各タスクには任意の数の POU を含めることができます。

PAS4000プロジェクト
タスク1

POU 1
POU 2

STリソース(最大9タスク)
FSリソース(最大9タスク)

POU 3

タスク2

POU 4
POU 5

タスク3

POU 6
POU 7
POU 8

タスク4

POU 9
POU
10

タスク5
STリソース(最大9タスク)
FSリソース(最大9タスク)

タスク6

POU
11
POU
12
POU
13
POU
14
POU
15

図: リソース、タスク、POU

1-36

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング

9.1 プログラミングモデル
プログラミングモデルはプログラム作成の基本原則を定義します。
PSS 4000ハードウェアのコンフィグレーション

ST-undundFS-Ressourcen
FS-Ressourcen
STSTund FS-Ressourcen
STおよびFSリソース

Task
Task
Task
Task
Task
Task
Task
タスク

POU
POU
POU
POU
Programm
POU
Programm
POU
Programm
POU
POU
Programm
Programm
Programm
Programm
プログラム
POU
ファンクションブロック

POU
ファンクションブロック

POU
ファンクションブロック

POU
ファンクション

Task
Task
Task
Task
Task
Task
Task
タスク

POU
POU
POU
POU
Programm
POU
Programm
POU
Programm
POU
POU
Programm
Programm
Programm
プログラム
Programm
POU
ファンクション

POU
ファンクション

POU
ファンクション

図: プログラミングモデル

9.2 リソースの割り付け:
プログラム型プログラム構成要素のリソースへの割り付け。

コンポーネントモデル内の項:
リソースによって実行されるコンポーネントブ
ロック／アスペクトブロックの定義。
ロジックブロック:
ロジックブロックもユーザが割り付けできます
が、必須ではありません。ユーザによって割り付けられない場合は、最も適したリソースによって自動的に実行されます。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-37

PAS4000でのプログラミング
10

タスク
PSS 4000 は、プリエンプティブスケジューリングを使ったマルチタスクシ
ステムです。つまり、1 つのリソースで最大 9 個のタスクを使用できます。
タスクの実行はシステムによって構成され、タスクのプロパティがタスクを実行するタイミングと順番に影響します。優先度の高いタスクが保留になっている場合、優先度の低いタスクの実行は中断されます。

10.1 タスクの実行
タスクを実行する際は、次の規則が適用されます。


タスクの実行:
たとえば、指定された間隔が経過した場合など、条件が満たされたタスクは実行されます。制御がイベント起動の場合、選択した変数は FALSEから TRUE へと切り換わります。複数のタスクの条件が満たされた場合
は、優先度が最も高いタスクが実行されます。
 タスクの中断:あるタスクが処理されているときに、それよりも優先度の高いタスクの条件が満たされた場合、優先度の低いほうのタスクは、優先度の高いタ
スクが完了するまで中断されます。また、プログラムがシステムファン
クションの実行待ち状態である場合なども、タスクは中断されます。
 タスクへの POU の割り付け:
1 つのタスクに任意の数のプログラム型 POU を割り付けることができます。
 デバイスあたりのタスクの数:
プロジェクト内の各デバイスは個別にタスクの実行を制御します。デバ
イスごとに FS リソースと ST リソースを 1 つずつ持つことができ、それぞれのリソースには最大 9 個のタスクを含めることができます。
 優先度:
3 つの優先度を使用できます (高、中、低)。タスクは優先度に従って実行されます。優先度が同じ定周期タスクの場合は、周期長によって決まり (Implicit の優先度)、周期長が最も短いタスクが最初に実行されます。
優先度も周期長も同じタスクの場合、順番はランダムになります。
 FS リソースと ST リソースの連携:
デバイスに FS リソースと ST リソースがある場合は、どちらも同じ CPU
によって実行されます。
 保留中のタスクの確認:
システムクロックパルスごとに、システムは実行が保留されているタスクがないかどうかを確認し、実行の順序を定義し直します。あるタスクが処理されているときに、それよりも優先度の高いタスクが保留されている場合は、実行中のタスクが中断されます。
 プログラム型 POU の実行順序:
1 つのタスクに複数のプログラムが割り付けられている場合、プログラ
ムはプログラム名のアルファベット順に実行されます。

1-38

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
10.2 タスクのプロパティ
タスクのプロパティはタスクコンフィグレーションで定義されます。タスクの宣言は、タスクの名前、タスクの優先度のエントリ、タスクの実行条件のエントリで構成されます。条件は、タスクが実行されるまでの時間の間隔、イベント (デジタル入力での立上りやグローバル変数の FALSE/TRUE の切り換わり)、または遮断のいずれかです。
タスクごとに、タスクから呼び出すプログラムのシーケンスを指定することができます。これらのプログラムは記述された順序で実行されます。

10.3 優先度
各タスクの優先度を定義できます。優先度は、リソースの他のタスクと比較した各タスクの重要度です。つまり、リソースのタスクが実行される順序は優先度で決まります。優先度には、高、中、低があります。1 つのリソースに最大 9 個のタスクを含めることができ、高、中、低の優先度を 3 つずつ指定できます。次の順序が適用されます。
1. FS タスク、優先度 高
2. ST タスク、優先度 高
3. FS タスク、優先度 中
4. ST タスク、優先度 中
5. FS タスク、優先度 低
6. ST タスク、優先度 低

各優先度 (高、中、低) は、各リソースに 3 回まで適用できます。つまり、リソースに 9 個のタスクが作成されている場合、優先度の高、中、低がそれぞれ 3 つずつとなります。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-39

PAS4000でのプログラミング
10.4 タスクのタイプ
タスクには 3 つのタイプがあります。
 フリーホイーリングタスク (Freewheeling task: 周期的)
 定周期タスク (Periodic task: 時間起動)
 イベント起動タスク (Event-driven task: 中断)
フリーホイーリングタスク:
フリーホイーリングタスクは、先行タスクの実行が完了すると、再度実行されます。そのため、実行の間隔は単に制御プログラムの長さで決まります。
また、優先度の高いタスク (たとえば定周期タスク) が原因で延長されることもあります。
2 つの例を次に示します。
1. フリーホイールの FS タスクと ST タスクが 1 つずつ
2. フリーホイールの FS タスクと ST タスク、および優先度が高の定周期タスク (20 ms) が 1 つ
優先度

[1]

myFreewheelingTask_1

[1]

[2]

0

10

[1]

[2]
20

[1]

[2]

30

40

[2]
50 t [ms][1] = フリーホイーリングFSタスク[2] = フリーホイーリングSTタスク
図: 例 1

優先度

myFreewheelingTask_2

[3]

[3]

[1]
0

[2]
10

[1]
20

[3]

[2]
30

[1] [2]
40

[2]

[1]
50 t [ms][1] = フリーホイーリングFSタスク[2] = フリーホイーリングSTタスク[3] = 定周期タスク (FSまたはST、20 ms)
図: 例 2定周期タスク:
定周期タスクは、定義可能な周期長の間に 1 回だけ実行されます。実行の間
隔はさまざまです。実行が周期長の間に完了しなかった場合、オペレーティン
グステータス「Resource in RUN condition with task fault」が表示されます。
周期長はタスクが実行される周期を決定します。また、副次的な優先度の役

1-40

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
割も果たします。タスクの優先度が同じ場合は、周期長の短いタスクが先に実行されます。値の範囲:


ST タスク: 2 ms～71 min
FS タスク: 4 ms～71 min

3 つの例を次に示します。
1. 周期長が 10 ms の定周期タスク 1 つ
2. 許可済みの呼び出しのある定周期タスク (優先度高)1 つと 2 つ目の定周期タスク (優先度低)3. 未許可の呼び出しのある定周期タスク (優先度低)
1 つと 2 つ目の定周期タスク (優先度高)優先度

myPeriodicTask_1

[1]

[1]

0

10

[1]

[1]
20

[1]

30

40

[1]
50 t [ms][1] = 定周期タスク (10 ms)
図: 例 1

優先度[1]

myPeriodicTask_2[2]0[1] [2]
10

[1]
20

[1]

[1] [2]

[2]

30

40

[1]
50 t [ms][1] = 定周期タスク (優先度=中、10 ms)[2] = 定周期タスク (優先度=中、30 ms)
図: 例 2優先度[2]
0

myPeriodicTask_3

[1]

[1]
10

[1]
20

[2]
30

[1]

[1]
40

[1]
50 t [ms][1] = 定周期タスク (優先度=低、10 ms)[2] = 定周期タスク (優先度=中、30 ms)
図: 例 3

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-41

PAS4000でのプログラミング

イベント起動タスク:
イベント起動タスクは、定義可能なイベント (BOOL 値変数での立上り／
立下り、リソースの開始／停止など) が発生したときに実行されます。
優先度

[1]
0

myEvent-DrivenTask_1

[2]
10

[1]

[2]
20

[3]

[2]

[1]

30

[1] = フリーホイーリングFSタスク (優先度=低)[2] = フリーホイーリングSTタスク (優先度=低)[3] = イベント起動タスク (優先度=高)

[2]

[1]

[3]

40

[1]
50 t [ms]イベント時間図: 例 1

10.5 タスクのデフォルトコンフィグレーション

ほとんどのプロジェクトはデフォルトコンフィグレーション
で十分なため、ユーザが「タスク」の問題に対応する必要はありません。
デフォルトコンフィグレーションでは、デバイス上で FS プログラムが最初に実行され、次に ST プログラムが実行されるよう設計されています。FS プ
ログラムは常に同じ順序で実行されます。これは ST プログラムも同じです。
FS プログラムと ST プログラムは 50 ms の周期長の間に 1 回実行されます。

[1] 周期長、[2] ブローバル変数と入力 (PII) および出力 (PIO) のプロセスイメー
ジの読み取り、[3] グローバル変数の出力と出力 (PIO) のプロセスイメージ



1-42

たとえば、FS プログラムがシステムファンクションの実
行待ち状態となる状況が発生することがあります。この場
合、FS プログラムの実行は中断され、ST プログラムが実行されます。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
10.6 ネームスペース内のタスク情報
各タスクの情報はプロジェクトのネームスペースにあり、それらは変数表示
内および OPC サーバで呼び出すことができます。








現在のタスク実行時間:
アドレス:
prj::<プロジェクト名>.Exec:<リソース名>.Task:ProcessingTime:<タスク名>.Current
データ型: UDINT
リソースが起動してからの最小タスク実行時間
アドレス:
prj::<プロジェクト名>.Exec:<リソース名>.Task:ProcessingTime:<タスク名>.Minimum
データ型: UDINT
リソースが起動してからの最大タスク実行時間
アドレス:
prj::<プロジェクト名>.Exec:<リソース名>.Task:ProcessingTime:<タスク名>.Maximum
データ型: UDINT
タスクステータス:
アドレス:
prj::<プロジェクト名>.Exec:<リソース名>.Task:State:<タスク名>.
データ型: UDINTKey:
1 =タスクは停止状態
2 =タスクは実行状態

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-43

PAS4000でのプログラミング
10.7 実践的な実装
FS/
ST

番号

タスクのタイプ

優先度

アプリケーションFS

1

フリーホイール
FS タスク

低瞬時の処理を必要としない安全アプ
リケーション用の FS-POU。例:- 非常停止、- グラブワイヤ、- 安全扉、
- 回転ドア2

定周期 FS タスク

低250 ms、高速点滅レート 2 Hz
500 ms、平均点滅レート 1 Hz

ST

1定周期 FS タスク

中

10 ms、瞬時の処理を必要とする安全アプリケーション用。例:- ライトカーテン、- ライトグリッド、- ミューティング、- スキャナ、- 安全カメラ

2

イベント起動 FS タスク

中

瞬時の処理を必要とする安全アプリ
ケーション用の中断処理

3

イベント起動 FS タスク

高

瞬時の処理を行うことが非常に重要な安全アプリケーション用の中断処理

9

すべての FS タスクの総数

1

フリーホイール ST タスク

低ST POU2

定周期 ST タスク

低250 ms、高速点滅レート 2 Hz
500 ms、平均点滅レート 1 Hz

1定周期 ST タスク

中

1 s: - 遅い点滅レート 0.5 Hz、- 診断用 ST-POU

2

イベント起動 ST タスク

中

瞬時の処理を必要とする一般アプリ
ケーション用の中断処理

3

イベント起動 ST タスク

高

瞬時の処理を行うことが非常に重要な
一般アプリケーション用の中断処理

18

すべてのタスクの総数

myPracticalImplementation

優先度
[3]

[3]

[1]
0
10
優先度
[3]

210

[3]

[1]

[1]

20

30

[3]

[1]
200

[3]

[3]

[1]
220

[3]

[2]

[2]

40

[3]

[1]
230

[2]

50

[3]

[2]

[3]

[3]

[3]

[4
]

250

260

[3]

[1]

[1]

[1]

70

80

90

[3]

[2]

[2]

240

60

[3]

[3]

[3]

[3]

[2]
270

[1]

280

290

[3]

100

110

120

130 t [ms]

[3]

[3]

[3]

[3]

300

[2]
310

2]

[1]

[2]

[1]

[2]

[3]

[2]

[3]

[1]

[3]

[3]

[2]
320

[2]
330 t [ms][1] = フリーホイーリングFSタスク[2] = フリーホイーリングSTタスク[3] = 定周期FSタスク (10 ms)[4] = 定周期FSタスク (250 ms)

1-44

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング

11

I/Oマッピング
すべての情報 (内部／外部プロセス信号) にとってハードウェアへの割り当て(マッピング) が 1 つあるだけで十分なことから、すべてのユーザが情報に直接アクセスできます。これは、一般プロセス信号と安全関連信号の両方に当てはまります。これにより柔軟性が高まりまが、このことは、後で変更を加える場合に特に重要です。
プログラム内でプロセス信号の装置 ID が使用されていて、それとは別のデバイスに接続する場合は、マッピングテーブルだけを変更します。これによりデータの一貫性を容易に保つことができ、特に安全関連プログ
ラムにおいて、プログラムのチェックサムを維持できます。
 ハードウェアは ID によって管理できるため、メーカは機械のオプション
やタイプの処理が非常に簡単になります。
 シンプルで、一度で済む再設定により、処理がより簡単になります。配布可能なアプリケーションに集中型マッピングテーブルを使用している場合でも、さまざまな割り付けと一致させるための追加の作業は不要です (プログラム、診断、視覚化)。
 試運転または変更後の管理作業がなくなり、試運転リストを一致させるという非常に生産性のない作業が不要になりました。


図: I/O マッピング - ハードウェアマッピング

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-45

PAS4000でのプログラミング
プロジェクト全体の集中型マッピングテーブルにより、次のことが実現されます。
- シンプルな指向性- アプリケーション (ユーザプログラム／診断／視覚化など) と周辺機器との間のデータの一貫性
重要なことは、設定を 1 つの集中型制御システムで行ったか、あるいは複数の制御システムで行ったかにかかわらず、1 つの集中型マッピングテーブル
が 1 つのオートメーションプロジェクトで使用されることです。プロジェク
トで使用される制御システムやパッシブバスインタフェースの数に関係なく、ユーザには常に、分散型システムを集中表示したオーバービューが表示されます。さらに、集中型マッピングテーブルは、これまで非常に複雑だった通信機能に対する明確なソリューションとなります。下の図は、3 つの制御システムを持つアプリケーションに基づいた、集中型マッピングテーブルのオ
ペレーションの原理モードを示しています。その他の利点: オートメーション
システム PSS 4000 を使用してオートメーション機能を複数の制御システムに分ける手法は、1 つの制御システムを使用した以前のソリューションと同様にシンプルです。

図: プロジェクト全体の集中型マッピングテーブル

1-46

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング

空白ページ

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-47

PAS4000でのプログラミング

12

PSS 4000 のコンフィグレーション (リソース、タスク、
I/Oマッピング)
POU を作成し、変数を宣言したら、次にハードウェアリソースとタスクを定義する必要があります。リソースが計画され、タスクが割り付けられたら、I/O
マッピングが実行されます。つまり、キーワード AT %I または AT %Q が指定された変数が、関連するデバイスの絶対 I/O アドレスに割り付けられます。

12.1 手順
12.1.1 デバイスとI/Oモジュールの定義 (リソース)
 [Project Manager] ウィンドウの [Hardware configuration] を右クリックします。

 [New] ⇒ [Device] を選択します。

 デバイス [PSSu PLC] を選択します。

1-48

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
をクリックして次のダイアログを表示します。

 必要なデバイス名と IP アドレスを入力します。
 入力を確認し、をクリックしてウィンドウを閉じます。

 モジュールパレットから必要なモジュールを選択します。
12.1.2 タスクの定義
 [Project Manager] ウィンドウでリソースを右クリックします。たとえば、[myDevice_0] で [ST resource] を右クリックします。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-49

PAS4000でのプログラミング [New] ⇒ [New Task] を選択します。

 タスクの優先度、タイプ、および値を選択し、タスク名とコメント (必要な場合) を入力します。

 入力を確認し、をクリックしてウィンドウを閉じます。

12.1.3 展開 (POUのハードウェアへの割り付け)
展開とは、ソフトウェアをハードウェアに配布するためのプロセスのことです。保守の行き届いた環境で信頼性が高く安全なオペレーションを確実に行えること必要です。

 [Project Manager] ウィンドウで、目的の POU ( [ST_Program[PRG] ] )をクリッ
クし、この POU を目的のデバイス ( [myDevice_0] ) までドラッグします。

1-50

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
12.1.4 I/Oマッピングの定義
 [Project Manager] ウィンドウの [I/O mappings] を右クリックします。

 [Open I/O Mapping Editor] を選択します。

 デバイス [PSSu PLC] を選択します。

 左側のウィンドウで変数をクリックし、右側のウィンドウの関連するハード
ウェアアドレスまでドラッグして、変数を絶対ハードウェアアドレスにマッ
ピングします。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-51

PAS4000でのプログラミング

1-52

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング

13

その他

13.1 キーワード
キーワードとは、その用途が一意に定義されている文字列です。その用途以外に使用できません。大文字と小文字は区別されません。予約済みキーワー
ドは次の通りです。







基本データ型と派生データ型の名前 (たとえば BOOL)
一般ファンクションの名前とそれらの入出力パラメータ
ユーザによって作成されたファンクションの名前
スタンダードファンクションブロックの名前とそれらの入出力パラメータ
ユーザによって作成されたファンクションブロックタイプの名前
IL プログラミング言語のオペレータの名前 (IL オペレータは、IL だけでなく、他のすべてのプログラミング言語でプログラミングする際のキーワードとなります)。
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o

ACTION...END_ACTION
ARRAY...OFAT
CASE...OF...ELSE...END_CASE
CONFIGURATION...END_CONFIGURATIONCONSTANT
EN, ENOEXIT
FALSE
F_EDGE
FOR...TO...BY...DO...END_FOR
FUNCTION...END_FUNCTIONFUNCTION_BLOCK...END_FUNCTION_BLOCK
IF...THEN...ELSIF...ELSE...END_IF
INITIAL_STEP...END_STEP
NOT, MOD, AND, XOR, OR
PROGRAM...WITH...
PROGRAM...END_PROGRAM
R_EDGE
READ_ONLY, READ_WRITEREPEAT...UNTIL...END_REPEATRESOURCE...ON...END_RESOURCERETAIN,RETENTIVE
RETURN
STEP...END_STEPSTRUCT...END_STRUCTTASKTRANSITION...FROM...TO...END_TRANSITION
TRUE
TYPE...END_TYPE
VAR...END_VAR
VAR_INPUT...END_VAR
VAR_OUTPUT...END_VAR
VAR_IN_OUT...END_VAR
VAR_TEMP...END_VAR
VAR_EXTERNAL...END_VAR
VAR_ACCESS...END_VAR
VAR_CONFIG...END_VAR
VAR_GLOBAL...END_VAR
WHILE...DO...END_WHILE
WITH

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-53

PAS4000でのプログラミング

13.2 コメント
コメントは、プロジェクトを詳細に記述する場合に使用する説明のテキストです。すべての Unicode 文字を使用できます (UTF-8 形式)。コメントは、たとえば新しいブロックを作成するときなど、PAS4000 の数多くの場面で入力できます。テキスト言語 (たとえば IL、STL) を使ってプログラミングする場
合、コメントはプログラムコードの中に入力できます。
コメントは「(*」で始まり「*)」で終わるか、または「//」で始まり行の最後で終わります。ネストされたコメントも使用できます。
例: (*(*コメント*)*)13.3 スペースの使用
ユーザプログラムでは任意の場所に 1 つ以上のスペースを入力することができます。ただし、次の場所は例外です。
 キーワード内
 定数内
 識別子内 「列挙」データ型のファンクション内
 「%I*」および「%Q*」内
 関連する区切り記号 (たとえば「:=」) の間
スペースには、タブや改行などの空白を作成する制御文字も含まれます。

13.4 区切り記号
区切り記号は、一部がコンテキストに依存する意味を持つ定義済みの特殊文字です。たとえば、+記号は数字の接頭辞として使用したり、IL プログラミン
グ言語で加算オペレータとして使用したりできます。

1-54

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング

13.5 プログラミング言語
13.5.1 IL - インストラクションリスト
下の図は、IL 命令の基本構造を示しています。
オペレータ／修飾子//コメントまたは(*コメント*)変数

または//コメントまたは(*コメント*)ラベル:
下のテーブルに関するメモ: 「ANY」データ型: すべての基本データ型および派生データ型。
 「ANY_BIT」データ型: BOOL、BYTE、WORD、DWORD、LWORD。
 「ANY_NUM」データ型: BOOL、BYTE、WORD、DWORD、LWORD
以外のすべての基本データ型。
13.5.1.1 IL命令セット
オペレータ

修飾子

LD

N

ST

N

変数
(許可された
データ型)

説明

ANY

バイナリ命令 (BOOL) の開始、またはオペランドの値にアキュムレータを設定

ANY

現在の結果をオペランドの場所に格納

S

BOOL

条件が満たされた場合にオペランドを設定

R

BOOL

条件が満たされた場合にオペランドをリセット

AND

N, (

ANY_BITAND 命令OR

N, (ANY_BIT

OR 命令

XOR

N, (

ANY_BITEXCLUSIVE OR 命令

ANY_BIT

否定

NOT
ADD

ANY_NUM

加算

SUB

ANY_NUM

減算

MUL

ANY_NUM

乗算

DIV

ANY_NUM

除算

GT

ANY

比較: >

GE

ANY

比較: >=

EQ

ANY

比較: =

NE

ANY

比較: <>

LE

ANY

比較: <=

LT

ANY

比較: <
ラベルへの分岐

JMP

C, CN

ラベル

CAL

C, CN

ファンクション
ブロックインス
タンス名

RET

C, CN

)

ファンクションまたはファンクションブロックの呼び出し-

ブロックの終了-

括弧内の命令の終了

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-55

PAS4000でのプログラミング

13.5.1.2 プログラムの例
スイッチオンディレイ時間「TON」が経過したら、出力の点滅のステータスが反転します (「0」は「1」に、「1」は「0」になる)。その結果、「出力の点滅」
変数は「時間値」変数に記述されているパルスと停止時間で点滅します。
FUNCTION_BLOCK Flasher
VAR INPUT
t_time_value:TIME;END_VAR
VAR OUTPUT
b_Flasher_output:BOOL;
END_VAR
VAR

b_End_time:BOOL;
T_delayON :TON;
END_VARVAR_TEMP
b_Start:BOOL;
END_VARLDN b_End_time (*If time is over=> switch off b_Start*)
ST b_Start
CAL T_delayON( (*Standard-FB “TON”*)
in := b_Start,
pt := t_time_valueq => b_End_time)
LDN b_End_time (*If time is over=> negate b_Flasher_output *)JMPC EndLD b_Flasher_output
STN b_Flasher_output
End:
END_FUNCTION_BLOCKPROGRAM myFirstProgram
VAR
FB_Flasher_1Hz:Flasher;b_Flasher_output_1Hz BOOL;FB_Flasher_2Hz:Flasher;b_Flasher_output_2Hz BOOL;
END_VARCAL FB_Flasher_1Hz ( (*1Hz Flasher*)t_time_value := T#500ms,
b_Flasher_output => b_Flasher_output_1Hz)
CAL FB_Flasher_2Hz ( (*2Hz Flasher*)t_time_value := T#250ms,
b_Flasher_output => b_Flasher_output_2Hz)
END_PROGRAM

1-56

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
13.5.2 STL – ストラクチャードテキスト
ST 命令の一般的なプロパティは次の通りです。


ST 命令はセミコロン「;」で区切る
ST 命令の最後はスペースで定義されるため、STL には行ベースのエント
リ形式はないコメントは IL と同じ形式で入力する: (*コメント*) または//コメント

下のテーブルに関するメモ:「ANY」データ型は、すべての基本データ型 (BOOL、INT など) と派生データ型を意味します。
13.5.2.1 STキーワード
キーワード

キーワード拡張:=例

説明

a := 10;

割り付け

FBName(Par1:=1,Par2:=2);

ファンクションまたはファンクションブロックの呼び出しにキーワードは不要

RETURN

呼び出し元の POU に戻る

IF

THEN
ELSEIF
ELSE
END_IF

CASE

OF
ELSE
END_CASE

FOR

TO
BY
DO
END_FORDO
END_WHILE

WHILE
REPEATUNTIL
END_REPEAT

IF a<b THEN
c := 1;ELSEIF a=b THEN
c := 2;ELSE
c := 3;
END_IF;
CASE a OF
1:c := 100;
2:c := 101;
ELSE
c := FBName(Par1:=1,Par2:=2);
END_CASE;
FOR a=1 TO 100 BY 5
DO a := a-5;
END_FOR;

代替に分岐

WHILE a>1
DO a := a-1;
END_WHILE;
REPEAT a := a*10 UNTIL
a>1000;
END_REPEAT;

ループ文: 終了条件のある 1 つ以上の文の反復

EXIT;

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

値「f」に基づくステートメントブロックの選択

ループ文: 開始および終了条件のある 1 つ以上の文の反復

ループ文: ダウンストリーム終了条件のある 1 つ以上の文の反復
ループのブレーク
空白の文

1-57

PAS4000でのプログラミング

13.5.2.2 STオペレータ
オペレータ
( )

説明

+

加算

-

減算

*

乗算

/

除算

括弧

**

累乗

<

「<」比較

>

「>」比較

<=

「<=」比較

>=「>=」比較

=

「=」比較

<>

「<>」比較

&AND
OR

BOOL 値 AND 命令

XOR

BOOL 値 EXCLUSIVE OR 命令

NOT

否定

1-58

BOOL 値 OR 命令

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング

空白ページ

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-59

演習

14

プログラミング演習 1

I. 演習の概要
出力コンベヤは、前面のリミットスイッチ「LimitSwitch_Pusher_2_Forward」
によってスイッチをオンにし、出力コンベヤの光線装置が遮光された後で時間制御を使ってオフにする必要があります (図を参照)。

II. 図
図 1.14: プログラム構造

LimitSwitch_
Pusher_2_Forward
LightBeam_
Output_Conveyor
Drive_
Output_Conveyor

t=1sIII. プログラム構造

Task_1PRG
ST_
Program

FB
Output_Conveyor

図 1.14.1: プログラム構造

1-60

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

演習

IV. I/O マッピングの変数
変数名／
データ型

デバイス名 スロット ハードウェア センサ／
番号
アドレス
アクチュエータ

I_b_LimitSwitch_Pusher_2_
ForwardGeraet_1

2

I2 (14)

リミットスイッチ:
右側の方は前進
位置

Geraet_1

2

I1 (21)

出力コンベヤ上の光線装置

Geraet_1

3

O2 (14)出力コンベヤ上の
ドライブの
コンタクタ

BOOL
I_b_LightBeam_Output_
Conveyor
BOOL
Q_b_Drive_Output_Conveyor
BOOL

V. 必要な一般ファンクション
インスタンス名

スタンダード FB キー

ft_LB_falling_Ed

F_TRIG

立下りでトリガ

T_Conveyor_Delay

TON

スイッチオンディレイ

…

…

...

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-61

PAS4000でのプログラミング

15

型変換

15.1 Implicit型変換
代表的なブロック (ファンクションまたはファンクションブロック) では、入出力パラメータに特定の基本データ型を指定する必要があります。パラメー
タのデータ型が指定と一致しない場合は、自動型変換を行えるかどうかのテストが実行されます。これを「Implicit 型変換」と言います。
型変換によって情報が失われない場合は、型変換が常に実行されます。型変換によって情報が失われる場合は、プログラミング中にエラーメッセージが表示されます。この場合、ユーザは入出力パラメータのデータ型を変更する
か、または Explicit 型変換を実行する必要があります。
この図は、考えられるすべての Implicit 型変換を示しています。

オーバーロードされたファンクションの場合、入力パラメータに複数のデー
タ型を指定することができます。ただし、すべての入力パラメータが同じデータ型を含んでいる必要があります。ファンクションの結果に互換性のあるデー
タ型がある場合は、異なるデータ型も許容されます。ファンクションの結果のデータ型の定義は、次の規則に基づきます。



1-62

入力パラメータのデータ型が同じであれば、ファンクションの結果も同じデータ型となる。
入力パラメータのデータ型が異なる場合、これらのデータ型を組み合わせることのできるデータ型が結果に含まれている必要がある。これには、上の図を使用でき、矢印の向きに沿うチャンネルのみが許可される。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
例 1:
入力パラメータのデータ型は USINT と INT なので、ファンクションの結果のデータ型は INT になります。

例 2:
入力パラメータのデータ型は UINT と SINT なので、ファンクションの結果のデータ型は DINT になります。

例 3:
入力パラメータのデータ型は UDINT と REAL なので、ファンクションの結果のデータ型は LREAL になります。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-63

PAS4000でのプログラミング



1-64

ファンクションの結果に互換性のあるデータ型が見つからない場合は、
入力パラメータのデータ型は許可されません。
プログラミング中に、関連するエラーメッセージが表示されます。この場合、ユーザは入力パラメータのデータ型を変更するか、または Explicit 型変換を実行する必要があります。

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungPAS4000でのプログラミング
15.2 Explicit型変換
基本データ型はすべて別の基本データ型に変換できます。この目的で、型変換ファンクションが利用できます。BOOL から BYTE など、一部の型変換は情報を失うことなく実行できます。一方、BYTE から BOOL など、情報が失われる型変換もあります。
情報が失われない型変換は、ユーザが明示的に実行する必要はありません。
たとえば、ファンクションの入力パラメータが必要なデータ型と一致しない
ため型変換が必要になる場合は、変換は自動的 (暗黙的) に実行されます。
下のテーブルは、考えられるすべての型変換と、それらがデータを損失することなく実行できるかどうかを示しています。
Explicit 型変換の例:

BYTE_TO_INT
WORD_TO_INTDWORD_TO_INTLWORD_TO_INTUINT_TO_SINTUDINT_TO_SINTULINT_TO_SINT
SINT_TO_UINT
INT_TO_UINT
DINT_TO_INT
LINT_TO_INT
REAL_TO_INTLREAL_TO_INT
TIME_TO_INT
TIME_OF_DAY_TO_
DATE_TO_INT
DATE_AND_TIME_TO_

黒= 型変換は不要
グレー = 情報が失われない型変換で、暗黙に実行される
白= 情報が失われる型変換で、明示的に実行する必要あり
WORD_TO_INT(
in := w_myWordVariables,)
ST i_myIntVariables

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-65

演習: 選択肢「4択」問題

16

演習: 選択肢問題

問題 1.
POU: インスタンス化が必要な POU はどれですか？
正解
1. プログラム
2. ファンクションブロック
3. ファンクション
4. すべての POU






問題 2.
問題 1 の POU はなぜインスタンス化が必要ですか？
正解

2. プログラムコードを複製するため。そうすることにより、各インスタンスが異なるファンクションを持つことができる

3. プログラムコードとデータ構造 (変数) を複製するため。そうすることにより、各インスタンスが異なる値を取得し、異なるファンクションを持つことができる



4. プログラムコードとデータ構造が変更されないようにするため。そうすることにより、各インスタンスが同じ値を取得し、同じファンクションを持つことができる



1. データ構造 (変数) を複製するため。そうすることにより、各インスタンスが異なる値を取得することができる

問題 3.
リソース: 1 つの PAS4000 プロジェクト(制御プログラム) はいくつのリソースに割り付けることができますか？
正解
1. 1 つの FS リソース
2. 1 つの ST リソース
3. 1 つの FS リソースと ST リソース
4. 複数の FS リソースと ST リソース

1-66






Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

演習: 選択肢「4択」問題

問題 4.
1 つの FS リソースおよび ST リソース上で、異なる優先度のタスクをいくつ実行できますか？
正解
1. 6 タスク (優先度 高、中、低は任意の数だけ割り付けることができる)2. 6 タスク (2 タスク = 優先度 高、2 タスク = 優先度 中、2 タスク = 優先度 低)
9 タスク (優先度 高、中、低は任意の数だけ割り付けることができる)4. 9 タスク (3 タスク = 優先度 高、3 タスク = 優先度 中、2 タスク = 優先度 低)






問題 5.
データ型からの Implicit 型変換でプログラミングエラーが生じないのはどれですか？
正解
1. LD
ST

SINT
USINT

2. LD
ST

SINT
DINT

3. LD
ST

SINT
UDINT

4. LD
ST

SINT
WORD






問題 6.
プログラミングエラーが生じるため、データ型の Explicit 型変換を実行する必要があるのはどれですか？
正解
1. WORD_TO_INT
2. UINT_TO_INT
3. UDINT_TO_DINT
4. DINT_TO_TIME

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung






1-67

PAS4000でのプログラミング

17

ライブラリ
再利用可能なプログラム構成要素やデバイスの集合 (たとえば、ソフトウェ
アツール内など)

17.1 ライブラリマネージャ
すべてのライブラリが表示され、整理されるウィンドウ

17.1.1 パレット
ライブラリファンクションを編成したもの。迅速なアクセスを可能にする

17.1.2 ピルツライブラリ
ピルツから購入したファンクションを含むライブラリ

17.1.3 システムライブラリ
ピルツが提供する再利用できるファンクションを含むライブラリ

17.1.4 ユーザライブラリ
ユーザが作成したファンクションを含むライブラリ

1-68

Handbuch Produkttraining PSSuniversal PLC - Basiskurs AutomatisierungProgrammierung mit PAS4000

18

プログラミング演習 2

I. 演習の概要
2 つのアナログ信号 (Pot. 1 と Pot. 2) を比較し、両者の入力電圧の違いをインジケータに表示します。
例 1:
Pot_1 = 7 V で Pot_2 = 5 V であれば、インジケータ = 2 V
例 2:
Pot_1 = 1 V で Pot_2 = 8 V であれば、インジケータ = 7 V
例 3:
Pot_1 = 5 V で Pot_2 = 5 V であれば、インジケータ = 0 V

II. プログラム構造

Task_1PRG
ST_
Program

FB
Output_Conveyor

NEW!
FB
Analogue
Processing

図 1.19: プログラム構造

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung

1-69

PAS4000でのプログラミング

III. I/O マッピングの変数
変数名／
データ型

デバイス名 スロット ハードウェア センサ／
番号
アドレス
アクチュエータ

I_w_Analogue_InputValue_1

Geraet_1

5

I0 (11, 14)

Pot_UPPER

Geraet_1

5

I1 (21, 24)

Pot_LOWER

Geraet_1

6

O0 (11)

インジケータGeraet_1

6

O1 (21)-

WORD
I_w_Analogue_InputValue_2
WORD
Q_w_Analogue_OutputValue_1
WORD
Q_w_Analogue_OutputValue_2
WORD

IV. 必要な一般ファンクション
インスタンス名 一般ファンクション

キー

不要

WORD_TO_INT

データ変換

不要

INT_TO_WORD

データ変換

…

…

...

第 1 章の終わり

1-70

Handbuch Produkttraining PSSuniversal PLC - Basiskurs Automatisierung