HTP#Part03_Taskscript‐ Local Variables/Delay Operator

HTP Junction BOX PLCとTaskscriptのTutorial第3話です。今回はDelay Timer・ローカル変数などの基本部品を使用し1秒ごとに出力をチカで変換させる簡単プログラムを作成します。

さ、はじめよう!

Reference Link

HTP#Part01_Junction BOX PLC Openbox
HTP#Part02_Junction BOX with Taskscript‐ Create new project

Flow

こちらは今回のTutorialで実装するFlowです。各Stepの間に1秒のDelayがあり、該当するStepによって出力をOn/OFFを制御します。

Implementation

こちらのLinkで前回のTutorialのプロジェクトをDownloadできます。今回の記事ではこのプロジェクトから作成していきます。

https://github.com/soup01Threes/Taskscript/blob/main/char02.hgr

先程描いたFlowと同様、制御はSubSeq Task Modelから実装します。

Subseqを選択し>右クリック>Open task Editorします。

iStep0

最初はiStep0(初期化Step)を構築していきます。

Edit Step Name

InitStep名を修正します。

Flowのように、iStep0という名前に変更します。

iStep0で実行する制御コードを作成するため、iStep0を選択し>右クリック>Open Step Editorします。

iStep0内部コードの編集画面に変わります。

Action

iStep0ではPLCすべての出力をリセットするようにします。

先程のStep EditorからBit Value部品を選び、iStep0に追加します。

Bit Value部品が追加されました。

Bit Value部品をダブルクリックすると、ValueからFalseやTrueを選択できます。Trueに選択されると、そのBit Value部品が定数Trueになっています。

今回はValueをFalseに設定します。

Done!本来Bit Value部品が”True”から”False”に変わりました。

次はFalse定数のBit Value部品をo_ch1に繋がることによって、o_ch1をFalseにリセットすることができます。

下図のような操作です。

Done!

先程の操作でo_ch1,IO_O2からIO_O10をFalseのBit Value部品と接続しましょう。

つまり、iStep0はすべての出力をリセットすることになります。

Bit Value?

Bit Valueは実は他の変数などに新しい値を渡すためにある部品です。Taskscriptは3種類のValue部品が提供されています。

  • Boolean
    • TrueやFalse
  • Numeric
    • 設定できる範囲は-32768 to +32767で
    • Little-Endian Format
    • Hex Formatにも設定可能で、例えば0x1234を設定したいなら0xから設定値を入力すればOkです。(0x1234=4660Dec)
  • String
    • 文字列

Add Bit Local Keep

今度はSubSeq内にローカル変数を定義します。Taskscriptには2種類のローカル変数を定義でき、それは次の周期まで演算結果を保持するBit Local Keep部品と演算結果をクリアするBit Local Temp部品です。

Bit Local Keep部品が追加されました。

Bit Local Keep部品を追加するだけではまだプログラム内で使用できませんので、部品をダブルクリックして、Variable Nameを設定し、もしArrayに設定したいのであれば、Array SizeのFieldからも変更してください。

Bit Local Keep部品Local_k0が定義されました。

最初にも伝えましたが、この部品はローカル変数なので、他のTask Modelでは使用できません。確認するためTask mainを開いてみます。

Main Taskでは先程定義したLocal_k0のローカル変数が表示されていないのです。なので、ローカル変数のScopeは自分のTaskのみです。

先程の同じ操作で合計10つのローカル変数を追加します。

iStep1

次はiStep1を作成します。

右にあるToolbarからStep部品を追加します。

Done!ST_1というStep部品が追加されました。

ST_1をiStep1という名前に変更します。

Create Step Flow 

今度はiStep0からiStep1に移行する制御を定義します。

iStep0をMouse右クリックし>iStep1の上方向にDropすれば、iStep0は条件を揃えてiStep1に移行するようになります。

下図のような操作です。

Done!

Flow Condition

iStep0からiStep1に移行するために1秒のDelayがあります。つまりiStep0>1秒待ち>1秒の待ちの監視FlagがTrueになり>iStep1に移行するような流れです。

これからまず監視Flagを作成します。

いまiStep0からiStep1の移行条件がTrueで、つまりiStep0が無条件でiStep1に移行することになります。

True文字をダブルクリックするとTransition ConditionのFieldを変更すれば、条件監視のStep移行Flowを作成できるようになります。

今回の記事ではLocal_k0を使用します。

なので、Transition ConditionのFieldにLocal_k0を直接入力し、Okで設定を保存します。

Done!

Add Delay

次はiStep0からiStep1に移行するときの1秒Delayを作成します。

右のToolbarからBit Valueを追加します。

Bit Value部品が追加されました。

次は右のToolbarからDelay部品を追加します。

Done!Delay部品が追加されました。Delay部品の1という数字はいま1msのDelayを設定したことを示しています。

Delay部品をダブルクリックすると部品の詳細設定を行います。

Delay Value(ms)を1000に設定することによって1sのDelayに設定できます。

Delay TypeはOn(Delay On)のままでOkです。

Done!

次はTrueのBit Value部品をDelayの左(入力)に接続します。

Done!

次はDelayの右側(出力)をLocal_k0と繋がります。

Done!

What is Delay?

Delay OperatorsはいわゆるPLCでよく使われてるTimerに近い機能をもっています。Delay Operatorが設定された時間が経過すると、TimerはDoneに遷移してカウントを停止し、Done出力はtrueになります。 逆に、Enableがfalseになった場合、タイマーの状態はリセットされ、Done出力はfalseになります。

今回使用する定数Delay Opeatorは定数のミリ秒単位で、設定の最大値は1.6*107ミリ秒であり、つまり180日を超えるDelayを指定することができる。

TaskScriptのTimerでは2種類のDelay Opeatorを設定できます。

  • On
    • Delay OpeatorがTrueを出力するには、入力変数が指定された設定値を超え、そして常にTrueに出力し続けます。
    • 入力変数がFalseになるとすぐに出力もFalseになります。
  • Off
    • Delay Opeatoの出力は、入力変数が True になるとすぐに True になり、入力変数が False になるか、または入力変数が指定された設定時間を超えてもまだ True のままであれば 、出力はFalse になります。

Arrange the Line

Delay Opeatorの出力はLocal_k0と接続しましたが、Lineの繋がり方は少し雑で、制御が複雑になると見づらくなります。Taskscriptは制御Flowを整理整頓する機能が揃えております。まずLineを選択し>右クリック>Add Pointします。

Line起点と終点の間にもう1つのPointが追加されました。

このPointをMouseからClick and Dropすれば、Lineの配置を自由に設定できます。

ManualでLineの配置を整理できますが、Taskscriptには自動配置という方法もあります。

Lineを右クリック>Edit Path>HVHVHVH Pathをクリックします。

下図のようにLineが自動的に配置されます!

Path?Point?

TaskScript StudioのLineでは以下のように自由設定できます。

  • HV(最初に水平、次に垂直)
  • VH(最初に垂直、次に水平)
  • HVH(最初に水平、次に垂直、次に再び水平)
  • VHV(最初に垂直、次に水平、次に再び垂直)

などの自由配置Optionsが用意されています。

iStep1’s Action

iStep1にはo_ch1出力をTrueにする制御があります。

iStep1を右クリック>Open Step Editorします。

Step Flow

まずiStep1’からiStep2に移行する条件とTimerを設定します。

下記のようにDelay OpeatorをLocal_k1と繋がりましょう。

Done!

Action

iStep1が有効の間にo_ch1を出力するようにします。

TrueのBit Value部品を追加しo_ch1と繋がりましょう。

Done!

iStep2

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep2はo_ch1・IO_O2をTrueにします。

iStep3

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep3はo_ch1・IO_O2・IO_O3をTrueにします。

iStep4

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep4はo_ch1・IO_O2・IO_O3・IO_O4をTrueにします。

iStep5

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep5はo_ch1・IO_O2・IO_O3・IO_O4・IO_O5をTrueにします。

iStep6

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep6はo_ch1・IO_O2・IO_O3・IO_O4・IO_O5・IO_O6をTrueにします。

iStep7

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep7はo_ch1・IO_O2・IO_O3・IO_O4・IO_O5をTrueにします。

iStep8

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep8はo_ch1・o_ch1・IO_O2・IO_O3をTrueにします。

iStep9

他のStepに似ている動作なので、ここで詳しく説明しません。

iStep9はo_ch1・IO_O2・IO_O3・IO_O4・IO_O5・IO_O6・IO_O7をTrueにします。

Finally Flow

こちらは最後に作成されたFlowです。

Group

変数を管理しやすくするためにGroup機能を使用します。

右ToolbarからGroupを追加しましょう。

Done!

Textual Annotation

Textual Annotatio部品を使用しプログラムにCommentを追加しましょう。

Text Fieldにプログラムの説明を入力しましょう。

Done!

End

これは今回記事で作成したFlowです。

Result

こちらのLinkから実際の動作を確認しましょう。

Download

今回のプロジェクトを下記のGithub LinkからDownloadできます。

https://github.com/soup01Threes/Taskscript/blob/main/char03.hgr

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする