(57)【特許請求の範囲】
【請求項１】
記憶されているシーケンスプログラム及び所定データに基づき制御対象機器を制御するマイクロプロセッサと、
上記シーケンスプログラム及び上記所定データが格納されると共に、予め設定された運転代行制御対象ユニットが使用する第２のシーケンスプログラムがシステム立ち上げ時の初期処理時に、第２の所定データがシーケンス処理終了後のＥＮＤ処理時に取り込まれ格納されるメモリ領域と、
を備え、上記マイクロプロセッサが上記運転代行制御対象ユニットの異常を検出した際に、自ユニットでの所定のシーケンス処理終了後に、上記メモリ領域に格納されている第２のシーケンスプログラム及び第２の所定データに基づき、上記運転代行制御対象ユニットを制御することを特徴とするプログラマブルコントローラのＣＰＵユニット。
【請求項２】
メモリ領域に第２のシーケンスプログラム及び第２の所定データを格納する際に、内部バスを介して接続される運転代行制御対象ユニットから共有メモリを介して取込むことを特徴とする請求項１に記載のプログラマブルコントローラのＣＰＵユニット。
【請求項３】
共有メモリに、第２のシーケンスプログラム及び第２の所定データを格納する領域を設け、運転代行制御対象ユニットから書き込まれた上記データを、所定の判定フラグを参照してメモリ領域に取込むことを特徴とする請求項２に記載のプログラマブルコントローラのＣＰＵユニット。
【請求項４】
運転代行制御対象ユニットから共有メモリを介して書込まれる第２の所定データの書き込みの有無に基づき、運転代行制御対象ユニットの異常か否かを判断することを特徴とする請求項２に記載のプログラマブルコントローラのＣＰＵユニット。
【請求項５】
記憶されているシーケンスプログラム及び所定データに基づき制御対象機器を制御するマイクロプロセッサと、
上記シーケンスプログラム及び上記所定データが格納されると共に、予め設定された運転代行制御対象ユニットが使用する第２のシーケンスプログラム及び第２の所定データを格納するメモリ領域と、
を備え、上記マイクロプロセッサが上記運転代行制御対象ユニットの異常を検出した際に、自ユニットでの所定のシーケンス処理終了後に、上記メモリ領域に格納されている第２のシーケンスプログラム及び第２の所定データに基づき、上記運転代行制御対象ユニットを制御するプログラマブルコントローラのＣＰＵユニットにおいて、
運転代行制御対象ユニットが異常から復旧したことを検知すると、復旧した運転代行制御対象ユニットに対して、予め受け取っていた第２のシーケンスプログラム及び第２の所定データを転送する転送手段を備えたことを特徴とするプログラマブルコントローラのＣＰＵユニット。
【請求項６】
運転代行制御対象ユニットを制御するために必要な運転代行制御対象ユニット用シーケンスプログラムをシステム立ち上げ時の初期処理において入手し、デバイス並びにパラメータを運転代行制御対象ユニット自身のシーケンス処理終了後のＥＮＤ処理時に入手する第１の工程と、
上記運転代行制御対象ユニットの異常を検出する第２の工程と、
上記運転代行制御対象ユニットの異常を検出した際に、自ユニットでの所定のシーケンス処理終了後に、上記第１の工程で入手している上記情報をもとに、上記運転代行制御対象ユニットを制御する第３の工程と、
を備えたプログラマブルコントローラの運転代行制御方法。
【請求項７】
運転代行制御対象ユニットを制御するために必要な運転代行制御対象ユニット用シーケンスプログラム及びデバイス並びにパラメータからなる情報を入手する第１の工程と、
上記運転代行制御対象ユニットの異常を検出する第２の工程と、
上記運転代行制御対象ユニットの異常を検出した際に、自ユニットでの所定のシーケンス処理終了後に、上記第１の工程で入手している上記情報をもとに、上記運転代行制御対象ユニットを制御する第３の工程と、
運転代行制御対象ユニットが異常から復旧したことを検知すると、復旧した運転代行制御対象ユニットに対して、予め受け取っていた運転代行制御対象ユニット用シーケンスプログラム及びデバイス並びにパラメータを転送する第４の工程と、を備えたプログラマブルコントローラの運転代行制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は産業機器等で使用されるプログラマブルコントローラＣＰＵユニット（以下、ＣＰＵユニットと称す）が、それぞれ独立したシステムを形成し、分散処理を行うマルチＣＰＵ制御において、システムの運営を継続したまま異常が発生したＣＰＵユニットを交換し、システムを復旧するプログラマブルコントローラのＣＰＵユニット及び運転代行制御方法に関するものである。
【０００２】
【従来の技術】
第１０図は、従来のマルチＣＰＵ制御における概略構成を示した概略構成図であり、各ＣＰＵユニットがそれぞれ独立し制御対象となるＩ／Ｏユニットを制御し、これらＣＰＵユニットがバスにより複数接続されて一連の全システムを分散制御するマルチＣＰＵ制御運転を行っている。
なお、本説明では、マルチＣＰＵ制御運転時に、その中の１つのＣＰＵユニットが異常が発生した場合の状態について説明する。
【０００３】
図において、１１は記憶されたシーケンスプログラムに基づき産業機器などの制御対象機器を制御するＣＰＵユニット、１２は制御対象機器を接続し、ＣＰＵユニット１により制御されるＩ／Ｏユニット、１３はバスである。
ここで、ＣＰＵユニット１１Ａ及びＩ／Ｏユニット１２ＡによりシステムＡを構成し、ＣＰＵユニット１１Ｂ及びＩ／Ｏユニット１２ＢによりシステムＢを構成している。そして、システムＡ及びシステムＢは、バス３により接続され、マルチＣＰＵ制御システムが形成されている。
ＣＰＵユニット１１は、ＯＳプログラムの情報に従いデータの転送、解析を行うマイクロプロセッサ（ＭＰＵ）１４、このマイクロプロセッサ１４を制御するＯＳプログラムが格納されているＯＳ格納エリア１５、ユーザが作成したシーケンス制御を行うシーケンスプログラム等が格納されるメモリ領域１６、マルチＣＰＵ制御においてＣＰＵユニット間でバス１３を通じて通信を行うためのＣＰＵユニット間通信用２ポートメモリ１７で構成される。
【０００４】
そして、メモリ領域１６は、ユーザが作成したシーケンスプログラムを格納するプログラムエリア１６１、このシーケンスプログラムで入出力信号の状態や数値を扱うためのデバイス状態を格納するデバイスメモリエリア１６２、ＣＰＵユニット１の機能を規定するパラメータを格納するパラメータエリア１６３に分けられている。
なお、互いに独立したシステムＡ及びシステムＢいずれも、制御対象と制御を行うための動作が異なるが、ＣＰＵユニット１１内部は略同一機能で構成されている。
【０００５】
次に、マルチＣＰＵ制御運転時に、その中の１つのＣＰＵユニット１１Ａが電源の故障等の発生により異常が発生したときの処理について説明する。
従来、第１０図のシステム構成におけるマルチＣＰＵ制御時において、各ＣＰＵユニットはそれぞれ独自のシーケンスプログラム及びパラメータ等により動作しているため、ＣＰＵユニット１１Ａに異常が発生した場合、異常が発生したＣＰＵユニット１１Ａが行っていたシーケンス制御を他のＣＰＵユニット１１Ｂが代行して行うことができなくなり、ＣＰＵユニット１１Ａに基づくＩ／Ｏユニット１２Ａへの制御は停止し、異常が発生する前と同じように全システムを続行させることができない。
そのため、ＣＰＵユニット１１Ａが故障等により異常が発生した場合、ＣＰＵユニット１１Ａで構成されるシステムＡは停止する。
そこで、ユーザが異常が発生したＣＰＵユニット１１Ａを別の正常なＣＰＵユニットと取り替えて、異常が発生したＣＰＵユニット１１Ａに書かれていたシーケンスプログラムを取り替えたＣＰＵユニットに書込み、取り替えたＣＰＵユニットを稼働させてシステムを再開させている。
【０００６】
今日のプログラマブルコントローラに基づく制御は、より多くの制御を行う関係上、ＣＰＵユニットを複数設け、上述したマルチＣＰＵに基づく制御を行っている。
【０００７】
従来、マルチＣＰＵユニットでの分散処理中に、異常が発生したＣＰＵユニットが存在した場合には、ユーザが異常が発生したＣＰＵユニット１１Ａを別の正常なＣＰＵユニットと取り替えて、異常が発生したＣＰＵユニット１１Ａに書かれていたシーケンスプログラムを取り替えたＣＰＵユニットに書込み、取り替えたＣＰＵユニットを稼働させるまで、ＣＰＵユニット１１Ａが分散処理していたシステムＡは停止したままとなり、仮にシステムＡが復旧したとしても、異常が発生する前と同じように全システムを続行できない問題があった。
【０００８】
またこのシステムを復旧させる場合、異常が発生したＣＰＵユニットを別のＣＰＵユニットと取り替える際には、異常が発生したＣＰＵユニットのシーケンスプログラムを予め記憶させなければならないので、ユーザは異常が発生する前と同じようにシステム全体を復旧させるのに時間と手間がかかっていた。
【０００９】
また、関連するシステム停止時の代行制御方法としては、稼働しているＣＰＵユニットの予備として、稼動ＣＰＵユニットが有している同一のデータ、すなわち同じパラメータとシーケンスプログラムを予め記憶させておいた予備ＣＰＵユニットを常時待機させておいて、稼働しているＣＰＵユニットが故障した場合に、待機していたＣＰＵユニットが故障したＣＰＵユニットの代わりとなって働くことによって、全システムを継続する二重化システムと呼ばれる方法があるが、二重化システムでは待機させている予備ＣＰＵユニットは、稼働しているＣＰＵユニットが故障しない限り、システムの一端として動作することはなく、無駄となってしまう。
【００１０】
【発明が解決しようとする課題】
本発明は、上記の問題点を解消するためになされたものであり、複数のＣＰＵユニットで分散処理をし、それぞれのＣＰＵユニットが独立したシステムを持つマルチＣＰＵ制御において、特定のＣＰＵユニットに異常が発生し該ＣＰＵユニットが停止した場合でも、ユーザが手を煩わせることもなくシステム全体を停止させることなく、継続してシステムを動作させるものである。
【００１１】
また、異常が発生したＣＰＵユニットを別の正常なＣＰＵユニットに取り替えた場合、速やかにＣＰＵユニットがシステムに復旧させることを目的としたものである。
【００１２】
【課題を解決するための手段】
この目的を達成するために、１つの観点によれば、本発明に係るプログラマブルコントローラのＣＰＵユニットは、記憶されているシーケンスプログラム及び所定データに基づき制御対象機器を制御するマイクロプロセッサと、上記シーケンスプログラム及び上記所定データが格納されると共に、予め設定された運転代行制御対象ユニットが使用する第２のシーケンスプログラムがシステム立ち上げ時の初期処理時に、第２の所定データがシーケンス処理終了後のＥＮＤ処理時に取り込まれ格納されるメモリ領域と、を備え、上記マイクロプロセッサが上記運転代行制御対象ユニットの異常を検出した際に、自ユニットでの所定のシーケンス処理終了後に、上記メモリ領域に格納されている第２のシーケンスプログラム及び第２の所定データに基づき、上記運転代行制御対象ユニットを制御するものである。
【００１３】
また、メモリ領域に第２のシーケンスプログラム及び第２の所定データを格納する際に、内部バスを介して接続される運転代行制御対象ユニットから共有メモリを介して取込むものである。
【００１４】
また、共有メモリに、第２のシーケンスプログラム及び第２の所定データを格納する領域を設け、運転代行制御対象ユニットから書き込まれた上記データを、所定の判定フラグを参照してメモリ領域に取込むものである。
【００１５】
また、運転代行制御対象ユニットから共有メモリを介して書込まれる第２の所定データの書き込みの有無に基づき、運転代行制御対象ユニットの異常か否かを判断するものである。
【００１６】
さらに、運転代行制御対象ユニットが異常から復旧したことを検知すると、復旧した運転代行制御対象ユニットに対して、予め受け取っていた第２のシーケンスプログラム及び第２の所定データを転送する転送手段を備えたものである。
【００１７】
また、本発明に係るプログラマブルコントローラの運転代行制御方法は、運転代行制御対象ユニットを制御するために必要な運転代行制御対象ユニット用シーケンスプログラムをシステム立ち上げ時の初期処理において入手し、デバイス並びにパラメータを運転代行制御対象ユニット自身のシーケンス処理終了後のＥＮＤ処理時に入手する第１の工程と、上記運転代行制御対象ユニットの異常を検出する第２の工程と、上記運転代行制御対象ユニットの異常を検出した際に、自ユニットでの所定のシーケンス処理終了後に、上記第１の工程で入手している上記情報をもとに、上記運転代行制御対象ユニットを制御する第３の工程と、を備えたものである。
【００１８】
さらに、運転代行制御対象ユニットが異常から復旧したことを検知すると、復旧した運転代行制御対象ユニットに対して、予め受け取っていた運転代行制御対象ユニット用シーケンスプログラム及びデバイス並びにパラメータを転送する工程を備えたものである。
【００１９】
【発明の実施の形態】
実施の形態１．
本発明の実施の形態１を、図を用いて説明する。
第１図は、マルチＣＰＵ制御における概略構成を示した概略構成図であり、各ＣＰＵユニットがそれぞれ独立し制御対象となるＩ／Ｏユニットを制御し、これらＣＰＵユニットがバスにより複数接続されて一連の全システムを分散制御するマルチＣＰＵ制御運転を行っている。
なお、本説明では、マルチＣＰＵ制御運転時に、その中の１つのＣＰＵユニットが異常が発生した場合の状態について説明する。
【００２０】
図において、１は記憶されたシーケンスプログラムに基づき産業機器などの制御対象機器を制御するＣＰＵユニット、２は制御対象機器を接続し、ＣＰＵユニット１により制御されるＩ／Ｏユニット、３はバスであり、例えばＣＰＵユニット、Ｉ／Ｏユニットが装着されるベースユニット内部に設置されているものである。
ここで、ＣＰＵユニット１Ａ及びＩ／Ｏユニット２ＡによりシステムＡを構成し、ＣＰＵユニット１Ｂ及びＩ／Ｏユニット２ＢによりシステムＢを構成している。そして、システムＡ及びシステムＢは、バス３により接続され、マルチＣＰＵ制御システムが形成されている。
【００２１】
ＣＰＵユニット１は、ＯＳプログラムの情報に従いデータの転送、解析を行うマイクロプロセッサ（ＭＰＵ）４、このマイクロプロセッサ４を制御するＯＳプログラムが格納されているＯＳ格納エリア５、ユーザが作成したシーケンス制御を行うシーケンスプログラム等が格納されるメモリ領域６、マルチＣＰＵ制御においてＣＰＵユニット間でバス３を通じて通信を行うためのＣＰＵユニット間通信用２ポートメモリ７で構成される。
【００２２】
そして、メモリ領域６は、ユーザが作成したシーケンスプログラムを格納するプログラムエリア６１、このシーケンスプログラムで入出力信号の状態や数値を扱うためのデバイス状態を格納するデバイスメモリエリア６２、ＣＰＵユニット１の機能を規定するパラメータを格納するパラメータエリア６３、第２のシーケンスプログラムに相当する運転代行制御を行うＣＰＵユニットで処理されるシーケンスプログラムを格納するプログラムエリア６４、第２の所定データに相当するこのシーケンスプログラムで入出力信号の状態や数値を扱うためのデバイス状態を格納するデバイスメモリエリア６５、第２の所定データに相当するＣＰＵユニットＢの機能を規定するパラメータを格納するパラメータエリア６６に分けられている。
【００２３】
また、２ポートメモリ７は、シーケンスプログラムを格納するプログラムエリア７１、デバイス状態を格納するデバイスメモリエリア７２、パラメータを格納するパラメータエリア７３、運転代行制御を行うＣＰＵユニットのマイクロプロセッサ４が、プログラムエリア６１、デバイスメモリエリア６２、パラメータエリア６３の情報を２ポートメモリ７のプログラムエリア７１、デバイスメモリエリア７２、パラメータエリア７３に転送が成功した際にＯＮにする送信完了エリア７４、２ポートメモリ７のプログラムエリア７１、デバイスメモリエリア７２、パラメータエリア７３にある情報をプログラムエリア６１、デバイスメモリエリア６２、パラメータエリア６３に転送が成功した際にＯＮにする受信完了エリア７５、運転代行制御するＣＰＵユニット１に異常が検出された場合にＯＮにする異常検出エリア７６、その他従来からこの２ポートメモリ７の使用目的である従来使用エリア７７で構成される。
【００２４】
なお、互いに独立したシステムＡ及びシステムＢいずれも、制御対象と制御を行うための動作が異なるが、ＣＰＵユニット１内部は略同一機能で構成されている。
つまり、本実施の形態におけるシステムＡでは、ＣＰＵユニット１Ａは、ＭＰＵ４Ａ、ＯＳ格納エリア５Ａ、メモリ領域６Ａ、２ポートメモリ７Ａを有し、システムＢでは、ＣＰＵユニット１Ｂは、ＭＰＵ４Ｂ、ＯＳ格納エリア５Ｂ、メモリ領域６Ｂ、２ポートメモリ７Ｂを有している。
【００２５】
なお、システムＡにおけるメモリ領域６Ａは、プログラムエリア６１Ａ、デバイスメモリエリア６２Ａ、パラメータエリア６３Ａ、運転代行制御を行うＣＰＵユニット１Ｂで処理されるシーケンスプログラムを格納するＣＰＵユニットＢ用プログラムエリア６４Ａ、ＣＰＵユニットＢ用のシーケンスプログラムでのデバイス状態を格納するＣＰＵユニットＢ用デバイスメモリエリア６５Ａ、ＣＰＵユニット１Ｂの機能を規定するパラメータを格納するＣＰＵユニットＢ用パラメータエリア６６Ａから構成され、システムＢにおけるメモリ領域６Ｂも、運転代行制御の対象がＣＰＵユニット１Ａに変るだけで、略同一構成となっている。
【００２６】
また、システムＡにおける２ポートメモリ７Ａは、ＣＰＵユニット１Ｂ用のシーケンスプログラム、デバイス状態、パラメータを格納するプログラムエリア７１Ａ、デバイスメモリエリア７２Ａ、パラメータエリア７３Ａ、運転代行制御を行うＣＰＵユニット１ＢのＭＰＵ４Ｂがプログラムエリア６１Ｂ、デバイスメモリエリア６２Ｂ、パラメータエリア６３Ｂの情報を２ポートメモリ７Ａのプログラムエリア７１Ａ、デバイスメモリエリア７２Ａ、パラメータエリア７３Ａに転送が成功した際にＯＮにする送信完了エリア７４Ａ、２ポートメモリ７Ｂのプログラムエリア７１Ｂ、デバイスメモリエリア７２Ｂ、パラメータエリア７３Ｂにある情報をプログラムエリア６１Ｂ、デバイスメモリエリア６２Ｂ、パラメータエリア６３Ｂに転送が成功した際にＯＮにする受信完了エリア７５Ａ、運転代行制御するＣＰＵユニット１Ｂに異常が検出された場合にＯＮにする異常検出エリア７６Ａ、その他従来からこの２ポートメモリ７の使用目的である従来使用エリア７７Ａで構成され、システムＢにおける２ポートメモリ７Ｂも、運転代行制御の対象がＣＰＵユニット１Ａに変るだけで、略同一構成となっている。
【００２７】
次に、第２図を用いてＣＰＵユニット１が、シーケンス制御を行う仕組みについて説明する。
なお、ユーザがシーケンス制御を行う場合、１回当たりのシーケンス処理を一定時間に保ちながらプログラムを実行させるために、コンスタントスキャンを設定してシーケンス制御を行う。ここで、コンスタントスキャンは、パラメータで設定し、シーケンスプログラム実行時間、ＥＮＤ処理時間に、待ち時間を合わせたもので構成される。
【００２８】
ＣＰＵユニット１がシーケンス制御を行う際の処理は、主に４つに別れ、ユーザが電源を立ち上げたら、まずそのプログラマブルコントローラＣＰＵユニットが制御するシステムを構成する各ユニットが正常かどうかチェックしたり、デバイスに各初期値を設定する初期処理（ステップＳＴ１）を行う。
次に、シーケンス制御を行うためにシーケンスプログラムを実行するシーケンス処理行い（ステップＳＴ２）、その後、デバイス値の更新など行うＥＮＤ処理を行う（ステップＳＴ３）。
そして、１回当たりのシーケンス処理を一定時間に保つべく予め設定されたコンスタントスキャンになるまで待つ（ステップＳＴ４）。
それから再びシーケンス処理を行うこととなり、このシーケンス処理とＥＮＤ処理を繰り返しながらシーケンス制御を行うこととなる。
【００２９】
なお、運転代行制御する際、本来のプログラマブルコントローラＣＰＵユニットが構成するシステムのシーケンス処理と、運転代行制御するプログラマブルコントローラＣＰＵユニットが構成するシステムのシーケンス処理を行うため、ユーザはあらかじめパラメータで運転代行制御する際のコンスタントスキャンを設定しておく。
【００３０】
次に、初期処理として運転代行制御を依頼するＣＰＵユニット１Ａのマイクロプロセッサ４Ａが、プログラムエリア６１Ａ、デバイスメモリエリア６２Ａ、パラメータエリア６３Ａの情報を、運転代行制御を行うＣＰＵユニット１Ｂに与える手段について第３図の処理フローを用いて説明する。
【００３１】
始めにＣＰＵユニット１Ａのマイクロプロセッサ４Ａが、プログラムエリア６１Ａ、デバイスメモリエリア６２Ａ、パラメータエリア６３Ａの情報を、バス３を通じてＣＰＵユニット１Ｂの２ポートメモリ６Ｂのプログラムエリア７１Ｂ、デバイスメモリエリア７２Ｂ、パラメータエリア７３Ｂへ転送する（ステップＳＴ１１）。
そして転送が成功した際に、ステップＳＴ１４にてＣＰＵユニット１Ｂの２ポートメモリ７Ｂ上の送信完了エリア７４ＢをＯＮにする。
ステップＳＴ１２にて、転送が失敗した場合は、ステップＳＴ１３で一定回数以上行っても成功していないのであれば、運転代行制御を行うＣＰＵユニット１Ｂに異常があるので、そのまま初期処理を終了する。
【００３２】
運転代行制御を行うＣＰＵユニット１Ｂのマイクロプロセッサ４Ｂは、２ポートメモリ７Ｂのプログラムエリア７１Ｂ、デバイスメモリエリア７２Ｂ、パラメータエリア７３Ｂの情報を、ＣＰＵユニットＡ用プログラムエリア６４Ｂ、ＣＰＵユニットＡ用デバイスメモリエリア６５Ｂ、ＣＰＵユニットＡ用パラメータエリア６６Ｂに転送し、転送成功した際は２ポートメモリ７Ａ上の受信完了エリア７５ＡをＯＮにする。
ステップＳＴ１５にて、ＣＰＵユニット１Ａは２ポートメモリ７Ａの受信完了エリア７５ＡがＯＮか否かを判断し、マイクロプロセッサ４Ａが受信完了エリア７５ＡがＯＮになっているのを確認したら、ステップＳＴ１７に移行して、２ポートメモリ７Ａの受信完了エリア７５ＡをＯＦＦにして、ＣＰＵユニット１Ａの初期処理完了となる。
【００３３】
一方、また受信完了エリア７５ＡがＯＦＦの場合、一定時間経過したのであれば（ステップＳＴ１６）、運転代行制御を行うＣＰＵユニット１Ｂに異常があるので、そのまま初期処理を終了する。
【００３４】
次に、初期処理としてＣＰＵユニット１Ｂのマイクロプロセッサ４Ｂが、プログラムエリア６１Ａ、デバイスメモリエリア６２Ａ、パラメータエリア６３Ａの情報を受け取る手段について第４図の処理フローを使って説明する。
ここで、第３図及び第４図で示した処理は、従来のＣＰＵユニットの処理のシーケンスプログラム実行前のＯＳプログラムの初期処理（ステップＳＴ１）の最後に追加するものである。
【００３５】
ステップＳＴ２１において、マイクロプロセッサ４Ｂは２ポートメモリ７Ｂ上の送信完了エリア７４ＢがＯＮになっているか調べる。
送信完了エリア７４ＢがＯＮしていれば、２ポートメモリ７Ｂのプログラムエリア７１Ｂ、デバイスメモリエリア７２Ｂ、パラメータエリア７３Ｂに運転代行制御を依頼するＣＰＵユニット１Ａのプログラムエリア６１Ａ、デバイスメモリエリア６２Ａ、パラメータエリア６３Ａの情報が書き込まれているので、２ポートメモリ７Ｂのプログラムエリア７１Ｂ、デバイスメモリエリア７２Ｂ、パラメータエリア７３ＢからＣＰＵユニットＡ用プログラムエリア６４Ｂ、ＣＰＵユニットＡ用デバイスメモリエリア６５Ｂ、ＣＰＵユニットＡ用パラメータエリア６６Ｂに転送（ステップＳＴ２３）し、２ポートメモリ７Ｂにある送信完了エリア７４ＢをＯＦＦにする（ステップＳＴ２４）。
そして、ステップＳＴ２５にて、バス３を通じてＣＰＵユニット１Ａの２ポートメモリ７Ａ上の受信完了エリア７５ＡをＯＮにする。
【００３６】
一方、送信完了エリア７４ＢがＯＦＦの場合、ステップＳＴ２２にて一定時間経過したか否かを判断し、一定時間経過している場合は、ステップＳＴ２６にて運転代行制御を依頼するＣＰＵユニット１Ａに異常があるとして、２ポートメモリ７Ｂ上にある異常検出エリア７６ＢをＯＮにする。
【００３７】
次に、シーケンスプログラムを実行するシーケンス処理を終えた後に行うＥＮＤ処理において、ＣＰＵユニット１Ａのマイクロプロセッサ４Ａが、デバイスメモリエリア６２Ａの情報を、運転代行を行うＣＰＵユニット１Ｂに与える際の手段について第５図の処理フローを用いて説明する。
なお、この処理は、従来のＣＰＵユニットの処理のデバイスメモリの情報を更新するためのＥＮＤ処理（ステップＳＴ３）の最後に追加するものである。
シーケンスプログラムで入出力信号の状態や数値を扱うためのデバイスメモリの内容は、シーケンスプログラム実行中に刻々と変化する。
そのため運転代行制御を行うＣＰＵユニットは、運転代行を依頼するＣＰＵユニットにデバイスメモリの情報を、定期的に更新する必要がある。また、運転代行制御を行うＣＰＵユニットが正常に動作しているかを定期的に確認することも必要である。
【００３８】
始めにステップＳＴ３１にて、運転代行制御を依頼するＣＰＵユニット１Ａのマイクロプロセッサ４Ａが、デバイスメモリエリア６２Ａの情報を、バス３を通じてＣＰＵユニット１Ｂの２ポートメモリ７Ｂのデバイスメモリエリア７２Ｂへ転送する。
そして転送が成功した際に（ステップＳＴ３２）、ステップＳＴ３４にてＣＰＵユニット１Ｂの２ポートメモリ７Ｂ上の送信完了エリア７４ＢをＯＮにする。
一方、転送が失敗した場合は、一定回数以上行っても成功していないのであれば（ステップＳＴ３３）、運転代行制御を行うＣＰＵユニット１Ｂに異常があるので、そのままＥＮＤ処理を終了する。
【００３９】
運転代行制御を行うＣＰＵユニット１Ｂのマイクロプロセッサ４Ｂは、２ポートメモリ７Ｂのデバイスメモリエリア７２Ｂの情報を、ＣＰＵユニットＡ用デバイスメモリエリア６５Ｂに転送し、転送成功した際に２ポートメモリ７Ａ上の受信完了エリア７５ＡをＯＮにする。
【００４０】
ステップＳＴ３５にて、ＣＰＵユニット１Ａは２ポートメモリ７Ａの受信完了エリア７５ＡがＯＮか否かを判断し、マイクロプロセッサ４Ａが受信完了エリア７５ＡがＯＮになっているのを確認したら、ステップＳＴ１７に移行して、２ポートメモリ７Ａの受信完了エリア７５ＡをＯＦＦにして、ＣＰＵユニット１ＡのＥＮＤ処理完了となる。
一方、受信完了エリア７５ＡがＯＦＦの場合は、ステップＳＴ３６に移行して、一定時間経過したか否かを判断し、一定時間経過しているのであれば、運転代行制御を行うＣＰＵユニット１Ｂに異常があるので、そのままＥＮＤ処理を終了する。
【００４１】
次に、ＥＮＤ処理としてＣＰＵユニット１Ｂのマイクロプロセッサ４Ｂが、デバイスメモリエリア６２Ａの情報を受け取る手段について第６図の処理フローを用いて説明する。
ここで、第５図及び第６図で示した処理は、従来のＣＰＵユニットの処理のシーケンスプログラム実行前のＯＳプログラムのＥＮＤ処理（ステップＳＴ３）の最後に追加するものである。
【００４２】
始めにステップＳＴ４１において、２ポートメモリ７Ｂ上の送信完了エリア７４ＢがＯＮになっているか調べる。
送信完了エリア７４ＢがＯＮになっていれば、２ポートメモリ７Ｂ上のデバイスメモリエリア７２ＢにＣＰＵユニット１Ａのデバイスメモリエリア６２Ａの情報が転送されているので、ステップＳＴ４３にて、２ポートメモリ７ＢからＣＰＵユニットＡ用デバイスメモリエリア６５Ｂに転送し、その後、２ポートメモリ７Ｂにある送信完了エリア７４ＢをＯＦＦする。
そして、ステップＳＴ４５にてバス３を通じてＣＰＵユニット１Ａの２ポートメモリ７Ａ上の受信完了エリア７５ＡをＯＮにする。
【００４３】
一方、送信完了エリア７４ＢがＯＦＦの場合、ステップＳＴ４２にて一定時間経過したか否かを判断し、一定時間が経過したのであれば、ステップＳＴ４６に移行して、運転代行制御を依頼するＣＰＵユニット１Ａに異常があるとして、２ポートメモリ７Ｂ上にある異常検出エリア７６ＢをＯＮにし、ＣＰＵユニット１Ａの運転代行制御を開始する（ステップＳＴ４７）。
【００４４】
次に、ＣＰＵユニット１ＢがＣＰＵユニット１Ａの運転代行制御を開始する方法について第７図を用いて説明する。
ラＣＰＵユニット１Ｂは、システムＢのシーケンス処理（ステップＳＴ５２）、ＥＮＤ処理（ステップＳＴ５３）を行う。
そして、ＣＰＵユニット１Ｂが運転代行制御を行う対象のＣＰＵユニット１Ａの異常を検出したら、ＣＰＵユニット１Ｂは、ＣＰＵユニット１Ａ用デバイスメモリエリア６５Ｂ、パラメータエリア６６Ｂをもとに、プログラムエリア６４Ｂにあるシーケンスプログラムを実行し、異常が発生したＣＰＵユニット１ＡのＩ／Ｏユニット２Ａを制御するシステムＡの運転代行を開始する。
【００４５】
ＣＰＵユニット１Ｂが運転代行制御するＣＰＵユニット１Ａのシーケンス処理（ステップＳＴ５５）、ＥＮＤ処理（ステップＳＴ５６）を行った後、ユーザがあらかじめパラメータで設定しておいた運転代行制御中のコンスタントスキャンになるまで待ち（ステップＳＴ５８）、再びシステムＢのＣＰＵユニット１Ｂのシーケンス処理を行う。
同様にして、ＣＰＵユニット１Ｂが故障により異常が発生した場合も、プログラマブルコントローラＣＰＵユニット１Ａが運転代行を開始する。
また、シーケンスプログラム実行状態のときにＣＰＵユニットにシーケンスプログラムを書くＲＵＮ中書込、ＣＰＵユニット機能を規定するパラメータを更新したときなどは、同様にしてそれぞれプログラムエリア、パラメータエリアの情報を更新する。
【００４６】
本実施の形態によれば、初期処理中及びシーケンス処理終了後のＥＮＤ処理時に運転代行制御対象のＣＰＵユニットが保有するデータを運転代行制御を行うＣＰＵが格納するので、仮に運転代行制御を依頼したＣＰＵユニットが異常により停止したとしても、引き続き他のＣＰＵユニットにより、所定のシーケンスプログラムは停止することなく継続実行される。
【００４７】
また、異常が発生したユニットを交換する際にも、他のユニットにてシーケンス処理が継続されているため、全システムを引き続き続行させることもでき、システム運用が確実なものとなると共に、復旧に要する時間も短縮できる。
【００４８】
実施の形態２．
本発明の実施の形態２について、第１図及び第８図並びに第９図を用いて説明する。
本実施の形態では、マルチＣＰＵ制御システム中でＣＰＵユニットの１つが故障等により異常が発生し、その異常が発生したＣＰＵユニットの運転代行制御を行っているＣＰＵユニットが存在している場合に、異常が発生したＣＰＵユニットをユーザにより正常動作するＣＰＵユニットに取り替え正常復帰する手段につて説明し、特に、運転代行制御しているＣＰＵユニットから取り替えたＣＰＵユニットに制御を戻す方法に関するものである。
【００４９】
なお、本実施の形態では、運転代行制御を行うＣＰＵユニットをＣＰＵユニット１Ｂとし、運転代行制御を依頼する（異常が発生した）ＣＰＵユニットをＣＰＵユニット１Ａの場合を例にとり説明する。
ここで、取り替えたＣＰＵユニット１Ａが正常復帰する処理は、初期処理（ステップＳＴ１）に追加するものであり、ＣＰＵユニット１Ｂが運転代行制御を停止する処理は、ＥＮＤ処理（ステップＳＴ３）に追加するものである。
【００５０】
第８図は、運転代行制御を行っていたＣＰＵユニット１ＢがＣＰＵユニット１Ａの運転代行制御を停止し、異常により取り替えたＣＰＵユニット１Ａが正常復帰する処理を示した処理フローである。
まずユーザは、ＣＰＵユニット１Ｂが運転代行制御中に異常が発生し停止しているＣＰＵユニット１Ａを正常動作するＣＰＵユニットと交換し、ＣＰＵユニット１Ａの位置に装着する。
すると、ステップＳＴ６１にて交換後のＣＰＵユニット１Ａのマイクロプロセッサ４Ａが、ＣＰＵユニット１Ｂの異常検出エリア７６ＢがＯＮになっているか否かを判断し、異常検出エリア７６ＢがＯＮになっている場合、ステップＳＴ６２にて異常検出エリア６５ＢをＯＦＦにする。
【００５１】
運転代行制御を行っているＣＰＵユニット１Ｂのマイクロプロセッサ４Ｂは、ＣＰＵユニット１Ａの異常が排除されたことを知らせる異常検出エリア７６ＢがＯＦＦになれば、ＣＰＵユニット１Ａ用のプログラムエリア６４Ｂ、デバイスメモリエリア６５Ｂ、パラメータエリア６６Ｂの情報を、バス３を通じてＣＰＵユニット１Ａの２ポートメモリ７Ａのプログラムエリア７１Ａ、デバイスメモリエリア７２Ａ、パラメータエリア７３Ａへ転送し、転送が成功した際には送信完了エリア７４ＡをＯＮにする。
【００５２】
ステップＳＴ６３にて、ＣＰＵユニット１Ａは送信完了エリア７４ＡがＯＮになるまで待ち、送信完了エリア７４ＡがＯＮになればステップＳＴ６４に移行して、２ポートメモリ７Ａ上にあるプログラムエリア７１Ａ、デバイスメモリエリア７２Ａ、パラメータエリア７３Ａの情報を、プログラムエリア６１Ａ、デバイスメモリエリア６２Ａ、パラメータエリア６３Ａに転送する。
【００５３】
そして、転送が成功した場合は、ステップＳＴ６５にて送信完了エリア７４ＡをＯＦＦにし、その後、受信完了エリア７５ＢをＯＮにする（ステップＳＴ６６）。
そしてＣＰＵユニット１Ａが、運転代行制御を行うＣＰＵユニット１Ｂのプログラムエリア２０Ｂ、デバイスメモリエリア２１Ｂ、パラメータエリア２２Ｂの情報を受け取る請求項１で述べた初期処理を行い、ＣＰＵユニット１ＡはＩ／Ｏユニット２Ａを制御するシステムＡを復旧できる。
【００５４】
次に、運転代行制御を行っていたＣＰＵユニット１Ｂが、運転代行制御を停止する処理を第９図の処理フローを使って説明する。
【００５５】
ステップＳＴ７１にて、運転代行制御を依頼されたＣＰＵユニット１Ｂが、ＣＰＵユニット１Ａの運転代行制御中か否かを判断し、運転代行制御を行っている場合は、ステップＳＴ７２に移行して、運転代行制御対象のＣＰＵユニット１Ａが復帰したか否かを判断すべく異常検出エリア７６Ｂを確認する。
【００５６】
異常検出エリア７６ＢがＯＦＦになっていれば、運転代行制御対象のＣＰＵユニット１Ａの異常が排除されたというを示しているので、ＣＰＵユニット１Ｂのマイクロプロセッサ４Ｂは、ステップＳＴ７３にて、ＣＰＵユニット１Ａ用のプログラムエリア６４Ｂ、デバイスメモリエリア６５Ｂ、パラメータエリア６６Ｂの情報を、バス３を通じて、２ポートメモリ７Ａ上のプログラムエリア７１Ａ、デバイスメモリエリア７２Ａ、パラメータエリア７３Ａに転送する。
【００５７】
そして、ステップＳＴ７４で、転送が成功したか否かを判断し、転送成功の場合は送信完了エリア７４ＡをＯＮ（ステップＳＴ７５）にし、転送が指定回数以上失敗した場合（ステップＳＴ７６）は、ＣＰＵユニット１Ａの異常が排除されていないので、再び異常検出エリア７６ＢをＯＮにして（ステップＳＴ８１）、ＥＮＤ処理を終了し、ＣＰＵユニット１Ｂによる運転代行制御を継続する。
【００５８】
また、ＣＰＵユニット１Ａは送信完了エリア７４ＡがＯＮにすることにより、交換後のＣＰＵユニット１Ａが２ポートメモリ７Ａ上にあるプログラムエリア７１Ａ、デバイスメモリエリア７２Ａ、パラメータエリア７３Ａの情報を、プログラムエリア６１Ａ、デバイスメモリエリア６２Ａ、パラメータエリア６３Ａに転送し、転送完了した場合に通知される受信完了エリア７５ＢがＯＮになるか否かステップＳＴ７７にて判断する。
そして、受信完了エリア７５ＢがＯＮとなった場合、ステップＳＴ７８にて、受信完了エリア６４ＢをＯＦＦにし、そしてＣＰＵユニット１Ａの運転代行制御を停止して（ステップＳＴ７９）、ＣＰＵユニット１Ｂのプログラムエリア６１Ｂ、デバイスメモリエリア６２Ｂ、パラメータエリア６３Ｂの情報を、運転代行制御するＣＰＵユニット１Ａに与える請求項１で述べたＥＮＤ処理を行う。
【００５９】
一方、受信完了エリア７５Ｂが一定時間経過してもＯＮにならなかった場合（ステップＳＴ８０）は、ＣＰＵユニット１Ａの異常は排除されなかったということなので、再び異常検出エリア７５ＢをＯＮにし（ステップＳＴ８１）、ＥＮＤ処理を終了し、ＣＰＵユニット１Ｂによる運転代行制御を継続する。
ＣＰＵユニット１Ｂを異常が発生したユニット、ＣＰＵユニット１Ａを運転代行制御しているユニットとしても、同様の処理でＣＰＵユニット１Ｂは、Ｉ／Ｏユニット２を制御するシステムＢを復旧することとなる。
【００６０】
本実施の形態によれば、初期処理中及びシーケンス処理終了後のＥＮＤ処理時に異常交換後のＣＰＵユニットが必要とするデータを、運転代行制御を行っているＣＰＵユニットから引き続き転送されるので、ユーザがその異常が発生したＣＰＵユニットを別の正常なＣＰＵユニットに取り替えるだけで、新たに、シーケンスプログラム、デバイスデータ、ＣＰＵユニットの機能を規定するパラメータ等のユーザによる入力が必要なく、復旧に要する時間が短縮できる。
【００６１】
なお、実施の形態１及び２によるマルチＣＰＵ制御においては、ＣＰＵユニットは複数台で構成可能であり、例えば、ＣＰＵユニットＡ、Ｂ、Ｃからなる場合、ＣＰＵユニットＡの運転代行制御を行うＣＰＵユニットとしてＣＰＵユニットＢを用い、ＣＰＵユニットＢの運転代行制御を行うＣＰＵユニットとしてＣＰＵユニットＣを用い、ＣＰＵユニットＣの運転代行制御を行うＣＰＵユニットとしてＣＰＵユニットＡを用いる、上述した、初期処理及びＥＮＤ処理時の処理を相互に実行させることにより実現できる。
【００６２】
また、Ｉ／Ｏユニット以外の位置決め装置などを制御する位置決めユニットなどのインテリジェント機能ユニットなど他のユニットも複数台で構成可能である。
【００６３】
【産業上の利用可能性】
以上のように、本発明にかかるプログラマブルコントローラのＣＰＵユニット及び運転代行制御方法は、複数のＣＰＵユニットにて分散制御を行うマルチＣＰＵシステムにおいて用いられるのに適している。
【図面の簡単な説明】
第１図は、マルチＣＰＵ制御における概略構成を示した概略構成図である。
第２図は、ＣＰＵユニットが行うシーケンス処理を示した処理フローである。
第３図は、初期処理時に、マイクロプロセッサが、プログラムエリア、デバイスメモリエリア、パラメータエリアの情報を与える処理を示した処理フローである。
第４図は、初期処理時に、マイクロプロセッサが、プログラムエリア、デバイスメモリエリア、パラメータエリアの情報を受け取る処理を示した処理フローである。
第５図は、ＥＮＤ処理時に、マイクロプロセッサが、デバイスメモリエリアの情報を与える処理を示した処理フローである。
第６図は、ＥＮＤ処理時に、マイクロプロセッサが、デバイスメモリエリアの情報を受け取る処理を示した処理フローである。
第７図は、運転代行制御を依頼されたＣＰＵユニットが運転代行制御を開始する処理を示した処理フローである。
第８図は、運転代行制御を行っていたＣＰＵユニットが運転代行制御を停止し、異常により取り替えたＣＰＵユニットが正常復帰する処理を示した処理フローである。
第９図は、運転代行制御を行っていたＣＰＵユニットが、運転代行制御を停止する処理フローである。
第１０図は、従来のマルチＣＰＵ制御における概略構成を示した概略構成図である。
【図１】
0003945164.tif 000002
【図２】
0003945164.tif 000003
【図３】
0003945164.tif 000004
【図４】
0003945164.tif 000005
【図５】
0003945164.tif 000006
【図６】
0003945164.tif 000007
【図７】
0003945164.tif 000008
【図８】
0003945164.tif 000009
【図９】
0003945164.tif 000010
【図１０】
0003945164.tif 000011