ラダーにおける連続処理の書き方

中級

何かしらの手順を自動化するために作るものが装置なので、それを制御するためのPLCには特定の決まった手順で連続的に処理する機能が必須となります。連続処理=PLC内のプログラムで実現させる必要が出てきます。ここではラダーで連続処理を作る場合の大きく2種類について説明します。

心の声
心の声

ぶっちゃけラダーなら、、

階段かステップのどちらかしか記述する手段が無い

応用・派生型は腐るほどあるけどな

階段ラダー

ラダーならよく見かけるもので、まずは百聞より一見ですね。
見た目が階段状に見える、なんのひねりも無くそのままです。

連続処理実行中の自己保持(上図だとM1001)を作り、手順毎にコマンド(同M1010, M1012, M1014)と状態監視、条件が揃ったら自己保持(同M1011, M1013)をかけて次の処理に進む形です。1つ1つの手順に保持が必要かどうかは処理によります。
手順が多くなると階段状に右下側に回路が伸びていくことになりますが、右端母線を越える場合は折り返しが発生します。たいていの場合は折り返すと回路がすごく見づらくなるため、”ここまで終わったよ”という自己保持を作って回路ブロックを切り替えるのが常套手段です。連続処理といえどもここからここまでといった区切りも多いのでそれに合わせて回路ブロックも区切って記述するほうが後々わかりやすいラダーとなります。

天の声
天の声

PLCも年々高機能化してメモリやデバイスに余裕がある場合も多くなってきています。
メモリ・デバイスを節約して回路が難しくなるより(多少の無駄遣いがあったとしても)分かりやすい回路のほうがメリットは大きいです。

心の声
心の声

“分かりやすさ”は個人、チーム、組織によって違うけどな。
他人がラダーを見たとき”?”と思わせない記述を意識する、くらいが関の山かな。

メリットとしてはモニタした場合に追いやすい、デメリットは作るのにコツが必要、、らしいです。
※後述のステップラダーを最初に覚えた人に階段ラダーは面倒らしい。。要は慣れの問題です。

ステップラダー

処理順を番号で管理する形のラダーで歩進制御などと呼ばれることもあります。デコード命令がポイントになります。
デバイスは少し異なりますが前述の階段ラダーと処理内容は同じです。

ステップラダーはDECO命令を理解すればすぐ分かります。ステップ管理番号(上図ではD3000)が0の場合はデコード対象ビット(同M3010~M3025)の先頭+0番目のビット(同M3010)だけがONして他はOFFとなります。ステップ番号が1の場合は先頭+1番目のビット(同M3011)だけがONとなります。
条件が成立したらステップ管理番号をインクリメントすることで次の状態に遷移させ、完了したら0にしておくことが基本となります。(場合によって特定の番号を維持することもあり得ますが。)

三菱の場合はDECO命令で8ビットまでを任意に選択できます。(8ビットデコードなら対象は連続した256ビットとなります。)
OMRONの場合はMLPX命令で4ビットか8ビットのみとなります。
KEYENCEの場合はMPX命令で4ビットのみとなります。

メリットとしてはステップ番号と状態が1対1となるので直感的に分かりやすい、デメリットとしては連続したビット領域を確保しなければならない制約があることでしょうか。ステップが16程度ならたいしたことはありませんが128や256と数が増えると面倒な場合も多いです。
他にも問題はありますが、、後述します。
また階段ラダーにはないメリットがステップにはあります。ステップ番号をパソコンやタッチパネルでモニタ可能にしておくと外部から状態を把握しやすくなり、何かトラブルが発生した際に
 ○○動作のステップ●●番で停止した
という感じで情報を伝えやすくなります。(階段ラダーでコレをやろうとするとかなり面倒)

階段とステップ、どちらが良いのか?

ぶっちゃけどちらを使って記述しようと出来ることに大差ないので8~9割がた”好みや慣れ”の問題になります。(現実的には参考・流用するものがあれば自然ともとの回路に合わせることになるので選択肢とならない場合もあります。。)
こう言ってしまってはミもフタも無くなってしまうので、、
後で変更する場合の”やりやすさ”視点で考えてみます。

【動作手順を追加する場合】
現状のものに対して最後に追加する場合は階段でもステップでも大差は無いです。
ただし途中に挿入という形での追加は階段のほうが追加しやすいです。ステップの場合は挿入を見越して”空き”があれば問題ありませんが、空きが無ければ結構な手間となります。

【動作手順を削除する場合】
階段の場合は常時ON/常時OFF接点を追加してジャンパさせる、ステップの場合は条件成立での飛び先番号を変えるだけ、どちらもたいしたことは無いです。

【動作の順番を入れ替える場合】
階段の場合は、、難しくはないけど面倒くさいです。前後で変えるだけなら回路順を変えれば済みますが3~4手順以上離れたものを入れ替えるのは結構な手間です。
ステップの場合は飛び先番号を変えるだけで済みます。

【ステップ特有の問題】
デコードを使うステップラダーの場合は当初想定したビット数を超える追加があるとデコード先のビットを拡張する必要があります。状況によって拡張が容易な場合と面倒な場合とがあります。
また動作の挿入となる場合に備えた空きをどれだけ見越しておくかという問題もあります。
このような追加に伴うリスク回避のためにデコードを使わずにステップ番号の値比較にし、基本的なステップ番号を10または100飛びにすることも可能です。(ビットを別に割り付ける手間が増えたりと良いことばかりではありませんが。)

【結論】
どちらも一長一短。やはり好みによる(笑)
しいていえば、追加・変更がどの程度予想されるか?予想内の変更+αに対応可能な余裕を持たせた考え方をするのが大事。

心の声
心の声

個人的には階段派!

コメント