(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024048457
(43)【公開日】2024-04-09
(54)【発明の名称】制御装置、制御方法、及び、記憶媒体
(51)【国際特許分類】
G06F 11/36 20060101AFI20240402BHJP
B60R 16/02 20060101ALI20240402BHJP
G06F 11/30 20060101ALI20240402BHJP
【FI】
G06F11/36 168
B60R16/02 660W
G06F11/30 140D
【審査請求】有
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022154375
(22)【出願日】2022-09-28
(71)【出願人】
【識別番号】000005326
【氏名又は名称】本田技研工業株式会社
(74)【代理人】
【識別番号】110001081
【氏名又は名称】弁理士法人クシブチ国際特許事務所
(72)【発明者】
【氏名】加藤 久浩
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GB08
5B042HH11
5B042HH48
5B042MA08
5B042MA14
(57)【要約】
【課題】車両機器を制御するソフトウェアの検証を、車載機器本来の機能に影響を与えることなく実行可能とする。
【解決手段】プログラムを実行することによって、車両に搭載されたデバイスを制御する制御装置であって、プログラムを記憶する記憶部と、プロセッサと、を備え、プロセッサは、記憶部に記憶されたプログラムの実行を開始した後で、プログラムを部分的に実行して検証する検証動作を実行可能であり、プロセッサの負荷の状態に応じて、検証動作の実行態様を変更する、制御装置。
【選択図】
図2
【特許請求の範囲】
【請求項1】
プログラムを実行することによって、車両に搭載されたデバイスを制御する制御装置であって、
前記プログラムを記憶する記憶部と、
プロセッサと、を備え、
前記プロセッサは、前記記憶部に記憶された前記プログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行可能であり、
前記プロセッサの負荷の状態に応じて、前記検証動作の実行態様を変更する、制御装置。
【請求項2】
前記プロセッサは、前記車両の走行状態に基づき前記プロセッサの負荷の状態を判定し、判定結果に応じて前記検証動作の実行態様を変更する、請求項1に記載の制御装置。
【請求項3】
前記プロセッサは、前記プログラムに関係する前記車両の機能と、前記車両の走行状態とに基づいて前記プロセッサの負荷の状態を判定し、判定結果に応じて前記検証動作の実行態様を変更する、請求項1に記載の制御装置。
【請求項4】
前記プロセッサは前記車両の走行制御に関係する前記プログラムを実行し、
前記検証動作の実行頻度を、第1頻度、および、前記第1頻度より低い第2頻度に設定可能であり、
前記車両の速度が第1速度以上であるときに前記検証動作の実行頻度を前記第2頻度とし、前記車両の速度が第2速度以下であるときに前記検証動作の実行頻度を前記第1頻度とする、請求項1に記載の制御装置。
【請求項5】
前記プロセッサは、前記車両にユーザが昇降する際に動作する装備品に関係する前記プログラムを実行し、
前記検証動作の実行頻度を、第3頻度、および、前記第3頻度より高い第4頻度に設定可能であり、
前記車両の速度が第1速度以上であるときに前記検証動作の実行頻度を前記第4頻度とし、前記車両の速度が第2速度以下であるときに前記検証動作の実行頻度を前記第3頻度とする、請求項1から請求項3のいずれかに記載の制御装置。
【請求項6】
記憶部とプロセッサとを備える制御装置によって前記記憶部に記憶されたプログラムを実行することにより、車両に搭載されたデバイスを制御する制御方法であって、
前記プロセッサにより、
前記記憶部に記憶された前記プログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行し、
前記検証動作の実行態様を前記プロセッサの負荷の状態に応じて変更する、制御方法。
【請求項7】
記憶部とプロセッサとを備え、車両に搭載されたデバイスを制御する制御装置が実行する制御プログラムを格納した記憶媒体であって、
前記プロセッサにより、
前記プロセッサが前記記憶部に記憶されたプログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行可能とし、
前記プロセッサの負荷の状態に応じて、前記検証動作の実行態様を変更させる制御プログラムを格納した、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、制御方法、及び、記憶媒体に関する。
【背景技術】
【0002】
近年、交通の安全性の向上や車両における居住性の向上を目的として、車両に搭載されるソフトウェアの機能が進化している。そして、ソフトウェアの機能の進化に伴って、プログラムの構造が複雑化しているため、ソフトウェアの挙動が正常であることを検証する手段が必要とされている。例えば、特許文献1には、車載制御プログラムを実行し、実行内容をモニタリングするための手法が開示されている。特許文献1の手法は、車載制御プログラムの実行内容をモニタリングする処理がCPUの処理負荷となり、本来実行すべき制御プログラムが正しく動作しなくなるという課題を解決するため、プログラムの実行時データの作成または送信を、CPUを介さずにDMA転送により実行する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1はCPUが処理するデータをDMA転送する技術を車載制御プログラムに適用したものであり、適用可能なハードウェア及びソフトウェア構造に制限があった。このため、ソフトウェアに基づく制御を実行している間は、制御に支障を来さないようにするため、ソフトウェアの検証を行う機会が制限されるという課題があった。
本発明はかかる背景に鑑みてなされたものであり、車両機器を制御するソフトウェアを検証する機会を増やし、延いては持続可能な輸送システムの発展に寄与することを目的とする。
【課題を解決するための手段】
【0005】
本発明の一態様は、プログラムを実行することによって、車両に搭載されたデバイスを制御する制御装置であって、前記プログラムを記憶する記憶部と、プロセッサと、を備え、前記プロセッサは、前記記憶部に記憶された前記プログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行可能であり、前記プロセッサの負荷の状態に応じて、前記検証動作の実行態様を変更する、制御装置である。
本発明の他の態様によると、前記プロセッサは、前記車両の走行状態に基づき前記プロセッサの負荷の状態を判定し、判定結果に応じて前記検証動作の実行態様を変更する。
本発明の他の態様によると、前記プロセッサは、前記プログラムに関係する前記車両の機能と、前記車両の走行状態とに基づいて前記プロセッサの負荷の状態を判定し、判定結果に応じて前記検証動作の実行態様を変更する。
本発明の他の態様によると、前記プロセッサは前記車両の走行制御に関係する前記プログラムを実行し、前記検証動作の実行頻度を、第1頻度、および、前記第1頻度より低い第2頻度に設定可能であり、前記車両の速度が第1速度以上であるときに前記検証動作の実行頻度を前記第2頻度とし、前記車両の速度が第2速度以下であるときに前記検証動作の実行頻度を前記第1頻度とする。
本発明の他の態様によると、前記プロセッサは、前記車両にユーザが昇降する際に動作する装備品に関係する前記プログラムを実行し、前記検証動作の実行頻度を、第3頻度、および、前記第3頻度より高い第4頻度に設定可能であり、前記車両の速度が第1速度以上であるときに前記検証動作の実行頻度を前記第4頻度とし、前記車両の速度が第2速度以下であるときに前記検証動作の実行頻度を前記第3頻度とする。
【0006】
本発明の他の態様は、記憶部とプロセッサとを備える制御装置によって前記記憶部に記憶されたプログラムを実行することにより、車両に搭載されたデバイスを制御する制御方法であって、前記プロセッサにより、前記記憶部に記憶された前記プログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行し、前記検証動作の実行態様を前記プロセッサの負荷の状態に応じて変更する、制御方法である。
【0007】
本発明の他の態様は、記憶部とプロセッサとを備え、車両に搭載されたデバイスを制御する制御装置が実行する制御プログラムを格納した記憶媒体であって、前記プロセッサにより、前記プロセッサが前記記憶部に記憶されたプログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行可能とし、前記プロセッサの負荷の状態に応じて、前記検証動作の実行態様を変更させる制御プログラムを格納した、記憶媒体である。
【発明の効果】
【0008】
上記構成によれば、車両に搭載されたデバイスを制御する制御装置において、デバイスの制御に対する影響を抑えながら、デバイスを制御するプログラムの検証を行うことができるので、プログラムの検証を行う機会を増やすことができる。このため、プログラムの動作の安定化や不適切なプログラムの挙動の防止等を実現でき、延いては持続可能な輸送システムの発展への寄与を実現できる。
【図面の簡単な説明】
【0009】
【
図2】車両制御システムの要部の構成例を示すブロック図。
【発明を実施するための形態】
【0010】
図1は、車両制御システム1を示す図である。車両制御システム1は、車両Vに搭載され、車両Vの全般的な制御および情報処理を行うセントラルECU2を備えている。セントラルECU2は、通信ライン4a、4b、4cを含む通信ラインに接続される。セントラルECU2は、これらの通信ライン間における通信データの授受を管理するゲートウェイの機能を実現する。セントラルECU2には、例えば、移動通信システムの通信規格に準拠する無線装置である不図示のTCU(Telematics Control Unit)が接続されてもよい。セントラルECU2は、TCUの通信機能を利用して、例えばOTA(Over The Air)管理を実行する。OTA管理は、車両Vが備える車載装置の更新プログラムを車外のサーバからダウンロードする処理、及び、ダウンロードした更新プログラムを車載装置に適用する処理に関する制御を含む。
【0011】
通信ライン4a、4b、及び4cには、それぞれ、第1ゲートウェイECU20a、第2ゲートウェイECU20b、及び第3ゲートウェイECU20cが接続されている。第1ゲートウェイECU20a、第2ゲートウェイECU20b、及び第3ゲートウェイECU20cに接続されるECUの数や種類に制限はなく、本実施形態では一つの構成例を示す。この例では、第1ゲートウェイECU20aには、ECU30a、30b、30cが接続されている。第2ゲートウェイECU20bには、ECU30d、30e、30fが接続されている。また、第3ゲートウェイECU20cには、ECU30g、30h、30iが接続されている。
【0012】
以下、第1ゲートウェイECU20a、第2ゲートウェイECU20b、及び第3ゲートウェイECU20cを総称してゲートウェイECU20ともいい、ECU30a-30iを総称してECU30ともいう。
【0013】
ゲートウェイECU20には、それぞれ、車両Vの車体空間の同じ区画内に配された複数のECU30、または同じ区画内に配されたデバイスの動作を制御する複数のECU30が接続されている。ここで、デバイスは、モータ等の機器、センサ、その他の装置を含む。
【0014】
なお、セントラルECU2には、ゲートウェイECU20に加えて、他の制御装置やデバイスが接続され得る。そのような制御装置やデバイスには、ICB(Infotainment Control Box)、スピーカ、マイクロホンと、メーターパネル、ステアリングスイッチ、GNSS(GNSS;Global Navigation Satellite System)センサ、タッチパネルなどが含まれ得る。
【0015】
通信ライン4a、4b、及び4cは、本実施形態では、例えば、CAN通信規格に準拠した通信を行うCANバスで構成される。以下、通信ライン4a、4b、及び4cを総称して通信ライン4ともいうものとする。
【0016】
通信ライン4に接続されたゲートウェイECU20は、従来技術に従い、送信するデータを、CAN通信規格に従って一つのフレームにより又は複数のフレームの列として、通信ライン4へ送出する。CAN通信規格に従い、送出される各フレームには識別コード(ID)が含まれており、フレームを受信した各ゲートウェイECU20は、そのフレームに含まれるIDに基づいて、当該フレームが自身に宛てて送信されたフレームであるか否かを判断する。
【0017】
第1ゲートウェイECU20a、第2ゲートウェイECU20b、及び、第3ゲートウェイECU20cに接続されるECU30の種類や機能に特に制限はない。本実施形態では、車両制御システム1が、ECU30a、30b、30cを含む走行系ECU41と、ECU30d、30e、30fを含むボディ系ECU42とを有する。走行系ECU41とボディ系ECU42との区別は、車両Vの機能に相当する。
【0018】
走行系ECU41に含まれるECU30は、車両Vの走行に関わるデバイスを制御するECU30である。例えば、走行系ECU41に含まれるECU30は、車両Vを走行させる走行用モータ、車両Vの駆動源としての内燃機関、アクセルやブレーキなどの操縦器、VSA装置(VSA;Vehicle Stability Asist)等を制御する。走行系ECU41は、車両Vの運転を支援する運転支援機能や自律運転機能に関わるECU30を含んでもよい。この種のECU30として、例えば、ADAS-ECU(ADAS;Advanced Driver-Assistace System)が挙げられる。
【0019】
ボディ系ECU42に含まれるECU30は、車両Vの車体に装着された装備品のうち、車両Vの走行に直接関与しないデバイスを制御する。詳細には、これらのデバイスは、車両Vの走行状態を変化させるデバイスに該当しないものを含み、車両Vの走行に必要なデバイスを含んでもよい。例えば、ボディ系ECU42に含まれるECU30は、バッテリ、ヘッドランプ等の灯体、車両Vにユーザが昇降する際に動作する装備品、温度センサ、車外カメラ、車室内カメラ等を制御する。車両Vにユーザが昇降する際に動作する装備品とは、例えば、ドアやリアゲート、及び、これらに付属するセンサであり、具体的には、ドアウィンドウを駆動するウィンドウモータ、ドアロック機構を駆動するアクチュエータ、ドアを動作させるモータ、ドアロックセンサ、ドア開閉センサが挙げられる。また、ボディ系ECU42に含まれるECU30は、車両Vにおけるインフォテイメント機能に関するデバイスを制御するECU30や、インフォテイメント機能を実行するECU30を含んでもよい。インフォテイメント機能としては、音楽再生、ラジオ放送やテレビ放送の受信および視聴、インターネット等のネットワークを利用して配信される音楽や映像の再生、ビデオゲームの実行等に関する機能が挙げられる。
【0020】
走行系ECU41及びボディ系ECU42のほか、車両制御システム1に含まれるECU30は、MPU(Map Positioning Unit)、MVC-ECU(MVC;Multi View Camera)、PKS-ECU(PKS;Parking Support)、及びその他の、車両Vが備える種々のデバイスやセンサの動作を制御するECUを含み得る。
【0021】
図1の構成は一例である。例えば、走行系ECU41に含まれるECU30が、第1ゲートウェイECU20a、第2ゲートウェイECU20b、及び、第3ゲートウェイECU20cに分散して接続される構成であってもよい。また、第1ゲートウェイECU20aに走行系ECU41以外のECU30が接続されてもよい。このことはボディ系ECU42に含まれるECU30についても同様である。
【0022】
図2は、車両制御システム1の要部の構成例を示すブロック図であり、第2ゲートウェイECU20bと、第2ゲートウェイECU20bに接続されるECU30dの構成を示す。ECU30dは、ボディ系ECU42に属するECU30である。
【0023】
ECU30dは、プロセッサ31、及び、メモリ32を備える。プロセッサ31は、例えば、CPU(Central Processing Unit)、MCU(Micro Controller Unit)、或いは、MPU(Micro Processor Unit)により構成される。メモリ32は、プロセッサ31が実行するプログラム、及び、プロセッサ31により処理されるデータを不揮発的に記憶する。メモリ32は、例えば、ROM(Read Only Memory)で構成される。メモリ32は、プログラム及びデータを一時的に記憶するためのワークエリアを形成するRAM(Random Access Memory)を備えてもよい。本開示において、ECU30dは、制御装置の一例に対応する。ECU30dは、プロセッサ31、及びメモリ32を一体に備える集積回路で構成されてもよい。また、ECU30dは、プロセッサ31、メモリ32、及びその他の回路のそれぞれを独立したハードウェアとして備える構成であってもよい。メモリ32は、記憶部の一例に対応する。
【0024】
メモリ32は、OS(Operating System)61、アプリA62、及び、アプリB63を記憶する。OS61は、プロセッサ31が実行する基本制御プログラムである。プロセッサ31がOS61を実行することにより、ECU30dの基本的な機能が実現され、さらに、プロセッサ31がアプリケーションプログラムを実行するためのプラットフォームが構成される。
【0025】
アプリA62及びアプリB63は、ECU30dが実行するアプリケーションプログラムの一例である。ECU30dが実行するアプリケーションプログラムは、アプリA62及びアプリB63に限定されない。ECU30dは、3以上のアプリケーションプログラムを実行可能であってもよい。また、アプリA62及びアプリB63は、1つのアプリケーションプログラムに含まれるプログラムモジュールであってもよい。
【0026】
プロセッサ31は、実行部51、及び、検証部52を有する。これらは、例えばプロセッサ31がOS61を実行することにより実現される機能部である。実行部51は、アプリA62、及び、アプリB63を実行する。実行部51がアプリA62及びアプリB63のいずれか、或いは両方を実行することにより、ECU30dは、ECU30dに接続されたデバイスを制御することが可能となる。
【0027】
検証部52は、アプリA62、及び、アプリB63が正常に動作するか否かを検証する。検証部52が検証を行うことにより、アプリA62及びアプリB63が不完全な状態でECU30dにインストールされている場合、データ等の破損によりアプリA62及びアプリB63が正常に実行されない場合、及び、アプリA62及びアプリB63に不適切な改変が施されている場合に、これらを発見できる。
【0028】
後述するように、検証部52は、実行部51がアプリA62を実行する前にアプリA62の検証を行う。この場合、実行部51は、アプリA62を検証用の環境、例えば検証用の仮想マシンにより実行し、アプリA62を起動および動作させる。実行部51は、実行中のアプリA62の挙動やアプリA62の処理結果を、正常な動作と比較することにより、アプリA62が正常に動作するか否かを判定する。同様に、検証部52は、実行部51がアプリB63を実行する前に、アプリB63の検証を行う。
【0029】
検証部52は、実行部51がアプリA62またはアプリB63を実行中に、アプリA62及びアプリB63のいずれかの検証を行うことが可能である。この場合、検証部52は、実行部51の動作中にバックグラウンドで動作し、アプリA62またはアプリB63の検証を行う。プロセッサ31は、実行部51によるアプリA62またはアプリB63の実行と、検証部52のバックグラウンド処理とを実行する。例えば、プロセッサ31は、実行部51がプロセッサ31の処理を占有していない時間に検証部52によるバックグラウンド処理を行う。
【0030】
検証部52は、実行部51の動作中にバックグラウンド処理によりアプリA62の検証を行う場合に、アプリA62の一部を検証用の環境により実行する。同様に、検証部52は、実行部51の動作中にバックグラウンド処理によりアプリB63の検証を行う場合に、アプリB63の一部を検証用の環境により実行する。
【0031】
アプリA62は、複数の領域に分割することができる。例えば、アプリA62は、検証部52によって、
図2に示す領域A1、A2、A3、…、A(X-1)、AXに分割される。アプリA62は、領域A1-AXを分割可能な構成であってもよい。具体的には、領域A1-AXは、個別に検証部52が実行可能なモジュールであってもよい。或いは、アプリA62が複数のプログラムの集合により構成され、領域A1-AXが個々に実行可能なプログラムであってもよい。また、アプリA62が一体のプログラムとして構成され、検証部52が、アプリA62を領域A1-AXに分割してもよい。
【0032】
アプリA62と同様に、アプリB63は、複数の領域に分割することができる。例えば、アプリB63は、検証部52によって、
図2に示す領域B1、B2、B3、…、B(X-1)、BXに分割される。アプリB63は、領域B1-BXを分割可能な構成であってもよい。具体的には、領域B1-BXは、個別に検証部52が実行可能なモジュールであってもよい。或いは、アプリB63が複数のプログラムの集合により構成され、領域B1-BXが個々に実行可能なプログラムであってもよい。また、アプリB63が一体のプログラムとして構成され、検証部52が、アプリB63を領域B1-BXに分割してもよい。
【0033】
図2に示すECU30dの構成は一例であるが、車両制御システム1が備えるECU30のうち、ECU30d以外のECU30も、ECU30dと同様に構成される。車両制御システム1が備えるECU30のうち、少なくとも走行系ECU41に含まれる各々のECU30、及び、ボディ系ECU42に含まれる各々のECU30は、ECU30dと同様に、実行部51及び検証部52を備える。これらのECU30は、アプリA62またはアプリB63と同様に、分割可能なアプリケーションプログラムを有し、アプリケーションプログラムを実行中に、検証部52によってアプリケーションプログラムを分割して検証することが可能である。各々のECU30が実行するアプリケーションプログラムの数や種類は制限されず、ECU30の使用や機能に応じて適宜に変更可能である。
【0034】
ECU30は、制御装置の一例に対応し、プログラムをプロセッサ31によって実行する。走行系ECU41に属するECU30は、車両Vの走行制御に関係するプログラムを実行する制御装置の一例であり、ボディ系ECU42に属するECU30は、車両Vにユーザが昇降する際に動作する装備品に関係するプログラムを実行する制御装置の一例である。
【0035】
図3は、車両Vの動作状態を示す状態遷移図である。
図3に示す状態S1-S5は、車両Vの動作状態を示す。電源オフ状態S1は、車両制御システム1の電源がオフであり、車両Vの駆動源が停止している状態である。電源オフ状態S1は、例えば、車両Vが駐車されており、運転者等のユーザが車両Vの近傍にいない状態である。
【0036】
電源オフ状態S1において、車両Vのドアロックを解除する操作等が行われると、車両制御システム1が起動し、Wake状態S2に移行する。Wake状態S2では、車両制御システム1の各部の動作の初期化と起動が行われる。例えば、セントラルECU2及びゲートウェイECU20は、Wake状態S2において、車両制御システム1を構成する複数のECU30と、各々のECU30に接続されたデバイスの状態の検出を実行する。また、例えば、ECU30dは、Wake状態S2においてOS61を実行し、プロセッサ31によりECU30dの各部を制御可能な状態となる。車両制御システム1のセントラルECU2、ゲートウェイECU20、及び、車両制御システム1の起動に関わるECU30の起動が完了した後、車両制御システム1は、停車状態S3に移行可能となる。
【0037】
停車状態S3、走行可能状態S4、及び、走行状態S5は、車両Vの駆動源を動作させることが可能な状態である。これらの状態をまとめてIG_ON状態S10と呼ぶ。Wake状態S2において車両Vの駆動源を始動させる操作が行われることをトリガーとして、車両制御システム1は、停車状態S3に移行する。この操作は、例えば、SSSW(Start Stop SWitch)によりイグニッションをオンにする操作(IG_ON操作)である。
【0038】
車両Vが駆動源として内燃機関を有する車両である場合、停車状態S3において、内燃機関が動作しているか、或いは、内燃機関を速やかに始動できる状態である。車両Vが駆動源としてモータを有する車両である場合、停車状態S3において、車両Vは、モータを回転させることが可能な状態であり、例えば、インバータからモータへの給電が可能な状態である。停車状態S3において、車両Vは走行していない。例えば、車両Vのトランスミッションの状態、すなわちシフトポジションはPレンジである。
【0039】
停車状態S3において、車両Vの駆動源を停止させる操作が行われると、車両Vは電源オフ状態S1に移行する。この操作は、例えば、SSSWにより車両Vのイグニッションをオフにする操作(IG_OFF操作)である。
【0040】
停車状態S3において、車両Vが走行を行うための操作が行われると、車両Vは走行可能状態S4に移行する。走行可能状態S4は、ユーザのアクセルペダル等の操作により車両Vが走行を開始可能な状態である。走行可能状態S4において、車両VのシフトポジションはPレンジ以外であり、車両Vを前進または後退させることが可能な状態である。例えば、停車状態S3において車両VのシフトポジションをPレンジから他のレンジに切り替える操作が行われると、車両Vは走行可能状態S4に移行する。
また、走行可能状態S4において、車両VのシフトポジションをPレンジに切り替える操作が行われると、車両Vは停車状態S3に移行する。
【0041】
走行可能状態S4は、車両Vが完全に停止している状態のほか、車両Vが移動している状態を含んでもよい。例えば、車両Vの速度が、停止していると見なせる程度の低速である場合を含んでもよい。一例として、本実施形態の走行可能状態S4は、車両Vが前進方向または後退方向に走行している状態であって、車両Vの速度が低速である状態を含む。
走行状態S5は、車両Vが走行している状態である。
【0042】
本実施形態では、走行可能状態S4において車両Vの速度が第1速度以上となった場合に、車両Vは走行状態S5に移行する。また、走行状態S5において、車両Vの速度が第2速度以下となった場合に、車両Vは走行状態S5から走行可能状態S4に移行する。第1速度は、例えば、10km/時であり、第2速度は、例えば、5km/時である。第1速度及び第2速度は、車両Vが走行可能状態S4であるか走行状態S5であるかを判定する閾値である。第1速度と第2速度とは同一であってもよい。第2速度を第1速度より低い値にすると、動作状態の頻繁な変更を避けることができ、好ましい。
【0043】
車両制御システム1においては、例えば、セントラルECU2が車両Vの動作状態を監視および判定する。また、ECU30は、セントラルECU2から車両Vの動作状態、または、動作状態の変化を取得することにより、車両Vの動作状態を特定できる。また、ECU30は、セントラルECU2から車両Vの速度等の情報を取得することにより、車両Vの動作状態を判定してもよい。
【0044】
図4は、ECU30の動作例を示すシーケンス図であり、ECU30が起動するときの動作を示す。
図4(a)のステップST11-ST14は実行部51の動作を示し、
図4(b)のステップST21-ST26は検証部52の動作を示す。
図4に示す動作例では、ECU30の起動後にアプリA62が実行され、続いて、アプリB63が実行される。
【0045】
実行部51及び検証部52は、ECU30の起動により動作を開始する(ステップST11、ST21)。実行部51は、OS61を実行することによりアプリA62及びアプリB63を起動する準備を行う(ステップST12)。ここで、実行部51が検証部52に対して検証要求を行い、この検証要求に応じて検証部52はアプリA62の検証を実行する(ステップST22)。ステップST22で、検証部52は、アプリA62の全体を、領域A1-AXを分割しない状態で、検証する。この検証を全体検証と呼ぶ。
【0046】
検証部52は、アプリA62の全体検証が完了すると、実行部51に対して検証完了通知を行う。実行部51は検証部52から検証完了通知を受け取ると、アプリA62を実行する(ステップST13)。続いて、実行部51が検証部52に対し、アプリB63の検証要求を行うと、検証部52はアプリB63の全体検証を行う(ステップST23)。アプリB63の全体検証が完了した後、検証部52は実行部51に検証完了通知を行い、この検証完了通知に基づき、実行部51はアプリB63を実行する(ステップST14)。
【0047】
ステップST11-ST14及びステップST21-ST24では、検証部52がアプリA62及びアプリB63の検証を実行し、検証が済んだ後に実行部51がアプリA62及びアプリB63を実行する。この動作例では、ECU30の起動時に、ECU30が実行するアプリケーションプログラムの全体を実行する検査が行われる。
【0048】
車両制御システム1では、検証部52が、実行部51によるアプリケーションプログラムの実行中に、アプリケーションプログラムを検証する。この検証は、アプリケーションプログラムを領域毎に、検証用の環境で実行する態様で行われる。検証部52は、アプリA62及びアプリB63の全体検証が完了した後、BG(BackGround)検証処理を開始する(ステップST24)。BG検証処理において、検証部52は、検証の対象であるアプリケーションプログラムの領域を選択し(ステップST25)、選択した領域の検証を行う(ステップST26)。
【0049】
検証部52は、BG検証処理で、ステップST25-ST26の処理を、例えばアプリA62の領域A1-AX、及び、アプリB63の領域B1-BXのそれぞれに対して、順に実行する。検証部52のBG検証処理は、実行部51の動作のバックグラウンドで、アプリケーションプログラムの領域毎に実行される。すなわち、検証部52は、ステップST24-ST25の動作を、領域毎に繰り返し実行する。
【0050】
BG検証処理のために用いられるリソースの大きさは、BG検証処理の実行周期により異なる。BG検証処理を短周期で、すなわち高頻度で行う場合、BG検証処理のために用いられるリソースは大きい。ECU30は、検証部52によるBG検証処理が、実行部51がアプリケーションプログラムを実行するためのリソースに過度の影響を与えないように、BG検証処理の実行態様を変更する。BG検証処理の実行態様としては、BG検証処理の実行周期、実行頻度、1回のBG検証処理で検証する領域の数及び大きさ、検証の方法等が挙げられる。本実施形態では、ECU30がBG検証処理の実行周期を変更すること、及び、この周期の変更によってBG検証処理の実行頻度を変更する例を、BG検証処理の実行態様を変更することの一例として説明する。BG検証処理は、検証動作の一例に対応する。
【0051】
図5は、車両制御システム1の動作例を示す説明図である。詳細には、
図5は、横軸を時間軸とするタイミングチャートであり、
図5(a)は車両制御システム1の電源の状態を示し、
図5(b)は車両Vの動作状態を示す。
図5(c)は走行系ECU41に属するECU30が実行するBG検証処理の実行状態を示し、
図5(d)はボディ系ECU42に属するECU30が実行するBG検証処理の実行状態を示す。
【0052】
図5には、車両Vが停車状態S3、走行可能状態S4、及び走行状態S5を遷移する間のBG検証処理の実行状態を示す。車両Vの動作状態は、期間TE1で停車状態S3であり、期間TE2で走行可能状態S4であり、期間TE3で走行状態S5であり、期間TE4で走行可能状態S4であり、期間TE5で停車状態S3である。期間TE1-TE5において車両制御システム1の電源状態はIG_ON状態S10である。
【0053】
走行系ECU41に属するECU30は、車両Vの駆動や制動に関する処理を行う。このため、車両Vが走行している間は、実行部51の機能に関するプロセッサ31の処理負荷が高い。このため、走行状態S5においては、検証部52がBG検証処理を実行する頻度を低くすると、プロセッサ31の過負荷を抑えることができ、好ましい。これに対し、車両Vが走行していない状態、すなわち停車状態S3及び走行可能状態S4において、走行系ECU41に属するECU30が、実行部51による処理を実行する頻度は低い。このため、停車状態S3及び走行可能状態S4におけるプロセッサ31の処理負荷には余裕がある。従って、停車状態S3及び走行可能状態S4において検証部52が高頻度でBG検証処理を行っても、プロセッサ31が過負荷となる可能性は非常に低い。
【0054】
一方、ボディ系ECU42に属するECU30は、車両Vのドア等に関する処理を行う。このため、車両Vが停車している間は、実行部51の機能に関するプロセッサ31の処理負荷が高い。このため、停車状態S3及び走行可能状態S4においては、検証部52がBG検証処理を実行する頻度を低くすると、プロセッサ31の過負荷を抑えることができ、好ましい。これに対し、車両Vが走行している状態において、ボディ系ECU42に属するECU30が、実行部51による処理を実行する頻度は低い。このため、走行状態S5におけるプロセッサ31の処理負荷には余裕がある。従って、走行状態S5において検証部52が高頻度でBG検証処理を行っても、プロセッサ31が過負荷となる可能性は非常に低い。
【0055】
本実施形態では、走行系ECU41に属するECU30が、停車状態S3及び走行可能状態S4においてBG検証処理を実行する頻度を高くし、走行状態S5においてBG検証処理を実行する頻度を低くする。また、ボディ系ECU42に属するECU30が、停車状態S3及び走行可能状態S4においてBG検証処理を実行する頻度を低くし、走行状態S5でBG検証処理を実行する頻度を高くする。これにより、プロセッサ31が過負荷となる事態を回避しながら、必要な頻度でアプリA62及びアプリB63の検証を実行できる。
【0056】
具体的には、
図5(c)に示すように、走行系ECU41に属するECU30は、期間TE1及び期間TE2において周期t1でBG検証処理を実行する。車両Vが走行状態S5に移行した場合、すなわち期間TE3で、ECU30は、BG検証処理の周期を周期t2に変更する。周期t2は周期t1に比べて長い周期である。このため、期間TE1、TE2におけるBG検証処理の実行頻度に比べて、期間TE3におけるBG検証処理の実行頻度は低い。また、期間TE4、TE5において、ECU30はBG検証処理を実行する周期を、周期t1とする。期間TE4、TE5では、車両Vの速度が第2速度以下となり、車両Vが走行可能状態S4または停車状態S3に移行するので、BG検証処理の実行頻度が高められる。
【0057】
また、
図5(d)に示すように、ボディ系ECU42に属するECU30は、期間TE1及び期間TE2において周期t3でBG検証処理を実行する。車両Vが走行状態S5に移行した場合、すなわち期間TE3で、ECU30は、BG検証処理の周期を周期t4に変更する。周期t4は周期t3に比べて短い周期である。このため、期間TE1、TE2におけるBG検証処理の実行頻度に比べて、期間TE3におけるBG検証処理の実行頻度は高い。また、期間TE4、TE5において、ECU30はBG検証処理を実行する周期を、周期t3とする。期間TE4、TE5では、車両Vの速度が第2速度以下となり、車両Vが走行可能状態S4または停車状態S3に移行するので、BG検証処理の実行頻度が低くなる。
【0058】
このように、ECU30は、車両Vの走行状態に対応して、BG検証処理の実行周期を変更することによって、BG検証処理の実行頻度を変更する。BG検証処理の実行周期の変更は、ECU30が行ってもよいし、セントラルECU2或いはゲートウェイECU20がECU30に対して、実行周期の変更を指示してもよい。本実施形態では、ECU30がBG検証処理の実行周期を変更する例を、
図6を参照して説明する。
【0059】
図6は、ECU30の動作例を示すフローチャートである。
図6には、検証部52が、BG検証処理を開始した後に、BG検証処理の実行頻度を変更する動作を示す。ステップST31-ST36の動作は、例えば、検証部52が実行する。
【0060】
まず、走行系ECU41に属するECU30の動作を説明する。
【0061】
ECU30は、ステップST24(
図4)でBG検証処理を開始した後、BG検証処理の実行周期を第1周期に設定する(ステップST31)。第1周期は、
図5の例では周期t1である。ステップST31の処理によって、BG検証処理の実行頻度が第1頻度に設定される。
【0062】
ECU30は、車両Vの車速が第1速度以上であるか否かを判定する(ステップST32)。ステップST32で、ECU30は、例えばセントラルECU2から車両Vの速度に関する情報を取得することにより判定を行う。
図6の処理を開始する時点で、車両Vは停車状態S3または走行可能状態S4である。ステップST32の判定は、車両Vの動作状態が走行可能状態S4から走行状態S5に移行したか否かの判定である。
【0063】
車両Vの車速が第1速度以上でないと判定した場合(ステップST32;NO)、ECU30は、車両制御システム1がイグニッションオフの状態に移行したか否かを判定する(ステップST33)。ステップST33の判定は、車両制御システム1がIG_ON状態S10から電源オフ状態S1に移行したか否かの判定である。車両制御システム1がイグニッションオフの状態に移行したと判定した場合(ステップS33;YES)、ECU30は本処理を終了する。車両制御システム1がイグニッションオフの状態に移行していないと判定した場合(ステップS33;NO)、ECU30はステップST32に戻る。
【0064】
車両Vの車速が第1速度以上であると判定した場合(ステップST32;YES)、ECU30は、ECU30は、BG検証処理の実行周期を第2周期に設定する(ステップST34)。第2周期は、
図5の例では周期t2である。周期t2は周期t1より長い周期であるため、ステップST34の処理によって、BG検証処理の実行頻度が、第1頻度より低い第2頻度に設定される。
【0065】
その後、ECU30は、車両Vの車速が第2速度以下であるか否かを判定する(ステップST35)。ステップST35で、ECU30は、例えばセントラルECU2から車両Vの速度に関する情報を取得することにより判定を行う。ステップST35の判定は、車両Vの動作状態が走行状態S5から走行可能状態S4に移行したか否かの判定である。
【0066】
車両Vの車速が第2速度以下でないと判定した場合(ステップST35;NO)、ECU30は、車両制御システム1がイグニッションオフの状態に移行したか否かを判定する(ステップST36)。ステップST36の判定は、車両制御システム1がIG_ON状態S10から電源オフ状態S1に移行したか否かの判定である。車両制御システム1がイグニッションオフの状態に移行したと判定した場合(ステップS36;YES)、ECU30は本処理を終了する。車両制御システム1がイグニッションオフの状態に移行していないと判定した場合(ステップS36;NO)、ECU30はステップST35に戻る。
【0067】
車両Vの車速が第2速度以下であると判定した場合(ステップST35;YES)、ECU30は、ステップST31に移行して、BG検証処理の実行周期を第1周期に設定する。
【0068】
続いて、ボディ系ECU42に属するECU30の動作を説明する。
ボディ系ECU42に属するECU30は、走行系ECU41に属するECU30と同様に、
図6に示した動作を実行する。この場合、ECU30は、ステップST31でBG検証処理の実行周期を第3周期に設定する。第3周期は、
図5の例では周期t3である。このステップST31の処理によって、BG検証処理の実行頻度が第3頻度に設定される。また、ECU30は、ステップST34でBG検証処理の実行周期を第4周期に設定する。第4周期は、
図5の例では周期t4である。このステップST34の処理によって、BG検証処理の実行頻度が第4頻度に設定される。第3周期は第4周期よりも長い。従って、第3頻度は第4頻度よりも低い頻度である。
【0069】
このように、ECU30は、車両Vが走行状態S5である場合と、車両Vが停車状態S3または走行可能状態S4である場合とで、BG検証処理の実行頻度を変更する。すなわち、走行系ECU41に属するECU30は、車両Vが停車状態S3または走行可能状態S4である場合は第1頻度でBG検証処理を実行し、車両Vが走行状態S5である場合は第1頻度より低い第2頻度でBG検証処理を実行する。ボディ系ECU42に属するECU30は、車両Vが停車状態S3または走行可能状態S4である場合は第3頻度でBG検証処理を実行し、車両Vが走行状態S5である場合は第3頻度より高い第4頻度でBG検証処理を実行する。これにより、ECU30が実行する車両Vの機能に対応して、プロセッサ31の過負荷を招かないように、プロセッサ31が実行するアプリケーションプログラムの検証を実行できる。
【0070】
図6の動作において、ECU30は、ステップST32、ST35で車両Vの速度を判定することによって、車両Vの動作状態が走行状態S5であるか、或いは、停車状態S3または走行可能状態S4であるかを判定する。走行系ECU41に属するECU30のプロセッサ31は走行状態S5において負荷が大きく、ボディ系ECU42に属するECU30のプロセッサ31は走行状態S5以外の動作状態で負荷が大きいことは上述した通りである。従って、ステップST32、ST35の判定は、車両Vの走行状態を判定し、車両Vの走行状態に基づきプロセッサ31の負荷の状態を判定することに対応する。
【0071】
また、各々のECU30は、走行系ECU41に属するECU30か、ボディ系ECU42に属するECU30かが決まっている。このため、ステップST32、ST35でECU30が行う判定は、ECU30に関係する車両Vの機能と、車両Vの走行状態とに基づいてプロセッサ31の負荷の状態を判定することに対応する。
【0072】
上記実施形態は本発明を適用した一具体例を示すものであり、発明が適用される形態を限定するものではない。
【0073】
上記実施形態では、ECU30が車両Vの速度を判定する例を
図6に示したが、これは一例である。例えば、セントラルECU2またはゲートウェイECU20が、車両Vの動作状態が停車状態S3、走行可能状態S4、及び走行状態S5のいずれであるかを判定し、判定結果をECU30に出力してもよい。
【0074】
上記実施形態では、検証部52によって、プロセッサ31が実行するアプリケーションプログラムについて、全体検証、及び、BG検証処理を実行する例を説明した。検証部52が検証するプログラムは、アプリケーションプログラムに限定されない。例えば、OS61、或いは、その他の制御プログラムを対象として、検証部52によりBG検証処理を実行してもよい。
【0075】
また、
図5には、期間TE1及び期間TE2におけるBG検証処理の実行頻度と、期間TE4及び期間TE5におけるBG検証処理の実行頻度とが同一である例を示したが、これは一例である。例えば、期間TE1及び期間TE2におけるBG検証処理の実行頻度と、期間TE4及び期間TE5におけるBG検証処理の実行頻度とが異なっていてもよい。また、期間TE1と期間TE2とでBG検証処理の実行頻度を異なる頻度としてもよく、期間TE4と期間TE5とでBG検証処理の実行頻度を異なる頻度としてもよい。
【0076】
図1及び
図2は、本願発明の理解を容易にするために、車両制御システム1の各装置の機能構成を、主な処理内容により区分して示した概略構成を示す図であり、装置の構成を限定するものではない。
図4及び
図6に示した各処理は、1つのプログラムにより実行されてもよいし、複数のプログラムにより実行されてもよい。
【0077】
また、車両Vは、例えば四輪自動車であるが、車両Vの種類は特に制限されず、大型自動車、商用車、二輪車、三輪車等であってもよい。その他、車両制御システム1における各部の構成は任意に変更可能である。
【0078】
ECU30が有するOS61、アプリA62、アプリB63、及びその他のプログラムの一部または全部は、例えば、コンピュータによって読み取り可能な、非一時的な、記憶媒体あるいは記録媒体に記録しておくことも可能である。この場合、本発明は、コンピュータプログラムを記録した非一時的な記憶媒体として実現される。具体的には、上記プログラムを、車両制御システム1を構成するコンピュータであるセントラルECU2、ゲートウェイECU20、或いはECU30によって読み取り可能に記憶した記憶媒体として実現できる。記憶媒体としては、磁気的記憶媒体、光学的記憶媒体又は半導体メモリーデバイスを用いることができ、車両制御システム1に固定されるものであってもよいし、車両制御システム1から着脱可能であってもよい。
【0079】
上記実施形態は、以下の構成をサポートする。
【0080】
(構成1)プログラムを実行することによって、車両に搭載されたデバイスを制御する制御装置であって、前記プログラムを記憶する記憶部と、プロセッサと、を備え、前記プロセッサは、前記記憶部に記憶された前記プログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行可能であり、前記プロセッサの負荷の状態に応じて、前記検証動作の実行態様を変更する、制御装置。
構成1の制御装置によれば、車両に搭載されたデバイスを制御する制御装置において、デバイスの制御に対する影響を抑えながら、デバイスを制御するプログラムの検証を行うことができるので、プログラムの検証を行う機会を増やすことができる。このため、プログラムの動作の安定化や不適切なプログラムの挙動の防止等を実現でき、延いては持続可能な輸送システムの発展への寄与を実現できる。
【0081】
(構成2)前記プロセッサは、前記車両の走行状態に基づき前記プロセッサの負荷の状態を判定し、判定結果に応じて前記検証動作の実行態様を変更する、構成1に記載の制御装置。
構成2の制御装置によれば、車両の走行状態に基づいてプログラムの検証の態様を変更するので、検証動作がプロセッサの過負荷の要因とならないように、プログラムを検証できる。
【0082】
(構成3)前記プロセッサは、前記プログラムに関係する前記車両の機能と、前記車両の走行状態とに基づいて前記プロセッサの負荷の状態を判定し、判定結果に応じて前記検証動作の実行態様を変更する、構成1または構成2に記載の制御装置。
構成3の制御装置によれば、プログラムに関係する車両の機能と車両の走行状態とに基づいてプログラムの検証の態様を変更するので、検証動作がプロセッサの過負荷の要因とならないように、プログラムを検証できる。
【0083】
(構成4)前記プロセッサは前記車両の走行制御に関係する前記プログラムを実行し、前記検証動作の実行頻度を、第1頻度、および、前記第1頻度より低い第2頻度に設定可能であり、前記車両の速度が第1速度以上であるときに前記検証動作の実行頻度を前記第2頻度とし、前記車両の速度が第2速度以下であるときに前記検証動作の実行頻度を前記第1頻度とする、構成1から構成3のいずれかに記載の制御装置。
構成4の制御装置によれば、車両の走行制御に関係するプログラムを実行する制御装置が、車両が走行する状態では検証動作の実行頻度を低くし、車両が走行していないか低速で走行している状態では検証動作の実行頻度を高くする。これにより、プログラムによる車両の走行制御の負荷が高い状態では検証動作の実行頻度を低くすることにより、プロセッサの過負荷を防止でき、車両の走行制御の負荷が低い状態では検証動作の実行頻度を高くして、検証の機会を増やすことができる。
【0084】
(構成5)前記プロセッサは、前記車両にユーザが昇降する際に動作する装備品に関係する前記プログラムを実行し、前記検証動作の実行頻度を、第3頻度、および、前記第3頻度より高い第4頻度に設定可能であり、前記車両の速度が第1速度以上であるときに前記検証動作の実行頻度を前記第4頻度とし、前記車両の速度が第2速度以下であるときに前記検証動作の実行頻度を前記第3頻度とする、構成1から構成3のいずれかに記載の制御装置。
構成5の制御装置によれば、車両にユーザが昇降する際に動作する装備品に関係するプログラムを実行する制御装置が、車両が走行する状態では検証動作の実行頻度を高くし、車両が走行していないか低速で走行している状態では検証動作の実行頻度を低くする。これにより、車両にユーザが昇降する際に動作する装備品が使用される可能性が高い状態では検証動作の実行頻度を低くすることにより、プロセッサの過負荷を防止でき、装備品が使用される可能性が低い状態では検証動作の実行頻度を高くして、検証の機会を増やすことができる。
【0085】
(構成6)記憶部とプロセッサとを備える制御装置によって前記記憶部に記憶されたプログラムを実行することにより、車両に搭載されたデバイスを制御する制御方法であって、前記プロセッサにより、前記記憶部に記憶された前記プログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行し、前記検証動作の実行態様を前記プロセッサの負荷の状態に応じて変更する、制御方法。
構成6の制御方法によれば、車両に搭載されたデバイスを制御する制御装置により、デバイスの制御に対する影響を抑えながら、デバイスを制御するプログラムの検証を行うことができるので、プログラムの検証を行う機会を増やすことができる。このため、プログラムの動作の安定化や不適切なプログラムの挙動の防止等を実現でき、延いては持続可能な輸送システムの発展への寄与を実現できる。
【0086】
(構成7)記憶部とプロセッサとを備え、車両に搭載されたデバイスを制御する制御装置が実行する制御プログラムを格納した記憶媒体であって、前記プロセッサにより、前記プロセッサが前記記憶部に記憶されたプログラムの実行を開始した後で、前記プログラムを部分的に実行して検証する検証動作を実行可能とし、前記プロセッサの負荷の状態に応じて、前記検証動作の実行態様を変更させる制御プログラムを格納した、記憶媒体。
構成7の記憶媒体が格納したプログラムによれば、車両に搭載されたデバイスの制御に対する影響を抑えながら、デバイスを制御するプログラムの検証を行うことができるので、プログラムの検証を行う機会を増やすことができる。このため、プログラムの動作の安定化や不適切なプログラムの挙動の防止等を実現でき、延いては持続可能な輸送システムの発展への寄与を実現できる。
【符号の説明】
【0087】
1…車両制御システム、2…セントラルECU、4、4a-4c…通信ライン、20…ゲートウェイECU、20a…第1ゲートウェイECU、20b…第2ゲートウェイECU、20c…第3ゲートウェイECU、30、30a-30i…ECU(制御装置)、31…プロセッサ、32…メモリ(記憶部)、41…走行系ECU(制御装置)、42…ボディ系ECU(制御装置)、51…実行部、52…検証部、61…OS、62…アプリA、63…アプリB、V…車両。