(57)【特許請求の範囲】
【請求項１】
車両の制御処理を実施する制御部と、
前記制御処理を指定する処理ＩＤを算出する処理ＩＤ算出部と、
前記処理ＩＤ算出部が前記処理ＩＤを算出するために用いる鍵識別子を前記処理ＩＤ毎に格納する鍵識別子記憶部と、
を備え、
前記処理ＩＤ算出部は、
前記制御部が前記制御処理に対する呼び出しを受け取る際に前記鍵識別子を併せて受け取り、その鍵識別子を用いて前記処理ＩＤを算出し、
前記制御部は、
前記処理ＩＤ算出部が算出した前記処理ＩＤに対応する前記鍵識別子を前記鍵識別子記憶部から読み出し、
前記鍵識別子記憶部から読み出した前記鍵識別子と、前記制御処理に対する呼び出しを受け取る際に受け取った前記鍵識別子とが一致する場合は、前記処理ＩＤ算出部が算出した前記処理ＩＤに対応する前記制御処理を実施し、一致しない場合は実施しない
ことを特徴とする車両制御装置。
【請求項２】
前記制御処理において用いる制御パラメータを前記処理ＩＤ毎に格納する制御パラメータ記憶部を備え、
前記制御部は、
前記処理ＩＤ算出部が算出した前記処理ＩＤに対応する前記制御パラメータを前記制御パラメータ記憶部から読み出し、その制御パラメータを用いて前記制御処理を実施する
ことを特徴とする請求項１記載の車両制御装置。
【請求項３】
前記制御パラメータ記憶部は、
前記制御処理において用いる変数が正常であるか否かを判定するために用いる閾値を前記制御パラメータとして格納しており、
前記制御部は、
前記処理ＩＤ算出部が算出した前記処理ＩＤに対応する前記閾値を前記制御パラメータ記憶部から読み出し、その閾値を用いて、前記変数が正常であるか否かを判定する
ことを特徴とする請求項２記載の車両制御装置。
【請求項４】
前記制御処理毎に固有の固有識別子を格納する固有識別子記憶部を備え、
前記処理ＩＤ算出部は、
前記制御部が前記制御処理に対する呼び出しを受け取る際に受け取った前記鍵識別子と、前記固有識別子記憶部が格納している前記固有識別子とを用いて、前記処理ＩＤを算出する
ことを特徴とする請求項１記載の車両制御装置。
【請求項５】
前記固有識別子は、前記制御処理を記述した制御プログラム毎に固有な値を有する
ことを特徴とする請求項４記載の車両制御装置。
【請求項６】
前記固有識別子は、前記車両制御装置毎に固有な値を有する
ことを特徴とする請求項４記載の車両制御装置。
【請求項７】
前記制御部は、
前記制御処理を実施する前に、前記鍵識別子記憶部から読み出した前記鍵識別子と、前記制御処理に対する呼び出しを受け取る際に受け取った前記鍵識別子とが一致するか否かを検証し、さらに、
前記制御処理を実施している間にも、前記鍵識別子記憶部から読み出した前記鍵識別子と、前記制御処理に対する呼び出しを受け取る際に受け取った前記鍵識別子とが一致するか否かを検証する
ことを特徴とする請求項１記載の車両制御装置。
【請求項８】
前記制御部は、
前記制御処理内で異常が発生したときは、前記固有識別子を上位装置に通知する
ことを特徴とする請求項４記載の車両制御装置。
【請求項９】
前記制御部は、
前記制御処理内で異常が発生したときは、前記制御処理に対する呼び出しを受け取る際に受け取った前記鍵識別子を上位装置に通知する
ことを特徴とする請求項１記載の車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両制御装置に関する。
【背景技術】
【０００２】
自動車のエンジン制御装置は、クランク角センサ信号などの入力に基づき、燃料量や噴射タイミングを制御する。また、ブレーキ制御装置は、ブレーキペダル、車速、車両状態などの入力に基づき、ブレーキを制御する。
【０００３】
車両が高機能化するにともなって、車両の安全性に対する要求が高まり、自動車制御の分野では、様々な安全規格が検討されている。安全性の確保に関しては、デバイスの異常の有無を監視し、異常を検出したときは、車両が危険な状態に至る前に、そのデバイスに関わる機能を一部または全部停止し、車両の安全を確保するのが一般的である。
【０００４】
車両制御装置は、マイコンが実行するソフトウェアによって制御処理を実施する。そのため、制御ソフトウェアに対する安全性が求められている。下記特許文献１には、制御ソフトウェアの監視に関して、特定の許可した装置のみが制御ソフトウェアを実行することを許可する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−２４４５８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載されている技術では、固有情報や暗号鍵を用いて、制御ソフトウェアの実行可否を判定している。しかし、このような手法を実装すると、メモリ容量を比較的多く消費する。車両制御装置は一般に、搭載するメモリ容量に対する制約が大きいため、メモリ容量を多く消費するような手法は望ましくない。
【０００７】
本発明は、上記のような課題を解決するためになされたものであり、メモリ容量の消費を抑えつつ、制御ソフトウェアの不正実行を防止することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る車両制御装置は、制御処理を指定する処理ＩＤ毎に鍵識別子を保持しており、制御処理を呼び出す際に指定された鍵識別子を用いて処理ＩＤを算出し、その処理ＩＤに対応する鍵識別子と、制御処理を呼び出す際に指定された鍵識別子とが一致する場合に限り、その制御処理を実施する。
【発明の効果】
【０００９】
本発明に係る車両制御装置によれば、暗号鍵などの複雑な手法を用いることなく、制御ソフトウェアの不正実行を防止することができる。これにより、メモリ使用容量を抑えつつ、車両制御装置の安全性を高めることができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る車両制御装置１００の構成図である。
【図２】フラッシュＲＯＭ１１２が格納するデータを示す図である。
【図３】ＲＡＭ１１３が格納するデータを示す図である。
【図４】フラッシュＲＯＭ１１２とＲＡＭ１１３が格納している各データの詳細を示す図である。
【図５】ＣＰＵ１１１が制御プログラム１１２１を実行する処理フローである。
【図６】ステップＳ５０１の詳細を示す図である。
【図７】ステップＳ５０４のうち制御パラメータをチェックする処理を示す図である。
【図８】ステップＳ５０５の詳細を示す図である。
【発明を実施するための形態】
【００１１】
＜実施の形態１＞
図１は、本発明の実施形態１に係る車両制御装置１００の構成図である。車両制御装置１００は、車両の動作を制御する装置である。ここでは車両が備えるモータ２００を制御する例を示したが、制御対象はこれに限られるものではない。
【００１２】
車両制御装置１００は、マイクロコントローラ１１０、インバータ１２０、センサ１３１〜１３３を備える。マイクロコントローラ１１０は、インバータ１２０を制御するための制御プログラムを実行する演算装置である。インバータ１２０は、直流電力を所望周波数の交流電力に変換してモータ２００を駆動する装置である。センサ１３１〜１３３は、モータ２００を駆動する駆動電流または電圧を検出してマイクロコントローラ１１０に通知する。
【００１３】
マイクロコントローラ１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１１、フラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１３、ＡＤ変換器１１４、インバータ制御部１１５を備える。
【００１４】
ＣＰＵ１１１は、フラッシュＲＯＭ１１２が格納しているプログラムを実行する。フラッシュＲＯＭ１１２は、後述の図２で説明するプログラムおよびデータを格納する。ＲＡＭ１１３は、ＣＰＵ１１１がプログラムを実行する際に一時的にデータを格納するメモリ装置である。ＡＤ変換器１１４は、センサ１３１〜１３３の検出結果をアナログ信号からデジタル値に変換してＣＰＵ１１１に出力する。インバータ制御部１１５は、インバータ１２０を介してモータ２００を制御する。
【００１５】
以下では、記載の便宜上、プログラムを動作主体として説明する場合があるが、プログラムを実際に実行するのはＣＰＵ１１１などの演算装置であることを付言しておく。
【００１６】
図２は、フラッシュＲＯＭ１１２が格納するデータを示す図である。フラッシュＲＯＭ１１２は、制御プログラム１１２１、ＫＥＹＩＤテーブル１１２２、パラメータテーブル１１２３、固有ＩＤテーブル１１２４を格納する。これらの他にも、ＡＤ変換器１１４を駆動するＡＤ変換器ドライバソフトウェア、インバータ制御部１１５を駆動するインバータ制御部ドライバソフトウェア、タスクや割り込みを制御するオペレーティングシステムなどを格納することもできる。
【００１７】
制御プログラム１１２１は、センサ１３１〜１３３の検出結果を用いてモータ２００を制御するプログラムである。制御プログラム１１２１は、複数の制御処理を記述することができる。ＣＰＵ１１１は、制御プログラム１１２１が記述している制御処理のうちいずれを起動するかを、ＫＥＹＩＤによって指定する。
【００１８】
ＫＥＹＩＤテーブル１１２２は、ＣＰＵ１１１が制御プログラム１１２１を起動する際に指定する識別子（ＫＥＹＩＤ）を保持するテーブルである。パラメータテーブル１１２３は、制御プログラム１１２１が制御処理を実施する際に用いる制御パラメータを保持するテーブルである。固有ＩＤテーブル１１２４は、制御プログラム１１２１毎に固有のＩＤを保持するテーブルである。これら各テーブルの詳細は、後述の図４で説明する。
【００１９】
本発明に係る「制御部」「処理ＩＤ算出部」は、ＣＰＵ１１１と制御プログラム１１２１が相当する。同等の機能を、回路デバイスなどのようなハードウェアを用いて実現することもできる。
【００２０】
図３は、ＲＡＭ１１３が格納するデータを示す図である。ＲＡＭ１１３は、ＡＤ変換器１１４およびセンサ１３１〜１３３の状態を記憶しておく状態バッファ１１３１を格納する。ＲＡＭ１１３は、その他にも制御プログラム１１２１が動作する際に用いるデータを一時的に格納するスタックなどを保持することができる。
【００２１】
図４は、フラッシュＲＯＭ１１２とＲＡＭ１１３が格納している各データの詳細を示す図である。以下、各データの用途などについて説明する。
【００２２】
ＫＥＹＩＤテーブル１１２２が格納しているＫＥＹＩＤは、制御処理毎に固有の値である。ＣＰＵ１１１は、制御プログラム１１２１を起動するとき、いずれの制御処理を起動しようとしているかを指定するため、ＫＥＹＩＤを併せて指定する。図４では、３種類の制御処理に対応する３種類のＫＥＹＩＤを例示したが、これに限られるものではない。
【００２３】
パラメータテーブル１１２３は、制御処理内で用いられる制御パラメータを、制御処理毎に記述している。ここでは、制御パラメータが規定範囲内に収まっているか否かをチェックするために用いる上限値と下限値を制御パラメータとして保持している例を示しているが、これに限られるものではない。例えば、制御処理の動作モードを制御パラメータとして記述しておき、動作モードを切り替えることができる。
【００２４】
固有ＩＤテーブル１１２４は、制御プログラム１１２１を起動する際に指定されたＫＥＹＩＤに基づき、制御処理の番号を算出する際に用いる識別子である。制御処理の番号とは、制御プログラム１１２１が記述している各制御処理を識別するための番号である。この制御処理番号のことを、本明細書では処理ＩＤと呼ぶ。処理ＩＤは、ＫＥＹＩＤテーブル１１２２およびパラメータテーブル１１２３がそれぞれ格納している各データを照会する際に用いられる。詳細は後述する。
【００２５】
固有ＩＤの値は、制御プログラム１１２１毎に設けることができる。ここでは制御プログラム１１２１を１つのみ例示したため、固有ＩＤの値も１つである。
【００２６】
状態バッファ１１３１は、ＡＤ変換器１１４およびセンサ１３１〜１３３の状態が正常であるか否かを示す状態値を、処理ＩＤ毎に格納する。すなわち、ある制御処理については正常範囲である値が、別の制御処理においては異常である場合もあり得るので、制御処理毎に状態値を保持することとした。
【００２７】
図５は、ＣＰＵ１１１が制御プログラム１１２１を実行する処理フローである。本制御処理は、周期的に実行してもよいし、例えばセンサ１３１〜１３３の検出結果を取得する際などに実行してもよい。以下、図５の各ステップについて説明する。
【００２８】
（図５：ステップＳ５００）
ＣＰＵ１１１は、ＫＥＹＩＤとセンサ検出値を指定して、制御プログラム１１２１を起動する。ＫＥＹＩＤの値は、制御プログラム１１２１を呼び出す他の処理などから指定される。センサ検出値は、センサ１３１〜１３３の検出結果をＡＤ変換器１１４がデジタル値に変換したものである。
（図５：ステップＳ５０１）
制御プログラム１１２１は、起動時に受け取ったＫＥＹＩＤを処理ＩＤに変換する。本ステップの詳細は、後述の図６で説明する。処理ＩＤは、制御プログラム１１２１が記述している制御処理を指定するＩＤである。すなわち、制御プログラム１１２１を呼び出すときは、ＫＥＹＩＤを指定することにより、間接的に制御処理番号（処理ＩＤ）を指定することになる。
（図５：ステップＳ５０１：補足）
本処理フローでは、制御処理を不正に呼び出すことを防止するため、処理ＩＤそのものを用いて制御処理を呼び出すのではなく、制御プログラム１１２１を呼び出すときにはＫＥＹＩＤを指定し、これを処理ＩＤに変換することにより間接的に制御処理を指定する。これにより、処理ＩＤそのものを秘匿することができる。
（図５：ステップＳ５０２）
制御プログラム１１２１は、起動時に受け取ったＫＥＹＩＤが正しい値であるか否かをチェックする。具体的には、ステップＳ５０１で算出した処理ＩＤに対応するＫＥＹＩＤをＫＥＹＩＤテーブル１１２２から読み出し、起動時に受け取ったＫＥＹＩＤと一致するか否かを確認する。両者が一致すれば、起動時に受け取ったＫＥＹＩＤは正常である。両者が一致しない場合、起動時に受け取ったＫＥＹＩＤは不正な値である。
（図５：ステップＳ５０２：補足）
制御プログラム１１２１を呼び出すときに指定したＫＥＹＩＤが不正な値である場合、原則として制御処理を実施することはできない。ただし、ＫＥＹＩＤを処理ＩＤに変換する処理によっては、偶然に正しい処理ＩＤが得られる可能性がある。そこで本ステップでは、ステップＳ５０１で算出した処理ＩＤを用いて、あらかじめＫＥＹＩＤテーブル１１２２に格納しておいた正しいＫＥＹＩＤを照会し、ＫＥＹＩＤを２重にチェックすることとした。本ステップの具体例は、後述の図６で改めて説明する。
（図５：ステップＳ５０３）
ＫＥＹＩＤが正常であればステップＳ５０４へ進み、正常でなければステップＳ５０５へ進む。
（図５：ステップＳ５０４）
制御プログラム１１２１は、通常の制御処理を実施する。本ステップの詳細は、後述の図７で説明する。
（図５：ステップＳ５０５）
制御プログラム１１２１は、異常処理を実施する。本ステップの詳細は、後述の図８で説明する。
（図５：ステップＳ５０６）
制御プログラム１１２１は、状態バッファ１１３１に格納されている、ＡＤ変換器１１４および各センサの状態値をリターンする。本ステップの具体例は、後述の図６で改めて説明する。
【００２９】
図６は、ステップＳ５０１の詳細を示す図である。以下、図６の各ステップについて説明する。
【００３０】
（図６：ステップＳ５０１１）
制御プログラム１１２１は、起動時に受け取ったＫＥＹＩＤと、固有ＩＤテーブル１１２４が格納している固有ＩＤとを足す。例えば、ＫＥＹＩＤが０ｘＦＦＦＣである場合、図４で示したデータ例では固有ＩＤは０ｘ０００４なので、これらを足すと０ｘ１００００となる。
（図６：ステップＳ５０１２）
制御プログラム１１２１は、ステップＳ５０１１で算出した結果の下位１６ビット分を処理ＩＤとしてリターンする。上記例の場合、０ｘ１００００の下位１６ビット分である０ｘ００００が処理ＩＤとなる。
【００３１】
以上、ステップＳ５０１の詳細を説明した。次に、処理ＩＤとＫＥＹＩＤの対応関係について補足する。
【００３２】
制御プログラム１１２１は、図５のステップＳ５０２において、処理ＩＤの値をキーとしてＫＥＹＩＤテーブル１１２２を照会する。上記例では、処理ＩＤは０ｘ００００であるので、ＫＥＹＩＤテーブル１１２２の０番目の値を照会する。図４に示したデータ例では０番目のＫＥＹＩＤは０ｘＦＦＦＣであるので、起動時に受け取ったＫＥＹＩＤが０ｘＦＦＦＣであればそのＫＥＹＩＤは正常であるということになる。
【００３３】
ステップＳ５０１１の処理内容によっては、制御プログラム１１２１の起動時に受け取ったＫＥＹＩＤが不正な値であっても、ステップＳ５０１１において正常な処理ＩＤに変換される場合がある。例えば、ステップＳ５０１１においてＫＥＹＩＤを３で除算した余りを処理ＩＤとする場合、ステップＳ５０１１の処理結果は０から２のいずれかの値となる。図４のデータ例では、正常な処理ＩＤは０ｘ００００〜０ｘ０００２の範囲であるため、偶然に正しい処理ＩＤが得られる可能性がある。
【００３４】
かかる事態を防止するため、図５のステップＳ５０２において、処理ＩＤをキーにしてＫＥＹＩＤテーブル１１２１を照会することにより、あらかじめ格納しておいたＫＥＹＩＤを用いて制御プログラム１１２１が呼び出されたか否かをチェックすることとした。これにより、ステップＳ５０１１で算出した処理ＩＤが偶然正しい値となっても、ＫＥＹＩＤが正しくない限りは制御処理を起動することができない。
【００３５】
なお、ＫＥＹＩＤテーブル１１２２、パラメータテーブル１１２３、状態バッファ１１３１は、処理ＩＤをキーにして照会されるため、これらテーブルは処理ＩＤ毎にデータを保持していることになる。
【００３６】
図７は、ステップＳ５０４のうち制御パラメータをチェックする処理を示す図である。以下、図７の各ステップについて説明する。
【００３７】
（図７：ステップＳ５０４１）
制御プログラム１１２１は、処理ＩＤをキーにして、状態バッファ１１３１が格納している状態値を読み出す。図４のデータ例では、処理ＩＤが０ｘ００００であれば状態値は「故障」であり、処理ＩＤが０ｘ０００１であれば状態値は「正常」である。
（図７：ステップＳ５０４２）
ステップＳ５０４１で読み出した状態値が「正常」であればステップＳ５０４３へ進み、「正常」でなければ本処理フローを終了する。
（図７：ステップＳ５０４３）
制御プログラム１１２１は、処理ＩＤをキーにして、パラメータテーブル１１２３から下限値と上限値を読み出す。図４のデータ例では、処理ＩＤが０ｘ０００１であれば、下限値は０ｘ００８０、上限値は０ｘ２０００である。
（図７：ステップＳ５０４４）
制御プログラム１１２１は、センサ１３１〜１３３の検出値が、ステップＳ５０４３で読み出した下限値と上限値の範囲内にあるか否かをチェックする。検出値が閾値の範囲内にある場合は、センサ検出値は正常であり、本処理フローを終了する。閾値の範囲内になければ、状態バッファ１１３１を書き換えるため、ステップＳ５０４５へ進む。
（図７：ステップＳ５０４５）
制御プログラム１１２１は、状態バッファ１１３１を書き換えるに先立ち、起動時に受け取ったＫＥＹＩＤが正常であるか否かをチェックする。チェック手順はステップＳ５０２と同様である。ＫＥＹＩＤが正常であればステップＳ５０４６へ進み、正常でなければ本処理フローを終了する。
（図７：ステップＳ５０４５：補足）
本発明では、状態バッファ１１３１の内容が安全性や信頼性などの観点から重要であると仮定している。そこで、プログラムが暴走したときなどに、不正なアドレスへ処理がジャンプすることによって、ＫＥＹＩＤとは全く関連のない処理がＲＡＭ１３０の内容を書き換えてしまうことを防止するため、本ステップにおいてＫＥＹＩＤを改めてチェックすることとした。状態バッファ１１３１が不正に書き換えられることを防止する以外に、例えばフラッシュＲＯＭ１１２を書き換えるときなどの重要な処理を実行する前にも本ステップと同様にＫＥＹＩＤをチェックすることにより、制御処理の安全性を向上させることができる。その他の例としては、モータ２００を危険な回転速度まで上げるときなどの危険度の高い処理を実行する前に、ＫＥＹＩＤをチェックすることが考えられる。すなわち、ＫＥＹＩＤをチェックする処理は、制御処理を起動するときの他、制御処理中において重要な処理を実施する前にも実施することが有用である。
（図７：ステップＳ５０４６）
制御プログラム１１２１は、処理ＩＤに対応する状態バッファ１１３１の状態値を「故障」に更新する。
（図７：ステップＳ５０４７）
制御プログラム１１２１は、本処理フローを終了すると、通常の制御処理を実施する。
【００３８】
図８は、ステップＳ５０５の詳細を示す図である。以下、図８の各ステップについて説明する。
【００３９】
（図８：ステップＳ５０５１）
制御プログラム１１２１は、固有ＩＤとＫＥＹＩＤをエラー管理モジュールに通知し、エラー履歴として記録する。エラー履歴を残すことにより、故障要因を特定するときの手がかりに有効である。エラー管理モジュールは、エラーＩＤ毎にエラー履歴を残し、エラーＩＤ毎の所定の異常処理を起動する。例えばモータ異常の場合は、モータ２００を停止する処理を実行する。
（図８：ステップＳ５０５１：補足その１）
本ステップにおいてＫＥＹＩＤを通知するのは、どのようなＫＥＹＩＤを用いているときにエラーが発生したのかを特定したいからである。ＫＥＹＩＤを通知することにより、例えば、不正なＫＥＹＩＤを指定して制御処理を起動しようとしたのか、それともプログラムの暴走によって不正なアドレスへ処理がジャンプしたことによりＫＥＹＩＤが空のままであったのか、といったエラー原因の詳細を特定することができる。ここで通知するＫＥＹＩＤは、制御処理を呼び出す際に指定されたＫＥＹＩＤでもよいし、処理ＩＤを算出する際に用いられたＫＥＹＩＤでもよいし、これら双方でもよい。
（図８：ステップＳ５０５１：補足その２）
本ステップにおいて固有ＩＤを通知するのは、正しい固有ＩＤが用いられたか否かをチェックする意義がある。例えば、固有ＩＤテーブル１１２４が破損していれば固有ＩＤの値も破損していると考えられる。本ステップにおいて固有ＩＤを通知することにより、エラー原因の詳細を特定することができる。
【００４０】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係る車両制御装置１００は、パラメータテーブル１１２３上で処理ＩＤ毎に制御パラメータを保持している。これにより、処理の内容が同一で制御パラメータのみが異なる制御処理については、同じ制御プログラム１１２１を異なるＫＥＹＩＤで起動することにより、制御プログラム１１２１を共通化することができる。したがって、制御プログラム１１２１を格納するための記憶容量を抑えることができる。
【００４１】
また、本実施形態１に係る車両制御装置１００は、制御処理を起動する際に指定したＫＥＹＩＤと、ＫＥＹＩＤを用いて算出した処理ＩＤをキーにしてＫＥＹＩＤテーブル１１２２から読み出したＫＥＹＩＤとを照合する。これにより、不正なＫＥＹＩＤを指定して制御処理を呼び出すことを防止し、制御処理のセキュリティを高めることができる。
【００４２】
また、本実施形態１に係る車両制御装置１００は、制御処理を呼び出す際に指定したＫＥＹＩＤと、固有ＩＤテーブル１１２４が格納している固有ＩＤとを用いて、処理ＩＤを算出する。これにより、処理ＩＤや固有ＩＤは車両制御装置１００の外部に出力されないことになるので、制御処理のセキュリティを高めることができる。
【００４３】
また、本実施形態１において、固有ＩＤの値は、車両制御装置１００毎に異なる値とすることができる。これにより、車両制御装置１００を解析した得た固有ＩＤは他の車両制御装置１００上では無効な値となるので、車両制御装置１００個々のセキュリティを高めることができる。同様に、固有ＩＤの値は、制御処理を呼び出す側と申し合わせた上で、例えば制御処理を呼び出す毎に変更したり、制御処理を実行している途中で変更したりしてもよい。これにより、固有ＩＤを解析することを困難にすることができる。
【００４４】
＜実施の形態２＞
実施形態１では、固有ＩＤとＫＥＹＩＤを用いて処理ＩＤを算出しているが、固有ＩＤを設けないようにしてもよい。固有ＩＤを設けない場合は、ＫＥＹＩＤと所定の値、例えば０ｘ０００Ｃを加算して処理ＩＤを求める、などの変換規則を適宜設ければよい。
【００４５】
この場合は、制御処理毎にその変換規則を設け、その変換規則を制御プログラム１１２１内などに記述しておけばよい。例えば、ある制御処理についてはＫＥＹＩＤと０ｘ０００Ｃを加算して処理ＩＤとする、別の制御処理についてはＫＥＹＩＤを０ｘ０００３で割った余りを処理ＩＤとする、などが考えられる。
【符号の説明】
【００４６】
１００：車両制御装置、１１０：マイクロコントローラ、１１１：ＣＰＵ、１１２：フラッシュＲＯＭ、１１２１：制御プログラム、１１２２：ＫＥＹＩＤテーブル、１１２３：パラメータテーブル、１１２４：固有ＩＤテーブル、１１３：ＲＡＭ、１１３１：状態バッファ、１１４：ＡＤ変換器、１１５：インバータ制御部、１２０：インバータ、１３１〜１３３：センサ、２００：モータ。
【図１】
0005507513.tif 000002
【図２】
0005507513.tif 000003
【図３】
0005507513.tif 000004
【図４】
0005507513.tif 000005
【図５】
0005507513.tif 000006
【図６】
0005507513.tif 000007
【図７】
0005507513.tif 000008
【図８】
0005507513.tif 000009