(57)【要約】【課題】処理負荷が重くなることを抑制できる電子制御装置を提供することを目的とする。【解決手段】電子制御装置は、データを受信する通信部、通信部で受信したデータを用いて制御演算を行う処理部、通信部で受信したデータを、処理部を介することなく受信した順に格納するＤＭＡバッファなどを備えている。処理部は、ＤＭＡバッファの末尾アドレスをｉにコピーして、アドレスｉが示す値がＮＵＬＬか否かを判定することで、アドレスｉが示すＤＭＡバッファの領域にデータが格納されているか否かを判定する（Ｓ１０、Ｓ１１）。処理部は、アドレスｉが示す値がＮＵＬＬでないと判定した場合、アドレスｉからＤＭＡバッファの先頭方向に１回分の通信サイズのデータを取り込む（Ｓ１４）。そして、処理部は、このデータを用いて制御演算を行う。このようにして、処理部は、ＤＭＡバッファに最後に格納された最新データを用いて制御演算を行う。【選択図】図２
2020091657.tif 000002
【特許請求の範囲】
【請求項１】
データを受信する通信部（７０）と、
前記通信部で受信した前記データを用いて制御演算を行う処理部（２０）と、
前記通信部で受信した前記データを、前記処理部を介することなく受信した順に格納するバッファ（３１）と、を備え、
前記処理部は、予め決められた実行タイミング毎に、前記バッファに格納された複数の前記データのうち、最後に格納された前記データを用いて前記制御演算を行う電子制御装置。
【請求項２】
時間を計測するフリーランタイマ（６０）と、
前記データの受信が完了した時点における前記フリーランタイマの時間を、前記データに関連付けて保存するタイムスタンプ（８０）と、を備え、
前記処理部は、前記フリーランタイマで計測された時間に基づいて、予め決められた前記実行タイミング毎に前記制御演算を実行するものであり、前記実行タイミングの間隔を示す前記フリーランタイマで計測された時間から、前記制御演算で用いる前記データを受信した際に前記タイムスタンプで保存された時間を減算することで、前記制御演算で用いる前記データを受信したタイミングから、前記実行タイミングまでの経過時間を算出する請求項１に記載の電子制御装置。
【請求項３】
前記通信部は、センサで測定された値を示す前記データを受信する請求項２に記載の電子制御装置。
【請求項４】
前記処理部は、受信した前記制御演算で用いる前記データの値における前記経過時間が経過した際の値を、前記経過時間を用いて推定し、前記制御演算で用いる前記データにかえて、推定した推定値を用いて前記制御演算を行う請求項３に記載の電子制御装置。
【請求項５】
時間を計測するフリーランタイマ（６０）と、
前記データの受信が完了した時点における前記フリーランタイマの時間を、前記データに関連付けて保存するタイムスタンプ（８０）と、を備え、
前記処理部は、受信した連続する二つの前記データのうちの先に受信した先行データを受信した際に前記タイムスタンプで保存された時間に、二つの前記データのうちの後に受信した後行データのデータサイズから換算した通信時間を加算した比較時間と、前記後行データを受信した際に前記タイムスタンプで保存された時間との時間差を算出し、前記時間差が妥当判断条件を満たしている場合に前記タイムスタンプが妥当と判断し、前記時間差が前記妥当判断条件を満たしていない場合に前記タイムスタンプが妥当でないと判断する請求項１乃至４のいずれか１項に記載の電子制御装置。
【請求項６】
時間を計測するフリーランタイマ（６０）を備え、
前記処理部は、前記フリーランタイマで計測された時間に基づいて、予め決められた実行タイミング毎に前記制御演算を実行するものであり、
前記処理部は、前記通信部が前記データを受信する通信経路の異常診断を行うものであり、前記異常診断を行うタイミングで前記通信経路が正常の場合に前記バッファに格納されている前記データの個数の期待値と、前記異常診断を行うタイミングで前記バッファに実際に格納されている前記データの個数との関係が、異常診断条件を満たしている場合に前記通信経路が正常と判断し、前記異常診断条件を満たしていない場合に前記通信経路が異常と判断する請求項１乃至５のいずれか１項に記載の電子制御装置。
【請求項７】
前記処理部は、前記期待値を学習するために、単位時間当たりの前記データの受信個数を保存する請求項６に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子制御装置に関する。
【背景技術】
【０００２】
従来、通信部を備えた電子制御装置の一例として、特許文献１に開示されたＥＣＵがある。ＥＣＵのマイコンは、送信回路から送信されたセンサ信号を受信しセンサ値を取得する受信回路、センサ値に基づいて所定の演算周期で制御演算を行う演算処理部、演算タイマ、及び、タイマ補正演算部を有する。タイマ補正演算部は、センサ値とは別に付与された時間情報としての時差タイムスタンプを用い、送信周期と演算周期との周期ずれによる制御演算への影響を解消するように、演算周期を補正する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−３３０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、電子制御装置は、制御演算に用いるデータを受信するたびに割り込みを発生させるとともに、所定の演算周期でデータを用いた制御演算を実行することが考えられる。しかしながら、電子制御装置は、割り込みが発生するたびに他の処理をとめる必要がある。このため、電子制御装置は、データの受信タイミングが演算周期からずれた場合、制御演算の実行タイミングとは別に、データの受信タイミングで他の処理をとめるため、処理負荷が重くなるという課題がある。
【０００５】
本開示は、上記問題点に鑑みなされたものであり、処理負荷が重くなることを抑制できる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示は、
データを受信する通信部（７０）と、
通信部で受信したデータを用いて制御演算を行う処理部（２０）と、
通信部で受信したデータを、処理部を介することなく受信した順に格納するバッファ（３１）と、を備え、
処理部は、予め決められた実行タイミング毎に、バッファに格納された複数のデータのうち、最後に格納されたデータを用いて制御演算を行うことを特徴とする。
【０００７】
このように、本開示は、予め決められた実行タイミング毎に、バッファに最後に格納されたデータを用いて制御演算を行う。このため、本開示は、受信したデータのうち、最新のデータを用いて制御演算を行うことができる。また、本開示は、受信したデータをバッファに格納しておき、バッファに格納されたデータを用いて、制御演算を行うため、データを受信するために割り込みを発生させる必要がない。よって、本開示は、処理負荷が重くなることを抑制できる。
【０００８】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態における電子制御装置の概略構成を示すブロック図である。
【図２】第１実施形態における処理動作を示すフローチャートである。
【図３】第１実施形態におけるＤＭＡバッファと制御用ＲＡＭの状態を示すイメージ図である。
【図４】第２実施形態における経過時間の算出処理を示すフローチャートである。
【図５】第２実施形態におけるデータの推定処理を示すフローチャートである。
【図６】第２実施形態における経過時間の算出処理を示すタイムチャートである。
【図７】第２実施形態におけるデータの推定処理を示すタイムチャートである。
【図８】第２実施形態におけるＤＭＡバッファの状態を示すイメージ図である。
【図９】第３実施形態におけるタイムスタンプの妥当診断処理を示すフローチャートである。
【図１０】第３実施形態におけるタイムスタンプの妥当診断処理を示すイメージ図である。
【図１１】第３実施形態におけるＤＭＡバッファの状態を示すイメージ図である。
【図１２】第４実施形態における通信診断処理の前半部分を示すフローチャートである。
【図１３】第４実施形態における通信診断処理の後半部分を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１１】
（第１実施形態）
まず、図１、図３を用いて、電子制御装置１００の構成に関して説明する。電子制御装置１００は、例えば、車両に搭載され、車載機器を制御する車載制御装置に適用することができる。
【００１２】
電子制御装置１００は、マイコン１０を備えており、通信バス２００を介して外部装置と通信可能に構成されている。外部装置は、通信バス２００を介して、電子制御装置１００にデータを送信するものである。また、外部装置は、時間とともに変動するデータを、通信バス２００を介して電子制御装置１００に送信する装置と言える。外部装置は、例えば、電子制御装置１００の外部に設けられた各種物理量を測定するセンサや、センサから出力されたセンサ値を取得する他の制御装置などを採用できる。
【００１３】
なお、センサは、例えば、エンジンの気筒に吸入される吸気流量を計測する流量センサ、スロットルバルブの開度を計測するスロットル角度センサ、ステアリングの操舵角を計測する操舵角センサなどを採用できる。しかしながら、センサは、これらに限定されない。本実施形態では、外部装置の一例として、センサを採用する。また、電子制御装置１００とセンサとが通信バス２００で接続された構成は、車載システムと言える。よって、車載システムは、電子制御装置１００、通信バス２００、センサとを含むものである。
【００１４】
マイコン１０は、処理部２０、記憶部３０、マイコンレジスタ４０、ＤＭＡコントローラ５０、フリーランタイマ６０、通信部７０などを備えている。また、マイコン１０は、これらの装置が内部バスを介して電気的に接続されている。マイコン１０は、ソフトウェアとハードウェアの少なくとも一方を用いて、各機能を実現している。
【００１５】
処理部２０は、ＣＰＵなどを採用できる。処理部２０は、記憶部３０に記憶されたプログラムに従って、通信部７０で受信したデータを用いて演算処理を行う。また、処理部２０は、通信部７０で受信したデータに加えて、記憶部３０に記憶されたデータを用いて演算処理を行なってもよい。
【００１６】
詳述すると、処理部２０は、予め決められた実行タイミング毎に、ＤＭＡバッファ３１に格納された複数のデータのうち、最後に格納されたデータを用いて制御演算を行う。また、処理部２０は、通信部７０で受信してＤＭＡバッファ３１に格納され、さらに、ＤＭＡバッファ３１から制御用ＲＡＭ３２に転送されたデータを用いて制御演算を行う。なお、制御用ＲＡＭ３２には、ＤＭＡバッファ３１に格納された複数のデータのうち、最後に格納されたデータが転送される。最後に格納されたデータは、処理部２０が制御演算を行う実行タイミング前に、ＤＭＡバッファ３１に格納されたデータのうち最も新しいデータである。なお、以下においては、制御演算を行う実行タイミングを制御タイミングとも称する。
【００１７】
記憶部３０は、ＲＯＭやＲＡＭなどを含むメモリ装置などを採用できる。記憶部３０は、少なくともＤＭＡバッファ３１と制御用ＲＡＭ３２とを含んでいる。ＤＭＡバッファ３１は、特許請求の範囲におけるバッファに相当する。通信部７０が受信したデータは、ＤＭＡコントローラ５０によって、ＤＭＡバッファ３１に格納される。ＤＭＡコントローラ５０は、転送元アドレスや転送先アドレスなどが予め設定されており、通信部７０が受信したデータを、ＤＭＡバッファ３１の転送先アドレスへ転送する。このようにして、ＤＭＡバッファ３１は、通信部７０が受信したデータが、処理部２０を介することなく格納される。
【００１８】
また、ＤＭＡバッファ３１は、通信部７０がデータを受信すると、先頭のアドレスから順にデータが格納される。よって、ＤＭＡバッファ３１に格納されている複数のデータは、末尾側のアドレスのデータよりも、先頭側のアドレスのデータの方が、先に受信したデータとなる。さらに、ＤＭＡバッファ３１に格納されている複数のデータは、最も末尾側のアドレスのデータが最も後に受信したデータ、すなわち最新のデータとなる。
【００１９】
なお、ＤＭＡバッファ３１には、通信部７０で受信した複数のデータが格納される。そして、ＤＭＡバッファ３１は、処理部２０が制御タイミングで制御演算を行う毎に、格納しているデータが消去される。ＤＭＡは、Direct Memory Accessの略称である。
【００２０】
図１、図３に示すように、一例として、通信部７０が１回目の通信２０１で第１データ２０１ｄを受信し、２回目の通信２０２で第２データ２０２ｄを受信する例を図示している。ＤＭＡバッファ３１は、１回目の通信２０１で受信した第１データ２０１ｄが先頭アドレスに格納され、２回目の通信２０２で受信した第２データ２０２ｄが先頭アドレスよりも末尾側のアドレスに格納される。よって、この場合、ＤＭＡバッファ３１に格納されている最新のデータは、データ２０２ｄとなる。ＤＭＡバッファ３１は、例えば、通信部７０が受信した複数のデータが、空き領域や他のデータなどを挟むことなく連続して格納される。
【００２１】
なお、第１データ２０１ｄと第２データ２０２ｄは、同じセンサから送信されたデータである。つまり、第１データ２０１ｄと第２データ２０２ｄは、同じ物理量を示すものであるが、測定タイミングが異なる。
【００２２】
制御用ＲＡＭ３２は、処理部２０が制御演算で用いるデータが格納されている。制御用ＲＡＭ３２に格納されているデータは、ＤＭＡバッファ３１から転送されたデータである。さらに、ＲＡＭ３２に格納されているデータは、ＤＭＡバッファ３１に格納されている複数のデータのうちの最新のデータである。図３の例では、第２データ２０２ｄが制御用ＲＡＭ３２に転送される。
【００２３】
なお、処理部２０の処理動作、及び、ＤＭＡバッファ３１から制御用ＲＡＭ３２へのデータの転送などに関しては、後程詳しく説明する。
【００２４】
マイコンレジスタ４０は、通信部７０で受信したデータなどが一時的に格納される。よって、通信部７０で受信したデータは、ＤＭＡバッファ３１及びマイコンレジスタ４０に格納される。
【００２５】
フリーランタイマ６０は、時間を計測するタイマである。フリーランタイマ６０は、リセットをかけずにフリーランさせる循環式のタイマである。処理部２０は、フリーランタイマ６０で計測された時間を参照可能に構成されている。そして、処理部２０は、フリーランタイマ６０で計測された時間に基づいて、予め決められた制御タイミング毎に制御演算を実行する。なお、フリーランタイマは、フリーランニングタイマ、フリーランカウンタ、フリーランニングカウンタなどと言い換えることができる。
【００２６】
通信部７０は、データを受信する装置である。通信部７０は、通信バス２００を介して、外部装置との間でデータ通信を行う。本実施形態の通信部７０は、外部装置としてのセンサで測定されたセンサ値を示すデータを受信する。
【００２７】
また、通信部７０は、１回分の通信サイズが予め決められている。言い換えると、通信部７０は、１つのデータ２０１ｄ、２０２ｄの通信サイズが予め決められている。また、通信部７０は、各データ２０１ｄ、２０２ｄを受信する際のデータ通信の時間が予め決められているとも言える。
【００２８】
なお、通信部７０は、例えば、ＳＥＮＴに準拠した通信を行うものを採用できる。ＳＥＮＴに関しては、特開２０１７−３３０６９号公報の記載を参照して適用することができる。
【００２９】
また、通信部７０は、タイムスタンプ機能部８０を備えている。タイムスタンプ機能部８０は、特許請求の範囲におけるタイムスタンプに相当する。タイムスタンプ機能部８０は、データの受信が完了した時点における、フリーランタイマ６０で計測された時間（タイムスタンプ値）を、受信したデータに関連付けて保存する。
【００３０】
なお、本実施形態では、一例として、通信部７０にタイムスタンプ機能部８０が設けられた例を採用している。しかしながら、本開示は、これに限定されず、電子制御装置１００がタイムスタンプ機能部８０を備えていればよい。
【００３１】
ここで、図２、図３を用いて、電子制御装置１００の処理動作に関して説明する。処理部２０は、制御タイミング毎に、図２のフローチャートに示す処理を実行する。
【００３２】
ステップＳ１０では、ＤＭＡバッファの末尾アドレスをｉにコピーする。処理部２０は、ＤＭＡバッファ３１に格納されている最新データを、ＤＭＡバッファ３１の末尾アドレスから先頭アドレス側に向かって探すために、まず、ＤＭＡバッファ３１の末尾アドレスをアドレスｉにコピーする。アドレスｉは、最新データをＤＭＡバッファ３１の末尾アドレスから順番に探す際の、現在のアドレスと言える。
【００３３】
なお、最新データは、ＤＭＡバッファ３１に対して、最後に格納されたデータである。このため、最新データを探す場合、処理部２０は、末尾アドレスから先頭アドレス側に探すと効率的である。
【００３４】
ステップＳ１１では、アドレスｉが示す値はＮＵＬＬか否かを判定する。つまり、処理部２０は、ＤＭＡバッファ３１における、アドレスｉが示す領域にデータが格納されているか否かを判定する。処理部２０は、アドレスｉが示す領域にデータが格納されていない場合、アドレスｉが示す値がＮＵＬＬと判定してステップＳ１２へ進む。また、処理部２０は、アドレスｉが示す領域にデータが格納されていた場合、アドレスｉが示す値がＮＵＬＬでないと判定してステップＳ１４へ進む。
【００３５】
例えば、アドレスｉに末尾アドレスがコピーされており、ＤＭＡバッファ３１の末尾アドレスにデータが格納されていなかった場合、処理部２０は、アドレスｉが示す値がＮＵＬＬと判定する。一方、アドレスｉに末尾アドレスがコピーされており、ＤＭＡバッファ３１の末尾アドレスにデータが格納されていた場合、処理部２０は、アドレスｉが示す値がＮＵＬＬでないと判定する。
【００３６】
ステップＳ１２では、アドレスｉをＤＭＡバッファの先頭方向に遷移する。処理部２０は、アドレスｉを、ＤＭＡバッファ３１におけるアドレスの先頭方向に遷移する。つまり、処理部２０は、アドレスｉが示すＤＭＡバッファ３１のアドレスを、先頭方向に遷移させたＤＭＡバッファ３１のアドレスに変更する。
【００３７】
ステップＳ１３では、アドレスｉはＤＭＡバッファの先頭か否かを判定する。処理部２０は、アドレスｉが、ＤＭＡバッファ３１における先頭のアドレスであるか否かを判定する。そして、処理部２０は、アドレスｉがＤＭＡバッファ３１における先頭のアドレスであると判定した場合、ＤＭＡバッファ３１に格納されたデータの検索が完了したとみなして、図２の処理を終了する。また、処理部２０は、アドレスｉがＤＭＡバッファ３１における先頭のアドレスであると判定しなかった場合、ＤＭＡバッファ３１に格納されたデータの検索を継続する必要があるとみなして、ステップＳ１１へ戻る。
【００３８】
ステップＳ１４では、アドレスｉからＤＭＡバッファの先頭方向に１回分の通信サイズのデータを取り込む。処理部２０は、アドレスｉが示すＤＭＡバッファ３１のアドレスから先頭方向に１回分の通信サイズのデータを取り込む。つまり、処理部２０は、通信部７０で受信した１回分の通信サイズのデータを、ＤＭＡバッファ３１における最後に格納されたデータ（最新データ）とみなしてＤＭＡバッファ３１から取り込む。
【００３９】
図３に示す例の場合、処理部２０は、ＤＭＡバッファ３１に格納されている第２データ２０２ｄを最新データとして探し出すことになる。そして、処理部２０は、ＤＭＡバッファ３１から第２データ２０２ｄを読出し、制御用ＲＡＭ３２に格納する。つまり、最新データである第２データ２０２ｄは、ＤＭＡバッファ３１から制御用ＲＡＭ３２へと転送される。そして、処理部２０は、制御用ＲＡＭ３２に転送された第２データ２０２ｄを用いて制御演算を行う。よって、最新データである第２データ２０２ｄは、制御演算で用いるデータに相当する。
【００４０】
なお、上記のように、第２データ２０２ｄは、ＤＭＡバッファ３１から制御用ＲＡＭ３２に転送されたデータである。よって、処理部２０は、ＤＭＡバッファ３１に格納された第２データ２０２ｄを用いて制御演算を行うと言える。
【００４１】
このように、処理部２０は、アドレスｉをＤＭＡバッファ３１の末尾アドレスから先頭アドレスの方に順番に遷移させていき、ＤＭＡバッファ３１における最後に格納されたデータを探し出す。よって、処理部２０は、制御タイミング毎に、ＤＭＡバッファ３１に格納されている最新データを得ることができる。このため、処理部２０は、制御タイミング毎に、ＤＭＡバッファ３１に格納されている最新データを用いて制御演算を行う。
【００４２】
また、処理部２０は、通信部７０で受信したデータをＤＭＡバッファ３１に格納しておき、ＤＭＡバッファ３１に格納されたデータを用いて制御演算を行う。このため、処理部２０は、データを受信するために割り込みを発生させる必要がない。よって、処理部２０（電子制御装置１００）は、処理負荷が重くなることを抑制できる。
【００４３】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本開示のその他の形態として、第２〜第４実施形態に関して説明する。以下の実施形態は、処理部２０での処理内容が第１記実施形態と異なる。上記実施形態及び第２〜第４実施形態は、夫々単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本開示は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００４４】
（第２実施形態）
図４〜図８を用いて、第２実施形態に関して説明する。処理部２０は、制御タイミング毎に、図４のフローチャートに示す処理を実行する。処理部２０は、図４のフローチャートに示す処理を実行することで、最新データの受信から制御タイミングまでの経過時間ｃを算出する。ここでは、図６に示すように、タイミングＴ１、Ｔ３が制御タイミングであり、タイミングＴ２で最新データを受信したものとする。また、図８に示すように、タイミングＴ１で第１データ２０１ｄを受信してＤＭＡバッファ３１に格納され、タイミングＴ２で第２データ２０２ｄを受信してＤＭＡバッファ３１に格納されるものとする。
【００４５】
ステップＳ２０では、最新データを取り込む。処理部２０は、上記実施形態と同様に最新データを取り込む。
【００４６】
ステップＳ２１では、保存してあるフリーランタイマ値ｅに最新データのタイムスタンプ値を加算しａに代入する。処理部２０は、保存してあるフリーランタイマ値ｅに、最新データ（第２データ２０２ｄ）を受信したタイミングＴ２のタイムスタンプ値を加算しａに代入する。保存してあるフリーランタイマ値ｅは、前回の制御タイミングＴ１時のフリーランタイマ値に相当する。よって、ａは、最新データを受信した時点までのフリーランタイマ値に相当する。なお、ａは、第１時間変数と称することもできる。また、後程説明するｂは、第２時間変数と称することもできる。
【００４７】
ステップＳ２２では、現在のフリーランタイマ値から保存してあるフリーランタイマ値ｅを減算しｂに代入する。処理部２０は、現在（タイミングＴ３）のフリーランタイマ値から、保存してあるフリーランタイマ値ｅを減算しｂに代入する。
【００４８】
ステップＳ２３では、経過時間ｃ（＝ｂ−ａ）を算出する。処理部２０は、ｂ−ａを演算することで、経過時間ｃを算出する。経過時間ｃは、タイミングＴ２からタイミングＴ３までの経過時間に相当する。
【００４９】
このように、処理部２０は、制御タイミングの間隔を示すフリーランタイマ６０で計測された時間から、制御演算で用いるデータ（最新データ）を受信した際にタイムスタンプ８０で保存された時間を減算する。そして、処理部２０は、制御演算で用いるデータを受信したタイミングＴ２から、制御タイミングＴ３までの経過時間ｃを算出する。なお、処理部２０は、算出した経過時間ｃを処理タイミング毎に、記憶部３０に記憶しておく。
【００５０】
ステップＳ２４では、タイムスタンプの診断処理を行う。タイムスタンプの診断処理に関しては、第３実施形態で説明する。なお、第２実施形態の処理部２０は、タイムスタンプの診断処理を行なわなくてもよい。
【００５１】
ステップＳ２５では、処理部２０は、ＤＭＡバッファ３１を全消去する。また、ステップＳ２６では、処理部２０は、タイムスタンプをクリアする。よって、図８に示すように、ＤＭＡバッファ３１は、第１データ２０１ｄ、第２データ２０２ｄが消去される。また、図６に示すように、タイムスタンプ機能部２１は、タイムスタンプ値がクリアされる。
【００５２】
ステップＳ２７では、現在のフリーランタイマ値を保存しｅに代入する。処理部２０は、現在（タイミングＴ３）のフリーランタイマ値を記憶部３０に保存してｅに代入する。ここで保存されるフリーランタイマ値は、次回の制御タイミング時のステップＳ２１などで用いられる保存してあるフリーランタイマ値ｅとなる。
【００５３】
ところで、センサで測定する値（物理量）は、最新データを送信（受信）した時点から、制御タイミングまでの間に変位する可能性がある。つまり、センサで測定する値は、経過時間ｃの間に変位する可能性がある。また、制御演算は、制御タイミングよりも前に測定されたセンサ値（最新データの値）よりも、制御タイミングでセンサによって測定されたセンサ値を用いる方が適切な制御を行うことができるので好ましい。言い換えると、制御演算の正確性を向上させるためには、センサが制御タイミングで測定した値を用いて制御演算することが好ましい。なお、このように、最新データは、制御タイミング前における最新のデータである。
【００５４】
しかしながら、通信部７０は、通信によってセンサで測定された値を含むデータを受信するため、制御タイミングで測定された値を含むデータを、制御タイミングで受信するのは困難である。
【００５５】
そこで、処理部２０は、制御タイミング毎に、図５のフローチャートに示す処理を実行する。つまり、処理部２０は、制御タイミング毎に、上記のように経過時間ｃを算出した後に、図５のフローチャートに示す処理を実行する。また、処理部２０は、センサが制御タイミングで測定した値を推定し、最新データにかえて、推定した値を含むデータである推定データＤｅを用いて制御演算を行うと言える。推定データＤｅが示す値は、推定した推定値に相当する。
【００５６】
なお、ここでは、図７を用いつつ、図５のフローチャートに示す処理に関して説明する。図７では、タイミングＴ３１、Ｔ３２が制御タイミングである。また、タイミングＴ２１は、前回の制御タイミングＴ３１における最新データＤ１を受信したタイミングである。一方、タイミングＴ２２は、今回の制御タイミングＴ３２における最新データＤ２を受信したタイミングである。
【００５７】
そして、Ｔ１１は、最新データＤ１を受信してから制御タイミングＴ３１までの経過時間である。一方、Ｔ１２は、最新データＤ２を受信してから制御タイミングＴ３２までの経過時間である。よって、経過時間Ｔ１１、Ｔ１２は、上記経過時間ｃに相当する。
【００５８】
また、図７では、データＤ２が示す物理量（値）が時間の経過とともに変化して、制御タイミングＴ３２で推定データＤｅになると推定されることを表している。
【００５９】
ステップＳ３０では、最新データと今回経過時間を取得する。処理部２０は、上記のように検索した最新データＤ２と、上記のように算出した今回の経過時間Ｔ１２を取得する。
【００６０】
ステップＳ３１では、前回データと前回経過時間からの偏差をそれぞれ求める。前回データは、前回の制御タイミングＴ３１における最新データＤ１である。前回経過時間は、最新データＤ１から制御タイミングＴ３１までの経過時間である。
【００６１】
処理部２０は、前回の最新データＤ１とステップＳ３０で取得した最新データＤ２との差を求める。また、処理部２０は、前回の制御タイミングＴ３１と、前回の制御タイミングＴ３１で算出した経過時間Ｔ１１とから、前回の最新データＤ１の受信タイミングＴ２１を求める。そして、処理部２０は、前回の最新データＤ１を受信してから、今回の最新データＤ２を受信するまでの経過時間（Ｔ２２−Ｔ２１）を求める。これらから、処理部２０は、データＤ１、Ｄ２が示す物理量の時間的変動の傾向（変位指数）を求める。
【００６２】
ステップＳ３２では、経過時間を使って今時点でのデータを推定する。つまり、処理部２０は、ステップＳ３０で取得した最新データＤ２と経過時間Ｔ１２と、ステップＳ３１で求めた変位指数とを用いて、推定データＤｅを推定する。このように、処理部２０は、受信した最新データＤ２の物理量における経過時間Ｔ１２が経過した際の値を、経過時間Ｔ１２を用いて推定する。
【００６３】
ステップＳ３３では、制御演算を実施する。処理部２０は、最新データＤ２にかえて、推定データを用いて制御演算を行う。ここでの最新データは、特許請求の範囲における制御演算で用いるデータに相当する。
【００６４】
電子制御装置１００は、上記のように、ＤＭＡ技術を用いるため、割り込みを用いる場合よりも処理部２０の処理負荷を軽減できる。しかしながら、処理部２０は、タイミングＴ２１、Ｔ２１が分からない。本実施形態は、これを解決するための上記のような処理を行ない、推定データＤｅを算出する。そして、処理部２０は、推定データＤｅを用いて制御演算を行う。このため、電子制御装置１００は、制御演算の正確性を向上させることができる。
【００６５】
（第３実施形態）
図９〜図１１を用いて、第３実施形態に関して説明する。図１０に示すように、本実施形態では、複数のパルスを受信することで、一つのデータを受信する通信部７０を採用する。つまり、図１０は、通信部７０での通信に用いられるメッセージのフォーマット例と言える。通信部７０は、同期情報、ステータス情報、データなどを含むメッセージを受信する。ここでは、通信部７０が各データ２０１ｄ、２０２ｄなどを受信するためのデータ通信の時間（推定時間）をｙとする。
【００６６】
また、図１１に示すように、本実施形態では、第１データ２０１ｄ、第２データ２０２ｄに加えて、第３データ２０３ｄ、第４データ２０４ｄ、第５データ２０５ｄ、第６データ２０６ｄ、第７データ２０７ｄがＤＭＡバッファ３１に格納されている例を採用する。この例の場合、第７データ２０７ｄが最新データとなる。さらに、第６データ２０６ｄは、最新データよりも一つ古いデータとなる。そして、処理部２０は、各データ２０１ｄ〜２０７ｄに関連付けられているタイムスタンプ値の妥当性を判断する。
【００６７】
なお、第６データ２０６ｄと第７データ２０７ｄは、受信した連続する二つのデータに相当する。また、第６データ２０６ｄは、受信した連続する二つのデータのうちの先に受信した先行データに相当する。一方、第７データ２０７ｄは、受信した連続する二つのデータのうちの後に受信した後行データに相当する。
【００６８】
処理部２０は、例えば制御タイミング毎に、図９のフローチャートに示す処理を実行する。
【００６９】
ステップＳ４０では、最新データを取り込み、最新データのタイムスタンプ値をｚに代入する。処理部２０は、最新データとして第７データ２０７ｄを取り込み、第７データ２０７ｄに関連付けられたタイムスタンプ値をｚに代入する。
【００７０】
ステップＳ４１では、最新データのデータサイズをｔｉｃｋ換算してデータ通信の時間を推定してｙに代入する。つまり、処理部２０は、第７データ２０７ｄのデータサイズをｔｉｃｋ換算して、図１０の時間ｙを推定する。
【００７１】
ステップＳ４２では、ＤＭＡバッファから最新データから１つだけ古いデータを取り込み、そのタイムスタンプ値をｘに代入する。処理部２０は、１つだけ古いデータとして第６データ２０６ｄを取り込み、第６データ２０６ｄに関連付けられたタイムスタンプ値をｘに代入する。
【００７２】
ステップＳ４３では、ｘ＋ｙはｚの近傍であるか否かを判定する。ｘは、第６データ２０６ｄの受信が完了した時点における、フリーランタイマ６０で計測された時間に相当する。また、ｙは、第７データ２０７ｄを受信するのに要した時間に相当する。そして、ｚは、第７データ２０７ｄの受信が完了した時点における、フリーランタイマ６０で計測された時間に相当する。このため、タイムスタンプ機能部８０が正常であれば、ｘ＋ｙはｚに近い値となる。
【００７３】
そこで、処理部２０は、ｘ＋ｙがｚの近傍であると判定した場合はタイムスタンプ機能部８０が正常とみなしてステップＳ４４へ進み、ｘ＋ｙがｚの近傍であると判定しなかった場合はタイムスタンプ機能部８０が異常とみなしてステップＳ４５へ進む。
【００７４】
なお、タイムスタンプ機能部８０が正常で、且つ、タイムスタンプ機能部８０に誤差が生じない理想的な場合であれば、ｘ＋ｙ＝ｚとなる。よって、処理部２０は、ｘ＋ｙ＝ｚであればステップＳ４４へ進み、ｘ＋ｙ＝ｚでなければステップＳ４５へ進んでもよい。
【００７５】
しかしながら、ｘ＋ｙ＝ｚであるか否かによって、タイムスタンプ機能部８０が正常であるか否かを判定した場合、処理部２０は、タイムスタンプ機能部８０が正常であるにもかかわらず異常とみなす誤判定をする可能性があり、異常とみなす回数が多くなる。これに対して、処理部２０は、ｘ＋ｙがｚの近傍であるか否かによって、タイムスタンプ機能部８０が正常であるか否かを判定することで、誤判定する可能性を低減でき、異常とみなす回数が多くなることを抑制できるので好ましい。このため、近傍とは、タイムスタンプ機能部８０の誤差を見越して設定した値である。
【００７６】
ステップＳ４４では、処理部２０は、記憶部３０などに、タイムスタンプ機能部８０が正常であることを記録する。一方、ステップＳ４４では、処理部２０は、記憶部３０などに、タイムスタンプ機能部８０が異常であることを記録する。
【００７７】
言い換えると、処理部２０は、先行データである第６データ２０６ｄを受信した際にタイムスタンプ機能部８０で保存された時間ｘに、後行データである第７データ２０７ｄのデータサイズから換算した通信時間ｙを加算した比較時間ｘ＋ｙを算出する。また、処理部２０は、比較時間ｘ＋ｙと、後行データである第７データ２０７ｄを受信した際にタイムスタンプ機能部８０で保存された時間ｚとの時間差を算出する。そして、処理部２０は、この時間差が妥当判断条件を満たしている場合にタイムスタンプ機能部８０が妥当と判断し、時間差が妥当判断条件を満たしていない場合にタイムスタンプ機能部８０が妥当でないと判断する。なお、妥当診断閾値は、０であってもいいし、二つの閾値で規定された範囲であってもよい。
【００７８】
以上のように、電子制御装置１００は、タイムスタンプ機能部８０の妥当性を診断することができる。
【００７９】
また、第３実施形態は、第２実施形態と組み合わせて実施することもできる。タイムスタンプ機能部８０が妥当でない場合、推定データＤｅの値も適切でないことが考えられる。この場合、処理部２０は、タイムスタンプ機能部８０が妥当と判断した場合のみ推定データＤｅを用いて制御演算を行い、タイムスタンプ機能部８０が妥当でないと判断した場合は最新データを用いて制御演算を行ってもよい。このようにすることで、処理部２０は、タイムスタンプ機能部８０が妥当である場合は制御演算の正確性を向上でき、タイムスタンプ機能部８０が妥当でない場合は制御演算の正確性が低下することを抑制できる。
【００８０】
なお、電子制御装置１００は、タイムスタンプ機能部８０の妥当性診断の結果を記憶部３０に記憶する。このため、ディーラや工場などでは、記憶部３０の記憶内容を確認することで、タイムスタンプ機能部８０の妥当性診断の結果を把握することができる。
【００８１】
（第４実施形態）
図１２、図１３を用いて、第４実施形態に関して説明する。なお、本実施形態では、上記実施形態の図１１に示すように、第１データ２０１ｄ〜第７データ２０７ｄがＤＭＡバッファ３１に格納されている例を採用する。そして、処理部２０は、通信部７０が各データ２０１ｄ〜２０７ｄを受信する通信経路の異常診断を行う。通信経路は、通信部７０、通信バス２００などを含んでいる。
【００８２】
処理部２０は、例えば制御タイミング毎に、図１２のフローチャートに示す処理を実行する。
【００８３】
ステップＳ５０では、データ個数ｊに０を代入する。処理部２０は、ＤＭＡバッファ３１に格納されているデータの個数のカウントを開始するために、データ個数ｊに０を代入する。
【００８４】
ステップＳ５１では、ＤＭＡバッファの末尾アドレスをｈにコピーする。処理部２０は、ＤＭＡバッファ３１に格納されているデータ個数を、ＤＭＡバッファ３１の末尾アドレスから先頭アドレス側に向かって探すために、まず、ＤＭＡバッファ３１の末尾アドレスをアドレスｈにコピーする。アドレスｈは、データ個数をＤＭＡバッファ３１の末尾アドレスから順番に探す際の、現在のアドレスと言える。
【００８５】
ステップＳ５２では、アドレスｈが示す値はＮＵＬＬか否かを判定する。つまり、処理部２０は、ＤＭＡバッファ３１における、アドレスｈが示す領域にデータが格納されているか否かを判定する。処理部２０は、アドレスｈが示す領域にデータが格納されていない場合、アドレスｈが示す値がＮＵＬＬと判定して、ステップＳ５３へ進む。また、処理部２０は、アドレスｈが示す領域にデータが格納されていた場合、アドレスｈが示す値がＮＵＬＬでないと判定して、ステップＳ５５へ進む。
【００８６】
例えば、アドレスｈに末尾アドレスがコピーされており、ＤＭＡバッファ３１の末尾アドレスにデータが格納されていなかった場合、処理部２０は、アドレスｈが示す値がＮＵＬＬと判定する。一方、アドレスｈに末尾アドレスがコピーされており、ＤＭＡバッファ３１の末尾アドレスにデータが格納されていた場合、処理部２０は、アドレスｈが示す値がＮＵＬＬでないと判定する。
【００８７】
ステップＳ５３では、アドレスｈをＤＭＡバッファの先頭方向に遷移する。処理部２０は、アドレスｈを、ＤＭＡバッファ３１におけるアドレスの先頭方向に遷移する。つまり、処理部２０は、アドレスｈが示すＤＭＡバッファ３１のアドレスを、先頭方向に遷移させたＤＭＡバッファ３１のアドレスに変更する。
【００８８】
ステップＳ５４では、アドレスｈはＤＭＡバッファの先頭か否かを判定する。処理部２０は、アドレスｈが、ＤＭＡバッファ３１における先頭のアドレスであるか否かを判定する。そして、処理部２０は、アドレスｈがＤＭＡバッファ３１における先頭のアドレスであると判定した場合、ＤＭＡバッファ３１に格納されたデータの検索が完了したとみなして、図１３のステップＳ５６（Ｎ）へ進む。また、処理部２０は、アドレスｈがＤＭＡバッファ３１における先頭のアドレスであると判定しなかった場合、ＤＭＡバッファ３１に格納されたデータの検索を継続する必要があるとみなして、ステップＳ５２へ戻る。
【００８９】
ステップＳ５５では、処理部２０は、データ個数ｊをインクリメントする。処理部２０は、制御タイミング間で受信したデータの個数によって、通信経路の異常診断を行うために、データ個数をカウントする。また、処理部２０は、後程説明するデータ個数期待値Ｊｅを学習するために、制御タイミング間のデータの受信個数を保存するとも言える。
【００９０】
なお、制御タイミング間は、単位時間に相当する。また、制御タイミング間とは、ある制御タイミングと、次回の制御タイミングとの間の期間である。
【００９１】
ステップＳ５６では、データ個数ｊは予め保存しておいたデータ個数期待値Ｊｅの近傍か否かを判定する。処理部２０は、カウントしたデータ個数ｊと、予め記憶部３０などに保存しておいたデータ個数期待値Ｊｅとを比較する。そして、処理部２０は、データ個数ｊがデータ個数期待値Ｊｅの近傍であると判定した場合はステップＳ５７へ進み、データ個数ｊがデータ個数期待値Ｊｅの近傍であると判定しなかった場合はステップＳ６２へ進む。
【００９２】
データ個数ｊは、異常診断を行うタイミングでＤＭＡバッファ３１に実際に格納されているデータの個数に相当する。一方、データ個数期待値Ｊｅは、異常診断を行うタイミングで通信経路が正常の場合に、ＤＭＡバッファ３１に格納されているデータの個数の期待値である。つまり、データ個数期待値Ｊｅは、通信経路が正常であれば、制御タイミング間にＤＭＡバッファ３１に格納されると推測されるデータの個数と言える。
【００９３】
よって、処理部２０は、データ個数ｊがデータ個数期待値Ｊｅの近傍であるか否かを判定することで、データ個数ｊとデータ個数期待値Ｊｅとの関係が、異常診断条件を満たしているか否かを判定すると言える。そして、処理部２０は、データ個数ｊがデータ個数期待値Ｊｅの近傍であると判定した場合は、異常診断条件を満たしているとみなして、通信経路が正常と判断する。また、処理部２０は、データ個数ｊがデータ個数期待値Ｊｅの近傍であると判定しなかった場合は、異常診断条件を満たしていないとみなして、通信経路が異常と判断する。ステップＳ５６は、このように言い換えることができる。
【００９４】
本実施形態では、後程説明するが、データ個数期待値Ｊｅとして学習処理で得られた値を採用している。このため、本実施形態では、異常診断条件を満たしていないとみなした場合に、ただちに通信経路が異常と判断することはしない。つまり、処理部２０は、ステップＳ５６でＮＯ判定したとしても、学習処理が完了していなければ正確な診断ができないとみなして、異常と判断することを保留する。しかしながら、処理部２０は、ステップＳ５６でＮＯ判定したことで、異常と判断してもよい。
【００９５】
上記のように本実施形態では、制御タイミング間にＤＭＡバッファ３１に保存されるデータの個数を学習処理で学習したデータ個数期待値Ｊｅを採用している。データ個数期待値Ｊｅは、記憶部３０などに記憶しておくことができる。また、記憶部３０には、データ個数期待値Ｊｅの初期値として、制御タイミング間にＤＭＡバッファ３１に保存されるデータの個数の予測値を保存しておく。そして、処理部２０は、最初の学習処理が行われる前は初期値を用いて判定する。
【００９６】
なお、処理部２０は、データ個数ｊとデータ個数期待値Ｊｅとが一致すると判定した場合にステップＳ５７へ進み、一致すると判定しない場合にステップＳ６２へ進むようにしてもよい。しかしながら、上記ステップＳ４３と同様に、データ個数ｊがデータ個数期待値Ｊｅの近傍であるか否かを判定することで、誤判定を抑制することができる。
【００９７】
ステップＳ５７では、データ個数期待値Ｊｅに現在のＪｅとｊの平均値を代入する（学習処理）。処理部２０は、現在のデータ個数期待値Ｊｅとデータ個数ｊとの平均値を算出する。そして、処理部２０は、算出した平均値を、次回以降に用いるデータ個数期待値Ｊｅとして採用する。
【００９８】
ステップＳ５８では、学習回数ｐをインクリメントする。処理部２０は、ステップＳ５７での処理を行なうと、学習回数ｐをインクリメントする。よって、学習回数ｐは、ステップＳ５７での処理を行なった回数に相当する。
【００９９】
ステップＳ５９では、学習回数ｐが規定値以上か否かを判定する（学習処理）。処理部２０は、学習回数ｐが規定値以上か否かを判定し、学習回数ｐが規定値以上であると判定した場合はステップＳ６０へ進み、学習回数ｐが規定値以上であると判定しなかった場合はステップＳ６１へ進む。規定値は、２以上の自然数であれば採用できる。
【０１００】
ステップＳ６０では、学習完了フラグＬに「完」を代入する。処理部２０は、学習処理が完了したとみなして、学習完了フラグＬに「完」を代入する。つまり、処理部２０は、例えば０から１に書き換えるなどして、学習完了フラグＬを「未」から「完」に書き換える。
【０１０１】
ステップＳ６１では、正常を記録する。処理部２０は、記憶部３０などに、通信部７０での通信状態が正常であることを記録する。
【０１０２】
ステップＳ６２では、学習完了フラグＬは「未」か否かを判定する。処理部２０は、学習完了フラグＬが「未」であると判定しなかった場合はステップＳ６３へ進み、学習完了フラグＬが「未」であると判定した場合はステップＳ５７へ進む。ステップＳ６３では、異常を記録する。処理部２０は、記憶部３０などに、通信部７０での通信状態が異常であることを記録する。
【０１０３】
学習完了フラグＬが「未」である場合、データ個数期待値Ｊｅは、通信経路が正常な状態で、実際に制御データ間にＤＭＡバッファ３１に格納されるデータ個数と、乖離が生じている可能性がある。このため、処理部２０は、データ個数ｊがデータ個数期待値Ｊｅの近傍でなかったとしても、一概には通信経路が異常であるとは判断しづらい。よって、処理部２０は、学習処理が完了していないデータ個数期待値Ｊｅを用いて通信経路の異常診断を行った場合、正しい診断結果が得られず誤診断してしまう可能性がある。しかしながら、本実施形態では、学習処理が完了していない場合、データ個数ｊがデータ個数期待値Ｊｅの近傍でなかったとしても、通信経路が異常であると判断しないため、誤診断を抑制できる。
【符号の説明】
【０１０４】
１０…マイコン、２０…処理部、３０…記憶部、３１…ＤＭＡバッファ、３２…制御用ＲＡＭ、４０…マイコンレジスタ、５０…ＤＭＡコントローラ、６０…フリーランタイマ、７０…通信部、８０…タイムスタンプ機能部、１００…電子制御装置、２００…通信バス
【図１】
2020091657.tif 000003
【図２】
2020091657.tif 000004
【図３】
2020091657.tif 000005
【図４】
2020091657.tif 000006
【図５】
2020091657.tif 000007
【図６】
2020091657.tif 000008
【図７】
2020091657.tif 000009
【図８】
2020091657.tif 000010
【図９】
2020091657.tif 000011
【図１０】
2020091657.tif 000012
【図１１】
2020091657.tif 000013
【図１２】
2020091657.tif 000014
【図１３】
2020091657.tif 000015