〜PLCプログラミングの基礎を学ぼう〜
1. はじめに:ST言語とは?
ST(Structured Text)言語は、PLC(プログラマブル・ロジック・コントローラ)のプログラミング言語の一つであり、IEC 61131-3規格に準拠しています。C言語やPascalに似た構文を持ち、論理演算や条件分岐、ループ処理を記述しやすいのが特徴です。
PLCを使った工場の自動化システムや生産ライン制御において、ST言語は複雑なアルゴリズムやデータ処理を記述するのに適しています。本記事では、ST言語の基本構文やプログラミングの基礎を解説します。
2. ST言語の基本構造
ST言語の基本的なコードは、以下のような構造になっています。
PROGRAM プログラム名 変数の宣言 BEGIN メインの処理 END_PROGRAM
具体的に、簡単なプログラムを見てみましょう。
PROGRAM SimpleExample VAR A : BOOL; (* 論理変数 *) B : BOOL; C : BOOL; END_VAR BEGIN C := A AND B; (* AとBのAND演算結果をCに格納 *) END_PROGRAM
このプログラムでは、A
とB
の両方がTRUE
であれば、C
もTRUE
になります。
3. 変数とデータ型
ST言語には、PLCの制御に適したデータ型が用意されています。
データ型 | 説明 |
---|---|
BOOL | 真偽値(TRUE または FALSE) |
INT | 16ビットの整数 |
DINT | 32ビットの整数 |
REAL | 浮動小数点数 |
STRING | 文字列 |
TIME | 時間(例: T#5s は5秒) |
変数の宣言方法
VAR Count : INT := 0; (* 初期値0の整数 *) Status : BOOL := FALSE; TimeDelay : TIME := T#10s; END_VAR
4. 基本演算と条件分岐
(1) 算術演算
ST言語では、基本的な算術演算が可能です。
X := A + B; (* 加算 *) Y := A - B; (* 減算 *) Z := A * B; (* 乗算 *) W := A / B; (* 除算 *)
(2) 条件分岐(IF文)
IF Temperature > 100 THEN Alarm := TRUE; ELSE Alarm := FALSE; END_IF;
(3) CASE文
CASE Mode OF 0: Motor := FALSE; 1: Motor := TRUE; 2: Motor := PWM_Control; END_CASE;
5. ループ処理(FOR、WHILE、REPEAT)
ST言語では、以下のようなループ処理が可能です。
FORループ
FOR i := 1 TO 10 DO Sum := Sum + i; END_FOR;
WHILEループ
WHILE Temperature < 200 DO Temperature := Temperature + 1; END_WHILE;
REPEATループ
REPEAT Pressure := Pressure + 5; UNTIL Pressure >= 100 END_REPEAT;
6. 関数とファンクションブロック
関数(FUNCTION)
関数は、値を返す処理をまとめるのに使います。
FUNCTION AddNumbers : INT VAR_INPUT A : INT; B : INT; END_VAR AddNumbers := A + B; END_FUNCTION
ファンクションブロック(FUNCTION_BLOCK)
ファンクションブロックは、状態を保持する処理を作成するのに適しています。
FUNCTION_BLOCK Counter VAR_INPUT Increment : BOOL; END_VAR VAR_OUTPUT Count : INT; END_VAR VAR InternalCount : INT := 0; END_VAR IF Increment THEN InternalCount := InternalCount + 1; END_IF; Count := InternalCount; END_FUNCTION_BLOCK
このファンクションブロックを使うことで、カウントアップする処理を簡単に再利用できます。
7. 実践課題:PLC用の簡単な制御プログラム
以下は、ST言語を使ってエアコンの制御を行う簡単なプログラムです。
PROGRAM AirConditionerControl VAR Temperature : REAL; (* 現在の温度 *) SetPoint : REAL := 25.0; (* 設定温度 *) AC_On : BOOL := FALSE; END_VAR BEGIN IF Temperature > SetPoint THEN AC_On := TRUE; (* 設定温度を超えたらエアコンをON *) ELSE AC_On := FALSE; (* それ以外はOFF *) END_IF; END_PROGRAM
このプログラムでは、温度が設定値を超えるとエアコンをONにする処理を行っています。
8. まとめ
ST言語は、PLCの制御プログラムを記述するための強力なツールです。本記事では、以下のポイントを解説しました。
- ST言語の基本構造
- 変数とデータ型
- 演算や条件分岐
- ループ処理
- 関数とファンクションブロック
次回は、ST言語を使ったより実践的なPLCプログラムの開発方法について解説していきます。