HTP Junction BOX PLCとTaskscriptのTutorial第2話です。今回は0からプロジェクトを作成し、なおかつTaskscriptに重要な部品を少しずつ説明しながらしていきます。
さ、はじめよう!
Reference Link
Communication Settings
PCとPLCBOXを繋がるための通信設定を行います。
View>Settingsを開きます。
Serial Interface>USB Newを選択します。
Network InterfaceにSubnetを設定しましょう。
IPが192.168.5.xの場合、Subnetを192.168.5.255に設定してください。
Discover ControllersでPLCBOXを検索します。
Done!PLCBOXが見つかりました。
BrowserからPLC BOXのIPを入力すると、該当するPLCBOXの情報を確認できます。
Create Project with Wizard
前回はSampleプロジェクトで試しましたが、今回は0から新規プロジェクトを作成していきます。File>New with WizardもしくはCtrl+w で新規プロジェクトを作成します。
Board Tpeの設定画面が表示されます。
Drop-listからBoard Typeを設定します。
設定するBoard TypeはさきほどのWEB画面から確認できます。
Done!
Configure the IOs
入出力の各点がわかりやすいよう、IO名を変更します。
下図のように入力・出力のICONを示しています。
次は入力Channel0の名前を変更してみます。
IO_I1をダブルクリックします。
Bit Inputの設定画面が表示します。
Variable Name
Variable Name欄で該当する変数の名前を変更できます。
i_ch_1に変更いたします。
Physical Allocation
こちらは該当するBit Inputデバイスと紐付けるHardwareアドレスを設定できます。
三菱のX0、X1のようなイメージです。
Array Size
該当するデバイスのArra Sizeを設定します。ScalarはSingleの変数になります。
Result
Done!変数名を変更しました。
Flow
こちらはTaskScriptに構築するFlowになります。
ロジックの部分は今回の記事で作りませんが、TaskScriptの中に大事な部品を少しずつ説明させていただきます。
Main Task
最初はMAIN Taskを構築します。
Taskscriptにあるmain Taskを右クリック>Open Task EditorでTask Editorを開きます。
こちらはMAIN Taskの内部です。
Task?
Taskというのは、モデルのモジュールを実現するためにある部品で、Taskは自己のロジック完結を実装するためにあり、なおかつFlowの中にInstance化することができます。
Taskの定義はContext EditoからTaskの名前とOptionsなどの設定できます。
Init Step
次はMAIN Taskの中にあるInitStepを構築します。
Taskは1つのEntry Pointあり(Initial Step、初期ステップ)、そして場合によってExit Pointなしも複数で設定できます。
Configure
InitStepをダブルクリックすると設定画面が表示されます。
今回はNameをmain1に変更します。
Done!
Update Name
Step名を変更したあとOpen task Editorをもう一回クリックし、Treeの表示を更新します。
Done!
Context Diagram Editor
プロジェクトFlow全体を確認したければ、Treeの一番上にあるICONを右クリック>Context Diagram:Your project nameをクリックします。
このように全体Flow画面に戻れます。
New Task Model
今度は新しいTask Model(赤枠のSubSeq)を追加します。
先程の操作で全体Flow画面に切り替えます。
右のToolbarからTask Modelをプロジェクトに追加します。
Done!新しいTask Modelが追加しました。
Task Modelをダブルクリックし、Task名を変更します。
Done!
Update View
Task Model名が変更されたら、もう一回該当するModelを選び>Open task EditorすればプロジェクトTreeが更新されます。
Done!
Add Parallel
次はInitStepのmain1からStepのmain2に移行する制御を作成します。
mainを右クリック>Open Task Editorします。
右のToolbarからParallel部品を追加します。
Done!
Parallel Fork/Synchronize?
Parallel Fork/Synchronizeは、2つまたは3つの並列計算スレッドを開いたり、同期して閉じたりするのに使われる。
下図のように、3本の平行Threadsが同時に実行されます。
beginのInitStepを実行したあと同時にWaitClk・user Task・all_OFF3つのThreadsが実行されます。注意するのはここのExampleではbegin Stepの移行条件がTrueだけで、アプリケーションによってロジックから判断することも可能です。
下の図は、上の二重バーとThreadsを同期する下の二重バーを両方とも同時に使用するExmapleです。つまり、Step Perc20と Step perc70の両方が有効になり、そして実行完了したらwaitX Stepに戻ります。
Align
TaskScriptは複数の部品を整列できます。下図ではInitStepとParallel部品をCtrlで複数に選択し>Aligh horizontallyをクリックすると、2つの部品を真ん中に揃えることができます。
Done!
Arrange Flow
InitStepが完了したあとにParallel 部品に移行するように設定するため、InitStepを右クリックしながらParallel部品に移動すればOkです。
下図のような操作です。
Done!
Add Step
今度はInitStepの次にあるStep main2を構築します。
右のToolbarにあるStep部品を追加します。
下図のような操作です。
Done!
先と同じ操作でStep main2とParallelを接続しましょう。
Add Task Instance
最後はSubSeqのTaskをMAIN Flowの中で実行するようにします。
右のToolbarにあるTaskを追加しましょう。
下図のような操作です。
Done!
Add Flow Control
main2 Stepが実行完了のあとTaskInstance Subseq01に移行するように設定します。
先ほど説明した操作で同じ部品を接続しましょう。
Model Name
Taskをダブルクリックし>Model NameのDrop ListからSubSeqw設定して下さい。
OKで進みます。
Task instance?
Task Instanceは、Taskの機能をモデル内部で使用できるようになります。PLCのIEC61131-3だとFunction BlockのInstanceだと理解していただければよいと思います。インスタンス化されたタスクが引数を持つ場合、引数を必要な変数に接続することで、引数を実体化することもできます。
下図のように、Task Instance名は任意の名前にすることができ、Model Nameではプロジェクト内で利用可能なモデルを定義すればよいです。
Validate
プロジェクト作成終わったので、ValidateボタンからプロジェクトのCheckを行います。
赤画面が出るのはプロジェクトにエラーがあることを示しています。
エラーメッセージはSubseqのTaskにInitial Stepがありません、と。
さきほども説明しましたが、Task内にInitial Stepは必ず必要です。
Add Init Step
Subseqを右クリック>Oopen task Editorします。
右のToolbarにあるInitial Stepを追加します。
Done!
もう一回Validateするとエラーがなくなりました。
Build
プロジェクトのソースコードを生成します。
Done!
Hold in Load Mode
HTPのPLC BoxをLoad Modeに切り替えます。
Upload and Run
Deloy>Upload and Run ControllerでプロジェクトをPLCにUploadします。
OKで進みます。
Done!
Connect
Deloy>Connect to Physical ControllerでPCとPLCBOXと接続します。
Run
RunボタンでPLCをRun Modeに切り替えます。
Done!いま緑になったSubSeq01になって、つまりSubstep01 Taskを実行しています。