SFC(シーケンシャル・ファンクション・チャート)言語とは、PLCを制御するための5種類の言語の1つとしてPLC用標準規格:IEC 61131-3に定義されているプログラミング言語です。
SFC言語(以下:SFC)は処理を実行する順序をフローチャートのような図で表すことから「一連動作に適した言語」として知られています。
三菱電機製シーケンサFXシリーズでは、SFCによるシーケンス制御が可能です。
SFCによる基本的な一連動作の作成方法については以下のページで解説しております。
【SFC】基本的な一連動作の作成方法↑の記事では、一連動作中に分岐などの処理をせずに工程を1ヶずつ行う仕様でした。今回は一連動作に「条件により分岐する処理」を追加します。
この記事では、GX Works2を用いて一連動作に分岐処理を追加したSFCについて解説します。
目次
1. 基となるSFCの内容
今回作成するSFCに触れる前に、基となるSFCについて解説します。
一連動作の仕様
一連動作の仕様は以下のようになります。
待機中にスイッチ(緑)を押すと、下記の一連動作を行う。
<一連動作>
ランプ(緑)点灯 ⇒ ランプ(赤)点灯 ⇒ ランプ(青)点灯 ⇒ ランプ(黄)点灯
各々の点灯時間は1秒間とする。
一連動作が終了すると、待機中に戻る。
至って単純な一連動作です。この仕様では一連動作が終了すると、繰り返し処理を行わずに終了します。(ずーっとスイッチ(緑)を押していれば繰り返しますが…)
状態遷移図
一連動作の状態遷移図は以下のようになります。
アドレスマップ
スイッチ・ランプのアドレスマップは以下のようになります。
ランプ(緑):Y0
ランプ(赤):Y1
ランプ(青):Y2
ランプ(黄):Y3
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
使用していないデバイスが多々ありますが、ご了承ください。
SFCプログラム
SFCのプログラムは以下のようになります。(GIF)
SFCプログラムは、上記のようなSFCブロックを起動するため、別にラダーブロックが必要になります。以下がラダーブロックです。
長くなりましたが、以上の基となるSFCについての解説です。記事冒頭でも紹介しましたが、このSFCの作成方法は以下のページで解説しております。
【SFC】基本的な一連動作の作成方法2. 一連動作の途中で条件分岐するSFC
それでは、一連動作の途中で条件分岐するSFCについて解説します。
一連動作の仕様(条件分岐あり)
一連動作の仕様は以下のようになります。
待機中にスイッチ(緑)を押すと、下記の一連動作を行う。
<一連動作>
ランプ(緑)点灯 ⇒ ランプ(赤)点灯 ⇒ ランプ(青)点灯 ⇒ ランプ(黄)点灯
各々の点灯時間は1秒間とする。
一連動作中「ランプ(赤)点灯後」に、スイッチ(青)が押されていればランプ(青)のみでなく全色点灯する。
一連動作中にスイッチ(青)の状態により「ランプ(青)のみ点灯させるか」と「全色点灯させるか」を条件分岐します。
状態遷移図
条件分岐の処理がある一連動作の状態遷移図は以下のようになります。
ランプ(赤)が点灯した後、スイッチ(青)の状態により第3工程が①と②の2ヶのうち、いずれか1ヶが実行されます。
このいずれか1ヶが実行されることを選択分岐と表現します。
アドレスマップ
スイッチ(青):X2
ランプ(緑):Y0
ランプ(赤):Y1
ランプ(青):Y2
ランプ(黄):Y3
スイッチ(青)はX2としています。
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
ランプ(赤)が点灯後、スイッチ(青)がOFFであれば「ランプ(青)のみ点灯」して、ONであれば「ランプ(全色)が点灯」します。
SFCプログラム(SFCブロック)
プログラムのSFCブロックは以下のようになります。
ランプ(全色)を点灯するためのトランジション5,6とステップ14を追加しました。
Zoomは以下のようになります。
【ステップ0】待機中にランプ(緑)点滅のラダープログラム
M8013は三菱電機FXシリーズの特殊デバイスで、1秒周期でON/OFFが切り替わるデバイスです。
【トランジション0】待機中にスイッチ(緑)を押すと一連動作を開始するラダープログラム
TRAN命令はSFC特有の命令です。TRAN命令をONさせることによりトランジションが実行されて次のステップに遷移します。
【ステップ10】ランプ(緑)を1秒間点灯するラダープログラム
【トランジション1】ランプ(緑)が1秒間点灯後にトランジション
【ステップ11】ランプ(赤)を1秒間点灯するラダープログラム
【トランジション2】ランプ(赤)が1秒間点灯後にスイッチ(青)がOFFのトランジション
ランプ(赤)点灯後にスイッチ(青)がOFFしていた場合にステップ12を実行するための条件です。
【ステップ12】ランプ(青)を1秒間点灯するラダープログラム
トランジション2にて選択分岐したステップです。
【トランジション3】ランプ(青)が1秒間点灯後にトランジション
【ステップ13】ランプ(黄)を1秒間点灯するラダープログラム
【トランジション4】ランプ(黄)が1秒間点灯後にトランジション
セレクタスイッチ(白)がONだと、ステップ10にジャンプします。※ステップ10は一連動作の最初です。
【トランジション5】 ランプ(赤)が1秒間点灯後にスイッチ(青)がONのトランジション
ランプ(赤)点灯後にスイッチ(青)がONしていた場合にステップ14を実行するための条件です。
【ステップ14】ランプ(全色)を1秒間点灯するラダープログラム
トランジション5にて選択分岐したステップです。
【トランジション6】ランプ(全色)が1秒間点灯後にトランジション
SFCプログラム(ラダーブロック)
プログラムのラダーブロックは以下のようになります。
先ほどのSFCを実行させるためにイニシャルステートをラダーブロックでONさせるためのものです。
M8002は三菱電機FXシリーズの特殊デバイスで、STOP→RUN時に1スキャンのみONするデバイスです。
3. おわりに
条件分岐があるSFCについて解説しました。
複数の条件のうち、1ヶのみ選択して実行することを選択分岐といい、この記事で解説しましたが、よく似たもので複数の処理を並行して行うことがあります。この並行して行う処理を並列分岐と呼びます。