【PLC】MOVとMOVPの決定的違い!ラダーのバグを防ぐ現場の常識

  • URLをコピーしました!
\ 迷子にならないための地図 /

未経験から一人前への
「最短ルート」公開中

独学で「何から勉強すれば…?」と悩んでいませんか?
現場で戦える知識を、体系的にまとめました。

FA電気設計ロードマップを見る

「PLCのマニュアル、言葉が難しすぎて頭に入ってこない…」「ラダー図は合ってるはずなのに、数値がありえない挙動をする…」

もしあなたが今、そんな悩みを抱えているなら、この記事はあなたのためのものです。 メーカーのマニュアルには「パルス化転送」だの「スキャンごとの実行」だの、小難しい言葉が並んでいますよね。でも、現場で知っておくべきことはもっとシンプルです。

今回は、実務9年の現場エンジニアが、初心者が必ず一度はハマる「命令語の後ろにつく『P』の有無(MOVとMOVP、INCとINCP)」について、現場目線でバッサリ翻訳して解説します。

結論から言うと、この「P」の意味を理解していないと、私のように試運転で冷や汗をかくことになりますよ(笑)。

特に「計算命令(足し算・引き算)」でPを付け忘れると、一瞬で数値がオーバーフローして装置が暴走します。これだけは絶対に避けてください。


目次

マニュアルの言葉を「現場語」に翻訳しよう

まず、教科書的な定義を見てみましょう。

  • MOV(連続実行): 指令がONの間、毎スキャン実行される。
  • MOVP(パルス実行): 指令が立ち上がった一瞬だけ実行される。

…これだけ読んで「なるほど!」と即座に理解できるなら、あなたはもうベテランです。

新人時代の私は「で、どっちを使えばいいの?」と迷いました。現場の感覚で覚えるなら、こうイメージしてください。

命令語イメージ現場での使いどころ
Pなし (MOV)「蛇口を開けっ放し」条件がONの間、常にデータを流し続けたい時。
(例:タッチパネルの数値を常に監視したい)
Pあり (MOVP)「ハンコをポンと押す」条件がONした「瞬間」に1回だけ処理したい時。
(例:設定値を確定させる、計算をする)

この違いを無視すると、次に紹介する「恐怖の事件」が起きます。


【実話】立ち上げ時にカウンタが爆発した話

これは私がまだ若手だった頃、新しい設備のソフトを入れて立ち上げをしていた時の話です。「ボタンを押したら、製品カウントを『+1』する」という、非常に単純な回路を作りました。使った命令はインクリメント(加算)命令のINCです。

[ X0:カウントボタン ]-------------[ INC D0 ]

「よし、テストだ!」と思ってボタンをポチッと押した瞬間。本来「1」になるはずのD0の値が、いきなり「154」とか「230」に爆増したんです。「えっ!?なんで!?」とパニックになりました。幸い、試運転中だったのでラインを止めるような事故にはなりませんでしたが、もしこれが稼働中の設備で、製品個数管理に使われていたら…と考えるとゾッとします。

なぜ爆発したのか?

原因は、PLCの仕組みである「スキャンタイム」です。PLCは1秒間に何百回もプログラムを繰り返し読んでいます(スキャンしています)。人間がボタンを「一瞬(0.1秒くらい)」押したつもりでも、PLCにとっては「何十回もスキャンできる長い時間」なんです。

「P」をつけていないINC命令は、スキャンするたびに実行されます。

  1. 1回目のスキャン:ボタンONだ!→ +1
  2. 2回目のスキャン:まだボタンONだ!→ +1
  3. 3回目のスキャン:まだONだ!→ +1…
  4. 50回目のスキャン:ボタン離された。終わり。

結果、一回押しただけで「+50」されてしまうわけです。これを防ぐのが「P(パルス)」です。

PLCのINC命令とINCP命令の挙動比較図。上段は「INC(連続実行)」により、スイッチを押している間のスキャンサイクルごとに数値が加算され続け、カウント値が爆発する仕組み。下段は「INCP(パルス実行)」により、スイッチが入った瞬間の1スキャンだけ加算される正しい挙動のタイムチャート。

※ INCP D0 と書けば、PLCは「あ、押し始めの1回だけ足せばいいのね」と理解してくれ、正しく「+1」で止まります。

【現場の教訓】四則演算(足し算・引き算など)をする時は、とりあえず『P』をつけろ。

(※常に変化させたい特別な理由がない限り、計算系はパルス化が基本です!)


じゃあ「MOV」と「MOVP」はどう使い分ける?

転送命令(MOV)の場合は、計算ほどシビアではありませんが、やはり使い分けは重要です。

MOV(Pなし)を使う場面:リアルタイム性重視

  • アナログ値の読み込み: 温度や圧力など、常に変化する数値をDレジスタに入れて監視したい時。
  • タッチパネルの表示: 常に最新の値を表示させたい時。

ここでMOVPを使ってしまうと、条件がONした瞬間の値で固定されてしまい、その後の温度変化に追従できなくなります。

MOVP(Pあり)を使う場面:タイミング重視

  • 設定値の変更: 「段取り替えボタン」を押した時だけ、品種データを書き込みたい時。
  • データの一時保存: エラーが起きた瞬間の数値を、別の場所に退避させておきたい時(エラーログなど)。

ここでMOVを使ってしまうと、ボタンを押している間ずっと書き込み続けるため、無駄な処理が増えますし、タイミング制御が難しくなります。


まとめ:未来の担当者(自分含む)のために

動けばどっちでもいいじゃん、と思うかもしれません。確かに、テスト段階では動くかもしれません。しかし、半年後にトラブル対応でラダーを見た時、「なんでここ、計算してるのにP付いてないの? わざと? それともミス?」と疑心暗鬼になるのは、未来のあなた自身です。

  • 流し続けたいなら「Pなし」
  • 1回だけ処理したいなら「Pあり」

このルールを徹底するだけで、バグの9割は減らせます。現場からは以上です!

現場で役立つ!あわせて読みたい /

「MOV」と「MOVP」の違いを生んでいるのは、PLC特有の「スキャン(上から下への高速ループ)」という仕組みです。バグを出さないためには、まずこの「電気回路とは違う動き」を理解するのが近道です。解説はこちら👇

あわせて読みたい
【PLC入門】回路図とラダー図は別物!初心者がハマる「上から下へ」の罠 「リレー回路が読めるならラダー図も簡単」は大間違い!PLC特有の「スキャンサイクル」と、現場で必ずハマる「ハードb接点・ソフトa接点」の罠を徹底解説。電気回路とプログラムの決定的な違いを教えます。

他にも「現場で役立つ」技術ノート公開中

💬 更新情報を X (Twitter) で発信中!

記事の更新通知や、現場で役立つ「電気制御の小ネタ」をツイートしています。 また、「記事のここが分からなかった」「現場でここが困っているけどどうしたらいい?」といった疑問があれば、DMで募集しています!個別のトラブル相談も、ブログのネタにさせていただけるなら大歓迎です!ぜひフォローして気軽に絡んでください!

【PLC】そのラダー、バグります。「MOV」と「MOVP」の決定的違いと現場の常識。左側は「Pなし(MOV/INC)」で水が溢れるようにデータが連続転送され数値が爆増する危険な例。右側は「Pあり(MOVP/INCP)」でハンコを押すように一瞬だけ処理が実行される安全な例を対比したイラスト。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次