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

入力:R34000~
出力:R34100~

2級向けのAND・OR回路
TMR (MR2000, T1, 30); //ランプ1_ONタイマー設定
TMR (MR2002, T2, 20); //ランプ1_OFFタイマー設定
TMR (MR4000, T3, 30); //ランプ2_ONタイマー設定
TMR (MR4002, T4, 50); //ランプ2_OFFタイマー設定
//WLランプ運転開始条件
IF R34002 OR (R34000 AND R34001) THEN //G_PB押し OR B_PB,Y_PB同時押し
MR2100 := TRUE;
ELSE
MR2100 := FALSE;
END_IF;
//YLランプ運転開始条件
IF R34000 AND R34001 THEN //B_PB,Y_PB同時押し
MR1000 := TRUE;
END_IF;
//GLランプ運転開始条件
IF R34000 THEN //B_PB押し
MR3000 := TRUE;
END_IF;
//ランプ運転停止条件
IF R34002 THEN
MR1000 := FALSE;
MR2000 := FALSE;
MR2002 := FALSE;
MR3000 := FALSE;
MR4000 := FALSE;
MR4002 := FALSE;
END_IF;
//YLランプ運転中
IF MR1000 AND MR2002 = FALSE THEN
SET(MR2000);
END_IF;
IF T1 = TRUE THEN
RES(MR2000);
SET(MR2002);
END_IF;
//YLランプ停止
IF T2 = TRUE THEN
MR2002 := TRUE;
MR2000 := FALSE;
END_IF;
IF T2 = TRUE THEN
RES(MR2002);
END_IF;
//GLランプ運転中
IF MR3000 AND MR4002 = FALSE THEN
SET(MR4000);
END_IF;
IF T3 = TRUE THEN
RES(MR4000);
SET(MR4002);
END_IF;
//YLランプ停止
IF T4 = TRUE THEN
MR4002 := TRUE;
MR4000 := FALSE;
END_IF;
IF T4 = TRUE THEN
RES(MR4002);
END_IF;
//ランプ出力
R34100 := MR2100; //WL出力
R34101 := MR2000; //YL出力
R34102 := MR4002; //GL出力