(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-14
(45)【発行日】2022-02-22
(54)【発明の名称】二重化制御システム
(51)【国際特許分類】
G05B 9/03 20060101AFI20220215BHJP
【FI】
G05B9/03
(21)【出願番号】P 2018076387
(22)【出願日】2018-04-11
【審査請求日】2020-12-09
(73)【特許権者】
【識別番号】301078191
【氏名又は名称】株式会社日立ハイテクソリューションズ
(74)【代理人】
【識別番号】110001829
【氏名又は名称】特許業務法人開知国際特許事務所
(72)【発明者】
【氏名】樽井 誠
(72)【発明者】
【氏名】清野 隆
(72)【発明者】
【氏名】高木 佳実
【審査官】今井 貞雄
(56)【参考文献】
【文献】特開2016-199239(JP,A)
【文献】特開平04-153702(JP,A)
【文献】国際公開第2014/125606(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 9/03
(57)【特許請求の範囲】
【請求項1】
主系コントローラと、
従系コントローラと
、
メモリとを備え、
前記従系コントローラは、前記主系コントローラに異常が発生した場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された二重化制御システムにおいて、
前記主系コントローラは、複数の主系コアを有するマルチコアプロセッサを備え、前記複数の主系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行するように構成され、
前記メモリは、前記複数の主系コアに対応した複数の入力情報記憶部および複数の演算結果記憶部を有し、
前記主系コントローラは、前記入力情報を前記複数の入力情報記憶部のそれぞれに記憶させ、
前記複数の主系コアは、それぞれ、前記複数の入力情報記憶部に記憶されている入力情報に対して所定の演算処理を実行し、その演算結果を前記複数の演算結果記憶部に記憶させ、
前記複数の主系コアは、それぞれ、前記複数の演算結果記憶部に記憶されている他の主系コアの演算処置の途中経過を監視し、前記他の主系コアが前記所定の演算処理を正常に実行しているか否かを判定するとともに、前記他の主系コアの演算処理時間を計測し、
前記従系コントローラは、前記複数の主系コアの演算処理によって得られた複数の演算結果の間で不一致が生じた場合
、前記複数の主系コアのうち少なくとも1つの主系コアの演算処理が正常に実行されていないと判定された場合、および、前記複数の主系コアのうち少なくとも1つの主系コアの演算処理時間が所定時間を超えた場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された
ことを特徴とする二重化制御システム。
【請求項2】
請求項1に記載の二重化制御システムにおいて、
前記従系コントローラは、複数の従系コアを有するマルチコアプロセッサを備え、前記主系コントローラが実行していた制御を引き継いだ後に、前記複数の従系コアが互いに重複しない時間帯に同一の入力情報に対して同一の演算処理を実行し、前記複数の従系コアが互いの演算処理の途中経過を監視し、前記複数の従系コアによる演算処理で得られた複数の演算結果の間で不一致が生じた場合に、前記複数の従系コアのうち演算処理の途中経過に異常が検出されなかった従系コアの演算結果を用いて制御を継続するように構成された
ことを特徴とする二重化制御システム。
【請求項3】
請求項1に記載の二重化制御システムにおいて、
前記従系コントローラは、複数の従系コアを有するマルチコアプロセッサを備え、前記主系コントローラが実行していた制御を引き継いだ後に、前記複数の従系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行し、前記複数の従系コアの演算処理で得られた複数の演算結果の間で不一致が生じた場合に、前記複数の演算結果のうち最も多数を占める演算結果を用いて制御を継続するように構成された
ことを特徴とする二重化制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2つのコントローラを備えた二重化制御システムに関し、特に、一方のコントローラに異常が発生した場合に他方のコントローラがその制御を引き継ぐ二重化制御システムに関する。
【背景技術】
【0002】
二重化制御システムは、2つの計装用のコントローラ(主系コントローラおよび従系コントローラ)を備えたシステムであり、主系コントローラに異常が発生した場合に、主系コントローラが実行していた制御を従系コントローラが引き継ぐように構成されている。
【0003】
ところで、計装用のコントローラには、従来から高い信頼性が求められている。コントローラの信頼性を向上するための技術として、単一のCPUに内蔵された2つのコアが同一のコードを同時に実行し、それぞれの実行結果に相違があったことをもって異常を検出する、いわゆるデュアルコアのロックステップマイコンがある(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したロックステップマイコンは、主に車載用コントローラに使用されるなど仕様が特化される傾向にあり、計装用のコントローラには適さない仕様のものが多い。また、独自のカスタム品でロックステップマイコンを実現しようとすると、技術的にまたはコスト的に高くなるなど課題が多い。更に、単一のCPUに内蔵された2つのコアが同一のコードを同時に実行するため、電圧変動などの外乱による影響が各演算結果に同様に現れることにより、2つの演算結果を照合しても異常が検出されない可能性がある。
【0006】
本発明は、上記課題に鑑みてなされたものであり、その目的は、主系コントローラの異常検出精度を低コストで向上できる二重化制御システムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明は、主系コントローラと、従系コントローラと、メモリとを備え、前記従系コントローラは、前記主系コントローラに異常が発生した場合に、前記主系コントローラが実行していた制御を引き継ぐように構成された二重化制御システムにおいて、前記主系コントローラは、複数の主系コアを有するマルチコアプロセッサを備え、前記複数の主系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行するように構成され、前記メモリは、前記複数の主系コアに対応した複数の入力情報記憶部および複数の演算結果記憶部を有し、前記主系コントローラは、前記入力情報を前記複数の入力情報記憶部のそれぞれに記憶させ、前記複数の主系コアは、それぞれ、前記複数の入力情報記憶部に記憶されている入力情報に対して所定の演算処理を実行し、その演算結果を前記複数の演算結果記憶部に記憶させ、前記複数の主系コアは、それぞれ、前記複数の演算結果記憶部に記憶されている他の主系コアの演算処理の途中経過を監視し、前記他の主系コアが前記所定の演算処理を正常に実行しているか否かを判定するとともに、前記他の主系コアの演算処理時間を計測し、前記従系コントローラは、前記複数の主系コアの演算処理によって得られた複数の演算結果の間で不一致が生じた場合、前記複数の主系コアのうち少なくとも1つの主系コアの演算処理が正常に実行されていないと判定された場合、および、前記複数の主系コアのうち少なくとも1つの主系コアの演算処理時間が所定時間を超えた場合に、前記主系コントローラが実行していた制御を引き継ぐように構成されたものとする。
【0008】
以上のように構成した本実施例に係る二重化制御システムによれば、汎用のマルチコアマイコンで主系コントローラを構成することが可能になるため、主系コントローラのコストを抑えることできる。
【0009】
また、複数の主系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行することにより、電圧変動などの外乱による影響が複数の演算結果に同様に現れることを防止できる。その結果、複数の主系コアの演算結果を照合することで電圧変動などの外乱による影響を確実に検出することが可能になるため、主系コントローラの異常検出精度を向上することができる。
【発明の効果】
【0010】
本発明によれば、二重化制御システムにおいて、主系コントローラの異常検出精度を低コストで向上することが可能となる。
【図面の簡単な説明】
【0011】
【
図1】本発明の実施の形態に係る二重化制御コントローラの構成図である。
【
図2】主系コントローラの第1および第2コアが一制御周期内で実行する処理を示すフローチャートである。
【
図3】主系コントローラの第1および第2コアのいずれにも異常が検出されなかった場合に第1および第2コアによって行われる処理を時系列に示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について、図面を参照して説明する。
【0013】
図1は、本実施の形態に係る二重化制御コントローラの構成図である。
【0014】
図1に示すように、二重化制御システム1は、主系コントローラ2aと、従系コントローラ2bとを備えている。主系コントローラ2aと従系コントローラ2bは、系間通信部6を介して接続されている。主系コントローラ2aおよび従系コントローラ2bは、プロセス入出力バス10に接続されている。プロセス入出力バス10には、プラント等を構成する各種フィールド機器(
図1に示す例では、センサ14、バルブ15、PLC16)が入出力基板変換部11~13を介して接続されている。
【0015】
主系コントローラ2aは、プラント等の制御の実行権を有するコントローラ(実行系コントローラ)として起動する。一方、従系コントローラ2bが実行権を有さないコントローラ(待機系コントローラ)として起動する。実行系コントローラとして動作していた主系コントローラ2aに異常が発生した場合は、待機系コントローラとして動作していた従系コントローラ2bが実行権を取得して実行系コントローラとなり、主系コントローラ2aが実行していた制御を引き継ぐ。実行系コントローラとして動作する主系コントローラ2aまたは従系コントローラ2bは、プロセス入出力バス10を介してフィールド機器14~16を制御する。
【0016】
主系コントローラ2aは、複数のコア(主系コア)3a1,3a2を有するマルチコアプロセッサからなる制御演算部3aと、フィールド機器14~16からの入力情報や演算結果等を記憶するメモリ4aと、フィールド機器14~16との間でデータを入出力するプロセス入出力部5aとを備えている。ここで、
図1に示す例では、マルチコアプロセッサ3a,3bのコア数を2としているが、本発明はコア数が3以上の場合にも適用可能である。主系コントローラ2aは、図示しないROM等に格納されたプログラムを制御演算部3aで実行することにより、以下に説明する機能を実現する。なお、従系コントローラ2bの構成は主系コントローラ2aと同様であるため、説明は省略する。
【0017】
主系コントローラ2aの制御演算部3aは、プロセス入出力部5aを介して取得したフィールド機器14~16からの入力情報を、メモリ4aの2つのアドレス領域(第1入力情報記憶部4a1および第2入力情報記憶部4a2)にそれぞれ記憶する。第1コア3a1は第1入力情報記憶部4a1に記憶されている入力情報に対して所定の演算処理を実行し、その演算結果を第1演算結果記憶部4a3に記憶する。ここでいう所定の演算処理とは、フィールド機器14~16からの入力情報を基にフィールド機器14~16に出力する情報(制御データ)を生成する処理である。第2コア3abは第2入力情報記憶部4a2に格納された入力情報に対して第1コア3a1と同様の演算処理を実行し、その結果を第2演算結果記憶部4a4に格納する。第1および第2コア3a1,3a2は、同一の入力情報に対して同一の演算処理を実行するため、主系コントローラ2aに異常が発生しない限り、双方の演算結果は常に一致する。なお、ここでいう同一の演算処理とは同一の計算式に基づく演算処理のことであり、コードレベルで同一である必要はない。
【0018】
図2は、主系コントローラ2aの第1および第2コア3a1,3a2が一制御周期で実行する処理を示すフローチャートである。
【0019】
まず、第1コア3a1は、ステップS1aで、プロセス入出力部6aを介して取得したフィールド機器14~16からの入力情報を、メモリ4aの第1入力情報記憶部4a1および第2入力情報記憶部4a2にそれぞれ記憶する。
【0020】
ステップS1aに続き、第1コア3a1は、第2コア3a2に対して演算起動指示を出力する(ステップS2a)。演算起動指示を受けた第2コア3a2は、第2入力情報記憶部4a2に記憶されている入力情報に対して演算処理を行い、演算結果を第2演算結果記憶部4a4に記憶し(ステップS1b)、待機状態に移行する(ステップS5b)。
【0021】
ステップS2aに続き、第1コア3a1は、第2コア3a2が演算処理(ステップS1b)を実行している間、第2コア3a2の診断を行う。具体的には、第2演算結果記憶部4a4の更新状態を監視することにより、第2コア3a2が演算処理を所定通りに行っているか否かを判定するとともに、第2コア3a2が演算処理に要した時間を計測する(ステップS3a)。
【0022】
ステップS3aに続き、第1コア3a1は、ステップS3aで得た第2コア3a2の診断結果に基づき、第2コア3a2に異常があるか否かを判定する(ステップS4a)。具体的には、第2コア3a2の演算処理(ステップS1b)が所定通りに行われなかった場合、または、第2コア3a2の演算処理(ステップS1b)が所定時間内に完了しなかった(タイムアウトした)場合に、第2コア3a2に異常があると判定する。
【0023】
第1コア3a1は、ステップS4aで第2コア3a2に異常があると判定した場合は、ステップS10aに進み、主系コントローラ2aから従系コントローラ2bへの切替を行う。一方、第2コア3a2に異常がないと判定した場合は、ステップS5aに進み、第2コア3a2に対して診断処理を起動するよう指示する。
【0024】
ステップS5aに続き、第1コア3a1は、第1入力情報記憶部4a1に記憶されている入力情報に対して演算処理を行い、演算結果を第1演算結果記憶部4a3に記憶する(ステップS6a)。
【0025】
ステップS5aで診断処理の起動指示を受けた第2コア3a2は、第1コア3a1が演算処理(ステップS6a)を実行している間、第1コア3a1の診断を行う(ステップS2b)。具体的には、第1入力情報記憶部4a1または第1演算結果記憶部4a3に記憶されている情報の更新状態や第1コア3a1の割り込み(例えばゼロ除算割り込み)の発生有無を監視し、第1コア3a1が演算処理を所定通りに実行しているか否かを判定するとともに、第1コア3a1が演算処理(ステップS6a)に要した時間を計測する(ステップS2b)。
【0026】
ステップS2bに続き、第2コア3a2は、ステップS2bで得た第1コア3a1の診断結果に基づき、第1コア3a1に異常があるか否かを判定する(ステップS3b)。具体的には、第1コア3a1の演算処理(ステップS6a)が所定通りに実行されなかった場合、または、第1コア3a1の演算処理(ステップS6a)が所定時間内に完了しなかった(タイムアウトした)場合に、第1コア3a1に異常があると判定する。
【0027】
第2コア3a2は、ステップS3bで第1コア3a1に異常があると判定した場合は、ステップS4bに進み、主系コントローラ2aから従系コントローラ2bへの切替を行う。これにより、主系コントローラ2aが実行していた制御が従系コントローラ3bに引き継がれる。一方、第1コア3a1に異常がないと判定した場合は、ステップS5bに進み、待機状態に移行する。
【0028】
ステップS6aに続き、第1コア3a1は、第1演算結果記憶部4a3に記憶されている演算結果と第2演算結果記憶部4a4に記憶されている演算結果とを照合し(ステップS7a)、双方が一致しているか否かを判定する(ステップS8a)。
【0029】
第1コア3a1は、ステップS8aで演算結果が一致していると判定した場合は、ステップS9aに進み、第1演算結果記憶部4a3または第2演算結果記憶部4a4に記憶されている演算結果(制御データ)をプロセス入出力部5aを介してフィールド機器14~16に出力する。一方、ステップS8aで演算結果が一致していないと判定した場合は、ステップS10aに進み、主系コントローラ2aから従系コントローラ2bへの切替を行う。これにより、主系コントローラ2aが実行していた制御が従系コントローラ3bに引き継がれる。
【0030】
図3は、主系コントローラ2aの第1および第2コア3a1,3a2のいずれにも異常が検出されなかった場合に第1および第2コア3a1、3a2によって行われる処理を時系列に示す図である。
【0031】
図3に示すように、第1コア3a1は、第2コア3a2が演算処理(ステップS1b)を行っている間に第2コア3a1の診断処理(S3a)を行い、第2コア3a2は、第1コア3a1が演算処理(ステップS6a)を行っている間に第2コア3a1の診断処理を行う(ステップS2b)。すなわち、第1コア3a1による演算処理(ステップS6a)および第2コア3a2による演算処理(ステップS1b)は互いに重複しない時間帯に実行される。なお、本実施例では、第2コア3a2による演算処理(ステップS1b)および第1コア3a1による診断処理(ステップS3a)を行った後に、第1コア3a1による演算処理(ステップS6b)および第2コア3a2による診断処理(ステップS2b)を行っているが、順番を入れ替えても良い。
【0032】
本実施例に係る二重化制御システム1は、主系コントローラ2aと、従系コントローラ2bとを備え、従系コントローラ2bは、主系コントローラ2aに異常が発生した場合に、主系コントローラ2aが実行していた制御を引き継ぐように構成され、主系コントローラ2aは、複数の主系コア3a1,3a2を有するマルチコアプロセッサ3aを備え、複数の主系コア3a1,3a2が同一の入力情報に対して同一の演算処理(ステップS6a,S1b)を互いに重複しない時間帯に実行するように構成され、従系コントローラ2bは、複数の主系コア3a1,3a2の演算処理S6a,S1bによって得られた複数の演算結果の間で不一致が生じた場合に、主系コントローラ2aが実行していた制御を引き継ぐように構成されている。
【0033】
以上のように構成した本実施例に係る二重化制御システム1によれば、汎用のマルチコアマイコン3aで主系コントローラ2aを構成することが可能になるため、主系コントローラ2aのコストを抑えることできる。
【0034】
また、複数の主系コア3a1,3a2が同一の入力情報に対して同一の演算処理(ステップS6a,S1b)を互いに重複しない時間帯に実行することにより、電圧変動などの外乱による影響が複数の演算結果に同様に現れることを防止できる。その結果、複数の主系コア3a1,3a2の演算結果を照合することで電圧変動などの外乱による影響を確実に検出することが可能になるため、主系コントローラ2aの異常検出精度を向上することができる。
【0035】
また、主系コントローラ2aは、複数の主系コア3a1,3a2が互いの演算処理時間を計測するように構成され、従系コントローラ2bは、複数の主系コア3a1,3a2のうち少なくとも1つの主系コアの演算処理時間が所定時間を超えた場合に、主系コントローラ2aが実行していた制御を引き継ぐように構成されている。これにより、主系コントローラ2aの異常検出精度を向上することができる。
【0036】
また、主系コントローラ2aは、複数の主系コア3a1,3a2が互いの演算処理の途中経過を監視するように構成され、従系コントローラ2bは、複数の主系コア3a1,3a2のうち少なくとも1つの主系コアの演算処理の途中経過に異常が検出された場合に、主系コントローラ2aが実行していた制御を引き継ぐように構成されている。これにより、主系コントローラ2aの異常検出精度を向上するとともに、主系コントローラ2aに異常が生じてから従系コントローラ2bが制御を引き継ぐまでのタイムラグを短縮することが可能となる。
【0037】
また、従系コントローラ2bは、複数の従系コア3b1,3b2を有するマルチコアプロセッサ3bを備え、主系コントローラ2aが実行していた制御を引き継いだ後に、複数の従系コア3b1,3b2が互いに重複しない時間帯に同一の入力情報に対して同一の演算処理を実行し、複数の従系コア3b1,3b2が互いの演算処理の途中経過を監視し、複数の従系コア3b1,3b2による演算処理で得られた複数の演算結果の間で不一致が生じた場合に、複数の従系コア3b1,3b2のうち演算処理の途中経過に異常が検出されなかった従系コアの演算結果を用いて制御を継続するように構成しても良い。これにより、従系コントローラ2bは、複数の従系コア3b1,3b2のうち少なくとも1つの従系コアで異常が検出された場合に、異常が検出されなかった他の従系コアを用いて縮退運転を行うことが可能となる。
【0038】
また、従系コントローラ2bは、複数の従系コアを有するマルチコアプロセッサ3bを備え、主系コントローラ2aが実行していた制御を引き継いだ後に、前記複数の従系コアが同一の入力情報に対して同一の演算処理を互いに重複しない時間帯に実行し、前記複数の従系コアの演算処理で得られた複数の演算結果の間で不一致が生じた場合に、前記複数の演算結果のうち最も多数を占める演算結果を用いて制御を継続するように構成しても良い。これにより、従系コントローラ2bは、複数の演算結果の間で不一致が生じた場合に、最も多数を占める信頼性の高い演算結果を用いて縮退運転を行うことが可能となる。
【0039】
以上、本発明の実施例について詳述したが、本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【0040】
1…二重化制御システム、2a…主系コントローラ、2b…従系コントローラ、3a…制御演算部(マルチコアプロセッサ)、3a1…第1コア(主系コア)、3a2…第2コア(主系コア)、3b…制御演算部(マルチコアプロセッサ)、3b1…第1コア(従系コア)、3b2…第2コア(従系コア)、4a…メモリ、4a1…第1入力情報記憶部、4a2…第2入力情報記憶部、4a3…第1演算結果記憶部、4a4…第2演算結果記憶部、4b…メモリ、4b1…第1入力情報記憶部、4b2…第2入力情報記憶部、4b3…第1演算結果記憶部、4b4…第2演算結果記憶部、5a,5b…プロセス入出力部、10…プロセス入出力バス、11~13…入出力基板変換部、14…センサ、15…バルブ、16…PLC。