特許第6803709号(P6803709)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立オートモティブシステムズ株式会社の特許一覧

<>
  • 特許6803709-車両制御装置および車両制御システム 図000002
  • 特許6803709-車両制御装置および車両制御システム 図000003
  • 特許6803709-車両制御装置および車両制御システム 図000004
  • 特許6803709-車両制御装置および車両制御システム 図000005
  • 特許6803709-車両制御装置および車両制御システム 図000006
  • 特許6803709-車両制御装置および車両制御システム 図000007
  • 特許6803709-車両制御装置および車両制御システム 図000008
  • 特許6803709-車両制御装置および車両制御システム 図000009
  • 特許6803709-車両制御装置および車両制御システム 図000010
  • 特許6803709-車両制御装置および車両制御システム 図000011
  • 特許6803709-車両制御装置および車両制御システム 図000012
  • 特許6803709-車両制御装置および車両制御システム 図000013
  • 特許6803709-車両制御装置および車両制御システム 図000014
  • 特許6803709-車両制御装置および車両制御システム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6803709
(24)【登録日】2020年12月3日
(45)【発行日】2020年12月23日
(54)【発明の名称】車両制御装置および車両制御システム
(51)【国際特許分類】
   G06F 9/48 20060101AFI20201214BHJP
   B60R 16/023 20060101ALI20201214BHJP
【FI】
   G06F9/48 300F
   B60R16/023 P
【請求項の数】10
【全頁数】15
(21)【出願番号】特願2016-183623(P2016-183623)
(22)【出願日】2016年9月21日
(65)【公開番号】特開2018-49405(P2018-49405A)
(43)【公開日】2018年3月29日
【審査請求日】2019年2月7日
(73)【特許権者】
【識別番号】509186579
【氏名又は名称】日立オートモティブシステムズ株式会社
(74)【代理人】
【識別番号】100098660
【弁理士】
【氏名又は名称】戸田 裕二
(72)【発明者】
【氏名】大塚 敏史
(72)【発明者】
【氏名】石郷岡 祐
(72)【発明者】
【氏名】櫻井 康平
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開2007−219834(JP,A)
【文献】 特開2011−100338(JP,A)
【文献】 特開2001−125797(JP,A)
【文献】 特開2006−277634(JP,A)
【文献】 特開2011−198346(JP,A)
【文献】 特開2009− 86733(JP,A)
【文献】 特開平 8−212088(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455−9/54
B60R 16/023
(57)【特許請求の範囲】
【請求項1】
時間によりタスクを起動する制御を行う車両制御装置において、
各タスクの起動時間に実行状態である実行中タスクを確認して、該実行中タスクが継続実行可能であるか否かを判定し、
前記実行中タスクが継続実行可能でないと判定される場合には、前記実行中タスクの終了を行い、
前記実行中タスクが継続実行可能と判定される場合には、
実行中タスクが実行されているスロットとは異なる、次に実行可能なスロットまで前記実行中タスクの一時停止を行い、前記次に実行可能なスロットになったタイミングで前記実行中タスクの実行を再開することを特徴とする車両制御装置。
【請求項2】
請求項1に記載の車両制御装置において、
前記継続実行可能である場合の判断は、前記実行中タスクの起動時間からの累積実行時間により判定することを特徴とする車両制御装置。
【請求項3】
請求項1に記載の車両制御装置において、
前記実行中タスクの子タスクについても実行中タスクと同様に判定後の処理を行うことを特徴とする車両制御装置。
【請求項4】
請求項1に記載の車両制御装置において、
各スロットにおけるタスクの実行時間および終了時の動作を記録することを特徴とする車両制御装置。
【請求項5】
請求項1に記載の車両制御装置において、
継続実行可能であるタスクを起動した際に、前記タスクおよび他タスクが共にアクセスするデータについて前記該タスクのみがアクセスする領域にコピーすることを特徴とする車両制御装置。
【請求項6】
請求項5に記載の車両制御装置において、
前記領域へのコピーは、タスクの実行開始時間より以前に実行することを特徴とする車両制御装置。
【請求項7】
請求項1に記載の車両制御装置において、
該実行中タスクが継続実行可能であるか否かを判定するために用いるスケジューリングテーブルを設計情報から作成することを特徴とする車両制御装置。
【請求項8】
請求項7に記載の車両制御装置において、
前記スケジューリングテーブルにおける継続実行可能であるか否かを、安全性の判定に基づいて設定することを特徴とする車両制御装置。
【請求項9】
請求項7に記載の車両制御装置において、
前記スケジューリングテーブルの作成において、設計情報のタスクの制御周期または実行時間を測定またはネットワークから取得し、スケジューリングテーブルを作成することを特徴とする車両制御装置。
【請求項10】
請求項に記載の車両制御装置を含み、
前記スケジューリングテーブルの作成において、設計情報のタスクの制御周期または実行時間を測定またはネットワークから取得し、各車両制御装置がスケジューリングテーブルを作成することを特徴とする車両制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車両制御装置および車両制御システムに関する。
【背景技術】
【0002】
本技術分野の背景技術として、特開2016−013782号公報(特許文献1)がある。この公報には、「定時タスクの実行を適切に管理する車載電子制御装置を提供する。」ことを課題とし、解決手段として、「車載電子制御装置は、所定時間間隔で起動される定時タスクの処理A、B、Cのうち必須の処理Aを実行してから(S400)、定時タスクが次回起動されるまでの現在時刻からの残り時間Xを算出し(S404)、定時タスクよりも優先度が上位の上位タスクが残り時間Xの間で実行される実行時間Zを残り時間Xの長さに応じて算出する(S408、S410、S412)。車載電子制御装置は、残り時間Xと実行時間Zとの差(X−Z)を定時タスクの実行可能時間として算出し、実行可能時間に基づいて処理B、Cのうち処理Bを実行するか否かを判定する(S414)。車載電子制御装置は、S414の判定結果に基づいて処理Bの実行を管理する(S416、S418)。」と記載されている。
【0003】
また別の背景技術として、特開2005−071141号公報(特許文献2)がある。この公報には、「タスク構成が大きく変わらない限りタスク数が増加してもスタックの総容量を増加する必要がないと共に、高いスタック利用効率が得られるスタック管理方法を提供する。」ことを課題とし、解決手段として、「中断中の全タスクが共用可能なタスクスタックを設け、そのタスクスタックの記憶領域を所定のブロック長を持つ複数のブロックから構成して、前記データを前記ブロックに分けて記憶するようにする。あるタスクの実行を中断するために前記共有スタック内のデータを前記タスクスタックに退避する際には、前記共有スタック内のデータ量に応じて未使用の前記ブロックに記憶させ、当該ブロックの識別データと当該タスク用の識別データを記憶する。前記ブロック識別データと前記タスク識別データを用いて前記データを前記共有スタックに復帰する。」と記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2016−013782号公報
【特許文献2】特開2005−071141号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記背景技術ではタスクを優先度制御、時間駆動型スケジューリングにより動作させる場合に、タスクの有する条件に基づき効率的にシステムを動作させる方法について記載されている。
【0006】
しかし、制御システムを高信頼化させるために用いられる時間駆動型スケジューリングなど、ある定められた時間内に動作させるタスクを固定するスケジューリング方式において、システム設計時のタスク統合を容易化させる方法については述べられていない。
【0007】
特に制御周期が短いタスク(例:1ms周期)と、実行時間の長いタスク(例:5ms)を統合する場合には、実行時間の長いタスクを分割する必要があり、設計が困難である。
【0008】
本発明は上記課題を鑑みて為されたものであり、タスクの統合を容易化させる車両制御装置および車両制御システムを提供する。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明の一実施の態様は、例えば特許請求の範囲に記載されている技術的思想を用いればよい。例えば、時間によりタスクを起動する制御を行う車両制御装置において、各タスクの起動時間に実行状態である実行中タスクを確認して、該実行中タスクが継続実行可能であるか否かを判定し、前記実行中タスクが継続実行可能と判定される場合には、前記実行中タスクの一時停止を行い、前記実行中タスクが継続実行可能でないと判定される場合には、前記実行中タスクの終了を行う。
【発明の効果】
【0010】
本発明によれば、時間駆動スケジューリングを実現する際に、タスクの統合を容易化させることが可能となる。
【図面の簡単な説明】
【0011】
図1】本発明の第1の実施例にかかるスケジューリング実行時の判定フローである。
図2】システムの例である。
図3】車両制御システム構成の例である。
図4】コントローラの構成例である。
図5】コントローラのソフトウェアモジュール構成の例である。
図6】タスクの状態遷移例である。
図7】時分割制御のスロットとタスク実行の例である。
図8】スケジュールテーブルの例である。
図9】動作ログの例である。
図10】本発明の第2の実施例にかかるタスク管理部のデータコピーの例である。
図11】本発明の第3の実施例にかかる設計情報の例である。
図12】本発明の第4の実施例にかかるスケジューリング実行時の判定フローである。
図13】タスクの設計情報および動作情報の例である。
図14】タスクの実行結果の例である。
【発明を実施するための形態】
【0012】
以下、本発明に好適な実施形態の例(実施例)を説明する。本実施例は、主には車両システムにおける車両制御システム、および車両制御装置について説明しており、車両システムにおける実施に好適であるが、車両システム以外への適用を妨げるものではない。
【実施例1】
【0013】
<車両制御システムの構成>
図2は本実施例の車両制御システムおよび車両制御装置を有する車両システムの概要である。1は自動車など内部に車両制御システムを有する車両システム、2は例えば車載ネットワーク(CAN:Controller Area Network、CANFD:CAN with Flexible Data−rate、Ethernet(登録商標)、等)とコントローラ(ECU:Electronic Control Unit等)により構成される車両制御システム、3は、車両システム1の外部と無線通信(例えば携帯電話の通信、無線LAN、WAN、C2X(Car to X:車両対車両または車両対インフラ通信)等のプロトコルを使用した通信、またはGPS:Global Positioning Systemを用いた通信)を行い、外界(インフラ、他車、地図)の情報または自車に関する情報を取得・送信などの無線通信を実施、または診断端子(OBD)やEthernet端子、外部記録媒体(例えばUSBメモリ、SDカード、等)端子などを有し、車両制御システム2と通信を実施する通信装置、4は、例えば2と異なる、または同一のプロトコルを用いたネットワークにより構成される車両制御システム、5は、車両制御システム2の制御に従い、車両運動を制御する機械および電気装置(例えばエンジン、トランスミッション、ホイール、ブレーキ、操舵装置等)の駆動を行うアクチュエータ等の駆動装置、6は、外界から入力される情報を取得し、後述する外界認識情報を生成するための情報を出力する、カメラ、レーダ、LIDAR、超音波センサなどの外界センサ、および、車両システム1の状態(運動状態、位置情報、加速度、車輪速度等)を認識する力学系センサにより構成される認識装置、7は、ネットワークシステムに有線または無線で接続され、ネットワークシステムから送出されるデータを受信し、メッセージ情報(例えば映像、音)など必要な情報を表示または出力する、液晶ディスプレイ、警告灯、スピーカなどの出力装置、8は、ユーザが車両制御システム2に対して、操作の意図や指示を入力する入力信号を生成するための、例えばステアリング、ペダル、ボタン、レバー、タッチパネル、等の入力装置、9は、車両システム1が外界に対して、車両の状態等を通知するための、ランプ、LED、スピーカ等の通知装置、を示している。
【0014】
車両制御システム2は、その他の車両制御システム4、無線通信部3、駆動装置5、認識装置6、出力装置7、入力装置8、通知装置9などと接続され、それぞれ情報の送受信を行う。
【0015】
図3は、車両制御システム2のH/W(Hardware)構成例を示している。301は車載ネットワーク上のネットワーク装置を接続するネットワークリンクであり、例えばCANバスなどのネットワークリンク、302はネットワークリンク301および駆動装置5や認識装置6や301以外のネットワークリンク(専用線含む)に接続され、駆動装置5や認識装置6の制御および情報取得、ネットワークとのデータ送受信を行うECU(Electronic Control Unit:電子制御ユニット)、303は複数のネットワークリンク301を接続し、それぞれのネットワークリンクとデータの送受信を行うゲートウェイ(以下GW)、を示している。
【0016】
ネットワークトポロジの例は、図3に示す2つのバスに複数のECUが接続されているバス型の例以外にも、複数のECUが直接GWに接続されるスター型や、ECUが一連のリンクにリング状に接続されているリンク型、それぞれの型が混在し複数のネットワークにより構成される混在型、等がある。GW303とECU302については、それぞれGW機能を有するECU、またはECUの機能を有するGWと、がある。
【0017】
ECU302はネットワークから受信したデータをもとに、駆動装置5への制御信号の出力、認識装置6からの情報の取得、ネットワークへの制御信号および情報の出力、内部状態の変更、などの制御処理を行う。
図4は、本発明にかかるネットワーク装置であるECU302またはGW303の内部構成の一例である。401はキャッシュやレジスタなどの記憶素子を持ち、制御を実行するCPU、GPU、FPGAなどのプロセッサ、402はネットワークリンク301またはネットワークや専用線で接続された駆動装置5または/および認識装置6に対してデータの送受信を行うI/O(Input/Output)、403は図示しないクロックなどを使用し、時間および時刻の管理を行うタイマ、404はプログラムおよび不揮発性のデータを保存するROM(Read Only Memory)、405はプログラムおよび揮発性のデータを保存するRAM(Random Access Memory)、406はECU内部での通信に用いられる内部バス、を示している。
【0018】
プロセッサはマルチコアと呼ばれる内部に1つ以上の複数の演算装置を持つものを含む。またタイマについては図に示す通りネットワーク経由でアクセスするものと、プロセッサ自身が有する場合の両方がある。
【0019】
次にプロセッサ401で動作するソフトウェアモジュールの構成について図5に示す。501はソフトウェアモジュール全体の制御、特に後述するタスクを管理するタスク管理部、502は、通信I/F402の動作および状態を管理し、内部バス406を介し通信I/F402に指示を行う通信管理部、503は、タイマ403を管理し、時間に関する情報取得や制御を行う時間管理部、504は後述する動作ログを管理する動作ログ管理部、505は車両制御システム2を動作させるための演算や制御等を実行するためのタスク、506は車両制御に必要な情報を保持するデータテーブル、507は後述するスケジュールテーブル、508は後述する動作ログ、を表している。
【0020】
これら図5の構成についてはプロセッサ401上の動作概念を示したものであり、動作時に必要な情報はROM404およびRAM405から適宜取得、またはROM404およびRAM405に適宜書き込み、を行い動作する。
【0021】
<タスク>
タスク505は、スレッド、アプリケーション、プロセス、ソフトウェアコンポーネント(SWC)とも呼ばれるソフトウェアモジュールの動作単位の一つであり、前述した通信管理部502および時間管理部503、動作ログ管理部504等もタスクである場合もある。
【0022】
タスクは後述する状態遷移により実行状態となった場合にプロセッサ401により実行され、各タスクに割り当てられた制御(プログラムの実行)を行う。例えば通信管理部503またはI/O402を介してネットワークおよび駆動装置または認識装置からデータを入手、データテーブル506のデータに対して必要な処理の実行、通信管理部503またはI/O402を介してネットワークまたはI/Oにデータを出力する、等の処理を行い、車両制御システムを動作させる。
【0023】
タスク間でデータを共有する場合には、データテーブル506の特定の領域に書き込み側タスクが書き込みを行い、また読み込み側タスクが前記特定の領域からデータを読み出すことによりデータの共有を行う。このデータに対するアクセスを行う場合に、後述する排他制御を実施する。
【0024】
<排他制御>
タスク間でのデータの共有や動作の調停を行うため、各タスクは共有リソース(例えばプロセッサ401やメモリ領域(RAM405、データテーブル506、等)、I/O402に対する排他制御を実施する。排他制御には、はセマフォ、ミューテックス、フラグ等を使用し、例えばあるタスクがセマフォを保有(減算)することにより、他のタスクは同じセマフォを保有できなくなる等の管理を行う。これにより、共有リソースへの排他制御を実現する。
【0025】
<タスクの状態遷移>
図6にタスクの状態遷移の例について示す。タスク管理部501は前記タスク505に対して、このような状態遷移に基づき管理を行う。
【0026】
まずタスク管理部501が新規に生成したタスクは、最初に休止状態に移行され、その後タスク管理部501が前記タスクを起動し、実行可能状態に遷移させる。
【0027】
実行可能状態においては、例えば時間駆動スケジューリングにおいて、該当タスク(例えばタスクT1)が実行可能な時間(スロット)になった場合には、タスク管理部501はタスクT1が実行権を獲得したとし、実行状態に遷移させる。実行状態になったタスクについてはプロセッサ401にて前記タスクの処理を実行する。
【0028】
その後、前記タスクが実行可能な時間が終了した場合、もしくは前記タスクの処理が終了し前記タスクが実行権を放棄する命令を発行した場合には、タスク管理部501はタスクT1を実行可能状態へと遷移させる。その際にタスク管理部501は次に実行すべきタスクが存在する場合には、次に実行すべきタスクを実行可能状態から実行状態へと遷移させる。
【0029】
一方、実行状態にあるタスクが例えばリソースの要求を行い、排他制御によりリソースが取得できなかった場合には、タスク管理部501は前記タスクを待機状態へと遷移させる。待機状態に遷移したタスクはリソースが取得できるまでは待機状態となる。その後、別のタスクがリソースを解放するなどにより、前記待機状態のタスクがリソースを取得可能な状態になった場合には、タスク管理部501は前記リソースを要求して待機状態となっていたタスクを実行可能状態に遷移させる。
【0030】
実行可能状態、実行状態、または待機状態であるタスクが、例えばタスク管理部501や他のタスク等から強制終了の命令を受けた場合には、前記命令を受けたタスクは休止状態となり、再びタスク管理部501から起動の命令を受けるまでは休止状態となる。タスク管理部501から起動の命令を受けた休止状態のタスクは、実行可能状態へと遷移する。
【0031】
このようにタスクについてはタスク管理部501からの命令を受け、または自ら実行権の放棄、リソースの要求等を行うことによりこれらの状態遷移を行う。
【0032】
ここでマルチコアなどの環境においては、前記実行状態のタスクが複数存在する場合もあるが、状態遷移としては同様に実施される。
【0033】
待機状態においては、タスクの管理情報(スタック、ヒープ、前記タスクが管理するデータテーブルの領域、保有しているリソース)等は次の実行可能状態まで引き継がれ、休止状態では上記管理情報の一部および全てが初期化される。そのため待機状態から実行可能状態および実行状態になるまでの時間は短いが、休止状態から実行状態になるまでには時間がかかり、また休止状態となる前の管理情報を引き継げないため、タスクの処理が不連続となる場合がある。
【0034】
また一方で、休止状態になり管理情報を初期化することにより、無限に同じ処理を繰り返す様な不正な状態から、初期状態などの不正で無い状態に戻すことも可能となる。
【0035】
<時分割制御>
タスクの実行について、時分割で制御した場合の例について図7に示す。図7(a)は横軸が時間を示しており、それぞれの時間がスロット(ウィンドウ)として区切られ、それぞれのスロットにID(ここではS1からS11)が割り振られている。ここで各スロットでは割り当てられたタスクのみが動作可能とすることで、時分割でのタスクの実行が可能となる。ある時刻で実行するタスクを選択する動作をスケジューリングと呼ぶ。
【0036】
スケジューリングに用いるスケジュールテーブル507の構成について図8に示す。スケジュールテーブル507はスロットID、スロットの開始時刻、スロットの終了時刻、スロットに割り当てられたタスクのID、後述する跨り判定に使用する時間エラー判定フラグ、により構成されている。このようにして各スロットの時間と、その時間内で動作可能なタスクが予め割り振られている。
【0037】
タスクの動作例について図7(b)に示す。ここでタスク管理部501は時刻0.0において例えば前記タイマ403を用いたアラームにより動作開始する様に設定しておき、そのタイミングでスケジューリングを実施する。前記アラームにより動作開始したタスク管理部501は、現在時刻が0.0であると確認し、スロットIDがS1であることから、タスクIDがT1のタスクの状態を確認し、実行状態にするように処理を行う。その後タスク管理部501は次のスロット開始時刻(この例では時刻0.2)にアラームを設定して動作を終了する。その後タスクT1は処理を行い、処理が終了した場合には自らリソース要求等により待機状態に移行する。このようにして決められた時刻でのスケジューリングによるタスク実行処理を行う。
【0038】
スケジュールテーブル507にはここでは開始時刻と終了時刻の両方を記載しているが、開始時刻のみでも良い。その場合には各スロットの終了時刻は次のスロットの開始時刻にて表現される。そのようにすることにより、スケジュールテーブル507のデータ量を削減可能である。
【0039】
スロットにタスクが割り当てられていない場合には、専用のタスクIDにて現在のスロットにはタスクが割り当てられていないことを記載する。(図8のタスクID:NA)
【0040】
<跨り判定>
次に跨り判定の処理について図1を用いて説明する。跨りとは、スロットの終端でタスクの処理が終了しない場合に強制終了するだけでなく、スロット内で処理が終了しないことが許可されるタスクを予め想定し、次の実行可能なスロットまでタスクの処理を一時停止させることである。
【0041】
タスク管理部501が前記時分割制御に記載のスロット開始時刻のアラームにて動作開始した場合に、タスク管理部501は前のスロットのタスクが実行状態か否かの判定を行う(S101)。判定は、現在実行中のタスクのID、または前のスロットのタスクが待機状態に移行する際のリソースを要求しているか否か、等により行う。前のスロットのタスクが実行状態で無い場合には(S101のno)、次のタスクの実行時刻をスケジュールテーブル507から取得してアラームを設定し(S102)、現在のスロットのタスクをスケジュールテーブル507から取得して実行状態にする処理を行う(S103)。
【0042】
前のスロットのタスクが実行状態である場合には(S101のyes)、前のスロットの時間エラー判定フラグの内容を判定する。前記時間エラー判定フラグが“する”の場合(S104のyes)、前のスロットのタスクを強制終了させる。その際には後述する方法でエラー情報を含む動作ログを作成し(S105)、現在実行状態のタスクを強制終了させて休止状態にする(S106)その後は通常時同様、次のタスクの実行時刻をスケジュールテーブルから判定してアラームを設定し(S102)、現在のスロットのタスクをスケジュールテーブルから判定して実行状態にする処理を行う(S103)。
【0043】
一方で、前記時間エラー判定フラグが“しない”の場合(S104のno)、前のスロットのタスクについては待機状態にする(S107)その後は通常時同様の処理を実行する(S102、S103)。
【0044】
このようにして時分割制御による跨り処理を実行することにより、タスクに設定された時間エラー判定フラグの状態に応じて、タスクを待機状態にすることや強制終了を行い、他のウィンドウを跨るタスクの処理について実行可能となる。
【0045】
S103において、現在スロットのタスクを実行する際には、実行するタスクの現在の状態に応じて処理を行う。例えば待機状態(自らリソースの取得要求による待機状態、またはタスク管理部により待機命令)であれば、それぞれの待機状態に応じたリソースの開放や実行可能状態への遷移命令により動作を再開する。また休止状態であれば、起動により実行可能状態と遷移させる。
【0046】
前のスロットのタスクが実行状態であった場合の処理として、タスク管理部501は、強制終了の代わりに一度待機状態にさせ、次のタスクを実行状態にした後等に休止状態にさせても良い。そのようにすることにより次のタスクを早く実行状態にすることが可能になる。
【0047】
<子タスクの管理>
前記跨り処理においては、それぞれのタスクが生成した子タスクについても同様に管理することが必要となる。例えばスロットIDS3にて、タスクT3が子タスク(例えばタスクT3A)を生成した場合、跨り処理においては子タスクも同様に待機状態にする必要がある。そのためタスク管理部501は、待機状態にする処理をタスクT3およびタスクT3Aの双方に実施する。また同様に待機状態からの再開も、タスクT3およびタスクT3Aの双方に実施する。これにより、タスクが子タスクを生成した場合にも、同様に跨り判定に基づく処理が可能となる。
【0048】
上記子タスクへの処理については、子タスクを生成したタスクが、前記子タスクのIDをタスク管理部501に通知する、または各タスクが待機状態に遷移する命令を受けた場合に、各タスクの管理の基で、子タスクを待機状態に移行する、といった方法により実現可能である。
【0049】
<動作ログ>
動作ログの作成方法について図9を用いて説明する。ここでは各スロットでのタスクの開始時刻、終了時刻、タスクID、終了時の状態について記録する例を示している。これら状態を動作ログ管理部508はタスク管理部501からタスクの状態遷移のタイミング等で受信し、動作ログ508として記録する。特に終了時の状態について前記跨り判定処理においてエラーログおよび跨り時の動作を記録しておくことにより、異常が発生したため強制終了したか、終了しなかったが想定通りの跨り処理が発生したかを動作ログから確認することが可能となる。
【0050】
動作ログについては、前記通信管理部502およびネットワークリンク301および通信装置3等を介して外部に出力することにより、車両制御システムの状態を外部から監視可能となる。
【実施例2】
【0051】
本発明にかかる第2の実施例について説明する。第1の実施例と異なる点は、タスク管理部501が、タスク間で共有アクセスするデータについてコピーを行う点である。
【0052】
図10はタスク505とタスクがアクセスするデータテーブル507内部の領域について示したものである。ここで領域Aはタスク1とタスク2が共にアクセスを行い、セマフォ等による排他制御が必要な領域である。そしてタスク2は跨りを行うタスクである。このような場合に、タスク2が領域Aへのアクセスを行うためセマフォを獲得している際に、タスク2が前記跨り判定時の処理において一時停止を行った場合、タスク1が領域Aにアクセスできず、デッドロック等を起こす可能性がある。
【0053】
そこでタスク管理部501は、タスク2など跨りを行うタスクの実行開始時には、共有領域のデータについて、別の領域(例えば領域B)にコピーを行う。このようにすることにより、タスク2は排他制御を行うリソースにアクセスする必要が無くなり、デッドロックを防ぐことが可能となる。
【0054】
また同様にタスク2の終了時、またはタスク2の次のタスクの実行開始前、またはタスク1の実行開始前に、前記領域Bのデータについて領域Aに書き戻すことにより、タスク1からのデータアクセスに対しても正しく値を返すことが可能となる。
【0055】
ここでタスク2の動作については、セマフォの獲得(排他制御リソースへのアクセス権限取得)命令についてタスク管理部501を介してアクセスし、アクセスするデータについて排他制御を行わない領域にコピーを行った場合には、前記タスク管理部501が前記セマフォの獲得命令を実行しない様に隠蔽することにより、上記コピーを行う場合と行わない場合とでタスク2のソースコードを置き変えすることなくソフトを移植することが可能となる。
【0056】
この例でタスク2がアクセスするデータ領域を領域Aから領域Bに変更する方法としては、仮想メモリの様なアクセス方式に対して物理メモリのマップを変更する、タスク2の保持するデータアクセスのアドレス、またはポインタを書き換える、ソースコードやオブジェクトコードの変数名(ラベル)を書き換える、等の手段により実現可能である。
【0057】
ここでタスク管理部501がデータをコピーする時間については、タスク2のスロットの開始時間をt2、コピーの所要時間をtcとした場合、前のタスクが終了している場合には時刻t2−tcに開始を行うことが望ましい。そのようにすることにより、データのコピーを行う場合でも、タスクの実行開始時間を遅らせずに実行可能となる。同様にタスク2のスロットの開始時間前に上記書き戻し処理(所要時間tcr)を行う場合には、その時間についても考慮し、t2−tc−tcrの時間に処理を開始することが望ましい。
【実施例3】
【0058】
本発明にかかる第3の実施例について説明する。本実施例においては、スケジュールテーブル507について設計情報や動作時に測定した情報から自動的に作成を行う。
【0059】
設計情報1101の例について図11に示す。ここでは各タスクの設計情報について、タスクのID、制御周期、(最悪時)実行時間、跨り許可の有無、といった情報を与える。これら情報を基にスケジュールテーブル507を作成する。
【0060】
これにより、例えばタスクIDがT3のタスクは、跨り許可がOKとなっていることから、例えば図8に示す様なスケジュールテーブルを作成し、跨りが発生するスロット(S3およびS5)について、時間エラー判定を“しない”とするフラグを付与する。このようにすることにより、設計情報1101から、スケジュールテーブル507を作成することが可能になる。
【0061】
この例において設計情報1101でタスクIDがT2のタスクは跨り許可をOKとしているが、跨りを発生させずに配置可能であるため、時間エラー判定を“しない”とするフラグを付与しない。
【0062】
またこの例において、タスクIDがT3のタスクの跨り許可がNGであった場合には、スケジュールテーブル507の自動作成時に、跨りNGのためスケジューリングテーブル作成が不可能である旨のエラーメッセージを通信管理部502を介してネットワークリンク301や通信装置3に出力する。
【0063】
ここで跨り許可NGとするタスクについては、例えば安全関連機能など、跨り等による処理の中断が好ましくないタスクについて跨り許可NGという指示を与えることにより、自動作成時でも安全関連機能は跨りを発生させず、処理の遅延が発生しない設計が可能になる。
【0064】
またスケジュールテーブルの作成については、上記設計情報1101からの作成だけでなく、ネットワークリンク301からの取得も可能である。これにより機能の更新時において、処理装置内部で計算するだけでなく、外部ネットワークからスケジュール情報を設定することも可能となる。
【0065】
上記スケジュールテーブル507の自動作成については、車両制御システムの設計時や初回の起動時だけでなく、例えば車両制御システム2の起動時(イグニッションのON等)に毎回計算することや、車両制御システム2の構成が変更になった場合に、前記設計情報1101の制御周期や実行時間の再計算および再取得も含めて実行することも可能である。これによりシステムの状態の変化に合わせて、スケジュールテーブル507を再計算し、システムの状態に合わせたスケジュールテーブルの構築が可能となる。
【実施例4】
【0066】
本発明の第4の実施例にかかるスケジューリング実行時の判定フローについて、時間エラー判定フラグを用いず、設計情報である予定実行時間による自動判定を行う例について図12を用いて説明する。第1の実施例と異なる点は、図1におけるS104の時間エラーフラグによる判定が、S1201の累積実行時間と想定実行時間による判定に置き換わっている点である。
【0067】
ここで動作例について、図13に記載されたタスクごとの制御周期および予定実行時間を基に、図14に示す開始および終了時刻で各タスクが動作している例について説明する。
【0068】
この場合で例えば時刻0.4において、タスクT2は、設計情報1101の示す予定実行時間(0.2)を超過しているため、S1201の判定のyesにより、前のスロットのタスク(T2)を強制終了させる。一方で時刻1.0において、タスクT3の累積実行時間(0.6ms)は図13で示す設計情報の予定実行時間(2.2ms)を超過していないため、S1201の判定はnoとなり、跨り処理を行う。
【0069】
このようにしてスケジュールテーブルによる時間エラー判定フラグを用いない場合でも、タスクごとの設計情報の予定実行時間と累積実行時間を比較することにより跨り判定を行うことが可能となる。
【0070】
この場合、図13に示す設計情報1301についてはスケジュールテーブル507、またはデータテーブル506などと同様にECU内部に保有する。
【0071】
以上説明した実施例によれば、時間駆動によるスケジューリングにおいて、他のタスクのスロットを跨る必要があるタスクが存在している場合に、タスクに跨り処理を許可する情報を付与し、跨り処理を許可されたタスクに対しスロットの終端で動作していた場合に一時停止する処理を行う。即ち、特定のタスクについては、タスクのウィンドウ時間を過ぎた場合でも強制終了させずにタスクの実行を一時中断する。これにより、時間駆動スケジューリングを実現する際に、実行時間の長いタスクを分割する再設計を不要にするなど、タスクの統合を容易化させつつかつ制御システムのタスクの動作時間に影響を与えないことが可能になる。これにより、時間駆動スケジューリングで動作する高信頼なシステムでタスクを統合することが容易となる。
【0072】
また、前記タスクが子タスクを生成する処理を行う場合でも同様に跨り処理を行うことが可能となる。また、これら処理について動作ログを記録することにより、タスクが跨り等を行った場合でも外部からその動作が確認可能となる。
【0073】
また別の実施例においては、タスク間で共有するデータがある場合に、前記データを予め別の領域に移すことにより、跨り処理時のタスクのリソース保持を防ぐことが可能となる。またそのタイミングを予めコピー時間を考慮したタイミングで実施することにより、タスクの実行開始を遅らせることなく実行状態に移行することが可能となる。
【0074】
また別の実施例においては、スケジュールテーブルについて設計情報や測定した動作の情報から自動的に跨り処理を含むテーブルを作成することが可能となる。
【0075】
さらに別の実施例では、跨り処理を実施するフラグを有しない場合でも、タスクの予定実行時間と累積実行時間から跨り処理を行うか否かを判定し、上記跨り処理を実現することが可能となる。
【符号の説明】
【0076】
1…車両システム、2…車両制御システム、3…通信装置、4…車両制御システム、5…駆動装置、6…認識装置、7…出力装置、8…入力装置、9…通知装置、301…ネットワークリンク、302…ECU、303…GW、401…プロセッサ、402…I/O、403…タイマ、404…ROM、405…RAM、406…内部バス、501…タスク管理部、502…通信管理部、503…時間管理部、504…動作ログ管理部、505…タスク、506…データテーブル、507…スケジュールテーブル、508…動作ログ、1101…設計情報、1301…設計情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14