(57)【要約】【課題】車体内のバッテリから車載コントローラを正常に動作させる電圧が供給されないような状況になったとしても、その後確実に書き換えを完了できるようにする。【解決手段】リセット状態になった時点でフラッシュメモリ２２の先頭記憶領域２２ａに記憶されているリセット時判断プログラム６１ａが起動する。このためＣＰＵ２１は当該リセット時判断プログラム６１ａにしたがい、書き換え実行中フラグ２３ａがクリア状態になっている場合には、書き換え処理（Ａ）が完了したと判断して、フラッシュメモリ２２の車載プログラム記憶領域２２ｂに転写された新しい車載プログラム６０にしたがい処理を実行する。しかしリセット状態になった時点で、書き換え実行中フラグ２３ａが設定されている場合には、書き換え処理が完了していないと判断して、書き換え制御プログラム６１ｂを再度実行する。【選択図】  図２
2004210183.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（２１）と、
書き込みおよび読み出しが可能な第１の記憶媒体（２２）と、
書き込みおよび読み出しが可能な第２の記憶媒体（２３）とが、
車載コントローラ（２０）に備えられている車載プログラムの書き換え制御装置であって、
第１の記憶媒体（２２）には、
車載プログラム記憶領域（２２ｂ）に、車載プログラム（６０）が記憶され、その他の領域に、車載プログラムを書き換える書き換え制御プログラム（６１ｂ）と、
リセット（再始動）時判断プログラム（６１ａ）が記憶され、
第２の記憶媒体（２３）には、
新しい車載プログラム（６０）を一時記憶する、新車載プログラム一時記憶領域（２３ａ）と、
車載プログラムを書き換えて実行中であることを示す書き換え実行中フラグ（２３ｃ）を記憶させる実行中フラグ記憶領域が設けられており、
書き換え制御プログラム（６１ｂ）は、
外部から新しい車載プログラム（６０）に書き換える指令を受けたとき、
新しい車載プログラム（６０）を、新車載プログラム一時記憶領域（２３ａ）へ一時記憶させ、
書き換え実行中フラグ（２３ｃ）を、実行中フラグ記憶領域へ記憶させる第１の機能と、
新車載プログラム一時記憶領域（２３ａ）に記憶されている新車載プログラムを、第１の記憶媒体（２２）に記憶されている車載プログラム上に転写する（書き換える）第２の機能と、
書き換え終了時、
書き換え実行中フラグ（２３ｃ）を、実行中フラグ記憶領域から消去する第３の機能と、
リセット（再始動）後、
リセット（再始動）時判断プログラム６１ａを起動する第４の機能をもち、
リセット（再始動）時判断プログラム６１ａは、
実行中フラグ記憶領域に、書き換え実行中フラグ（２３ｃ）があるか否かの判断をする第５の機能と、
書き換え実行中フラグ（２３ｃ）がない場合には、書き換え処理が完了したと判断して、第１の記憶媒体（２２）の車載プログラム記憶領域（２２ｂ）に記憶されている車載プログラム（６０）を実行させる第６の機能と、
書き換え実行中フラグ（２３ｃ）がある場合には、書き換え処理が完了していないと判断して、書き換え制御プログラム（６１ｂ）を実行させる第７の機能をもつこと
を特徴とする車載プログラムの書き換え制御装置。
【請求項２】
車両（５０）の外部には、車両（５０）内の車載コントローラ（２０）と通信手段（１５、８、９、１０、１１）によって通信自在に接続されているサーバ（３）を設け、
前記サーバ（３）は、前記通信手段（１５、８、９、１０、１１）を介して、前記車載コントローラ（２０）に、新しい車載プログラム（６０）を書き換える指令を与える機能をもつこと
を特徴とする請求項１記載の車載プログラムの書き換え制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は車載プログラムを書き換える制御を行う装置に関するものである。
【０００２】
【従来の技術】
近年開発されている建設機械には、車体の現在位置、サービスメータの計時値などの車両状態の情報を収集するコントローラなどの各種コントローラが搭載されている。こうした車載コントローラ内には、ＣＰＵが設けられており、フラッシュメモリなどのＥＥＰＲＯＭ（電気的に消去可能なＲＯＭ）に記憶された車載プログラムにしたがい演算処理を実行し車両状態情報の収集、外部との送受信等の処理を行う。たとえば車載のコントローラと外部のサーバとはインターネット等の通信手段を介して通信自在に接続されており、車載コントローラで収集された車両状態情報がサーバに送信される。あるいはサービスマンが建設機械まで出向き車載コントローラにパーソナルコンピュータを接続して車両状態情報をパーソナルコンピュータに取り込む。
【０００３】
車載プログラムをバージョンアップした場合や車両ごとに異常判断のためのしきい値等を変更したい場合には、上記フラッシュメモリに記憶された旧い車載プログラムを新しい車載プログラムに書き換える必要がある。
【０００４】
（従来技術１）
特許文献１（特開平７−１６２５４７号公報）には、通信端末装置のプログラムの変更をセンタ装置からの要求に応じて行うという遠隔プログラム書き換え方式の発明が記載されている。すなわち通信端末装置には、書き換え制御プログラムが記憶された電気的な消去不可能なＲＯＭと、メインプログラムが記憶された電気的に消去可能なフラッシュＲＯＭと、ＲＡＭとが設けられ、センタ装置から送られてくるキーデータを通信端末装置で受けることを条件としてフラッシュＲＯＭのメインプログラムを消去することで誤書き換えを防止するようにしている。キーデータはキー回路で解析され書き込み禁止、許可が判断される。センタ装置から新しいメインプログラムが送られてくると、ＲＯＭ上の書き換え制御プログラムが起動し、書き換え処理が開始され、新しいメインプログラムが一旦ＲＡＭに格納される。そして、その後ＲＡＭからフラッシュＲＯＭに新しいメインプログラムが転写され、新しいメインプログラムにシステム制御権が移される。
【０００５】
（従来技術２）
特許文献２（特開平１０−２１２７３９号公報）には、建設機械に関し、その稼動データ収集用のコントローラを設けるとともに、遠隔地に監視装置を設けて、これら稼動データ収集用コントローラと監視装置とを通信装置によって接続して、監視装置からの要求に応じて稼動データ収集用コントローラ内の稼動データ処理プログラムを書き換えるという発明が記載されている。すなわち稼動データ収集用コントローラには、書き換え制御プログラムが記憶された電気的な消去不可能なＲＯＭと、稼動データ処理プログラムが記憶された電気的に消去可能なＲＯＭ（ＥＥＰＲＯＭ）と、ＲＡＭとが設けられ、監視装置と稼動データ収集用コントローラとの間で、「書き換え要求」、「書き換え許可」、「書き換え開始」、「書き換え禁止」、「書き換え終了」の各コマンドを送受信して、ＥＥＰＲＯＭを書き込み可、不可の状態にして誤書き換えを防止するようにしている。上記各コマンドに応じてＥＥＰＲＯＭを書き込み可、不可の状態にするためにＣＰＵとＥＥＰＲＯＭとの間にラッチ回路、ゲート回路が設けられる。ＥＥＰＲＯＭが書き込み可な状態では、監視装置から新しい稼動データ処理プログラムが送られてくると、ＲＯＭ上の書き換え制御プログラムが起動し、書き換え処理が開始され、新しい稼動データ処理プログラムが一旦ＲＡＭに格納される。そして、その後ＲＡＭからＥＥＰＲＯＭに新しい稼動データ処理プログラムが転写され、新しい稼動データ処理プログラムにシステム制御権が移される。
【０００６】
【発明が解決しようとする課題】
建設機械などの車両では、スタータ装置等の電源と、上述した車載コントローラの電源とが共通になっている。このためエンジン始動時にスタータ装置を作動させると、共通の電源であるバッテリの端子電圧は車載コントローラ（ＣＰＵ）の動作電圧よりも一時的に低下することがある。また、その他の原因によってもバッテリから車載コントローラ（ＣＰＵ）にこれを正常に動作させる電圧が印加されないときがある。このようなときに車載プログラムの書き換え処理中であれば書き換えが正常に完了しないままリセット状態になってしまうおそれがある。
【０００７】
ところが上述した従来技術１、従来技術２は共に電源が正常であることを想定しており、電源低下によって書き換えが正常に完了しないままリセット状態になった場合の対処については何ら記載されていない。
【０００８】
また上記従来技術１にあっては、書き換えを行うために記憶媒体として２つのＲＯＭと１つのＲＡＭを必要とする。また誤書き換えを防止するためにキー回路を必要とする。同様に従来技術２についても、書き換えを行うために記憶媒体として２つのＲＯＭと１つのＲＡＭを必要とし、誤書き換えを防止するためにラッチ回路、ゲート回路を必要とする。
【０００９】
こうした記憶媒体や誤書き換え防止用の回路の増加は、車体内で大きな場積をとり、コストを上昇させる要因となる。
【００１０】
本発明はこうした実状に鑑みてなされたものであり、車体内のバッテリから車載コントローラを正常に動作させる電圧が供給されないような状況になったとしても、その後確実に書き換えを完了できるようにすることを解決課題とするものである。
【００１１】
【課題を解決するための手段および作用、効果】
第１発明は、
ＣＰＵ（２１）と、
書き込みおよび読み出しが可能な第１の記憶媒体（２２）と、
書き込みおよび読み出しが可能な第２の記憶媒体（２３）とが、
車載コントローラ（２０）に備えられている車載プログラムの書き換え制御装置であって、
第１の記憶媒体（２２）には、
車載プログラム記憶領域（２２ｂ）に、車載プログラム（６０）が記憶され、その他の領域に、車載プログラムを書き換える書き換え制御プログラム（６１ｂ）と、
リセット（再始動）時判断プログラム（６１ａ）が記憶され、
第２の記憶媒体（２３）には、
新しい車載プログラム（６０）を一時記憶する、新車載プログラム一時記憶領域（２３ａ）と、
車載プログラムを書き換えて実行中であることを示す書き換え実行中フラグ（２３ｃ）を記憶させる実行中フラグ記憶領域が設けられており、
書き換え制御プログラム（６１ｂ）は、
外部から新しい車載プログラム（６０）に書き換える指令を受けたとき、
新しい車載プログラム（６０）を、新車載プログラム一時記憶領域（２３ａ）へ一時記憶させ、
書き換え実行中フラグ（２３ｃ）を、実行中フラグ記憶領域へ記憶させる第１の機能と、
新車載プログラム一時記憶領域（２３ａ）に記憶されている新車載プログラムを、第１の記憶媒体（２２）に記憶されている車載プログラム上に転写する（書き換える）第２の機能と、
書き換え終了時、
書き換え実行中フラグ（２３ｃ）を、実行中フラグ記憶領域から消去する第３の機能と、
リセット（再始動）後、
リセット（再始動）時判断プログラム６１ａを起動する第４の機能をもち、
リセット（再始動）時判断プログラム６１ａは、
実行中フラグ記憶領域に、書き換え実行中フラグ（２３ｃ）があるか否かの判断をする第５の機能と、
書き換え実行中フラグ（２３ｃ）がない場合には、書き換え処理が完了したと判断して、第１の記憶媒体（２２）の車載プログラム記憶領域（２２ｂ）に記憶されている車載プログラム（６０）を実行させる第６の機能と、
書き換え実行中フラグ（２３ｃ）がある場合には、書き換え処理が完了していないと判断して、書き換え制御プログラム（６１ｂ）を実行させる第７の機能をもつこと
を特徴とする。
【００１２】
第２発明は、第１発明において、
車両（５０）の外部には、車両（５０）内の車載コントローラ（２０）と通信手段（１５、８、９、１０、１１）によって通信自在に接続されているサーバ（３）を設け、
前記サーバ（３）は、前記通信手段（１５、８、９、１０、１１）を介して、前記車載コントローラ（２０）に、新しい車載プログラム（６０）を書き換える指令を与える機能をもつこと
を特徴とする。
【００１３】
第１発明、第２発明によれば、図２、図３、図４に示すように、外部から新しい車載プログラム６０に書き換える指令が与えられると、ＣＰＵ２１は、書き換え制御プログラム６１ｂにしたがい、第２の記憶媒体であるＲＡＭ２３上の所定領域２３ａに新しい車載プログラム６０を一旦保持させるバッファ処理を行う（図２（ａ）、図３のステップ１０１）。そして第１の記憶媒体であるフラッシュメモリ２３の先頭記憶領域２２ａにリセット時判断プログラム６１ａを残したままＲＡＭ２３上に一旦保持された新しい車載プログラム６０をフラッシュメモリ２２上の車載プログラム記憶領域２２ｂに転写（コピー）させる書き換え処理（Ａ）を実行する（図２（ｄ）、図３のステップ１０６）。
【００１４】
当該書き換え処理（Ａ）の実行中は、書き換え実行中であることを示す書き換え実行中フラグ２３ａがＲＡＭ２３上の所定領域に設定されている（図２（ｂ）、図３のステップ１０２）。
【００１５】
書き換え処理（Ａ）が終了すると書き換え実行中フラグ２３ａをクリア状態にするとともに（図２（ｅ）、図３のステップ１０７）、リセット状態にする（図２（ｆ）、図３のステップ１０８）。
【００１６】
リセット状態になった時点で、フラッシュメモリ２２の先頭記憶領域２２ａに記憶されているリセット時判断プログラム６１ａが起動する。
【００１７】
このためＣＰＵ２１は当該リセット時判断プログラム６１ａにしたがい、書き換え実行中フラグ２３ａがクリア状態になっている場合には、書き換え処理（Ａ）が完了したと判断して、フラッシュメモリ２２の車載プログラム記憶領域２２ｂに転写された新しい車載プログラム６０にしたがい処理を実行する（図２（ｆ）、図３のステップ１０９）。
【００１８】
しかしリセット状態になった時点で、書き換え実行中フラグ２３ａが設定されている場合には、書き換え処理が完了していないと判断して、書き換え制御プログラム６１ｂを再度実行する（図４のステップ２０１、２０２〜２０５）。
【００１９】
このため本発明によれば、車体内のバッテリ５３から車載コントローラ２０を正常に動作させる電圧が供給されないような状況になったとしても、その後確実に書き換えを完了できるようにすることができる。
【００２０】
しかも記憶媒体としてはフラッシュメモリ（第１の記憶媒体）２２とＲＡＭ（第２の記憶媒体）２３だけで済むので、車体内での場積が嵩むことがなく、またコストを低減させることができる。
【００２１】
第１発明、第２の発明のうち第２発明は、特にサーバ３からの要求に応じて建設機械５０内の車載プログラム６０を通信手段を介してリモートで書き換える場合に適用される。
【００２２】
【発明の実施の形態】
図１は実施形態の全体の装置構成を示している。なお以下の実施形態では車両として建設機械５０を想定し、この建設機械５０内の車載プログラム６０を書き換え専用サーバ３からの要求に応じてリモートで書き換える場合を想定する。
【００２３】
本実施形態のシステムでは、建設機械５０が通常運用サーバ２、書き換え専用サーバ３とにそれぞれ通信手段（無線通信１１、アンテナ１０、専用線９、地上波基地局８、専用線１４、１５）より相互に送受信自在に接続されている。
【００２４】
通常運用サーバ２は、イントラネット４の中に位置し、インターネット７に接続している。これにより通常運用サーバ２は、インターネット７、イントラネット４の各クライアント端末のサーバとして機能する。この通常運用サーバ２には、ネットワーク中の自己を識別するＩＤ（サーバ識別ＩＤ）であるＩＰアドレス「ＩＤ１」が付与されている。建設機械５０には通常運用サーバ２と通信可能な後述する通信端末（通信コントローラ３０）が搭載されており、この通信端末にはサーバ識別ＩＤ「ＩＤ１」に対応するＩＰアドレス「ＩＤ３」が付与されている。
【００２５】
書き換え専用サーバ３は、イントラネット５の中に位置し、インターネット７に接続している。これにより書き換え専用サーバ３は、インターネット７、イントラネット５の各クライアント端末のサーバとして機能する。この書き換え専用サーバ３には、ネットワーク中の自己を識別するＩＤ（サーバ識別ＩＤ）であるＩＰアドレス「ＩＤ２」が付与されている。建設機械５０には書き換え専用サーバ３と通信可能な通信端末（通信コントローラ３０）が搭載されており、この通信端末にはサーバ識別ＩＤ「ＩＤ２」に対応するＩＰアドレス「ＩＤ４」が付与されている。
【００２６】
建設機械５０の車体内には、パケットデータ通信用の無線機を内蔵した通信コントローラ３０が設けられている。通信コントローラ３０のアンテナ３１と地上波用のアンテナ１０との間でパケット通信による無線通信１１が行われる。アンテナ１０は専用線９を介して地上波基地局８に接続している。地上波基地局８は、たとえば携帯電話基地局である。地上波基地局８は、専用線１４、１５を介してイントラネット４、５にそれぞれ接続している。
【００２７】
建設機械５０の車体内には、通信コントローラ３０以外に情報収集コントローラ２０、エンジンコントローラ４０等の各コントローラが設けられており、これら各コントローラは、所定の通信プロトコルにしたがって通信が行われる車体内通信回線５１によって相互に通信可能に接続されている。
【００２８】
建設機械５０の車体の各部には、エンジン５７の冷却水、バッテリ５３の電圧、ＧＰＳセンサなどが配設されており、これら各センサはセンサ群５２を構成している。なおＧＰＳセンサはＧＰＳ衛星から送信される電波を受信して、自己の建設機械５０の絶対位置を検出する。また建設機械５０の車体内には、カレンダ、タイマが設けられている。カレンダ、タイマは、年、月、日、時刻（時、分、秒）を計時する。また建設機械５０の車体内にはサービスメータＳＭＲが設けられている。サービスメータＳＭＲはエンジン５７の稼動時間を計時する。
【００２９】
情報収集コントローラ２０内では、バス線２４を介して、ＣＰＵ２１とフラッシュメモリ２２とＲＡＭ（随時書き込み読み出しメモり）２３とが相互にデータの入出力が自在に接続されている。なおフラッシュメモリ２２は、ＥＥＰＲＯＭ（電気的に消去可能なＲＯＭ）の一種である。またＲＡＭ２３の代わりにフラッシュメモリなどのＥＥＰＲＯＭを用いてもよい。フラッシュメモリ２２の所定記憶領域には、後述するように、サービスメータＳＭＲの計時値、センサ群５２の各検出値、カレンダ、タイマの計時値を取り込んで、当該建設機械５０が異常か否かの判断をしたり、設定された始動ロック時間帯になると始動ロック設定指令を出力して後述する始動ロックを行い始動ロック時間帯外の時間になると始動ロック解除指令を出力する等の処理を行う車載プログラム６０が記憶されている。またフラッシュメモリ２２の先頭の記憶領域には、後述するようにリセット時判断プログラム６１ａと書き換え制御プログラム６１ｂとからなる先頭プログラム６１が記憶されている。ＲＡＭ２３の所定記憶領域には、以下のような車両状態データが記憶される。
【００３０】
・自己のＩＰアドレス（ＩＤ３、ＩＤ４）
・建設機械５０の機種、型式、機番などの建設機械５０を特定する情報
・現在のサービスメータＳＭＲの計時値などの情報収集コントローラ２０で収集された情報あるいは収集された情報を加工した情報
・建設機械５０で異常等のイベントが発生した場合にそのイベント内容を示す情報
・後述するように現在始動ロックが有効か無効であるか、現在設定されている始動ロックの時間帯などの始動ロック情報
上記車両状態データは車載プログラム６０が動作するにしたがい生成される。
【００３１】
バス線２４は情報収集コントローラ２０外のサービスメータＳＭＲ、センサ群５２にインターフェースを介して接続しており、またバス線２４はコントローラ２０外の車体内通信回線５１にインターフェースを介して接続している。
【００３２】
なお本実施形態では、通信コントローラ３０と情報収集コントローラ２０とを別体としているが、これらを１つのコントローラで構成してもよい。
【００３３】
建設機械５０の車体内には、始動ロック回路５５が組み込まれている。
【００３４】
この始動ロック回路５５はリレー等で構成されキースイッチ５４と、エンジン５７を始動するスタータ５６との間に介在されている。スタータ５６の電源は車載のバッテリ５３であり、このバッテリ５３は各コントローラ２０、３０、４０の電源でもある。
【００３５】
始動ロック設定指令がエンジンコントローラ４０から出力されると、始動ロック回路５５のリレーが付勢されて始動ロック設定状態になる。すなわちキースイッチ５４がオン（ＡＣＣ位置）されたとしても、バッテリ５３の端子電圧がスタータ５６には印加されなくなる。これによりスタータ５６が作動不能の状態となりエンジン５７を始動することができなくなる。これに対してエンジンコントローラ４０から始動ロック解除指令が出力されると始動ロック回路５５のリレーが消勢されて始動ロック解除状態になる。すなわちキースイッチ５４をオン（ＡＣＣ位置）にすることによってスタータ５６が作動してエンジン５７を始動することができる。上記始動ロック設定指令、始動ロック解除指令は、車載プログラム６０にしたがい情報収集コントローラ２０から車体内通信回線５１を介してエンジンコントローラ４０に与えられる。始動ロック設定指令、始動ロック解除指令は、現在始動ロックが「有効」と設定されている場合に、情報収集コントローラ２０から出力される。なお始動ロック時間帯に入ったか否かは情報収集コントローラ２０内のカレンダ、タイマの計時値に基づき判断される。
【００３６】
またキースイッチ５４がオンされた（ＡＣＣ位置にある）という情報は、エンジンコントローラ４０から車体内通信回線５１を介して情報収集コントローラ２０内に取り込まれる。
【００３７】
通常運用サーバ２は、建設機械５０を含む複数の建設機械内の車両状態データを管理している。
【００３８】
書き換え専用サーバ３は、車載プログラム６０の書き換えをリモートで行うサーバである。
【００３９】
通常運用サーバ２は、マスターファイル６を備えている。通常運用サーバ２に取り込まれた最新の車両状態データはマスターファイル６に格納される。
【００４０】
一方、書き換え専用サーバ３は、マスターファイル６′を備えている。通常運用サーバ２内のマスターファイル６の記憶データは、インターネット７を介して書き換え専用サーバ３内に取り込まれ、マスターファイル６と同記憶内容つまり「レプリカ」としてのマスターファイル６′が作成される。
【００４１】
通常運用サーバ２から建設機械５０の車両状態データを要求する指令が、専用線１４、地上波基地局８、専用線９、アンテナ１０を介して無線通信１１として建設機械５０に送信されると、建設機械５０のアンテナ３１で受信され、このデータは通信コントローラ３０に取り込まれる。通常運用サーバ２から送信されるデータ中には、サーバ識別ＩＤ「ＩＤ１」を含んでいる。通信コントローラ３０ではＩＰアドレス「ＩＤ３」が設定されており、受信したデータではサーバ識別ＩＤ「ＩＤ１」が含まれているので、両者は対応している（「ＩＤ１」、「ＩＤ３」は同一ネットワークである）と判断して、通信接続を確立し、建設機械５０側から車両状態データの送信が可能な状態にする。
【００４２】
このため車両状態データを要求する指令が通信コントローラ３０から車体内通信回線５１を介して情報収集コントローラ２０内に取り込まれる。たとえば現在のサービスメータＳＭＲの計時値を要求する指令が情報収集コントローラ２０内に取り込まれると、ＲＡＭ２３に記憶されている現在のサービスメータＳＭＲの計時値が情報収集コントローラ２０から車体通信回線５１を介して通信コントローラ３０内に取り込まれ、通信コントローラ３０のアンテナ３１から無線通信１１として送信され、アンテナ１０、専用線９、地上波基地局８、専用線１４を介して通常運用サーバ２に取り込まれる。
【００４３】
また始動ロックの有効、無効、始動ロック時間帯を設定する指令が通常運用サーバ２から建設機械５０に送信された場合についても同様な経路で、情報収集コントローラ２０に、その指令された内容が設定される。
【００４４】
なお通常運用サーバ２の各クライアント端末から通常運用サーバ２を介して建設機械５０に対して同様な指令を与えるようにしてもよい。
【００４５】
また建設機械５０で特定の異常が発生したり、特定の時刻になるなど特定のイベントが発生した場合には、そのイベント発生時点でＲＡＭ２３に記憶されている異常内容や定期的に送信すべき車両状態データなどが情報収集コントローラ２０から車体通信回線５１を介して通信コントローラ３０内に取り込まれ、通信コントローラ３０のアンテナ３１から無線通信１１として送信される（自動発信）。自動発信されたデータは、アンテナ１０、専用線９、地上波基地局８、専用線１４を介して通常運用サーバ２に取り込まれる。
【００４６】
通常運用サーバ２に取り込まれた建設機械５０の車両状態データは、通常運用サーバ２に属するネットワーク、つまりインターネット７、イントラネット４に接続されている各クライアント端末から通常運用サーバ２にアクセスすることにより各クライアント端末の表示画面に表示される。
【００４７】
通常運用サーバ２に取り込まれた最新の車両状態データはマスターファイル６に格納されるとともに、インターネット７を介してマスターファイル６′に格納される。
【００４８】
車載プログラム６０をバージョンアップした場合や建設機械ごとにエラーコード生成や異常判断のためのしきい値等を変更したい場合には、上記フラッシュメモリ２２に記憶されている旧い車載プログラム６０′が新しい車載プログラム６０に書き換えられる。
【００４９】
書き換え専用サーバ３から建設機械５０の車載プログラム６０を書き換える指令が専用線１５、地上波基地局８、専用線９、アンテナ１０を介して無線通信１１として建設機械５０に送信されると、建設機械５０のアンテナ３１で受信され、このデータは通信コントローラ３０内に取り込まれる。
【００５０】
書き換え専用サーバ３から送信されるデータ中には、サーバ識別ＩＤ「ＩＤ２」を含んでいる。通信コントローラ３０では現在ＩＰアドレス「ＩＤ３」が設定されており、受信したデータにはサーバ識別ＩＤ「ＩＤ２」が含まれているので、両者は対応していない（「ＩＤ２」、「ＩＤ３」であり同一のネットワークではない）と判断して、通信接続を切断する。
【００５１】
識別ＩＤが不一致により通信接続が切断されたという情報は通信コントローラ３０から車体内通信回線５１を介して情報収集コントローラ２０内に取り込まれる。これを受けて情報収集コントローラ２０では、書き換え専用サーバ３のサーバ識別ＩＤ「ＩＤ２」に対応する自己のＩＰアドレス「ＩＤ４」が「有効」に切り換えられ、通常運用サーバ２のサーバ識別ＩＤ「ＩＤ１」に対応する自己のＩＰアドレス「ＩＤ３」が「無効」に切り換えられる（書き換えモード）。情報収集コントローラ２０で「有効」と設定された自己のＩＰアドレスのデータ「ＩＤ４」は、情報収集コントローラ２０から車体内通信回線５１を介して通信コントローラ３０内に取り込まれる。
【００５２】
書き換え専用サーバ３は、通信接続が切断されたことを受けて書き換え指令を建設機械５０に対して再度送信する。書き換え専用サーバ３から送信されるデータ中には、サーバ識別ＩＤ「ＩＤ２」を含んでいる。通信コントローラ３０では現在ＩＰアドレス「ＩＤ４」が設定されており、受信したデータにはサーバ識別ＩＤ「ＩＤ２」が含まれているので、両者は対応している（「ＩＤ２」、「ＩＤ４」であり同一ネットワークである）と判断して、通信接続を確立する。
【００５３】
以後、書き換え専用サーバ３からの指令に応じて情報収集コントローラ２０で車載プログラム６０を書き換える処理が行われる。
【００５４】
つぎに図２、図３、図４を参照して車載プログラム６０を書き換える処理について説明する。図２（ａ）〜（ｆ）はフラッシュメモリ２２、ＲＡＭ２３の状態の遷移を示す図で、図３は正常時の書き換え処理の手順を示すフローチャートで、図４は書き換え中にリセットが発生した場合の書き換え処理の手順を示すフローチャートである。なお以下の説明では旧い車載プログラム６０にダッシュを付与して新しい車載プログラム６０と区別する。
【００５５】
図２（ｆ）に示すように、フラッシュメモリ２２の先頭の記憶領域、つまりリセット時に最初に実行される記憶領域２２ａには、先頭プログラム６１が記憶されている。先頭プログラム６１は前述したようにリセット時判断プログラム６１ａと書き換え制御プログラム６１ｂとからなる。リセット時判断プログラム６１ａは後述する書き換え実行中フラグ２３ｃの状態に応じて書き換え処理が完了しているか否かを判断し、その判断結果に応じてつぎの処理を選択するプログラムである。書き換え制御プログラム６１ｂは、旧い車載プログラム６０′を新しい車載プログラム６０に書き換える処理を行うプログラムである。フラッシュメモリ２２の先頭記憶領域２２ａに続く所定の記憶領域２２ｂには旧い車載プログラム６０′が記憶されている。
【００５６】
書き換え専用サーバ３から建設機械５０の車載プログラム６０を書き換える指令が新しい車載プログラム６０とともに、専用線１５、地上波基地局８、専用線９、アンテナ１０を介して無線通信１１として建設機械５０に送信されると、建設機械５０のアンテナ３１で受信され、このデータは通信コントローラ３０から車体内通信回線５１を介して情報収集コントローラ２０内に取り込まれる。
【００５７】
書き換え指令が情報収集コントローラ２０内に取り込まれると、フラッシュメモリ２２上の書き換え制御プログラム６１ｂにしたがい処理がすすめられる。まず図２（ａ）に示すように、ＣＰＵ２１は受信した新しい車載プログラム６０をＲＡＭ２３の所定の記憶領域２３ａにバッファする（図３のステップ１０１）。つぎに図２（ｂ）に示すように、ＣＰＵ２１はＲＡＭ２３の所定の記憶領域に、書き換え処理が実行中であることを示す書き換え実行中フラグ２３ｃを立てる処理を行う（図３のステップ１０２）。
【００５８】
つぎに図２（ｃ）に示すように、フラッシュメモリ２２に記憶されている先頭プログラム６１がＲＡＭ２３の所定の記憶領域２３ｂにコピー（転写）される（図３のステップ１０３）。これによりコピーされたＲＡＭ２３上の先頭プログラム６１にシステム制御権が移される（図３のステップ１０４）。
【００５９】
これによりフラッシュメモリ２２が書き込みモードとなり、ＲＡＭ２３上の書き込み制御プログラム６１ｂにしたがい、フラッシュメモリ２２上の旧い車載プログラム６０′をＲＡＭ２３上の新しい車載プログラム６０によって書き換える書き換え処理（Ａ）が開始される（図３のステップ１０５）。
【００６０】
書き換え処理（Ａ）が実行されると、図２（ｄ）に示すようにＲＡＭ２３の記憶領域２３ａにバッファされていた新しい車載プログラム６０がフラッシュメモリ２２の記憶領域２２ｂ、つまり旧い車載プログラム６０′が記憶されている領域２２ｂにコピー（転写）され、旧い車載プログラム６０′が新しい車載プログラム６０に書き換えられる。ただしフラッシュメモリ２２の先頭記憶領域２２ａにある先頭プログラム６１については書き換えられないまま残される（図３のステップ１０６）。
【００６１】
書き換え処理（Ａ）が正常に完了すると、図２（ｅ）に示すように、書き換え実行中フラグ２３ｃがクリアされる（図３のステップ１０７）。
【００６２】
つぎにＣＰＵ２１は自己リセット処理を行う。このためシステム制御権がフラッシュメモリ２２に移され、フラッシュメモリ２２の先頭記憶領域２２ａに記憶されている先頭プログラム６１が起動される。この場合、先頭プログラム６１の最初のプログラムであるリセット時判断プログラム６１ａが実行される（図３のステップ１０８）。
【００６３】
リセット時判断プログラム６１ａはつぎの処理を行う。
【００６４】
１）リセット時に書き換え実行中フラグ２３ｃがクリア状態である場合には、フラッシュメモリ２２を通常モードにして、フラッシュメモリ２２の記憶領域２２ｂに記憶されている新しい車載プログラム６０を実行させる。
【００６５】
２）リセット時に書き換え実行中フラグ２３ｃが立っている状態である場合には、システム制御権をＲＡＭ２３に移しフラッシュメモリ２２を再度、書き込みモードにして、ＲＡＭ２３上の書き込み制御プログラム６１ｂにしたがい、フラッシュメモリ２２上の旧い車載プログラム６０′をＲＡＭ２３上の新しい車載プログラム６０によって書き換える書き換え処理（Ａ）を再度実行させる。
【００６６】
正常に書き換え処理（Ａ）が完了している場合には、リセット時に書き換え実行中フラグ２３ｃがクリアされているので、上記１）の処理が実行される。これにより図２（ｆ）に示すように、フラッシュメモリ２２の記憶領域２２ｂに記憶されている新しい車載プログラム６０が起動され、サービスメータＳＭＲの計時値を取り込む等の通常運用の処理が実行される（図３のステップ１０９）。
【００６７】
図４は書き換え処理中（Ａ）にリセットが発生した場合の書き換え処理の手順を示す。すなわちエンジン５７の始動時にスタータ５６を作動させると、バッテリ５３の端子電圧がＣＰＵ２１の動作電圧よりも一時的に低下することがある。またその他の原因によってもバッテリ５３からＣＰＵ２１にこれを正常に動作させる電圧が印加されないときがある。このようなときに書き換え処理（Ａ）の実行中であれば書き換え処理（Ａ）が正常に完了しないままリセット状態になってしまうことがある。
【００６８】
図２（ｄ）に示す書き換え処理（Ａ）中にリセットが発生すると、フラッシュメモリ２２の先頭記憶領域２２ａに記憶されている先頭プログラム６１が起動される。この場合、先頭プログラム６１の最初のプログラムであるリセット時判断プログラム６１ａが実行される（図４のステップ２０１）。
【００６９】
書き換え処理（Ａ）が正常に完了していない場合には、書き換え実行中フラグ２３ｃがクリアされないまま立っている状態であるので、前述した２）の処理が実行される。すなわち、リセット時に書き換え実行中フラグ２３ｃが立っている状態である場合には、システム制御権をＲＡＭ２３に移しフラッシュメモリ２２を再度、書き込みモードにして、ＲＡＭ２３上の書き込み制御プログラム６１ｂにしたがい、フラッシュメモリ２２上の旧い車載プログラム６０′をＲＡＭ２３上の新しい車載プログラム６０によって書き換える書き換え処理（Ａ）を再度実行させる（図４のステップ２０２）。
【００７０】
書き換え処理（Ａ）が正常に完了すると、図２（ｅ）に示すように、書き換え実行中フラグ２３ｃがクリアされる（図４のステップ２０３）。
【００７１】
つぎにＣＰＵ２１は自己リセット処理を行う。このためシステム制御権がフラッシュメモリ２２に移され、フラッシュメモリ２２の先頭記憶領域２２ａに記憶されている先頭プログラム６１が起動される。この場合、先頭プログラム６１の最初のプログラムであるリセット時判断プログラム６１ａが実行される（図４のステップ２０４）。
【００７２】
正常に書き換え処理（Ａ）が完了している場合には、リセット時に書き換え実行中フラグ２３ｃがクリアされているので、上記１）の処理が実行される。これにより図２（ｆ）に示すように、フラッシュメモリ２２の記憶領域２２ｂに記憶されている新しい車載プログラム６０が起動され、サービスメータＳＭＲの計時値を取り込む等の通常の運用処理が実行される（図４のステップ２０５）。
【００７３】
以上のように本実施形態によれば、車体内のバッテリ５３から車載コントローラ２０を正常に動作させる電圧が供給されないような状況になったとしても、その後確実に書き換えを完了できるようにすることができる。
【００７４】
しかも記憶媒体としてはフラッシュメモリ２２とＲＡＭ２３だけで済むので、車体内での場積が嵩むことがなく、またコストを低減させることができる。
【００７５】
なお本実施形態では、情報収集コントローラ２０内の車載プログラム６０を書き換える場合を想定しているが、他のコントローラ３０、４０…内の車載プログラムを書き換える場合にも同様に適用することができる。
【００７６】
また本実施形態では、先頭プログラム６１をフラッシュメモリ２２の先頭記憶領域２２ａに記憶させるようにしているが、先頭プログラム６１のうち少なくともリセット時判断プログラム６１ａがフラッシュメモリ２２の先頭記憶領域２２ａに記憶されていればよい。
【００７７】
また本実施形態では、リセット時判断プログラム６１ａと書き換え制御プログラム６１ｂを別のプログラムとして説明したが、書き換え制御プログラム６１ｂの中にリセット時判断プログラム６１ａの機能を組み込むように構成してもよい。
【００７８】
また本実施形態では、新しい車載プログラム６０を建設機械５０の外部から送信して建設機械５０内のＲＡＭ２３にバッファしてこれによって旧い車載プログラム６０′を書き換える場合を想定して説明したが、リセット時判断プログラム６１ａと書き換え制御プログラム６１ｂと車載プログラム６０とが一体となった新しいプログラムを送信して、新しい車載プログラム６０によって旧い車載プログラム６０′を書き換えるようにしてもよい。
【００７９】
またリセット時判断プログラム６１ａと書き換え制御プログラム６１ｂと車載プログラム６０とが一体となった新しいプログラムを送信して、送信された新しい車載プログラム６０によって旧い車載プログラム６０′を書き換えるとともに、送信された新しい書き換え制御プログラム６１ｂによって、旧い書き換え制御プログラムを書き換えるようにしてもよい。書き換え制御プログラムの書き換えは、通信プロトコルが変更された場合に行われることがある。
【００８０】
上述した実施形態では、情報収集コントローラ２０内の車載プログラム６０あるいは通信コントローラ３０内の車載プログラム６０あるいは情報収集コントローラ２０と通信コントローラ３０が一体に構成されている場合にこの一体となっているコントローラ内の車載プログラム６０を書き換える場合を想定して説明した。つぎにこれらコントローラ以外のエンジンコントローラ４０、図１では図示していないが作業機コントローラ、モニタパネルコントローラ等々の各コントローラ内の車載プログラム６０を書き換える場合に好適な実施形態について説明する。なお作業機コントローラは、建設機械５０に備えられている作業機を動作させるためのコントローラであり、モニタパネルコントローラは、建設機械５０の運転室に設けられたモニタパネル上に車両状態を表示させる等の処理を行うコントローラである。
【００８１】
これらエンジンコントローラ４０、作業機コントローラ、モニタパネルコントローラなどは、キースイッチ５４がオン、つまり建設機械５０が稼動している状態では、車載プログラム６０が実行されることにより通常に動作している必要がある。したがってキースイッチ５４がオンの状態では、車載プログラム６０を書き換える処理を実行させないかその処理を中断させて、車載プログラム６０を実行させる必要がある。
【００８２】
図５は書き換え処理の手順を示すフローチャートであり、図６はリセット時の処理手順を示すフローチャートである。以下エンジンコントローラ４０内に、情報収集コントローラ２０と同様なＣＰＵ２１、フラッシュメモリ２２、ＲＡＭ２３が搭載されているものとして、エンジンコントローラ４０内の車載プログラム６０を書き換える処理について、図２を併せ参照して説明する。
【００８３】
なお以下の説明では、キースイッチ５４の切り換え位置を示す信号がエンジンコントローラ４０に取り込まれ、キースイッチ５４がオフされているか（ＡＣＣ位置オフ）か否かによって、建設機械５０が稼働中でないか稼働中であるかを判断するものとする。しかし建設機械５０が稼働中でないか稼働中であるかは、オルタネータの端子電圧を検出したり、エンジン５７の回転数を検出したりすることによっても、判断することができる。
【００８４】
書き換え専用サーバ３から建設機械５０の車載プログラム６０を書き換える指令が新しい車載プログラム６０とともに、専用線１５、地上波基地局８、専用線９、アンテナ１０を介して無線通信１１として建設機械５０に送信されると、建設機械５０のアンテナ３１で受信され、このデータは通信コントローラ３０から車体内通信回線５１を介してエンジンコントローラ４０内に取り込まれる。
【００８５】
書き換え指令がエンジンコントローラ４０内に取り込まれると、フラッシュメモリ２２上の書き換え制御プログラム６１ｂにしたがい処理がすすめられる。
【００８６】
まずキースイッチ５４がオフされているかが判断される（図５のステップ３０１）。この結果、キースイッチ５４がオフの場合つまりエンジン５７が稼働中でない場合には書き換え処理を実行すべきと判断して（ステップ３０１の判断Ｙｅｓ）、図２（ａ）に示すように、ＣＰＵ２１は受信した新しい車載プログラム６０をＲＡＭ２３の所定の記憶領域２３ａにバッファする（図５のステップ３０２）。新しい車載プログラム６０の受信処理、記憶領域２３ａへのバッファリング処理が終了していない限りは（ステップ３０３の判断Ｎｏ）、再度ステップ３０１に移行され同様な処理が繰り返されるが（ステップ３０１〜３０３）、バッファリング処理が終了すると（ステップ３０３の判断Ｙｅｓ）、図２（ｂ）に示すように、ＣＰＵ２１はＲＡＭ２３の所定の記憶領域に、書き換え処理が実行中であることを示す書き換え実行中フラグ２３ｃを立てる処理を行う（図５のステップ３０４）。
【００８７】
以下図３のステップ１０３、１０４、１０５と同様の処理が図５のステップ３０５、３０６、３０７で行われる。
【００８８】
すなわち図２（ｃ）に示すように、フラッシュメモリ２２に記憶されている先頭プログラム６１がＲＡＭ２３の所定の記憶領域２３ｂにコピー（転写）される（図５のステップ３０５）。これによりコピーされたＲＡＭ２３上の先頭プログラム６１にシステム制御権が移される（図５のステップ３０６）。
【００８９】
これによりフラッシュメモリ２２が書き込みモードとなり、ＲＡＭ２３上の書き込み制御プログラム６１ｂにしたがい、フラッシュメモリ２２上の旧い車載プログラム６０′をＲＡＭ２３上の新しい車載プログラム６０によって書き換える書き換え処理（Ａ）が開始される（図５のステップ３０７）。
【００９０】
書き換え処理（Ａ）が実行されると、図２（ｄ）に示すようにＲＡＭ２３の記憶領域２３ａにバッファされていた新しい車載プログラム６０がフラッシュメモリ２２の記憶領域２２ｂ、つまり旧い車載プログラム６０′が記憶されている領域２２ｂにコピー（転写）され、旧い車載プログラム６０′が新しい車載プログラム６０に書き換えられる。ただしフラッシュメモリ２２の先頭記憶領域２２ａにある先頭プログラム６１については書き換えられないまま残される（図５のステップ３０８）。
【００９１】
書き換え処理（Ａ）中には、ステップ３０１と同様に、キースイッチ５４がオフされているかが判断され（図５のステップ３０９）、この結果、キースイッチ５４がオフの場合つまりエンジン５７が稼働中でない場合には、書き換え処理を継続すべきと判断して（ステップ３０９の判断Ｙｅｓ）、新しい車載プログラム６０の領域２２ｂへのコピー（転写）が終了していない限りは（ステップ３１０の判断Ｎｏ）、再度ステップ３０８に移行され、書き換え処理（Ａ）を継続させる（ステップ３０８〜３１０）。しかし新しい車載プログラム６０の領域２２ｂへのコピー（転写）が終了した場合、つまり書き換え処理（Ａ）が正常に完了した場合には（ステップ３１０の判断Ｙｅｓ）、以下、図３のステップ１０７、１０８、１０９と同様な処理が、図５のステップ３１１、３１２、３１３で行われる。
【００９２】
すなわち図２（ｅ）に示すように、書き換え実行中フラグ２３ｃがクリアされ（図５のステップ３１１）、その後ＣＰＵ２１は自己リセット処理を行う。このためシステム制御権がフラッシュメモリ２２に移され、フラッシュメモリ２２の先頭記憶領域２２ａに記憶されている先頭プログラム６１が起動される。この場合、先頭プログラム６１の最初のプログラムであるリセット時判断プログラム６１ａが実行される（図５のステップ３１２）。
【００９３】
図６はリセット時判断プログラム６１ａの処理内容を示している。
【００９４】
１１）リセット時に書き換え実行中フラグ２３ｃがクリア状態である場合、またはキースイッチ５４がオンの場合には（図６のステップ４０１の判断Ｎｏ）、車載プログラムを実行させる。書き換え実行中フラグ２３ｃがクリア状態である場合には、フラッシュメモリ２２の記憶領域２２ｂに記憶されている新しい車載プログラム６０を実行させる。しかし書き換え実行中フラグ２３ｃが立っている状態であり、キースイッチ５４がオンとなっている場合には、記憶領域２２ｂに記憶されている旧い車載プログラム６０′を実行させず、ＲＡＭ２３の記憶領域２３ａにバッファされている新しい車載プログラム６０を実行させる（図６のステップ４０３）。
【００９５】
１２）リセット時に書き換え実行中フラグ２３ｃが立っている状態であり、かつキースイッチ５４がオフの場合には（図６のステップ４０１の判断Ｙｅｓ）、書き換え処理を実行（継続）すべきものと判断して、システム制御権をＲＡＭ２３に移しフラッシュメモリ２２を再度、書き込みモードにして、ＲＡＭ２３上の書き込み制御プログラム６１ｂにしたがい、フラッシュメモリ２２上の旧い車載プログラム６０′をＲＡＭ２３上の新しい車載プログラム６０によって書き換える書き換え処理（Ａ）を再度実行させる（図６のステップ４０２）。
【００９６】
正常に書き換え処理（Ａ）が完了している場合には、リセット時に書き換え実行中フラグ２３ｃがクリアされているので、上記１１）の処理が実行される。これにより図２（ｆ）に示すように、フラッシュメモリ２２の記憶領域２２ｂに記憶されている新しい車載プログラム６０が起動され、サービスメータＳＭＲの計時値を取り込む等の通常運用の処理が実行される（図５のステップ３１３）。
【００９７】
図５の処理開始の時点で既にキースイッチ５４がオンになっている場合若しくは書き換え処理（Ａ）の途中でキースイッチ５４がオンになった場合には（ステップ３０１の判断Ｎｏあるいはステップ３０９の判断Ｎｏ）、エンジンコントローラ４０を通常に動作させるべく、ステップ３１４に移行し、ＣＰＵ２１は自己リセット処理を行う。自己リセット処理が行われると、リセット時判断プログラム６１ａが起動されて図６に示す処理が実行される。キースイッチ５４がオン状態であるため、上記１１）の処理が実行される。このためステップ４０１の判断処理を経た後（キースイッチ５４がオンでありステップ４０１の判断Ｎｏ）、書き換え処理（Ａ）中でなければ（書き換え実行中フラグ２３ｃがクリア状態である場合には）、フラッシュメモリ２２の記憶領域２２ｂに記憶されている車載プログラムが実行され、書き換え処理（Ａ）中であり（書き換え実行中フラグ２３ｃが立っている状態である場合には）、キースイッチ５４がオンとなっている場合には、ＲＡＭ２３の記憶領域２３ａにバッファされている新しい車載プログラム６０を実行させる（ステップ４０３）。またＣＰＵ２１は自己リセット処理を行うことなく、直接、フラッシュメモリ２２の記憶領域２２ｂ若しくはＲＡＭ２３の記憶領域２３ａにバッファされている車載プログラムを起動させてもよい（図５のステップ３１４）。
【００９８】
書き換え処理中（Ａ）に、バッテリ５３の電圧低下等によりリセットが発生した場合には、リセット時判断プログラム６１ａが起動して図６に示す手順で処理が進められるものとする。
【００９９】
上述した実施形態では、第１の記憶媒体がフラッシュメモリ２２であり、第２の記憶媒体がＲＡＭ２３である場合を想定して説明したが、第１の記憶媒体、第２の記憶媒体は下記に示す同一の記憶媒体または下記に示す異なる記憶媒体であってもよい。
【０１００】
・ＥＥＰＲＯＭ（電気的に消去可能なＲＯＭ）
・コントローラ外部のバッテリでバックアップされているＲＡＭ
・コントローラ内部のバッテリでバックアップされているＲＡＭ
・ＦＲＡＭ等のバックアップ電源不要な不揮発性ＲＡＭ
・ワンチップマイコン内部に設けられたフラッシュメモリ２２
上述した実施形態では、ＲＡＭ２３にバッファされた新しい車載プログラム６０をフラッシュメモリ２２にコピー（転写）させる書き換え処理を行うようにしているが、このような書き換え処理を行うことなくバッファされた新しい車載プログラム６０をそのまま実行させる実施も可能である。
【０１０１】
この実施形態に好適な記憶媒体を図９に示す。同図９に示すように、ワンチップマイコン内部には、ＣＰＵ２１、フラッシュメモリ２２、ＲＡＭ２３が設けられており、フラッシュメモリ２２の先頭記憶領域２２ａには、リセット時判断プログラム６１ａと書き換え制御プログラム６１ｂとからなる先頭プログラム６１が記憶されている。フラッシュメモリ２２上には、車載プログラム６０をバッファする第１の記憶領域２２ｄ、第２の記憶領域２２ｅが設けられている。
【０１０２】
第１の記憶領域２２ｄで、バッファ処理中であれば書き換え実行中であることを示す書き換え実行フラグ２２ｆ１が立ち、バッファ処理が終了すると書き換え実行中フラグ２３ｆ１がクリアされる。同様に第２の記憶領域２２ｅで、バッファ処理中であれば書き換え実行中であることを示す書き換え実行フラグ２２ｆ２が立ち、バッファ処理が終了すると書き換え実行中フラグ２３ｆ２がクリアされる。
【０１０３】
また第１の記憶領域２２ｄで、バッファ処理中であれば、当該第１の記憶領域２２ｄの車載プログラムが実行可能であることを示すプログラム実行可能フラグ２２ｇ１がクリアされ、バッファ処理が終了するとプログラム実行可能フラグ２２ｇ１が立つ。同様に第２記憶領域２２ｅで、バッファ処理中であれば、当該第２の記憶領域２２ｅの車載プログラムが実行可能であることを示すプログラム実行可能フラグ２２ｇ２がクリアされ、バッファ処理が終了するとプログラム実行可能フラグ２２ｇ２が立つ。
【０１０４】
また車載プログラム６０がバッファされた際には、バッファされた日時を示す日付情報が各記憶領域２２ｄ、２２ｅに記憶されるものとする。なお車載プログラム６０自体にバージョンアップされた日時の情報を持たせ、これを日付情報としてバッファ処理が行われた各記憶領域２２ｄ、２２ｅに記憶させてもよい。
【０１０５】
図７は書き換え処理の手順を示すフローチャートであり、図８はリセット時の処理手順を示すフローチャートである。以下エンジンコントローラ４０内の車載プログラム６０を書き換える処理について、図９を併せ参照して説明する。
【０１０６】
書き換え専用サーバ３から建設機械５０の車載プログラム６０を書き換える指令が新しい車載プログラム６０とともに、専用線１５、地上波基地局８、専用線９、アンテナ１０を介して無線通信１１として建設機械５０に送信されると、建設機械５０のアンテナ３１で受信され、このデータは通信コントローラ３０から車体内通信回線５１を介してエンジンコントローラ４０内に取り込まれる。
【０１０７】
書き換え指令がエンジンコントローラ４０内に取り込まれると、フラッシュメモリ２２上の書き換え制御プログラム６１ｂにしたがい処理がすすめられる。
【０１０８】
まず、第１の記憶領域２２ｄ、第２の記憶領域２２ｅのうちいずれの記憶媒体（記憶領域）にバッファするかが判断される。この判断基準は、つぎのとおりである。
【０１０９】
判断基準１）  記憶領域２２ｄ、２２ｅのプログラム実行可能フラグ２２ｇ１、２２ｇ２のうち一方がクリアされている状態である場合には、プログラム実行可能フラグがクリアされている方の記憶領域に、新しい車載プログラム６０をバッファする。また記憶領域２２ｄ、２２ｅの書き換え実行中フラグ２２ｆ１、２２ｆ２のうち一方が立っている状態である場合には、書き換え実行中フラグが立っている方の記憶領域（書き換え処理実行中の記憶領域）に、新しい車載プログラム６０をバッファする。
【０１１０】
判断基準２）  両記憶領域２２ｄ、２２ｅのプログラム実行可能フラグ２２ｇ１、２２ｇ２が立っている状態であり両方の記憶領域２２ｄ、２２ｅに記憶されている車載プログラム６０を実行させることが可能である場合には、予め定めた特定の記憶領域たとえば第２の記憶領域２２ｅに、新しい車載プログラム６０をバッファする。
【０１１１】
また判断基準２の代わりにつぎの判断基準３を適用してもよい。
【０１１２】
判断基準３）  両記憶領域２２ｄ、２２ｅのプログラム実行可能フラグ２２ｇ１、２２ｇ２が立っている状態であり両方の記憶領域２２ｄ、２２ｅに記憶されている車載プログラム６０を実行させることが可能である場合には、日付情報に示される日時のうち旧い方の日時の記憶領域に、新しい車載プログラム６０をバッファする（図７のステップ５０１）。
【０１１３】
ＣＰＵ２１は、バッファすべきと判断された記憶領域２２ｄまたは２２ｅに、書き換え実行中フラグ２２ｆ１または２２ｆ２を立てる処理を行う（図７のステップ５０２）。
【０１１４】
つぎにフラッシュメモリ２２に記憶されている先頭プログラム６１がＲＡＭ２３の所定の記憶領域にコピー（転写）される（図７のステップ５０３）。これによりコピーされたＲＡＭ２３上の先頭プログラム６１にシステム制御権が移される（図７のステップ５０４）。
【０１１５】
これによりフラッシュメモリ２２が書き込みモードとなり、ＲＡＭ２３上の書き込み制御プログラム６１ｂにしたがい、フラッシュメモリ２２上の記憶領域２２ｄまたは２２ｅに新しい車載プログラム６０を書き込み、旧い車載プログラム６０′を新しい車載プログラム６０によって書き換える書き換え処理が開始される（図７のステップ５０５）。
【０１１６】
書き換え処理の開始にあたり、キースイッチ５４がオフされているかが判断され（図７のステップ５０６）、この結果、キースイッチ５４がオフの場合つまりエンジン５７が稼働中でない場合には、書き換え処理を継続すべきと判断して（ステップ５０６の判断Ｙｅｓ）、つぎのステップ５０７に移行して、ＣＰＵ２１は、受信した新しい車載プログラム６０を、フラッシュメモリ２２上のバッファすべき記憶領域２２ｄまたは２２ｅにバッファし書き込み、旧い車載プログラム６０′を新しい車載プログラム６０に書き換える処理を実行する（図７のステップ５０７）。
【０１１７】
新しい車載プログラム６０の受信処理、記憶領域２２ｄ、２２ｅへのバッファリング処理（書き込み処理）が終了していない限りは（ステップ５０８の判断Ｎｏ）、同様な処理が繰り返されるが（ステップ５０６〜５０８）、書き換え処理が終了すると（ステップ５０８の判断Ｙｅｓ）、ＣＰＵ２１は書き換え処理が終了した記憶領域２２ｄまたは２２ｅの書き換え実行中フラグ２２ｆ１または２２ｆ２をクリアするとともに、書き換え処理が終了した記憶領域２２ｄまたは２２ｅのプログラム実行可能フラグ２２ｇ１または２２ｇ２を立てる処理を行う。同時に書き換え処理の対象でない方の記憶領域２２ｄまたは２２ｅのプログラム実行可能フラグ２２ｇ１または２２ｇ２がクリアされる。たとえば第２の記憶領域２２ｅで書き換え処理が終了すると、第２の記憶領域２２ｅの書き換え実行中フラグ２２２２ｆ２をクリアするとともに、第２の記憶領域２２ｅのプログラム実行可能フラグ２２ｇ２を立てる処理を行う。同時に第１の記憶領域２２ｄのプログラム実行可能フラグ２２ｇ１がクリアされる（図５のステップ５０９）。
【０１１８】
その後ＣＰＵ２１は自己リセット処理を行う。このためシステム制御権がフラッシュメモリ２２に移され、フラッシュメモリ２２の先頭記憶領域２２ａに記憶されている先頭プログラム６１が起動される。この場合、先頭プログラム６１の最初のプログラムであるリセット時判断プログラム６１ａが実行される（図５のステップ５１０）。
【０１１９】
図８はリセット時判断プログラム６１ａの処理内容を示している。
【０１２０】
すなわちリセット時判断プログラム６１ａが起動すると、つぎの判断基準にしたがい実行可能な車載プログラムを起動させる。
【０１２１】
判断基準１１）  記憶領域２２ｄ、２２ｅのプログラム実行可能フラグ２２ｇ１、２２ｇ２のうち一方が立っている状態である場合には、プログラム実行可能フラグが立っている方の記憶領域の新しい車載プログラム６０を起動させる。
【０１２２】
判断基準１２）両記憶領域２２ｄ、２２ｅのプログラム実行可能フラグ２２ｇ１、２２ｇ２が立っている状態であり両方の記憶領域２２ｄ、２２ｅに記憶されている車載プログラム６０を実行させることが可能である場合には、予め定めた特定の記憶領域たとえば第１の記憶領域２２ｄの新しい車載プログラム６０を起動させる。
【０１２３】
また判断基準１２の代わりにつぎの判断基準１３を適用してもよい。
【０１２４】
判断基準１３）  両記憶領域２２ｄ、２２ｅのプログラム実行可能フラグ２２ｇ１、２２ｇ２が立っている状態であり両方の記憶領域２２ｄ、２２ｅに記憶されている車載プログラム６０を実行させることが可能である場合には、日付情報に示される日時のうち新しい方の日時の記憶領域の新しい車載プログラム６０を起動させる。
【０１２５】
正常に書き換え処理が終了した場合には、書き換え処理が終了した記憶領域２２ｄまたは２２ｅのプログラム実行可能フラグ２２ｇ１または２２ｇ２を立てる処理が行われ、同時に書き換え処理の対象でない方の記憶領域２２ｄまたは２２ｅのプログラム実行可能フラグ２２ｇ１または２２ｇ２がクリアされている。たとえば第２の記憶領域２２ｅで書き換え処理が終了すると、第２の記憶領域２２ｅのプログラム実行可能フラグ２２ｇ２が立てられ、同時に第１の記憶領域２２ｄのプログラム実行可能フラグ２２ｇ１がクリアされる。このため上記判断基準１１にしたがい第２の記憶領域２２ｅの最新の車載プログラム６０が起動され実行されることになる（図７のステップ５１１）。
【０１２６】
図７の書き換え処理の途中でキースイッチ５４がオンになった場合には（ステップ５０６の判断Ｎｏ）、エンジンコントローラ４０を通常に動作させるべく、ステップ５１２に移行し、ＣＰＵ２１は自己リセット処理を行う。自己リセット処理が行われると、リセット時判断プログラム６１ａが起動されて図８に示す処理が実行される。このため上記判断基準１１、１２、１３にしたがい、プログラム実行フラグが立っている記憶領域の車載プログラム６０を起動させる。またＣＰＵ２１は自己リセット処理を行うことなく、直接、フラッシュメモリ２２の記憶領域２２ｄ、２２ｅの車載プログラムを起動させてもよい（図７のステップ５１２）。
【０１２７】
書き換え処理中にバッテリ５３の電圧低下等によりリセットが発生した場合には、リセット時判断プログラム６１ａが起動して図８に示す手順で処理が進められるものとする。
【０１２８】
図９ではフラッシュメモリ上に第１の記憶領域２２ｄ、第２の記憶領域２２ｅを設けているが、ＥＥＰＲＯＭであればフラッシュメモリに限定されるわけではない。またＦＲＡＭ等のバックアップ電源が不要な不揮発性のＲＡＭ上に第１の記憶領域２２ｄ、第２の記憶領域２２ｅを設けてもよい。
【０１２９】
また以上説明した本実施形態では、書き換え専用サーバ３からの指令に応じて車載プログラム６０を書き換えるようにしているが、通常運用サーバ２からの指令に応じて車載プログラム６０を書き換えるようにしてもよい。
【０１３０】
また以上説明した実施形態では、サーバからの要求に応じて建設機械５０内の車載プログラム６０をリモートで書き換える場合を想定しているが、サービスマンが建設機械５０まで出向きコントローラにパーソナルコンピュータを接続することにより車載プログラム６０を書き換える場合にも本発明を適用することができる。
【０１３１】
また以上説明した実施形態では、車両として建設機械５０を想定しているが、本発明は一般自動車等、任意の車両の車載プログラムを書き換える場合に適用することができる。
【図面の簡単な説明】
【図１】図１は本実施形態のシステムの全体構成を示す図である。
【図２】図２（ａ）〜（ｆ）はフラッシュメモリ、ＲＡＭの状態遷移を示す図である。
【図３】図３は図３は正常時の書き換え処理の手順を示すフローチャートである。
【図４】図４は書き換え中にリセットが発生した場合の書き換え処理の手順を示すフローチャートである。
【図５】図５は書き換え処理の手順を示すフローチャートである。
【図６】図６は図５に関連しリセット時の処理の手順を示すフローチャートである。
【図７】図７は書き換え処理の手順を示すフローチャートである。
【図８】図８は図７に関連しリセット時の処理の手順を示すフローチャートである。
【図９】図９はフラッシュメモリ上に車載プログラムを記憶する２つの記憶領域を設けた記憶媒体の構成例を示す図である。
【符号の説明】
２１  ＣＰＵ
２２  フラッシュメモリ
２３  ＲＡＭ
【図１】
2004210183.tif 000003
【図２】
2004210183.tif 000004
【図３】
2004210183.tif 000005
【図４】
2004210183.tif 000006
【図５】
2004210183.tif 000007
【図６】
2004210183.tif 000008
【図７】
2004210183.tif 000009
【図８】
2004210183.tif 000010
【図９】
2004210183.tif 000011