Codesys ではglobal variable list はよく使われてると思いますが、次はglobal variable list (takslocal) というオプションもあると知ってますか?今回の記事ではこの機能を紹介したいと思います。global variable list (takslocal) というのはそのGlobal Varable List内で定義されてた変数は指定したTask以外に現在値を変更することができません。
Create Global Variable List(tasklocal)
Application 右クリックしadd object > Global Variable List(takslocal) を作成します。
Takes with write access の項目が出来ています。つまり、設定されたtask だけ、そのglobal variable list 内の変数の現在値を変更できます。
では試しにプログラムをもう一つ作ってみましょう。
Add Task
Takes Configuration>Add Object>Task を作成します。
Task の名前は適当でokてす。
次はそのタスクに実行するPOUを設定します。Add Call をクリックします。
先程追加されたPLC_Task2を選びます。
それでokです。
Configuration
最後にはgloal variable list (task local) をもう一度追加して、task with write access にはさっき作成したタスクを選択し作成します。
その変数リストを開くとtaka with write access の項目が出てきます。作成したリストもあとからアクセス可能なタスクを変更できます。
では中で変数を定義してみますね。
Test
そして比較できるように普通のglobal variable list も作っておきます。
中でも同じ変数を定義します。
PLC_PRGのPOUをさきに開きます。
普通のgvl 内の変数を書き込んでみます。
次はtaka local のgvl も書き込むのプログラムを作成。
Build > Generate Code プロジェクトをコンバインします。
PLC_PRGにエラーが出てきましたね。
View>Message で情報を確認します。
]
TasklocalGVL_PLCTask2.b1に赤い線がついてます。
エラーは該当するTaskがそのGlobal変数を書き込みする権限がありません、と。
つまり変数は読みがよいが、現在値を変更するのはTask localで定義されてたTaskのみになります。