(57)【要約】【課題】プログラム稼動中に保持されているプログラムの書き換えを可能にするＰＬＣ用機器を提供すること【解決手段】ＰＬＣを構成する拡張ＣＰＵユニット２０は、Ｃ言語で記述されたプログラムを実行可能となっている。そして、プログラムを保持する第１メモリ２１と、その第１メモリをバックアップするための第２メモリ２２と、プログラムを実行する際に使用する第３メモリ２３とを備え、稼働中にダウンロードしたプログラムを２メモリに格納させ、ダウンロードが成功した場合に、そのダウンロードしたプログラムを第１メモリにコピー後、第３メモリにブートするようにした。【選択図】        図３
2004272629.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルコントローラを構成する機器であって、
前記機器は、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能であり、
前記プログラムを保持する第１メモリと、
その第１メモリをバックアップするための第２メモリと、
前記プログラムを実行する際に使用する第３メモリとを備え、
稼働中にダウンロードしたプログラムは、前記第２メモリに格納させ、ダウンロードが成功した場合に、そのダウンロードしたプログラムに基づくプログラムを第３メモリに展開して実行するようにしたことを特徴とするプログラマブルコントローラ用機器。
【請求項２】
前記ダウンロードしたプログラムに基づくプログラムは、
前記ダウンロードが成功した場合に、前記第２メモリに格納したプログラムを前記第１メモリにコピーする機能を有し、
前記第３メモリに展開するプログラムは、前記第１メモリにコピーされたプログラムであることを特徴とする請求項１に記載のプログラマブルコントローラ用機器。
【請求項３】
起動する際に前記第１メモリに格納されたプログラムを前記第３メモリに展開するに際し、前記第１メモリに格納されたプログラムに異常がある場合に、前記第２メモリに格納された正常なプログラムに基づくプログラムを前記第３メモリに展開する機能を備えたことを特徴とする請求項１または２に記載のプログラマブルコントローラ用機器。
【請求項４】
Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能なプログラマブルコントローラ用機器におけるプログラムの更新方法であって、
前記プログラマブルコントローラ用機器は、前記プログラムを保持する第１メモリと、その第１メモリをバックアップするための第２メモリと、前記プログラムを実行する際に使用する第３メモリとを備え、
稼働中にダウンロードしたプログラムを前記第２メモリに格納させ、
前記ダウンロードが成功したか否かを判断し、成功した場合には、そのダウンロードしたプログラムに基づくプログラムを第３メモリに展開し、以後、前記ダウンロードした新たなプログラムを実行することを特徴とするプログラマブルコントローラ用機器におけるプログラム更新方法。
【請求項５】
Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能なプログラマブルコントローラ用機器におけるプログラムの更新方法であって、
前記プログラマブルコントローラ用機器は、前記プログラムを保持する第１メモリと、その第１メモリをバックアップするための第２メモリと、前記プログラムを実行する際に使用する第３メモリとを備え、
稼働中にダウンロードしたプログラムを前記第２メモリに格納させ、
前記ダウンロードが成功したか否かを判断し、成功した場合には、前記第２メモリに格納されたプログラムを前記第１メモリにコピーし、
そのコピーが正常に行われた場合に、前記第１メモリにコピーしたプログラムを第３メモリに展開し、以後、前記ダウンロードした新たなプログラムを実行することを特徴とするプログラマブルコントローラ用機器におけるプログラム更新方法。
【請求項６】
プログラマブルコントローラ用機器におけるプログラム起動方法であって、
前記プログラマブルコントローラ用機器は、前記プログラムを保持する第１メモリと、その第１メモリをバックアップするための第２メモリと、前記プログラムを実行する際に使用する第３メモリとを備え、
起動時に、前記第１メモリに格納されたプログラムをチェックし、正常な場合には、その第１メモリから第３メモリに展開して起動し、
前記チェックの結果異常があった場合には、前記第２メモリに格納されたプログラムを用いて起動するようにしたことを特徴とするプログラマブルコントローラ用機器におけるプログラム起動方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、Ｃ言語で記述可能なプログラマブルコントローラに関するものであり、特に、Ｃ言語のプログラムを稼働状態のまま入れ替えることが出来るようなプログラマブルコントローラに関する。
【０００２】
【従来の技術】
ファクトリーオートメーション（ＦＡ）の制御装置として、プログラマブルコントローラ（ＰＬＣ）が用いられている。このＰＬＣは、複数のユニットから構成される。すなわち、電源供給源の電源ユニット，ＰＬＣ全体の制御を統率するＣＰＵユニット，ＦＡの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット，アクチュエータなどに制御出力を出す出力ユニット，通信ネットワークに接続するための通信ユニットなどの各種のユニットを適宜組み合わせて構成される。
【０００３】
ＰＬＣのＣＰＵユニットにおける制御は、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ）、予め登録されたユーザプログラム記述言語（例えばラダー言語）で組まれたユーザプログラムに基づき論理演算をし（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ）、その後、いわゆる周辺処理を行うと言うことをサイクリックに繰り返し処理するようになる。そして、上記したユーザプログラムは、ＣＰＵユニットのユーザメモリに格納される。
【０００４】
ところで、ＰＬＣの一般的な使われ方としては、複数のＩＮデータの論理演算をして、その演算結果によってＯＵＴデータを出力して、被制御装置を制御するような使われ方がある。この場合のユーザプログラムは、ラダー言語を用いることが多い。その理由は、ラダーによるプログラミングは、入力機器の接点のＯＮ／ＯＦＦ状態と出力機器へのＯＵＴ信号の状態との論理関係を表しやすく、目視でわかりやすいためである。しかし、最近ではＰＬＣの制御内容も単なる論理演算だけでなく、関数演算や数式演算，アナログ情報を扱う処理をすることもある。このような比較的高度な演算や処理をする場合のプログラミング言語としてＣ言語を使用することがある。そこで、ＰＬＣの中に、ラダープログラムを実行するＣＰＵと、Ｃ言語を実行するＣＰＵとの両方を持たせたものがある。このようなＰＬＣでは、Ｃ言語などのコンパイル方式の言語でプログラムを記述して演算処理可能となっている。そのようなＰＬＣにおいては、プログラムは、外部のプログラミング開発環境（プログラミングツール）で作成したのち、コンパイル→アセンブル→リンクの工程を経てオブジェクトコードに変換し、その変換されたオブジェクトコードをＰＬＣのＣＰＵユニットにダウンロードして、ＣＰＵユニット内に記憶される。そのプログラムはＣＰＵユニット内にて実行される。
【０００５】
そして、現在実行中のプログラムを変更すべくメモリ内容を書き換えるには、通常、以下のような手順を実行する。すなわち、（１）まずジャンパーピンやディップスイッチ等のモード切替手段によって、ＰＬＣをプログラム転送モードに変更する。（２）次いで、オブジェクトコードのダウンロードを実行する。これにより、ＰＬＣが持つプログラムを格納するメモリに、オブジェクトコードが格納される。（３）ダウンロードが完了したらならば、ＰＬＣをプログラム実行モードに変更した後、立ち上げ直す。
【０００６】
【発明が解決しようとする課題】
しかしながら、ＰＬＣにおける動作モードの決定は、電源ＯＮ時に決定されることが多いため、プログラムのダウンロードを行うに際し、コントローラの再起動が必要となる場合があった。従って、Ｃ言語で記述された制御プログラムを、コントローラの稼働中に安全に入れ換えることができなかった。
【０００７】
また、プログラム転送中に電源断が発生したり、プログラムの転送をキャンセルしたりした場合は、メモリに保持されている既存のプログラムが壊れてしまう可能性がある。このような場合には、再起動時にプログラムが正しく稼働しない場合があった。
【０００８】
この発明は、プログラム稼動中に保持されているプログラムの書き換えを可能にするとともに、プログラム転送中の不意の電源断やプログラム転送のキャンセルなどにより保持されたプログラムが破壊された場合にも、以前のプログラムにて正常に稼働できるようにし、また、１つのメモリに記憶保持したプログラムが破壊されていた場合でも、正常に立ち上げることのできるプログラマブルコントローラ用機器並びにプログラマブルコントローラ用機器におけるプログラム更新方法並びにプログラム起動方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
この発明によるプログラマブルコントローラ用機器は、プログラマブルコントローラを構成する機器であって、前記機器は、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能であり、前記プログラムを保持する第１メモリと、その第１メモリをバックアップするための第２メモリと、前記プログラムを実行する際に使用する第３メモリとを備え、稼働中にダウンロードしたプログラムは、前記第２メモリに格納させ、ダウンロードが成功した場合に、そのダウンロードしたプログラムに基づくプログラムを第３メモリに展開して実行するようにした。
【００１０】
ここで、プログラマブルコントローラ用機器とは、例えば、プログラマブルコントローラを構成する１つのユニットでも良いし、ボードのように所定のユニットに実装されるものでも良いし、プログラマブルコントローラそのものでも良い。
【００１１】
また、前記ダウンロードしたプログラムに基づくプログラムは、前記ダウンロードが成功した場合に、前記第２メモリに格納したプログラムを前記第１メモリにコピーする機能を有し、前記第３メモリに展開するプログラムは、前記第１メモリにコピーされたプログラムとするとよい。もちろん、本発明はこれに限ることはなく、第２メモリに格納したプログラムを第１メモリに展開しても良い。つまり、ダウンロードしたプログラムに基づくプログラムとは、第２メモリに格納したプログラムそのものでも良いし、第１メモリにコピーしたプログラムでもよく、要は、内容がダウンロードしたプログラムと等しくなっていればよい。
【００１２】
また、本発明に係るプログラム更新方法は、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能なプログラマブルコントローラ用機器におけるプログラムの更新方法であって、前記プログラマブルコントローラ用機器は、前記プログラムを保持する第１メモリと、その第１メモリをバックアップするための第２メモリと、前記プログラムを実行する際に使用する第３メモリとを備え、稼働中にダウンロードしたプログラムを前記第２メモリに格納させ、前記ダウンロードが成功したか否かを判断し、成功した場合には、そのダウンロードしたプログラムに基づくプログラムを第３メモリに展開し、以後、前記ダウンロードした新たなプログラムを実行するようにした。
【００１３】
また、別の解決手段としては、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能なプログラマブルコントローラ用機器におけるプログラムの更新方法であって、前記プログラマブルコントローラ用機器は、前記プログラムを保持する第１メモリと、その第１メモリをバックアップするための第２メモリと、前記プログラムを実行する際に使用する第３メモリとを備え、稼働中にダウンロードしたプログラムを前記第２メモリに格納させ、前記ダウンロードが成功したか否かを判断し、成功した場合には、前記第２メモリに格納されたプログラムを前記第１メモリにコピーし、そのコピーが正常に行われた場合に、前記第１メモリにコピーしたプログラムを第３メモリに展開し、以後、前記ダウンロードした新たなプログラムを実行するようにすることもできる。
【００１４】
第２メモリを設けたため、プログラム実行中であっても、その第２メモリにプログラムをダウンロードすることができ、その後、第２メモリに格納したプログラムに基づくプログラムを第３メモリに展開（ブート）することにより、それまで使用していたプログラムから、新たにダウンロードしたプログラムへの切替を電源ＯＦＦすることなくそのまま連続して実行することができる。つまり、プログラム稼動中に、保持されているプログラムの書き換えを実現することができる。
【００１５】
また、第１，第２メモリというように、プログラムを保持するメモリを２つ持つことで、プログラム転送中の不意の電源断やプログラム転送のキャンセルなどにより保持されたプログラムが破壊された場合にも、以前のプログラムにて正常に稼働できる。
【００１６】
さらに本発明に係るプログラマブルコントローラ用機器は、起動する際に前記第１メモリに格納されたプログラムを前記第３メモリに展開するに際し、前記第１メモリに格納されたプログラムに異常がある場合に、前記第２メモリに格納された正常なプログラムに基づくプログラムを前記第３メモリに展開する機能を備えた。
【００１７】
また、本発明に係るプログラム起動方法は、前記プログラムを保持する第１メモリと、その第１メモリをバックアップするための第２メモリと、前記プログラムを実行する際に使用する第３メモリとを備えた前記プログラマブルコントローラ用機器を前提とし、起動時に、前記第１メモリに格納されたプログラムをチェックし、正常な場合には、その第１メモリから第３メモリに展開して起動し、前記チェックの結果異常があった場合には、前記第２メモリに格納されたプログラムを用いて起動するようにした。これにより、たとえ第１メモリに格納されたプログラムが壊れていても、確実にプログラムの起動が行える。
【００１８】
【発明の実施の形態】
図１は、本発明の好適な一実施の形態を示している。図１に示すように、ＰＬＣ１は、ＣＰＵユニット１０や、拡張ＣＰＵユニット２０等を備えて構成される。もちろん、図示省略するが、通信ユニット，Ｉ／Ｏユニット，マスタユニット，電源ユニットなど、その他のユニットも存在する。
【００１９】
ＣＰＵユニット１０は、図示省略するシステムＲＯＭに格納されたシステムプログラムにしたがって、ＣＰＵ１１が所定の処理をサイクリックに実行するものである。ここで所定の処理とは、共通処理，演算処理，サイクルタイム算出処理，Ｉ／Ｏリフレッシュ処理，周辺サービス処理がある。演算処理は、プログラムメモリ１２に格納されたユーザプログラムを順次実行するもので、その演算実行時に、適宜ＩＯメモリ１３にアクセスし、ＩＯデータを読み書きしたり、パラメータを取得する。そして、Ｉ／Ｏリフレッシュ処理では、ＩＯメモリ１３に対して、ＩＯデータの更新処理を行う。ＣＰＵ１１は、バスコントローラ１４を介してＩＯメモリ１３にアクセスしたり、拡張ＣＰＵユニット２０にアクセスしたりできるようになっている。なお、このＣＰＵ１１で実行されるユーザプログラムは、従来と同様にラダー言語で作成されている。
【００２０】
一方、拡張ＣＰＵユニット２０は、高級言語（例えばＣ言語）で作成されたプログラムを保持する第１メモリ２１と、そのプログラムのバックアップ用メモリである第２メモリ２２と、プログラム稼働用の第３メモリ２３を備えている。この拡張ＣＰＵユニット２０の形態は、ＣＰＵユニット１０とは別体のユニットで、ＣＰＵユニット１０とＰＬＣバス（内部バス）を介して、他のユニット（通信ユニット，Ｉ／Ｏユニットなど）と同様にユニット接続されている。なお、拡張ＣＰＵユニット２０の別の形態として、ＣＰＵユニット１０内に挿入して内蔵できるような増設基板タイプであってもよい。また別の形態として、ＣＰＵユニット１０に対する増設ユニットタイプでもよい。増設基板タイプや増設ユニットタイプの場合の接続バスは、他ユニットがつながるＰＬＣバスとは別のバスで、ＣＰＵユニット１１自体の内部バスでもよい（この場合もバスも回線はべつでもＰＬＣバスには経由接続できるようになっている）。要するに、ＣＰＵ１１とバスを介してつながれ、拡張ＣＰＵとしてＣＰＵ１１とは別途に独自に動作するもので、ＣＰＵユニット１０のＩＯメモリ１３に対してアクセスする機能を持っていれば形態はなんでもよい。
【００２１】
第１，第２メモリ２１，２２は、不揮発性のフラッシュメモリから構成され、第３メモリ２３は高速に実行させる必要から、揮発性のＲＡＭから構成される。そして、プログラムを実行するには、電源投入時その他適宜のタイミングで第１メモリ２１に格納されたプログラムを、第３メモリ２３にコピーし、その第３メモリ２３に記憶保持されたプログラムに基づいてＣＰＵ２４が所定のアルゴリズムを実行するようになる（詳細は後述する）。
【００２２】
そして、ＣＰＵ２４が実行するメインプログラムの管理シーケンスは、例えば図２に示すように、制御スロットと管理スロットを交互に繰り返すことになる。ここで、制御スロットは、ユーザタスクの実行を制御するもので、登録されたタスクを指定された順番で実行する。つまり、第３メモリ２３にコピーされたプログラムを実行することになる。また、管理スロットは、自分自身の動作を管理するもので、各要求に応じた処理を行う。要求としては、例えば、本発明との関係で言うと、プログラム受信要求，コピー要求，再ブート要求などがある。
【００２３】
また、拡張ＣＰＵユニット２０は、専用バスを介してメインのＣＰＵユニット１０と連携されている。具体的には、バスコントローラ１４とアドレスデコーダ２５の間でデータの送受を行うことにより、ＣＰＵユニット１１がアドレスデコーダ２５経由で各種のメモリにアクセスしたり、ＣＰＵ２４に所定の命令を与えたりする。また、拡張ＣＰＵユニット２０からのイベント等も、アドレスデコーダ２５からバスコントローラ１４経由でＣＰＵユニット１０（ＣＰＵ１１）に伝えられる。
【００２４】
ここで本発明では、第２メモリ２２を設け、新たなプログラムのダウンロードを第２メモリ２２に対して行うようにした。すなわち、図３に示すように、ダウンロードする場合には、まず、外部装置よりバックアップ用メモリ（メモリ２）にプログラムを書き込む（▲１▼）。具体的には、ＰＬＣ１の通信ユニットに接続したツールから、ＣＰＵユニット１０経由で第２メモリ２２にプログラムを格納する。そして、プログラム転送が終了すると、サム値を書き込む（▲２▼）。その後、ダウンロード完了イベントを通知する（▲３▼）。
【００２５】
一方、すでに述べたとおり、プログラムは第３メモリ２３上で稼働する。そして、第３メモリ２３上のプログラムは、ユーザプログラムを実行するための制御スロットと自分自身の管理のための管理スロットを持っており、管理スロット実行中にダウンロード完了イベントをチェックする（▲４▼）。そこで、この管理スロット実行中にダウンロード完了イベントが発生していたらダウンロードしたプログラムのサムチェックを行い、正常にダウンロードされたか否かを判断する（▲５▼）。そして、正常にダウンロードされていた場合のみ、第２メモリ２２に格納されたプログラムとサム値の両方を第１メモリ２１にコピーする（▲６▼）。
【００２６】
上記した▲１▼〜▲６▼の手順を実行することにより、プログラム転送の中断や不意の電源断などが発生した場合であっても、第１，第２メモリ２１，２２の少なくとも一方には正しいプログラムが格納されていることが保証される。すなわち、第２メモリ２２へのダウンロード中に中断等が発生し、第２メモリ２２のデータ（プログラム）が壊れたとしても、第１メモリ２１には現在運用中の正しいプログラムが保持されたままとなる。よって、再度第２メモリにダウンロードすればよいし、ダウンロードの中断が意図的で元のプログラムを実行し続けたい場合には、第１メモリ２１のプログラムに基づいて実行すればよい。また、第２メモリ２２から第１メモリ２１へコピー中に中断した場合には、第１メモリ２１のデータ（プログラム）は壊れるおそれがあるが、その場合でも第２メモリ２２には正しいプログラムが格納されているので、再度第２メモリ２２から第１メモリへコピーすればよい。そして、第１メモリ２１へのプログラムとサム値のコピーが完了したら、ブートプログラムの先頭にジャンプする。
【００２７】
このブートプログラムは、第１メモリ２１上に配置されており、第１メモリ２１上で稼働する。具体的には、第１メモリ２１上に保持されているプログラムのサム値をチェックする（▲７▼）。そして、サム値チェックをした結果、正常であれば第１メモリ２１にコピーされたプログラムを第３メモリ２３にプログラムをブートし、第３メモリ２３上のプログラムの先頭にジャンプする（▲８▼）。これにより、第３メモリ２３の内容も、ダウンロードされた新しいプログラムとなり、次のサイクルからは、新しいプログラムに基づく処理が実行される。これにより、電源をＯＦＦすることなく、稼働中のままプログラムのダウンロード・更新が行える。
【００２８】
上記した処理手順は、実際には図４，図５に示すフローチャートを実行することになる。すなわち、管理スロットがスタートすると、受信要求フラグがＯＮになるのを待つ（ＳＴ１）。管理スロット開始から一定時間経過しても受信要求がＯＮにならないと、今回の管理スロットは終了する。
【００２９】
そして、受信要求フラグがＯＮになると、送信されてきたプログラムを受信する（ＳＴ２）。実際には、送られてきたプログラムを第２メモリ２２に格納する。さらに、サム値も記録する。つまり、図３で言う▲１▼，▲２▼の処理を実行する。
【００３０】
次いで、ダウンロード完了フラグからＯＮになるのを待ち（ＳＴ３）、ＯＮになるとサム値まで第２メモリ２２に格納されたことを意味するのでサム値チェックを行う（ＳＴ５）。ここまでの処理は、図３における▲３▼〜▲５▼に対応する。そして、サム値が異常であればこの管理スロットを終了する。
【００３１】
また、サム値がＯＫであると、ダウンロードが正しく行われたと判断し、第２メモリ２２から第１メモリ２１へプログラムをコピーする（ＳＴ６）。そして、コピーしたプログラムのサム値を計算し（ＳＴ７）、コピーが終了したならば計算したサム値を第１メモリに格納する（ＳＴ８，９）。その後、ブートにジャンプする。
【００３２】
ブート処理は、図５に示すように、第１メモリ２１のサム値が正しいか否かを判断し（ＳＴ１１）、正しい場合には、第１メモリ２１に格納されたプログラムが新たにダウンロードされたプログラムと判断し、その第１メモリ２１に格納されたプログラムをブートする（ＳＴ１６）。そして、メインプログラムにジャンプし、次の制御スロットを実行する。
【００３３】
また、ステップ１１の分岐判断でＮｏの場合には、ステップ６で行ったプログラムのコピーが失敗したと判断し、第２メモリ２２のサム値をチェックする（ＳＴ１２）。通常であれば、ステップ４，５の処理を経ているため、このステップ１２でのサム値チェックの結果はＹｅｓとなるが、何かしらの要因でＮｏとなると、エラー表示をして処理を終了する（ＳＴ１３）。
【００３４】
そして、第２メモリ２２のサム値がＯＫの場合には、第２メモリ２２から第１メモリ２１へ再度プログラムのコピーを行い（ＳＴ１４）、コピー後、サム値を計算し正しいことを確認の上（ＳＴ１５）、第１メモリ２１にコピーしたプログラムを第３メモリ２３にブートする（ＳＴ１６）。なお、フローチャートには記載していないが、ステップ１５で算出したサム値が異常の場合には、所定の異常処理、つまり、再度ステップ１４に戻ってプログラムのコピーを試みたり、ステップ１３に飛ぶなど各種の方法が採れる。
【００３５】
なお、上記した実施の形態では、第３メモリ２３へのブートは第１メモリ２１のみから行えるようになっているため、第１メモリ２１のサム値異常の場合には、一旦第２メモリ２２から第１メモリ２１へ転送後、第１メモリ２１からブートするようにしたが、第２メモリ２２からブートするようにしても良い。
【００３６】
また、上記したように、バックアップメモリとして第２メモリ２２を設けたことから、起動時処理を図６に示すようにすることにより、確実に正常なプログラムに基づく処理を実行することができる。
【００３７】
すなわち、通常、第１メモリ２１上で稼動し、第１メモリ２１に保持されているプログラムのサム値をチェックし（▲１▼）、サム値が正常であれば第３メモリ２３にプログラムをブートした後、第３メモリ２３上のプログラム先頭にジャンプし、プログラムを順次実行するようになる（▲２▼）。
【００３８】
このとき、第１メモリ２１のサム値が異常であった場合は、第２メモリ２２のサム値をチェックし（▲３▼）、正常であれば第２メモリ２２のプログラムを第１メモリ２１にコピーする（▲４▼）。その後、▲１▼，▲２▼の処理を経て、再度ブートプログラムの先頭にジャンプする。このようにすることにより、電源ＯＦＦ時や、起動時などにおいて第１メモリ２１に格納されたプログラムが壊れた場合でも、第２メモリ２２に格納されたプログラムに基づいて、正常に起動処理することができる。なお、第２メモリ２２のサム値も異常であった場合は、エラー出力の後、処理を停止する。
【００３９】
なお、再度説明するが、上記した実施の形態では、拡張ＣＰＵユニット２０は、ＰＬＣを構成する１つのユニットとして説明したが、ボードのようにし、ＣＰＵユニット１０内に実装するようにしたりすることもできる。
【００４０】
【発明の効果】
以上のように、この発明では、バックアップ用の第２メモリを設け、プログラム実行中のダウンロードは、その第２メモリに行うようにしたため、稼働状態のままプログラムの書き換えが行える。
【図面の簡単な説明】
【図１】本発明に係るＰＬＣの一実施の形態を示すブロック図である。
【図２】管理シーケンスを説明する図である。
【図３】本発明の要部の機能を説明する図である。
【図４】ＣＰＵ２４の機能を説明するフローチャートである。
【図５】ＣＰＵ２４の機能を説明するフローチャートである。
【図６】起動時の機能を説明する図である。
【符号の説明】
１  ＰＬＣ
１０  ＣＰＵユニット
１１  ＣＰＵ
１２  プログラムメモリ
１３  ＩＯメモリ
１４  バスコントローラ
２０  拡張ＣＰＵユニット
２１  第１メモリ
２２  第２メモリ
２３  第３メモリ
２４  ＣＰＵ
２５  アドレスデコーダ
【図１】
2004272629.tif 000003
【図２】
2004272629.tif 000004
【図３】
2004272629.tif 000005
【図４】
2004272629.tif 000006
【図５】
2004272629.tif 000007
【図６】
2004272629.tif 000008