この記事は予約語VAR_STATがどういう変数なのか、どんな特徴があるかを説明したいと思います。どうぞよろしくおねがいします。
VAR_STAT?
VAR_STATはIEC61131-3標準の拡張であり、VAR_STATとして宣言された変数はFunction blockが初めて呼び出されたときに初期化されます。
一番の特徴としてはVAR_STATに宣言された変数はすべてFunction Blockに共通することです。Function Blockは使用するときに自分だけのInstanceがあり、ほかのInstanceと干渉しないのが一般的な認識ですが、その変数はFunction Block内に共有されています。
では実際のExampleをみてみましょう。
Example
では、まずFunction Blockを作ってみますね。
名前はFB_TESTにします。
そこに、VAR_STATを追加し、中に整数データタイプの変数を宣言します。
次はFuncton blockにMethodを追加します。
この機能を試すには難しいプログラムを組む必要はないのでそこで1を足すプログラムを作成します。
そしてInputがTrueになるとCounterを1を足すようにします。
次はFB_TESTのInstanceを6個作成します。
そして0個目のInstanceだけMethd_Add1のMethodを実行するようにします。
そしてLoginしMonitorするといま_iCounterの現在地0ですね。
そして_iCounterのとなりに”S”の文字がついてると気が付きましたか?
0番目のMeth_Add1()をTrueすると、すべてInstanceの_iCounterの値が同じく1になります。
つまりVAR_STAT内の変数は共通です。
でも実際どうやって使うかまだ考えています…
Download
以下のLinkからCodeをDownloadしてください。
TwinCAT3/TwinCAT Project Example VAR_STAT.tnzip at main · soup01Threes/TwinCAT3 (github.com)