SFC(シーケンシャル・ファンクション・チャート)言語とは、PLCを制御するための5種類の言語の1つとしてPLC用標準規格:IEC 61131-3に定義されているプログラミング言語です。
SFC言語(以下:SFC)は処理を実行する順序をフローチャートのような図で表すことから「一連動作に適した言語」として知られています。
日本国内ではあまり使用されていませんが、欧州では広く使用されているそうです。
三菱電機製シーケンサFXシリーズでは、SFCによるシーケンス制御が可能です。
SFCはラダープログラムと比較すると歴史が浅く「ラダーで一連動作を組めるがSFCは使用したことが無い」といった方が多いかと思います。
この記事では、GX Works2を用いて簡単な一連動作をSFCで作成する手順を解説します。
「SFCに興味があるが、参考になるものが少なく今まで手が出せなかった」という方に少しでもSFCについて知っていただければ幸甚です。
目次
1. 作成するSFCの内容
今回作成するSFCの内容な以下のようになります。
一連動作の仕様
一連動作の仕様は以下のようになります。
待機中にスイッチ(緑)を押すと、下記の一連動作を行う。
<一連動作>
ランプ(緑)点灯 ⇒ ランプ(赤)点灯 ⇒ ランプ(青)点灯 ⇒ ランプ(黄)点灯
各々の点灯時間は1秒間とする。
一連動作が終了すると、待機中に戻る。
ごく簡単な一連動作です。今回はこの仕様をSFCで作成します。
アドレスマップ
スイッチ・ランプのアドレスマップは以下のようになります。
ランプ(緑):Y0
ランプ(赤):Y1
ランプ(青):Y2
ランプ(黄):Y3
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
使用していないデバイスが多々ありますが、ご了承ください。
2. 状態遷移図で動作を確認
SFCで一連動作を作成する前に、状態遷移図と呼ばれるもので一連動作を整理します。
フローチャートのように、上から順々に実行していきます。
オレンジ枠で囲われたものが、実際に実行する内容です。
十字で書かれたものが、トランジションと呼ばれる「次工程に遷移するための条件」です。
3. SFC作成方法(GX Works2)
それでは、上記のSFCをGX Works2で作成します。使用するシーケンサはFX3Gです。
プロジェクトの作成
1.メニューバーのプロジェクト(P) ⇒ 新規作成(N)…をクリックします。
2.新規作成のウィンドウが表示されるので以下のように設定します。
- シリーズ(S):FXCPU
- 機種(T):FX3G/FX3GC
- プロジェクト種別(P):シンプルプロジェクト
- プログラム言語(G):SFC
設定が完了したらOKをクリックします。
3.続いて、ブロック情報設定のウィンドウが表示されるので以下のように設定します。
- タイトル(T):起動回路
- ブロック種別(B):ラダーブロック
設定が完了したら実行(E)をクリックします。
4.ラダーブロックが作成されました。
これが一体何なのか、後ほど解説します。
5.SFCブロックを追加します。ナビゲーションウィンドウのMAINを右クリックしてデータ新規作成(A)…をクリックします。
6.データ新規作成のウィンドウが表示されるので以下のように設定します。
- データ型(D):プログラム
- データ名(N):Block1
- プログラム言語(L):SFC
設定が完了したらOKをクリックします。
7.ブロック情報設定のウィンドウが表示されるので以下のように設定します。
- タイトル(T):一連動作
- プログラム種別(B):SFCブロック
設定が完了したら実行(E)をクリックします。
8.SFCブロックが作成されました。
このSFCブロックに一連動作のSFCプロブラムを作成していきます。
SFCブロックの作成
1.ナビゲーションウィンドウの「001:Block1 一連動作」をダブルクリックします。
2.プロジェクトのプログラム言語をSFCにすると、ウィンドウが以下のように2ヶに分かれます。
上図の赤色枠がSFC図、水色枠がZoomと呼ばれるウィンドウです。
SFC図には一連動作となるSFCを作成して、Zoomには各々実行するラダープログラムを作成するイメージです。
SFC図で一連動作の作成
1.【ステップ0】SFC図の行数1、列数1にカーソルを合わせてダブルクリックします。(Enterキーを押してもOKです)
SFC記号入力のウィンドウで以下の設定をします。
- 図記号:STEP/0
- コメント(C):待機中
このステップ(STEP)では、ランプ点灯/点滅やタイマコイルの起動など出力処理を行います。設定が完了したらOKをクリックします。
2.【トランジション0】SFC図の行数2、列数1にカーソルを合わせてダブルクリックします。
- 図記号:TR/0
このトランジション(TR)では、次のステップに遷移するための条件を作成します。
3.同じ要領で以下のようにSFC図にステップとトランジションを作成していきます。
- 図記号:STEP/10
- コメント(C):ランプ(緑)点灯
- 図記号:TR/1
- 図記号:STEP/11
- コメント(C):ランプ(赤)点灯
- 図記号:TR/2
- 図記号:STEP/12
- コメント(C):ランプ(青)点灯
- 図記号:TR/3
- 図記号:STEP/13
- コメント(C):ランプ(黄)点灯
- 図記号:TR/4
4.【ジャンプ0】SFC図の行数16、列数1にカーソルを合わせてダブルクリックします。
- 図記号:JUMP/0
このジャンプ(JUMP)では、指定したステップに直接ジャンプするための命令です。
今回は「ステップ0」にジャンプします。つまり、一連動作が終了した時点で「待機中」に戻ります。
5.作成したSFC図は以下のようになります。
ここまでは「あくまで一連動作の流れを記述しただけ」です。ランプの点灯などの各々の処理は次項のZoomで作成します。
そして、各ステップやトランジションに「?マーク」が付いています。これは「SFC図は作成したけど、その内容が記述されていない」状態ですので、現時点で間違っている訳ではありません。
Zoomで処理内容を作成
それでは、Zoomで各々の処理内容を記述していきます。
例えば、ステップ0の処理内容を記述する場合、SFC図の行数1、列数1にカーソルを合わせると右側のZoomウィンドウに編集することができます。
1.【ステップ0】待機中にランプ(緑)点滅のラダープログラム
画像が細かくなってしまうので、以降ラダープログラムのみ記載します。
M8013は三菱電機FXシリーズの特殊デバイスで、1秒周期でON/OFFが切り替わるデバイスです。
2.【トランジション0】待機中にスイッチ(緑)を押すと一連動作を開始するラダープログラム
TRAN命令はSFC特有の命令です。TRAN命令をONさせることによりトランジションが実行されて次のステップに遷移します。
3.【ステップ10】ランプ(緑)を1秒間点灯するラダープログラム
SFCに慣れていないと疑問が幾つかあると思います。
「入力条件の接点が何もないけど…」と思うかもしれませんが問題ありません。出力をそのまま左側の母線に繋げてOKです。
「ステップ0でもY0を使用したからダブルコイルでは…?」これもOKです。ステップ10を実行しているとき、他のステップは”不実行”となる為、同じコイルであっても他のステップであれば使用することができます。
4.【トランジション1】ランプ(緑)が1秒間点灯後にトランジション
5.【ステップ11】ランプ(赤)を1秒間点灯するラダープログラム
6.【トランジション2】ランプ(赤)が1秒間点灯後にトランジション
7.【ステップ12】ランプ(青)を1秒間点灯するラダープログラム
8.【トランジション3】ランプ(青)が1秒間点灯後にトランジション
9.【ステップ13】ランプ(黄)を1秒間点灯するラダープログラム
10.【トランジション4】ランプ(黄)が1秒間点灯後にトランジション
以上でZoomの作成は完了です。
少し細かいGifですが、作成したSFC図とZoomは以下のようになります。
各ステップやトランジションの「?マーク」が消えました。
「やっと完成したか…」と思ったもしれませんが、もう少し作成しなければならないことがあります。
SFCプログラムを実行するための回路をラダーブロックで作成する必要があります。
ラダーブロックで、「イニシャルステート」をONすることで、このSFCが初めて実行されます。「イニシャルステート」とは先頭のステップの番号で、今回は”0”です。
次項で、ラダーブロックでイニシャルステートをONさせるラダープログラムを作成します。
ラダーブロックでイニシャルステートのON
前述した通り、SFCを実行するためにはイニシャルステートをラダーブロックでONさせる必要があります。
今回のイニシャルステートの番号は”0”になります。そして、ステートとは”S”で表現されるデバイスです。(SFCを使用しないとあまり馴染みがないかと思います。)
つまり今回は、ステートリレーS0をラダーブロックでONさせる必要があり、S0がONすると先ほど作成したSFCが起動する流れになります。
1.ナビゲーションウィンドウの「000:Block 起動回路」をダブルクリックします。
2.ステートリレーS0をONするラダープログラムを作成します。
M8002は三菱電機FXシリーズの特殊デバイスで、STOP→RUN時に1スキャンのみONするデバイスです。
これでプログラムの作成は以上になります。
プログラムを変換
作成したプログラムを変換します。変換はF4キー、またはメニューバーの変換/コンパイル(C) → 変換(B)をクリックします。
正常に変換することが出来れば、シーケンサに書込みを行います。
4. 動作確認
それでは、シーケンサとGOTを用いて動作確認をします。※今回はPC上でシミュレーション機能を用いて解説します。
以下がGT Simulator3で動作確認した様子です。
その時のSFCは以下のように実行しています。
仕様通りに動作しました!
5. おわりに
SFCで基本的な一連動作の作成方法について解説しました。
記事にしてみたら、とても長くなってしまいました…。これからもSFCについて勉強しながら色々と解説していきたいと思います。
最後までご覧いただきありがとうございました。
SFCは古いイメージがあります。
現在でも使用されているのでしょうか。
因みに私の知人、同僚に聞いても使用されている方がおりません。
私の周りでは使用している方がいますがごく少数ですね。
国内より海外で多いと聞いたことがあります。
はじめましてこんにちは
SFCと普通のラダーの混合は可能でしょうか?
最初にステップを踏んでから、機械を稼働させたいです。
またSFCの場合は、電源OFFにした場合は1に戻るのでしょうか?
ご教授お願い致します。