(57)【要約】【課題】リアルタイム応答性が低下することを抑制できる処理装置を提供すること。【解決手段】マイコン１０は、ＣＰＵ１１と記憶部１２とを備え、優先度が設けられる複数のタスクを並行して処理する。ＣＰＵ１１は、複数のタスクのうちの一つとして、複数のデータの少なくとも一つを初期化単位とした初期化を繰り返し行うことで、記憶部１２のデータ領域に記憶された全データを初期化する。ＣＰＵ１１は、各初期化単位での初期化を行う際に、タスクの割り込みを禁止し（Ｓ４０）、タスクの割り込みが禁止された後に、初期化単位での初期化を行い（Ｓ５０）、各初期化単位での初期化が終了した後に、タスクの割り込みの禁止を解除する（Ｓ６０）。【選択図】図２
2014182633.tif 000002
【特許請求の範囲】
【請求項１】
演算部（１１）と記憶部（１２）とを備え、優先度が設けられる複数のタスクを並行して処理するマルチタスク方式の処理装置（１０）であって、
前記記憶部は、複数のデータが記憶されたデータ領域を備え、
前記演算部は、複数の前記タスクのうちの一つとして、複数の前記データの少なくとも一つを初期化単位とした初期化を繰り返し行うことで、前記データ領域に記憶された全データを初期化するものであり、
各初期化単位での初期化を行う際に、前記タスクの割り込みを禁止する禁止手段（Ｓ４０）と、
前記禁止手段にて前記タスクの割り込みが禁止された後に、前記初期化単位での初期化を行う第１単位初期化手段（Ｓ５０）と、
前記第１単位初期化手段による各初期化単位での初期化が終了した後に、前記禁止手段にて禁止していた前記タスクの割り込みの禁止を解除する解除手段（Ｓ６０）と、を備えることを特徴とする処理装置。
【請求項２】
前記データ領域が初期化中であることを示す初期化中情報と、前記データ領域が初期化中でないことを示す非初期化情報とのいずれかがセットされる初期化中フラグ（１１ａ）と、
初期化単位毎に設けられ、各初期化単位に含まれる前記データが初期化済みであることを示す初期化済情報と、各初期化単位に含まれる前記データが初期化済みでないことを示す未初期化情報とのいずれかがセットされる更新フラグ（１１ｂ）と、を備え、
前記演算部は、
前記データ領域に記憶された全データの初期化を開始する際に、全ての前記更新フラグに未初期化情報をセットすると共に、前記第１単位初期化手段による初期化が終了した前記初期化単位に含まれる前記データに対応する前記更新フラグに初期化済情報をセットする第１更新手段（Ｓ１０，Ｓ５４）と、
前記データ領域に記憶された全データの初期化を開始する際に、前記初期化中フラグに初期化中情報をセットすると共に、全データの初期化が終了すると前記初期化中フラグに非初期化情報をセットする第２更新手段（Ｓ２０，Ｓ８０）と、
を備えることを特徴とする請求項１に記載の処理装置。
【請求項３】
前記演算部は、
前記解除手段によって前記タスクの割り込みの禁止が解除されている間、前記初期化処理の前記タスクよりも優先度が高い前記タスクの割り込みを行ない、該タスクの処理を行うことによって前記データ領域から前記データの読み出しが可能であり、
前記データ領域から読み出し対象である対象データを読み出す際に、初期化中情報がセットされており、且つ前記対象データに対応する前記更新フラグに未初期化情報がセットされていた場合、前記対象データが含まれる初期化単位の初期化を行う第２単位初期化手段（Ｓ１４０）と、
前記第２単位初期化手段にて初期化がなされた後の前記対象データを読み出す読み出し手段（Ｓ１６０）と、
を備えることを特徴とする請求項２に記載の処理装置。
【請求項４】
前記演算部は、
前記解除手段によって前記タスクの割り込みの禁止が解除されている間、前記初期化処理の前記タスクよりも優先度が高い前記タスクの割り込みを行ない、該タスクの処理を行うことによって前記データ領域へのデータの書き込みが可能であり、
前記データ領域にデータを書き込む際に、初期化中情報がセットされていた場合、書き込むデータの正しさをチェックするチェック手段（Ｓ２４０）と、
前記チェック手段にて書き込むデータが正しくないと判断された場合は、該データに対応する前記データ領域中の前記データが含まれる初期化単位の初期化を行い、前記チェック手段にて書き込むデータが正しいと判断された場合は、該データを前記データ領域に書き込む書き込み手段（Ｓ２５０，Ｓ２６０）と、
を備えることを特徴とする請求項２又は３に記載の処理装置。
【請求項５】
前記データ領域には、前記データとして浮動小数点数が記憶されており、
前記チェック手段は、書き込むデータが非数の場合に正しくないと判断し、書き込むデータが非数でない場合に正しいと判断することを特徴とする請求項４に記載の処理装置。
【請求項６】
前記チェック手段は、書き込むデータが所定の範囲内でない場合に正しくないと判断し、書き込むデータが所定の範囲内である場合に正しいと判断することを特徴とする請求項４に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、優先度が設けられる複数のタスクを並行して処理するマルチタスク方式の処理装置であって、データ領域に記憶された複数のデータの初期化を行う処理装置に関する。
【背景技術】
【０００２】
通常、処理装置は、演算部と記憶部とを備えて構成されている。また、処理装置では、何らかの理由によって、記憶部における複数のデータが記憶されたデータ領域全体を初期化することがある。このように、データ領域の全体を初期化する場合、データ領域全体の整合性を保つために、他のタスク（優先度が高いタスク）が実行されて、初期化途中のデータ領域が参照されないようにする必要がある。つまり、データ領域の初期化途中は、このデータ領域からデータが読み出されたり、このデータ領域にデータが書き込まれたりしないようにする必要がある。
【０００３】
そこで、特許文献１に開示されているように、ＣＰＵのリセット後、ＲＡＭへの初期値設定が終了するまでの期間、外部割り込み端子への入力を禁止することが考えられる。つまり、データ領域の全体を初期化している間は、他のタスクの割り込みを禁止することが考えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭６０−１１６８６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、他のタスクの割り込みを禁止することで、他のタスクが実行されて、初期化途中のデータ領域が参照されないようにすることができる。しかしながら、データ領域の全体を初期化している間は、他のタスクの割り込みが禁止されるので、初期化すべきデータの量に比例して割り込み禁止時間が長くなり、リアルタイム応答性が低下するという問題がある。
【０００６】
本発明は、上記問題点に鑑みなされたものであり、リアルタイム応答性が低下することを抑制できる処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、
演算部（１１）と記憶部（１２）とを備え、優先度が設けられる複数のタスクを並行して処理するマルチタスク方式の処理装置（１０）であって、
記憶部は、複数のデータが記憶されたデータ領域を備え、
演算部は、複数のタスクのうちの一つとして、複数のデータの少なくとも一つを初期化単位とした初期化を繰り返し行うことで、データ領域に記憶された全データを初期化するものであり、
各初期化単位での初期化を行う際に、タスクの割り込みを禁止する禁止手段（Ｓ４０）と、
禁止手段にてタスクの割り込みが禁止された後に、初期化単位での初期化を行う第１単位初期化手段（５０）と、
第１単位初期化手段による各初期化単位での初期化が終了した後に、禁止手段にて禁止していたタスクの割り込みの禁止を解除する解除手段（Ｓ６０）と、を備えることを特徴とする。
【０００８】
このように、本発明は、データ領域に記憶された複数のデータを初期化する場合、初期化単位での初期化を繰り返し行うことで、データ領域に記憶された全てのデータを初期化する。また、本発明は、データ領域に記憶された複数のデータを初期化する場合、タスクの割り込みを禁止する。しかしながら、本発明は、各初期化単位での初期化が終了した後に、割り込みの禁止を解除する。よって、本発明は、データ領域に記憶された複数のデータを初期化する場合、割り込みの禁止、初期化単位での初期化、割り込み禁止の解除を繰り返し行うことで、データ領域に記憶された全てのデータを初期化する。つまり、本発明は、データ領域に記憶された全てのデータを初期化している間、ずっと割り込みを禁止するものではない。このように、本発明は、各初期化単位での初期化が終わるたびに、割り込みの禁止を解除するので、長時間割り込み禁止が継続することを防止でき、リアルタイム応答性の低下を抑制できる。
【図面の簡単な説明】
【０００９】
【図１】実施形態におけるＥＣＵの概略構成を示すブロック図である。
【図２】実施形態におけるＣＰＵの初期化処理を示すフローチャートである。
【図３】実施形態におけるＣＰＵの単位初期化処理を示すフローチャートである。
【図４】実施形態における割り込み禁止と解除を示すイメージ図である。
【図５】実施形態におけるデータ構造を示すイメージ図である。
【図６】実施形態におけるＣＰＵの読み出し処理を示すフローチャートである。
【図７】実施形態におけるＣＰＵの書き込み処理を示すフローチャートである。
【図８】比較例におけるＣＰＵの初期化処理を示フローチャートである。
【図９】比較例における割り込み禁止と解除を示す概念図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態を図に基づいて説明する。本実施形態は、本発明である処理装置をＥＣＵ１００に設けられたマイコン１０に適用している。なお、ＥＣＵは、Electronic Control Unitの略である。
【００１１】
図１に示すように、ＥＣＵ１００は、要部として、マイコン１０、出力ＩＦ２０、入力ＩＦ３０を備えて構成されている。また、ＥＣＵ１００は、センサ２００及び制御対象３００などの外部装置と電気的に接続されている。そして、ＥＣＵ１００は、入力ＩＦ３０を介して、センサ２００からの検出信号を取得することができる。また、ＥＣＵ１００は、出力ＩＦ２０を介して、制御対象３００に対して制御信号を出力することができる。なお、ＥＣＵ１００は、センサ２００のかわりに、ＥＣＵ１００以外のＥＣＵから信号を取得するものであってもよい。また、制御対象３００は、モータなどのアクチュエータや、ＥＣＵ１００以外のＥＣＵなどを採用することができる。
【００１２】
このＥＣＵ１００は、例えば、車両の搭載機器を電子的に制御する各種の電子制御装置に適用することができる。また、電子制御装置が制御対象とする車両の搭載機器は、エンジン、変速機、ブレーキ等のパワートレイン系機器、エアコン、シート、ドアロック等のボディ系機器、ナビ、ＥＴＣ、ラジオ等の情報系機器、及びエアバック等のセイフティ系機器などである。
【００１３】
図１に示すように、マイコン１０は、要部として、ＣＰＵ１１、記憶部１２を備えて構成されている。なお、マイコン１０は、浮動小数点演算を行うＦＰＵ１３を備えていてもよい。つまり、マイコン１０は、浮動小数点演算を行う場合、ＦＰＵ１３を備えて構成される。このＦＰＵ１３は、本発明の特許請求の範囲における演算部に相当する。また、ＦＰＵは、Floating Point number processing Unitの略である。
【００１４】
ＣＰＵ１０は、本発明の特許請求の範囲における演算部に相当する。ＣＰＵ１１は、記憶部１２に記憶されたオペレーティングシステム（以下、ＯＳ）用のプログラムや各種データを読み出して所定の演算を実行するものであり、演算結果を一時的に記憶部１２に記憶しつつ演算を行うことで、各種処理を実行する。なお、ＣＰＵは、Central Processing Unitの略である。
【００１５】
本実施形態においては、ＯＳとして、複数のタスクを並行して処理するとともに、リアルタイムにタスクスケジュールを行うリアルタイムＯＳ（以下、ＲＴＯＳ）を採用している。このＲＴＯＳは、処理をリアルタイムに実行することを重視して設計されている。そのため、記憶部２０や、図示しない周辺回路（Ａ／Ｄ、タイマ、バッファなど）などのリソース管理などにおいても、時間制約を守ることが重要視される。
【００１６】
複数のタスクは、予め優先度が設定されている。ＣＰＵ１１は、この優先度に基づいて、タスクの切り換えを行う。つまり、タスクの切り換えは、予め設定されたタスク優先度に基づいて行われ、実行可能状態なタスクのうち最も高い優先度のタスクが実行される。従って、マイコン１０は、優先度が設けられた複数のタスクを並行して処理するマルチタスク方式の処理装置と称することができる。
【００１７】
さらに、図５に示すように、マイコン１０は、初期化中フラグ１１ａと更新フラグ１１ｂを有し、この二つのフラグにおけるデータを管理する。つまり、ＣＰＵ１１は、後ほど説明するデータ領域１２ａが初期化中であることを示す初期化中情報と、データ領域１２ａが初期化中でないことを示す非初期化情報とのいずれかがセットされる初期化中フラグ１１ａを備えている。初期化中フラグ１１ａは、データ領域１２ａに対して一つ設けられている。本実施形態では、初期化中情報として１、非初期化情報として０を採用している。しかしながら、本発明はこれに限定されるものではない。このように、初期化中フラグ１１ａを設けることによって、ＣＰＵ１１は、データ領域１２ａが初期化中であるか否かを把握（認識）することができる。
【００１８】
また、ＣＰＵ１１は、後ほど説明する初期化単位毎に設けられ、各初期化単位が初期化済みであることを示す初期化済情報と、各初期化単位が初期化済みでないことを示す未初期化情報とのいずれかがセットされる更新フラグ１１ｂを備えている。つまり、更新フラグ１１ｂは、初期化単位毎に一つ設けられている。言い換えると、更新フラグ１１ｂは、各初期化単位に含まれるデータに対して一つ設けられている。
【００１９】
例えば、一つのデータを初期化単位とする場合、各データに対して一つの更新フラグ１１ｂが設けられる。また、二つのデータを初期化単位とする場合、二つのデータに対して一つの更新フラグ１１ｂが設けられる。よって、初期化が終了した初期化単位に含まれるデータに対応する更新フラグとは、初期化が終了したデータに対応した更新フラグを示す。なお、各更新フラグ１１ｂは、データ領域１２ａの各データのデータ番号に対応して設けられていると称することもできる。
【００２０】
本実施形態では、初期化済情報として１、未初期化情報として０を採用している。しかしながら、本発明はこれに限定されるものではない。このように、更新フラグ１１ｂを設けることによって、ＣＰＵ１１は、各初期化単位のデータが初期化済みであるか否かを把握することができる。また、一部のデータだけが初期化されていないという状態を回避できる。
【００２１】
なお、ＣＰＵ１１は、例えば、記憶部１２からデータを読み出す読み出し処理、記憶部１２にデータを書き込む書き込み処理、記憶部１２のデータ領域の初期化を行う初期化処理、割り込みを禁止する禁止処理、禁止を解除する解除処理などの処理を実行する。このＣＰＵ１１の処理動作に関しては、後ほど詳しく説明する。
【００２２】
記憶部１２は、ＲＯＭ、ＲＡＭ、レジスタを備えて構成されている。この記憶部１２は、例えば、ＲＯＭ、ＲＡＭ、レジスタを一つのアドレス空間として一括管理されている。記憶部１２は、上述のように、ＲＴＯＳ用のプログラムや各種データや、演算処理の際のデータが記憶される。なお、ＲＯＭは、Read Only Memoryの略であり、ＲＡＭは、Random Access Memoryである。
【００２３】
また、図５に示すように、記憶部１２の一部には、複数のデータが記憶されたデータ領域１２ａが設けられている。言い換えると、記憶部１２は、まとまったデータ領域１２ａが確保されている。このデータ領域１２ａには、データ番号１〜ＮまでのＮ個のデータが記憶されている。Ｎは、２以上の自然数である。なお、データ領域１２ａには、例えば、あるタスクで利用する纏まった複数のデータ、又は、一体で処理するべき複数のデータが記憶されている。また、データ領域１２ａに記憶されている複数のデータとして、データサイズが大きく、全てを初期化するのに時間がかかるデータを採用すると、本発明の効果が顕著になる。
【００２４】
なお、データ領域１２ａに記憶されている複数のデータとしては、自動コード生成で作ったプログラムの中間データ（浮動小数点）、外部記憶装置のバッファデータ（制御用学習値）、ダイアグ検出時のフリーズフレームデータなど採用することができる。これらのデータは、データサイズが大きく、全てを初期化するのに時間がかかるという特徴がある。
【００２５】
なお、浮動小数点演算で非数が発生した場合、後続の演算結果が全て非数になるため、全データ初期化が必要である。よって、中間データを採用する場合、ＣＰＵ１１は、浮動小数点演算で非数の発生を検出したときに、後ほど説明する図２に示すフローチャートの処理を開始する。また、バッファデータを採用する場合、ＣＰＵ１１は、バッファデータの異常（上下限範囲外など）を検出した時、又はＥＣＵ１００の外部装置からデータをリセットする指示があったときに、後ほど説明する図２に示すフローチャートの処理を開始する。さらに、フリーズフレームデータを採用する場合、ＣＰＵ１１は、ＥＣＵ１００の外部装置からデータをクリアする指示があったときに、後ほど説明する図２に示すフローチャートの処理を開始する。
【００２６】
また、図５に示すように、記憶部１２の一部（例えば、ＲＯＭ）には、データ領域１２ａの各データの初期値が記憶された初期値テーブル１２ｂが設けられている。つまり、初期値テーブル１２ｂには、データ領域１２ａの各データの夫々に対応する複数の初期値データが記憶されている。
【００２７】
ここで、図２〜図７を用いて、マイコン１０におけるＣＰＵ１１の処理動作に関して説明する。ＣＰＵ１１は、データ領域１２ａに記憶されている全データの初期化を実行することを示す初期化条件が成立した場合、図２のフローチャートで示す初期化処理を実行する。なお、上述のように、データ領域１２ａに記憶されているデータの異常を検出した場合や、外部装置からの初期化指示を受けた場合に、初期化条件が成立したとみなすことができる。つまり、ＣＰＵ１１は、複数のタスクのうちの一つとして、データ領域１２ａに記憶されている複数のデータの初期化処理を行う。
【００２８】
ステップＳ１０では、更新フラグ１１ｂの全要素に０をセットする（第１更新手段）。ＣＰＵ１１は、データ領域１２ａに記憶された全データの初期化を開始する際に、全ての更新フラグ１１ｂに０をセットする。言い換えると、ＣＰＵ１１は、初期化条件が成立した場合、後ほど説明するデータ初期化ループを実行する前に、全ての更新フラグ１１ｂに０をセットする。これは、データ領域１２ａに記憶されている各データが初期化済みであるか否かを把握できるようにするためである。
【００２９】
ステップＳ２０では、初期化中フラグ１１ａに１をセットする（第２更新手段）。ＣＰＵ１１は、データ領域１２ａに記憶された全データの初期化を開始する際に、初期化中フラグ１１ａに１をセットする。言い換えると、ＣＰＵ１１は、初期化条件が成立した場合、後ほど説明するデータ初期化ループを実行する前に、初期化中フラグ１１ａに１をセットする。これは、データ領域１２ａが初期化中であるか否かを把握できるようにするためである。よって、ＣＰＵ１１は、初期化中フラグ１１ａの値を確認することで、データ領域１２ａが初期化中であるか否かを把握することができる。
【００３０】
このように、ＣＰＵ１１は、初期化条件が成立した場合、まず、全ての更新フラグ１１ｂに０をセットすると共に、初期化中フラグ１１ａに１をセットする。その後、ＣＰＵ１１は、ステップＳ３０以降の処理を実行する。
【００３１】
ステップＳ３０からＳ７０では、データ初期化ループを実行する。ＣＰＵ１１は、データ領域１２ａのデータのうちの少なくとも一つのデータを初期化単位として、初期化単位での初期化を繰り返し行なうことで、データ領域に記憶された全データを初期化する（データ初期化ループ手段）。つまり、ＣＰＵ１１は、データ領域１２ａの全データの初期化が完了するまで、ステップＳ４０からステップＳ６０の処理を繰り返し実行する。
【００３２】
言い換えると、ＣＰＵ１１は、データ領域１２ａに記憶されたデータを複数に分割して、分割された各データ（又は、各データ群）を順番に初期化することで、データ領域１２ａに記憶された全てのデータを初期化する。ＣＰＵ１１は、データ領域１２ａに記憶された複数のデータを、少なくとも一つのデータを含む初期化単位に分割して、分割されたデータ毎に順番に初期化することで、データ領域１２ａに記憶された全てのデータを初期化すると言い換えることもできる。また、初期化単位は、ＣＰＵ１１が一度に初期化する単位と称することもできる。なお、ステップＳ３０は、データ初期化ループの開始を示すループ端であり、ステップＳ７０は、データ初期化ループの終了を示すループ端である。
【００３３】
また、本実施形態では、一例として、図５に示すように、一つのデータを初期化単位としている。つまり、本実施形態のＣＰＵ１１は、各データ番号に対応するデータを初期化単位として、データ領域１２ａに記憶された全てのデータを初期化する。詳述すると、データ領域１２ａには、データ番号１からＮまでの複数のデータが記憶されている。ＣＰＵ１１は、各データ番号のデータを初期化単位として、単位初期化処理をＮ回行うことで、データ領域１２ａに記憶された全てのデータを初期化する。
【００３４】
しかしながら、初期化単位としては、少なくとも一つのデータが含まれていればよい。よって、二つ以上のデータを初期化単位とすることもできる。ただし、データ領域１２ａに記憶されている全てのデータを一つの初期化単位にすることはできない。
【００３５】
データ初期化ループでは、まずステップＳ４０の処理を実行する。このステップＳ４０では、割り込み禁止を開始する（禁止手段）。ＣＰＵ１１は、各初期化単位での初期化を行う際に、タスクの割り込みを禁止する。つまり、ＣＰＵ１１は、ステップＳ５０での処理を実行する前に、データ領域１２ａに記憶されている複数のデータの初期化処理である本タスクよりも、優先度が高いタスクの割り込みを禁止する。
【００３６】
ステップＳ５０では、単一データ初期化処理を実行する（第１単位初期化手段）。ＣＰＵ１１は、ステップＳ４０でタスクの割り込みが禁止された後に、初期化単位での初期化を行う。なお、ステップＳ５０は、初期化単位での初期化を行う処理である。しかしながら、本実施形態では、一つのデータを初期化単位としているため、単一データ初期化処理と記載している。
【００３７】
この単一データ初期化処理に関しては、図３のフローチャートを用いて説明する。図３のステップＳ５１では、初期化対象データの更新フラグを判定する。ＣＰＵ１１は、初期化対象データに対応する更新フラグ１１ｂに０がセットされていると判定した場合、初期化が必要であるとみなしてステップＳ５２へ進む。ＣＰＵ１１は、初期化対象データに対応する更新フラグ１１ｂに１がセットされていると判定した場合、初期化の必要がないとみなして、図３のフローチャートに示す処理を終了する。なお、初期化対象データとは、データ領域１２ａに記憶されている複数のデータのうちの一つであり、今回の単一データ初期化処理で初期化の対象となっているデータである。
【００３８】
このように、ＣＰＵ１１は、初期化対象データに対応する更新フラグ１１ｂに１がセットされていた場合、後ほど説明するステップＳ５２からステップＳ５４の処理は実行しない。ステップＳ１０で全ての更新フラグ１１ｂに０をセットしたにもかかわらず、初期化対象データに対応する更新フラグ１１ｂに１がセットされているのは、初期化対象データが初期化される前に更新されているためである。後ほど詳しく説明するが、ＣＰＵ１１は、初期化対象データを初期化する前に、他のタスクを実行して、このタスクを実行することによって、初期化対象データを更新することができる。よって、ここでは、初期値よりも、初期化する前に他のタスクを実行している間に更新された値を優先するために、ステップＳ５２からステップＳ５４の処理は実行しないようにする。なお、この点に関しては、後ほど図７を用いて説明する。
【００３９】
なお、ＣＰＵ１１は、ループカウンタなどを使うことによって、データ領域１２ａに記憶されている複数のデータの中から、今回の初期化対象である初期化対象データを把握（特定）することができる。つまり、ＣＰＵ１１は、ループカウンタなどを使うことによって、各単一データ初期化処理で初期化を行うデータ（又は、データ番号）を把握することができる。
【００４０】
ステップＳ５２では、初期値を読み出す。ＣＰＵ１１は、初期値テーブル１２ｂから初期化対象データに対応する初期値データを読み出す。ステップＳ５３では、初期値を書き込む。ＣＰＵ１１は、ステップＳ５２で読み出した初期値データを書き込む。つまり、ＣＰＵ１１は、初期化対象データを、ステップＳ５２で読み出した初期値データに書き換える（更新する）。これによって、今回の初期化対象である初期化対象データを初期化することができる。
【００４１】
ステップＳ５４では、更新フラグ１１ｂに１をセットする（第１更新手段）。ＣＰＵ１１は、単一データ初期化処理での初期化が終了した初期化対象データに対応する更新フラグ１１ｂに１をセットする。言い換えると、ＣＰＵ１１は、初期化が終了したデータのデータ番号に対応する更新フラグ１１ｂに１をセットする。また、ＣＰＵ１１は、単一データ初期化処理での初期化が終了した初期化単位に対応する更新フラグに１をセットするとも言い換えることができる。
【００４２】
例えば、図５において、今回の単一データ初期化処理での対象が、データ番号３のデータであった場合、データ番号３のデータの初期化が終了すると、データ番号３に対応する更新フラグ１１ｂに１をセットする。よって、図５は、データ番号１〜３のデータは初期化済みであり、データ番号４〜Ｎのデータは初期化済みでないことを示している。なお、図５におけるデータ領域１２ａには、図面を分かりやすくするために、○（マル）と×（バツ）を図示している。○は、初期化済みであることを示しており、×は、未初期化であることを示している。
【００４３】
このように、ＣＰＵ１１は、上述のステップＳ１０で全ての更新フラグ１１ｂに０をセットすると共に、ステップＳ５４で初期化が終了したデータに対応する更新フラグ１１ｂに１をセットする。これによって、ＣＰＵ１１は、各更新フラグ１１ｂを確認することで、各更新フラグ１１ｂに対応するデータが初期化済みであるか否かを把握することができる。つまり、ＣＰＵ１１は、データ領域１２ａに記憶されている各データが初期化済みであるか否かを把握することができる。なお、ステップＳ５４での処理が終了すると、図２に示すフローチャートのステップＳ６０に戻る。
【００４４】
ステップＳ６０では、割り込み禁止を終了する（解除手段）。ＣＰＵ１１は、ステップＳ５０での単一データ初期化処理での初期化が終了した後に、ステップＳ４０で禁止していたタスクの割り込みの禁止を解除する。なお、ＣＰＵ１１は、割り込み禁止状態でステップＳ５０を実行するので、データの初期化と更新フラグ１１ｂの操作の途中で、より優先度が高いタスクを実行して、データ領域１２ａにアクセスすることを抑制できる。つまり、ＣＰＵ１１がより優先度が高いタスクを実行することによって、データ領域１２ａからデータが読み出したり、データ領域１２ａにデータが書き込んだりするのを抑制できる。
【００４５】
このように、ＣＰＵ１１は、データ初期化ループの内側で、割り込み禁止状態にした後、単一データ初期化処理を呼び出し、単一データ初期化処理が終了すると、割り込み許可状態に戻す。つまり、本発明は、単一データ初期化処理を行っている間だけ、割り込み禁止状態が維持され、次のデータの初期化を行う前に割り込みが可能となる。
【００４６】
ＣＰＵ１１は、このように、初期化単位での初期化を繰り返し行って、データ領域１２ａの全データの初期化が完了すると、ステップＳ８０での処理を実行する。ステップＳ８０では、初期化中フラグ１１ａに、非初期化情報である０をセットする（第２更新手段）。
【００４７】
このように、マイコン１０は、データ領域１２ａに記憶された複数のデータを初期化する場合、初期化単位での初期化を繰り返し行うことで、データ領域１２ａに記憶された全てのデータを初期化する。また、マイコン１０は、データ領域１２ａに記憶された複数のデータを初期化する場合、タスクの割り込みを禁止する。しかしながら、マイコン１０は、各初期化単位での初期化が終了した後に、割り込みの禁止を解除する。よって、本発明は、データ領域１２ａに記憶された複数のデータを初期化する場合、割り込みの禁止、初期化単位での初期化、割り込み禁止の解除を繰り返し行うことで、データ領域１２ａに記憶された全てのデータを初期化する。
【００４８】
つまり、マイコン１０は、データ領域１２ａに記憶された全てのデータを初期化している間、ずっと割り込みを禁止するものではない。このように、マイコン１０は、各初期化単位での初期化が終わるたびに、割り込みの禁止を解除するので、長時間割り込み禁止が継続することを防止でき、リアルタイム応答性の低下を抑制できる。
【００４９】
ここで、このマイコン１０の効果に関して、比較例のマイコンと比較しつつ説明する。比較例のマイコンは、ＣＰＵ、記憶部などを備えて構成されており、以下比較例マイコンと称する。また、比較例マイコンは、データ領域１２ａと同様のデータ領域を備えている。そして、比較例マイコンのＣＰＵは、マイコン１０と同様に、データ領域に記憶されている全データの初期化を実行することを示す初期化条件が成立した場合、図８のフローチャートで示す初期化処理を実行する。
【００５０】
ステップＳ３００では、割り込み禁止を開始する。比較例マイコンのＣＰＵは、各初期化単位での初期化を行う前に、タスクの割り込みを禁止する。
【００５１】
ステップＳ３１０からＳ３３０では、データ初期化ループを実行する。比較例マイコンのＣＰＵは、データ領域のデータのうちの少なくとも一つのデータを初期化単位として、初期化単位での初期化を繰り返し行なうことで、データ領域に記憶された全データを初期化する。つまり、比較例マイコンのＣＰＵは、データ領域の全データの初期化が終了するまで、ステップＳ３１０からＳ３３０の処理を実行する。
【００５２】
そして、ステップＳ３４０では、割り込み禁止を終了する。比較例マイコンのＣＰＵは、データ領域の全データの初期化が終了した後に、初めてステップＳ３００で禁止していたタスクの割り込みの禁止を解除する。
【００５３】
よって、比較例マイコンは、図９に示すように、タイミングｔ１からタイミングｔ２の間で、データ領域に記憶されている複数のデータを初期化する場合、タイミングｔ１からタイミングｔ２の全期間でタスクの割り込みを禁止する。
【００５４】
これに対して、マイコン１０は、図４に示すように、タイミングｔ１からタイミングｔ２の間で、データ領域１２ａに記憶された複数のデータを初期化する場合、各初期化単位の初期化が終了するたびに割り込み禁止を解除する。よって、マイコン１０は、タイミングｔ１からタイミングｔ２の間であっても、タスクの割り込みが可能となる。このように、マイコン１０は、比較例マイコンに比べて、長時間割り込み禁止が継続することを防止でき、リアルタイム応答性の低下を抑制できる。つまり、マイコン１０は、初期化中の割り込み禁止期間を全データではなく、各初期化単位に含まれるデータの初期化中に限定することにより、リアルタイム応答性の低下を抑制できる。
【００５５】
よって、例えば、初期化対象のデータとして中間データを採用した場合、この中間データを初期化している途中でも通常通りの演算が可能となる。また、初期化対象のデータとしてバッファデータを採用した場合、このバッファデータを初期化している途中でも通常通りの制御が可能となる。また、初期化対象のデータとしてフリーズフレームデータを採用した場合、このフリーズフレームデータを初期化している途中でもデータ領域１２ａへの書き込みが可能となる。
【００５６】
また、上述のように、比較例のマイコンの場合、初期化すべきデータの量に比例して割り込み禁止時間が長くなり、リアルタイム応答性が低下するという問題がある。さらに、このマイコンは、例えば、車両のエンジンを電子的に制御する電子制御装置（以下、エンジンＥＣＵ）に適用することも考えられる。エンジンＥＣＵは、エンジン回転センサのパルス発生数がエンジン回転３０°あたり１個である場合、エンジンが毎分６０００回転のときは１／（６０００／６０）／（３６０／３０）＝８３０[μs]毎にパルス入力処理を行う必要がある。しかしながら、比較例のマイコンは、初期化以外の処理が動作しないよう割り込み禁止にしてしまう。よって、比較例のマイコンでは、初期化に数百μsかかるような量のデータを初期化する場合、パルス入力処理が間に合わず、ひいてはエンジン制御が誤動作する可能性がある。
【００５７】
これに対して、マイコン１０は、データ領域１２ａに記憶された複数のデータを初期化する場合であっても、各初期化単位の初期化が終了するたびに割り込み禁止を解除する。よって、マイコン１０では、エンジンＥＣＵに適用して、初期化に数百μsかかるような量のデータを初期化する場合であっても、パルス入力処理が間に合わず、エンジン制御が誤動作することを抑制できる。
【００５８】
また、従来技術ではないが、初期化が実行中かどうかを示す状態変数を設け、ＣＰＵは、記憶部にアクセスする前（データアクセスの前）にその状態変数を確認し、初期化中の場合はデータ領域への読み書きを行わずに延期するという方法も考えられる。しかしこの方法では、初期化実行中は必要なデータの読み書きができないため、通常の制御の実行ができなくなるという制約が生じる。
【００５９】
例えば、ガソリンエンジン制御装置では、燃料噴射量や点火タイミングを補正するための学習値が外部記憶装置のバッファの役割を持つデータ領域に格納されている場合がある。データ領域初期化中に、学習値を読み出せないからといって点火装置や噴燃料射装置の制御を延期すると、エンジンが停止してしまう。
【００６０】
また、一般的に、マイコンは、自身が搭載されている制御装置内部のデータを、通信手段を通じて制御装置の外部装置に定期的に送信する場合がある。定期的に送信するデータの一例としては、エンジン制御装置における、エンジン冷却水温や空燃比補正用学習値などをあげることができる。この送信すべきデータが初期化中のデータ領域に記憶されていた場合、初期化が終わるまでデータの送信を止めることになる。よって、このデータを定期的に受信する外部装置は、タイムアウトとみなして、通信異常と判定する可能性がある。
【００６１】
これに対して、マイコン１０は、データ領域１２ａに記憶されている複数のデータを初期化する場合であっても、各初期化単位の初期化が終了するたびに割り込み禁止を解除する。つまり、マイコン１０は、データ領域１２ａに記憶されている複数のデータを初期化する場合であっても、データ領域１２ａへのデータの書き込み、データ領域１２ａからのデータの読み込みが行える。
【００６２】
よって、マイコン１０は、上述のような燃料噴射量や点火タイミングを補正するための学習値であるデータや、送信すべきデータなどがデータ領域１２ａに記憶されていた場合であっても、上述のような不具合が発生することを抑制できる。つまり、マイコン１０は、データ領域１２ａに記憶されている学習値であるデータを初期化する場合であっても、初期化対象である全データの初期化が終わるまで点火装置や噴燃料射装置の制御を延期する必要がなく、エンジンが停止してしまうことを抑制できる。また、マイコン１０は、データ領域１２ａに記憶されている送信すべきデータを初期化する場合であっても、初期化対象である全データの初期化が終わるまでデータの送信を止める必要がなく、外部装置から通信異常と判定されることを抑制できる。このように、マイコン１０は、初期化実行中に必要なデータの読み書きができなくなったり、通常の制御の実行ができなくなるという不具合を抑制できる。
【００６３】
上述のように、ＣＰＵ１１は、タスクの割り込みの禁止を解除している間、初期化処理のタスクよりも優先度が高いタスクの割り込みを行ない、このタスクの処理を行うことによってデータ領域１２ａからデータを読み出すことが可能である。また、ＣＰＵ１１は、タスクの割り込みの禁止を解除している間、初期化処理のタスクよりも優先度が高いタスクの割り込みを行ない、このタスクの処理を行うことによってデータ領域１２ａへのデータの書き込みが可能である。
【００６４】
ここで、このように、初期化中にタスクの割り込みを行った場合の処理に関して説明する。まず、図６を用いて、ＣＰＵ１１の読み出し処理に関して説明する。図６は、読み出し要求処理のフローチャートである。ＣＰＵ１１は、データの読み出し要求があると、図６のフローチャートで示す処理を実行する。この読み出し要求とは、データ領域１２ａからデータを読み出すことを示す要求である。
【００６５】
ステップＳ１１０では、初期化中フラグ１１ａを判定する。ＣＰＵ１１は、初期化中フラグ１１ａに０がセットされているか、１がセットされているかを判定する。これは、データ領域１２ａが初期化中であるか否か、すなわち、ステップＳ１０以降の処理が実行されている途中であるか否かを判定するためである。そして、ＣＰＵ１１は、初期化中フラグ１１ａに０がセットされていると判定した場合、データ領域１２ａは初期化中でないとみなしてステップＳ１６０に進む。一方、ＣＰＵ１１は、初期化中フラグ１１ａに１がセットされていると判定した場合、データ領域１２ａは初期化中であるとみなしてステップＳ１２０に進む。
【００６６】
ステップＳ１２０では、読み出し対象データの更新フラグを判定する。ＣＰＵ１１は、読み出し対象データに対応する更新フラグ１１ｂに０がセットされていた場合、データ領域１２ａは初期化中であるが、まだ、読み出し対象データは初期化されていないとみなしてステップＳ１３０へ進む。一方、ＣＰＵ１１は、読み出し対象データに対応する更新フラグ１１ｂに１がセットされていた場合、データ領域１２ａは初期化中であり、既に、読み出し対象データは初期化されているとみなしてステップＳ１６０に進む。なお、読み出し対象データは、本発明の特許請求の範囲における対象データに相当する。本実施形態では、読み出し対象データとして、データ領域１２ａに記憶されている複数のデータのうちの一つのデータを採用する。
【００６７】
なお、ステップＳ１３０からＳ１５０での処理は、上述のステップＳ４０からＳ６０での処理と同様である。つまり、ステップＳ１３０〜Ｓ１５０では、ＣＰＵ１１は、割り込み禁止を開始してから、単一データ（ここでは、読み出し対象データ）の初期化を行い、その後、割り込み禁止を終了する。そして、ステップＳ１６０では、値を読み出す。このとき、ＣＰＵ１１は、データ領域１２ａから読み出し対象データを読み出す。
【００６８】
つまり、ＣＰＵ１１は、データ領域１２ａの初期化中にタスクの割り込みを行い、読み出し対象データを読み出す際に、タスクの割り込みを禁止する（第２禁止手段）。そして、ＣＰＵ１１は、タスクの割り込みが禁止されている間に、読み出し対象データの初期化を行う（第２単位初期化手段）。そして、ＣＰＵ１１は、読み出し対象データの初期化が終了した後に、第２禁止手段にて禁止していたタスクの割り込みの禁止を解除する（第２解除手段）。さらに、ＣＰＵ１１は、タスクの割り込みの禁止を解除すると、読み出し対象データを読み出す（読み出し手段）。これによって、割り込み処理中に読み出し対象データを読み出す際に、より優先度が高いタスクの割り込みを禁止でき、データ領域１２ａを保護することができる。
【００６９】
このように、ＣＰＵ１１は、初期化中フラグ１１ａに１がセットされており、且つ読み出し対象データに対応する更新フラグ１１ｂに０がセットされていた場合、読み出し対象データの初期化を行う（第２単位初期化手段）。このとき、ＣＰＵ１１は、読み出し対象データが含まれる初期化単位の初期化を行う。そして、ＣＰＵ１１は、初期化がなされた後の読み出し対象データを読み出す（読み出し手段）。
【００７０】
例えば、図５に示す例において、データ番号２のデータが読み出し対象データであった場合、ＣＰＵ１１は、データ番号２のデータは既に初期化済みであるため、このデータを読み出す。一方、データ番号Ｎのデータが読み出し対象データであった場合、ＣＰＵ１１は、データ番号Ｎのデータは未初期化であるため、このデータを初期化してから読み出す。なお、ＣＰＵ１１は、ステップＳ１２０とステップＳ１６０の処理を実行した後、又はステップＳ１２０からＳ１６０の処理を実行した後、図２のステップＳ３０に戻ることになる。
【００７１】
このように、ＣＰＵ１１は、高優先度のタスクを実行することによって、初期化中のデータ領域１２ａからデータを読み出す際に、読み出し対象データが未初期化であると、読み出し対象データを初期化してから読み出すようにする。初期化中フラグ１１ａに１がセットされているということは（ステップＳ１１０で１と判定した場合）、データ領域１２ａに記憶されているデータの初期化が必要ということを示している。よって、上述のように、初期化がなされた後の読み出し対象データを読み出すことで、初期化の必要があるデータを、初期化せずに読み出すことを抑制できる。
【００７２】
これに対して、データ領域１２ａが初期化中でない場合、及び、読み出し対象データが既に初期化されていた場合は、読み出し対象データを再度初期化する必要がない。よって、ＣＰＵ１１は、ステップＳ１１０で０がセットされていると判定した場合、ステップＳ１２０〜Ｓ１５０の処理を行うことなく、ステップＳ１６０を行い、読み出し対象データを読み出す。また、ＣＰＵ１１は、ステップＳ１２０で１がセットされていると判定した場合、ステップＳ１３０〜Ｓ１５０の処理を行うことなく、ステップＳ１６０へ進んで読み出し対象データを読み出す。
【００７３】
次に、図７を用いて、ＣＰＵ１１の書き込み処理に関して説明する。図７は、書き込み要求処理のフローチャートである。ＣＰＵ１１は、データの書き込み要求があると、図７のフローチャートで示す処理を実行する。この書き込み要求とは、データ領域１２ａにおける所定のデータ番号のデータを、別のデータで書き換えることを示す要求である。言い換えると、データ領域１２ａにおける所定のデータ番号のデータを、別のデータで更新することを示す要求である。なお、データ領域１２ａに対して書き込むデータを書き込みデータとも称する。また、本実施形態では、書き込みデータとして一つのデータを採用する。
【００７４】
ステップＳ２１０では、初期化中フラグ１１ａを判定する。ＣＰＵ１１は、初期化中フラグ１１ａに０がセットされているか、１がセットされているかを判定する。これは、データ領域１２ａが初期化中であるか否か、すなわち、ステップＳ１０以降の処理が実行されている途中であるか否かを判定するためである。そして、ＣＰＵ１１は、初期化中フラグ１１ａに０がセットされていると判定した場合、データ領域１２ａは初期化中でないとみなしてステップＳ２２０に進む。一方、ＣＰＵ１１は、初期化中フラグ１１ａに１がセットされていると判定した場合、データ領域１２ａは初期化中であるとみなしてステップＳ２３０に進む。
【００７５】
ステップＳ２２０では、値を更新する。言い換えると、所定のデータ番号のデータを、書き込みデータに書き換える。つまり、ＣＰＵ１１は、データ領域１２ａが初期化中でないため、特別な処理はせずに、データ領域１２ａに書き込みデータを書き込む。
【００７６】
一方、ステップＳ２３０では、割り込み禁止を開始する（第３禁止手段）。このように、ＣＰＵ１１は、データ領域１２ａの初期化中にタスクの割り込みを行い、このタスクを実行することによってデータを書き込む際、まず、タスクの割り込みを禁止する。
【００７７】
ステップＳ２４０では、書き込みデータの正しさをチェックする（チェック手段）。つまり、ＣＰＵ１１は、データ領域１２ａにデータを書き込む際に、初期化中フラグに１がセットされていた場合、書き込みデータの正しさをチェックする。これは、正しくないデータをデータ領域１２ａに書き込むことを抑制するためである。また、ＣＰＵ１１は、ステップＳ２３０で割り込みを禁止している間に、データの正しさチェックを行う。そして、ＣＰＵ１１は、データが正しいと判定した場合はステップＳ２５０へ進み、データが正しくないと判定した場合はステップＳ２６０へ進む。なお、この正しさチェックに関しては、後ほど説明する。
【００７８】
ステップＳ２５０では、値を更新する（書き込み手段）。ＣＰＵ１１は、書き込みデータが正しいと判断した場合は、正しいと判断された書き込みデータをデータ領域１２ａに書き込む。これによって、正しいデータをデータ領域１２ａに書き込むことができる。なお、ＣＰＵ１１は、ステップＳ２３０で割り込みを禁止している間に、書き込みデータを書き込む。
【００７９】
なお、ステップＳ２５０では、複数のデータを初期化単位とする場合、初期化単位における一部のデータのみを更新することもありうる。つまり、初期化単位における一部のデータのみを、正しいと判断された書き込みデータに書き換えることもありうる。このような場合、初期化単位に含まれる複数のデータのうち、書き込みデータで更新されるデータ以外のデータは、初期値に書き換えると好ましい。言い換えると、初期化単位に含まれる複数のデータにおいて、書き込みデータに対応するデータ以外のデータは、初期値に書き換えると好ましい。
【００８０】
ステップＳ２６０では、単一データの初期化を行う（書き込み手段）。ＣＰＵ１１は、書き込みデータが正しくないと判断した場合は、データ領域１２ａに正しくないデータが書き込まれることを抑制するために、データ領域１２ａにおける、書き込みデータに対応するデータを初期化する。このとき、ＣＰＵ１１は、書き込みデータに対応するデータを含む初期化単位での初期化を行う。これによって、書き込もうとしているデータが正しくない場合であっても、正しくないデータが書き込まれることを抑制することができる。なお、ＣＰＵ１１は、ステップＳ２３０で割り込みを禁止している間に、データの初期化を行う。
【００８１】
このステップＳ２６０での処理は、上述のステップＳ５０と同様である。ただし、ステップＳ５０では、ループカウンタなどで特定された初期化対象データを含む初期化単位での初期化を行うのに対して、ステップＳ２６０では、書き込みデータに対応するデータを含む初期化単位での初期化を行う。
【００８２】
ステップＳ２７０では、更新フラグ１１ｂに１をセットする。ＣＰＵ１１は、初期化中であるデータ領域１２ａにおいて、まだ初期化されてないデータが、更新されたことを記録するために、更新フラグ１１ｂに１をセットする。
【００８３】
ステップＳ２８０では、割り込み禁止を終了する（第３解除手段）。ＣＰＵ１１は、ステップＳ２６０での初期化、又はステップＳ２５０での書き込みが終了した後に、ステップＳ２３０で禁止していたタスクの割り込みの禁止を解除する。
【００８４】
なお、ＣＰＵ１１は、ステップＳ２８０の処理を実行した後、図２のステップＳ３０に戻ることになる。また、ＣＰＵ１１は、ステップＳ２８０を実行した後に、図２のフローチャートに戻った場合、ステップＳ２６０で初期化したデータ、又はステップＳ２５０で書き込んだデータを初期化対象データとすることもありうる。このような場合、ＣＰＵ１１は、上述のステップＳ５１の判定で、更新フラグ１１ｂに１がセットされていると判定することになる。よって、ＣＰＵ１１は、上述のように、ステップＳ５１で更新フラグ１１ｂに１がセットされていると判定した場合はステップＳ５２からＳ５４の処理は実行せずに、ステップＳ２６０で初期化したデータ、又はステップＳ２５０で書き込んだデータを優先する。
【００８５】
例えば、図５に示す例において、データ番号Ｎのデータが書き込み対象のデータであった場合、ＣＰＵ１１は、データ番号Ｎのデータを初期化するか、又は、書き込みデータに更新する。そして、ＣＰＵ１１は、更新フラグ１１ｂに１をセットする。
【００８６】
このように、マイコン１０は、データ領域１２ａの初期化中にデータを書き込む場合、まず、割り込み禁止の状態にしてから、ステップＳ２６０での初期化、又はステップＳ２５０での書き込みを行う。これによって、ステップＳ２６０での初期化、又はステップＳ２５０での書き込みを行う際に、より優先度が高いタスクの割り込みを禁止でき、データ領域１２ａを保護することができる。
【００８７】
なお、ステップＳ２３０での正しさチェック方法はいくつか考えられる。ここで、正しさチェック方法の一例を説明する。
【００８８】
まず、マイコン１０がＦＰＵ１３を備えており、データ領域１２ａに複数のデータとして浮動小数点数が記憶されている場合に関して説明する。この場合、ＦＰＵ１３は、書き込みデータが非数の場合に正しくないと判断し、書き込みデータが非数でない場合に正しいと判断する（チェック手段）。
【００８９】
別の方法としては、ＣＰＵ１１は、書き込みデータが所定の範囲内でない場合に正しくないと判断し、書き込みデータが所定の範囲内である場合に正しいと判断する（チェック手段）。このようにしても、書き込みデータが正しいか否かを判断することができる。
【００９０】
なお、本実施形態においては、データ領域１２ａを初期化する際に、初期値テーブル１２ｂに記憶された初期値データで初期化する例を採用した。しかしながら、本発明はこれに限定されるものではない。データ領域１２ａにおける全てのデータの初期値が同じデータ（例えば、０などの固定初期値）の場合、この固定初期値で初期化するようにしてもよい。このように、固定初期値で初期化することによって、初期値テーブル１２ｂを設ける必要がない。よって、初期化に要する処理時間を低減できると共に、初期値テーブル１２ｂの分だけ記憶部１２の使用量を削減することができる。
【００９１】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上述した実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【符号の説明】
【００９２】
１０  マイコン、１１  ＣＰＵ、１１ａ  初期化中フラグ、１１ｂ  更新フラグ、１２  記憶部、１２ａ  データ領域、１２ｂ  初期値テーブル、１３  ＦＰＵ、２０  出力ＩＦ、３０  入力ＩＦ、１００  ＥＣＵ、２００  センサ、３００  制御対象
【図１】
2014182633.tif 000003
【図２】
2014182633.tif 000004
【図３】
2014182633.tif 000005
【図４】
2014182633.tif 000006
【図５】
2014182633.tif 000007
【図６】
2014182633.tif 000008
【図７】
2014182633.tif 000009
【図８】
2014182633.tif 000010
【図９】
2014182633.tif 000011