(57)【要約】【課題】簡易な構成により、冗長構成における各ノードそれぞれの健全性を主系ノード側で診断すること。【解決手段】主系ノードと副系ノードとにより冗長化された冗長システム。主系ノードは、副系ノードとの情報共有用のデータベースである主系データベースと、設定時間の変更が可能なタイマと、を有する。主系ノードは、主系データベースに変更があったとき、変更部分の同期用のタスクに係る同期要求を副系ノードへ送信すると共に、タイマの設定時間を制御周期よりも短い第１時間に設定する。主系ノードは、第１時間が経過する前に副系ノードから同期の完了を示す肯定応答が送信された場合、タイマの設定時間を制御周期から決定される第２時間に設定する。主系ノードは、第２時間が経過する前にタスクに係る次の同期要求を副系ノードへ送信できなかった場合、主系ノードの異常発生に対応する主系異常処理を実行する。【選択図】図１
2020137008.tif 000002
【特許請求の範囲】
【請求項１】
主系ノードと副系ノードとにより冗長化された冗長システムであって、
前記主系ノードは、
前記副系ノードとの情報共有用のデータベースである主系データベースと、設定時間の変更が可能なタイマと、を有し、
前記主系データベースに変更があったとき、変更部分の同期用のタスクに係る同期要求を前記副系ノードへ送信すると共に、前記タイマの設定時間を制御周期よりも短い第１時間に設定し、
前記第１時間が経過する前に前記副系ノードから同期の完了を示す肯定応答が送信された場合、前記タイマの設定時間を前記制御周期から決定される第２時間に設定し、
前記第２時間が経過する前に前記タスクに係る次の同期要求を前記副系ノードへ送信できなかった場合、前記主系ノードの異常発生に対応する主系異常処理を実行する、冗長システム。
【請求項２】
前記主系ノードは、
前記第１時間が経過する前に前記副系ノードから前記肯定応答が送信された場合、前記第１時間が経過したときに、前記タイマの設定時間を前記第２時間に設定するものである、請求項１に記載の冗長システム。
【請求項３】
前記第２時間は、前記制御周期と予め設定された遅れ許容時間との和から前記第１時間を減算したものである、請求項２に記載の冗長システム。
【請求項４】
前記主系ノードは、
前記第１時間が経過する前に前記副系ノードから前記肯定応答が送信されなかった場合、前記副系ノードの異常発生に対応する副系異常処理を実行する、請求項１〜３の何れか一項に記載の冗長システム。
【請求項５】
主系ノードと副系ノードとにより冗長化された冗長システムにおいて、前記主系ノード及び前記副系ノードの健全性を前記主系ノード側で診断する健全性診断方法であって、
前記副系ノードとの情報共有用のデータベースである主系データベースに変更があったとき、変更部分の同期用のタスクに係る同期要求を前記副系ノードへ送信し、
設定時間の変更が可能なタイマの設定時間を制御周期よりも短い第１時間に設定し、
前記第１時間が経過する前に前記副系ノードから同期の完了を示す肯定応答が送信された場合、前記タイマの設定時間を前記制御周期から決定される第２時間に設定し、
前記第２時間が経過する前に前記タスクに係る次の同期要求を前記副系ノードへ送信できなかった場合、前記主系ノードの異常発生に対応する主系異常処理を実行する、健全性診断方法。
【請求項６】
主系ノードと副系ノードとにより冗長化された冗長システムにおいて、前記主系ノード及び前記副系ノードの健全性を診断する前記主系ノード内のコンピュータを、
前記副系ノードとの情報共有用のデータベースである主系データベースに変更があったとき、変更部分の同期用のタスクに係る同期要求を前記副系ノードへ送信する送信手段、
設定時間の変更が可能なタイマの設定時間を制御周期よりも短い第１時間に設定する第１設定手段、
前記第１時間が経過する前に前記副系ノードから同期の完了を示す肯定応答が送信された場合、前記タイマの設定時間を前記制御周期から決定される第２時間に設定する第２設定手段、
及び前記第２時間が経過する前に前記タスクに係る次の同期要求を前記副系ノードへ送信できなかった場合、前記主系ノードの異常発生に対応する主系異常処理を実行する主系異常処理手段、として機能させるための健全性診断プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードによる冗長構成を採用した冗長システム、健全性診断方法、及び健全性診断プログラムに関する。
【背景技術】
【０００２】
従来から、分散制御システム（distributed control system）では、演算処理機能を備えたノードの冗長化が採り入れられている（例えば、特許文献１参照）。冗長構成を採った冗長システムは、稼働系（プライマリ）として動作する主系ノードと、待機系（セカンダリ）として動作する副系ノードと、を有している。これら２つのノードは、情報共有のためのデータベースを備えており、主系ノードは、データベースの同期処理の過程において、副系ノードの健全性をチェックするようになっている。
【０００３】
冗長システムのノード間におけるデータベースの同期は、主系ノードが副系ノードへ同期要求を送信し、その同期要求に応じて副系ノードが、自身のデータベースを更新して主系ノードへ同期完了の応答を返信する、という仕組みで実現される。主系ノードによる副系ノードの健全性チェックは、データベースの同期処理をタイマ機能で管理することにより実現している。
【０００４】
すなわち、主系ノードは副系ノードへの同期要求時にタイマをセットする。そして、主系ノードは、規定時間内に副系ノードから応答が返ってきたときに、タイマをキャンセルして次の制御周期の処理へ移行する。副系ノードの正常状態に対応する副系正常処理を行う。一方、主系ノードは、規定時間内に副系ノードから応答が返ってこなかった場合、タイマのタイムアウトが発生するため、副系ノードの異常発生に対応する処理を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−６４７３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の構成では、ノード間での同期処理において、主系ノードは、相手方である副系ノードの健全性しか診断できず、つまり自身の健全性については診断することができない。また、主系ノードの健全性チェックのため、副系ノードに主系ノードと同等のタイマ機能を新規に実装すると、プログラムの追加及び変更のみならず、プログラムの検証にも多くの工数がかかる。
【０００７】
本発明は、上記の課題を解決するためになされたものであり、簡易な構成により、冗長構成における各ノードそれぞれの健全性を主系ノード側で診断する冗長システム、健全性診断方法、及び健全性診断プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る冗長システムは、主系ノードと副系ノードとにより冗長化された冗長システムであって、主系ノードは、副系ノードとの情報共有用のデータベースである主系データベースと、設定時間の変更が可能なタイマと、を有し、主系データベースに変更があったとき、変更部分の同期用のタスクに係る同期要求を副系ノードへ送信すると共に、タイマの設定時間を制御周期よりも短い第１時間に設定し、第１時間が経過する前に副系ノードから同期の完了を示す肯定応答が送信された場合、タイマの設定時間を制御周期から決定される第２時間に設定し、第２時間が経過する前にタスクに係る次の同期要求を副系ノードへ送信できなかった場合、主系ノードの異常発生に対応する主系異常処理を実行するものである。
【０００９】
本発明に係る健全性診断方法は、主系ノードと副系ノードとにより冗長化された冗長システムにおいて、主系ノード及び副系ノードの健全性を主系ノード側で診断する健全性診断方法であって、副系ノードとの情報共有用のデータベースである主系データベースに変更があったとき、変更部分の同期用のタスクに係る同期要求を副系ノードへ送信し、設定時間の変更が可能なタイマの設定時間を制御周期よりも短い第１時間に設定し、第１時間が経過する前に副系ノードから同期の完了を示す肯定応答が送信された場合、タイマの設定時間を制御周期から決定される第２時間に設定し、第２時間が経過する前にタスクに係る次の同期要求を副系ノードへ送信できなかった場合、主系ノードの異常発生に対応する主系異常処理を実行するものである。
【００１０】
本発明に係る健全性診断プログラムは、主系ノードと副系ノードとにより冗長化された冗長システムにおいて、主系ノード及び副系ノードの健全性を診断する主系ノード内のコンピュータを、副系ノードとの情報共有用のデータベースである主系データベースに変更があったとき、変更部分の同期用のタスクに係る同期要求を副系ノードへ送信する送信手段、設定時間の変更が可能なタイマの設定時間を制御周期よりも短い第１時間に設定する第１設定手段、第１時間が経過する前に副系ノードから同期の完了を示す肯定応答が送信された場合、タイマの設定時間を制御周期から決定される第２時間に設定する第２設定手段、及び第２時間が経過する前にタスクに係る次の同期要求を副系ノードへ送信できなかった場合、主系ノードの異常発生に対応する主系異常処理を実行する主系異常処理手段、として機能させるためのものである。
【発明の効果】
【００１１】
本発明によれば、主系ノードは、主系データベースに変更があったときに、同期要求を副系ノードへ送信すると共にタイマを第１時間に設定し、タイムアウト前に応答があった場合にタイマを第２時間に設定する。そのため、制御周期内での２度のタイマの設定を、それぞれ、副系ノードの健全性診断と主系ノードの健全性診断とに利用することができる。よって、簡易な構成により、冗長構成における各ノードそれぞれの健全性を主系ノード側で診断することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係る分散制御システムを例示した構成図である。
【図２】図１の主系ノード及び副系ノードの具体的な構成例を示す構成図である。
【図３】図２の冗長システムでの同期処理において、第１時間内に副系ノードから肯定応答が送信されない状況を例示した説明図である。
【図４】図２の冗長システムでの同期処理において、第２時間内に同期要求を送信できない状況を例示した説明図である。
【図５】図２の冗長システムの動作を例示したフローチャートである。
【発明を実施するための形態】
【００１３】
実施の形態．
図１は、本発明の実施の形態に係る分散制御システムを例示した構成図である。図１に示すように、分散制御システム１００は、主系ノード１０ａと副系ノード１０ｂとにより冗長化された冗長システム１０と、端末装置５０と、ゲートウェイ６０と、コントローラ７０と、を有している。
【００１４】
端末装置５０は、デスクトップＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などのＨＭＩ（Ｈｕｍａｎ  Ｍａｃｈｉｎｅ  Ｉｎｔｅｒｆａｃｅ）により構成されている。ゲートウェイ６０は、ネットワーク間での中継処理を行う中継機器である。ゲートウェイ６０は、冗長システム１０及び端末装置５０が接続されている上位通信回線Ｌ１と、コントローラ７０が接続されている下位通信回線Ｌ２との間に接続されている。
【００１５】
コントローラ７０は、複数のフィールド機器８０に接続されている。ここで、フィールド機器８０は、バルブなどのアクチュエータ、温度センサなどの測定手段、及び流量計などの計測機器などである。つまり、コントローラ７０は、フィールド機器８０としてのアクチュエータを制御する機能を有している。また、コントローラ７０は、フィールド機器８０としての温度センサ又は計測機器から取得したデータを、ゲートウェイ６０を介して主系ノード１０ａなどへ送信する機能を有している。
【００１６】
ここで、冗長システム１０は、主系ノード１０ａと副系ノード１０ｂとによる冗長構成を採っている。つまり、主系ノード１０ａは、通常時に稼働するように設定された稼働系のノードであり、副系ノード１０ｂは、通常時は使用されずに待機しておき、障害発生時などに稼動系に代わって処理を続行する待機系のノードである。したがって、主系ノード１０ａの構成部材と副系ノード１０ｂの構成部材とは等しく、役割の違いによって各構成部材が実施する処理が切り替わる。もっとも、主系ノード１０ａは稼働系に特化したものであってもよく、副系ノード１０ｂは待機系に特化したものであってもよい。
【００１７】
本実施の形態において、主系ノード１０ａ及び副系ノード１０ｂは、例えば、高級演算制御モジュールのような高度で複雑な演算処理を行う制御モジュールである。
【００１８】
主系ノード１０ａは、副系ノード１０ｂとの情報共有用のデータベースである主系データベース４ａと、設定時間Ｔの変更が可能なタイマ３２ａと、を有している。副系ノード１０ｂは、主系ノード１０ａとの情報共有用のデータベースである副系データベース４ｂと、設定時間Ｔの変更が可能なタイマ３２ｂと、を有している。
【００１９】
主系ノード１０ａは、主系データベース４ａに変更があったとき、変更部分の同期用のタスクに係る同期要求を副系ノード１０ｂへ送信する。その際、主系ノード１０ａは、タイマ３２ａの設定時間Ｔを制御周期よりも短い第１時間Ｔｘに設定する。主系ノード１０ａは、変更部分の同期用のタスクを実現するために、複数回に亘る同期要求の送信を実行する。主系ノード１０ａは、第１時間Ｔｘが経過する前に副系ノード１０ｂから同期の完了を示す肯定応答が送信された場合、タイマ３２ａの設定時間Ｔを制御周期から決定される第２時間Ｔｙに設定する。主系ノード１０ａは、第２時間Ｔｙが経過する前に変更部分の同期用のタスクに係る次の同期要求を副系ノード１０ｂへ送信できなかった場合、主系ノード１０ａの異常発生に対応する主系異常処理を実行する。ここで、制御周期とは、主系ノード１０ａの制御周期のことであり、具体的には、後述する制御装置２０ａの制御周期のことである。主系異常処理については後述する。
【００２０】
図２は、図１の主系ノード及び副系ノードの具体的な構成例を示す構成図である。図３は、図２の冗長システムでの同期処理において、第１時間内に副系ノードから肯定応答が送信されない状況を例示した説明図である。図４は、図２の冗長システムでの同期処理において、第２時間内に同期要求を送信できない状況を例示した説明図である。図３及び図４は、制御装置２０ａの制御周期がＰ［ｓ］である場合、つまり制御装置２０ａがＰ秒周期で処理を行う場合の例である。図３及び図４において、白抜き矢印は、タイマ３２ａによる計時期間に相当する。なお、図３及び図４では、各ノードの内部構成を簡略化している。図２〜図４を参照して、冗長システム１０の具体的な構成につき、制御装置２０ａの制御周期に基づく１つの周期処理に焦点をあてて説明する。
【００２１】
［主系ノード１０ａ］
主系ノード１０ａは、制御装置２０ａと、主系通信装置３０ａと、記憶装置４０ａと、を有している。記憶装置４０ａは、各種のデータベースが格納されるデータベース領域４１ａと、制御装置２０ａの動作プログラムなどが格納されるプログラム領域４２ａと、を有している。
【００２２】
制御装置２０ａは、プログラム領域４２ａに格納された動作プログラムを構成する複数のタスクを実行する機能を有している。制御装置２０ａは、外部からの指令などに応じて主系データベース４ａの一部又は全部を変更した場合、変更部分の同期用のタスクに係る複数の同期指令を、制御周期ごとに順次、主系通信装置３０ａへ出力する。制御周期は、制御装置２０ａの特性などによって異なる。変更部分の同期用のタスクとは、主系データベース４ａの変更部分に対応する副系データベース４ｂのデータを、当該変更部分のデータに書き替えさせるためのタスクである。
【００２３】
同期指令には、主系データベース４ａの変更部分の情報が含まれる。主系データベース４ａの変更部分の情報は、例えば、データサイズの情報と、データ内容を示す情報と、を含んでいる。図２では、主系データベース４ａ内のデータベース１〜３のうち、データベース２が変更されたことを想定している。かかる想定の場合、制御装置２０ａは、データベース２の情報を含む同期指令を主系通信装置３０ａへ出力する（図３及び図４の（１）に対応）。
【００２４】
図２〜図４では、プログラム領域４２ａ内の複数のタスクのうち、主系データベース４ａの変更部分の同期用のタスクとしてタスクＡを例示している。つまり、タスクＡは、副系ノード１０ｂに対してデータベースの同期を指示するプログラムである。
【００２５】
主系通信装置３０ａは、制御装置２０ａからのコマンドなどに応じて、副系ノード１０ｂなどの外部装置との間でデータ通信を行う通信ドライバである。主系通信装置３０ａは、通信処理部３１ａとタイマ３２ａとを有している。通信処理部３１ａは、主系データベース４ａに変更があったとき、変更部分の同期用のタスクに係る同期要求を副系ノード１０ｂへ送信すると共に、タイマ３２ａの設定時間Ｔを第１時間Ｔｘに設定する。
【００２６】
具体的には、通信処理部３１ａは、制御装置２０ａからの同期指令を入力すると、入力した同期指令に基づく同期要求を副系ノード１０ｂへ送信する。同期要求には、主系データベース４ａの変更部分の情報が含まれる（図３及び図４の（２）に対応）。通信処理部３１ａは、同期要求を送信する際、タイマ３２ａの設定時間Ｔを第１時間Ｔｘに設定する（図３及び図４の（３）に対応）。
【００２７】
［副系ノード１０ｂ］
副系ノード１０ｂは、制御装置２０ｂと、副系通信装置３０ｂと、記憶装置４０ｂと、を有している。記憶装置４０ｂは、各種のデータベースが格納されるデータベース領域４１ｂと、制御装置２０ｂの動作プログラムなどが格納されるプログラム領域４２ｂと、を有している。
【００２８】
副系通信装置３０ｂは、制御装置２０ｂからのコマンドなどに応じて、主系ノード１０ａなどの外部装置との間でデータ通信を行う通信ドライバである。副系通信装置３０ｂは、通信処理部３１ｂとタイマ３２ｂとを有している。本実施の形態において、副系ノード１０ｂは待機系として機能する想定であり、かかる想定では、通信処理部３１ｂは、タイマ３２ｂを用いた計時処理を実行しない。副系通信装置３０ｂは、主系通信装置３０ａから送信される同期要求に基づく要求情報を制御装置２０ｂへ出力する。要求情報は、主系データベース４ａの変更部分の情報を含んでいる（図３及び図４の（４）に対応）。
【００２９】
制御装置２０ｂは、プログラム領域４２ｂに格納された動作プログラムを構成する複数のタスクを実行する機能を有している。図２〜図４では、プログラム領域４２ｂ内の複数のタスクのうち、主系データベース４ａの変更に応じた同期処理のためのタスクとしてタスクＢを例示している。タスクＢは、主系データベース４ａの変更に応じて、その変更部分に対応する副系データベース４ｂの一定領域の情報を書き替えさせるプログラムである。
【００３０】
制御装置２０ｂは、副系通信装置３０ｂからの要求情報に応じて、副系データベース４ｂの一定領域の情報を書き替える。図２では、主系データベース４ａ内のデータベース２の変更に応じて、副系データベース４ｂ内のデータベース２が書き替えられる場面を想定している。かかる想定において、制御装置２０ｂは、タスクＢに従って動作し、要求情報に基づいて、副系データベース４ｂ内のデータベース２の一部を、主系データベース４ａ内のデータベース２の対応箇所の情報に書き替える（図３及び図４の（５）に対応）。
【００３１】
制御装置２０ｂは、要求情報に基づく副系データベース４ｂの書き替えが終了すると、副系通信装置３０ｂへ終了通知を送信する（図３及び図４の（６）に対応）。副系通信装置３０ｂは、制御装置２０ｂからの終了通知に応じて、主系ノード１０ａへ肯定応答を送信する（図３及び図４の（７）に対応）。
【００３２】
［主系ノード１０ａ］
主系通信装置３０ａは、副系ノード１０ｂから肯定応答が送信されると、同期指令に対応する同期処理が完了した旨の完了通知を制御装置２０ａへ出力する（図３及び図４の（８）に対応）。主系通信装置３０ａは、タイマ３２ａがタイムアウトしたとき、つまり副系ノード１０ｂに同期要求を送信してから第１時間Ｔｘが経過したとき、タイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定する（図３及び図４の（９）に対応）。
【００３３】
本実施の形態において、第２時間Ｔｙは、主系ノード１０ａの処理の健全性を保証するタイムアウト時間Ｔａから、第１時間Ｔｘを引いた時間に設定される。タイムアウト時間Ｔａは、制御周期と遅れ許容時間αとの和である。遅れ許容時間αは、制御装置２０ａの特性及び制御周期に応じて決定される。例えば、制御周期が０．５［ｓ］であり、第１時間Ｔｘが０．２［ｓ］であり、遅れ許容時間αが０．３［ｓ］である場合、第２時間Ｔｙは０．６（＝０．５＋０．３−０．２）［ｓ］となる。
【００３４】
そして、制御装置２０ａは、正常な状態において、タイマ３２ａがタイムアウトするまでの間に、タスクＡに係る次の同期指令を主系通信装置３０ａへ出力する（図３及び図４の（１）に対応）。通信処理部３１ａは、制御装置２０ａからの同期指令を入力すると、入力した同期指令に基づく同期要求を副系ノード１０ｂへ送信する（図３及び図４の（２）に対応）。
【００３５】
すなわち、冗長システム１０は、主系ノード１０ａ及び副系ノード１０ｂが何れも正常に動作している場合、図３及び図４の（１）〜（９）の処理を、制御周期ごとに繰り返し実行する。
【００３６】
一方、図３の３周期目の処理のように、制御装置２０ｂにおいて（５）の処理が適正に行われず、その結果、副系通信装置３０ｂから肯定応答が送信されないままタイマ３２ａがタイムアウトしたとき、主系通信装置３０ａは、第１タイムアウト信号を制御装置２０ａへ出力する。第１タイムアウト信号は、第１時間Ｔｘの経過によりタイマ３２ａがタイムアウトしたことを示す信号である（図３の（１７）に対応）。
【００３７】
制御装置２０ａは、主系通信装置３０ａからの第１タイムアウト信号に応じて、副系ノード１０ｂの異常発生に対応する副系異常処理を実行する。制御装置２０ａは、副系異常処理として、例えば、肯定応答が返送されなかった同期指令を、次の制御周期において再送する処理を実行する。制御装置２０ａは、副系異常処理として、副系ノード１０ｂが異常な状態であることを示す異常データを端末装置５０へ送信してもよい。この場合、端末装置５０は、異常データに応じて、表示部（図示せず）などにアラートを出力してもよい。
【００３８】
また、図４の３周期目のように、タスクＡに係る次の同期指令を制御装置２０ａによって送信できないままタイマ３２ａがタイムアウトしたとき、冗長システム１０は、主系ノード１０ａの異常発生に対応する主系異常処理を実行する。主系通信装置３０ａは、主系異常処理の一環として、第２時間Ｔｙの経過によりタイマ３２ａがタイムアウトしたことを示す第２タイムアウト信号を、制御装置２０ａ及び副系通信装置３０ｂのうちの少なくとも１つへ出力する（図４の（２７）に対応）。
【００３９】
ここで、主系通信装置３０ａが第２タイムアウト信号を制御装置２０ａへ出力する場合の主系異常処理について例示する。例えば、制御装置２０ａは、第２タイムアウト信号が出力されたとき、タスクＡの補助用に予め格納されている補助用タスクを実行してもよい。補助用タスクは、タスクＡに基づく処理が滞ったときに代替的に実行されるプログラムである。また、制御装置２０ａは、一過性の事情により同期指令を出力できなかった場合には、出力すべきであった同期指令を次の制御周期に出力してもよい。さらに、制御装置２０ａは、第２タイムアウト信号が出力されたとき、アラートを出力させるタスクを実行し、主系ノード１０ａのタスクが滞っていることを示す遅滞情報を端末装置５０へ送信してもよい。この場合、端末装置５０は、遅滞情報に応じて、表示部などにアラートを出力してもよい。加えて、制御装置２０ａは、副系ノード１０ｂに稼働系としての動作を要求してもよい。この場合、副系ノード１０ｂの制御装置２０ｂは、外部からの指令をもとに、主系ノード１０ａが行ったのと同じ変更を副系データベース４ｂに加えた後、変更後の副系データベース４ｂを用い稼働系として演算処理を実行する。もっとも、制御装置２０ａは、第２タイムアウト信号が出力されたとき、再起動してタスクＡを再度実行してもよい。
【００４０】
次に、主系通信装置３０ａが第２タイムアウト信号を副系通信装置３０ｂへ出力する場合の主系異常処理について例示する。例えば、副系通信装置３０ｂは、第２タイムアウト信号を制御装置２０ｂへ転送してもよい。制御装置２０ｂは、第２タイムアウト信号が転送されたとき、自身を内包する副系ノード１０ｂを待機系から稼働系に切り替えてもよい。また、副系通信装置３０ｂは、第２タイムアウト信号が出力されたとき、主系ノード１０ａのタスクが滞っていることを示す遅滞情報を端末装置５０へ送信してもよい。この場合、端末装置５０は、遅滞情報に応じて、表示部などにアラートを出力してもよい。もっとも、副系通信装置３０ｂは、第２タイムアウト信号を制御装置２０ｂへ転送し、制御装置２０ｂからのコマンドに応じて遅滞情報を端末装置５０へ送信してもよい。
【００４１】
ここで、制御装置２０ａ及び制御装置２０ｂは、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算装置と、こうした演算装置と協働して上記の各種機能を実現させる動作プログラムとにより構成することができる。記憶装置４０ａ及び記憶装置４０ｂは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）及びＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ等のＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などにより構成することができる。
【００４２】
制御装置２０ａの動作プログラムには、主系データベース４ａの変更部分の同期用のプログラムである健全性プログラムが含まれる。制御装置２０ａ及び制御装置２０ａからのコマンドにより動作する主系通信装置３０ａは、主系ノード１０ａ内のコンピュータに相当する。すなわち、健全性診断プログラムは、主系ノード１０ａ内のコンピュータを、主系データベース４ａに変更があったときに同期要求を副系ノード１０ｂへ送信する送信手段、タイマ３２ａの設定時間Ｔを第１時間Ｔｘに設定する第１設定手段、第１時間Ｔｘが経過する前に副系ノード１０ｂから肯定応答が送信された場合、タイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定する第２設定手段、及び第２時間Ｔｙが経過する前に変更部分の同期用のタスクに係る次の同期要求を副系ノード１０ｂへ送信できなかった場合に主系異常処理を実行する主系異常処理手段、として機能させるためのプログラムである。
【００４３】
図５は、図２の冗長システムの動作を例示したフローチャートである。図５では、主系ノード１０ａの制御装置２０ａが、外部からの指令などに応じて主系データベース４ａの一部に変更を加えた後の処理を例示している。図５を参照して、冗長システム１０の主系ノード１０ａによる健全性診断方法について説明する。
【００４４】
主系データベース４ａの一部に変更を加えた場合、制御装置２０ａは、変更部分の同期用のタスクに係る同期指令を主系通信装置３０ａへ出力する（ステップＳ１０１）。すると、主系通信装置３０ａは、制御装置２０ａからの同期指令に基づく同期要求を副系通信装置３０ｂへ送信する。その際、主系通信装置３０ａは、タイマ３２ａの設定時間Ｔを第１時間Ｔｘに設定する（ステップＳ１０２）。
【００４５】
主系通信装置３０ａは、副系通信装置３０ｂからの肯定応答を受信しないまま（ステップＳ１０３／Ｎｏ）、タイマ３２ａの経過時間が第１時間Ｔｘに到達した場合（ステップＳ１０４／Ｙｅｓ）、第１タイムアウト信号を制御装置２０ａに出力する（ステップＳ１０５）。制御装置２０ａは、主系通信装置３０ａから第１タイムアウト信号が出力されたとき、副系ノード１０ｂの異常発生に対応する副系異常処理を実行する（ステップＳ１０６）。
【００４６】
一方、主系通信装置３０ａは、タイマ３２ａの経過時間が第１時間Ｔｘに到達することなく（ステップＳ１０４／Ｎｏ）、副系通信装置３０ｂからの肯定応答を受信した場合（ステップＳ１０３／Ｙｅｓ）、制御装置２０ａへ完了通知を出力する（ステップＳ１０７）。
【００４７】
次いで、主系通信装置３０ａは、タイマ３２ａがタイムアウトするまで待機する（ステップＳ１０８／Ｎｏ）。主系通信装置３０ａは、タイマ３２ａがタイムアウトすると（ステップＳ１０８／Ｙｅｓ）、タイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定する（ステップＳ１０９）。
【００４８】
主系通信装置３０ａは、タイマ３２ａの経過時間が第２時間Ｔｙに到達する前に（ステップＳ１１１／Ｎｏ）制御装置２０ａから同期指令が出力された場合（ステップＳ１１０／Ｙｅｓ）、ステップＳ１０２の処理へ移行する。すなわち、主系ノード１０ａは、次の制御周期における処理を実行する。
【００４９】
一方、主系通信装置３０ａは、制御装置２０ａから同期指令が出力される前に（ステップＳ１１０／Ｎｏ）タイマ３２ａがタイムアウトすると（ステップＳ１１１／Ｙｅｓ）、第２タイムアウト信号を制御装置２０ａ及び副系通信装置３０ｂのうちの少なくとも１つへ出力して主系異常処理へ移行させる（ステップＳ１１２）。
【００５０】
なお、図５では、ステップＳ１０６からステップＳ１０１へ移行する例を示しているが、これに限らず、ステップＳ１０６の次の工程は、副系異常処理の内容に応じて決まる。また、図５では、便宜上、ステップＳ１１２の後に「ＥＮＤ」と記載しているが、これに限らず、ステップＳ１１２の次の工程は、主系異常処理の内容に応じて決まる。
【００５１】
以上のように、本実施の形態の冗長システム１０において、主系ノード１０ａは、主系データベース４ａに変更があったとき、変更部分の同期用のタスクに係る同期要求を副系ノード１０ｂへ送信すると共に、タイマ３２ａの設定時間Ｔを第１時間Ｔｘに設定する。さらに、主系ノード１０ａは、第１時間Ｔｘが経過する前に副系ノード１０ｂから肯定応答が送信された場合、タイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定する。そして、主系ノード１０ａは、第２時間Ｔｙが経過する前に、変更部分の同期用のタスクに係る次の同期要求を送信できなかった場合、主系ノード１０ａの異常発生に対応する主系異常処理を実行する。
【００５２】
このように、主系ノード１０ａは、主系データベース４ａに変更があったとき、制御周期内においてタイマ３２ａの設定時間Ｔを切り替える機能をもっている。そのため、制御周期内での２度のタイマ３２ａの設定を、それぞれ、副系ノード１０ｂの健全性診断と主系ノード１０ａの健全性診断とに利用することができる。つまり、第１時間Ｔｘを副系ノード１０ｂの健全性診断に使用すると共に、第２時間Ｔｙを主系ノード１０ａの健全性診断に使用することができる。よって、簡易な構成により、冗長構成における各ノードそれぞれの健全性を主系ノード１０ａ側で診断することができる。すなわち、冗長システム１０は、副系ノード１０ｂのプログラムを変更することなく、主系ノード１０ａにおいて、副系ノード１０ｂの健全性と主系ノード１０ａの健全性とを診断することができる。
【００５３】
また、主系ノード１０ａは、第１時間Ｔｘ内に副系ノード１０ｂから肯定応答が送信された場合、第１時間Ｔｘが経過したときに、タイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定する。このように、第１時間Ｔｘが経過したときにタイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定するようにすれば、ある制御周期に同期要求を送信してから２度目にタイマ３２ａがタイムアウトするまでの時間が一定になる。そのため、タイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定するタイミングで、制御周期ごとの送受信間隔のぶれを吸収することができるため、主系ノード１０ａの健全性についての画一的な判定が可能となり、判定精度の向上を図ることができる。
【００５４】
もっとも、第１時間Ｔｘ内において副系ノード１０ｂから肯定応答が送信されたときに、タイマ３２ａの設定時間Ｔを第２時間Ｔｙに設定してもよい。ただし、肯定応答が送信されるまでの時間は一定ではないため、制御周期での処理ごとに、同期要求を送信してから２度目にタイマ３２ａがタイムアウトするまでの時間が変動する点に留意を要する。
【００５５】
第２時間Ｔｙは、制御周期と遅れ許容時間αとの和から第１時間Ｔｘを減算したものである。このように、第２時間Ｔｙには、制御装置２０ａの特性及び制御周期に応じて決定される遅れ許容時間αが考慮されているため、エラーの頻発などを回避し、主系ノード１０ａの健全性についての判定精度を高めることができる。
【００５６】
主系ノード１０ａは、第１時間Ｔｘが経過する前に副系ノード１０ｂから肯定応答が送信されなかった場合に副系異常処理を実行する。このように、主系ノード１０ａの健全性を診断する前に、副系ノード１０ｂの健全性を診断することができるため、主系ノード１０ａの健全性診断の精度を高めることができる。
【００５７】
上述した実施の形態は、冗長システム、健全性診断方法、及び健全性診断プログラムにおける好適な具体例であり、本発明の技術的範囲は、これらの態様に限定されるものではない。例えば、上記実施の形態では、冗長システム１０の冗長構成として、１つの主系ノード１０ａと１つの副系ノード１０ｂとによる二重化を例示したが、これに限定されない。冗長システム１０は、１つの主系ノード１０ａと複数の副系ノード１０ｂとによって冗長化されてもよい。すなわち、冗長システム１０は、１つの主系ノード１０ａと少なくとも１つの副系ノード１０ｂとにより冗長化されたものであってもよい。ところで、上記実施の形態では、物理的に異なるノード間の通信（送受信）の異常をチェックする構成を例示したが、これに限定されない。例えば、各ノード内のソフトウェアに上記の機能を適用して、定周期に処理を行うタスク又はプロセスの間での相互監視を実行してもよい。
【符号の説明】
【００５８】
４ａ  主系データベース、４ｂ  副系データベース、１０  冗長システム、１０ａ  主系ノード、１０ｂ  副系ノード、２０ａ、２０ｂ  制御装置、３０ａ  主系通信装置、３０ｂ  副系通信装置、３１ａ、３１ｂ  通信処理部、３２ａ、３２ｂ  タイマ、４０ａ、４０ｂ  記憶装置、４１ａ、４１ｂ  データベース領域、４２ａ、４２ｂ  プログラム領域、５０  端末装置、６０  ゲートウェイ、７０  コントローラ、８０  フィールド機器、１００  分散制御システム、Ａ、Ｂ  タスク、Ｌ１  上位通信回線、Ｌ２  下位通信回線、Ｔ  設定時間、Ｔａ  タイムアウト時間、Ｔｘ  第１時間、Ｔｙ  第２時間、α  遅れ許容時間。
【図１】
2020137008.tif 000003
【図２】
2020137008.tif 000004
【図３】
2020137008.tif 000005
【図４】
2020137008.tif 000006
【図５】
2020137008.tif 000007