seigitech

SFCで工程制御を書く方法|ラダー図では難しい「順序制御」をシンプルに設計する

最終更新日 2026-06-03読了時間 約6対象:PLC設計を始めたエンジニア、工程制御を設計する生産技術担当者、ラダー図だけで書いて複雑になった経験のある設計者

この記事でわかること

PLCのSFC(Sequential Function Chart)を使った工程制御の書き方を解説。ラダー図との使い分け、ステップ・トランジション・アクションの基本、複数工程の設計パターンまで実務目線でまとめます。

1ラダー図で工程制御を書くと、なぜ読めなくなるのか

複数の工程を順番に実行する制御をラダー図で書くと、こうなりやすい。

  • M100(工程1完了フラグ)をセット
  • M100がONのときM101の条件を確認
  • M101がONのときY10を出力
  • M102がONになったらM103へ…

フラグが増えるにつれ、「どの工程が今動いているのか」がラダー図を見ただけでは分からなくなる。デバッグのたびにフラグを1つずつ追わなければならない。

SFC(Sequential Function Chart)は、この問題を「工程の流れを図で書く」ことで解決するプログラミング言語だ。


2SFCとは何か

SFCはIEC 61131-3で定められたPLCプログラミング言語の1つ。工程制御(順序制御)をフローチャートのように視覚的に記述できる

ラダー図・ST(構造化テキスト)と組み合わせて使うことが多い。

ラダー図が得意なこと
・並列した複数の出力制御
・インターロック条件の記述
・センサON/OFFの組み合わせロジック
・単純な有無検出・フィードバック制御
SFCが得意なこと
・工程を順番に実行する順序制御
・「STEP1が終わったらSTEP2へ」の流れ
・複数の並列工程の管理
・現在どの工程にいるかの可視化

3SFCの3つの要素

① ステップ(Step)

「今どの工程にいるか」を表す箱。1つのステップがアクティブになると、そのステップに定義されたアクションが実行される。

┌──────────┐
│  STEP 1  │  ← アクティブなステップ
│ シリンダ前進│
└──────────┘

② トランジション(Transition)

ステップからステップへ移る条件。条件が成立するとアクティブなステップが次のステップに移る。

──────[前進完了センサ ON]──────  ← トランジション(条件)

③ アクション(Action)

各ステップで実行する処理。ラダー図・STで記述する。

アクション修飾子 意味
N ステップがアクティブな間ずっと実行
S ステップ開始時に一度セット(次のステップでもONのまま)
R ステップ開始時にリセット
P ステップ開始時に一度だけ実行(パルス)

4基本的なSFC構造:搬送ラインの例

シリンダで部品を搬送し、センサで到着を確認してから次の工程に進む例。

[初期ステップ]
      |
      ├─[スタート条件 ON]
      ↓
[STEP 1: シリンダ前進]
  Action N: Y10(前進ソレノイド)ON
      |
      ├─[前進完了センサ X10 ON]
      ↓
[STEP 2: 作業待機]
  Action P: M200(作業完了フラグ)リセット
      |
      ├─[作業完了信号 X11 ON]
      ↓
[STEP 3: シリンダ後退]
  Action N: Y11(後退ソレノイド)ON
      |
      ├─[後退完了センサ X12 ON]
      ↓
[初期ステップへ戻る]

このSFCを見れば、「今どのステップにいるか」「次に進む条件は何か」が一目でわかる。ラダー図でフラグを追う必要がなくなる。


5よく使うSFCのパターン

パターン①:直列(シーケンス)

最も基本。工程を順番に実行する。

パターン②:選択分岐

条件によって異なる工程に進む。品種によって搬送先を変える場合など。

      ↓
[判断ステップ]
   /         \
[品種A条件] [品種B条件]
   ↓               ↓
[工程A]      [工程B]
   \         /
      ↓
[次の共通工程]

パターン③:並列実行

2つの工程を同時進行させ、両方完了したら次へ進む。

         ↓
 ════════════════  ← 並列開始(両方同時にアクティブ)
   ↓         ↓
[工程A]   [工程B]
   ↓         ↓
 ════════════════  ← 並列終了(両方完了で次へ)
         ↓

6よくある失敗パターン

パターン①:トランジション条件が成立しないままステップが止まる

シリンダ前進のステップで止まったまま次に進まない。「前進完了センサがONにならない」のが原因だが、SFCを見るだけでは「STEP1で止まっている」としかわからない。

対処:各ステップにタイムアウト処理を追加する。「X秒経っても完了しない場合はアラームを出す」処理を入れると、どのステップで止まっているかと原因が素早く特定できる。

パターン②:初期化されないまま再スタートした

異常停止→リセット→再スタートのとき、各ステップのアクションで出力したソレノイドが前回の状態のままになっていた。

SFCの各ステップ開始時に、前回のアクション出力を明示的にリセット(修飾子R)する処理を入れる。初期ステップで全出力をリセットする設計にすると安全だ。

パターン③:ラダー図の複雑なフラグ管理をSFCでもやってしまった

SFCを使い始めたが、各ステップ内でフラグを大量に立てて、ラダー図のときと同じ複雑さになった。

SFCのステップは「今何をしているか」をシンプルに表すのが原則。ステップ内のアクションは最小限にして、条件の判断はトランジションで行う。「1ステップ1動作」を意識する。


7三菱・オムロンでのSFC実装

メーカー 実装方法 ツール
三菱電機 SFC言語(GX Works2/3のSFC編集) GX Works3
オムロン SFC(Sysmac Studio) Sysmac Studio
キーエンス フローチャートラダー KV STUDIO

各社でSFCの表記・用語が若干異なるが、基本の考え方(ステップ・トランジション・アクション)は共通だ。


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

  • 現場・保全担当へ:「SFCを使うと、今どの工程にいるかがPLCの画面で見えます。止まったときの原因特定が早くなります」
  • メーカーへ:「工程制御部分はSFCで記述してください。各ステップにタイムアウトアラームを入れること、初期ステップで全出力をリセットすることを仕様に含めます」
  • 上司へ:「ラダー図だけで順序制御を書くと保守が難しくなります。SFCを使うと工程の流れが図で見えるので、担当者が変わっても読めるプログラムになります」

9まとめ

SFCは「工程の流れを図で書く」プログラミング言語だ。ラダー図が苦手な順序制御をシンプルに記述できる。

基本はステップ(今の工程)・トランジション(次に進む条件)・アクション(その工程でやること)の3要素。タイムアウト処理と初期化処理を最初から組み込む設計にすることで、デバッグと保全のしやすいプログラムになる。


10関連記事

👷

この記事の執筆者

seigitech 編集部

生産技術・機械設計・自動化・MES・AIを専門とする実務エンジニア集団。 現場での実務経験をもとに、すぐに使える知識とノウハウを整理・発信しています。