[PLC]MDSTRTによるモジュール実行時の微分実行型命令(KEYENCE)

KEYENCEでMDSTRT命令をよく使用しますが、
当初、MDSTRT命令に関わる微分実行型命令の仕様を理解しておらず、
思い通り動作できず苦労しました。
そのあたりの仕様と経験についてまとめていきます。

MDSTRT命令

MDSTRT命令は分割した待機モジュールなどを実行する場合に使用します。

MDSTRT命令と微分実行型命令に関わる仕様

MDSTRTの仕様について、リファレンスマニュアルに下記の記載があります。(一部抜粋)
1.指定したモジュールは次のスキャンから動作を開始します。
2.モジュール実行開始時における微分実行型命令の初期状態は、

2について同マニュアル内の下記記述も確認してください。

MDSTRT命令は実行された次のスキャンから実行され、
実行モジュール内の微分実行型命令は、更にその次のスキャンから動作を開始するということになります。

微分実行型命令とは、こういうのを指しています。

動作検証

下記回路を作成し、実行した結果です。
下段のINC命令が並んだプログラムはMDSTRTで呼び出したプログラムです。
MDSTRTの命令から2スキャン遅らせたDM6と、DM7の回路だけが反応していることが分かります。

当初この仕様を知らずDM3、DM4の回路を入れていた為、
意図した動作ができない状態でした。

呼び出しの条件ごとに2スキャン後にONする接点を準備するより、
こちらの方がスマートかもしれません。

まとめ

今回、確認した仕様を理解しておけばMDSTRT命令によるトラブルは回避できると思います。

私の場合、スキャンの負荷軽減を目的とし慣習的にメインモジュール以外は待機モジュールとしています。
ただ実質は常時ON状態なものも多く、PLCの性能も上がっていることからあまりメリットはないかもしれません。
モジュールごとにシャットアウトできるので、
異常などで即停止させたい場合はソフトも間違えにくいので有効だと思います。

他所はどうしているんだろうと、確認できる範囲でみたところ全て毎スキャンモジュールに設定されていました。

コメント