(57)【要約】【課題】主系コントローラの異常検出精度を低コストで向上できる二重化制御システムを提供する。【解決手段】主系コントローラ２ａと、従系コントローラ２ｂとを備え、前記従系コントローラは、前記主系コントローラに異常が発生した場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された二重化制御システム１において、前記主系コントローラは、複数の主系コア３ａ１，３ａ２を有するマルチコアプロセッサ３ａを備え、前記複数の主系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行するように構成され、前記従系コントローラは、前記複数の主系コアの演算処理によって得られた複数の演算結果の間で不一致が生じた場合に、前記主系コントローラが実行していた制御を引き継ぐように構成されている。【選択図】  図２
2019185444.tif 000002
【特許請求の範囲】
【請求項１】
主系コントローラと、
従系コントローラとを備え、
前記従系コントローラは、前記主系コントローラに異常が発生した場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された二重化制御システムにおいて、
前記主系コントローラは、複数の主系コアを有するマルチコアプロセッサを備え、前記複数の主系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行するように構成され、
前記従系コントローラは、前記複数の主系コアの演算処理によって得られた複数の演算結果の間で不一致が生じた場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された
ことを特徴とする二重化制御システム。
【請求項２】
請求項１に記載の二重化制御システムにおいて、
前記主系コントローラは、前記複数の主系コアが互いの演算処理時間を計測するように構成され、
前記従系コントローラは、前記複数の主系コアのうち少なくとも１つの主系コアの演算処理時間が所定時間を超えた場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された
ことを特徴とする二重化制御システム。
【請求項３】
請求項２に記載の二重化制御システムにおいて、
前記主系コントローラは、前記複数の主系コアが互いの演算処理の途中経過を監視するように構成され、
前記従系コントローラは、前記複数の主系コアのうち少なくとも１つの主系コアの演算処理の途中経過に異常が検出された場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された
ことを特徴とする二重化制御システム。
【請求項４】
請求項１に記載の二重化制御システムにおいて、
前記従系コントローラは、複数の従系コアを有するマルチコアプロセッサを備え、前記主系コントローラが実行していた制御を引き継いだ後に、前記複数の従系コアが互いに重複しない時間帯に同一の入力情報に対して同一の演算処理を実行し、前記複数の従系コアが互いの演算処理の途中経過を監視し、前記複数の従系コアによる演算処理で得られた複数の演算結果の間で不一致が生じた場合に、前記複数の従系コアのうち演算処理の途中経過に異常が検出されなかった従系コアの演算結果を用いて制御を継続するように構成された
ことを特徴とする二重化制御システム。
【請求項５】
請求項１に記載の二重化制御システムにおいて、
前記従系コントローラは、複数の従系コアを有するマルチコアプロセッサを備え、前記主系コントローラが実行していた制御を引き継いだ後に、前記複数の従系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行し、前記複数の従系コアの演算処理で得られた複数の演算結果の間で不一致が生じた場合に、前記複数の演算結果のうち最も多数を占める演算結果を用いて制御を継続するように構成された
ことを特徴とする二重化制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つのコントローラを備えた二重化制御システムに関し、特に、一方のコントローラに異常が発生した場合に他方のコントローラがその制御を引き継ぐ二重化制御システムに関する。
【背景技術】
【０００２】
二重化制御システムは、２つの計装用のコントローラ（主系コントローラおよび従系コントローラ）を備えたシステムであり、主系コントローラに異常が発生した場合に、主系コントローラが実行していた制御を従系コントローラが引き継ぐように構成されている。
【０００３】
ところで、計装用のコントローラには、従来から高い信頼性が求められている。コントローラの信頼性を向上するための技術として、単一のＣＰＵに内蔵された２つのコアが同一のコードを同時に実行し、それぞれの実行結果に相違があったことをもって異常を検出する、いわゆるデュアルコアのロックステップマイコンがある（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１９９２３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したロックステップマイコンは、主に車載用コントローラに使用されるなど仕様が特化される傾向にあり、計装用のコントローラには適さない仕様のものが多い。また、独自のカスタム品でロックステップマイコンを実現しようとすると、技術的にまたはコスト的に高くなるなど課題が多い。更に、単一のＣＰＵに内蔵された２つのコアが同一のコードを同時に実行するため、電圧変動などの外乱による影響が各演算結果に同様に現れることにより、２つの演算結果を照合しても異常が検出されない可能性がある。
【０００６】
本発明は、上記課題に鑑みてなされたものであり、その目的は、主系コントローラの異常検出精度を低コストで向上できる二重化制御システムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は、主系コントローラと、従系コントローラとを備え、前記従系コントローラは、前記主系コントローラに異常が発生した場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された二重化制御システムにおいて、前記主系コントローラは、複数の主系コアを有するマルチコアプロセッサを備え、前記複数の主系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行するように構成され、前記従系コントローラは、前記複数の主系コアの演算処理によって得られた複数の演算結果の間で不一致が生じた場合に、前記主系コントローラが実行していた制御を引き継ぐように構成されたものとする。
【０００８】
以上のように構成した本実施例に係る二重化制御システムによれば、汎用のマルチコアマイコンで主系コントローラを構成することが可能になるため、主系コントローラのコストを抑えることできる。
【０００９】
また、複数の主系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行することにより、電圧変動などの外乱による影響が複数の演算結果に同様に現れることを防止できる。その結果、複数の主系コアの演算結果を照合することで電圧変動などの外乱による影響を確実に検出することが可能になるため、主系コントローラの異常検出精度を向上することができる。
【発明の効果】
【００１０】
本発明によれば、二重化制御システムにおいて、主系コントローラの異常検出精度を低コストで向上することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係る二重化制御コントローラの構成図である。
【図２】主系コントローラの第１および第２コアが一制御周期内で実行する処理を示すフローチャートである。
【図３】主系コントローラの第１および第２コアのいずれにも異常が検出されなかった場合に第１および第２コアによって行われる処理を時系列に示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１３】
図１は、本実施の形態に係る二重化制御コントローラの構成図である。
【００１４】
図１に示すように、二重化制御システム１は、主系コントローラ２ａと、従系コントローラ２ｂとを備えている。主系コントローラ２ａと従系コントローラ２ｂは、系間通信部６を介して接続されている。主系コントローラ２ａおよび従系コントローラ２ｂは、プロセス入出力バス１０に接続されている。プロセス入出力バス１０には、プラント等を構成する各種フィールド機器（図１に示す例では、センサ１４、バルブ１５、ＰＬＣ１６）が入出力基板変換部１１〜１３を介して接続されている。
【００１５】
主系コントローラ２ａは、プラント等の制御の実行権を有するコントローラ（実行系コントローラ）として起動する。一方、従系コントローラ２ｂが実行権を有さないコントローラ（待機系コントローラ）として起動する。実行系コントローラとして動作していた主系コントローラ２ａに異常が発生した場合は、待機系コントローラとして動作していた従系コントローラ２ｂが実行権を取得して実行系コントローラとなり、主系コントローラ２ａが実行していた制御を引き継ぐ。実行系コントローラとして動作する主系コントローラ２ａまたは従系コントローラ２ｂは、プロセス入出力バス１０を介してフィールド機器１４〜１６を制御する。
【００１６】
主系コントローラ２ａは、複数のコア（主系コア）３ａ１，３ａ２を有するマルチコアプロセッサからなる制御演算部３ａと、フィールド機器１４〜１６からの入力情報や演算結果等を記憶するメモリ４ａと、フィールド機器１４〜１６との間でデータを入出力するプロセス入出力部５ａとを備えている。ここで、図１に示す例では、マルチコアプロセッサ３ａ，３ｂのコア数を２としているが、本発明はコア数が３以上の場合にも適用可能である。主系コントローラ２ａは、図示しないＲＯＭ等に格納されたプログラムを制御演算部３ａで実行することにより、以下に説明する機能を実現する。なお、従系コントローラ２ｂの構成は主系コントローラ２ａと同様であるため、説明は省略する。
【００１７】
主系コントローラ２ａの制御演算部３ａは、プロセス入出力部５ａを介して取得したフィールド機器１４〜１６からの入力情報を、メモリ４ａの２つのアドレス領域（第１入力情報記憶部４ａ１および第２入力情報記憶部４ａ２）にそれぞれ記憶する。第１コア３ａ１は第１入力情報記憶部４ａ１に記憶されている入力情報に対して所定の演算処理を実行し、その演算結果を第１演算結果記憶部４ａ３に記憶する。ここでいう所定の演算処理とは、フィールド機器１４〜１６からの入力情報を基にフィールド機器１４〜１６に出力する情報（制御データ）を生成する処理である。第２コア３ａｂは第２入力情報記憶部４ａ２に格納された入力情報に対して第１コア３ａ１と同様の演算処理を実行し、その結果を第２演算結果記憶部４ａ４に格納する。第１および第２コア３ａ１，３ａ２は、同一の入力情報に対して同一の演算処理を実行するため、主系コントローラ２ａに異常が発生しない限り、双方の演算結果は常に一致する。なお、ここでいう同一の演算処理とは同一の計算式に基づく演算処理のことであり、コードレベルで同一である必要はない。
【００１８】
図２は、主系コントローラ２ａの第１および第２コア３ａ１，３ａ２が一制御周期で実行する処理を示すフローチャートである。
【００１９】
まず、第１コア３ａ１は、ステップＳ１ａで、プロセス入出力部６ａを介して取得したフィールド機器１４〜１６からの入力情報を、メモリ４ａの第１入力情報記憶部４ａ１および第２入力情報記憶部４ａ２にそれぞれ記憶する。
【００２０】
ステップＳ１ａに続き、第１コア３ａ１は、第２コア３ａ２に対して演算起動指示を出力する（ステップＳ２ａ）。演算起動指示を受けた第２コア３ａ２は、第２入力情報記憶部４ａ２に記憶されている入力情報に対して演算処理を行い、演算結果を第２演算結果記憶部４ａ４に記憶し（ステップＳ１ｂ）、待機状態に移行する（ステップＳ５ｂ）。
【００２１】
ステップＳ２ａに続き、第１コア３ａ１は、第２コア３ａ２が演算処理（ステップＳ１ｂ）を実行している間、第２コア３ａ２の診断を行う。具体的には、第２演算結果記憶部４ａ４の更新状態を監視することにより、第２コア３ａ２が演算処理を所定通りに行っているか否かを判定するとともに、第２コア３ａ２が演算処理に要した時間を計測する（ステップＳ３ａ）。
【００２２】
ステップＳ３ａに続き、第１コア３ａ１は、ステップＳ３ａで得た第２コア３ａ２の診断結果に基づき、第２コア３ａ２に異常があるか否かを判定する（ステップＳ４ａ）。具体的には、第２コア３ａ２の演算処理（ステップＳ１ｂ）が所定通りに行われなかった場合、または、第２コア３ａ２の演算処理（ステップＳ１ｂ）が所定時間内に完了しなかった（タイムアウトした）場合に、第２コア３ａ２に異常があると判定する。
【００２３】
第１コア３ａ１は、ステップＳ４ａで第２コア３ａ２に異常があると判定した場合は、ステップＳ１０ａに進み、主系コントローラ２ａから従系コントローラ２ｂへの切替を行う。一方、第２コア３ａ２に異常がないと判定した場合は、ステップＳ５ａに進み、第２コア３ａ２に対して診断処理を起動するよう指示する。
【００２４】
ステップＳ５ａに続き、第１コア３ａ１は、第１入力情報記憶部４ａ１に記憶されている入力情報に対して演算処理を行い、演算結果を第１演算結果記憶部４ａ３に記憶する（ステップＳ６ａ）。
【００２５】
ステップＳ５ａで診断処理の起動指示を受けた第２コア３ａ２は、第１コア３ａ１が演算処理（ステップＳ６ａ）を実行している間、第１コア３ａ１の診断を行う（ステップＳ２ｂ）。具体的には、第１入力情報記憶部４ａ１または第１演算結果記憶部４ａ３に記憶されている情報の更新状態や第１コア３ａ１の割り込み（例えばゼロ除算割り込み）の発生有無を監視し、第１コア３ａ１が演算処理を所定通りに実行しているか否かを判定するとともに、第１コア３ａ１が演算処理（ステップＳ６ａ）に要した時間を計測する（ステップＳ２ｂ）。
【００２６】
ステップＳ２ｂに続き、第２コア３ａ２は、ステップＳ２ｂで得た第１コア３ａ１の診断結果に基づき、第１コア３ａ１に異常があるか否かを判定する（ステップＳ３ｂ）。具体的には、第１コア３ａ１の演算処理（ステップＳ６ａ）が所定通りに実行されなかった場合、または、第１コア３ａ１の演算処理（ステップＳ６ａ）が所定時間内に完了しなかった（タイムアウトした）場合に、第１コア３ａ１に異常があると判定する。
【００２７】
第２コア３ａ２は、ステップＳ３ｂで第１コア３ａ１に異常があると判定した場合は、ステップＳ４ｂに進み、主系コントローラ２ａから従系コントローラ２ｂへの切替を行う。これにより、主系コントローラ２ａが実行していた制御が従系コントローラ３ｂに引き継がれる。一方、第１コア３ａ１に異常がないと判定した場合は、ステップＳ５ｂに進み、待機状態に移行する。
【００２８】
ステップＳ６ａに続き、第１コア３ａ１は、第１演算結果記憶部４ａ３に記憶されている演算結果と第２演算結果記憶部４ａ４に記憶されている演算結果とを照合し（ステップＳ７ａ）、双方が一致しているか否かを判定する（ステップＳ８ａ）。
【００２９】
第１コア３ａ１は、ステップＳ８ａで演算結果が一致していると判定した場合は、ステップＳ９ａに進み、第１演算結果記憶部４ａ３または第２演算結果記憶部４ａ４に記憶されている演算結果（制御データ）をプロセス入出力部５ａを介してフィールド機器１４〜１６に出力する。一方、ステップＳ８ａで演算結果が一致していないと判定した場合は、ステップＳ１０ａに進み、主系コントローラ２ａから従系コントローラ２ｂへの切替を行う。これにより、主系コントローラ２ａが実行していた制御が従系コントローラ３ｂに引き継がれる。
【００３０】
図３は、主系コントローラ２ａの第１および第２コア３ａ１，３ａ２のいずれにも異常が検出されなかった場合に第１および第２コア３ａ１、３ａ２によって行われる処理を時系列に示す図である。
【００３１】
図３に示すように、第１コア３ａ１は、第２コア３ａ２が演算処理（ステップＳ１ｂ）を行っている間に第２コア３ａ１の診断処理（Ｓ３ａ）を行い、第２コア３ａ２は、第１コア３ａ１が演算処理（ステップＳ６ａ）を行っている間に第２コア３ａ１の診断処理を行う（ステップＳ２ｂ）。すなわち、第１コア３ａ１による演算処理（ステップＳ６ａ）および第２コア３ａ２による演算処理（ステップＳ１ｂ）は互いに重複しない時間帯に実行される。なお、本実施例では、第２コア３ａ２による演算処理（ステップＳ１ｂ）および第１コア３ａ１による診断処理（ステップＳ３ａ）を行った後に、第１コア３ａ１による演算処理（ステップＳ６ｂ）および第２コア３ａ２による診断処理（ステップＳ２ｂ）を行っているが、順番を入れ替えても良い。
【００３２】
本実施例に係る二重化制御システム１は、主系コントローラ２ａと、従系コントローラ２ｂとを備え、従系コントローラ２ｂは、主系コントローラ２ａに異常が発生した場合に、主系コントローラ２ａが実行していた制御を引き継ぐように構成され、主系コントローラ２ａは、複数の主系コア３ａ１，３ａ２を有するマルチコアプロセッサ３ａを備え、複数の主系コア３ａ１，３ａ２が同一の入力情報に対して同一の演算処理（ステップＳ６ａ，Ｓ１ｂ）を互いに重複しない時間帯に実行するように構成され、従系コントローラ２ｂは、複数の主系コア３ａ１，３ａ２の演算処理Ｓ６ａ，Ｓ１ｂによって得られた複数の演算結果の間で不一致が生じた場合に、主系コントローラ２ａが実行していた制御を引き継ぐように構成されている。
【００３３】
以上のように構成した本実施例に係る二重化制御システム１によれば、汎用のマルチコアマイコン３ａで主系コントローラ２ａを構成することが可能になるため、主系コントローラ２ａのコストを抑えることできる。
【００３４】
また、複数の主系コア３ａ１，３ａ２が同一の入力情報に対して同一の演算処理（ステップＳ６ａ，Ｓ１ｂ）を互いに重複しない時間帯に実行することにより、電圧変動などの外乱による影響が複数の演算結果に同様に現れることを防止できる。その結果、複数の主系コア３ａ１，３ａ２の演算結果を照合することで電圧変動などの外乱による影響を確実に検出することが可能になるため、主系コントローラ２ａの異常検出精度を向上することができる。
【００３５】
また、主系コントローラ２ａは、複数の主系コア３ａ１，３ａ２が互いの演算処理時間を計測するように構成され、従系コントローラ２ｂは、複数の主系コア３ａ１，３ａ２のうち少なくとも１つの主系コアの演算処理時間が所定時間を超えた場合に、主系コントローラ２ａが実行していた制御を引き継ぐように構成されている。これにより、主系コントローラ２ａの異常検出精度を向上することができる。
【００３６】
また、主系コントローラ２ａは、複数の主系コア３ａ１，３ａ２が互いの演算処理の途中経過を監視するように構成され、従系コントローラ２ｂは、複数の主系コア３ａ１，３ａ２のうち少なくとも１つの主系コアの演算処理の途中経過に異常が検出された場合に、主系コントローラ２ａが実行していた制御を引き継ぐように構成されている。これにより、主系コントローラ２ａの異常検出精度を向上するとともに、主系コントローラ２ａに異常が生じてから従系コントローラ２ｂが制御を引き継ぐまでのタイムラグを短縮することが可能となる。
【００３７】
また、従系コントローラ２ｂは、複数の従系コア３ｂ１，３ｂ２を有するマルチコアプロセッサ３ｂを備え、主系コントローラ２ａが実行していた制御を引き継いだ後に、複数の従系コア３ｂ１，３ｂ２が互いに重複しない時間帯に同一の入力情報に対して同一の演算処理を実行し、複数の従系コア３ｂ１，３ｂ２が互いの演算処理の途中経過を監視し、複数の従系コア３ｂ１，３ｂ２による演算処理で得られた複数の演算結果の間で不一致が生じた場合に、複数の従系コア３ｂ１，３ｂ２のうち演算処理の途中経過に異常が検出されなかった従系コアの演算結果を用いて制御を継続するように構成しても良い。これにより、従系コントローラ２ｂは、複数の従系コア３ｂ１，３ｂ２のうち少なくとも１つの従系コアで異常が検出された場合に、異常が検出されなかった他の従系コアを用いて縮退運転を行うことが可能となる。
【００３８】
また、従系コントローラ２ｂは、複数の従系コアを有するマルチコアプロセッサ３ｂを備え、主系コントローラ２ａが実行していた制御を引き継いだ後に、前記複数の従系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行し、前記複数の従系コアの演算処理で得られた複数の演算結果の間で不一致が生じた場合に、前記複数の演算結果のうち最も多数を占める演算結果を用いて制御を継続するように構成しても良い。これにより、従系コントローラ２ｂは、複数の演算結果の間で不一致が生じた場合に、最も多数を占める信頼性の高い演算結果を用いて縮退運転を行うことが可能となる。
【００３９】
以上、本発明の実施例について詳述したが、本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【００４０】
１…二重化制御システム、２ａ…主系コントローラ、２ｂ…従系コントローラ、３ａ…制御演算部（マルチコアプロセッサ）、３ａ１…第１コア（主系コア）、３ａ２…第２コア（主系コア）、３ｂ…制御演算部（マルチコアプロセッサ）、３ｂ１…第１コア（従系コア）、３ｂ２…第２コア（従系コア）、４ａ…メモリ、４ａ１…第１入力情報記憶部、４ａ２…第２入力情報記憶部、４ａ３…第１演算結果記憶部、４ａ４…第２演算結果記憶部、４ｂ…メモリ、４ｂ１…第１入力情報記憶部、４ｂ２…第２入力情報記憶部、４ｂ３…第１演算結果記憶部、４ｂ４…第２演算結果記憶部、５ａ，５ｂ…プロセス入出力部、１０…プロセス入出力バス、１１〜１３…入出力基板変換部、１４…センサ、１５…バルブ、１６…ＰＬＣ。
【図１】
2019185444.tif 000003
【図２】
2019185444.tif 000004
【図３】
2019185444.tif 000005