プログラムが格納され、前記プログラムの書換えが可能な記憶装置106が搭載された電子制御装置56a~56dと、前記プログラムの書換えを行う書換え装置54と、車両16の駆動源及び前記電子制御装置56a~56dの作動のために電力を供給するバッテリ58とを有する車両用プログラム書換えシステム10であって、前記書換え装置54は、前記プログラムの書換え開始時における前記バッテリ58の状態及び前記プログラムの書換えの予定処理時間に基づいて、前記プログラムの書換え後の前記バッテリ58の状態を予測し、予測した前記バッテリ58の状態が前記車両16を再始動可能な条件を満たす場合、前記プログラムの書換えを実行することを特徴とする車両用プログラム書換えシステム10。請求項1記載の車両用プログラム書換えシステム10において、前記書換え装置54は、前記車両16の外気温、エンジン冷却水温及び前記バッテリ58の内部抵抗の少なくとも1つに応じて前記再始動可能な条件を変更することを特徴とする車両用プログラム書換えシステム10。請求項1記載の車両用プログラム書換えシステム10において、前記書換え装置54は、前記プログラムの書換え開始時における前記バッテリ58の残容量又は充電率及び消費電流と、前記プログラム書換えの予定処理時間とに基づいて、前記プログラムの書換え後の前記バッテリ58の残容量又は充電率を予測し、予測した前記残容量又は充電率が所定値より大きい場合に、前記プログラムの書換えを実行することを特徴とする車両用プログラム書換えシステム10。請求項1記載の車両用プログラム書換えシステム10において、前記書換え装置54は、前記バッテリ58の所定充電状態から前記プログラムの書換え開始時までの放電電力量と、前記プログラム書換え開始時における消費電流と、前記プログラムの書換えの予定処理時間とに基づいて、前記所定充電状態から前記プログラムの書換え終了時までの放電電力量を予測し、予測した前記放電電力量が所定値より小さい場合に、前記プログラム書換えを実行することを特徴とする車両用プログラム書換えシステム10。請求項1記載の車両用プログラム書換えシステム10において、前記書換え装置54は、予測した前記バッテリ58の状態が前記車両16を再始動可能な条件を満たす場合でも、前記プログラムの書換え開始時における前記バッテリ58の消費電流又は内部抵抗が所定値より大きい場合、前記プログラムの書換えを中止することを特徴とする車両用プログラム書換えシステム10。[A.一実施形態]1.全体及び各部の構成1全体構成図1は、この発明の一実施形態に係る車両用プログラム書換えシステム10以下書換えシステム10又はシステム10という。の概略的な構成図である。書換えシステム10は、データ伝達システム12と、管理サーバ14以下サーバ14という。と、複数の車両16とを有する。システム10では、各車両16の電子制御装置56a~56d以下ECU56a~56dという。に記憶されたプログラムを書き換える更新する際に使用する書換えデータプログラムは、データ伝達システム12を介して管理サーバ14から各車両16に伝達する。なお、以下では、ECU56a~56dをECU56と総称する。2データ伝達システム12データ伝達システム12は、読取り専用のコンパクトディスク22以下CD-ROM22という。と、衛星放送網24と、移動通信網26とを有する。CD-ROM22は、書換えデータプログラムを記憶している。CD-ROM22は、輸送業者郵便、宅配便による輸送手段トラック、貨物列車などを介して車両16のメーカから各ユーザに送付される。衛星放送網24は、放送衛星28を用いた衛星放送により書換えデータプログラムを配信することができる。ここでの衛星放送としては、例えば、移動体向けの衛星デジタル音声放送北米におけるシリウスXMラジオ等を用いることができる。移動通信網26は、携帯電話86を用いた通信を可能とする通信網である。移動通信網26は、携帯電話86との間の通信により書換えデータプログラムを車両16に送信することができる。本実施形態では、CD-ROM22、衛星放送網24又は移動通信網26を用いて、書換えデータプログラムを各車両16に伝達することができる。3管理サーバ14管理サーバ14は、通信装置32と、入力装置34と、モニタ36と、演算装置38と、記憶装置40と、書換えプログラムデータベース42以下書換えプログラムDB42又はプログラムDB42という。とを有する。管理サーバ14の管理者又はこれに準ずる者以下管理者等という。は、書換えデータプログラムを作成すると、入力装置34を介して当該書換えデータプログラムをプログラムDB42に記憶する。そして、衛星放送網24を用いて書換えデータプログラムを配信する場合、管理者等は、放送衛星28等を介して書換えデータプログラムを配信する。移動通信網26を用いて書換えデータプログラムを送信する場合、管理者等は、サーバ14において、新たな書換えデータプログラムをアップロードする。そして、車両16に設置された携帯電話86から書換えデータプログラムの送信要求があった場合、サーバ14は、通信装置32及び移動通信網26を介して書換えデータプログラムを携帯電話86に送信する。CD-ROM22を用いて書換えデータプログラムを伝達する場合、管理者等は、CD-ROM22に書換えデータプログラムを記憶し、輸送業者を介してCD-ROM22を各ユーザに送付する。このため、厳密には、CD-ROM22は、管理サーバ14から送付されない場合があるが、以下では、CD-ROM22が管理サーバ14から送付されない場合を、CD-ROM22が管理サーバ14から送付される場合を含めて説明する。4車両16a車両16の構成各車両16は、受信装置52と、プログラム書換え装置54以下書換え装置54という。と、複数のECU56と、バッテリ58と、バッテリセンサ60と、オルタネータ62と、イグニションスイッチ64以下IGSW64という。と、ドアロック/乗員検知ユニット66以下検知ユニット66という。とを備える。本実施形態における車両16は、ガソリン車であるが、これに限らず、例えば、ディーゼル車又は電気自動車燃料電池車及びハイブリッド車を含む。であってもよい。車両16では、データ伝達システム12を介して管理サーバ14から伝達される書換えデータプログラムを受信装置52で受信する。そして、受信装置52が受信した書換えデータプログラムは、書換え装置54により、対象となるECU56に書き込まれる。なお、図1では、右側の車両16のみ内部構成を示し、その他の車両16については内部構成の記載を省略している。b受信装置52受信装置52は、データ受信部72と、表示部74と、入力部76と、演算部78と、記憶部80とを有する。データ受信部72は、無線アンテナ82と、モデム84と、携帯電話86と、携帯電話86用のコネクタ88と、CD-ROMドライブ90以下ドライブ90という。とを有する。衛星放送網24を介して書換えデータプログラムが配信される場合、受信装置52は、無線アンテナ82とモデム84とを用いて書換えデータプログラムを受信する。移動通信網26を介して書換えデータプログラムが送信される場合、受信装置52は、携帯電話86を用いて書換えデータプログラムを受信する。CD-ROM22を介して書換えデータプログラムが伝達される場合、CD-ROM22をドライブ90に挿入し、CD-ROM22から書換えデータプログラムを読み出すことにより、受信装置52は、プログラムを受信する。なお、携帯電話86は、ユーザが日頃持ち歩いているものを、車両16の走行時にコネクタ88に接続して用いる。或いは、携帯電話86は、車両16専用に用いるものとし、常時コネクタ88に接続しておいてもよい。表示部74は、ユーザに対する種々の表示を行う。入力部76は、ユーザの操作に応じた入力を受け付ける。本実施形態では、表示部74及び入力部76を、例えば、タッチパネルにより構成することができる。演算部78は、受信装置52の各部を制御する。記憶部80は、図示しない揮発性メモリ及び不揮発性メモリを有し、受信装置52用の制御プログラムを記憶すると共に、ECU56のプログラムを書き換えるための書換えデータプログラムを記憶する。なお、受信装置52には、ナビゲーション装置としての機能を持たせることができる。換言すると、従前のナビゲーション装置に、本実施形態における受信装置52の機能を持たせてもよい。c書換え装置54書換え装置54は、各ECU56においてプログラムの書換えを行うものであり、入出力部92と、演算部94と、記憶部96とを有する。書換え装置54の機能及び動作の詳細は後述する。d各ECU56ECU56は、車両16の各部を制御するものであり、ECU56には、例えば、図示しないエンジンの出力を制御するエンジン電子制御装置56a以下ENGECU56aという。と、図示しないブレーキシステムの制御を行うアンチロックブレーキシステム電子制御装置56b以下ABSECU56bという。と、図示しないエアバッグの制御を行う補助拘束システム電子制御装置56c以下SRSECU56cという。と、図示しないイモビライザ装置の制御を行うイモビライザ電子制御装置56d以下イモビライザECU56dという。とが含まれる。上記のように、これらのECU56a~56dを含め、各ECUをECU56と総称する。各ECU56は、入出力部102と、演算部104と、記憶部106とを有する。なお、図1では、ENGECU56aの入出力部102、演算部104及び記憶部106のみ図示し、その他のECU56b~56dについては入出力部102、演算部104及び記憶部106の図示を省略している。また、ENGECU56aは、エンジン回転数Ne[rpm]を検出するエンジン回転数センサ108と、車両16の車速V[km/h]を検出する車速センサ110とに接続されている。eバッテリ58バッテリ58は、受信装置52、書換え装置54及び各ECU56に電力を供給する。このうち受信装置52については、基本的には、IGSW64を介して電力供給の有無を切り換えるが、書換え装置54からの指令起動信号Sonに応じて電力供給の有無を切り換えることもできる。書換え装置54は、バッテリ58と常に接続されている。各ECU56については、IGSW64を介して電力供給の有無を切り換えることができる。詳細は、図2を参照して後述する。さらに、バッテリ58は、図示しないエンジンの作動制御系の動作等のためにも電力を供給する。fバッテリセンサ60バッテリセンサ60は、バッテリ58の充電率以下SOCという。、内部抵抗R、電圧以下バッテリ電圧Vbatという。、消費電流放電電流以下バッテリ電流Ibatという。及び液温以下バッテリ液温Tbatという。を検出する。なお、SOCは、例えば、バッテリ電流Ibatの積分値とバッテリ58の開放電圧以下OCVという。から検知する。内部抵抗Rは、エンジン始動時の大電流放電によるバッテリ電圧Vbatの降下から検知する。バッテリ液温Tbatは、バッテリセンサ60内の雰囲気温度と充電電流及びバッテリ58の容積から推定する。バッテリセンサ60は、SOC[]の代わりに、残容量[Ah]を検出してもよい。gオルタネータ62オルタネータ62は、図示しないエンジンと接続され、エンジンの動力に基づいて発電を行う。オルタネータ62が生成した電力は、バッテリ58に充電されると共に、図示しない補機に供給される。hIGSW64本実施形態のIGSW64は、ロータリ式であり、図示しないインスツルメントパネルに向かって左側からオフ、ACCアクセサリ及びオンの位置を選択可能である。また、IGSW64は、オンの位置から更に右側時計回りに回すと、STエンジンスタートの位置となり、エンジンが始動する。本実施形態では、IGSW64がオフの位置にあるとき、バッテリ58から受信装置52及び各ECU56への電力供給は、基本的に停止される。なお、後述するように、車両16がいわゆるスマートスタート機能を有している場合、IGSW64は、いわゆるスマートスタート機能で用いるプッシュスイッチであってもよい。iドアロック/乗員検知ユニット66検知ユニット66は、ドアロック122の解錠/施錠状態及びシートセンサ124の動作状態を検知し、書換え装置54に出力信号Sh図2を送信する。シートセンサ124は、シート内部に配置された圧力センサであり、その検出値により乗員の有無を判定可能である。乗員がいないとき、シートセンサ124の検出値はゼロである。出力信号Shは、ドアロック122の解錠/施錠状態と、シートセンサ124が配置された座席における乗員の有無とを示す。2.電力供給構成図2には、車両16における電力の供給及び信号の入出力の様子を説明する図が示されている。図2に示すように、バッテリ58からの電力以下バッテリ電力Pbatという。[W]は、受信装置52、書換え装置54及び検知ユニット66に直接供給される。このため、受信装置52、書換え装置54及び検知ユニット66は、IGSW64の位置にかかわらず、動作可能である。但し、受信装置52については、通常、本実施形態では、受信装置52は、IGSW64の位置がACC又はオンであるとき、バッテリ電力Pbatを利用して電源オンとなり、IGSW64の位置がオフであるとき、バッテリ電力Pbatを利用せず、電源オフとなる。例外的に、受信装置52が書換え装置54から起動信号Sonを受信したときは、IGSW64の位置がオフであっても、受信装置52は、書換え装置54から解除指令を受けるまで、バッテリ電力Pbatを利用して電源オンとなる。また、バッテリ電力Pbatは、IGSW64を介して各ECU56に供給される。より具体的には、IGSW64の位置がオンであるとき、バッテリ電力Pbatが各ECU56に供給される。一方、IGSW64の位置がオフ又はACCであるとき、バッテリ電力Pbatは各ECU56に供給されない。さらに、検知ユニット66から書換え装置54には、ドアロック122の解錠/施錠状態及び所定のシートにおける乗員の有無を示す出力信号Shドアロック信号、ドアアンロック信号、乗員検知信号が出力される。書換え装置54は、出力信号Shに基づいて車両16内におけるユーザ乗員の有無を判定し、処理に用いる詳細は後述する。。3.プログラムの書換え1CD-ROM22を介して伝達された書換えデータプログラムの場合a書換え処理の概要図3は、CD-ROM22を介して伝達された書換えデータプログラムでECU56のプログラムを書き換える際の処理の概要を示すフローチャートである。ステップS1において、ユーザによりCD-ROM22が受信装置52のドライブ90に挿入されると、受信装置52は、書換えデータプログラムをCD-ROM22から読み出す。ステップS2において、車両16では、プログラムの書換えの準備を行う。当該準備の中には、バッテリ58の状態の確認が含まれる詳細は後述する。。ステップS3において、車両16では、プログラムの書換えの準備完了をユーザに通知する。ステップS4において、車両16は、ユーザからプログラムの書換え処理の許可を受け付ける。ステップS5において、車両16は、IGSW64の位置をオフにするようユーザに要求する。この際、IGSW64の位置がオフになっても受信装置52を電源オンのままにするよう設定する。ステップS6において、車両16は、ユーザがIGSW64の位置をオフにしたことに伴う各ECU56の電源オフを確認する。なお、受信装置52はオンのままである。ステップS7において、車両16は、ユーザにIGSW64の位置をオンにするよう要求する。ステップS8において、車両16は、ユーザがIGSW64の位置をオンにしたことに伴う各ECU56の再起動電源オンを確認する。ステップS9において、車両16では、プログラムの書換え処理を実行する。但し、後述するように、ステップS9においては、プログラムの書換えの可否を判定し、書換え不可と判定した場合、書換えは行わない。なお、ステップS1~S5の間は、車両16は走行が可能である一方、ステップS6~S9の間は、エンジンが停止し、車両16は走行できない。また、ステップS1~S3の間は、ドライブ90に別のCD-ROM22例えば、音楽用を挿入することはできない。b書換え処理の詳細図4~図11は、CD-ROM22を介して伝達された書換えデータプログラムでECU56のプログラムを書き換える際の処理の詳細を示すフローチャートである。図12は、図8~図9のフローチャートの一部に対応した表示部74の画面の移り変わりの一例を示す画面遷移図である。なお、ステップS11~S13は、図3のステップS1に対応し、ステップS14~S34は、ステップS2に対応する。ステップS35は、ステップS3に対応し、ステップS36~S37は、ステップS4に対応する。ステップS38~S39は、ステップS5に対応し、ステップS40~S41は、ステップS6に対応する。ステップS42は、ステップS7に対応し、ステップS43は、ステップS8に対応する。ステップS44~S67は、ステップS9に対応する。ステップS11において、受信装置52のドライブ90にCD-ROM22が挿入される。ステップS12において、受信装置52は、挿入されたCD-ROM22が、ECU56の書換えデータプログラムであるか否かを判定する。挿入されたCD-ROM22が書換えデータプログラムでない場合S12:NO、今回の処理を終了する。挿入されたCD-ROM22が書換えデータプログラムである場合S12:YES、ステップS13において、受信装置52は、書換えデータプログラムをCD-ROM22から読み込む。書換えデータプログラムを読み込んでいる際、受信装置52は、表示部74にCD-ROM22から書換えデータプログラムを読込み中である旨を表示する。例えば、書換え用データを読込み中です。走行は可能ですが、CD-ROMドライブは使用できません。というメッセージを表示部74に表示する。書換えデータプログラムの読込みが完了すると、ステップS14において、受信装置52から書換え装置54に書換えデータプログラムの読込みが完了したことを通知する。ステップS15において、書換え装置54は、前回の書換え処理が完了しているか否かを判定する。例えば、書換え装置54は、別の書換えデータプログラムを記憶しているものの、当該書換えデータプログラムを用いた書換え処理が行われていない場合、前回の書換え処理は完了していない。ステップS16において、書換え装置54は、ステップS15の結果を受信装置52に通知する。図5のステップS17において、受信装置52は、書換え装置54からの通知に基づき、前回の書換え処理が完了しているか否かを確認する。前回の書換え処理が完了している場合S17:YES、ステップS18に進む。前回の書換え処理が完了していない場合S17:NO、前回の書換え処理の完了を優先させる。このため、車両16では、今回の書換え処理を終える。なお、この場合、受信装置52は、前回の書換え処理を実行するよう促すメッセージを表示部74に表示してもよい。また、受信装置52の記憶部80又は書換え装置54の記憶部96の容量に空きがある場合、今回受信した書換えデータプログラムを記憶しておくことも可能である。ステップS18において、受信装置52は、書換え装置54に書換えデータプログラムを転送する。ステップS19において、書換え装置54は、書換えデータプログラムが正常であるか否かを判定する。当該判定は、例えば、書換えデータプログラムのデータ構造が正しいか否か及び書換えデータプログラムのハッシュ値が正常であるか否かに基づいて行う。書換えデータプログラムが正常でない場合S19:NO、ステップS20において、書換え装置54は、受信装置52にエラーを通知する。ステップS21において、受信装置52は、表示部74にエラー表示をすると共に、記憶部80に記憶していた書換えデータプログラムを消去し、今回の処理を終える。前記エラー表示としては、例えば、書換えデータプログラムに異常があるため、ディーラに連絡すべき旨の表示を用いることができる。書換えデータプログラムが正常である場合S19:YES、ステップS22において、書換え装置54は、書換えデータプログラムを記憶部96に記憶する。図6のステップS23において、書換え装置54は、記憶部96に記憶した書換えデータプログラムで書換えを行うECU56以下対象ECU56tarという。に対し、現在のすなわち、書換え前のプログラムのバージョンなどの内容が識別できるプログラム識別情報以下プログラムIDという。を要求する。ステップS24において、ECU56は、現在のプログラムのプログラムIDを書換え装置54に送信する。ステップS25において、書換え装置54は、対象ECU56tarから受信したプログラムIDが示すプログラムと、受信した書換えデータプログラムとの間に互換性があるか否かを判定する。当該判定は、例えば、プログラムID同士を比較することにより行う。互換性がない場合S26:NO、ステップS27において、書換え装置54は、受信装置52にエラーを通知する。ステップS28において、受信装置52は、表示部74にエラー表示をすると共に、記憶部80に記憶していた書換えデータプログラムを消去し、今回の処理を終える。互換性がある場合S26:YES、ステップS29において、書換え装置54は、所定のECU56本実施形態では、ENGECU56aに対し、現在のSOC及びバッテリ電流Ibatを要求する。なお、現在のSOC及びバッテリ電流Ibatを取得可能であれば、当該要求は、その他の構成要素例えば、バッテリセンサ60に要求してもよい。ステップS30において、ENGECU56aは、現在のSOC及びバッテリ電流Ibatを書換え装置54に送信する。図7のステップS31において、書換え装置54は、書換えデータプログラムの書換え後に車両16特に、エンジンの再始動が可能であるか否かを判定する。当該判定は、現在のSOC[]及びバッテリ電流Ibat[A]に基づいて行う。より具体的には、次の式1が満たされるか否かを判定する。SOC-Ibat×Tre×K>THsoc1上記式1において、Treは、プログラムの書換えに要する予定処理時間[秒]で、Kは、書換えで消費する電力をSOCに変換する定数[/A秒]で、THsoc[]は、車両16の再始動に必要なSOCの閾値最低値である。予定処理時間Treは、書換えデータプログラムのデータ量Sdに基づいて設定されるものであり、例えば、書換えデータプログラムに含まれる。或いは、データ量Sdに基づいて書換え装置54の演算部94が算出してもよい。閾値THsocは、実測値又はシミュレーション値であり、書換えデータプログラムに含まれる。或いは、事前に書換え装置54の記憶部96に記憶しておいてもよい。閾値THsocは、単一の固定値であってもよいが、車両16の外気温Tc[°C]、エンジン冷却水温Tw[°C]及びバッテリ58の内部抵抗R[Ω]のうち少なくとも1つに応じて設定することもできる。外気温Tcを用いる場合、外気温Tcが低いほど、閾値THsocを高く設定する。同様に、エンジン冷却水温Twを用いる場合、エンジン冷却水温Twが低いほど、閾値THsocを高く設定する。内部抵抗Rを用いる場合、内部抵抗Rが高いほど、閾値THsocを高く設定する。ステップS32において、書換え装置54は、ステップS31の結果を受信装置52に通知する。ステップS31の結果が再始動不可である場合S33:NO、ステップS34において、受信装置52は、表示部74にエラー表示を行う。例えば、受信装置52は、バッテリ58の容量が不足しているため、バッテリ58を充電した後に再度書換え処理を実行すべき旨を表示部74に表示する。ステップS31の結果が再始動可である場合S33:YES、ステップS35において、受信装置52は、対象ECU56tarの書換えを行うため、車両16を安全な場所へ移動し、移動後に書換えを承諾するためのボタン画像図示せず及び当該ボタンを押すことを要求するメッセージを表示部74に表示する。前記ボタン画像へのタッチ操作がなく、ユーザからの承諾が得られない場合S36:NO、ステップS35に戻る。前記ボタン画像へのタッチ操作があり、ユーザからの承諾が得られた場合S36:YES、ステップS37において、受信装置52は、書換え装置54に対し、ユーザの承諾が得られた旨を通知する。図8のステップS38において、書換え装置54は、受信装置52に対し、起動信号Sonを送信し、電源オフの禁止を要求する。これにより、IGSW64の位置がオフにされても、受信装置52は電源オンのまま継続する。ステップS39において、受信装置52は、ユーザに対し、IGSW64の位置をオフにするよう求めるメッセージを表示部74に表示する。当該メッセージは、例えば、図12の画面132のように、イグニションスイッチをオフにして下さいとすることができる。また、当該メッセージは、ECU56がオフにされた旨の通知を受信装置52が、書換え装置54から受信するまで継続される。ステップS40において、書換え装置54は、IGSW64の位置を読み込み、ユーザがIGSW64をオフにしたか否か判断する。ユーザによるIGSW64の操作がなく、オフが検出されない場合S40:NO、ステップS40を繰り返す。ユーザがIGSW64を操作しオフが検出された場合S40:YES、ステップS41において、書換え装置54は、受信装置52に対し、IGSW64がオフにされた旨すなわち、ECU56がオフにされた旨を通知する。なお、IGSW64がオフにされたか否かの判定は、書換え装置54から特定1つ又は複数のECU56に対して応答要求を送信し、応答の有無に応じて行ってもよい。この場合、特定のECU56から応答があった場合、IGSW64がオフにされていないと判断し、応答がない場合、IGSW64がオフにされたと判断する。ステップS42において、受信装置52は、ユーザに対し、IGSW64の再オン及びエンジンの始動の禁止を求めるメッセージを表示部74に表示する。当該メッセージは、例えば、図12の画面134のように、イグニションスイッチをオンにして下さいエンジンは始動しないで下さいとすることができる。また、当該メッセージは、ステップS43において、IGSW64がオンされたと書換え装置54が判断するまで表示される。ステップS43において、書換え装置54は、IGSW64の位置を読み込み、ユーザがIGSW64をオンしたか否かを判断する。或いは、ステップS40と同様に特定のECU56に対して応答要求を送信することで、IGSW64のオンオフの判断を行ってもよい。ユーザによるIGSW64の操作がなく、オフが検出されない場合S43:NO、ステップS43を繰り返す。ユーザがIGSW64を操作しオンが検出された場合S43:YES、ステップS44に進む。図9のステップS44において、書換え装置54は、いくつかのECU56に対し、車両16の状態を要求する。ここにいう車両16の状態とは、例えば、エンジン回転数Neと、車速Vと、シフトポジションと、各ECU56の温度と、イモビライザECU56dの作動状態と、エアコンディショナの作動状態と、リアガラスの熱線の作動状態と、ヘッドライトの作動状態と、座席の加熱装置の作動状態とを含めることができる。本実施形態では、上記車両16の各状態は、種々のECU56から取得するが、各種のセンサから直接取得することもできる。ステップS45において、各ECU56は、車両16の状態を書換え装置54に送信する。ステップS46において、書換え装置54は、車両16が、プログラムを書換え可能な状態にあるか否かを判定する。当該判定は、例えば、次の条件i~vが全て満たされているか否かにより行う。iエンジン回転数Neが0[rpm]であることii車速Vが0[km/h]であることiiiシフトポジションがPパーキングであることiv対象ECU56tarの温度が書換え可能な温度閾値THe以下であることvイモビライザECU56dが、正規キーが装着されていると判断していること上記において、条件i~iiiは、車両16が停止していることを確認するためのものである。条件ivは、ECU56の動作異常を判定するためのものである。条件vは、正規ユーザが車両16を使用していることを確認するためのものである。また、この際、次の条件vi~ixのいずれかが満たされているか否かも判定する。viエアコンディショナがオフになっていることviiリアガラスの熱線がオフになっていることviiiヘッドライトがオフになっていることix座席の加熱装置がオフになっていること上記条件vi~ixは、バッテリ電力Pbatの消費状態を判定し、ユーザに電力消費の抑制を求めるために用いる。条件vi~ixが満たされていなくても、書換え不可とはならないが、後述するステップS50において、ユーザに対してこれらについて警告が行われる。ステップS47において、書換え装置54は、ステップS46の結果を受信装置52に通知する。条件i~vのいずれかが満たされないことにより書換え不可である場合S48:NO、ステップS49において、受信装置52は、条件i~vのうち満たされていない条件を指摘する警告メッセージを表示部74に表示し、ユーザに改善を促す。その後、ステップS44に戻る。但し、書換え不可の場合であっても、受信装置52から書換え装置54に対して特別の信号を送らなくてよい。換言すると、ステップS46で、書換え装置54が書換え不可と判定した場合、書換え装置54は、ステップS47で結果を受信装置52に通知した後、ステップS44に戻ればよい。ステップS48において、書換え可である場合S48:YES、ステップS50において、受信装置52は、書換え処理の開始の承諾を確認する操作画面書換え開始承諾確認表示を表示部74に表示する。当該操作画面としては、例えば、図12の画面136のように、プログラムの書換えを開始してよろしいですかとのメッセージと、書換えの開始を承諾するボタンYESと、書換えの開始を承諾しないボタンNOとを含むものを用いることができる。また、この際、上記条件vi~ixのいずれかが成立していない場合、その旨を警告するメッセージを併せて表示することができる。前記操作画面への操作がなく、ユーザからの承諾が得られない場合S51:NO、ステップS50に戻る。前記操作画面への操作があり、ユーザからの承諾が得られた場合S51:YES、ステップS52において、受信装置52は、プログラムの書換え中であることを知らせるメッセージを表示部74に表示する。例えば、プログラムを書換え中です。イグニションスイッチをオフにしないで下さい。と表示する。なお、図示していないが、書換えの開始を承諾しないボタンNOが押された場合、書換えを行わずに処理を終了する。そして、次に、IGSW64がオンにされたとき、ステップS29から開始する。ステップS53において、受信装置52は、書換え装置54に対し、ユーザの承諾が得られた旨を通知する。図10のステップS54において、書換え装置54は、各ECU56との間で通信を行って各ECU56のセキュリティを解除する。ステップS55において、書換え装置54は、ECU56に対し、ECU56相互間で行う故障診断の停止を要求する。ステップS56において、各ECU56は、前記故障診断を停止する。ステップS57において、書換え装置54は、各ECU56に対し、ECU56間での通信の停止を要求する。ステップS58において、各ECU56は、相互の通信を停止する。ステップS59において、書換え装置54は、対象ECU56tarについて、プログラムの書換えを実行する。図11のステップS60において、書換え装置54は、対象ECU56tarのプログラム書換えが終了したら、対象ECU56tarに対し、現在のすなわち、書換え後のプログラムのバージョンなどの内容が識別できるプログラムIDを要求する。ステップS61において、ECU56は、現在のプログラムのプログラムIDを書換え装置54に送信する。ステップS62において、書換え装置54は、対象ECU56tarから受信したプログラムIDを確認することで書換えの成否を確認する。書換えが成功し、正常に終了した場合S63:YES、ステップS64において、書換え装置54は、受信装置52に正常終了を通知し、書換え処理を終了する。ステップS65において、受信装置52は、プログラムの書換えの正常終了を通知するメッセージを表示部74に表示する。当該メッセージには、例えば、プログラムの書換えが終了した旨、IGSW64をオフにすべき旨並びに書換えの終了を示すコード番号具体的な数値等、当該コード番号をメーカに連絡すべき旨及びその連絡先を含めることができる。従って、当該メッセージを読んだユーザは、メーカに当該コード番号を知らせることで、メーカは、プログラムの書換えの終了を確認することができる。なお、コード番号の通知は、電話、電子メール、ホームページにおける入力画面への入力等の方法により行うことができる。なお、書換えが失敗し、正常に終了しなかった場合S63:NO、ステップS66において、書換え装置54は、受信装置52にエラーを通知する。ステップS67において、受信装置52は、IGSW64をオフにし、ディーラに連絡することを求めるメッセージを表示部74に表示する。例えば、プログラムの書込みが異常終了しました。イグニションスイッチをオフにし、ディーラに連絡して下さい。というメッセージを表示部74に表示する。cプログラムの書換え中にIGSW64の位置がオフにされた場合の処理図13~図15には、プログラムの書換え中にIGSW64の位置がオフにされた場合の処理のフローチャートが示されている。図16は、図13のフローチャートの一部に対応した表示部74の画面の移り変わりの一例を示す画面遷移図である。図13~図15では図示していないが、書換え装置54は、対象ECU56tarの書換え実行図10のS59開始前に、受信装置52に対して起動信号Sonを送信し、IGSW64の位置をオフした場合も受信装置52の電源オンを継続することを要求しておく図8のS38。また、プログラムの書換え中は、例えば、図16の画面142のように、書換え作業中である旨及び残り時間を表示する。ステップS101において、ユーザが誤ってIGSW64の位置をオフにすると、書換え装置54は、IGSW64の位置がオフにされたことを検出する。ステップS102において、書換え装置54は、IGSW64がオフにされたことを受信装置52に通知する。受信装置52は、事前に起動信号Sonを受信しており、IGSW64の位置がオフにされているにもかかわらず、電源オンを継続する。ステップS103において、IGSW64がオフされたことの通知を受信した受信装置52は、IGSW64の位置をオフにしたことにより書換え作業が中断した旨のメッセージを表示部74に表示する。当該メッセージは、例えば、図16の画面144のように、イグニションスイッチのオフにより、書換え作業が中断しましたとすることができる。ステップS104において、書換え装置54は、車両16内にユーザ乗員が存在するか否かを判定する。当該判定は、ドアロック/乗員検知ユニット66からの出力信号Shに基づいて行う。上記のように、出力信号Shは、ドアロック122の解錠/施錠状態と、圧力センサとしてのシートセンサ124の検出値とを示す。ドアロック122が施錠され、且つシートセンサ124の検出値がゼロであるとき、乗員がいないと判定可能である。車両16内に乗員が存在しない場合S104:NO、ステップS105において、書換え装置54は、次回の起動予約を記憶部96に記憶する。起動予約とは、次回、IGSW64の位置がオンにされたとき、プログラムの書換えを再開することの設定であり、フラグにより規定する。続くステップS106において、書換え装置54は、書換えに失敗したプログラムのプログラムIDを記憶する。ステップS107において、書換え装置54は、受信装置52に対し、表示部74の表示の中止を要求する信号解除要求信号を出力する。車両16内に乗員がいなければ、表示部74の表示を見る者もいない。このため、表示部74の表示を中止することにより、消費電力を抑制することができる。なお、当該要求には、受信装置52の電源オフの要求を含めることができる。ステップS108において、当該要求を受けた受信装置52は、表示部74の表示を中止する表示部74をオフにする。。ステップS104に戻り、車両16内に乗員が存在する場合S104:YES、ステップS109において、書換え装置54は、IGSW64の位置を読み込み、IGSW64の状態を判断する。或いは、書換え装置54は、特定1つまたは複数のECU56に対して応答要求を送信し、その応答の有無によりIGSW64の状態を判断してもよい。この場合、特定のECU56から応答があった場合、IGSW64がオン状態と判断し、応答がない場合、IGSW64がオフ状態と判断する。ステップS109において、IGSW64がオフ状態であった場合S109:NO、ステップS110において、書換え装置54は、その旨を受信装置52に通知する。ステップS111において、受信装置52は、IGSW64の位置をオンに戻すことを求めるメッセージを表示部74に表示する。当該メッセージとしては、例えば、図16の画面146のように、書換えが中断しています。エンジンを始動せずにイグニションスイッチをオンにして下さい。再書換えを実施しますを用いることができる。ステップS111の後は、ステップS104に戻る。ステップS109において、IGSW64がオン状態であった場合S109:YES、ステップS112において、書換え装置54は、図示しないタイマをスタートさせる。図14のステップS113において、書換え装置54は、プログラムの書換えを中断したECU56に対し、プログラムIDを要求する。送信先のECU56がオンしている場合、当該ECU56は、ステップS114において、書換え装置54に対してプログラムIDを送信する。ステップS115において、書換え装置54は、プログラムIDの返信があったか否かを判定する。返信がなかった場合S115:NO、ステップS116において、書換え装置54は、所定時間例えば、5秒が経過したか否かを判定する。所定時間が経過していない場合S116:NO、ステップS113に戻る。所定時間が経過した場合S116:YES、無限ループを避けるため、ステップS117において、書換え装置54は、受信装置52に対してその旨エラーを通知する。ステップS118において、受信装置52は、IGSW64をオフにし、ディーラに連絡することを求めるメッセージを表示部74に表示する。例えば、プログラムの書込みが異常終了しました。イグニションスイッチをオフにし、ディーラに連絡して下さい。というメッセージを表示部74に表示する。ステップS115において、返信があった場合S115:YES、図10のステップS55~S58と同様のステップS119~S122を行う。次いで、図9のステップS44~S45と同様のステップS123~S124図15を行う。その後、図9のステップS46に進む。dプログラムの書換え中にIGSW64の位置がオフにされ車両16内にユーザ乗員がいなくなった後、ユーザが再乗車してきた場合の処理図17~図19は、プログラムの書換え中にIGSW64の位置がオフにされ、車両16内にユーザ乗員がいなくなった後、ユーザが再乗車してきた場合の処理のフローチャートである。図20は、図17~図19のフローチャートの一部に対応した表示部74の画面の移り変わりの一例を示す画面遷移図である。ステップS201において、ドアロック122が解除されると、ドアロック/乗員検知ユニット66からの出力信号Shにより書換え装置54にその旨が通知され、書換え装置54は、ドアロック122の解除を検出する。ステップS202において、書換え装置54は、起動予約図13のS105があるか否かを判定する。起動予約がない場合S202:NO、今回の処理を終了する。起動予約がある場合S202:YES、ステップS203において、書換え装置54は、受信装置52に対して起動信号Sonを送信し、起動電源オンを要求する。ステップS204において、受信装置52は、起動する。ステップS205~S211は、図13のステップS104~S110と同様である。但し、ドアロック122が解除された後、ユーザが車両16内に入り込むまでの時間を考慮する。ステップS212において、受信装置52は、IGSW64の位置がオフにされたことによりプログラムの書換え処理が中断していることを示すメッセージを表示部74に表示する。当該メッセージは、例えば、図20の画面152のように、イグニションスイッチのオフにより、プログラムの書換え作業が中断した状態ですとすることができる。ステップS213において、受信装置52は警告音を出力する。ステップS214において、受信装置52は、IGSW64の位置をオンにすることを求めるメッセージを表示部74に表示する。当該メッセージとしては、例えば、図20の画面154のように、プログラムの書換えが中断しています。エンジンを始動せずにイグニションスイッチをオンにして下さい。再書換えを実施しますを用いることができる。ステップS214の後は、ステップS205に戻る。ステップS210において、IGSW64がオン状態であった場合S210:YES、図17~図19のステップS215~S229を実行する。このうちステップS215~S221は、図13及び図14のステップS112~S118と同様であり、ステップS222~S225は、図10のステップS55~S58と同様であり、ステップS226~S227は、図9のステップS44~S45と同様である。ステップS228において、書換え装置54は、受信装置52に対し、プログラムの書換えを再開する旨及びそのために車両状態をチェックする旨のメッセージの表示を要求する。ステップS229において、受信装置52は、当該メッセージを表示部74に表示する。当該メッセージは、例えば、図20の画面156のように、プログラムの書換えを再開します。車両状態をチェックしますとすることができる。ステップS229の次は、図9のステップS46に続く。2衛星放送網24を介して伝達されたプログラムの場合a書換え処理の概要図21は、衛星放送網24を介して伝達された書換えデータプログラムでECU56のプログラムを書き換える際の処理の概要を示すフローチャートである。ステップS301において、受信装置52は、衛星放送網24を介して書換えデータプログラムを受信する。ステップS302~S309は、図3のステップS2~S9と同様である。なお、ステップS301~S305の間は、車両16は走行が可能である一方、ステップS306~S309の間は、エンジンが停止し、車両16は走行できない。b書換え処理の詳細図22~図24は、衛星放送網24を介して伝達された書換えデータプログラムでECU56のプログラムを書き換える際の処理の詳細を示すフローチャートである。なお、CD-ROM22を介して伝達された書換えデータプログラムで書き換える際の処理図4~図11と共通する処理については、図4~図11を参照して説明する。ステップS311~S314は、図21のステップS301に対応する。ステップS311において、受信装置52は、衛星放送網24を介して車両情報を受信する。具体的には、図示しない放送局を介してサーバ14が車両情報を送信すると、この車両情報は、放送衛星28で中継された後、受信装置52の無線アンテナ82に受信される。無線アンテナ82に受信された車両情報は、モデム84で復調されて演算部78に出力される。ステップS312において、受信装置52は、受信した車両情報が、車両16自車両に合致したものであるかどうかを判定する。車両情報が車両16に合致する場合S312:YES、ステップS313に進む。車両情報が車両16に合致しない場合S312:NO、今回の処理を終える。ステップS313において、受信装置52は、衛星放送網24を介して書換えデータプログラムを受信する。具体的な受信方法は、ステップS311と同様である。また、書換えデータプログラムの内容は、CD-ROM22の場合図4~図11と同様である。ステップS314において、受信装置52は、書換えデータプログラムの受信が完了したか否かを判定する。受信が完了していない場合S314:NO、ステップS313に戻る。受信が完了した場合S314:YES、ステップS315に進む。ステップS315において、受信装置52から書換え装置54に書換えデータプログラムの受信を通知する。図22~図24のステップS316~S329は、図4~図6のステップS15~S28と同様である。対象ECU56tarとの互換性がある場合S327:YES、ステップS330において、書換え装置54は、互換性の確認が終了した旨を受信装置52に通知する。その後、図6のステップS29に続く。3移動通信網26を介して伝達された書換えデータプログラムの場合a書換え処理の概要図25は、移動通信網26を介して伝達された書換えデータプログラムでECU56のプログラムを書き換える際の処理の概要を示すフローチャートである。ステップS401において、受信装置52は、移動通信網26を介して書換えデータプログラムを受信する。なお、移動通信網26を介して書換えデータプログラムを受信する場合、携帯電話86を事前にコネクタ88に接続しておく。ステップS402~S409は、図3のステップS2~S9及び図21のステップS302~S309と同様である。なお、ステップS401~S405の間は、車両16は走行が可能である一方、ステップS406~S409の間は、エンジンが停止し、車両16は走行できない。b書換え処理の詳細図26は、移動通信網26を介して伝達された書換えデータプログラムでECU56のプログラムを書き換える際の処理の詳細を示すフローチャートである。なお、衛星放送網24を介して伝達された書換えデータプログラムでECU56のプログラムを書き換える際の処理図22~図24と共通する処理については、図22~図24を参照して説明する。ステップS411において、ユーザは、携帯電話86をコネクタ88に接続する。ステップS412において、受信装置52の携帯電話86は、サーバ14との間で通信を確立する。当該通信の確立は、サーバ14からの書換えデータプログラムの転送がされたときに行われる。或いは、事前に設定された所定のタイミング例えば、携帯電話86とコネクタ88の接続時、当該接続時から所定間隔又は所定時刻で携帯電話86及び移動通信網26を介してサーバ14に対して新たな書換えデータプログラムの有無を問い合わせることもできる。ステップS413~S417は、図22のステップS313~S317と同様である。その後、図23のステップS318に続く。4.本実施形態における効果以上のような実施形態によれば、ECU56のプログラムを書き換えた後に車両16を再始動可能であるか否かを書換え後のバッテリ58の予測状態に基づいて判定し、再始動可能な場合、プログラムの書換えを実行する。従って、プログラムの書換え後に、確実に車両16を再始動することができる。本実施形態では、書換え装置54は、車両16の外気温Tc、エンジン冷却水の水温Tw及びバッテリ58の内部抵抗Rに応じて閾値THsocを変化させる。これにより、再始動可能な条件をより適切に設定することが可能となる。本実施形態において、書換え装置54は、プログラムの書換え開始時におけるSOC及びバッテリ電流Ibatと、プログラムの書換えの予定処理時間Treとに基づいて、プログラムの書換え後のSOCを予測し、予測したSOCが閾値THsocより大きい場合に、プログラムの書換えを実行する。これにより、プログラムの書換え後のバッテリ58の充電状態を簡易に予測し、これを用いることが可能となる。また、本実施形態によれば、図27のような場合でも、プログラムの書換え前に、ECU56がオフにされることを確実にすることが可能となる。図27には、IGSW64の出力信号Sigと各ECU56の認識との関係を示す図が示されている。図27では、時点t1においてIGSW64の位置がオンからオフに切り換えられた後、時点t5においてオンに切り換えられている。時点t1から時点t5までの時間は非常に短く、例えば、数百msである。また、図27の例では、各ECU56は、それぞれで出力信号Sigを読み込むタイミングは異なる。また、各ECU56は、チャタリングの影響を排除するため、出力信号Sigが2つの制御周期で同じレベルハイ又はローであるとき、その内容を取り込む。例えば、第1ECUは、時点t2においてIGSW64がオフであることを検知するが、直ぐにはオフであるとは認識せず、時点t2及び時点t4においてIGSW64がオフであると検知して初めてIGSW64がオフであると認識する。一方、第2ECUは、時点t3でIGSW64がオフであると検知するが、時点t6ではIGSW64がオンであると検知する。このため、第2ECUは、IGSW64がオフであると2回続けて検知していないため、第2ECUは、IGSW64がオンのままであると認識してしまう。上記のような場合でも、本実施形態によれば、プログラムの書換えのためには、IGSW64の位置をオフにしECU56が電源オフになった後、IGSW64の位置がオンに戻されることを必要とする。また、ユーザに対するIGSW64をオンの位置に戻す操作の指示は、IGSW64の位置がオフになったことに連動してECU56がオフにされたことを検出してから表示される。このため、プログラムの書換え前に、ECU56がオフにされることを確実にすることが可能となる。よって、ECU56による処理が継続されたままの状態においてプログラムの書換えが行われることを防止することが可能となる。本実施形態によれば、プログラムの書換え中に、IGSW64の位置が誤ってオフにされ、プログラムの書換えができなくなると、IGSW64の位置をオンに戻す操作の指示を表示部74に表示させる。このため、ユーザ乗員に誤操作を伝え、正常な状態に戻すことを促すことが可能となる。従って、ユーザが車内にいる場合であっても、プログラムの書換えが可能となり、当該書換えをより好適に行うことが可能となる。本実施形態において、書換え装置54は、IGSW64の位置をオンに戻す操作の指示を表示部74に表示させている状態で、ユーザの降車を検出すると、プログラムの書換えの中断に関する情報としての起動予約を記録し、電源オンの継続の解除を求める解除要求信号を受信装置52に出力する。これにより、プログラムの書換え中にIGSW64の位置が誤ってオフにされたままユーザが降車した場合、プログラムの書換えの中断に関する情報を残しておくことが可能となる。従って、当該情報を用いて改めてプログラムの書換えを行うことができる。また、受信装置52の電源オンを解除することにより、表示部74における操作の指示を中止させる。従って、表示部74における不要な電力消費を回避することが可能となる。本実施形態において、書換え装置54は、検知ユニット66の出力信号Shに基づいてユーザの降車を検出する。出力信号Shを用いることにより、簡易にユーザの降車を判定することが可能となる。本実施形態において、書換え装置54は、ユーザの乗車を検出すると、起動予約が記録されているか否かを確認し、起動予約が記録されている場合、表示部74にIGSW64の位置をオンにする操作の指示を表示させる。これにより、プログラムの書換えの中断が起こった場合に、書換えの再開を行う際に好適な表示を行うことが可能となる。本実施形態において、書換え装置54は、検知ユニット66の出力信号Shに基づいてユーザの再乗車を検出する。出力信号Shを用いることにより、簡易にユーザの乗車を判定することが可能となる。[B.この発明の応用]なお、この発明は、上記実施形態に限らず、この明細書の記載内容に基づき、種々の構成を採り得ることはもちろんである。例えば、以下に示す構成を採ることができる。1.プログラム書換えシステム10上記実施形態では、システム10を車両用に用いたが、これに限らず、例えば、再始動時に電力を要する移動体飛行機、船舶、ヘリコプタ等であってもよい。2.データ伝達システム12上記実施形態では、書換えデータプログラムの伝達を、CD-ROM22、衛星放送網24及び移動通信網26を用いて行ったが、いずれか1つ又は2つを用いてもよい。或いは、これら以外の方法{例えば、放送衛星又は携帯電話を用いない無線通信例えば、道路脇に設置された光ビーコンとの間の無線通信}により書換えデータプログラムを伝達させてもよい。また、CD-ROM22の代わりに別の記憶媒体DVD-ROM、フラッシュメモリ等を用いることもできる。3.車両16上記実施形態では、車両16をガソリン車としたが、これに限らず、例えば、再始動時に電力を要する駆動源を有する車両{電気自動車ハイブリッド車及び燃料電池車を含む。、ディーゼル車等}であってもよい。4.ECU56上記実施形態では、ECU56として、ENGECU56a、ABSECU56b、SRSECU56c及びイモビライザECU56dを挙げたが、ECU56の数及び種類はこれに限らない。5.IGSW64上記実施形態では、IGSW64としてロータリ式のスイッチを用いたが、これに限らない。例えば、車両16が、いわゆるスマートスタート機能を備える場合、プッシュ動作によりオフ、アクセサリ及びオンを順番に切り換えるプッシュスイッチをIGSW64として用いることもできる。6.再始動の可否の判定1書換え後のバッテリ58の状態の推定上記実施形態では、プログラムの書換え後のバッテリ58の状態を推定するために、SOC、バッテリ電流Ibat及び予定処理時間Treを用いたが{上記式1参照}、書換え後のバッテリ58の状態を推定することができれば、これに限らない。例えば、所定充電状態から現時点までのバッテリ58の放電電力量ΔAH1[Ah]と、現時点からプログラムの書換え後までの予想放電電力量ΔAH2[Ah]とに基づいて行うこともできる。所定充電状態とは、例えば、フル充電状態、SOC80、SOC75等、適宜設定可能なものである。より具体的には、次の式2が満たされるか否かを判定する。ΔAH1ΔAH2<TH_ΔAH2上記式2において、閾値TH_ΔAHは、車両16の再始動を可能とする所定充電状態からの放電電力量の閾値最大値である。閾値TH_ΔAHは、実測値又はシミュレーション値であり、例えば、書換えデータプログラムに含まれる。なお、予想放電電力量ΔAH2は、現時点におけるバッテリ電流Ibatと、プログラムの書換えに要する予定処理時間Treの積として計算される。上記のような判定方法によっても、プログラムの書換え後のバッテリ58の状態を簡易に予測し、これを用いることが可能となる。さらに、JP2008-155892Aに記載の方法によって、プログラムの書換え後のバッテリ58の状態を予測することもできる。2プログラムの書換えを不可とする条件上記実施形態では、プログラムの書換えを不可とする条件として、例えば、図7のステップS31では、バッテリ58が、プログラムの書換え後に車両16の再始動が可能であることを用いた。また、例えば、図9のステップS46では、iエンジン回転数Neが0[rpm]であること、ii車速Vが0[km/h]であること、iiiシフトポジションがPパーキングであること、iv対象ECU56tarの温度が閾値THe以下であること、及びvイモビライザECUが、正規キーが装着されていると判断していることを用いた。しかし、プログラムの書換えを不可とする条件は、これに限らない。例えば、プログラムの書換え開始時のバッテリ電流Ibatが閾値THi[A]より大きい場合、書換えを不可としてもよい。閾値THiは、プログラム書換え時には不要な電気負荷が高いことを示す電流値を設定することができる。また、プログラムの書換え開始時のバッテリ58の内部抵抗Rが閾値THr[Ω]より大きい場合、書換えを不可とすることもできる。閾値THrは、バッテリ58の劣化が過度に進んだことを判定するための閾値であり、実測値又はシミュレーション値を用いることができる。図28は、上記式1による判定に加え、閾値THi、THrを用いて書換えの可否を判定するフローチャートである。このフローチャートは、例えば、図7のステップS31で用いることができる。ステップS501において、書換え装置54は、ENGECU56a又はバッテリセンサ60から現在のSOC、バッテリ電流Ibat及び内部抵抗Rを取得する。ステップS502において、書換え装置54は、内部抵抗Rが閾値THrより大きいか否かを判定する。内部抵抗Rが閾値THrより大きい場合S502:YES、ステップS503において、書換え装置54は、プログラムの書換え後の再始動ができない可能性があるため、プログラムの書換えは不可であると判定する。内部抵抗Rが閾値THr以下の場合S502:NO、ステップS504に進む。ステップS504において、書換え装置54は、バッテリ電流Ibatが閾値THiより大きいか否かを判定する。バッテリ電流Ibatが閾値THiより大きい場合S504:YES、ステップS503において、書換え装置54は、不要な電気負荷が高いため、プログラムの書換えは不可であると判定する。バッテリ電流Ibatが閾値THi以下の場合S504:NO、ステップS505に進む。ステップS505において、書換え装置54は、プログラムの書換え後のSOCの予測値SOCre[]を算出する。予測値SOCreは、上記式1におけるSOC-Ibat×Tre×Kと等しい。ステップS506において、書換え装置54は、予測値SOCreが閾値THsocよりも大きいか否かを判定する。予測値SOCreが閾値THsoc以下である場合S506:NO、ステップS503において、書換え装置54は、プログラムの書換えは不可であると判定する。予測値SOCreが閾値THsocより大きい場合S506:YES、ステップS507において、書換え装置54は、プログラムの書換えは可であると判定する。一般に、内部抵抗Rは、バッテリ58の劣化状況を反映する。このため、内部抵抗Rが閾値THrより大きい場合、プログラムの書換え後のバッテリ58の充電状態を正確に予測することが困難になる。また、バッテリ電流Ibatが大きい場合もプログラムの書換え後のバッテリ58の充電状態を正確に予測することが困難になる。図28のフローチャートによれば、書換え装置54は、予測値SOCreが閾値THsocより大きい場合でも、プログラムの書換え開始時の内部抵抗Rが閾値THrより大きい場合又はバッテリ電流Ibatが閾値THiより大きい場合は、プログラムの書換えを中止する。このため、予測の精度が低い場合、プログラムの書換えを中止することで、車両16の再始動ができなくなる可能性を低減することが可能となる。なお、図28のステップS505、S506の代わりに、上述した式2を用いる判定を行ってもよい。7.ECU56の電源オフの判定上記実施形態において、書換え装置54は、IGSW64の位置を読み込み、又は、ECU56に対して応答要求を送信し、ECU56から応答が無い場合に、ECU56の電源オフを検出したが、ECU56の電源オフを検出する方法はこれに限らない。例えば、プログラムIDを要求し、その応答の有無によってECU56の電源オフを検出することもできる。或いは、IGSW64の位置を読み込み、オフを検出してから所定時間後又は送信した応答要求にECU56からの応答が無いことによりECU56が電源オフにされたとみなすことも可能である。8.ユーザの降車及び再乗車の検出上記実施形態では、ドアロック/乗員検知ユニット66からの出力、すなわち、ドアロック122及びシートにかかる圧力により、ユーザの降車及び再乗車を検知したが、いずれか一方のみを用いてもよい。或いは、その他の方法例えば、シートに設置した荷重センサ又は運転席付近の赤外線を検知する赤外線センサを用いてユーザの降車及び再乗車車両16内における乗員の有無を検知することもできる。