(57)【特許請求の範囲】
【請求項１】
動作モードを決定するパラメータを読み込み、当該パラメータに応じた動作モードを設定して動作するプログラマブルコントローラであって、
前記パラメータおよびこのパラメータの正当性を検証するための第一のチェックコードが予め保持された第一の記憶手段と、
この第一の記憶手段に保持された前記パラメータを第二の記憶手段に転送する第一の転送手段と、
前記第二の記憶手段に保持されたパラメータが更新されたことを示すフラグがセットされたとき、前記第二の記憶手段に保持されたパラメータを更新したパラメータから該パラメータの正当性を検証するための第二のチェックコードを算出するチェックコード算出手段と、
前記第一のチェックコードと前記第二のチェックコードとを比較するチェックコード比較手段と、
このチェックコード比較手段によって前記第一のチェックコードと前記第二のチェックコードとが相違したと判定されたとき、前記第二の記憶手段に保持されたパラメータを更新したパラメータおよび前記第二のチェックコードを前記第一の記憶手段にそれぞれ転送して、前記第一の記憶手段に予め保持されていた前記パラメータおよび前記第一のチェックコードを上書きする第二の転送手段と、
前記第一の記憶手段に予め保持されていたパラメータを上書きしたパラメータを読み込み、動作モードを再設定するパラメータ設定手段と、
を備えることを特徴とするプログラマブルコントローラ。
【請求項２】
動作モードを決定するパラメータを読み込み、当該パラメータに応じた動作モードを設定して動作するプログラマブルコントローラであって、
前記パラメータおよびこのパラメータの正当性を検証するための第一のチェックコードが予め保持された第一の記憶手段と、
この第一の記憶手段に保持された前記パラメータおよび前記第一のチェックコードを第二の記憶手段にそれぞれ転送する第一の転送手段と、
前記第二の記憶手段に保持されたパラメータが更新されたことを示すフラグがセットされたとき、前記第二の記憶手段に保持されたパラメータを更新したパラメータから該パラメータの正当性を検証するための第二のチェックコードを算出するチェックコード算出手段と、
前記第二の記憶手段に保持された前記第一のチェックコードと前記第二のチェックコードとを比較するチェックコード比較手段と、
このチェックコード比較手段によって前記第二の記憶手段に保持された前記第一のチェックコードと前記第二のチェックコードとが相違したと判定されたとき、前記第二の記憶手段に保持されたパラメータを更新したパラメータおよび前記第二のチェックコードを前記第一の記憶手段にそれぞれ転送して、前記第一の記憶手段に予め保持されていた前記パラメータおよび前記第一のチェックコードを上書きする第二の転送手段と、
前記第一の記憶手段に予め保持されていたパラメータを上書きしたパラメータを読み込み、動作モードを再設定するパラメータ設定手段と、
を備えることを特徴とするプログラマブルコントローラ。
【請求項３】
請求項１〜２のいずれかに記載のプログラマブルコントローラであって、
前記パラメータおよび前記第一のチェックコードは、プログラマブルコントローラに接続される所定の機器毎に予め複数のグループに分類されて前記第一の記憶手段に保持され、
前記チェックコード算出手段は、プログラマブルコントローラの初期起動時に、前記分類保持されたパラメータ毎に各パラメータの正当性を検証するためのチェックコードをそれぞれ算出し、
前記チェックコード比較手段は、算出された複数の前記チェックコードと該チェックコードに対応する前記第一のチェックコードとをそれぞれ比較すると共に、
前記プログラマブルコントローラは、更に前記チェックコード比較手段によってチェックコードが一致したと判定されたとき、前記パラメータ設定手段に前記パラメータを設定させることを特徴とするプログラマブルコントローラ。
【請求項４】
請求項１〜２のいずれかに記載のプログラマブルコントローラであって、
前記パラメータおよび前記第一のチェックコードは、プログラマブルコントローラに接続される所定の機器毎に予め複数のグループに分類されて前記第一の記憶手段に保持され、
前記チェックコード算出手段は、プログラマブルコントローラの初期起動時に、前記分類保持されたパラメータ毎に各パラメータの正当性を検証するためのチェックコードをそれぞれ算出し、
前記チェックコード比較手段は、算出された複数の前記チェックコードと該チェックコードに対応する前記第一のチェックコードとをそれぞれ比較すると共に、
前記プログラマブルコントローラは、更に前記チェックコード比較手段によってチェックコードが相違したと判定されたとき、相違した前記チェックコードが含まれる前記グループを通知する通知手段と
を備えることを特徴とするプログラマブルコントローラ。
【請求項５】
前記第一または第二のチェックコードは、前記パラメータを順次加算して合計値としたＳＵＭ値、または前記パラメータを巡回計算した値であることを特徴とする請求項１〜４のいずれかに記載のプログラマブルコントローラ。
【請求項６】
前記第一の記憶手段は、書き換え可能な不揮発性メモリであることを特徴とする請求項１〜５のいずれかに記載のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パラメータを参照し、そのパラメータに応じて所定の動作をするプログラマブルコントローラに関する。
【背景技術】
【０００２】
従来から知られているように、プログラマブルコントローラ（以下、ＰＬＣとも略記する）は、ファクトリ・オートメーション（ＦＡ）の制御装置として用いられている。このＰＬＣは、一般に複数のモジュールから構成される。これらのモジュールには、ＰＬＣ全体の制御を統率するためのＣＰＵモジュール、ＦＡの生産装置や設備装置の適所に取り付けられたスイッチやセンサの信号を入力するための入力モジュール、アクチュエータなどに制御信号を出力するための出力モジュール、通信ネットワークに接続するための通信モジュールおよびこれらの各モジュールに作動用電力を供給する電源モジュールなどがある。ＰＬＣはこれらのモジュールを適宜組み合わせて構成される。
ＣＰＵモジュールは、入力モジュールから入力された信号をＣＰＵモジュールのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）メモリに取り込み（入力リフレッシュ）、予め登録されたユーザプログラム（シーケンスプログラム）に基づき論理演算し（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力モジュールに送り出し（出力リフレッシュ）、その後いわゆる周辺のシステム処理（ローダ処理、各種システム処理）をする一連の処理を、繰り返す。ＣＰＵモジュールは、これらの処理を繰り返すことで、対象とする機器（以降、制御対象機器と呼ぶ）を制御する。
【０００３】
一方、このような制御対象機器のインタフェース仕様にはいろいろな種類が存在する。その制御対象機器のインタフェース仕様に応じていちいち入出力モジュールなどを交換していたのでは効率が悪いため、一般的にＰＬＣは制御対象機器のインタフェース仕様に応じて動作モードを決定するパラメータをＰＬＣ内に備え、そのパラメータに従った動作設定をするようにしている。このパラメータは、ＰＬＣに内蔵された不揮発性メモリに予め保持されており、制御対象機器と入出力モジュール間の信号の扱いや、ＣＰＵモジュールと入出力モジュール間の信号の扱い方が定められて、ＰＬＣの電源ＯＮ時に読み込まれる。こうしてＰＬＣは、１つのハードウェアによって多種のアプリケーション（ユーザ要求）に対応できるようになっている。
また前述したパラメータはユーザ仕様に応じて適宜更新されて使われる。このパラメータを更新するには、ＰＬＣにプログラミングローダなどの設定機器を接続して、パラメータとこのパラメータの更新を促すためのフラグ情報などと共にＰＬＣにダウンロードする。ＰＬＣはそのフラグ情報を定期的にチェックすることでパラメータの更新を実行する。
ちなみに、現在設定中のパラメータを変更すべく不揮発性メモリのパラメータを書き換えるには、概略以下のような手順にて行う。すなわち、（１）まずＰＬＣを停止させ、ジャンパーピンやディップスイッチ等によって、ＰＬＣ の動作モードをパラメータ更新モードに変更する。（２）次いで、パラメータのダウンロードを実行する。これにより、パラメータは不揮発性メモリに保持される。（３）ダウンロードが完了したらならば、ＰＬＣをプログラム実行モードに変更した後、再起動させる。
【０００４】
このような、ＰＬＣを停止させた後に、パラメータをダウンロードして再起動する手間を省いたＰＬＣが提案されている。（例えば、特許文献１を参照）。このＰＬＣは、プログラム稼動中に保持されているプログラムの書き換えをするためのプログラムを保持する第１メモリと、この第１メモリに保持されたプログラムをバックアップする第２メモリと、プログラムを実行する際に使用する第３メモリとを備える。そしてＰＬＣは、稼働中にダウンロードしたプログラムを第２メモリに保持させ、ダウンロードが正常に行なわれたか否かを確認し、そのダウンロードしたプログラムを第１メモリにコピー後、第３メモリに展開するように構成されている。
【特許文献１】特開２００４−２７２６２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のＰＬＣは、不揮発性メモリに保持されたパラメータの更新を促すフラグ情報がセットされたか否かによって更新処理を実行するようにした場合、ＰＬＣの稼動中にパラメータが変わったか否かを判断することができない。もちろん、更新を目的とするパラメータが、現在保持されているパラメータと同一であった場合でも、（そのパラメータの更新処理は不要であるが）フラグがセットされる度に更新処理を実行しなければならなかった。このため、この種のＰＬＣは、不揮発性メモリの書き換え頻度が高く、その寿命を大きく短縮させてしまうという問題があった。
一方、（前述、不要なパラメータの更新を避けるために）、現在保持されているパラメータと更新を目的とするパラメータそのものを比較し、パラメータの変化を検出する方法も考えられる。しかし、このような方法ではパラメータの量に応じて、その比較時間が増大するという問題もあった。
更に、不揮発性メモリに予め保持されたパラメータが破損していた場合、起動時に誤った動作モードになり、ＰＬＣの誤動作を招く原因となる。これは、ＰＬＣを実際に稼動させてみて初めて異常に気付くことが多く、事故の原因にもなりかねない。そして、異常の挙動のみでは、原因究明に多大な時間を要することも否めなかった。
【０００６】
本発明は、上記のような問題点を鑑みてなされたものであり、その目的は、ＰＬＣが稼動状態のまま、パラメータの更新を反映することができ、長寿命なＰＬＣを提供することにある。
更に本発明は、破損したパラメータを検出した場合に、ＰＬＣを稼動せずに、（入出力リフレッシュおよび演算を行わない）その破損したパラメータを的確に通知する信頼性の高いＰＬＣを提供することにある。更に本発明は、ユーザによる破損したパラメータの修復時間を節約することにある。
【課題を解決するための手段】
【０００７】
上述した目的を達成するため本発明の請求項１に係るプログラマブルコントローラは、動作モードを決定するパラメータを読み込み、当該パラメータに応じた動作モードを設定して動作するプログラマブルコントローラであって、パラメータおよびこのパラメータの正当性を検証するための第一のチェックコードが予め保持された第一の記憶手段と、この第一の記憶手段に保持されたパラメータを第二の記憶手段に転送する第一の転送手段と、第二の記憶手段に保持されたパラメータが更新されたことを示すフラグがセットされたとき、第二の記憶手段に保持されたパラメータを更新したパラメータから該パラメータの正当性を検証するための第二のチェックコードを算出するチェックコード算出手段と、第一のチェックコードと第二のチェックコードとを比較するチェックコード比較手段と、このチェックコード比較手段によって第一のチェックコードと第二のチェックコードとが相違したと判定されたとき、第二の記憶手段に保持されたパラメータを更新したパラメータおよび第二のチェックコードを第一の記憶手段にそれぞれ転送して、第一の記憶手段に予め保持されていたパラメータおよび第一のチェックコードを上書きする第二の転送手段と、第一の記憶手段に予め保持されていたパラメータを上書きしたパラメータを読み込み、動作モードを再設定するパラメータ設定手段と、を備えることを特徴とする。
請求項２に係るプログラマブルコントローラは、動作モードを決定するパラメータを読み込み、当該パラメータに応じた動作モードを設定して動作するプログラマブルコントローラであって、パラメータおよびこのパラメータの正当性を検証するための第一のチェックコードが予め保持された第一の記憶手段と、この第一の記憶手段に保持されたパラメータおよび第一のチェックコードを第二の記憶手段にそれぞれ転送する第一の転送手段と、第二の記憶手段に保持されたパラメータが更新されたことを示すフラグがセットされたとき、第二の記憶手段に保持されたパラメータを更新したパラメータから該パラメータの正当性を検証するための第二のチェックコードを算出するチェックコード算出手段と、第二の記憶手段に保持された第一のチェックコードと第二のチェックコードとを比較するチェックコード比較手段と、このチェックコード比較手段によって第二の記憶手段に保持された第一のチェックコードと第二のチェックコードとが相違したと判定されたとき、第二の記憶手段に保持されたパラメータを更新したパラメータおよび第二のチェックコードを第一の記憶手段にそれぞれ転送して、第一の記憶手段に予め保持されていたパラメータおよび第一のチェックコードを上書きする第二の転送手段と、第一の記憶手段に予め保持されていたパラメータを上書きしたパラメータを読み込み、動作モードを再設定するパラメータ設定手段と、
を備えることを特徴とする。
【０００８】
請求項３に記載のプログラマブルコントローラは、請求項１〜２のいずれかに記載のプログラマブルコントローラであって、パラメータおよび第一のチェックコードは、プログラマブルコントローラに接続される所定の機器毎に予め複数のグループに分類されて第一の記憶手段に保持され、チェックコード算出手段は、プログラマブルコントローラの初期起動時に、分類保持されたパラメータ毎に各パラメータの正当性を検証するためのチェックコードをそれぞれ算出し、チェックコード比較手段は、算出された複数のチェックコードと該チェックコードに対応する第一のチェックコードとをそれぞれ比較すると共に、プログラマブルコントローラは、更にチェックコード比較手段によってチェックコードが一致したと判定されたとき、パラメータ設定手段にパラメータを設定させることを特徴とする。
請求項４に記載のプログラマブルコントローラは、請求項１〜２のいずれかに記載のプログラマブルコントローラであって、パラメータおよび第一のチェックコードは、プログラマブルコントローラに接続される所定の機器毎に予め複数のグループに分類されて第一の記憶手段に保持され、チェックコード算出手段は、プログラマブルコントローラの初期起動時に、分類保持されたパラメータ毎に各パラメータの正当性を検証するためのチェックコードをそれぞれ算出し、チェックコード比較手段は、算出された複数のチェックコードと該チェックコードに対応する第一のチェックコードとをそれぞれ比較すると共に、プログラマブルコントローラは、更にチェックコード比較手段によってチェックコードが相違したと判定されたとき、相違したチェックコードが含まれるグループを通知する通知手段とを備えることを特徴とする。
【０００９】
請求項５に記載のプログラマブルコントローラは、第一または第二のチェックコードは、パラメータを順次加算して合計値としたＳＵＭ値、またはパラメータを巡回計算した値であることを特徴とする。
請求項６に記載のプログラマブルコントローラは、第一の記憶手段が、書き換え可能な不揮発性メモリであることを特徴とする。
【発明の効果】
【００１０】
本発明の請求項１に係る構成によれば、パラメータおよびこのパラメータの正当性を検証するための第一のチェックコードを予め第一の記憶手段に保持しておき、パラメータの正当性を検証するためのチェックコードを所定の周期で算出し、この算出されたチェックコードと第一のチェックコードとを比較し相違したとき、動作モードの設定をする構成としたのでＰＬＣが稼動状態（運用中）のままパラメータを更新して反映することができる。すなわち、本発明の請求項１に係るＰＬＣは、ＰＬＣの稼動したまま動作モードの変更が可能となる。
また、本発明の請求項２に係る構成によれば、パラメータおよびこのパラメータの正当性を検証するための第一のチェックコードを予め第一の記憶手段に保持しておき、第一の記憶手段よりもアクセスタイムが速い第二の記憶手段にパラメータを転送し、第二の記憶手段が保持したパラメータの正当性を検証するためのチェックコードを所定の周期で算出する。この算出されたチェックコードと第一のチェックコードとを比較し相違したとき、第二の記憶手段に保持されたパラメータおよびこのパラメータから算出されたチェックコードを第一の記憶手段にそれぞれ転送し、この転送されたパラメータに応じて動作モードを設定する構成としたので、ＰＬＣが稼動状態（運用中）のままパラメータを更新し反映することができる。更に、不要なパラメータの更新を阻止することができるので、ＰＬＣの稼動したまま動作モードの変更が可能で、且つ長寿命なＰＬＣを提供することができる。
【００１１】
また、本発明の請求項３に係る構成によれば、パラメータおよびこのパラメータの正当性を検証するための第一のチェックコードを予め第一の記憶手段に保持しておき、第一の記憶手段よりもアクセスタイムが速い第二の記憶手段にパラメータおよび第一のチェックコードを転送し、第二の記憶手段が保持したパラメータの正当性を検証するためのチェックコードを所定の周期で算出する。この算出されたチェックコードと第二の記憶手段が保持したチェックコードとを比較し相違したとき、第二の記憶手段に保持されたパラメータおよびこのパラメータから算出されたチェックコードを第一の記憶手段にそれぞれ転送し、この転送されたパラメータに応じて動作モードの設定をする構成としたので、ＰＬＣが稼動状態（運用中）のままパラメータを高速に更新して反映することができる。更に、不要なパラメータの更新を阻止することができるので、ＰＬＣの稼動したまま動作モードの変更が可能で、且つ長寿命なＰＬＣを提供することができる。
また、本発明の請求項４に係る構成によれば、パラメータおよび第一のチェックコードは、プログラマブルコントローラに接続される所定の機器毎に予め複数のグループに分類して第一の記憶手段に保持される。そして、プログラマブルコントローラの初期起動時に、分類保持されたパラメータ毎に各パラメータの正当性を検証するためのチェックコードをそれぞれ算出し、この算出された複数のチェックコードとこの複数のチェックコードに対応する第一のチェックコードとをそれぞれ比較し、それが全て一致したとき、パラメータを設定する構成としたので、ＰＬＣは誤った動作モードで稼動せず、ＰＬＣの誤動作を防ぎ、事故などを未然に防ぐことのできる信頼性の高いＰＬＣを提供することができる。すなわち、常に正しい動作モードにて駆動する信頼性の高いＰＬＣを提供することができる。
【００１２】
また、本発明の請求項５に係る構成によれば、パラメータおよび第一のチェックコードは、プログラマブルコントローラに接続される所定の機器毎に予め複数のグループに分類して第一の記憶手段に保持される。そして、プログラマブルコントローラの初期起動時に、分類保持されたパラメータ毎に各パラメータの正当性を検証するためのチェックコードをそれぞれ算出し、この算出された複数のチェックコードとこの複数のチェックコードに対応する第一のチェックコードとをそれぞれ比較し、そのいずれかが相違したとき、相違したチェックコードが含まれるグループを通知する構成としたので、ユーザは破損したパラメータのグループを容易に知ることができる。このため、破損したパラメータの修復作業では破損した特定のパラメータが含まれるグループのパラメータを修復すれば良いため、修復時間を節約することができる。
また、本発明の請求項６に係る構成によれば、一般的に広く知られたＳＵＭ値をチェックコードとしたので、簡単な加算プログラム（特殊な計算を必要としないプログラム）でチェックコード算出手段を作成することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の好適な実施形態について図１〜図７の図面を基に説明する。尚、これらの図面は本発明の一実施形態を説明するための図面であって、これらの図面によって本発明が限定されるものではない。
【実施例１】
【００１４】
図１は、本発明の実施例１に係るプログラマブルコントローラの内部構成図である。図１において、１００は本発明のプログラマブルコントローラ（以下ＰＬＣ）であり、１０５は図示しないセンサなどの信号が与えられる入力部、１０７は測定結果などを表示する表示部、１０８は各種設定操作などをする操作部、１０４はＰＬＣ１００がネットワーク１１０を介して図示しない他の装置と通信をする通信部である。
１０２は、ＰＬＣの動作モードを決定するパラメータを保持するＥ2ＰＲＯＭやフラッシュメモリなどからなる不揮発性メモリ（第一の記憶手段）、１０３はＳＲＡＭなどからなる作業メモリ（第二の記憶手段）、１０６は図示しないアクチュエータなどの外部機器に制御信号を与える出力部、１０１は入力部１０５からの信号を基に演算などを行って出力部に制御の指示をするとともに、入出力パラメータを更新する制御部である。
制御部１０１は、パラメータを順番に加算していき合計値（ＳＵＭ値）とするチェックコード算出手段１０１ａと、予め不揮発性メモリに保持されたＳＵＭ値とパラメータから算出したＳＵＭ値とを比較するチェックコード比較手段１０１ｂと、不揮発性メモリに保持されたパラメータを参照し、その値に従って、制御部１０１自らの動作モードを決定するとともに、入力部１０５と出力部１０６に対して、回路の動作を決定する所定の信号を与えるパラメータ設定手段１０１ｃとを備える。
【００１５】
これらチェックコード算出手段１０１ａ、チェックコード比較手段１０１ｂおよびパラメータ設定手段１０１ｃは、いずれも制御部１０１の内部メモリ（不図示）に保持されるプログラムである。
１０９は制御部１０１と不揮発性メモリ１０２、作業メモリ１０３、および通信部１０４を接続する内部バスである。
また、本発明の実施例１に係るＰＬＣは、制御部１０１や入力部１０５、出力部１０６などのそれぞれの構成要素を各々モジュール構成にしても実現可能である。
概略的には上述したように構成された本発明の実施例１に係るＰＬＣ１００が特徴とするところは、不揮発性メモリ（第一の記憶手段）に予め保持されたＰＬＣの動作モードを決定するパラメータ（オリジナルパラメータ）が更新されると、この更新を検知し、ＰＬＣが稼動中であっても動作モードを再設定してこれを反映する点にある。
このような特徴を備えた本発明の実施例１に係るＰＬＣの作動について、より詳細に説明する。
本発明の実施例１に係るＰＬＣ１００は、電源投入後の初期起動時に、制御部１０１が不揮発性メモリ１０２に予め保持されたパラメータを参照し、このパラメータに従った動作を設定するように構成されている。そして、前述パラメータを適宜変更することによって多種のユーザアプリケーションに対応することができるようになっている。
【００１６】
図２は、本発明の実施例１に係る、ＰＬＣ１００の不揮発性メモリ１０２に保持されたパラメータに関わるメモリ情報を示す図である。この図において、２００は、不揮発性メモリの所定のアドレスに割り付けられたパラメータ領域である。２０１は、制御部１０１と入力部１０５の間における信号の扱い方、および、入力部１０５に対しての回路の動作を決定する入力パラメータであり、２０２は、入力パラメータ２０１を基に、チェックコード算出手段１０１ａによって得られた入力パラメータＳＵＭ値である。２０３は、制御部１０１と出力部１０６の間における信号の扱い方、および、出力部１０６の動作を決定する出力パラメータであり、２０４は出力パラメータ２０３を基に、チェックコード算出手段１０１ａによって得られた出力パラメータＳＵＭ値である。
尚、本発明にて扱うＳＵＭ値（チェックコード）は、データの正当性をチェックするためのコードとして広く一般的に知られたチェックコードであり、複数のパラメータを順次加算して得たものである。
さて、図３は、プログラマブルコントローラに接続される所定の機器（モジュール）毎に複数のグループに予め分類されたパラメータの例を示す表である。図３に示されるパラメータ分類は所定の機器（モジュール）毎のグループを意味し、No.１〜No.５は、図２に記載の入力パラメータ２０１に分類される項目であり、NO.６〜NO.１０は、図２に記載の出力パラメータ２０３に分類される項目である。また、No.１１は、図２には示してないが、入出力パラメータに分類される項目である。
【００１７】
図３において、入力パラメータに分類されるパラメータを説明する。例えば、NO.１の動作レンジ設定パラメータは、アナログ入力機器（モジュール）に対する動作レンジの設定をするパラメータであり、このパラメータを設定することでＡ／Ｄ変換特性を変えることができる。NO.２の変換許可／禁止設定パラメータは、アナログ入力機器（モジュール）に対するＡ／Ｄ変換を実施するか否かを決定するパラメータである。NO.３の断線時スケール設定パラメータは、アナログ入力機器（モジュール）に接続される外部負荷が未接続となった場合に、アナログ入力機器（モジュール）のＡ／Ｄ変換値を上限値とするか、下限値とするかを決定するパラメータである。NO.４の平均値回数設定パラメータは、アナログ入力機器（モジュール）へのＡ／Ｄ変換値の平均値を算出するための取得回数を決定するパラメータであり、移動平均や単純平均や加重平均など様々な用途で活用される。
同様、図３において、出力パラメータに分類されるパラメータを説明する。例えば、NO.６の出力許可／禁止パラメータはアナログ出力機器（モジュール）に対してＤ／Ａ変換を実施するか否かを決定するパラメータである。NO.７の警報使用／未使用設定パラメータはアナログ入力機器（モジュール）のＡ／Ｄ変換値が後述の警報を発する閾値に達したときに、警報を発するか否かを設定するパラメータである。NO.８の警報種別パラメータは、警報を発するときに、警報の種別（上限／下限の絶対値警報や上限／下限の偏差警報など）を設定するパラメータである。NO.９のＡＬＭ設定値パラメータは、アナログ入力モジュールのＡ／Ｄ変換値を受けて、警報を発する閾値を決定するパラメータである。NO.１０の警報ＯＮディレイ時間パラメータは、警報を発するときに、前述警報を発する閾値にアナログ入力機器（モジュール）のＡ／Ｄ変換値が達してから、警報を発するまでの時間を設定するパラメータである。
【００１８】
また、同図３において、入出力パラメータに分類されるパラメータを説明る。NO.１２のスケーリング設定パラメータは、アナログ入力機器（モジュール）への入力信号に対するアナログ出力機器（モジュール）の出力信号特性を決定するパラメータである。このパラメータを設定することで、アナログ入出力機器（モジュール）のＡ／Ｄ変換値およびＤ／Ａ変換値を工業値に換算したスケール（量）に変えて扱うことができる。
このように、プログラマブルコントローラの動作モードを決定するパラメータは、プログラマブルコントローラに接続される所定の機器（モジュール）毎に複数のグループに分類されて不揮発性メモリ１０２に保持される。
図４は、本発明の実施例１に係る、プログラマブルコントローラの動作を説明するフローチャートである。図４を参照しながら本発明の詳細説明をする。ここでは電源投入後、ＰＬＣの初期化を目的とする状態を初期起動フェーズ（Ｓ３０１〜Ｓ３０４）とし、初期化以降の通常の運用状態を運用フェーズ（Ｓ３０５以降）とし、ＰＬＣを停止する異常状態を異常フェーズ（Ｓ３２０）と定義する。また、本実施例にて説明するＳＵＭ値の算出を行うチェックコード算出手段１０１ａは、制御部１０１がパラメータを順番に加算していき合計値とする制御部１０１が実行するプログラムである。
【００１９】
さて、Ｓ３０１において、制御部１０１は、グループ毎に分類保持された入力パラメータ２０１および出力パラメータ２０３のそれぞれのＳＵＭ値を算出し、制御部１０１内の図示しない退避領域にそれぞれ転送する。
次いで制御部１０１は、Ｓ３０２に進み、Ｓ３０１にて算出した入力パラメータ２０１に対するＳＵＭ値と入力パラメータＳＵＭ値２０２、およびＳ３０１にて算出した出力パラメータ２０３に対するＳＵＭ値と出力パラメータＳＵＭ値２０４とをそれぞれ比較する。これら対に比較したＳＵＭ値がそれぞれ等しい場合、制御部１０１は、パラメータが正常であると判定し、Ｓ３０４へと移行する。これら対に比較したＳＵＭ値のいずれか一報が異なる場合は、パラメータに異常があったり、不揮発性メモリに異常がある可能性が高い。したがって、このままＰＬＣを運用した場合には正常に動作しないことが想定されるので、制御部１０１は、パラメータが異常であると判定し、ＰＬＣを稼動せずにＳ３２０（異常フェーズ）へと移行する。
Ｓ３２０に移行した制御部１０１は、異常であるパラメータを含むグループ名を表示部１０７に通知（表示）すると共に、ネットワーク１１０を経由して本装置に接続される他の機器に向けてその異常（パラメータに異常を発見したことと、異常であるパラメータを含むグループ名）を通知する。
【００２０】
Ｓ３０２にてパラメータが正常であると判定した場合、制御部１０１は、Ｓ３０４に進み、入力パラメータ２０１と出力パラメータ２０３を参照する。その値に従って、制御部１０１は、制御部１０１自らの動作モードを決定するとともに、入力部１０５と出力部１０６に対して、回路の動作を決定する所定の信号を与える。すなわち、制御部１０１は初期起動フェーズにおいて、入力パラメータ２０１と出力パラメータ２０３が正常であるか否かを判定し、それぞれのパラメータが正常である場合にのみパラメータを設定して運用フェーズ（Ｓ３０５以降）に移行する。
制御部１０１の処理はＳ３０５に進み、入力部１０５から入力された信号を制御部１０１内のＩ／Ｏメモリ（不図示）に取り込む（入力処理）。Ｓ３０６において制御部１０１は、予め保持されたプログラムに基づいて論理演算を実行する。次いで制御部１０１は、Ｓ３０７において、その演算実行結果をＩ／Ｏメモリに書き込んで出力部１０６に送り出す（出力処理）。この出力処理の後、制御部１０１は、Ｓ３０８において入力パラメータ２０１と出力パラメータ２０３のデータが更新されたか否かを不図示のデータ更新完了フラグにて確認する。
Ｓ３０８にてデータ更新完了フラグ（不図示）がセットされてない場合、すなわち入力パラメータ２０１と出力パラメータ２０３のデータが両方とも更新されてない場合（Ｓ３０８ Ｎｏ）、制御部１０１はＳ３０５へ移行する。
【００２１】
制御部１０１は、前述データ更新完了フラグ（不図示）がセットされた場合、すなわち入力パラメータ２０１と出力パラメータ２０３のどちらかのデータが更新されたと判定したとき（Ｓ３０８ Ｙｅｓ）、Ｓ３０９へ移行する。
Ｓ３０９において、制御部１０１は、入力パラメータ２０１および出力パラメータ２０３のそれぞれに対してＳＵＭ値を算出する。すなわち、制御部１０１は、パラメータ領域２００が更新される所定の周期にて（Ｓ３０８の判定に基き）、入力パラメータ２０１と出力パラメータ２０３のそれぞれに対してＳＵＭ値を算出する。
そして制御部１０１は、Ｓ３１０において、上述入力パラメータ２０１から算出されたＳＵＭ値と入力パラメータＳＵＭ値２０２とを対に比較すると共に、上述出力パラメータ２０３から算出されたＳＵＭ値と出力パラメータＳＵＭ値２０４とを対に比較する。この対に比較したＳＵＭ値のいずれか一方が異なったとき、制御部１０１は、パラメータ領域２００が以前に保持したデータとは違ったデータに書き換えられたと判定し（Ｓ３１０ Ｙｅｓ）、前述データ更新完了フラグ（不図示）をクリアしてＳ３０４に移行する。Ｓ３０４に移行すると制御部１０１は、パラメータを設定した後、入出力処理などの運用フェーズの処理をする。
【００２２】
そして、前述Ｓ３１０で対に比較したＳＵＭ値がいずれも等しい場合、制御部１０１は、パラメータ領域２００に保持されたデータが以前に保持したデータと同じデータであると判定し（Ｓ３１０ Ｎｏ）、前述データ更新完了フラグ（不図示）をクリアして入力処理Ｓ３０５に移行する。
また、不揮発性メモリに保持されたパラメータを更新するための更新データは、ネットワーク１１０経由にて通信部１０４が格納したり、操作部１０８を操作することで格納することができるようになっている。そして、本発明のＰＬＣ１００は、前述データ更新完了フラグ（不図示）がクリア状態のとき、制御部１０１以外にパラメータ領域２００の書き換えが許可され、データ更新完了フラグ（不図示）がセット状態のとき、制御部１０１以外にパラメータ領域２００の書き換えが許可されないように制御（排他論理条件）している。
また、本発明は、制御部１０１にデータ更新を伝える方法として、フラグのやりとり以外に割込にて行うことも可能である。
また、前述した実施例は、パラメータの正当性を検証するためのチェックコードとしてＳＵＭ値を例に説明したが、本発明のプログラマブルコントローラは、ＣＲＣ（Cyclic Redundancy Check）などの巡回計算された符号をチェックコードとしても良い。
【００２３】
以上のようにすることで、本発明は、ＰＬＣの動作モードを決定するパラメータ（オリジナルパラメータ）およびそのオリジナルパラメータから算出されたチェックコード（オリジナルＳＵＭ値）を不揮発性メモリに予め保持しておき、ＰＬＣ稼動中（運用中）において制御部１０１は、オリジナルパラメータの更新を目的とする更新データが、オリジナルパラメータが保持された領域上に上書きされると、その更新データに対してＳＵＭ値を算出する。
本発明のＰＬＣは、制御部１０１が更新データから算出されたＳＵＭ値とオリジナルＳＵＭ値とを比較し、その比較の結果、互いのＳＵＭ値が相違したことによって、更新されたパラメータに応じた動作モードを再設定するようにしたので、ＰＬＣ稼動中にパラメータを更新し、それを反映することが可能となった。
また、本発明は、更新データから算出されたＳＵＭ値とオリジナルＳＵＭ値を比較するようにしたので、更新データがオリジナルパラメータと違ったデータパターンであることを、的確に検出することが可能となった。
また、本発明は、オリジナルパラメータとオリジナルＳＵＭ値を入力用と出力用（入力パラメータ、入力パラメータＳＵＭ値、出力パラメータ、出力パラメータＳＵＭ値）に分類して、すなわち、プログラマブルコントローラに接続される所定の機器毎に予め分類（グループ分類）して不揮発性メモリに保持しておき、ＰＬＣの初期起動時（初期起動フェーズ）において、入力パラメータから算出されたＳＵＭ値と入力パラメータＳＵＭ値とを比較する。それと同様、本発明のＰＬＣは、出力パラメータから算出されたＳＵＭ値と出力パラメータＳＵＭ値とを比較する。この結果、本発明は、比較対象としたＳＵＭ値が相違した場合に、ＰＬＣを稼動せずに異常処理（異常フェーズ）に移行する。
【００２４】
そして本発明は、異常処理（異常フェーズ）にて、相違したパラメータが含まれるグループを通知するようにした。こうすることで本発明のＰＬＣは、パラメータの破損による思わぬ不具合を回避することが可能となるともに、破損したパラメータを容易に特定できるので、不具合の原因究明の時間を大幅に削減することが可能となった。更に本発明のＰＬＣは、パラメータを修復するときに、ユーザは破損したパラメータのみを修復すれば良いことから、パラメータの更新に対するユーザの負担や時間を節約することが可能となった。
また、本発明は、ＰＬＣの初期起動時（初期起動フェーズ）において、パラメータのＳＵＭ値の比較をすることによりオリジナルパラメータが正常であるか否かを判定した結果、パラメータが正常である場合にのみパラメータを設定し運用フェーズに移行するようにしたので、ＰＬＣは誤った動作モードで稼動せず、ＰＬＣの誤動作を防ぎ、事故などを未然に防ぐことのできる信頼性の高いＰＬＣを提供することが可能となった。
【実施例２】
【００２５】
次に本発明の実施２に係るプログラマブルコントローラについて図５〜７を参照しながら説明する。
この実施例２が上述した実施例１と異なるところは、図５において、図１に対して第一の転送手段１０１ｄおよび第二の転送手段１０１ｅが付加された点、図６において、図２に対して作業メモリ１０３に割付される更新データ領域の説明図（図６（ｂ））が付加された点、図７において、図４に対してプログラムの処理であるＳ３０３、Ｓ３１１、Ｓ３１２が付加された点にある。
また、図５〜７において図１〜４と同様な構成は同符号にて記載し、実施例１と重複する説明は省略する。
図５は、本発明の実施例２に係る、プログラマブルコントローラの内部構成図である。図５において図１との相違点は、不揮発性メモリ（第一の記憶手段）１０２に保持されたパラメータおよびそのＳＵＭ値（第一のチェックコード）を作業メモリ（第二の記憶手段）１０３に転送する第一の転送手段１０１ｄと、作業メモリ（第二の記憶手段）１０３に保持されたパラメータおよびそのＳＵＭ値（第二のチェックコード）を不揮発性メモリ（第一の記憶手段）１０２に転送する第二の転送手段１０１ｅとが制御部１０１に付加されている点である。
【００２６】
すなわち、制御部１０１は、不揮発性メモリ（第一の記憶手段）１０２に保持されたパラメータおよびそのＳＵＭ値（第一のチェックコード）を作業メモリ（第二の記憶手段）１０３に転送する第一の転送手段１０１ｄと、パラメータを順番に加算していき合計値（ＳＵＭ値）とするチェックコード算出手段１０１ａと、作業メモリ（第二の記憶手段）１０３に転送され保持されたＳＵＭ値（第一のチェックコード）と作業メモリ（第二の記憶手段）１０３に転送され保持されたパラメータに対して算出したＳＵＭ値（第二のチェックコード）とを比較するチェックコード比較手段１０１ｂと、作業メモリ（第二の記憶手段）１０３に保持されたパラメータおよびそのＳＵＭ値（第二のチェックコード）を不揮発性メモリ（第一の記憶手段）１０２に転送する第二の転送手段１０１ｅと、不揮発性メモリ（第一の記憶手段）１０２に保持されたパラメータを参照し、その値に従って、制御部１０１自らの動作モードを決定するとともに、入力部１０５と出力部１０６に対して、回路の動作を決定する所定の信号を与えるパラメータ設定手段１０１ｃとを備える。
これらチェックコード算出手段１０１ａ、チェックコード比較手段１０１ｂ、パラメータ設定手段１０１ｃ、第一の転送手段１０１ｄおよび第二の転送手段１０１ｅは、いずれも制御部１０１の内部メモリ（不図示）に保持されるプログラムである。
【００２７】
図６は、本発明の実施例２に係るＰＬＣ１００の不揮発性メモリ１０２と作業メモリ１０３に割り付けされるメモリ情報を示す図である。ちなみに作業メモリ１０３は、第一の記憶手段を構成する不揮発性メモリ１０２よりもアクセスタイムが速いＳＲＡＭ（スタティックＲＡＭ）などを用いる。
概略的には上述したように構成された本発明の実施例２に係るＰＬＣ１００が特徴とするところは、不揮発性メモリ（第一の記憶手段）に保持されたパラメータ（オリジナルパラメータ）をアクセスタイムが速いＳＲＡＭ（第二の記憶手段）に転送し、このＳＲＡＭ上で上述した実施例１よりも短時間でパラメータ（オリジナルパラメータ）の更新を検知し、ＰＬＣが稼動中であっても動作モードを再設定してこれを反映する点にある。
このような特徴を備えた本発明の実施例２に係るＰＬＣの作動について、より詳細に説明する。
さて図６（ａ）は、ＰＬＣ１００の不揮発性メモリ１０２に保持されたパラメータに関わるメモリ情報を示す図であり、実施例１にて説明した図２の説明と同様なのでその説明を省略する。
また、図６（ａ）に示すパラメータは、実施例１の図３と同様に、プログラマブルコントローラに接続される所定の機器（モジュール）毎に複数のグループに分類され、不揮発性メモリ１０２のパラメータ領域２００に保持される。その分類およびパラメータは、実施例１の図３の説明と同様なのでその説明を省略する。
【００２８】
図６（ｂ）は、作業メモリ１０２に割り付けられたメモリ情報を示す図である。この図において、２１０は、制御部１０１が、前述したパラメータ領域２００に保持された入出力パラメータ（２０１，２０３）およびそれらのＳＵＭ値（２０２，２０４）の退避や更新をするための更新データ領域である。入力パラメータ更新データ領域２１１は、制御部１０１が前述入力パラメータ２０１を退避したり、パラメータ更新時には通信部１０４や操作部１０８によって格納された更新データを保持する領域である。入力パラメータＳＵＭ更新領域２１２は、制御部１０１が前述入力パラメータＳＵＭ値２０２を退避したり、このＳＵＭ値２０２を更新するためのデータを保持する領域である。
出力パラメータ更新データ領域２１３は、制御部１０１が前述出力パラメータ２０３を退避したり、パラメータ更新時には通信部１０４や操作部１０８によって格納された更新データを保持する領域である。出力パラメータＳＵＭ更新領域２１４は、制御部１０１が前述出力パラメータＳＵＭ値２０４を退避したり、このＳＵＭ値２０４を更新するためのデータを保持する領域である。
図７は、本発明の実施例２に係るＰＬＣの動作を説明するフローチャートである。この図において、実施例１にて説明した図４との相違点はＳ３０３、Ｓ３１１、Ｓ３１２が付加された点である。その他の処理に関しては実施例１における図４の説明と概略同様であるが、以降の説明は実施例１と相違する動きに限らず全て説明する。
【００２９】
さて図７において、電源投入後、ＰＬＣの初期化を目的とする状態を初期起動フェーズ（Ｓ３０１〜Ｓ３０４）とし、初期化以降の通常の運用状態を運用フェーズ（Ｓ３０５以降）とし、ＰＬＣを停止する異常状態を異常フェーズ（Ｓ３２０）と定義する。また、本実施例にて説明するＳＵＭ値の算出、すなわち、チェックコード算出手段１０１ａは、制御部１０１がパラメータを順番に加算していき合計値とする制御部１０１が実行するプログラムである。
Ｓ３０１において、制御部１０１は、グループ毎に分類保持された入力パラメータ２０１および出力パラメータ２０３のそれぞれのＳＵＭ値を算出し、制御部１０１内の図示しない退避領域にそれぞれ転送する。
次いで制御部１０１は、Ｓ３０２に進み、Ｓ３０１にて算出した入力パラメータ２０１に対するＳＵＭ値と入力パラメータＳＵＭ値２０２、およびＳ３０１にて算出した出力パラメータ２０３に対するＳＵＭ値と出力パラメータＳＵＭ値２０４とをそれぞれ比較する。これら対に比較したＳＵＭ値がそれぞれ等しい場合、制御部１０１は、パラメータが正常であると判定し、Ｓ３０３へと移行する。これら対に比較したＳＵＭ値のいずれか一報が異なる場合は、パラメータに異常があったり、不揮発性メモリに異常がある可能性が高い。したがって、このままＰＬＣを運用した場合には正常に動作しないことが想定されるので、制御部１０１は、パラメータが異常であると判定し、ＰＬＣを稼動せずにＳ３２０（異常フェーズ）へと移行する。
【００３０】
Ｓ３２０に移行した制御部１０１は、異常であるパラメータを含むグループ名を表示部１０７に通知（表示）すると共に、ネットワーク１１０を経由して本装置に接続される他の機器に向けてその異常（パラメータに異常を発見したことと、異常であるパラメータを含むグループ名）を通知する。
Ｓ３０２にてパラメータが正常であると判定した場合、制御部１０１は、Ｓ３０３に進む。Ｓ３０３において制御部１０１は、入力パラメータ２０１、入力パラメータＳＵＭ値２０２および出力パラメータ２０３、出力パラメータＳＵＭ値２０４を更新データ領域２１０にそれぞれ転送する。
次いで制御部１０１は、Ｓ３０４に進み、入力パラメータ２０１と出力パラメータ２０３を参照する。その値に従って、制御部１０１は、制御部１０１自らの動作モードを決定するとともに、入力部１０５と出力部１０６に対して、回路の動作を決定する所定の信号を与える。すなわち、制御部１０１は初期起動フェーズにおいて、入力パラメータ２０１と出力パラメータ２０３が正常であるか否かを判定し、それぞれのパラメータが正常である場合にのみパラメータを設定して運用フェーズ（Ｓ３０５以降）に移行する。
制御部１０１の処理はＳ３０５に進み、入力部１０５から入力された信号を制御部１０１内のＩ／Ｏメモリ（不図示）に取り込む（入力処理）。Ｓ３０６において制御部１０１は、予め保持されたプログラムに基づいて論理演算を実行する。次いで制御部１０１は、Ｓ３０７において、その演算実行結果をＩ／Ｏメモリに書き込んで出力部１０６に送り出す（出力処理）。
【００３１】
この出力処理の後、制御部１０１は、Ｓ３０８において更新データ領域２１０の入力パラメータ更新データ領域２１１と出力パラメータ更新データ領域２１３のデータが更新されたか否かを不図示のデータ更新完了フラグにて確認する。
Ｓ３０８にてデータ更新完了フラグ（不図示）がセットされてない場合、すなわち入力パラメータ更新データ領域２１１と出力パラメータ更新データ領域２１３のデータが両方とも更新されてない場合（Ｓ３０８ Ｎｏ）、制御部１０１は、Ｓ３０５へ移行する。
制御部１０１は、Ｓ３０８にて前述データ更新完了フラグ（不図示）がセットされた場合、すなわち入力パラメータ更新データ領域２１１と出力パラメータ更新データ領域２１３のどちらかのデータが更新されたと判定したとき（Ｓ３０８ Ｙｅｓ）、Ｓ３０９へ移行する。
Ｓ３０９において制御部１０１は、入力パラメータ更新データ領域２１１および出力パラメータ更新データ領域２１３の各更新データに対してＳＵＭ値をそれぞれ算出する。すなわち、制御部１０１は、更新データ領域２１０が更新される所定の周期にて（Ｓ３０８の判定に基き）、入力パラメータ更新データ領域２１１と出力パラメータ更新データ領域２１３の各更新データに対してＳＵＭ値をそれぞれ算出する。
【００３２】
そして制御部１０１は、Ｓ３１０において、上述入力パラメータ更新データ領域２１１の更新データから算出されたＳＵＭ値と入力パラメータＳＵＭ更新領域２１２に保持されたＳＵＭ値とを対に比較すると共に、上述出力パラメータ更新データ領域２１３の更新データから算出されたＳＵＭ値と出力パラメータＳＵＭ更新領域２１４に保持されたＳＵＭ値とを対に比較する。この対に比較したＳＵＭ値のいずれか一方が異なったとき、制御部１０１は、更新データ領域２１０が以前に保持したデータとは違ったデータに書き換えられたと判定する（Ｓ３１０  Ｙｅｓ）。一方、前述対に比較したＳＵＭ値がいずれも等しい場合（Ｓ３１０ Ｎｏ）、制御部１０１は、更新データ領域２１０に更新されたデータがこれまで保持していたデータと同じである（不変）と判定し、前述データ更新完了フラグ（不図示）をクリアして入力処理Ｓ３０５に移行する。
次いで、処理はＳ３１１に進み、Ｓ３１１において制御部１０１は、更新データ領域２１０の更新データをパラメータ領域２００（不揮発性メモリ１０２）に転送する（書き込む）。
例えば、Ｓ３１０において制御部１０１は、入力パラメータＳＵＭ更新領域２１２に転送された（Ｓ３０３にて転送された）ＳＵＭ値と入力パラメータ更新データ領域２１１に保持された更新データから算出したＳＵＭ値とを比較する。この比較の結果、ＳＵＭ値が相違した場合に制御部１０１は、Ｓ３１１において、前述更新データから算出したＳＵＭ値を入力パラメータＳＵＭ更新領域２１２に上書きし、入力パラメータ更新データ領域２１１に保持された更新データを入力パラメータ２０１に転送する（書き込む）と共に、上書きされた入力パラメータＳＵＭ更新領域２１２のＳＵＭ値を入力パラメータＳＵＭ値２０２に転送する（書き込む）。
【００３３】
同様に、Ｓ３１０において制御部１０１は、出力パラメータＳＵＭ更新領域２１４に転送された（Ｓ３０３にて転送された）ＳＵＭ値と出力パラメータ更新データ領域２１３に保持された更新データから算出したＳＵＭ値とを比較する。この比較の結果、ＳＵＭ値が相違した場合に制御部１０１は、Ｓ３１１において、前述更新データから算出したＳＵＭ値を出力パラメータＳＵＭ更新領域２１４に上書きし、出力パラメータ更新データ領域２１３の更新データを出力パラメータ２０３に転送する（書き込む）と共に、上書きされた出力パラメータＳＵＭ更新領域２１４のＳＵＭ値を出力パラメータＳＵＭ値２０４に転送する（書き込む）。もちろん、それぞれのＳＵＭ値が異なれば両方書き込めば良い。
制御部１０１は、更新データおよびそのＳＵＭ値を不揮発性メモリに転送した（書き込んだ）後、Ｓ３１２において、更新できたか否かを確認する。更新できたならば、制御部１０１は、前述データ更新完了フラグ（不図示）をクリアしてＳ３０４に移行（Ｓ３１２ Ｙｅｓ）する。Ｓ３０４に移行したら、制御部１０１は、更新されたパラメータに従った動作設定を行った後、入出力処理などの運用処理をする。
Ｓ３１２で更新できなかった場合（Ｓ３１２ Ｎｏ）に制御部１０１は、不揮発性メモリの破損など、何らかの異常が発生したと判定し、Ｓ３２０の異常処理に移行する。
【００３４】
この例では、Ｓ３０３にて入力パラメータＳＵＭ更新領域２１２には入力パラメータＳＵＭ値２０２を転送したデータが保持され、出力パラメータＳＵＭ更新領域２１４には出力パラメータＳＵＭ値２０４を転送したデータが保持されたものとして説明した。これは、パラメータ領域２００にＥ2ＰＲＯＭなどの不揮発性メモリを使用した場合に、データの読み出しに時間を費やすことから、高速に読み書きできる（アクセスタイムの速い）ＳＲＡＭなどの作業メモリ１０３（第二の記憶手段）に予め退避しておくことで、ＳＵＭ値の比較チェックが高速になる点と、対象とする不揮発性メモリの種類に関係なくＳＵＭ値の比較プログラムを同じ構造にできるメリットがあるためである。
尚、ＳＵＭ値の比較方法は、（入力パラメータＳＵＭ値２０２と出力パラメータＳＵＭ値２０４を作業メモリ１０３にコピーせずに）不揮発性メモリに予め保持されたＳＵＭ値２０２，２０３（オリジナルＳＵＭ値）と更新データ（２１１，２１２）領域の更新データに対して算出したＳＵＭとを比較しても良い。
この場合Ｓ３１０において制御部１０１は、入力パラメータＳＵＭ値２０２と入力パラメータ更新データ領域２１１に保持された更新データから算出したＳＵＭ値とを比較する。この比較の結果、ＳＵＭ値が相違した場合（Ｓ３１０ Ｙｅｓ）に制御部１０１は、Ｓ３１１において、入力パラメータ更新データ領域２１１に保持された更新データを入力パラメータ２０１に転送する（書き込む）と共に、前述更新データから算出したＳＵＭ値を入力パラメータＳＵＭ値２０２に書き込む。
【００３５】
同様Ｓ３１０において、制御部１０１は、出力パラメータＳＵＭ値２０４と出力パラメータ更新データ領域２１３に保持された更新データから算出したＳＵＭ値とを比較する。この比較の結果、ＳＵＭ値が相違した場合（Ｓ３１０ Ｙｅｓ）に制御部１０１は、Ｓ３１１において、出力パラメータ更新データ領域２１３に保持された更新データを出力パラメータ２０３に転送する（書き込む）と共に、前述更新データから算出したＳＵＭ値を出力パラメータＳＵＭ値２０４に書き込む。もちろん、それぞれのＳＵＭ値が異なれば両方書き込めば良い。
また、更新データ領域２１０に保持される更新データは、通信部１０４がネットワーク１１０経由にて更新したり、操作部１０８を操作することで、更新することができるようになっている。そして、本発明のＰＬＣ１００は、前述データ更新完了フラグ（不図示）がクリア状態のときに制御部１０１以外に更新データ領域２１０の書き換えが許可され、データ更新完了フラグ（不図示）がセット状態のときには、制御部１０１以外に更新データ領域２１０の書き換えが許可されないように制御（排他論理条件）している。また、本発明は、制御部１０１にデータ更新を伝える方法として、フラグのやりとり以外に割込にて行うことも可能である。
【００３６】
また、前述した実施例は、パラメータの正当性を検証するためのチェックコードとしてＳＵＭ値を例に説明したが、本発明のプログラマブルコントローラは、ＣＲＣ（Cyclic Redundancy Check）などの巡回計算された符号をチェックコードとしても良い。以上のようにすることで、本発明は、ＰＬＣの動作モードを決定するパラメータ（オリジナルパラメータ）およびそのオリジナルパラメータから算出されたチェックコード（オリジナルＳＵＭ値）を不揮発性メモリに予め保持しておき、ＰＬＣの初期起動時において、制御部１０１はオリジナルパラメータとオリジナルＳＵＭ値を、ＳＲＡＭに退避する。
そして、ＰＬＣ稼動中（運用中）において制御部１０１は、前述ＳＲＡＭに退避されたオリジナルパラメータがオリジナルパラメータの更新を目的とする更新データに更新されると、その更新データに対してＳＵＭ値を算出する。
本発明のＰＬＣは、この算出したＳＵＭ値とＳＲＡＭに退避したオリジナルＳＵＭ値とを比較し、その比較の結果、それぞれのＳＵＭ値が異なったことによって、不揮発性メモリに保持されたオリジナルパラメータとオリジナルＳＵＭ値を書き換えている。そして、本発明のＰＬＣは、更新されたパラメータに応じて動作モードを再設定するようにしたので、ＰＬＣ稼動中にパラメータを更新し、それを反映することが可能となった。
【００３７】
また、本発明は、更新データから算出されたＳＵＭ値とＳＲＡＭにそれぞれ保持されたＳＵＭ値（オリジナルパラメータのコピー）を比較するようにしたので、更新データがオリジナルパラメータと違ったデータパターンであることを、短時間にて的確に検出することが可能となった。
また、本発明は、ＳＵＭ値の比較結果にてパラメータの更新をするようにしたので、不揮発性メモリに対するパラメータの更新を抑制すること（不要な書込みを阻止すること）ができるため、長寿命なＰＬＣを提供することが可能となった。
また、本発明は、オリジナルパラメータとオリジナルＳＵＭ値を入力用と出力用（入力パラメータ、入力パラメータＳＵＭ値、出力パラメータ、出力パラメータＳＵＭ値）に分類して、すなわち、プログラマブルコントローラに接続される所定の機器毎に予め分類（グループ分類）して不揮発性メモリに保持しておき、ＰＬＣの初期起動時（初期起動フェーズ）において、入力パラメータから算出されたＳＵＭ値と入力パラメータＳＵＭ値とを比較する。それと同様、本発明のＰＬＣは、出力パラメータから算出されたＳＵＭ値と出力パラメータＳＵＭ値とを比較する。この結果、本発明は、比較対象としたＳＵＭ値が相違した場合に、ＰＬＣを稼動せずに異常処理（異常フェーズ）に移行する。
【００３８】
また、本発明は、異常処理（異常フェーズ）にて、相違したパラメータが含まれるグループを通知するようにした。こうすることで本発明のＰＬＣは、パラメータの破損による思わぬ不具合を回避することが可能となるともに、破損したパラメータを容易に特定できるので、不具合の原因究明の時間を大幅に削減することが可能となった。更に本発明のＰＬＣは、パラメータを修復するときに、ユーザは破損したパラメータのみを修復すれば良いことから、パラメータの更新に対するユーザの負担や時間を節約することが可能となった。
そして本発明は、ＰＬＣの初期起動時（初期起動フェーズ）において、パラメータのＳＵＭ値の比較をすることによりオリジナルパラメータが正常であるか否かを判定した結果、パラメータが正常である場合にのみパラメータを設定し運用フェーズに移行するようにしたので、ＰＬＣは誤った動作モードで稼動せず、ＰＬＣの誤動作を防ぎ、事故などを未然に防ぐことのできる信頼性の高いＰＬＣを提供することが可能となった。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施例１に係る、プログラマブルコントローラ（ＰＬＣ）の構成を示す内部構成図である。
【図２】本発明の実施例１に係る、プログラマブルコントローラ（ＰＬＣ）におけるメモリ情報を示すブロック図である。
【図３】本発明の実施例１に係る、パラメータが、複数のグループに分類される例を示す表である。
【図４】本発明の実施例１にしたがって、制御部が実行する処理を示すフロー図である。
【図５】本発明の実施例２に係る、プログラマブルコントローラ（ＰＬＣ）の構成を示す内部構成図である。
【図６】本発明の実施例２に係る、プログラマブルコントローラ（ＰＬＣ）におけるメモリ情報示すブロック図である。
【図７】本発明の実施２にしたがって、制御部が実行する処理を示すフロー図である。
【符号の説明】
【００４０】
１００    プログラマブルコントローラ（ＰＬＣ）
１０１    制御部
１０１ａ  チェックコード算出手段
１０１ｂ  チェックコード比較手段
１０１ｃ  パラメータ設定手段
１０１ｄ  第一の転送手段
１０１ｅ  第二の転送手段
１０２    不揮発性メモリ
１０３    作業メモリ
１０４    通信部
１０５    入力部
１０６    出力部
１０７    表示部
１０８    操作部
１０９    内部バス
１１０    ネットワーク
２００    パラメータ領域（不揮発性メモリ）
２０１    入力パラメータ
２０２    入力パラメータＳＵＭ値
２０３    出力パラメータ
２０４    出力パラメータＳＵＭ値
２１０    更新データ領域（作業メモリ）
２１１    入力パラメータ更新データ領域
２１２    入力パラメータＳＵＭ更新領域
２１３    出力パラメータ更新データ領域
２１４    出力パラメータＳＵＭ更新領域
【図１】
0005012548.tif 000002
【図２】
0005012548.tif 000003
【図３】
0005012548.tif 000004
【図４】
0005012548.tif 000005
【図５】
0005012548.tif 000006
【図６】
0005012548.tif 000007
【図７】
0005012548.tif 000008