(57)【特許請求の範囲】
【請求項１】
車載ネットワークに接続された第一のマイコンと、
前記車載ネットワークに接続された第二のマイコンと、を有する車両用電子制御装置であって、
前記第一のマイコンは、
前記第一のマイコンの処理負荷レベルを検出する処理負荷レベル検出手段と、
前記処理負荷レベルにデータ識別情報が対応付けられた第一のテーブルと、
前記処理負荷レベルが第一の閾値以上になった場合、前記第一のテーブルにおいて前記第一の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータの受信を停止する受信データ低減手段と、を有し、
前記第二のマイコンは、
前記第一のマイコンからの通知に基づいて前記第一のマイコンの前記処理負荷レベルを推定する処理負荷レベル推定手段と、
前記処理負荷レベルに前記データ識別情報が対応付けられた第二のテーブルと、
前記処理負荷レベル推定手段が推定した前記処理負荷レベルが第二の閾値以上になった場合、前記第二のテーブルにおいて前記第二の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータを前記車載ネットワークから受信する代替データ受信手段と、
前記代替データ受信手段が受信した前記データを前記第一のマイコンに、シリアル通信の通信タイミングで送信するデータ送信手段と、を有することを特徴とする車両用電子制御装置。
【請求項２】
前記第一のマイコンは、前記処理負荷レベル検出手段が検出した前記処理負荷レベルをパルス信号の周期又は周波数により通知する処理負荷レベル通知手段を有し、
前記処理負荷レベル推定手段は、前記パルス信号の周期又は周波数から前記第一のマイコンの前記処理負荷レベルを推定する、
ことを特徴とする請求項１記載の車両用電子制御装置。
【請求項３】
前記第一のマイコンは、
前記車載ネットワークからデータを受信する毎に前記第一のマイコンに受信割り込みするデータ受信手段と、
前記データ送信手段がシリアル通信で送信したデータを、前記データ受信手段が１回の受信割り込みで受信するデータのサイズよりも大きいサイズのバッファ領域に記憶するバッファ転送手段を有し、
前記バッファ転送手段は、前記バッファ領域のサイズのデータをシリアル通信で受信した場合に、前記第一のマイコンのＣＰＵに受信割り込みする、
ことを特徴とする請求項１又は２記載の車両用電子制御装置。
【請求項４】
前記第二のマイコンは、前記第一のマイコンが送信する前記パルス信号に基づき前記第一のマイコンのプログラム実行状態を監視するマイコン監視手段を有する請求項２記載の車両用電子制御装置。
【請求項５】
前記第一の閾値は、前記第二の閾値よりも大きく、
前記代替データ受信手段は、前記受信データ低減手段が前記第一のテーブルにおいて前記第一の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータの受信を停止するよりも早く、前記第一のマイコンが受信を停止する予定の前記データを前記車載ネットワークから受信することを開始する、
ことを特徴とする請求項１〜４いずれか１項記載の車両用電子制御装置。
【請求項６】
前記受信データ低減手段は、前記第一のテーブルにおいて前記第一の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータの受信を停止することを前記第二のマイコンに通知してから所定時間の経過後に、前記車載ネットワークから前記データを受信することを停止する、
ことを特徴とする請求項１〜４いずれか１項記載の車両用電子制御装置。
【請求項７】
前記第一のテーブルには、前記処理負荷レベルが高いほど、優先順位が高いデータのデータ識別情報が対応づけられており、
前記受信データ低減手段は、前記第一のテーブルにて前記処理負荷レベルに対応づけられた前記データ識別情報のデータを前記車載ネットワークから受信することを停止し、
前記第二のテーブルには、前記処理負荷レベルが高いほど、優先順位が高いデータの前記データ識別情報が対応づけられており、
前記代替データ受信手段は、前記第二のテーブルにて前記処理負荷レベル推定手段が推定した前記処理負荷レベルに対応づけられた前記データ識別情報のデータを前記車載ネットワークから受信することを開始する、
ことを特徴とする請求項１記載の車両用電子制御装置。
【請求項８】
前記第二のマイコンは、前記処理負荷レベル毎に各領域に区分され、前記代替データ受信手段が受信した前記データを記憶する代替データバッファ領域を有し、
前記第一のマイコンが有する前記バッファ領域は、前記代替データバッファ領域の各領域と対応する同じサイズの各領域に区分されており、
前記バッファ転送手段は、前記代替データバッファ領域のデータを領域単位で、対応する前記バッファ領域の領域に格納する、
ことを特徴とする請求項３記載の車両用電子制御装置。
【請求項９】
前記バッファ転送手段は、ダイレクトメモリーアクセスコントローラである、ことを特徴とする請求項３記載の車両用電子制御装置。
【請求項１０】
車載ネットワークに接続された第一のマイコンと、
前記車載ネットワークに接続された第二のマイコンと、を有する車両用電子制御装置のデータ受信方法であって、
前記第一のマイコンは、
処理負荷レベル検出手段が前記第一のマイコンの処理負荷レベルを検出するステップと、
前記処理負荷レベルが第一の閾値以上になった場合、前記処理負荷レベルにデータ識別情報が対応付けられた第一のテーブルにおいて前記第一の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータの受信を停止するステップと、を有し、
前記第二のマイコンは、
処理負荷レベル推定手段が、前記第一のマイコンからの通知に基づいて前記第一のマイコンの前記処理負荷レベルを推定するステップと、
前記処理負荷レベル推定手段が推定した前記処理負荷レベルが第二の閾値以上になった場合、代替データ受信手段が、前記処理負荷レベルに前記データ識別情報が対応付けられた第二のテーブルにおいて前記第二の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータを前記車載ネットワークから受信するステップと、
データ送信手段が、前記代替データ受信手段が受信した前記データを前記第一のマイコンに、シリアル通信の通信タイミングで送信するステップと、
を有することを特徴とするデータ受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載ネットワークに接続された第一のマイコンと、前記車載ネットワークに接続された第二のマイコンと、を有する車両用電子制御装置に関する。
【背景技術】
【０００２】
車両では、より快適な走行を実現したり省燃費化を促進したりするため、車載装置の電子制御化が進行している。電子制御はマイコンなどの情報処理装置が搭載された電子制御装置（ＥＣＵ：Electronic Control Unit）が行うが、電子制御の多様化や高機能化などに起因して一台の電子制御装置が実行する処理が多くなり、マイコンの処理負荷が増大する傾向にある。予め、処理負荷のピークに対応できるような高機能のマイコンを搭載することが考えられるが、コスト増を招いてしまう。【０００３】
そこで、いくつかの電子制御装置には複数のマイコンが搭載されていることに着目して、マイコン間で負荷分散することが検討される。このような負荷分散はネットワークに接続されたＰＣやサーバにおいて利用されることがある（例えば、特許文献１参照。）。特許文献１には、ネットワークにほぼ同等な処理性能の計算器が接続されている状態で、各計算器が、各計算器と接続された共用記憶媒体に各計算機の負荷を記録しておく分散プロセス管理システムが開示されている。各計算器は現時点でプロセスの負荷の小さい計算機を見つけてその計算機に処理を要求する。【０００４】
しかしながら、電子制御装置に搭載される複数のマイコンは、コストを抑制するために必要最小限の処理能力を有しているため、特許文献１に記載されているように単純な負荷分散は困難である。また、多くの場合、一つの電子制御装置に搭載される複数のマイコンは処理能力が均一でない。このため、例えば、マイコンＡの処理能力がマイコンＢより低い場合、マイコンＡの処理負荷に余裕があるためマイコンＡがマイコンＢの代わりに処理しても、マイコンＢが処理した方が速いような場合も生じうる。また、マイコンＡがマイコンＢの処理を代替するため、マイコンＢが同等のサイズのＲＯＭを搭載することは、コスト的だけでなくサイズ的にも困難である。【０００５】
また、同等の処理性能のマイコンＡとマイコンＢが電子制御装置に搭載されていれば、負荷分散が可能だとしても、上述した１つの高機能のマイコンを搭載する場合と同様にコスト増を招いてしまう。【０００６】
ところで、車両の場合、高機能側のマイコンが制御処理を行うことが一般的である。この制御用のマイコンの処理負荷が高くなると徐々にタスク抜けが生じるが、走行に影響の少ないタスクからタスク抜けが生じるため、走行が困難になるということはない。しかし、制御用のマイコンやタスクの実行になんらかの異常が生じることは好ましくない。そこで、他方のマイコンは制御用のマイコンを監視するように設計されることがある。監視用のマイコンは、制御用のマイコンの処理負荷を監視し、高負荷になったと判定すると制御用のマイコンをリセットして再起動する場合がある。この場合、制御用のマイコンは汎用的なＰＣなどと比べると極めて早期に復帰（再起動）するが、短時間でも制御が行われないことは好ましくない。
【特許文献１】特開平９−３１９７２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、上記課題に鑑み、マイコンのリセットが生じる前に、電子制御装置に搭載された異なるマイコン間で負荷分散することが可能な電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、車載ネットワークに接続された第一のマイコンと、前記車載ネットワークに接続された第二のマイコンと、を有する車両用電子制御装置であって、前記第一のマイコンは、前記第一のマイコンの処理負荷レベルを検出する処理負荷レベル検出手段と、前記処理負荷レベルに前記データ識別情報が対応付けられた第一のテーブルと、前記処理負荷レベルが第一の閾値以上になった場合、前記第一のテーブルにおいて前記第一の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータの受信を停止する受信データ低減手段と、を有し、前記第二のマイコンは、前記第一のマイコンからの通知に基づいて前記第一のマイコンの前記処理負荷レベルを推定する処理負荷レベル推定手段と、前記処理負荷レベルに前記データ識別情報が対応付けられた第二のテーブルと、
前記処理負荷レベル推定手段が推定した前記処理負荷レベルが第二の閾値以上になった場合、前記第二のテーブルにおいて前記第二の閾値の処理負荷レベルに対応づけられている前記データ識別情報のデータを前記車載ネットワークから受信する代替データ受信手段と、
前記代替データ受信手段が受信した前記データを前記第一のマイコンに、シリアル通信の通信タイミングで送信するデータ送信手段と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、マイコンのリセットが生じる前に、電子制御装置に搭載された異なるマイコン間で負荷分散することが可能な電子制御装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の負荷分散の概略を模式的に説明する図の一例である。
【図２】ＨＶ−ＥＣＵに搭載された制御用マイコンと監視用マイコンの概略ブロック図の一例である。
【図３】制御用マイコン及び監視用マイコンの機能ブロック図の一例である。
【図４】制御用マイコンの処理負荷を説明する図の一例である。
【図５】処理負荷とＷＤＣ信号の周期の関係が登録された周期決定テーブルを示す図の一例である。
【図６】ＷＤＣ送信部がＷＤＣ信号を送信する手順を示すフローチャート図の一例である。
【図７】監視用マイコンの周期演算部による周期の演算を説明する図の一例である。
【図８】ＣＡＮコントローラが受信するＣＡＮフレームの指定を説明する図の一例である。
【図９Ａ】ＤＭＡＣによるＣＡＮフレームの送信を説明する図の一例である。
【図９Ｂ】ＤＭＡＣによるＣＡＮフレームの送信を説明する図の一例である。
【図９Ｃ】ＤＭＡＣによるＣＡＮフレームの送信を説明する図の一例である。
【図１０】制御用マイコンが処理負荷に応じて受信するＣＡＮフレームを制御する手順を示すフローチャート図の一例である。
【図１１】監視用マイコンが処理負荷に応じてＣＡＮフレームの受信を開始する手順を示すフローチャート図の一例である。
【図１２】監視用マイコンが制御用マイコンへＣＡＮフレームを送信する手順を示すフローチャート図の一例である。
【図１３】制御用マイコンが監視用マイコンからＣＡＮフレームを受信して、ＤＭＡバッファから読み出す手順を示すフローチャート図の一例である。
【符号の説明】
【００１１】
１１、３１    ＣＰＵ
１２、３２    ＲＡＭ
１６，３６    ＤＲＡＭ
１８，３８    ＣＡＮコントローラ
５７，６７    周期決定テーブル
５８          受信停止テーブル
６８          受信データ指定テーブル
７１，７２    ＤＭＡバッファ
９８    制御用マイコン
９９    監視用マイコン
１００  ＨＶ−ＥＣＵ
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための形態について図面を参照しながら説明する。【００１３】
〔電子制御装置における負荷分散の概略〕
図１は、本実施形態の負荷分散の概略を模式的に説明する図の一例である。ＣＡＮバス４３にＨＶ−ＥＣＵ１００が接続されている。ＨＶ−ＥＣＵ１００はＣＡＮバス４３に接続された他のＥＣＵ（ＥＦＩ−ＥＣＵ：エンジンＥＣＵ、Ａ／Ｃ−ＥＣＵ：エアコンＥＣＵ、ＡＢＧ−ＥＣＵ：エアバッグＥＣＵ、ＥＣＢ−ＥＣＵ：ブレーキＥＣＵ）と相互に通信することができる。なお、ＨＶ−ＥＣＵ１００は制御用マイコン９８と監視用マイコン９９を有している。【００１４】
ＥＣＵの処理負荷が高くなる要因にはエンジン回転数や車速の増加などが挙げられるが、これは主にイベント割込みが発生しやすくなり、割込み処理の頻度が増大するためである。割り込み処理が多くなるとコンテキストスイッチが多発するため処理負荷が高くなってしまう。そして、このようなイベント割込みは、ＣＡＮバス４３からの受信割込みによっても生じる。【００１５】
外部からの割込みによって起床されるタスクの大半は、中〜低以上の優先順位を有しているため、割込みが多発すると、他の低優先順位のタスクの処理に遅れが生じたり、タスク抜けが生じやすくなる。また、この状態の制御用マイコン９８は処理負荷が高くなっているので、監視用マイコン９９が制御用マイコンをリセットする可能性が高くなる。【００１６】
本実施形態のＨＶ−ＥＣＵ１００は、ＣＡＮ通信の受信割込みによる割り込み処理が制御用マイコン９８の処理負荷を増大させることに着目し、以下のように負荷分散を行う。
（１）制御用マイコン９８は処理負荷を監視しており、処理負荷が高くなると、優先順位の低いＣＡＮフレームの受信を停止する。
（２）制御用マイコン９８は、従来から、ＷＤＣ信号を周期的に監視用マイコン９９に送信している。本実施形態の制御用マイコン９８はこのＷＤＣ信号に処理負荷情報を重畳して、監視用マイコン９９に送信する。
（３）監視用マイコン９９は、制御用マイコン９８の処理負荷が高くなると、制御用マイコン９８が受信を停止したＣＡＮフレームの受信を開始する。そして、シリアル通信を利用して、複数のＣＡＮフレームをまとめて（一度のサイクルで）制御用マイコン９８に送信する。いわば、監視用マイコン９９は、制御用マイコン９８の代わりにＣＡＮフレームを受信する代替受信を行い、制御用マイコン９８に対しＣＡＮフレームのゲートウェイの役割を果たす。制御用マイコン９８が監視用マイコン９９からＣＡＮフレームを受信する際、受信割込みが発生するが、ＣＡＮフレームの受信割込みと比較するとその頻度を大きく低下させることができる。【００１７】
以上のような制御により、まず、制御用マイコン９８はＣＡＮフレームの受信数を減らすので受信割込みが少なくなり処理負荷を低減できる。また、制御用マイコン９８は監視用マイコン９９からＣＡＮフレームを受信するので、受信漏れが生じることもほとんどない。制御用マイコン９８が監視用マイコン９９からＣＡＮフレームを受信する頻度は、制御用マイコン９８がＣＡＮバス４３からＣＡＮフレームを受信する頻度よりも少ない。よって、同じ量のＣＡＮフレームを受信した場合を比較しても、ＣＡＮバス４３から直接ＣＡＮフレームを受信する場合よりも、監視用マイコン９９から受信した方が処理負荷の増大を抑制できる。【００１８】
なお、以下では、ＣＡＮプロトコルに基づく通信を例に説明するが、マイコンが車載ネットワークからデータの受信する際に受信割込みする通信プロトコルに対し、本実施形態の代替受信は好適に適用できる。【００１９】
また、制御用マイコンと監視用マイコンはいずれもサイクル周期毎に繰り返し下記の処理を行うものとする。制御用マイコンと監視用マイコンのサイクル周期が同じである必要はないが、本実施形態では説明のため同じとしている。サイクル周期は例えば数〜数十ミリ秒である。【００２０】
〔構成例〕
図２は、ＨＶ−ＥＣＵ１００に搭載された制御用マイコンと監視用マイコン９９の概略ブロック図の一例を示す。なお、３つ以上のマイコンを有していてもよい。制御用マイコン９８は、メインバス２１に接続された、ＣＰＵ１１、ＲＡＭ１２、ＲＯＭ１３、ＩＮＴＣ１４、ＷＤＴ１５、及び、ＤＭＡＣ１６を有し、周辺バス２２に接続されたＣＡＮコントローラ１８、ＡＤＣ１９及び入出力ポート２０を有する。メインバス２１と周辺バス２２はブリッジ１７を介して接続されている。【００２１】
監視用マイコン９９は、制御用マイコン９８よりも低い性能のマイコンであるが、性能が低くなければ本実施形態に適用できないものではない。監視用マイコン９９の性能が低くてよいのは、監視用マイコン９９の処理負荷の監視、制御用マイコン９８のリセット、ＣＡＮフレームの蓄積等が行えれば十分なためである。なお、性能の指標としては、コア数、レジスタやバスのデータサイズ、クロック周波数、ＲＡＭやＲＯＭのサイズ、プロセス世代等が挙げられる。【００２２】
ＣＰＵ１１は、ＲＯＭ１３に記憶されたプログラムを実行することでＨＶ−ＥＣＵ１００に必要な処理を行う。ＲＡＭ１２は、ＣＰＵ１１がプログラムを実行する際の作業メモリである。また、ＲＯＭ１３にはＯＳ（Operating  System）、デバイスドライバ、ミドルウェアなどシステム系のプログラムが記憶されている。【００２３】
本実施形態にて説明されるＣＡＮフレームの受信制御は、ＨＶ−ＥＣＵ１００に限定されるものではなく、２つのマイコンが搭載されたＥＣＵであれば好適に適用できる。ＣＡＮフレームの受信制御をＨＶ−ＥＣＵ１００に適用した場合、ＣＰＵ１１は、以下のような処理を行う。まず、アクセル開度、車速情報、ブレーキペダルの踏み込み状況、及び、バッテリの充電状態（ＳＯＣ）を受信する。ＣＰＵ１１は、アクセル開度と車速に対応づけて要求トルクが登録されているマップを参照して、アクセル開度と車速から要求トルクを決定する。そして、この要求トルクに対応する駆動力がリングギヤに出力されるように、最適燃費ラインなどを参照して、エンジン回転数及びモータの回転数を決定する。ＣＰＵ１１は、決定したエンジン回転数、及び、モータ回転数をＣＡＮバス４３を介してエンジンＥＣＵやモータＥＣＵに送信する。【００２４】
ＩＮＴＣ１４は割込みレジスタを監視して、周辺機器からの割り込み要求を割込みの優先順位に基づき調停してＣＰＵ１１に通知する。これによりＣＰＵ１１は、例えばＩＳＲ（Interrupt Service Routine）を実行して、割込みした周辺機器に応じて定められているタスクを起床させる。【００２５】
ＷＤＴ１５は、動作クロックをカウントして計測した時間が予め定められたリセット時間に達すると（オーバーフローすると）、異常検出（マイコンリセット、ＣＰＵ割込み等）する回路である。本実施形態では、ＷＤＴ１５と同様の機能を監視用マイコン９９が行うためＷＤＴ１５はなくてもよい。【００２６】
ＤＭＡＣ１６は、ＲＡＭ１２と周辺回路の間や、ＲＡＭ１２内で、ＣＰＵ１１を介することなくデータを移動する。ＣＰＵ１１が入出力ポート２０から外部にデータを送信する場合、ＣＰＵ１１はＲＡＭ１２に記憶されているデータのアドレスをＤＭＡＣ１６に設定し送信先の周辺回路を指示する。ＤＭＡＣ１６は、ＲＡＭ１２から読み出したデータを入出力ポート２０に書き込む。また、ＣＰＵ１１が外部からデータを受信する場合、入出力ポート２０にデータが到達すると、ＤＭＡＣ１６がそれを検出してＲＡＭ１２にデータを転送する。受信が終了するとＤＭＡＣ１６はＩＮＴＣ１４に割込み要求することで、ＣＰＵ１１はＲＡＭ１２のデータを読み出すことができる。なお、受信時にＤＭＡＣ１６がデータを書き込むアドレスは予め決まっている。制御用マイコン９８のＤＭＡＣ１６は主に監視用マイコン９９からデータの受信を行う。【００２７】
ブリッジ１７は、メインバス２１と周辺バス２２の間の周波数の違いを吸収し、メインバス２１に接続された回路と周辺バス２２に接続された回路とを通信可能に接続する。ＣＡＮコントローラ１８は、制御用マイコン９８がＣＡＮバス４３に接続された他のＥＣＵと通信するための通信回路である。ＣＡＮコントローラ１８はＣＡＮフレームの受信をＤＭＡＣ１６に通知すると、ＤＭＡＣ１６がＣＡＮコントローラ１８の受信バッファからＣＡＮフレームを読み出しＲＡＭ１２に記憶する。受信が終了するとＤＭＡＣ１６はＩＮＴＣ１４に割込み要求することで、ＣＰＵ１１にＣＡＮフレームの受信を通知する。なお、ＣＡＮコントローラ１８がＤＭＡＣ１６の機能を有している場合がある。【００２８】
ＡＤＣ（Ａ／Ｄコントーラ）１９は、制御用マイコン９８に接続されたセンサのアナログ信号をデジタル信号に変換して、アクチュエータ等に制御信号を出力する。入出力ポート２０は周辺回路と入出力のインタフェースであり、周辺回路毎に複数用意されている。また、マルチプレクサのポートが用意されている場合もある。入出力ポート２０には、例えば監視用マイコン９９、センサ、スイッチ等が接続されている。本実施形態では、制御用マイコン９８と監視用マイコン９９のポート１同士、及び、ポート２同士が接続されている。【００２９】
監視用マイコン９９は、制御用マイコン９８と同様の構成を有している。監視用マイコン９９はアクチュエータなどを制御しないので、図ではＡＤＣを省略したが、監視用マイコン９９がＡＤＣを有していたり、制御用マイコン９８が有していない回路を有していてもよい。【００３０】
ＣＰＵ３１は、ＲＯＭ３３に記憶されたプログラムを実行することで制御用マイコン９８の監視に必要な処理を行う。監視用マイコン９９のＤＭＡＣ３６、ＣＡＮコントローラ３８の機能は監視用マイコン９９と同様である。【００３１】
図３は、制御用マイコン９８及び監視用マイコン９９の機能ブロック図の一例を示す。制御用マイコン９８の各機能ブロックは、ＣＰＵ１１が他のハードウェアと協働しながらプログラムを実行することで実現される。監視用マイコン９９の各機能ブロックは、ＣＰＵ３１が他のハードウェアと協働しながらプログラムを実行することで実現される。【００３２】
制御用マイコン９８は、負荷監視部５１、周期決定部５３、受信データ指定部５２、データ読み出し部５４、及び、ＷＤＣ送信部５５を有する。監視用マイコン９９は、ＷＤＣ受信部６２、周期演算部６３、負荷特定部６４、リセット部６１、送信命令部６６、及び、受信データ指定部６５を有している。【００３３】
負荷監視部５１は、制御用マイコン９８の処理負荷を監視している。処理負荷の監視方法については後述する。周期決定部５３は、処理負荷（より具体的には負荷レベル）に応じてＷＤＣ信号の周期を演算しＷＤＣ送信部５５に指示する。後述するように、処理負荷が高いほど周期が長いものとするが、逆に、処理負荷が低いほど周期を長くしてもよい。【００３４】
ＷＤＣ送信部５５は、周期演算部６３から指示された周期でHighとLowが切り替わるパルス信号であるＷＤＣ信号を、ポート１を介して監視用マイコン９９に送信する。受信データ指定部５２は、負荷監視部５１が監視している処理負荷（より具体的にはランク）に応じてＣＡＮコントローラ１８が受信するＣＡＮフレームを指示する。データ読み出し部５４は、ＤＭＡバッファ７１に記憶されたＣＡＮフレームを読み出し、プログラムが制御に使用できるようにＲＡＭ１２に記憶する。【００３５】
監視用マイコン９９のＷＤＣ受信部６２は、ポート１を介してＷＤＣ送信部５５が送信したＷＤＣ信号を受信する。また、ＷＤＣ受信部６２は、動作クロックをカウントする計測時間レジスタ７０を有しており、ＷＤＣ信号の立ち上がりエッジ又は立ち下がりエッジのいずれかで計測時間レジスタ７０のカウント（計測時間）をクリアする（計測時間レジスタ７０はカウントアップするものでも、カウントダウンするものでもよい）。計測時間レジスタ７０が予め定められた最大計測時間までカウントすることをオーバーフローと称し、オーバーフローした場合、ＷＤＣ受信部６２はリセット部６１にリセット要求する。リセット部６１は、制御用マイコン９８のＲＳＴ端子５６にリセット信号を送信することで、制御用マイコン９８をリセットする。【００３６】
周期演算部６３は、ＷＤＣ信号の周期を演算する。すなわち、単位時間内においてＷＤＣ信号のHighとLowが切り替わる回数からＷＤＣ信号の周期を演算する。負荷特定部６４は、ＷＤＣ信号の周期に基づき、制御用マイコン９８の処理負荷（後述のランク）を特定する。受信データ指定部６５は、負荷特定部６４が特定した処理負荷に応じて、ＣＡＮコントローラ３８が受信するＣＡＮフレームを指示する。【００３７】
上記のように、ＣＡＮコントローラ３８が受信したＣＡＮフレームは、ＲＡＭ３２のＤＭＡバッファ７２に記憶される。送信命令部６６は、所定のサイクル周期毎にＤＭＡバッファ７２のＣＡＮフレームを制御用マイコン９８に送信する。これにより、ＤＭＡバッファ７２に蓄積されたＣＡＮフレームを一度に制御用マイコン９８に送信できる。例えば、ＣＡＮフレームが３つある場合、制御用マイコン９８が受信したら３回の受信割込みが発生するが、本実施形態では１回しか受信割込みが発生しない。【００３８】
なお、図３では送信命令部６６は監視用マイコン９９が有しているが、制御用マイコン９８も送信命令部（区別するため送信命令部Ｂとする）を有する場合も少なくない。この場合、制御用マイコン９８の送信命令部Ｂは、監視用マイコン９９の送信命令部６６に通信開始を要求し、送信命令部６６が準備完了信号を制御用マイコン９８に送信する。送信命令部Ｂは準備完了信号を受信すると通信を開始し、送信命令部６６はＤＭＡバッファ７２のＣＡＮフレームを制御用マイコン９８に送信する。【００３９】
このように、制御用マイコン９８と監視用マイコン９８はどちらが通信マスタとなってもよい。【００４０】
〔処理負荷について〕
図４は、制御用マイコン９８の処理負荷を説明する図の一例である。ＨＶ−ＥＣＵ１００は複数のタスクを時分割して処理するマルチタスク処理が可能になっている。ＯＳなどが提供するスケジューラは、プログラムがシステムコールして生成した各タスクをＴＣＢ（タスクコントロールブロック）に基づき実行制御している。ＴＣＢには、例えば、タスクＩＤ、タスクの開始アドレス、終了アドレス、状態、優先順位、コンテキストが登録されている。【００４１】
各タスクは、起床される契機が予め決まっている。例えば、タスクＡ、Ｄはイベント割込みにより起床される割込みタスクであり、タスクＢ，Ｃ、Ｅはソフト的に起床される定期タスクである。タスクＡ、Ｄは、ＣＡＮフレームの受信割込みやセンサ割込みが生じた場合、ＩＳＲが直接、又は、システムコールしてＴＣＢの「状態」を実行可能状態にすることで起床される。また、タスクＢ，Ｃ、Ｅはサイクル周期が経過すると、プログラムがシステムコールしてＴＣＢの「状態」を実行可能状態にすることで起床される。【００４２】
スケジューラはＴＣＢを監視し、実行可能状態になったタスクの優先順位を参照して、優先順位に基づきタスクを実行キューに登録する。スケジューラ（より具体的にはディスパッチャ）は、優先順位順にタスクをＣＰＵに割りあてる。同じ優先順位のタスクは実行可能状態になった順にＣＰＵに割り当てる。【００４３】
負荷監視部５１は、ＣＰＵ１１によるタスクの実行状態から処理負荷を監視する。例えば、平均残り時間、タスク抜けタスク、遅れ時間、などから処理負荷を監視する。
（１）平均残り時間
定期タスクは、割込みタスクが多くなければ一定時間内に完了するように数や実行時間が設計されている。これに対しサイクル周期は一定である。このため、割込みタスクが多いほど、相対的に優先順位が低い定期タスクが実行されにくくなるので、定期タスクの実行時間が後ずれする。割込みタスクが多いほど、後ずれする程度も大きくなる。【００４４】
平均残り時間はこれを数値化したもので、以下のように算出される。サイクル周期をＴ０、サイクル周期Ｔ０から最後の定期タスクの完了時間を引いた残時間をＴとする。
平均残り時間＝（Ｔ０／Ｔ）×１００  
平均残り時間が小さいほど処理負荷が大きいことになる。【００４５】
（２）タスク抜けタスク
割込みタスクが多く起床されたため、サイクル周期Ｔ０の間に定期タスクが実行されない場合がある。この場合、次回のサイクルが始まると、すでに定期タスクが起床されているため新たにタスクを起床しない。または、定期タスクが新たに起床されるが、スケジューラは、実行キューのタスクを消去して、新たに起床されたタスクを実行キューに登録する。このように決まった回数のタスクが実行されないことがタスク抜けである。【００４６】
負荷監視部５１は、サイクル毎にタスク抜けしたタスクを検出し記録しておく。例えば、過去３回のサイクルにおいてタスク抜けしたタスクを検出し記録しておく。そして、この３回分のタスク抜けしたタスクの数をカウントする。この数が大きいほど、処理負荷が大きいことがわかる。また、単に、３回連続してタスク抜けしたタスクがある場合に、処理負荷が高いと判定してもよい。【００４７】
（３）遅れ時間
定期タスクはサイクル毎に起床されるので、標準的な処理負荷における実行完了時間が決まっている。例えば、タスクＢに着目すると、割込みタスクが１個程度の場合の標準実行完了時間は例えばＴｓである。これに対し、割込みタスクが増えてくると、実際のタスクＢの実行完了時間Ｔｒは遅くなる。したがって、遅れ時間＝実行完了時間Ｔｒ−標準実行完了時間Ｔｓという指標を、処理負荷の指標に利用できる。【００４８】
負荷監視部５１は、サイクル毎に遅れ時間を計算し、遅れ時間が閾値以上に大きくなった場合に遅れ時間を記録する。処理負荷が大きくなってくると、サイクル毎に遅れ時間が記録される。負荷監視部５１は、例えば、過去数回の遅れ時間の平均を算出する。遅れ時間が大きいほど、処理負荷が大きいことがわかる。また、単に、遅れ時間が記録されたサイクルがｎ回以上連続した場合に、処理負荷が高いと判定してもよい。【００４９】
負荷監視部５１は例えば以下の式から、処理負荷を求める。α、β、γは重み付けの係数である。
処理負荷＝（αタスク抜けタスク＋β遅れ時間）／γ平均残り時間
負荷監視部５１は、処理負荷を例えば７段階（負荷が低い順に「処理負荷１〜７」）に区分するとして説明する。当然ながら、７段階より多くの段階に区分することも少ない段階に区分することもできる。【００５０】
〔周期の決定〕
図５を用いて、制御用マイコン９８の周期決定部５３によるＷＤＣ信号の周期の決定について説明する。図５は、処理負荷とＷＤＣ信号の周期の関係が登録された周期決定テーブル５７，６７を示す図の一例である。処理負荷１〜７に、周期（１．０〜４．０ミリ秒）が対応づけられている。例えば、処理負荷１の周期は１．０ミリ秒、処理負荷２の周期は１．５ミリ秒、処理負荷３の周期は２．０ミリ秒、処理負荷４の周期は２．５ミリ秒、処理負荷５の周期は３．０ミリ秒、処理負荷６の周期は３．５ミリ秒、処理負荷７の周期は４．０ミリ秒、となっている。【００５１】
なお、周期に対応付けられている「負荷レベル」は、処理負荷１〜７を４段階に置き換えた数値である。４段階に置き換えるのは、説明を容易にするために過ぎず、処理負荷１〜７をそのまま、ＣＡＮフレームの受信制御に使用することもできる。この負荷レベルの種類が多いほど、制御用マイコン９８が受信するＣＡＮフレームをより細かく制御できる。具体的には、制御用マイコン９８が受信するＣＡＮフレームの種類が１０種類なら、負荷レベルを１０種類に分けることで、負荷レベルが１レベル上がる毎に、受信するＣＡＮフレームを１つずつ減らすことができる。【００５２】
周期決定テーブル６７は周期決定テーブル５７とほぼ同様であるが、「周期」を４段階に置き換える際の境界が異なっている。すなわち、周期が１．０以上２．５ミリ秒未満を負荷のランク０、周期が２．５ミリ秒以上３．０ミリ秒未満を負荷のランク１，周期が３．０ミリ秒以上３．５ミリ秒未満を負荷のランク２，周期が３．５ミリ秒以上４．０ミリ秒以下を負荷のランク３に置き換える。【００５３】
つまり、負荷レベル０が、ランク０、１に対応している。負荷レベル０の一部の周期にランク１が対応していることで、監視用マイコン９９は制御用マイコン９８よりも早期にＣＡＮフレームの受信を開始できる。例えば、周期２．５ミリ秒の場合、負荷レベルは０，ランクは１、周期３．０ミリ秒の場合、負荷レベルは１，ランクは２、周期３．５ミリ秒の場合、負荷レベルは２，ランクは３、周期４．０ミリ秒の場合、負荷レベルは３，ランクは３となる。【００５４】
〔ＷＤＣ信号の例〕
図６（ａ）は、ＷＤＣ送信部５５がＷＤＣ信号を送信する手順を示すフローチャート図の一例であり、図６（ｂ）は負荷レベルとＷＤＣ信号の関係を模式的に説明する図の一例である。【００５５】
ＷＤＣ送信部５５は、例えば、定期タスク起床の手順の中で、ＷＤＣ信号のＯＮ、ＯＦＦを切り替える。図示するように、監視用マイコン９９はサイクル周期毎に繰り返し実行される動作手順の中で、定期タスクの起床タイミングが否かを判定している（Ｓ１）。定期タスクの起床タイミングになれば、定期タスクを起床させる（Ｓ２）。【００５６】
ＷＤＣ送信部５５は、周期決定部５３が決定した周期に基づきＷＤＣ信号の制御タイミングが否かを判定する（Ｓ３）。例えば、周期が２．０ミリ秒なら、１．０ミリ秒ごとに制御タイミングが到来する。【００５７】
制御タイミングが到来した場合（Ｓ３のＹｅｓ）、ＷＤＣ送信部５５はＷＤＣ信号のＨｉｇｈとＬｏｗを切り替える（Ｓ４）。すなわち、ポート１の状態がＨｉｇｈであればＬｏｗに切り替え、ＬｏｗであればＨｉｇｈに切り替える。これを繰り返すことで、周期決定部５３が決定した周期のＷＤＣ信号がポート１から出力される。このようにソフト的にＷＤＣ信号を出力するので、監視用マイコン９９は、制御用マイコン９８が正常にプログラムを実行していることを推定できる。【００５８】
なお、マイコンに一般的に内蔵されているパルス出力回路を使用してＷＤＣ信号を出力してもよい。この場合、ＷＤＣ送信部５５は周期に応じた値をタイマに設定するだけで、パルス出力回路がＷＤＣ信号を出力することができる。ただし、この場合、制御用マイコン９８のプログラム実行状態に異常が生じてもＷＤＣ信号が出力され続けるマイコンが多い。このため、本実施形態ではソフト的に定期的に出力を指示されないと、パルス出力を停止するパルス出力回路を用いることが好ましい。【００５９】
ＷＤＣ信号は、図示するように、負荷レベルが大きいほどＷＤＣ信号の周期も大きくなる（周波数は小さくなる）。監視用マイコン９９はＷＤＣ信号の周期に基づき、制御用マイコン９８の負荷レベルを推定できる。【００６０】
ＷＤＣ信号は、計測時間をクリアするための信号なので、本実施形態のＷＤＣ信号には、計測時間をクリアする機能と、負荷レベルを通知する機能という２つの機能が含まれる。このように、ＷＤＣ信号に重畳して処理負荷情報を監視用マイコン９９に送信できるので、本実施形態の２つのマイコンに新たなポートを確保するなどハード的な変更が不要になる。【００６１】
なお、計測時間レジスタ７０は、周期が最大値（例えば４．０ミリ秒）に変動しても、オーバーフローしないように最大計測時間が定められている。【００６２】
また、処理負荷情報は、ＷＤＣ信号に重畳することが好適だが、別のポートから処理負荷の値そのものをシリアル通信などで通知することも可能である。【００６３】
〔監視用マイコンの周期演算〕
図７は、監視用マイコン９９の周期演算部６３による周期の演算を説明する図の一例である。周期の演算には、例えばクロックをカウントする一般的なカウント回路を使用する。図では、３つのＴ−ＦＦ回路１〜３が接続されたカウント回路で、最大３ビットの値をカウントできる。Ｔ−ＦＦ回路１〜３は立ち上がりエッジがＴ端子に入力される毎に、Ｑ端子の出力を反転させる。【００６４】
ＷＤＣ信号の立ち上がりエッジがＴ−ＦＦ回路１のＴ端子に入力すると、Ｑ端子の出力が１になる。次の、ＷＤＣ信号の立ち上がりエッジがＴ−ＦＦ回路１のＴ端子に入力すると、Ｑ端子の出力が０になり、Ｔ−ＦＦ回路２のＱ端子の出力が１になる。したがって、カウント回路には、ＷＤＣ信号のパルス数が記録される。【００６５】
周期演算部６３は、サイクル周期毎にカウント値を読み出し、以下のようにしてＷＤＣ信号の周期を演算する。
ＷＤＣ信号の周期＝カウント値／サイクル周期
サイクル周期は予め決まっているので、周期演算部６３はカウント回路のカウント値を読み出し、簡単な除算を行うだけでＷＤＣ信号の周期を求めることができる。なお、周期演算部６３はカウント値を読み出した後、カウント値をクリアしておく。例えば、サイクル周期が８ミリ秒の場合、ＷＤＣ信号の周期は以下のようになる。
カウント値が８  →周期＝１ミリ秒  
カウント値が４  →周期＝２ミリ秒  
カウント値が２  →周期＝４ミリ秒  
なお、除算結果が、ＷＤＣ信号の周期として取り得る値（１．０〜４．０）のいずれかに一致しない場合、最も近い周期に置き換える。こうすることで、周期演算部６３は、監視マイコンが送信するＷＤＣ信号の周期を正確に求めることができる。【００６６】
〔ランクの特定〕
負荷特定部６４は、周期決定テーブル６７を参照して、周期演算部６３が演算した周期に対応づけられたランクを特定する。図５に示したように、例えば、周期が１．０ミリ秒〜２．５ミリ秒未満の場合はランク０、周期が２．５ミリ秒以上３．０ミリ秒未満の場合はランク１、周期が３．０ミリ秒以上３．５ミリ秒未満の場合はランク２、周期が３．５ミリ秒以上４．０ミリ秒以下の場合はランク３に特定する。【００６７】
〔受信データの指定〕
図８は、ＣＡＮコントローラ１８，３８が受信するＣＡＮフレームの指定を説明する図の一例である。制御用マイコン９８が受信すべきＣＡＮフレームは、ＨＶ−ＥＣＵ１００の開発時や製造時に予め定められている。受信データ指定部５２は、車両のパワーＯＮ時に受信すべきＣＡＮフレームのＣＡＮ ＩＤをデータ指定レジスタ５９に設定する。以降、ＣＡＮコントローラ１８は、データ指定レジスタ５９に設定されたＣＡＮ ＩＤのＣＡＮフレームのみを選択的に受信する。なお、パワーＯＮとは、エンジンのみを動力源とする車両のエンジン始動操作（ＩＧ−ＯＮ）、及び、ハイブリッド車（プラグインハイブリッド車を含む）や電気自動車のメインシステムの始動操作が行われたことをいう。【００６８】
そして、受信データ指定部５２は、負荷監視部５１が決定した負荷レベルに応じて、受信停止テーブル５８を参照して、ＣＡＮコントローラ１８が受信するＣＡＮフレームの種類を少なくする。具体的には、データ指定レジスタ５９に設定されているＣＡＮ ＩＤを消去する。
負荷レベル１の場合：  エアコン制御データを受信停止
負荷レベル２の場合：  エアコン制御データ＆ボディ系のデータを受信停止
負荷レベル３の場合：  エアコン制御データ＆ボディ系のデータ＆クルーズ制御をデータを受信停止
このように、負荷レベルが大きいほど、受信するＣＡＮフレームの種類（すなわち数）を少なくする。受信停止テーブル５８では、優先順位が低いＣＡＮフレームほど、負荷レベルが低い状態から受信が停止されるように、負荷レベルとＣＡＮフレームが対応づけられている。こうすることで、優先順位の低いＣＡＮフレームから先に受信を停止できる。また、受信割込みの頻度が減るので、制御用マイコン９８の処理負荷を減少させることができる。【００６９】
しかしながら、優先順位が低いＣＡＮフレームであっても、制御用マイコン９８がＣＡＮフレームを受信しないと、最適な制御が困難になる可能性がある。そこで、監視用マイコン９９は、制御用マイコン９８が受信を停止したＣＡＮフレームを受信する。【００７０】
監視用マイコン９９は、受信すべきＣＡＮフレームが特にないか、あってもその種類は少ない。車両のパワーＯＮ時、監視用マイコン９９の受信データ指定部６５は、受信すべきＣＡＮフレームのＣＡＮ ＩＤをデータ指定レジスタに設定している。【００７１】
そして、受信データ指定部６５は、負荷特定部６４が特定したランクに応じて、受信データ指定テーブル６８を参照して、ＣＡＮコントローラ３８が受信するＣＡＮフレームの種類を多くする。具体的には、データ指定レジスタ６９にＣＡＮ ＩＤを追加して登録する。
ランク１の場合：エアコン制御データを受信
ランク２の場合：エアコン制御データ＆ボディ系のデータを受信
ランク３の場合：エアコン制御データ＆ボディ系のデータ＆クルーズ制御のデータを受信
このように、受信データ指定テーブル６８では、制御用マイコン９８が受信を停止するＣＡＮフレームを、監視用マイコン９９が受信するようにランク毎にＣＡＮフレームが登録されている。監視用マイコン９９が受信したＣＡＮフレームは、シリアル通信により制御用マイコン９８に送信されるので、制御用マイコン９８は、時間的な遅れがあるが、優先順位が低いＣＡＮフレームも受信することができる。【００７２】
なお、受信停止テーブル５８は予め制御用マイコン９８に搭載されており、受信データ指定テーブル６８は予め監視用マイコン９９に搭載されている。しかしながら、開発者等が制御用マイコン９８に負荷レベルとＣＡＮ
ＩＤを、監視用マイコン９９にランクとＣＡＮ ＩＤを対応づけて与えておくことで、制御用マイコン９８は受信停止テーブル５８を作成でき、監視用マイコン９９は受信データ指定テーブル６８を作成できる。この場合、例えば、受信頻度の高いデータほど優先度を高くすればよい。【００７３】
〔シリアル通信について〕
図９Ａ〜図９Ｃは、シリアル通信によるＣＡＮフレームの送信を説明する図の一例である。監視用マイコン９９のＣＡＮコントローラ３８が受信したＣＡＮフレームは、ＲＡＭ３２のＤＭＡバッファ７２に記憶される。ＤＭＡバッファ７２は、予め領域が区分されており、ＣＡＮコントローラ３８はランク１で受信するＣＡＮフレームを領域１に、ランク２で受信を開始するＣＡＮフレームを領域２に、ランク３で受信を開始するＣＡＮフレームを領域３に、それぞれ記憶する。【００７４】
このような振り分けは、ＣＡＮコントローラ３８がＣＡＮ ＩＤに基づきＤＡＭＣに設定する送信先アドレスを変更することで実現できる。または、ＣＡＮコントローラ３８がＣＡＮ ＩＤに基づき記憶先のアドレスを領域１〜３に切り替える。ＣＡＮコントローラ３８が１つのＣＡＮフレームを受信する毎に受信割込みが発生するが、監視用マイコン９９の処理負荷はそれほど高くないので不都合は生じない。【００７５】
ここで、監視用マイコン９９がポート２によりシリアル通信するサイクル周期は予め決まっている。このため、監視用マイコン９９がＤＭＡバッファ７２のＣＡＮフレームを制御用マイコン９８に送信する前に、ＣＡＮコントローラ３８が同種のＣＡＮフレームを受信する場合がある。この場合、ＤＭＡＣ３６はＤＭＡバッファ７２のＣＡＮフレームを上書きする。こうすることで、制御用マイコン９８に送信するＣＡＮフレームを少なくでき、最新のＣＡＮフレームのみを送信できる。【００７６】
そして、監視用マイコン９９の送信命令部６６は、サイクル周期になる度に、ＤＭＡバッファ７２に記憶されているＣＡＮフレームをシリアル通信のパケットに格納して、制御用マイコン９８に送信する。送信態様には例えば以下の３つの態様がある。【００７７】
(i)  一度の送信サイクルで領域１〜３の全てのＣＡＮフレームを送信する（図９Ａ）
送信命令部６６は、領域１〜３の全てにＣＡＮフレームが記憶されていなくても、領域１〜３の全てのデータを転送する。こうすることで、制御用マイコン９８のＲＡＭ３２の決まったアドレスにランク１〜３に応じたＣＡＮフレームを記憶させることができる。なお、受信していないＣＡＮフレームを送信する際は、そのＣＡＮフレームのＣＡＮ ＩＤに無効値を示すダミーのＩＤを設定する。したがって、送信命令部６６は、ＤＭＡバッファ７２の全ての領域のデータから通信パケットを生成し、ポート２の送信バッファに書き込む。【００７８】
(ii)  同一領域に格納するＣＡＮフレームのランクをスケジューリングする（図９Ｂ）
制御用マイコン９８、監視用マイコン９９のＲＡＭ１２、３２は必要最小限に設計されているため、十分なサイズのＤＭＡバッファ７１を確保できない可能性がある。このような場合は、ランク１〜３の領域を個別に設けるのでなく、制御用マイコン９８と監視用マイコン９９はＣＡＮフレームを記憶するための１つの領域を確保しておく。【００７９】
監視用マイコン９９は、制御用マイコン９８に領域の全てのＣＡＮフレームを送信する毎に、ＣＡＮバス４３から受信するＣＡＮフレームを切り替える。また、受信したＣＡＮフレームのランクを例えばスケジューリングナンバーとして領域に記憶する。【００８０】
図ではＣＡＮフレームが切り替えられたことを示すために通常通信領域と領域の組が３つ図示されているが、実際には１つでありそれぞれが周期に対応している。
・ランク１の場合：全ての周期でランク１のＣＡＮフレームを受信し領域に格納する。スケジューリングナンバーとしてランク１を示す“１”を格納する。
・ランク２の場合：１周期目にランク１のＣＡＮフレームを受信し、“１”のスケジューリングナンバーと共に領域に格納する。２周期目にランク２（ランク１のＣＡＮフレームを除く）のＣＡＮフレームを受信し、“２”のスケジューリングナンバーと共に領域に格納する。以降はこれを繰り返す。
・ランク３の場合：１周期目にランク１のＣＡＮフレームを受信し、“１”のスケジューリングナンバーと共に領域に格納する。２周期目にランク２（ランク１のＣＡＮフレームを除く）のＣＡＮフレームを受信し、“２”のスケジューリングナンバーと共に領域に格納する。３周期目にランク３（ランク１、２のＣＡＮフレームを除く）のＣＡＮフレームを受信し、“３”のスケジューリングナンバーと共に領域に格納する。以降はこれを繰り返す。【００８１】
なお、ランク３の場合に受信するＣＡＮフレームの順番はこれに限られず、ランク３のＣＡＮフレームから順番に受信してもよい。また、受信頻度は均等である必要はなく、ランク１〜３の優先度に応じてスケジューリングに重み付けしてもよい。【００８２】
制御用マイコン９８は、スケジューリングナンバーを参照して、領域のＣＡＮフレームがどのランクに対応して送信されているかを判断する。すなわち、スケジューリングナンバーが“３”ならランク３のＣＡＮフレームであることが分かるので、負荷レベルが３ならそのＣＡＮフレームを読み出す。【００８３】
そして、図９Ｂの態様では、制御用マイコン９８が領域からデータを読み出すタイミングに２つのタイミングがある。
（ａ）ランク１〜３の全てのＣＡＮフレームが揃ってから、負荷レベルに応じて読み出す。この場合、ＣＡＮフレームの読み出しタイミングがやや遅くなる。
（ｂ）監視用マイコンから受信したタイミングで負荷レベルを判断し、負荷レベルに対応したＣＡＮフレームなら読み出す。この場合、ＣＡＮフレームの読み出しタイミングの遅れを抑制できる。【００８４】
このように、少ない領域を確保することで、通常通信領域を圧迫することを抑制できる。データのリアルタイム性より通常通信領域を確保することが要求される場合に有効である。【００８５】
(iii)  ＣＡＮフレーム単位で送信する（図９Ｃ）
受信したＣＡＮフレームのみを送信してもよい。送信命令部６６は、サイクル周期毎に古いＣＡＮフレームから順に制御用マイコンに送信する。監視用マイコン９９が例えばランク３のＣＡＮフレームを受信していない場合、送信命令部６６はランク３のＣＡＮフレームを送信しない。こうすることで、送信時間を短縮できる。【００８６】
なお、(i)〜(iii)いずれの場合も、転送時にＣＡＮフレームを圧縮することができる。こうすることで送信時間を短縮できる。また、ＣＡＮフレームにはＣＡＮ ＩＤが含まれているので、制御用マイコン９８としてはそれぞれのＣＡＮフレームを判別できる。【００８７】
制御用マイコン９８のＤＭＡＣ１６には、転送元としてポート２、転送先としてＲＡＭ１２のＤＭＡバッファ７１の先頭アドレス、及び、転送サイズ（例えば、ＤＭＡバッファ７１のサイズ、１領域分のサイズ）が設定されている。制御用マイコン９８のポート２がデータの受信を開始すると、ＤＭＡＣ１６はポート２の受信バッファに記憶されているデータをＤＭＡバッファ７１の先頭アドレスから順に記憶させる。転送量が転送サイズに到達すると、ＩＮＴＣ１４を介してＣＰＵ１１に受信割り込みする。【００８８】
ＤＭＡＣ１６による受信割込みは、上記の転送サイズ（例えば、数百byte）毎に生じるので、割り込み処理による制御用マイコン９８の処理負荷の増大を抑制できる。これに対しＣＡＮフレーム（データフレームの場合）は、データフィールドの最大長が８バイトに過ぎない。【００８９】
制御用マイコン９８のデータ読み出し部５４は、ＤＭＡＣ１６の受信割込みにより、ＤＭＡバッファ７１から、受信した全てのＣＡＮフレームを読み出すことができる。(i)の送信態様では、領域１にはランク１のＣＡＮフレームが、領域２にはランク２のＣＡＮフレームが、領域３にはランク３のＣＡＮフレームが、それぞれ記憶されている。(ii)の送信態様では、サイクル周期毎に、ＤＭＡバッファ７１に記憶されるＣＡＮフレームの種類が変わるので、データ読み出し部５４はサイクルに応じてランクを判定する。 (iii)の送信態様では、ＣＡＮフレームの格納アドレスとランクの対応は不定だが、ＣＡＮ ＩＤによりＣＡＮフレームを判別できる。【００９０】
制御用マイコン９８のデータ読み出し部５４は、受信データ指定部５２が受信を停止したＣＡＮフレームのみをＤＭＡバッファ７１から読み出す。すなわち、データ読み出し部５４は、負荷レベルに応じてＤＭＡバッファ７１から読み出すＣＡＮフレームを取捨する。現在の負荷レベルは、負荷監視部５１から通知される。したがって、(i) の送信態様では、負荷レベルに応じてＤＭＡバッファ７１のアクセス先の領域を特定できる。(ii)の送信態様では、負荷レベルと処理の繰り返しサイクルに応じて、ＤＭＡバッファ７１に記憶されているＣＡＮフレームを判別できる。例えば、負荷レベル３の場合、サイクル１ではＤＭＡバッファ７１にエアコン制御データが、サイクル２ではＤＭＡバッファ７１にＡ／Ｃのデータが、サイクル３ではＤＭＡバッファ７１にクルーズ制御のデータが、記憶されている。(ii)の送信態様では、ＣＡＮ ＩＤによりＣＡＮフレームを判別する。【００９１】
このような送信態様に基づき、データ読み出し部５４はＣＡＮフレームを読み出す。
・負荷レベル１の場合、受信停止テーブル５８では「エアコン制御データ」のＣＡＮ ＩＤが登録されているので、データ読み出し部５４は「エアコン制御データ」のみをＤＭＡバッファ７１から読み出す。
・同様に、負荷レベル２の場合、データ読み出し部５４は「エアコン制御データ＆ボディ系のデータ」のみをＤＭＡバッファ７１から読み出す。
・同様に、負荷レベル３の場合、データ読み出し部５４は「エアコン制御データ＆ボディ系のデータ＆クルーズ制御のデータ」のみをＤＭＡバッファ７１から読み出す。【００９２】
〔動作手順〕
図１０〜１３により、制御用マイコン９８と監視用マイコン９９の動作手順について説明する。【００９３】
＜ＣＡＮフレームの受信の停止＞
図１０は、制御用マイコン９８が処理負荷に応じて受信するＣＡＮフレームを制御する手順を示すフローチャート図の一例である。【００９４】
負荷監視部５１は、サイクル周期毎に処理負荷を監視しており、処理負荷から負荷レベル０〜４を決定する（Ｓ１０）。【００９５】
周期決定部５３は、負荷レベルに基づき、周期決定テーブルを参照してＷＤＣ信号の周期を決定する（Ｓ２０）。【００９６】
次に、ＷＤＣ送信部５５は、新たに決定された周期に従い、ポート１から出力するパルスのＨｉｇｈとＬｏｗを切り替える周期を変更する（Ｓ３０）。【００９７】
次に、受信データ指定部５２は、負荷レベルが許容範囲内か否かを判定する（Ｓ４０）。許容範囲とは、本実施形態の場合、負荷レベル０であることをいう。【００９８】
負荷レベルが許容範囲内の場合（Ｓ４０のＹｅｓ）、受信データ指定部５２はＣＡＮコントローラ１８のデータ指定レジスタ５９に、予め定められた全てのＣＡＮ ＩＤ設定する（Ｓ５０）。【００９９】
負荷レベルが許容範囲内でない場合（Ｓ４０のＮｏ）、受信データ指定部５２は負荷レベルに応じて以下の処理を行う（Ｓ６０）。【０１００】
負荷レベル１の場合、受信データ指定部５２は受信停止テーブル５８を参照し、負荷レベル１に対応付けられているＣＡＮ ＩＤを読み出す（Ｓ７０）。【０１０１】
そして、受信データ指定部５２は、Ｓ７０で読み出したＣＡＮ ＩＤをデータ指定レジスタ５９から消去することで、例えば、エアコン制御のデータの受信を停止する（Ｓ８０）。【０１０２】
負荷レベル２の場合、受信データ指定部５２は受信停止テーブル５８を参照し、負荷レベル２に対応付けられているＣＡＮ ＩＤを読み出す（Ｓ９０）。【０１０３】
そして、受信データ指定部５２は、Ｓ９０で読み出したＣＡＮ ＩＤをデータ指定レジスタ５９から消去することで、例えば、エアコン制御のデータとボディ系のデータの受信を停止する（Ｓ１００）。【０１０４】
負荷レベル３の場合、受信データ指定部５２は受信停止テーブル５８を参照し、負荷レベル３に対応付けられているＣＡＮ ＩＤを読み出す（Ｓ１１０）。【０１０５】
そして、受信データ指定部５２は、Ｓ１１０で読み出したＣＡＮ ＩＤをデータ指定レジスタから消去することで、例えば、エアコン制御のデータ、ボディ系のデータ及びクルーズ制御のデータの受信を停止する（Ｓ１２０）。【０１０６】
以降、制御用マイコン９８は、サイクル周期毎にＳ１０〜Ｓ１２０の処理を繰り返す。【０１０７】
また、制御用マイコン９８と監視用マイコン９９が同期を取ってもよい。この場合、ステップＳ６０で受信データ指定部５２がＣＡＮフレームの受信を停止することを監視用マイコン９９に通知する。そして、監視用マイコン９９がＣＡＮフレームの受信を開始する所定時間が経過してから、ＣＡＮフレームの受信を停止する。【０１０８】
＜ＣＡＮフレームの受信の開始＞
図１１は、監視用マイコン９９が処理負荷に応じてＣＡＮフレームの受信を開始する手順を示すフローチャート図の一例である。【０１０９】
ＷＤＣ受信部６２は常にＷＤＣ信号を受信している。周期演算部６３はＷＤＣ信号のパルスの周期を演算する（Ｓ２１０）。また、負荷特定部６４は周期決定テーブルを参照して、周期に対応づけられたランクを特定する。【０１１０】
受信データ指定部６５は、周期が許容範囲内か否かを判定する（Ｓ２２０）。許容範囲とは、ランク０であることをいう。許容範囲の判定閾値が、負荷レベル０よりも厳しい値であることで、監視用マイコン９９が制御用マイコン９８よりも先にＣＡＮフレームの受信を開始できる。【０１１１】
周期が許容範囲内の場合（Ｓ２２０のＹｅｓ）、受信データ指定部６５はデータ指定レジスタ６９を初期状態に戻す（Ｓ２３０）。すなわち、パワーＯＮ時に監視用マイコン９９が受信すべきＣＡＮフレームのみを受信する設定に変更する。データ指定レジスタ部６９の設定が一度も変更されていない場合、何もしない。【０１１２】
周期が許容範囲内でない場合（Ｓ２２０のＮｏ）、受信データ指定部６５はランクに応じて以下の処理を行う（Ｓ２４０）。【０１１３】
ランク１の場合、受信データ指定部６５は受信データ指定テーブル６８を参照し、ランク１に対応付けられているＣＡＮ ＩＤを読み出す（Ｓ２５０）。このように、監視用マイコン９９は制御用マイコン９８が受信停止するよりも先にＣＡＮフレームの受信を開始できる。これにより、制御用マイコン９８と監視用マイコン９９とが同期を取る必要がなくなり、制御用マイコン９８の処理負荷の増大を抑制できる。【０１１４】
そして、受信データ指定部６５は、Ｓ２５０で読み出したＣＡＮ ＩＤをデータ指定レジスタ６９に設定することで、例えば、エアコン制御のデータの受信を開始する（Ｓ２６０）。【０１１５】
ランク２の場合、受信データ指定部６５は受信データ指定テーブル６８を参照し、ランク２に対応付けられているＣＡＮ ＩＤを読み出す（Ｓ２７０）。【０１１６】
そして、受信データ指定部６５は、Ｓ２７０で読み出したＣＡＮ ＩＤをデータ指定レジスタ６９に設定することで、例えば、エアコン制御のデータとボディ系のデータの受信を開始する（Ｓ２８０）。【０１１７】
ランク３の場合、受信データ指定部６５は受信データ指定テーブル６８を参照し、ランク３に対応付けられているＣＡＮ ＩＤを読み出す（Ｓ２９０）。【０１１８】
そして、受信データ指定部６５は、Ｓ２９０で読み出したＣＡＮ ＩＤをデータ指定レジスタ６９に設定することで、例えば、エアコン制御のデータ、ボディ系のデータ及びクルーズ制御のデータの受信を開始する（Ｓ３００）。【０１１９】
この後、送信命令部６６は制御用マイコンの代わりに受信したＣＡＮフレームをポート２の送信バッファに格納する（Ｓ３１０）。【０１２０】
＜監視用マイコンから制御用マイコンへのＣＡＮフレームの転送＞
図１２は、監視用マイコン９９が制御用マイコン９８へＣＡＮフレームを送信する手順を示すフローチャート図の一例である。【０１２１】
送信命令部６６は、シリアル通信の通信タイミングになったか否かをサイクル周期毎に判定する（Ｓ４１０）。【０１２２】
そして、シリアル通信の通信タイミングになると、送信命令部６６はＤＭＡバッファ７２に記憶されているＣＡＮフレームを、制御用マイコン９８のポート２にシリアル通信により送信する（Ｓ４２０）。【０１２３】
＜制御用マイコンによる転送されたＣＡＮフレームの利用＞
図１３は、制御用マイコン９８が監視用マイコン９９からＣＡＮフレームを受信して、ＤＭＡバッファ７１から読み出す手順を示すフローチャート図の一例である。【０１２４】
まず、制御用マイコン９８のポート２がＣＡＮフレームの受信を開始する（Ｓ５１０）。開始した時点では、ＣＰＵ１１には割込みは生じない。【０１２５】
制御用マイコン９８のＤＭＡＣ１６はポート２が受信したＣＡＮフレームを順次、ＤＭＡバッファ７１の予め定められている先頭アドレスから記憶する（Ｓ５２０）。ＤＭＡＣ１６に予め定められている転送サイズのＣＡＮフレームを受信すると、ＣＰＵ１１に受信割込みすることで受信完了を通知する。【０１２６】
データ読み出し部５４は、負荷監視部５１に現在の負荷レベルを通知するよう要求する（Ｓ５３０）。【０１２７】
データ読み出し部５４は負荷レベルが許容範囲内か否かを判定する（Ｓ５４０）。許容範囲とは、本実施形態の場合、負荷レベル０であることをいう。【０１２８】
負荷レベルが許容範囲内の場合（Ｓ５４０のＹｅｓ）、データ読み出し部５４はＤＭＡバッファ７１からＣＡＮフレームを読み出さない（Ｓ５５０）。すなわち、現在の負荷レベルでは、制御用マイコン９８が全てのＣＡＮフレームを受信しているので、監視用マイコン９９からＣＡＮフレームを受信する必要がない。【０１２９】
制御用マイコン９８の負荷レベルが０なのに、監視用マイコン９９がＣＡＮフレームを送信する状況が生じうるのは、制御用マイコン９８がＣＡＮフレームの受信を停止するよりも先に監視用マイコン９９がＣＡＮフレームの受信を開始するためである。こうすることで、制御用マイコン９８によるＣＡＮフレームの受信漏れを防止できる。【０１３０】
制御用マイコン９８の負荷レベルが０であれば、制御用マイコン９８が受信したＣＡＮフレームの方が、監視用マイコン９９から受信したＣＡＮフレームよりもリアルタイム性が高い。このため、データ読み出し部５４がＣＡＮフレームを読み出さないことで、制御用マイコン９８は最新のデータを用いて制御できる。【０１３１】
なお、制御用マイコン９８が受信していないＣＡＮフレームを、監視用マイコン９９も受信していない状況が生じ、制御用マイコン９８によるＣＡＮフレームの受信漏れが生じる場合がある。例えば、急に制御用マイコン９８の処理負荷が増大したため、監視用マイコン９９がＣＡＮフレームを受信開始することが間に合わないような場合である。このような状況はまれにしか生じないと考えられるが、この場合、制御用マイコン９８は前回のＣＡＮフレームを保持して制御に使用する。【０１３２】
負荷レベルが許容範囲内でない場合（Ｓ５４０のＮｏ）、データ読み出し部５４は負荷レベルに応じて以下の処理を行う（Ｓ５６０）。【０１３３】
負荷レベル１の場合、データ読み出し部５４は受信停止テーブル５８を参照し、負荷レベル１に対応付けられているＣＡＮ ＩＤを読み出し、読み出したＣＡＮ ＩＤのＣＡＮフレームをＤＭＡバッファ７１から読み出す（Ｓ５７０）。すなわち、例えば、エアコン制御のデータを読み出す。【０１３４】
負荷レベル２の場合、データ読み出し部５４は受信停止テーブル５８を参照し、負荷レベル２に対応付けられているＣＡＮ ＩＤを読み出し、読み出したＣＡＮ ＩＤのＣＡＮフレームをＤＭＡバッファ７１から読み出す（Ｓ５８０）。すなわち、例えば、エアコン制御のデータとボディ系のデータを読み出す。【０１３５】
負荷レベル３の場合、データ読み出し部５４は受信停止テーブル５８を参照し、負荷レベル３に対応付けられているＣＡＮ ＩＤを読み出し、読み出したＣＡＮ ＩＤのＣＡＮフレームをＤＭＡバッファ７１から読み出す（Ｓ５９０）。すなわち、例えば、エアコン制御のデータ、ボディ系のデータ、及び、クルーズ制御のデータを読み出す。【０１３６】
なお、データ読み出し部５４は、必要であれば、ステップＳ５７０〜Ｓ５９０で読み出したデータを解凍する。【０１３７】
そして、データ読み出し部５４は、ステップＳ５７０〜Ｓ５９０で読み出したＣＡＮフレームのデータ部分をタスクに対し公開する（Ｓ６００）。公開とは、タスクが読み出せるようにＲＡＭの所定のアドレスに記憶すること、又は、所定の変数名の変数に格納すること、などをいう。これにより、各タスクは本来ＣＡＮフレームにより受信する、制御に必要なデータを使用して制御することができる。【０１３８】
以上説明したように、本実施形態のＨＶ−ＥＣＵ１００は、制御用マイコン９８がＣＡＮフレームの受信数を減らすことで処理負荷を低減できる。制御用マイコン９８は監視用マイコン９９からＣＡＮフレームを受信するので、受信漏れが生じることもほとんどない。負荷レベルの通知にＷＤＣ信号を使用するので新たな信号線の追加が必要ない。したがって、異なる処理能力を有する２つのマイコン間で、マイコンの処理能力を増大することなく、負荷分散することができる。
【図１】
0005861718.tif 000002
【図２】
0005861718.tif 000003
【図３】
0005861718.tif 000004
【図４】
0005861718.tif 000005
【図５】
0005861718.tif 000006
【図６】
0005861718.tif 000007
【図７】
0005861718.tif 000008
【図８】
0005861718.tif 000009
【図９Ａ】
0005861718.tif 000010
【図９Ｂ】
0005861718.tif 000011
【図９Ｃ】
0005861718.tif 000012
【図１０】
0005861718.tif 000013
【図１１】
0005861718.tif 000014
【図１２】
0005861718.tif 000015
【図１３】
0005861718.tif 000016