PLC(プログラマブル・ロジック・コントローラー)の覚え書き


ST(ストラクチャード テキスト:Structured Text)

PASCALっぽいなにか。計算に便利。というかラダーで計算なんてするもんではない。
計算が必要になるたびに使って言っていいくらいの代物。
ラダー上に直接STを書けるインラインSTが使えるのならそれで、使えない場合はラダー上にFBを置いて中身をSTで書けばよい。

テキスト記述なので、PLCが別会社に変わっても流用できる。
IF分岐が多くなると条件分岐でのラダーの優秀さに気が付くだろう。

使用例(STライブラリ)
基礎的な話は以下の記事が読みやすいのでそちらへ
ソフテックだよりへ

四則演算

下で書いてるように代入が:=であることを除いて、数式を書く間隔で記述できるので楽。
インラインSTがあるなら、四則演算は全部ST言語で書いたほうがいいくらいのわかりやすさ。
IF data4<>0 Then //ゼロで割るとエラー出るので、ゼロの時は飛ばす
math := (data1 + data2) * data3 / data4 - data5;
End_if;

データ型が一致していないといけないのが面倒

変数宣言

VAR
(変数):(データ型);
END_VER

データ型のあとに":="で代入も一緒にできる。
だいたいのソフトでは変数リストがあってそちらで宣言するほうが楽だと思う。エクセルからコピーできるし。
キーワード"AT"でメモリ番地の指定もできるが、自動割り当てのほうが便利だから多分使わない。
VER
 EXAMPLE : BOOL; (*EXAMPLEはBit*)
END_VER
データ型
ラベルに移動

配列

変数宣言時に"(変数)[0..*]"で*までの数の配列になる。
たぶん0スタートは固定。多次元配列も可能だけど使うのは2次元までだと思う。次元は","で区切る。[0..1,0..2]みたいな感じ。

命令終了

" ; " 記述を忘れると当然動かない。

代入

" := " を使う。" = "は比較等号なので注意。

条件分岐

できる限りラダーで条件書いてSTに渡すようにしたいので忘れてもよい。
IfとCaseが使える。
" IF (条件) THEN (命令) ELSE (例外時命令) END_IF; " ごく普通。
条件分岐を増やしたい場合"ELSE_IF (条件) THEN (命令)を間に入れる。ふつう。
Caseは同じ式で比較を繰り返す際に便利。
条件が複雑になったらラダーで書いたほうがいいです。

繰り返し

ForとRepeatがある。ぶっちゃけどっちでも好きな方を覚えればよい。

For (式) To (数値) by
(繰り返し命令)
END_For;

条件分岐とは違って繰り返しはST言語のほうが使いやすい。

演算子

忘れやすい優先順位とか書いとくのがいいかな

コメントアウト

(* *)で囲むか//を置くかのどちらか(CX-Programmerは(* *)のみ)
'//は改行でコメントアウトが終わるので1行だけコメントアウトするときに

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

編集にはIDが必要です