(57)【要約】  コスト増加を抑えつつ、制御の安定性を保証できるフェールオペレーショナルが難しい。本発明に係る制御コントローラは、正常走行モード時にリカバリで必要な情報をバックアップに時系列で保存することで、システムに故障が発生してもバックアップから制御ソフトウェアをリアルタイムにリカバリする。
2018229930.tif 000002
【特許請求の範囲】
【請求項１】
一方の制御プログラムが算出した状態値と制御計画値を抽出する制御バックアップデータ抽出部と、
前記状態値、前記制御計画値、及び他方の制御プログラムが参照する入力値を時系列にバックアップとして保存する制御バックアップデータ保存部と、
前記一方の制御プログラムの故障検知後に、前記他方の制御プログラムに前記状態値と前記入力値を前記時系列の順に入力し、制御出力が可能な状態として制御機能を維持する制御プログラム高速起動部と、
を備えるコントローラ。
【請求項２】
前記故障検知後に保存された前記制御計画値を出力する代理出力部を備えることを特徴とする、請求項１記載のコントローラ。
【請求項３】
前記他方の制御プログラムの初期化後に、前記一方の制御プログラムが演算した前記制御計画値と前記代理出力部の前記制御計画値とを比較し、閾値に応じて出力する制御指令値を選定することで、システム制御が保証できない際には前記制御プログラムを切り替えない再構成検証部を備えることを特徴とする、請求項２記載のコントローラ。
【請求項４】
前記再構成検証部は、前記制御プログラムの切り替えが一定時間行われない場合にはフェールセーフプログラムに切り替えることを特徴とする、請求項３記載のコントローラ。
【請求項５】
故障が発生した際の切り替え結果をユーザに通知することを特徴とする、請求項３記載のコントローラ。
【請求項６】
前記制御プログラム高速起動部と前記代理出力部が異なるハードウェアで実行されることを特徴とする、請求項１記載のコントローラ。
【請求項７】
複数のコントローラ部を備え、一方の前記コントローラ部に故障が発生した際に、一定時間以内であれば、他方の前記コントローラ部でバックアップ制御プログラムを起動し、一定時間を超過する場合には、前記他方の前記コントローラ部でフェールセーフプログラムを実行することを特徴とする、請求項１記載のコントローラ。
【請求項８】
ソフトウェア起因の故障である場合には、故障が発生した前記コントローラ部でバックアップ制御プログラムを起動することを特徴とする、請求項７記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム内で故障発生時に安全にバックアップ制御プログラムに切り替えるための技術に関するものである。
【背景技術】
【０００２】
近年の多くの制御システムは複数のコントローラで構成され、それらが有線ネットワークまたは無線ネットワークで協調して動作する。例えば、車両システムでは、電子化された車両制御機器を操作するＥＣＵ、すなわち電子制御装置（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）と、複数のＥＣＵ間の通信を可能にする車載ネットワークから構成される。車両システム分野では、ドライバのアクセル操作、ブレーキ操作、ステアリング操作なしに目的地まで自動で運ぶ自動運転システムの需要が高まっている。このシステムではドライバの操作や判断を肩代わりしている自動運転統合ＥＣＵが故障した際にも、ユーザが所望する目的地に安全たどり着ける、または安全な場所に退避できるといった自動運転システムサービスを継続できるフェールオペレーショナルが求められる。具体的な方法として自動走行機能が継続できることが挙げられる。【０００３】
フェールオペレーショナルを実現する方法の一つとして機能の冗長化が挙げられる。例えばホットスタンバイ方式では同じ機能を備えたＥＣＵを２つ以上用意し、故障が発生する前から予め２つ以上を同時に実行する。この方式では、一方が故障した際に他方に瞬時に切り替えることで処理を継続できる。この際に同じアルゴリズムや設計コンセプトで機能を冗長化すると、同じ故障要因ですべての冗長化されたコントローラが同時に故障する同一要因故障となる可能性があるため、異なるアルゴリズムや設計コンセプトで冗長系を実現することが求められる。ホットスタンバイ方式はリアルタイムに切り替えられるため制御システムに有効であるが、コストが高くなる課題がある。【０００４】
他の方法として故障した際に機能を起動するコールドスタンバイ方式があるが、制御システムのリアルタイム性の要求を満たせない課題がある。下記特許文献１では故障前からシステムのデータをバックアップに取り、故障が発生してもバックアップに保存したデータを新規に起動したシステムにコピーすることで高速なリカバリを実現している。なお、リカバリとは代替する機能を立ち上げ、引き継げる状態に初期化し、前期機能に引き継ぐまでの一連の処理を示す。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１２０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１では異種の制御システムではすべてのデータに互換性がないため、データのバックアップのみではリカバリできない。不足したデータは他の制御システムの演算結果を適用することで徐々に初期化されていくが、時間が必要となり制御システムのリアルタイム性を保証できない課題がある。【０００７】
本発明は、上記のような課題を解決するためになされたものであり、制御システムの一部に故障が生じても、バックアップとして用意した異なる機能の制御ソフトウェアに対してリアルタイムにリカバリ可能とするコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため本発明のコントローラは、一方の制御プログラムが算出した状態値と制御計画値を抽出する制御バックアップデータ抽出部と、前記状態値、前記制御計画値、及び他方の制御プログラムが参照する入力値を時系列にバックアップとして保存する制御バックアップデータ保存部と、前記一方の制御プログラムの故障検知後に、前記他方の制御プログラムに前記状態値と前記入力値を前記時系列の順に入力し、制御出力が可能な状態として制御機能を維持する制御プログラム高速起動部と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明に係るコントローラによれば、システムに故障が発生してもバックアップとして用意した制御ソフトウェアへリアルタイムに切り替えられるため、可用性と安全性を担保できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る車両システムの構成図
【図２】実施の形態１に係る通常走行モード時の動作フロー
【図３】実施の形態１に係るリカバリモード時の動作フロー
【図４】実施の形態１に係る縮退モード時の動作フロー
【図５】実施の形態１に係るフェールセーフモード時の動作フロー
【図６】実施の形態１に係るシステムの状態遷移図
【図７】通常制御プログラムの動作フロー
【図８】制御バックアップデータ抽出部の動作フロー
【図９】制御バックアップデータ保存部の動作フロー
【図１０】故障検知部の動作フロー
【図１１】制御プログラム高速起動部の動作フロー
【図１２】バックアップ制御プログラムの動作フロー
【図１３】代理出力部の動作フロー
【図１４】再構成検証部の動作フロー
【図１５】運動制御プログラムの動作フロー
【図１６】フェールセーフプログラムの動作フロー
【図１７】走行起動を例とした制御計画値の比較
【図１８】縮退モードとフェールセーフモードの制御指令値の例
【図１９】実施の形態２に係る車両システムの構成図
【図２０】実施の形態２に係る通常走行モード時の動作フロー
【図２１】実施の形態２に係るリカバリモード時の動作フロー
【図２２】実施の形態２に係る縮退モード時の動作フロー
【図２３】実施の形態２に係るフェールセーフモード時の動作フロー
【図２４】制御バックアップデータ保存部の動作フロー
【図２５】故障検知部の動作フロー
【図２６】制御プログラム高速起動部の動作フロー
【発明を実施するための形態】
【００１１】
本発明に係るコントローラは、システムが故障する前に制御ソフトウェアの状態値をバックアップし、さらにリカバリ後の制御ソフトウェアが正常出力するまでに必要となる入力値を時系列でバックアップすることで、故障検知後にシステムをリカバリさせる際にはバックアップした状態値と入力値を用いることで高速にバックアップ制御ソフトウェアを正常に出力できる状態までリカバリすることができ、システムの可用性と安全性を担保できる。
【００１２】
以下、図面を用いて本発明の実施の形態について説明する。
【００１３】
＜実施の形態１＞
図１は、本発明の実施の形態１に係る車両システム１の構成図である。本システムにはＥＣＵ−Ａ（コントローラ部）１１、ＥＣＵ−Ｂ（コントローラ部）１２、ネットワークバス１３を備える。なお、ＥＣＵ−Ａ（コントロール部）１１、ＥＣＵ−Ｂ（コントロール部）１２、ネットワークバス１３を含んでコントローラと称する。
本実施例ではＥＣＵ−Ａ１１が周囲の状況に応じて車両の走行軌道を演算する自動運転ＥＣＵ、ＥＣＵ−Ｂ１２が、走行軌道に応じて車両の運動制御を演算し、エンジンＥＣＵやブレーキＥＣＵやステアリングＥＣＵに制御コマンドを送付する車両運動ＥＣＵを想定している。しかしこれらに限らない。本実施例ではネットワークバス１３にＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＣＡＮ−ＦＤ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ  Ｆｌｅｘｉｂｌｅ  Ｄａｔａ）、ＦｌｅｘＲａｙのようなバス型ネットワークバスを想定しているが、これに限らない。例えばＥｔｈｅｒｎｅｔのような１対１型のネットワークバスでも良い。ＥＣＵ−Ａ１１とＥＣＵ−Ｂ１２はネットワークバス１３を介してデータの通信が可能である。
【００１４】
図２は実施の形態１に係る通常走行モード１０２１時の動作フローである。
【００１５】
ＥＣＵ−Ａ１１は通常制御プログラム１１１と制御バックアップデータ抽出部１１２を備え、ＥＣＵ−Ｂ１２は制御バックアップデータ保存部１２１、運動制御プログラム１２７を備える。ＥＣＵ−Ｂ１２はバックアップデータとして制御計画値バックアップ１６１と制御リカバリバックアップ１６２を備える。
【００１６】
通常制御プログラム１１１は入力値１５０１に基づいてプログラムの内部状態を示す状態値１５０２を更新し、制御計画値１５０３をＥＣＵ−Ｂ１２に送付する。
【００１７】
入力値１５０１とは、プログラムが演算で参照するデータであり、例えばセンサの入力値や他のＥＣＵが演算した結果である。制御計画値１５０３とは制御対象の動作させる計画を示す情報である。例えば車両の数秒先までの走行軌道である。
【００１８】
状態値１５０２とは、プログラムの内部状態であり、例えばプログラムが現在の車両がレーン変更のためレーンを跨いでいる最中であるといったプログラムが内部的に管理している状態である。
【００１９】
制御バックアップデータ抽出部１１２は通常制御プログラム１１１の状態値１５０２を読み出し、前記状態値１５０２をＥＣＵ−Ｂ１２に送付する。
【００２０】
ＥＣＵ−Ｂ１２の制御バックアップデータ保存部１２１は制御計画値１５０３を受信し、制御計画値バックアップ１６１に制御計画値１５０５を保存する。制御計画値１５０３と制御計画値１５０５は同じ値で合っても良いし、特定の法則に基づいて変換されても良い。また前記制御バックアップデータ保存部１２１は入力値１５０１と状態値１５０４を受信し、制御リカバリバックアップに状態値１５０６と入力値１５０７を保存する。状態値１５０４と状態値１５０６は同じ値で合っても良いし、特定の法則に基づいて変換されても良い。入力値１５０１と入力値１５０７は同じ値であっても良いし、入力値１５０７は入直値１５０４のサブセット、またはその逆であっても良い。例えば、入力値１５０４はレーザレンジセンサによる外界認識結果とカメラによる外界認識結果であったとき、入力値１５０７はカメラによる外界認識結果のみであっても良い。入力値１５０７はリカバリ対象の制御ソフトウェアの入力に基づいて決定される。
【００２１】
制御リカバリバックアップ１６２の保存形式は一定期間の状態値と入力値が失われないように時系列順に保存されることを想定している。この時系列はバックアップとして実行される制御ソフトウェアが正常な出力を生成可能となるまでに必要な最小限のデータ以上である。制御計画値バックアップ１６１は通常制御プログラム１１１の制御計画値１５０３を保存するデータベースである。本実施の形態によると、通常制御プログラム１１１の制御計画値１５０３のみを保存しているが、これに限らない。例えば、複数の制御プログラムの制御計画値を保存しても良い。制御リカバリバックアップ１６２は通常制御プログラム１１１の状態値１５０２と入力値１５０１を保存するデータベースである。
【００２２】
本実施の形態によると、通常制御プログラム１１１の状態値１５０２のみを保存しているが、これに限らない。例えば、複数の制御プログラムの状態値を保存しても良い。運動制御プログラム１２７は通常制御プログラム１１１が送付した制御計画値１５０３を受信し、その情報に基づいて、エンジンＥＣＵやブレーキＥＣＵ、ステアリングＥＣＵへの制御指令となる速度値や舵角値といった制御指令値１５１４を送付する。
【００２３】
図３は実施の形態１に係るリカバリモード１０２２時の動作フローである。
ＥＣＵ−Ｂ１２は故障検知部１２２、制御プログラム高速起動部１２３、バックアップ制御プログラム１２４、代理出力部１２５、再構成検証部１２６、運動制御プログラム１２７を備え、ＥＣＵ−Ａ１１は故障している。
【００２４】
故障検知部１２２はＥＣＵ−Ａ１１の故障を検知するとリカバリモードに遷移し、故障時刻１５１３を再構成検証部１２６に通知する。故障を検知する方法はＥＣＵ−Ａ１１からのデータが一定時間届かないときに故障と判断しても良いし、他の方法でも良い。本実施例では故障とは設計に想定した正常状態でないことを示す。従ってＥＣＵ−Ａ１１のハードウェアが物理的に壊れた事象のみを示すわけではなく、例えばＥＣＵ−Ａ１１でリセットが繰り返し入り、起動しないような設計不良（バグ）やデッドロックなども含む。またＥＣＵ−Ａ１１とＥＣＵ−Ｂ１２間のネットワークバス故障も含む。また通知する方法は割り込み信号を用いても良いし、予め再構成検証部１２６が周期的に検知時刻１５１３の更新を監視しても良い。故障検知部１２２は制御プログラム高速起動部１２３を実行する。
【００２５】
制御プログラム高速起動部１２３は制御リカバリバックアップ１６２から状態値１５０６と入力値１５０７を時系列に読み出し、その時系列に基づいてバックアップ制御プログラム１２４が制御計画値１５１０を設計時に意図した値で出力できるまで実行する。
【００２６】
代理出力部１２５は制御計画値バックアップ１６１から制御計画値１５０５を読み出し、制御計画値１５１１を出力する。制御計画値１５０５と制御計画値１５１１は同じ値であっても良いし、特定の法則に基づいて変換されても良い。
【００２７】
再構成検証部１２６は、検知時刻１５１３に基づいて制御計画値１５１０と制御計画値１５１１を比較し、リカバリ完了と判断したときに縮退モード１０２３に遷移し、制御計画値１５１０を制御計画値１５１２として出力する。リカバリ未完了と判断したときに制御計画値１５１１を制御計画値１５１２として出力する。検知時刻１５１３から一定時間内にリカバリ完了とならないときフェールセーフモード１０２４に遷移する。なお、再構成検証部１２６が比較で使用した制御計画値と出力する制御計画値が必ずしも同じでなくても良い。例えば、比較時には過去の制御計画値も含めて比較し、出力時の制御計画値には現在から未来の制御計画値のみに絞った値としても良い。
【００２８】
運動制御プログラム１２７は新たな制御計画値１５０３を受信していない場合、制御計画値１５１２に基づいて制御指令値１５１４を送付する。制御計画値１５０３と制御計画値１５１２で制御指令値１５１４を算出するアルゴリズムを変えても良いし、同じであってもよい。
【００２９】
図４は実施の形態１に係る縮退モード１０２３時の動作フローである。ＥＣＵ−Ｂ１２はバックアップ制御プログラム１２４、再構成検証部１２６、運動制御プログラム１２７を備え、ＥＣＵ−Ａ１１は故障している。縮退モードのバックアップ制御プログラムは入力値１５０１に基づいて内部状態を更新し、制御計画値１５１０を出力する。縮退モードの再構成検証部１２６は制御計画値１５１０に基づいて制御計画値１５１２を出力する。運動制御プログラム１２７は新たな制御計画値１５０３を受信していない場合、制御計画値１５１２に基づいて制御指令値１５１４を送付する。制御計画値１５０３と制御計画値１５１２で制御指令値１５１４を算出するアルゴリズムを変えても良いし、同じであってもよい。
【００３０】
図５は実施の形態１に係るフェールセーフモード１０２４時の動作フローである。ＥＣＵ−Ｂ１２はフェールセーフプログラム１２８、再構成検証部１２６、運動制御プログラム１２７を備え、ＥＣＵ−Ａ１１は故障している。フェールセーフモードに遷移すると再構成検証部１２６はフェールセーフプログラム１２８が周期的に実行されるように起動する。本実施の形態では周期的に実行されることを想定しているがこれに限らない。例えば、再構成検証部１２６がフェールセーフプログラム１２８を実行するようにしてもよい。
【００３１】
フェールセーフプログラム１２８は制御計画値バックアップ１６１に格納された制御計画値１５０５と入力値１５０１に基づいて制御計画値１５１０を出力する。本実施例では入力値１５０１と制御計画値１５１０から制御計画値１５１２を出力しているがこれに限らない。例えば、制御計画値１５１０のみから制御計画値１５１２を出力しても良い。
【００３２】
運動制御プログラム１２７は新たな制御計画値１５０３を受信していない場合、制御計画値１５１２に基づいて制御指令値１５１４を送付する。制御計画値１５０３と制御計画値１５１２で制御指令値１５１４を算出するアルゴリズムを変えても良いし、同じであってもよい。
【００３３】
図６は実施の形態１に係る車両システム１の状態遷移図である。車両システム１が起動（キーＯＮ）するとシステム初期化モード１０１に遷移する。初期化モードでは各ＥＣＵのプログラムの初期化が行われる。初期化が終了すると走行モード１０２の通常走行モード１０２１に遷移する。通常走行モード１０２１では故障を検知するとリカバリモード１０２２に遷移する。リカバリモード１０２２では時間内にバックアップ制御プログラムのリカバリが成功すると縮退モード１０２３に遷移する。時間内にリカバリが成功せず、既定の時間を超えてしまうとフェールセーフモード１０２４に遷移する。既定の時間は軌道計画値バックアップ１６１に保存した制御計画値１５０５で、制御システムの安全が担保できなくなる時間によって決まる。
【００３４】
しかし、これに限らない。例えば、ユーザが独自に規定しても良い。車両システム１がキーＯＦＦされるとシステム終了モード１０３に遷移する。システム終了モード１０３で学習値の保存などを行うシャットダウン処理を実施し、完了すると車両システム１が終了する。
【００３５】
以降より、実施の形態１に関わる動作フローの詳細を説明する。
図７は通常制御プログラム１１１の動作フローである。以下、図７の各ステップについて説明する。
【００３６】
（図７：ステップ１１１１）
通常制御プログラム１１１は入力値１５０１に基づいて内部状態を示す状態値１５０２を更新し、制御計画値１５０３を出力する。
【００３７】
図８は制御バックアップデータ抽出部１１２の動作フローである。以下、図８の各ステップについて説明する。
【００３８】
（図８：ステップ１１２１）
制御バックアップデータ抽出部１１２は通常制御プログラム１１１の内部状態を示す状態値１５０２を読み出し、状態値１５０４を出力する。状態値１５０２と状態値１５０４は同値であっても良いし、特定の規則に則って変換された異なる値であっても良い。
【００３９】
図９は制御バックアップデータ保存部１２１の動作フローである。以下、図９の各ステップについて説明する。
【００４０】
（図９：ステップ１２１１）
制御バックアップデータ保存部１２１は受信した通常制御プログラム１１１の状態値１５０４を制御リカバリバックアップ１６２に保存する。
【００４１】
（図９：ステップ１２１２）
制御バックアップデータ保存部１２１は受信した入力値１５０１を制御リカバリバックアップ１６２に時系列に保存する。
【００４２】
（図９：ステップ１２１３）
制御バックアップデータ保存部１２１は受信した通常制御プログラム１１１の制御計画値１５０３を制御計画値バックアップ１６１に時系列に保存する。
【００４３】
図１０は故障検知部１２２の動作フローである。以下、図１０の各ステップについて説明する。
【００４４】
（図１０：ステップ１２２１）
故障検知部１２２は通常制御プログラム１１１に故障が発生したか否かを判定する。故障と判定した場合にはステップ１２２２に進み、それ以外の場合には処理を終了する。
【００４５】
（図１０：ステップ１２２２）
故障検知部１２２は状態をリカバリモード１０２２に遷移させる。またユーザに通知することを想定しているが、これに限らない。
【００４６】
（図１０：ステップ１２２３）
故障検知部１２２は現在時刻を検知時刻１５１３として保存する。
【００４７】
（図１０：ステップ１２２４）
故障検知部１２２は制御プログラム高速起動部１２３を呼び出す。
【００４８】
（図１０：ステップ１２２５）
故障検知部１２２は再構成検証部を呼び出す。
【００４９】
図１１は制御プログラム高速起動部１２３の動作フローである。以下、図１１の各ステップについて説明する。
【００５０】
（図１１：ステップ１２３１）
制御プログラム高速起動部１２３は制御リカバリバックアップ１６２から状態値１０６を読み出し、バックアップ制御プログラム１２４に設定する。
【００５１】
（図１１：ステップ１２３２）
制御プログラム高速起動部１２３は使用していない時系列データがあるか否かを判定する。時系列データとは時系列順に保存した状態値１５０６と入力値１５０７、あるいは入力値１５０７のみである。使用していない時系列データがある場合にはステップ１２３３に進み、ない場合には処理を終了する。
【００５２】
（図１１：ステップ１２３３）
制御プログラム高速起動部１２３は制御リカバリバックアップ１６２から最も古い入力値を読み出し、それを入力としてバックアップ制御プログラムを実行する。
【００５３】
図１２はバックアップ制御プログラム１２４の動作フローである。以下、図１２の各ステップについて説明する。
【００５４】
（図１２：ステップ１２４１）
バックアップ制御プログラム１２４は入力値１５０９に基づいてプログラム内部の状態値を更新し、制御計画値１５１０を出力する。出力とは他のプログラムからの参照可能な状態になることを示す。例えばメモリへの保存などがある。
【００５５】
図１３は代理出力部１２５の動作フローである。以下、図１３の各ステップについて説明する。
【００５６】
（図１３：ステップ１２５１）
代理出力部１２５は制御計画値バックアップ１６１から制御計画値１５０５を読み出し、状況に基づいて制御計画値を出力する。状況とは、例えば、故障検知からの計画時間を示すがこれに限らない。例えば、入力値１５０１から車両システムに対する情報、あるいは外界の情報を得ることで、それに基づいて制御計画値を出力してもよい。
【００５７】
図１４は再構成検証部１２６の動作フローである。以下、図１４の各ステップについて説明する。
【００５８】
（図１４：ステップ１２６１）
再構成検証部１２６は検知時刻１５１３からの経過時間が閾値を超えたか否かを判定する。超えている場合にはステップ１２６８へ進み、超えていない場合にはステップ１２６２へ進む。
【００５９】
（図１４：ステップ１２６２）
再構成検証部１２６は代理出力部１２５の制御計画値１５１１とバックアップ制御プログラム１２４の制御計画値１５１０を比較する。
【００６０】
（図１４：ステップ１２６３）
比較結果が閾値以内に収まる場合にはステップ１２６４へ進み、収まらない場合には１２６７へ進む。
【００６１】
（図１４：ステップ１２６４）
再構成検証部１２６はバックアップ制御プログラム１２４の制御計画値１５１０を制御計画値１５１２として出力する。
【００６２】
（図１４：ステップ１２６５）
再構成検証部１２６は縮退モード１０２３に遷移する。またユーザにモード変更を通知することを想定しているがこれに限らない。
【００６３】
（図１４：ステップ１２６６）
再構成検証部１２６はバックアップ制御プログラム１２４の周期起動設定を行う。
【００６４】
（図１４：ステップ１２６７）
再構成検証部１２６は代理出力部１２５の制御計画値１５１１を制御計画値１５１２として出力する。
【００６５】
（図１４：ステップ１２６８）
再構成検証部１２６はフェールセーフモード１０２４に遷移する。またユーザにモード変更を通知することを想定しているがこれに限らない。
【００６６】
（図１４：ステップ１２６９）
再構成検証部１２６はフェールセーフプログラム１２８を起動し、周期的に起動するように設定を行う。
【００６７】
図１５は運動制御プログラム１２７の動作フローである。以下、図１５の各ステップについて説明する。
【００６８】
（図１５：ステップ１２７１）
運動制御プログラム１２７は制御計画値１５１２に基づいた制御指令値１５１４を出力する。制御指令値１５１４はネットワークに送信されることを想定しているが、これに限らない。例えば他のプログラムが参照できるようにメモリに保存することも考えられる。
【００６９】
図１６はフェールセーフプログラム１２８の動作フローである。以下、図１６の各ステップについて説明する。
【００７０】
（図１６：ステップ１２８１）
フェールセーフプログラム１２８は制御計画値バックアップ１６１の制御計画値１５０５に基づいて制御計画値１５１０を出力する。制御計画値に速度指令などの情報が入っている場合には原則そのままの速度指令を出力しない。例えば、時間が経過するに応じて徐々に減速するように変更した制御計画値１５１０を出力する。
【００７１】
図１７は走行軌道を例にした制御計画値１５１０と制御計画値１５１１の比較である。実線の矢印は制御計画値バックアップ１６１の制御計画値１５１１を示し、点線の矢印はバックアップ制御プログラム１２４の制御計画値１５１０を示す。車両システムの現在地を示す「自車」が道路の走行ポイント1-1〜1-7を通るように制御計画値１５１１に保存されている。1-7に到着するまでがタイムアウト時間とすると、シーン１では、1-3〜1-7を通るように制御計画値１５１０が計算されているため1-3の時点で制御計画値が一致し、縮退モード１０２３に遷移する。しかし、シーン２の場合には2-3〜2-7を通るように制御計画値１５１０が計算されているため、リカバリが成功せず、タイムアウトの時点でフェールセーフモード１０２４に遷移する。
【００７２】
図１８は縮退モード１０２３とフェールセーフモード１０２４の制御指令値１５１４の例である。シーン１は故障検知後、再構成デッドライン１５１５ΔＴ以内に縮退モード１０２３に遷移できたケースの例である。実施形態１では再構成デッドライン１５１５は故障検知時刻１５１３からの経過時間で定義しているがこれに限らない。例えば、故障発生時刻からの経過時間と定義しても良い。
【００７３】
この例の縮退モード１０２３では、故障後にバックアップ制御プログラム１２４に制御を引き継ぐことができたため、通常制御プログラム１１１の制御指令値８０ｋｍと同様の８０ｋｍをバックアップ制御プログラム１２４が出している。
【００７４】
一方、シーン２は、再構成デッドラインΔＴ以内に縮退モード１０２３に遷移できなかったケースの例である。再構成デッドラインΔＴを超過するとフェールセーフモード１０２４に遷移する。フェールセーフモード１０２３ではフェールセーフプログラム１２８が速度を減速させるように制御を実施し、徐々に車が停止するように制御指令値１５１４を出力する。
【００７５】
本実施の形態１では、ＥＣＵ−Ａが故障した場合を取り上げているが、これに限らない。例えば、ＥＣＵ−ＡとＥＣＵ−Ｂの間のネットワークバスが故障し、ＥＣＵ−ＢがＥＣＵ−Ａからの制御計画値を受信できず、故障検知部がＥＣＵ−Ａを故障と判定する場合が考えられる。
【００７６】
本実施の形態１では、ＥＣＵ−Ａ故障後にすぐにＥＣＵ−Ｂでリカバリを実行しているがこれに限らない。例えば、ＥＣＵ−Ａ内でリセットを実行し、その回復を試みても良い。リセットにより回復しない場合にはソフトウェアの一時故障ではなく、永久故障と判定し、ＥＣＵ−Ｂでバックアップ制御プログラムを起動させてよい。
【００７７】
本実施の形態１では、フェールセーフプログラムは、再構成デッドライン超過後に起動する構成だがこれに限らない。例えば、常に実行されていても良い。その場合には、フェールセーフプログラムの制御指示値か他の通常制御プログラムの制御値指示値を比較することが考えられる。
【００７８】
本実施の形態１では、フェールセーフプログラムは、制御指令値を出力することを想定しているがこれに限らない。例えば、ユーザに通知するための画面出力であっても良い。
【００７９】
本実施の形態１によると、ＥＣＵ−Ｂ１２にＥＣＵ−Ａ１１の制御計画値１５０３が設計値通りに到着しない場合、ＥＣＵ−Ｂ１２が機能の故障と判定し、制御バックアッププログラムに切り替えるためのフェールオペレーショナル動作を実施できる。正常動作し続ける場合は、制御バックアッププログラムを実行する必要がないため、ＣＰＵリソースやＲＡＭリソースを節約できる。
【００８０】
本実施の形態１によると、初回の正常な制御計画値を出力するために受信した入力値１５０９を用いて複数回実行する必要があるバックアップ制御プログラム１２４において、入力値１５０９を周期的に受信するＥＣＵ−Ｂ１２であったとしても、制御プログラム高速起動部１２３により、必要な実行回数×受信周期未満の時間で、バックアップ制御プログラム１２４の初回の正常な制御計画値を出力することを可能にできる。必要な実行回数はバックアップ制御プログラム１２４の運動方程式における微分回数以上を想定しているがこれに限らない。
【００８１】
本実施の形態１によると、故障検知部１２２が検知時刻１５１３を測定することにより、再構成検証１２６がリカバリのタイムアウト（再構成のデッドラインΔＴ）を判定できる。
【００８２】
本実施の形態１によると、バックアップ制御プログラム１２４が初期化されている間、代理出力部１２５が故障前までに生成された制御計画値を通常制御プログラムの代理で出力する。前記制御計画値は故障前までに生成されたため、妥当な値であり、制御システムが暴走することがない。
【００８３】
本実施の形態１によると、再構成検証部１２６が再構成デッドラインΔＴ以内にバックアップ制御プログラムのリカバリが成功したか否かを、通常制御プログラムの制御計画値との比較結果で行っているが、これに限らない。例えば、再構成検証部１２６はバックアップ制御プログラムの制御計画値の妥当性を他のセンサから得られた外界情報と照らし合わせて行っても良い。
【００８４】
本実施の形態１では、通常制御プログラム、バックアップ制御プログラム、フェールセーフプログラムの出力が制御計画値であるが、これに限らない。例えば制御指令値であってもよい。
【００８５】
本実施の形態１では、通常制御プログラムが故障時にバックアップ制御プログラムに切り替えているがこれに限らない。例えば、通常制御プログラムを２種類設けた車両システムにおいて、一方の通常制御プログラムが故障時に、他方に切り替えてもよい。同様に、通常制御プログラムが故障時に、更に機能レベルが高い制御プログラムに切り替えてもよい。
【００８６】
本実施の形態１ではＥＣＵ−ＡとＥＣＵ−Ｂ間の通信はバス型のネットワーク１３を介して行われたが、これに限らない。例えば、ＷｉＦｉのような公知の無線通信であっても良し、共有メモリであってもよい。
【００８７】
本実施の形態１ではコントローラの例としてＥＣＵを例題としたがこれに限らない。ファクトリーオートメーションで用いるコントローラでも良いし、モバイル端末であってもよい。
【００８８】
本実施の形態１ではＥＣＵ−Ａ１１が故障時に他のＥＣＵであるＥＣＵ−Ｂ１２で制御バックアッププログラムを起動させているがこれに限らない。例えば故障要因が通常制御プログラムの不具合である場合、ＥＣＵ−Ａ１１にバックアップ制御プログラムなどのＥＣＵ−Ｂ１２のソフトウェア、データをすべて配置することで、ＥＣＵ−Ａ１１でバックアップ制御プログラムによるリカバリを実施してもよい。
【００８９】
本実施の形態１では通常制御プログラム１１１、バックアップ制御プログラム１２４、フェールセーフプログラム１２８をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で実行することを想定しているが、これに限らない。例えば、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を利用しても良いし、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ―Ｐｕｒｐｏｓｅ  Ｃｏｍｐｕｔｉｎｇ  Ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）を利用しても良い。
【００９０】
本実施の形態１ではフェールセーフプログラムを故障検知後に起動しているがこれに限らない。例えば、フェールセーフプログラムを通常制御プログラムと同様に常時起動していても良い。
【００９１】
本実施の形態１では制御リカバリバックアップに格納した入力値を時系列順にバックアップ制御プログラムに入力して実行したのちに、再構成検証部を実行していたがこれに限らない。例えば、時系列データでバックアップ制御プログラムを更新するたびに逐次再構成検証部を実行しても良い。
【００９２】
本実施の形態１では複数のＥＣＵを例としたがこれに限らない。例えば、マルチコアシステムにおいて、ＥＣＵ−Ａを一方のコア、ＥＣＵ−Ｂを他方のコアとしても良い。
【００９３】
本実施の形態１では再構成検証部１２６が故障検知時刻からの計画時間が閾値を超えた際にすぐにフェールセーフモードに遷移するが、これに限らない。例えば、現在の車両の状態がリカバリに適さない場合には、それが終わるまで待った後にフェールセーフモードに遷移してもよい。
【００９４】
＜実施の形態２＞
図１９は、本発明の実施の形態２に係る車両システム２の構成図である。本システムにはＥＣＵ−Ａ２１、ＥＣＵ−Ｂ２２、ＥＣＵ−Ｃ２３、ネットワークバス２４を備える。実施の形態１のＥＣＵＢ１２のモジュールを、ＥＣＵ−Ｂ２２とＥＣＵ−Ｃ２３に分割した構成となっている。
【００９５】
図２０は実施の形態２に係る通常走行モード１０２１時の動作フローである。ＥＣＵ−Ａ２１は図２で述べたＥＣＵ−Ａ１１と同様であり、ＥＣＵ−Ｂ２２とＥＣＵ−Ｃ２３は図２で述べたＥＣＵ−Ｂ１２と制御バックアップデータ保存部２２１が制御バックアップデータ保存部１２１と入れ替わっているが、他は同様である。
【００９６】
図２１は実施の形態２に係るリカバリモード１０２２時の動作フローである。ＥＣＵ−Ｂ２２は制御バックアップデータ保存部２２１、故障検知部２２５、制御プログラム高速起動部２２４、バックアップ制御プログラム１２４を備え、ＥＣＵ−Ｃ２３は故障検知部２２５、代理出力部１２５、再構成検証部１２６、運動制御プログラム１２７を備え、ＥＣＵ−Ａ２１は故障している。
【００９７】
このようにバックアップ制御プログラム１２４と代理出力部１２５を異なるＥＣＵで実行することで、バックアップ制御プログラムに切り替える際にリセットを行うことが可能になり、オペレーティングシステムの構成を変更することが容易になる。
【００９８】
図２２は実施の形態２に係る縮退モード１０２３時の動作フローである。ＥＣＵ−Ｂ２２はバックアップ制御プログラム１２４を備え、ＥＣＵ−Ｃ２３は再構成検証部１２６、運動制御プログラム１２７を備え、ＥＣＵ−Ａ２１は故障している。
【００９９】
図２３は実施の形態２に係るフェールセーフモード１０２４時の動作フローである。ＥＣＵ−Ｃ２３はフェールセーフプログラム１２８、再構成検証部１２６、運動制御プログラム１２７を備え、ＥＣＵ−Ａ２１は故障し、ＥＣＵ−Ｂ２２はリカバリのタイムアウトと状態となっている。
【０１００】
図２４は制御バックアップデータ保存部２２１の動作フローである。以下、図２４の各ステップについて説明する。
【０１０１】
（図２４：ステップ２２１１）
制御バックアップデータ保存部２２１は現在のシステム状態が通常走行状態であるかを確認する。通常走行状態である場合にはステップ２２１２に進み、それ以外である場合にはステップ２２１３に進む。
【０１０２】
（図２４：ステップ２２１２）
制御バックアップデータ保存部２２１は受信した通常制御プログラム１１１の状態値１５０４を制御リカバリバックアップ１６２に保存する。
【０１０３】
（図２４：ステップ２２１３）
制御バックアップデータ保存部２２１は受信した入力値１５０１を入力値プール２２２に時系列に保存する。
【０１０４】
（図２４：ステップ２２１４）
制御バックアップデータ保存部２２１は受信した入力値１５０１を制御リカバリバックアップ１６２に時系列に保存する。
【０１０５】
（図２４：ステップ２２１５）
制御バックアップデータ保存部２２１は受信した通常制御プログラム１１１の制御計画値１５０３を制御計画値バックアップ１６１に時系列に保存する。
【０１０６】
図２５は故障検知部２２５の動作フローである。以下、図２５の各ステップについて説明する。
【０１０７】
（図２５：ステップ２２５１）
故障検知部２２５は通常制御プログラム１１１に故障が発生したか否かを判定する。故障と判定した場合にはステップ２２５２に進み、それ以外の場合には処理を終了する。
【０１０８】
（図２５：ステップ２２５２）
故障検知部２２５は状態をリカバリモード１０２２に遷移させる。またユーザに通知することを想定しているが、これに限らない。
【０１０９】
（図２５：ステップ２２５３）
故障検知部２２５は故障要因対応アクション（ＥＣＵ−Ｂ２２の場合は２２３、ＥＣＵ−Ｃ２３の場合は２３１）のアクション指示（ＥＣＵ−Ｂ２２の場合は２２０３、ＥＣＵ−Ｃ２３の場合は２３０１）が機能再構成であるか否かを確認する。機能再構成である場合にはステップ２２５４に進み、それ以外の場合にはステップ２２５５に進む。
【０１１０】
（図２５：ステップ２２５４）
故障検知部２２５は制御プログラム高速起動部１２３を呼び出す。
【０１１１】
（図２５：ステップ２２５５）
故障検知部２２５は現在時刻を検知時刻１５１３として保存する。現在時刻はハードウェアタイマを想定しているがこれに限らない。
【０１１２】
（図２５：ステップ２２５６）
故障検知部２２５は代理出力部を周期的に実行されるように起動する。
【０１１３】
（図２５：ステップ２２５７）
故障検知部２２５は再構成検証部１２６を周期的に実行されるように起動する。
【０１１４】
図２６は制御プログラム高速起動部２２４の動作フローである。以下、図２６の各ステップについて説明する。
【０１１５】
（図２６：ステップ２２４１）
制御プログラム高速起動部２２４は制御リカバリバックアップ１６２から状態値１０６を読み出し、バックアップ制御プログラム１２４に設定する。
【０１１６】
（図２６：ステップ２２４２）
制御プログラム高速起動部２２４は制御リカバリバックアップ１６２に使用していない時系列データがあるか否かを判定する。時系列データとは時系列順に保存した状態値１５０６と入力値１５０７、あるいは入力値１５０７のみである。使用していない時系列データがある場合にはステップ２２４３に進み、ない場合にはステップ２２４４に進む。
【０１１７】
（図２６：ステップ２２４３）
制御プログラム高速起動部２２４は制御リカバリバックアップ１６２から最も古い入力値を読み出し、それを入力としてバックアップ制御プログラムを実行する。
【０１１８】
（図２６：ステップ２２４４）
制御プログラム高速起動部２２４は入力値プール２２２に使用していない時系列データがあるか否かを判定する。使用していない時系列データがある場合にはステップ２２４５に進み、ない場合には処理を終了する。
【０１１９】
（図２６：ステップ２２４５）
制御プログラム高速起動部２２４は入力値プール２２２から最も古い入力値を読み出し、それを入力としてバックアップ制御プログラムを実行する。
【０１２０】
実施の形態２では代理出力部や再構成検証部は周期に実行されることを想定しているがこれに限らない。例えば、一度だけ代理出力部と再構成検証部を実行しても良いし、縮退モード時やフェールセーフモード時に代理出力部を停止させてもよい。
【０１２１】
実施の形態２によると、入力値プールによりリカバリモード時に新たに受信した入力値に対しても対応できるため、制御の安定性が向上する。
【０１２２】
実施の形態２によると、ＥＣＵ−Ｂ２２でリカバリのためにリセットを行ったとしても、ＥＣＵ−Ｃ２３の代理出力部の実行を阻害しないため、制御の安定性が向上する。
【０１２３】
バックアップ制御プログラムの出力は、制御リカバリバックアップと入力値プールの時系列データをすべて使用した後に初めて行っても良い。これによりネットワークの通信負荷を低減することが可能になる。またバックアップ制御プログラムが最も安定した状態となるため、安全性が向上する。一方、リアルタイム性を追求する場合には、時系列データがすべて使用するまで待たずに、中間値などを出力し、再構成が成功した場合には縮退モードにすぐに切り替える設計としても良い。
【０１２４】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形形態が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１２５】
実施の形態１、形態２ともにバックアップ制御プログラムと制御リカバリバックアップを同じＥＣＵに配置しているが、これに限らない。例えば、制御リカバリバックアップをバックアップ制御プログラムと異なるＥＣＵに配置し、リカバリモード時に制御リカバリバックアップの状態値と入力値をネットワーク経由で受信し、制御プログラム高速起動部でバックアップ制御プログラムを実行する形態としてもよい。
【符号の説明】
【０１２６】
１１  ＥＣＵ−Ａ（コントローラ部）、１２  ＥＣＵ−Ｂ（コントローラ部）、１１２  制御バックアップデータ抽出部、１２１  制御バックアップデータ保存部、１２３制御プログラム高速起動部、１２５  代理出力部
【図１】
2018229930.tif 000003
【図２】
2018229930.tif 000004
【図３】
2018229930.tif 000005
【図４】
2018229930.tif 000006
【図５】
2018229930.tif 000007
【図６】
2018229930.tif 000008
【図７】
2018229930.tif 000009
【図８】
2018229930.tif 000010
【図９】
2018229930.tif 000011
【図１０】
2018229930.tif 000012
【図１１】
2018229930.tif 000013
【図１２】
2018229930.tif 000014
【図１３】
2018229930.tif 000015
【図１４】
2018229930.tif 000016
【図１５】
2018229930.tif 000017
【図１６】
2018229930.tif 000018
【図１７】
2018229930.tif 000019
【図１８】
2018229930.tif 000020
【図１９】
2018229930.tif 000021
【図２０】
2018229930.tif 000022
【図２１】
2018229930.tif 000023
【図２２】
2018229930.tif 000024
【図２３】
2018229930.tif 000025
【図２４】
2018229930.tif 000026
【図２５】
2018229930.tif 000027
【図２６】
2018229930.tif 000028
【国際調査報告】
2018229930.tif 000029
2018229930.tif 000030
2018229930.tif 000031