(57)【特許請求の範囲】
【請求項１】
複数のモジュールの実行順序が予め決められている制御プログラムを実行する自動車用の電子制御装置であって、
入力データに対して、予め定められた演算を施し、その演算結果を出力する演算器と、
前記制御プログラムの最初のモジュールを実行する場合、前記モジュールの識別データ及び初期値を前記演算器に代入し、前記制御プログラムの２番目以降の各モジュールを実行する場合、前記モジュールの識別データ及び直前に実行したモジュールに係る前記演算器の出力データを前記演算器に順次代入し、前記演算器から最終的に出力された出力データと基準データとの比較に基づいて、前記モジュールの前記実行順序を評価する評価部と、
を備え、
前記演算結果を出力する前記演算器の演算処理を代替する演算プログラムを、各種の電子機器を始動させるために必要な初期化処理の完了後に１回実行して前記基準データを求め、その後、前記制御プログラムの各モジュールを実行する毎に、前記演算処理を前記演算器にて実行して、前記基準データと比較することによって前記モジュールの前記実行順序を評価することを特徴とする電子制御装置。
【請求項２】
前記制御プログラムの最初の前記モジュールの識別データ及び初期値に対して、前記予め定められた演算を施し、その演算結果を求め、前記制御プログラムの２番目以降の各モジュールについては、前記モジュールの識別データ及び直前に実行したモジュールに係る演算結果に対して前記予め定められた演算を順次施し、最終的に求められた演算結果を前記基準データとする基準データ設定部を更に備えることを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記演算器は、ＣＲＣ演算器であることを特徴とする請求項１又は請求項２に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車に搭載する電子制御装置に関する。
【背景技術】
【０００２】
自動車の電子制御装置における機能安全のソフトウェア設計のコンセプトとして、プログラムを構成する複数のモジュールの機能安全の適用に関し、例えば、自動車用機能安全規格（ISO 26262）では、ハザードを評価する指標としてＡＳＩＬ（Automotive Safety Integrity Level）が提案されている。ＡＳＩＬでは、過酷度（Severity）、ハザードの発生頻度（probability of Exposure）、回避可能性（Controllability）等でクラス分けし、それに見合った設計レベルによる開発が要求されている。
【０００３】
一方で、現行のソフトウェアには、機能安全の適用が不要なクラスに分類されるモジュール（QM：Quality Management）も存在する。そのため、ソフトウェアのシステムにおいて、設計レベルの違いにより安全関連部分（ASIL）と非安全関連部分（QM）とが混在する場合、自動車用機能安全規格のＦＦＩ（Freedom from Interference）に基づいて、互いに非干渉であることの保証が求められ、実質的に独立していなければならないことが要求される。
【０００４】
ここで、ＦＦＩに基づく独立性の実現手法の１つとして、例えば、安全関連部分（ASIL）のモジュール（セーフティモジュール（SM：Safety Module）ともいう。）においては、複数のモジュールの実行により所定の機能安全を発揮する場合、モジュール間の実行順序を監視することが望ましい。
【０００５】
そこで、従来、モジュールの実行順序にエラーが発生した場合、そのエラーの発生の有無を検出する診断方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１７５４９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来例では、実行順序の正否に関し、モジュールを実行する毎に正しい順序で行われているか否かを判定しなければならず、プロセッサの処理負荷が増大するおそれがある。
【０００８】
そこで、本発明は、上記問題点に鑑み、処理負荷を抑制しつつモジュール間の実行順序の正否を評価する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数のモジュールの実行順序が予め決められている制御プログラムを実行する自動車用の電子制御装置であって、入力データに対して、予め定められた演算を施し、その演算結果を出力する演算器と、制御プログラムの最初のモジュールを実行する場合、モジュールの識別データ及び初期値を演算器に代入し、制御プログラムの２番目以降の各モジュールを実行する場合、モジュールの識別データ及び直前に実行したモジュールに係る演算器の出力データを演算器に順次代入し、演算器から最終的に出力された出力データと基準データとの比較に基づいて、モジュールの実行順序を評価する評価部と、を備え、演算結果を出力する演算器の演算処理を代替する演算プログラムを、各種の電子機器を始動させるために必要な初期化処理の完了後に１回実行して基準データを求め、その後、制御プログラムの各モジュールを実行する毎に、演算処理をその演算器にて実行して、基準データと比較することによってモジュールの実行順序を評価する。
【発明の効果】
【００１０】
本発明によれば、処理負荷を抑制しつつモジュール間の実行順序の正否を評価できる。また、本発明によれば、演算結果を出力する演算器の演算処理を代替する演算プログラムを、各種の電子機器を始動させるために必要な初期化処理の完了後に１回実行して基準データを求め、その後、制御プログラムの各モジュールを実行する毎に、演算処理をその演算器にて実行して、基準データと比較することによってモジュールの実行順序を評価するので、ソフトウェアの負荷が軽減され、演算処理が高速化される。
【図面の簡単な説明】
【００１１】
【図１】本実施形態におけるＥＣＵ（Electronic Control Unit）の構成例を示す図である。
【図２】本実施形態における制御プログラムの一例を示す説明図である。
【図３】本実施形態の動作処理の概要を示す説明図である。
【図４】本実施形態における演算処理方法の動作の一例を示すフローチャートである。
【図５】図４に示すフローチャートの流れを模式的に示した説明図である。
【図６】本実施形態における演算処理方法の動作の一例を示すフローチャートである。
【図７】図６に示すフローチャートの流れを模式的に示した説明図である。
【発明を実施するための形態】
【００１２】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
[ＥＣＵの構成例]
図１は、本実施形態におけるＥＣＵの構成例を示すブロック図である。図１に示すＥＣＵ１は、自動車に搭載された各種の電子機器２０、例えば、電子制御式のスロットル弁、燃料噴射弁、変速機、電動ブレーキシステム、ＡＢＳ（Antilock Brake System）、可変バルブタイミング機構等（図示省略）を制御するものである。本実施形態では、説明の便宜上、各種の電子機器２０を１つのブロック図で表している。
【００１３】
図１に示す通り、ＥＣＵ１は、プロセッサ１１と、通信回路１２と、ＲＯＭ（Read Only Memory）１３と、ＲＡＭ（Random Access Memory）１４と、ＣＲＣ（Cyclic Redundancy Check）演算器１５と、バス１６と、を備える。プロセッサ１１、通信回路１２、ＲＯＭ１３、ＲＡＭ１４及びＣＲＣ演算器１５は、バス１６を介して、互いに接続されている。また、ＥＣＵ１は、通信回路１２を介して自動車のエンジンを制御する各種の電子機器２０と接続されている。なお、ＣＲＣ演算器１５は、演算器の一例である。
【００１４】
プロセッサ１１は、例えば、システムの中心的な処理を担うＣＰＵ（Central Processing Unit）であって、ＥＣＵ１の統括的な制御を行うものである。また、プロセッサ１１は、評価部や基準データ設定部の一例としても機能する。通信回路１２は、各種の電子機器２０に接続するための通信インターフェースを提供する。なお、通信回路１２は、例えば、ＣＡＮ（Controller Area Network）の通信プロトコルを実現するバスコントローラ（ＣＡＮコントローラ）を含んでいる。
【００１５】
ＲＯＭ１３は、例えば、フラッシュＲＯＭ等、電源（図示省略）からの電源供給を遮断してもデータが保持される不揮発性の半導体メモリである。ＲＡＭ１４は、例えば、演算処理等に用いられるデータの一時的な作業領域となるメモリであって、電源供給が遮断されると、記憶内容が消える揮発性メモリである。なお、ＲＡＭ１４は、例えば、ダイナミックＲＡＭやスタティックＲＡＭであってもよい。
【００１６】
ＣＲＣ演算器１５は、入力データに対して、所定規則の演算を施し、その演算結果を出力する演算器の一例であって、例えば、巡回冗長検査用の電子回路からなる。但し、本実施形態では、ＣＲＣ演算器１５をモジュールの実行順序を評価する手段として用いる。詳細については、フローチャート等を用いて説明する。バス１６は、例えば、ＣＡＮ通信のデータ転送等に利用することができる。
【００１７】
また、ＥＣＵ１は、プロセッサ１１、ＲＯＭ１３、ＲＡＭ１４、ＣＲＣ演算器１５等のハードウェアと、ＲＯＭ１３に記憶されている制御プログラムやＣＲＣ演算プログラム等のソフトウェアとが協働することにより、各種機能を実現する。この制御プログラムには、本実施形態の複数のモジュールが含まれる。したがって、プロセッサ１１は、制御プログラムを実行しているときに、本実施形態のＣＲＣ演算処理を実現する。
【００１８】
図２は、本実施形態における制御プログラムの一例を示す説明図である。図２に示す制御プログラムＰ１は、例えば電子制御式のスロットル弁（図示省略）の制御に用いる。この制御プログラムＰ１は、スロットル弁の制御を実現するため、複数のモジュールＭ（１〜ｎ）から構成される。なお、説明を分かりやすくするため、ｎ＝４に簡略化した場合について例示する。具体的には、制御プログラムＰ１は、プロセッサ１１により実行され、アクセルポジションセンサ（ＡＰＳ：Accel Position Sensor）処理用のモジュールＭ１、スロットルポジションセンサ（ＴＰＳ：Throttle Position Sensor）処理用のモジュールＭ２、目標開度の演算処理用のモジュールＭ３、デューティ出力処理用のモジュールＭ４を含む。
【００１９】
ＡＰＳ処理用のモジュールＭ１は、アクセル開度（アクセルペダルの踏み込み量）を検出する処理を実行する。ＴＰＳ処理用のモジュールＭ２は、スロットル弁の実開度を検出する処理を実行する。目標開度の演算処理用のモジュールＭ３は、例えば、アクセル開度及びその変化量に基づいて、目標開度を演算する。デューティ出力処理用のモジュールＭ４は、スロットル弁の実開度と目標開度とを比較し、実開度と目標開度が一致するように、スロットル弁の開度を調節するモータの駆動デューティを求め、フィードバック制御により、スロットル弁の開度を調節する。
【００２０】
ここで、本実施形態では、安全関連部分（ASIL）に分類される複数のモジュールで構成される種々の制御プログラムにおいて、各モジュールに識別データを付与する。本実施形態では、一例として識別データをモジュールの実行順序に従ってシーケンスに付与する。例えば、識別データは、モジュールのプログラムに書き込まれている。ここで、制御プログラムＰ１の各モジュールの識別データＩＤ（ｎ）として、一例として、ＩＤ（１）＝１、ＩＤ（２）＝２、ＩＤ（３）＝３、ＩＤ（４）＝４とする。そして、本実施形態では、モジュールＭ１にＩＤ（１）、モジュールＭ２にＩＤ（２）、モジュールＭ３にＩＤ（３）、モジュールＭ４にＩＤ（４）を付与する。
[本実施形態の動作処理]
【００２１】
図３は、本実施形態の動作処理の概要を示す説明図である。以下の説明では、制御プログラムについては、スロットル弁の開度を調節する制御プログラムＰ１について適用するが、これに限定されるものではない。
【００２２】
イグニッションスイッチ（ＩＧＮＳＷ）がオンされると、ＥＣＵ１のプロセッサ１１は、各種の電子機器２０を始動させるために必要な初期化処理を開始する。初期化処理が完了すると、プロセッサ１１は、プログラムの流れを監視するフローチェック対象の制御プログラムＰ１について、実行順序の確認処理として、実際の駆動制御は行わずにソフトウェアに基づくＣＲＣ演算処理のみを実行し、各モジュールの実行順序を再確認する。但し、ソフトウェアの負荷を鑑み、プロセッサ１１は、ソフトウェアに基づくＣＲＣ演算処理を初期化処理後に１回のみ実行し、その後は、ハードウェアに基づくＣＲＣ演算処理をＣＲＣ演算器１５にて実行する。これにより、ソフトウェアの負荷が軽減される。
【００２３】
具体的には、プロセッサ１１は、基準データ設定部の一例として、ＣＲＣ演算器１５の演算処理を代替するＣＲＣ演算プログラムＰ２を用いる。これにより、プロセッサ１１は、制御プログラムＰ１における最初のモジュールの識別データ及びＣＲＣ演算処理の初期値（以下「ＣＲＣ初期値」という。）に対して、巡回冗長検査における所定規則の演算を施し、その演算結果を求める。
【００２４】
続いて、プロセッサ１１は、制御プログラムＰ１の２番目以降の各モジュールについて、今回のモジュールの識別データ及び直前に実行したモジュールに係る演算結果に対してその所定規則の演算を順次施す。より詳細には、プロセッサ１１は、ｎ＝２から、モジュールの総数（ｎ）まで、ｎ番目のモジュールの識別データ及び直前に実行したｎ−１番目のモジュールに係る演算結果に対してその所定規則の演算を順次施す。そして、プロセッサ１１は、最終的に求められた演算結果を、実行順序を評価する基準データとする。つまり、プロセッサ１１は、このＣＲＣ演算処理により、基準データを取得する。なお、基準データについては、予めＲＯＭ１３に記憶しておくようにしてもよい。
【００２５】
そして、通常制御に移行すると、プロセッサ１１は、制御プログラムＰ１の各モジュールを実行する毎に、ＣＲＣ演算処理をＣＲＣ演算器１５にて実行する。これにより、ＣＲＣ演算処理が高速化される。そして、プロセッサ１１は、キーオフによりイグニッションスイッチ（ＩＧＮＳＷ）がオフされ、シャットダウンをする終了処理に移行する前まで、フローチェックにより各モジュールの実行順序を監視する。そして、プロセッサ１１は、ＣＲＣ演算器１５が出力するＣＲＣ値に基づいて、ＣＲＣエラーが発生した場合には、例えば予め規定している異常発生時のフェールセーフ制御を実行する。なお、ＣＲＣ値は出力データの一例である。以下、本実施形態の動作処理の詳細について説明する。
【００２６】
図４は、本実施形態における演算処理方法の動作の一例を示すフローチャートである。プロセッサ１１は、このフローチャートを初期化処理が完了すると実行する。具体的には、プロセッサ１１は、ソフトウェアに基づくＣＲＣ演算処理を実行し、最終的に得られた演算結果のＣＲＣ値を基準データとして求める。なお、説明を分かりやすくするため、図２に示す制御プログラムＰ１を例示して以下説明を続ける。
【００２７】
ステップＳ１０１：プロセッサ１１は、プログラムのループ処理用の変数ｎに０（ゼロ）を代入する。
ステップＳ１０２：プロセッサ１１は、ｎを、１ずつインクリメントする処理を実行する。
【００２８】
ステップＳ１０３：プロセッサ１１は、ｎ番目のモジュールについて、ＣＲＣ演算プログラムＰ２を実行する。具体的には、プロセッサ１１は、例えばｎ＝１の場合、１番目のモジュールの識別データ（ＩＤ（１））と、ＣＲＣ初期値を入力データとして、ＣＲＣ演算プログラムＰ２を実行する。なお、ＣＲＣ演算プログラムＰ２のアルゴリズムは、誤り検出方式の一例であって、検査用のデータを値とみなして、所定の定数で割った余り（余剰）を用いて誤りの検知を行う演算方法である。また、ＣＲＣ初期値は、例えば、任意のデータ列の値であってよい。
【００２９】
ここで、ＣＲＣ演算については、例えば、ＣＲＣ演算に用いる生成多項式に応じて様々な種類が公知であるが、本実施形態のように２つの入力パラメータに基づいて、毎回、ＣＲＣ値が求めることができれば、特に限定されない。ＣＲＣ演算プログラムＰ２は、ＣＲＣ演算を実行することにより、演算結果のＣＲＣ値として、例えば、ｎ番目のモジュールについてＣＲＣ（ｎ）を求める。
【００３０】
ステップＳ１０４：プロセッサ１１は、ｎの値が制御プログラムＰ１のモジュールの総数に達したか否かを判定する。総数に達した場合（ステップＳ１０４：Ｙｅｓ）、ステップＳ１０５の処理に移行し、総数に達していない場合（ステップＳ１０４：Ｎｏ）、ステップＳ１０２の処理に戻り、ｎの値をインクリメント（ｎ＝ｎ＋１）する。
ステップＳ１０５：プロセッサ１１は、ＣＲＣ（ｎ）を、制御プログラムＰ１のモジュールの実行順序を評価する基準データとして求める。そして、プロセッサ１１は、その基準データをＲＡＭ１４に記憶する。
【００３１】
図５は、図４に示すフローチャートの流れを模式的に示した説明図である。図５（ａ）に示す通り、プロセッサ１１は、ＡＰＳ処理用のモジュールＭ１に対応する識別データ（ＩＤ（１））と、ＣＲＣ演算のＣＲＣ初期値とを入力データとして、ＣＲＣ演算プログラムＰ２を実行する。このＣＲＣ演算プログラムＰ２は、１回目の演算処理の演算結果として、ＣＲＣ（１）を求める。
【００３２】
次に、図５（ｂ）に示す通り、プロセッサ１１は、ＴＰＳ処理用のモジュールＭ２に対応する識別データ（ＩＤ（２））と、直前のＣＲＣ（ｎ−１）であるＣＲＣ（１）とを入力データとして、ＣＲＣ演算プログラムＰ２を実行する。ＣＲＣ演算プログラムＰ２は、２回目の演算処理の演算結果として、ＣＲＣ（２）を求める。
【００３３】
ここで、ＣＲＣ（１）には、ＡＰＳ処理に対応する識別データ（ＩＤ（１））を用いてＣＲＣ演算された結果が含まれている。さらに、ＣＲＣ（２）には、ＴＰＳ処理に対応する識別データ（ＩＤ（２））を用いてＣＲＣ演算された結果が含まれている。もし、ＣＲＣ演算の順序が逆の場合、ＣＲＣ（１）及びＣＲＣ（２）は、異なった値となる。
【００３４】
つまり、ＣＲＣ（１）には、ＡＰＳ処理に対応する識別データ（ＩＤ（１））を用いた演算結果が反映され、ＣＲＣ（２）には、ＡＰＳ処理に対応する識別データ（ＩＤ（１））を用いた演算結果のみならず、さらに、次の実行順序であるＴＰＳ処理に対応する識別データ（ＩＤ（２））を用いた演算結果が反映されている。
【００３５】
次に、プロセッサ１１は、図５（ｃ）に示す通り、プロセッサ１１は、目標開度の演算処理に対応する識別データ（ＩＤ（３））と、ＣＲＣ（２）とを入力データとして、ＣＲＣ演算プログラムＰ２を実行する。このＣＲＣ演算プログラムＰ２は、３回目の演算処理の演算結果として、ＣＲＣ（３）を求める。ＣＲＣ（３）は、ＣＲＣ（２）と比較して、さらに、次の実行順序である目標開度の演算処理に対応する識別データ（ＩＤ（３））を用いた演算結果が反映されている。
【００３６】
次に、プロセッサ１１は、図５（ｄ）に示す通り、デューティ出力処理に対応する識別データ（ＩＤ（４））と、ＣＲＣ（３）のデータとを入力データとして、ＣＲＣ演算プログラムＰ２を実行する。このＣＲＣ演算プログラムＰ２は、４回目の演算処理の演算結果として、ＣＲＣ（４）を求める。ＣＲＣ（４）は、ＣＲＣ（３）と比較して、さらに、次の実行順序であるデューティ出力処理に対応する識別データ（ＩＤ（４））を用いた演算結果が反映されている。
【００３７】
続いて、プロセッサ１１は、このＣＲＣ演算プログラムＰ２を終了すると、ＣＲＣ（４）をＲＡＭ１４に記憶する。ＣＲＣ（４）は、ＡＰＳ処理、ＴＰＳ処理、目標開度の演算処理、デューティ出力処理というように予め設定した実行順序を評価する基準データとして利用することができる。つまり、本実施形態では、図４に示すフローチャートにて実行したＣＲＣ演算の最終結果のＣＲＣ（ｎ）を基準データとして利用する。
【００３８】
次に、通常制御時における演算処理方法の動作について説明する。
図６は、本実施形態における演算処理方法の動作の一例を示すフローチャートである。プロセッサ１１は、図４に示すフローチャートの処理が終了した後、キーオフ操作によりイグニッションスイッチ（ＩＧＮＳＷ）がオフされるまで、チェックフロー対象の制御プログラムＰ１を実行する毎に図６に示すフローチャートを実行する。
【００３９】
このフローチャートの概要について説明すると、プロセッサ１１は、制御プログラムＰ１の最初のモジュールを実行する場合、そのモジュールの識別データ及びＣＲＣ初期値をＣＲＣ演算器１５に代入し、ＣＲＣ値を求める。そして、プロセッサ１１は、制御プログラムＰ１の２番目以降の各モジュールを実行する場合、モジュールの識別データ及び直前に実行したモジュールに係るＣＲＣ演算器１５から出力されたＣＲＣ値をそのＣＲＣ演算器１５に順次代入する。さらに、プロセッサ１１は、最後に実行したモジュールに係るＣＲＣ演算器１５から出力されたＣＲＣ値と基準データとの比較に基づいて、モジュールの実行順序を評価する。
【００４０】
ステップＳ２０１：プロセッサ１１は、プログラムのループカウンタ用の変数ｎに０（ゼロ）を代入する。
ステップＳ２０２：プロセッサ１１は、ｎを、１ずつインクリメントする処理を実行する。
【００４１】
ステップＳ２０３：プロセッサ１１は、事象が発生したモジュールの識別データに基づいて、ｎ番目のモジュールの処理を実行する。一例として、プロセッサ１１は、１番目（ｎ＝１）としてＡＰＳ処理を実行する。
【００４２】
ステップＳ２０４：プロセッサ１１は、実行順序のチェックポイントとして、ＣＲＣ演算器１５を用いてｎ番目のＣＲＣ演算を実行する。事象が発生したモジュールの識別データと、ｎ―１番目のＣＲＣ演算で出力されたＣＲＣ値とを入力データとして、ＣＲＣ演算を実行する。但し、ｎ＝１番目の場合には、ｎ―１番目のＣＲＣ値が存在しないので、ＣＲＣ初期値を入力する。ＣＲＣ演算器１５は、演算結果として、ＣＲＣ（ｎ）を出力する。
【００４３】
ステップＳ２０５：プロセッサ１１は、ｎの値が制御プログラムＰ１のモジュールの総数に達したか否かを判定する。総数に達した場合（ステップＳ２０５：Ｙｅｓ）、ステップＳ２０６の処理に移行し、総数に達していない場合（ステップＳ２０５：Ｎｏ）、ステップＳ２０２の処理に戻る。
【００４４】
ステップＳ２０６：プロセッサ１１は、ＣＲＣ演算結果がエラーか否かを判定する。具体的には、プロセッサ１１は、基準データと、ステップＳ２０４の処理で求めた、最後のモジュールの実行後におけるＣＲＣ（ｎ）とを比較する。基準データと一致しており、エラーでないと判定した場合（ステップＳ２０６：Ｎｏ）、図６に示すフローチャートの処理を終了する。一方、基準データと一致せず、エラーであると判定した場合（ステップＳ２０６：Ｙｅｓ）、ステップＳ２０７の処理に移行する。例えば、目標開度の演算処理Ｍ３、デューティ出力処理Ｍ４の順序が逆転すると、ＣＲＣ（ｎ）と基準データとは不一致になり、異常時の処理へ移行することになる。
【００４５】
ステップＳ２０７：プロセッサ１１は、異常時の処理を実行する。プロセッサ１１は、例えば、予め規定している異常発生時のフェールセーフ制御を実行する。そして、プロセッサ１１は、図６に示すフローチャートの処理を終了する。
【００４６】
図７は、図６に示すフローチャートの流れを模式的に示した説明図である。図７（ａ）に示す通り、プロセッサ１１は、ＡＰＳ処理（モジュールＭ１）を実行すると、ＡＰＳ処理に対応する識別データ（ＩＤ（１））と、ＣＲＣ初期値とを入力データとして、ＣＲＣ演算器１５に代入する。すると、ＣＲＣ演算器１５は、ＣＲＣ演算を実行し、１回目の演算結果としてＣＲＣ（１）を出力する。
【００４７】
次に、プロセッサ１１は、図７（ｂ）に示す通り、ＴＰＳ処理（モジュールＭ２）を実行すると、ＴＰＳ処理に対応する識別データ（ＩＤ（２））と、ＣＲＣ（１）とを入力データとして、ＣＲＣ演算器１５に代入する。すると、ＣＲＣ演算器１５は、ＣＲＣ演算を実行し、２回目の演算結果としてＣＲＣ（２）を出力する。
【００４８】
次に、プロセッサ１１は、図７（ｃ）に示す通り、目標開度の演算処理（モジュールＭ３）を実行すると、目標開度の演算処理に対応する識別データ（ＩＤ（３））と、ＣＲＣ（２）のデータとを入力データとして、ＣＲＣ演算器１５に代入する。すると、ＣＲＣ演算器１５は、３回目の演算結果として、ＣＲＣ（３）を出力する。
【００４９】
次に、プロセッサ１１は、図７（ｄ）に示す通り、デューティ出力処理（モジュールＭ４）を実行すると、デューティ出力処理に対応する識別データ（ＩＤ（４））と、ＣＲＣ（３）とを入力データとして、ＣＲＣ演算器１５に代入する。すると、ＣＲＣ演算器１５は、４回目の演算結果として、ＣＲＣ（４）を出力する。
【００５０】
以上の処理が完了すると、プロセッサ１１は、図６のステップＳ２０６で上述した通り、ＣＲＣ（４）と、ＲＡＭ１４に記憶されている基準データとを比較する。
【００５１】
以上より、本実施形態によれば、実行順序の正否に関し、ＣＲＣ演算処理の最終結果のＣＲＣ値と基準データとを比較すればよいので、モジュールを実行する毎に正しい順序で行われているか否かを判定する必要がない。これにより、プロセッサ１１の処理負荷を抑制でき、また、チェックするモジュール数が増加しても、使用するＲＡＭ１４の使用率を抑制できる。
【００５２】
また、本実施形態によれば、初期化処理が完了すると、各モジュールの実行順序の再確認として、ＣＲＣ演算プログラムＰ２により実行し基準データを求め、運転中については、ＣＲＣ演算器１５を用いて、最後のモジュールの実行後におけるＣＲＣ値を求め、実行順序を評価した。ここで、本実施形態では、ＣＲＣ演算プログラムＰ２の処理速度と比較して、高速に演算処理が可能なＣＲＣ演算器１５を用いることが好ましく、これにより、ＣＲＣ演算処理が高速化される。そして、本実施形態では、ＣＲＣ演算処理をＣＲＣ演算器１５で実行することでプロセッサ１１の処理負荷をさらに抑制できる。なお、本実施形態では、初期化処理が完了した際、基準データをＣＲＣ演算器１５により求めてもよい。
【００５３】
[上記実施形態の補足事項]
上記実施形態では、説明を分かりやすくするため、モジュール数を４に限定して説明したが、上記実施形態では、モジュール数を２以上の任意の数に適用できる。つまり、上述した通り、制御プログラムの数やモジュール数の数が多くなるほど、プロセッサ１１の処理負荷を抑制でき、使用するＲＡＭ１４の使用率を抑制できる。また、上記実施形態では、図６に示すフローチャートにおいて、所定時間経過しても、モジュールの総数分のモジュールが実行されない場合には、モジュールの実行漏れにより総数に達しないと判定し、ステップＳ２０７の異常時の処理に移行するようにしてもよい。
【００５４】
以上、本件に開示する実施形態について明細書及び図面等を用いて説明したが、本件開示の技術は、上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々の変更が可能である。
【符号の説明】
【００５５】
１…ＥＣＵ
１１…プロセッサ
１２…通信回路
１３…ＲＯＭ
１４…ＲＡＭ
１５…ＣＲＣ演算器
１６…バス
【図１】
0006434840.tif 000002
【図２】
0006434840.tif 000003
【図３】
0006434840.tif 000004
【図４】
0006434840.tif 000005
【図５】
0006434840.tif 000006
【図６】
0006434840.tif 000007
【図７】
0006434840.tif 000008