ラダー脳から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に読み出す。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA