LoginSignup
1
3

GOT2000スクリプト 色々

Last updated at Posted at 2022-02-03

三菱電機製タッチパネルGOT2000を入手したので勉強のために調べたことを色々書くことにした。
(ネタが思いついたら追記します)

内部レジスタ

GOT1000では外部から内部レジスタをモニタ出来ませんでしたが、
GOT2000からは下記オプション有効にすることで、外部からモニタが可能です。
image.png
image.png
image.png

GOT内部デバイス(すべて10進デバイスです)

デバイス 範囲 備考
GOTビットレジスタ GB0~GB65535 GB0~GB63はGOT内で用途割り当て済み
GOTデータレジスタ GD0~GD65535
GOT特殊レジスタ GS0~GS2047
テンポラリワーク TMP0~TMP1023
スクリプト部品テンポラリワーク PTMP0~PTMP1023
SoftGOTビットレジスタ SGB0~SGB65535
SoftGOTデータレジスタ SGD0~SGD65535
ゲートウェイデバイス EG0~EG32767
GOT Mobile ビットレジスタ VGB0~VGB32767
GOT Mobile データレジスタ VGD0~VGD32767

GOTビットレジスタ(GB),GOTデータレジスタ(GD)

GOTが内部に持っているデバイスで自由に使える。
GOT内のデバイスなのでPLCのデータとは直接リンクはしていない。
デバイスデータ転送やスクリプトにてPLCのデータをGB,GDに読み書きすることは可能。
GB0~GB63はGOT内で用途割り当て済みのため書き込みは禁止
GB40が常時ON,GB41が常時OFF
GT Designer3 (GOT2000) Version1.215Z 以降はデバイスの停電保持設定が可能
image.png

GOT特殊レジスタ(GS)

GOTが内部に持っている特殊レジスタです。
GOTの内部情報,通信状況,エラー情報などが格納されます。

参考マニュアル:GT Designer3 (GOT2000) 画面設計マニュアル SH-081219 付録 12.1.3 GOT特殊レジスタ(GS)

テンポラリワーク(TMP)

スクリプト内で使用可能なテンポラリ用デバイスです。
スクリプト内でしか使えないのでTMP0を数値表示のデバイスに設定するなどはできません。
TMPはグローバル変数なので別のスプリプトからも参照可能です。
1つのテンポラリワークは64ビットで扱われます。
ビットデバイスとして扱う場合は16ビット相当となります。

スクリプト部品テンポラリワーク(PTMP)

個々のスクリプト部品のスクリプト内のみで共有されるローカル変数です。
同じスクリプト部品内のスクリプト同士では値の共有が可能です。
1つのスクリプト部品テンポラリワークは32ビットで扱われます。
ビットデバイスとして扱う場合は16ビット相当となります。
image.png

SoftGOTビットレジスタ(SGB),SoftGOTデータレジスタ(SGD)

機種がGT SoftGOT2000のときに使えるデバイスです。
使用方法はGB,GDと同じ

ゲートウェイデバイス(EG)

別のGOTからでもEGデバイス経由することでPLCのデータを読み書きが可能のようです。
このへんを活用すると闇が深くなりそうです。
image.png

GOT Mobile ビットレジスタ(VGB),GOT Mobile データレジスタ(VGD)

GOT Mobile用の画面を作成した時のGB,GDデバイスです。
GDデバイスを使うと複数の端末からアクセスしたとき表示画面がすべて同じになってしまうので接続端末毎にVGB,VGDを用意するようです。
GB,GDをVGB,VGDに割り当てるようです。
image.png

デバイスの読み書き方法

種類 書き方
ビットデバイス [b:X100]
ワードデバイス [w:GD100]
符号付きBIN8 [s8:GD100]
符号なしBIN8 [u8:GD100]
符号付きBIN16 [s16:GD100]
符号なしBIN16 [u16:GD100]
符号付きBIN32 [s32:GD100]
符号なしBIN32 [u32:GD100]
符号付きBIN64 [s64:GD100]
符号なしBIN64 [u64:GD100]
BCD16 [d16:GD100]
BCD32 [d32:GD100]
BDC64 [d64:GD100]
実数(32ビット) [flt:GD100]
実数(64ビット) [flt64:GD100]
ラベル指定 [<$:グループ名:ラベル名>]
ワードデバイス(オフセット) [w:GD100[w:GD200]]
ビットデバイス(オフセット) [b:X100[w:GD200]]
ワードデバイスのビット指定 [b:D100.b1]
ビットデバイスのワード指定 [w:X100]
[w:GD100]=[w:D100];//D100→GD100へ転送
[w:GD110]=[w:D100[w:GD101]];//D100(オフセットGD101)→GD110へ転送

こんな風に書くのですが、制約があり一部の書き方はオブジェクト内のスクリプトでは使えず、普通のスクリプトだと使えたりします。
何が出来て何が出来ないのかがわかりずらいので書いてみてエラーが出ておかしいと思ってマニュアルを漁ると出来ないとに気づくということはよくあります。
image.png
image.png

C言語っぽいただのスクリプトなのでマニュアルに書いてあることしか出来ません。
演算中の内容はモニタできないので、どこかのデバイスに吐き出して数値表示部品で確認するしかないです。
長い計算式はこまめにGDデバイスに書いてデバッグ出来るようにしないと苦労します。

オブジェクト内部変数

$$ モニタデバイス値をスクリプト参照します。
$K タッチキーから入力された最新のキーコードを,スクリプトで処理する場合に参照します。
$V オブジェクトで表示する値を変更する場合に代入します。
$W 書き込むときに,スクリプトで処理した値を使用する場合に代入します。

例えば下の場合だとD200の値($$)に+20を行い数値表示($V)に代入されます。D200が100だと数値表示が120になると言うことですね。
この程度の計算だとデータ演算で出来ますが複雑なことをする場合はスクリプトで書くしかないです。
image.png
image.png

下記の例は入力した数値入力に入力した数値に+1した値を書き込むということが出来ます。
入力した値をルールにしたがって加工したい場合に使えるかもしれません。
image.png

まとめ

スクリプトを多用すると自分以外の人に理解されない物ができて苦労します。
スクリプトを使えばファイル操作,検索,コピーが出来ますが闇です

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3