工程歩進(ステップシーケンス)ラダーの作り方|Mデバイスで工程を進める定番構造

自動運転のプログラムは、突き詰めると「工程を順番に進める」こと

クランプして、前進して、加工して、後退して、アンクランプする——自動機のプログラムは、どんなに複雑に見えても、突き詰めれば「決められた動作を決められた順番で進める」ことの繰り返しです。そして、この「順番に進める」を表現するラダーの定番の型が工程歩進(ステップシーケンス)です。

この型が優れているのは、書きやすいからだけではありません。多くの現場のラダーがこの型で書かれているため、型を知っていると他人のプログラムが読めるようになるのです。既設設備の改造やトラブル対応で先輩のラダーを開いたとき、「あ、これは工程歩進だな」と分かれば、初見のプログラムでも構造の見当がつきます。逆にこの型を知らないと、大量のMデバイスが並んだ回路の意図がまったく読めません。

この記事では、工程歩進の基本形をテキストの擬似ラダーで示しながら、なぜこの型が強いのか、実務でどう組み込むのか、そしてよくある失敗までを整理します。前提として自己保持回路の理解が必要なので、不安があれば先に自己保持回路の基本形を読んでみてください。

工程歩進とは — 動作を分解して、工程ごとにMデバイスを1つ割り当てる

工程歩進の考え方はシンプルです。まず、設備の一連の動作を「工程」に分解します。

  • 工程1:ワークをクランプする
  • 工程2:スライドを前進させる
  • 工程3:加工する
  • 工程4:スライドを後退させる
  • 工程5:アンクランプする

そして、各工程に内部リレー(M)を1つずつ割り当てます。たとえば工程1にM10、工程2にM11、工程3にM12……という具合です。運転中は「いま実行中の工程のMだけがONしている」状態を保ち、工程が完了するたびに、ONしているMを次の番号へ渡していきます。バトンリレーのイメージです。

つまり工程歩進のラダーが表現しているのは、「いま設備はどの工程にいるのか」という状態そのものです。M10がONなら設備はクランプ中、M12がONなら加工中。モニタでMの並びを見れば、設備の現在地が一目で分かる——これが後述するこの型の強さのすべての源泉になります。

基本形 — 「前工程×完了条件で立てて、次工程が立ったら切る」

各工程Mの回路は、すべて同じパターンで書けます。ルールは2つだけです。

  • 立てる条件:前工程のMがONしていて、かつその工程の完了条件(センサ入力など)が成立したら、次工程のMをSETする(または自己保持で立てる)
  • 切る条件:次工程のMが立ったら、自分のMをRSTする(または保持を解除する)

SET/RSTで書くと、工程1→2→3の受け渡しはこうなります(X0=スタートボタン、X1=クランプ完了センサ、X2=前進端センサとします)。

── 起動:工程1を立てる ──
──[ M0 ]──[ X0 ]──────────( SET M10 )   自動運転中×スタートで工程1開始

── 工程1 → 工程2 の受け渡し ──
──[ M10 ]──[ X1 ]──┬──────( SET M11 )   クランプ完了で次工程を立てる
                   └──────( RST M10 )   同時に自工程を切る

── 工程2 → 工程3 の受け渡し ──
──[ M11 ]──[ X2 ]──┬──────( SET M12 )   前進端到達で次工程を立てる
                   └──────( RST M11 )   同時に自工程を切る

命令語で書けば「LD M10、AND X1、SET M11、RST M10」という、ごく基本的な命令だけの組み合わせです。この同じ形を工程の数だけ縦に並べれば、何工程あっても構造は変わりません。

自己保持で書く流儀もあります。この場合、「次工程のMのb接点」を保持の解除条件に入れるのが定石です。

── 工程1(自己保持版) ──
──[ M0 ]──[ X0 ]──┬──[/M11 ]──( OUT M10 )   次工程M11が立ったら保持が切れる
──[ M10 ]─────────┘

SET/RST方式と自己保持方式のどちらを使うかは現場の流儀によりますが、1つのプログラムの中では方式を統一するのが作法です。OUTとSET/RSTそれぞれの性質と使い分けはOUT・SET・RSTの使い分けで整理しているので、迷う場合はそちらを参照してください。

なぜこの型が強いのか — 現場で選ばれ続ける3つの理由

工程歩進が多くの現場で定番になっているのには、明確な実務上の理由があります。

(a) どこで止まったかが一目で分かる

設備がチョコ停したとき、モニタで工程Mの並びを見れば、ONしているMがそのまま「止まっている工程」です。M11がONのまま進まないなら、工程2の完了条件——つまり前進端センサX2が入っていない、と即座に絞り込めます。あとはそのセンサと動作端を現物で確認するだけです。「動かない」からいきなり全体を疑うのに比べて、トラブルシュートの速さが桁違いです。この切り分けの進め方はPLCが動かないときのトラブルシューティング手順で詳しく書いています。

(b) 工程の追加・入れ替えが局所修正で済む

「工程2と3の間に洗浄工程を追加したい」となったとき、直すのは前後の受け渡し回路だけです。新しい工程Mを1つ用意し、工程2の渡し先を差し替え、新工程から工程3へ渡す回路を足す。それ以外の工程には一切触りません。動作条件が全体に散らばったラダーだと、1工程の追加が全体の修正になりがちですが、工程歩進なら改造の影響範囲を閉じ込められます。

(c) 「動作条件」と「出力」を分離できる

実際の出力(Y)は「工程Mの接点→Y」という単純な形で書けるため、「いつ動くか(工程の遷移)」と「何を動かすか(出力)」をプログラム上で分離できます。これは次のセクションで詳しく見ます。

出力回路の分離 — 工程Mの直下にYを書かない

工程歩進に慣れていない人がやりがちなのが、工程の受け渡し回路の中に出力Yを直接書き込んでしまうことです。動きはしますが、出力がプログラム全体に散らばり、「Y0はどこから動かされているのか」を追うのが大変になります。

定石は、工程の遷移回路と出力回路をブロックとして分け、出力は「工程Mの接点→Y」の形で末尾にまとめる書き方です。

── 出力まとめ ──
──[ M10 ]──────────( OUT Y0 )   クランプソレノイド
──[ M11 ]──────────( OUT Y1 )   前進ソレノイド
──[ M12 ]──────────( OUT Y2 )   加工起動
──[ M13 ]──────────( OUT Y3 )   後退ソレノイド

複数の工程で同じ出力を動かしたい場合(たとえば工程1〜4の間ずっとクランプを保持したい場合)も、工程Mの接点をORで束ねて1か所のOUTにまとめます。こうしておけば、同じYへのOUTが複数箇所に書かれる二重コイルも自然と避けられます。二重コイルがなぜ危険かを含めたラダーの作法はラダー図の暗黙ルールを参照してください。

この分離のもうひとつの利点は、出力側に条件を差し込みやすいことです。インターロックや一時停止の条件を、工程の遷移には触らず出力ブロックだけに追加できます。動作同士の禁止関係の作り方はインターロック回路の組み方で扱っています。

運転条件の組み込み — 起動・一時停止・リセット

基本形ができたら、実機で必要になる運転条件を組み込みます。ここが実務のラダーと教科書のラダーの分かれ目です。

起動条件

工程1を立てる回路には、スタートボタンだけでなく「自動モードであること」「運転準備が完了していること」といった条件を直列に入れます。先ほどの例のM0(自動運転中)がその受け口です。起動条件を工程1の入口に集約しておけば、途中の工程の回路はシンプルなまま保てます。

一時停止

工程歩進の分離構造が活きるのが一時停止です。工程Mは保持したまま、出力だけを止める——つまり出力ブロック側に一時停止のb接点を入れます。

──[ M11 ]──[/M5 ]──( OUT Y1 )   一時停止M5中は前進を止める(工程M11は保持)

工程Mが残っているので、一時停止を解除すれば設備は止まった工程の続きから再開できます。工程Mまで切ってしまうと「どこまで進んでいたか」の情報が失われ、再開できなくなる——これが工程と出力を分離する実利です。

原点復帰とリセット

異常後や段取り替えの後は、全工程Mを一括でRSTしてから原点復帰し、工程1の手前の初期状態に戻します。RSTを工程の数だけ並べれば基本命令だけで書けます。なお、指定範囲のデバイスをまとめてリセットする命令が用意されている機種もありますが、名称や仕様は機種によって異なるので、お使いのPLCのマニュアルで確認してください。

よくある失敗 — 工程歩進でハマる3つのパターン

型としては単純な工程歩進ですが、実機では定番のハマりどころがあります。

失敗1:工程の渡し忘れ(センサ待ちで止まる)

最も多いのがこれです。工程Mは立っているのに、完了条件のセンサが成立せず、次工程へ渡せないまま止まる。センサのドグ位置ズレ・断線・そもそも完了条件の選定ミスなど原因はさまざまですが、症状としては「途中で止まって動かない」の一言に集約されます。前述のとおり、ONしている工程Mを見れば「どの完了条件を待っているのか」まで即座に特定できるので、慌てずモニタから入るのが正解です。

失敗2:複数の工程Mが同時に立つ

工程歩進は「実行中の工程Mは常に1つ」が大前提です。受け渡し時に前工程のRST(または保持解除)を書き忘れると、M10とM11が同時にONし、クランプと前進の出力が同時に出る、といった想定外の動作になります。受け渡しは必ず「次をSET・前をRST」をワンセットで書く、自己保持なら次工程Mのb接点を必ず保持解除に入れる、と機械的に徹底してください。

失敗3:非常停止後の復帰を設計していない

非常停止がかかったとき、工程Mをどうするか——保持したまま残して途中から再開させるのか、全部リセットして原点復帰からやり直させるのか。これは設備の性質(途中再開しても安全か、ワークを噛んだままにならないか)で決めるべき設計判断ですが、何も考えずに作ると「非常停止復帰後、中途半端な状態から勝手に動き出す」という危険な設備になります。基本形を書き終えた段階で、必ず「非常停止後はどの状態から始まるか」を決めておいてください。

慣れてきたら — 工程番号を数値で持つ方式もある

工程歩進にはもうひとつの流儀があります。工程ごとにMを割り当てる代わりに、Dデバイスに「工程番号」を数値で持ち、MOV命令で番号を書き換えて工程を進める方式です。「D100=10なら工程1、D100=20なら工程2」のように、1個のデータレジスタの値が現在工程を表します。

工程数が多い設備や、工程の分岐・スキップが多い設備では、M方式より管理しやすくなる場面があります。比較命令で「D100が特定の値のとき」という条件を作る書き方になるため、M方式とは回路の見た目がかなり変わります。まずはこの記事のM方式で型を体に入れて、他人のラダーで数値方式に出会ったときに「これは工程番号をDで持っているんだな」と読める状態を目指すのがよい順番です。

まとめ

工程歩進(ステップシーケンス)ラダーの要点を整理します。

  • 考え方:動作を工程に分解し、各工程にMデバイスを1つ割り当て、バトンリレーのように順番に渡していく
  • 基本形:「前工程M×完了条件で次工程を立てる」「次工程が立ったら自工程を切る」の同じパターンを工程の数だけ並べる。SET/RST方式と自己保持方式があり、プログラム内では統一する
  • 強さの理由:ONしている工程M=現在地なのでトラブルシュートが速い/工程の追加・入れ替えが局所修正で済む/動作条件と出力を分離できる
  • 出力の分離:工程の遷移回路にYを直接書かず、「工程Mの接点→Y」で末尾にまとめる。二重コイルも避けやすい
  • 運転条件:起動条件は工程1の入口に集約、一時停止は工程Mを保持したまま出力だけ止める、リセットは全工程Mを一括RSTしてから原点復帰
  • よくある失敗:完了条件の渡し忘れ・複数工程の同時ON・非常停止後の復帰未設計

工程歩進は、自動運転ラダーの読み書き両方の土台になる型です。まずは3〜5工程の小さな動作で一度自分の手で組んでみてください。一度組めば、既設設備のラダーの見え方が変わるはずです。

関連記事