(57)【特許請求の範囲】
【請求項１】
通信線を介して相互接続された複数の電子制御装置が、共通の時間であるグローバルタイムに同期して通信を行うことで情報を送受信するネットワークシステムに用いられる電子制御装置であって、
他の電子制御装置と前記情報を送受信するための通信制御手段と、
前記通信制御手段が通信サイクルごとに受信した、前記ネットワークシステムで共通の時刻情報に基づいて、前記グローバルタイムを算出するグローバルタイム算出手段と、
前記グローバルタイム算出手段で算出された前記グローバルタイムに同期して、１以上のアプリケーションを実行する演算処理手段または、前記グローバルタイム算出手段で算出された前記グローバルタイムを用いて、前記演算処理手段における各アプリケーションの実行間隔の計測を行い、計測したそれぞれの実行間隔と、アプリケーションごとにあらかじめ決められた閾値とを比較し、計測された実行間隔が閾値以下であるアプリケーションがある場合には、当該アプリケーションで実行間隔エラーが発生したと判定する実行間隔監視手段の少なくともいずれか一方と
を備え、
一定間隔で値が増加あるいは減少するローカルカウンタ
をさらに備え、
前記実行間隔監視手段は、前記グローバルタイム算出手段が、グローバルタイムに非同期であると判断した状態においては、前記ローカルカウンタの値を用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定する
ことを特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記実行間隔監視手段は、前記非同期状態から前記同期状態に切り替わったと判断した場合には、前記グローバルタイムを用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定するように変更する
ことを特徴とする電子制御装置。
【請求項３】
請求項１または２に記載の電子制御装置において、
前記実行間隔監視手段は、前記同期状態から前記非同期状態に切り替わったと判断した場合には、最後に算出した前記グローバルタイムと変換式を用いてローカルカウンタ換算値を算出し、非同期状態に切り替わった次の実行間隔の計測には、前記ローカルカウンタの値と前記ローカルカウンタ換算値を用いる
ことを特徴とする電子制御装置。
【請求項４】
通信線を介して相互接続された複数の電子制御装置が、共通の時間であるグローバルタイムに同期して通信を行うことで情報を送受信するネットワークシステムに用いられる電子制御装置であって、
他の電子制御装置と前記情報を送受信するための通信制御手段と、
前記通信制御手段が通信サイクルごとに受信した、前記ネットワークシステムで共通の時刻情報に基づいて、前記グローバルタイムを算出するグローバルタイム算出手段と、
前記グローバルタイム算出手段で算出された前記グローバルタイムに同期して、１以上のアプリケーションを実行する演算処理手段または、前記グローバルタイム算出手段で算出された前記グローバルタイムを用いて、前記演算処理手段における各アプリケーションの実行間隔の計測を行い、計測したそれぞれの実行間隔と、アプリケーションごとにあらかじめ決められた閾値とを比較し、計測された実行間隔が閾値以下であるアプリケーションがある場合には、当該アプリケーションで実行間隔エラーが発生したと判定する実行間隔監視手段の少なくともいずれか一方と
を備え、
一定間隔で値が増加あるいは減少するローカルカウンタと、
前記グローバルタイム算出手段が通信エラーを検出するとインクリメントされる通信エラーカウンタと
をさらに備え、
前記実行間隔監視手段は、前記通信エラーカウンタの値が第１の値以上になると、前記ローカルカウンタの値を用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定する
ことを特徴とする電子制御装置。
【請求項５】
請求項４に記載の電子制御装置において、
前記通信エラーカウンタの値は、前記通信制御手段により前記時刻情報が受信できる場合には、デクリメントされ、
前記実行間隔監視手段は、前記通信エラーカウンタの値が、前記第１の値以上になった後に、前記第１の値以下の値である第２の値未満になった場合には、前記グローバルタイムを用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定するように変更する
ことを特徴とする電子制御装置。
【請求項６】
請求項４または５に記載の電子制御装置において、
前記実行間隔監視手段は、前記通信エラーカウンタの値が前記第１の値未満である状態から前記第１の値以上に切り替わったと判断した場合には、前記グローバルタイムと変換式を用いてローカルカウンタ換算値を算出し、前記通信エラーカウンタの値が前記第１の値以上の状態に切り替わった次の実行間隔の計測には、前記ローカルカウンタの値と前記ローカルカウンタ換算値を用いる
ことを特徴とする電子制御装置。
【請求項７】
通信線を介して相互接続された複数の電子制御装置が、共通の時間であるグローバルタイムに同期して通信を行うことで情報を送受信するネットワークシステムに用いられる電子制御装置であって、
他の電子制御装置と前記情報を送受信するための通信制御手段と、
前記通信制御手段が通信サイクルごとに受信した、前記ネットワークシステムで共通の時刻情報に基づいて、前記グローバルタイムを算出するグローバルタイム算出手段と、
前記グローバルタイム算出手段で算出された前記グローバルタイムに同期して、１以上のアプリケーションを実行する演算処理手段または、前記グローバルタイム算出手段で算出された前記グローバルタイムを用いて、前記演算処理手段における各アプリケーションの実行間隔の計測を行い、計測したそれぞれの実行間隔と、アプリケーションごとにあらかじめ決められた閾値とを比較し、計測された実行間隔が閾値以下であるアプリケーションがある場合には、当該アプリケーションで実行間隔エラーが発生したと判定する実行間隔監視手段の少なくともいずれか一方と
を備え、
一定間隔で値が増加あるいは減少するローカルカウンタと、
前記グローバルタイム算出手段により算出される前記グローバルタイムと、あらかじめ決められた値との差分値を求め、前記差分値が第３の値以上である場合にインクリメントされる通信エラー予兆カウンタと
をさらに備え、
前記実行間隔監視手段は、前記通信エラー予兆カウンタの値が第４の値以上になると、前記ローカルカウンタの値を用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定する
ことを特徴とする電子制御装置。
【請求項８】
請求項７に記載の電子制御装置において、
前記通信エラー予兆カウンタの値は、前記差分値が第３の値以下になるとデクリメントされ、
前記実行間隔監視手段は、前記通信エラー予兆カウンタの値が、前記第４の値以上になった後に、前記第４の値以下の値である第５の値未満になった場合には、前記グローバルタイムを用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定するように変更する
ことを特徴とする電子制御装置。
【請求項９】
請求項７または８に記載の電子制御装置において、
前記実行間隔監視手段は、前記通信エラー予兆カウンタの値が前記第４の値未満である状態から前記第４の値以上に切り替わったと判断した場合には、前記グローバルタイムと変換式を用いてローカルカウンタ換算値を算出し、前記通信エラー予兆カウンタの値が前記第４の値以上の状態に切り替わった次の実行間隔の計測には、前記ローカルカウンタの値と前記ローカルカウンタ換算値を用いる
ことを特徴とする電子制御装置。
【請求項１０】
請求項７ないし９のいずれか１項に記載の電子制御装置において、
前記実行間隔監視手段は、前記差分値が前記第三の値未満となった場合には、前記通信エラー予兆カウンタの値をリセットする
ことを特徴とする電子制御装置。
【請求項１１】
通信線を介して相互接続された複数の電子制御装置が、共通の時間であるグローバルタイムに同期して通信を行うことで情報を送受信するネットワークシステムに用いられる電子制御装置であって、
他の電子制御装置と前記情報を送受信するための通信制御手段と、
前記通信制御手段が通信サイクルごとに受信した、前記ネットワークシステムで共通の時刻情報に基づいて、前記グローバルタイムを算出するグローバルタイム算出手段と、
前記グローバルタイム算出手段で算出された前記グローバルタイムに同期して、１以上のアプリケーションを実行する演算処理手段または、前記グローバルタイム算出手段で算出された前記グローバルタイムを用いて、前記演算処理手段における各アプリケーションの実行間隔の計測を行い、計測したそれぞれの実行間隔と、アプリケーションごとにあらかじめ決められた閾値とを比較し、計測された実行間隔が閾値以下であるアプリケーションがある場合には、当該アプリケーションで実行間隔エラーが発生したと判定する実行間隔監視手段の少なくともいずれか一方と
を備え、
一定間隔で値が増加あるいは減少するローカルカウンタ
をさらに備え、
前記実行間隔監視手段は、起動周期があらかじめ決められた第１の期間以上のアプリケーションに対しては、前記グローバルタイムを用いて当該アプリケーションの実行間隔の計測を行い、前記起動周期があらかじめ決められた第１の期間未満のアプリケーションに対しては、前記ローカルカウンタを用いて当該アプリケーションの実行間隔の計測を行い、
前記グローバルタイムと前記ローカルカウンタを並行して使用する
ことを特徴とする電子制御装置。
【請求項１２】
請求項１ないし１１のいずれか１項に記載の電子制御装置において、
前記実行間隔監視手段は、前記実行間隔エラーが発生したと判断した時点でのグローバルタイムを記憶する
ことを特徴とする電子制御装置。
【請求項１３】
通信線を介して相互接続された複数の電子制御装置が、共通の時間であるグローバルタイムに同期して通信を行うことで情報を送受信するネットワークシステムに用いられる電子制御装置に適用されるアプリケーションの実行間隔監視方法であって、
他の電子制御装置と前記情報を送受信するための通信制御ステップと、
前記通信制御ステップで通信サイクルごとに受信した、前記ネットワークシステムで共通の時刻情報に基づいて、前記グローバルタイムを算出するグローバルタイム算出ステップと、
前記グローバルタイム算出ステップで算出された前記グローバルタイムに同期して、１以上のアプリケーションを実行する演算処理ステップまたは、前記グローバルタイム算出ステップで算出された前記グローバルタイムを用いて、前記演算処理ステップにおける各アプリケーションの実行間隔の計測を行い、計測したそれぞれの実行間隔と、アプリケーションごとにあらかじめ決められた閾値とを比較し、計測された実行間隔が閾値以下であるアプリケーションがある場合には、当該アプリケーションで実行間隔エラーが発生したと判定する実行間隔監視ステップの少なくともいずれか一方と
を備え、
前記実行間隔監視ステップは、前記グローバルタイム算出ステップが、グローバルタイムに非同期であると判断した状態においては、一定間隔で値が増加あるいは減少するローカルカウンタの値を用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定する
ことを特徴とする電子制御装置に適用されるアプリケーションの実行間隔監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークで共通の時間に同期して実行されるアプリケーションの実行間隔監視を行う電子制御装置および電子制御装置に適用されるアプリケーションの実行間隔監視方法に関する。
【背景技術】
【０００２】
自動車や船舶では、搭載された複数の電子制御装置間で、互いに制御対象の状態や制御量などの情報を共有して制御を実現している。情報共有のために、複数の電子制御装置は、互いに通信線で接続されたネットワークシステムを構築し、ネットワークを介して情報を含むメッセージの送受信を行っている。
【０００３】
このようなネットワーク間でのメッセージの送受信は、電子制御装置間で統一された通信方式に従って行われる。このような通信方式の１つとして、全電子制御装置がネットワークシステムで共通の時間（以下、グローバルタイム）に同期することにより、各電子制御装置があらかじめ定められたタイミングでメッセージの送受信を行う、時分割多重方式がある。
【０００４】
このような時分割多重方式に従って通信を行う電子制御装置では、メッセージを通信線上に送信するタイミング、あるいは通信線上から受信するタイミングのみならず、アプリケーションの実行タイミングも、グローバルタイムに同期させる場合がある。
【０００５】
これにより、アプリケーションでの処理タイミングと通信線上への実際の送受信タイミングとの間の時間差を固定することができ、リアルタイム性を高めることができるとともに、異なる電子制御装置に実装されたアプリケーション間で同期することによって、ネットワークシステム全体で協調した高度な制御を行うことができる。
【０００６】
一例として、グローバルタイムを取得して自身のタイマを補正し、このタイマによってアプリケーションを起動している従来技術がある（例えば、特許文献１参照）。なお、本発明におけるアプリケーションとは、制御用の演算を行うソフトウェアプログラムだけでなく、メッセージの送受信を行うソフトウェアプログラムも含む。
【０００７】
時分割多重方式の一例としては、ＦｌｅｘＲａｙ（登録商標）がある。ＦｌｅｘＲａｙでは、ＦｌｅｘＲａｙが定める時間の単位を用いて定義された長さを持つ通信サイクルを繰り返し、この通信サイクルの特定のタイミングにおいて、メッセージの送受信が行われる。ＦｌｅｘＲａｙにおけるグローバルタイムは、このＦｌｅｘＲａｙが定める時間の単位を用いて表記される。
【０００８】
次に、ＦｌｅｘＲａｙにおいて、各電子制御装置がグローバルタイムを取得する方法について説明する。ＦｌｅｘＲａｙでは、あらかじめ定められた電子制御装置が、毎通信サイクル、特定のメッセージを送信する。そして、各電子制御装置が、この特定のメッセージを受信した時刻に基づき、グローバルタイムを算出し、ネットワークシステムに同期する。
【０００９】
よって、ＦｌｅｘＲａｙでは、ネットワークシステム全体で絶対的なグローバルタイムが示されているわけではなく、各電子制御装置が、それぞれ、ローカルにグローバルタイムを導出することになる。そして、各電子制御装置は、一度ネットワークシステムに同期し、通信可能になった後も、電子制御装置間のクロック偏差などの影響を受けないようにするために、毎通信サイクル、特定のメッセージの受信した時刻に基づき、自身のグローバルタイムを補正する。
【００１０】
この補正によって、ＦｌｅｘＲａｙが定める時間の１単位の長さや、通信サイクル全体の長さは、あらかじめ定めた補正幅内で、長くなったり短くなったりと、前後することになる。
【００１１】
このようなＦｌｅｘＲａｙにおいて、特許文献１のように、アプリケーションの実行タイミングをグローバルタイムに同期させる場合、グローバルタイムが補正されると、通信サイクルの長さが前後する。その結果、アプリケーションの実行タイミングも、この補正によって前後することになる。
【００１２】
ところで、近年、電子制御装置の信頼性向上を目的として、アプリケーションの実行時間あるいは実行間隔を監視する時間保護機能の適用が求められつつある。実行間隔の監視では、周期的に起動するアプリケーションの実行間隔が所定の時間より短い場合に、エラーとして検出し、リセットやエラーモードへの遷移などのエラー処理を行う。
【００１３】
このようにすることで、一時的なビット反転や、ハードウェアの恒久的な異常により、アプリケーションの実行が異常頻発し、ＣＰＵリソースを占有して電子制御装置を制御不能にする、あるいはこの電子制御装置から受信したメッセージを用いて制御を行う他の電子制御装置を制御不能にすることを避けることができる。
【００１４】
また、例えば、所定の監視間隔で、割込み発生数を監視し、割込み発生数が所定の閾値を超えた場合に、エラーとしている従来技術がある（例えば、特許文献２参照）。
【００１５】
他にも、一般的な方法として、アプリケーションの実行開始毎に、ＣＰＵが備えるカウンタの値を参照し、前回実行開始時のカウンタの値との差から、実行間隔が所定の時間より短くないか監視する方法などがある。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０１１−２３４２１２号公報
【特許文献２】特開２０１０−２７１９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、従来技術には、以下のような課題がある。
特許文献１において、電子制御装置のアプリケーションの実行タイミングをＦｌｅｘＲａｙのグローバルタイムに同期させる場合には、上述したように、アプリケーションの実行タイミングが、グローバルタイムの補正によって前後することになる。
【００１８】
このような電子制御装置において、特許文献２のような実行間隔の監視を行う場合には、アプリケーションの実行タイミングが、実行間隔監視が定めた時間よりも短くなり、エラーと判定される可能性がある。
【００１９】
例えば、ＦｌｅｘＲａｙの通信サイクルの長さの初期値が５ｍｓ相当であり、アプリケーションの実行間隔が、ＦｌｅｘＲａｙの通信サイクルの１００回分、すなわち初期値が５００ｍｓ相当である場合には、アプリケーションの１回の起動毎に、グローバルタイムは、最大１００回補正されることになる。
【００２０】
その結果、補正幅が蓄積して、アプリケーションの実行間隔が５００ｍｓよりも大幅に短くなる場合がある。したがって、アプリケーションの実行間隔が、実行間隔監視が定めた時間より短くなり、実行間隔監視エラーと判定される可能性が高くなる。
【００２１】
実行間隔監視で定める実行間隔の時間には、あらかじめこれらのグローバルタイムの補正幅を考慮して設定することも考えられる。しかし、グローバルタイムの補正幅が大きい場合、アプリケーションの実行周期よりも大幅に短い時間を設定しなければならない。その結果、異常によってアプリケーションの実行時間が短くなっても検出できず、本来の実行間隔監視の機能を果たさなくなる可能性がある。また、これらを考慮して最適値を設定するには、動作検証に時間を要するため、開発工数の増大につながる。
【００２２】
本発明は、上記のような課題を解決するためになされたものであり、グローバルタイムの補正によって、アプリケーションの実行間隔が変動した場合にも、実行間隔監視エラーとして誤検出される事態を回避し、アプリケーションを所望のタイミングで実行できる電子制御装置および電子制御装置に適用されるアプリケーションの実行間隔監視方法を得ることを目的とする。
【課題を解決するための手段】
【００２３】
本発明に係る電子制御装置は、通信線を介して相互接続された複数の電子制御装置が、共通の時間であるグローバルタイムに同期して通信を行うことで情報を送受信するネットワークシステムに用いられる電子制御装置であって、他の電子制御装置と情報を送受信するための通信制御手段と、通信制御手段が通信サイクルごとに受信した、ネットワークシステムで共通の時刻情報に基づいて、グローバルタイムを算出するグローバルタイム算出手段と、グローバルタイム算出手段で算出されたグローバルタイムに同期して、１以上のアプリケーションを実行する演算処理手段または、グローバルタイム算出手段で算出されたグローバルタイムを用いて、演算処理手段における各アプリケーションの実行間隔の計測を行い、計測したそれぞれの実行間隔と、アプリケーションごとにあらかじめ決められた閾値とを比較し、計測された実行間隔が閾値以下であるアプリケーションがある場合には、当該アプリケーションで実行間隔エラーが発生したと判定する実行間隔監視手段の少なくともいずれか一方とを備え、一定間隔で値が増加あるいは減少するローカルカウンタをさらに備え、実行間隔監視手段は、グローバルタイム算出手段が、グローバルタイムに非同期であると判断した状態においては、ローカルカウンタの値を用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定するものである。
【００２４】
また、本発明に係る電子制御装置に適用されるアプリケーションの実行間隔監視方法は、通信線を介して相互接続された複数の電子制御装置が、共通の時間であるグローバルタイムに同期して通信を行うことで情報を送受信するネットワークシステムに用いられる電子制御装置に適用されるアプリケーションの実行間隔監視方法であって、他の電子制御装置と情報を送受信するための通信制御ステップと、通信制御ステップで通信サイクルごとに受信した、ネットワークシステムで共通の時刻情報に基づいて、グローバルタイムを算出するグローバルタイム算出ステップと、グローバルタイム算出ステップで算出されたグローバルタイムに同期して、１以上のアプリケーションを実行する演算処理ステップまたは、グローバルタイム算出ステップで算出されたグローバルタイムを用いて、演算処理ステップにおける各アプリケーションの実行間隔の計測を行い、計測したそれぞれの実行間隔と、アプリケーションごとにあらかじめ決められた閾値とを比較し、計測された実行間隔が閾値以下であるアプリケーションがある場合には、当該アプリケーションで実行間隔エラーが発生したと判定する実行間隔監視ステップの少なくともいずれか一方とを備え、実行間隔監視ステップは、グローバルタイム算出ステップが、グローバルタイムに非同期であると判断した状態においては、一定間隔で値が増加あるいは減少するローカルカウンタの値を用いて計測した実行間隔に基づいて、各アプリケーションの実行間隔エラーの発生の有無を判定するものである。
【発明の効果】
【００２５】
本発明に係る電子制御装置および電子制御装置に適用されるアプリケーションの実行間隔監視方法によれば、グローバルタイムを用いてアプリケーションの実行間隔を監視することにより、グローバルタイムの補正によって、アプリケーションの実行間隔が変動した場合にも、実行間隔監視エラーとして誤検出される事態を回避し、アプリケーションを所望のタイミングで実行できる電子制御装置および電子制御装置に適用されるアプリケーションの実行間隔監視方法を得ることができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施の形態１に係る２つの電子制御装置を備えたネットワークシステムの構成図である。
【図２】本発明の実施の形態１における実行間隔監視手段が保持する、アプリケーション毎にあらかじめ定められた実行間隔の閾値のテーブルである。
【図３】本発明の実施の形態１におけるＦｌｅｘＲａｙのグローバルタイムにおけるサイクルとチックの関係を示すタイムチャートである。
【図４】本発明の実施の形態１における実行間隔監視手段による一連動作を示すフローチャートである。
【図５】本発明の実施の形態１におけるグローバルタイムと、演算処理手段、実行間隔監視手段の起動タイミングの関係と、実行間隔監視状況とを示すタイムチャートである。
【図６】本発明の実施の形態１でアプリケーションの実行間隔異常が発生した場合におけるグローバルタイムと、演算処理手段、実行間隔監視手段の起動タイミングの関係と、実行間隔監視状況とを示すタイムチャートである。
【図７】本発明の実施の形態２に係るＥＣＵの構成図である。
【図８】本発明の実施の形態２における実行間隔監視手段が保持する、アプリケーション毎にあらかじめ定められた実行間隔の閾値のテーブルである。
【図９】本発明の実施の形態２における切替手段の一連処理を示すフローチャートである。
【図１０】本発明の実施の形態２における実行間隔監視手段の一連処理を示すフローチャートである。
【図１１】本発明の実施の形態２におけるグローバルタイムおよびローカルカウンタ値と、演算処理手段、実行間隔監視手段の起動タイミングの関係と、実行間隔監視状況とを示すタイムチャートである。
【図１２】本発明の実施の形態３に係るＥＣＵの構成図である。
【図１３】本発明の実施の形態３における切替手段の一連処理を示すフローチャートである。
【図１４】本発明の実施の形態３における実行間隔監視手段の一連処理を示すフローチャートである。
【図１５】本発明の実施の形態３におけるグローバルタイムおよびローカルカウンタ値と、演算処理手段、実行間隔監視手段の起動タイミングの関係と、通信エラーカウンタおよび実行間隔監視状況とを示すタイムチャートである。
【図１６】本発明の実施の形態４に係るＥＣＵの構成図である。
【図１７】本発明の実施の形態４におけるグローバルタイム算出手段の一連処理を示すフローチャートである。
【発明を実施するための形態】
【００２７】
以下、本発明の電子制御装置および電子制御装置に適用されるアプリケーションの実行間隔監視方法の好適な実施の形態につき図面を用いて説明する。
【００２８】
実施の形態１．
図１は、本発明の実施の形態１に係る２つの電子制御装置を備えたネットワークシステムの構成図である。本ネットワークシステム１０１では、２つの電子制御装置に相当するＥＣＵ１０２、１０３間が、通信線１０４によって互いに接続されている。
【００２９】
各ＥＣＵ１０２、１０３は、通信制御手段１０５、グローバルタイム算出手段１０６、演算処理手段１０７、および実行間隔監視手段１０８を備えて構成されている。通信制御手段１０５とグローバルタイム算出手段１０６は、通常、ＦｌｅｘＲａｙ通信コントローラと呼ばれ、Ｈ／Ｗで実装されているものである。
【００３０】
各ＥＣＵ１０２、１０３の通信制御手段１０５は、ＦｌｅｘＲａｙ通信が可能になると、グローバルタイム算出手段１０６が提供するグローバルタイムに基づき、定められたタイミングでメッセージの送受信を行う。
【００３１】
グローバルタイム算出手段１０６は、サイクル値とチック値で表されるＦｌｅｘＲａｙのグローバルタイムを管理し、通信制御手段１０５、演算処理手段１０７、実行間隔監視手段１０８に対して、現在のグローバルタイムを提供する。
【００３２】
演算処理手段１０７は、グローバルタイム算出手段１０６が提供するグローバルタイムに基づき、アプリケーションＸ（アプリケーションを４つと仮定すると、Ｘ＝１〜４）を実行する。アプリケーションＸの演算結果は、例えば、直接ＥＣＵ１０２、１０３に接続されたアクチュエータ（図１には図示せず）の制御に用いられる、あるいは、メッセージとして通信線１０４を介して送信し、他のＥＣＵ１０２、１０３での演算に使用されることとなる。
【００３３】
アプリケーションＸがネットワークシステム１０１全体で共通のグローバルタイムと同期して実行されるため、他のＥＣＵ１０２、１０３と協調した車両の制御を行うことが可能である。
【００３４】
実行間隔監視手段１０８は、演算処理手段１０７の起動直前に実行され、グローバルタイム算出手段１０６が提供するグローバルタイムを取得し、記憶する。また、実行間隔監視手段１０８は、前回アプリケーションＸを実行する前に取得したグローバルタイムとの差分を下記のように算出する。
（実行間隔）＝（今回、アプリケーション実行前に取得したグローバルタイム）
−（前回、アプリケーション実行前に取得したグローバルタイム）
【００３５】
そして、実行間隔監視手段１０８は、算出した実行間隔と、アプリケーション毎にあらかじめ定められた実行間隔の閾値とを比較する。さらに、実行間隔監視手段１０８は、算出した実行間隔が閾値以下の場合には、エラーと判定し、取得したグローバルタイムをエラー発生時グローバルタイムとして記憶するとともに、演算処理手段１０７を停止するというエラー処理を行う。
【００３６】
図２は、本発明の実施の形態１における実行間隔監視手段１０８が保持する、アプリケーション毎にあらかじめ定められた実行間隔の閾値のテーブルである。図２において、例えば、アプリケーション１の実行間隔が９９００チック以下のときに、エラーと判定される。
【００３７】
次に、グローバルタイム算出手段１０６のグローバルタイム管理方法について説明する。ＦｌｅｘＲａｙの仕様では、詳細な管理方法が定められているが、ここでは、本実施の形態１の説明に必要な動作のみ示す。
【００３８】
グローバルタイムは、サイクル値とチック値の組で表記される。図３は、本発明の実施の形態１におけるＦｌｅｘＲａｙのグローバルタイムにおけるサイクル値とチック値の関係を示すタイムチャートであり、サイクル値とチック値の２つの例が、（ａ）、（ｂ）として示されている。
【００３９】
通信制御手段１０５が、ＦｌｅｘＲａｙのスタートアップフレームあるいは同期フレームと呼ばれる特定のメッセージの受信を開始すると、サイクル値とチック値のインクリメントが開始される。１チックの長さは、補正されるまで、グローバルタイム算出手段１０６が保持する初期値の長さ（１チック＝２μｓなど）毎にインクリメントされる。
【００４０】
そして、本実施の形態１では、チック値は、インクリメントされた値が５０００チックになるときに、０にリセットされる。よって、ＦｌｅｘＲａｙの通信サイクルの長さは、このチック値の最大値である５０００チックと表記される。
【００４１】
一方、サイクル値は、チック値が０にリセットされるタイミングでインクリメントされる。サイクル値の最大値は６３で、６３になると次にインクリメントされるタイミングで０に戻る。
【００４２】
サイクル値とチック値のインクリメントが開始されると、グローバルタイム算出手段１０６は、各通信サイクルにおいて、スタートアップフレームあるいは同期フレームの受信時刻と、あらかじめ設定された予測受信時刻との差分を補正値として算出する。そして、グローバルタイム算出手段１０６は、通信サイクル内の定められたタイミングにおいて、自身が管理するチック値を、この補正値を用いて補正する。
【００４３】
この補正は、１チックの長さを長くしたり短くしたり、１通信サイクルあたりのチック値の最大値を一時的に大きくしたり、小さくしたりするものである。図３（ｂ）は、図３（ａ）に対して、１チックの長さが短く補正されたときの、サイクル値とチック値の関係を示している。この図から明らかなように、１通信サイクルのチック数は、あらかじめ設定した５０００チックで変化していないが、１チックの長さを短くなるよう補正することにより、１通信サイクルの絶対長は、短くなっている。
【００４４】
続いて、実行間隔監視手段１０８の動作について、フローチャートを用いて説明する。図４は、本発明の実施の形態１における実行間隔監視手段１０８による一連動作を示すフローチャートである。
【００４５】
実行間隔監視手段１０８は、アプリケーションＸの実行前に起動すると、ステップＳ４０１において、グローバルタイム算出手段１０６から、現在のグローバルタイムを示す｛サイクル値、チック値｝＝｛ｃ、ｔ｝を取得する。
【００４６】
次に、ステップＳ４０２において、実行間隔監視手段１０８は、前回アプリケーションＸを実行する前に取得し、記憶したグローバルタイム｛ｃＸ’、ｔＸ’｝を取得する。
【００４７】
そして、ステップＳ４０３において、実行間隔監視手段１０８は、ステップＳ４０１で取得した現在のグローバルタイム｛ｃ、ｔ｝と、ステップＳ４０２で取得した前回のグローバルタイム｛ｃＸ’、ｔＸ’｝の差を算出し、実行間隔ＩｎｔＸを求める。
【００４８】
次に、ステップＳ４０４において、実行間隔監視手段１０８は、図２に示すテーブルを参照し、アプリケーションＸ用に設定された閾値ｔｈＸを取得する。
【００４９】
さらに、ステップＳ４０５において、実行間隔監視手段１０８は、ステップＳ４０３で算出した実行間隔ＩｎｔＸと、ステップＳ４０４で取得した閾値ｔｈＸとを比較する。そして、実行間隔監視手段１０８は、実行間隔ＩｎｔＸが閾値ｔｈＸよりも大きい場合には、実行間隔に問題がないと判断して、ステップＳ４０６に進む。
【００５０】
そして、ステップＳ４０６に進んだ場合には、実行間隔監視手段１０８は、前回のグローバルタイム｛ｃＸ’、ｔＸ’｝を現在のグローバルタイム｛ｃ、ｔ｝によって上書きし、一連処理を終了する。
【００５１】
一方、実行間隔ＩｎｔＸが閾値ｔｈＸ以下の場合には、実行間隔監視手段１０８は、ステップＳ４０５からステップＳ４０７の処理に進む。そして、ステップＳ４０７に進んだ場合には、実行間隔監視手段１０８は、実行間隔エラーであると判定し、エラーが発生したときのグローバルタイムである現在のグローバルタイム｛ｃ、ｔ｝を、エラー発生時グローバルタイムとして記憶するとともに、演算処理手段１０７によるアプリケーションＸの実行を禁止して、一連処理を終了する。
【００５２】
次に、具体的な数値例に基づくタイムチャートを用いて、この図４のフローチャートによる一連処理を詳細に説明する。図５は、本発明の実施の形態１におけるグローバルタイムと、演算処理手段、実行間隔監視手段の起動タイミングの関係と、実行間隔監視状況とを示すタイムチャートである。なお、この図５において、横軸は、時間を示している。
【００５３】
また、図５（ａ）は、本実施の形態１における実行間隔監視方法に対応するタイムチャートであり、図５（ｂ）は、従来の実行間隔監視方法に対応するタイムチャートである。そして、これら図５（ａ）および図５（ｂ）では、サイクル値０〜４の間は、グローバルタイムの補正を行う必要がなく、１通信サイクル長は一定であるが、サイクル値５から、グローバルタイムの補正が必要となり、１チックの長さが短くなり、サイクル値０〜４のときよりも、１通信サイクルの長さが短くなっている場合を仮定している。
【００５４】
演算処理手段１０７は、ネットワークシステム１０１全体の動作と同期するため、特定のグローバルタイム、すなわち、特定のサイクル値の特定のチック値のときに、定められたアプリケーションＸを実行する。例えば、アプリケーション１は、サイクル値が奇数かつチック値が１２５０のときに実行される。以降、アプリケーション１について説明するが、アプリケーション２〜４でも処理は、同様である。
【００５５】
実行間隔監視手段１０８は、演算処理手段１０７がアプリケーション１を実行する直前に起動し、ステップＳ４０１において、グローバルタイム算出手段１０６から現在のグローバルタイム｛サイクル値、チック値｝＝｛ｃ、ｔ｝を取得し、記憶する。ここでは、｛ｃ、ｔ｝＝｛３、１２５０｝での処理について説明する。
【００５６】
次に、ステップＳ４０２において、実行間隔監視手段１０８は、前回アプリケーション１を実行する前に記憶したグローバルタイム｛ｃ１’、ｔ１’｝＝｛１、１２５０｝を取得する。そして、ステップＳ４０３において、実行間隔監視手段１０８は、実行間隔Ｉｎｔ１を算出する。ここで、１通信サイクルあたりの５０００チックは、固定であるため、実行間隔Ｉｎｔ１＝｛ｃ、ｔ｝−｛ｃ１’、ｔ１’｝＝１００００チックとなる。
【００５７】
続いて、ステップＳ４０４において、実行間隔監視手段１０８は、図２のテーブルを参照し、アプリケーション１の閾値ｔｈ１＝９９００を取得する。そして、ステップＳ４０５において、実行間隔監視手段１０８は、
（閾値ｔｈ１＝９９００チック）＜（算出した実行間隔Ｉｎｔ１＝１００００チック）
であることから、実行間隔は正常であると判断し、エラー処理は行わず、ステップＳ４０６に進む。そして、ステップＳ４０６において、実行間隔監視手段１０８は、前回グローバルタイムとして｛ｃ１’、ｔ１’｝＝｛ｃ、ｔ｝＝｛３、１２５０｝を上書きして、一連処理を終了する。
【００５８】
１チックの長さが短く補正されているサイクル値５以降であっても、図５（ａ）から明らかなように、実行間隔Ｉｎｔ１は、グローバルタイムで常に１００００チックとなり、｛ｃ、ｔ｝＝｛３、１２５０｝のときと、処理は同じである。
【００５９】
このように、本実施の形態１における実行間隔監視手段１０８は、グローバルタイムを用いて実行間隔を監視するため、グローバルタイムが補正されても、エラーと判定することがない。これにより、演算処理手段１０７は、正常に処理を継続することができる。
【００６０】
続いて、比較対象として図５（ｂ）に示した従来手法での処理の流れを、タイムチャートに沿って説明する。従来手法では、ＦｌｅｘＲａｙのグローバルタイムに同期して起動するアプリケーションＸの実行間隔監視に、ＥＣＵ内のシステムカウンタなど、ローカルカウンタの値を用いている。比較を容易にするため、図５（ｂ）のサイクル値０〜４では、ローカルカウンタの１カウントと、グローバルタイムの１チックとは同じ時間幅であるとする。したがって、参照する閾値を記載したテーブルも図２と同じとする。
【００６１】
従来手法において、｛ｃ、ｔ｝＝｛３、１２５０｝のときのアプリケーション１の実行間隔監視では、次のローカルカウンタの値、
・今回取得したローカルカウンタ値      ：    １６２５０
・前回取得したローカルカウンタ値      ：    ６２５０
から、実行間隔Ｉｎｔ１＝１００００カウントと算出される。
【００６２】
そして図２のテーブルを参照し、
（閾値ｔｈ１＝９９００チック）＜（算出した実行間隔Ｉｎｔ１＝１００００チック）
であることから、実行間隔がエラーと判定されることなく、正常に一連処理を継続する。
【００６３】
一方、グローバルタイムが補正され、１チックの長さが短くなったサイクル値５以降、例えば、｛ｃ、ｔ｝＝｛５、１２５０｝のときには、次のローカルカウンタの値、
・今回取得したローカルカウンタ値      ：    ２５９３７
・前回取得したローカルカウンタ値      ：    １６２５０
から、実行間隔Ｉｎｔ１＝９６８７カウントと算出される。
【００６４】
そして、図２のテーブルの参照の結果、
（閾値ｔｈ１＝９９００チック）＞（算出した実行間隔Ｉｎｔ１＝９６８７カウント）
であることから、閾値よりも実行間隔が短いために、エラーと誤判定されて、演算処理が停止してしまうこととなる。
【００６５】
このように、従来手法では、他のＥＣＵのアプリケーションと協調して制御を行うためにグローバルタイムと同期してアプリケーションを実行しているにも関わらず、ローカルカウンタの値を用いて実行間隔監視を行っている。このため、グローバルタイムが補正され、１チックの長さが短くなった場合の実行間隔監視によって、エラーと誤判定されてしまう場合が生じる。そして、この場合には、誤った判定に基づいて演算処理の動作が停止し、制御を継続することができなくなってしまう。
【００６６】
これに対して、本実施の形態１における実行間隔監視手段では、図５（ａ）で説明したように、グローバルタイムと同期してアプリケーションを実行しながら、グローバルタイムの値を用いて実行間隔監視を行っているため、実行間隔監視を適切に行うことができる。
【００６７】
次に、本実施の形態１において、ノイズなどに起因する電圧変化によって、アプリケーション１が本来とは違う起動タイミングで起動した場合の実行間隔監視手段１０８の処理の流れを、図４のフローチャートと、図６のタイムチャートを用いて説明する。図６は、本発明の実施の形態１でアプリケーションの実行間隔異常が発生した場合におけるグローバルタイムと、演算処理手段、実行間隔監視手段の起動タイミングの関係と、実行間隔監視状況とを示すタイムチャートである。
【００６８】
図６に示すように、本来、奇数サイクルでのみ実行されるはずのアプリケーション１が、ノイズの発生によって、｛ｃ、ｔ｝＝｛８、１２５０｝において、誤って実行を要求されたとする。
【００６９】
このとき、実行間隔監視手段１０８が起動すると、実行間隔監視手段１０８は、図４のステップＳ４０１において、現在のグローバルタイム｛ｃ、ｔ｝＝｛８、１２５０｝を取得し、記憶する。次に、ステップＳ４０２において、実行間隔監視手段１０８は、前回アプリケーション１を実行する前に記憶したグローバルタイム｛ｃ１’、ｔ１’｝＝｛７、１２５０｝を取得する。
【００７０】
そして、ステップＳ４０３において、実行間隔監視手段１０８は、実行間隔Ｉｎｔ１を算出する。このとき、１通信サイクル＝５０００チックは固定であるため、実行間隔Ｉｎｔ１＝｛ｃ１’、ｔ１’｝−｛ｃ、ｔ｝＝５０００チックとなる。
【００７１】
続いて、ステップＳ４０４において、実行間隔監視手段１０８は、アプリケーション１の閾値ｔｈ１＝９９００を取得する。さらに、ステップＳ４０５において、実行間隔監視手段１０８は、
（閾値ｔｈ１＝９９００チック）＞（算出した実行間隔Ｉｎｔ１＝５０００チック）
であることから、閾値ｔｈ１よりも実行間隔Ｉｎｔ１が短いため、エラーと判断する。さらに、実行間隔監視手段１０８は、エラー発生時のグローバルタイム｛ｃ、ｔ｝＝｛８、１２５０｝をエラー発生時グローバルタイムとして記憶するとともに、演算処理手段１０７による、アプリケーション１の実行を禁止する。
【００７２】
このように、本実施の形態１における実行間隔監視手段１０８では、エラーと誤判定することがない一方で、異常発生時には、エラーとして高精度に検出することができる。また、実行間隔監視手段１０８は、エラー発生時の時間を、そのエラー発生時に取得したグローバルタイムとして記憶している。
【００７３】
従って、このエラー発生時のグローバルタイムを、例えば、演算処理手段１０７がエラー通知メッセージとしてネットワークシステム１０１の他のＥＣＵ１０２あるいは１０３に送信し、エラーが発生したＥＣＵ１０２あるいは１０３がエラー発生以降に送信したメッセージを、受信したＥＣＵ１０２あるいは１０３が破棄するように指示することなどができる。
【００７４】
以上のように、実施の形態１によれば、グローバルタイムを用いて実行間隔を監視するため、グローバルタイムが補正され、１チックの長さが変動した場合にも、高精度な監視を行うことができる。さらに、ネットワークシステムで共通のグローバルタイムを用いてエラー発生時の時間を記憶することで、例えば、エラー通知メッセージ、あるいはエラーに伴う指示を通知して、実行間隔エラーが発生していない他の電子制御装置が、エラー発生時点を正確に認識し、適切に対応することができる、あるいは記憶したエラー発生時の時間から、ディーラーなどで、エラー発生原因の解析に使用することができる。
【００７５】
さらに、グローバルタイムを用いて実行間隔を監視するため、従来手法のように実行間隔の監視にローカルカウンタを必要とせず、ローカルカウンタの設定、開始、終了と言った処理に掛かる時間や、メモリの消費量を抑えることができる。
【００７６】
なお、本実施の形態１では、演算処理手段１０７の直前に実行間隔監視手段１０８が起動し、実行間隔を監視するようにしたが、本発明はこれに限定されるものではない。例えば、実行間隔監視手段１０８は、演算処理手段１０７とは独立してグローバルタイムに従って起動し、前回起動以降に演算処理手段１０７がアプリケーションを実行した回数を計測して、計測した回数があらかじめ定めた実行回数の閾値を超えた場合に、実行間隔が短いとしてエラーと判定するものであってもよい。
【００７７】
また、本実施の形態１では、全てのＥＣＵ１０２、１０３が演算処理手段１０７と実行間隔監視手段１０８を備えているが、演算処理手段１０７のみ備えている、あるいは実行間隔監視手段１０８のみ備えているものであってもよい。
【００７８】
実施の形態２．
本実施の形態２では、電子制御装置の具体例として、車載電子制御装置（以下、ＥＣＵ）の構成について、図面に基づいて説明する。図７は、本発明の実施の形態２に係るＥＣＵ７０１の構成図である。図７中、図１と同一、相当部分には同一符号を付し、説明を省略する。
【００７９】
本実施の形態２に係るＥＣＵ７０１は、先の図１の構成に加えて、同期フラグ７０４、ローカルカウンタ７０５、切替手段７０６をさらに備えている。また、グローバルタイム算出手段７０２および実行間隔監視手段７０３は、それぞれ先の図１におけるグローバルタイム算出手段１０６および実行間隔監視手段１０８に対応するものである。
【００８０】
グローバルタイム算出手段７０２は、サイクル値とチック値で表されるＦｌｅｘＲａｙのグローバルタイムを管理し、通信制御手段１０５、演算処理手段１０７、実行間隔監視手段７０３、切替手段７０６に対して、グローバルタイムを提供する。グローバルタイム算出手段７０２が最初にグローバルタイムの管理に使用する１チックの長さは、初期値Ｔ０である。
【００８１】
さらに、グローバルタイム算出手段７０２は、ＥＣＵ７０１がＦｌｅｘＲａｙによる通信に同期し、グローバルタイムが更新される同期中は、同期フラグ７０４を１にセットする。ＥＣＵ７０１が通信に非同期で、グローバルタイムが最後に更新されたときの値を示す場合には、グローバルタイム算出手段７０２は、同期フラグ７０４を０にセットする。すなわち、同期フラグ７０４は、グローバルタイム算出手段７０２によって書き込まれるメモリであり、現在のＥＣＵ７０１の同期状態（１＝同期、０＝非同期）を示す。
【００８２】
ローカルカウンタ７０５は、ＥＣＵ７０１に実装された水晶振動子（図７には図示せず）に基づいてインクリメントされるカウンタである。したがって、グローバルタイムとは独立して動作し、１カウントの長さＬ０は固定となる。ローカルカウンタ７０５は、実行間隔監視手段７０３および切替手段７０６に対して、現在のローカルカウンタ７０５の値を提供する。
【００８３】
実行間隔監視手段７０３は、同期フラグ７０４を参照し、ＥＣＵ７０１がＦｌｅｘＲａｙによる通信に同期し、グローバルタイム算出手段７０２がグローバルタイムを提供している間は、先の実施の形態１と同じ処理を行う。一方、同期する前や、同期から外れた場合には、実行間隔監視手段７０３は、ローカルカウンタ７０５の値を取得し、前回実行したときに取得したローカルカウンタ７０５の値との差分を用いて実行間隔の監視を行う。
【００８４】
図８は、本発明の実施の形態２における実行間隔監視手段１０８が保持する、アプリケーション毎にあらかじめ定められた実行間隔の閾値のテーブルである。このテーブルでは、各アプリケーションの実行間隔の閾値として、グローバルタイムで計測する場合の閾値ｔｈＸ（Ｘ＝１〜４）と、ローカルカウンタで計測する場合の閾値ＬｔｈＸの２種類を有している。
【００８５】
切替手段７０６は、非同期状態から同期状態へ変化したときや、同期状態から非同期状態へ変化したときに実行され、同期フラグ７０４の状態に応じて、実行間隔監視手段７０３が記憶している前回実行時のグローバルタイムやローカルカウンタ７０５の値を上書きする。なお、本実施の形態２の前提条件として、先の実施の形態１と同様、ＦｌｅｘＲａｙの１通信サイクルは、５０００チックとする。
【００８６】
次に、切替手段７０６の動作について、フローチャートを用いて説明する。図９は、本発明の実施の形態２における切替手段７０６の一連処理を示すフローチャートである。切替手段７０６は、非同期から同期、同期から非同期などの状態変化時に実行が開始される。
【００８７】
ステップＳ９０１において、切替手段７０６は、同期フラグ７０４の状態から、ＥＣＵ７０１がＦｌｅｘＲａｙによる通信に同期中か否か確認する。同期中の場合には、ステップＳ９０２へ移る。一方、同期中でない、すなわち、非同期の場合には、ステップＳ９０３へ移る。
【００８８】
そして、ステップＳ９０２において、切替手段７０６は、実行間隔監視手段７０３が記憶する、前回アプリケーションＸ（Ｘ＝１〜４）を実行する前に取得したグローバルタイムのサイクル値ｃＸ’をｃＸ’＝６５で上書きし、処理を終了する。ここで、サイクル値は、同期中は０〜６３の値を取り、６５は取りえない。したがって、ｃＸ’＝６５とすることで、前回実行時のグローバルタイムが使用できないことを判断することができる。なお、本実施の形態２では６５としたが、０〜６３以外の値でああればよく、また、前回実行時のグローバルタイムが使用できないことを示すフラグを設定してもよい。
【００８９】
一方、ステップＳ９０１において、非同期中であると判断された場合には、切替手段７０６は、処理をステップＳ９０３に移す。そして、切替手段７０６は、ステップＳ９０３において、現在のローカルカウンタ７０５の値ｌを取得する。次に、ステップＳ９０４において、切替手段７０６は、現在のグローバルタイム｛サイクル値、チック値｝＝｛ｃ、ｔ｝を取得する。ただし、このとき、非同期に切り替わった直後であるため、取得するグローバルタイムは、最後にグローバルタイム算出手段７０２が更新した値となる。
【００９０】
続いて、ステップＳ９０５において、切替手段７０６は、実行間隔監視手段７０３が前回アプリケーションＸを実行する前に取得し、記憶したグローバルタイム｛ｃＸ’、ｔＸ’｝を取得する。そして、ステップＳ９０６において、切替手段７０６は、ステップＳ９０４で取得したグローバルタイム｛ｃ、ｔ｝と、ステップＳ９０５で取得した前回のグローバルタイム｛ｃＸ’、ｔＸ’｝との差を算出し、前回のグローバルタイムから現在までの経過グローバルタイムを算出する。
【００９１】
次に、ステップＳ９０７において、切替手段７０６は、ステップＳ９０６の経過グローバルタイム（｛ｃ、ｔ｝−｛ｃＸ’、ｔＸ’｝）を、ローカルカウンタ７０５のカウント単位へ変換するため、チックからカウントへの変換係数ＴＬを乗算し、経過カウント数ＴＬ（｛ｃ、ｔ｝−｛ｃＸ’、ｔＸ’｝）とする。このチックからカウントへの変換係数ＴＬは、１チックの長さの初期値Ｔ０と、ローカルカウンタ７０５の１カウントの長さＬ０を用いて以下のように算出される。
ＴＬ＝Ｔ０／Ｌ０
【００９２】
さらに、ステップＳ９０８において、切替手段７０６は、ステップＳ９０３で取得した現在のローカルカウンタ７０５の値ｌから、ステップＳ９０７で算出した経過カウント数ＴＬ（｛ｃ、ｔ｝−｛ｃＸ’、ｔＸ’｝）を差し引く。これにより、前回アプリケーションＸを実行する直前のローカルカウンタの値ｌ’が算出される。
【００９３】
次に、ステップＳ９０９において、切替手段７０６は、実行間隔監視手段７０３が前回アプリケーションＸを実行する前に記憶したローカルカウンタの値をステップＳ９０８の値ｌ’で上書きし、一連処理を終了する。
【００９４】
次に、実行間隔監視手段７０３の動作について、フローチャートを用いて説明する。図１０は、本発明の実施の形態２における実行間隔監視手段７０３の一連処理を示すフローチャートである。図１０中、先の図４と同一、相当部分には同一符号を付し、説明を省略する。
【００９５】
アプリケーションＸの実行前に実行間隔監視手段７０３が起動すると、実行間隔監視手段７０３は、ステップＳ１００１において、同期フラグ７０４の状態から、ＥＣＵ７０１がＦｌｅｘＲａｙによる通信に同期中か否か確認する。同期中の場合には、ステップＳ４０１へ移る。一方、同期中でない、すなわち、非同期の場合には、ステップＳ１００３へ移る。
【００９６】
ステップＳ４０１において、実行間隔監視手段７０３は、グローバルタイム算出手段７０２から、現在のグローバルタイムを示す｛サイクル値、チック値｝＝｛ｃ、ｔ｝を取得する。次に、ステップＳ４０２において、実行間隔監視手段７０３は、前回アプリケーションＸを実行する前に取得し、記憶したグローバルタイム｛ｃＸ’、ｔＸ’｝を取得する。
【００９７】
そして、ステップＳ１００２において、実行間隔監視手段７０３は、ステップＳ４０２で取得したサイクル値ｃＸ’が６５であるか否か確認する。そして、実行間隔監視手段７０３は、サイクル値ｃＸ’が６５でない場合には、ステップＳ４０３に進む。一方、実行間隔監視手段７０３は、サイクル値ｃＸ’が６５である場合には、前回実行時は非同期状態であったため、グローバルタイムは取得できていないとして、実行間隔監視はせずに、ステップＳ４０６へ進む。
【００９８】
ステップＳ４０３からステップＳ４０７における実行間隔監視については、すでに説明済みであり、説明を省略する。
【００９９】
先のステップＳ１００１において、非同期であった場合、ステップＳ１００３に進み、このステップＳ１００３において、実行間隔監視手段７０３は、ローカルカウンタ７０５から、現在のローカルカウンタ値ｌを取得する。
【０１００】
さらに、ステップＳ１００４において、実行間隔監視手段７０３は、前回アプリケーションＸを実行する前に取得、あるいは切替手段７０６によって上書きされた、ローカルカウンタ値ｌＸ’を取得する。
【０１０１】
次に、ステップＳ１００５において、実行間隔監視手段７０３は、ステップＳ１００３で取得した現在のローカルカウンタ値ｌと、ステップＳ１００４で取得した前回のローカルカウンタ値ｌＸ’との差を算出し、実行間隔ＩｎｔＸを求める。
【０１０２】
次に、ステップＳ１００６において、実行間隔監視手段７０３は、先の図８に示すテーブルを参照し、アプリケーションＸ用に設定された閾値ＬｔｈＸを取得する。次に、ステップＳ１００７において、実行間隔監視手段７０３は、ステップＳ１００５で算出した実行間隔ＩｎｔＸと、ステップＳ１００６で取得した閾値ＬｔｈＸとを比較する。そして、実行間隔監視手段７０３は、実行間隔ＩｎｔＸが閾値ＬｔｈＸよりも大きい場合には、実行間隔に問題がないと判断して、ステップＳ１００８へ進む。
【０１０３】
そして、ステップＳ１００８に進んだ場合には、実行間隔監視手段７０３は、前回のローカルカウンタ値ｌＸ’を現在のローカルカウンタ値ｌによって上書きし、一連処理を終了する。この結果、演算処理手段１０７からアプリケーションＸが実行可能になる。
【０１０４】
一方、ステップＳ１００７において、実行間隔監視手段７０３は、実行間隔ＩｎｔＸが閾値ＬｔｈＸ以下の場合には、ステップＳ４０７に進み、実行間隔エラーと判定し、エラー処理を行うために、演算処理手段１０７によるアプリケーションＸの実行を禁止する。そして、一連処理を終了する。
【０１０５】
次に、具体的な数値例に基づくタイムチャートを用いて、これら図９、図１０のフローチャートに基づく、切替手段７０６および実行間隔監視手段７０３による一連処理を詳細に説明する。図１１は、本発明の実施の形態２におけるグローバルタイムおよびローカルカウンタ値と、演算処理手段、実行間隔監視手段の起動タイミングの関係と、実行間隔監視状況とを示すタイムチャートである。
【０１０６】
なお、この図１１において、横軸は、時間を示している。また、ここでは、アプリケーション１のみ説明する。このアプリケーション１は、同期状態、非同期状態であっても、車両状態の取得など、周期的に実行する必要のある機能を実装したアプリケーションであるとする。
【０１０７】
はじめに、非同期状態から同期状態になったときの処理について説明する。図１１中の（ａ）において、非同期状態から同期状態になると、切替手段７０６が起動する。そして、図９のフローチャートのステップＳ９０１において、同期中であることから、ステップＳ９０２へ移る。そして、ステップＳ９０２において、切替手段７０６は、前回のグローバルタイムのサイクル値ｃ１’をｃ１’＝６５で上書きし、処理を終了する。
【０１０８】
続いて、図１１中の（ｂ）において、グローバルタイムが｛ｃ、ｔ｝＝｛０、２５００｝となり、同期状態になってから初めてアプリケーション１の実行タイミングとなったとする。このタイミングは、グローバルタイムを用いてあらかじめ定められているものとする。
【０１０９】
アプリケーション１の実行前に実行間隔監視手段７０３が起動し、図１０のフローチャートのステップＳ１００１において、同期フラグ７０４が１であり、同期中であることから、ステップＳ４０１へ移る。
【０１１０】
ステップＳ４０１において、実行間隔監視手段７０３は、現在のグローバルタイム｛ｃ、ｔ｝＝｛０、２５００｝を取得する。さらに、ステップＳ４０２において、実行間隔監視手段７０３は、前回のグローバルタイム｛ｃ１’、ｔ１’｝＝｛６５、０｝を取得する。
【０１１１】
そして、ステップＳ１００２において、実行間隔監視手段７０３は、前回のグローバルタイムがｃ１’＝６５であることから、前回実行時は、非同期状態であるため、実行間隔監視は行わず、ステップＳ４０６において、前回のグローバルタイムを現在のグローバルタイムで上書き｛ｃ１’、ｔ１’｝＝｛０、２５００｝し、処理を終了する。
【０１１２】
このように、本実施の形態２において、非同期状態から同期状態へ遷移した場合には、実行間隔監視手段７０３は、同期状態になってからアプリケーションＸに対する最初の実行間隔の監視を行わないようにする。これにより、グローバルタイムに同期してアプリケーションＸが実行され、遷移のタイミングで必然的に実行間隔が短くなった場合も、誤って実行間隔エラーと検出することがない。したがって、演算処理手段１０７は、正常に処理を継続することができる。
【０１１３】
また、実行間隔監視手段７０３は、同期状態になってからアプリケーションＸに対する２回目以降の実行間隔の監視処理では、先の実施の形態１で示したのと同じように、グローバルタイムに従って実行間隔を監視することができる。
【０１１４】
次に、同期状態から非同期状態になったときの処理について説明する。ここで、前提条件として、グローバルタイムの１チック幅の初期値と、ローカルカウンタ７０５の１カウント幅は、８対５とし、チックからカウントへの変換係数ＴＬ＝Ｔ０／Ｌ０＝８／５とする。
【０１１５】
図１１中の（ｃ）において、同期状態から非同期状態になると、切替手段７０６が起動する。そして、図９のフローチャートのステップＳ９０１において、切替手段７０６は、非同期であることから、ステップＳ９０３に進む。そして、続くステップＳ９０３〜Ｓ９０８で、切替手段７０６は、以下の値を取得する。
【０１１６】
ステップＳ９０３：現在のローカルカウンタ値ｌ＝４６０００
ステップＳ９０４：最新のグローバルタイム｛ｃ、ｔ｝＝｛５１、３７５０｝
ステップＳ９０５：前回のグローバルタイム｛ｃ１’、ｔ１’｝＝｛５１、２５００｝
ステップＳ９０６：経過グローバルタイム｛ｃ、ｔ｝−｛ｃ１’、ｔ１’｝＝１２５０チック
ステップＳ９０７：経過カウント数８／５×１２５０チック＝２０００カウント
ステップＳ９０８：前回のローカルカウンタ値ｌ１’＝ｌ−２０００＝４４０００カウント
【０１１７】
したがって、ステップＳ９０９において、実行間隔監視手段７０３が記憶する前回のローカルカウンタ値ｌ’を４４０００で上書きし、切替手段７０６は、一連処理を終了する。
【０１１８】
続いて、図１１中の（ｄ）において、ローカルカウンタ値が５２０００となり、非同期状態になってから初めてアプリケーション１の実行タイミングとなったとする。この非同期状態におけるアプリケーション１の実行タイミングは、あらかじめ定められているものとする。アプリケーション１の実行前に実行間隔監視手段７０３が起動し、図１０のフローチャートのステップＳ１００１において、非同期であることから、ステップＳ１００３へ移る。そして、続くステップＳ１００３〜Ｓ１００６で、実行間隔監視手段７０３は、以下の値を取得する。
【０１１９】
ステップＳ１００３：現在のローカルカウンタ値ｌ＝５２０００
ステップＳ１００４：前回のローカルカウンタ値ｌ１’＝４４０００
ステップＳ１００５：実行間隔Ｉｎｔ１＝ｌ−ｌ１’＝８０００
ステップＳ１００６：図８の閾値Ｌｔｈ１＝７９２０
【０１２０】
したがって、ステップＳ１００７において、実行間隔監視手段７０３は、実行間隔と閾値を比較し、
閾値Ｌｔｈ１＝７９２０  ＜  実行間隔Ｉｎｔ１＝８０００
となるため、実行間隔が閾値よりも大きいことから、エラー処理を行う必要がないとわかり、ステップＳ１００８において、前回のローカルカウンタ値ｌ１’を現在のローカルカウンタ値ｌで上書きし（ｌ１’＝４４０００）、一連処理を終了する。
【０１２１】
このように、本実施の形態２において、同期状態から非同期状態へ遷移した場合には、実行間隔監視手段７０３は、遷移時のグローバルタイムとローカルカウンタ値などを用いて、前回実行時のローカルカウンタ値を算出する。これにより、実行間隔監視手段７０３は、非同期状態になってからアプリケーションＸに対する最初の実行間隔の監視処理においても、同期状態での最後の実行間隔監視手段７０３の実行時点からの実行間隔を算出し、実行間隔を監視することができる。
【０１２２】
また、実行間隔監視手段７０３は、非同期状態になってからアプリケーションＸに対する２回目以降の実行間隔の監視処理では、ローカルカウンタ７０５に従って実行間隔を監視することができる。
【０１２３】
本実施の形態２の実行間隔監視手段７０３においては、ＦｌｅｘＲａｙの通信に同期すると、全てのアプリケーションの実行間隔監視は、グローバルタイムを用いて実行している。これは、先の実施の形態１で説明したように、グローバルタイムを用いて実行間隔を監視することにより、グローバルタイムが補正されても、実行間隔がエラーであると誤検出されることを避けることを目的としている。アプリケーションの起動周期が長いほど、グローバルタイムの補正回数が増えるため、このようなグローバルタイムを用いた実行間隔の監視が必要になる。
【０１２４】
逆に、アプリケーションの起動周期が短い場合には、グローバルタイム補正による実行間隔の変動幅は小さくなり、ローカルカウンタ７０５を用いた実行間隔監視を行っても、誤ってエラーと検出される可能性は小さくなる。従って、起動周期が短いアプリケーションに対しては、実行間隔監視は、常にローカルカウンタ７０５を用いるようにしてもよい。
【０１２５】
このように、図７のような構成を備えた本実施の形態２では、グローバルタイムを用いて監視を行うアプリケーションと、ローカルカウンタ７０５を用いて監視を行うアプリケーションを並行して使用することができる。これにより、例えば、一方で重大な障害が発生して切替手段７０６を起動できなくなったとしても、ローカルカウンタ７０５を用いたアプリケーションは、実行を継続できるため、エラー処理を実行することが可能である。
【０１２６】
また、常にローカルカウンタ７０５を用いて監視を行うアプリケーションに関しては、グローバルタイムからローカルカウンタ７０５、ローカルカウンタ７０５からグローバルタイムへの切替えを行う必要がなく、処理負荷を低減することができる。
【０１２７】
以上のように、実施の形態２によれば、ＦｌｅｘＲａｙによる通信に対する同期状態／非同期状態に応じて、同期状態においては、グローバルタイムを用いて実行間隔を監視し、非同期状態においては、ローカルカウンタを用いて実行間隔を監視するように切り替えることが可能な構成を有している。このような構成により、同期状態／非同期状態に応じて実行間隔の適切な監視を実行できる。
【０１２８】
さらに、非同期状態から同期状態、あるいは同期状態から非同期状態に遷移した場合にも、実行間隔エラーを誤検出することを防止することが可能となる。具体的には、非同期状態から同期状態に遷移した場合には、最初の実行間隔の監視を行わないようにすることで、遷移のタイミングで必然的に実行間隔が短くなった場合の誤検出を防止できる。
【０１２９】
一方、同期状態から非同期状態に遷移した場合には、グローバルタイムからローカルカウント値への変換処理を行うことで、同期状態での最後の実行時点から、非同期状態になった最初の実行時点までの間隔を求めることができ、遷移の直後から誤検出を防止した正確な監視処理を実行できる。
【０１３０】
さらに、グローバルタイムを用いて監視を行うアプリケーションと、ローカルカウンタを用いて監視を行うアプリケーションを並行して使用することができる。この結果、グローバルタイムやローカルカウンタのいずれかが障害により動作しなくなり、実行間隔監視を正常に行えなくなっても、正常なもう一方を用いた実行間隔監視対象のアプリケーションは実行を継続することができ、電子制御装置の信頼性を高めることができる。また、起動周期が短いアプリケーションに対しては、誤ってエラーを検出する可能性が小さいため、常時、ローカルカウンタを用いて実行間隔の監視を行うことができ、処理負荷を軽減することができる。
【０１３１】
なお、本実施の形態２では、グローバルタイムからローカルカウント値への変換に用いる変換係数に、グローバルタイムの１チック幅の初期値を用いたが、本発明はこれに限定されるものではない。例えば、同期状態での最後の補正後の１チック幅をグローバルタイム算出手段７０２から取得し、これを変換係数に用いるものであってもよい。
【０１３２】
また、本実施の形態２では、切替手段７０６は、非同期から同期、同期から非同期への両遷移時に起動したが、非同期から同期に遷移したときと、同期から非同期へ遷移したときで、図９に示す処理を分離したものであってもよい。
【０１３３】
実施の形態３．
本実施の形態３では、先の実施の形態２と同様に、電子制御装置の具体例として、車載電子制御装置（以下、ＥＣＵ）の構成について、図面に基づいて説明する。図１２は、本発明の実施の形態３に係るＥＣＵ１２０１の構成図である。図１２中、先の実施の形態２における図７と同一、相当部分には同一符号を付し、説明を省略する。
【０１３４】
本実施の形態３に係るＥＣＵ１２０１は、先の図７の構成に加えて、通信エラーカウンタ１２０５と通信エラーフラグ１２０６をさらに備えている。また、グローバルタイム算出手段１２０２、切替手段１２０３、および実行間隔監視手段１２０４は、それぞれ先の図７におけるグローバルタイム算出手段７０２、切替手段７０６、および実行間隔監視手段７０３に対応するものである。
【０１３５】
本実施の形態３で用いる通信エラーとは、グローバルタイム算出手段１２０２がグローバルタイムの算出に必要なスタートアップフレームや同期フレームを受信できなかった場合を指す。ＦｌｅｘＲａｙでは、このような通信エラーでも直ちに通信を停止させるのではなく、通信エラー発生回数が設定値に達するまで、通信を継続することが可能である。
【０１３６】
通信エラーが発生する原因としては、スタートアップフレームや同期フレームを送信するＥＣＵの故障、他のＥＣＵの故障による通信線１０４上への異常なメッセージの送信、もしくは自ＥＣＵの通信制御手段１０５等の通信コントローラの故障などが考えられる。
【０１３７】
そして、本実施の形態３におけるグローバルタイム算出手段１２０２は、先の実施の形態２で説明した処理に加えて、グローバルタイム算出時の通信エラーを検出すると、通信エラーカウンタ１２０５の値をインクリメントする。そして、グローバルタイム算出手段１２０２は、通信エラーカウンタ１２０５の値が通信エラー検出閾値Ｅｒｒｏｒ＿ｔｈ１以上になると、通信エラーフラグ１２０６を１にセットする。
【０１３８】
一方、グローバルタイムの算出に成功すると、グローバルタイム算出手段１２０２は、通信エラーカウンタ１２０５の値をデクリメントし、通信エラー未検出閾値Ｅｒｒｏｒ＿ｔｈ２未満になり、かつ通信エラーフラグ１２０６が１の場合には０にクリアする。さらに、グローバルタイム算出手段１２０２は、通信エラーフラグ１２０６が０から１、あるいは１から０に変化したときに、切替手段１２０３の実行をトリガする。
【０１３９】
通信エラーカウンタ１２０５は、前述の通り、グローバルタイム算出手段１２０２がグローバルタイム算出時に通信エラーを検出するとインクリメントされ、グローバルタイム算出手段１２０２が正常にグローバルタイムを算出できるとデクリメントされるカウンタである。
【０１４０】
通信エラーフラグ１２０６は、グローバルタイム算出手段１２０２によって書き込まれるメモリであり、通信エラーカウンタ１２０５が示す通信エラー発生回数が通信エラー検出閾値Ｅｒｒｏｒ＿ｔｈ１以上になると１にセットされ、通信エラー未検出閾値Ｅｒｒｏｒ＿ｔｈ２未満になると０にクリアされる。また、通信エラーフラグ１２０６は、実行間隔監視手段１２０４や切替手段１２０３によって参照される。
【０１４１】
切替手段１２０３は、先の実施の形態２で説明した起動タイミングに加えて、通信エラーフラグ１２０６の値が変化したときにも、グローバルタイム算出手段１２０２によって起動される。
【０１４２】
実行間隔監視手段１２０４は、先の実施の形態２で説明した処理に加えて、通信エラーフラグ１２０６を参照して実行間隔監視を行う。通信間隔ＩｎｔＸの閾値を取得する際に参照するテーブルは、先の実施の形態２で用いた図８と同じとする。
【０１４３】
次に、切替手段１２０３の動作について、フローチャートを用いて説明する。図１３は、本発明の実施の形態３における切替手段１２０３の一連処理を示すフローチャートである。図１３中、先の図９と同一、相当部分には同一符号を付し、説明を省略する。切替手段１２０３は、非同期から同期、同期から非同期へ状態が変化したとき、あるいは通信エラーフラグ１２０６の値が変化したときに、グローバルタイム算出手段１２０２によって実行が開始される。
【０１４４】
ステップＳ１３０１において、同期中に切替手段１２０３が起動した場合には、切替手段１２０３は、通信エラーフラグ１２０６がセットされているか否か確認する。通信エラーフラグ１２０６が０の場合には、切替手段１２０３は、グローバルタイムを用いた実行間隔監視を行うため、ステップＳ９０２に進む。一方、通信エラーフラグ１２０６が１の場合には、切替手段１２０３は、同期中であってもローカルカウンタ７０５を用いた実行間隔監視を行うため、ステップＳ９０３に進む。
【０１４５】
次に、実行間隔監視手段１２０４の動作について、フローチャートを用いて説明する。図１４は、本発明の実施の形態３における実行間隔監視手段１２０４の一連処理を示すフローチャートである。図１４中、先の図１０と同一、相当部分には同一符号を付し、説明を省略する。実行間隔監視手段１２０４は、アプリケーションＸの実行前に起動する。
【０１４６】
ステップＳ１４０１において、実行間隔監視手段１２０４は、ＥＣＵ１２０１がＦｌｅｘＲａｙの通信に同期中、通信エラーフラグ１２０６の値を参照し、通信エラーフラグ１２０６がセットされているか否か確認する。通信エラーフラグが０の場合には、実行間隔監視手段１２０４は、グローバルタイムを用いた実行監視が可能であるため、ステップＳ４０１へ進む。一方、通信エラーフラグ１２０６が１の場合には、実行間隔監視手段１２０４は、ローカルカウンタ７０５を用いた実行監視を行うため、ステップＳ１００３へ進む。
【０１４７】
次に、具体的な数値例に基づくタイムチャートを用いて、これら図１３、図１４のフローチャートに基づく、切替手段１２０３および実行間隔監視手段１２０４による一連処理を詳細に説明する。図１５は、本発明の実施の形態３におけるグローバルタイムおよびローカルカウンタ値と、演算処理手段、実行間隔監視手段の起動タイミングの関係と、通信エラーカウンタおよび実行間隔監視状況とを示すタイムチャートである。
【０１４８】
なお、図１５において、横軸は、時間を示している。また、ここでは、簡単のため、通信エラー検出閾値Ｅｒｒｏｒ＿ｔｈ１と通信エラー未検出閾値Ｅｒｒｏｒ＿ｔｈ２は、同じ値に設定されているとし、図１５中では、通信エラー閾値Ｅｒｒｏｒ＿ｔｈとして表記する。
【０１４９】
はじめに、通信エラーカウンタ１２０５の値が通信エラー閾値Ｅｒｒｏｒ＿ｔｈに達したときの処理について説明する。図１５のタイムチャートでは、同期して通信開始後、通信エラーカウンタ１２０５の値が上がっていき、図１５中の（ａ）において、通信エラーカウンタ１２０５の値が、通信エラー閾値Ｅｒｒｏｒ＿ｔｈに達する。
【０１５０】
これにより、グローバルタイム算出手段１２０２は、通信エラーフラグ１２０６を１にセットするとともに、切替手段１２０３を実行する。切替手段１２０３は、図１３のフローチャートのステップＳ９０１において、同期中であることから、ステップＳ１３０１へ移る。そして、ステップＳ１３０１において、切替手段１２０３は、通信エラーフラグ１２０６が１にセットされていることから、ローカルカウンタ７０５を用いた実行間隔監視に変更するため、ステップＳ９０３へ移る。そして、続くステップＳ９０３〜Ｓ９０８で、切替手段１２０３は、以下の値を取得する。
【０１５１】
ステップＳ９０３：現在のローカルカウンタ値ｌ＝４００００
ステップＳ９０４：最新のグローバルタイム｛ｃ、ｔ｝＝｛５１、０｝
ステップＳ９０５：前回のグローバルタイム｛ｃ１’、ｔ１’｝＝｛５０、２５００｝
ステップＳ９０６：経過グローバルタイム｛ｃ、ｔ｝−｛ｃ１’、ｔ１’｝＝２５００チック
ステップＳ９０７：経過カウント数８／５×２５００チック＝４０００カウント
ステップＳ９０８：前回のローカルカウンタ値ｌ１’＝ｌ−４０００＝３６０００カウント
【０１５２】
したがって、ステップＳ９０９において、実行間隔監視手段１２０４が記憶する前回のローカルカウンタ値ｌ’を３６０００で上書きし、切替手段１２０３は、一連処理を終了する。
【０１５３】
続いて、図１５中の（ｂ）において、実行間隔監視にローカルカウンタ７０５を用いるようにしてから初めてアプリケーション１に関して実行間隔監視手段１２０４が実行されたとする。実行間隔監視にローカルカウンタ７０５を用いているが、同期は継続中であるため、アプリケーションの起動は、グローバルタイムに基づいて演算処理手段１０７によって行われる。よって、実行間隔監視手段１２０４も、このアプリケーション１の実行前に起動する。
【０１５４】
図１４のフローチャートのステップＳ１００１において、実行間隔監視手段１２０４は、同期中であることから、ステップＳ１４０１へ移る。そして、ステップＳ１４０１において、実行間隔監視手段１２０４は、通信エラーフラグ１２０６が１にセットされていることから、ステップＳ１００３へ移る。そして、続くステップＳ１００３〜Ｓ１００６で、以下の値を取得する。
【０１５５】
ステップＳ１００３：現在のローカルカウンタ値ｌ＝４４０００
ステップＳ１００４：前回のローカルカウンタ値ｌ１’＝３６０００
ステップＳ１００５：実行間隔Ｉｎｔ１＝ｌ−ｌ１’＝８０００
ステップＳ１００６：図８の閾値Ｌｔｈ１＝７９２０
【０１５６】
したがって、ステップＳ１００７において、実行間隔監視手段１２０４は、実行間隔と閾値を比較し、
閾値Ｌｔｈ１＝７９２０  ＜  実行間隔Ｉｎｔ１＝８０００
となるため、実行間隔が閾値よりも大きいことから、エラー処理を行う必要がないとわかり、ステップＳ１００８において、前回のローカルカウンタ値ｌ１’を現在のローカルカウンタ値ｌで上書きし（ｌ１’＝４４０００）、一連処理を終了する。
【０１５７】
このように、本実施の形態３では、通信エラー発生回数が閾値に達した場合、同期中であっても、実行間隔監視にグローバルタイムではなくローカルカウンタ７０５の値を用いるように切り替える。これによって、通信エラーが発生しておりグローバルタイムの信頼性が低い場合には、実行間隔監視にグローバルタイムを用いないようにすることで、実行間隔監視機能の信頼性を保持することができる。
【０１５８】
なお、図１５中、サイクル値５２〜５８の通信エラー発生回数が閾値に達した後の実行間隔監視手段１２０４の動作は、先の図１４のフローチャート、および先の実施の形態２と同様であるため、説明を省略する。
【０１５９】
次に、通信エラーカウンタ１２０５の値が通信エラー閾値Ｅｒｒｏｒ＿ｔｈより大きく、実行間隔監視にローカルカウンタ７０５を用いている状態から、通信エラー閾値Ｅｒｒｏｒ＿ｔｈの値を下回ったときの処理について説明する。
【０１６０】
図１５中の（ｃ）のサイクル値５８から５９へのタイミングにおいて、通信エラーカウンタ１２０５の値が、通信エラー閾値Ｅｒｒｏｒ＿ｔｈより小さくなる。これにより、グローバルタイム算出手段１２０２は、通信エラーフラグ１２０６を０にセットするとともに、切替手段１２０３を実行する。切替手段１２０３は、図１３のフローチャートのステップＳ９０１において、同期中であることから、ステップＳ１３０１へ移る。
【０１６１】
そして、ステップＳ１３０１において、切替手段１２０３は、通信エラーフラグ１２０６が０にクリアされていることから、グローバルタイムを用いるよう変更するため、ステップＳ９０２へ移る。さらに、ステップＳ９０２において、切替手段１２０３は、前回のグローバルタイムのサイクル値ｃ１’をｃ１’＝６５で上書きし、処理を終了する。
【０１６２】
続いて、図１５中の（ｄ）において、グローバルタイムが｛ｃ、ｔ｝＝｛５９、２５００｝となり、実行間隔監視にグローバルタイムを用いるようにしてから、初めてアプリケーション１の実行タイミングとなったとする。アプリケーション１の実行前に実行間隔監視手段１２０４が起動し、実行間隔監視手段１２０４は、図１４のフローチャートのステップＳ１００１において、同期中であることから、ステップＳ１４０１へ移る。
【０１６３】
そして、ステップＳ１４０１において、実行間隔監視手段１２０４は、通信エラーフラグ１２０６が０にセットされていることから、ステップＳ４０１へ移る。次に、ステップＳ４０１において、実行間隔監視手段１２０４は、現在のグローバルタイム｛ｃ、ｔ｝＝｛５９、２５００｝を取得する。次に、ステップＳ４０２において、実行間隔監視手段１２０４は、前回のグローバルタイム｛ｃ１’、ｔ１’｝＝｛６５、２５００｝を取得する。
【０１６４】
そして、ステップＳ１００２において、実行間隔監視手段１２０４は、前回のグローバルタイムｃ１’＝６５であることから、前回実行時のグローバルタイムは取得していないとわかり、実行間隔監視は行わず、前回のグローバルタイムを現在のグローバルタイムによって上書き｛ｃ１’、ｔ１’｝＝｛５９、２５００｝し、一連処理を終了する。
【０１６５】
このように、本実施の形態３では、通信エラー発生回数が閾値を下回った場合、実行間隔監視にローカルカウンタ７０５の値からグローバルタイムを再度用いるように切り替える。これにより、通信状態が改善され、信頼性が確保されたグローバルタイムを用いて、先の実施の形態１に示したように、グローバルタイムと同期してアプリケーションを実行しながら、実行間隔監視を適切に行うことができる。
【０１６６】
以上のように、実施の形態３によれば、通信エラー発生回数が閾値に達した場合には、通信が不安定である、あるいはＥＣＵの通信制御手段にエラーが発生しているなどして、グローバルタイムの信頼性が低いと判断し、実行間隔監視を、グローバルタイムより信頼性が高いローカルカウンタの値を用いて実行することにより、実行間隔監視機能の信頼性を高めることができる。
【０１６７】
さらに、通信状態が改善されるなどした場合には、通信エラー発生回数が閾値よりも低下するため、この場合には、ローカルカウンタを用いた実行間隔監視から、グローバルタイムを用いた実行間隔監視へ切り替えて、再びグローバルタイムの補正に対応した実行間隔監視を行うことができる。
【０１６８】
なお、本実施の形態３では、通信状態が改善され、ローカルカウンタ７０５の値からグローバルタイムを用いるように変更した後、最初の実行間隔監視は行わないように設定したが、本発明は、これに限定されるものではない。例えば、同期中において、実行間隔監視にグローバルタイムを用いない場合であっても、実行間隔監視手段１２０４において、前回実行時のグローバルタイムを記憶するなどして、グローバルタイムを再度使用するように変更した後の最初の実行間隔監視手段１２０４の実行時においても、監視を行うようにするものであってもよい。
【０１６９】
実施の形態４．
本実施の形態４では、先の実施の形態２、３と同様に、電子制御装置の一例として、車載電子制御装置（以下、ＥＣＵ）の構成について、図面に基づいて説明する。図１６は、本発明の実施の形態４に係るＥＣＵ１６０１の構成図である。図１６中、先の実施の形態２における図７と同一、相当部分には同一符号を付し、説明を省略する。
【０１７０】
本実施の形態４に係るＥＣＵ１６０１は、通信エラー予兆カウンタ１６０５と通信エラー予兆フラグ１６０６をさらに備えている。また、グローバルタイム算出手段１６０２、切替手段１６０３、および実行間隔監視手段１６０４は、それぞれ先の図７におけるグローバルタイム算出手段７０２、切替手段７０６、および実行間隔監視手段７０３に対応するものである。
【０１７１】
実施の形態１で述べたように、ＦｌｅｘＲａｙでは、毎通信サイクル、必要に応じてチック値を補正することにより、ネットワークシステムに同期する。この補正は、一定の補正幅内であれば、ＦｌｅｘＲａｙの仕様上、正常であると判断される。
【０１７２】
しかしながら、先の実施の形態３で述べたような通信エラーが発生する場合、通信エラーが発生する前の段階として、ＥＣＵ１６０１が管理するグローバルタイムと、ネットワークシステムの他のＥＣＵのグローバルタイムとのずれが徐々に大きくなり、ＥＣＵ１６０１のグローバルタイム補正時の補正幅が大きくなっていくことが考えられる。
【０１７３】
したがって、通信エラーが発生する前に、補正幅が大きくなっていることを検出（通信エラー予兆）することで、他のＥＣＵや自ＥＣＵ１６０１の通信制御手段１０５等に故障が発生して、ＥＣＵ１６０１が管理するグローバルタイムの信頼性が低下していると判断することができる。
【０１７４】
本実施の形態４におけるグローバルタイム算出手段１６０２は、先の実施の形態２で説明した処理に加えて、グローバルタイム算出時に補正幅が補正閾値Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ以上になると、通信エラー予兆カウンタ１６０５をインクリメントする。そして、グローバルタイム算出手段１６０２は、通信エラー予兆カウンタ１６０５の値が通信エラー予兆検出閾値ＰＥｒｒｏｒ＿ｔｈ以上になると、通信エラー予兆フラグ１６０６を１にセットする。
【０１７５】
一方、グローバルタイム算出手段１６０２は、補正幅が補正閾値Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ未満になると、通信エラー予兆カウンタ１６０５をリセットし、通信エラー予兆フラグ１６０６が１の場合には０にクリアする。さらに、グローバルタイム算出手段１６０２は、通信エラー予兆フラグが０から１、あるいは１から０に変化したときに、切替手段１６０３の実行をトリガする。
【０１７６】
通信エラー予兆カウンタ１６０５は、前述の通り、グローバルタイム算出手段１６０２によるグローバルタイムの補正幅が、補正閾値Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ以上になるとインクリメントされ、Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ未満になるとリセットされるカウンタである。
【０１７７】
通信エラー予兆フラグ１６０６は、グローバルタイム算出手段１６０２によって書き込まれるメモリであり、通信エラー予兆カウンタ１６０５の値が通信エラー予兆検出閾値ＰＥｒｒｏｒ＿ｔｈ以上になると１にセットされ、補正幅が補正閾値Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ未満になると０にクリアされる。また、通信エラー予兆フラグ１６０６は、切替手段１６０３によって参照される。
【０１７８】
切替手段１６０３は、先の実施の形態２で説明した起動タイミングに加えて、通信エラー予兆フラグ１６０６の値が変化したときにも、グローバルタイム算出手段１６０２によって起動される。
【０１７９】
実行間隔監視手段１６０４は、先の実施の形態２で説明した処理に加えて、通信エラー予兆フラグ１６０６を参照して実行間隔監視を行う。なお、通信間隔ＩｎｔＸの閾値を取得する際に参照するテーブルは、先の実施の形態２で用いた図８と同じとする。
【０１８０】
次に、グローバルタイム算出手段１６０２における通信エラー予兆検出に関する動作について、フローチャートを用いて説明する。図１７は、本発明の実施の形態４におけるグローバルタイム算出手段１６０２の一連処理を示すフローチャートである。
【０１８１】
ステップＳ１７０１において、グローバルタイム算出手段１６０２は、グローバルタイム補正に用いた補正幅を取得する。次に、ステップＳ１７０２において、グローバルタイム算出手段１６０２は、補正幅が補正閾値Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ以上であるか確認する。そして、グローバルタイム算出手段１６０２は、補正幅が補正閾値Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ以上である場合には、ステップＳ１７０３へ進む。また、それ以外の場合には、ステップＳ１７０８へ進む。
【０１８２】
ステップＳ１７０３に進んだ場合には、グローバルタイム算出手段１６０２は、通信エラー予兆カウンタ１６０５をインクリメントする。次に、ステップＳ１７０４において、グローバルタイム算出手段１６０２は、ステップＳ１７０３でインクリメントした通信エラー予兆カウンタ１６０５の値が、通信エラー予兆検出閾値ＰＥｒｒｏｒ＿ｔｈ以上であるか否か確認する。
【０１８３】
そして、グローバルタイム算出手段１６０２は、通信エラー予兆カウンタ１６０５の値が、通信エラー予兆検出閾値ＰＥｒｒｏｒ＿ｔｈ以上である場合には、ステップＳ１７０５へ進む。また、それ以外の場合には、グローバルタイム算出手段１６０２は、通信エラーが発生する可能性は高くないと判断して、通信エラー予兆検出処理を終了する。
【０１８４】
ステップＳ１７０５に進んだ場合には、通信エラー予兆カウンタ１６０５の値が通信エラー予兆検出閾値ＰＥｒｒｏｒ＿ｔｈ以上であるため、グローバルタイム算出手段１６０２は、現在の通信エラー予兆フラグ１６０６の値を確認する。そして、通信エラー予兆フラグ１６０６の値が０である場合には、グローバルタイム算出手段１６０２は、ステップＳ１７０６へ進む。一方、通信エラー予兆フラグ１６０６の値が１である場合には、グローバルタイム算出手段１６０２は、すでに通信エラー予兆が検出されており、実行間隔監視にはローカルカウンタ７０５が用いられていると判断できるため、通信エラー予兆検出処理を終了する。
【０１８５】
ステップＳ１７０５からステップＳ１７０６へ進むと、グローバルタイム算出手段１６０２は、現在通信エラー予兆が未検出であり、かつ通信エラーが発生する可能性が高いとして、通信エラー予兆フラグ１６０６を１にセットし、ステップＳ１７０７へ進む。
【０１８６】
そして、ステップＳ１７０７において、グローバルタイム算出手段１６０２は、通信エラー予兆フラグ１６０６の値の変化により実行間隔監視手段１６０４がグローバルタイムを用いるかローカルカウンタ７０５の値を用いるかを変更するため、切替手段１６０３の実行を要求し、通信エラー予兆検出処理を終了する。
【０１８７】
一方、先のステップＳ１７０２において、グローバルタイムの補正幅が補正閾値Ｃｏｒｒｅｃｔｉｏｎ＿ｔｈ未満である場合には、グローバルタイム算出手段１６０２は、ステップＳ１７０８へ進み、通信エラー予兆カウンタ１６０５をリセットする。
【０１８８】
次に、ステップＳ１７０９において、グローバルタイム算出手段１６０２は、現在の通信エラー予兆フラグ１６０６の値を確認する。そして、通信エラー予兆フラグ１６０６の値が１である場合には、ステップＳ１７１０へ進み、通信エラーが発生する可能性が低いと判断し、通信エラー予兆フラグ１６０６を０にクリアし、ステップＳ１７０７へ進む。一方、通信エラー予兆フラグ１６０６の値が０である場合には、通信エラー予兆検出処理を終了する。
【０１８９】
通信エラー予兆カウンタ１６０５と通信エラー予兆フラグ１６０６を用いた切替手段１６０３および実行間隔監視手段１６０４の処理内容は、先の実施の形態３の通信エラーカウンタ１２０５と通信エラーフラグ１２０６を、それぞれ通信エラー予兆カウンタ１６０５と通信エラー予兆フラグ１６０６へ置き換えたものになるため、説明は省略する。
【０１９０】
以上のように、実施の形態４によれば、グローバルタイムの補正幅が、設定値に達した場合には、通信が不安定であるか、あるいはＥＣＵの通信制御手段にエラーが発生しているなどして、通信エラーが発生する確率が高く、グローバルタイムの信頼性が低いと判断できる。そして、グローバルタイムの信頼性が低いと判断した場合には、事前に実行間隔監視をローカルカウンタの値を用いて実行するように切り替えることにより、実行間隔監視機能の信頼性を高めることができる。
【０１９１】
また、補正幅が設定値未満になった場合には、通信エラー予兆カウンタをリセットしている。これにより、グローバルタイムとの同期が不安定になり、補正幅が連続して設定値以上になった場合にのみ、通信エラーが発生する確率が高いと判断できる。
【０１９２】
なお、上述した実施の形態４では、補正幅が設定値未満になった場合に、通信エラー予兆カウンタ１６０５をリセットしているが、本発明はこれに限定されるものではない。先の実施の形態３で説明したように、補正幅が設定未満になった場合には、通信エラー予兆カウンタ１６０５をデクリメントし、通信エラー予兆未検出閾値未満になった場合に、通信エラー予兆フラグ１６０６を０にクリアするものであってもよい。
【０１９３】
このようにすることで通信サイクルよりも長い周期で発生するノイズの影響で通信状態が不安定である場合も、通信エラー予兆として検出し、実行間隔監視にローカルカウンタを使用するよう切り替えることができる。
【符号の説明】
【０１９４】
１０１  ネットワークシステム、１０２、１０３  車載電子制御装置、１０４  通信線、１０５  通信制御手段、１０６  グローバルタイム算出手段、１０７  演算処理手段、１０８  実行間隔監視手段、７０１  車載電子制御装置、７０２  グローバルタイム算出手段、７０３  実行間隔監視手段、７０４  同期フラグ、７０５  ローカルカウンタ、７０６  切替手段、１２０１  車載電子制御装置、１２０２  グローバルタイム算出手段、１２０３  切替手段、１２０４  実行間隔監視手段、１２０５  通信エラーカウンタ、１２０６  通信エラーフラグ、１６０１  車載電子制御装置、１６０２  グローバルタイム算出手段、１６０３  切替手段、１６０４  実行間隔監視手段、１６０５  通信エラー予兆カウンタ、１６０６  通信エラー予兆フラグ。
【図１】
0005449484.tif 000002
【図２】
0005449484.tif 000003
【図３】
0005449484.tif 000004
【図４】
0005449484.tif 000005
【図５】
0005449484.tif 000006
【図６】
0005449484.tif 000007
【図７】
0005449484.tif 000008
【図８】
0005449484.tif 000009
【図９】
0005449484.tif 000010
【図１０】
0005449484.tif 000011
【図１１】
0005449484.tif 000012
【図１２】
0005449484.tif 000013
【図１３】
0005449484.tif 000014
【図１４】
0005449484.tif 000015
【図１５】
0005449484.tif 000016
【図１６】
0005449484.tif 000017
【図１７】
0005449484.tif 000018