(57)【要約】【課題】ソフトウェア処理単位の中規模な同期ずれの補正する技術を提供する。【解決手段】２つのシステムが互いの動作状況を監視しながら二重化運転を行う車両制御装置であって、前記２つのシステムそれぞれに、一定周期で更新されるカウンタと、該カウンタ毎にソフトウェア処理を割り当て、予め設定されたカウンタ数までを１周期として実行されるソフトウェア構成とし、前記２つのシステム間の前記カウンタのずれ量を算出する手段と、前記カウンタのずれが発生した場合は、予め割り当てられたソフトウェア処理をスキップあるいはリトライすることで同期ずれの補正を行う手段と、を備える。【選択図】図１
2019001292.tif 000002
【特許請求の範囲】
【請求項１】
２つのシステムが互いの動作状況を監視しながら二重化運転を行う車両制御装置であって、
前記２つのシステムそれぞれに、一定周期で更新されるカウンタと、該カウンタ毎にソフトウェア処理を割り当て、予め設定されたカウンタ数までを１周期として実行されるソフトウェア構成とし、前記２つのシステム間の前記カウンタのずれ量を算出する手段と、  前記カウンタのずれが発生した場合は、予め割り当てられたソフトウェア処理をスキップあるいはリトライすることで同期ずれの補正を行う手段と、
を備えることを特徴とする車両制御装置。
【請求項２】
請求項１において、予め割り当てられた前記ソフトウェア処理は複数選択可能であることを特徴とする車両制御装置。
【請求項３】
請求項２において、複数選択された前記ソフトウェア処理に優先順位を設け、ずれ量に応じて優先的にスキップあるいはリトライ処理を選択することを特徴とする車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は車両制御装置に関する。
【背景技術】
【０００２】
２つのシステムが互いの動作状況を監視しながら二重化運転を行う車両制御装置において、二重化されたシステムの同期をとる方法が採用されており、特許第４１５４６１０号公報（特許文献１）に記載の技術がある。この公報には、「二重化されたシステム間にてデータを送信する際の送信時刻をデータに付加し、この送信時刻から理想受信時刻を算出し、理想受信時刻と実際の受信時刻とからクロックずれ量を算出し、この算出結果に基づいてクロックを変更するシステムとしたため、二重化されたシステム間の同期を確実にとることができるとともに、二重化されたシステム間でカウンタがばらばらに動作している状態でも同期をとることができるフォールトトラレントコンピュータ及びその制御方法を提供することを目的とする」という記載がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４１５４６１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、小規模な同期ずれをクロック単位で高精度に補正することが可能であるが、本発明では、ソフトウェア処理単位の中規模な同期ずれを補正する技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、２つのシステムが互いの動作状況を監視しながら二重化運転を行う車両制御装置において、２つのシステムそれぞれに、一定周期で更新されるカウンタと、そのカウンタ毎にソフトウェア処理を割り当て、予め設定されたカウンタ数までを１周期として実行されるソフトウェア構成とし、２つのシステム間のカウンタのずれ量を算出する手段と、カウンタのずれが発生した場合は、予め割り当てられたソフトウェア処理をスキップあるいはリトライする手段を具備することで同期ずれの補正を行うことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ソフトウェア処理単位の中規模な同期ずれの補正が可能となる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００７】
【図１】同期ずれ補正の処理手順の実施の形態を示すフローチャート。
【図２】共有メモリを有する場合のシステム構成図。
【図３】共有メモリを有さない場合のシステム構成図。
【図４】システムのカウンタとソフトウェア処理の割り当てを示した図。
【図５】同期ずれの発生を示した図。
【図６】カウンタのずれ量、判定結果および処理内容を示した図。
【図７】実施例１に係るカウンタおよび内部フラグを示した図。
【図８】実施例１に係る補正動作（スキップ）を示した図。
【図９】実施例１に係る補正動作（リトライ）を示した図。
【図１０】実施例２に係るカウンタおよび内部フラグを示した図。
【図１１】実施例２に係る補正動作（スキップ１回）を示した図。
【図１２】実施例２に係る補正動作（リトライ１回）を示した図。
【図１３】実施例２に係る補正動作（スキップ２回）を示した図。
【図１４】実施例２に係る補正動作（リトライ２回）を示した図。
【発明を実施するための形態】
【０００８】
以下、実施例を用いて説明する。
【実施例１】
【０００９】
図１は、本発明による同期ずれ補正の処理手順の実施の形態を示すフローチャートである。
【００１０】
図２は、共有メモリを有する場合のシステム構成図を示した図である。
【００１１】
２つのシステムをそれぞれシステムＡ１０、システムＢ１１とした場合、各システムは共有データバス１２を介して共有メモリ１３にアクセスを行うことができる。共有メモリ１３には、システムＡのカウンタ値１４およびシステムＢのカウンタ値１５が格納されている。
【００１２】
図３は、共有メモリを有さない場合のシステム構成図を示した図である。
【００１３】
システムＡ２０のローカルメモリ２１内にはシステムＡのカウンタ値２２が格納されている。また、システムＢ２３のローカルメモリ２４内にはシステムＢのカウンタ値２５が格納されている。システムＡ２０とシステムＢ２３はＣＰＵ間通信２６で接続されており、それぞれのデータを送受信することができる。そのデータとして、システムＡのカウンタ値２２およびシステムＢのカウンタ値２５を含めることができる。
【００１４】
図４は、システムのカウンタ値とソフトウェア処理の割り当てを示した図である。
【００１５】
一定周期毎に更新されるカウンタ３０を備え、そのカウンタ毎にソフトウェア処理３１を割り当てるものとする。カウンタの「１」から「５」までを１周期とし、カウンタ値が「１」の場合は、ソフトウェア処理「１」、カウンタ値が「２」の場合は、ソフトウェア処理「２」のように、カウンタ値と同じソフトウェア処理番号を割り当てる。例えば、カウンタ値が１ｍｓｅｃで更新される場合、５ｍｓｅｃを１周期として順次実行されることになる。本実施例では説明を簡略化するために「１」から「５」までの小さいカウンタ値としているが、カウンタ値の範囲は特に制限されるものではなく、システムに応じて増減可能である。また、カウンタ値と同じソフトウェア処理番号を割り当てているが、それに限定されるものではない。またカウンタ値とソフトウェア処理が１対１に限定されるものでもない。
【００１６】
なお、以下の実施例の説明において、カウンタ値とソフトウェア処理番号は同一とし、ソフトウェア処理番号の記載は省略している。
【００１７】
図５は、同期ずれの発生を示した図である。
【００１８】
二重化されたシステムでは、同期処理を行い、同じタイミングでデータの相互監視を実施する必要があるが、システムに供給されるクロック信号を共通化できない場合やソフトウェア処理負荷の変動などによっては、同期ずれ（監視タイミングのずれ）が発生する場合がある。図５において、システムＡのカウンタ３２とシステムＢのカウンタ３３は、同じタイミングで更新されており、同期ずれは無い。ただし、クロック信号の周波数ずれ等により、システムＡのカウンタ３４とシステムＢのカウンタ３５のように同期ずれが発生する場合がある。
【００１９】
図６は、カウンタのずれ量と判定結果および処理内容を示した図である。
【００２０】
システムＡを自系、システムＢを他系とした場合（以下、本実施例では同様の記載とする。）、他系カウンタ４０は「１」から「５」までの値となる。他系カウンタ４０が「１」の場合、自系カウンタ「３」との差分４１は「−２」となり、判定結果４２は２回分先行となる。他系カウンタ４０が「２」の場合、自系カウンタとの差分４１は「−１」となり、判定結果４２は１回分先行となる。同様に、他系カウンタ４０が「４」の場合、差分４１は「＋１」となり、判定結果４２は１回分遅延、他系カウンタ４０が「５」の場合、差分４１は「＋２」判定結果４２は、２回分遅延となる。判定結果４２に応じて処理内容４３が決定される。なお、処理内容４３については、後述の実施例で説明する。
【００２１】
図７は、本実施例におけるカウンタおよび内部フラグを示した図である。
【００２２】
カウンタ５２の「１」から「５」に対し、「１」から「４」を必須処理５０とする。例えば、毎回実行しなければならないソフトウェア処理を割り当てる。一方、カウンタ「５」は選択処理５１に割り当て、スキップあるいはリトライ処理対象のソフトウェア処理とする。例えば、必ずしも毎回実行する必要はないソフトウェア処理を割り当てる。カウンタチェックタイミングフラグ５３は、他系のカウンタをチェックするタイミングを設定するものである。実施例ではカウンタが「３」の場合に、カウンタチェックタイミングフラグ５３を「１」に設定することで、他系のカウンタのチェックタイミングを設定しているが、このタイミングに限定するものではなく、必須処理５０のカウンタタイミングであれば任意に選択できる。また１回に限定せずに複数回実施することも可能である。補正フラグ５４は、スキップあるいはリトライ設定を行う。設定する値は、図６の処理内容４３により決定される。本実施例では、スキップの場合の設定値５５を 「＋１」、リトライの場合の設定値５６を「−１」としているが、ソフトウェアで識別できれば良く、この設定値に限定されるものではない。なお、本実施例１では、選択処理を１つにしているため、１周期内では１カウンタ分の補正となる。２カウンタ分のずれが発生している場合は、次の周期で１カウンタ分の補正を実施することになる。
【００２３】
図１のフローチャートに基づく動作は以下の通りである。
【００２４】
ステップ１００：一定周期で実行されるソフトウェア処理が開始する。
【００２５】
ステップ１０２：図７に示す補正フラグ５４の読み込みを行う。
【００２６】
ステップ１０４：補正フラグ５４にスキップ設定５５が設定されているかを判定する。ＹＥＳならばステップ１２４に移る。ＮＯならばステップ１０６に移る。
【００２７】
ステップ１０６：補正フラグ５４にリトライ設定５６が設定されているかを判定する。ＹＥＳならばステップ１２６に移る。ＮＯならばステップ１０８に移る。
【００２８】
ステップ１０８：カウンタ値に割り当てられたソフトウェア処理を実行する。
【００２９】
ステップ１１０：図７に示すカウンタチェックタイミングフラグ５３が設定されているかを判定する。ＹＥＳならばステップ１１２に移る。ＮＯならばステップ１２２に移る。
【００３０】
ステップ１１２：他系カウンタ値の読み込みを行う。図２に示す共有メモリを有するシステムである場合は、共有メモリ１２の情報を読み込む。図３に示す共有メモリを有するシステムである場合は、ＣＰＵ間通信２６を使用して、他系のカウンタ値を読み出す。
【００３１】
ステップ１１４：自系のカウンタ値と他系のカウンタ値が一致しているかを判定する。ＹＥＳならばステップ１２２に移る。ＮＯならばステップ１１６に移る。
【００３２】
ステップ１１６：自系のカウンタ値と他系のカウンタ値を比較し、他系のカウンタ値の方が大きい場合は自系が遅延していると判定し、ステップ１１８に移る。他系のカウンタ値の方が小さい場合は自系が先行していると判定し、ステップ１２０に移る。
【００３３】
ステップ１１８：図７に示す補正フラグ５４のスキップ設定５５を行う。
【００３４】
ステップ１２０：図７に示す補正フラグ５４のリトライ設定５６を行う。
【００３５】
ステップ１２２：カウンタ値の更新を行う。
【００３６】
ステップ１２４：図７に示す補正フラグ５４のスキップ設定５５をクリアする。具体的には、「＋１」を「０」に変更する。
【００３７】
ステップ１２６：カウンタ値に割り当てられたソフトウェア処理を実行する。この処理はリトライ処理となる。
【００３８】
ステップ１２８：図７に示す補正フラグ５４のリトライ設定５６をクリアする。具体的には、「−１」を「０」に変更する。
【００３９】
ステップ１３０：周期処理を終了する。
【００４０】
図８は、本実施例における補正動作（スキップ）を示した図である。
【００４１】
自系カウンタ６０が「３」のタイミングで他系カウンタ６１のカウンタ値をチェックする。他系カウンタ６１のカウンタ値が「４」であるため、自系カウンタ６０は１カウンタ分遅延している。本実施例によれば、自系のカウンタ「５」に割り当てられたソフトウェア処理がスキップされ、自系カウンタ６２の動作となり、他系タウンタ６１のタイミングと一致し同期ずれが補正される。
【００４２】
図９は、本実施例における補正動作（リトライ）を示した図である。
【００４３】
自系カウンタ６４が「３」のタイミングで他系カウンタ６５のカウンタ値をチェックする。他系カウンタ６５のカウンタ値が「２」であるため、自系カウンタ６４は１カウンタ分先行している。本実施例によれば、自系のカウンタ「５」に割り当てられたソフトウェア処理がリトライされ、自系カウンタ６６の動作となり、他系タウンタ６４のタイミングと一致し同期ずれが補正される。
【実施例２】
【００４４】
本実施例は、２カウンタ分の同期ずれを補正するためにカウンタおよび内部フラグの一部を変更するものである。
【００４５】
図１０は、本実施例におけるカウンタおよび内部フラグを示した図である。
【００４６】
カウンタ７２の「１」から「５」に対し、「１」から「３」を必須処理７０とする。また、カウンタ「４」および「５」を選択処理７１に割り当て、スキップあるいはリトライ処理対象のソフトウェア処理とする。カウンタチェックタイミングフラグ７３は、他系のカウンタをチェックするタイミングを設定する。
【００４７】
本実施例ではカウンタが「３」の場合に、他系のカウンタのチェックするタイミングに設定している。優先順位フラグ７４は、スキップ処理およびリトライ処理を実施するソフトウェア処理の優先順位を設定する。
【００４８】
本実施例では、カウンタ「４」に割り当てたソフトウェア処理の優先順位を高く設定（「１」）し、カウンタ「５」に割り当てたソフトウェア処理の優先順位を低く設定（「２」）とすることで、カウンタのずれが１カウンタ分である場合は、優先順位が高いカウンタ「４」に割り当てたソフトウェア処理が選択され実行される。
【００４９】
なお、カウンタのずれが２カウンタ分である場合は、２つのソフトウェア処理がスキップあるいはリトライされる。補正フラグ７５は、スキップあるいはリトライ設定を行う。設定する値は、図６の判定結果４２および処理内容４３により決定される。
【００５０】
スキップ（１回分）の場合、設定値７６に示すように優先順位の高いカウンタ「４」に 「＋１」、リトライ（１回分）の場合、設定値７７に示すように優先順位の高いカウンタ「４」に「−１」、スキップ（２回分）の場合は設定値７８に示すようにカウンタ「４」およびカウンタ「５」に 「＋１」、リトライ（２回分）の場合の設定値７９に示すように、カウンタ「４」およびカウンタ「５」に「−１」を設定している。
【００５１】
なお、本実施例では説明を簡略化するために選択処理を２つとし、優先順位を２つに分けているが、選択処理の数および優先順位設定は２つに制限されるものではなく、システムに応じて増減可能である。
実施例１とは異なるステップのみ、以下に示す。
【００５２】
ステップ１０２：図１０に示す補正フラグ７５の読み込みを行う。
【００５３】
ステップ１０４：補正フラグ７５にスキップ設定（１回）７６あるいはスキップ設定（２回）７８が設定されているかを判定する。ＹＥＳならばステップ１２４に移る。ＮＯならばステップ１０６に移る。
【００５４】
ステップ１０６：補正フラグ７５にリトライ設定（１回）７７あるいはリトライ設定（２回）７９が設定されているかを判定する。ＹＥＳならばステップ１２６に移る。ＮＯならばステップ１０８に移る。
【００５５】
ステップ１１０：図１０に示すカウンタチェックタイミングフラグ７３が設定されているかを判定する。ＹＥＳならばステップ１１２に移る。ＮＯならばステップ１２２に移る。
【００５６】
ステップ１１８：ステップ１１６のカウンタ値比較結果により、図１０に示す補正フラグ７５のスキップ設定（１回）７６あるいはスキップ設定（２回）７８を行う。
【００５７】
ステップ１２０：図１０に示す補正フラグ７５のリトライ設定（１回）７７あるいはリトライ設定（２回）７９を行う。
【００５８】
ステップ１２４：図１０に示す補正フラグ７５のスキップ設定７６あるいは７８をクリアする。
【００５９】
ステップ１２８：図１０に示す補正フラグ７５のリトライ設定７７あるいは７９をクリアする。
【００６０】
図１１は、本実施例における補正動作（スキップ１回）を示した図である。
【００６１】
自系カウンタ８０が「３」のタイミングで他系カウンタ８１のカウンタ値をチェックする。他系カウンタ６５のカウンタ値が「４」であるため、自系カウンタ８０は１カウンタ分遅延している。本実施例によれば、優先順位の高い自系のカウンタ「４」に割り当てられたソフトウェア処理がスキップされ、自系カウンタ８２の動作となり、他系タウンタ８１のタイミングと一致し同期ずれが補正される。
【００６２】
図１２は、本実施例における補正動作（リトライ１回）を示した図である。
【００６３】
自系カウンタ８４が「３」のタイミングで他系カウンタ８５のカウンタ値をチェックする。他系カウンタ８５のカウンタ値が「２」であるため、自系カウンタ８４は１カウンタ分先行している。本実施例によれば、自系のカウンタ「４」に割り当てられたソフトウェア処理がリトライされ、自系カウンタ８６の動作となり、他系タウンタ８４のタイミングと一致し同期ずれが補正される。
【００６４】
図１３は、本実施例における補正動作（スキップ２回）を示した図である。
【００６５】
自系カウンタ８８が「３」のタイミングで他系カウンタ８９のカウンタ値をチェックする。他系カウンタ８９のカウンタ値が「５」であるため、自系カウンタ８８は２カウンタ分遅延している。本実施例によれば、自系のカウンタ「４」および「５」に割り当てられた２つのソフトウェア処理がスキップされ、自系カウンタ９０の動作となり、他系タウンタ８９のタイミングと一致し同期ずれが補正される。
【００６６】
図１４は、本実施例における補正動作（リトライ２回）を示した図である。
【００６７】
自系カウンタ９２が「３」のタイミングで他系カウンタ９３のカウンタ値をチェックする。他系カウンタ９３のカウンタ値が「１」であるため、自系カウンタ９２は２カウンタ分先行している。本実施例によれば、他系カウンタ９３に対して、自系カウンタ９２が２カウンタ分先行している場合、自系のカウンタ「４」および「５」に割り当てられた２つのソフトウェア処理がリトライされ、自系カウンタ９４の動作となり、他系タウンタ９３のタイミングと一致し同期ずれが補正される。
【００６８】
上述の実施例１および実施例２では、システムＡを自系とし、自系カウンタを補正する例を記載したが、２つのシステムに同一のソフトウェアを実装し、２つのシステム双方で補正処理を行うことも可能である。その場合、スキップ処理とリトライ処理は相反する動作となるため、スキップ処理あるいはリトライ処理のいずれかのみ選択することで適用可能である。
【００６９】
本発明による車両制御装置によれば、ソフトウェア処理単位の中規模な同期ずれの補正が可能となる。スキップ処理による同期補正の場合、周期処理時間の超過を防止できるため、車両制御処理に求められるリアルタイム処理が可能となる。
【００７０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【００７１】
１０…システムＡ、１１…システムＢ、１２…共有メモリ、２６…ＣＰＵ間通信。
【図１】
2019001292.tif 000003
【図２】
2019001292.tif 000004
【図３】
2019001292.tif 000005
【図４】
2019001292.tif 000006
【図５】
2019001292.tif 000007
【図６】
2019001292.tif 000008
【図７】
2019001292.tif 000009
【図８】
2019001292.tif 000010
【図９】
2019001292.tif 000011
【図１０】
2019001292.tif 000012
【図１１】
2019001292.tif 000013
【図１２】
2019001292.tif 000014
【図１３】
2019001292.tif 000015
【図１４】
2019001292.tif 000016