(57)【特許請求の範囲】
【請求項１】
車内通信線を介して車載制御装置と接続され、前記車載制御装置とともに前記車内通信線を伝送路とする車内ネットワークを構成する制御装置であって、
前記車載制御装置のための更新用プログラムを記憶する記憶部と、
前記車内通信線の占有率を監視する監視部と、
記憶された前記更新用プログラムの前記車載制御装置への転送を開始するタイミングを、監視された前記占有率に基づいて制御し、前記更新用プログラムの転送開始後に、前記更新用プログラムの転送の継続の可否を判断する転送制御部と、を備え、
前記転送制御部は、前記占有率に基づいて決定される前記更新用プログラムの転送速度と、前記更新用プログラムのサイズとを用いて転送完了までの所要時間を算出し、前記所要時間を用いて前記更新用プログラムの転送の継続の可否を判断する、
制御装置。
【請求項２】
前記転送制御部は、前記更新用プログラムの転送中に、所定の更新間隔で前記占有率に基づいて前記更新用プログラムの転送速度を更新し、
更新された前記転送速度から前記所要時間を算出して、当該所要時間に基づいて前記更新用プログラムの転送の継続の可否を判断する、請求項１に記載の制御装置。
【請求項３】
前記転送制御部は、前記所要時間が第２の閾値以上である場合には、前記転送を中断する、請求項２に記載の制御装置。
【請求項４】
前記転送制御部は、前記転送を中断すると、転送対象の他の更新用プログラムを前記車載制御装置に転送するタイミングを制御する、請求項２に記載の制御装置。
【請求項５】
前記制御装置は出力装置と接続されて、
前記転送制御部は、前記更新用プログラムの転送を中断する場合には、前記出力装置に前記更新用プログラムの転送を中断する旨の通知を行わせるための制御信号を出力する、請求項３または請求項４に記載の制御装置。
【請求項６】
前記転送制御部は、前記占有率から得られる前記車内通信線の空き帯域幅と、前記更新用プログラムのサイズとの比較結果を示す指標値を算出し、前記指標値を用いて前記更新用プログラムの転送の可否を判断する、請求項１〜請求項５のいずれか一項に記載の制御装置。
【請求項７】
前記指標値は、前記空き帯域幅に対する前記更新用プログラムのサイズの比率を示す値であって、
前記転送制御部は、前記指標値が第１の閾値より小さい場合に前記更新用プログラムの転送を開始し、前記指標値が前記第１の閾値以上である場合には前記更新用プログラムの転送を開始しない、請求項６に記載の制御装置。
【請求項８】
前記転送制御部は、前記指標値が前記第１の閾値以上であり、かつ、所定の保留条件を満たす場合、前記更新用プログラムの転送を開始せずに、当該更新用プログラムが前記保留条件を満たす期間内に、再度、前記指標値を算出して当該指標値を用いて前記更新用プログラムの転送の可否を判断し、前記指標値が前記第１の閾値以上であり、かつ、前記保留条件を満たさない場合に前記更新用プログラムを転送しない、請求項７に記載の制御装置。
【請求項９】
前記保留条件は、前記更新用プログラムとは異なる、転送対象の他の更新用プログラムがあることを含む、請求項８に記載の制御装置。
【請求項１０】
前記制御装置は出力装置と接続されて、
前記転送制御部は、前記更新用プログラムの転送を開始しない場合には、前記出力装置に前記更新用プログラムの転送を開始しない旨の通知を行わせるための制御信号を出力する、請求項７〜請求項９のいずれか一項に記載の制御装置。
【請求項１１】
前記空き帯域幅は、前記車内通信線に対して許容される最大占有率から前記占有率を除いた帯域幅であって、
前記車内ネットワークは、前記最大占有率の異なる複数の車内通信線を含む、請求項６〜請求項１０のいずれか一項に記載の制御装置。
【請求項１２】
車内通信線を介して車載制御装置と接続され、前記車載制御装置とともに前記車内通信線を伝送路とする車内ネットワークを構成する制御装置から、前記車載制御装置のための更新用プログラムを前記車載制御装置に転送する方法であって、
前記車内通信線の占有率を監視するステップと、
前記更新用プログラムの前記車載制御装置への転送を開始するタイミングを、監視された前記占有率に基づいて制御するステップと、
前記更新用プログラムの転送開始後に、前記更新用プログラムの転送の継続の可否を判断するステップと、
を備え、
前記転送の継続の可否を判断するステップにおいて、前記占有率に基づいて決定される前記更新用プログラムの転送速度と、前記更新用プログラムのサイズとを用いて転送完了までの所要時間を算出し、前記所要時間を用いて前記更新用プログラムの転送の継続の可否を判断する、
転送方法。
【請求項１３】
車内通信線を介して車載制御装置と接続され、前記車載制御装置とともに前記車内通信線を伝送路とする車内ネットワークを構成する制御装置としてコンピュータを機能させるためのコンピュータプログラムであって、
前記コンピュータは、前記車載制御装置のための更新用プログラムを記憶する記憶部を有し、
前記コンピュータを、
前記車内通信線の占有率を監視する監視部と、
記憶された前記更新用プログラムの前記車載制御装置への転送を開始するタイミングを、監視された前記占有率に基づいて制御し、前記更新用プログラムの転送開始後に、前記更新用プログラムの転送の継続の可否を判断する転送制御部と、として機能させ、
前記転送制御部は、前記占有率に基づいて決定される前記更新用プログラムの転送速度と、前記更新用プログラムのサイズとを用いて転送完了までの所要時間を算出し、前記所要時間を用いて前記更新用プログラムの転送の継続の可否を判断する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は制御装置、転送方法、およびコンピュータプログラムに関する。
本出願は、２０１７年４月５日出願の日本出願第２０１７−０７５１１７号に基づく優先権を主張し、前記日本出願に記載された全ての記載内容を援用するものである。
【背景技術】
【０００２】
近年、自動車の技術分野においては、車両の高機能化が進行しており、多種多様な車載機器が車両に搭載されている。従って、車両には、各車載機器を制御するための制御装置である、所謂ＥＣＵ（Electronic  Control  Unit）が多数搭載されている。
ＥＣＵの種類には、例えば、アクセル、ブレーキ、ハンドルの操作に対してエンジンやブレーキ、ＥＰＳ（Electric  Power  Steering）等の制御を行う走行系に関わるもの、乗員によるスイッチ操作に応じて車内照明やヘッドライトの点灯／消灯と警報器の吹鳴等の制御を行うボディ系ＥＣＵ、運転席近傍に配設されるメータ類の動作を制御するメータ系ＥＣＵなどがある。【０００３】
一般的にＥＣＵは、マイクロコンピュータ等の演算処理装置によって構成されており、ＲＯＭ（Read  Only  Memory）に記憶した制御プログラムを読み出して実行することにより、車載機器の制御が実現される。
ＥＣＵの制御プログラムは、車両の仕向け地やグレードなど応じて異なることがあり、制御プログラムのバージョンアップに対応して、旧バージョンの制御プログラムを新バージョンの制御プログラムに書き換える必要がある。また、たとえば地図情報や制御用のパラメータなど、制御プログラムの実行に必要なデータも書き換える必要がある。【０００４】
たとえば、特許文献１には、車両制御プログラムを修正するための修正プログラムを外部装置である情報提供センタから受信し、情報提供センタからの要求に応じて当該プログラムを用いて車両制御プログラムを書き換えるシステムが開示されている。その際に、当該車両の動作状態が制御プログラムの書き換えが可能な状態であるか否かが判断され、可能な状態の場合に制御プログラムの書き換えが行われている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−６５８５６号公報
【発明の概要】
【０００６】
ある実施の形態に従うと、制御装置は車内通信線を介して車載制御装置と接続され、車載制御装置とともに車内通信線を伝送路とする車内ネットワークを構成する制御装置であって、車載制御装置のための更新用プログラムを記憶する記憶部と、車内通信線の占有率を監視する監視部と、監視中の占有率に基づいて、記憶された更新用プログラムを車載制御装置に転送するタイミングを制御する転送制御部と、を備える。
【０００７】
他の実施の形態に従うと、転送方法は、車内通信線を介して車載制御装置と接続され、車載制御装置とともに車内通信線を伝送路とする車内ネットワークを構成する制御装置から、車載制御装置のための更新用プログラムを車載制御装置に転送する方法であって、車内通信線の占有率を監視するステップと、監視中の占有率に基づいて、更新用プログラムを車載制御装置に転送するタイミングを制御するステップと、を備える。
【０００８】
他の実施の形態に従うと、コンピュータプログラムは、車内通信線を介して車載制御装置と接続され、車載制御装置とともに車内通信線を伝送路とする車内ネットワークを構成する制御装置としてコンピュータを機能させるためのコンピュータプログラムであって、コンピュータは、車載制御装置のための更新用プログラムを記憶する記憶部を有し、コンピュータを、車内通信線の占有率を監視する監視部と、監視中の占有率に基づいて、記憶された更新用プログラムを車載制御装置に転送するタイミングを制御する転送制御部と、として機能させる。
【図面の簡単な説明】
【０００９】
【図１】図１は、プログラム更新システムの全体構成図である。
【図２】図２は、ゲートウェイの内部構成を示すブロック図である。
【図３】図３は、ＥＣＵの内部構成を示すブロック図である。
【図４】図４は、管理サーバの内部構成を示すブロック図である。
【図５】図５は、プログラム更新システムにおいて実行される、制御プログラムの更新の流れの一例を示すシーケンス図である。
【図６】図６は、第１の実施の形態にかかるプログラム更新システムにおける転送制御処理の具体的な内容を表したフローチャートである。
【図７】図７は、第２の実施の形態にかかるプログラム更新システムにおける転送制御処理の具体的な内容を表したフローチャートである。
【発明を実施するための形態】
【００１０】
＜本開示が解決しようとする課題＞
車両に搭載されるＥＣＵの増加に伴って、更新用プログラムが増加する。また、技術開発の速度が速まるにつれて制御プログラムの更新頻度も高くなる。そのため、効率的に更新する必要がある。制御プログラムを効率的に更新する一つの方法として、サーバから受信した更新用プログラムを車両の走行中の状態で更新することが考えられる。
【００１１】
車両に搭載される複数のＥＣＵは車内ネットワークに接続され、制御用の情報をやり取りしながら協調して１つまたは複数の機能を実現することがある。特に走行中には、多く情報が車内ネットワーク上でやり取りされ、通信線の占有率が高くなることがある。
【００１２】
占有率の高い通信線を介して当該通信線の空きサイズに対して高サイズの更新用プログラムを対象のＥＣＵに転送しようとすると、車内ネットワークに過剰な負荷をかけることになる。車内ネットワークに過剰な負荷がかかることによって、転送時間が通常より長くなったり、通信障害が生じて通信中の制御用の情報が損失したりする可能性がある。転送時間が長引くと当該通信線の占有率の高い状態が長時間継続するため、走行中に必要な制御用の情報のやり取りに支障が生じる場合がある。制御用の情報のやり取りに支障が生じると機能の実現の妨げとなる場合がある。また、通信中の制御用の情報が損失した場合も機能の実現の妨げとなる場合がある。
【００１３】
本開示のある局面における目的は、車内ネットワークに過剰な負荷をかけることなく、効率的に制御プログラムを更新することができる制御装置、転送方法、およびコンピュータプログラムを提供することである。
【００１４】
＜本開示の効果＞
この開示によると、車内ネットワークに過剰な負荷をかけることなく、効率的に制御プログラムを更新することができる。
【００１５】
［実施の形態の説明］
本実施の形態には、少なくとも以下のものが含まれる。すなわち、
（１）本実施の形態に含まれる制御装置は車内通信線を介して車載制御装置と接続され、車載制御装置とともに車内通信線を伝送路とする車内ネットワークを構成する制御装置であって、車載制御装置のための更新用プログラムを記憶する記憶部と、車内通信線の占有率を監視する監視部と、監視中の占有率に基づいて、記憶された更新用プログラムを車載制御装置に転送するタイミングを制御する転送制御部と、を備える。
車内通信線の占有率に基づいて更新用プログラムを車載制御装置に転送するタイミングを制御することによって、車内通信線の占有率の高い状態での更新用プログラムの転送を行わないようにすることができる。このように制御することにより、転送時間が通常より長くなったり、通信障害が生じて通信中の制御用の情報が損失したりすることを防止しつつ、効率的に更新用プログラムを車載制御装置に転送することができる。
【００１６】
（２）好ましくは、転送制御部は、占有率から得られる車内通信線の空き帯域幅と、更新用プログラムのサイズとの比較結果を示す指標値を算出し、指標値を用いて更新用プログラムの転送の可否を判断する。
上記指標値を用いて更新用プログラムの転送の可否を判断することで、車内通信線の空き帯域幅に対して所定以上サイズの大きい更新用プログラムの転送を行わないようにすることができる。これにより、車内通信線の占有率の高い状態において当該車内通信線の空き帯域幅に対して高サイズの更新用プログラムが車載制御装置に転送されることを防止できる。
【００１７】
（３）好ましくは、指標値は、空き帯域幅に対する更新用プログラムのサイズの比率を示す値であって、転送制御部は、指標値が第１の閾値より小さい場合に更新用プログラムの転送を開始し、指標値が第１の閾値以上である場合には更新用プログラムの転送を開始しない。
第１の閾値を、転送時間が通常より長くなったり、通信障害が生じて通信中の制御用の情報が損失したりするような上記指標値に設定することにより、車内通信線の占有率の高い状態において当該通信線の空き帯域幅に対してサイズの大きい更新用データの転送を防止できる。
【００１８】
（４）好ましくは、転送制御部は、指標値が第１の閾値以上であり、かつ、所定の保留条件を満たす場合、更新用プログラムの転送を開始せずに、当該更新用プログラムが保留条件を満たす期間内に、再度、指標値を算出して当該指標値を用いて更新用プログラムの転送の可否を判断し、指標値が第１の閾値以上であり、かつ、保留条件を満たさない場合に更新用プログラムを転送しない。
これにより、保留条件を満たす期間内に車内通信線の占有率が変化（減少）して、指標値が第１の閾値より小さくなると当該更新用プログラムの転送が開始される。そのため、占有率が変化に応じて効率的に更新用プログラムを転送することができる。
【００１９】
（５）好ましくは、保留条件は、更新用プログラムとは異なる、転送対象の他の更新用プログラムがあることを含む。
これにより、上記指標値が第１の閾値以上であって転送が不可と判断された場合に、他の更新用プログラムがある場合に当該他の更新用プログラムの転送の可否の判断を先に行うことができる。これにより、転送対象の更新用プログラムが複数ある場合に、効率的に更新用プログラムを転送することができる。
【００２０】
（６）好ましくは、制御装置は出力装置と接続されて、更新制御部は、更新用プログラムの転送を開始しない場合には、出力装置に更新用プログラムの転送を開始しない旨の通知を行わせるための制御信号を出力する。
制御信号が出力装置に出力されることによって、出力装置では更新用プログラムの転送を開始しないことが通知される。この通知によって、ユーザは、車両を停車して更新モードに切り替えて更新用プログラムを転送したり、ディーラーに入庫して専用装置を車載制御装置に接続して更新用プログラムを転送したり、制御プログラムの更新のための有効な対処を採ることができる。このため、効率的に制御プログラムを更新することができる。
【００２１】
（７）好ましくは、空き帯域幅は、車内通信線に対して許容される最大占有率から占有率を除いた帯域幅であって、車内ネットワークは、最大占有率の異なる複数の車内通信線を含む。
これにより、車載制御装置が接続された車内通信線に応じた空き帯域幅が用いられて、更新用プログラムの転送のタイミングが制御される。このため、最大占有率の異なる複数の車内通信線が車内ネットワークに含まれる場合であっても、転送に用いる車内通信線ごとに柔軟に、当該車内通信線を用いた通信への負荷を抑えつつ効率的に更新用プログラムを転送することができる。
【００２２】
（８）好ましくは、転送制御部は、占有率に基づいて決定される更新用プログラムの転送速度と、更新用プログラムのサイズとを用いて転送完了までの所要時間を算出し、所要時間を用いて更新用プログラムの転送の継続の可否を判断する。
上記所要時間に基づいて更新用プログラムの転送の継続の可否を判断することで、転送完了までの所要時間が所定以上長くなるような大きいサイズの更新用プログラムの転送を中断できる。これにより、車内通信線の占有率の高い状態においてサイズの大きい更新用プログラムが転送されることを防止できる。
【００２３】
（９）好ましくは、更新制御部は、更新用プログラムの転送中に、所定の更新間隔で占有率に基づいて更新用プログラムの転送速度を更新し、更新された転送速度から所要時間を算出して、当該所要時間に基づいて更新用プログラムの転送の継続の可否を判断する。
これにより、転送中に車内通信線の占有率が変化した場合にも、当該更新用プログラムの転送速度を占有率に応じて適切な転送速度とすることができるとともに、更新後の転送速度によると転送完了までの所要時間が所定以上長くなる更新用プログラムの転送を行わないようにすることができる。このため、転送中の占有率の変化に応じて柔軟に更新用プログラムの転送を継続または中断することができる。
【００２４】
（１０）好ましくは、更新制御部は、所要時間が第２の閾値以上である場合には、転送を中断する。
第２の閾値を、通常より長い転送時間や、通信障害が生じて通信中の制御用の情報が損失するような転送時間に設定することによって、このような転送時間が必要となるような転送速度が設定された更新用プログラムの転送を防止できる。
【００２５】
（１１）好ましくは、更新制御部は、転送を中断すると、転送対象の他の更新用プログラムを車載制御装置に転送するタイミングを制御する。
これにより、算出された所要時間が第２の閾値以上であって転送を中断すると判断された場合に、他の更新用プログラムがある場合に当該他の更新用プログラムの転送の可否の判断を先に行うことができる。これにより、転送対象の更新用プログラムが複数ある場合に、効率的に更新用プログラムを転送することができる。
【００２６】
（１２）好ましくは、制御装置は出力装置と接続されて、更新制御部は、更新用プログラムの転送を中断する場合には、出力装置に更新用プログラムの転送を中断する旨の通知を行わせるための制御信号を出力する。
制御信号が出力装置に出力されることによって、出力装置では更新用プログラムの転送を中断することが通知される。この通知によって、ユーザは、車両を停車して更新モードに切り替えて更新用プログラムを転送したり、ディーラーに入庫して専用装置を車載制御装置に接続して更新用データを転送したり、更新用プログラムの転送を再開するための有効な対処を採ることができる。
【００２７】
（１３）本実施の形態に含まれる転送方法は、（１）〜（１２）のいずれか１つに記載の制御装置において、当該制御装置から、車載制御装置のための更新用プログラムを車載制御装置に転送する方法である。
かかる転送方法は、上記（１）〜（１２）の制御装置と同様の効果を奏する。
【００２８】
（１４）本実施の形態に含まれるコンピュータプログラムは、コンピュータを、（１）〜（１２）のいずれか１つに記載の制御装置として機能させる。
かかるコンピュータプログラムは、上記（１）〜（１２）の制御装置と同様の効果を奏する。
【００２９】
［実施の形態の詳細］
以下に、図面を参照しつつ、好ましい実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
【００３０】
＜第１の実施の形態＞
〔システムの全体構成〕
図１は、実施形態にかかるプログラム更新システムの全体構成図である。
図１に示すように、本実施形態のプログラム更新システムは、広域通信網２を介して通信可能な車両１、管理サーバ５およびＤＬ（ダウンロード）サーバ６を含む。
管理サーバ５は、車両１の更新情報を管理する。ＤＬサーバ６は、更新用プログラムを保存する。管理サーバ５およびＤＬサーバ６は、たとえば、車両１のカーメーカーにより運営されており、予め会員登録されたユーザが所有する多数の車両１と通信可能である。
【００３１】
車両１には、車内通信線１６で接続された複数のＥＣＵ３０とゲートウェイ１０とを含む車内ネットワーク（通信ネットワーク）４と、無線通信部１５と、各ＥＣＵ３０によりそれぞれ制御される各種の車載機器（図示せず）と、が搭載されている。
車内ネットワーク４は複数の車内通信線１６Ａ，１６Ｂを有し、車内通信線１６Ａ，１６Ｂそれぞれにバス接続された複数のＥＣＵ３０による複数の通信グループを含む。ゲートウェイ１０は、通信グループ間の通信を中継している。このため、ゲートウェイ１０には車内通信線１６Ａ，１６Ｂが接続されている。車内通信線１６Ａ，１６Ｂを車内通信線１６とも総称する。
【００３２】
無線通信部１５は、携帯電話網などの広域通信網２に通信可能に接続され、車内通信線によりゲートウェイ１０に接続されている。ゲートウェイ１０は、広域通信網２を通じて管理サーバ５およびＤＬサーバ６などの車外装置から無線通信部１５が受信した情報を、車内通信線１６を介してＥＣＵ３０に送信する。
ゲートウェイ１０は、ＥＣＵ３０から取得した情報を無線通信部１５に送信し、無線通信部１５は、その情報を管理サーバ５などの車外装置に送信する。
また、ＥＣＵ３０同士は、車内通信線１６を介して情報を送受信する。
【００３３】
車両１に搭載される無線通信部１５としては、車載の専用通信端末の他に、たとえば、ユーザが所有する携帯電話機、スマートフォン、タブレット型端末、ノートＰＣ（Personal  Computer）等の装置が考えられる。
図１では、ゲートウェイ１０が無線通信部１５を介して車外装置と通信を行う場合が例示されているが、ゲートウェイ１０が無線通信の機能を有する場合には、ゲートウェイ１０自身が管理サーバ５などの車外装置と無線通信を行う構成としてもよい。
【００３４】
また、図１のプログラム更新システムでは、管理サーバ５とＤＬサーバ６とが別個のサーバで構成されているが、これらのサーバ５，６を１つのサーバ装置で構成してもよい。また、管理サーバ５およびＤＬサーバ６は、いずれも、複数の装置からなるものであってもよい。
【００３５】
〔ゲートウェイの内部構成〕
図２は、ゲートウェイ１０の内部構成を示すブロック図である。
図２に示すように、ゲートウェイ１０は、ＣＰＵ１１、ＲＡＭ（Random  Access  Memory）１２、記憶部１３、および車内通信部１４などを備える。図２では、ゲートウェイ１０は、無線通信部１５と車内通信線とを介して接続されているが、無線通信部を統合して、一つの装置としてもよい。
【００３６】
ＣＰＵ１１は、記憶部１３に記憶された一または複数のプログラムをＲＡＭ１２に読み出して実行することにより、ゲートウェイ１０を各種情報の中継装置として機能させる。
ＣＰＵ１１は、たとえば時分割で複数のプログラムを切り替えて実行することにより、複数のプログラムを並列的に実行可能である。なお、ＣＰＵ１１は複数のＣＰＵ群を代表するものであってもよい。この場合、ＣＰＵ１１の実現する機能は、複数のＣＰＵ群が協調して実現するものである。ＲＡＭ１２は、ＳＲＡＭ（Static  ＲＡＭ）またはＤＲＡＭ（Dynamic  ＲＡＭ）等のメモリ素子で構成され、ＣＰＵ１１が実行するプログラムおよび実行に必要なデータ等が一時的に記憶される。
【００３７】
ＣＰＵ１１が実現するコンピュータプログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの周知の記録媒体に記録した状態で譲渡することもできるし、サーバコンピュータなどのコンピュータ装置からの情報伝送によって譲渡することもできる。
この点は、後述のＥＣＵ３０のＣＰＵ３１（図３参照）が実行するコンピュータプログラム、および、後述の管理サーバ５のＣＰＵ５１（図４参照）が実行するコンピュータプログラムについても同様である。
なお、以降の説明において、上位装置が下位装置にデータを転送（送信）することを「ダウンロードする」ともいう。
【００３８】
記憶部１３は、フラッシュメモリ若しくはＥＥＰＲＯＭ等の不揮発性のメモリ素子などにより構成されている。記憶部１３は、ＣＰＵ１１が実行するプログラムおよび実行に必要なデータ等を記憶するとともに、ＤＬサーバ６から受信した各ＥＣＵ３０の更新用プログラムなどを記憶する。
【００３９】
車内通信部１４には、車両１に配設された車内通信線１６を介して複数のＥＣＵ３０が接続されている。車内通信部１４は、たとえばＣＡＮ（Controller  Area  Network）の規格に応じて、ＥＣＵ３０との通信を行う。車内通信部１４の採用する通信期間はＣＡＮに限定されず、ＣＡＮＦＤ（ＣＡＮ  with  Flexible  Data  Rate）、ＬＩＮ（Local  Interconnect  Network）、Ｅｔｈｅｒｎｅｔ（登録商標）、またはＭＯＳＴ（Media  Oriented  Systems  Transport：ＭＯＳＴは登録商標）等の規格であってもよい。複数の車内通信線１６Ａ，１６Ｂの中には、通信規格の異なるものが含まれていてもよい。
車内通信部１４は、ＣＰＵ１１から与えられた情報を対象のＥＣＵ３０へ送信するとともに、ＥＣＵ３０から受信した情報をＣＰＵ１１に与える。車内通信部１４は、上記の通信規格だけでなく、車内ネットワーク４に用いる他の通信規格によって通信してもよい。
【００４０】
無線通信部１５は、アンテナと、アンテナからの無線信号の送受信を実行する通信回路とを含む無線通信機よりなる。無線通信部１５は、携帯電話網等の広域通信網２に接続されることにより車外装置との通信が可能である。
無線通信部１５は、図示しない基地局により形成される広域通信網２を介して、ＣＰＵ１１から与えられた情報を管理サーバ５等の車外装置に送信するとともに、車外装置から受信した情報をＣＰＵ１１に与える。
【００４１】
図２に示す無線通信部１５に代えて、車両１内の中継装置として機能する通信部を採用してもよい。この通信部は、ＵＳＢ（Universal  Serial  Bus）またはＲＳ２３２Ｃ等の規格に応じた通信ケーブルが接続されるコネクタを有し、通信ケーブルを介して接続された別の通信装置と有線通信を行ってもよい。また、この通信部は、Ｂｌｕｅｔｏｏｔｈ（登録商標）またはＷｉ−Ｆｉ（Wireless  Fidelity：登録商標）等の規格に応じたインタフェースを有し、近距離無線を介して接続された別の通信装置と無線通信を行ってもよい。
別の通信装置と管理サーバ５等の車外装置とが広域通信網２を通じた無線通信が可能である場合には、車外装置→別の通信装置→通信部→ゲートウェイ１０の通信経路により、車外装置とゲートウェイ１０とが通信可能になる。
【００４２】
〔ＥＣＵの内部構成〕
図３は、ＥＣＵ３０の内部構成を示すブロック図である。
図３に示すように、ＥＣＵ３０は、ＣＰＵ３１、ＲＡＭ３２、記憶部３３、および通信部３４などを備える。ＥＣＵ３０は、車両１に搭載された対象機器を個別に制御する車載制御装置である。ＥＣＵ３０の種類には、たとえば、電源制御ＥＣＵ、エンジン制御ＥＣＵ、ステアリング制御ＥＣＵ、およびドアロック制御ＥＣＵなどがある。
【００４３】
ＣＰＵ３１は、記憶部３３に予め記憶された一または複数のプログラムをＲＡＭ３２に読み出して実行することにより、自身が担当する対象機器の動作を制御する。ＣＰＵ３１もまた複数のＣＰＵ群を代表するものであってもよく、ＣＰＵ３１による制御は、複数のＣＰＵ群が協調することによる制御であってもよい。
ＲＡＭ３２は、ＳＲＡＭまたはＤＲＡＭ等のメモリ素子で構成され、ＣＰＵ３１が実行するプログラムおよび実行に必要なデータ等が一時的に記憶される。
【００４４】
記憶部３３は、フラッシュメモリ若しくはＥＥＰＲＯＭ等の不揮発性のメモリ素子、或いは、ハードディスクなどの磁気記憶装置等により構成されている。
記憶部３３は、ＣＰＵ３１が読み出して実行するプログラムを格納する。記憶部３３が記憶する情報には、たとえば、車内の制御対象である対象機器を制御するための情報処理をＣＰＵ３１に実行させるためのコンピュータプログラム（以下、「制御プログラム」という。）や、パラメータや地図情報などの、当該プログラムを実行する際に用いるデータが含まれる。
【００４５】
通信部３４には、車両１に配策された車内通信線１６を介してゲートウェイ１０が接続されている。通信部３４は、たとえばＣＡＮ、Ｅｔｈｅｒｎｅｔ、またはＭＯＳＴ等の規格に応じて、ゲートウェイ１０との通信を行う。
通信部３４は、ＣＰＵ３１から与えられた情報をゲートウェイ１０へ送信するとともに、ゲートウェイ１０から受信した情報をＣＰＵ３１に与える。通信部３４は、上記の通信規格だけなく、車載ネットワークに用いる他の通信規格によって通信してもよい。
【００４６】
ＥＣＵ３０のＣＰＵ３１には、当該ＣＰＵ３１による制御モードを、「通常モード」または「リプログラミングモード」（以下、「リプロモード」ともいう。）のいずれかに切り替える起動部３５が含まれる。
ここで、通常モードとは、ＥＣＵ３０のＣＰＵ３１が、対象機器に対する本来的な制御（たとえば、燃料エンジンに対するエンジン制御や、ドアロックモータに対するドアロック制御など）を実行する制御モードのことである。
【００４７】
リプログラミングモードとは、対象機器の制御に用いる制御プログラムを更新する制御モードである。
すなわち、リプログラミングモードは、ＣＰＵ３１が、記憶部３３のＲＯＭ領域に対して、制御プログラムのデータの消去や書き換えを行う制御モードのことである。ＣＰＵ３１は、この制御モードのときには、対象機器に対する本来的な制御を実行せずに、車内通信線１６の占有率を下げることにより、記憶部３３のＲＯＭ領域に格納された制御プログラムを新バージョンに更新する（バージョンアップする）ことが早期に可能となる。
【００４８】
制御プログラムをバージョンアップするときには、ＣＰＵ３１が新バージョンの制御プログラムを記憶部３３に書き込むと、起動部３５は、ＥＣＵ３０をいったん再起動（リセット）させ、新バージョンの制御プログラムが書き込まれた記憶領域についてベリファイ処理を実行する。
起動部３５は、上記のベリファイ処理の完了後に、ＣＰＵ３１を更新後の制御プログラムによって動作させる。
【００４９】
〔管理サーバの内部構成〕
図４は、管理サーバ５の内部構成を示すブロック図である。
図４に示すように、管理サーバ５は、ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、記憶部５４、および通信部５５などを備える。
【００５０】
ＣＰＵ５１は、ＲＯＭ５２に予め記憶された一または複数のプログラムをＲＡＭ５３に読み出して実行することにより、各ハードウェアの動作を制御し、管理サーバ５をゲートウェイ１０と通信可能な車外装置として機能させる。ＣＰＵ５１もまた複数のＣＰＵ群を代表するものであってもよく、ＣＰＵ５１の実現する機能は、複数のＣＰＵ群が協調して実現するものであってもよい。
ＲＡＭ５３は、ＳＲＡＭまたはＤＲＡＭ等のメモリ素子で構成され、ＣＰＵ５１が実行するプログラムおよび実行に必要なデータ等が一時的に記憶される。
【００５１】
記憶部５４は、フラッシュメモリ若しくはＥＥＰＲＯＭ等の不揮発性のメモリ素子、または、ハードディスクなどの磁気記憶装置等により構成されている。
通信部５５は、所定の通信規格に則って通信処理を実行する通信装置よりなり、携帯電話網等の広域通信網２に接続されて当該通信処理を実行する。通信部５５は、ＣＰＵ５１から与えられた情報を、広域通信網２を介して外部装置に送信するとともに、広域通信網２を介して受信した情報をＣＰＵ５１に与える。
【００５２】
〔制御プログラムの更新シーケンス〕
図５は、本実施形態のプログラム更新システムにおいて実行される、制御プログラムの更新の流れの一例を示すシーケンス図である。ＤＬサーバ６に１または複数の更新用プログラムが格納され、一例として、管理サーバ５が、予め登録された車両１について、当該車両１のＥＣＵの制御プログラムを更新するタイミングを決定する。更新のタイミングは、たとえば、車両１のカーメーカーなどによって設定されてもよい。
【００５３】
なお、制御プログラムは、プログラムそのもののみならず、パラメータや地図情報などの、当該プログラムを実行する際に用いるデータも含む。それらを代表させて「制御プログラム」と表現している。そのため、更新用プログラムは、プログラムの更新用のプログラムのみならず、当該プログラムを実行する際に用いるデータの更新用のデータを含む。
【００５４】
制御プログラムを更新するタイミングに達すると、管理サーバ５は、該当する車両１のゲートウェイ１０宛てに、更新を通知する（ステップＳ１）。ステップ１では、管理サーバ５からゲートウェイ１０に、ダウンロード要求とともに更新用プログラムの保存先ＵＲＬや更新用プログラムのサイズ（容量）などの更新用の情報が送られる。
【００５５】
管理サーバ５から更新の通知を受信したゲートウェイ１０は、更新用プログラムを対象のＥＣＵ３０に転送するタイミングを制御する転送制御処理を実行する（ステップＳ２）。転送制御処理については後述する。
【００５６】
ゲートウェイ１０は、ステップＳ２での転送制御処理によって得られた、更新用プログラムを対象のＥＣＵ３０に転送するタイミングに更新用プログラムの転送を開始する。すなわち、ゲートウェイ１０は、更新用の情報に基づいてＤＬサーバ６に対して更新用プログラムのダウンロードを要求する（ステップＳ３）。
【００５７】
ゲートウェイ１０からダウンロードが要求されたＤＬサーバ６は、ダウンロード対象の更新用プログラムをゲートウェイ１０に転送するとともに、制御プログラム（更新対象のデータ）の更新を要求する（ステップＳ４）。
【００５８】
ゲートウェイ１０は、更新用プログラムをダウンロードすると、対象のＥＣＵ３０に更新用プログラムを転送して制御プログラムの更新を要求する（ステップＳ５）。ゲートウェイ１０は、ユーザから更新の許可を受けることによって、対象のＥＣＵ３０に制御プログラムの更新を要求してもよい。
【００５９】
更新用プログラムをダウンロードした対象のＥＣＵ３０は、ゲートウェイ１０からの要求に従って更新用プログラムを展開し、制御プログラムを更新する（ステップＳ６）。更新が完了すると、対象のＥＣＵ３０はゲートウェイ１０に更新完了を通知する（ステップＳ７）。この通知を受けたゲートウェイ１０は、ＤＬサーバ６に更新完了を通知する（ステップＳ８）。
【００６０】
［ゲートウェイの機能構成］
図２を参照して、ゲートウェイ１０のＣＰＵ１１は、転送制御処理を実行するための機能として、監視部１１１および転送制御部１１２を含む。これら機能は、ＣＰＵ１１が記憶部１３に記憶されている１つまたは複数のプログラムを読み出して実行することによって、ＣＰＵ１１において実現される機能である。しかしながら、少なくとも一部機能が、電子回路などのハードウェアによって実現されてもよい。
【００６１】
監視部１１１で表されたＣＰＵ１１の機能（以下、監視部１１１）は、車内通信線１６の占有率Ｏｃを監視する。車内ネットワーク４に接続されたゲートウェイ１０および各ＥＣＵ３０は、データ・フレームと呼ばれるフォーマットに従って自身のＩＤをフレームに格納して、車内通信線１６に出力する。また、ゲートウェイ１０および各ＥＣＵ３０は、接続された車内通信線１６で伝送されるフレームを監視し、自身が受信すると規定されたＩＤが格納されているデータ・フレームを受信する。このとき、監視部１１１は、所定の計測時間ｑにおいて対象とする車内通信線１６を各データ・フレームが占有した時間ｔ１、ｔ２、ｔ３、…ｔｎを計測し、その累積値を計測時間ｑで除して占有率Ｏｃを算出する（Ｏｃ＝（ｔ１＋ｔ２＋ｔ３＋…＋ｔｎ）／ｑ）。
【００６２】
転送制御部１１２で表されたＣＰＵ１１の機能（以下、転送制御部１１２）は、車内通信線１６の占有率Ｏｃに基づいて、当該車内通信線１６を介した更新用プログラムの転送のタイミングを制御する。第１の実施の形態においては、転送制御部１１２は、車内通信線１６の占有率Ｏｃに基づいて、当該車内通信線１６を介して更新用プログラムの転送の開始の可否を判断し、その結果に従って更新用プログラムの転送を開始する。
【００６３】
転送制御部１１２は、監視部１１１で監視している車内通信線１６の占有率Ｏｃから当該車内通信線１６の空き帯域幅Ｂを算出する。そして、転送制御部１１２は、空き帯域幅Ｂと更新用プログラムのサイズΔとの比較結果に基づいて、更新用プログラムを転送するか否かを判断する。車内通信線１６の空き帯域幅Ｂは、車内通信線１６の現在通信に用いている帯域以外の帯域の帯域幅（空き容量）であって、現在の通信状況に加えてさらなる通信に使用可能な帯域幅を指す。空き帯域幅Ｂは、たとえば、車内通信線１６の占有率Ｏｃから得られる現在の使用中の帯域幅を車内通信線１６の全帯域幅Ｂｗから減じた値（Ｂ＝Ｂｗ（１−Ｏｃ））である。
【００６４】
転送制御部１１２は、空き帯域幅Ｂと更新用プログラムのサイズΔとの比較を示す指標についての指標値を算出し、当該指標値に基づいて更新用プログラムを転送するか否かを判断する。上記比較を示す指標は、たとえば、空き帯域幅Ｂに対する更新用プログラムのサイズΔの割合であって、転送制御部１１２は、その指標値Δ／Ｂを算出する。転送制御部１１２は、更新用プログラムの転送を許容する指標値を閾値α（第１の閾値）として予め記憶しておき、算出された指標値Δ／Ｂと閾値αとを比較する。
【００６５】
指標値Δ／Ｂが閾値α未満である場合、転送制御部１１２は、更新用プログラムの転送を開始すると判断する。指標値Δ／Ｂが閾値α未満である場合とは、車内通信線１６を用いて転送可能な帯域（空き帯域）Ｂに対して更新用プログラムのサイズΔが小さいことを表している。指標値Δ／Ｂが閾値α以上になると、車内通信線１６の空き帯域Ｂにして更新用プログラムのサイズΔが大きくなる。そのため、転送時間が通常より長くなったり、通信障害が生じて通信中の制御用の情報が損失したりする可能性がある。
【００６６】
上記比較を示す指標は空き帯域幅Ｂに対する更新用プログラムのサイズΔの割合に限定されない。上記指標は、たとえば、更新用プログラムのサイズΔに対する空き帯域幅Ｂの割合（指標値Ｂ／Δ）や、空き帯域幅Ｂと更新用プログラムのサイズΔとの差分（指標値｜Ｂ−Δ｜）などの、他の指標であってもよい。また、占有率ＯｃとサイズΔとの関係を指標としてもよい。転送制御部１１２は、上記指標値に応じた閾値αを予め記憶している。閾値αは固定値ではなく、管理サーバ５が、更新用プログラムごとに設定してもよい。
【００６７】
なお、上記指標値として、空き帯域幅Ｂそのものが用いられてもよい。これは、更新用プログラムのサイズΔが更新用プログラムごとに異ならない場合や、概ね同じサイズである場合、などである。この場合、転送制御部１１２は、空き帯域幅Ｂが所定の閾値未満である場合に更新用プログラムを転送し、閾値以上である場合には転送しない。これにより、ゲートウェイ１０における転送制御処理を簡易にすることができる。
【００６８】
［転送制御処理］
図６は、第１の実施の形態にかかるプログラム更新システムにおける転送制御処理の具体的な内容を表したフローチャートである。図６のフローチャートに表された処理は、ゲートウェイ１０のＣＰＵ１１が、記憶部１３に記憶された１つまたは複数のプログラムをＲＡＭ１２上に読み出して実行することによって監視部１１１および転送制御部１１２の機能を実現することで実行される。図６の処理は、ＣＰＵ１１が起動中において、所定の時間間隔など、予め規定されたタイミングで繰り返し実行される。
【００６９】
図６を参照して、ＣＰＵ１１は、ＥＣＵ３０に転送する更新用プログラムがあるか否かを判断する（ステップＳ１０１）。該当する更新用プログラムがない場合には（ステップＳ１０１でＮＯ）、以降の動作を行わず、上記の予め規定された次のタイミングが来るまで待機する。
【００７０】
該当する更新用プログラムがある場合（ステップＳ１０１でＹＥＳ）、ＣＰＵ１１は、管理サーバ５からの更新の通知より、更新用プログラムのサイズΔを取得する（ステップＳ１０３）。また、ＣＰＵ１１は、対象のＥＣＵ３０が接続されている車内通信線１６（転送バス）の占有率Ｏｃを監視する。そして、ＣＰＵ１１は、占有率Ｏｃに基づいて車内通信線１６の空き帯域幅Ｂを算出する（ステップＳ１０５）。
【００７１】
ＣＰＵ１１は、空き帯域幅Ｂと更新用プログラムのサイズΔとから指標値Δ／Ｂを算出し、その指標値Δ／Ｂと予め記憶している閾値αとを比較する（ステップＳ１０７）。指標値Δ／Ｂが閾値α未満である場合（ステップＳ１０７でＮＯ）、ＣＰＵ１１は、更新用プログラムの転送を開始すると決定する（ステップＳ１０９）。この場合、ＣＰＵ１１は、図５のステップＳ３以降の動作を実行する。
【００７２】
指標値Δ／Ｂが閾値α以上である場合（ステップＳ１０７でＹＥＳ）、ＣＰＵ１１は、当該更新用プログラムを転送しないと決定し、当該ゲートウェイ１０に接続された図示しない出力装置に通知させるための制御信号を出力する。これにより、当該出力装置によって通知が行われる（ステップＳ１１１）。出力装置は、たとえば、ディスプレイやスピーカなどである。この場合、図５のステップＳ３以降の動作は行われない。
【００７３】
ステップＳ１１１の通知は、ＥＣＵ３０に転送されないことの通知、車両１を停車させてリプロモードとすることを促す通知、ディーラーによる当該制御プログラムの更新を促す通知、などである。これにより、ユーザは、更新用プログラムが転送されないことを知ることができる。そのため、ユーザは、車両１を停車させてリプロモードとする、ディーラーに入庫して制御プログラムの更新を依頼する、などの、当該制御プログラムの更新のための対処を採ることができる。
【００７４】
車両１の走行中は複数のＥＣＵ３０間でやり取りされる情報が多いため、車内通信線１６の占有率Ｏｃが高くなる傾向にある。そのため、車両１を停車すると、占有率Ｏｃは低くなる可能性がある。占有率Ｏｃが低くなると指標値Δ／Ｂが閾値α未満となる可能性があるためである。これにより、当該更新用プログラムの転送および制御プログラムの更新が早期に行われる可能性がある。
【００７５】
ＣＰＵ１１は、以上で、１つの更新用プログラムについて、当該更新用プログラムの対象のＥＣＵ３０への転送の可否の判断を終了する。ＣＰＵ１１は、以上の動作を繰り返す。そのため、転送対象の複数の更新用プログラムがある場合、ＣＰＵ１１は、次の更新用プログラムについて同じ動作を行って、対象のＥＣＵ３０への転送の可否を判断する。つまり、ある１つの更新用プログラムについて、対象のＥＣＵ３０に転送しないと決定された場合には、次の更新用プログラムについて対象のＥＣＵ３０への転送の可否が判断されて、判断結果が肯定的であった場合には当該次の更新用プログラムの転送が実行される。これにより、複数の更新用プログラムを効率的に該当するＥＣＵ３０に転送することができ、制御プログラムの更新を効率的に行うことができる。
【００７６】
［第１の実施の形態の効果］
第１の実施の形態にかかるプログラム更新システムは、更新用プログラムのサイズΔがＥＣＵ３０への転送に用いる車内通信線１６の空き帯域幅Ｂに対して小さい場合に当該更新用プログラムの転送を開始する。大きい場合には当該更新用プログラムの転送を行わない。このため、車内通信線１６の占有率Ｏｃが高い状態のときに大きなサイズの更新用プログラムが転送されない。すなわち、車内通信線１６を用いた通信へ過剰な負荷をかけることがない。そのため、当該通信への過剰な負荷がかかることによって転送時間が通常より長くなったり、通信障害が生じて通信中の制御用の情報が損失したりすることを防止できる。
【００７７】
先の更新用プログラムの転送が開始されないときに、サイズΔが車内通信線１６の空き帯域幅Ｂに対して小さい他の更新用プログラムの転送が先の更新用プログラムの転送よりも優先的に行われる。つまり、第１の実施の形態にかかるプログラム更新システムでは、車内ネットワークに過剰な負荷をかけることなく複数の更新用プログラムを効率的に転送し、効率的に制御プログラムの更新を実行することができる。
【００７８】
＜変形例１＞
車内通信線１６の帯域に対しては帯域マージン（余裕帯域）Ｍが設定され、車内通信線１６の全帯域Ｂｗから帯域マージンＭを除いた帯域が最大占有率Ｏｍ（Ｏｍ＝（Ｂｗ−Ｍ）/Ｂｗ）として使用が許容されていてもよい。帯域マージンＭは、たとえば全帯域Ｂｗの７０％などである。この場合、空き帯域幅Ｂは、当該車内通信線１６に対して許容された最大占有率Ｏｍから占有率Ｏｃを減じた値（Ｂ＝Ｂｗ・（Ｏｍ−Ｏｃ））であってもよい。これにより、車内通信線１６が現在の占有率に加えて更新用プログラムの転送のために占有されても、帯域マージンＭが確保される。
【００７９】
この場合、転送制御部１１２は、帯域マージンＭを予め記憶しておき、車内通信線１６の最大占有率Ｏｍを算出する。または、転送制御部１１２は、車内通信線１６の最大占有率Ｏｍを予め記憶しておく。
なお、帯域マージンＭおよび最大占有率Ｏｍは、いずれも固定値でなくてもよく、管理サーバ５が更新用プログラムごとに設定してもよい。
【００８０】
帯域マージンＭは、車内通信線１６ごとに異なってもよい。言い換えると、複数の車内通信線１６Ａ，１６Ｂの中には、帯域マージンＭの異なる車内通信線１６が含まれていてもよい。この場合、転送制御部１１２は、車内通信線１６ごとの帯域マージンＭまたは最大占有率Ｏｍを予め記憶しておき、更新用プログラムの転送に用いる車内通信線１６についての帯域マージンＭまたは最大占有率Ｏｍを用いて、当該更新用プログラムの転送の可否を判断する。
【００８１】
変形例においては、図６のステップＳ１０５でＣＰＵ１１は、当該更新用プログラムの転送に用いる車内通信線１６についての最大占有率Ｏｍを用いて空き帯域幅Ｂを算出する。つまり、複数の車内通信線１６Ａ，１６Ｂの中には、空き帯域幅Ｂの算出方法が異なる車内通信線１６が含まれていてもよい。
【００８２】
このように、空き帯域幅Ｂの算出方法を車内通信線１６に応じた算出方法とすることによって、車内通信線１６に異なる帯域マージンＭが設定されている場合であっても、通信線ごとに柔軟に、当該車内通信線１６を用いた通信への負荷を抑えつつ効率的に制御プログラムを更新することができる。
【００８３】
＜変形例２＞
図６の転送制御処理において、更新用プログラムについて、上記ステップＳ１０７で指標値Δ／Ｂが閾値α以上であった場合に（ステップＳ１０７でＹＥＳ）、ＣＰＵ１１は、さらに、当該更新用プログラムが予め規定された保留条件を満たすか否かを判断する（ステップＳ１１３）。保留条件は、たとえば、当該更新用プログラムがＤＬ６において車両１に対してダウンロードの対象とされた時点から所定期間内であること、当該更新用プログラムに対してＥＣＵ３０に転送するか否かの判断がなされた回数が所定回数以内であること、ＤＬサーバ６に他のダウンロード対象の更新用プログラムがあること、これらの組み合わせ、などである。
【００８４】
更新用プログラムが保留条件を満たす場合（ステップＳ１１３でＹＥＳ）には更新用プログラムを転送しないと決定することを現時点では保留し、転送を開始しない。この場合、当該更新用プログラムはその時点ではＥＣＵ３０への転送が開始されずに、ＤＬサーバ６またはゲートウェイ１０に維持される。そのため、後のタイミングで実行される転送制御処理によって、再度、当該更新用プログラムのＥＣＵ３０への転送の可否が判断される。つまり、いったん転送しないと判断された場合であっても保留条件を満たす期間内は、当該更新用プログラムのＥＣＵ３０への転送の判断は他の更新用プログラムの判断の後回しにされる。
【００８５】
車両１が走行中の場合には車内通信線１６の占有率Ｏｃが高いために指標値Δ／Ｂが閾値α以上となる場合が多いものの、車両１が停車するなどして車内通信線１６の占有率Ｏｃが低くなることもある。保留条件を満たす期間内にそのタイミングに達すると、指標値Δ／Ｂが閾値α未満となることもあるため、更新用プログラムのＥＣＵ３０への転送が可能になる場合もある。そこで、第２の変形例にかかる転送制御処理の判断が行われることによって、車両１の走行中などの車内通信線１６の占有率Ｏｃが高いときにはサイズΔの小さい更新用プログラムの転送が優先され、サイズΔの大きい更新用プログラムの転送は車両１が停車するなどして車内通信線１６の占有率Ｏｃが下がるまで後回しにされる。そのため、当該車内通信線１６を用いた通信への負荷を抑えつつ、効率的に制御プログラムを更新することができる。
【００８６】
［第２の実施の形態］
第１の実施の形態にかかるプログラム更新システムでは、更新用プログラムの転送に用いる車内通信線１６の占有率Ｏｃに応じて、当該更新用プログラムの転送が開始される。しかしながら、占有率Ｏｃは、車両１の走行状況などによって変化する。そのため、転送開始時に占有率Ｏｃが転送可能と判断される程度に低かった場合であっても、走行状況などによっては転送中に占有率Ｏｃが高くなる場合がある。その結果、更新用プログラムの転送中に、空き帯域幅Ｂに対して当該更新用プログラムのサイズΔが大きくなることがある。この場合、当該更新用プログラムの転送を継続すると、転送時間が通常より長くなったり、通信障害が生じて通信中の制御用の情報が損失したりするような不都合が生じるおそれがある。そこで、第２の実施の形態にかかるプログラム更新システムは、更新用プログラムの転送のタイミングとして、転送中における転送の継続を制御する。
【００８７】
第２の実施の形態にかかるゲートウェイ１０の転送制御部１１２は、車内通信線１６の占有率Ｏｃに基づいて更新用プログラムの当該車内通信線１６における転送速度（転送レート）を更新する。さらに、転送制御部１１２は、当該転送レートでの更新用プログラムの転送に要する時間Ｔに基づいて、転送を継続するか否かを判断する。
【００８８】
転送制御部１１２は、監視部１１１で監視されている占有率Ｏｃに基づいて転送レートＶを決定する。一例として、転送制御部１１２は、監視部１１１で監視されている占有率Ｏｃが、目標とする占有率に近づくように転送レートＶを決定する。このために、転送制御部１１２は、占有率Ｏｃと転送レートＶとの関係式を予め記憶しておき、監視部１１１で得られた占有率Ｏｃを当該関係式に代入することで転送レートＶを算出してもよい。転送制御部１１２は、占有率Ｏｃと転送レートＶとの対応関係を予め記憶しておき、当該対応関係から、監視部１１１で得られた占有率Ｏｃに対応した転送レートＶを読み出してもよい。
【００８９】
転送制御部１１２は、更新用プログラムの転送の転送中に、占有率Ｏｃの監視を継続して所定間隔（更新間隔）ごとに当該占有率Ｏｃに基づいて転送レートＶを決定し、更新用プログラムの転送レートＶを更新する。
【００９０】
転送制御部１１２は、転送レートＶを決定すると、更新用プログラムのサイズおよび転送レートＶに基づいて、当該更新用プログラムの転送の所要時間（総転送時間）Ｔを算出する。転送制御部１１２は、総転送時間Ｔに基づいて、更新用プログラムの転送を継続するか否かを判断する。
【００９１】
転送制御部１１２は、更新用プログラムの転送の継続を許容する総転送時間を閾値Ｔｈ（第２の閾値）として予め記憶しておき、算出された総転送時間Ｔと閾値Ｔｈとを比較する。総転送時間Ｔが閾値Ｔｈ未満である場合（Ｔ＜Ｔｈ）、転送制御部１１２は、更新用プログラムの転送を継続すると判断する。総転送時間Ｔが閾値Ｔｈ以上となる場合（Ｔ≧Ｔｈ）、転送制御部１１２は、更新用プログラムの転送を中断する。
【００９２】
［転送制御処理］
図７は、第２の実施の形態にかかるプログラム更新システムにおける転送制御処理の具体的な内容を表したフローチャートである。図７のフローチャートに表された処理もまた、ゲートウェイ１０のＣＰＵ１１が、記憶部１３に記憶された１つまたは複数のプログラムをＲＡＭ１２上に読み出して実行することによって監視部１１１および転送制御部１１２の機能を実現することで実行される。図７の処理は、図６のステップＳ１０９でＣＰＵ１１が更新用プログラムの転送を開始した後の、転送中に行われる。
【００９３】
図７を参照して、ＣＰＵ１１は、更新用プログラムの転送が開始した後も車内通信線１６の占有率Ｏｃの監視を継続している。更新用プログラムの転送が開始した後（ステップＳ１０９）、予め規定されている所定の更新間隔に達すると、ＣＰＵ１１は、車内通信線１６の占有率Ｏｃに基づいて転送レートＶを決定し、更新用プログラムの転送レートを更新する（ステップＳ２０１）。
【００９４】
ＣＰＵ１１は、更新用プログラムのサイズΔおよび転送レートＶに基づいて、当該更新用プログラムの転送完了までの所要時間（総転送時間）Ｔを算出する（ステップＳ２０３）。そして、ＣＰＵ１１は、算出した総転送時間Ｔと予め記憶している閾値Ｔｈとを比較する（ステップＳ２０５）。なお、閾値Ｔｈは固定値でなくてもよく、管理サーバ５が、更新用プログラムごとに設定してもよい。
【００９５】
総転送時間Ｔが閾値Ｔｈ未満である場合には（ステップＳ２０５でＮＯ）、ＣＰＵ１１は、次の更新間隔に達するまで（ステップＳ２０７でＮＯ、かつステップＳ２０９でＮＯ）、更新した転送レートＶでの転送を継続する。次の更新間隔に達する前に更新用プログラムの転送が完了すると（ステップＳ２０９でＹＥＳ）、ＣＰＵ１１は、一連の動作を終了する。
【００９６】
更新した転送レートＶでの転送中に次の更新間隔に達すると（ステップＳ２０７でＹＥＳ）、ＣＰＵ１１は、上記ステップＳ２０１からの動作を繰り返す。つまり、更新間隔ごとにその時点の占有率Ｏｃに基づいて転送レートＶを更新する。そして、当該転送レートＶでの総転送時間Ｔに基づいて転送を継続するか否かを判断する。これにより、更新用プログラムの転送中に車内通信線１６の占有率Ｏｃが変化した場合にも、転送レートＶを占有率Ｏｃに応じて適切な転送レートとすることができるとともに、占有率Ｏｃの変化に応じて柔軟に転送のタイミングの制御（中断するか否か）を行うことができる。
【００９７】
総転送時間Ｔが閾値Ｔｈ以上である場合（ステップＳ２０５でＹＥＳ）、ＣＰＵ１１は更新用プログラムの転送を中断する（ステップＳ２１１）。これにより、占有率Ｏｃが変化したことによって、総転送時間Ｔが閾値Ｔｈ以上長くなるような、空き帯域に対するサイズが大きくなった更新用プログラムの転送を中断することができる。このため、転送開始後の占有率Ｏｃの変化に応じて柔軟に転送制御を行うことができる。
【００９８】
更新用プログラムの転送を中断すると、ＣＰＵ１１は、図６のステップＳ１１１以降の動作を行う。すなわち、ＣＰＵ１１は、図６のステップＳ１１１の通知を行ってもよい。この通知は、あるＥＣＵ３０に対しての更新用プログラムの転送が中断されたことの通知、車両１を停車させて、リプロモードとすることを促す通知、などである。これにより、ユーザは、更新用プログラムの転送が中断されたことを知ることができる。そのため、ユーザは、車両１を停車させてリプロモードとする、ディーラーに入庫して制御プログラムの更新を依頼する、などの、当該更新用プログラムの転送の再開のための対処を採ることができる。
【００９９】
次に、ＣＰＵ１１は、ステップＳ１１１の通知の後、ステップＳ１０１以降の動作を実行する。つまり、ステップＳ２１１で転送中であった更新用プログラムの転送を中断すると、ＣＰＵ１１は、他の更新用プログラムの転送の可否を判断する。これにより、複数の更新用プログラムを効率的に転送することができ、効率的に制御プログラムの更新を実行することができる。
【０１００】
ＣＰＵ１１は、第２の変形例と同様に、さらに、当該更新用プログラムが上記のような保留条件を満たすか否かを判断してもよい（ステップＳ１１３）。そして、当該更新用プログラムが保留条件を満たす期間内に（ステップＳ１１３でＹＥＳ）、再度、上記ステップＳ１０１からの動作を実行してもよい。いったん、更新用プログラムプログラムの転送を中断した後であっても、車両１の走行状況などによって車通車内通信線１６の占有率Ｏｃが変化して、更新用プログラムの転送が可能な状態となる場合がある。保留条件を満たす期間内にそのような状態の変化があると、中断された更新用プログラムの転送が再開される。そのため、ユーザの利便性を向上させることができる。
【０１０１】
［第２の実施の形態の効果］
第２の実施の形態にかかるプログラム更新システムは、転送中に車内通信線１６の占有率Ｏｃが変化（増加）したことによって更新用プログラムのサイズが空き帯域に対して大きくなった場合に、当該更新用プログラムの転送を中断する。これにより、更新用プログラムの転送開始後にも、転送時間が通常より長くなったり、通信障害が生じて通信中の制御用の情報が損失したりするような不都合が生じることを防止できる。つまり、第２の実施の形態にかかるプログラム更新システムでは、車内ネットワークに過剰な負荷をかけることなく、効率的に制御用プログラムの転送を継続することができる。
【０１０２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１０３】
１  車両
２  広域通信網
４  車内ネットワーク
５  管理サーバ
６  ＤＬサーバ
１０  ゲートウェイ（制御装置）
１１  ＣＰＵ
１２  ＲＡＭ
１３  記憶部
１４  車内通信部
１５  無線通信部
１６，１６Ａ，１６Ｂ  車内通信線
３０  ＥＣＵ
３１  ＣＰＵ
３２  ＲＡＭ
３３  記憶部
３４  通信部
３５  起動部
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５４  記憶部
５５  通信部
１１１  監視部
１１２  転送制御部
【図１】
0006525109.tif 000002
【図２】
0006525109.tif 000003
【図３】
0006525109.tif 000004
【図４】
0006525109.tif 000005
【図５】
0006525109.tif 000006
【図６】
0006525109.tif 000007
【図７】
0006525109.tif 000008