HTP Junction BOX PLCとTaskscriptのTutorial第4話です。今回は前回の記事とほぼ同じ制御ですが、プログラムは別の方法で組みます。
各Stepは直接出力するのではなく、一旦各StepにもStep番号振り分け、該当するStepに当たって必要な出力を制御するようにします。
さ、はじめよう!
Reference Link
Implementation
こちらのLinkで前回のTutorialのプロジェクトをDownloadできます。今回の記事ではこのプロジェクトから作成していきます。
Define Global Variable
Global変数を追加します。
Word Keepをプロジェクトに追加します。
Done!
ダブルクリックし、Word Keep部品の設定を行います。
Variable NameをSubseq1Wordにします。
Done!
Edit Subseq
次はSubseqを編集します。
こちらが前回のTutorialのFlowです。
これから各Step内に直接出力を制御するプログラムを削除します。
こちらは前回Step制御です。
Delete the original Action
各StepにTrue/Falseで直接すべての出力と繋がってるOutput Lineを削除します。
Done!
Assign Values to Global Variable
この代わりに、Step0なら0x0、Step1なら0x1のようにStep番号を振り分けます。Word Valueを追加します。
Done!
次はWord ValueとGlobal変数と繋がりましょう。
Done!
Using Hex Value
HEX Valueを直接使用したい場合は0x04のように設定すればOKです。
Insert New Task Model
新しいTask Modelを追加するため、プロジェクト名>右クリック>Open Context Diagram Editorをクリックします。
右のToolbarからTask Modelを追加します。
Done!新しいModelTM_1が追加されました。
Rename it
プログラムするには、わかりやすい変数名は基本中の基本です。新しいTask ModelをOut_Seqと命名します。
Edit the Model
Task Modelを右クリック>Open Task EditorでTaskを編集します。
Insert Step
下図のようにInitStepとStep部品を1つずつ追加します。
Rename it
Stepをわかりやすいように変更します。
Create Infinite Looping
Task Modelに無限Loopを作成します。つまり無条件でOutSeq0>OutEND>またOutSeq0に戻るようにします。
Insert Word Local Keep
今度はまたLocalのKeep 変数を追加します。右にあるToolbarからWord Local Keep部品を追加しましょう。
Done!Word Local Keep部品が追加されました。
Word Local Keep変数をLocalTemp_Stepという名前に変更します。
Insert Bit Local Temp
今度は右のToolbarからBit Local TempをTask Modelに追加します。
Done!
Bit Local Temp部品の名前を変更します。
Flowに書いた通り、6つのTemp変数を追加します。
Edit Step
OutEndを選択し>右クリック>Open Step Editorします。
こちらは今回編集するStepになります。
Assign Value to temp Variables
Global変数Subseq1Wordの現在値をローカル変数LocalTemp_Stepに格納します。
それはPLCでよくある制御回路を実行する前にまず必要な変数を別のデバイスに移す動作です。
Done!
Edit the Path
部品で繋いてるLineを整理整頓するためにLineを右クリック>Edit Path>HVHVH Pathします。
Done!
Access the Global Variables
Word Variable Name部品を追加します。こちらの部品はプロジェクト内の変数をTask Modelにもっと自由にアクセスできるように作られた部品です。
Done!
部品を編集するためにダブルクリックします。
Choose Variable
該当するWord Variable 部品と紐つける変数を設定できます。
Local Name
こちらはStep内にその変数の表示名を設定できます。
Defaultでは<Same as variable>で、つまり紐付けられた変数と同じ表示ですが、変数名が長くなる場合はこの機能使えばプロジェクトの可読性をUpできます。
今回はTemp1にします。
Done!Temp1という変数が追加されました。
Access the Bit inside the Word
次はTemp1のBitを単体にアクセスするため、Extract部品を追加します。
Extract部品が追加されました。
Extract部品をダブルクリックすると、Value of Constant Indexという設定項目があります。
Value of Constant Index
こちらはWordの何Bit目のTrue/Falseを取得するかを設定します。
0ならBit0になります。
いまBit0とBit6にアクセスするようになります。
Connect
Temp1とExtract部品を繋がります。
Done!いまTemp1のBit0とBit6を取得するようになりました。
Create the OR Logic
今度はOR Logic部品を追加します。
Done!OR Logic部品が追加されました。
次はTemp1から取り出したBit0とBit6のTrue/False値をOR Logic部品のInputと繋がります。
Done!
ラダー図からではこのような回路になります。
次はOR Logicの結果をLocalTemp_1の入力と接続します。
Done!
ラダー図からではこのような回路になります。
The End Flow
こちらは今回記事で完成したプロジェクトFlowになります。
IF More than 3 Conditions in One OR Gate…
注意する点は3つ以上のOR Logicが同時に繋がりたいとき、下図のように2つのOR Logic部品で分けてください。
Call the Model
最後はTask Modelを呼び出すため、プロジェクト>Open Context Diagram Editorします。
Main>右クリック>Open Task Editorします。
先程追加したOutSeq Task Modelを追加しましょう。
Result
こちらの動画でFlowの動作を確認できます。
Download
今回のプロジェクトを下記のGithub LinkからDownloadできます。
https://github.com/soup01Threes/Taskscript/blob/main/char04.hgr