キーエンス KVシリーズではラダー以外にもKVスクリプトでの記述が可能です。
ということで学習のついでに学んだことを書いています。
どうもKVスクリプトはVB風の書き方をベースにしてるようです。(KVスクリプト大辞典より)
参考マニュアル
KV-8000/7000/5000/3000/1000/KV Nanoシリーズ スクリプトプログラミングマニュアル
KVスクリプト大辞典
演算子
算術演算子
^ , ∗ , / , MOD , + , -
比較演算子
< , <= , > , >= , = , <>
文字列連結
+ または &
論理演算子
NOT , AND , OR , XOR
代入文
DM0 = 10 '数値代入
R501=TRUE 'ビット代入(0,OFF,FALSE,1,ON,TRUEが使用可能)
DM1 = DM0 'デバイス代入(ワード)
R500 = R0 'デバイス代入(ビット)
DM10.T = "STRING" '文字列代入
条件分岐文
IF DM0=1 THEN
DM1=1
ELSE IF DM0=2 THEN
DM1=2
ELSE
DM1=3
END IF
SELECT CASE DM0
CASE 1
DM1=1
CASE 2
DM1=2
CASE ELSE
DM1=3
END SELECT
MC DM0=0 THEN
MR0=1
MCR
繰り返し制御文
'DM10,11を10になるまでまでループ
FOR DM10=0 TO 9 STEP 1
DM11=DM11+1
NEXT
'DM12を10になるまでまでループ
WHILE DM12<10
DM12=DM12+1
END WHILE
'DM13を10になるまでまでループ
DO
DM13=DM13+1
UNTIL DM13>9
FOR文、WHILE文、DO文はBREAKで繰り返し制御から抜けることができます。
こうやってみるとラダーより分かりやすいのですが、内部ではラダーに変換され実行されます。
変換するとスクリプト横に[+]/[-]の記号が表示されます。押すとラダーに変換された回路を見ることができます。
GX Works2のST文もそうですがこれだけ短くても長いラダーが生成されます。
サフィックス
□.U 16ビット符号無し(0~65535)
□.S 16ビット符号付き(-32768~32767)
□.D 32ビット符号無し(0~4294967295)
□.L 32ビット符号付き(-2147483648~2147483647)
□.F 単精度浮動小数点型実数
□.DF 倍精度浮動小数点型実数
□.B ビット型
□.T 文字列型
サフィックスを省略した場合の動作
ビットデバイス : □.B ビット型
ワードデバイス : □.U 16ビット符号無し
Zデバイス : □.L 32ビット符号付き
CTH : □.D 32ビット符号無し
このためDM0 = DM12 + DM14 のように書くとすべて16ビット符号無しとして変換されます。
60000+60000を行うと120000にはならず54464という値になりエラーにもなりません。
サフィックスを省略しないように書くクセと値が大きくなる可能性がある場合は32ビットデバイスを使うように考えないといけません。
オプション
[ツール]→[オプション]のST/スクリプト設定タブで色々設定可能です
ワークメモリ
演算途中のデータはスクリプトでしか使用できないワークメモリに置かれます