(57)【特許請求の範囲】
【請求項１】
プログラマブルコントローラ用のＣＰＵと各種メモリとＩ／Ｏインタフェース部とを少なくとも含むＣＰＵモジュールと、前記Ｉ／Ｏインタフェース部を介して接続され、外部制御対象機器を制御するＩ／Ｏモジュールとを有し、入力リフレッシュ処理、ユーザプログラム演算処理、および出力リフレッシュ処理をサイクリックに実行するプログラマブルコントローラであって、
前記ＣＰＵモジュールまたは前記Ｉ／Ｏインタフェースに異常が検出された場合に、当該異常の要因を記録する発生異常要因情報ファイルと、
ＣＰＵモジュールの再起動が可能な異常の要因を記憶する再起動可能異常要因ファイルであって、前記再起動が可能な異常の要因は、あらかじめ、または、プログラミング装置を介して変更可能に設定されている、再起動可能異常要因ファイルと、
前記ＣＰＵモジュールの状態が、正常運転、正常停止、または、異常停止のいずれかであるかを判定する運転状態判定手段と、
前記判定において、前記ＣＰＵモジュールまたは前記Ｉ／Ｏモジュールに異常が発生し、当該異常の要因が前記発生異常要因情報ファイルに記録されて、前記ＣＰＵモジュールの前記状態が異常停止であると判定された場合、前記記録されている異常の要因と、前記再起動可能異常要因ファイルに記録されている複数の再起動可能な異常の要因とを比較し、比較の結果に基づいて、当該異常が、一過性の異常であるか否かを判定する異常要因判定手段と、
該異常要因判定手段により、前記異常が一過性の異常であると判定された場合、前記ＣＰＵモジュールを再起動する再起動手段と、
を備えたことを特徴とするプログラマブルコントローラ。
【請求項２】
前記再起動手段により、前記ＣＰＵモジュールが再起動した回数を記録する再起動回数記録手段をさらに備え、
前記再起動回数が予め定められた回数を超えた場合、前記ＣＰＵは、前記ＣＰＵモジュールを異常停止させることを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
プログラマブルコントローラ用のＣＰＵと各種メモリとＩ／Ｏインタフェース部とを少なくとも含むＣＰＵモジュールと、前記Ｉ／Ｏインタフェース部を介して接続され、外部制御対象機器を制御するＩ／Ｏモジュールとを有し、入力リフレッシュ処理、ユーザプログラム演算処理、および出力リフレッシュ処理をサイクリックに実行するプログラマブルコントローラの異常復旧方法であって、
前記メモリには、前記ＣＰＵモジュールまたは前記Ｉ／Ｏインタフェースに異常が検出された場合に、当該異常の要因を記録する発生異常要因情報ファイルと、ＣＰＵモジュールの再起動が可能な異常の要因を記憶する再起動可能異常要因ファイルであって、前記再起動が可能な異常の要因は、あらかじめ、または、プログラミング装置を介して変更可能に設定されている、再起動可能異常要因ファイルと、を備えており、
前記ＣＰＵモジュールの状態が、正常運転、正常停止、または、異常停止のいずれかであるかを判定する運転状態判定ステップと、
前記判定において、前記ＣＰＵモジュールまたは前記Ｉ／Ｏモジュールに異常が発生し、当該異常の要因が前記発生異常要因情報ファイルに記録されて、前記ＣＰＵモジュールの前記状態が異常停止であると判定された場合、前記記録されている異常の要因と、前記再起動可能異常要因ファイルに記録されている複数の再起動可能な異常の要因とを比較し、比較の結果に基づいて、当該異常が、一過性の異常であるか否かを判定する異常要因判定ステップと、
前記異常要因判定ステップにより、前記異常が一過性の異常であると判定された場合、前記ＣＰＵモジュールを再起動する再起動ステップと、
を備えたことを特徴とするプログラマブルコントローラの異常復旧方法。
【請求項４】
前記再起動ステップにより、前記ＣＰＵモジュールが再起動した回数を記録する再起動回数記録ステップと、
前記再起動回数が予め定められた回数を超えた場合、前記ＣＰＵは、前記ＣＰＵモジュールを異常停止させるステップとをさらに備えることを特徴とする請求項３に記載のプログラマブルコントローラの異常復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラおよびその異常時復旧方法に関する。より詳細には、本発明は、プログラマブルコントローラ内の各構成部の異常時に、プログラマブルコントローラ用ＣＰＵモジュールがその異常要因を自己判断して、プログラマブルコントローラ用ＣＰＵモジュール自身の再起動を行い、プログラマブルコントローラシステム全体の異常停止を回避するための、プログラマブルコントローラおよびその異常時復旧方法に関する。
【背景技術】
【０００２】
従来から知られているように、プログラマブルコントローラ（以下、ＰＬＣとも略記する）は、ファクトリ・オートメーション（ＦＡ）の制御装置として用いられている。このＰＬＣは複数のモジュールから構成される。これらのモジュールには、電源供給源である電源モジュール、ＰＬＣ全体の制御を統率するためのＣＰＵモジュール、ＦＡの生産装置や設備装置の適所に取り付けられたスイッチやセンサの信号を入力するための入力モジュール、アクチュエータなどに制御信号を出力するための出力モジュール、通信ネットワークに接続するための通信モジュールなどがある。これらのモジュールを適宜組み合わせることにより、ＰＬＣが構成されることになる。
【０００３】
ＣＰＵモジュールは、入力モジュールで入力した信号をＣＰＵモジュールのＩ／Ｏ（Input/Output）メモリに取り込み（入力リフレッシュ）、予め登録されたユーザプログラム（シーケンスプログラム）に基づき論理演算を行い（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力モジュールに送り出し（出力リフレッシュ）、その後いわゆる周辺のシステム処理（ローダ処理、各種システム処理）を行う一連の処理を、繰り返し処理する。ＣＰＵモジュールは、この繰り返し処理を行うことで、対象とする機器（以降、制御対象機器と呼ぶ）を制御する。
【０００４】
このような制御対象機器を制御するための上記ユーザプログラム（シーケンスプログラム）や、各種設定データは、ＲＡＭ（Random Access Memory）に格納されており、演算実行時に逐次読み書きするようになっている。
【０００５】
一方、ＰＬＣが設置される工場内の環境は、サーボモータ、インバータ、高圧電力装置など多種多様な装置がＰＬＣに接続され、あるいはＰＬＣの付近に配置されている。そのため、放射ノイズ、電源の瞬時停電、電磁界などにより、ＲＡＭ全体または一部のデータ破壊・消失が生じ得る。係るデータ破壊・消失が生じたデータに基づいて制御対象機器を制御すると正常動作しないため、ＰＬＣは、運転中に係るデータ破壊・消失が発生していないかどうかを確認している。
【０００６】
このようなデータ破壊・消失は、一過性の異常である場合が多いため、システム停止後に、システムを再起動するだけでシステムが復旧することが多く、この場合、例えばリセット回路に設けられたリセットボタン等を人為的に操作してシステムリセット信号を発生させてＣＰＵをリセットし、システムを再起動する必要があった。そのような人為的な操作を介在させる必要性をなくすために、データを記憶するメモリまたはデータバス上の異常発生が検出された場合、異常発生が検出されＰＬＣの動作が一旦停止された後に、ＰＬＣを再起動するリセット信号を生成するリセット手段を備えたＰＬＣの異常検出装置が提案されている（例えば、特許文献１参照）。
【０００７】
また、演算処理時に読み出されるユーザプログラムが格納されるユーザメモリと、ユーザメモリに格納されたユーザプログラムと同一内容のデータが格納されたバックアップメモリとを備えたＰＬＣ用ユニットにおいて、ユーザメモリとバックアップメモリとに格納されたユーザデータをサイクリックに比較し、メモリ異常の有無を判断して、メモリ異常を検出した場合には、検出したメモリ異常箇所のデータをバックアップメモリの該当箇所のデータで修復することが提案されている（例えば、特許文献２）。
【０００８】
【特許文献１】特開２００１−２４２９０１号公報
【特許文献２】特開２００４−２２０５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、データ破壊・消失といったメモリ異常のみならず、内蔵ＩＣの誤動作やＰＬＣ固有バス異常などの、ＰＬＣ内の構成部における一過性の異常によりＣＰＵモジュールが停止した場合にも、ＣＰＵモジュールは、安全の目的上、システムの暴走や不正出力を防止する必要があった。これら一過性の異常が検出された場合には、ＣＰＵモジュールを停止させ、その結果、制御しているシステム全体を停止させていた。また、ＰＬＣは、一般に制御盤の奥に設置されているので、システムを再度動作させるためには、保守員などが現場に赴いて、停止異常要因を調査し、システムの再起動（すなわち、電源の切り入り）をする必要があったが、この作業は容易ではなく、システムを再起動するまでに多くの時間が費やされるという問題点があった。
【００１０】
そこで、本発明は、上述の点に鑑みて、ＰＬＣ用ＣＰＵモジュール内のＣＰＵが、ＰＬＣ内の構成部において異常を検出した場合に、ＣＰＵが、ＣＰＵモジュールを再起動させるように自己判断する、プログラマブルコントローラおよびその異常時復旧方法を提供することを目的とする。
【００１１】
また、本発明は、ＰＬＣ内の構成部における異常の種類に応じて、ＣＰＵモジュール自身を再起動するか否かを自己判断する、プログラマブルコントローラおよびその異常時復旧方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
このような目的を達成するために、請求項１に記載の発明は、プログラマブルコントローラ用のＣＰＵと各種メモリとＩ／Ｏインタフェース部とを少なくとも含むＣＰＵモジュールと、前記Ｉ／Ｏインタフェース部を介して接続され、外部制御対象機器を制御するＩ／Ｏモジュールとを有し、入力リフレッシュ処理、ユーザプログラム演算処理、および出力リフレッシュ処理をサイクリックに実行するプログラマブルコントローラであって、前記ＣＰＵモジュールまたは前記Ｉ／Ｏインタフェースに異常が検出された場合に、当該異常の要因を記録する発生異常要因情報ファイルと、ＣＰＵモジュールの再起動が可能な異常の要因を記憶する再起動可能異常要因ファイルであって、前記再起動が可能な異常の要因は、あらかじめ、または、プログラミング装置を介して変更可能に設定されている、再起動可能異常要因ファイルと、前記ＣＰＵモジュールの状態が、正常運転、正常停止、または、異常停止のいずれかであるかを判定する運転状態判定手段と、  前記判定において、前記ＣＰＵモジュールまたは前記Ｉ／Ｏモジュールに異常が発生し、当該異常の要因が前記発生異常要因情報ファイルに記録されて、前記ＣＰＵモジュールの前記状態が異常停止であると判定された場合、前記記録されている異常の要因と、前記再起動可能異常要因ファイルに記録されている複数の再起動可能な異常の要因とを比較し、比較の結果に基づいて、当該異常が、一過性の異常であるか否かを判定する異常要因判定手段と、該異常要因判定手段により、前記異常が一過性の異常であると判定された場合、前記ＣＰＵモジュールを再起動する再起動手段とを備えたことを特徴とする。
【００１３】
請求項２に記載の発明は、請求項１に記載の発明において、前記再起動手段により、前記ＣＰＵモジュールが再起動した回数を記録する再起動回数記録手段をさらに備え、前記再起動回数が予め定められた回数を超えた場合、前記ＣＰＵは、前記ＣＰＵモジュールを異常停止させることを特徴とする。
【００１４】
請求項３に記載の発明は、プログラマブルコントローラ用のＣＰＵと各種メモリとＩ／Ｏインタフェース部とを少なくとも含むＣＰＵモジュールと、前記Ｉ／Ｏインタフェース部を介して接続され、外部制御対象機器を制御するＩ／Ｏモジュールとを有し、入力リフレッシュ処理、ユーザプログラム演算処理、および出力リフレッシュ処理をサイクリックに実行するプログラマブルコントローラの異常復旧方法であって、前記メモリには、前記ＣＰＵモジュールまたは前記Ｉ／Ｏインタフェースに異常が検出された場合に、当該異常の要因を記録する発生異常要因情報ファイルと、ＣＰＵモジュールの再起動が可能な異常の要因を記憶する再起動可能異常要因ファイルであって、前記再起動が可能な異常の要因は、あらかじめ、または、プログラミング装置を介して変更可能に設定されている、再起動可能異常要因ファイルと、を備えており、前記ＣＰＵモジュールの状態が、正常運転、正常停止、または、異常停止のいずれかであるかを判定する運転状態判定ステップと、前記判定において、前記ＣＰＵモジュールまたは前記Ｉ／Ｏモジュールに異常が発生し、当該異常の要因が前記発生異常要因情報ファイルに記録されて、前記ＣＰＵモジュールの前記状態が異常停止であると判定された場合、前記記録されている異常の要因と、前記再起動可能異常要因ファイルに記録されている複数の再起動可能な異常の要因とを比較し、比較の結果に基づいて、当該異常が、一過性の異常であるか否かを判定する異常要因判定ステップと、前記異常要因判定ステップにより、前記異常が一過性の異常であると判定された場合、前記ＣＰＵモジュールを再起動する再起動ステップとを備えたことを特徴とする。
【００１５】
請求項４に記載の発明は、請求項３に記載の発明において、前記再起動ステップにより、前記ＣＰＵモジュールが再起動した回数を記録する再起動回数記録ステップと、前記再起動回数が予め定められた回数を超えた場合、前記ＣＰＵは、前記ＣＰＵモジュールを異常停止させるステップとをさらに備えることを特徴とする。
【００１６】
なお、本明細書で用いられる「一過性の異常」という用語は、電源の再投入のみならず、ＣＰＵモジュールを再起動するだけでも復旧可能な異常のことを指す。すなわち、「一過性の異常」とは、各モジュールなどの破損またはモジュール構成異常などを原因とする異常ではなく、したがって、モジュールの交換を必要とせず、電源の再投入またはリブート（リセットスタート）させることで復帰可能な異常を指す。
【００１７】
また、本明細書で用いられる「再起動」という用語は、ＣＰＵモジュールの再起動のことを指すが、ＣＰＵモジュールを再起動することは、Ｉ／Ｏを含めたＰＬＣシステム全体を再起動することと同義である。
【発明の効果】
【００１８】
本発明によれば、ＰＬＣ用ＣＰＵモジュール内のＣＰＵが、ＰＬＣ内の構成部において異常を検出した場合に、ＣＰＵは、ＣＰＵモジュールを再起動させるように自己判断することが可能となる。
【００１９】
また、本発明によれば、ＰＬＣ内の構成部における異常の種類に応じて、ＣＰＵは、ＣＰＵモジュール自身を再起動するか否かを自己判断することが可能となる。
【００２０】
さらに、本発明によれば、異常が検出されたＰＬＣにおいて、再起動を行うことにより、ＣＰＵモジュールおよびシステムの停止時間を短時間に抑え、早期に運転を復帰させることができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しながら、本発明を適用できる実施形態について詳細に説明する。
【００２２】
（装置構成）  
図１は、本発明の一実施形態に係る、ＣＰＵモジュール１０とＩ／Ｏモジュール４０とを備えるＰＬＣ１００の構成を示すブロック図である。
【００２３】
図１に示すように、ＰＬＣ１００は、ＣＰＵモジュール１０およびＩ／Ｏモジュール４０を備えている。ＣＰＵモジュール１０は、内部のシステムバス１９によって互いに接続された以下の構成部からなり、自身に備えられたローダインタフェース３０と、通信線３００とを介してプログラミングローダ（プログラミング装置、ローダとも呼ばれる）２００に接続されている。なお、プログラミングローダ２００は、ＰＬＣ１００に対するユーザプログラムの作成や転送の役割を担うツールである。また、Ｉ／Ｏモジュール４０は、当該ＰＬＣや制御対象機器（不図示）の種類などに応じて増設されるデジタルおよび／またはアナログのモジュールである。Ｉ／Ｏモジュール４０は、図１には、１つしか示されていないが、ＰＬＣ１００内に複数設けることもできる。このＩ／Ｏモジュール４０は、ＰＬＣ固有バス１４ａを介してＣＰＵモジュール内のＰＬＣ固有バスインタフェース１４に接続され、かつ通信線（不図示）を介して制御対象機器に接続されている。
【００２４】
ＣＰＵモジュール１０は、後述するシステムプログラムメモリ１５に予め格納されているシステムプログラムを基層のプログラムとして動作する。さらに、ＣＰＵモジュール１０は、プログラミングローダ２００から転送されたシーケンスプログラムなどのユーザプログラムを後述するユーザプログラムメモリ１７に格納した後で、このシーケンスプログラムを演算実行して、外部の制御対象機器の自動シーケンス制御を行う。なお、ＣＰＵモジュール１０内において、ＣＰＵ１１、ドライバ／レシーバ１３、システムプログラムメモリ１５、システムワークメモリ１６、ユーザプログラムメモリ１７、ユーザデータメモリ１８、およびＰＬＣ固有バスインタフェース１４は、共通のシステムバス１９に接続されている。
【００２５】
ＣＰＵ１１は、システムプログラムメモリ１５に格納されているシステムプログラムに基づいて、ＣＰＵモジュール１０内の各構成部の動作制御を行うとともに、ユーザプログラムメモリ１７に格納されているシーケンスプログラムの実行や停止などの制御、プログラミングローダ２００からのシーケンスプログラムの送信やモニタリングなどの通信コマンド制御、ならびに本発明の一実施形態に係るＰＬＣ１００の異常時復旧処理を行う。
【００２６】
ドライバ／レシーバ１３は、ローダインタフェース３０と通信線３００とを介してプログラミングローダ２００に接続され、ＣＰＵモジュール１０とプログラミングローダ２００との間でデータの送受信を行う。
【００２７】
システムプログラムメモリ１５は、ＣＰＵ１１が実行するシステムプログラムを格納している。システムプログラムメモリ１５には、通常フラッシュメモリが使用される。このシステムプログラムには、上述したＰＬＣ１００の異常時復旧処理を含む、後述する図３〜図５のフローチャートによって示されるプログラムが含まれる。
【００２８】
システムワークメモリ１６は、システムプログラムの作業用メモリとして、一時的な演算結果や、ＰＬＣ１００における処理の実行に必要な各種設定値を格納する。このシステムワークメモリ１６には、通常ＲＡＭが使用される。
【００２９】
ユーザプログラムメモリ１７は、プログラミングローダ２００から転送されたシーケンスプログラムなどのユーザプログラムを格納する。このユーザプログラムメモリ１７には、通常ＲＡＭが使用される。
【００３０】
ユーザデータメモリ１８は、ユーザプログラムメモリ１７に格納されているシーケンスプログラムの演算結果や制御対象機器の各種設定値を格納する。このユーザデータメモリ１８には、通常ＲＡＭが使用される。
【００３１】
ＰＬＣ固有バスインタフェース１４は、ＰＬＣ固有バス１４ａを介してＩ／Ｏモジュール４０に接続され、外部の制御対象機器の制御に関わる情報の入出力を行う。この例ではＩ／Ｏモジュール４０との接続にＰＬＣ固有バスインタフェース１４にてインタフェースを行なうように記載するが、格別そのＰＬＣの固有なるバスインタフェース（１４）や固有バス（１４ａ）にて接続する必要はなく、固有にこだわる必要はない。したがって、ＰＬＣ固有バスインタフェース１４は単にＩ／Ｏインタフェース部とすることもできるし、ＰＬＣ固有バス１４ａは単にＩ／Ｏバスとすることもできる。また、Ｉ／Ｏモジュール４０が直接システムバス１９に接続される形態としてもよい。
【００３２】
Ｉ／Ｏモジュール４０は、スイッチやセンサなどから信号を取り込み、アクチュエータなどに制御信号を出力する。
【００３３】
図２は、本発明の一実施形態に係るＰＬＣ１００内のＣＰＵモジュール１０におけるシステムワークメモリ１６内の構成を示すブロック図である。
【００３４】
システムワークメモリ１６には、運転状態ファイル１６Ａ、再起動回数記録ファイル１６Ｂ、再起動可能異常要因ファイル１６Ｃ、および発生異常要因情報ファイル１６Ｄが含まれる。
【００３５】
運転状態ファイル１６Ａは、ＣＰＵモジュール１０の運転状態を示すものであり、運転状態ファイル１６Ａには、運転正常実行、運転正常停止、および運転異常停止という３種類のステータスが記録される。
【００３６】
再起動回数記録ファイル１６Ｂは、再起動可能な異常要因（例えば、メモリ異常、内蔵ＩＣの誤動作、ＰＬＣ固有バス異常など）によって、ＣＰＵモジュール１０が再起動した回数を記録する。
【００３７】
再起動可能異常要因ファイル１６Ｃは、メモリ異常、内蔵ＩＣの誤動作、ＰＬＣ固有バス異常、Ｉ／Ｏモジュール異常などの、ｎ個（ｎ；自然数）の再起動可能な異常要因を記録したものである。当該再起動可能異常要因ファイル１６Ｃへの再起動可能な異常要因の登録は、設計段階において予め登録しておいてもよいし、プログラミングローダ２００を介して、登録や変更をしてもよい。なお、再起動可能異常要因ファイル１６Ｃは、図５を参照して後述する異常要因判定処理において用いられる。
【００３８】
発生異常要因情報ファイル１６Ｄは、ＣＰＵ１１が異常を検出し異常処理を実行することにより、その発生異常要因と、当該発生異常要因に付随する複数の付加情報とを記録する。
【００３９】
発生異常要因が再起動可能異常要因であった場合、例えば、次のようなものが発生異常要因および付加情報として記録される。
発生異常要因：メモリ異常、付加情報：異常発生時刻やメモリアドレスなど。
発生異常要因：内蔵ＩＣの誤動作、付加情報：異常発生時刻や誤動作が生じたＩＣの識別子など。
発生異常要因：ＰＬＣ固有バス異常、付加情報：異常発生時刻やＰＬＣ固有バスの識別子など。
発生異常要因：Ｉ／Ｏモジュール異常、付加情報：異常発生時刻や異常発生Ｉ／Ｏモジュール識別番号など。
【００４０】
発生異常要因が再起動不可能な異常要因であった場合、例えば、次のようなものが発生異常要因および付加情報として記録される。
発生異常要因：システム構成異常（接続不可能な種類のＩ／Ｏモジュールや通信モジュールが接続されている）、付加情報：異常発生時刻や異常発生モジュール識別番号、異常モジュール種別など。
発生異常要因：Ｉ／Ｏモジュール接続台数オーバー（接続可能な台数以上のＩ／Ｏモジュールが接続されている）、付加情報：異常発生時刻や接続オーバー台数など。
【００４１】
（動作説明）  
次に、図１および図２に示した構成における、本発明の一実施形態に係るＰＬＣ１００内のＣＰＵ１１の処理について説明する。    
図３は、本発明の一実施形態にしたがって、ＣＰＵ１１が実行する処理を示すフロー図である。
【００４２】
まず、ＰＬＣ１００の電源を投入することにより、ＣＰＵ１１の処理が開始され、Ｓ３０１において、ＣＰＵ１１は、システムワークメモリ１６内の再起動回数記録ファイル１６Ｂをクリアして、再起動回数を０に設定する。次いで、Ｓ３０２において、ＣＰＵ１１は、接点情報のデータ内容をリフレッシュする、システムワークメモリ１６内の運転状態ファイルＡを運転正常実行として記録する、システムワークメモリ１６内の発生異常要因情報ファイル１６Ｃにおける記録内容をクリアする、などの初期化処理を行う。次いで、Ｓ３０３において、ＣＰＵ１１は、ＰＬＣ１００内の各構成部に異常があるか否かを調べる自己診断処理を実行する。
【００４３】
次いで、Ｓ３０４において、ＣＰＵ１１は、各種システム処理を実行する。このシステム処理には、ユーザプログラムメモリ１７およびユーザデータメモリ１８内に格納されたユーザプログラムおよびユーザデータに破壊・消失が生じた場合に、メモリ異常として検出するメモリ異常検出処理が含まれる。このメモリ異常を検出する手法としては、当技術分野では周知である、パリティチェックまたはＥＣＣ（Error Checking and Correction）を用いることができる。あるいは、ユーザプログラムおよびユーザデータと同一内容のデータが格納されたバックアップメモリ（不図示）を用いて、ユーザプログラムメモリ１７およびユーザデータメモリ１８内に格納されたユーザプログラムおよびユーザデータモリと、バックアップメモリに格納されたユーザプログラムおよびユーザデータとを比較し、メモリ異常の有無を判断してもよい。
【００４４】
また、このシステム処理には、システムワークメモリ１６内の発生異常要因情報ファイル１６Ｄに発生異常要因が記録されている場合には、ＣＰＵ１１が、システムワークメモリ１６内の運転状態ファイル１６Ａを運転異常停止として記録する処理が含まれる。
【００４５】
ＣＰＵ１１は、各種ＩＣやＰＬＣ固有バスインタフェース１４などのデバイスが異常であることを示す異常信号を、それらデバイスから受信すると、割り込み処理として、当該異常信号に含まれる、上述した発生異常要因と、当該発生異常要因に付随する複数の付加情報とを、システムワークメモリ１６内の発生異常要因情報ファイル１６Ｄに記録する。
【００４６】
次いで、Ｓ３０５において、ＣＰＵ１１は、システムワークメモリ１６内の運転状態ファイル１６Ａを確認することにより、ＣＰＵモジュール１０の運転状態を判定する（運転状態判定処理）。
【００４７】
Ｓ３０５において、運転状態が運転正常実行であった場合、処理はＳ３０６に進み、ＣＰＵ１１は、入力モジュール４０で入力した信号をＣＰＵモジュール１０内のユーザデータメモリ１８におけるＩ／Ｏメモリ（不図示）に取り込み（入力リフレッシュ）、Ｓ３０７において、予め登録されたユーザプログラム（シーケンスプログラム）に基づいて論理演算を実行し、Ｓ３０８において、その演算実行結果をＩ／Ｏメモリに書き込んで出力モジュールに送り出す（出力リフレッシュ）。
【００４８】
次いで、Ｓ３１１において、ＣＰＵ１１は、ローダ処理を実行する。このローダ処理には、ＣＰＵ１１が、ローダからの要求や、ＣＰＵモジュール１０に設置された外部スイッチにより、システムワークメモリ１６内の運転状態ファイル１６Ａを運転正常停止に変更する処理が含まれる。同様に、このローダ処理には、ＣＰＵ１１が、ローダからの要求や、ＣＰＵモジュール１０に設置された外部スイッチにより、システムワークメモリ１６内の運転状態ファイル１６Ａを運転正常実行に変更する処理が含まれる。
【００４９】
次いで、Ｓ３１２において、ＣＰＵ１１は、Ｓ３０４と同様の各種システム処理を実行する。このシステム処理には、ユーザプログラムメモリ１７およびユーザデータメモリ１８内に格納されたユーザプログラムおよびユーザデータに破壊・消失が生じた場合に、メモリ異常として検出するメモリ異常検出処理が含まれる。このメモリ異常を検出する手法としては、当技術分野では周知である、パリティチェックまたはＥＣＣ（Error Checking and Correction）を用いることができる。あるいは、ユーザプログラムおよびユーザデータと同一内容のデータが格納されたバックアップメモリを用いて、ユーザプログラムメモリ１７およびユーザデータメモリ１８内に格納されたユーザプログラムおよびユーザデータモリと、バックアップメモリに格納されたユーザプログラムおよびユーザデータとを比較し、メモリ異常の有無を判断してもよい。
【００５０】
また、このシステム処理には、システムワークメモリ１６内の発生異常要因情報ファイル１６Ｄに発生異常要因が記録されている場合には、ＣＰＵ１１が、システムワークメモリ１６内の運転状態ファイル１６Ａを運転異常停止として記録する処理が含まれる。
【００５１】
ＣＰＵ１１は、各種ＩＣやＰＬＣ固有バスインタフェース１４などのデバイスが異常であることを示す異常信号を、それらデバイスから受信すると、割り込み処理として、当該異常信号に含まれる、上述した発生異常要因と、当該発生異常要因に付随する複数の付加情報とを、システムワークメモリ１６内の発生異常要因情報ファイル１６Ｄに記録する。
【００５２】
ここで、再度Ｓ３０５に戻り、ＣＰＵ１１は、運転状態判定処理を実行する。Ｓ３０５において、運転状態が運転正常停止であった場合、処理はＳ３０９に進んで、ＣＰＵ１１は、ユーザプログラム演算処理を停止し、配線の確認（入出力状態；Ｓ３０９、Ｓ３１０）や、プログラミングローダ２００を介したユーザプログラムの入れ替えなどのメンテナンスを安全に行うことができる。
【００５３】
次いで、Ｓ３１１において、運転状態ファイル１６Ａが運転正常実行に変更された後、上述した何らかの異常が発生し、システムワークメモリ１６内の発生異常要因情報ファイル１６Ｄに発生異常要因および付加情報が記録されたとする。すると、Ｓ３１２において、ＣＰＵ１１は、運転状態ファイル１６Ａを運転異常停止に変更し、再度Ｓ３０５に戻って、ＣＰＵ１１は、運転状態判定処理を実行して、運転状態が運転異常停止であると判定し、処理はＳ３１３に進む。Ｓ３１３において、ＣＰＵ１１は、発生異常要因が再起動可能な異常であるか否かを判定する（異常要因判定処理）。この異常要因判定処理については、図４および図５を参照して、後に詳述する。
【００５４】
Ｓ３１３において、発生異常要因が再起動可能な異常でなかった場合、処理はＳ３１１に進む。この際、ＣＰＵ１１は、再起動不可能な異常が発生したことを表示装置（不図示）に通知し、その旨を表示装置に表示させることによって、保守員などのユーザは、ＰＬＣ１００に再起動不可能な異常が発生したことを認識することができる。Ｓ３１１において、ＣＰＵ１１は、ユーザがプログラミングローダ２００を介して送信した指示などを受け付け、その指示に従った処理を行う。図示してはいないが、例えば、メモリダンプ指示を受け付ければ、ＣＰＵ１１は、指定されたアドレスのデータをローダ２００へ送信したり、ＣＰＵモジュール１０を異常停止させる指示を受け付ければ、ＣＰＵ１１は、ＣＰＵモジュール１０を異常停止させたりすることができる。一方、Ｓ３１３において、発生異常要因が再起動可能な異常であった場合、次いで、Ｓ３１４において、ＣＰＵ１１は、システムワークメモリ１６内の再起動回数記録ファイル１６Ｂに記録された再起動回数が予め定められた回数を超えたか否かを判定する（再起動回数判定処理）。なお、この予め定められた回数は、設計段階にてシステムプログラムメモリ１５などに固定された回数として記憶されていてもよいし、プログラミングローダ２００を介して、システムワークメモリ１６に登録や変更をしてもよい。
【００５５】
Ｓ３１４において、再起動回数が予め定められた回数を超えていた場合、処理はＳ３１１に進む。再起動回数が予め定められた回数を超えていた場合は、発生している異常要因が再起動処理により復旧できないために連続して再起動が行われている状態である。この際、ＣＰＵ１１は、再起動不可能な異常が発生したことを表示装置に通知し、その旨を表示装置に表示させることによって、保守員などのユーザは、ＰＬＣ１００に再起動不可能な異常が発生したことを認識することができる。Ｓ３１１において、ＣＰＵ１１は、ユーザがプログラミングローダ２００を介して送信した指示などを受け付け、その指示に従った処理を行う。図示してはいないが、例えば、メモリダンプ指示を受け付ければ、ＣＰＵ１１は、指定されたアドレスのデータをローダ２００へ送信したり、ＣＰＵモジュール１０を異常停止させる指示を受け付ければ、ＣＰＵ１１は、ＣＰＵモジュール１０を異常停止させたりすることができる。一方、Ｓ３１４において、再起動回数が予め定められた回数を超えていなかった場合、次いで、Ｓ３１５において、ＣＰＵ１１は、システムワークメモリ１６内の再起動回数記録ファイル１６Ｂに記録された再起動回数を１インクリメントする。次いで、Ｓ３０２に戻り、初期化処理から前述した処理を繰り返す。なお、本明細書における再起動とは、Ｓ３１５の再起動回数のインクリメント処理から、Ｓ３０２の初期化処理に戻ることを指す。
【００５６】
次に、図４および図５を参照しながら、図３のＳ３１３の異常要因判定処理について説明する。
図４は、本発明の一実施形態にしたがって、ＣＰＵ１１が実行する異常要因判定処理の一例を示すフロー図である。
【００５７】
本異常要因判定処理は、ＣＰＵ１１が、設計段階にて予め定められてシステムプログラムメモリ１５などに記憶されているｎ個の再起動可能異常要因と、発生した異常要因とを順に比較することにより実現される。すなわち、Ｓ４０１に示されるように、まず、ＣＰＵ１１は、発生異常要因と、予め定められた再起動可能異常要因１とが一致するか否かを判定する。発生異常要因と、予め定められた再起動可能異常要因１とが一致した場合、処理は図３のＳ３１４に進む。一方、発生異常要因と、予め定められた再起動可能異常要因１とが一致しなかった場合、Ｓ４０２に進み、ＣＰＵ１１は、発生異常要因と、予め定められた再起動可能異常要因２とが一致するか否かを判定する。同様にして処理を進め、最終的に、ＣＰＵ１１が、発生異常要因と、予め定められた再起動可能異常要因ｎとが一致しなかったと判定した場合、処理は図３のＳ３１１に進む。
【００５８】
図５は、本発明の一実施形態にしたがって、ＣＰＵ１１が実行する異常要因判定処理の別の例を示すフロー図である。
【００５９】
本異常要因判定処理では、Ｓ５０１において、ＣＰＵ１１は、システムワークメモリ１６内の再起動可能異常要因ファイル１６Ｃに記録されているｎ個の再起動可能異常要因と、発生した異常要因とを順次対比検索する。次いで、Ｓ５０２において、ＣＰＵ１１は、発生した異常要因と同一の異常要因が、再起動可能異常要因ファイル１６Ｃに記録されているｎ個の再起動可能異常要因の中に存在するか否かを判定する。同一の異常要因が存在した場合には、処理は図３のＳ３１４に進む。一方、同一の異常要因が存在しなかった場合には、処理は図３のＳ３１１に進む。
【００６０】
以上説明したように、本発明によれば、ＰＬＣ用ＣＰＵモジュール内のＣＰＵが、ＰＬＣ内の構成部において異常を検出した場合に、ＣＰＵは、ＣＰＵモジュールを再起動させるように自己判断することが可能となる。    
また、本発明によれば、ＰＬＣ内の構成部における異常の種類に応じて、ＣＰＵは、ＣＰＵモジュール自身を再起動するか否かを自己判断することが可能となる。  
さらに、本発明によれば、異常が検出されたＰＬＣにおいて、再起動を行うことにより、ＣＰＵモジュールおよびシステムの停止時間を短時間に抑え、早期に運転を復帰させることができる。
【図面の簡単な説明】
【００６１】
【図１】本発明の一実施形態に係る、プログラマブルコントローラ用ＣＰＵモジュールとＩ／Ｏモジュールとを備えるプログラマブルコントローラの構成を示すブロック図である。
【図２】本発明の一実施形態に係るプログラマブルコントローラ内のＣＰＵモジュールにおけるシステムワークメモリ内の構成を示すブロック図である。
【図３】本発明の一実施形態にしたがって、ＣＰＵが実行する処理を示すフロー図である。
【図４】本発明の一実施形態にしたがって、ＣＰＵが実行する異常要因判定処理の一例を示すフロー図である。
【図５】本発明の一実施形態にしたがって、ＣＰＵが実行する異常要因判定処理の別の例を示すフロー図である。
【符号の説明】
【００６２】
１０  ＣＰＵモジュール
１１  ＣＰＵ
１３  ドライバ／レシーバ
１４  プログラマブルコントローラ（ＰＬＣ）固有バスインタフェース
１５  システムプログラムメモリ
１６  システムワークメモリ
１６Ａ  運転状態ファイル
１６Ｂ  再起動回数記録ファイル
１６Ｃ  再起動可能異常要因ファイル
１６Ｄ  発生異常要因情報ファイル
１７  ユーザプログラムメモリ
１８  ユーザデータメモリ
１９  システムバス
３０  ローダインタフェース
４０  Ｉ／Ｏモジュール
１００  プログラマブルコントローラ（ＰＬＣ）
２００  プログラミングローダ
【図１】
0005041290.tif 000002
【図２】
0005041290.tif 000003
【図３】
0005041290.tif 000004
【図４】
0005041290.tif 000005
【図５】
0005041290.tif 000006