この記事ではPLCラダーにおけるメインルーチンとサブルーチンの意味と使い方について解説します。
うまく使えばタクトタイムの改善や機能の効率化が図れて、結果ムダのないソフトになります。
目次
PLCのラダーのスキャンする順番とは
ラダーの場合は左から右・上から下へ全ての命令に対してスキャンします。
スキャンは誠実で、毎回忠実に全てをみています。もちろん書いたとおりにしか動作もしません。
しかし全てのプログラムを毎回絶対にスキャンする必要のない部分も出てくるかと思います。そんな時は必要なタイミングで必要なプログラムだけを呼び出すことが出来ます。
プログラムの中身は大きくこの2つに分けることが出来ます。
・メインルーチン
・サブルーチン
これらをうまく使えばタクトタイムの改善や機能の効率化が図れて、結果的にはムダのないソフトになります。
それでは順番に解説していきます。
メインルーチンとは
プログラムを走らせるためのメインとなる部分です。ソフトの中身で言う”ソフトの大通り”のようなものです。
ソフトにはメインの道筋・大動脈が必要です。また全ての仕事を取りまとめるための司令塔の役割もここで担います。
基本的にはこのメインルーチンだけでソフトを構築することも可能です。
しかしながら自動運転の時に必要のないラダーまで走るとソフトのスキャンタイムが伸びてしまい、最悪の場合は本来の性能を発揮できなくなります。
サブルーチンとは
そのままですが、プログラムを走らせるためのサブとなる部分です。”ソフトの大通り”がメインルーチンなら、そこからつながる”脇道や抜け道”のようなものがサブルーチンです。
お店で例えると、「A」というスーパーと「B」という薬局があるとします。
「A」は大通り沿いにあります。この道は毎日絶対に通る道です。
「B」は少し入った脇道に店を構えています。
「A」には毎日必ず寄りますが、「B」には必要な時しか行きません。
「B」へ行くときは大通りから外れて脇道に入り、「B」で買い物が終わったら大通りへ戻ります。ここで言う「B」がサブルーチンのような存在になります。
もし自分で店の配置を決めることが出来るのであれば「B」を大通りに設置すれば楽ですが、行く必要のない時も「B」の店を通るので、その分道が長くなり時間がかかります。
毎回行く必要のある店を大通りに設置して、毎回行く必要ない店はものは脇道に設置する。それを気にしながら構築をしていきます。
それでは、どういう形で場合分けしていくのか?見て行きましょう。
毎回走る必要のある部分とそうでない部分を整理
自動運転や手動運転(各個運転)などの条件が変わっても、毎回スキャンが必要な部分と必要でない部分に分けて行きます。
・常にスキャン必要(毎回行く必要のある店)→メインルーチン
・スキャンすると時間がかかって、必要な時にだけスキャンしたい(毎回行く必要ない店)→サブルーチン
注意
プログラム自体を”イベント”や”待機”などの実行タイプで分けてしまう方法も有りますが、ここでは1プログラム内でCALLを使用した場合について説明します。
場合分けの例がこうです。
・常にスキャン
・常に監視が必要なもの→異常処理
・自動運転時に毎回必要な部分→工程歩進、各種出力処理
⇒メインルーチンへ配置
・必要な時にだけスキャン
・常に監視が必要でないもの→設定値の代入、自動運転前に計算しておくものなど
・自動運転時に必要でない部分→手動動作(各個操作)など
⇒サブルーチンへ配置
このように分けて行きます。
今回紹介した内容は一例ですので「この方法が絶対」という事ではないです。メインルーチンとサブルーチンの意味を理解すればご自身でどんどん使い方をアレンジしていく事が出来ますよ。
命令の使い方
今回は例としてCALL命令を使って説明します。
①自動運転中でないときは手動操作のサブルーチンを呼び出す。
②設定値を代入するときに設定値を代入するサブルーチンを呼び出す。
この2パターンがあるとします。
①M100がOFFときにポインタ「P0」へ飛ぶ。「CALL P0」命令で飛びます。この状態の時にM120による操作とM220が有効になります。
②P0のエリア(ルーチン)は次の”RET”までです。走り終わったらメインルーチンに戻り、M101のステップから再び走ります。
③M101がONで、次はポインタ「P1」へ飛ぶ。この状態の時にP1内のM130とMOV命令が有効になります。
④P1のルーチンは次の”RET”までです。走り終わったらメインルーチンに戻り、「CALL P1」の次のステップから再び走ります。
FENDでメインルーチンの終了ですので、このステップの流れはここまでとなります。
このような感じで使用します。それ以外にもポインタに飛ぶ命令で「CJ」命令があります。「CJ」は主にメインルーチンで次のポインタまでショートカットしたいときに使うことが多いです。
実践でもかなり使用頻度の高い命令ですので、一度実際にご自身でアレンジしたソフトを書いてみて、この命令に慣れて行きましょう。
まとめ
今回の記事を要約するとこんな感じです。
ポイント要約
①”ソフトの大通り”がメインルーチンなら、そこからつながる”脇道や抜け道”のようなものがサブルーチン
②最近のPLCは命令実行速度が速いので、サブルーチンの中身次第ではメインに設置しても大してスキャン速度が変わらない場合がある。
③CALL命令やCJ命令を使ってうまく配置していきましょう。