(57)【要約】【課題】データフレームのＩＤに対する制約を緩和しつつ、優先順位通りにデータフレームを送信できるようにする。【解決手段】メッセージＲＡＭ１６２で実装された複数のメールボックスＭＢに格納された少なくとも１つのデータフレームについて、その優先順位に応じて順次送信する電子制御装置１００は、最初に、複数のメールボックスＭＢに優先順位が上位のデータを夫々格納する。また、電子制御装置１００は、それ以降において、複数のメールボックスＭＢのいずれかに格納されたデータフレームの送信完了によるソフトウエア割込みに応答して、そのメールボックスＭＢに優先順位が次に高いデータフレームを順次格納する。【選択図】図２
2019201289.tif 000002
【特許請求の範囲】
【請求項１】
ハードウエアで実装された複数のバッファに格納された少なくとも１つのデータについて、当該データの優先順位に応じて順次送信する電子制御装置であって、
前記複数のバッファに優先順位が上位のデータを夫々格納し、前記複数のバッファのいずれかに格納されたデータの送信完了によるソフトウエア割込みに応答して、当該バッファに優先順位が次に高いデータを順次格納する、
電子制御装置。
【請求項２】
前記複数のバッファがソフトウエア割込み遅延によってデータを送信できない空白時間に応じて、前記バッファの個数を変更する、
請求項１に記載の電子制御装置。
【請求項３】
前記バッファの個数は、前記空白時間の最大値と１つのデータ送信に要した最小送信時間とに応じて決定される、
請求項２に記載の電子制御装置。
【請求項４】
前記複数のバッファがソフトウエア割込み遅延によってデータを送信できない空白時間に応じて、前記複数のバッファの少なくとも１つをデータ受信用に変更する、
請求項１〜請求項３のいずれか１つに記載の電子制御装置。
【請求項５】
前記データ受信用に変更されたバッファを、重要なデータの受信用に割り当てることを禁止する、
請求項４に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車などの車両に搭載される電子制御装置に関する。
【背景技術】
【０００２】
現代の自動車においては、複数の電子制御装置が協調して制御対象機器を電子制御している。電子制御装置間で信号を送受信可能にするため、複数の電子制御装置は、ＣＡＮ（Controller Area Network）などの車載ネットワークを介して接続されている。電子制御装置は、ハードウエアで実装された複数のメールボックスを使用して、優先順位を表す識別子（ＩＤ）が埋め込まれたデータフレームを送受信する。ここで、電子制御装置においては、特開２００３−１１５８５２号公報（特許文献１）に記載されるように、メールボックスごとに１つのＩＤが割り当てられている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１１５８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、近年の自動車には、例えば、自動変速システム、横滑り防止システム、自動ブレーキシステム、自動運転システムなど、安全性や快適性などを向上させる多くのシステムが搭載されるようになってきた。この場合、車載ネットワークのバスを流通するデータフレームのＩＤが増加し、従来技術のようにメールボックスごとに１つのＩＤが割り当てられていると、メールボックスの数が限られていることから、増加するＩＤに対応できなくなってしまう。
【０００５】
ソフトウエアによる送信完了割込みによって、１つのメールボックスに複数のＩＤを割り当てることで、増加するＩＤに対応することが考えられる。しかしながら、ソフトウエアによる送信完了割込みにおいては、データフレームの送信完了から次のデータフレームの格納までの間に空白時間が生じてしまう。空白時間の間に、他の電子制御装置から車載ネットワークのバスに優先順位の低いデータフレームが送信されると、優先順位通りにデータフレームを送信させることができなくなってしまうおそれがある。優先順位通りにデータフレームを送信させることができなくなると、例えば、制御対象機器を適切に制御できないなどの不都合が発生しやすい。
【０００６】
そこで、本発明は、データフレームのＩＤに対する制約を緩和しつつ、優先順位通りにデータフレームを送信することができる、電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
このため、ハードウエアで実装された複数のバッファに格納された少なくとも１つのデータについて、データの優先順位に応じて順次送信する電子制御装置は、複数のバッファに優先順位が上位のデータを夫々格納する。また、電子制御装置は、複数のバッファのいずれかに格納されたデータの送信完了によるソフトウエア割込みに応答して、そのバッファに優先順位が次に高いデータを順次格納する。
【発明の効果】
【０００８】
本発明によれば、データフレームのＩＤに対する制約を緩和しつつ、優先順位通りにデータフレームを送信することができる。
【図面の簡単な説明】
【０００９】
【図１】車載ネットワークの一例を示す概要図である。
【図２】電子制御装置の一例を示す概要図である。
【図３】データフレームの一例を示す説明図である。
【図４】データ送信処理の一例を示すフローチャートである。
【図５】ポーリング処理の一例を示すフローチャートである。
【図６】送信完了割込み処理の一例を示すフローチャートである。
【図７】第１具体的によるデータフレームの送信処理の説明図である。
【図８】メールボックスの個数を変更する処理を組み込んだ、送信完了割込み処理の一例を示すフローチャートである。
【図９】第２具体例によるデータフレームの送信処理の説明図である。
【図１０】第３具体例によるデータフレームの送信処理の説明図である。
【発明を実施するための形態】
【００１０】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、自動車などの車両に搭載された、ライン型の車載ネットワークの一例を示す。エンジンシステム、自動変速システム、横滑り防止装置、自動ブレーキシステム、自動運転システムなどを電子制御する複数の電子制御装置１００は、例えば、ＣＡＮ（Controller Area Network）バス２００を介して接続されている。
【００１１】
電子制御装置１００は、図２に示すように、プロセッサ１１０と、不揮発性メモリ１２０と、揮発性メモリ１３０と、入出力回路１４０と、ＣＡＮトランシーバ１５０と、ＣＡＮコントローラ１６０と、を備えている。
【００１２】
プロセッサ１１０は、ソフトウエアプログラムに記述された命令セットを実行するハードウエアであって、例えば、ＣＰＵ（Central Processing Unit）などからなる。不揮発性メモリ１２０は、電源を遮断してもデータが保持される電気的にデータを書換え可能なメモリであって、例えば、フラッシュＲＯＭ（Read Only Memory）などからなる。揮発性メモリ１３０は、電源を遮断するとデータが消失するメモリであって、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）などからなる。入出力回路１４０は、各種のセンサ又はスイッチなどからアナログ信号又はデジタル信号を読み込むと共に、アクチュエータなどにアナログ又はデジタルの駆動信号を出力するデバイスであって、例えば、Ａ／Ｄコンバータ、Ｄ／Ｄコンバータなどからなる。そして、プロセッサ１１０、不揮発性メモリ１２０、揮発性メモリ１３０及び入出力回路１４０は、内部バス１７０を介して、任意のデータを送受信可能に接続されている。
【００１３】
ＣＡＮトランシーバ１５０は、複数の電子制御装置１００の間で任意のデータを送受信するために、バス送信電圧の発生及び調整、動作電流の確保、配線の保護などを行う。ＣＡＮコントローラ１６０は、ビットスタッフィング、通信調停、エラーハンドリング、ＣＲＣ（Cyclic Redundancy Check）などのＣＡＮプロトコルの機能を実現する。また、ＣＡＮコントローラ１６０は、外部の電子制御装置１００との間でデータフレームを送受信するために、複数のメールボックスＭＢを実装するメッセージＲＡＭ１６２を内蔵している。ここで、複数のメールボックスＭＢが、ハードウエアで実装された複数のバッファの一例として挙げられる。そして、ＣＡＮトランシーバ１５０は、専用のバス１８０を介して、ＣＡＮコントローラ１６０を経由してプロセッサ１１０に接続されている。なお、ＣＡＮトランシーバ１５０及びＣＡＮコントローラ１６０は、専用のバス１８０に代えて、内部バス１７０に接続されていてもよい。
【００１４】
複数の電子制御装置１００の間で送受信されるデータフレームは、図３に示すように、ＳＯＦ（Start Of Frame）と、ＩＤ（Identifier）と、ＲＴＲ（Remote Transmission Request）と、コントロールフィールドと、データフィールドと、ＣＲＣフィールドと、ＡＣＫ（Acknowledgement）フィールドと、ＥＯＦ（End Of Frame）と、を含んでいる。
【００１５】
ＳＯＦは、データフレームの開始を表す。ＩＤは、送信されるデータの内容を識別すると共に、データの優先順位を表す。ＲＴＲは、データフレームとリモートフレームとを識別する。コントロールフィールドは、ＩＤＥ（Identifier Extension）と、予約ビットｒと、データフィールドにおいて何バイトのデータが送信されるかを表すＤＬＣ（Data Length Code）と、を含んでいる。データフィールドは、送信されるデータの本体を格納する。ＣＲＣフィールドは、正常に受信できたかを判断するためのＣＲＣシーケンスと、ＣＲＣシーケンスの終了を表すＣＲＣデリミタと、を含んでいる。ＡＣＫフィールドは、ＡＣＫスロットと、ＡＣＫデリミタと、を含んでいる。ＥＯＦは、データフレームの終了を表す。なお、このデータフレームは、標準フォーマットのデータフレームの一例であるが、拡張フォーマットのデータフレームであってもよい。
【００１６】
電子制御装置１００のプロセッサ１１０は、不揮発性メモリ１２０に格納されている制御プログラムを実行することで、複数のメールボックスＭＢに格納されたデータフレームのＩＤに応じて、そのＩＤにより特定される優先順位でデータフレームを送信する。このとき、電子制御装置１００のプロセッサ１１０は、最初に、複数のメールボックスＭＢに優先順位が上位のデータフレームを夫々格納し、それ以降においては、複数のメールボックスＭＢのいずれかに格納されたデータフレームの送信完了によるソフトウエア割込みに応答して、そのメールボックスに優先順位が次に高いデータフレームを順次格納する。
【００１７】
ここで、図４を参照し、電子制御装置１００のＣＡＮコントローラ１６０が、電源投入により起動された後、データフレームの送信要求があったことを契機として実行する、データ送信処理の一例について説明する。なお、ＣＡＮコントローラ１６０は、以下に説明するデータ送信処理に限らず、例えば、ビットスタッフィング、通信調停、エラーハンドリング、ＣＲＣチェックなど、ＣＡＮプロトコルの機能を実現する処理を実行するが、これらは本実施形態の要部ではないため、その説明を省略する。必要があれば、ＣＡＮプロトコルについて説明されている文献を参照されたい。
【００１８】
ステップ１（図４では「Ｓ１」と略記する。以下同様。）では、電子制御装置１００のＣＡＮコントローラ１６０が、メッセージＲＡＭ１６２の複数のメールボックスＭＢを順次参照し、少なくとも１つのデータフレームが格納されているか否かを判定する。そして、電子制御装置１００のＣＡＮコントローラ１６０は、少なくとも１つのデータフレームが格納されていると判定すれば、処理をステップ２へと進める（Ｙｅｓ）。一方、電子制御装置１００のＣＡＮコントローラ１６０は、少なくとも１つのデータフレームが格納されていない、即ち、今回のデータ送信期間におけるすべてのデータフレームが送信されたと判定すれば、データ送信処理を終了させる（Ｎｏ）。
【００１９】
ステップ２では、電子制御装置１００のＣＡＮコントローラ１６０が、複数のメールボックスＭＢに格納されているデータフレームの中から、優先順位が最上位のデータフレーム、即ち、ＩＤが最も小さいデータフレームを選定する。
【００２０】
ステップ３では、電子制御装置１００のＣＡＮコントローラ１６０が、ＣＡＮトランシーバ１５０及びＣＡＮバス２００を介して、ステップ２で選定したデータフレームを送信する。
【００２１】
ステップ４では、電子制御装置１００のＣＡＮコントローラ１６０が、複数のメールボックスＭＢから、ステップ３で送信したデータフレームを削除する。従って、複数のメールボックスＭＢには空きができ、これをデータ送受信に利用することができる。
【００２２】
ステップ５では、電子制御装置１００のＣＡＮコントローラ１６０が、例えば、ＯＳ（Operating System）の機能を利用して、データフレームの送信完了によりソフトウエア的に割り込む、送信完了割込みを発行する。その後、電子制御装置１００のＣＡＮコントローラ１６０は、処理をステップ１へと戻す。
【００２３】
かかるデータ送信処理によれば、電子制御装置１００のＣＡＮコントローラ１６０は、送信要求があったことを契機として、複数のメールボックスＭＢに格納されているデータフレームの中から、優先順位が最上位のデータフレームを順次選定して送信する。また、電子制御装置１００のＣＡＮコントローラ１６０は、メールボックスＭＢから送信したデータフレームを削除し、複数のメールボックスＭＢにデータフレームがなくなるまで、上記の送信処理を繰り返す。
【００２４】
次に、電子制御装置１００のプロセッサ１１０が、電源投入により起動したことを契機として、不揮発性メモリ１２０に格納された制御プログラムによって実行する処理の概要について説明する。
【００２５】
図５は、電子制御装置１００のプロセッサ１１０が、所定のデータ送信間隔より短い時間間隔、例えば、１０ｍｓ間隔で繰り返し実行するポーリング処理の一例を示す。なお、ポーリング処理を実行するに先立って、電子制御装置１００のプロセッサ１１０は、データ送信期間においてすべてのデータフレームの送信が終了したか否かを表す変数Ｓｔａｔｅを「送信終了」に設定する。
【００２６】
ステップ１１では、電子制御装置１００のプロセッサ１１０が、変数Ｓｔａｔｅを参照して、これが「送信終了」になっているか否かを介して、前回のデータ送信期間におけるすべてのデータフレームの送信が終了しているか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、変数Ｓｔａｔｅが「送信終了」になっていると判定すれば、処理をステップ１２へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１１０は、変数Ｓｔａｔｅが「送信終了」になっていない、即ち、変数Ｓｔａｔｅが「送信中」になっていると判定すれば、前回のデータ送信期間におけるすべてのデータフレームの送信が完了していないと判断し、ポーリング処理を終了させる（Ｎｏ）。
【００２７】
ステップ１２では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間に送信するすべてのデータフレームの中から、ＩＤにより特定される優先順位が上位のデータフレームをメールボックスＭＢに格納する。具体的には、電子制御装置１００のプロセッサ１１０は、例えば、メールボックスＭＢが２つある場合、複数のデータフレームのうち、優先順位が第１位及び第２位のデータフレームを２つのメールボックスＭＢに夫々格納する。
【００２８】
ステップ１３では、電子制御装置１００のプロセッサ１１０が、変数Ｓｔａｔｅを「送信中」に変更する。
ステップ１４では、電子制御装置１００のプロセッサ１１０が、ＣＡＮコントローラ１６０に対して、データフレームの送信要求を発行する。
【００２９】
かかるポーリング処理によれば、電子制御装置１００のプロセッサ１１０は、データ送信間隔より短い時間間隔で、前回のデータ送信期間におけるすべてのデータフレームの送信が終了しているか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、すべてのデータフレームの送信が終了していれば、優先順位が上位のデータフレームを複数のメールボックスＭＢに格納し、変数Ｓｔａｔｅを「送信中」に変更すると共に、ＣＡＮコントローラ１６０に対してデータフレームの送信要求を発行する。なお、データフレームの送信要求を受けたＣＡＮコントローラ１６０は、上述したデータ送信処理の実行を開始する。
【００３０】
図６は、ソフトウエアによる送信完了割込みがあったことを契機として、電子制御装置１００のプロセッサ１１０が実行する、送信完了割込み処理の一例を示す。
【００３１】
ステップ３１では、電子制御装置１００のプロセッサ１１０が、データ送信期間におけるすべてのデータフレームの送信が終了したかを表す変数Ｓｔａｔｅを参照し、これが「送信中」になっているか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、変数Ｓｔａｔｅが「送信中」になっていると判定すれば、処理をステップ３２へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１１０は、変数Ｓｔａｔｅが「送信中」ではない、即ち、変数Ｓｔａｔｅが「送信終了」になっていると判定すれば、すべてのデータフレームの送信が終了しているので、送信完了割込み処理を終了させる（Ｎｏ）。
【００３２】
ステップ３２では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間に送信する未送信のデータフレームのうち、優先順位が最上位のデータフレーム、具体的には、ＩＤが最も小さいデータフレームをメールボックスＭＢに格納する。このとき、電子制御装置１００のプロセッサ１１０は、送信完了割込みの原因となったメールボックスＭＢにデータフレームを格納するが、複数のメールボックスＭＢが空いている場合、所定規則によって選定されたメールボックスＭＢにデータフレームを格納してもよい（以下同様）。
【００３３】
ステップ３３では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間に送信するすべてのデータフレームを送信したか否か、即ち、優先順位が最下位のデータフレームをメールボックスＭＢに格納したか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、すべてのデータフレームを送信したと判定すれば、処理をステップ３４へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１１０は、すべてのデータフレームを送信していない、即ち、未送信のデータフレームがあると判定すれば、送信割込み処理を終了させる（Ｎｏ）。
【００３４】
ステップ３４では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間におけるすべてのデータフレームの送信が完了したので、変数Ｓｔａｔｅを「送信終了」に変更する。
【００３５】
かかる送信完了割込み処理によれば、電子制御装置１００のプロセッサ１１０は、ソフトウエアによる送信完了割込みが発生すると、変数Ｓｔａｔｅが「送信中」、即ち、今回のデータ送信期間におけるデータフレームの送信が継続しているか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、変数Ｓｔａｔｅが「送信中」であれば、未送信のデータフレームのうち優先順位が最上位のデータフレームをメールボックスＭＢに格納し、ＣＡＮコントローラ１６０にそのデータフレームの送信をゆだねる。また、電子制御装置１００のプロセッサ１１０は、今回のデータ送信期間におけるデータフレームの送信が終了したならば、変数Ｓｔａｔｅを「送信終了」に変更し、ポーリング処理によって重複して同一のデータフレームが送信されることを回避する。
【００３６】
従って、異なるＩＤを有する複数のデータフレームを１つのメールボックスＭＢに割り当てることにより、データフレームのＩＤに対する制約を緩和することができる。また、１つのメールボックスＭＢによってデータフレームを送信しているとき、他のメールボックスＭＢに次に送信するデータフレームが格納されているため、例えば、他の電子制御装置１００からＣＡＮバス２００に優先順位が低いデータフレームが送信されることがない。このため、データ送信期間において、優先順位通りにデータフレームを送信することができる。
【００３７】
ここで、上述のデータフレームの送信処理について、その理解を容易ならしめることを目的として、具体的な例をもって説明する。なお、データフレームの送信処理にあたって、メッセージＲＡＭ１６２には２つのメールボックスＭＢ、具体的には、メールボックス１及び２が確保されており、また、データ送信期間に送信するデータフレームのＩＤは１００，２００，３００及び４００であると仮定する。さらに、他の電子制御装置１００が、同一のデータ送信間隔において、ＩＤが５００のデータフレームを送信するものとする。
【００３８】
新たなデータ送信期間になると、電子制御装置１００のプロセッサ１１０は、図７に示すように、メールボックス１及び２に対して、優先順位が第１位及び第２位のデータフレーム（ＩＤ：１００，２００）を夫々格納する。電子制御装置１００のプロセッサ１１０がＣＡＮコントローラ１６０に送信要求を発行すると、ＣＡＮコントローラ１６０は、メールボックス１及び２に格納されているデータフレームのうち、メールボックス１に格納されている優先順位が第１位のデータフレーム（ＩＤ：１００）を送信する。そして、ＣＡＮコントローラ１６０は、メールボックス１からデータフレーム（ＩＤ：１００）を削除し、ソフトウエアによる送信完了割込みを発行する。
【００３９】
ＣＡＮコントローラ１６０が送信完了割込みを発行すると、これがソフトウエアによる割込みであることから、多少の遅延をもって送信完了割込みが発生する。送信完了割込みが遅延している空白期間において、メールボックス２には優先順位が第２位のデータフレーム（ＩＤ：２００）が格納されているので、ＣＡＮコントローラ１６０は、メールボックス１のデータフレーム（ＩＤ：１００）の送信完了に続いて、メールボックス２のデータフレーム（ＩＤ：２００）を送信する。そして、ＣＡＮコントローラ１６０は、メールボックス２からデータフレーム（ＩＤ：２００）を削除し、ソフトウエアによる送信完了割込みを発行する。
【００４０】
この過程において、電子制御装置１００のプロセッサ１１０は、優先順位が第２位のデータフレーム（ＩＤ：２００）が送信されているときに、優先順位が第１位のデータフレーム（ＩＤ：１００）の送信完了割込みが発生すると、メールボックス１に対して、優先順位が第３位のデータフレーム（ＩＤ：３００）を格納する。また、ＣＡＮコントローラ１６０は、メールボックス２のデータフレーム（ＩＤ：２００）の送信完了に続いて、メールボックス１のデータフレーム（ＩＤ：３００）を送信する。
【００４１】
電子制御装置１００のプロセッサ１１０は、優先順位が第３位のデータフレーム（ＩＤ：３００）が送信されているときに、優先順位が第２位のデータフレーム（ＩＤ：２００）の送信完了割込みが発生すると、メールボックス２に対して、優先順位が第４位のデータフレーム（ＩＤ：４００）を格納する。また、ＣＡＮコントローラ１６０は、メールボックス１のデータフレーム（ＩＤ：３００）の送信完了に続いて、メールボックス２のデータフレーム（ＩＤ：４００）を送信する。
【００４２】
このように一連のデータフレームを送信しているときに、他の電子制御装置１００から優先順位が低いデータフレーム（ＩＤ：５００）が送信されようとしても、メールボックス１及び２の間には時間的に重複した空白期間がないため、通信調停によって、最下位のデータフレーム（ＩＤ：４００）の後に、これより優先順位が低いデータフレーム（ＩＤ：５００）が送信される。従って、上述したように、データフレームのＩＤに対する制約を緩和しつつ、優先順位通りにデータフレームを送信することができることが理解できるであろう。
【００４３】
ところで、メッセージＲＡＭ１６２に確保された複数のメールボックスＭＢは、その個数を固定せずに、以下のように、データ送信期間における空白期間（遅延時間）に応じて動的に変更することもできる。
【００４４】
図８は、メールボックスＭＢの個数を変更する処理を組み込んだ、送信完了割込み処理の一例を示す。なお、以下の説明においては、図６に示す送信完了割込み処理と共通する部分については、重複説明を排除するために、簡潔に説明する。必要があれば、図６に示す送信完了割込み処理の説明を参照されたい。
【００４５】
ステップ４１では、電子制御装置１００のプロセッサ１１０が、変数Ｓｔａｔｅが「送信中」になっているか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、変数Ｓｔａｔｅが「送信中」になっていると判定すれば、処理をステップ４２へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１１０は、変数Ｓｔａｔｅが「送信中」ではないと判定すれば、送信完了割込み処理を終了させる（Ｎｏ）。
【００４６】
ステップ４２では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間において、優先順位通りにデータフレームを送信するために必要なメールボックスＭＢの個数を算出する。具体的には、電子制御装置１００のプロセッサ１１０は、空白時間の最大値Ｔ及び１つのデータフレームの送信に要した最小送信時間αを夫々計測し、以下の式から必要なメールボックスＭＢの個数を算出する。なお、メールボックスＭＢの個数は、小数点以下を繰り上げた値となる。
メールボックス個数≧（空白時間の最大値Ｔ）／（最小送信時間α）
【００４７】
ステップ４３では、電子制御装置１００のプロセッサ１１０が、ステップ４２での計算結果に応じて、必要なメールボックスＭＢの個数が変化したか否か、即ち、その個数が増減したか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、必要なメールボックスＭＢの個数が変化したと判定すれば、処理をステップ４４へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１１０は、必要なメールボックスＭＢの個数が変化しないと判定すれば、処理をステップ４５へと進める（Ｎｏ）。
【００４８】
ステップ４４では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間で使用するメールボックスＭＢの個数を変更する。従って、電子制御装置１００のプロセッサ１１０及びＣＡＮコントローラ１６０は、個数を変更したメールボックスＭＢを使用して、データフレームを送信する。
【００４９】
ステップ４５では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間に送信する未送信のデータフレームのうち、優先順位が最上位のデータフレームをメールボックスＭＢに格納する。
【００５０】
ステップ４６では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間に送信するすべてのデータフレームを送信したか否かを判定する。そして、電子制御装置１００のプロセッサ１１０は、すべてのデータフレームを送信したと判定すれば、処理をステップ４７へと進める（Ｙｅｓ）。一方、電子制御装置１００のプロセッサ１１０は、すべてのデータフレームを送信していないと判定すれば、送信完了割込み処理を終了させる（Ｎｏ）。
【００５１】
ステップ４７では、電子制御装置１００のプロセッサ１１０が、今回のデータ送信期間におけるすべてのデータフレームの送信が完了したので、変数Ｓｔａｔｅを「送信終了」に変更する。
【００５２】
かかる送信完了割込み処理によれば、上述した図６の作用及び効果に加え、電子制御装置１００のプロセッサ１１０は、空白時間の最大値Ｔ及び１つのデータフレームの送信に要した最小送信時間αを夫々計測して、必要なメールボックスＭＢの個数を算出する。そして、電子制御装置１００のプロセッサ１１０は、必要に応じて、今回のデータ送信期間で使用するメールボックスＭＢの個数を動的に変更し、そのメールボックスＭＢを使用してデータフレームを送信する。従って、１つのメールボックスＭＢを使用してデータフレームを送信しているとき、送信負荷に応じた個数のメールボックスＭＢが待機状態となっているので、例えば、何らかの原因により空白時間が延びても、すべてのメールボックスＭＢにおける空白時間が重複することを回避できる。このため、他の電子制御装置１００が、優先順位の低いデータフレームを送信することが抑制され、優先順位通りにデータフレームを送信することができる。
【００５３】
ここで、今回のデータ送信期間で使用するメールボックスＭＢの個数が３つになった場合について、上述のデータフレームの送信処理を説明する。なお、データフレームの送信処理にあたって、メッセージＲＡＭ１６２には３つのメールボックスＭＢ、具体的には、メールボックス１〜３が確保されており、また、今回のデータ送信期間において送信するデータフレームのＩＤは１００，１５０，２００，２５０，３００，３５０，４００及び４５０であると仮定する。
【００５４】
新たなデータ送信期間になると、電子制御装置１００のプロセッサ１１０は、図９に示すように、メールボックス１〜３に対して、優先順位が第１〜３位のデータフレーム（ＩＤ：１００，１５０，２００）を夫々格納する。電子制御装置１００のプロセッサ１１０がＣＡＮコントローラ１６０に送信要求を発行すると、ＣＡＮコントローラ１６０は、メールボックス１〜３に格納されているデータフレームのうち、メールボックス１に格納されている優先順位が第１位のデータフレーム（ＩＤ：１００）を送信する。そして、ＣＡＮコントローラ１６０は、メールボックス１からデータフレーム（ＩＤ：１００）を削除し、ソフトウエアによる送信完了割込みを発行する。
【００５５】
ＣＡＮコントローラ１６０が送信完了割込みを発行したところ、何らかの原因により、送信完了割込みが大幅に遅延して発生したと仮定する。その間、ＣＡＮコントローラ１６０は、メールボックス２及び３に格納されているデータフレームのうち、メールボックス２に格納されている優先順位が第２位のデータフレーム（ＩＤ：１５０）を送信する。そして、ＣＡＮコントローラ１６０は、メールボックス２からデータフレーム（ＩＤ：１５０）を削除し、ソフトウエアによる送信完了割込みを発行する。この状態では、メールボックス１及び２にはデータフレームが格納されていないが、メールボックス３にはデータフレーム（ＩＤ：２００）が格納されているため、通信調停によって、他の電子制御装置１００が優先順位の低いデータフレームを送信することができない。
【００５６】
メールボックス２のデータフレーム（ＩＤ：１５０）の送信が完了すると、ＣＡＮコントローラ１６０は、メールボックス３に格納されているデータフレーム（ＩＤ：２００）を送信する。その間に、メールボックス１のデータフレーム（ＩＤ：１００）の送信完了を契機とした送信完了割込みが発生すると、電子制御装置１００のプロセッサ１１０は、メールボックス１及び２が空であることから、メールボックス１及び２に第４位及び第５位の優先順位を有するデータフレーム（ＩＤ：２５０，３００）を夫々格納する。なお、電子制御装置１００のプロセッサ１１０は、１つの送信完了割込みが発生したことを契機として、１つのデータフレームを格納することもできる。
【００５７】
このように、データフレームの格納及び送信を順次実行することで、図９の下部に図示されているように、ＣＡＮバス２００には、優先順位通りにデータフレームを流通させることができる。
【００５８】
メールボックスの個数を動的に変更することによって、ソフトウエアによる送信完了割込みの空白時間が短くなった場合、少なくとも一つのメールボックスを受信用に変更することもできる。即ち、図１０に示すように、３つのメールボックス１〜３のうち、今回のデータ送信期間においてメールボックス３の使用時間が減って余裕ができたならば、その余裕となった分を受信用に割り当てることができる。このようにすれば、データフレームの受信能力が向上し、例えば、より多くのデータフレームを受信することができる。
【００５９】
なお、電子制御装置１００のプロセッサ１１０は、データ受信用に変更されたメールボックスを、重要なデータの受信用に割り当てることを禁止してもよい。このようにすれば、動的に変更されるメールボックスが重要なデータの受信に用いられることがなく、例えば、信頼性を向上させることができる。
【００６０】
車載ネットワークとしては、ＣＡＮに限らず、例えば、ＬＩＮ（Local Interconnect Network）、ＦｌｅｘＲａｙ（登録商標）など、公知のネットワークを使用することができる。
【００６１】
また、当業者であれば、上記実施形態の技術的思想について、その一部を省略したり、その一部を適宜組み合わせたり、その一部を置換したりすることによって、新たな実施形態を生み出せることを容易に理解できるであろう。
【符号の説明】
【００６２】
１００  電子制御装置
ＭＢ  メールボックス（バッファ）
【図１】
2019201289.tif 000003
【図２】
2019201289.tif 000004
【図３】
2019201289.tif 000005
【図４】
2019201289.tif 000006
【図５】
2019201289.tif 000007
【図６】
2019201289.tif 000008
【図７】
2019201289.tif 000009
【図８】
2019201289.tif 000010
【図９】
2019201289.tif 000011
【図１０】
2019201289.tif 000012