(57)【要約】【課題】ＣＰＵ内部機能診断のために使用しているプログラム基本命令語に異常が発生した場合、ＣＰＵ内部機能診断で異常が検知されないことがある。【解決手段】ＣＰＵ１と、このＣＰＵの動作を監視するＣＰＵ監視装置２を備える電子制御装置において、ＣＰＵ１には、ＣＰＵの内部機能の診断を行うＣＰＵ内部機能診断プログラムと、このＣＰＵ内部機能診断プログラム内でＣＰＵ内部機能診断のために使用しているプログラム基本命令語を診断する基本命令診断プログラムとを含み、基本命令診断プログラム実行後にＣＰＵ内部機能診断プログラムを実行することで、ＣＰＵ内部の機能故障の有無を確実に診断する。【選択図】図６
2009122831.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、このＣＰＵの動作を監視するＣＰＵ監視装置を備える電子制御装置において、前記ＣＰＵには、ＣＰＵの内部機能の診断を行うＣＰＵ内部機能診断プログラムと、このＣＰＵ内部機能診断プログラム内でＣＰＵ内部機能診断のために使用しているプログラム基本命令語を診断する基本命令診断プログラムとを含み、前記基本命令診断プログラム実行後に前記ＣＰＵ内部機能診断プログラムを実行することを特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置おいて、診断対象のプログラム基本命令語は、比較命令、算術演算命令、分岐命令、ロードストア命令、シフト命令、論理演算命令、転送命令のいずれかを含むことを特徴とする電子制御装置。
【請求項３】
請求項１または請求項２に記載の電子制御装置おいて、基本命令診断プログラムとＣＰＵ内部機能診断プログラムを実行した結果、ＣＰＵ内部機能が異常と判断した場合は、異常信号をＣＰＵ監視装置に出力することを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＣＰＵの自己診断機能を備える電子制御装置に関するものである。
【背景技術】
【０００２】
従来、ＣＰＵの自己診断機能を備えた自動車用の電子制御装置として、制御プログラムを実行するＣＰＵとＣＰＵの動作を監視する監視装置からなり、ＣＰＵには例題プログラムを実行する例題演算手段を備え、監視装置は、例題演算手段へ出題データを出力し、出題データを用いた例題演算手段の演算結果に基づいてＣＰＵの異常を判断するようにしたＣＰＵ異常監視システムが知られている。（特許文献１参照）
【０００３】
【特許文献１】特開２０００−２９７３４号公報（図１〜図３）
【０００４】
図１４は、特許文献１に記載されたＣＰＵ異常監視システムを車両のエンジンにおけるスロットル開度の制御を行うＣＰＵに適用した例を示す構成図である。まず、監視装置５０の出題部５１から出題データｚｃを変換部５２とＣＰＵ２０の例題演算部２１へ出力し、変換部５２では、所定の変換を実行し、期待値データａｃを判定部５３および判定部２２へ出力する。
例題演算部２１では、予め制御プログラムで使用される命令を全て含む例題プログラムで出題データを演算し、演算結果ｂｃを判定部２２および判定部５３へ出力する。判定部２２および判定部５３では、期待値データａｃと演算結果ｂｃが一致しない場合には、異常と判断し、フェイルセーフ動作が行われ、モータ６５の電源は遮断される。
【０００５】
また、このようなＣＰＵ異常監視システムでは、制御部２３で実行されるプログラムとして図１５の内容が、例題演算部２１で実行されるプログラムとして図１６の内容が例としてあげられる。図１６は図１５と同様にアセンブラ言語によるプログラムであるが、出題データｚｃの値ｚは、出題部５１から予めＣＰＵ内のＲＯＭに書き込まれた定数であり、アドレスＡＤＲ＿Ｚに格納されている。まずステップ２０１で、転送命令ＭＯＶにより、アドレスＡＤＲ＿Ｚに格納されているｚを汎用レジスタＲ１０に転送する。
【０００６】
ステップ２０２では、同様に転送命令ＭＯＶにより、汎用レジスタＲ１０に格納されているｚを汎用レジスタＲ１１に転送する。ステップ２０３では、乗算命令ＭＵＬにより、汎用レジスタＲ１０の値と汎用レジスタＲ１１の値の乗算を行い、汎用レジスタＲ１０に格納する。従って、汎用レジスタＲ１０にはｚ２が格納される。ステップ２０４では、除算命令ＤＩＶにより汎用レジスタＲ１０の値を汎用レジスタＲ１１の値で除算し、汎用レジスタＲ１０に格納する。従って、汎用レジスタＲ１０にはｚが格納されている。ステップ２０５では、クリア命令ＣＬＲで汎用レジスタＲ１２をクリアする。ステップ２０６では、減算命令ＳＵＢで汎用レジスタＲ１２の値から汎用レジスタＲ１０の値を減算して、汎用レジスタＲ１０へ格納する。従って、汎用レジスタＲ１０には−ｚが格納される。例題演算部２１は演算結果ｂｃとして汎用レジスタＲ１０に格納された−ｚを判定部２２および判定部５３へ出力する。
【０００７】
判定部２２および判定部５３では、それぞれ変換部５２で変換された期待値データａｃと例題演算部２１で演算された演算結果ｂｃを比較する。どちらの値も−ｚであり、一致しているので、判定部２２および判定部５３の出力はＨレベルとなる。従って、ＡＮＤ回路６１の出力もＨレベルになり、トランジスタ６２がオンになり、リレー６３がオンになり、駆動回路６４を介してモータ６５に電源が供給され、制御部２３によりモータ６５が制御される。
一方、ＣＰＵ２０に何らかの異常が生じ、乗算命令ＭＵＬが正常に実行されない場合、監視装置５０では、通常と同様の動作が行われ、変換部５２から、出題データｚｃから変換された期待値データａｃすなわち−ｚが判定部２２および判定部５３へ出力される。ＣＰＵ２０の例題演算部２１では、出題データｚｃから演算結果ｂｃを算出し、判定部２２および判定部５３へ出力する。この場合には、乗算命令ＭＵＬが正常に実行されていないため、演算結果ｂｃの値は、−ｚにはならない。
【０００８】
判定部２２および判定部５３では、期待値データａｃと演算結果ｂｃの値が一致していないので、Ｌレベルが出力される。ＡＮＤ回路６１の出力もＬレベルとなり、トランジスタ６２はオフになり、従ってリレー６３もオフになるため、モータ６５への電源は遮断され、異常の生じたＣＰＵ２０によりモータ６５が制御されることは防止される。
すなわち、判定部５３または判定部２２で異常と判断された場合には、スロットル開度を制御するモータ６５の制御が禁止されるフェイルセーフ動作が行われる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところが、このような従来のＣＰＵ異常監視システムでは図１７に示す問題点が発生する可能性が含まれる。前述のようにＣＰＵ２０に何らかの異常が生じ、ステップ２０３の乗算命令ＭＵＬが実行されなかった時、汎用レジスタＲ１０の値は汎用レジスタＲ１１の値にて乗算されずに汎用レジスタＲ１０には前回値ｚが格納されたままとなる。そして、さらにステップ２０４の除算命令ＤＩＶも実行されなかった時、汎用レジスタＲ１０の値は汎用レジスタＲ１１の値にて除算されずに汎用レジスタＲ１０には前回値ｚが格納されたままとなり、以降のステップ２０５、ステップ２０６が正常に実行された場合には、汎用レジスタＲ１０には−ｚが格納されることとなる。その結果、期待値データａｃと例題演算部２１で演算された演算結果ｂｃの値はどちらも−ｚで一致しているので、判定部２２および判定部５３の出力はＨレベルとなり、乗算命令ＭＵＬと除算命令ＤＩＶが正常に実行されていないにもかかわらず、ＣＰＵ２０の異常は検知されないこととなる。
【００１０】
この発明は、このような従来の監視システムの問題点を解決するもので、乗算命令や除算命令等のプログラム基本命令語に異常が発生した場合でも、確実にＣＰＵの自己診断を実施することが可能なＣＰＵ自己診断機能を備える電子制御装置を提供することを目的とするものである。
【課題を解決するための手段】
【００１１】
この発明は、ＣＰＵと、このＣＰＵの動作を監視するＣＰＵ監視装置を備える電子制御装置において、ＣＰＵには、ＣＰＵの内部機能の診断を行うＣＰＵ内部機能診断プログラムと、このＣＰＵ内部機能診断プログラム内でＣＰＵ内部機能診断のために使用しているプログラム基本命令語を診断する基本命令診断プログラムとを含み、基本命令診断プログラム実行後にＣＰＵ内部機能診断プログラムを実行するようにしたものである。
【発明の効果】
【００１２】
この発明は、ＣＰＵ内部機能診断プログラムを実行する前に、ＣＰＵ内部機能診断で使用しているプログラム基本命令語を診断する基本命令診断プログラムを実行する構成とすることで、対象とする内部機能を診断するためのプログラム基本命令に異常が発生した場合でも、確実にＣＰＵの自己診断を実施することができ、内部診断機能の異常判定精度を向上することができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態１．
以下、この発明の実施の形態１における電子制御装置について、図面を参照しながら説明する。図１はこの発明の実施の形態１における構成を示すブロック図、図２はこの発明の実施の形態１における内部機能診断で診断する命令一覧を示す表、図３はこの発明の実施の形態１における基本命令診断時の照会データと正常に終了した場合の応答データを示す表、図４はこの発明の実施の形態１におけるＣＰＵ−ＣＰＵ監視装置間通信およびＣＰＵ自己診断タイミングを示すタイミング図、図５はＣＰＵが異常な応答データをＣＰＵ監視装置に返信した場合のリセット動作を示すタイミング図、図６はこの発明の実施の形態１におけるＣＰＵ自己診断の処理手順を示すフローチャート図、図７はこの発明の実施の形態１における基本命令診断プログラムの詳細処理を示すフローチャート図、図８はこの発明の実施の形態１における基本命令診断プログラムを説明する図、図９はこの発明の実施の形態１における基本命令診断のプログラムの一例を説明する図、図１０はこの発明の実施の形態１におけるＣＰＵ内部機能診断プログラムの詳細処理を示すフローチャート図、図１１はこの発明の実施の形態１におけるＣＰＵ内部機能診断プログラムを説明する図、図１２はこの発明の実施の形態１における照会データが０６Ｈの場合の応答データを示す図、図１３はこの発明の実施の形態１におけるＣＰＵ監視装置が応答データを受信した後の処理を示すフローチャート図である。
【００１４】
図１において、電子制御装置は、ＣＰＵ（マイクロコンピュータ）１と、このＣＰＵ１の動作を監視するＣＰＵ監視装置２を備えている。ＣＰＵ１は、ＣＰＵ監視装置２との間でシリアル通信を行っている。通信方式は、送信ライン３と受信ライン４を独立で持つ全２重通信方式である。ＣＰＵ監視装置２はＣＰＵ１に対し、定期的に照会データとして１バイトのデータを送信する。ＣＰＵ１は、照会データをシリアル通信装置５にて受信する。受信したデータは、バス６を経由し、ＣＰＵコア（中央演算装置）７やＲＡＭ８に渡される。ＲＯＭ９上には、以下に説明する基本命令診断プログラムおよびＣＰＵ内部機能診断プログラムが書き込まれている。
なおＣＰＵコア（中央演算装置）７にはレジスタＲ０〜Ｒ１３が設けられ、シリアル通信装置５には送信用レジスタＲｔが設けられている。また、ＣＰＵの自己診断を始める際に、ＣＰＵ監視装置２からＣＰＵ１に対してリセット信号ライン１０を介してリセット信号が送信されるようになっている。
【００１５】
基本命令診断プログラムは、ＣＰＵ内部機能診断プログラムで使用しているプログラム基本命令語が正常に実行されているかどうかを診断するプログラムであり、対象とする命令は、比較命令・算術演算命令・分岐命令・ロードストア命令・シフト命令・論理演算命令・転送命令である。
ＣＰＵ内部機能診断プログラムは、ＣＰＵ１内部の機能を全て診断するプログラムであり、内部の機能が正常であれば基本命令診断プログラムで算出された応答データがそのまま保持され、異常であれば応答データを強制的に誤った値に変更する。図２にＣＰＵ内部機能診断で診断する命令一覧を示す。これらの命令は、対象とするＣＰＵ１に準備されている全命令である。また、レジスタＲ０からＲ１３までの診断も内部機能診断にて実施している。
【００１６】
図２の命令一覧において、大略的には、命令欄の先頭３文字にＣＭＰが付されたものが比較命令、先頭３文字にＡＤＤ・ＭＵＬ・ＤＩＶ・ＳＵＢ・ＲＥＭなどが付されたものが算術演算命令、先頭にＢが付されたものが分岐命令、先頭にＬＤ・ＳＴおよびＬＯＣＫが付されたものがロードストア命令、先頭３文字にＳＬＬ・ＳＲＡ・ＳＲＬが付されたものがシフト命令、ＡＮＤ・ＯＲ・ＮＯＴなどが付されたものが論理演算命令、先頭２文字にＭＶなどが付されたものが転送命令である。
また、アドレシッシングモード欄において、「レジスタ直接」とは、命令が操作の対象としてレジスタを指定するものである。「レジスタ間接」とは、命令が操作の対象としてレジスタの値をアドレスとするものを指定する。「レジスタ相対間接」とは、命令が操作の対象として（レジスタの値）＋（１６ビットのデータを３２ビットに符号拡散した値）をアドレスとするものである。「レジスタ更新」とは、命令を実行する前後でアドレスが自動的に±４するものを指定する。「イミディエート」とは、即値を対象とするものである。「ＰＣ相対」とは、ＰＣ（プログラムカウンタ値）＋８ビット、１６ビットまたは２４ビットのデータを３２ビットに符号拡散した値を左に２ビットシフトした値をアドレスとするものである。
また各命令に対するアドレシッシングモード欄の○×は、○はその命令に存在することを、×はその命令に存在しないことを示す。
いずれにしてもこの命令一覧の中身については、この発明には直接に関係ないので、これ以上の説明は省略する。
【００１７】
図３は、基本命令診断プログラムにおいて実行する、照会データと、診断の対象となる基本命令と、診断が正常に終了した場合の応答データ（期待値）を示す表である。この図３における基本命令は、図２の命令を診断するために必要最小限ピックアップした命令を指す。
図３において、例えば、ＣＰＵ１が照会データ００Ｈを受信した時は、ＢＥＱＺ命令（分岐命令）とＳＬＬＩ命令（シフト命令）による演算を施し、応答データを算出する。照会データに対する応答データは予め決められており、基本命令が正常であれば、正しい応答データ（期待値）０ＣＨが算出される。しかし、基本命令が正常に実行されていなければ、間違った応答データが算出されるようプログラムされている。
【００１８】
図４は、ＣＰＵ監視装置２とＣＰＵ１間のシリアル通信の通信タイミングおよびＣＰＵ自己診断処理タイミングを示すタイミング図である。図中、（Ａ）はリセット信号、（Ｂ）はＣＰＵ監視装置２からＣＰＵ１への通信データ、（Ｃ）は基本命令診断およびＣＰＵ内部機能診断の処理タイミング、（Ｄ）はＣＰＵ１からＣＰＵ監視装置２への通信データを示している。
リセット信号（Ａ）がロウ（Ｌ）からハイ（Ｈ）に変化すると、ＣＰＵ１は初期化処理を開始する。その時、ＣＰＵ監視装置２の初期化も同時に行う。初期化が完了すると、ＣＰＵ監視装置２は４０ｍｓ毎に照会データをＣＰＵ１へ送信する。ＣＰＵ１はその照会データを受信し、一定時間毎（ここでは１０ｍｓ毎）に実施する定時間処理において、照会データを用い基本命令診断およびＣＰＵ内部機能診断の処理を行う。診断処理の結果は、応答データとして、次回照会データ受信タイミングに合わせて、ＣＰＵ１からＣＰＵ監視装置２へ送信する。
【００１９】
図５は、ＣＰＵ１が異常な応答データをＣＰＵ監視装置２に返信した場合のリセット動作を示すタイミング図である。ＣＰＵ→ＣＰＵ監視装置通信データ（Ｄ）の(1)から(3)は、正常な応答データが返信されるが、(4)は異常な応答データが返信される。異常な応答データを受信したＣＰＵ監視装置２は、リセット信号回路により、リセット信号をハイ（Ｈ）からロウ（Ｌ）に変化させ、ＣＰＵ（マイクロコンピュータ）１をリセットする。
【００２０】
図６は、この発明の実施の形態１におけるＣＰＵ自己診断の処理手順を示すフローチヤート図で、ＣＰＵ監視装置２からの照会データ受信から、応答データ送信までの処理手順を示す。
図６のステップＳ２０１において、ＣＰＵ１は、ＣＰＵ監視装置２からの受信データを、受信割り込みを設定することにより、割り込みを発生させ取り込んでいる。受信割り込みが発生すると、ステップＳ２０２において、ＣＰＵ監視装置２からの照会データをＣＰＵコア７内のレジスタＲ２に取り込む。ステップＳ２０３は、レジスタＲ２に取り込んだ照会データに対し、基本命令診断プログラムで基本命令語を診断するもので、図３で示した診断対象とする基本命令語（比較命令・算術演算命令・分岐命令・ロードストア命令・シフト命令・論理演算命令・転送命令のいずれかを含むもの）の診断を実行し、使用した基本命令が正常であれば正しい応答データがＣＰＵコア７内のレジスタＲ０に算出される。基本命令に異常があれば、誤った応答データがレジスタＲ０に算出される。ステップＳ２０３の詳細内容については、照会データ０６Ｈの場合を例として、後述する図７及び図８にて説明する。
【００２１】
ステップＳ２０４は、ＣＰＵ内部機能診断プログラムでＣＰＵ内部の機能診断を実施するものである。レジスタＲ０には基本命令診断で実施した応答データが保存されている。ＣＰＵ内部の機能診断において異常箇所が存在する場合は、レジスタＲ０のデータを異常値（ＦＦＨ）に書き換える。全ての内部機能診断を終了すると、レジスタＲ０の値をシリアル通信装置５内の送信用レジスタＲｔにセットする。ステップＳ２０４の詳細内容については、後述する図１０及び図１１にて説明する。
ステップＳ２０５では、送信用レジスタＲｔにデータがセットされると、シリアル通信装置５からＣＰＵ監視装置２に診断結果のデータが送信される。そしてステップＳ２０６でＣＰＵ１内での自己診断が終了する。
このようにして、ＣＰＵ監視装置２からの受信データ（照会データ）に対し、基本命令診断のプログラムを先に実行し、その後ＣＰＵ内部機能診断のプログラムを実行する。そして基本命令診断およびＣＰＵ内部機能診断を実行した結果、生成される応答データをＣＰＵ監視装置２に送信することにより、ＣＰＵ監視装置２はＣＰＵ１の異常を確実に監視することが可能となる。
【００２２】
図７は、図６のフローチャート図中、ステップＳ２０３の基本命令診断プログラムにおける詳細処理を、照会データ０６Ｈの場合を例として説明したフローチャート図で、図８は図７のフローチャート図に対応したプログラムを示す。また、図７と図８のステップＮｏ．は合わせている。
照会データ０６Ｈの場合、対象となる基本命令語は図３から明らかなようにＢＮＥＺ命令（分岐命令）である。先ず図７のステップＳ３０１でスタートした後に、ステップＳ３０２において、レジスタＲ０の内容と００Ｈを比較する。このステップＳ３０２のプログラムは図８ではＲ０，＿ＥＲＲＯＲ＿ＩＮＱとなっているが、これはレジスタＲ０の内容がゼロであるならばＥＲＲＯＲ＿ＩＮＱへ分岐し、そうでなければＳ３０３を実行するという意味である。レジスタＲ０の初期値は、予め００Ｈが設定されているため、ＢＮＥＺ命令が正常（Ｙｅｓ）であればステップＳ３０３へ進み、レジスタＲ０へ０ＦＨ（正答値）を代入し、ステップＳ３０４へ進む。しかし、ＢＮＥＺ命令が異常（Ｎｏ）であればステップＳ３０５へ進み、レジスタＲ０へ０３Ｈ（誤答値）を代入する。
【００２３】
ステップＳ３０４において、再度レジスタＲ０と００Ｈを比較する。このステップＳ３０４のプログラムは図８ではＲ０，＿ＣａｌｃｕｌａｔｅＲｅｓｐｏｎｓｅ０×０６＿Ｅとなっているが、これはレジスタＲ０の内容がゼロであるならＣａｌｃｕｌａｔｅＲｅｓｐｏｎｓｅ０×０６＿Ｅへ分岐し、そうでなければＳ３０５を実行するという意味である。レジスタＲ０には０ＦＨが代入されているので、ＢＮＥＺ命令が正常（Ｎｏ）であれば、ステップＳ３０６へ進み、レジスタＲ０に正答値が代入された状態で、終了となる。ＢＮＥＺ命令が異常（Ｙｅｓ）であれば、ステップＳ３０５へ進み、レジスタＲ０へ０３Ｈ（誤答値）を代入し、ステップＳ３０６へ進む。
【００２４】
ここで、ステップＳ３０３とステップＳ３０５でレジスタＲ０に値を代入するのはＬＤＩ命令（ロードストア命令）を使用している。ＬＤＩ命令は、図３に示すように照会データ０１Ｈを受信した時の基本命令診断の診断対象命令となっており、正常であることが証明されている。そのプログラムを図９に示す。レジスタＲ０には予め００Ｈが設定されているため、ステップＳ１００１のＬＤＩ命令が正常に動作すると、レジスタＲ０の値は正答値である０３Ｈとなる。しかし、ＬＤＩ命令が正常に動作しないと０３Ｈ以外の値となり、レジスタＲ０の値は誤答値となる。
【００２５】
図１０は、図６のフローチャート図中、ステップＳ２０４のＣＰＵ内部機能診断プログラムの詳細処理を、ＡＤＤ命令を例として説明したフローチャート図で、また、図１１に図１０のフローチャート図に対応したプログラムを示す。ここで、図１０と図１１のステップＮｏ．は合わせている。
先ず図１０のステップＳ４０１でスタートした後に、ステップＳ４０２において、ＦＦＦＦ５５５５Ｈ（最後のＨは１６進数を指す）というデータが定義されているＲＯＭ９上の先頭アドレスをＣＰＵコア７内のレジスタＲ１へ代入する。このステップＳ４０２のプログラムは図１１では、ＬＤ２４  Ｒ１，＃＿ＦＦＦＦ５５５５と記載されているが、この意味は＿ＦＦＦＦ５５５５というラベルが定義されているアドレスをレジスタＲ１へロードするということである。
【００２６】
ステップＳ４０３では、レジスタＲ１に格納されているアドレスに定義されているデータを、レジスタＲ２へ代入する。つまり、ＦＦＦＦ５５５５ＨがレジスタＲ２へ格納される。このステップＳ４０３のプログラムは図１１では、ＬＤ  Ｒ２，＠Ｒ１と記載されているが、この意味はレジスタＲ１のアドレスに定義されているデータをレジスタＲ２にロードするということである。ステップＳ４０４では、５５５５ＦＦＦＦＨというデータが定義されているＲＯＭ９上の先頭アドレスをレジスタＲ１へ代入している。ステップＳ４０５では、レジスタＲ１に格納されているアドレスに定義されているデータを、レジスタＲ３へ代入する。つまり、５５５５ＦＦＦＦＨがレジスタＲ３へ格納される。
【００２７】
ステップＳ４０６では、レジスタＲ２の内容とレジスタＲ３の内容とのＡＮＤをとり、その結果をレジスタＲ２へ代入している。つまり、ＦＦＦＦ５５５５Ｈ（２進数で表示すると、１１１１１１１１１１１１１１１１０１０１０１０１０１０１０１０１Ｂ）と５５５５ＦＦＦＦＨ（２進数で表示すると、０１０１０１０１０１０１０１０１１１１１１１１１１１１１１１１１Ｂ）のＡＮＤをとると、結果は５５５５５５５５Ｈ（２進数で表示すると、０１０１０１０１０１０１０１０１０１０１０１０１０１０１０１０１Ｂ）となる。この結果をレジスタＲ２へ格納する。
【００２８】
次にステップＳ４０７では、ＡＡＡＡＡＡＡＢＨというデータが定義されているＲＯＭ９上の先頭アドレスをレジスタＲ１へ代入している。ステップＳ４０８では、レジスタＲ１に格納されているアドレスに定義されている内容を、レジスタＲ３へ代入する。ステップＳ４０９では、レジスタＲ２の内容とレジスタＲ３の内容を加算し、結果をレジスタＲ２へ格納している。つまり、５５５５５５５５Ｈ（２進数で表示すると、０１０１０１０１０１０１０１０１０１０１０１０１０１０１０１０１Ｂ）とＡＡＡＡＡＡＡＢＨ（２進数で表示すると、１０１０１０１０１０１０１０１０１０１０１０１０１０１０１０１１Ｂ）を加算すると、結果は１００００００００Ｈ（２進数で表示すると、１００００００００００００００００００００００００００００００００Ｂ）となるが本ＣＰＵ１は３２ビットＣＰＵであるため、結果は００００００００Ｈとなる。この結果がレジスタＲ２に格納される。
【００２９】
ステップＳ４１０ではレジスタＲ２が００００００００Ｈかどうかを判定し、００００００００Ｈであればこれまでの演算が正しいので、ステップＳ４１２にジャンプし終了する。この時レジスタＲ０は、基本命令診断時に格納された値がそのまま保持されている。ステップＳ４１０において、レジスタＲ２が００００００００Ｈでなければ、ステップＳ４１１にてＦＦＨをレジスタＲ０に格納する。これは、ＣＰＵ監視装置２へ送信する応答データを誤答値に置き換えているということになる。
【００３０】
図１２に照会データが０６Ｈの場合の応答データを示すが、基本命令診断とＣＰＵ内部機能診断が共に正常に終了した場合は、応答データは正答値である０ＦＨとなる。ＣＰＵ内部機能診断が異常終了した場合は、応答データはＦＦＨとなり、基本命令診断が異常終了した場合は、応答データは０３Ｈとなり誤答となる。両方共異常終了した場合も応答データはＦＦＨとなり誤答となる。
したがってこの応答データによって、基本命令診断とＣＰＵ内部機能診断のどちらが異常であるかが分かり、特に基本命令語の異常によるＣＰＵ内部機能の診断ミスをなくすことができる。
【００３１】
図１３は、ＣＰＵ監視装置２がＣＰＵ１から応答データを受信した後の処理を示すフローチャート図である。
先ず、ステップＳ５０１のスタートの後に、ステップＳ５０２にてＣＰＵ１からの応答データ（ｎ）を受信する。ＣＰＵ監視装置２は、自らがＣＰＵ１へ送信した照会データに対するＣＰＵ１からの応答データの期待値を計算しており、ステップＳ５０２では受信した応答データと期待値を比較し、一致しているかを判断している。一致している場合は、ステップＳ５０５へと進み正常終了する。一致していない場合は、ステップＳ５０４によりＣＰＵ１のリセット処理を実行する。尚、これらの処理は、プログラムで実行されているのではなく、ＣＰＵ監視装置２内に組まれた電気回路により実行される。
【００３２】
以上のようにこの発明はＣＰＵ内部機能診断プログラムを実行する前に、ＣＰＵ内部機能診断で使用している基本命令語を診断する基本命令診断プログラムを実行する構成とすることで、対象とする内部機能を診断するためのプログラム基本命令に異常が発生した場合でも、確実にＣＰＵの自己診断を実施することができる。
【図面の簡単な説明】
【００３３】
【図１】この発明の実施の形態１における構成を示すブロック図である。
【図２】この発明の実施の形態１における内部機能診断で診断する命令一覧を示す表である。
【図３】この発明の実施の形態１における基本命令診断時の照会データと正常に終了した場合の応答データを示す表である。
【図４】この発明の実施の形態１におけるＣＰＵ−ＣＰＵ監視装置間通信およびＣＰＵ自己診断タイミングを示すタイミング図である。
【図５】ＣＰＵが異常な応答データをＣＰＵ監視装置に返信した場合のリセット動作を示すタイミング図である。
【図６】この発明の実施の形態１におけるＣＰＵ自己診断の処理手順を示すフローチャート図である。
【図７】この発明の実施の形態１における基本命令診断プログラムの詳細処理を示すフローチャート図である。
【図８】この発明の実施の形態１における基本命令診断プログラムを説明する図である。
【図９】この発明の実施の形態１における基本命令診断のプログラムの一例を説明する図である。
【図１０】この発明の実施の形態１におけるＣＰＵ内部機能診断プログラムの詳細処理を示すフローチャート図である。
【図１１】この発明の実施の形態１におけるＣＰＵ内部機能診断プログラムを説明する図である。
【図１２】この発明の実施の形態１における照会データが０６Ｈの場合の応答データを示す図である。
【図１３】この発明の実施の形態１におけるＣＰＵ監視装置が応答データを受信した後の処理を示すフローチャート図である。
【図１４】従来例の構成を示す図である。
【図１５】従来例における制御プログラムを説明する図である。
【図１６】従来例における例題プログラムを説明する図である。
【図１７】従来例における例題プログラムの問題点を説明する図である。
【符号の説明】
【００３４】
１：ＣＰＵ
２：ＣＰＵ監視装置
３：ＣＰＵ→ＣＰＵ監視装置シリアル通信ライン
４：ＣＰＵ監視装置→ＣＰＵシリアル通信ライン
５：シリアル通信装置
６：バス
７：ＣＰＵコア（中央演算装置）
８：ＲＡＭ（基本命令診断プログラムとＣＰＵ内部機能診断プログラムを記憶）
９：ＲＯＭ
１０：リセット信号ライン
Ｒ０Ｒ〜１３：レジスタ
Ｒｔ：送信用レジスタ
【図１】
2009122831.tif 000003
【図２】
2009122831.tif 000004
【図３】
2009122831.tif 000005
【図４】
2009122831.tif 000006
【図５】
2009122831.tif 000007
【図６】
2009122831.tif 000008
【図７】
2009122831.tif 000009
【図８】
2009122831.tif 000010
【図９】
2009122831.tif 000011
【図１０】
2009122831.tif 000012
【図１１】
2009122831.tif 000013
【図１２】
2009122831.tif 000014
【図１３】
2009122831.tif 000015
【図１４】
2009122831.tif 000016
【図１５】
2009122831.tif 000017
【図１６】
2009122831.tif 000018
【図１７】
2009122831.tif 000019