(57)【特許請求の範囲】
【請求項１】
制御装置間通信手段を介して相互に接続され、一方が稼働系、他方が待機系となる２台の制御装置を有し、稼働系の制御装置が１または複数の機器から入力データを収集し、該入力データに基づいて前記複数の機器に対する出力データを生成する冗長化制御システムにおいて、
前記稼働系の制御装置は、タクト周期毎に、収集した入力データに基づいて出力データを生成するタスクを実行し、当該入力データおよび当該出力データと、前記タスクの演算が完了したか否かを示すタスク完了情報を前記制御装置間通信手段を介して前記待機系の制御装置に送信し、さらに演算が完了したタスクにより得られた出力データを前記複数の機器に送信し、
前記待機系の制御装置は、前記制御装置間通信手段を介して受け取った入力データおよび出力データを自身の入力データおよび出力データとして保持する等値化を行い、前記等値化により保持した入力データおよび出力データのうち前記制御装置間通信手段を介して受け取ったタスク完了情報が演算の完了を示すタスクにより得られた出力データのみを前記複数の機器への送信対象として保持することを特徴とする冗長化制御システム。
【請求項２】
前記稼働系の制御装置は、優先度の異なる複数種類のタスクを実行し、あるタスクの実行により当該タスクより優先度の低いタスクの実行を中断した場合には、当該タスクの実行完了後に中断したタスクの実行を再開することを特徴とする請求項１に記載の冗長化制御システム。
【請求項３】
制御装置間通信手段を介して接続された他の制御装置とともに冗長化制御システムを構成する制御装置において、
自装置が稼働系、前記他の制御装置が待機系である場合に、タクト周期毎に、１または複数の機器から収集した入力データに基づいて前記１または複数の機器に対する出力データを生成するタスクを実行し、当該入力データおよび当該出力データと、前記タスクの演算が完了したか否かを示すタスク完了情報を前記制御装置間通信手段を介して前記他の制御装置に送信し、さらに演算が完了したタスクにより得られた出力データを前記１または複数の機器に送信し、
前記他の制御装置が稼働系、自装置が待機系である場合に、前記制御装置間通信手段を介して受け取った入力データおよび出力データを自身の入力データおよび出力データとして保持する等値化を行い、前記等値化により保持した入力データおよび出力データのうち前記制御装置間通信手段を介して受け取ったタスク完了情報が演算の完了を示すタスクにより得られた出力データのみを前記１または複数の機器への送信対象として保持することを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、稼働系と待機系の制御装置を含む冗長化制御システムに関する。
【背景技術】
【０００２】
工場や各種プラント等の産業施設においては、各種操業を制御するために制御システムと呼ばれる通信システムが構築されることが多い。制御システムには、産業施設内に設置されたセンサからの監視データを収集し、その収集結果に応じて電動機等の駆動制御を行う制御装置が含まれている。このような制御装置としては、ＤＣＳ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ：分散型制御システム或いは分散型制御装置）やプログラマブルロジックコントローラ（以下、ＰＬＣ）が用いられる。一般的なＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）システムでは制御装置としてＰＬＣが用いられることが多く、高信頼性を要求されるプラント設備では制御装置としてＤＣＳが用いられることが多い。
【０００３】
この種の制御システムでは、制御装置等の故障に起因する操業停止を回避するために、制御装置の二重化および監視データのデータ伝送経路の二重化が行われることが一般的である。以下では、制御装置とデータ伝送経路の両方が二重化された制御システムのことを「冗長化制御システム」と呼ぶ。
【０００４】
図３は冗長化制御システムの構成例を示すブロック図である。この冗長化制御システムは、制御装置１００Ａおよび１００Ｂと、ネットワーク３００を介して制御装置１００Ａおよび１００Ｂに各々接続されたＩＯマスタ２００Ａおよび２００Ｂと、複数のＩＯ４００とを有する。ここで、複数のＩＯ４００は、センサのように制御装置による監視データの収集対象となる装置や電動機などの制御対象装置の集合体である。制御装置１００Ａは、ネットワーク３００およびＩＯマスタ２００Ａを介して複数のＩＯ４００との間で監視データおよび制御データの授受を行うことが可能である。また、制御装置１００Ｂは、ネットワーク３００およびＩＯマスタ２００Ｂを介して複数のＩＯ４００との間で監視データおよび制御データの授受を行うことが可能である。なお、以下では監視データおよび制御データをまとめてＩＯデータと総称する場合がある。
【０００５】
この冗長化制御システムにおいて、制御装置１００ＡおよびＩＯマスタ２００Ａの組と、制御装置１００ＢおよびＩＯマスタ２００Ｂの組は、一方の組が稼働系となり、他方の組が待機系となる。稼働系の制御装置および待機系の制御装置の各々は、各々のＩＯマスタを介して監視データを収集し、収集した監視データ（或いは収集した監視データと過去の演算結果）を用いて機器制御のための制御データを求める演算を実行する。稼働系の制御装置は、演算により得られた制御データに基づいて複数のＩＯ４００の制御を行い、待機系の制御装置は、演算により得られた制御データを保持して稼働系の制御装置の停止に備える。そして、待機系の制御装置は、稼働系が停止するとき（或いは停止したとき）には、稼働系として動作し、機器制御を継続する。
【０００６】
また、図３に示す冗長化制御システムでは、制御装置１００Ａおよび１００Ｂが等値化バス４０を介して相互に接続されている。この等値化バス４０は、制御装置１００Ａおよび１００Ｂ間の通信を仲介する制御装置間通信手段である。制御装置１００Ａおよび１００Ｂは、この等値化バス４０を介した通信を行うことにより相互の状態を監視し、監視結果に基づいて稼働系と待機系の切り替え制御を行う。また、制御装置１００Ａおよび１００Ｂは、この等値化バス４０を利用して、監視データおよび制御データの等値化のための通信を行う。
【０００７】
ここで、等値化とは、稼働系の制御装置から待機系の制御装置に監視データおよび制御データを送り、待機系の制御装置が稼働系から受け取った監視データおよび制御データを保持する処理をいう。このような等値化を行うのは、待機系であった制御装置が稼働系に切り替わった場合に、事前に稼働系から受け取った監視データおよび制御データを利用して、ＩＯ４００の制御を円滑に引き継ぐためである。
【０００８】
図４は図３の冗長化制御システムにおける制御装置１００Ａおよび１００Ｂの機能構成を示すブロック図である。これらの制御装置１００Ａおよび１００Ｂは、ＣＰＵと、ＣＰＵにより実行される制御プログラムを記憶するＲＯＭと、ＣＰＵによりワークエリアとして使用されるＲＡＭ等により各々構成されている。
【０００９】
図４に示すように、制御装置１００Ａおよび１００Ｂは、アプリケーション実行機能部１１０と、等値化機能部１２０と、ＩＯリフレッシュ機能部１３０とを含む。これらは、制御装置１００Ａおよび１００ＢのＣＰＵが制御プログラムを実行することにより実現される機能である。ここで、アプリケーション実行機能部１１０はタスク起動／監視機能部１１１を含む。また、等値化機能部１２０は、ＩＯデータ等値化機能部１２１を含む。
【００１０】
また、図４に示すように、制御装置１００Ａおよび１００Ｂは、ＩＯデータ領域１４０と、出力データ送信領域１５０とを有する。これらはＲＡＭ内に設定された記憶領域である。
【００１１】
ＩＯデータ領域１４０は、ＩＯマスタを介して収集した監視データと、監視データから生成した制御データとからなるＩＯデータを記憶する領域である。上述した等値化は、このＩＯデータ領域１４０内のＩＯデータを対象として行われる。さらに詳述すると、稼働系の制御装置１００Ａでは、ＩＯデータ領域１４０内のＩＯデータが読み出され、等値化バス４０を介して待機系の制御装置１００Ｂに送信される。そして、待機系の制御装置１００Ｂでは、ＩＯデータ領域１４０内のＩＯデータを稼働系の制御装置１００Ａから受け取ったＩＯデータに一致させる等値化が行われるのである。また、ＩＯデータ領域１４０内のＩＯデータは、一定時間長のタクト周期毎に更新される。すなわち、制御装置１００Ａおよび１００Ｂでは、タクト周期毎に、ＩＯマスタを介して収集された監視データがＩＯデータ領域１４０に格納され、ＩＯデータ領域１４０内の監視データから生成された制御データがＩＯデータ領域１４０に格納され、監視データおよび制御データからなるＩＯデータの等値化が行われるのである。
【００１２】
出力データ送信領域１５０は、ＩＯデータ領域１４０のＩＯデータのうちＩＯマスタを介してＩＯ４００に送信するＩＯデータ（この場合、制御データ）を記憶する領域である。ＩＯデータ領域１４０から出力データ送信領域１５０へのＩＯデータの転送もタクト周期毎に行われる。
【００１３】
図４に示す例では、制御装置１００Ａが稼働系、制御装置１００Ｂが待機系となっている。稼働系の制御装置１００Ａにおいて、タスク起動／監視機能部１１１は、アプリケーション実行タスクを起動する（ステップＳ１）。このアプリケーション実行タスクは、ＩＯデータ領域１４０内の監視データから制御データを生成し、ＩＯデータ領域１４０に格納する制御アプリケーションを実行するタスクである。タスク起動／監視機能部１１１は、タクト周期毎にアプリケーション実行タスクの演算が完了したか否かを監視する（ステップＳ２）。そして、演算完了したタスクについては図５に示すタスク完了情報の完了フラグを立てる（ステップＳ３）。
【００１４】
ＩＯデータ等値化機能部１２１は、タクト周期毎に、ＩＯデータ領域１４０内のＩＯデータのうち等値化未了のＩＯデータ（この場合、等値化のために待機系の制御装置１００Ｂに送っていないＩＯデータ）を取得し（ステップＳ４）、等値化バス４０を通じて待機系の制御装置１００Ｂへ転送する（ステップＳ５）。
【００１５】
ＩＯリフレッシュ機能部１３０は、タクト周期毎に、タスク完了情報を参照し（ステップＳ６）、ＩＯデータ領域１４０に格納されたＩＯデータのうち完了したタスクにより得られた制御データを出力データ送信領域１５０へ格納する（ステップＳ７）。この出力データ送信領域に格納された制御データはＩＯマスタ２００Ａを介してＩＯ４００に送信される。
【００１６】
一方、待機系の制御装置１００Ｂにおいて、ＩＯデータ等値化機能部１２１は、稼働系の制御装置１００Ａから転送されたＩＯデータをＩＯデータ領域１４０に展開することによりＩＯデータの等値化を行う（ステップＳ８）。そして、ＩＯリフレッシュ機能部１３０は、制御装置１００Ｂのタクト周期毎に、ＩＯデータ領域１４０内の等値化されたＩＯデータを出力データ送信領域１５０へ格納する（ステップＳ９）。
【００１７】
図６はこの冗長化制御システムの動作例を示すタイムチャートである。この動作例において、稼働系の制御装置１００Ａのタスク起動／監視機能部１１１は、制御データを生成するアプリケーション実行タスクとして、稼働系の制御装置１００Ａのタクト周期Ｐａ＝Ｐａ１、Ｐａ２、…に同期した定周期でタスクＴａを起動するとともに、イベントの発生をトリガとする非定周期のタスクＴｂを起動している。ここで、タスクＴａはタスクＴｂよりも優先度が高い。そして、稼働系の制御装置１００ＡのＩＯデータ等値化機能部１２１は、優先度の高いタスクＴａの演算完了後に等値化処理を実行する。
【００１８】
タクト周期Ｐａ１における等値化処理の実行タイミングでは、タスクＴａが完了しており、このタスクＴａの成果である制御データが反映されたＩＯデータＴａ＿１がＩＯデータ領域１４０に格納されている。そこで、タクト周期Ｐａ１の等値化処理では、このＩＯデータＴａ＿１が等値化バス４０を介して待機系の制御装置１００Ｂに送信される。
【００１９】
タクト周期Ｐａ１において、等値化処理の後、タスクＴｂの演算が完了すると、タスクＴｂの成果である制御データが反映されたＩＯデータＴｂ＿１がＩＯデータ領域１４０に格納される。従って、タクト周期Ｐａ１の終了時、タスク起動／監視機能部１１１は、タスクＴａおよびＴｂの両方の完了フラグがＴＲＵＥとなったタスク完了情報１を生成する。
【００２０】
タクト周期Ｐａ２になると、ＩＯリフレッシュ機能部１３０は、タクト周期Ｐａ１のタスク完了情報１において、タスクＴａおよびＴｂの両方の完了フラグがＴＲＵＥとなっていることから、ＩＯデータ領域１４０内のＩＯデータＴａ＿１およびＴｂ＿１を出力データ送信領域１５０に転送する。これによりＩＯデータＴａ＿１およびＴｂ＿１（この場合、制御データ）がＩＯマスタ２００Ａを介してＩＯ４００に送信される。
【００２１】
一方、待機系の制御装置１００Ｂは、タクト周期Ｐｂ＝Ｐｂ１、Ｐｂ２、…に同期して動作している。この待機系の制御装置１００Ｂのタクト周期Ｐｂは、稼働系の制御装置１００Ａのタクト周期Ｐａと同じ周期長を有する。
【００２２】
タクト周期Ｐａ１において稼働系の制御装置１００Ａから送信されたＩＯデータＴａ＿１は、待機系の制御装置１００ＢのＩＯデータ等値化機能部１２１によってＩＯデータ領域１４０に格納される。そして、タクト周期Ｐｂ１において、制御装置１００ＢのＩＯリフレッシュ機能部１３０は、このＩＯデータ領域１４０内のＩＯデータＴａ＿１を出力データ送信領域１５０に転送する。この場合、制御装置１００Ｂは待機系であるので、この制御装置１００Ｂの出力データ送信領域１５０に転送されたＩＯデータＴａ＿１は、ＩＯ４００に送信されない。
【００２３】
次にタクト周期Ｐａ２において、稼働系の制御装置１００Ａでは、タクト周期Ｐａ１と同様、定周期のタスクＴａと、イベント発生により起動されるタスクＴｂが実行される。そして、タスクＴａの演算完了後に等値化処理が実行される。
【００２４】
このタクト周期Ｐａ２の等値化処理の実行タイミングにおいて、ＩＯデータ領域１４０には、先のタクト周期Ｐａ１において完了したタスクＴｂの成果を反映したＩＯデータＴｂ＿１とタクト周期Ｐａ２において完了したタスクＴａの成果を反映したＩＯデータＴａ＿２が格納されている。そこで、稼働系の制御装置１００ＡのＩＯデータ等値化機能部１２１は、このＩＯデータＴａ＿２およびＴｂ＿１を等値化バス４０を介して待機系の制御装置１００Ｂに送信する。
【００２５】
このように従来の冗長化制御システムでは、タクト周期毎に当該タクト周期において実行したタスクの成果を反映したＩＯデータの等値化が行われるとともに、演算の完了したタスクにより得られたＩＯデータが制御対象装置であるＩＯに送信される。
【００２６】
このような冗長化制御システムおよび等値化に関する従来技術の一例としては特許文献１に開示の技術が挙げられる。
【先行技術文献】
【特許文献】
【００２７】
【特許文献１】特開平６−２１４８１６号公報
【発明の概要】
【発明が解決しようとする課題】
【００２８】
ところで、上述した従来の冗長化制御システムでは、各タクト周期において、演算の完了したタスクにより得られたＩＯデータが稼働系の制御装置から制御対象装置であるＩＯに送信される一方、演算が完了していないタスクの影響を受けたＩＯデータを用いた等値化が行われる。このため、従来の冗長化制御システムは、稼働系／待機系の切り替え前後において制御対象装置に送られるＩＯデータ（この場合、制御データ）の一義性が失われる場合があるという問題があった。ここで、一義性が失われるとは、稼働系／待機系の切り替え前後において、制御対象装置に送られる制御データが同じ制御内容に対応したものでなくなること（例えば不連続になること）を意味する。
【００２９】
以下、図６を参照し、この問題について具体的に説明する。図６に示す例では、タクト周期Ｐａ２が終了する時点において、タスクＴｂの演算が完了していない。このため、タクト周期Ｐａ２の終了時、不完全な内容の制御データを反映したＩＯデータＴｂ＿１’がＩＯデータ領域１４０に格納された状態になる。そこで、タクト周期Ｐａ２の終了時、タスク起動／監視機能部１１１は、タスクＴａの完了フラグがＴＲＵＥ、タスクＴｂの完了フラグがＦＡＬＳＥとなったタスク完了情報２を生成する。
【００３０】
タクト周期Ｐａ３になると、ＩＯリフレッシュ機能部１３０は、タクト周期Ｐａ２のタスク完了情報２において、タスクＴａの完了フラグがＴＲＵＥ、タスクＴｂの完了フラグがＦＡＬＳＥとなっていることから、ＩＯデータ領域１４０内のＩＯデータＴａ＿２のみを出力データ送信領域１５０に転送する。これによりＩＯデータＴａ＿２および前タクト周期Ｐａ２において送ったＩＯデータＴｂ＿１がＩＯマスタ２００Ａを介してＩＯ４００に送信される。
【００３１】
タクト周期Ｐａ３では、定周期のタスクＴａが実行され、その成果を反映したＩＯデータＴａ＿３が格納される。このタスクＴａの完了後、タクト周期Ｐａ２において完了しなかったタスクＴｂが再開され、本来ならばタクト周期Ｐａ２において完了すべきタスクＴｂが完了する。そして、この途中から再開されたタスクＴｂの成果を反映したＩＯデータＴｂ＿２’がＩＯデータ領域１４０に格納される。
【００３２】
その後、等値化処理の実行タイミングにおいて、ＩＯデータ領域１４０には、タクト周期Ｐａ３において完了したタスクＴａの成果を反映したＩＯデータＴａ＿３と、タクト周期Ｐａ３において再開したタスクＴｂの成果を反映したＩＯデータＴｂ＿２’が格納されている。そこで、ＩＯデータ等値化機能部１２１は、このＩＯデータＴａ＿３およびＴｂ＿２’を等値化バス４０を介して待機系の制御装置１００Ｂに送信する。
【００３３】
タクト周期Ｐａ３では、等値化処理の後、イベント起動によるタスクＴｂが実行される。そして、タスクＴｂの演算が完了し、その成果を反映したＩＯデータＴｂ＿２がＩＯデータ領域１４０に格納される。そこで、タクト周期Ｐａ３の終了時、タスク起動／監視機能部１１１は、タスクＴａおよびＴｂの完了フラグの両方がＴＲＵＥとなったタスク完了情報３を生成する。このため、タクト周期Ｐａ４の開始時、ＩＯリフレッシュ機能部１３０は、ＩＯデータ領域１４０内のＩＯデータＴａ＿３およびＴｂ＿２を出力データ送信領域１５０に転送する。
【００３４】
図６に示す例では、タクト周期Ｐａ３の終了タイミングにおいて稼働系／待機系の切り替えが行われており、タクト周期Ｐａ４以降、制御装置１００Ａは待機系となり、タクト周期Ｐｂ３以降、制御装置１００Ｂは、稼働系として動作する。
【００３５】
上述したように、稼働系／待機系の切り替えが行われる前のタクト周期Ｐａ３では、ＩＯデータＴａ＿３およびＴｂ＿２’が制御装置１００Ａから制御装置１００Ｂに送られ、制御装置１００ＢのＩＯデータ領域１４０に格納される。
【００３６】
タクト周期Ｐｂ３において、稼働系となった制御装置１００ＢのＩＯリフレッシュ機能部１３０は、ＩＯデータ領域１４０内のＩＯデータＴａ＿３およびＴｂ＿２’を出力データ送信領域１５０に転送する。これによりＩＯデータＴａ＿３およびＴｂ＿２’がＩＯマスタ２００Ｂを介してＩＯ４００に送信される。
【００３７】
仮に稼働系／待機系の切り替えが行われなかったとした場合、タクト周期Ｐａ３においてＩＯデータＴａ＿２およびＴｂ＿１がＩＯ４００に送られた後、タクト周期Ｐａ４においてＩＯデータＴａ＿３およびＴｂ＿２がＩＯ４００に送られたはずである。しかしながら、稼働系／待機系の切り替えが行われた結果、タクト周期Ｐａ３においてＩＯデータＴａ＿２およびＴｂ＿１がＩＯ４００に送られた後、タクト周期Ｐｂ３においてＩＯデータＴａ＿３およびＴｂ＿２’がＩＯ４００に送られる。ここで、ＩＯデータＴｂ＿２’は、途中から再開されたタスクＴｂにより得られたデータであり、本来送られるべきであったＩＯデータＴｂ＿２とは内容が異なる。
【００３８】
このように従来の冗長化制御システムは、稼働系／待機系の切り替え前後において、制御対象装置に送られる制御データの一義性を保証できない場合があるという問題があった。
【００３９】
この発明は以上説明した事情に鑑みてなされたものであり、稼働系／待機系の切り替え前後において制御対象装置に送られる制御データの一義性を保証することができる冗長化制御システムを提供することを目的としている。
【課題を解決するための手段】
【００４０】
上記課題を解決するために、この発明は、制御装置間通信手段を介して相互に接続され、一方が稼働系、他方が待機系となる２台の制御装置を有し、稼働系の制御装置が１または複数の機器から入力データを収集し、該入力データに基づいて前記複数の機器に対する出力データを生成する冗長化制御システムにおいて、前記稼働系の制御装置は、タクト周期毎に、収集した入力データに基づいて出力データを生成するタスクを実行し、当該入力データおよび当該出力データと、前記タスクの演算が完了したか否かを示すタスク完了情報を前記制御装置間通信手段を介して前記待機系の制御装置に送信し、さらに演算が完了したタスクにより得られた出力データを前記複数の機器に送信し、前記待機系の制御装置は、前記制御装置間通信手段を介して受け取った入力データおよび出力データを自身の入力データおよび出力データとして保持する等値化を行い、前記等値化により保持した入力データおよび出力データのうち前記制御装置間通信手段を介して受け取ったタスク完了情報が演算の完了を示すタスクにより得られた出力データのみを前記１または複数の機器への送信対象として保持することを特徴とする冗長化制御システムを提供する。
【発明の効果】
【００４１】
この発明によれば、待機系の制御装置では、等値化により保持した入力データおよび出力データのうち制御装置間通信手段を介して受け取ったタスク完了情報が演算の完了を示すタスクにより得られた出力データのみが１または複数の機器への送信対象として保持される。従って、待機系の制御装置が稼働系に切り替わった場合において、待機系である期間に送信対象として保持された出力データが１または複数の機器に送信される場合に、１または複数の機器に送られる出力データの一義性を保証することができる。
【図面の簡単な説明】
【００４２】
【図１】この発明の一実施形態である冗長化制御システムの制御装置の機能構成を示すブロック図である。
【図２】同冗長化制御システムの動作例を示すタイムチャートである。
【図３】従来の冗長化制御システムの構成例を示すブロック図である。
【図４】同冗長化制御システムの機能構成を示すブロック図である。
【図５】同冗長化制御システムにおいて発生するタスク完了情報の内容を示す図である。
【図６】同冗長化制御システムの動作例を示すタイムチャートである。
【発明を実施するための形態】
【００４３】
以下、図面を参照しつつ本発明の実施形態を説明する。
図１はこの発明の一実施形態である冗長化制御システムの制御装置の機能構成を示すブロック図である。本実施形態による冗長化制御システムは、図１に示す制御装置１０１Ａおよび１０１Ｂを有する。この制御装置１０１Ａおよび１０１Ｂは、前掲図４の制御装置１００Ａおよび１００Ｂの等値化機能部１２０およびＩＯリフレッシュ機能部１３０を等値化機能部１２０ａおよびＩＯリフレッシュ機能部１３０ａに置き換えた構成となっている。他の構成要素については、前掲図４に示された各構成要素と同様である。従って、図１において前掲図４に示された構成要素と対応する構成要素には共通の符号を使用し、その説明を省略する。
【００４４】
制御装置１０１Ａおよび１０１Ｂにおいて、等値化機能部１２０ａには、前掲図４のＩＯデータ等値化機能部１２１に加えて、タスク完了情報取得／展開機能部１２２が設けられている。稼働系である制御装置１０１Ａのタスク完了情報取得／展開機能部１２２は、あるタクト周期Ｐａの終了時、そのタクト周期Ｐａに対応したタクト完了情報を等値化バス４０を介して待機系の制御装置１０１Ｂに送信する。待機系の制御装置１０１Ｂのタスク完了情報取得／展開機能部１２２は、稼働系の制御装置１０１Ａのタスク完了情報取得／展開機能部１２２から受け取ったタクト完了情報を所定の記憶エリアに展開し（ステップＳ１１）、ＩＯリフレッシュ機能部１３０ａに引き渡す。
【００４５】
稼働系の制御装置１０１ＡのＩＯリフレッシュ機能部１３０ａの処理内容は前掲図４のものと同様である。待機系の制御装置１０１ＢのＩＯリフレッシュ機能部１３０ａの処理内容は前掲図４のものと異なる。前掲図４において、待機系の制御装置１０１ＢのＩＯリフレッシュ機能部１３０ａは、タクト周期Ｐｂの開始時、ＩＯデータ領域１４０内のＩＯデータを無条件で出力データ送信領域１５０に転送した。これに対し、本実施形態におけるＩＯリフレッシュ機能部１３０ａは、タクト周期Ｐｂの開始時、タスク完了情報取得／展開機能部１２２を介して稼働系の制御装置１０１Ａから受け取ったタスク完了情報を参照し（ステップＳ１０）、ＩＯデータ領域１４０内のＩＯデータから演算の完了していないタスクの影響を受けたＩＯデータ（例えば途中から再開されたタスクにより得られたＩＯデータ）を除外し、演算の完了したタスクにより得られたＩＯデータのみを出力データ送信領域１５０に転送する。
【００４６】
図２は本実施形態による冗長化制御システムの動作例を示すタイムチャートである。この動作例において、稼働系の制御装置１０１Ａの動作は、タスク完了情報取得／展開機能部１２２がタスク完了情報を待機系の制御装置１０１Ｂに送信する点を除けば、前掲図６の動作例と同様である。
【００４７】
本実施形態において、待機系の制御装置１０１ＢのＩＯリフレッシュ機能部１３０ａは、上述した通り、稼働系の制御装置１０１Ａから受け取ったタスク完了情報を参照して、ＩＯデータ領域１４０から出力データ送信領域１５０へ転送するＩＯデータを選択する。この点において、待機系の制御装置１０１Ｂの動作は前掲図６のものと異なったものとなる。
【００４８】
図２に示す動作例において、タクト周期Ｐａ２では、タスクＴａの演算は完了したが、タスクＴｂの演算は完了しなかったため、タスクＴａの完了フラグがＴＲＵＥ、タスクＴｂの完了フラグがＦＡＬＳＥであるタスク完了情報２が待機系の制御装置１０１Ｂに送られる。
【００４９】
ここで、タクト周期Ｐａ２におけるタスクＴｂの演算が完了しなかった場合、その後のタクト周期Ｐａ３においてタスクＴｂの残りの演算が行われ、その演算の成果を反映したＩＯデータＴｂ＿２’が等値化処理により待機系の制御装置１０１Ｂに送られ、ＩＯデータ領域１４０に格納される。
【００５０】
しかしながら、本実施形態において、待機系の制御装置１０１ＢのＩＯリフレッシュ機能部１３０ａは、稼働系のタクト周期Ｐａ２のタスクの成果であるＩＯデータをＩＯデータ領域１４０から出力データ送信領域１５０に転送すべきか否かを判断するに当たって、稼働系から受け取ったタクト周期Ｐａ２のタスク完了情報２を参照する。そして、タクト周期Ｐａ２のタスク完了情報２においてタスクＴａの完了フラグはＴＲＵＥであるが、タスクＴｂの完了フラグはＦＡＬＳＥになっている。従って、タクト周期Ｐａ２の直後のタクト周期Ｐａ３では、タクト周期Ｐａ２において完了しなかったタスクＴｂを再開するはずである。従って、タクト周期Ｐａ３のタスクＴｂの成果を反映したＩＯデータＴｂ＿２’は、タクト周期Ｐａ２において完了しなかったタスクＴｂの影響を受けた不完全なＩＯデータであると考えられる。そこで、タクト周期Ｐａ３の終了時、待機系のＩＯリフレッシュ機能部１３０ａは、ＩＯデータ領域１４０内のＩＯデータのうちタスクＴｂの成果であるＩＯデータＴｂ＿２’は除外し、タスクＴａの成果であるＩＯデータＴａ＿３のみを出力データ送信領域１５０に転送する。タクト周期Ｐａ３の終了後、待機系の制御装置１０１Ｂが稼働系になると、制御装置１０１Ｂの出力データ送信領域１５０に転送されたＩＯデータＴａ＿３は、ＩＯ４００に送信される。
【００５１】
以上のように本実施形態によれば、稼働系ではタクト周期毎にＩＯデータを更新するタスクが実行され、タスクの成果を反映したＩＯデータとタスクの演算が完了したか否かを示すタスク完了情報が待機系の制御装置に送られる。また、稼働系の制御装置では、演算の完了したタスクにより得られたＩＯデータがＩＯに送られる。一方、待機系の制御装置では、稼働系から受け取ったＩＯデータを用いた等値化が行われるとともに、稼働系から受け取ったＩＯデータのうち、タスク完了情報が演算の完了を示しているタスクにより得られたＩＯデータのみを選択し、ＩＯへの送信対象として保持する。従って、稼働系／待機系切り替えが行われ、待機系から稼働系になった制御装置が出力対象として保持したＩＯデータをＩＯに送信した場合、演算の完了していないタスクの影響を受けたＩＯデータがＩＯに送信されるのを回避することができる。従って、本実施形態によれば、稼働系／待機系の切り替え前後においてＩＯに送られるＩＯデータの一義性を保証することができる。
【００５２】
＜他の実施形態＞
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば上記実施形態において稼働系の制御装置は、タクト周期毎に優先度の異なる複数種類のタスクを実行した。しかし、この発明は、稼働系の制御装置がタクト周期毎に１種類のタスクを実行するような冗長化制御システムにも勿論適用可能である。また、上記実施形態において、最も優先度の高いタスクは定周期で起動されるタスクであったが、最も優先度の高いタスクとして、イベント起動によるタスクを実行してもよい。
【符号の説明】
【００５３】
１０１Ａ，１０１Ｂ…制御装置、１１０…アプリケーション実行機能部、１２０ａ…等値化機能部、１２１…ＩＯデータ等値化機能部、１２２…タスク完了情報取得／展開機能部、１３０ａ…ＩＯリフレッシュ機能部、１４０…ＩＯデータ領域、１５０…出力データ送信領域、４０…等値化バス。
【図１】
0006354535.tif 000002
【図２】
0006354535.tif 000003
【図３】
0006354535.tif 000004
【図４】
0006354535.tif 000005
【図５】
0006354535.tif 000006
【図６】
0006354535.tif 000007