(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-13
(45)【発行日】2024-02-21
(54)【発明の名称】電子制御装置
(51)【国際特許分類】
G06F 9/48 20060101AFI20240214BHJP
F02D 45/00 20060101ALI20240214BHJP
【FI】
G06F9/48 300F
F02D45/00 358
F02D45/00 370
(21)【出願番号】P 2020067803
(22)【出願日】2020-04-03
【審査請求日】2022-07-14
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際弁理士法人
(72)【発明者】
【氏名】関屋 大樹
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2010-146258(JP,A)
【文献】特開2005-190195(JP,A)
【文献】特開2007-115036(JP,A)
【文献】特開平8-161183(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
F02D 45/00
(57)【特許請求の範囲】
【請求項1】
第1のトリガ信号を一定時間(Tc)毎に発生させるように構成された第1の発生部(21)と、
前記第1のトリガ信号が発生すると、制御対象の制御に用いられるアナログ信号のAD変換を実施し、当該AD変換が完了すると、当該AD変換の結果であるAD値をメモリ(13)に格納するように構成された変換格納実施部(15,17,S120,S140)と、
前記第1のトリガ信号の発生タイミングから、前記AD変換と前記AD値の前記メモリへの格納とに要する最小時間よりも長く、且つ、前記一定時間よりは短い時間に設定された所定時間(Ts)だけずれたタイミングで、第2のトリガ信号を発生させるように構成された第2の発生部(22)と、
前記第2のトリガ信号が発生すると、前記制御を行うためのタスクとして、前記メモリに格納されている前記AD値を使用する処理を含む周期タスクを実行するように構成された実行部(7)と、
前記周期タスクが前回起動されてから今回起動される前に前記変換格納実施部による前記AD値の前記メモリへの格納が完了したか否かの、判定を行うように構成された順序監視部(7,S470)と、
を備える電子制御装置。
【請求項2】
請求項1に記載の電子制御装置であって、
前記順序監視部は、
前記第2のトリガ信号が発生する毎に、前記判定を行うように構成されている、
電子制御装置。
【請求項3】
請求項1又は請求項2に記載の電子制御装置であって、
前記AD値の前記メモリへの格納が完了する毎に、前記AD値の前記メモリへの格納が完了した時刻である格納完了時刻を記憶するように構成された完了時刻記憶部(17,S160)と、
前記第2のトリガ信号が発生する毎に、当該第2のトリガ信号が発生した時刻を、前記周期タスクの起動時刻として記憶するように構成された起動時刻記憶部(17,S320)と、を備え、
前記順序監視部は、前記完了時刻記憶部により記憶された前記格納完了時刻と、前記起動時刻記憶部により記憶された前記起動時刻とに基づいて、前記判定を行うように構成されている、
電子制御装置。
【請求項4】
請求項3に記載の電子制御装置であって、
前記AD値の前記メモリへの格納が完了する毎に、前記起動時刻記憶部により記憶された前記起動時刻のうち、最新の前記起動時刻と、当該最新の前記起動時刻よりも1回前に記憶された前記起動時刻との差に基づいて、前記周期タスクの起動周期が正常範囲内か否かを判定するように構成された起動周期判定部(7,S220)、を更に備える、
電子制御装置。
【請求項5】
請求項3又は請求項4に記載の電子制御装置であって、
前記第2のトリガ信号が発生する毎に、前記完了時刻記憶部により記憶された前記格納完了時刻のうち、最新の前記格納完了時刻と、当該最新の前記格納完了時刻よりも1回前に記憶された前記格納完了時刻との差に基づいて、前記AD値の格納周期が正常範囲内か否かを判定するように構成された格納周期判定部(7,S420)、を更に備える、
電子制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、電子制御装置に関する。
【背景技術】
【0002】
例えば、下記特許文献1に記載の電子制御装置では、タイマにより一定時間毎にAD変換トリガ信号が発生され、このAD変換トリガ信号の発生により、AD変換器によるアナログ信号のAD変換が実施される。そして、AD変換が完了すると、このAD変換の結果であるAD値が、DMA転送によりメモリに格納される。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記特許文献1に記載の技術に関連して、発明者の詳細な検討の結果、以下の課題が見出された。
制御対象を制御するためのタスクとして、一定時間毎に起動されるタスク(即ち、周期タスク)があり、この周期タスクにより、アナログ信号のAD値を使用する処理を行うとする。言い換えると、周期タスクに、AD値を使用する処理が含まれているとする。尚、ここで言うタスクはソフトウェアの実行単位のことである。また、周期タスクの起動とは、周期タスクの実行を開始させることである。
【0005】
発明者は、AD変換トリガ信号の発生タイミングから所定時間だけずれたタイミングで別のトリガ信号を発生させ、この別のトリガ信号の発生により、上記周期タスクが起動される構成を考えた。この構成によれば、周期タスクの起動周期を安定させやすい。上記別のトリガ信号は、AD変換トリガ信号と同様に、タイマなどによって高い精度の周期で発生させることができるからである。
【0006】
そして、この構成の場合、AD変換トリガ信号と上記別のトリガ信号との位相差に相当する上記所定時間は、アナログ信号のAD変換とAD値のメモリへの格納とに要すると予想される時間よりも長く、かつ、上記一定時間よりは短い時間に設定すれば良い。
【0007】
ところで、AD変換とAD値のメモリへの格納とに要する時間は、種々の要因により、ばらつく可能性がある。ここで言うAD変換に要する時間とは、AD変換トリガ信号が発生してからAD変換が完了するまでの時間である。例えば、AD変換に要する時間は、別の高優先度のAD変換が実施された場合に、該当のAD変換の開始が待たされることで、長くなる可能性がある。また、AD値のメモリへの格納に要する時間は、バスの混み具合により、長くなる可能性がある。
【0008】
そして、AD変換トリガ信号の発生からAD値のメモリへの格納が完了するまでの時間が、上記所定時間よりも長くなった場合には、最新のAD変換によるAD値がメモリに格納される前に周期タスクが起動される。すると、周期タスクにおいて最新のAD値を使用することができなくなる。
【0009】
このような事態を検知できないと、例えば周期タスクにおいてより新しいAD値が使用できる可能性を高めるための処置や、周期タスクにて最新のAD値が使用できないことによる影響を抑制するための処置等、制御性能の低下を抑制するための処置を実施することができない。
【0010】
そこで、本開示の1つの局面は、周期タスクの起動周期を安定させつつ、周期タスクにおいて最新のAD値が使用できない事態が生じたことを検知できるようにする。
【課題を解決するための手段】
【0011】
本開示の1つの態様による電子制御装置は、第1の発生部(21)と、変換格納実施部(15,17,S120,S140)と、第2の発生部(22)と、実行部(7)と、順序監視部(7,S470)と、を備える。
【0012】
第1の発生部は、第1のトリガ信号を一定時間(Tc)毎に発生させる。
変換格納実施部は、第1のトリガ信号が発生すると、制御対象の制御に用いられるアナログ信号のAD変換を実施し、当該AD変換が完了すると、当該AD変換の結果であるAD値をメモリ(13)に格納する。
【0013】
第2の発生部は、第1のトリガ信号の発生タイミングから、前記AD変換と前記AD値のメモリへの格納とに要する最小時間よりも長く、且つ、前記一定時間よりは短い時間に設定された所定時間(Ts)だけずれたタイミングで、第2のトリガ信号を発生させる。このため、第2のトリガ信号は、第1のトリガ信号に対して位相が所定時間だけずれた信号であって良い。
【0014】
実行部は、第2のトリガ信号が発生すると、制御対象の制御を行うためのタスクとして、前記メモリに格納されているAD値を使用する処理を含む周期タスクを実行する。
順序監視部は、周期タスクが前回起動されてから今回起動される前に変換格納実施部によるAD値のメモリへの格納が完了したか否かの、判定を行う。
【0015】
このような構成によれば、第1のトリガ信号に対して位相が所定時間だけずれた第2のトリガ信号を発生させ、この第2のトリガ信号により周期タスクが起動されるため、周期タスクの起動周期を安定させやすい。そして、順序監視部を備えるため、周期タスクが前回起動してから今回起動する前にAD値のメモリへの格納が完了しなかったことを検知することができる。よって、周期タスクにおいて最新のAD値が使用できない事態が生じたことを検知できるようになる。
【図面の簡単な説明】
【0016】
【
図1】実施形態の電子制御装置の構成を示すブロック図である。
【
図2】第1のトリガ信号が発生する毎に行われる動作及び処理を表すフローチャートである。
【
図3】第2のトリガ信号が発生する毎に行われる動作及び処理を表すフローチャートである。
【
図4】実施形態の作用を説明するタイムチャートである。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら、本開示の実施形態を説明する。
[1.構成]
図1に示す電子制御装置(以下、ECU)1は、例えば自動車のエンジン3を制御するものである。ECUは、「Electronic Control Unit」の略である。ECU1は、エンジン3を制御するための処理を行う制御部として、マイコン5を備える。
【0018】
マイコン5は、CPU7と、CPU7により実行されるプログラムが格納されたROM11と、CPU7によって演算される対象のデータや演算結果等が記憶されるRAM13と、内部バス14と、を備える。尚、CPU7は、1つに限らず、複数備えられても良い。
【0019】
更に、マイコン5は、1つ以上のアナログ信号をAD変換(即ち、アナログ/デジタル変換)するAD変換部15と、プログラムによって指定されたデータのRAM13への転送を行うDMAコントローラ(以下、DMAC)17と、タイマ部19と、を備える。DMAは、「Direct Memory Access」の略である。
【0020】
制御対象としてのエンジン3に備えられた複数の各気筒31には、筒内圧力に応じた電圧となる筒内圧信号を出力する圧力センサ33がそれぞれ設けられている。
マイコン5には、AD変換対象のアナログ信号として、各圧力センサ33からの筒内圧信号が入力される。そして、マイコン5に入力される筒内圧信号のそれぞれは、AD変換部15によってAD変換される。以下では、説明を簡略化するため、AD変換されるアナログ信号が1つの筒内圧信号である、として説明する。
【0021】
マイコン5において、AD変換部15による筒内圧信号のAD変換が完了すると、AD変換部15からDMAC17に、AD値のDMA転送要求が出力される。AD値とは、AD変換の結果であり、即ち、AD変換された後のデジタルデータのことである。AD値のDMA転送要求は、AD変換部15とは別の要求発生部から出力されても良い。
【0022】
DMAC17は、AD値のDMA転送要求を受けると、AD変換部15からRAM13へAD値を転送(即ち、DMA転送)する。
そして、DMA転送によりRAM13に格納されたAD値は、CPU7が後述の周期タスクを実行することにより、エンジン3の制御に用いられる。つまり、後述の周期タスクには、筒内圧信号のAD値をRAM13から読み出して当該AD値をエンジン3の制御のために使用する処理(以下、AD値使用処理)が含まれている。AD値使用処理としては、例えば、筒内圧信号のAD値(即ち、筒内圧検出値)に基づいて燃料噴射量を演算する処理がある。
【0023】
タイマ部19は、少なくとも2つのタイマ21,22を備える。
各タイマ21、22は、マイコン5の内部クロックでカウントアップされるタイマカウンタと、コンペアレジスタとを備える。そして、各タイマ21,22は、タイマカウンタの値が、コンペアレジスタに予め設定されている値(即ち、比較値)と同じになると、トリガ信号を発生させる(即ち、出力する)と共に、その時点でタイマカウンタの値が0に戻るように構成されている。
【0024】
このため、例えば、タイマ21からは、当該タイマ21を構成するタイマカウンタの値が当該タイマ21を構成するコンペアレジスタ内の比較値と一致する毎であって、「比較値×内部クロックの1周期時間」の一定時間毎に、トリガ信号が出力される。タイマ22についても同様である。尚、以下の説明において、タイマ21,22が満了するとは、タイマカウンタの値がコンペアレジスタ内の比較値と一致した、ということを意味する。
【0025】
タイマ21によって発生されるトリガ信号は、AD変換部15にAD変換を開始させるためのトリガ信号として使用される。また、タイマ22によって発生されるトリガ信号は、周期タスクを起動するためのトリガ信号として使用される。
【0026】
以下では、タイマ21,22を特に区別して呼称する場合には、タイマ21を、AD変換開始タイマ21と言い、タイマ22を、周期タスク起動タイマ22と言う。また、AD変換開始タイマ21によって発生されるトリガ信号を、第1のトリガ信号とも言い、周期タスク起動タイマ22によって発生されるトリガ信号を、第2のトリガ信号とも言う。
【0027】
ここで、
図4に示すように、第1のトリガ信号と第2のトリガ信号とで、発生する周期は同じ一定時間Tcに設定されるが、第2のトリガ信号は、第1のトリガ信号の発生タイミングから所定時間Tsだけずれて発生される。尚、
図4において、「AD変換開始タイマ」は、AD変換開始タイマ21を構成するタイマカウンタの値を表している。同様に、「周期タスク起動タイマ」は、周期タスク起動タイマ22を構成するタイマカウンタの値を表している。
【0028】
具体的には、マイコン5の動作開始時に実行される初期設定処理により、AD変換開始タイマ21を構成するコンペアレジスタと、周期タスク起動タイマ22を構成するコンペアレジスタとのそれぞれには、比較値として、一定時間Tcに相当する同じ値が設定(即ち、セット)される。一定時間Tcに相当する値とは、一定時間Tcを内部クロックの1周期時間で割った値である。
【0029】
そして、上記初期設定処理により、周期タスク起動タイマ22を構成するタイマカウンタには、初期値として例えば0が設定されるが、AD変換開始タイマ21を構成するタイマカウンタには、初期値として、所定時間Tsに相当する値が設定される。つまり、第1のトリガ信号が第2のトリガ信号よりも所定時間Tsだけ先に発生するように、AD変換開始タイマ21を構成するタイマカウンタの値にはオフセットが付けられる。そして、このような初期設定が終了すると、両タイマ21,22がスタートされる。即ち、両タイマ21,22におけるタイマカウンタのカウントアップが開始される。
【0030】
また、タイマ部19には、フリーランニングカウンタ(以下、FRC)30も備えられている。FRC30も、マイコン5の内部クロックでカウントアップされるカウンタである。そして、FRC30の値(以下、FRC値)は、所定の上限値になると0に戻る(即ち、ラップラウンドする)ようになっている。FRC値は、マイコン5において時刻の値として使用される。
【0031】
[2.基本動作の説明]
図4に示すように、時刻t1にて、AD変換開始タイマ21が満了したとする。すると、第1のトリガ信号が発生して、AD変換部15が筒内圧信号のAD変換を開始する。そして、AD変換が完了すると、DMAC17にAD値のDMA転送要求が出力されて、DMAC17によるAD値のRAM13へのDMA転送が開始される。このDMA転送が完了することにより、AD値がRAM13に格納される。
図4の例では、時刻t2でAD値のDMA転送が完了している。
【0032】
また、第1のトリガ信号が発生してから所定時間Tsが経過した時刻t3になると、周期タスク起動タイマ22が満了して、第2のトリガ信号が発生し、周期タスクが起動する。つまり、CPU7が周期タスクの実行を開始する。そして、この周期タスクのなかで、前述のAD値使用処理が行われる。
【0033】
ここで、AD値使用処理にて最新のAD変換によるAD値が使用されるようにするためには、周期タスクが起動される前に、直前に発生した第1のトリガ信号に伴うAD変換によるAD値のRAM13への格納(即ち、DMA転送)が完了していることが望ましい。
【0034】
このため、上記所定時間Tsは、第1及び第2のトリガ信号の発生周期である一定時間Tcよりも短いが、少なくとも、AD変換とAD値のRAM13への格納とに要するトータルの最小時間Tminよりは長い時間に設定されている。実際には、所定時間Tsは、上記最小時間Tminに所定のマージン時間を加えた時間に設定されている。
【0035】
よって、例えば優先度が高い別の信号のAD変換が実施されることで、筒内圧信号のAD変換が長い時間待たされたり、内部バス14の混雑によりAD値のDMA転送が長い時間待たされたりしなければ、周期タスクの起動前にAD値のRAM13への格納は完了する。
【0036】
そして、時刻t1から一定時間Tcが経過した時刻t4になると、再びAD変換開始タイマ21が満了して第1のトリガ信号が発生し、筒内圧信号のAD変換と、AD値のRAM13へのDMA転送とが順次実施される。
図4の例では、時刻t5でAD値のDMA転送が完了している。
【0037】
また、時刻t2から一定時間Tcが経過した時刻t6になると、再び周期タスク起動タイマ22が満了して第2のトリガ信号が発生し、周期タスクが起動される。そして、この回の周期タスクでは、最新のAD変換によるAD値、即ち、直前に発生した第1のトリガ信号に伴うAD変換によるAD値が、使用されることになる。
【0038】
[3.処理]
次に、マイコン5において第1のトリガ信号が発生する毎に行われる動作及び処理について、
図2のフローチャートを用いて説明する。また、マイコン5において第2のトリガ信号が発生する毎に行われる動作及び処理について、
図3のフローチャートを用いて説明する。尚、
図2において、S110~S170は、AD変換開始タイマ21、AD変換部15及びDMAC17によって行われる動作であり、S210~S250は、CPU7がプログラムを実行することで行われる処理である。また、
図3において、S310~S330は、周期タスク起動タイマ22及びDMAC17によって行われる動作であり、S410~S490は、CPU7がプログラムを実行することで行われる処理である。
【0039】
図2において、S110に示すように、AD変換開始タイマ21が満了して第1のトリガ信号が発生すると、S120に示すように、AD変換部15が筒内圧信号のAD変換を実施する。そして、S130に示すように、AD変換が完了すると、DMAC17にAD値のDMA転送要求が出力される。このため、S140に示すように、DMAC17が、AD変換部15からRAM13へのAD値のDMA転送を実施する。
【0040】
そして、S150に示すように、AD値のDMA転送が完了すると、即ち、AD値のRAM13への格納が完了すると、DMAC17にFRC値のDMA転送要求が出力される。このため、S160に示すように、DMAC17が、FRC30からRAM13へのFRC値のDMA転送を実施する。尚、FRC値のDMA転送要求は、例えばマイコン5における図示省略の要求発生部から出力されて良い。
【0041】
このS160でのDMA転送によって、RAM13には、現在のFRC値が、AD値のRAM13への格納が完了した時刻(以下、AD値格納完了時刻)として、記憶される。以下では、AD値格納完了時刻としてのFRC値のことを、単に、AD値格納完了時刻という。
【0042】
また、RAM13には、AD値格納完了時刻の最新値と、当該最新値よりも1つ前の値である前回値とが、少なくとも格納される。
図4に示すように、RAM13には、AD値格納完了時刻を記憶するための複数の領域RAM_AD[i]が用意されている。[]内の「i」は、順番を表す。例えば、今回の(即ち、最新の)AD値格納完了時刻がn番目であるとすると、このn番目のAD値格納完了時刻である「DAn」は、領域RAM_AD[n]に記憶される。また、前回のAD値格納完了時刻である「DAn-1」は、領域RAM_AD[n-1]に記憶されていることになる。
【0043】
そして、S170に示すように、FRC値のDMA転送が完了すると、即ち、AD値格納完了時刻の記憶が完了すると、例えばマイコン5における上記要求発生部により割り込み要求が発生する。すると、CPU7が、S210~S240の処理を、例えば割り込み処理として実行する。
【0044】
ここで一旦、
図3に基づく説明に移る。
図3において、S310に示すように、周期タスク起動タイマ22が満了して第2のトリガ信号が発生すると、周期タスクが起動されると共に、DMAC17にFRC値のDMA転送要求が出力される。このため、S320に示すように、DMAC17が、FRC30からRAM13へのFRC値のDMA転送を実施する。
【0045】
このS320でのDMA転送によって、RAM13には、現在のFRC値が、周期タスクの起動時刻(以下、周期タスク起動時刻)として記憶される。この周期タスク起動時刻は、第2のトリガ信号が発生した時刻でもある。以下では、周期タスク起動時刻としてのFRC値のことを、単に、周期タスク起動時刻という。
【0046】
また、RAM13には、周期タスク起動時刻の最新値と、当該最新値よりも1つ前の値である前回値とが、少なくとも格納される。
図4に示すように、RAM13には、周期タスク起動時刻を記憶するための複数の領域RAM_TASK[i]が用意されている。[]内の「i」は、順番を表す。例えば、今回の(即ち、最新の)周期タスク起動時刻がn番目であるとすると、このn番目の周期タスク起動時刻である「DTn」は、領域RAM_TASK[n]に記憶される。また、前回の周期タスク起動時刻である「DTn-1」は、領域RAM_TASK[n-1]に記憶されていることになる。
【0047】
そして、S330に示すように、FRC値のDMA転送が完了すると、即ち、周期タスク起動時刻の記憶が完了すると、例えばマイコン5における上記要求発生部により割り込み要求が発生する。すると、CPU7が、S410~S490の処理を、例えば割り込み処理として実行する。このため、周期タスクは、第2のトリガ信号の発生によって起動されるが、当該周期タスクの大部分又は全部は、
図3におけるS410~S490の処理の後に実行される。尚、S410~S490の処理と周期タスクとが、例えばマルチタスクのかたちで並行して実行されても良い。
【0048】
ここで、
図2に基づく説明に戻る。
図2に示すように、CPU7は、第1のトリガ信号の発生に伴って行うS210~S240の処理のうち、AD値格納完了時刻の記憶が完了した後のS210では、RAM13から、周期タスク起動時刻の最新値である「DTn」を読み出して取得する。更に、RAM13から、周期タスク起動時刻の前回値である「DTn-1」を読み出して取得する。尚、周期タスク起動時刻は、前述した
図3のS320のDMA転送動作によってRAM13に記憶されている。
【0049】
CPU7は、次のS220にて、S210で取得した「DTn」と「DTn-1」との差である「DTn-DTn-1」が、正常範囲内か否かを判定する。「DTn-DTn-1」は、周期タスクの起動周期の測定値に該当する。正常範囲は、周期タスクの起動周期の正常範囲であり、一定時間Tcの設計上で設定された正常範囲である。例えば、正常範囲は、一定時間Tcの標準値の±10μsに設定されて良い。
【0050】
例えば、
図4における時刻t7でAD値のDMA転送が完了した後のS210では、
図4における領域RAM_TASK[n]に記憶されている値(即ち、0x00001F45)が、周期タスク起動時刻の最新値「DTn」として読み出される。また、
図4における領域RAM_TASK[n-1]に記憶されている値(即ち、0x00000FA5)が、周期タスク起動時刻の前回値「DTn-1」として読み出される。そして、この回のS220では、「0x00001F45-0x00000FA5」である「0xFA0」が、正常範囲内か否かが判定されることになる。尚、「0x…」は、ヘキサ表示の数値である。
【0051】
CPU7は、S220にて、「DTn-DTn-1」が正常範囲内であると判定した場合には、そのまま
図2の処理を終了するが、「DTn-DTn-1」が正常範囲内ではないと判定した場合には、S230に進む。
【0052】
CPU7は、S230では、「DTn-DTn-1」が正常範囲よりも大きいか否かを判定し、「DTn-DTn-1」が正常範囲よりも大きいと判定した場合、即ち、周期タスクの実際の起動周期が正常範囲よりも長かった場合には、S250に進む。そして、このS250にて、周期タスクを起動し、その後、S240に進む。尚、S250で起動された周期タスクは、例えば当該
図2の処理が終了してから開始される。そして、S250で周期タスクが起動されることにより、周期タスクの実行回数が少なくなってしまうこと(即ち、タスク抜け)を抑制することができる。
【0053】
また、CPU7は、S230にて、「DTn-DTn-1」が正常範囲よりも大きくないと判定した場合、即ち、周期タスクの実際の起動周期が正常範囲よりも短かった場合には、そのままS240に進む。
【0054】
そして、CPU7は、S240では、第2のトリガ信号が、一定時間Tc毎に、且つ、第1のトリガ信号の発生タイミングから所定時間Ts後に発生するように、周期タスク起動タイマ22を再スタートさせる。具体的には、周期タスク起動タイマ22を構成するコンペアレジスタに、一定時間Tcに相当する値を再セットする。更に、周期タスク起動タイマ22を構成するタイマカウンタには、第1のトリガ信号の今回の発生タイミングから所定時間Ts後に当該タイマ22が満了するようになる値をプリセットして、当該タイマカウンタのカウントアップをスタートさせる。尚、他の例として、S240では、AD変換開始タイマ21と周期タスク起動タイマ22との両方に対して、前述の初期設定処理で行われる設定と同じ設定が行われて、両タイマ21,22が再スタートされても良い。
【0055】
そして、CPU7は、このS240の処理を行った後、当該
図2の処理を終了する。
一方、
図3に示すように、CPU7は、第2のトリガ信号の発生に伴って行うS410~S490の処理のうち、周期タスク起動時刻の記憶が完了した後のS410では、RAM13から、AD値格納完了時刻の最新値である「DAn」を読み出して取得する。更に、RAM13から、AD値格納完了時刻の前回値である「DAn-1」を読み出して取得する。尚、AD値格納完了時刻は、前述した
図2のS160のDMA転送動作によってRAM13に記憶されている。
【0056】
CPU7は、次のS420にて、S410で取得した「DAn」と「DAn-1」との差である「DAn-DAn-1」が、正常範囲内か否かを判定する。「DAn-DAn-1」は、AD値の格納周期の測定値に該当する。この正常範囲は、AD値の格納周期の正常範囲であり、周期タスクの起動周期の正常範囲と同じ値に設定されても良いし、異なる値に設定されても良い。
【0057】
例えば、
図4における時刻t6で第2のトリガ信号が発生して、周期タスク起動時刻の記憶が完了した後のS410では、
図4における領域RAM_AD[n]に記憶されている値(即ち、0x00001F40)が、AD値格納完了時刻の最新値「DAn」として読み出される。また、
図4における領域RAM_AD[n-1]に記憶されている値(即ち、0x00000FA0)が、AD値格納完了時刻の前回値「DAn-1」として読み出される。そして、この回のS420では、「0x00001F40-0x00000FA0」である「0xFA0」が、正常範囲内か否かが判定されることになる。
【0058】
CPU7は、S420にて、「DAn-DAn-1」が正常範囲内ではないと判定した場合には、S430に進む。
CPU7は、S430では、「DAn-DAn-1」が正常範囲よりも大きいか否かを判定し、「DAn-DAn-1」が正常範囲よりも大きいと判定した場合、即ち、AD値の実際の格納周期が正常範囲よりも長かった場合には、S450に進む。そして、このS450にて、AD変換部15に筒内圧信号のAD変換を即座に開始させ、その後、S440に進む。S450でAD変換が開始されることにより、今回の周期タスクにて、より直前のAD値を使用することができる可能性を高めることができる。
【0059】
また、CPU7は、S430にて、「DAn-DAn-1」が正常範囲よりも大きくないと判定した場合、即ち、AD値の実際の格納周期が正常範囲よりも短かった場合には、そのままS440に進む。
【0060】
そして、CPU7は、S440では、第1のトリガ信号が、一定時間Tc毎に、且つ、第2のトリガ信号の発生タイミングから「Tc-Ts」の時間後に発生するように、AD変換開始タイマ21を再スタートさせる。具体的には、AD変換開始タイマ21を構成するコンペアレジスタに、一定時間Tcに相当する値を再セットする。更に、AD変換開始タイマ21を構成するタイマカウンタには、第2のトリガ信号の今回の発生タイミングから「Tc-Ts」後に当該タイマ21が満了するようになる値をプリセットして、当該タイマカウンタのカウントアップをスタートさせる。尚、他の例として、S440では、AD変換開始タイマ21と周期タスク起動タイマ22との両方に対して、前述の初期設定処理で行われる設定と同じ設定が行われて、両タイマ21,22が再スタートされても良い。
【0061】
そして、CPU7は、このS440の処理を行った後、当該
図3の処理を終了する。
また、CPU7は、上記S420にて、「DAn-DAn-1」が正常範囲内であると判定した場合には、S460に進む。
【0062】
CPU7は、S460では、RAM13から、AD値格納完了時刻の最新値である「DAn」を読み出して取得する。更に、RAM13から、周期タスク起動時刻の最新値である「DTn」と、周期タスク起動時刻の前回値である「DTn-1」とを読み出して取得する。
【0063】
例えば、
図4における時刻t6で第2のトリガ信号が発生して、周期タスク起動時刻の記憶が完了した後のS460では、この回のS410と同様に、
図4における領域RAM_AD[n]に記憶されている値(即ち、0x00001F40)が、AD値格納完了時刻の最新値「DAn」として読み出される。そして、
図4における領域RAM_TASK[n]に記憶されている値であって、今回のS320の動作で記憶された値(即ち、0x00001F45)が、周期タスク起動時刻の最新値「DTn」として読み出される。また、
図4における領域RAM_TASK[n-1]に記憶されている値(即ち、0x00000FA5)が、周期タスク起動時刻の前回値「DTn-1」として読み出される。
【0064】
そして、CPU7は、次のS470にて、S460で取得した値について、「DTn-1<DAn<DTn」の大小関係が成立しているか否かを判定する。尚、大小関係を示す「<」は、時刻を表す数値に関しては「より大きい値である」ことを示しており、時刻そのものに関しては「より進んだ時刻である」ことを示している。また、「DAn」は、S460ではRAM13から読み出されずに、S410で読み出された「DAn」が、S470で使用されても良い。
【0065】
つまり、S470では、前回の周期タスク起動時刻(即ち、DTn-1)と、今回の周期タスク起動時刻(即ち、DTn)との間に、最新のAD値格納完了時刻(即ち、DAn)が入っているか否かを判定している。よって、このS470により、周期タスクが前回起動されてから今回起動される前にAD値のRAM13への格納が完了したか否かが判定される。
【0066】
CPU7は、上記S470にて、「DTn-1<DAn<DTn」の大小関係が成立していると判定した場合、即ち、周期タスクが前回起動されてから今回起動される前にAD値のRAM13への格納が完了していると判定した場合には、設計想定通り(即ち、正常)であることから、当該
図3の処理を終了する。
【0067】
また、CPU7は、上記S470にて、「DTn-1<DAn<DTn」の大小関係が成立していないと判定した場合、即ち、周期タスクが前回起動されてから今回起動される前にAD値のRAM13への格納が完了していないと判定した場合には、S480に進む。
【0068】
CPU7は、S480では、AD変換部15に筒内圧信号のAD変換を即座に開始させ、その後、S490に進む。S480でAD変換が開始されることにより、今回の周期タスクにて、より新しいAD値を使用することができる可能性を高めることができる。
【0069】
そして、CPU7は、S490では、前述したS440と同様に、第1のトリガ信号が、一定時間Tc毎に、且つ、第2のトリガ信号の発生タイミングから「Tc-Ts」の時間後に発生するように、AD変換開始タイマ21を再スタートさせ、その後、当該
図3の処理を終了する。尚、S490においても、AD変換開始タイマ21と周期タスク起動タイマ22との両方に対して、前述の初期設定処理で行われる設定と同じ設定が行われて、両タイマ21,22が再スタートされても良い。
【0070】
[4.効果]
以上詳述した実施形態のECU1によれば、以下の効果を奏する。
(1-1)AD変換開始タイマ21によって発生される第1のトリガ信号をトリガとして、エンジン3の制御に用いられるアナログ信号のAD変換と、当該AD変換によるAD値のRAM13へのDMA転送(即ち、RAM13への格納)とが、順次実施される。一方、第1のトリガ信号に対して位相が所定時間Tsだけずれた第2のトリガ信号が、周期タスク起動タイマ22によって発生され、この第2のトリガ信号をトリガとして、周期タスクが起動される。このため、周期タスクの起動周期を安定させやすい。
【0071】
比較例として、
図5に示すように、第1のトリガ信号の発生によりAD変換が実施され、このAD変換によるAD値のRAM13へのDMA転送が完了したことをトリガとして、周期タスクが起動されるように構成されているとする。この比較例の場合、第1のトリガ信号が発生してからAD値のDMA転送が完了するまでの時間、即ち、AD変換とAD値のRAM13への格納とに要する時間が、例えば前述の要因により変動することで、周期タスクの起動周期が変動してしまう。これに対して、本実施形態では、一定時間Tc毎に発生される第2のトリガ信号により周期タスクが起動されるため、周期タスクの起動周期のずれを抑制し易い。
【0072】
(1-2)CPU7が、
図3におけるS470の判定を行うことにより、周期タスクが前回起動されてから今回起動される前にAD値のRAM13への格納が完了したか否かの判定を行う。このため、周期タスクが前回起動してから今回起動する前にAD値のメモリへの格納が完了しなかったことを検知することができる。よって、周期タスクにおいて最新のAD値が使用できない事態が生じたことを検知できるようになる。そして、この事態が生じた場合に、例えば、周期タスクにおいてより新しいAD値が使用できる可能性を高めるための処置や、周期タスクにて最新のAD値が使用できないことによる影響を抑制するための処置等、制御性能の低下を抑制するための処置を実施することができるようになる。
【0073】
周期タスクにおいてより新しいAD値が使用できる可能性を高めるための処置としては、例えば、
図3のS480のように、第1のトリガ信号の発生とは関係なく直ぐにAD変換を開始させる、という処置であって良い。また、周期タスクにて最新のAD値が使用できないことによる影響を抑制するための処置としては、例えば、過去の複数回のAD変換による各AD値から、演算により現在のアナログ信号の電圧値を予測し、その予測値をエンジン3の制御に使用する、という処置であって良い。
【0074】
(2)CPU7は、第2のトリガ信号が発生する毎に、
図3におけるS470の判定を行う。このため、周期タスクが起動される毎に、前回の起動から今回の起動までの間にAD値のRAM13への格納が完了しているか否かを、確認することができる。また、AD値のRAM13への格納が完了していなかった場合に、直ぐにAD変換を開始させることで、今回の周期タスクにおいてより新しいAD値が使用できる可能性を高めることができる。
【0075】
(3)AD値のRAM13への格納が完了する毎に、
図2におけるS160のDMAC17の動作により、AD値格納完了時刻がRAM13に記憶される。また、第2のトリガ信号が発生する毎に、
図3におけるS320のDMAC17の動作により、周期タスク起動時刻がRAM13に記憶される。そして、CPU7は、
図3におけるS470では、RAM13に記憶されたAD値格納完了時刻と周期タスク起動時刻とに基づいて、周期タスクが前回起動されてから今回起動される前にAD値のRAM13への格納が完了したか否かの判定を行う。このため、当該判定を、時刻を比較することで実施することができる。
【0076】
(4)CPU7は、AD値のRAM13への格納が完了する毎に、
図2におけるSS220の判定を行う。そして、このS220では、RAM13に記憶された最新の周期タスク起動時刻である「DTn」と、この「DTn」よりも1回前に記憶された周期タスク起動時刻である「DTn-1」との差に基づいて、周期タスクの起動周期が正常範囲内か否かを判定する。この判定は、周期タスクの起動有無に関係なく、第1のトリガ信号に起因するAD値のRAM13への格納完了をトリガとして実施されることから、周期タスクの起動周期の監視という面において信頼性が高い。
【0077】
(5)CPU7は、第2のトリガ信号が発生する毎に、
図3におけるS420の判定を行う。そして、このS420では、RAM13に記憶された最新のAD値格納完了時刻である「DAn」と、この「DAn」よりも1回前に記憶されたAD値格納完了時刻である「DAn-1」との差に基づいて、AD値の格納周期が正常範囲内か否かを判定する。この判定は、AD変換の実施有無やAD値のRAM13への格納の実施有無に関係なく、第2のトリガ信号をトリガとして実施されることから、AD値の格納周期の監視という面において信頼性が高い。
【0078】
尚、上記実施形態では、AD変換開始タイマ21が第1の発生部に相当する。周期タスク起動タイマが第2の発生部に相当する。S120の動作を行うAD変換部15と、S140の動作を行うDMAC17とが、変換格納実施部に相当する。RAM13がメモリに相当する。CPU7が、周期タスクを実行する実行部に相当する。また、S470の処理を行うCPU7は、順序監視部に相当する。S160の動作を行うDMAC17は、完了時刻記憶部する。S320の動作を行うDMAC17は、起動時刻記憶部に相当する。S220の処理を行うCPU7は、起動周期判定部に相当する。S420の処理を行うCPU7は、格納周期判定部に相当する。
【0079】
[5.他の実施形態]
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【0080】
例えば、CPU7が、
図2におけるS210の直前又は直後で、AD値のRAM13への格納回数をカウントし、
図3におけるS410の直前又は直後で、周期タスクの起動回数をカウントし、更に
図3におけるS470では、以下に述べる内容の判定を行っても良い。
【0081】
即ち、S470では、「AD値の格納回数が周期タスクの起動回数以上」であるか否かを判定しても良い。また、「AD値の格納回数と周期タスクの起動回数とが同じ」であるか否かを判定しても良い。このような判定によっても、周期タスクが前回起動されてから今回起動される前にAD値のRAM13への格納が完了したか否かを、判定することができる。
【0082】
一方、AD値は、RAM13とは別のメモリに格納(即ち、記憶)されても良い。また、AD値格納完了時刻と周期タスク起動時刻との両方又は一方は、AD値が記憶されるメモリとは別のメモリに記憶されても良い。
【0083】
また、
図2におけるS220及びS230と、
図3におけるS420及びS430との、一方又は両方が実行されない構成であっても良い。また、制御対象は、エンジン3に限らず、例えば電動機やトランスミッション等であっても良い。
【0084】
また、本開示に記載のECU1及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されても良い。あるいは、本開示に記載のECU1及びその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されても良い。もしくは、本開示に記載のECU1及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されても良い。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されても良い。ECU1に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、一つあるいは複数のハードウェアを用いて実現されても良い。
【0085】
また、上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしても良い。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしても良い。また、上記実施形態の構成の一部を省略しても良い。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換しても良い。
【0086】
また、上述したECU1の他、当該ECU1を構成要素とするシステム、当該ECU1としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実体的記録媒体、順序異常判定方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【0087】
1…ECU、7…CPU、15…AD変換部、17…DMAコントローラ、21…AD変換開始タイマ、22…周期タスク起動タイマ。