ラダー脳からST言語への勉強
ラダープログラムは少し書けますが、メーカー問わず扱うことのできるST言語を勉強中です。ST言語はテキストベースのプログラミング言語でC言語に似た構文を持ちます。勉強の環境としてはキーエンスPLC(KV-8000)でシミュレータエディットで動作確認しながらしています。
まずはキーエンスのプログラムをかける人でもわかるように、変数を扱わずにプログラム作成をしています。
■KV-8000機器構成

入力:R34000~
出力:R34100~

MOV命令
DM1000 := 100;
解説:DM1000に100をMOVする。右から左に行くのでラダーとは逆になります。
SET,RES命令:指定ビットの出力ON、出力OFF
SET (R34000, R34102);
RES (R34002, R34102);
解説:R34000がONすると、R34102をON。R34002がONすると、R34102をOFF。
IF文:条件式に従って処理を実行する分岐制御文
IF R34102 =TRUE THEN
R34101 := 1;
ELSE
R34101 := 0;
END_IF;
解説:R34102がONのとき、R34101をON。R34102がOFFのとき、R34101をOFF。
※TRUE=1、FALSE=0です。
微分(立ち上がり、立下り)命令
IF LDP(R34000) THEN
INC(DM000);
END_IF;
解説:R34100の立ち上がり(ボタンだと押した瞬間)で、DM000に1を加算する。
IF LDF(R34002) THEN
D000 := 0;
END_IF;
解説:R34102の立ち下がり(ボタンだと押して離した瞬間)で、DM000を0にしてリセットをする。
TMR命令 100ms減算式タイマ
TMR (MR1000, T10, 30);
解説:MR1000の条件がそろったときにT10=30×100msタイマーが動作する。
IF R34000 AND R34001 THEN
SET(MR1000);
END_IF;
※MR1000の条件が途中でなりたくなってもT10タイマーは動作し続ける。
そのためにタイマーの現在値が0になったときの条件を保持する必要がある。
CURVAL タイマ/カウンタ現在値取得
DM2000 := CURVAL(T10) ;
解説:T10の現在値をDM2000に読み出す。