ラダー図の工程管理をSFCで整理する

ラダー図でも順序制御は書ける。ただし、工程フラグの役割や解除条件が整理されていないと、現在位置を追いにくくなる。例えば、M100を工程1完了、M101を次の許可条件、Y10を出力として使うなら、各信号の意味と更新する場所を決めておく必要がある。

SFC(Sequential Function Chart)は、工程の状態と次へ移る条件を図で整理する方法だ。 ラダー図やSTと組み合わせ、状態の管理と個々の処理を分担させる。SFCを選ぶだけで複雑さが消えるわけではなく、信号の寿命、停止、復帰も設計する。


SFCとは何か

SFCでは、工程制御の流れをステップとトランジションで表す。「SFC言語」という実務上の呼び方もあるが、IEC 61131-3:2025の公式概要では、ST・LD・FBDの言語群に加え、プログラムやファンクションブロックの内部を構造化する要素としてSFCを説明している。ここではその概要とメーカー資料の範囲で解説し、規格本文の逐条解説は行わない。

ラダー図で整理する例
・入力信号の組み合わせ
・出力の許可・禁止条件
・機器ごとの動作ロジック
・工程状態を使った条件判定
SFCで整理する例
・工程を順番に進める流れ
・次工程へ移る条件
・複数の並列工程と合流
・現在の工程状態の可視化

これは役割分担の例であり、ラダー図では工程管理ができないという区分ではない。また、通常の工程制御と、人を保護する安全機能の成立は別に確認する。

SFCの3つの基本要素

① ステップ(Step)

「今どの工程にいるか」を表す。活性(アクティブ)なステップに関連付けたアクションは、その形式と修飾子に従って実行される。ステップの活性状態、アクションの実行、物理出力のON/OFFは区別して読む。

[S1: 前進工程]
  処理: 前進を要求する

② トランジション(Transition)

次のステップへ移る条件を表す。直前のステップが活性で、移行条件が成立したときに進む。後退端の確認を「前進を始める条件」に使う場合でも、動き始めた後まで後退端ONを要求するとは限らない。開始条件、動作中に維持する条件、完了条件を分けて定義する。

[S1: 前進工程]
        |
  [前進完了を確認]
        |
        v
[S2: 作業準備]

③ アクション(Action)

ステップに関連付ける処理。以下は CODESYSのIECアクション に限定した説明で、他社PLCへの共通命令表ではない。アクション本体の処理と、BOOL変数を直接関連付ける形式も区別する。

修飾子 CODESYSでのアクション制御の概要
N ステップが活性な間、アクションを実行する
S ステップの非活性化後も実行を継続し、Rで解除されるまで保持する。開始時の1回実行ではない
R 対象のアクションを非活性化する。任意の内部変数や全物理出力を一括で消去する意味ではない
P ステップの活性化時と非活性化時に実行する。入口だけの1回実行ではない

修飾子の公式説明と実行順序には、IECアクションの非活性化時の実行も説明されている。N/Sなどの本体が周期ごとに実行されることと、非活性化時の追加実行を混同しない。

CODESYSの Step Entry/Main/Exitアクションは別の形式 で、MainにはIECアクション修飾子を付けない。入口だけの処理が必要ならEntryなど採用環境の機構を確認する。アクション形式の説明を参照し、別形式の例へN/S/R/Pをそのまま移さない。

アクションが終了しても、本体が書いた変数の値や実機の状態まで一律に初期化されるわけではない。例えば、オムロンのCX-Programmer用SFCマニュアル(W469-E1-10、2022年10月、本文p.7)は、指定ビット、ラダー、STで非活性化時の出力リセットを区別している。ラダーは既定でリセットする設定を変更でき、STは同じ自動リセットにはならない。公式マニュアル


基本的なSFCの書き方:搬送工程の概念例

部品を前進させ、相手機器の作業完了を待って後退する例を考える。以下は状態と信号の関係を説明する概念例であり、そのままPLCへ入力する命令や、機種共通の弁回路ではない。

この例では、前進位置で作業する間も「前進・保持要求」が必要だと仮定する。S1を出た途端にその要求を消してよいとはしない。前進・後退要求を実際のソレノイドやブレーキへ割り付ける方法は、採用する弁、負荷、保持機構で決める。位置センサONだけで、人の安全や保持能力を証明したことにはならない。

相手機器とは「作業要求」と「作業完了」を別信号で受け渡す。この例の取り決めは、要求OFFで相手が完了をOFFに戻し、新しい要求ONを受理した後、今回の作業が終わったら完了ONを保持する方式とする。要求を下げるまで完了を保持し、短いパルスの見落としを避ける。実機では、この受け渡し方式と各信号の更新元を双方の仕様で合意する。

状態 その状態での要求・確認 次へ進む条件
S0:開始待ち 作業要求OFF。開始位置、必要な保持状態、運転許可を確認 スタート操作を一度解除した後の新しい開始要求があり、開始条件が成立
S1:前進 前進要求。継続すべき許可条件を監視 前進位置への到着を確認
S2:作業準備 前進・保持要求を継続。作業要求はまだOFF 相手機器の作業完了がOFFで、今回の要求を受けられる状態と確認
S3:作業待ち 前進・保持要求を継続。作業要求ON 今回の要求に対する作業完了ONを確認
S4:後退 作業要求OFF。作業終了後に後退してよい条件を確認し、前進要求を解除して後退要求 後退位置を確認したらS0へ。次の開始には改めて開始条件と新しい操作が必要
S0 -> S1 -> S2 -> S3 -> S4 -> S0

例えば内部フラグM200をリセットしても、相手機器が更新する入力X11をOFFにはできない。内部の今回完了記録と外部の作業完了入力を分け、前周期の完了ONをそのまま次周期の完了に使わない。上の例ではS2で前回分のOFF復帰を確認してから要求を出す。相手がこの方式に対応しない場合は、受理応答や周期番号などを含めて方式を設計し直す。

前進と後退の同時要求は禁止し、実出力へ反映する前の許可・相互禁止条件も設ける。前進端の喪失、相手異常、完了待ちの時間超過などは、次ステップへ強制的に進めず異常経路へ移す。その際の停止・保持方法と復帰条件は、後述の機械状態の確認と合わせて決める。

この例のS0は「すべての出力がOFF」の意味ではない。初回起動時や異常後に物理的な開始位置へ戻す操作も、S0へ番号を戻すだけでは成立しない。

複数工程を管理するパターン

パターン①:単純な順次実行

前工程の完了を確認して次へ進む。各工程で、開始、継続、完了、異常の条件を対応させる。

[供給] -> [加工] -> [検査] -> [排出]

パターン②:選択分岐

検査結果などに応じて、進む枝を選ぶ。良品・不良品の条件を重複させない、結果未確定では進まない、といった扱いを決める。

           [検査完了]
               |
       +-------+-------+
       |               |
     [良品]          [不良品]
       |               |
    [次工程]         [分別工程]

CODESYSの選択分岐は左から条件を評価し、最初に成立した枝へ進む。これは同製品の規則であり、図の見た目だけで全製品の優先順位を決めない。両条件成立時や未成立時の仕様を記録する。実行順序の公式説明

パターン③:並列実行

複数の枝を進め、合流地点で両方の完了を待つ。次の図の「完了待ち」は、各枝の作業が終わって到達する末尾ステップを表す。

           [並列開始]
               |
       +=======+=======+
       |               |
     [工程A]         [工程B]
       |               |
    [A完了待ち]    [B完了待ち]
       |               |
       +=======+=======+
               |
          [合流条件成立]
               |
           [次の工程]

CODESYSでは各枝の末尾ステップがすべて活性になり、合流後のトランジションも成立すると次へ進む。並列とは工程の進行を並べる意味で、物理出力が厳密に同じ時刻に変わる保証ではない。片方の異常や時間超過で他方をどう止めるかも、別に決める。


停止・復帰で確認すること

① タイムアウトは未成立条件を探す入口

前進完了を待つステップが進まない例では、センサ、配線、動作要求、機械的な障害などを分けて調べる。タイムアウトで分かるのは、設定時間内に期待した移行が成立しなかったことだ。アラームだけで根本原因が確定するわけではない。

許容時間は動作仕様と実測に基づいて決め、ステップID、経過時間、未成立の条件、入力・要求・実出力の観測を記録する。CODESYSのステップ監視も、必要な監視設定とSFCフラグの宣言・有効化が前提になる。SFCフラグの公式説明

② 工程の初期化と安全な復帰を分ける

異常後に工程番号だけを初期値へ戻すと、保持したアクション、変数、相手機器の完了信号、実際の位置が食い違う可能性がある。初期化する対象と順序を定義する必要があるが、全出力OFFを安全状態の代わりにはできない。

分けて確認する対象 確認する内容
工程状態と変数 活性ステップ、保持アクション、タイマ、今回完了記録などの初期値と解除方法
実出力と機械状態 弁・ブレーキ・把持の励磁/非励磁時の状態、位置、荷重、残圧、必要な保持手段
安全機能 リスクアセスメントで必要な機能、停止・保持の要求、リセットの条件と検証担当
運転再開 異常原因の処置、機械の復帰条件、相手機器との整合、周囲の確認、別の意図的な開始操作

例えば、重力による移動を防ぐ保持が必要な機構では、出力を消す処理より先に、停止状態を何で維持するかを決める。空圧も、電気出力OFFと残圧除去は同じではない。厚生労働省「機械の包括的な安全基準に関する指針」別表第3・第4は、蓄積・位置エネルギーによる動作への保持、動力源の遮断と残留エネルギーの処置、非常停止解除だけで再起動しないことを分けて示している。

通常SFCの初期化処理だけで、これらの安全機能が成立したことにはならない。異常停止後は、設備ごとに定めた方法で停止・保持を成立させ、必要な安全確認と復帰操作を行い、再開許可が整ってから別の開始操作へ進む。具体的な弁、ブレーキ、負荷を選定していないこの概念例では、安全な実出力の組み合わせは確定していない。

また、CODESYSのSFCInitがTRUEの間は、初期ステップが活性でもアクションは実行されない。SFCResetとは実行の扱いが異なるため、「初期ステップに解除処理を書いたから必ず実行される」と考えず、使用する初期化機構とタイミングを確認する。SFCInit/SFCResetの仕様

③ ステップの役割を明確にする

「1ステップ1動作」は、分かりやすく分割する目安として使える。ただし、協調動作や位置保持のために複数の要求を同時に扱う場合まで禁止するルールではない。各ステップの目的、継続する出力要求、終了時の扱いを明記し、他の処理から同じ変数を書き換える場合は書込み主体と順序も整理する。

実装前に確認するCPUとツール

メーカー名だけでSFCの対応や動作を判断しない。以下は参照資料で確認した範囲であり、同社の全製品・全版の対応表ではない。

対象 確認した範囲と注意点
三菱電機 FX5U/FX5UC CPUファームウェア1.220以降、かつGX Works3 1.070Y以降でSFCに対応
三菱電機 FX5UJ/FX5S FX5UJはCPUファームウェア1.050以降、FX5Sは1.010以降。いずれもGX Works3 1.095Z以降が必要
三菱電機 GX Works2 公式FAQの「構造化プロジェクト」の対応言語にはSFCを含む。ただし同じFAQはFXCPUの構造化プロジェクトでラダーとSFCが非対応とする。これを全プロジェクト形式の制約へ広げない
オムロン CJ2H/CJ2MとCX-Programmer CX-Programmer Ver.9系のSFCマニュアルW469-E1-10は、対応表にCJ2H/CJ2Mのユニットバージョン1.0以降を掲載。実際のCPU型式も同表で照合する
オムロン NX502とSysmac Studio NX502公式仕様のプログラミング言語はLD・ST。Sysmac Studioの仕様もラダー・ST・インラインSTを説明しており、この組合せを無条件にSFCエディタとして案内しない
キーエンス KV-XH16ML/KV-XH04ML 専用モーションユニットの仕様に、ユニットプログラム「フロー」を掲載。KV-XH16MLにはC言語もある。一般CPUの汎用SFCや、このページのN/S/R/Pと同一の機能とは扱わない

三菱の版条件は公式カタログL(名)08394-Q(2024年12月)、p.82・188とFX5の公式FAQ、GX Works2の区分は構造化プロジェクトの公式FAQによる。オムロンはW469-E1-10の本文p.6–7、NX502仕様、Sysmac Studio仕様を参照した。キーエンスはKV-8000関連ユニットの仕様表の対象行を参照する。

専用フローの最小ソフト版や、他社との修飾子の互換性はこの比較では確認していない。採用時には対象CPU・ユニット、ツール版、プロジェクト形式、出力リセット設定を特定し、その環境のマニュアルで設計・試験する。ラダーやSTで順序制御を構成できることと、SFCエディタを備えることも別の条件だ。

社内で説明するときの言い方

  • 現場・保全担当へ:「活性ステップと未成立条件から、止まっている工程を調べます。アラーム表示と実機の観測を分けて記録し、原因を確かめます」
  • メーカーへ:「対象CPU・ツール版を確認して工程の記述方式を決めます。開始・継続・完了・異常条件と、停止・保持・復帰の仕様を対応させ、期待状態と試験結果を提出してください」
  • 上司へ:「工程の流れを図で共有できるようにします。既存設備との整合、保全担当者の習熟、採用ツールの対応を含めて記述方式を選びます」

設計レビューでは、例えば「S2の前進保持要求」を条件IDと対象プログラム版に結び付け、通常時の期待状態、異常時の保持要求、関連する安全要求、試験で観測した結果、未確認事項と担当を記録する。通常動作が通っただけで安全機能の検証済みとはしない。

関連記事

まとめ

SFCは工程状態と移行条件を共有するために使う。採用するアクション形式と修飾子の動作を確認し、前工程から継続する要求、完了信号の更新元、異常時の停止・保持・再開条件までそろえる。工程の初期化、物理的な機械状態、安全機能の確認を分けることが、実装前の設計レビューにつながる。