(57)【特許請求の範囲】
【請求項１】
一方が稼働系となり他方が待機系となり等値化通信手段を介して通信を行う２つの制御装置を備えた制御システムであって、
前記２つの制御装置の各々は、
各々実行周期が設定された複数のタスクのうち最も実行周期が短い第１のタスクの実行周期を時間区間の単位とし、単位区間毎に、前記第１のタスクを実行するとともに他のタスクを実現するためのアプリケーションプログラムのうち当該単位区間に予め対応付けられたアプリケーションプログラムを実行するタスク管理手段と、
自装置が稼働系である場合には、タスクの実行に伴って自装置のメモリに書き込まれたデータと次に実行する単位区間を示す区間識別子とを単位区間の終わりに前記等値化通信手段を介して他方の制御装置へ送信する一方、自装置が待機系である場合には前記等値化通信手段を介して他方の制御装置から受信したデータと区間識別子とを自装置のメモリに書き込む等値化手段と、
タスクの実行が完了したか否かをタスク毎に判定し実行を完了したタスクの処理結果を示すデータを出力する処理を、自装置が稼働系である場合に、前記等値化手段の処理を完了した後に実行するデータ入出力手段と、
を有し、
前記タスク管理手段は、
自装置が待機系であり、かつ前記等値化通信手段を介した通信により稼働系の切り替えを検出した場合に、自装置のメモリに記憶されている区間識別子の示す単位区間から前記複数のタスクの実行を開始する
ことを特徴とする制御システム。
【請求項２】
前記複数のタスクの各々には実行周期が短いほど高い優先順位が設定されており、
前記タスク管理手段は、
各単位区間において、前記第１のタスクの実行を完了した後、当該単位区間に対応付けられたアプリケーションプログラムをタスクの優先順位順に実行する
ことを特徴とする請求項１に記載の制御システム。
【請求項３】
一方が稼働系となり他方が待機系となり等値化通信手段を介して通信を行う２つの制御装置よりなる制御装置対を形成する制御装置であって、
優先順位が高いほど実行周期を短く設定された複数のタスクのうち優先順位が最も高い第１のタスクの実行周期を時間区間の単位とし、単位区間毎に、前記第１のタスクを実行するとともに他のタスクを実現するためのアプリケーションプログラムのうち当該単位区間に予め対応付けられたアプリケーションプログラムを実行するタスク管理手段と、
自装置が稼働系である場合には、タスクの実行に伴って自装置のメモリに書き込まれたデータと次に実行する単位区間を示す区間識別子とを単位区間の終わりに前記等値化通信手段を介して他方の制御装置へ送信する一方、自装置が待機系である場合には前記等値化通信手段を介して他方の制御装置から受信したデータと区間識別子とを自装置のメモリに書き込む等値化手段と、
タスクの実行が完了したか否かをタスク毎に判定し実行を完了したタスクの処理結果を示すデータを出力する処理を、自装置が稼働系である場合に、前記等値化手段の処理を完了した後に実行するデータ入出力手段と、
を有し、
前記タスク管理手段は、
自装置が待機系であり、かつ前記等値化通信手段を介した通信により稼働系の切り替えを検出した場合に、自装置のメモリに記憶されている区間識別子の示す単位区間から前記複数のタスクの実行を開始する
ことを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機器を制御する制御装置を二重化した制御システムに関し、特に制御装置による演算結果の等値化技術に関する。
【背景技術】
【０００２】
工場や各種プラント等の産業施設においては、各種操業を制御するために制御システムと呼ばれる通信システムが構築されることが多い。制御システムには、産業施設内に設置されたセンサからの監視データの収集やその収集結果に応じて電動機等の駆動制御を行う制御装置が含まれている。このような制御装置としては、ＤＣＳ（Distributed
Control System：分散型制御システム或いは分散型制御装置）やプログラマブルロジックコントローラ（以下、ＰＬＣ）が用いられる。一般的なＦＡ（Factory Automation）システムでは制御装置としてＰＬＣが用いられることが多く、高信頼性を要求されるプラント設備では制御装置としてＤＣＳが用いられることが多い。ＤＣＳはＰＬＣに比較して信頼性が高いからである。
【０００３】
制御システムに含まれる制御装置は、監視データの収集、その監視データに基づく制御データの演算、および制御データの送信等の一連の処理（以下、「タスク」と呼ぶ）を、一定周期で繰り返し実行する。１つのタスクは、１つのアプリケーションプログラムを制御装置に実行させることで実現されるものもあれば、複数のアプリケーションプログラムを順次制御装置に実行させることで実現されるものもある。制御システムによって実現される操業の制御は、複数のタスクの組み合わせによって実現され、タスクの実行周期はタスク毎に区々である。また、複数のタスクの実行が競合する場合に備えてタスク毎に優先順位が定められる場合がある。例えば、実行周期の短いタスクほど優先順位を高くするといった具合である。
【０００４】
制御システムでは、制御装置の故障に起因する操業停止を回避するために、制御装置の二重化が行われる場合がある。具体的には、制御システムに２台の制御装置を設け、その一方を稼働系、他方を待機系として動作させる、といった具合である。以下では、制御装置の二重化された制御システムを「冗長化制御システム」と呼ぶ。稼働系の制御装置は、前述したタスクを実行し、待機系の制御装置は稼働系の制御装置の停止に備える。そして、待機系の制御装置は、稼働系の制御装置が停止するとき（或いは停止したとき）には、以降、稼働系として動作する。稼働系の制御装置の停止の具体例としては、何らかの故障や不具合の発生に起因する予期せぬ停止や、保守メンテナンス等による予め計画された停止などが考えられる。待機系の制御装置はこれら２種類の停止の両方に備える。冗長化制御システムでは、２つの制御装置の各々が他方の状態監視を行えるようにするために、通信ケーブルを介してそれら２つの制御装置を接続することが多い。
【０００５】
冗長化制御システムでは、稼働系の制御装置に故障が発生しても稼働系の切り替えを行うことで、タスクの実行を継続することが可能であるが、単に稼働系の切り替えを行うだけでは、その切り替え前後で演算結果である制御データが突変するなどの不具合が発生する場合がある。化学プラント用や製鉄プラント用の冗長化制御システムでは、制御データの突変に起因して原料の投入量や加熱時間等に誤りが生じ、膨大な量の原料を無駄にする虞がある。このような不具合の発生を回避するために、冗長化制御システムでは、稼働系における演算結果やタスクの実行状況を上記通信ケーブル経由で待機系に送信し記憶させる等値化処理が周期的に実行される。例えば、特許文献１には、優先順位付けされた複数のタスクの実行制御が割り込みにより実現されるとともに、各タスクの終了時点で等値化処理が実行される冗長化制御システムにおける稼働系の切り替えの際に、稼働系におけるプログラムカウンタを待機系へ引き継ぐことでタスクの重複実行等を防止し、演算結果の突変を回避する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１４８５２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、冗長化制御システム用の制御装置として市販の汎用マイコンを用いることが提案されている。しかし、汎用マイコンではプログラムカウンタに関する仕様が開示されていない場合が多く、汎用マイコンにより制御装置を構成した冗長化制御システムでは、特許文献１に開示の技術を利用することはできない。つまり、実行周期の異なる複数種のタスクを稼働系の制御装置に実行させる冗長化制御システムにおいて、制御装置として汎用マイコンを用いつつ、稼働系の切り替え時の出力データ継続性を確保することを可能にする技術は従来なかった。
【０００８】
以上説明したように本実施形態によれば、実行周期の異なる複数種のタスクを稼働系の制御装置に実行させる冗長化制御システムにおいて、制御装置として汎用マイコンを用いた場合であっても、稼働系の切り替え時の出力データ継続性を確保することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明は、一方が稼働系となり他方が待機系となり等値化通信手段を介して通信を行う２つの制御装置を備えた制御システムの各制御装置に、以下のタスク管理手段、等値化手段、およびデータ入出力手段を設ける。タスク管理手段は、各々実行周期が設定された複数のタスクのうち最も実行周期が短い第１のタスクの実行周期を時間区間の単位とし、単位区間毎に、第１のタスクを実行するとともに他のタスクを実現するためのアプリケーションプログラムのうち当該単位区間に予め対応付けられたアプリケーションプログラムを実行する。等値化手段は、自装置が稼働系である場合と待機系である場合とで異なる処理を実行する。稼働系である場合には、等値化手段は、タスクの実行に伴って自装置のメモリに書き込まれたデータと次に実行する単位区間を示す区間識別子とを単位区間の終わりに等値化通信手段を介して他方の制御装置へ送信する。待機系である場合には、等値化手段は、等値化通信手段を介して他方の制御装置から受信したデータと区間識別子とを自装置のメモリに書き込む。データ入出力手段は、タスクの実行が完了したか否かをタスク毎に判定し実行を完了したタスクの処理結果を示すデータを出力する処理を、自装置が稼働系である場合に、等値化手段の処理を完了した後に実行する。そして、待機系の制御装置のタスク管理手段は、等値化通信手段を介した通信により稼働系の切り替えを検出した場合には、自装置のメモリに記憶されている区間識別子の示す単位区間から複数のタスクの実行を開始する。
【００１０】
本発明では、第１のタスクは単位時間毎に実行される一方、他のタスクを実現する１または複数のアプリケーションプログラムは１または複数の単位区間に亘って実行される。そして、単位区間毎にその単位区間において更新されたデータの等値化が行われる。何れかの単位区間において稼働系の切り替えが発生したとしても、切り換え後の稼働系の制御装置においては、一つ手前の単位区間までの演算結果を引き継いで第１のタスクの実行を再開し、さらに他のタスクの実行を再開することができる。このため、稼働系の切り替え時の出力データ継続性を確保することができる。本発明における区間識別子は、プログラムカウンタである必要はない。例えば、上記複数のタスクが上記第１のタスクと、第１のタスクのＮ（Ｎは２以上の整数）倍の時間長の実行周期を有する第２のタスクである場合には、第２のタスクの実行周期を単位区間でＮ等分した場合の何番目の単位区間まで実行を完了しているかを示す汎用カウンタのカウンタ値を区間識別子として用いるようにすれば良い。本発明によれば、実行周期の異なる複数種のタスクを稼働系の制御装置に実行させる冗長化制御システムにおいて、制御装置として汎用マイコンを用いた場合であっても、稼働系の切り替え時の出力データ継続性を確保することが可能になる。
【００１１】
第１のタスクのほうが第２のタスクよりも優先順位が高い場合には、各単位区間の各々において、第１のタスクを実現するための全てのアプリケーションプログラムの実行を完了した後に第２のタスクを実現するアプリケーションプログラムを実行する処理をタスク管理手段に実行させれば良い。また、実行周期の時間長が第１のタスク以上であって、第２のタスクよりも優先順位が高い第３のタスクを制御装置に実行させても良く、この場合は、第３のタスクを実現する１または複数のアプリケーションプログラムのうち実行中の単位区間に予め対応付けられてアプリケーションプログラムを、第１のタスクを実現するため全てのアプリケーションプログラムの実行を完了した後、第２のタスクを実現するアプリケーションプログラムに先立って実行する処理を単位時間毎にタスク管理手段に実行させるようにすれば良い。要は、制御装置に実行させる複数のタスクの各々に予め優先順位を設定しておくとともに優先順位が高いほど短い実行周期を設定しておき、タスク管理手段には、各単位区間において、最も優先順位の高い第１のタスクの実行を完了した後、他のタスクを実現するアプリケーションプログラムのうち当該単位区間に対応付けられたアプリケーションプログラムをタスクの優先順位順に実行させるようにすれば良い。
【００１２】
また、上記課題を解決するために本発明は、一方が稼働系となり他方が待機系となり等値化通信手段を介して通信を行う２つの制御装置よりなる制御装置対を形成する制御装置として、上記タスク管理手段、等値化手段、およびデータ入出力手段を含む制御装置を提供する。本発明のさらに別の態様としては、コンピュータを上記タスク管理手段および等値化手段として機能させるプログラムを提供する態様が考えられる。また、このようなプログラムの具体的な提供態様としては、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）やフラッシュＲＯＭ（Read
Only Memory）などのコンピュータ読み取り可能な記録媒体に当該プログラムを書き込んで配布する態様や、インターネットなどの電気通信回線経由のダウンロードにより配布する態様が考えられる。
【発明の効果】
【００１３】
本発明によれば、実行周期の異なる複数種のタスクを稼働系の制御装置に実行させる冗長化制御システムにおいて、制御装置として汎用マイコンを用いた場合であっても、稼働系の切り替え時の出力データ継続性を確保することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態の制御装置１０の構成例および同制御装置１０を含む制御システムの構成例を示すブロック図である。
【図２】タスク構成テーブルのデータ構造の一例を示す図である。
【図３】タスクＡおよびタスクＢの実行シーケンスの一例を示す図である。
【図４】プログラム管理テーブルのデータ構造の一例を示す図である。
【図５】タスク実行状況テーブルのデータ構造の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照しつつ本発明の実施形態を説明する。
図１は、本発明の一実施形態による制御システムの構成例を示すブロック図である。この制御システムは、化学プラントや製鉄プラントなどの産業施設に敷設され、当該産業施設に設置されたセンサ等から収集される監視データに基づいて電動機等の駆動制御を行い、当該産業施設における操業を支援する。図１に示すように、この制御システムは、制御ネットワーク３０に各々接続された制御装置１０Ａおよび制御装置１０Ｂを有する。図１では詳細な図示を省略したが、制御ネットワーク３０には、監視データの送信元となるセンサ等が接続されているとともに電動機等の制御対象機器が接続されている。
【００１６】
図１に示すように、制御装置１０Ａと制御装置１０Ｂは等値化ケーブル２０を介して互いに接続されている。図１に示す制御システムでは、制御装置１０Ａと制御装置１０Ｂのうちの何れか一方が稼働系となって制御対象機器の駆動制御のための演算を行い、他方は待機系となって稼働系の故障に備える。つまり、図１に示す制御システムは、冗長化制御システムである。以下では、制御装置１０Ａが稼働系となっている場合について説明する。制御装置１０Ａおよび制御装置１０Ｂの各々は例えばＤＣＳである。図１に示すように、制御装置１０Ａの構成と制御装置１０Ｂの構成は同一である。このため、以下では、制御装置１０Ａと制御装置１０Ｂを区別する必要がない場合には、「制御装置１０」と表記する。本実施形態では、制御対象がプラントであるため制御装置１０としてＤＣＳを用いるが、ＰＬＣを用いても勿論良い。図１に示すように、制御装置１０は、制御部１００、メモリＩＦ回路１１０、メモリ１２０、および通信ＩＦ回路１３０を有する。
【００１７】
制御部１００は汎用マイコンである。制御部１００は、メモリ１２０に予め記憶された制御プログラムを実行することにより、制御装置１０の制御中枢として働く。なお、図１では制御プログラムの図示は省略されている。制御プログラムにしたがって作動する制御部１００は、アプリケーションプログラム実行手段、タスク管理手段、等値化手段、およびデータ入出力手段として機能する。これら各手段の詳細については後に明らかにするが、概略は以下の通りである。アプリケーションプログラム実行手段は、タスク管理手段による制御の下、メモリ１２０に予め記憶されたアプリケーションプログラムを実行する。タスク管理手段は、１または複数のアプリケーションプログラムの実行により実現されるタスクの実行管理を行う。等値化手段は、アプリケーションプログラムの実行過程で生成されたデータの等値化を行う。データ入出力手段は、制御ネットワーク３０に接続されているセンサ等から送信されてくるデータを受信して制御部１００へ与える処理、およびアプリケーションプログラムの実行過程で生成され等値化を経たデータの制御ネットワーク３０への送出処理を行う。
【００１８】
メモリＩＦ回路１１０は、メモリ１２０に記憶されている各種データに対する制御部１００によるアクセスを仲介するＬＳＩ（Large-Scale
Integration）である。メモリ１２０は、メモリＩＦ回路１１０を介して制御部１００に接続されている。図１では詳細な図示を省略したが、メモリ１２０は、揮発性メモリと不揮発性メモリとを有する。揮発性メモリは例えばＲＡＭ（Random Access Memory）であり、各種アプリケーションプログラムを実行する際のワークエリアとして制御部１００によって利用される。また、メモリ１２０には、アプリケーションプログラムの実行過程で生成されたデータが格納され、これらのデータが他方の制御装置１０との等値化対象となる。
【００１９】
不揮発性メモリは例えばＥＥＰＲＯＭ（Electrically
Erasable and Programmable Read Only Memory）である。不揮発性メモリには、制御装置１０の機能を実現するための各種プログラムと各種データが予め格納されている。不揮発性メモリに格納されているプログラムの具体例としては、前述した制御プログラムや、図１に示す制御システムの設置先の化学プラントにおける操業を支援するためのアプリケーションプログラムが挙げられる。本実施形態の制御装置１０の不揮発性メモリには、アプリケーションプログラムＰＧ０〜ＰＧ７の８個のアプリケーションプログラムが格納されている。アプリケーションプログラムＰＧ０は、タスクＡを制御部１００に実現させるアプリケーションプログラムであり、アプリケーションプログラムＰＧ１〜ＰＧ７は、タスクＢを制御部１００に実現させるアプリケーションプログラムである。制御部１００は、アプリケーションプログラムＰＧ１〜ＰＧ７の各々をこの順に順次実行することでタスクＢを実現する。
【００２０】
本実施形態では、タスクＡおよびタスクＢの各々を稼働系の制御装置１０に周期的に実行させることで、図１に示す制御システムの設置先の化学プラントにおける操業の支援が実現される。本実施形態では、タスクＡはタスクＢよりも短い周期で実行される。具体的には、タスクＡの実行周期ＴＡは１００ｍｓであり、タスクＢの実行周期ＴＢは４００ｍｓである。制御装置１０の不揮発性メモリには、タスクＡおよびタスクＢの実行周期を定義する情報を格納したタスク構成テーブルと、タスクＢとアプリケーションプログラムＰＧ１〜ＰＧ７の各々との対応関係を示す情報を格納したプログラム管理テーブルとが予め格納されている。
【００２１】
図２は、タスク構成テーブルのデータ構造の一例を示す図である。
図２に示すように、タスク構成テーブルには、タスクＡおよびタスクＢの各々に対応付けて、等値化設定、タスク周期および分割数を表すデータが格納されている。等値化設定とはタスクの全部または一部の実行完了が等値化の契機となるか否かを示し、FALSE（例えば、１）は等値化の契機とならないことを、TRUE（例えば、０）は等値化の契機となることを意味する。図２を参照すれば明らかなように本実施形態では、タスクＡについてはその全部または一部の実行完了は等値化の実行契機となっておらず、タスクＢについてはその全部または一部の実行完了が等値化の実行契機となっている。タスク周期とは、タスクの実行周期のことである。図２に示すように、本実施形態のタスク構成テーブルには、タスクＡの実行周期ＴＡを表すタスク周期データとして１００ｍｓを表すデータが格納されており、タスクＢの実行周期ＴＢを表すタスク周期データとして４００ｍｓを表すデータが格納されている。分割数とは、制御装置１０に実行させるタスクのうちの実行周期が最も短いタスクの実行周期の時間長を時間区間の単位とした場合に、他のタスクの実行周期はその何倍であるかを表すデータである。図２に示すように、本実施形態のタスク構成テーブルには、タスクＢについての分割数データとして４を表すデータが格納されており、タスクＡについての分割数データとして０を表すデータが格納されている。以下、本実施形態ではタスクＢの実行周期を４等分して得られる時間区間、すなわち、タスクＡの実行周期ＴＡと同じ時間長の時間区間のことを「単位区間」と呼ぶ。タスクＢの実行周期は、図３に示すように、各々１００ｍｓの長さの単位区間ＵＴ（ｎ）（ｎ＝１〜４）に４等分される。
【００２２】
本実施形態では、実行周期の短いタスクほど高い優先順位が設定されており、制御部１００は、単位区間ＵＴ（ｎ）（ｎ＝１〜４）の各々においてタスクの優先順位の順にアプリケーションプログラムを実行する。具体的には、単位区間ＵＴ（ｎ）（ｎ＝１〜４）の各々において、制御部１００は、まずタスクＡ（アプリケーションプログラムＰＧ０）を実行し、その実行が完了した後にタスクＢを実現するアプリケーションプログラムを実行する。なお、図３において「入力Ａ」および「入力Ｂ」はデータ入出力手段によるデータの入力、すなわち制御ネットワーク３０から受信したデータの制御部１００への入力を表し、「出力」はデータ入出力手段によるデータの出力、すなわち制御ネットワーク３０へのデータ送出を表す。また、図３における「等値化」は等値化手段による等値化処理を表す。前述したようにタスクＢはアプリケーションプログラムＰＧ１〜ＰＧ７を順次実行することで実現されるタスクである。本実施形態では、アプリケーションプログラムＰＧ１〜ＰＧ７の各々について単位区間ＵＴ（ｎ）の何れにおいて実行するのかが予め定められており、プログラム管理テーブルは両者の対応関係を表すテーブルである。図４に示すように、プログラム管理テーブルには、アプリケーションプログラムＰＧ１〜ＰＧ７の各々に対応付けて、そのアプリケーションプログラムの実行区間を示す単位区間識別子が格納されている。
【００２３】
例えば、図４に示すプログラム管理テーブルは、単位区間ＵＴ（１）においてはアプリケーションプログラムＰＧ１を、単位区間ＵＴ（２）においてはアプリケーションプログラムＰＧ２およびＰＧ３を、単位区間ＵＴ（３）においてはアプリケーションプログラムＰＧ４およびＰＧ５を、単位区間ＵＴ（４）においてはアプリケーションプログラムＰＧ６およびＰＧ７を、夫々実行することを表している。前述したタスク管理手段は、タスク構成テーブルおよびプログラム管理テーブルの格納内容にしたがってタスクＡおよびタスクＢの各々を実現するアプリケーションプログラムの実行制御を行う。
【００２４】
前掲図１に戻って、通信ＩＦ回路１３０は、データ通信用のＬＳＩであり、制御ネットワーク３０に接続されているとともに、等値化ケーブル２０を介して他方の制御装置１０の通信ＩＦ回路１３０に接続されている。また、図１では詳細な図示を省略したが、通信ＩＦ回路１３０には、アプリケーションプログラムの作成や制御装置１０へのインストールを支援するためのコンピュータである支援ツールが接続される。本実施形態におけるアプリケーションプログラムＰＧ０〜ＰＧ７、タスク構成テーブルおよびプログラム管理テーブルは、何れも上記支援ツールによって作成され、制御装置１０にインストールされたものである。
【００２５】
図１では詳細な図示を省略したが、通信ＩＦ回路１３０は、他方の制御装置１０へ送信するデータを格納する送信バッファと他方の制御装置１０から受信したデータが書き込まれる受信バッファとを有している。稼働系の制御装置１０では、等値化手段によって、通信ＩＦ回路１３０の送信バッファへの等値化対象のデータの書き込が行われる。稼働系の制御装置１０の通信ＩＦ回路１３０は、送信バッファに書き込まれたデータを等値化ケーブル２０を介して待機系の制御装置１０へ送信する。待機系の制御装置１０の通信ＩＦ回路１３０は、等値化ケーブル２０を介して受信したデータを受信バッファに書き込み、このようにして受信バッファに格納されたデータは、待機系の制御装置１０の等値化手段によって自身のメモリ１２０に展開される。
【００２６】
制御装置１０の電源（図１では図示略）の投入を契機として制御部１００は、制御プログラムを不揮発性メモリから揮発性メモリへ読み出し、その実行を開始する。制御プログラムの実行を開始した制御部１００は、前述したタスク構成テーブルおよびプログラム管理テーブルを不揮発性メモリから揮発性メモリに読み出すとともに、タスクＡおよびタスクＢの周期的な実行を管理するための各種制御パラメータを揮発性メモリに割り当てる。本実施形態では、単位区間ＵＴ（１）、ＵＴ（２）、ＵＴ（３）、ＵＴ（４）、ＵＴ（１）・・・と単位区間ＵＴ（ｎ）の処理を巡回的に繰り返すことでタスクＡおよびタスクＢの周期的な実行が実現される。上記制御パラメータの具体例としては、未完了の単位区間ＵＴ（ｎ）を示す未完了区間識別子と、タスクＡおよびタスクＢの各々の実行状況を示すタスク実行状況テーブルが挙げられる。
【００２７】
未完了区間識別子は、上記制御プログラムの実行開始を契機として１に初期化され、以降、単位区間ＵＴ（ｎ）に対応付けられた全てのアプリケーションプログラムの実行を完了する毎に、２、３、４、１、２・・・と巡回的に更新されるカウンタ変数である。図５はタスク実行状況テーブルのデータ構造の一例を示す図である。図５に示すように、タスク実行状況テーブルには、タスクＡおよびタスクＢの各々に対応付けて実行状況識別子が格納されている。実行状況識別子にTRUEまたはFALSEの何れかの値がセットされ、TRUEはタスクの実行が完了していることを、FALSEはタスクの実行が完了していないことを意味する。未完了区間識別子の値の更新およびタスク実行状況テーブルの格納内容の更新はタスク管理手段によって行われる。
【００２８】
次いで、制御部１００が制御プログラムにしたがって実現する各手段について説明する。アプリケーションプログラム実行手段は、タスク管理手段により実行を指示されたアプリケーションプログラムを不揮発性メモリから揮発性メモリに読み出し、実行する。そして、アプリケーションプログラム実行手段は、アプリケーションプログラムの実行過程で生成されたデータを、アプリケーションプログラム毎に揮発性メモリ内に定められた記憶領域へ書き込む。
【００２９】
タスク管理手段は、単位区間と同じ時間長の周期、すなわち、１００ｍｓ周期で以下の処理を実行する。タスク管理手段は、まず、タスクＡについての実行状況識別子にFALSEをセットし、データ入出力手段に「入力Ａ」を実行させた後に、アプリケーションプログラムＰＧ０を不揮発性メモリから揮発性メモリに読み出し、アプリケーションプログラムＰＧ０を実行する。そして、タスク管理手段は、アプリケーションプログラムＰＧ０の実行完了を契機として、タスクＡについての実行状況識別子をTRUEに更新する。アプリケーションプログラムＰＧ０の実行を完了すると、タスク管理手段は当該アプリケーションプログラムＰＧ０の実行により実現されるタスク、すなわち、タスクＡが等値化設定を参照する。等値化設定がTRUEであれば、タスク管理手段は等値化手段に等値化を実行させるのであるが、本実施形態ではタスクＡが等値化設定はFALSEである。このため、この時点では等値化は行われない。
【００３０】
次いで、タスク管理手段は、未完了区間識別子と同じ値の単位区間識別子に対応づけてプログラム管理テーブルに格納されているプログラム識別子の示すアプリケーションプログラムを不揮発性メモリから揮発性メモリへ読み出し、その実行を開始する。ただし、未完了区間識別子の値が１である場合には、タスク管理手段は、タスクＢについての実行状況識別子にFALSEをセットし、データ入出力手段に「入力Ｂ」を実行させた後、プログラム識別子の示すアプリケーションプログラムの実行を行う。なお、タスクＢを構成する全てのアプリケーションプログラムの実行が完了した場合には、タスク管理手段、タスクＢについての実行状況識別子をTRUEに更新する処理も実行する。
【００３１】
例えば単位区間ＵＴ（１）におけるアプリケーションプログラムＰＧ０の実行完了時点では未完了区間識別子の値は１である。このため、タスク管理手段は、データ入出力手段に「入力Ｂ」を実行させた後にアプリケーションプログラムＰＧ１を不揮発性メモリから揮発性メモリへ読み出し、実行する。同様に単位区間ＵＴ（２）におけるアプリケーションプログラムＰＧ０の実行完了時点では未完了区間識別子の値は２であるため、タスク管理手段は、アプリケーションプログラムＰＧ２とＰＧ３を不揮発性メモリから揮発性メモリへ読み出して順次実行し、単位区間ＵＴ（３）におけるアプリケーションプログラムＰＧ０の実行完了時点では未完了区間識別子の値は３であるため、タスク管理手段は、アプリケーションプログラムＰＧ４とＰＧ５を不揮発性メモリから揮発性メモリへ読み出して順次実行する。そして、単位区間ＵＴ（４）におけるアプリケーションプログラムＰＧ０の実行完了時点では未完了区間識別子の値は４であるため、タスク管理手段は、アプリケーションプログラムＰＧ６とＰＧ７を不揮発性メモリから揮発性メモリへ読み出して順次実行する。
【００３２】
タスクＢを構成する各アプリケーションプログラムについても、タスク管理手段は単位区間ＵＴ（ｎ）に対応付けられたアプリケーションプログラムの実行完了を契機としてタスクＢについての等値化設定を参照し、等値化設定がTRUEであれば等値化手段に等値化を実行させる。本実施形態ではタスクＢが等値化設定はTRUEEであり、等値化が実行される。この等値化が完了すると、タスク管理手段はデータ入出力手段に「出力」を行わせる。等値化手段およびデータ入出力手段が実行する処理については後に明らかにする。
【００３３】
稼働系の制御装置１０の等値化手段は、単位区間ＵＴ（ｎ）（ｎ＝１〜４）の各々において、タスクＡに対応するアプリケーションプログラム（すなわち、アプリケーションプログラムＰＧ０）の実行により揮発性メモリに書き込まれたデータと、タスクＢを実現するアプリケーションプログラムのうちで実行中の単位区間、すなわち、タスク管理手段により等値化の実行指示を与えられた時点の未完了区間識別子が示す単位区間の一つ前の単位区間に対応するアプリケーションプログラムの実行により揮発性メモリに書き込まれたデータと、未完了区間識別子と、を通信ＩＦ回路１３０の送信バッファに書き込む。
【００３４】
データ入出力手段は、実行状況識別子がTRUEとなっているタスクに関連するデータ、すなわち、当該タスクに対応するアプリケーションプログラムに対して割り当てられた記憶領域に格納されているデータを通信ＩＦ回路１３０を介して制御ネットワーク３０へ送出する。実行状況識別子がFALSEとなっているタスクに関連するデータは出力されないため、複数の単位区間に亘って実行されるタスクの途中のデータが制御ネットワーク３０に送出されることはない。
以上が制御装置１０の構成である。
【００３５】
このような構成としたため、図３に示すように、単位区間ＵＴ（１）ではタスクＡが実行され、その後、タスクＢを実現するアプリケーションプログラムのうちアプリケーションプログラムＰＧ１のみが実行される。同様に、単位区間ＵＴ（２）ではタスクＡが実行され、その後、タスクＢを実現するアプリケーションプログラムのうちアプリケーションプログラムＰＧ２とＰＧ３が実行され、単位区間ＵＴ（３）ではタスクＡが実行され、その後、タスクＢを実現するアプリケーションプログラムのうちアプリケーションプログラムＰＧ４とＰＧ５が実行される。そして、単位区間ＵＴ（４）ではタスクＡが実行され、その後、タスクＢを実現するアプリケーションプログラムのうちアプリケーションプログラムＰＧ６とＰＧ７が実行される。
【００３６】
また、単位区間ＵＴ（１）における「等値化」では、タスクＡの実行結果とアプリケーションプログラムＰＧ１の実行結果の等値化が行われ、未完了区間識別子として２が等値化ケーブル２０を介して稼働系の制御装置１０から待機系の制御装置１０へ伝達される。また、単位区間ＵＴ（１）における「出力」では、タスクＡの実行結果のみが制御ネットワーク３０へ送出される。この時点では、タスクＢについての実行状況識別子はFALSEだからである。
【００３７】
単位区間ＵＴ（２）における「等値化」では、タスクＡの実行結果とアプリケーションプログラムＰＧ２およびＰＧ３の実行結果の等値化が行われ、未完了区間識別子として３が等値化ケーブル２０を介して稼働系の制御装置１０から待機系の制御装置１０へ伝達される。また、単位区間ＵＴ（２）における「出力」ではタスクＡの実行結果のみが制御ネットワーク３０へ送出される。この時点においても、タスクＢについての実行状況識別子はFALSEのままだからである。
【００３８】
単位区間ＵＴ（３）における「等値化」では、タスクＡの実行結果とアプリケーションプログラムＰＧ４およびＰＧ５の実行結果の等値化が行われ、未完了区間識別子として４が等値化ケーブル２０を介して稼働系の制御装置１０から待機系の制御装置１０へ伝達される。また、単位区間ＵＴ（３）における「出力」ではタスクＡの実行結果のみが制御ネットワーク３０へ送出される。この時点においても、タスクＢについての実行状況識別子はFALSEのままだからである。
【００３９】
そして、単位区間ＵＴ（４）における「等値化」では、タスクＡの実行結果とアプリケーションプログラムＰＧ６およびＰＧ７の実行結果の等値化が行われ、未完了区間識別子として１が等値化ケーブル２０を介して稼働系の制御装置１０から待機系の制御装置１０へ伝達される。単位区間ＵＴ（４）における「出力」ではタスクＡの実行結果とタスクＢの実行結果が制御ネットワーク３０へ送出される。これにより、タスクＡの１００ｍｓ周期での実行とタスクＢの４００ｍｓ周期での実行とが実現される。
【００４０】
仮に単位区間ＵＴ（ｎ）（ｎ＝１〜４）の各々におけるアプリケーションプログラムＰＧ０の実行完了後にタスクＢを実現するためのアプリケーションプログラムの実行に先立って或いは当該プログラムと並列に等値化を行うと、タスクＢを実現するためのアプリケーションプログラムの実行結果が全く等値化されない事態やその一部のみが中途半端に等値化されるといった事態が発生する。また、タスクＢの実行完了まで等値化を行わないとすると、単位区間ＵＴ（ｎ）（ｎ＝１〜３）の各々におけるタスクＡの実行結果やタスクＢの途中経過が等値化されず、稼働系の切り替え時点でデータの突変が発生する。
【００４１】
これに対して、本実施形態によれば、図３における単位区間ＵＴ（３）においてアプリケーションプログラムＰＧ４の実行中に稼働系の切り替えが発生したとしても、単位区間ＵＴ（２）における「等値化」にて、単位区間ＵＴ（２）におけるタスクＡの実行結果とアプリケーションプログラムＰＧ２およびＰＧ３の実行結果については等値化が完了しており、未完了区間識別子として３が等値化ケーブル２０を介して稼働系の制御装置１０から待機系の制御装置１０へ伝達されている。このため、新たに稼働系となった制御装置１０のタスク管理手段が未完了区間識別子の示す単位区間から各タスクの実行を開始したとしても、それまでのタスクの実行結果を引き継いでタスクＡおよびタスクＢを実行することができ、データの突変が発生することはない。
【００４２】
また、本実施形態における未完了区間識別子は、汎用カウンタのカウンタ値であり、汎用マイコンにおいても問題なく利用できる。このように、本実施形態によれば、実行周期の異なる複数種のタスクを稼働系の制御装置に実行させる冗長化制御システムにおいて、制御装置として汎用マイコンを用いた場合であっても、稼働系の切り替え時の出力データ継続性を確保することが可能となる。
【００４３】
以上本発明の一実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
【００４４】
（１）上記実施形態では本発明の実施形態の一つである制御装置１０により制御装置対が形成された冗長化制御システムについて説明したが、制御装置１０を単体で提供（すなわち、製造・販売）しても良い。既存の冗長化制御システムにおいて制御装置対を形成している各制御装置を制御装置１０で置き換えることで、既存の冗長化制御システムを本発明の制御システムとして機能させることができるからである。
【００４５】
（２）上記実施形態では、１つのアプリケーションプログラムの実行によりタスクＡが実現される場合について説明したが、複数のプログラムを順次実行することでタスクＡが実現される態様であっても良い。また、上記実施形態では、タスクＢの実行周期を４等分する場合について説明したが、２等分または３等分であっても良く、また、５等分以上に分割しても良い。
【００４６】
要は、タスクＢの実行周期を複数に等分して得られる単位区間の各々においてタスクＡを実現するアプリケーションプログラムとタスクＢを実現するための複数のアプリケーションプログラムのうちの当該単位区間に割り当てたアプリケーションプログラムの実行、それらアプリケーションプログラムの実行過程で生成されたデータの等値化、およびタスクＡの実行結果の制御対象機器への出力がその単位区間内に完了できるように単位区間の時間長が確保されていれば良い。
【００４７】
（３）上記実施形態では、タスクＡとタスクＢの２種類のタスクを制御装置１０に実行させたが、３種類以上のタスクを制御装置１０に実行させても良い。要は、各々実行周期が設定された複数のタスクのうち最も実行周期が短い第１のタスクの実行周期を時間区間の単位とし、単位区間毎に、第１のタスクを実行するとともに他のタスクを実現するためのアプリケーションプログラムのうちプログラム管理テーブルによって当該単位区間に予め対応付けられたアプリケーションプログラムを実行する処理をタスク管理手段に実行させるようにすれば良い。この場合、各単位区間におけるアプリケーションプログラムの実行順はタスクの優先順位の順であっても良いし、当該優先順位とは無関係な順であっても良い。そして、稼働系の制御装置１０の等値化手段には、タスクの実行に伴って自装置のメモリに書き込まれたデータと次に実行する単位区間を示す未完了区間識別子とを単位区間の終わりに等値化ケーブル２０を介して他方の制御装置１０へ送信する処理を実行させるようにすれば良く、データ入出力手段には、タスクの実行が完了したか否かをタスク実行状況テーブルを参照してタスク毎に判定し実行を完了したタスクの処理結果を示すデータを出力する処理を実行させるようにすれば良い。
【００４８】
（４）上記実施形態では、制御部１１０をアプリケーションプログラム実行手段、タスク管理手段、等値化手段およびデータ入出力手段として機能させる制御プログラムが制御装置１０の不揮発性メモリ１２４に予め格納されていた。しかし、上記制御プログラムをフラッシュメモリなどのコンピュータ読み取り可能な記録媒体に書き込んで配布しても良く、また、インターネットなどの電気通信回線経由のダウンロードにより配布しても良い。一般的なコンピュータを、上記の要領で配布される制御プログラムにしたがって作動させることで当該コンピュータを本発明の制御装置として機能させることができる。
【符号の説明】
【００４９】
１０，１０Ａ，１０Ｂ…制御装置、２０…等値化ケーブル、３０…制御ネットワーク、１００…制御部、１１０…メモリＩＦ回路、１２０…メモリ、１３０…通信ＩＦ回路。
【図１】
0006645223.tif 000002
【図２】
0006645223.tif 000003
【図３】
0006645223.tif 000004
【図４】
0006645223.tif 000005
【図５】
0006645223.tif 000006