まず、他人のタッチパネルデータを流用すると普段使用しているデータレジスタが異なることが多いと思います。
『デザインはいいのに、このデータレジスタをここに使われるとなぁ』とか『このデータレジスタを変更するとどこかに影響するのかなぁ』と心配が増えます。つまりは、タッチパネルデータの解析や以前のソフト解析までしなければならない事態になります。
今回はタッチパネルデータや以前のソフト解析が不要となるスクリプト機能を使用した事例を紹介します。
【目次】
はじめに
広告
今回行おうとしてる事例として、以前紹介した異常詳細表示をアレンジしたいと思います。
内容として異常詳細の表示行を異常内容が移動したら表示行をリセットします。
・過去記事
www.niwakafa.comスクリプト機能とは
引用:三菱電機
スクリプト機能について、あまり記述がないため、インターネットで検索した簡単な説明書を紹介します。
私が思うスクリプト機能の利点
・C言語のように記述することができる
・タッチパネルのビット(GB)やデータレジスタ(GD)で完結することができ、ソフトに影響しないで動作を表示することができる
という利点があると思います。
スクリプト作成
まずは異常詳細の部分である『コメント表示(ワード)』→『演算/スクリプト』→『演算種類:スクリプト』を選択します。
IF文
C言語に触れていない人にとってはなかなか敷居が高く感じるかもしれませんが、あまり難しく思う必要はないくらい記述することができます。
まずIF文というものは『もし~なら、~を処理します』という内容の命令になります。
一番最初の命令を見ていただくと
if ([w:D7900] != 800)
{[w:GD52] = 0;
}
となっております。
D7900:画面表示番号
w:GD50:選択されている異常内容
w:GD52:コメント表示行
w:GD54:前回処理時に選択されていた異常内容
説明しますと、画面表示番号が800(異常画面)でない場合、コメント表示行のGD52に0を転送するという命令になります。
論理演算子:&&
これが論理演算子と呼ばれるもので『~の条件と~の条件が両方とも正しいのであれば真である』という内容の命令となります。
これをIF文と合わせると、『~の条件と~の条件が両方とも正しいのであれば~の処理をします』という命令となるわけです。
if ( ([w:D7900]==800) && ([w:GD52] == 0) )
{[w:GD52] = 1;
}
今回は表示画面が異常画面であり、異常詳細コメント表示行(GD52)が0であれば1を転送するという処理になります。
※コメント表示行が0だと0行目を表示してしまうため、GD52に1を転送しています。
異常表示行のリセット
広告
上記の論理演算子&&の説明を理解した上で、次の命令文を呼んで頂きたいです。
ここで異常表示行をリセットします。
if ( ([w:D7900]==800) && ([w:GD54] != [w:GD50]) )
{[w:GD52] = 1;
}
[w:GD54] = [w:GD50];
リセット手順
前回と今回のコメント番号を比較するには少しコツが入ります。
手順としては
1.転送前にGD54とGD50を比較する
2.比較し、GD54とGD50が異なった場合、異常詳細コメント表示行のGD52に1を転送
3.異常選択コメントを比較するために、GD50のデータをGD54へ転送
これによって、異常詳細コメント表示行をリセットすることができます。
実演
異常詳細を移動させた後、異常内容の選択位置を変えると異常詳細コメント表示行が切り替わるのがわかります。
これで動作が正常だということがわかると思います。
この利点は大きく、ソフトのデータレジスタを一切使用していないことです。
つまり、現在シミュレーションで使用しているソフトを流用しなくても簡単にタッチパネルを流用することができます。
終わりに
広告
C言語に慣れていないと作成、修正が難しく感じるかもしれませんが、ソフトで余計なデータレジスタを使用しなくて良いという利点は大きいと思います。
また、PLCが停止した場合でも通信できていないことを表示することがこれを利用すれば表示できるかも?しれないです。
色々使い道があると思いますので参考にしてみて下さい。