以下において、図面を参照しながら、本開示を実施するための形態を説明する。
まず、図1、図2を用いて、電子制御装置100の概略構成に関して説明する。図1に示すように、電子制御装置100は、マイコン10、第1装置21、第2装置22、第3装置23、通信部30などを備えている。マイコン10、第1装置21、第2装置22、第3装置23、通信部30は、電気的に接続されている。
本実施形態では、一例として、電子制御装置100を車両に搭載された車載制御装置に適用する。よって、電子制御装置100は、車両に搭載された車載機器を制御する。このため、電子制御装置100は、マイコン10が通常処理を行うことで、車載機器を制御すると言える。なお、電子制御装置100は、車両以外の制御装置であっても適用することができる。
電子制御装置100は、動作を停止している状態で電源の供給が開示されると、起動時処理を実行した後に車載機器に対する各種制御を実行する。また、電子制御装置100は、電源が供給されて起動している状態で動作終了の条件を満たすと、終了時処理を実行した後にマイコン10などへの電源の供給を停止する。
マイコン10は、処理部としてのCPU11、記憶装置としてのメモリ12などを備えている。メモリ12には、CPU11が読み取り可能なプログラムやデータが記憶されている。そして、マイコン10は、CPU11がメモリ12に記憶されているプログラムを実行しつつ、メモリ12に記憶されているデータや通信部30などから得たデータなどを用いて演算処理を行う。このようにして、マイコン10は、起動時処理及び終了時処理を行なうとともに、各種制御を行うための制御信号を出力する。
マイコン10は、起動時処理として、例えば、初期設定や起動時診断などを行う。マイコン10は、終了時処理として、例えば、終了時診断などを行う。
また、図2に示すように、マイコン10は、機能ブロックとして、シーケンス管理部13と、複数の処理部P1~P4、P11~P13とを備えている。第1処理部P1、第2処理部P2、第3処理部P3、第4処理部P4は、起動時における複数の処理を実行する複数の処理部に相当する。よって、マイコン10は、第1処理部P1、第2処理部P2、第3処理部P3、第4処理部P4によって起動時処理を行う。複数の処理部P1~P4のそれぞれが実行する処理は、起動時における一連の処理とみなすことができる。
一方、第11処理部P11、第12処理部P12、第13処理部P13は、終了時における複数の処理を実行する複数の処理部に相当する。よって、マイコン10は、第11処理部P11、第12処理部P12、第13処理部P13によって終了時処理を行う。複数の処理部P11~P13のそれぞれが実行する処理は、終了時における一連の処理とみなすことができる。
なお、起動時における処理部の個数、及び終了時における処理部の個数は、上記に限定されず、それぞれ複数個備えていればよい。このように、電子制御装置100は、シーケンス管理部13と、シーケンスに応じて必要な処理を行う処理部P1~P4、P11~P13とが分けられている。
なお、各処理部P1~P4、P11~P13が実行する処理は、それぞれ第1~第4処理、第11処理~第13処理と言える。よって、例えば、第2処理部P2は、第2処理を実行する。
シーケンス管理部13は、マイコン10が実行するシーケンスを管理する。なお、本実施形態では、一例として、予め決められた実行順である第1~第4シーケンス、第11~第13シーケンスを管理するシーケンス管理部13を採用している。このため、シーケンス管理部13は、現在のシーケンスが第1~第4シーケンス、第11~第13シーケンスのいずれであるかを把握することができる。また、シーケンス管理部13は、起動時処理及び終了時処理のシーケンスだけではなく、起動時処理及び終了時処理とは異なる通常処理のシーケンスも管理してもよい。通常処理のシーケンスには、通信部30の起動シーケンスなども含んでいる。
また、第1~第4シーケンスのそれぞれは、第1処理部P1~第4処理部P4のそれぞれが実行する処理に対応している。同様に、第11~第13シーケンスのそれぞれは、第11処理部P11~第13処理部P13のそれぞれが実行する処理に対応している。よって、マイコン10は、例えば、第2シーケンスの場合、第2処理部P2が処理を実行し、第11シーケンスの場合、第11処理部P11が処理を実行する。
シーケンス管理部13は、起動時処理の実行を示す関数がコールされると、複数の処理部P1~P4の実行を開始し、第1処理部P1~第4処理部P4の実行順を管理する。同様に、シーケンス管理部13は、終了時処理の実行を示す関数がコールされると、複数の処理部P11~P13の実行を開始し、第11処理部P11~第13処理部P13の実行順を管理する。
また、シーケンス管理部13は、各処理部P1~P4の実行毎に処理結果を取得して、処理結果に応じて、複数の処理部P1~P4における次に実行させる次処理部を決定(判断)する。同様に、シーケンス管理部13は、各処理部P11~P13の実行毎に処理結果を取得して、処理結果に応じて、複数の処理部P11~P13における次に実行させる次処理部を決定する。
例えば、シーケンス管理部13は、処理結果に基づいて、次のシーケンスを実施、現在のシーケンスに留まる、任意のシーケンスに遷移のいずれかを判断する。そして、シーケンス管理部13は、決定したシーケンス、言い換えると、決定した次処理部に対して実行を指示(要求)する。なお、本実施形態では、一例として、後程説明する複数のダイアグ部D1~D4、D11~D13を介して処理結果を取得するシーケンス管理部13を採用している。このように、電子制御装置100は、各処理部P1~P4、P11~P13の処理結果をシーケンス管理部13に通知し、シーケンス管理部13が処理結果に応じて次に実施する処理(シーケンス)へ状態を遷移させる。
具体的には、シーケンス管理部13は、各処理部P1~P4、P11~P13の処理結果が正常である場合、次のシーケンスを実施と判断し、次のシーケンスに対応する処理部に実行を要求する。この場合、シーケンス管理部13は、予め決められた第1シーケンス、第2シーケンス、第3シーケンス、第4シーケンスの順番で、各処理部P1~P4に処理を実行させることになる。同様に、シーケンス管理部13は、予め決められた第11シーケンス、第12シーケンス、第13シーケンスの順番で、各処理部P11~P13に処理を実行させることになる。
また、シーケンス管理部13は、各処理部P1~P4、P11~P13の処理結果が異常である場合、現在のシーケンスに留まると判断し、現在のシーケンスに対応する処理部に実行を要求する。この場合、シーケンス管理部13は、各処理部P1~P4の処理結果で異常があった場合、処理結果が異常であった処理部に再度処理を実行させるようにシーケンスを設定する。同様に、シーケンス管理部13は、各処理部P11~P13の処理結果で異常があった場合、処理結果が異常であった処理部に再度処理を実行させるようにシーケンスを設定する。なお、本実施形態では、複数の処理部P1~P4、P11~P13における一部の処理部のみに関して、処理結果が異常である場合に、現在のシーケンスに留まると判断する例を採用する。
また、シーケンス管理部13は、各処理部P1~P4、P11~P13の処理結果が異常である場合、任意のシーケンスに遷移すると判断し、予め決められたシーケンスに対応する処理部に実行を要求する。遷移させる任意のシーケンスは、複数の処理部P1~P4、P11~P13に予め関連付けられている。この場合、シーケンス管理部13は、各処理部P1~P4、P11~P13の処理結果で異常があった場合、処理結果が異常であった処理部に関連付けられた処理部を実行させるようにシーケンスを設定する。なお、本実施形態では、複数の処理部P1~P4、P11~P13における一部の処理部のみに関して、処理結果が異常である場合に、任意のシーケンスに遷移すると判断する例を採用する。
しかしながら、本開示は、これに限定されない。本開示は、各処理部P1~P4、P11~P13の処理結果が異常であった場合、現在のシーケンスに留まるか、任意のシーケンスに遷移するかのいずれか一方であってもよい。つまり、シーケンス管理部13は、各処理部P1~P4、P11~P13の処理結果が異常であった場合、任意のシーケンスに遷移することなく、現在のシーケンスに留まると判断する。もしくは、シーケンス管理部13は、各処理部P1~P4、P11~P13の処理結果が異常であった場合、現在のシーケンスに留まることなく、任意のシーケンスに遷移すると判断する。
このように、本実施形態では、各処理部P1~P4、P11~P13が予め決められた複数の結果情報のうちの一つを出力することで、処理結果をシーケンス管理部13に伝える例を採用している。つまり、各処理部P1~P4、P11~P13は、結果情報として、正常か異常かのいずれか一つを出力することで、シーケンス管理部13に対して処理結果を伝える。
そして、本実施形態では、各処理部P1~P4、P11~P13に対する実行の指示として、予め決められた複数の指示情報の一つを出力することで、各処理部P1~P4、P11~P13に対して実行を指示するシーケンス管理部13を採用している。つまり、シーケンス管理部13は、指示情報として、次のシーケンスを実施、現在のシーケンスに留まる、任意のシーケンスに遷移のいずれか一つを出力することで、各処理部P1~P4、P11~P13に対して実行を指示する。
これによって、電子制御装置100は、処理の変更を要求された場合に、その要求に対して容易に対応することが可能となる。つまり、電子制御装置100は、各処理部P1~P4、P11~P13の処理内容を変更した場合であっても、シーケンス管理部13を変更する必要がないので好ましい。
なお、指示情報は、処理要求と言い換えることができる。本実施形態では、図2に示すように、各処理部P1~P4、P11~P13に対する実行の指示として、第1~第4処理要求、第11~第13処理要求を出力するシーケンス管理部13を採用している。さらに、例えばシーケンス管理部13が第2処理要求を出力した場合、各処理部P1~P4、P11~P13は、第2処理要求を取得することができる。しかしながら、第2処理要求は、第2処理部P2に対する要求である。このため、第2処理部P2は、第2処理要求に応じて処理を実行する。一方、第1処理部P1や第3処理部P3など第2処理部P2以外の処理部は、第2処理要求に応じて処理を実行することはない。
また、シーケンス管理部13は、起動時処理の実行を示す関数がコールされて、起動時処理における各処理部P1~P4が正常に終了すると、起動時処理や終了時処理とは異なる通常処理の実行を要求する。同様に、シーケンス管理部13は、終了時処理の実行を示す関数がコールされると、終了時処理における各処理部P11~P13が正常に終了すると、マイコン10などへの電源の供給を停止する。
さらに、本実施形態では、図2に示すように、機能ブロックとして、複数のダイアグ部D1~D4、D11~D13を備えたマイコン10を採用している。マイコン10は、各処理部P1~P4に対応して、第1ダイアグ部D1、第2ダイアグ部D2、第3ダイアグ部D3、第4ダイアグ部D4が設けられている。また、マイコン10は、各処理部P11~P13に対応して、第11ダイアグ部D11、第12ダイアグ部D12、第13ダイアグ部D13が設けられている。例えば、第2ダイアグ部D2は、第2処理部P2に対応して設けられている。また、第11ダイアグ部D11は、第11処理部P11に対応して設けられている。
各ダイアグ部D1~D4、D11~D13は、処理部P1~P4、P11~P13の処理結果を取得して、異常回数のカウント、異常回数と異常通知閾値との比較、異常通知などを行う。また、各ダイアグ部D1~D4、D11~D13は、処理部P1~P4、P11~P13から取得した処理結果をシーケンス管理部13へ出力する。
なお、本実施形態では、複数の処理部P1~P4、P11~P13のそれぞれに対応して、複数のダイアグ部D1~D4、D11~D13が設けられたマイコン10を採用している。しかしながら、本開示は、これに限定されない。例えば、マイコン10は、処理部P1~P4、P11~P13に対して一つのダイアグ部が設けられていてもよい。また、マイコン10は、処理部P1~P4、P11~P13のうちのいくつかに共通に設けられた複数のダイアグ部が設けられていてもよい。さらに、マイコン10は、処理部P1~P4、P11~P13のうちのいくつかに共通に設けられたダイアグ部と、処理部P1~P4、P11~P13のうちの一つに対して設けられたダイアグ部とを備えていてもよい。
また、本開示は、各ダイアグ部D1~D4、D11~D13を備えていないマイコン10であっても採用できる。この場合、シーケンス管理部13は、各処理部P1~P4、P11~P13から処理結果を直接取得することになる。
第1装置21、第2装置22、第3装置23は、各処理部P1~P4、P11~P13の実行対象である内部装置である。第1装置21、第2装置22、第3装置23は、マイコン10と電気的に接続されている。マイコン10は、例えば、複数の処理部P1~P4、P11~P13が装置21~23に関する処理を行う。装置21~23としては、例えば、ASIC、I/O装置、AD変換器、フラッシュメモリ(外部メモリ)などを採用できる。また、I/O装置は、複数のI/Oポートを含んでいる。各I/Oポートには、電子制御装置100の外部に設けられたセンサなどが接続される。
なお、本実施形態では、三つの装置21~23を備えた電子制御装置100を採用している。しかしながら、本開示は、これに限定されず、二つ以下の装置を備えていてもよいし、四つ以上の装置を備えていてもよい。
通信部30は、電子制御装置100の外部に設けられた外部電子装置と通信線を介して接続されている。よって、電子制御装置100は、通信部30を介して外部電子装置と通信可能に構成されている。しかしながら、電子制御装置100は、通信部30を備えていなくてもよい。なお、外部電子装置は、上位電子制御装置や外部電子制御装置とも言える。
ここで、図3~図7のフローチャートを用いて、電子制御装置100(マイコン10)の処理動作に関して説明する。まず、図3~図6を用いて、シーケンス管理部13及びダイアグ部D1~D4の処理動作に関して説明する。図3~図6は、起動時処理又は終了時処理を示すフローチャートを区分けした図面である。
ここでは、一例として、起動時処理を実行する際の処理動作を採用する。シーケンス管理部13は、起動時処理の実行を示す関数がコールされると図3のフローチャートをスタートするとともに、所定時間毎に図3のフローチャートを実行する。
しかしながら、シーケンス管理部13は、終了時処理に関しても同様の処理動作を行う。この場合、シーケンス管理部13は、終了時処理の実行を示す関数がコールされると図3のフローチャートをスタートするとともに、所定時間毎に図3のフローチャートを実行する。
なお、シーケンス管理部13は、起動時処理の実行を示す関数がコールされると、第1処理部P1に対して第1処理要求を出力する。これによって、第1処理部P1は、処理を実行する。第1処理部P1で実行する処理は、マイコン10への電源の供給が開始されて、全ての装置21~23が確実に起動している状態や電源が安定している状態となるなど、確実に第2処理部P1以降の処理が実行可能となるまで待機する処理などを採用できる。よって、シーケンス管理部13は、第1処理部P1の処理結果を取得しなくてもよい。
ステップS10では、現在のシーケンスを確認する。シーケンス管理部13は、現在のシーケンスが第1~第4シーケンスのいずれであるかを確認する。
ステップS11では、現在のシーケンス=1であるか否かを判定する。シーケンス管理部13は、現在のシーケンスが第1シーケンスであると判定した場合はステップS12へ進む。一方、シーケンス管理部13は、現在のシーケンスが第1シーケンスであると判定しなかった場合はA、すなわち、図4のステップS20に進む。
ステップS12では、第2シーケンスへ遷移する。つまり、シーケンス管理部13は、第2処理部P2に対して、第2処理要求を出力する。
ステップS20では、現在のシーケンス=2であるか否かを判定する。シーケンス管理部13は、現在のシーケンスが第2シーケンスであると判定した場合はステップS21へ進む。一方、シーケンス管理部13は、現在のシーケンスが第2シーケンスであると判定しなかった場合はB、すなわち、図5のステップS30に進む。
ステップS21では、第2シーケンスの結果を取得する。つまり、シーケンス管理部13は、第2処理部P2の処理が正常に実行されたか否かを確認するために、第2処理部P2の処理結果を取得する。
ステップS22では、結果=正常であるか否かを判定する。シーケンス管理部13は、第2処理部P2の処理結果が正常であるか異常であるかを判定する。言い換えると、シーケンス管理部13は、異常診断を行う。
そして、シーケンス管理部13は、第2処理部P2の処理結果が正常であると判定した場合はステップS23へ進み、第2処理部P2の処理結果が正常であると判定しなかった場合はステップS24へ進む。
ステップS23では、第3シーケンスへ遷移する。つまり、シーケンス管理部13は、第3処理部P3に対して、第3処理要求を出力する。ここでの第3処理部P3は、次処理部に相当する。このように、本実施形態では、一例として、第2処理部P2の処理結果が正常であると判定した場合は、次のシーケンスを実施と判断するシーケンス管理部13を採用している。
ステップS24では、第2異常回数をインクリメントする。第2ダイアグ部D2は、第2処理部P2の異常回数である第2異常回数をインクリメントする。
ステップS25では、第2異常回数≧x回であるか否かを判定する。第2ダイアグ部D2は、第2異常回数≧x回であると判定した場合はステップS26へ進み、第2異常回数≧x回であると判定しなかった場合は図4のフローチャートを終了する。つまり、第2ダイアグ部D2は、第2異常回数≧x回であると判定しなかった場合は起動時処理を終了する。なお、本開示は、ステップS24、S25を備えていなくてもよい。
ところで、第2異常回数と比較するxは、異常通知の実行及び非実行を判定するための閾値であり、通知判定閾値と言える。通知判定閾値xは、第2処理部P2の処理結果が確実に異常となるとみなした場合のみ、異常通知を行うために設けられていると言える。
通知判定閾値xは、予め設定されている値であり、任意に設定することができる。また、通知判定閾値xは、第2処理部の処理内容によって設定することができる。例えば、通知判定閾値xは、ノイズなどによって異常となりやすい処理の場合は、ノイズなどに影響されず異常となりにくい処理の場合よりも回数を増やすことで、誤判定を抑制することができる。
なお、後程説明する通知判定閾値y、zに関しても同様である。また、通知判定閾値x、y、zは、それぞれ同じ回数でもよいし、異なる回数であってもよい。
ステップS26では、異常通知を行う。第2ダイアグ部D2は、第2異常回数が通知判定閾値x以上であると判定した場合、異常通知を行う。異常通知は、例えば、スピーカーやディスプレイを用いて、ユーザに異常を通知する。また、異常通知は、例えば、第2処理部P2の処理結果が異常であることをメモリ12などに記憶することで、ディーラーの作業者に異常を通知するものであってもよい。これによって、本開示は、第2処理部P2での処理が確実に異常であると判定した場合に、第2処理部P2での処理が異常であることをユーザや作業者に伝えることができる。
また、第2ダイアグ部D2は、通信部30を介して、外部電子装置に対して異常通知を行ってもよい。この場合、第2ダイアグ部D2は、第2異常回数≧x回と判定した旨をシーケンス管理部13に対して伝える。これによって、シーケンス管理部13は、通信部30を起動させるシーケンスに遷移する。そして、第2ダイアグ部D2は、通信部30が起動した状態で、外部電子装置に対して異常通知を行う。
なお、本実施形態では、異常である回数が所定回数(ここではx回)に達した場合に異常通知を行う例を採用している。しかしながら、本開示は、これに限定されず、ステップS22で異常であると判定された場合に、異常通知を行ってもよい。つまり、本開示は、ステップS24~S26を備えていなくてもよい。これによって、本開示は、ステップS24~S26を行う場合よりも、マイコン10の処理を簡略化しつつ、第2処理部P2での処理が異常であることを、ユーザや作業者に伝えることができる。
なお、シーケンス管理部13は、第2異常回数≧x回であると判定されなかった場合は第2シーケンス以外に遷移することなく起動時処理を終了し、所定時間後に、ステップS10を実行する。また、ステップS24、S25を備えていない場合、シーケンス管理部13は、第2処理部P2の処理結果が異常と判定した場合、第2シーケンス以外に遷移することなく起動時処理を終了し、所定時間後に、ステップS10を実行する。このように、本実施形態では、一例として、第2処理部P2の処理結果が異常であると判定した場合は、現在のシーケンスに留まると判断するシーケンス管理部13を採用している。ここでの第2処理部P2は、次処理部に相当する。
ステップS30では、現在のシーケンス=3であるか否かを判定する。シーケンス管理部13は、現在のシーケンスが第3シーケンスであると判定した場合はステップS31へ進む。一方、シーケンス管理部13は、現在のシーケンスが第3シーケンスであると判定しなかった場合はC、すなわち、図6のステップS40に進む。
ステップS31では、第3シーケンスの結果を取得する。つまり、シーケンス管理部13は、第3処理部P3の処理が正常に実行されたか否かを確認するために、第3処理部P2の処理結果を取得する。
ステップS32では、結果=正常であるか否かを判定する。シーケンス管理部13は、第3処理部P3の処理結果が正常であるか異常であるかを判定する。そして、シーケンス管理部13は、第3処理部P3の処理結果が正常であると判定した場合はステップS33へ進み、第3処理部P3の処理結果が正常であると判定しなかった場合はステップS34へ進む。
ステップS33では、第4シーケンスへ遷移する。つまり、シーケンス管理部13は、第4処理部P4に対して、第4処理要求を出力する。ここでの第4処理部P4は、次処理部に相当する。
ステップS34、S36は、ステップS24、S26と同様であるため、ステップS24、S26での説明を参照して適用することができる。つまり、第3ダイアグ部D3は、第2ダイアグ部D2と同様の処理を行う。
しかしながら、ステップS35では、第3異常回数≧y回であるか否かを判定する。第3ダイアグ部D3は、第3異常回数≧y回であると判定した場合はステップS36へ進み、第3異常回数≧y回であると判定しなかった場合はステップS37へ進む。つまり、第3ダイアグ部D3は、第3異常回数≧y回であると判定しなかった場合は起動時処理を終了するのではなくステップS37へ進む。
なお、本実施形態では、第3異常回数が所定回数(ここではy回)に達した場合にステップS37へ移行する例を採用している。しかしながら、本開示は、これに限定されず、ステップS32でNO判定の場合にステップS37へ移行してもよい。
ステップS37では、第2シーケンスへ遷移する。つまり、シーケンス管理部13は、第2処理部P2に対して、第2処理要求を出力する。このように、シーケンス管理部13は、動的に任意のシーケンスへ遷移することができる。
シーケンス管理部13は、第3異常回数≧y回であると判定されなかった場合は第2シーケンス以外に遷移することなく、すなわち、第2シーケンスを維持した状態で起動時処理を終了し、所定時間後に、ステップS10を実行する。また、ステップS34、S36を備えていない場合、シーケンス管理部13は、第3処理部P3の処理結果が異常と判定した場合、第2シーケンス以外に遷移することなく起動時処理を終了し、所定時間後に、ステップS10を実行する。このように、本実施形態では、一例として、第3処理部P3の処理結果が異常であると判定した場合は、任意のシーケンスとして、第2シーケンスに遷移すると判断するシーケンス管理部13を採用している。
つまり、シーケンス管理部13は、複数の処理部P1~P4における一つである第3処理部P3の処理結果が異常であった場合、実行順が第3処理部P3よりも前の第2処理部P2を次処理部に決定する。そして、シーケンス管理部13は、決定した第2処理部P2に対して実行を指示する。ここでの、第3処理部P3は、対象処理部に相当する。また、第2処理部P2は、先行処理部及び次処理部に相当する。
言い換えると、シーケンス管理部13は、ある処理部の処理結果が異常であった場合、異常であった処理部を再度やり直したり、最初処理部から処理をやり直したりするのではなく、任意の処理部に実行させる。なお、この異常であった処理部を再度やり直したり、最初処理部から処理をやり直したりする電子制御装置は、比較例とする。処理のやり直しは、異常診断のリトライと言える。
この比較例の場合、異常診断のリトライに制限があったり、起動時処理や終了時処理に要する時間が長くなるといった課題が生じる。これに対して、電子制御装置100は、上記のように、任意のシーケンスに戻ることができるため、最低限かつ適切な範囲で異常診断のリトライが可能となる。特に、電子制御装置100は、次処理部として、実行順が最初の処理部(第1処理部P1)と異なる処理部が設定されていると、最初からやり直す必要がないので好ましい。なお、ここでの制限とは、例えば、処理部としては別になっているが連続して実施することに意味がある起動時処理もしくは終了時処理に対して、適切なシーケンスに遷移する必要があるなどである。例えば、第3処理部P3は、第2処理部P2の直後に実施しないと、たとえ実施したとしても正しい診断結果が得られないなどである。
ステップS40では、第4シーケンスの結果を取得する。つまり、シーケンス管理部13は、第4処理部P4の処理が正常に実行されたか否かを確認するために、第4処理部P4の処理結果を取得する。
ステップS41では、結果=正常であるか否かを判定する。シーケンス管理部13は、第4処理部P4の処理結果が正常であるか異常であるかを判定する。そして、シーケンス管理部13は、第4処理部P4の処理結果が正常であると判定した場合はステップS42へ進み、第4処理部P4の処理結果が正常であると判定しなかった場合はステップS43へ進む。
ステップS42では、起動を完了する。シーケンス管理部13は、起動時処理が完了したため、通常処理の実行を要求する。この場合、シーケンス管理部13は、例えば、通信部30の起動シーケンスへ遷移させた後に、車載機器の制御に関連するシーケンスへ遷移させる。つまり、電子制御装置100は、起動時処理が終了すると、通信部30を起動させた後に、車載機器の制御を行う。
ステップS43~S45は、ステップS24~S26と同様であるため、ステップS24~S26での説明を参照して適用することができる。つまり、第4ダイアグ部D4は、第2ダイアグ部D2と同様の処理を行う。
なお、複数の処理部P1~P4の処理結果が正常であった場合、第2処理部P2は、第1処理部P1に対する次処理部となる。同様に、第3処理部P3は、第2処理部P2に対する次処理部となる。そして、第4処理部P4は、第3処理部P3に対する次処理部となる。
次に、図7を用いて、第2処理部P2の処理動作に関して説明する。なお、他の処理部P3、P4、P11~P13に関しても同様である。また、第1処理部P1に関しても同様であってもよい。しかしながら、上記のような確実に第2処理部P1以降の処理が実行可能となるまで待機する処理が必要ない場合は、第1処理部P1は、省略してもよい。
ステップS50では、第2処理部P2は、初期化処理を行う。ステップS51では、第2処理部P2は、シーケンス=2であるか否かを判定する。第2処理部P2は、シーケンスが第2シーケンス、すなわち、自身に対応するシーケンスであると判定した場合はステップS52へ進み、第2シーケンスであると判定しなかった場合は図7のフローチャートを終了する。ステップS52では、第2処理部P2は、第2処理を実行する。
このように、電子制御装置100は、関数がコールされると、複数の処理部P1~P4、P11~P13の実行を開始し、複数の処理部P1~P4、P11~P13の実行順を管理するシーケンス管理部13を備えている。シーケンス管理部13は、各処理部P1~P4、P11~P13の実行毎に処理結果を取得するため、その処理結果に応じて複数の処理部P1~P4、P11~P13における次に実行させる次処理部を決定することができる。そして、電子制御装置100は、決定した次処理部に対して実行を指示するため、処理内容を変更した場合であっても、複数の処理部の実行を開始するための関数を変更する必要がない。よって、電子制御装置100は、ソフトのメンテナンス性や拡張性を向上することができる。
次に、図8のタイムチャートを用いて、電子制御装置100の処理動作に関して説明する。ここでは、より具体的な一例を採用する。図8は、マイコン10が起動時処理を実行する際のタイムチャートを示している。また、図8のシーケンス管理部13における1~7の数字は、シーケンス番号に相当する。
ここでの電子制御装置100は、内部装置として、I/O装置、AD変換器、フラッシュメモリ、外部レジスタ、ASICを備えているものとする。また、マイコン10は、処理部として、上記第1処理部P1、I/O初期設定部P21、AD値チェック部P22、データフラッシュチェック部P23、外部レジスタチェック部P24、ASICレジスタチェック部P25を備えているものとする。
第1シーケンスは、第1処理部P1が上記と同様の処理を実行する。第2シーケンスは、I/O初期設定部P21が、I/O装置21における各I/Oポートの機能設定などの初期設定を実行する。第3シーケンスは、AD値チェック部P22が、AD変換器によるAD変換が正確に行われているか否かを確認する。
このように、AD変換器は、I/O装置21から入力された信号をAD変換するものである。このため、I/O初期設定部P21とAD値チェック部P22とは、相関する処理部と言える。I/O初期設定部P21は、AD値チェック部P22に対する関連処理部と言える。同様に、AD値チェック部P22は、I/O初期設定部P21に対する関連処理部と言える。
第4シーケンスは、データフラッシュチェック部P23が、フラッシュメモリの記憶値を確認する。第5シーケンスは、外部レジスタチェック部P24が、外部レジスタに初期値などが正確に書き込まれているかなどを確認する。第6シーケンスは、ASICレジスタチェック部P25が、ASICレジスタに初期値などが正確に書き込まれているかなどを確認する。なお、第7シーケンスは、マイコン10が通常処理を実行する。
シーケンス管理部13は、タイミングt1~t4の各タイミングで、第1処理部P1に対して第1処理要求を出力する。
次に、シーケンス管理部13は、タイミングt5で第1シーケンスから第2シーケンスへ遷移する。シーケンス管理部13は、タイミングt5~t7の各タイミングで、I/O初期設定部P21に対して第2処理要求を出力する。そして、シーケンス管理部13は、タイミングt8でI/O初期設定部P21での処理結果が正常(OK)であった場合、第2シーケンスから第3シーケンスへ遷移する。
なお、シーケンス管理部13は、タイミングt8でI/O初期設定部P21での処理結果がNGであった場合、例えば、第2シーケンスを繰り返すか、第1シーケンスへ遷移する。
次に、シーケンス管理部13は、タイミングt8でAD値チェック部P22に対して第3処理要求を出力する。そして、シーケンス管理部13は、タイミングt9でAD値チェック部P22での処理結果が異常(NG)であった場合、第3シーケンスから第2シーケンスへ遷移する。なお、シーケンス管理部13は、タイミングt9でAD値チェック部P22での処理結果がOKであった場合、第3シーケンスから第4シーケンスへ遷移する。
このように、シーケンス管理部13は、複数の処理部P21~P25における一つであるAD値チェック部P22の処理結果が異常の場合、複数の処理部P21~P25におけるAD値チェック部P22に相関するI/O初期設定部P21を次処理部に決定する。そして、シーケンス管理部13は、決定したI/O初期設定部P21に対して実行を指示する。なお、ここでは、AD値チェック部P22が対象処理部に相当し、I/O初期設定部P21が関連処理部及び時処理部に相当する。
次に、シーケンス管理部13は、タイミングt9~t11の各タイミングで、I/O初期設定部P21に対して第2処理要求を出力する。そして、シーケンス管理部13は、タイミングt12でI/O初期設定部P21での処理結果がOKであった場合、第2シーケンスから第3シーケンスへ遷移する。
次に、シーケンス管理部13は、タイミングt12で、AD値チェック部P22に対して第3処理要求を出力する。そして、シーケンス管理部13は、タイミングt13でAD値チェック部P22での処理結果がOKであった場合、第3シーケンスから第4シーケンスへ遷移する。
次に、シーケンス管理部13は、タイミングt13~t14の各タイミングで、データフラッシュチェック部P23に対して第4処理要求を出力する。そして、シーケンス管理部13は、タイミングt15でデータフラッシュチェック部P23での処理結果がOKであった場合、第4シーケンスから第5シーケンスへ遷移する。
なお、シーケンス管理部13は、タイミングt15でデータフラッシュチェック部P23での処理結果がNGであった場合、例えば、第4シーケンスを繰り返すか、第2シーケンスや第3シーケンスへ遷移する。
次に、シーケンス管理部13は、タイミングt15で、外部レジスタチェック部P24に対して第5処理要求を出力する。そして、シーケンス管理部13は、タイミングt16で外部レジスタチェック部P24での処理結果がOKであった場合、第5シーケンスから第6シーケンスへ遷移する。
なお、シーケンス管理部13は、タイミングt16で外部レジスタチェック部P24での処理結果がNGであった場合、例えば、第5シーケンスを繰り返すか、第2シーケンスや第3シーケンスや第4シーケンスへ遷移する。
次に、シーケンス管理部13は、タイミングt16~18の各タイミングでASICレジスタチェック部P25に対して第6処理要求を出力する。そして、シーケンス管理部13は、タイミングt19でASICレジスタチェック部P25での処理結果がNGであった場合、第6シーケンスから第5シーケンスへ遷移する。なお、シーケンス管理部13は、タイミングt19でASICレジスタチェック部P25での処理結果がOKであった場合、第6シーケンスから第7シーケンスへ遷移する。
次に、シーケンス管理部13は、タイミングt19で、外部レジスタチェック部P24に対して第5処理要求を出力する。そして、シーケンス管理部13は、タイミングt20で外部レジスタチェック部P24での処理結果がOKであった場合、第5シーケンスから第6シーケンスへ遷移する。
次に、シーケンス管理部13は、タイミングt20~t22の各タイミングでASICレジスタチェック部P25に対して第6処理要求を出力する。そして、シーケンス管理部13は、タイミングt23でASICレジスタチェック部P25での処理結果がOKであった場合、第6シーケンスから第7シーケンスへ遷移する。
シーケンス管理部13は、処理結果が異常であり、且つ、この処理結果によって、後の処理部での処理が不要となった場合は、次処理部を決定することなく、複数の処理部での処理を終了させてもよい。つまり、シーケンス管理部13は、複数の処理部P1~P4、P11~P13における一つである対象処理部の処理結果が異常であり、且つ、処理結果によって、複数の処理部における実行順が対象処理部よりも後の後行処理部の実行が不要となることもある。
例えばAD値チェック部P22の処理結果が異常の場合、AD変換器は、正常なAD変換の結果を得ることができない。このため、電子制御装置100は、正常に動作することができない。よって、起動時処理におけるAD値チェック部P22以降に実行される処理部は、実行が不要になる。
よって、このような場合、シーケンス管理部13は、次処理部を決定することなく、複数の処理部での処理を終了させてもよい。例えば、シーケンス管理部13は、第2処理部P2での処理結果が異常であった場合、第3処理部P3及び第4処理部P4に対して処理を実行させることなく起動時処理を終了する。このようにすることで、電子制御装置100は、起動時処理や終了時処理に要する時間を短縮することができる。
また、このように、次処理部を決定することなく、複数の処理部での処理を終了させた場合、シーケンス管理部13は、通信部30を起動させるシーケンスに遷移してもよい。そして、ダイアグ部は、通信部30を介して外部電子装置に対して異常通知を行う。これによって、電子制御装置100は、正常に動作できなくなったことを、外部電子装置に伝えることができる。
なお、マイコン10は、終了時処理として、例えば、通信部を停止したり、次回の起動時に適切に起動できるか否かを確認したり、確認結果をフラッシュメモリに書き込んだり、ウォッチドッグを確認したりする。しかしながら、本開示は、これに限定されない。
また、本開示は、起動時処理と終了時処理の少なくとも一方を行うものであれば採用できる。よって、マイコン10は、起動時における第1処理部P1、第2処理部P2、第3処理部P3、第4処理部P4と、終了時における第11処理部P11、第12処理部P12、第13処理部P13の少なくとも一方を備えていればよい。
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。