PLCが突然停止、原因は割り算の演算エラー

スポンサーリンク


今回は、ある工場でPLCを新しくするための更新作業をした時にPLCが突然停止してしまったトラブル事例を紹介します。

PLCを新しくしたのに突然停止してしまったら…
作業者としては何が起きたか分からなくなるほど慌ててしまいますよね。

PLCのCPUが突然停止してしまったトラブルの経緯、原因、予防策について紹介します。

このトラブル事例の経緯と予防策を見ていれば、同じようなトラブルを起こさない設計、修正が出来るでしょう。

スポンサーリンク

1.PLCの数値データの演算プログラムを書き込みしたら突然停止した

 

今回のトラブルは冒頭にも書いた通り、PLCを新しいものへ更新した際に発生したものです。
古いPLCを単純に新しく更新しただけではなく、更新作業と同時にいろいろと変更部分がありました。

プログラムも大幅に修正をした部分があり、特にアナログ入力の演算は大きく変更したのです。

この時、私はまだ1年目か2年目くらいでしたので先輩と一緒に作業をしており、メインは先輩、私はごく一部のプログラムしか担当していませんでした。
何をしようとして、何が起きたのかを時系列で説明します。

 

1-1.他のPLCへ送信している数値がおかしい

 

PLCを更新後、先輩が変更したプログラムを書き込みしました。
いろいろな動作を確認して、問題なさそうだということで、装置の運転を開始。
運転を開始すると、他のPLCへ送っている数値がおかしいのではないか?と指摘を受けました。

詳しく調べてみたところ、聞いていた内容(仕様)が受けた指摘の内容と違うため、数値の演算が違っていることがわかりました。
そこで、演算回路をRUN中のまま修正します。

 

1-2.数値を正しくするために演算プログラムを修正した

 

演算の係数が違っていたので、新しい演算を検討しました。
PLCで演算させるには、アナログ入力からの入ってきた数値に係数を掛けた後、桁数を合わせるために割り算で桁数を合わせていく必要がありました。

その演算のあと、別の数値を演算結果で割って薬剤の濃度を計算していました。
順序は正しかったのですが、アナログ入力値はそこそこの頻度で数値が”0”になっていたのです。
そして悲劇は起こりました。

 

1-3.装置を運転中に書き込みしたら、CPUが突然停止した!

 

運転中にRUN中でプログラムを修正し、表示された数値は正しい状態だったので問題ないと思っていたところ、急に周りがバタバタとなり始めました。
「ん?なんだ?」と思っていたら、止まってはいけない機器が突然停止したというのです。

「何か起きたのかな?」と思って、PCとPLCを接続していたケーブルを抜こうとPLCのCPUを見ると…
『ERR.』の赤いLEDが点灯しており、『RUN』のLEDが消灯していました。

私は「え~っ!」と驚きましたが、先輩はこの時点でまだ気づいておらず。
すぐに先輩に小声で「CPU止まってますよ!」伝えました。

 

1-4.PLCはなぜ突然停止したのか?

 

CPUが停止していることを知った先輩は「マジ!?ヤバいヤバい!」とすぐにPCで原因を探し始めます。
修正したのは1か所だけだったので、元の回路に戻してPLCが動作するようにリセット→再起動ですぐに動き始めました。

止まってはいけない機器が停止したのは、プログラムを修正していたPLCからの機器へのインターロック信号がOFFになってしまったため、止まってしまったようです。

機器が再始動したので事なきを得たのですが、まだ根本の問題が解決していません。
その後もPLCのプログラムとにらめっこして、何が原因だったのかを探りました。

当時はまだインターネットもあまり普及しておらず、現場作業ではネットで検索して解決するなど出来ない状況でした。
メーカーのサポートへ原因を調べるために何回も電話しました。

 

目次へ戻る

 

2.PLCのCPUが突然停止した原因

 

トラブルが発生した経緯を時系列で書きましたが、PLCのCPUが突然停止してしまった原因はなんだったのでしょうか?
実施したことや修正内容を踏まえて原因を考えてみましょう。

 

2-1.アナログ入力の演算回路を修正後に発生した

 

PLCのCPUが停止する前に実施したことは、アナログ入力の数値演算回路の修正でした。
プログラム修正が影響していると考えて間違いないでしょう。
修正回路は 掛け算→割り算 と別のアナログ入力値の演算回路を修正しました。

修正した演算回路のどこに原因があるのでしょうか?

 

2-2.時々、アナログ入力が “0” になっていたことが関連している

 

CPUが停止した瞬間は見ていませんでした。
プログラム修正後すぐには停止せず、しばらくしてから停止していたのを覚えています。

1-2項 で先述した通り、アナログ入力はそこそこの頻度で “0” が入力されていました。
演算回路では「掛け算」「割り算」の2種類の命令を使っています。

2種類の命令と、アナログ入力の数値が “0” になっていることが関連しているように思い、メーカーに問い合わせしてみました。

 

2-3.割り算で割られる数値が “0” で命令実行するとエラーになる

 

メーカーに問い合わせを何度かしたところ、「割り算の命令を実行する際には、割る数値は “0以外” でないと演算エラーとなってしまう」と回答をもらえました。“0” で割ることが出来ないのは当然ですね。

演算エラーの存在は知っていたものの、具体的に割る数値が “0” になったら演算エラーになることは知らなかったため、プログラムでの対処が出来ていなかったことが原因でした。

 

2-4.“0” のときには割り算を実行せずに “0” を格納するようにした

 

原因が分かったので、対処としては以下の通りにプログラムに修正を加えました。

・アナログ入力の数値が “0以外” の時に、薬剤濃度の演算(割り算)を実行する条件を加えた
・アナログ入力の数値が “0” の時に、薬剤濃度の結果を格納するデバイスに ”100” を格納するようにプログラムを追加した(濃度100%とする)

上記内容のプログラム修正の後は、1週間ほど様子を見ていましたがエラーもなく正常に動作してました。

しかし、予期せぬ数値が入力された場合などにおいて、演算エラーで簡単に停止してしまうと困ってしまいます。
本当にこのプログラム修正だけで良かったのか、疑問が残りました。

 

目次へ戻る

 

スポンサーリンク

3.PLCでの演算エラーに対する予防策

 

PLCのCPUが突然停止したのは『割り算実行時の0処理が適切でない』ことが原因でした。
演算エラーという括りで考えた場合に予防策としてはどのようなものが挙げられるでしょうか。

 

3-1.PLCのCPUが演算エラーで停止することは問題なのでは?

 

今回のトラブルが起こった工場では、装置が簡単に停止してしまうことは工場全体として考えた場合に問題があります。
“0” の処理方法が適切でなかったのが原因ではあります。
しかし、設備としてとらえた場合には『演算エラーが発生して停止してしまう』ことが一番の問題であると考えます。

では、演算エラーでも停止させないようにするにはどうすればよかったのでしょうか?

 

3-2.演算エラーが発生しても運転を続行させたい

 

装置や設備にもよりますが、一度運転を開始すると簡単には停止できない、または順番に停止していかないと機器、設備が壊れてしまうケースもあります。
このようなケースでは、演算エラーが発生しても『あえて』CPUを停止しないようにしておくことが安全だと考えられます。

演算エラーでCPUを停止させないためには、『基本パラメータ設定』における『エラー時の運転モード』の設定項目のうち、『演算エラー』の項目の設定を『続行』にしておく必要があります。

予期せぬ数値に対応するために制限を設けて演算を実行するということも可能ですが、PLCのCPUが運転可能であり設備も運転可能であれば、CPU運転を『続行』することで機器を壊したりすることなく処置できます。

すぐにCPUを『停止』しなければならない事情がなければ、『エラー時の運転モード』のすべての項目は『続行』とすることをお勧めします。

詳しくは『PLCの基本パラメータの設定』をご覧ください。

 

目次へ戻る

 

4.さいごに

 

今回はPLCでの数値演算エラー時のトラブル事例と予防策について紹介しました。

アナログ入力に限らず、数値演算は処理の順番や条件の間違いなどによって演算エラーが発生します。
演算を常に実行するのか、特定数値の時には実行しないのか等をよく確認、検証した上でプログラムの作成をしていきましょう。

また、PLCの基本パラメータはほとんどが選択するだけで設定できることもあり、よく確認もせずにサラッと設定して、現場でハマっている人(後輩)をよく見ています。

基本パラメータの設定についてはよく理解した上で設定するようにしましょう。

 

関連記事:PLCの基本パラメータの設定