Beckhoff#TwinCAT SFC Basic-1

SFCとは?

SFCはGraph感覚でプログラムを作成するIEC61131-3手法でUserが早く・簡単にシーケンサー制御プログラムを作成することができます。

そのSFCプログラムはプロセスをStepことにわけ、各Stepが活かすFunctionも明確です。

StepにActionがという部品あり該当するStepが実行するロジックをプログラムできます(実装するはLAD/FBD/IL/STでも可能)

Step間移行するにTransitionsという部品があり、TransitionsがTrueになると次のStepに移行することできます。

Basic

SFCプログラムを処理するにはいくつかのBasic Elementがありますが、今回はまずTutorialで使用する部品を紹介します。

Active Step

それはいま実行している”Step”になります。TwinCATはOnline modeのときそのStepが青い色になります。

Initial Step

SFC POUが最初にCycle中で呼び出されたとき自動的に有効になるStepです。

Transitions

StepとStep移行する条件。

Resetting of the IEC Action

TwinCATのAction部品には N/R/S/L/D/P/SD/DS/SLのようなAction qualifiersがあり、それらのQualifiersが該当するActionの実行状態を決めます。

その中にStoredというFlagがあり、一回実行するとリセットしない限り、そのActionはずっと実行になります(例えばStepが移行したとしても)

Executing exit actions

TwinCATがは毎CycleにすべてのStepがExit 動作の条件を満たすかをCheckします。Checkする順番は上から下左から右で、Stepが無効の状態に移行するとExit Actionが実行される。

Executing entry actions

TwinCATがは毎CycleにすべてのStepがEntry 動作の条件を満たすかをCheckします。Checkする順番は上から下左から右で、Stepが有効の状態に移行するとExit Actionが実行される。

Time Check, Executing step actions

  • TwinCATは有効になってるときStepが実行してる時間CountをStep変数 Step名.tに転送します。
  • SFCプログラムがイベントやTimeoutが発生すると、TwinCATは該当するエラーFlagを出力します。

Transition Check

TransitionがStep移行するために制御する部品でTrueになると次のStepに移行します。

Add SFC As Implement Language

では、Beckhoff TwinCAT3にSFC言語のPOUを追加してみましょう。

Implementation languageにStructured Text(ST)を選び、OKで追加します。

そしてSFC Editorが開き、中にDefault Init StepとTrueの横線が作成されています。TwinCATではその正方形のボックスを”Step”と呼び、横線は”Transitions”と呼び1セットになっています。もしStepだけTransitionsなしもしくはTransitionsがあってもStepなしどっちでもコンパイルエラーになります。

正方形のStepをクリックすると名前変更でき、注意するにはSFC プログラム内でStep名重

複してはいけません。

下図のInit StepでMustではないが、作成するとSFCプログラムが最初に呼び出しされたときアプリケーションにより内部変数に適切な値を与えることができます。

StepではIEC ActionとStep Actionが分かれており、今回のTutorialではその違いはまだ触れないようにします。情報量が多すぎると混乱しますので。

TwinCAT PLC SFC Toolbars

SFCプログラムを作成するには作業用のToolbarsが必要ですよね。View>Toolbars>TwinCAT PLC SFCをクリックします。

そのようなToolbarsが追加されます。


Your First SFC Program!

では早速プログラムを作ってみましょう!

うん…?そのままコンパイルするとエラーが出てきます。Identifier ‘Init_entry’ not definedのエラーメッセージですね。

InitのStepに”E”という文字がついてます。それはEntry ActionつまりStepが有効の立ち上げで実行する動作です。Eボタンをクリックします。

Duplication Modeを設定してくださいと言われます

今回のTutorialはとりあえず全部Copy Referenceにします。

次はAction名・実装言語を設定し、Addします。

SFCプログラム内でInit_entryのActionが追加されました。

Init_entryをクリックし、中の整数の変数を999にする簡単プログラムです。

プログラムをDownloadするとiCounter値は999になっています。

Opearate A Step

では実際にStepの細かい操作をしましょう。Step Boxを選び、Toolbarsに上矢印と下矢印のIconがあります。


Insert step-transition

上矢印のIconはInsert step-transition動作です。つまりいま選んでるStepの上にさらにStep+Transitionのセットを追加します。

このようにStepの上にさらにStep追加しました。

Insert step-transition after

下矢印のIconはInsert step-transition After動作です。つまりいま選んでるStepの下にさらにStep+Transitionのセットを追加します。

このようにStepの下にさらにStep追加しました。

Configure a Transitions

ではInit Stepの下にStepとTransitionsを1セットを追加します。次はTransitionsを設定します。

Trans0をクリックするとDuplication Modeの設定があります。

同じくCopy Referenceを選び、OKします。

Transitions名を追加し、Implementation languageをFBD作成してみましょう。

Trans0が追加されました。

Activate the TwinCAT PLC FBD/LD/IL Toolbars

TwinCATでFBD/LD/IL言語でプログラム作成するとき、Toolbarsを有効にしましょう。

View>Toolbars>TwinCAT FBD/LD/ILをクリックします。


Insert Empty box with EN/ENO

Empty Boxを追加します。Insert Empty Box with EN/ENOをクリックします。

このようにEN/ENO付きのBoxが追加されます。

Configure the condition

AND条件で簡単なロジックを組みます。

Trans0の成立条件はBoolでTrueやFalseだけで、OutはTrans0(つまりTransitions名)です。

よし、これでOKです。

Result

Trans0がFalseになってる状態を見てみましょう。

そうすると、いまSFC FlowはInit Stepに止まってて、Trans0がTrue成立なるまでずっと待ちます。そしてInit StepにT#14s790ms表示していますね。その時間は現在STEPの有効時間です。

では実際にTrans0の条件を成立させましょう。そうするはStep0のBoxが青色になりつまり状態はいまInitからStep0に移行しましたね。

Get Trans condition outside

もちろんTransitionsの状態はプログラムの外でも取得できます。

このようにTransitionsはPropertyのように直接アクセスできます。

Add Trans in another way

Transitionsはまだ他の追加方法があります。

SFCプログラムのところに右クリック>Add>Transitionします。

Transitions名を追加Implementation languageを選びます。今度はラダーにしますね。

また簡単なロジックを追加します。

最後にTransitionsのところに先に追加したTrans1を入力すればOKです。

Result

いまはSFC プログラムStep1で止まっててTrans1の成立条件を待っています。

Trans1の成立条件を整理してみます。

そうするとTrans1の横線が青い色になり、つまり成立してる状態ですね。

そしてInit Stepに戻るループです。

Configure a Jump

Step1の次に小さな矢印が見えますか。これはFlowのJump処理です。つまり別のStepに飛ぶことができます。

その”Init”をクリックします。

Input Assisantが出てきて選択できる変数が表示されます。ここでStep0選択します。

つまり、いまはStep1が完了すると、またStep0に戻るようなループです。

Operate An Entry/Exit Action

次はEntry とExit Actionの操作を説明します。

このようなICONからクリックするとStepにEntryやExit Actionの追加はできます。

Add entry action

先にも書きましたが、Entry Actionというのは、TwinCATが常にSFCプログラム内のすべてStepが”Entry 動作”に満たされてるかどうかをCheckします。そのCheckの順は上から下、左から右です。もし該当するStepが条件を満たしていれば、TwinCATは該当するStepのEntry Actionを実行します。TwinCATはEntry Actionを実行するには次のStepに移行するTransitions条件が成立し、そして次のStepが有効になる前のタイミングです。

ToolbarsでAdd entry actionボタンをクリックします。

Copy Referenceを選択しOKします。

Entry Action名とImplementation languageを入力しAddします。

そうするとStepの隣に”E”のアルファベットが表示されます。それはStep0がEntry Actionであることを示しています。

そしてEntry Actionをアプリケーションに合わせてプログラム作成しましょう。今回は検証するために本来Step Initで999だと初期化したiCounter変数を1引きます。

Add exit action

重複になりますが、Exit Actionというのは、TwinCATが常にSFCプログラム内のすべてStepが”Exit 動作”に満たされてるかどうかをCheckします。そのCheckの順は上から下、左から右です。TwinCATがExit Action実行するにはいまのStepが有効から無効に移行するときです。ToolbarsからAdd exit Actionボタンをクリックします。

Copy Referenceを選択しOKします。

Copy Referenceを選択しOKします。

そうするとStepの隣に”X”のアルファベットが表示されます。それはStep0がExot Actionであることを示しています。

そしてExit Actionをアプリケーションに合わせてプログラム作成しましょう。今回は整数変数を+1にします。

Result

Trans0とTrans1の条件はずっと成立の状態で一つの変数はずっと引く1で、もうひとつの変数はずっと1を足すようになっています。

Operate An Action in Step

ActionというのはSFCプログラム内Stepの状態により実行するプログラムだと思ってください。例えばEntry ActionはStepが有効になった瞬間に実行するプログラムで、Exit ActionはStepが無効になってる瞬間に実行します。

Add a Action

ToolbarsからAction追加するボタンがあります。

上矢印はいまのActionの上にさらにAction挿入します。

下矢印はいまのActionの下にAction追加します。

このようにStepのとなりにActionが追加されました。


Add Action Block

もう一つはAction Blockを追加する方法を紹介します。Stepをダブルクリックします。

Action名とImplementation languageを設定しAddで追加します。

Step0 のActionプログラムが追加されました。

次はStep0_Active内にアプリケーションを合わせてプログラム追加しましょう。


Available qualifiers


各StepにQualifiersを定義することができます、そのQualifiersはStepがどんなActionを実行するかを設定します。それらのqualifiersはFunction Block SFCActionControl に実装され、SFC plug-insと組み込まれています。なので、Userのわたしたちは自分からプログラムを組む必要がありません。

QualifiersStored?MeaningDescription
NNoStepが有効になっている限りActionを有効にします。
R0NoResetActionを無効にします。
S0YesSet(Stored)Stepが有効になるとActionを有効にします。例え別のStepが移行してもそのActionリセットしない限りずっと有効のままになります。
LNoTime LimitedStepが有効になっている、なおかつ指定時間が超えない限りActionを有効にします。そのQualifiersはL T#1sのように、時間の定数と一緒に定義します。
DNoTime DelayStepが有効になっていて、なおかつ指定の遅延時間を過ぎるとActionを有効にします。そのQualifiersはD T#1sのように、時間の定数と一緒に定義します。
PNoPulseStepが有効に移行するときと後続のサイクルの間に2回実行します。
SDYesStored and Time DelayedStepが有効に移行、なおかつ指定の遅延時間を過ぎるとActionを有効にします。そのQualifiersはSD T#1sのように、時間の定数と一緒に定義します。例え別のStepが移行してもそのActionリセットしない限りずっと有効のままになります。
DSYesDelayed and StoredStepが有効に移行、なおかつ指定の遅延時間を過ぎたあとStepまだ有効してるとActionを有効にします。そのQualifiersはDS T#1sのように、時間の定数と一緒に定義します。例え別のStepが移行してもそのActionリセットしない限りずっと有効のままになります。
SLYesStored and time limitedStepが有効になっている、なおかつ指定時間が超えない限りActionを有効にします。そのQualifiersはL T#1sのように、時間の定数と一緒に定義します。

N

Stepが有効になっている限りActionを有効にします。下図はStep0がOnしてるN Qualifiersがつけれます。

Step0が有効になってるとき、StepとActionも青色になり、bAction[0]がTrueになります。

そしてStep0からStep1に移行すると、bAction[0]がFalseになります。

L time Limited

Stepが有効になっている、なおかつ指定時間が超えない限りActionを有効にします。

そのQualifiersはL T#1sのように、時間の定数と一緒に定義します。

そのActionをクリックするとProperties画面が出ており、QualifierにValueを設定できます。

いまはL T#5s設定しています。つまりそのActionは5sまで実行します。

Step部品の隣にいま有効してる時間が表示されています。Step1が青になり、なおかつ有効時間が5s内なので、bActions[1]がTrueになります。

そしてStep1が青い色になって、有効時間が5sを超えるとbActions[1]がFalseになります。

R0 overriding Reset

Actionを無効にします。


SD Stored and time Delayed

Stepが有効に移行、なおかつ指定の遅延時間を過ぎるとActionを有効にします。

そのQualifiersはSD T#1sのように、時間の定数と一緒に定義します。例え別のStepが移行してもそのActionリセットしない限りずっと有効のままになります。

いまはStep1が青になり、でもStep1_ActiveというActionが有効になってません。それはSD T#5sのQualifierがつけられていますから。

そしてStep1が青い色になって、有効時間が5sを超えるとbActions[1]がTrueになります。

S0 Set(Stored)

Stepが有効になるとActionを有効にします。例え別のStepが移行してもそのActionリセットしない限りずっと有効のままになります。

いまStep1が有効になり、Step1_activeの動作がActiveされますね。

そして仮に次のStepに移行するとStep1_activeはまだ有効になったままです。それはR0 QualifierをStep1_active実行しないとStep1_activeがずっと有効になるということです。


D Delay

Stepが有効になっていて、なおかつ指定の遅延時間を過ぎるとActionを有効にします。

そのQualifiersはD T#1sのように、時間の定数と一緒に定義します。

いまStep1の経過時間はまだ設定の時間にすぎないのでStep1_activeが有効になっていません。

いまStepは設定してる時間が経過したので、Step1_activeが有効に変わります。

Summary

今回はSFCプログラムの基本操作を説明しました。次はIEC Actionと普通のAction・分岐制御・Step変数などを踏まえて行きたいと思います。

よろしくお願いします!

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

シェアする

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

フォローする