"第1のCPUと第2のCPUとを有し、前記第1のCPUと前記第2のCPUの一方のCPUが他方のCPUの動作を監視する移動体の電子制御装置において、テスト値を取得するテスト値取得部と、前記テスト値と共通値を用いて演算処理を行って演算値を算出するテスト用演算部と、前記第1のCPUと前記第2のCPUの一方のCPUで算出した前記演算値を、他方のCPUにおいて前記共通値を用いて前記演算処理の逆演算を行い、その演算結果と前記テスト値を比較することで一方のCPUの動作を判定する比較部と、を前記第1のCPUと前記第2のCPUのそれぞれに設けたことを特徴とする移動体の電子制御装置。前記テスト値取得部は、前記CPUのコアに対して自己診断した結果を表すコードを前記テスト値として取得することを特徴とする請求項1に記載の移動体の電子制御装置。前記テスト値取得部は、所定値を前記CPUの汎用レジスタに書き込んだ後に読み出し、その読み出し値と前記所定値を比較した結果のコードを前記テスト値として取得する請求項2に記載の移動体の電子制御装置。前記テスト値取得部は、前記2つのCPUの各々に外部から入力される入力値を用いて前記テスト値を取得することを特徴とする請求項1に記載の移動体の電子制御装置。前記テスト値取得部は、前記入力値として、外部から入力される電圧値であって、前記電圧値をアナログデジタル変換し、アナログデジタル変換した値について物理値変換を行った物理値を前記テスト値として取得する請求項4に記載の移動体の電子制御装置。前記テスト用演算部は、複数種類の前記演算処理を順番に選択して前記演算値を算出する請求項1から請求項5のいずれか一項に記載の移動体の電子制御装置。前記共通値は、前記2つのCPUのそれぞれに予め記憶されている請求項1から請求項6のいずれか一項に記載の移動体の電子制御装置。しかしながら、従来の電子制御装置は、電子スロットルバルブを制御するための演算処理をサブCPUでも行うので、メインCPUと同様な演算処理を行える能力がサブCPUにも必要であった。このことは、電子制御装置のコストアップの原因になっていた。さらに、電子スロットルバルブを制御するためのパラーメータは、時々刻々と変化する。このため、2つのCPUの間の通信で演算結果を比較する場合には、2つのCPUが演算処理をしたタイミングを明確にしなければならない。このため、従来の電子制御装置では、演算処理のタイミングを同期させるための複雑な処理が必要であった。また、車種が異なると電子スロットルバルブの制御の仕方が異なることがある。このような場合には、車種ごとにCPUで異常監視を行うためのプログラムを変更しなければならなかった。本発明は、このような事情を鑑みてなされたものであり、複数のCPUの間での相互監視を効率良く行わせることを目的とする。本発明の一観点によれば、第1のCPUと第2のCPUとを有し、前記第1のCPUと前記第2のCPUの一方のCPUが他方のCPUの動作を監視する移動体の電子制御装置において、テスト値を取得するテスト値取得部と、前記テスト値と共通値を用いて演算値を算出するテスト用演算部と、前記第1のCPUと前記第2のCPUの一方のCPUで算出した前記演算値を、他方のCPUにおいて前記共通値を使用して演算処理を行い、その演算結果と前記テスト値を比較することで一方のCPUの動作を判定する比較部と、を前記第1のCPUと前記第2のCPUのそれぞれに設けたことを特徴とする移動体の電子制御装置が提供される。また、本発明の別の観点によれば、前記テスト値取得部は、前記CPUのコアに対して自己診断した結果を表すコードを前記テスト値として取得することを特徴とする請求項1に記載の移動体の電子制御装置が提供される。また、本発明の別の観点によれば、前記テスト値取得部は、所定値を前記CPUの汎用レジスタに書き込んだ後に読み出し、その読み出し値と前記所定値を比較した結果のコードを前記テスト値として取得する請求項2に記載の移動体の電子制御装置が提供される。また、本発明の別の観点によれば、前記テスト値取得部は、前記2つのCPUの各々に外部から入力される入力値を用いて前記テスト値を取得することを特徴とする請求項1に記載の移動体の電子制御装置が提供される。また、本発明の別の観点によれば、前記テスト値取得部は、前記入力値として、外部から入力される電圧値であって、前記電圧値をアナログデジタル変換し、アナログデジタル変換した値について物理値変換を行った物理値を前記テスト値として取得する請求項4に記載の移動体の電子制御装置が提供される。また、本発明の別の観点によれば、前記テスト用演算部は、複数種類の演算を順番に選択して前記演算値を算出する請求項1から請求項5のいずれか一項に記載の移動体の電子制御装置が提供される。また、本発明の別の観点によれば、前記共通値は、前記2つのCPUのそれぞれに予め記憶されている請求項1から請求項6のいずれか一項に記載の移動体の電子制御装置が提供される。本発明によれば、制御対象の制御に必要な演算処理の代わりに、テスト値と共通値を用いた演算処理を行い、その演算結果を使ってCPUの相互監視を行うようにしたので、CPUの処理負担を低減できる。また、テスト値を使用することで、CPU間で相互監視のための演算処理を開始するタイミングの同期させる必要がなくなるので、装置構成を簡略化できる。本発明を実施するための形態について以下に詳細に説明する。図1に本実施の形態に係る移動体の電子制御装置のブロック図を示す。移動体の電子制御装置以下、電子制御装置という1は、バッテリ2からの電力がシステムリレー3を介して入力され、アクチュエータであるモータ4の回転制御を行うように構成されている。具体的には、電子制御装置1は、第1のCPUであるメインCPU11と、第2のCPUであるサブCPU12とを有する。これらCPU11,12には、バッテリ2からの電力がシステムリレー回路13を介して電力が供給される。さらに、2つのCPU11,12は、通信可能に接続されている。そして、2つのCPU11,12から出力される信号は、リレー駆動回路15と、モータドライバ16とに接続されている。モータドライバ16は、モータ4のコイルに通電する電流を制御するように構成されている。メインCPU11は、図示を省略するROMReadOnlyMemoryやRAMRandomAccessMemory、その他の回路を有し、モータ制御部21と、第1の相互監視部であるメイン相互監視部22とに機能分割できる。ここで、モータ制御部21は、外部からの信号を受けて制御対象であるモータの回転制御を行うための演算を行う。また、メイン相互監視部22は、テスト値を取得するMTEST取得部31テスト値取得部と、テスト値を用いた演算処理及び演算値の送信を行うMTESTn演算部32テスト用演算部と、サブCPU12を診断するメイン比較部33とに機能分割される。なお、メインCPU11は、これ以外の機能を実現するための制御部や演算部を備えても良い。例えば、制御対象がモータ以外のアクチュエータである場合、そのようなアクチュエータの制御部がモータ制御部の代わりに設けられる。また、アクチュエータ以外の他の装置の制御も行う場合には、その装置のための制御部が設けられる。サブCPU12は、図示を省略するROMやRAM、その他の回路を有し、第2の相互監視部であるサブ相互監視部23を有する。サブ相互監視部23は、テスト値を取得するSTEST取得部41テスト値取得部と、テスト値を用いた演算処理及び演算値の送信を行うSTESTn演算部42テスト用演算部と、メインCPU11を診断するサブ比較部43とに機能分割される。なお、サブCPU12は、これ以外の機能を実現するための制御部や演算部を備えても良い。次に、図2を主に参照して、各CPU11,12が互いの動作の診断する相互監視方法について説明する。このCPU11,12の相互監視方法では、テスト値に演算処理を行った結果を2つのCPU11,12の間で通信し合うことで相互監視を行うことを特徴とする。まず、最初に、ステップS101でメインCPU11がサブCPU12に診断させる演算値を算出する。具体的には、最初に、メインCPU11のMTEST取得部31が、テスト値MTESTを取得する。テスト値MTESTは、メインCPU11とサブCPU12の両方が知り得る値であって、モータ4の駆動制御に影響を及ぼさない程度の負荷で取得できる値が用いられる。このようなテスト値MTESTとしては、例えば、CPU11,12のコア診断の結果や、CPU11,12のROMの所定領域にあるデータがあげられる。続いて、メインCPU11のMTESTn演算部32は、共通値Nを用いて、テスト値MTESTに対して予め定められた演算処理、例えば、減算処理を行い、演算値MTEST1を算出する。共通値Nは、メインCPU11とサブCPU12の両方が知り得る値、例えば、それぞれのROMに予め記憶されている値が用いられる。そして、演算値MTEST1は、通信によって、サブCPU12に送信される。次に、ステップS102で、サブCPU12がメインCPU11を診断する。サブCPU12は、演算値MTEST1を取得したら、サブ比較部43が演算値MTEST1に対して予め定められた逆演算処理、例えば、演算値MTEST1から共通値Nを加算する処理を行い、テスト値MTESTを算出する。ここで、逆演算処理とは、メインCPU11でテスト値MTESTに対して行われた演算処理の効果を打ち消し、演算値MTEST1からテスト値MTESTを復元するような処理をいう。さらに、サブ比較部43は、STEST取得部41で取得したテスト値STESTと、逆演算により算出したテスト値MTESTとを比較する。STEST取得部41は、メインCPU11でテスト値MTESTを取得したときと同様の処理を行ってテスト値STESTを取得する。なお、テスト値METST,STESTは、2つのCPU11,12が正常動作している場合には、同じ値が得られる。つまり、2つのメインCPU11,12が正常動作していれば、サブCPU12は、メインCPU11が取得したテスト値MTESTを復元することができる。しかも、そのテスト値MTESTは、サブCPU12が自身で取得したテスト値STESTと一致するはずである。したがって、サブ比較部43は、算出したテスト値MTESTと、自身が取得したテスト値STESTとが一致する場合には、メインCPU11が正常動作OKしていると判定する。一方、算出したテスト値MTESTとテスト値STESTとが一致しない場合には、メインCPU11が異常動作NGしていると判定する。そして、サブCPU12は、メインCPU11を診断したら、ステップS103に進む。ステップS103では、サブCPU12が、自身の動作をメインCPU11に診断させるための演算値を計算する。すなわち、サブCPU12のSTESTn演算部42は、テスト値STESTに対して共通値Nを用いて予め定められた演算処理、例えば、減算処理を行い、演算値STEST1を算出する。そして、演算値STEST1は、通信によって、メインCPU11に送信される。次に、ステップS104で、メインサブCPU11がサブCPU12を診断する。メインCPU11が演算値STEST1を取得したら、メイン比較部33が演算値STEST1に対して予め定められた逆演算処理、例えば、演算値STEST1から共通値K1を加算する処理を実行し、テスト値STESTを算出する。逆演算処理は、サブCPU12でテスト値STESTに対して行われた演算処理の効果を打ち消し、演算値STEST1からテスト値STESTを復元するような処理をいう。ここで、2つのメインCPU11,12が正常動作していれば、メインCPU11は、サブCPU12が取得したテスト値STESTを復元することができる。しかも、そのテスト値STESTは、メインCPU11が自身で取得したテスト値STESTと一致するはずである。したがって、メイン比較部33は、算出されたテスト値STESTと、自身が取得したテスト値MTESTとを比較する。両者が一致する場合には、サブCPU12が正常動作OKしていると判定する。一方、算出したテスト値STESTとテスト値MTESTとが一致しない場合、メイン比較部33は、サブCPU12が異常動作NGしていると判定する。そして、続くステップS105からステップS108では、上記の処理と同様の処理が演算処理の種類を変更して繰り返される。まず、ステップS105では、メインCPU11がサブCPU12に診断させる演算値を作成する。メインCPU11のMTEST取得部31が、テスト値MTESTを取得し、MTESTn演算部32が、テスト値MTESTに対して共通値Nを用いて予め定められた演算処理、例えば、加算処理を行い、演算値MTEST2を算出する。この際の演算処理は、ステップS101で実施した減算処理とは異なる処理であって、予め決められた複数の演算処理から順番に選択される1つ演算処理である。そして、演算値MTEST2は、通信によって、サブCPU12に送信される。ステップS106では、サブCPU12がメインCPU11に対する2回目の診断を行う。サブ比較部43は、演算値MTEST2に対して予め定められた逆演算処理として演算値MTEST2から共通値Nを減算する処理を行い、テスト値MTESTを算出する。さらに、サブ比較部43は、算出されたテスト値MTESTと、自己が取得したテスト値STESTとを比較し、両者が一致する場合には、メインCPU11が正常動作OKしていると判定する。一方、算出したテスト値MTESTとテスト値STESTとが一致しない場合には、メインCPU11が異常動作NGしていると判定する。続いて、ステップS107で、サブCPU12がメインCPU11に診断させるための演算値を算出する。サブCPU12のSTEST取得部41が、テスト値STESTを取得し、STESTn演算部42がテスト値STESTに対して共通値Nを用いて予め定められた演算処理、例えば、加算処理を行い、演算値STEST2を算出する。そして、演算値STEST2は、通信によって、メインCPU11に送信される。ステップS108では、メインCPU11がサブCPU12に対する2回目の診断を行う。メインCPU11では、メイン比較部33が演算値STEST2に対して予め定められた逆演算処理として、演算値STEST2から共通値Nを減算する処理を行い、テスト値STESTを算出する。さらに、メイン比較部33は、算出されたテスト値STESTと、自己が取得したテスト値MTESTとを比較し、両者が一致する場合には、サブCPU12が正常動作していると判定する。一方、算出したテスト値STESTとテスト値MTESTとが一致しない場合には、サブCPU12が異常動作NGしていると判定する。以降は、所定時間ごとに、メインCPU11とサブCPU12との間で、演算処理を順番に変えながら、同様の処理を実行する。演算処理は、例えば、テスト値MTEST,STESTから演算値MTESTn,STESTnnは共に正の整数を算出するときは、減算第1の演算処理→加算第2の演算処理→乗算第3の演算処理→除算第4の演算処理→余り演算第5の演算処理を順番に使う。これに対し、演算値MTESTnや演算値STESTnからテスト値MTEST,STESTから算出するときは、加算第1の逆演算処理→減算第2の逆演算処理→除算第3の演算処理→乗算第4の逆演算処理→四則混合演算第5の逆演算処理を順番に使う。ここで、四則混合演算とは、余り演算の逆演算に対応するものである。例えば、余り演算が、テスト値40を7で割ったときの余り、つまり40÷7=5、余り5という計算であった場合、ここでの四則混合演算は57×5を計算して、40を得るような演算である。なお、メインCPU11側とサブCPU12側では、演算値MTESTn,STESTnの算出に同じ種類の演算処理を採用することが好ましい。また、演算処理の種類や順番は、これに限定されない。例えば、同じ演算処理を2回以上連続して実施しても良い。また、共通値Nは、演算の種類に依らずに常に一つの値を使用している。しかしながら、共通値Nは、複数の値を循環させて用いても良い。複数の値を循環させる場合は、各CPU11,12のROMには、複数の共通値Nと、それら共通値Nを使う順番とが予め登録される。さらに、MTESTn演算部32及びSTESTn演算部42は、予め登録された順番に共通値Nを読み込んで演算処理を行うように構成される。ここで、図3を参照して、テスト値MTEST,STESTを取得する処理の一例として、それぞれのCPU11,12のコアの診断結果を用いる場合について説明する。なお、以下においては、メインCPU11における処理について説明するが、サブCPU12においても同様の処理が行われる。最初に、ステップS201で、MTEST取得部31は、テスト値MTESTの初期値にゼロを代入する。続いて、ステップS202で、MTEST取得部31は、CPU11の汎用レジスタに所定値、例えば0x55を書き込む。この後、ステップS203で、MTEST取得部31は、同じ汎用レジスタの値を読み込んで、最初に汎用レジスタに書き込んだ値と比較する。汎用レジスタの読み込み値が、書き込み値と同じ値、即ち0x55であれば、ステップS204に進んで、今度は汎用レジスタに別の所定値、例えば0xAAを書き込む。この後、ステップS205で、MTEST取得部31が同じ汎用レジスタの値を読み込む。汎用レジスタの読み込み値が、書き込み値と同じ値、即ち0xAAであれば、ステップS206に進む。この場合、MTEST取得部31は、メインCPU11のコアが正常に動作していることを示すコード、例えば40をテスト値MTESTに代入する。一方、ステップS203とステップS205のいずれか一方でも汎用レジスタの読み込み値と書き込み値とが一致しない場合には、ステップS207に進む。これらの場合は、汎用レジスタへの書き込み、又は汎用レジスタからの書き込みが正常に実行できなかったことになるので、テスト値MTESTに、メインCPU11のコアの動作が異常であることを示すコード、例えば50を代入する。また、図4aに、CPU11,12のコアの診断結果をテスト値として使用した場合に、MTESTn演算部32又はSTESTn演算部42が演算値MTESTn、STESTnを演算処理で算出する場合のフローチャートを示す。なお、以下においては、メインCPU11における処理について説明するが、サブCPU12においても同様の処理が行われる。最初に、ステップS301で、演算値MTEST1を算出する。演算値MTEST1は、例えば、テスト値TESTから演算テストコードの値を引いた結果を代入する。続いて、ステップS302で、演算値MTEST1は、送信レジスタに書き込まれる。さらに、図4bに各演算処理における演算コードと演算値MTEST1を示す。なお、テスト値は、CPU11,12のコアが正常に動作している場合のコード、40を用いた場合を例にして示している。減算処理の共通値Nのコードを10に設定した場合、演算値MTEST1は、40-10=30になる。加算処理の共通値Nのコードを20にした場合、演算値MTEST1は、4020=60になる。乗算処理の共通値Nのコードを2にした場合、演算値MTEST1は、40×2=80になる。除算処理の共通値Nのコードを4にした場合、演算値MTEST1は、40÷4=10になる。余り演算処理の共通値Nのコードを7にした場合、演算値MTEST1は、40を7で除算したときの余りである5になる。これらの演算値MTEST1は、CPU11,12が正しく機能している場合に得られる値である。すなわち、演算値MTEST1として正しい値が得られた場合には、CPU11,12のコア機能としての汎用レジスタの読み込み及び書き込み、分岐命令、比較命令のそれぞれの機能と、CPU11,12の演算回路が共に正しく機能していることを確認できる。ここで、図2のフローチャートに示すメインCPU11とサブCPU12による相互監視にエラーが生じたときの処理について、図5のタイミングチャートを参照して説明する。なお、図5は、横軸が時間を示し、縦軸がメインCPU11及びサブCPU12のそれぞれの動作を示す。そして、図5は、相互監視が所定の間隔で継続して実施され、かつ各CPU11,12でエラーが発生していない場合を示している。すなわち、時間T0でメインCPU11及びサブCPU12にリセットがかけられ、時間T1でサブCPU12の初期化が完了する。メインCPU11の初期化は、時間T2までかかっている。2つのCPU11,12が通常の動作を開始したら、時間T3でメインCPU11が最初に演算値MTEST1を出力する。演算値MTEST1を受け取ったサブCPU12は、時間T4で、演算値STEST1を出力する。以降、時間T5、T7、T9、T11のそれぞれにメインCPU11が演算値MTEST2、演算値MTEST3、演算値MTEST4、演算値MTEST5を出力する。これに対し、時間T6、T8、T10、T12のそれぞれにサブCPU12が演算値STEST2、演算値STEST3、演算値STEST4、演算値STEST5を出力する。このCPU11,12の相互監視方法では、四則演算と余り演算の合計5種類の演算を順番に実施するので、時間T13では、メインCPU11が時間T3と同様の演算を行って演算値MTEST1を出力する。同様に、時間T14では、サブCPU12が時間T4と同様の演算を行って演算値STEST1を出力する。以降は、同様の処理を繰り替えし、メインCPU11とサブCPU12の一方のCPUが他方のCPUを監視する処理を交互に繰り返す。この場合は、メインCPU11はサブCPU12の異常を検出せず、サブCPU12はメインCPU11の異常を検出していない。このため、2つCPU11,12からの指令を受けてモータ4の回転制御が行われる。続いて、いずれかのCPU11,12に異常が発生した場合の処理について、以下に場合分けして説明する。A起動時のメインCPU11の異常と、異常からの復帰起動時にメインCPU11から最初に送信された演算値MTEST1がサブCPU12で異常と判定された場合の処理について説明する。このような場合としては、以下のケースが想定される。A1T3→T4:メインCPU→サブCPU異常サブ側通信NGA2T4→T5:サブCPU→メインCPU異常メイン側通信NGA3T5→T6:メインCPU→サブCPU異常A4T6→T7:サブCPU→メインCPU異常A5T7→T8:メインCPU→サブCPU正常A6T8→T9:サブCPU→メインCPU正常A7T9→T10:メインCPU→サブCPU正常サブ側通信OKA8T10→T11:サブCPU→メインCPU正常メイン側通信OK時間T3においてメインCPU11で計算された演算値MTEST1に基づいて、サブCPU12がメインCPU11を診断する。この場合、演算値MTEST1は正常な値でない、つまり異常値なので、サブCPU12は、メインCPU11に対して異常判定サブ側通信NGをする。この場合、サブCPU12のMTESEn演算部42は、メインCPU11から送信された値、つまり異常値である演算値MTEST1を演算値STEST1に代入してメインCPU11に送信する。さらに、時間T4においてサブCPU12で計算された演算値STEST1に基づいて、メインCPU11がサブCPU12を診断する。この場合、演算値STEST1として異常な値が送信されているので、メインCPU11は、サブCPU12に対して異常判定サブ側通信NGをする。続く時間T5においてメインCPU11で計算された演算値MTEST2と、時間T6においてサブCPU12で計算された演算値STEST2は、共に異常値なので、各CPU11,12は、異常判定を維持する。ここで、時間T5でメインCPU11が2回目の診断結果をサブCPU12に送信した後に、メインCPU11が異常状態から正常状態に復帰したので、時間T7で計算される3回目の演算値MTEST3は、正常値になる。このため、時間T7においてメインCPU11で計算された演算値MTEST3に基づいて、サブCPU12がメインCPU11を正常と判定する。この際、サブCPU12のサブ比較部43は、異常判定後に正常判定を行ったので、正常な演算値MTESTnを2回連続して受信するまで、通信OKと判定しない。このため、モータ4の駆動は許可されない。また、時間T8においてサブCPU12で計算された演算値STEST3に基づいて、メインCPU11がサブCPU12を正常と判定する。この際、メインCPU11のメイン比較部33は、異常判定後に正常判定を行ったので、正常な演算値STESTnを2回連続して受信するまで、通信OKと判定しない。このため、モータ4の駆動は許可されない。さらに、時間T9にメインCPU11で計算された正常な演算値MTEST4に基づいて、サブCPU12がメインCPU11に対して正常判定する。これにより、サブCPU12側で正常判定が2回連続したので、サブCPU12は通信OKと判定する。サブCPU12のサブ比較部43は、許可信号をモータドライバ16に出力する。そして、時間T10にサブCPU12で計算された正常な演算値STEST4に基づいて、メインCPU11がサブCPU12に対して正常判定する。これにより、メインCPU11側で正常判定が2回連続したので、メインCPU11は通信OKと判定する。メインCPU11のメイン比較部33が許可信号をモータドライバ16に出力する。その結果、時間T11で2つのCPU11,12からの許可信号が揃って、モータ4の回転制御が開始される。B起動時のサブCPU12の異常と、異常からの復帰起動時にサブCPU12から最初に送信された演算値STEST1がメインCPU11で異常と判定された場合の処理について説明する。このような場合としては、以下のケースが想定される。B1T3→T4:メインCPU→サブCPU正常サブ側通信OKB2T4→T5:サブCPU→メインCPU異常メイン側通信NGB3T5→T6:メインCPU→サブCPU正常B4T6→T7:サブCPU→メインCPU異常B5T7→T8:メインCPU→サブCPU正常B6T8→T9:サブCPU→メインCPU正常B7T9→T10:メインCPU→サブCPU正常B8T10→T11:サブCPU→メインCPU正常メイン側通信OK時間T3においてメインCPU11で計算された演算値MTEST1に基づいて、サブCPU12がメインCPU11を診断する。この場合、演算値MTEST1は正常な値なので、サブCPU12は、メインCPU11に対して正常判定サブ側通信OKをする。一方、時間T4においてサブCPU12で計算された演算値STEST1は異常値であったので、メインCPU11がサブCPU12を異常判定サブ側通信NGする。時間T5で、メインCPU11は、サブCPU12の動作状態に拘らず、演算値MTEST2を作成してサブCPU12に送信する。このため、時間T6で、サブCPU12は、メインCPU11を正常判定する。一方、時間T6においてサブCPU12で計算された演算値STEST2は異常値なので、時間T7においてメインCPU11はサブCPU12の異常判定を維持する。そして、時間T8までにサブCPU12が正常状態になったら、時間T8でメインCPU11に送信される演算値STEST3は正常値になる。メインCPU11は、異常判定を一回しているので、正常判定が2回連続したとき、すなわち、時間T11で通信がOKになったと判定する。そして、メインCPU11は、モータドライバ16に許可信号を送信する。C起動時にサブCPU12からの応答がない場合起動時にメインCPU11は演算値MTESTnを送信するが、サブCPU12からは演算値MESTnが送信されない場合について説明する。時間T3でメインCPU11が演算値MTEST1をサブCPU12に送信した後、サブCPU12から信号がメインCPU11に送られてこない場合、メインCPU11は、所定の時間tが経過するごとに、演算値MTESTnをサブCPU12に送信する。サブCPU12からの応答がない場合、メインCPU11は、予め定められた時間、例えば255m秒が経過するまで、演算値MTESTnを送信し続ける。予め定められた時間が経過したら、メインCPU11のメイン比較部33はサブCPU12の通信異常と判定し、処理を終了する。以降、電子制御装置1のシステムがリセットされるまでメインCPU11は通信を停止する。D動作判定した後に、メインCPU11の異常が連続して発生した場合このような場合としては、以下のケースが想定される。D1T3→T4:メインCPU→サブCPU正常サブ側通信OKD2T4→T5:サブCPU→メインCPU正常メイン側通信NGD3T5→T6:メインCPU→サブCPU正常D4T6→T7:サブCPU→メインCPU正常D5T7→T8:メインCPU→サブCPU異常D6T8→T9:サブCPU→メインCPU異常D7T9→T10:メインCPU→サブCPU異常D8T10→T11:サブCPU→メインCPU異常D9T11→T12:メインCPU→サブCPU異常サブ側通信NG時間T3から時間T7までは、各CPU11,12が正常判定をしていた。この後、時間T7においてメインCPU11で計算された演算値MTEST3が異常値であった場合、サブCPU12がメインCPU11を異常と判定する。また、これに伴って、メインCPU11もサブCPU12に対して異常判定を行う。そして、時間T11でサブCPU12に送信される演算値MTEST5が異常値であると、サブCPU12が3回目の異常判定を行う。ここで、サブCPU12側で異常判定が3回連続したので、サブ比較部43は通信NGと判定し、モータ駆動を停止させる。以降、電子制御装置1のシステムがリセットされるまでサブCPU12は通信を停止する。EメインCPUからの通信が途絶した場合メインCPU11、サブCPU12ともに起動から2回目までの通信は正常だったが、3回目のメインCPU11からの通信が途絶した場合、サブCPU12は通信途絶が3回連続した場合に、通信NGとして、モータ駆動を停止させる。以降、システムがリセットされるまでサブCPU12は通信を停止する。FメインCPUからの通信が途絶した後、通信が正常に復帰した場合このような場合としては、以下のケースが想定される。F1T3→T4:メインCPU→サブCPU正常サブ側通信OKF2T4→T5:サブCPU→メインCPU正常メイン側通信OKF3T5→T6:メインCPU→サブCPU正常F4T6→T7:サブCPU→メインCPU正常F5T7→T8:メインCPU→サブCPU通信途絶F6T8→T9:サブCPU→メインCPU通信途絶F7T9→T10:メインCPU→サブCPU通信途絶F8T10→T11:サブCPU→メインCPU通信途絶F9T11→T12:メインCPU→サブCPU正常F10T12→T13:サブCPU→メインCPU正常F11T13→T14:メインCPU→サブCPU正常F12T14→T15:サブCPU→メインCPU正常サブ側通信OK時間T3から時間T7までは、各CPU11,12が正常判定をしていた。この後、時間T7の3回目のメインCPU11からの通信が途絶した。この後、2回の通信途絶を経て、時間T11でメインCPU11からの通信が復活した。時間T11でメインCPU11が送信した演算値MTEST5がサブCPU12で正常値と判定された場合、サブCPU12は、演算値MTEST5の演算パターンに合わせて演算値STEST5を算出する。メインCPU11が正常に動作しているので、演算値MTEST5は、余り演算で算出されているので、サブCPU12は余り演算の逆演算処理である四則混合演算で演算値STEST5を算出する。そして、時間T13で、メインCPU11が演算値MTEST6を余り演算の次の順番の演算、例えば減算を用いて算出し、サブCPU12に送信する。サブCPU12では、前回実施した余り演算の次の演算、例えば、除算を用いて異常判定を行う。そして、演算値MTEST6が正常値であると判定した場合には、通信OKと判定する。GメインCPU11からの通信が途絶した後、通信は復帰したが正しい演算値が得られなかった場合このような場合としては、以下のケースが想定される。G1T3→T4:メインCPU→サブCPU正常サブ側通信OKG2T4→T5:サブCPU→メインCPU正常メイン側通信OKG3T5→T6:メインCPU→サブCPU正常G4T6→T7:サブCPU→メインCPU正常G5T7→T8:メインCPU→サブCPU通信途絶G6T8→T9:サブCPU→メインCPU通信途絶G7T9→T10:メインCPU→サブCPU通信途絶G8T10→T11:サブCPU→メインCPU通信途絶G9T11→T12:メインCPU→サブCPU正常G10T12→T13:サブCPU→メインCPU正常G11T13→T14:メインCPU→サブCPU異常サブ側通信NG時間T3から時間T7までは、各CPU11,12が正常判定をしていた。この後、時間T7の3回目のメインCPU11からの通信が途絶した。この後、2回の通信途絶を経て、時間T11でメインCPU11からの通信が復活した。時間T11でメインCPU11が送信した演算値MTEST5がサブCPU12で正常値と判定された場合、サブCPU12は、演算値MTEST5の演算パターンに合わせて演算値STEST5を算出する。このとき、メインCPU11が異常動作をしており、演算値MTEST5が本来の順番である余り演算ではなく、除算で算出されていた場合、これに合わせてサブCPU12は除算で演算値STEST5を算出する。そして、時間T13でメインCPU11は、除算の次の演算である加算を用いずに、他の演算、例えば除算で演算値MTEST6を算出し、サブCPU12に送信した。時間T14において、サブCPU12は、前回実施した除算の次の演算、例えば、加算を用いて異常判定を行う。このため、テスト値MTEST、STESTが一致しなくなる。したがって、メインCPU11は、演算値MTEST6が異常値であると判定し、通信NGとする。H動作判定した後に、サブCPU側で異常判定が連続して生じた場合このような場合としては、以下のケースが想定される。H1T3→T4:メインCPU→サブCPU正常サブ側通信OKH2T4→T5:サブCPU→メインCPU正常メイン側通信OKH3T5→T6:メインCPU→サブCPU正常H4T6→T7:サブCPU→メインCPU正常H5T7→T8:メインCPU→サブCPU正常H6T8→T9:サブCPU→メインCPU異常H7T9→T10:メインCPU→サブCPU正常H8T10→T11:サブCPU→メインCPU異常H9T11→T12:メインCPU→サブCPU正常H10T12→T13:サブCPU→メインCPU異常メイン側通信NG時間T3から時間T8までは、各CPU11,12が正常判定をしている。この後、この後、時間T8においてサブCPU12で計算された演算値STEST3が異常値であった場合、メインCPU11がサブCPU12を異常と判定する。一方、メインCPU11は正常動作しているので、時間T9においてメインCPU11で計算した演算値MTEST4に基づいて、サブCPU12は正常判定する。さらに、時間T10においてサブCPU12が計算した演算値MTEST4に基づいて、メインCPU11は、2回目の異常判定を行う。そして、時間T12においてサブCPU12が計算した演算値MTEST5に基づいて、メインCPU11は、3回目の異常判定を行う。異常判定が3回連続したので、メインCPU11のメイン比較部33は通信NGと判定する。これにより、モータ駆動が停止させられる。以降、電子制御装置1のシステムがリセットされるまでメインCPU11は通信を停止する。IサブCPUからの通信が途絶した場合メインCPU11、サブCPU12ともに起動から2回目までの通信は正常だったが、3回目のサブCPU12からの通信が途絶した場合、メインCPU11は所定の時間間隔で演算値MTESTnを送信し続ける。そして、メインCPU11は通信途絶が3回連続した場合に、通信NGとして、モータ駆動を停止させる。以降、システムがリセットされるまでメインCPU11は通信を停止する。JサブCPU12側にリセットがかけられた場合サブCPU12にリセットがかけられると、サブCPU12が再起動するまでの間、サブCPU12からの通信が途絶する。メインCPU11のメイン比較部33は、サブCPU12からの通信が途絶したときの待機時間として、サブCPU12の再起動時間より短い時間が設定されているので、サブCPU12がリセットされたときには通信NGになる。KメインCPU11側にリセットがかけられた場合メインCPU11にリセットがかけられると、メインCPU11が再起動するまでの間、メインCPU11からの通信が途絶する。サブCPU12のサブ比較部43は、メインCPU11からの通信が途絶したときの待機時間として、メインCPU11の再起動時間より短い時間が設定されているので、メインCPU11がリセットされたときには通信NGになる。なお、通信異常と判定するまでに要する動作の異常の回数や通信途絶の回数は、以上のAからKに限定されず、任意の回数にすることが可能である。次に、電子制御装置1におけるモータ制御の概略について説明する。移動体が自動二輪車で、モータ4が車両のエンジンのスロットルバルブの開度を制御するモータである場合、電子制御装置1のメインCPU11には、アクセルグリップの開度の情報が入力される。メインCPU11のモータ制御部21は、エンジンの吸気管の吸気圧などの情報を取得し、スロットルバルブの開度を算出する。一方、メインCPU11とサブCPU12は、それぞれが所定のタイミングで、互いの診断を図2から図4を参照して説明したように実施する。メインCPU11がサブCPU12の正常動作を確認したら、リレー駆動装置15と、モータドライバ16のそれぞれに許可信号を出力する。同様に、サブCPU12がメインCPU11の正常動作を確認したら、リレー駆動装置15と、モータドライバ16のそれぞれに許可信号を出力する。リレー駆動回路15に2つのCPU11,12からの許可信号が入力されると、リレーがオンになって、モータドライバ16がバッテリ2に電気的に接続される。また、メインCPU11は、サブCPU12が通信NGと判定した場合には、モータドライバ16にモータ駆動を停止する指令信号を出力する。一方、サブCPU12は、メインCPU11が通信NGと判定した場合には、モータドライバ16にモータ駆動を停止する指令信号を出力する。ここで、通信NGとは、前記のAからKで説明した場合に各CPU11,12で判定された結果であり、CPU11,12から取得したデータに異常があった場合に加え、CPU11,12からデータが送信されない場合も含まれる。なお、モータ4がスロットルバルブの開度を制御するアクチュエータである場合、各CPU11,12はスロットルバルブが閉状態になる位置でモータ4を停止させる。さらに、メインCPU11は、サブCPU12が異常状態にあるときに、燃料の点火と噴射を停止させる処理を実施させても良い。以上、説明したように、この実施の形態では、メインCPU11とサブCPU12の相互監視をするに当たり、モータ4の制御処理に依存しないテスト値MTEST,STESTと共通値Nとを使用するようにした。これにより、テスト値MTEST,STESTと共通値Nを用いた簡単な計算で相互監視ができるようになる。さらに、モータ4の制御処理に依存しないテスト値MTEST,STESTと共通値Nとを使用したので、モータ4の制御処理の値を使用する場合に比べて、相互監視を行うタイミングを考慮する必要がなくなる。これらのことから、相互監視のためのプログラムを簡略化でき、モータ4の制御処理に影響を及ぼすことはない。また、相互監視のための処理の負担を小さくできるので、処理能力の高いCPUを選択する必要がなくなる。特に、サブCPU12をメインCPU11より低スペックの装置を用いることが可能になる。さらに、モータ4の制御処理の依存しないテスト値MTEST,STESTと共通値Nとを使用するので、機種ごとに相互監視のプログラムを変更する必要がない。製造工程における作業効率を向上できる。また、この相互監視方法では、テスト値MTEST,STESTの取得プロセスや、演算値MTESTn,STESTnの算出処理や、データの送受信処理などのいずれかに不具合が生じた場合でも異常動作と判定されることになる。このため、複数の処理の動作チェックを効率良く行うことができる。特に、テスト値MTEST,STESTに、CPU11,12のコア機能の診断結果を用いた場合には、相互監視の際に、CPU11,12のコア機能の異常を検知できるようになる。CPU11,12のコア機能は、簡単な処理であれば良く、CPU11,12に最初から搭載されているプログラムを使用しても良いし、実施の形態以外の方法であっても良い。なお、図3のフローチャートを参照して説明したコア機能の診断処理を実施すると、CPU11,12の汎用レジスタ、比較命令、分岐命令を一括して診断でき、診断処理を効率化できる。また、メインCPU11とサブCPU12のそれぞれで、演算処理の種類と順番を予め決定したので、2つのCPU11,12の間で送信するデータ量を減少できる。また、演算に用いる共通値Nを予め決定しておくことも2つのCPU11,12の間で送信するデータ量を減少できる。また、例えば、1種類の演算処理では、計算結果が偶然一致する可能性があるが、複数の演算処理を順番に実施するようにしたので、相互監視の精度を向上させることができる。第2の実施の形態本発明を実施するための形態について以下に詳細に説明する。この実施の形態では、テスト値MTEST,STESTとして、バッテリ2の電圧値を取得することを特徴とする。なお、電子制御装置の図1と同様の構成を有する。最初に、図3を参照して、テスト値MTEST,STESTを取得する処理について説明する。なお、以下にはメインCPU11における処理について説明するが、サブCPU12においても同様の処理が行われる。最初に、ステップS201で、MTEST取得部31は、テスト値MTESTの初期値にゼロを代入する。続くステップS202で、MTEST取得部31は、バッテリ2の電圧の物理値Vbattを読み込む。ここで、バッテリ2の電圧値は、メインCPU11に入力された電圧の物理値Vbattを使用する。メインCPU11とサブCPU12とでは、A/D変換の分解能が異なる場合もある為、後述する比較を行うために、A/D変換後のデジタル値を単位換算、即ち物理値変換した値を使用する。ステップS203において、MTEST取得部31は、バッテリ電圧の物理値Vbattと、予め設定されている規格電圧とを比較する。バッテリ電圧の物理値Vbattが、規格電圧以下であったら、ステップS207に進んで、テスト値MTESTに予め登録されている固定値をセットする。なお、固定値がセットされる場合としては、例えば、エンジンの始動時があげられる。エンジン始動時にバッテリ電圧は低くなり易く、安定し難いいが、この場合にはステップS207で固定値が選択されるので、エンジンの始動状態に依らずに相互監視を安定して実施できる。これに対し、ステップS204において、バッテリ電圧の物理値Vbattが、規格電圧以下であったら、ステップS205に進んで、所定時間の間のバッテリ電圧の物理値Vbattの平均値を求める。そして、バッテリ電圧の物理値Vbattの平均値が、予め設定されている規格電圧以下を上回っていたら、ステップS206に進む。これに対し、バッテリ電圧の物理値Vbattの平均値が、予め設定されている規格電圧以下であれば、バッテリ電圧の物理値Vbattの平均値をテスト値MTESTとする。続いて、図2を参照して2つのCPU11,12の間で行われる相互監視処理について説明する。なお、この実施の形態では、一方のCPU11,12は、他方のCPU11,12から取得した演算値MTESTn,STESTnを逆演算処理して得られるテスト値MTEST,STESTと、自身が取得したテスト値MTEST,STESTの差を調べることで、他方のCPU11,12を診断することを特徴とする。最初に、ステップS101において、メインCPU11がテスト値MTESTとしてバッテリの電圧の物理値MVbattを取得し、続いてテスト値MTESTに共通値Nを減算して演算値MTEST1を算出する。演算値MTEST1は、サブCPU12に送信される。ステップS102では、サブCPU12がテスト値STESTを取得し、演算値MTEST1を逆演算した後、テスト値STESTを減算する。テスト値STESTは、サブCPU12において取得したバッテリ電圧の物理値SVbattとする。減算の結果が所定の値X以下であれば、メインCPU11は正常であると判定する。この後、ステップS103で、サブCPU12は、テスト値STESTから共通値Nを減算して演算値STEST1を算出する。演算値STEST1は、メインCPU11に送信される。ステップS104では、メインCPU11が、テスト値MTESTを取得し、演算値STEST1を逆演算する。その後、テスト値MTESTを減算する。テスト値MTESTは、メインCPUにおいて取得したバッテリ電圧の物理値MVbattとする。減算の結果が所定の値X以下であれば、メイン比較部33はサブCPU12が正常であると判定する。この後、メインCPU11は、テスト値MTESTから共通値Nを加算して演算値MTEST2を算出する。演算値MTEST2は、サブCPU12に送信される。以降、同様にして、メインCPU11とサブCPU12とが通信を行いながら、相互監視を実行する。各CPU11,12が異常判定をした場合や、通信が途絶した場合の判定処理については、図5を参照して説明するA~Kと同様である。以上、説明したように、この実施の形態では、テスト値MTEST,STESTに、2つのCPU11,12のそれぞれが取得でき、かつ単位時間当たりの変動量が少ないデータを用いた。これにより、異常判定を行うときのテスト値を略同一の値として扱うことが可能になり、演算値MTESTn,STESTnの演算時と、その評価時のタイミングを同期させる必要がなくなる。ここで、テスト値MTEST,STESTにA/D変換した値を使うことで、メインCPU11とサブCPU12の間のテスト値MTEST,STESTの誤差を小さくできる。さらに、動作不良の判定時には、受信した演算値MTESTn,STESTnから逆演算されるテスト値MTEST,STESTと、自身が取得したテスト値MTEST,STESTの差を調べ、その差が所定値以下のときには動作が正常であると判定するので、テスト値MTEST,STESTとして取得するデータの変動に対する耐性が高くなる。また、テスト値MTEST,STESTにバッテリ電圧をA/D変換した値を用いることで、各CPU11,12のA/D変換機能のチェックも同時に行える。さらに、バッテリ電圧がCPU11,12に安定して供給されていることの確認も行える。これは、A/D変換が正常で実施できない場合や、バッテリ電圧の変動が安定しない場合にも、いずれかのCPU11,12で動作不良と判定されるためである。テスト値MTEST,STESTは、単位時間当たりの変化量が少ないデータであれば良く、例えばエンジンの冷却水の水温や、大気温でも良い。演算は、ソフトウェア的に実施しても良いし、論理回路を用いて計算しても良い。第1のCPUをサブCPUとして使用し、第2のCPUをアクチュエータの制御を実施するメインCPUとしても良い。相互監視を行うCPUの数は、3つ以上でも良い。一方のCPUで他方のCPUの異常判定を行う。電子制御装置1は、移動体のアクチュエータを駆動させる制御装置であれば良く、自動車や電気自動車、船外機など、その他の移動体の電子制御装置でも良い。"