Some content of this application is unavailable at the moment.
If this situation persists, please contact us atFeedback&Contact
1. (WO2018003560) ELECTRONIC CONTROL DEVICE
Document

明 細 書

発明の名称 電子制御装置

技術分野

0001  

背景技術

0002   0003  

先行技術文献

特許文献

0004  

発明の概要

発明が解決しようとする課題

0005   0006  

課題を解決するための手段

0007  

発明の効果

0008  

図面の簡単な説明

0009  

発明を実施するための形態

0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050  

符号の説明

0051  

請求の範囲

1   2   3   4   5   6   7   8  

図面

1   2   3   4   5  

明 細 書

発明の名称 : 電子制御装置

技術分野

[0001]
 本発明は、電子制御装置に関する。

背景技術

[0002]
 車載制御装置などの電子制御装置は、シングルプロセッサによって構成されているものもあるし、演算量や故障への対処などの理由からマルチプロセッサによって構成されているものもある。各プロセッサは、処理性能向上の要求に対して、消費電力を抑制するなどの理由により、複数のプロセッサコア(マルチコア)を備えている場合がある。
[0003]
 下記特許文献1は、マルチコアマイコンを用いた電子制御装置について記載している。
同文献においては、コア1の処理が出力したデータをコア2の入力とする構成を採用しており、コア1は処理完了するとコア2に対してその旨を通知する。同文献においては、この通知が誤りである場合に対処するため、コア1が出力する前回値と共有メモリに置かれた最新値とを比較し、両者が異なる場合など特定の条件を満たしたときのみ、コア2の処理を起動する。

先行技術文献

特許文献

[0004]
特許文献1 : 特開2012-108786号公報

発明の概要

発明が解決しようとする課題

[0005]
 上記特許文献1記載の技術のように、他の演算装置が処理完了してから次の演算装置が処理開始する電子制御装置においては、前段の演算装置がエラーを出力すると後段の演算装置はそのエラーにしたがって処理を実行すると考えられる。このとき、後段の演算装置が前段の演算装置のエラーを検出することが遅れると、後段の演算装置がそのエラーに対して対処することが遅れ、さらに後段の演算装置においてもその遅れが蓄積して全体フローに支障を来す可能性がある。
[0006]
 本発明は、上記のような課題に鑑みてなされたものであり、複数の演算装置を備える電子制御装置において、制御処理の過程で生じるエラー検出の遅れが蓄積することを抑制することを目的とする。

課題を解決するための手段

[0007]
 本発明に係る電子制御装置は、第1~第3演算装置を備える。第3演算装置監視部は、第2演算装置監視部を起動する。第2演算装置監視部は、第3演算装置監視部によって起動されると、第1演算装置がエラーを出力したか否かを確認してその結果を第3演算装置に対して通知する。

発明の効果

[0008]
 本発明に係る電子制御装置によれば、第3演算装置が第1演算装置において生じたエラーを検出する際の検出遅れを抑制することができる。

図面の簡単な説明

[0009]
[図1] 実施形態1に係る電子制御装置101の構成図である。
[図2] プロセッサコア121~123間の処理とデータの流れを示す図である。
[図3] 第2確認部223の動作を説明するフローチャートである。
[図4] プロセッサコア121において障害が発生した場合の各部動作を説明するタイムチャートである。
[図5] 実施形態1で説明した機能を構成するためのソフトウェアアーキテクチャの例である。

発明を実施するための形態

[0010]
 <実施の形態1>
図1は、本発明の実施形態1に係る電子制御装置101の構成図である。電子制御装置101は、センサ102/アクチュエータ103と接続されている。電子制御装置101は、センサ102から得られる情報を入力として制御演算を実施し、アクチュエータ103に対して制御信号を出力する。アクチュエータ103は例えばブラシレスDCモータであり、センサ102は例えばホール素子である。
[0011]
 電子制御装置101は、マイクロコンピュータ110、入力回路111、出力回路112、電源回路113を備える。入力回路111は、センサ102から検出信号を受け取ってマイクロコンピュータ110へ引き渡す。出力回路112は、マイクロコンピュータ110からの制御信号をアクチュエータ103に対して出力する。電源回路113は、電子制御装置101が使用する電力を制御する。
[0012]
 マイクロコンピュータ110は、3つのプロセッサコア(PC)121~123、IO130、RAM(Random Access Memory)140、ROM(Read Only Memory)150、不揮発メモリ160を備える。これら要素はバスで接続されている。
[0013]
 図2は、プロセッサコア121~123間の処理とデータの流れを示す図である。プロセッサコア121~123が備える後述の各機能部は、プログラムモジュールとして実装することができる。各プロセッサコアはROM150からプログラムを読み出し、RAM140を一時記憶としてこれらプログラムを実行する。共有メモリ201~203は、例えばRAM140上における各プロセッサコアが共有アクセスする記憶領域として構成することができる。共有メモリ201~203が格納する各フラグの初期値は「無効」である。
[0014]
 プロセッサコア121は、第1制御部210、第1通知部211、第1監視部214、第1異常処理部215を備える。第1制御部210は、通常時における制御演算を実施する。第1通知部211は、第1制御部210の制御処理が完了した旨をプロセッサコア122に対して通知する。第1監視部214は、第3制御部230(後述)の制御処理が完了したか否かを監視する。第1異常処理部215は、異常処理を実施する。
[0015]
 プロセッサコア122は、第2制御部220、第2通知部221、第2被通知部222、第2確認部223、第2監視部224、第2異常処理部225を備える。第2制御部220は、通常時における制御演算を実施する。第2通知部221は、第2制御部220の制御処理が完了した旨をプロセッサコア123に対して通知する。第2被通知部222は、第1制御部210から制御処理が完了した旨の通知を受け取る。第2確認部223は、第1制御部210の制御処理が完了したか否か、およびプロセッサコア121がエラーを出力したか否かを確認する。第2監視部224は、第1制御部210の制御処理が所定期間内に完了したか否かを監視する。第2異常処理部225は、異常処理を実施する。
[0016]
 プロセッサコア123は、第3制御部230、第3被通知部232、第3確認部233、第3監視部234、第3異常処理部235を備える。第3制御部230は、通常時における制御演算を実施する。第3被通知部232は、第2制御部220から制御処理が完了した旨の通知を受け取る。第3確認部233は、第2制御部220の制御処理が完了したか否か、およびプロセッサコア122がエラーを出力したか否かを確認する。第3監視部234は、第2制御部220の制御処理が所定期間内に完了したか否かを監視する。第3異常処理部235は、異常処理を実施する。
[0017]
 <実施の形態1:正常時の処理フロー>
プロセッサコア121は、自身が備えるタイマにしたがって、第1制御部210を周期的に起動する。第1制御部210は、センサ102から受け取った信号を用いて制御演算を実施し、その結果を共有メモリ201に第1データとして出力する。第1制御部210は制御処理を完了すると、第1通知部211を起動する。
[0018]
 第1通知部211は、共有メモリ201上の第1完了フラグに「有効」を示す値を書き込み、第2被通知部222に対して制御処理完了を通知する。この通知の方法としては、スピンロックやセマフォなどの同期機構や割り込みを用いることができる。後述するその他通知部についても同様である。第2被通知部222は、第1通知部211から通知を受け取ると、起動元が第2被通知部222であることを示すデータとともに、第2確認部223を起動する。
[0019]
 第2確認部223は、第1完了フラグを読み取る。第1完了フラグが「有効」である(すなわち第1制御部210の制御処理が完了している)場合は、第2制御部220に第1データを引き渡して起動する。第2確認部223は、第1完了フラグを読み取った直後に、その値を「無効」に書き換える。
[0020]
 第2制御部220は、第1データを入力として制御処理を実施し、その結果を共有メモリ202に第2データとして出力する。第2制御部220は制御処理を完了すると、第2通知部221を起動する。
[0021]
 第2通知部221は、共有メモリ202上の第2完了フラグに「有効」を示す値を書き込み、第3被通知部232に対して制御処理完了を通知する。第3被通知部232は、第2通知部221から通知を受け取ると、起動元が第3被通知部232であることを示すデータとともに、第3確認部233を起動する。
[0022]
 第3確認部233は、第2完了フラグを読み取る。第2完了フラグが「有効」である場合は、第3制御部230に第2データを引き渡して起動する。第3確認部233は、第2完了フラグを読み取った直後に、その値を「無効」に書き換える。
[0023]
 第3制御部230は、第2データを入力として制御処理を実施し、その結果得られる制御信号をアクチュエータ103に対して出力する。第3制御部230は、制御処理を完了すると、共有メモリ203上の第3完了フラグを「有効」に書き換える。
[0024]
 <実施の形態1:異常監視の処理フロー>
第1制御部210は、センサ102からの信号が範囲外であるなどの異常を検出した場合は、共有メモリ201上の第1エラーフラグを「有効」に書き換える。
[0025]
 プロセッサコア122は、第2監視部224を周期的に起動する。第2監視部224の起動周期は、例えば第1制御部210が処理完了すると想定される周期に合わせてセットしておく。第2監視部224は、起動元が第2監視部224であることを示すデータとともに、第2確認部223を起動する。第2確認部223は、第1完了フラグが「無効」である(すなわち第1制御部210の制御処理が未完了である)、または第1エラーフラグが「有効」である場合は、第2異常処理部225を起動する。第2異常処理部225は、共有メモリ202上の第2エラーフラグを「有効」に書き換える。第2確認部223は、第1エラーフラグを読み取った直後に、その値を「無効」に書き換える。
[0026]
 プロセッサコア123は、第3監視部234を周期的に起動する。第3監視部234の起動周期は、例えば第2制御部220が処理完了すると想定される周期に合わせてセットしておく。第3監視部234は、起動元が第3監視部234であることを示すデータとともに、第3確認部233を起動する。第3確認部233は、第2完了フラグが「無効」である(すなわち第2制御部220の制御処理が未完了である)、または第2エラーフラグが「有効」である場合は、第3異常処理部235を起動する。第3確認部233は、第2エラーフラグを読み取った直後に、その値を「無効」に書き換える。
[0027]
 第3異常処理部235は、第3異常処理部235が異常を検出したことを示す情報を不揮発メモリ160に記録した後、アクチュエータ103を停止させた上で、プロセッサコア123をシャットダウンする。第2異常処理部225は、第2異常処理部225が異常を検出したことを示す情報を不揮発メモリ160に記録した後、一定時間待機してから、プロセッサコア122をシャットダウンする。
[0028]
 第3監視部234は、第3確認部233を起動する前に第2監視部224を起動する。
この起動を実施するためには、例えば割り込みなどを利用することができる。第3監視部234は、第2監視部224を起動した後、第2確認部223の処理が終わるのを待つために一定時間待機してから、第3確認部233を介して第2完了フラグと第2エラーフラグを読み取る。第2確認部223の処理は各フラグを読み取るだけなので、第3監視部234の待機時間は小さい。第3監視部234が一定時間待機することに代えて、第2確認部223が処理完了後に第3監視部234に対してその旨を通知してもよい。これらの手続きにより、第2監視部224と第3監視部234は同期して動作する。
[0029]
 このように、処理の後段にあるプロセッサコア123上で動作する第3監視部234から、処理の前段にあるプロセッサコア122上で動作する第2監視部224を起動することにより、第2確認部223が検出した異常は、大きな時間を隔てることなく、第3確認部233に伝達される。これに対して、第2監視部224と第3監視部234が同期せずに動作すると、第2監視部224と第3監視部234との間の起動タイミングのずれに応じて、プロセッサコア122と123の間で、異常検出の伝達に遅延が生じる恐れがある。本実施形態1によれば、このような伝搬遅延が蓄積することを抑制できる。
[0030]
 プロセッサコア122は、第2監視部224を周期T2で起動する。プロセッサコア123は、第3監視部234を周期T3で起動する。第2監視部224を起動するタイマ、第3監視部234を起動するタイマ、第1制御部210を起動するタイマは、それぞれ独立のものである。第2監視部224と第3監視部234が処理未完了を誤検出しないように、T2とT3は第1制御部210の起動周期より大きな値が設定されている。また周期の制約としてT3≦T2とする。この制約により、第2監視部224は第3監視部234に同期して動作するのみならず、第3監視部234を起動するタイマに異常があることにより第3監視部234が起動されず、さらに第3監視部234により第2監視部224が起動されない場合であっても、第2監視部224は第1制御部210の処理未完了を監視することができる。
[0031]
 プロセッサコア121は制御演算の最前段に位置するが、第1監視部214は制御演算の最後段に位置するプロセッサコア123の第3制御部230の処理未完了を監視するため、周期的に起動して第3完了フラグを読み取る。この起動に用いられるタイマは、第1制御部210を起動するタイマなどとは別のものである。第1監視部214は、第3完了フラグを読み取った直後に、その値を「無効」に書き換える。第3完了フラグが「無効」であれば、第1監視部214は第1異常処理部215を起動する。第1異常処理部215はプロセッサコア121をシャットダウンする。第1監視部214により、全てのプロセッサコアの処理未完了を監視することができる。
[0032]
 第2確認部223、第3確認部233、および第1異常処理部215は、エラーカウンタを備えてもよい。この場合はそれぞれ、第1~第3完了フラグが「有効」であればエラーカウンタをクリアし、「無効」であればエラーカウンタを+1する。エラーカウンタが閾値を超えたとき、第2異常処理部225/第3異常処理部235/第1異常処理部215を起動する。
[0033]
 図3は、第2確認部223の動作を説明するフローチャートである。第3確認部233も同様のフローチャートにしたがって動作するので説明を省略する。以下図3の各ステップについて説明する。
[0034]
 (図3:ステップS301~S302)
第2確認部223は、第1エラーフラグを読み込む(S301)。第1エラーフラグが「有効」である場合はステップS307に進み、それ以外の場合はステップS303に進む(S302)。
[0035]
 (図3:ステップS303)
第2確認部223は、第1完了フラグを読み込む。第1完了フラグが「無効」の場合はステップS306に進む。それ以外の場合はステップS304に進む。
[0036]
 (図3:ステップS304~S305)
第2確認部223は、第2監視部224の起動タイマをリセットする(S304)。例えばタイマカウンタが時刻進行にともなってデクリメントして0になると第2監視部224を起動するタイマであれば、タイマカウンタをT2にセットする。第2確認部223は、第2制御部220を起動する(S305)。
[0037]
 (図3:ステップS306~S307)
第2確認部223は、起動時に与えられたデータに基づき、起動元を判断する(S306)。起動元が第2監視部224であればステップS307に進み、第2被通知部222であれば本フローチャートを終了する。第2確認部223は、第2異常処理部225を起動する(S307)。
[0038]
 (図3:ステップS306~S307:補足)
これらステップによれば、第2被通知部222に対して第1制御部210の処理完了が誤って通知された場合は、第2制御部220が誤って起動されることがない。ステップS306において起動元が第2被通知部222である場合は、その旨のログを取るなど、第2異常処理部225とは異なる異常処理を実施してもよい。
[0039]
 図4は、プロセッサコア121において障害が発生した場合の各部動作を説明するタイムチャートである。時刻t1において第1制御部210に障害が発生し、処理が進まなくなったと仮定する。時刻t2において、第3監視部234が起動される。時刻t3において、第3監視部234は第2監視部224を起動する。時刻t4までに第2監視部224は第1完了フラグの「無効」を確認し、第2エラーフラグを「有効」にする。時刻t5において、第2監視部224は第2異常処理部225を起動する。時刻t6までに、第3監視部234は第2エラーフラグの「有効」を確認し、時刻t6において第3異常処理部235を起動する。第3監視部234は、第2監視部224を起動した後、時刻t4より後に再起動するように、一定時間待機する。
[0040]
 <実施の形態1:まとめ>
本実施形態1に係る電子制御装置101においては、第3監視部234が第2監視部224を起動することにより、プロセッサコア123はプロセッサコア121において生じたエラーを早い段階で知ることができる。これにより、プロセッサコア121において生じたエラーがプロセッサコア123まで伝達されるのにともなう遅延の蓄積を抑制することができる。
[0041]
 本実施形態1に係る電子制御装置101は、各完了フラグが所定期間内に「有効」になっているか否かを確認することにより、各タスクが所定期間内に完了しているか否かを監視することができる。すなわち、デッドライン監視機能を実現することができる。
[0042]
 <実施の形態2>
図5は、実施形態1で説明した機能を構成するためのソフトウェアアーキテクチャの例である。プロセッサコア121~123それぞれの上でリアルタイムOS(Operation System)が動作し、リアルタイムOSの上で第1制御部210/第2制御部220/第3制御部230、第1監視部214/第2監視部224/第3監視部234、第2被通知部222/第3被通知部232が動作する。これらのプログラムはOSのタスクとして登録されている。各タスクの実行優先度は、相対的に第1制御部210/第2制御部220/第3制御部230が「中」、第1監視部214/第2監視部224/第3監視部234が「高」、第2被通知部222/第3被通知部232が「低」などとする。
図示していないが、第1異常処理部215/第2異常処理部225/第3異常処理部235などもタスクとして登録されている。
[0043]
 リアルタイムOSは一般に、タスクの実行時間を監視する機能を備えている。実行時間監視機能を持つOSとしては、AUTOSAR OSなどがある。ここでいう実行時間とは、タスクが開始されてから完了するまでに要した時間のうち、当該タスクが一時的に停止した時間を除いた正味の所用実行時間のことである。リアルタイムOSは、実行時間監視処理において、不揮発メモリ160が格納しているログから、デッドライン違反の原因となったタスクを特定する。例えば、第1制御部210/第2制御部220/第3制御部230を実行時間監視の対象とする。これにより、デッドライン違反があったとき、その原因が第1制御部210/第2制御部220/第3制御部230のいずれにあるのか、あるいはそれ以外の処理にあるのかを識別することができる。
[0044]
 実施形態1で説明した手法は、デッドライン違反が生じたことを検出できるが、その原因がいずれのタスクにあるのかを特定することは困難である。そこで本実施形態2のように実行時間監視機能をさらに用いて実行時間が長いタスクを特定することにより、デッドライン違反が生じたときその原因となったタスクを特定することができる。
[0045]
 <本発明の変形例について>
本発明は上記実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換える事が可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について他の構成の追加・削除・置換をすることができる。
[0046]
 以上の実施形態においては、プロセッサコア間でエラーフラグや完了フラグを監視する構成を説明したが、同様の手法はマルチプロセッサシステムにおいてプロセッサ間でエラーフラグや完了フラグを監視する構成においても用いることができる。
[0047]
 以上の実施形態においては、共有メモリ201~203はプロセッサコア間にそれぞれ設けられているが、単一の共有メモリに対して各プロセッサコアが並列接続するように構成してもよい。
[0048]
 以上の実施形態において、プロセッサコア121は、他のプロセッサコアから通知を受け取る第1通知部やその通知にしたがってログを確認する第1確認部を備えてもよい。またプロセッサコア123は、他のプロセッサコアに対して処理完了を通知する第3通知部を備えてもよい。
[0049]
 以上の実施形態においては、3つのプロセッサコア121~123を備える構成を説明したが、4つ以上のプロセッサコアを備える構成においても同様の手法を採用して前段のエラーを早い段階で後段に通知することができる。
[0050]
 上記各構成、機能、処理部、処理手段等は、それらの一部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体に格納することができる。

符号の説明

[0051]
101:電子制御装置、121~123:プロセッサコア、210:第1制御部、211:第1通知部、214:第1監視部、215:第1異常処理部、220:第2制御部、221:第2通知部、222:第2被通知部、223:第2確認部、224:第2監視部、225:第2異常処理部、230:第3制御部、232:第3被通知部、233:第3確認部、234:第3監視部、235:第3異常処理部

請求の範囲

[請求項1]
 制御対象を制御する電子制御装置であって、
 前記制御対象を制御する処理を実行する第1演算装置、第2演算装置、および第3演算装置を備え、
 前記第1演算装置は、前記第1演算装置が実行する制御演算が正常終了したか否かを前記第2演算装置に対して通知し、
 前記第2演算装置は、前記第1演算装置がエラーを出力したか否かを監視する第2演算装置監視部を備え、
 前記第3演算装置は、前記第2演算装置がエラーを出力したか否かを監視する第3演算装置監視部を備え、
 前記第3演算装置監視部は、前記第2演算装置がエラーを出力したか否かを確認する前に、前記第2演算装置監視部を起動し、
 前記第2演算装置監視部は、前記第3演算装置監視部によって起動されると、前記第1演算装置がエラーを出力したか否かを確認してその結果を前記第3演算装置に対して通知する
 ことを特徴とする電子制御装置。
[請求項2]
 前記第3演算装置監視部は、前記第2演算装置監視部よりも短い周期で動作する
 ことを特徴とする請求項1記載の電子制御装置。
[請求項3]
 前記第2演算装置監視部と前記第3演算装置監視部は、互いに独立したタイマにしたがって動作し、
 前記第2演算装置監視部は、前記第3演算装置監視部によって起動されると、自身が依拠するタイマをリセットする
 ことを特徴とする請求項2記載の電子制御装置。
[請求項4]
 前記第2演算装置監視部は、前記第1演算装置が制御演算を完了したか否かを監視し、
 前記第2演算装置は、前記第1演算装置が制御演算を完了したことを前記第2演算装置監視部が確認すると、制御演算を開始し、
 前記第3演算装置監視部は、前記第2演算装置が制御演算を完了したか否かを監視し、
 前記第3演算装置は、前記第2演算装置が制御演算を完了したことを前記第3演算装置監視部が確認すると、制御演算を開始する
 ことを特徴とする請求項1記載の電子制御装置。
[請求項5]
 前記第2演算装置は、前記第1演算装置が実行した制御演算の結果を用いて制御演算を開始し、
 前記第3演算装置は、前記第2演算装置が実行した制御演算の結果を用いて制御演算を開始する
 ことを特徴とする請求項4記載の電子制御装置。
[請求項6]
 前記第2演算装置は、前記第1演算装置が所定時間以内に制御演算を完了していないことを前記第2演算装置監視部が確認すると、その旨のエラーを出力し、
 前記第3演算装置は、前記第2演算装置が所定時間以内に制御演算を完了していないことを前記第3演算装置監視部が確認すると、その旨のエラーを出力する
 ことを特徴とする請求項4記載の電子制御装置。
[請求項7]
 前記電子制御装置は、前記電子制御装置の動作を制御するオペレーティングシステムを実行し、
 前記電子制御装置は、前記オペレーティングシステムを介して、前記第1演算装置、前記第2演算装置、および前記第3演算装置がそれぞれ実行する制御演算を完了するまでに要した正味の実行時間を監視する
 ことを特徴とする請求項6記載の電子制御装置。
[請求項8]
 前記第1演算装置は、他の演算装置が所定時間以内に制御演算を完了したか否かを監視する第1演算装置監視部を備え、
 前記第1演算装置は、前記他の演算装置が所定時間以内に制御演算を完了していないことを前記第1演算装置監視部が確認すると、その旨のエラーを出力する
 ことを特徴とする請求項1記載の電子制御装置。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]