(57)【要約】【課題】制御装置のプログラムを書き換え、この書き換えたプログラムに問題があった場合に、簡単に書き換え前のプロラムに戻すことができるプログラム書き換えシステムを得る。【解決手段】モータ制御装置１０１のプログラムを書き換える場合、モータ制御装置１０１の分割プログラム送信部１１６により、プログラムを分割して、各分割プログラムを他の制御装置に送信して保存させ、そののちに、テスタ１０３から送信される書き換えプログラムにより、プログラムを書き換え、この新しいプログラムによる動作の異常を状態検出部１１５により検出した場合には、他の制御装置から分割プログラムを送信させて、元のプログラムに書き戻すようにした。【選択図】図１
2017191529.tif 000002
【特許請求の範囲】
【請求項１】
第１種ノードおよび複数の第２種ノードが通信可能にネットワークに接続され、上記ネットワークに随時接続される第３種ノードから送信される書き換えプログラムによって上記第１種ノードのプログラムを書き換えるプログラム書き換えシステムであって、
上記第１種ノードは、
上記プログラムを保存する第１の記録領域と、
この第１の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に上記第２種ノードに送信する分割プログラム送信部と、
上記第３種ノードから受信した上記書き換えプログラムによって、上記第１の記録領域の上記プログラムを書き換えるプログラム書き換え部とを有し、
上記第２種ノードは、
上記第１種ノードから受信した上記分割プログラムを保存する第２の記録領域と、
この第２の記録領域に保存された上記分割プログラムを上記第１種ノードに送信する送信部とを有し、
上記第３種ノードは、
上記書き換えプログラムを保存する第３の記録領域と、
上記第１種ノードへの書き換えを指示する書き換え指示部と、
上記書き換えプログラムを上記第１種ノードに送信する書き換えプログラム送信部とを有し、
上記第１種ノードのプログラム書き換え部は、上記第３種ノードから書き換え指示を受信した場合に、上記分割プログラムを上記第２種ノードに送信したのち、上記第３種ノードから受信した上記書き換えプログラムによって上記プログラムを書き換えることを特徴とするプログラム書き換えシステム。
【請求項２】
上記第１種ノードは、自身の状態を検出する状態検出部を有し、
上記プログラム書き換え部によって上記プログラムを書き換えたのちに、上記状態検出部により異常が検出された場合に上記第２種ノードに通知し、
上記第２種ノードは、上記通知を受けて、自ノードが保存する分割プログラムを上記第１種ノードに送信し、
上記第１種ノードは、上記第２種ノードより受信した上記分割プログラムにより、上記第１の記録領域のプログラムの該当部分を書き換えることを特徴とする請求項１に記載のプログラム書き換えシステム。
【請求項３】
上記第２種ノードは、上記第１種ノードの状態を検出する第１種ノード状態検出部を有し、
上記プログラム書き換え部によって上記プログラムを書き換えたのちに、上記第１種ノードの異常が検出された場合に上記第１種ノードおよび他の第２種ノードに通知するとともに、自ノードが保存する分割プログラムを上記第１種ノードに送信し、
上記通知を受けた他の第２種ノードは、自ノードが保存する分割プログラムを上記第１種ノードに送信し、
上記第１種ノードは、各第２種ノードより受信した上記分割プログラムにより、上記第１の記録領域のプログラムの該当部分を書き換えることを特徴とする請求項１に記載のプログラム書き換えシステム。
【請求項４】
上記第１種ノードは、上記分割プログラムを暗号化する暗号化部と、
上記第２種ノードから受信した上記分割プログラムを復号化する復号化部とを有し、
上記分割プログラムを暗号化してから上記第２種ノードに送信し、第２種ノードから受信した上記分割プログラムを複合化してから、上記第１の記録領域の上記プログラムの該当部分を書き換えることを特徴とする請求項２または請求項３に記載のプログラム書き換えシステム。
【請求項５】
上記第１種ノードは、上記分割プログラムの生成時に上記分割プログラムを検証するためのチェックコードを生成するチェックコード生成部を有し、
このチェックコード生成部により生成されたチェックコードを上記第２種ノードに送信し、
上記第２種ノードは、上記第１種ノードから受信したチェックコードを保存する第４の記録領域を有し、
上記分割プログラムの第１種ノードへの送信時に、上記第４の記録領域に保存されているチェックコードを第１種ノードに送信し、
上記第１種ノードは、上記第２種ノードから受信した上記分割プログラムおよび上記チェックコードから、上記分割プログラムが変更されていないことを検証した後、この分割プログラムにより、上記第１の記録領域の上記プログラムの該当部分を書き換えることを特徴とする請求項２から請求項４のいずれか一項に記載のプログラム書き換えシステム。
【請求項６】
第３種ノードが、ネットワークを介して第１種ノードに、上記第１種ノードのプログラムの書き換え指示を送信する第１のステップ、
上記書き換え指示の受信に応じて、上記第１種ノードが上記プログラムを分割し、各分割プログラムを各別に複数の第２種ノードに上記ネットワークを介して送信する第２のステップ、
上記第３種ノードが、上記プログラムを書き換えるための書き換えプログラムを上記第１種ノードに送信する第３のステップ、
および上記第１種ノードが、上記プログラムを、上記第３のステップで送信された書き換えプログラムによって書き換える第４のステップを含むことを特徴とするプログラム書き換え方法。
【請求項７】
上記第４のステップで上記プログラムを書き換えたのちに、上記第１種ノードまたは上記第２種ノードが、上記第１種ノードの動作の異常を検出する第５のステップ、
この第５のステップにより異常が検出された場合に、上記各第２種ノードがそれぞれ保存している上記分割プログラムを上記第１種ノードに送信する第６のステップ、
および上記第１種ノードが、上記第６のステップにより送信された分割プログラムにより、上記第４のステップで書き換えたプログラムの該当部分を、書き換える第７のステップを含むことを特徴とする請求項６に記載のプログラム書き換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークに接続された制御装置のプログラムを書き換えるプログラム書き換えシステムおよびプログラム書き換え方法に関するものである。
【背景技術】
【０００２】
従来、自動車のネットワークに接続された制御装置のプログラム書き換えシステムおよび方法として、例えば特許文献１に記載されたものが知られている。
この特許文献１におけるプログラム書き換えシステムでは、通信用バスラインを介して、プログラムのデータを書き換え対象であるエンジン制御装置と、メモリ書換機が通信バス接続用コネクタによって信号的に接続されている。
エンジン制御装置は、センサからの信号を処理する入力処理回路と、このセンサ信号等からエンジン最適制御量を演算するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、このＣＰＵでの演算結果を制御信号として受けてエンジンに取付けられた燃料噴射装置や点火装置などのアクチュエータを駆動する出力回路と、外部機器であるメモリ書換機とのデータ通信用の通信回路とを備えている。
【０００３】
ＣＰＵには制御プログラムに従い動作するマイクロ・プロセッサ・ユニット（以下、ＭＰＵ）と、このＭＰＵを動作させるに必要なプログラムおよびデータを格納するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ＭＰＵの演算結果を格納するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、入力処理回路および通信回路からの信号を受けるとともに、出力回路に制御信号を出力するＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）とが備えられている。
また、通信バス接続用コネクタにより接続されたモード判定用制御信号ラインは、リセット直後におけるＣＰＵの実行モードをメモリ書換機側から設定するものである。
【０００４】
この特許文献１のプログラム書き換え方法は、内蔵プログラム起動中に外部から送信される書き換え命令があった場合に、自動車の駆動がなされていないことを様々な条件から判断し、駆動されていないことが判明すると、内蔵プログラムまたは内蔵データの一部または全部を、外部から送信される新たなプログラムまたはデータに書き換えるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３１０９４１３号公報（第５〜７頁、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、この特許文献１に記載されたプログラムの書き換えシステムでは、プログラムを書き換えて、メモリ書換機をコネクタから切り離した後に、書き換えたプログラムのバグや、書き換えたプログラムにセキュリティ的な脆弱性が判明したときは、再度メモリ書換機を接続し直し、同じ書き換え手順を実施してプログラムを書き換えるまで、問題の有ったプログラムを使い続けることとなり、自動車の安全性が確保できないという問題があった。
【０００７】
この発明は、上記のような課題を解決するためになされたものであり、制御装置のプログラムを書き換え、この書き換えたプログラムに問題があった場合に、簡単に書き換え前のプロラムに戻すことができるプログラム書き換えシステムおよびプログラム書き換え方法を得ることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係わるプログラム書き換えシステムにおいては、第１種ノードおよび複数の第２種ノードが通信可能にネットワークに接続され、ネットワークに随時接続される第３種ノードから送信される書き換えプログラムによって第１種ノードのプログラムを書き換えるプログラム書き換えシステムであって、第１種ノードは、プログラムを保存する第１の記録領域と、この第１の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に第２種ノードに送信する分割プログラム送信部と、第３種ノードから受信した書き換えプログラムによって、第１の記録領域のプログラムを書き換えるプログラム書き換え部とを有し、第２種ノードは、第１種ノードから受信した分割プログラムを保存する第２の記録領域と、この第２の記録領域に保存された分割プログラムを第１種ノードに送信する送信部とを有し、第３種ノードは、書き換えプログラムを保存する第３の記録領域と、第１種ノードへの書き換えを指示する書き換え指示部と、書き換えプログラムを第１種ノードに送信する書き換えプログラム送信部とを有し、第１種ノードのプログラム書き換え部は、第３種ノードから書き換え指示を受信した場合に、分割プログラムを第２種ノードに送信したのち、第３種ノードから受信した書き換えプログラムによってプログラムを書き換えるものである。
【発明の効果】
【０００９】
この発明によれば、第１種ノードおよび複数の第２種ノードが通信可能にネットワークに接続され、ネットワークに随時接続される第３種ノードから送信される書き換えプログラムによって第１種ノードのプログラムを書き換えるプログラム書き換えシステムであって、第１種ノードは、プログラムを保存する第１の記録領域と、この第１の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に第２種ノードに送信する分割プログラム送信部と、第３種ノードから受信した書き換えプログラムによって、第１の記録領域のプログラムを書き換えるプログラム書き換え部とを有し、第２種ノードは、第１種ノードから受信した分割プログラムを保存する第２の記録領域と、この第２の記録領域に保存された分割プログラムを第１種ノードに送信する送信部とを有し、第３種ノードは、書き換えプログラムを保存する第３の記録領域と、第１種ノードへの書き換えを指示する書き換え指示部と、書き換えプログラムを第１種ノードに送信する書き換えプログラム送信部とを有し、第１種ノードのプログラム書き換え部は、第３種ノードから書き換え指示を受信した場合に、分割プログラムを第２種ノードに送信したのち、第３種ノードから受信した書き換えプログラムによってプログラムを書き換えるので、書き換えたのちのプログラムに問題があった場合に、第２種ノードから簡単に書き換え前のプロラムに戻すことができる。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。
【図２】この発明の実施の形態１によるプログラム書き換えシステムにおける第１〜第３種ノードの記録装置の領域構成を示すメモリマップ図である。
【図３】この発明の実施の形態１によるプログラム書き換えシステムの第１種ノードにおけるプログラム書き換え時の処理の流れを示すフローチャートである。
【図４】この発明の実施の形態１によるプログラム書き換えシステムの第１種ノードにおけるプログラム書き戻し時の処理の流れを示すフローチャートである。
【図５】この発明の実施の形態１によるプログラム書き換えシステムの第２種ノードにおける処理の流れを示すフローチャートである。
【図６】この発明の実施の形態１によるプログラム書き換えシステムの第３種ノードにおける処理の流れを示すフローチャートである。
【図７】この発明の実施の形態２によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。
【図８】この発明の実施の形態２によるプログラム書き換えシステムにおける第１〜第３種ノードの記録装置の領域構成を示すメモリマップ図である。
【図９】この発明の実施の形態２によるプログラム書き換えシステムの第１種ノードにおけるプログラム書き換え時の処理の流れを示すフローチャートである。
【図１０】この発明の実施の形態２によるプログラム書き換えシステムの第１種ノードにおけるプログラム書き戻し時の処理の流れを示すフローチャートである。
【図１１】この発明の実施の形態２によるプログラム書き換えシステムの第２種ノードにおける処理の流れを示すフローチャートである。
【図１２】この発明の実施の形態２によるプログラム書き換えシステムの第３種ノードにおける処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
実施の形態１．
以下に、実施の形態１によるプログラム書き換えシステムについて、図に基づいて説明する。
図１は、この発明の実施の形態１によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。
図１において、実施の形態１のプログラム書き換えシステムは、第１種ノードであるモータ制御装置１０１と、第２種ノードであるＥＰＳ（Ｅｌｅｃｔｒｉｃ  Ｐｏｗｅｒ  Ｓｔｅｅｒｉｎｇ＝電動パワーステアリング）制御装置１０２ａおよびバッテリ制御装置１０２ｂと、第３種ノードであるテスタ１０３とを有する。
これらのノードは、車両のＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ネットワーク１０６を介して、互いに通信可能に接続されている。
なお、第２種ノードとして、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂとを示したが、これに限らずに、さらに別のノードを含み得ることは言うまでもない。
【００１２】
第１種ノードとしてのモータ制御装置１０１は、駆動用モータ１１０を制御し、同様にＥＰＳ制御装置１０２ａは、ＥＰＳ１２０ａを、バッテリ制御装置１０２ｂは、バッテリ１２０ｂを、それぞれ制御するように接続されている。
なお、図１に示すテスタ１０３以外の制御装置は、常時、ＣＡＮネットワーク１０６に接続されているが、テスタ１０３は、ＣＡＮネットワーク１０６に常時接続されているものではなく、プログラムの書き換えや各ノードの故障診断時等、必要に応じて、随時、接続される。
各制御装置およびテスタの構成については後述する。
なお、各制御装置およびテスタは、図１に示す以外の構成物も備えているが、実施の形態１に直接関係しないものについては図示を省略している。
【００１３】
図２は、この発明の実施の形態１によるプログラム書き換えシステムにおける第１種ノード〜第３種ノードの記録装置の領域構成を示すメモリマップ図である。
図２（ａ）は、モータ制御装置１０１の記録装置１１３の領域構成を示し、図２（ｂ）はＥＰＳ制御装置１０２ａの記録装置１２３ａの領域構成を示し、図２（ｃ）はバッテリ制御装置１０２ｂの記録装置１２３ｂの領域構成を示し、図２（ｄ）はテスタ１０３の記録装置１３３の領域構成を示している。
【００１４】
図２（ａ）において、記録装置１１３は、モータ制御プログラムを全体的もしくは部分的に書き換えるためのプログラム書き換え用プログラムを保存するプログラム書き換え用プログラム記録領域２２１と、モータ制御プログラムを保存する第１の記録領域であるモータ制御プログラム記録領域２２２と、駆動用モータ１１０の制御に関わるデータ等を保存するモータ制御プログラム用記録領域（データ用）２２３を備えている。
【００１５】
図２（ｂ）において、記録装置１２３ａは、ＥＰＳ１２０ａの制御内容を決定するＥＰＳ制御プログラムを保存するＥＰＳ制御プログラム記録領域２３１ａと、ＥＰＳ１２０ａの制御に関わるデータ等を保存するＥＰＳ制御プログラム用記録領域（データ用）２３２ａと、後述する分割プログラムを一時的に保存する第２の記録領域である分割モータ制御プログラム記録領域２３３ａとを備えている。
なお、分割モータ制御プログラム記録領域２３３ａには、記録装置１２３ａの空き領域等を割り当てることができる。
【００１６】
図２（ｃ）において、記録装置１２３ｂは、バッテリ１２０ｂの制御内容を決定するバッテリ制御プログラムを保存するバッテリ制御プログラム記録領域２３１ｂと、バッテリ１２０ｂの制御に関わるデータ等が記録されるバッテリ制御プログラム用記録領域（データ用）２３２ｂと、後述する分割プログラムを一時的に保存する第２の記録領域である分割モータ制御プログラム記録領域２３３ｂを備えている。
なお、分割モータ制御プログラム記録領域２３３ｂには、記録装置１２３ｂの空き領域等を割り当てることができる。
【００１７】
図２（ｄ）において、記録装置１３３は、書き換えプログラムを保存する第３の記録領域であるモータ制御プログラム記録領域２４１を備えている。
【００１８】
次に、図１の各制御装置およびテスタの構成と機能について説明する。
まず、モータ制御装置１０１の構成と機能について説明する。
マイコン１１１は、駆動用モータ１１０の制御に関わる制御量や各種処理値を演算する。ＣＡＮネットワーク用データ送受信部であるデータ送受信部１１２は、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（ＥＰＳ制御装置１０２ａ、バッテリ制御装置１０２ｂ、テスタ１０３を含む）とデータを送受信する。
記録装置１１３は、書き換え対象であるモータ制御プログラムを保存する第１の記録領域であるモータ制御プログラム記録領域２２２を有している。このモータ制御プログラムは、モータ制御装置１０１の動作（制御内容）を決定し、演算を行うものである。
【００１９】
モータ制御装置１０１のプログラム書き換え部１１４は、記録装置１１３のモータ制御プログラム記録領域２２２に保存されたモータ制御プログラムを全体的もしくは部分的に書き換える。その際には、記録装置１１３のプログラム書き換え用プログラム記録領域２２１に記録されたプログラム書き換え用プログラムを用いる。
【００２０】
状態検出部１１５は、第１種ノード自身がモータ制御プログラムを書き換え可能な状態であるか否か、或いはモータ制御プログラムが全て書き換えられているか否か、自身に異常がないか否か等の状態を検出し、他の制御装置に通知する。
状態検出部１１５により自身に異常があり、かつ、書き換え可能であることが検出された場合は、ＣＡＮネットワーク１０６を介して、ＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂに通知し、この通知を受けたＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂは、自身が保存する分割モータ制御プログラム（以下、分割プログラムと略す。）を、ＣＡＮネットワーク１０６を介してモータ制御装置１０１に送信する。
そして、モータ制御装置１０１は、ＥＰＳ制御装置１０２ａまたはバッテリ制御装置１０２ｂから分割プログラムを受信する度に、モータ制御プログラム記録領域２２２に保存されたモータ制御プログラムの該当部分をプログラム書き換え部１１４により書き換える。
ここで、自身の異常とは、意図しない制御や処理を実施したり、セキュリティ上の脆弱性が検出されたりすることが挙げられるが、これに限るものではない。
【００２１】
モータ制御装置１０１の分割プログラム送信部１１６は、テスタ１０３から書き換え指示を通知された後、モータ制御プログラム記録領域２２２に保存されている（現状時点の）モータ制御プログラムを分割して、分割プログラムを作成し、ＥＰＳ制御装置１０２ａと、バッテリ制御装置１０２ｂへそれぞれ送信する。
【００２２】
次に、第２種ノードとしてのＥＰＳ制御装置１０２ａの構成と機能について説明する。
マイコン１２１ａは、ＥＰＳ１２０ａの制御量や各種処理値を演算する。データ送受信部１２２ａは、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（モータ制御装置１０１、バッテリ制御装置１０２ｂ、テスタ１０３を含む）とデータの送受信を行う。記録装置１２３ａは、モータ制御プログラムの一部分である分割モータ制御プログラムを保存する第２の記録領域である分割モータ制御プログラム記録領域２３３ａを有している。
【００２３】
分割プログラム送信部１２４ａ（送信部）は、モータ制御装置１０１への分割プログラムの送信可否を判断する。分割プログラム送信部１２４ａにより、モータ制御装置１０１への分割プログラムの送信が可能であると判断された場合には、自ノードが第２の記録領域に保存する分割プログラムを、ＣＡＮネットワーク１０６を介してモータ制御装置１０１に送信する。
【００２４】
次に、第２種ノードとしてのバッテリ制御装置１０２ｂの構成と機能について簡単に説明する。
マイコン１２１ｂは、バッテリ１２０ｂの制御量や各種処理値を演算する。データ送受信部１２２ｂは、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（モータ制御装置１０１、ＥＰＳ制御装置１０２ａ、テスタ１０３を含む）とデータを送受信する。
記録装置１２３ｂは、モータ制御プログラムを分割した一部分である分割プログラムを保存する第２の記録領域である分割モータ制御プログラム記録領域２３３ｂを有している。
【００２５】
分割プログラム送信部１２４ｂ（送信部）は、モータ制御装置１０１への分割プログラムの送信可否を判断する。分割プログラム送信部１２４ｂにより、モータ制御装置１０１への分割プログラムの送信が可能であると判断された場合には、自ノードが第２の記録領域に保存する分割プログラムを、ＣＡＮネットワーク１０６を介してモータ制御装置１０１に送信する。
【００２６】
次に、第３種ノードとしてのテスタ１０３の構成と機能について簡単に説明する。
このテスタ１０３は、モータ制御プログラムの書き換え対象とするプログラム（以下、書き換えプログラムと略す。）を送信するものである。
マイコン１３１は、テスタ１０３の動作に関わる各種処理を実施する。データ送受信部１３２は、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（モータ制御装置１０１、ＥＰＳ制御装置１０２ａ、バッテリ制御装置１０２ｂを含む）とデータを送受信する。
記録装置１３３は、図２（ｄ）に示すように、書き換えプログラムを保存する第３の記録領域であるモータ制御プログラム記録領域２４１を備えている。
【００２７】
書き換え指示部１３４は、モータ制御装置１０１に対して、プログラムの書き換えを指示する。書き換えプログラム送信部１３５は、モータ制御装置１０１から書き換え可能の通知を受けたのちに、モータ制御プログラム記録領域２４１に記録している書き換えプログラムをモータ制御装置１０１に送信する。
テスタ１０３は、常時、ＣＡＮネットワーク１０６に接続されるものではなく、制御装置へのプログラムの書き換えや、診断を実施するときに接続するものである。
【００２８】
次に、動作について説明する。
ここでは、実施の形態１によるプログラム書き換えシステムの各ノードにおける処理の流れについて、図３〜図６のフローチャートを用いて説明する。
第１種ノードであるモータ制御装置１０１では、駆動用モータ１１０の制御に関わる通常の処理と、モータ制御プログラムの書き換えに関する処理が実施される。プログラム書き換えに関する処理の流れを図３に示し、テスタ１０３から書き換え実施の通知（書き換え指示）があった場合に実施される。
第１種ノードであるモータ制御装置１０１の書き換え前のプロラムに書戻す処理の流れは、図４に示している。
【００２９】
まず、図３により、第１種ノードのプログラム書き換え時の処理について説明する。
ステップＳ３０１において、状態検出部１１５は、テスタ１０３から書き換え指示が通知されているか否かを判断する。通知されている場合（ＹＥＳ）は、ステップＳ３０２へ進み、通知されていない場合（ＮＯ）は、通知されるまで待機する。
【００３０】
続いて、ステップＳ３０２において、状態検出部１１５は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能（ＹＥＳ）であるため、ステップＳ３０３へ進み、通常の処理が実施されている場合には、終了まで待機する。
【００３１】
ステップＳ３０３（第２のステップ）において、分割プログラム送信部１１６は、記録装置１１３に保存されたモータ制御プログラム記録領域２２２にあるモータ制御プログラムを分割して、分割プログラムを作成する。そして、データ送受信部１１２により、分割プログラムを第２種ノードであるバッテリ制御装置１０２ｂとＥＰＳ制御装置１０２ａへ送信する。
ここで、実施の形態１では、第２種ノードを２つ備えているため、書き換えプログラムを２つに分割して、分割プログラムＡと分割プログラムＢを作成し、分割プログラムＡをＥＰＳ制御装置１０２ａに、分割プログラムＢをバッテリ制御装置１０２ｂに送信するものとする。
すなわち、書き換えプログラムは、分割プログラムＡと分割プログラムの２つに分割される。
【００３２】
ステップＳ３０４において、モータ制御プログラムすべてを送信したかどうかを判断する。すべてを送信している場合（ＹＥＳ）は、ステップＳ３０５へ進み、送信していない場合は（ＮＯ）は、ステップＳ３０３に進み、再度、送信処理を実施する。
【００３３】
ステップＳ３０５において、状態検出部１１５は、モータ制御プログラムのすべてを送信したため、テスタ１０３に対して、書き換え可能を通知する。
【００３４】
ステップＳ３０６において、テスタ１０３からの書き換えプログラムの受信を待つ。書き換えプログラムを受信した場合（ＹＥＳ）は、ステップＳ３０７に進む。
【００３５】
ステップＳ３０７（第４のステップ）において、プログラム書き換え部１１４は、プログラム書き換え用プログラムを用いて、受信した書き換えプログラムに該当するモータ制御プログラムの部分を書き換え、ステップＳ３０８へ進む。
【００３６】
ステップＳ３０８において、状態検出部１１５は、すべての書き換えプログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。すべての書き換えプログラムを受信していない場合は（ＮＯ）、ステップＳ３０６へ進み、受信している場合は（ＹＥＳ）処理を終了する。
【００３７】
次に、図４を用いて、書き換え後の動作として、書き換えプログラムに書き換えたのち、書き換え前のプログラムに書戻す処理について説明する。
このとき、テスタ１０３は、ＣＡＮネットワーク１０６から取り外されているものとする。
ステップＳ３１１（第５のステップ）において、状態検出部１１５は、自身の処理に異常がないか否かを判断する。異常を検出した場合は（ＹＥＳ）、ステップＳ３１２へ進む。
【００３８】
ステップＳ３１２において、状態検出部１１５は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能（ＹＥＳ）であるため、ステップＳ３１３へ進み、通常の処理が実施されている場合には、終了するまで待機する。
【００３９】
ステップＳ３１３において、状態検出部１１５は、第２種ノードであるバッテリ制御装置１０２ｂとＥＰＳ制御装置１０２ａに対して、記録している分割プログラムの送信指示を通知する。
【００４０】
ステップＳ３１４において、バッテリ制御装置１０２ｂとＥＰＳ制御装置１０２ａからの分割プログラムの受信を待つ。分割プログラムを受信した場合（ＹＥＳ）は、ステップＳ３１５に進む。
【００４１】
ステップＳ３１５（第７のステップ）において、プログラム書き換え部１１４は、プログラム書き換え用プログラムを用いて、受信した分割プログラムに該当するモータ制御プログラムの部分を書き換え、ステップＳ３１６へ進む。
【００４２】
ステップＳ３１６において、すべての分割プログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。すべての分割プログラムを受信していない場合は（ＮＯ）、ステップＳ３１４へ進み、受信している場合は（ＹＥＳ）処理を終了する。
【００４３】
次に、第２種ノードであるＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂにおけるプログラム書き換えに関する処理の流れについて、図５を用いて説明する。
ＥＰＳ制御装置１０２ａ（またはバッテリ制御装置１０２ｂ）では、ＥＰＳ１２０ａ（またはバッテリ１２０ｂ）の制御に関わる通常の処理と、モータ制御装置１０１のプログラム書き換えに関する処理が実施される。
なお、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂにおけるプログラム書き換えに関する処理は、同じであるので、ここではＥＰＳ制御装置１０２ａを例に挙げて説明する。
【００４４】
ＥＰＳ制御装置１０２ａは、テスタ１０３から書き換え実施指示が通知された後、ステップＳ４０１において、モータ制御装置１０１からの分割プログラムの受信を待つ。データ送受信部１２２ａにより分割プログラムを受信した場合（ＹＥＳ）は、ステップＳ４０２へ進み、受信した分割プログラムを記録装置１２３ａの分割モータ制御プログラム記録領域２３３ａに保存し、ステップＳ４０３へ進む。
【００４５】
ステップＳ４０３において、ＥＰＳ制御装置１０２ａは、モータ制御装置１０１からの分割プログラムの送信指示の通知を待つ。送信指示が通知された場合（ＹＥＳ）は、ステップＳ４０５へ進み、送信指示が通知されていない場合（ＮＯ）は、ステップＳ４０４へ進む。
【００４６】
ステップＳ４０４において、分割プログラムの受信を確認する。データ送受信部１２２ａにより分割プログラムを受信した場合（ＹＥＳ）は、ステップＳ４０２へ進む。受信していない場合（ＮＯ）は、ステップＳ４０３へ進み、分割プログラムの送信指示を待つ。
【００４７】
ステップＳ４０５（第６のステップ）において、分割モータ制御プログラム記録領域２３３ａに保存した分割プログラムをモータ制御装置１０１へ送信し、ステップＳ４０６へ進む。
【００４８】
ステップＳ４０６において、保存した分割プログラムをすべて送信したかどうかを確認する。すべて送信している場合（ＹＥＳ）は処理を完了し、送信していない場合（ＮＯ）は、ステップＳ４０５へ進み、送信処理を実施する。
【００４９】
次に、第３種ノードであるテスタ１０３におけるプログラム書き換えに関する処理の流れについて、図６を用いて説明する。
テスタ１０３では、関連ノードへのプログラム書き換え実施の通知と、書き換えプログラムの送信処理を実施する。
【００５０】
まず、ステップＳ４１１（第１のステップ）において、書き換え指示部１３４は、モータ制御装置１０１、ＥＰＳ制御装置１０２ａ、バッテリ制御装置１０２ｂに対して、モータ制御装置１０１の書き換えを実施することを通知する。
【００５１】
次に、ステップＳ４１２において、書き換え指示部１３４は、モータ制御装置１０１から書き換え可能が通知されたかどうかを判断する。通知されている場合（ＹＥＳ）は、書き換え可能と判断し、ステップＳ４１３へ進む。通知されていない場合（ＮＯ）は、通知されるまで待機する。
【００５２】
次いで、ステップＳ４１３（第３のステップ）において、記録装置１３３のモータ制御プログラム記録領域２４１にあらかじめ記録されている書き換えプログラムをモータ制御装置１０１へ送信し、処理を終了する。
【００５３】
なお、本実施の形態１において、モータ制御装置１０１に分割プログラムを暗号化する暗号化部と復号化する復号化部を備え、暗号化部により暗号化した分割プログラムをＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂに送信し、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂでは、暗号化された分割プログラムを保存し、モータ制御装置１０１で、ＥＰＳ制御装置１０２ａまたはバッテリ制御装置１０２ｂから暗号化された分割プログラムを受信した際に、復号化部により分割プログラムを復号化するようにしても良い。
【００５４】
上記のような暗号化部と復号化部を備えることにより、ＣＡＮネットワーク１０６で第三者に解読される危険性、またはＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂに保存時に、第三者に解読される危険性を低減させることができ、プログラム書き換えを安全に実施することが可能となる。
【００５５】
以上説明したように、実施の形態１によるプログラム書き換えシステムでは、テスタ１０３からモータ制御装置１０１へプログラム書き換え実施を通知したときに、モータ制御装置１０１では、まず、これまでの制御に用いていたモータ制御プログラムから分割プログラムを作成し、ＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂそれぞれに送信する。
送信完了後に、モータ制御装置１０１は、テスタ１０３から受信する書き換えプログラムでモータ制御プログラムを書き換える。
その後、テスタ１０３がＣＡＮネットワーク１０６から分離され、モータ制御装置１０１は、書き換えたモータ制御プログラムで制御する。
そして、モータ制御装置１０１は、制御中に動作異常やセキュリティ上の脆弱性が検出された場合には、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂに通知し、通知を受けたＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂは、自身が保存する分割プログラムをそれぞれモータ制御装置１０１に送信し、モータ制御装置１０１は、分割プログラムを受信する度に、受信した分割プログラムで該当するモータ制御プログラムを書き換える。
【００５６】
実施の形態１によれば、モータ制御装置１０１のモータ制御プログラムを書き換えて、テスタ１０３をＣＡＮネットワーク１０６から分離したのちに、モータ制御装置１０１の動作に異常が有ったり、セキュリティ上の脆弱性が検出されたりした場合には、従来のようにテスタ１０３をＣＡＮネットワーク１０６につなぎ直して再度、書き換えプログラムを送信することなく、効率の良く書き換え前の制御プログラムに戻すことができ、問題のある制御プログラムを使い続けず、自動車の安全性を確保することができる。
【００５７】
また、モータ制御プログラムから分割プログラムを作成し、複数の第２種ノード（実施の形態１ではＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂの２つ）に保存するため、１つの第２種ノードに全ての書き換えプログラムを保存できるほどの大きな記録容量を設ける必要がなく、１つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【００５８】
実施の形態２．
図７は、この発明の実施の形態２によるプログラム書き換えシステムが適用される車両制御システムの構成を示すブロック図である。
図７において、実施の形態２によるプログラム書き換えシステムは、第１種ノードであるモータ制御装置１０１と、第２種ノードであるＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂと、第３種ノードであるテスタ１０３とを有する。
これらのノードは、車両のＣＡＮネットワーク１０６を介して、互いに通信可能に接続されている。
なお、第２種ノードとしては、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂとが示されているが、これに限らずに、さらに別のノードを含み得ることは言うまでもない。
【００５９】
第１種ノードとしてのモータ制御装置１０１は駆動用モータ１１０を制御し、同様にＥＰＳ制御装置１０２ａはＥＰＳ１２０ａを、バッテリ制御装置１０２ｂはバッテリ１２０ｂを、それぞれ制御するように接続されている。
なお、図７に示すテスタ１０３以外の制御装置は、常時、ＣＡＮネットワーク１０６に接続されているが、テスタ１０３は、ＣＡＮネットワーク１０６に常時、接続されるのではなく、プログラムの書き換え、各ノードの故障診断時など、必要に応じて随時、接続される。
各制御装置およびテスタの構成については後述する。
なお、図７において、各制御装置およびテスタは、図７に示す以外の構成物も備えているが、本実施の形態２に直接関係しないものについては図示を省略している。
【００６０】
図８は、この発明の実施の形態２によるプログラム書き換えシステムにおける第１〜第３種ノードの記録装置の領域構成を示すメモリマップ図である。
図８（ａ）は、モータ制御装置１０１の記録装置１１３の領域構成を示し、図８（ｂ）は、ＥＰＳ制御装置１０２ａの記録装置１２３ａの領域構成を示し、図８（ｃ）は、バッテリ制御装置１０２ｂの記録装置１２３ｂの領域構成を示し、図８（ｄ）は、テスタ１０３の記録装置１３３の領域構成を示している。
【００６１】
図８（ａ）において、記録装置１１３は、モータ制御プログラムを全体的もしくは部分的に書き換えるためのプログラム書き換え用プログラムを保存するプログラム書き換え用プログラム記録領域２２１と、モータ制御プログラムを保存する第１の記録領域であるモータ制御プログラム記録領域２２２と、駆動用モータ１１０の制御に関わるデータ等を保存するモータ制御プログラム用記録領域（データ用）２２３と、モータ制御プログラムを部分的に検証するためのプログラム検証用プログラムを保存するプログラム検証用プログラム記録領域６３４とを備えている。
【００６２】
図８（ｂ）において、記録装置１２３ａは、ＥＰＳ１２０ａの制御内容を決定するＥＰＳ制御プログラムを保存するＥＰＳ制御プログラム記録領域２３１ａと、ＥＰＳ１２０ａの制御に関わるデータ等を保存するＥＰＳ制御プログラム用記録領域（データ用）２３２ａと、後述する分割プログラムを一時的に保存する第２の記録領域およびチェックコードを一時的に保存する第４の記録領域である分割モータ制御プログラム記録領域５３３ａとを備えている。
なお、分割モータ制御プログラム記録領域５３３ａには、記録装置１２３ａの空き領域等を割り当てることができる。
【００６３】
図８（ｃ）において、記録装置１２３ｂは、バッテリ１２０ｂの制御内容を決定するバッテリ制御プログラムを保存するバッテリ制御プログラム記録領域２３１ｂと、バッテリ１２０ｂの制御に関わるデータ等が記録されるバッテリ制御プログラム用記録領域（データ用）２３２ｂと、後述する分割プログラムを一時的に保存する第２の記録領域およびチェックコードを一時的に保存する第４の記録領域である分割モータ制御プログラム記録領域５３３ｂを備えている。
なお、分割モータ制御プログラム記録領域５３３ｂには、記録装置１２３ｂの空き領域等を割り当てることができる。
【００６４】
図８（ｄ）において、記録装置１３３は、書き換えプログラムを保存する第３の記録領域であるモータ制御プログラム記録領域２４１を備えている。
【００６５】
次に、図７の各制御装置およびテスタの構成と機能について説明する。
まず、モータ制御装置１０１の構成と機能について簡単に説明する。
マイコン１１１は、駆動用モータ１１０の制御に関わる制御量や各種処理値を演算する。ＣＡＮネットワーク用データ送受信部であるデータ送受信部１１２は、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（ＥＰＳ制御装置１０２ａ、バッテリ制御装置１０２ｂ、テスタ１０３を含む）とデータを送受信する。
記録装置１１３は、書き換え対象であるモータ制御プログラムを保存する第１の記録領域を有している。このモータ制御プログラムは、モータ制御装置１０１の動作（制御内容）を決定し、演算を行うものである。
【００６６】
モータ制御装置１０１のプログラム書き換え部１１４は、記録装置１１３のモータ制御プログラム記録領域２２２に保存されたモータ制御プログラムを全体的もしくは部分的に書き換える。その際には、記録装置１１３のプログラム書き換え用プログラム記録領域２２１に記録されたプログラム書き換え用プログラムを用いる。
【００６７】
分割プログラムおよびチェックコード送信部５１２（チェックコード生成部を含む）は、記録装置１１３に保存されたモータ制御プログラム記録領域２２２にあるモータ制御プログラムを分割して、分割プログラムおよび分割したプログラムが変更されていないことを証明するチェックコードを作成する。
第２の状態検出部５１３は、第１種ノード自身が通常の処理が実施されているか否かにより、自身がモータ制御プログラムを書き換え可能な状態であるか否か、或いはモータ制御プログラムが全て書き換えられているか否かの状態を検出し、他の制御装置に通知する。
第２の状態検出部５１３により、書き換え可能であることが検出された場合は、ＣＡＮネットワーク１０６を介してＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂに通知する。
そして、この通知を受けたＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂは、自身が保存する分割プログラムおよび保存する分割プログラムが変更されていないことを証明するチェックコードを、ＣＡＮネットワーク１０６を介して、モータ制御装置１０１に送信する。
【００６８】
モータ制御装置１０１のプログラム検証部５１１は、記録装置１１３のプログラム検証用プログラム記録領域６３４に記録されたプログラム検証用プログラムを用いて、ＣＡＮネットワーク１０６上または他のノードで保存中に分割プログラムが壊れていないか否か（例えば、ノイズによるビット反転等）を、受信したチェックコードを用いて検証する。
【００６９】
モータ制御装置１０１は、ＥＰＳ制御装置１０２ａまたはバッテリ制御装置１０２ｂから分割プログラムを受信する度に、モータ制御プログラム記録領域２２２に保存されたモータ制御プログラムの該当する分割プログラムを、プログラム書き換え部１１４により書き換える。
また、チェックコードを受信する度に、プログラム検証部５１１により、対応する分割プログラムによって書き換えられた内容を検証する。
【００７０】
次に、第２種ノードとしてのＥＰＳ制御装置１０２ａの構成と機能について簡単に説明する。
マイコン１２１ａは、ＥＰＳ１２０ａの制御量や各種処理値を演算する。データ送受信部１２２ａは、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（モータ制御装置１０１、バッテリ制御装置１０２ｂ、テスタ１０３を含む）とデータの送受信を行う。
記録装置１２３ａは、モータ制御プログラムの書き換えプログラムの一部分である分割プログラム、および他の第２種ノードが保存する分割プログラムが変更されていないことを証明するチェックコードを保存する第２の記録領域・第４の記録領域として、分割モータ制御プログラム記録領域５３３ａを有している。
【００７１】
分割プログラムおよびチェックコード送信部５２１ａは、モータ制御装置１０１への分割プログラムおよびチェックコードの送信可否を判断する。
分割プログラム送信部１２４ａにより、モータ制御装置１０１への分割プログラムおよびチェックコードの送信が可能であると判断された場合には、自身が保存する分割プログラムおよびチェックコードを、ＣＡＮネットワーク１０６を介してモータ制御装置１０１に送信する。
【００７２】
第１種ノード状態検出部５２２ａは、モータ制御装置１０１に異常がないか否かの状態を検出する。異常を検出した場合は、ＣＡＮネットワーク１０６を介してモータ制御装置１０１とバッテリ制御装置１０２ｂに書き戻し指示を通知する。
第１種ノード状態検出部５２２ａにより異常を検出している、または、他の第２種ノードから書き戻し指示が通知されている場合、かつ、モータ制御装置１０１の第２の状態検出部５１３より、書き換え可能であることが通知された場合は、自身が保存する分割プログラムおよびチェックコードを、ＣＡＮネットワーク１０６を介して、モータ制御装置１０１に送信する。
ここで、モータ制御装置１０１の異常には、意図しない制御または処理が実施されたり、セキュリティ上の脆弱性があったりすることが挙げられるが、これに限るものではない。
【００７３】
次に、第２種ノードとしてのバッテリ制御装置１０２ｂの構成と機能について、簡単に説明する。
マイコン１２１ｂは、バッテリ１２０ｂの制御量や各種処理値を演算する。データ送受信部１２２ｂは、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（モータ制御装置１０１、ＥＰＳ制御装置１０２ａ、テスタ１０３を含む）とデータを送受信する。
記録装置１２３ｂは、モータ制御プログラムを分割した一部分である分割プログラムおよび他の制御装置が保存する分割プログラムが変更されていないことを証明するチェックコードを保存する第２の記録領域・第４の記録領域として、分割モータ制御プログラム記録領域５３３ｂを有している。
【００７４】
分割プログラムおよびチェックコード送信部５２１ｂは、モータ制御装置１０１への分割プログラムおよびチェックコードの送信可否を判断する。
分割プログラムおよびチェックコード送信部５２１ｂにより、モータ制御装置１０１への分割プログラムおよびチェックコードの送信が可能であると判断された場合には、自ノードが保存する分割プログラムおよびチェックコードを、ＣＡＮネットワーク１０６を介してモータ制御装置１０１に送信する。
【００７５】
第１種ノード状態検出部５２２ｂは、モータ制御装置１０１に異常がないか否かの状態を検出する。異常を検出した場合は、ＣＡＮネットワーク１０６を介して、モータ制御装置１０１とＥＰＳ制御装置１０２ａに書き戻し指示を通知する。
第１種ノード状態検出部５２２ｂにより異常を検出している、または、他の第２種ノードから書き戻し指示が通知されている場合、かつ、モータ制御装置１０１の第２の状態検出部５１３より書き換え可能であることが通知された場合は、自身が保存する分割プログラムおよびチェックコードを、ＣＡＮネットワーク１０６を介してモータ制御装置１０１に送信する。
ここで、モータ制御装置１０１の異常とは、意図しない制御または処理が実施されたり、セキュリティ上の脆弱性があったりすることが挙げられるが、これに限るものではない。
【００７６】
次に、第３種ノードとしてのテスタ１０３の構成と機能について簡単に説明する。このテスタ１０３は、書き換えプログラムを送信するものである。
マイコン１３１は、テスタ１０３の動作に関わる各種処理を実施する。データ送受信部１３２は、ＣＡＮネットワーク１０６を介して、接続された他の制御装置（モータ制御装置１０１、ＥＰＳ制御装置１０２ａ、バッテリ制御装置１０２ｂを含む）とデータを送受信する。
記録装置１３３は、図８（ｄ）に示すように、書き換えプログラムを保存する第３の記録領域であるモータ制御プログラム記録領域２４１を備えている。
【００７７】
書き換え指示部１３４は、モータ制御装置１０１に対して、プログラムの書き換えを指示する。書き換えプログラム送信部１３５は、モータ制御装置１０１から書き換え可能の通知を受けたのちに、モータ制御プログラム記録領域２４１に記録している書き換えプログラムをモータ制御装置１０１に送信する。
テスタ１０３は、常時、ＣＡＮネットワーク１０６に接続されるものではなく、制御装置へのプログラムの書き換えや、診断を実施するときに接続されるものである。
【００７８】
次に、動作について説明する。
ここでは、実施の形態２によるプログラム書き換えシステムの各ノードにおける処理の流れについて、図９〜図１２のフローチャートを用いて説明する。
第１種ノードであるモータ制御装置１０１では、駆動用モータ１１０の制御に関わる通常の処理と、モータ制御プログラムの書き換えに関する処理が実施される。プログラム書き換えに関する処理は、図９に示し、テスタ１０３から書き換え実施の通知（書き換え指示）があった場合に実施される。
第１種ノードであるモータ制御装置１０１における書き換え前のプロラムに書戻す処理は、図１０に示している。
【００７９】
まず、図９により、第１種ノードのプログラム書き換え時の処理について説明する。
ステップＳ７０１において、第２の状態検出部５１３は、テスタ１０３から書き換え指示が通知されているか否かを判断する。通知されている場合（ＹＥＳ）は、ステップＳ７０２へ進み、通知されていない場合（ＮＯ）は、通知されるまで待機する。
【００８０】
続いて、ステップＳ７０２において、第２の状態検出部５１３は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能（ＹＥＳ）であるため、ステップＳ７０３へ進み、通常の処理が実施されている場合には、終了まで待機する。
【００８１】
ステップＳ７０３において、分割プログラムおよびチェックコード送信部５１２は、記録装置１１３に保存されたモータ制御プログラム記録領域２２２にあるモータ制御プログラムを分割して、分割プログラムおよび分割したプログラムが変更されていないことを証明するチェックコードを作成する。
そして、データ送受信部１１２により、分割プログラムおよびチェックコードを第２種ノードであるバッテリ制御装置１０２ｂとＥＰＳ制御装置１０２ａへ送信する。
ここで、実施の形態２では、第２種ノードを２つ備えているため、書き換えプログラムを２つに分割し、分割プログラムＡと分割プログラムＢを作成するとともに、分割プログラムＡと分割プログラムＢのそれぞれに対応するチェックコードＡとチェックコードＢを作成し、分割プログラムＡとチェックコードＢをＥＰＳ制御装置１０２ａに、分割プログラムＢとチェックコードＡをバッテリ制御装置１０２ｂへといったように、分割プログラムとチェックコードを異なる制御装置に送信するものとする。
【００８２】
ステップＳ７０４において、モータ制御プログラムから作成した分割プログラムおよびチェックコードのすべてを送信したかどうかを判断する。すべてを送信している場合（ＹＥＳ）は、ステップＳ７０５へ進み、送信していない場合は（ＮＯ）は、ステップＳ７０３に進み、再度、送信処理を実施する。
【００８３】
ステップＳ７０５において、第２の状態検出部５１３は、モータ制御プログラムすべてを送信したため、テスタ１０３に対して書き換え可能を通知する。
【００８４】
ステップＳ７０６において、テスタ１０３からの書き換えプログラムの受信を待つ。書き換えプログラムを受信した場合（ＹＥＳ）は、ステップＳ７０７に進む。
【００８５】
ステップＳ７０７において、プログラム書き換え部１１４は、プログラム書き換え用プログラムを用いて、受信した書き換えプログラムに該当するモータ制御プログラムの部分を書き換え、ステップＳ７０８へ進む。
【００８６】
ステップＳ７０８において、第２の状態検出部５１３は、すべての書き換えプログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。受信してない場合は（ＮＯ）、ステップＳ７０６へ進み、受信している場合は（ＹＥＳ）処理を終了する。
【００８７】
次に、図１０を用いて、モータ制御装置１０１において、書き換えプログラムに書き換えたのち、書き換え前のプロラムに書戻す処理について説明する。
この時、テスタ１０３は、ＣＡＮネットワーク１０６から取り外されているものとする。
ステップＳ７１１において、第２の状態検出部５１３は、第２種ノード（ここでは、ＥＰＳ制御装置１０２ａまたはバッテリ制御装置１０２ｂ）から書き戻し指示を通知されているか否かを判断する。通知されている場合（ＹＥＳ）は、ステップＳ７１２へ進み、通知されていない場合（ＮＯ）は、受信するまで待機する。
【００８８】
ステップＳ７１２において、第２の状態検出部５１３は、通常の処理が実施されているか否かを判断し、通常の処理が実施されていなければ、書き換え可能（ＹＥＳ）であるため、ステップＳ７１３へ進み、通常の処理が実施されている場合は、終了まで待機する。
【００８９】
ステップＳ７１３において、第２の状態検出部５１３は、第２種ノードであるバッテリ制御装置１０２ｂとＥＰＳ制御装置１０２ａに対して、記録している分割プログラムおよびチェックコードの送信指示を通知する。
【００９０】
ステップＳ７１４において、バッテリ制御装置１０２ｂとＥＰＳ制御装置１０２ａからの分割プログラムおよびチェックコードの受信を待つ。分割プログラムまたはチェックコードを受信した場合（ＹＥＳ）は、ステップＳ７１５に進む。
【００９１】
ステップＳ７１５において、受信した内容を確認する。分割プログラムであれば、ステップＳ７１６へ進み、チェックコードであれば、ステップＳ７１７へ進む。
ステップＳ７１６において、プログラム書き換え部１１４は、プログラム書き換え用プログラムを用いて、受信した分割プログラムに該当するモータ制御プログラムの部分を書き換え、ステップＳ７１９へ進む。
【００９２】
ステップＳ７１７において、プログラム検証部５１１は、プログラム検証用プログラムを用い、受信したチェックコードに該当するモータ制御プログラムの部分を検証する。
ステップＳ７１８において、検証結果に対する問題の有無を判断し、問題がない場合（ＹＥＳ）は、ステップＳ７１９へ進み、問題がある場合（ＮＯ）は、書き戻し処理を終了する。
【００９３】
ステップＳ７１９において、すべての分割プログラムを受信し、該当するモータ制御プログラムの部分を書き換えたか否かを判断する。すべてを受信していない場合は（ＮＯ）、ステップＳ７１４へ進み、受信している場合は（ＹＥＳ）、処理を終了する。
【００９４】
次に、第２種ノードであるＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂにおけるプログラム書き換えに関する処理の流れについて、図１１を用いて説明する。
ＥＰＳ制御装置１０２ａ（またはバッテリ制御装置１０２ｂ）では、ＥＰＳ１２０ａ（またはバッテリ１２０ｂ）の制御に関わる通常の処理と、モータ制御装置１０１のプログラム書き換えに関する処理が実施される。
なお、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂにおけるプログラム書き換えに関する処理は、同じであるので、ここでは、ＥＰＳ制御装置１０２ａを例に挙げて説明する。
【００９５】
ＥＰＳ制御装置１０２ａは、テスタ１０３から書き換え実施指示が通知された後、ステップＳ８０１において、分割プログラムまたはチェックコードの受信を待つ。データ送受信部１２２ａにより、分割プログラムまたはチェックコードを受信した場合（ＹＥＳ）は、ステップＳ８０２へ進み、受信した分割プログラムまたはチェックコードを記録装置１２３ａの分割モータ制御プログラム記録領域５３３ａに保存し、ステップＳ８０３へ進む。
【００９６】
ステップＳ８０３（第５のステップ）において、ＥＰＳ制御装置１０２ａの第１種ノード状態検出部５２２ａは、モータ制御装置１０１に異常がないか否かを判断する。モータ制御装置１０１の異常を検出した場合（ＹＥＳ）は、ステップＳ８０６へ進み、異常を検出していない場合（ＮＯ）は、ステップＳ８０４へ進む。
【００９７】
ステップＳ８０４において、ＥＰＳ制御装置１０２ａは、他の第２種ノード（ここでは、バッテリ制御装置１０２ｂ）からモータ制御装置１０１へ書き戻し指示が通知されているか否かを判断する。通知されている場合（ＹＥＳ）は、ステップＳ８０７へ進み、通知されていない場合（ＮＯ）は、ステップＳ８０５へ進む。
【００９８】
ステップＳ８０５において、データ送受信部１２２ａにより、分割プログラムまたはチェックコードを受信しているかどうかを確認する。受信している場合（ＹＥＳ）は、ステップＳ８０２へ進み、受信していない場合（ＮＯ）は、ステップＳ８０３へ進む。
【００９９】
ステップＳ８０６において、ＥＰＳ制御装置１０２ａは、他の第２種ノード（ここでは、バッテリ制御装置１０２ｂ）とモータ制御装置１０１へ書き戻し指示を通知し、ステップＳ８０７へ進む。
【０１００】
ステップＳ８０７において、ＥＰＳ制御装置１０２ａは、モータ制御装置１０１からの分割プログラムおよびチェックコードの送信指示を待つ。送信指示が通知されている場合（ＹＥＳ）は、ステップＳ８０８へ進み、送信指示が通知されていない場合（ＮＯ）は、通知されるまで待機する。
【０１０１】
ステップＳ８０８において、分割モータ制御プログラム記録領域５３３ａに保存された分割プログラムおよびチェックコードをモータ制御装置１０１へ送信し、ステップＳ８０９へ進む。
【０１０２】
ステップＳ８０９において、保存した分割プログラムおよびチェックコードをすべて送信したかどうかを確認する。
すべて送信している場合（ＹＥＳ）は、処理を完了し、送信していない場合（ＮＯ）は、ステップＳ８０８へ進み、送信処理を実施する。
【０１０３】
次に、第３種ノードであるテスタ１０３におけるプログラム書き換えに関する処理の流れについて、図１２を用いて説明する。
テスタ１０３では、関連ノードへのプログラム書き換え実施の通知と、書き換えプログラムの送信処理を実施する。
まず、ステップＳ８１１において、書き換え指示部１３４は、モータ制御装置１０１、ＥＰＳ制御装置１０２ａ、バッテリ制御装置１０２ｂに対して、モータ制御装置１０１の書き換えを実施することを通知する。
【０１０４】
次に、ステップＳ８１２において、書き換え指示部１３４は、モータ制御装置１０１から書き換え可能が通知されたかどうかを判断する。通知されている場合（ＹＥＳ）は、書き換え可能と判断し、ステップＳ８１３へ進む。通知されていない場合（ＮＯ）は、通知されるまで待機する。
【０１０５】
ステップＳ８１３においては、記録装置１３３のモータ制御プログラム記録領域２４１にあらかじめ記録されている書き換えプログラムをモータ制御装置１０１へ送信し、処理を終了する。
【０１０６】
なお、本実施の形態２において、モータ制御装置１０１に、分割プログラムおよびチェックコードを暗号化する暗号化部と復号化する復号化部を備え、暗号化部により暗号化した分割プログラムおよびチェックコードをＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂに送信し、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂでは、暗号化された分割プログラムおよびチェックコードを保存し、モータ制御装置１０１で、ＥＰＳ制御装置１０２ａまたはバッテリ制御装置１０２ｂから暗号化された分割プログラムおよびチェックコードを受信した際に、復号化部により分割プログラムを復号化するようにしても良い。
【０１０７】
上記のような暗号化部と復号化部を備えることにより、ＣＡＮネットワーク１０６で第三者に解読される危険性、またはＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂでの保存時に第三者に解読される危険性を低減させることができ、プログラム書き換えを安全に実施することが可能となる。
【０１０８】
以上のような処理の流れを持つ、実施の形態２によるプログラム書き換えシステムでは、テスタ１０３からモータ制御装置１０１へプログラム書き換え実施を通知したときに、モータ制御装置１０１では、まず、これまでの制御に用いていたモータ制御プログラムから、分割プログラムを作成するとともに、分割したプログラムが変更されていないことを証明するチェックコードを作成し、ＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂにそれぞれ送信する。
送信完了後に、モータ制御装置１０１は、テスタ１０３から送信される書き換えプログラムで、モータ制御プログラムを書き換える。
その後、テスタ１０３がＣＡＮネットワーク１０６から分離され、モータ制御装置１０１は、書き換えたモータ制御プログラムで制御する。
そして、ＥＰＳ制御装置１０２ａまたはバッテリ制御装置１０２ｂが、書き換えたモータ制御プログラムによるモータ制御装置１０１の動作異常やセキュリティ上の脆弱性が検出された場合には、他の第２種ノードとモータ制御装置１０１に通知する。
【０１０９】
これにより、ＥＰＳ制御装置１０２ａとバッテリ制御装置１０２ｂは、自身が保存する分割プログラムおよびチェックコードをそれぞれモータ制御装置１０１に送信し、モータ制御装置１０１は、分割プログラムを受信する度に、受信した分割プログラムに該当するモータ制御プログラムの部分を書き換え、チェックコードを受信する度に、該当するモータ制御プログラムの部分を検証するものである。
【０１１０】
実施の形態２のプログラム書き換えシステムによれば、モータ制御装置１０１のモータ制御プログラムを書き換えて、テスタ１０３をＣＡＮネットワーク１０６から分離したのちに、モータ制御装置１０１の動作に異常が有ったり、セキュリティ上の脆弱性が検出されたりした場合にも、テスタ１０３をＣＡＮネットワーク１０６につなぎ直して再度、書き換えプログラムを送信する必要がなく、効率の良く書き換え前の制御プログラムに戻し、かつ検証することができ、モータ制御装置１０１は、問題のある制御プログラムを使い続けず、自動車の安全性を確保することができる。
【０１１１】
また、モータ制御プログラムから分割プログラムを作成し、複数の第２種ノード（本実施の形態２では、ＥＰＳ制御装置１０２ａおよびバッテリ制御装置１０２ｂの２つ）に保存するため、１つの第２種ノードに全ての書き換えプログラムを保存できるほどの大きな記録容量を設ける必要がなく、１つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【０１１２】
なお、上述の実施の形態１と実施の形態２では、２つの第２種ノードを備えた車両制御システムを例に挙げて説明したが、第２種ノードの数はこれに限定されるものではない。
第２種ノードの数を増やすことにより、各分割プログラムの容量を低減することができ、各第２種ノードに必要となる記録容量を抑えることができる。
【０１１３】
また、各ノードが接続されるネットワークとしてＣＡＮネットワーク１０６を例に挙げて説明したが、ネットワークの種類はこれに限るものではない。
また、テスタは、ＣＡＮネットワーク１０６を介さずに、直接、モータ制御装置１０１に接続する場合でも同様の効果が得られる。
【０１１４】
また、上述の実施の形態１と実施の形態２では、第１種ノードのプログラム書き換えが成功することを前提として説明したが、検証結果により問題があり、書き換えが失敗した場合や、何らかの理由で書き換えが失敗した場合に備えて、第１種ノードにタイムアウト時間等を設定しておき、所定時間が経過しても書き換えプログラムまたは、分割プログラムを受信できない場合や、書き換えが終了しない場合には、書き換え処理を強制的に終了させるようにしても良い。
【０１１５】
ただし、書き換え処理を途中で終了させる場合には、関連ノードに故障状況を示す一意のコードを記録しておく等の対応策を併せて用意しておく必要がある。
【０１１６】
また、上述の実施の形態２では、分割プログラムに対応するチェックコードが届くことを前提として説明したが、チェックコードか届かない時は、ＣＡＮネットワーク１０６もしくは、該当する第２種ノードに異常があると判断することができ、早期に書き換えを中止することができる。
【０１１７】
また、上述の実施の形態２では、チェックコードにより、分割したプログラムが変更されていないことを証明できることを前提に説明したが、チェックコードとして、変更時に訂正できるチェックコード（例えば、Ｅｒｒｏｒ−Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を用いれば、問題発生時に分割プログラムを修復させることもできる。
【０１１８】
なお、この発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【産業上の利用可能性】
【０１１９】
この発明は、ネットワークに接続された複数の制御装置を含むシステム（例えば車両制御システム）におけるプログラムの書き換えに利用することができる。
【符号の説明】
【０１２０】
１０１  モータ制御装置（第１種ノード）、１０２ａ  ＥＰＳ制御装置（第２種ノード）、
１０２ｂ  バッテリ制御装置（第２種ノード）、１０３  テスタ（第３種ノード）、
１０６  ＣＡＮネットワーク、１１０  駆動用モータ、
１１１、１２１ａ、１２１ｂ、１３１  マイコン、
１１２、１２２ａ、１２２ｂ、１３２  データ送受信部、
１１３、１２３ａ、１２３ｂ、１３３  記録装置、
１１４  プログラム書き換え部、１１５  状態検出部、１１６  分割プログラム送信部、
１２０ａ  ＥＰＳ、１２０ｂ  バッテリ、
１２４ａ、１２４ｂ  分割プログラム送信部、１３４  書き換え指示部、
１３５  書き換えプログラム送信部、５１１  プログラム検証部、
５１２  分割プログラムおよびチェックコード送信部、５１３  第２の状態検出部、
５２１ａ、５２１ｂ  分割プログラムおよびチェックコード送信部、
５２２ａ、５２２ｂ  第１種ノード状態検出部
【図１】
2017191529.tif 000003
【図２】
2017191529.tif 000004
【図３】
2017191529.tif 000005
【図４】
2017191529.tif 000006
【図５】
2017191529.tif 000007
【図６】
2017191529.tif 000008
【図７】
2017191529.tif 000009
【図８】
2017191529.tif 000010
【図９】
2017191529.tif 000011
【図１０】
2017191529.tif 000012
【図１１】
2017191529.tif 000013
【図１２】
2017191529.tif 000014
【手続補正書】
【提出日】平成29年3月13日(2017.3.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１種ノードおよび複数の第２種ノードが通信可能にネットワークに接続され、上記ネットワークに随時接続される第３種ノードから送信される書き換えプログラムによって上記第１種ノードのプログラムを書き換えるプログラム書き換えシステムであって、
上記第１種ノードは、
上記プログラムを保存する第１の記録領域と、
この第１の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に上記第２種ノードに送信する分割プログラム送信部と、
上記第３種ノードから受信した上記書き換えプログラムによって、上記第１の記録領域の上記プログラムを書き換えるプログラム書き換え部とを有し、
上記第２種ノードは、
上記第１種ノードから受信した上記分割プログラムを保存する第２の記録領域と、
この第２の記録領域に保存された上記分割プログラムを上記第１種ノードに送信する送信部と、
上記第１種ノードの状態を検出する第１種ノード状態検出部とを有し、
上記第３種ノードは、
上記書き換えプログラムを保存する第３の記録領域と、
上記第１種ノードへの書き換えを指示する書き換え指示部と、
上記書き換えプログラムを上記第１種ノードに送信する書き換えプログラム送信部とを有し、
上記第１種ノードのプログラム書き換え部は、上記第３種ノードから書き換え指示を受信した場合に、上記分割プログラムを上記第２種ノードに送信したのち、上記第３種ノードから受信した上記書き換えプログラムによって上記プログラムを書き換え、
上記第２種ノードは、
上記プログラム書き換え部によって上記プログラムが書き換えられたのちに、上記第１種ノード状態検出部によって上記第１種ノードの異常が検出された場合に、上記第１種ノードおよび他の第２種ノードに通知するとともに、自ノードが保存する分割プログラムを上記第１種ノードに送信し、
上記通知を受けた他の第２種ノードは、自ノードが保存する分割プログラムを上記第１種ノードに送信し、
上記第１種ノードは、各第２種ノードより受信した上記分割プログラムにより、上記第１の記録領域のプログラムの該当部分を書き換えることを特徴とするプログラム書き換えシステム。
【請求項２】
上記第１種ノードは、上記分割プログラムを暗号化する暗号化部と、
上記第２種ノードから受信した上記分割プログラムを復号化する復号化部とを有し、
上記分割プログラムを暗号化してから上記第２種ノードに送信し、第２種ノードから受信した上記分割プログラムを復号化してから、上記第１の記録領域の上記プログラムの該当部分を書き換えることを特徴とする請求項１に記載のプログラム書き換えシステム。
【請求項３】
上記第１種ノードは、上記分割プログラムの生成時に上記分割プログラムを検証するためのチェックコードを生成するチェックコード生成部を有し、
このチェックコード生成部により生成されたチェックコードを上記第２種ノードに送信し、
上記第２種ノードは、上記第１種ノードから受信したチェックコードを保存する第４の記録領域を有し、
上記分割プログラムの第１種ノードへの送信時に、上記第４の記録領域に保存されているチェックコードを第１種ノードに送信し、
上記第１種ノードは、上記第２種ノードから受信した上記分割プログラムおよび上記チェックコードから、上記分割プログラムが変更されていないことを検証した後、この分割プログラムにより、上記第１の記録領域の上記プログラムの該当部分を書き換えることを特徴とする請求項１または請求項２に記載のプログラム書き換えシステム。
【請求項４】
第３種ノードが、ネットワークを介して第１種ノードに、上記第１種ノードのプログラムの書き換え指示を送信する第１のステップ、
上記書き換え指示の受信に応じて、上記第１種ノードが上記プログラムを分割し、各分割プログラムを各別に複数の第２種ノードに上記ネットワークを介して送信する第２のステップ、
上記第３種ノードが、上記プログラムを書き換えるための書き換えプログラムを上記第１種ノードに送信する第３のステップ、
上記第１種ノードが、上記プログラムを、上記第３のステップで送信された書き換えプログラムによって書き換える第４のステップ、
上記第４のステップで上記プログラムを書き換えたのちに、上記第２種ノードが、上記第１種ノードの動作の異常を検出する第５のステップ、
この第５のステップにより異常が検出された場合に、上記各第２種ノードがそれぞれ保存している上記分割プログラムを上記第１種ノードに送信する第６のステップ、
および上記第１種ノードが、上記第６のステップにより送信された分割プログラムにより、上記第４のステップで書き換えたプログラムの該当部分を、書き換える第７のステップを含むことを特徴とするプログラム書き換え方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
この発明に係わるプログラム書き換えシステムにおいては、第１種ノードおよび複数の第２種ノードが通信可能にネットワークに接続され、ネットワークに随時接続される第３種ノードから送信される書き換えプログラムによって第１種ノードのプログラムを書き換えるプログラム書き換えシステムであって、第１種ノードは、プログラムを保存する第１の記録領域と、この第１の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に第２種ノードに送信する分割プログラム送信部と、第３種ノードから受信した書き換えプログラムによって、第１の記録領域のプログラムを書き換えるプログラム書き換え部とを有し、第２種ノードは、第１種ノードから受信した分割プログラムを保存する第２の記録領域と、この第２の記録領域に保存された分割プログラムを第１種ノードに送信する送信部と、第１種ノードの状態を検出する第１種ノード状態検出部とを有し、第３種ノードは、書き換えプログラムを保存する第３の記録領域と、第１種ノードへの書き換えを指示する書き換え指示部と、書き換えプログラムを第１種ノードに送信する書き換えプログラム送信部とを有し、第１種ノードのプログラム書き換え部は、第３種ノードから書き換え指示を受信した場合に、分割プログラムを第２種ノードに送信したのち、第３種ノードから受信した書き換えプログラムによってプログラムを書き換え、第２種ノードは、プログラム書き換え部によってプログラムが書き換えられたのちに、第１種ノード状態検出部によって第１種ノードの異常が検出された場合に、第１種ノードおよび他の第２種ノードに通知するとともに、自ノードが保存する分割プログラムを第１種ノードに送信し、通知を受けた他の第２種ノードは、自ノードが保存する分割プログラムを第１種ノードに送信し、第１種ノードは、各第２種ノードより受信した分割プログラムにより、第１の記録領域のプログラムの該当部分を書き換えるものである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
この発明によれば、第１種ノードおよび複数の第２種ノードが通信可能にネットワークに接続され、ネットワークに随時接続される第３種ノードから送信される書き換えプログラムによって第１種ノードのプログラムを書き換えるプログラム書き換えシステムであって、第１種ノードは、プログラムを保存する第１の記録領域と、この第１の記録領域に保存されているプログラムを複数に分割し、各分割プログラムを各別に第２種ノードに送信する分割プログラム送信部と、第３種ノードから受信した書き換えプログラムによって、第１の記録領域のプログラムを書き換えるプログラム書き換え部とを有し、第２種ノードは、第１種ノードから受信した分割プログラムを保存する第２の記録領域と、この第２の記録領域に保存された分割プログラムを第１種ノードに送信する送信部と、第１種ノードの状態を検出する第１種ノード状態検出部とを有し、第３種ノードは、書き換えプログラムを保存する第３の記録領域と、第１種ノードへの書き換えを指示する書き換え指示部と、書き換えプログラムを第１種ノードに送信する書き換えプログラム送信部とを有し、第１種ノードのプログラム書き換え部は、第３種ノードから書き換え指示を受信した場合に、分割プログラムを第２種ノードに送信したのち、第３種ノードから受信した書き換えプログラムによってプログラムを書き換え、第２種ノードは、プログラム書き換え部によってプログラムが書き換えられたのちに、第１種ノード状態検出部によって第１種ノードの異常が検出された場合に、第１種ノードおよび他の第２種ノードに通知するとともに、自ノードが保存する分割プログラムを第１種ノードに送信し、通知を受けた他の第２種ノードは、自ノードが保存する分割プログラムを第１種ノードに送信し、第１種ノードは、各第２種ノードより受信した分割プログラムにより、第１の記録領域のプログラムの該当部分を書き換えるので、書き換えたのちのプログラムに問題があった場合に、第２種ノードから簡単に書き換え前のプロラムに戻すことができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
次に、図４を用いて、書き換え後の動作として、書き換えプログラムに書き換えたのち、書き換え前のプログラムに書戻す処理について説明する。
このとき、テスタ１０３は、ＣＡＮネットワーク１０６から取り外されているものとする。
ステップＳ３１１において、状態検出部１１５は、自身の処理に異常がないか否かを判断する。異常を検出した場合は（ＹＥＳ）、ステップＳ３１２へ進む。