(57)【特許請求の範囲】
【請求項１】
通信を行うサブ通信部（２４）と、データとしてサブデータを生成するサブデータ生成部（２２，Ｓ８２）と、を有するサブ制御部（２０）と、
前記サブ通信部と通信を行うメイン通信部（１４）と、前記サブデータを用いて演算を行うメイン演算部（１２，Ｓ１４）と、を有するメイン制御部（１０）と、
を備え、
前記メイン通信部は、通信の開始を要求するための信号である要求信号を前記サブ通信部に送信し、
前記サブ通信部は、前記要求信号を受信した場合に、前記サブデータ生成部へ信号を入力し、
前記サブデータ生成部は、前記サブ通信部からの信号に応じて前記サブデータの生成を開始し、前記サブデータの生成が完了した場合に前記サブ通信部に前記サブデータを入力し、
前記サブ通信部は、前記サブデータ生成部から前記サブデータが入力された場合、前記メイン通信部に対し、通信の準備が完了したことを示す応答信号を送信するとともに、前記サブデータを送信し、
前記メイン通信部は、前記応答信号を受信した場合に、前記サブ通信部から前記サブデータを受信し、受信した前記サブデータを前記メイン演算部に入力し、
前記メイン演算部は、外部からの信号である第１外部信号、及び、前記サブデータに基づき、データとしてメインデータを生成するとともに、生成した前記メインデータを前記メイン通信部に入力し、
前記メイン通信部は、前記応答信号を受信した場合に、前記サブ通信部から前記サブデータを受信するとともに、前記メインデータを前記サブ通信部に送信し、
前記サブ通信部は、前記メイン通信部から前記メインデータが入力された場合、前記サブデータ生成部へ前記メインデータを送信し、
前記サブデータ生成部は、外部からの信号である第２外部信号、及び、前記サブ通信部から入力された前記メインデータに基づき、前記サブデータを生成する電子制御装置。
【請求項２】
前記メイン制御部は、前記メイン通信部と前記サブ通信部との通信状態を判定する通信判定部（Ｓ１０）と、前記通信判定部の判定結果に基づき前記メイン通信部を制御する通信制御部（Ｓ１９）をさらに備え、
前記通信制御部は、前記メイン通信部が前記サブ通信部と通信中であると前記通信判定部により判定された場合、前記メイン通信部における前記サブ通信部への前記メインデータの送信を禁止する請求項１に記載の電子制御装置。
【請求項３】
前記メイン通信部は、前記サブ通信部へ周期的に前記要求信号を送信し、
前記サブ通信部は、前記要求信号を受信する度に、前記サブデータ生成部へ信号を入力し、
前記サブデータ生成部は、前記サブ通信部から信号が入力される度に、前記サブデータの生成を開始するとともに、前記サブ通信部へ前記サブデータを入力し、
前記サブ通信部は、前記サブデータが入力される度に、前記メイン通信部に対し、前記応答信号及び前記サブデータを送信し、
前記メイン通信部は、前記応答信号を受信する度に、前記サブ通信部から前記サブデータを受信するとともに、受信した前記サブデータを前記メイン通信部に入力し、
前記メイン演算部は、前記メイン通信部から入力される前記サブデータを用いて、前記メイン通信部が前記要求信号を送信するのと同じ周期で周期的に演算を行う請求項１又は２に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを生成するサブ制御部と、サブ制御部と通信可能に接続されるとともにサブ制御部が生成したデータに基づき演算を行うメイン制御部と、を備える電子制御装置に関する。
【背景技術】
【０００２】
従来、特許文献１に記載のように、メインＣＰＵと、サブＣＰＵと、割り込みコントローラと、双方向データバッファと、を備える並列処理装置が知られている。割り込みコントローラは、メインＣＰＵからの要求に基づき、サブＣＰＵに並列処理の開始を通知する。サブＣＰＵは、割り込みコントローラからの通知に基づき、並列処理を開始する。サブＣＰＵは、並列処理により生成したデータを双方向データバッファに書き込む。メインＣＰＵは、サブＣＰＵが双方向データバッファに書き込んだデータを読み出し、このデータに基づき処理を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１２８０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記構成において、メインＣＰＵは、サブＣＰＵが並行処理を開始するタイミングを制御している。すなわち、メインＣＰＵは、サブＣＰＵがデータの生成を開始するタイミングを制御している。よって、メインＣＰＵは、生成開始のタイミングを判断可能なデータを用いて、演算を行うことができる。
【０００５】
しかしながら、上記構成においてメインＣＰＵは、並行処理においてサブＣＰＵがデータの生成を完了したタイミングを知ることができない。詳しく言うと、並行処理においてサブＣＰＵがデータの生成を完了したタイミングから、双方向データバッファからメインＣＰＵがデータを読み出すタイミングまでに経過した時間を、メインＣＰＵは知りえない。このため、メインＣＰＵは、生成完了のタイミングが判断できないデータを用いて、処理を行うこととなる。
【０００６】
本発明はこのような課題に鑑みてなされたものであり、メイン制御部が、サブデータにおける生成開始及び生成完了のタイミングの両方を判断することができる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記目的を達成するために以下の技術的手段を採用する。なお、括弧内の符号は、ひとつの態様として下記の実施形態における具体的手段との対応関係を示すものであって、技術的範囲を限定するものではない。
【０００８】
本発明のひとつは、
通信を行うサブ通信部（２４）と、データとしてサブデータを生成するサブデータ生成部（２２，Ｓ８２）と、を有するサブ制御部（２０）と、
サブ通信部と通信を行うメイン通信部（１４）と、サブデータを用いて演算を行うメイン演算部（１２，Ｓ１４）と、を有するメイン制御部（１０）と、
を備え、
メイン通信部は、通信の開始を要求するための信号である要求信号をサブ通信部に送信し、
サブ通信部は、要求信号を受信した場合に、サブデータ生成部へ信号を入力し、
サブデータ生成部は、サブ通信部からの信号に応じてサブデータの生成を開始し、サブデータの生成が完了した場合にサブ通信部にサブデータを入力し、
サブ通信部は、サブデータ生成部からサブデータが入力された場合、メイン通信部に対し、通信の準備が完了したことを示す応答信号を送信するとともに、サブデータを送信し、
メイン通信部は、応答信号を受信した場合に、サブ通信部からサブデータを受信し、受信したサブデータをメイン演算部に入力し、
メイン演算部は、外部からの信号である第１外部信号、及び、サブデータに基づき、データとしてメインデータを生成するとともに、生成したメインデータをメイン通信部に入力し、
メイン通信部は、応答信号を受信した場合に、サブ通信部からサブデータを受信するとともに、メインデータをサブ通信部に送信し、
サブ通信部は、メイン通信部からメインデータが入力された場合、サブデータ生成部へメインデータを送信し、
サブデータ生成部は、外部からの信号である第２外部信号、及び、サブ通信部から入力されたメインデータに基づき、サブデータを生成する。
【０００９】
上記構成において、メイン通信部がサブ通信部に要求信号を送信することで、サブデータ生成部がサブデータの生成を開始する。これによれば、メイン制御部は、サブデータにおける生成開始のタイミングを制御することができる。すなわち、メイン制御部は、サブデータにおける生成開始のタイミングを判断することができる。
【００１０】
また上記構成において、サブデータ生成部によるサブデータの生成が完了した場合、サブ通信部からメイン通信部へ応答信号及びサブデータが送信される。そして、メイン通信部は、応答信号を受信した場合に、サブ通信部からサブデータを受信し、受信したサブデータをメイン演算部に入力する。これによれば、サブデータ生成部によるサブデータの生成が完了したタイミングで、サブデータがメイン演算部に入力される。
【００１１】
したがって、メイン演算部は、サブデータが入力されたタイミングに基づき、サブデータの生成が完了したタイミングを判断することができる。すなわち、メイン制御部は、サブデータにおける生成完了のタイミングを判断することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態に係る電子制御装置の概略構成を示すブロック図である。
【図２】１０ｍｓタスク処理の処理手順を示すフローチャートである。
【図３】結果取得処理の処理手順を示すフローチャートである。
【図４】ＲＥＳ割り込み処理の処理手順を示すフローチャートである。
【図５】ＲＥＱ割り込み処理の処理手順を示すフローチャートである。
【図６】１ｍｓタスク処理の処理手順を示すフローチャートである。
【図７】同期タスク処理の処理手順を示すフローチャートである。
【図８】メインマイコン及びサブマイコンの動作を示すタイミングチャートである。
【図９】メインマイコン及びサブマイコンの動作を示すタイミングチャートである。
【図１０】メインマイコン及びサブマイコンの動作を示すタイミングチャートである。
【図１１】メインマイコン及びサブマイコンの動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１３】
図面を参照して説明する。なお、複数の実施形態において、共通乃至関連する要素には同一の符号を付与するものとする。
【００１４】
（第１実施形態）
先ず、図１に基づき、電子制御装置１００の概略構成について説明する。
【００１５】
電子制御装置１００は、車両用のＥＣＵである。電子制御装置１００には、外部機器２００の状態を検出するセンサ等から複数の信号が入力される。外部機器２００は、例えば、バッテリ、エコスイッチ、車両のドアである。エコスイッチとは、車両の燃費を変化させるためのスイッチであって、エンジンやエアコン等の制御内容を変更するためのものである。外部機器２００は、複数の機器であってもよく、１つの機器であってもよい。
【００１６】
電子制御装置１００は、マイコンとして、メインマイコン１０とサブマイコン２０とを備えている。メインマイコン１０は、特許請求の範囲に記載のメイン制御部に相当する。サブマイコン２０は、特許請求の範囲に記載のサブ制御部に相当する。メインマイコン１０及びサブマイコン２０の夫々には、複数の信号が入力される。以下、メインマイコン１０に入力される複数の信号をまとめて、外部信号Ａと示す。外部信号Ａは、特許請求の範囲の第１外部信号に相当する。また、サブマイコン２０に入力される複数の信号をまとめて、外部信号Ｂと示す。外部信号Ｂは、特許請求の範囲の第２外部信号に相当する。
【００１７】
外部信号Ａには、サブマイコン２０に入力される信号と同じ信号と、メインマイコン１０にのみ入力される信号と、が含まれている。同様に、外部信号Ｂには、メインマイコン１０に入力される信号と同じ信号と、サブマイコン２０にのみ入力される信号と、が含まれている。つまり、電子制御装置１００に入力される複数の信号は、メインマイコン１０及びサブマイコン２０の両方に入力される信号と、一方にのみ入力される信号と、を含んでいる。
【００１８】
メインマイコン１０及びサブマイコン２０の両方に入力される信号は、例えば、バッテリ電圧の値を示す信号や、車両のドアが開いているか否かを示す信号である。メインマイコン１０及びサブマイコン２０の一方にのみ入力される信号は、例えば、エコスイッチのオンオフ状態を示す信号である。
【００１９】
メインマイコン１０及びサブマイコン２０の両方に入力される信号を伝達する配線は、外部機器２００の状態を検出するセンサ等から、電子制御装置１００の内部又は外部において分岐して、メインマイコン１０及びサブマイコン２０の夫々に接続されている。メインマイコン１０及びサブマイコン２０は、入力された信号に基づいてデータを生成する。以下、メインマイコン１０が生成するデータをメインデータと示す。また、サブマイコン２０が生成するデータをサブデータと示す。
【００２０】
メインマイコン１０及びサブマイコン２０は、互いに通信可能に接続されている。メインマイコン１０は、生成したメインデータをサブマイコン２０に送信する。サブマイコン２０は、生成したサブデータをメインマイコン１０に送信する。メインマイコン１０は、サブマイコン２０から受信したサブデータ、及び、入力された外部信号Ａに基づき、メインデータを生成する。サブマイコン２０は、メインマイコン１０から受信したメインデータ、及び、入力された外部信号Ｂに基づき、サブデータを生成する。
【００２１】
メインマイコン１０は、メインデータに基づき制御対象を制御する。サブマイコン２０は、サブデータに基づき制御対象を制御する。メインマイコン１０及びサブマイコン２０の制御対象は、外部機器２００であってもよく、外部機器２００と異なる機器であってもよい。メインマイコン１０及びサブマイコン２０の夫々は、１つの機器を制御してもよく、複数の機器を制御してもよい。
【００２２】
以上の構成によれば、１つのマイコンが外部信号Ａ及び外部信号Ｂに基づきメインデータ及びサブデータを生成する構成に較べて、メインマイコン１０及びサブマイコン２０夫々の処理負荷を軽減することができる。よって、電子制御装置１００の処理を高速化することができる。
【００２３】
また、サブデータは、外部信号Ｂに基づき生成された信号である。これによれば、メインマイコン１０は、外部信号Ａ及びサブデータに基づきメインデータを生成することにより、外部信号Ａ及び外部信号Ｂの両方の情報に基づきメインデータを生成することができる。よって、メインマイコン１０は、メインマイコン１０に入力される信号、及び、サブマイコン２０にのみ入力される信号の両方の情報に基づき、メインデータを生成することができる。同様に、サブマイコン２０は、外部信号Ｂ及びメインデータに基づきサブデータを生成することにより、サブマイコン２０に入力される信号、及び、メインマイコン１０にのみ入力される信号の両方の情報に基づき、サブデータを生成することができる。
【００２４】
これに対し、メインマイコン１０及びサブマイコン２０が通信を行わず、メインマイコン１０に入力される複数の信号が、サブマイコン２０に入力される複数の信号と一致する構成が考えられる。例えばこの構成では、メインマイコン１０及びサブマイコン２０が、入力された信号のみに基づきデータを生成する。しかしながらこの構成では、本実施形態に較べて、外部機器２００の状態を検出するセンサ等からメインマイコン１０及びサブマイコン２０に接続される配線を多くする必要がある。メインマイコン１０及びサブマイコン２０に接続される配線の数は、メインマイコン１０及びサブマイコン２０におけるポートの数よりも多くすることができない。本実施形態では、外部機器２００の状態を検出するセンサ等からメインマイコン１０及びサブマイコン２０に接続される配線を簡略化することができる。
【００２５】
例えば、メインマイコン１０は、温度センサのオンオフ状態を制御する。またサブマイコン２０は、電流センサのオンオフ状態を制御する。以下、エコスイッチのオンオフ状態を示す信号がサブマイコン２０にのみ入力され、バッテリの電圧レベルを示す信号がメインマイコン１０及びサブマイコン２０の両方に入力された例について説明する。サブマイコン２０は、バッテリの電圧レベルに基づき、電流センサのオンオフ状態を決定する。例えばサブマイコン２０は、バッテリの電圧レベルが閾値よりも低い場合に電流センサをオフにして、バッテリの電圧レベルが閾値よりも以上の場合に電流センサをオンにする。
【００２６】
またサブマイコン２０は、エコスイッチのオンオフ状態を示す信号を信号処理して、サブデータを生成する。例えばサブマイコン２０は、エコスイッチのオンオフ状態を示すアナログデータをデジタルデータに変換し、変換したデジタルデータをサブデータとしてメインマイコン１０に送信する。
【００２７】
メインマイコン１０は、バッテリの電圧レベル及びサブデータに基づき、温度センサのオンオフ状態を決定する。メインマイコン１０は、サブデータに基づき、エコスイッチのオンオフ状態を判定することができる。例えばメインマイコン１０は、エコスイッチのオンオフ状態に応じて閾値を決定するとともに、バッテリの電圧レベルが閾値よりも低い場合に温度センサをオフにして、バッテリの温度レベルが閾値よりも以上の場合に温度センサをオンにする。そしてメインマイコン１０は、温度センサのオンオフ状態を示すメインデータを生成してサブマイコン２０に送信する。サブマイコン２０は、温度センサのオンオフ状態を参照してサブデータを生成する。
【００２８】
メインマイコン１０は、下記の同期タスク処理の起床をサブマイコン２０に要求するとともに、メインデータを生成する。メインマイコン１０は、これらの処理を周期的に行う。本実施形態において、メインマイコン１０は、メインデータを生成するとともに同期タスク処理の起床をサブマイコン２０に要求する処理を１０ｍｓ毎に行う。以下、メインデータを生成するとともに同期タスク処理の起床をサブマイコン２０に要求する処理を１０ｍｓタスク処理と示す。
【００２９】
メインマイコン１０は、演算部１２と、通信部１４と、記憶部１６と、を有している。演算部１２、通信部１４、及び、記憶部１６は、互いに接続されている。演算部１２は、メインデータを生成するものである。演算部１２には、外部信号Ａが入力される。演算部１２は、外部信号Ａ及びサブデータに基づき、メインデータを生成する。以下、演算部１２がメインデータを生成する処理をＡＰＰ処理と示す。
【００３０】
通信部１４は、サブマイコン２０と通信を行うものである。詳しく言うと、通信部１４は、サブマイコン２０へメインデータを送信するとともに、サブマイコン２０からサブデータを受信するものである。通信部１４は、サブマイコン２０とシリアル通信を行う。通信部１４は、記憶領域としてデータバッファを有している。１０ｍｓタスク処理において通信部１４のデータバッファは、サブマイコン２０から受信したサブデータ、及び、演算部１２から入力されたメインデータを一時的に格納する。通信部１４は、特許請求の範囲に記載のメイン通信部に相当する。
【００３１】
記憶部１６は、メインデータを格納するものである。記憶部１６は、不揮発性メモリであるＲＯＭ、及び、揮発性メモリであるＲＡＭを有している。演算部１２は、ＡＰＰ処理で作成したメインデータを一時的に記憶部１６に格納する。また演算部１２は、シリアル通信で通信部１４が受信したサブデータを一時的に記憶部１６に格納し、格納したサブデータを取得してＡＰＰ処理を行う。
【００３２】
演算部１２は、通信状態変数と、通信結果変数と、送信禁止変数と、ＲＥＳ待ち変数と、を用いて、１０ｍｓタスク処理を行う。これらの変数は、記憶部１６の揮発性メモリに格納されている。よって、これらの変数は、電子制御装置１００の電源が遮断されると、情報が失われる。
【００３３】
通信状態変数とは、メインマイコン１０及びサブマイコン２０の通信状態を示すものである。通信状態変数は、ＩＤＬＥ、ＨＳ、及び、ＴＲＡＮＳに示す３つの値をとる。ＩＤＬＥは、通信の準備及び通信を行っていないことを示す。ＨＳは、ハンドシェイク通信の準備が完了したこと、ハンドシェイク通信を行っていること、又は、ハンドシェイク通信を行ったことを示す。ＨＳは、Handshakeの略称である。
【００３４】
メインマイコン１０及びサブマイコン２０は、メインデータ及びサブデータの送受信を行う前に、ハンドシェイク通信を行う。ハンドシェイク通信では、メインマイコン１０がサブマイコン２０に通信準備の要求を行うとともに、サブマイコン２０がメインマイコン１０に通信準備が完了したことを通知する。
【００３５】
ＴＲＡＮＳは、シリアル通信の準備が完了したこと、シリアル通信を行っていること、又は、シリアル通信を行ったことを示す。このシリアル通信において、メインデータ及びサブデータの送受信が行われる。１０ｍｓタスク処理において演算部１２は、通信状態変数及び通信部１４の状態に基づき、サブマイコン２０との通信状態を判定する。
【００３６】
通信結果変数とは、メインマイコン１０及びサブマイコン２０の通信結果を示すものである。通信結果変数は、ＩＤＬＥ、ＨＳ、ＴＲＡＮＳ、ＯＫ、及び、ＮＧに示す５つの値をとる。ＯＫは、シリアル通信においてデータの送受信が正常に完了したことを示す。ＮＧは、シリアル通信においてデータの送受信が正常に完了しなかったことを示す。
【００３７】
送信禁止変数とは、メインマイコン１０が送信禁止状態であるか否かを示すものである。送信禁止状態とは、通信部１４におけるメインデータの送信を禁止している状態である。送信禁止変数の値がオンにされると、メインマイコン１０が送信禁止状態となる。送信禁止変数の値がオンからオフにされると、メインマイコン１０の送信禁止状態が解除される。
【００３８】
ＲＥＳ待ち変数とは、メインマイコン１０がＲＥＳ待ち状態であるか否かを示すものである。ＲＥＳ待ち状態とは、サブマイコン２０の通信準備が完了するのを待機している状態である。ＲＥＳ待ち変数の値がオンにされると、メインマイコン１０がＲＥＳ待ち状態となる。ＲＥＳ待ち変数の値がオンからオフにされると、メインマイコン１０のＲＥＳ待ち状態が解除される。ＲＥＳ割り込み処理においてメインマイコン１０は、ＲＥＳ待ち状態である場合にのみシリアル通信を開始する。ＲＥＳ割り込み処理については、下記で詳細に説明する。
【００３９】
サブマイコン２０は、メインマイコン１０からの要求に応じて、メインマイコン１０の１０ｍｓタスク処理に同期した同期タスク処理を行う。サブマイコン２０は、メインマイコン１０からの要求に応じて、ＲＥＱ割り込み処理を行う。ＲＥＱ割り込み処理は、同期タスク処理を起床させる処理である。ＲＥＱ割り込み処理については、下記で詳細に説明する。同期タスク処理においてサブマイコン２０は、サブデータを生成する。サブマイコン２０は、１０ｍｓタスク処理とほぼ同じ周期で、同期タスク処理を周期的に行う。メインマイコン１０及びサブマイコン２０は、互いに同期した処理を行うことで、ほぼ同じタイミングで入力された外部信号Ａ及び外部信号Ｂの両方の情報に基づき、データを生成することができる。
【００４０】
サブマイコン２０は、演算部２２と、通信部２４と、記憶部２６と、を有している。演算部２２、通信部２４、及び、記憶部２６は、互いに接続されている。
【００４１】
演算部２２は、サブデータを生成するものである。演算部２２には、外部機器２００から外部信号Ｂが入力される。演算部２２は、外部信号Ｂ及びメインデータに基づき、サブデータを生成する。以下、演算部２２がサブデータを生成する処理をＡＰＰ処理と示す。本実施形態において、演算部２２は、演算部１２と異なる演算を行う。
【００４２】
通信部２４は、通信部１４と通信を行うものである。通信部２４は、特許請求の範囲に記載のサブ通信部に相当する。本実施形態において、通信部１４及び通信部２４は、複数の信号線により接続されている。電子制御装置１００は、通信部１４と通信部２４とを接続する信号線として、ＲＥＱ３０と、ＲＥＳ３２と、クロックライン３４と、メインデータライン３６と、サブデータライン３８と、を備えている。
【００４３】
ＲＥＱ３０は、通信部１４がサブマイコン２０に対して通信の準備を要求する要求信号を送信するための信号線である。この要求信号の送信により、ハンドシェイク通信が開始される。サブマイコン２０は、ＲＥＱ３０により伝送される要求信号がオフからオンにされたのを検出すると、ＲＥＱ割り込み処理により同期タスク処理を起床し、メインマイコン１０との通信の準備を開始する。ＲＥＱ３０は、ハンドシェイクリクエストポートと称することもできる。ＲＥＱ３０により伝送される要求信号をオフからオンにすることは、特許請求の範囲に記載の要求信号を送信することに相当する。
【００４４】
ＲＥＳ３２は、通信部２４が通信部１４の要求に対して応答する応答信号を送信するための信号線である。ＲＥＳ３２により伝送される応答信号がオンの場合、サブマイコン２０において通信準備が完了していないため、通信部２４はサブデータを送信するための通信を通信部１４と行わない。通信準備が完了してＲＥＳ３２における応答信号がオンからオフに変化すると、通信部２４は通信部１４と通信可能となり、通信部２４は通信部１４と通信を行う。通信部２４は、ＲＥＳ３２の応答信号をオンからオフにすることで、通信の準備が完了したことを通信部１４に示す。
【００４５】
メインマイコン１０は、ＲＥＳ３２の応答信号がオンからオフにされたのを検出すると、ＲＥＳ割り込み処理を起床する。ＲＥＳ３２は、ハンドシェイクレスポンスポートと称することもできる。ＲＥＳ３２の応答信号をオンからオフにすることは、特許請求の範囲に記載の応答信号を送信することに相当する。
【００４６】
クロックライン３４は、シリアル通信の際に、通信部１４が通信部２４へクロック信号を送信するための信号線である。メインデータライン３６は、通信部１４が通信部２４に対してメインデータを送信するための信号線である。サブデータライン３８は、通信部２４が通信部１４に対してサブデータを送信するための信号線である。
【００４７】
記憶部２６は、サブデータを格納するものである。記憶部２６は、不揮発性メモリであるＲＯＭ、及び、揮発性メモリであるＲＡＭを有している。演算部２２は、ＡＰＰ処理で作成したサブデータを一時的に記憶部２６に格納する。また演算部２２は、シリアル通信で通信部２４が受信したメインデータを一時的に記憶部２６に格納し、格納したメインデータを取得してＡＰＰ処理を行う。
【００４８】
記憶部２６の揮発性メモリには、記憶部１６と同様に、通信状態変数と、通信結果変数と、が格納されている。演算部２２は、記憶部２６に格納された通信状態変数と、通信結果変数と、を用いて同期タスク処理を行う。記憶部２６に格納された通信結果変数は、記憶部１６に格納された通信結果変数と異なり、ＯＫ、ＮＧ、及び、ＵＮＦＩＸの値をとる。ＵＮＦＩＸは、シリアル通信においてデータが正常に送受信されたか否かを示す通信結果が確定していないことを示す。
【００４９】
また、サブマイコン２０は、メインマイコン１０とのシリアル通信が完了したか否かを判定する処理を周期的に行う。本実施形態において、サブマイコン２０は、メインマイコン１０とのシリアル通信が完了したか否かを判定する処理を１ｍｓ毎に開始する。以下、メインマイコン１０とのシリアル通信が完了したか否かをサブマイコン２０が判定する処理を、１ｍｓタスク処理と示す。１ｍｓタスク処理は、通信完了判定処理と示すこともできる。
【００５０】
次に、１０ｍｓタスク処理について図２及び図３のフローチャートを参照して説明する。
【００５１】
メインマイコン１０は、電子制御装置１００に電源が入力されると、図２に示す１０ｍｓタスクを起床する。なお電子制御装置１００は、電源が入力された場合に初期化処理を行い、初期化処理により通信状態変数の値をＩＤＬＥとする。また、メインマイコン１０は、前回の１０ｍｓタスクを開始したタイミングから１０ｍｓが経過したタイミングにおいても、１０ｍｓタスクを起床する。１０ｍｓタスクにおいて演算部１２は、先ず、図３に示す結果取得処理を行う（Ｓ１０）。結果取得処理は、通信部１４における通信部２４との通信状態、及び、シリアル通信の結果を取得する処理である。演算部１２においてＳ１０の処理を行う機能は、特許請求の範囲に記載の通信判定部に相当する。
【００５２】
結果取得処理において演算部１２は、先ず、通信状態変数の値がＩＤＬＥであるか否かを判定する（Ｓ３０）。電源が入力されてから最初に起床された１０ｍｓタスク処理では、通信状態変数の値がＩＤＬＥとなっている。Ｓ３０において演算部１２は、通信状態変数の値がＩＤＬＥであると判定すると、通信結果変数の値をＩＤＬＥとする（Ｓ３１）。演算部１２は、Ｓ３１の処理を行った後、結果取得処理を終了する。
【００５３】
演算部１２は、通信状態変数の値がＩＤＬＥではない判定すると、通信状態変数の値がＴＲＡＮＳであるか否かを判定する（Ｓ３２）。Ｓ３２において通信状態変数の値がＴＲＡＮＳである場合、メインマイコン１０は、シリアル通信中であるか、又は、サブマイコン２０とのシリアル通信を完了した状態である。
【００５４】
演算部１２は、Ｓ３２において通信状態変数の値がＴＲＡＮＳであると判定すると、通信部１４が通信部２４とシリアル通信中であるか否かを判定する（Ｓ３３）。演算部１２は、通信部１４の動作状況に基づき、Ｓ３３の判定を行う。
【００５５】
演算部１２は、Ｓ３３において通信部１４が通信部２４とシリアル通信中であると判定すると、通信結果変数の値をＴＲＡＮＳとする（Ｓ３４）。演算部１２は、Ｓ３４の処理を行った後、結果取得処理を終了する。
【００５６】
通信部１４が通信部２４とシリアル通信中ではないと演算部１２がＳ３３において判定した場合、通信部１４が通信部２４とのシリアル通信を完了していることになる。演算部１２は、Ｓ３３においてシリアル通信中ではないと判定すると、通信状態変数の値をＩＤＬＥとする（Ｓ３５）。
【００５７】
次に、演算部１２は、シリアル通信で通信部１４が通信部２４から受信したサブデータが正常なデータか否かを判定する（Ｓ３６）。例えば、Ｓ３６において演算部１２は、パリティチェックや、チェックサムを用いた検査を行うことで、受信したサブデータが正常なものであるかを判定する。
【００５８】
演算部１２は、Ｓ３６においてサブデータが正常であると判定すると、通信結果変数の値をＯＫとする（Ｓ３７）。演算部１２は、Ｓ３７の処理を行った後、結果取得処理を終了する。演算部１２は、Ｓ３６においてサブデータが異常であると判定すると、通信結果変数の値をＮＧとする（Ｓ３８）。演算部１２は、Ｓ３８の処理を行った後、結果取得処理を終了する。
【００５９】
Ｓ３２において通信状態変数の値がＴＡＲＡＮＳではないと演算部１２に判定された場合、通信状態変数の値はＨＳである。演算部１２は、Ｓ３２において通信状態変数の値がＴＡＲＡＮＳではないと判定すると、通信結果変数の値をＨＳとする（Ｓ３９）。演算部１２は、Ｓ３９の処理を行った後、結果取得処理を終了する。
【００６０】
演算部１２は、結果取得処理を終了すると、通信結果変数の値がＯＫであるか否かを判定する（Ｓ１１）。すなわち、演算部１２は、結果取得処理においてＳ３７の処理を行ったか否かを判定する。演算部１２が結果取得処理においてＳ３７の処理を行った場合、シリアル通信は完了しており、通信部１４が受信したサブデータは正常である。
【００６１】
演算部１２は、Ｓ１１において通信結果変数の値がＯＫであると判定すると、通信部１４が受信したサブデータを記憶部１６から取得する（Ｓ１２）。次に、メインマイコン１０は、サブマイコン２０に対して通信準備の要求を行う（Ｓ１３）。詳しく言うと、Ｓ１３において演算部１２は、通信部１４にＲＥＱ３０の要求信号の電圧レベルを変更するための信号を入力する。これにより、通信部１４は、ＲＥＱ３０の要求信号をオフからオンにして、オンにしてから所定時間経過後にオンからオフに戻す。そして、要求信号がオンに変化したことでハンドシェイク通信が開始されるので、Ｓ１３において演算部１２は、通信状態変数の値をＨＳとする。
【００６２】
次に、演算部１２は、ＡＰＰ処理を行う（Ｓ１４）。Ｓ１４において演算部１２は、今回の１０ｍタスク処理においてＳ１２の処理を行った場合、Ｓ１２で取得したサブデータ、及び、外部信号Ａに基づきＡＰＰ処理を行う。よって、演算部１２は、今回の１０ｍタスク処理を行う前に完了したシリアル通信において通信部１４が受信した正常なサブデータ、及び、外部信号Ａに基づきメインデータを生成する。言い換えると、今回の１０ｍｓタスク処理において演算部１２は、前回の同期タスク処理において演算部２２が生成したサブデータ、及び、外部信号Ａに基づきＳ１４を行う。演算部１２においてＳ１４の処理を行う機能は、特許請求の範囲に記載のメイン演算部に相当する。
【００６３】
演算部１２は、Ｓ１１において通信結果変数の値がＯＫではないと判定すると、通信結果変数の値がＨＳであるか否かを判定する（Ｓ１５）。すなわち、演算部１２は、結果取得処理においてＳ３９の処理を行ったか否かを判定する。シリアル通信が開始されると通信状態変数は、ＴＲＡＮＳとなる。前回の１０ｍｓタスク処理が終了してから次の１０ｍｓタスク処理が開始されるまでにシリアル通信が開始されない場合、通信状態変数はＴＲＡＮＳとならず、ＨＳを維持する。これにより、演算部１２は、Ｓ３９で通信結果変数をＨＳとする。よって、Ｓ１５において通信結果変数の値がＨＳであると演算部１２が判定すると、前回の１０ｍｓタスクの終了から今回の１０ｍｓタスクの開始までにシリアル通信が開始されていない。
【００６４】
演算部１２は、Ｓ１５において通信結果変数の値がＨＳであると判定すると、通信状態変数の値をＩＤＬＥにするとともに、通信部１４に信号を入力してＲＥＱ３０の要求信号をオフにする（Ｓ１６）。これにより、演算部１２は、前回の１０ｍｓタスク処理をキャンセルし、今回の１０ｍｓタスク処理でサブマイコン２０との通信を可能にする。演算部１２は、Ｓ１６の処理を行った後、Ｓ１３の処理を行う。
【００６５】
演算部１２は、Ｓ１５において通信結果変数の値がＨＳではないと判定すると、通信結果変数の値がＩＤＬＥであるか否かを判定する（Ｓ１７）。言い換えると、演算部１２は、結果取得処理においてＳ３１の処理を行ったか否かを判定する。演算部１２は、Ｓ１７において通信結果変数の値がＩＤＬＥであると判定すると、Ｓ１３の処理を行う。
【００６６】
演算部１２は、Ｓ１７において通信結果変数の値がＩＤＬＥではないと判定すると、通信結果変数の値がＮＧであるか否かを判定する（Ｓ１８）。すなわち、演算部１２は、結果取得処理においてＳ３８の処理を行ったか否かを判定する。演算部１２は、Ｓ１８において通信結果変数の値がＮＧであると判定すると、Ｓ１３の処理を行う。
【００６７】
このように、演算部１２は、Ｓ１７において通信結果変数の値がＩＤＬＥであると判定した場合、及び、Ｓ１８において通信結果変数の値がＮＧであると判定した場合、Ｓ１２の処理を行うことなくＳ１４の処理を行う。この場合、Ｓ１４において演算部１２は、直近のシリアル通信で通信部１４が受信したサブデータを用いることなく、データの受信が正常に完了した最新のシリアル通信で受信したサブデータに基づき、メインデータを生成する。ここで、データの受信が正常に完了した最新のシリアル通信とは、直近のシリアル通信よりも前に行われたものであって、サブデータの受信を正常に完了した通信である。
【００６８】
Ｓ１８において通信結果変数の値がＮＧではないと演算部１２が判定すると、通信結果変数の値はＴＲＡＮＳである。通信結果変数の値がＴＲＡＮＳである場合、通信部１４が通信部２４とシリアル通信中である。このため、演算部１２は、Ｓ１８において通信結果変数の値がＮＧではないと判定すると、送信禁止変数の値をオンとする（Ｓ１９）。すなわち、演算部１２は、通信部１４が通信部２４とシリアル通信中であると判定すると、メインマイコン１０を送信禁止状態とする。
【００６９】
演算部１２は、Ｓ１４のＡＰＰ処理の後、送信禁止変数の値がオフか否かを判定する（Ｓ２０）すなわち、演算部１２は、今回の１０ｍｓタスク処理でＳ１９の処理を行ったか否かを判定する。これにより演算部１２は、メインマイコン１０においてメインデータの送信が許可された状態であるか否かを判定する。演算部１２は、Ｓ２０において送信禁止変数の値がオフであると判定すると、サブマイコン２０に送信するメインデータを通信部１４のデータバッファにセットする（Ｓ２１）。言い換えると、演算部１２は、Ｓ２０において送信禁止変数の値がオフであると判定すると、Ｓ１４で生成したメインデータを通信部１４のデータバッファにセットする。すなわち、演算部１２は、通信部１４にメインデータを入力する。
【００７０】
次に、演算部１２は、ＲＥＳ３２の応答信号の電圧レベルを検出するための信号を通信部１４から取得する。具体的には、通信部１４が、ＲＥＳ３２の応答信号の電圧レベルを検出し、検出したＲＥＳ３２の応答信号の電圧レベルを示す信号を演算部１２に入力する。そして、演算部１２は、ＲＥＳ３２の応答信号がオフであるか否かを判定する（Ｓ２２）。ＲＥＳ３２の応答信号がオフの場合、サブマイコン２０の通信準備が完了している。つまり、演算部１２は、Ｓ２２の処理を行うことで、サブマイコン２０の通信準備が完了しているか否かを判定している。
【００７１】
演算部１２は、Ｓ２２においてＲＥＳ３２の応答信号がオフであると判定すると、通信部１４に開始信号を入力し、通信部１４による通信部２４とのシリアル通信を開始させる（Ｓ２３）。また、Ｓ２３において演算部１２は、通信状態変数の値をＴＲＡＮＳとする。さらに、Ｓ２３において演算部１２は、ＲＥＳ待ち変数の値をオフとする。
【００７２】
次に、演算部１２は、送信禁止変数の値をオフとする（Ｓ２４）。これにより、メインマイコン１０が送信禁止状態であった場合に、送信禁止状態が解除される。演算部１２がＳ２４の処理を行うことで、次回の１０ｍｓタスク処理が起床したタイミングでは、送信禁止変数がオフとなっている。演算部１２は、Ｓ２４の処理を行った後、１０ｍｓタスク処理を終了する。
【００７３】
演算部１２は、Ｓ２２においてＲＥＳ３２の応答信号がオンであると判定すると、ＲＥＳ待ち変数の値をオンにする（Ｓ２５）。これにより、メインマイコン１０は、ＲＥＳ待ち状態となる。メインマイコン１０は、ＲＥＳ待ち状態になることで、サブマイコン２０の通信準備が完了するとともにＲＥＳ割り込み処理によってシリアル通信が開始されるのを待機する。演算部１２は、Ｓ２５の処理を行った後、Ｓ２４の処理を行い、１０ｍｓタスク処理を終了する。
【００７４】
演算部１２は、Ｓ２０において送信禁止変数の値がオンであると判定すると、Ｓ２１〜Ｓ２３、及び、Ｓ２５の処理を行うことなくＳ２４の処理を行う。そのため、Ｓ２０において送信禁止変数の値がオンであると演算部１２が判定すると、通信部１４はメインデータを通信部２４へ送信しない。以上によれば、演算部１２は、結果取得処理で通信部１４の通信状態を判定するとともに、判定結果に応じて通信部１４によるメインデータの送信を禁止する。演算部１２においてＳ１９の処理を行う機能は、特許請求の範囲に記載の通信制御部に相当する。
【００７５】
次に、ＲＥＳ待ち処理について図４のフローチャートを参照して説明する。
【００７６】
ＲＥＳ待ち処理は、メインマイコン１０が、１０ｍｓタスク処理でシリアル通信が開始せず、サブマイコン２０の通信準備を待機している場合に、サブマイコン２０の通信準備の完了に応じてシリアル通信を開始させるための処理である。ＲＥＳ３２の応答信号がオフからオンになったのを検出すると、メインマイコン１０は、ＲＥＳ割り込み処理を起床する。ＲＥＳ割り込み処理において演算部１２は、先ず、ＲＥＳ待ち変数の値がオンであるか否かを判定する（Ｓ４０）。すなわち、演算部１２は、Ｓ２５の処理を行ったか否かを判定する。
【００７７】
演算部１２は、Ｓ４０においてＲＥＳ待ち変数の値がオンであると判定すると、通信部１４に開始信号を入力して、通信部２４とのシリアル通信を開始させる（Ｓ４１）。また、Ｓ４１において演算部１２は、通信状態変数の値をＴＲＡＮＳとする。さらに、Ｓ４１において演算部１２は、ＲＥＳ待ち変数の値をオフとする。
【００７８】
演算部１２は、Ｓ４１の処理を行った後、ＲＥＳ割り込み処理を終了する。演算部１２は、Ｓ４０においてＲＥＳ待ち変数の値がオフであると判定すると、Ｓ４１の処理を行うことなく、ＲＥＳ割り込み処理を終了する。
【００７９】
次に、１ｍｓタスク処理について図５のフローチャートを参照して説明する。
【００８０】
サブマイコン２０は、電子制御装置１００に電源が入力されると、１ｍｓタスクを起床する。１ｍｓタスク処理は、シリアル通信の完了を判定するために実行される処理である。サブマイコン２０は、１ｍｓが経過した毎に、この１ｍｓタスクを起床する。１ｍｓタスクにおいて演算部２２は、先ず、ＲＥＳ３２の応答信号の電圧レベルを検出するための信号を取得する。具体的には、通信部２４が、ＲＥＳ３２の応答信号の電圧レベルを検出し、検出したＲＥＳ３２の応答信号の電圧レベルを示す信号を演算部２２に入力する。そして、演算部２２は、ＲＥＳ３２の応答信号がオフであるか否かを判定する（Ｓ５０）。
【００８１】
演算部２２は、Ｓ５０においてＲＥＳ３２の応答信号がオフであると判定すると、通信状態変数の値がＴＲＡＮＳであるか否かを判定する（Ｓ５１）。通信状態変数の値がＴＲＡＮＳの場合、通信部２４は通信部１４とシリアル通信中であるか、シリアル通信が完了している。
【００８２】
演算部２２は、Ｓ５１において通信状態変数の値がＴＲＡＮＳであると判定すると、通信部２４がシリアル通信中であるか否かを判定する（Ｓ５２）。演算部２２は、Ｓ５２においてシリアル通信中であると判定すると、シリアル通信をタイムアウトするか否かを判定する（Ｓ５３）。詳しく言うと、演算部２２は、通信部２４におけるシリアル通信の開始から所定時間が経過したか否かを判定する。Ｓ５３において演算部２２は、シリアル通信に掛かる時間が閾値よりも長い場合に、シリアル通信をタイムアウトすると判定する。
【００８３】
またＳ５３において演算部２２は、シリアル通信を開始させた同期タスク処理に掛かった時間が、閾値よりも長いか否かを判定する。シリアル通信を開始させた同期タスク処理とは、サブマイコン２０が完了させた直近の同期タスク処理である。演算部２２は、シリアル通信を開始させた同期タスク処理に掛かった時間が閾値よりも長い場合に、シリアル通信をタイムアウトすると判定する。
【００８４】
演算部２２は、Ｓ５３においてシリアル通信をタイムアウトすると判定すると、通信部２４にキャンセル信号を入力して、シリアル通信をキャンセルさせる（Ｓ５４）。これにより、通信部１４及び通信部２４のシリアル通信は終了する。
【００８５】
次に、演算部２２は、通信結果変数の値をＮＧとする（Ｓ５５）。そして演算部２２は、通信状態変数の値をＩＤＬＥとする（Ｓ５６）。次に演算部２２は、ＲＥＳ３２の応答信号の電圧レベルを変更するための信号を通信部２４に入力する。これにより通信部２４は、ＲＥＳ３２の応答信号をオフからオンにする（Ｓ５７）。演算部２２は、通信部２４に信号を入力した後、１ｍｓタスク処理を終了する。
【００８６】
Ｓ５２においてシリアル通信中ではないと演算部２２が判定すると、シリアル通信が完了している。演算部２２は、Ｓ５２においてシリアル通信中ではないと判定すると、通信部２４の受信したメインデータが正常であるか否かを判定する（Ｓ５８）。例えば、Ｓ５８において演算部２２は、パリティチェックや、チェックサムを用いた検査を行うことで、受信したメインデータが正常であるか否かを判定する。
【００８７】
演算部２２は、Ｓ５８においてメインデータが正常であると判定すると、通信結果変数の値をＯＫとする（Ｓ５９）。演算部２２は、Ｓ５９の処理を行った後、Ｓ５６及びＳ５７の処理を行い、１ｍｓタスク処理を終了する。
【００８８】
演算部２２は、Ｓ５８においてメインデータが正常ではないと判定すると、通信結果変数の値をＮＧとする（Ｓ６０）。演算部２２は、Ｓ６０の処理を行った後、Ｓ５６及びＳ５７の処理を行い、１ｍｓタスク処理を終了する。
【００８９】
次に、同期タスク処理を起動するためのＲＥＱ割り込み処理について図６のフローチャートを参照して説明する。
【００９０】
ＲＥＱ３０の要求信号がオフからオンになったのを検出すると、サブマイコン２０は、図６に示すＲＥＱ割り込み処理を起床する。ＲＥＱ割り込み処理において、演算部２２は、通信状態変数の値をＨＳとする（Ｓ７０）。次に、演算部２２は、図７に示す同期タスク処理を起床する（Ｓ７１）。演算部２２は、Ｓ７１の処理を行った後、ＲＥＱ割り込み処理を終了する。
【００９１】
次に、同期タスク処理について図７のフローチャートを参照して説明する。
【００９２】
同期タスク処理において演算部２２は、先ず、通信結果変数の値がＯＫであるか否かを判定する（Ｓ８０）。すなわち、演算部２２は、１ｍｓタスク処理においてＳ５９の処理を行ったか否かを判定する。Ｓ８０において通信結果変数の値がＯＫであると演算部２２が判定すると、シリアル通信が完了しており、受信したメインデータが正常である。
【００９３】
演算部２２は、Ｓ８０において通信結果変数の値がＯＫであると判定すると、通信部２４が受信したメインデータを記憶部２６から取得する（Ｓ８１）。
【００９４】
演算部２２は、Ｓ８１の処理を行った後、Ｓ８１で取得したメインデータに基づきＡＰＰ処理を行う（Ｓ８２）。演算部２２は、Ｓ８１で取得したメインデータ、及び、外部信号Ｂに基づき、サブデータの生成を開始する。演算部２２においてＳ８２の処理を行う機能は、特許請求の範囲に記載のサブデータ生成部に相当する。
【００９５】
サブデータの生成が完了した場合、演算部２２は、メインマイコン１０へ送信するサブデータを通信部２４のデータバッファにセットする（Ｓ８３）。言い換えると、演算部２２は、Ｓ８２で生成したサブデータを通信部２４のデータバッファにセットする。すなわち、演算部２２は、通信部２４にサブデータを入力する。
【００９６】
次に、演算部２２は、通信状態変数の値をＴＲＡＮＳにする（Ｓ８４）。また、Ｓ８４において演算部２２は、通信結果変数の値をＵＮＦＩＸにする。これらにより、通信状態変数及び通信結果変数は、サブマイコン２０がシリアル通信を行うことを示す値となる。なお、演算部２２は、サブデータの生成が完了しない場合、及び、サブデータを通信部２４のデータバッファにセットする処理が完了しない場合であっても、Ｓ８４の処理を行う。
【００９７】
次に、演算部２２は、メインマイコン１０に送信するためのサブデータを通信部２４のデータバッファにセットする処理が完了したか否かを判定する（Ｓ８５）。これにより、演算部２２は、サブマイコン２０におけるメインマイコン１０との通信準備が完了しているか否かを判定することができる。
【００９８】
演算部２２は、Ｓ８５においてサブデータのセットが完了していないと判定すると、再びＳ８５の判定を行う。よって演算部２２は、Ｓ８５においてサブデータのセットが完了したと判定するまで、Ｓ８５の判定を繰り返し行う。
【００９９】
演算部２２は、Ｓ８５においてサブデータのセットが完了したと判定すると、通信部２４に開始信号を入力する。これにより、通信部２４は、メインマイコン１０の通信準備が完了している場合に、通信部１４とのシリアル通信を開始する（Ｓ８６）。また、Ｓ８６において演算部２２は、ＲＥＳ３２の応答信号の電圧レベルを変更するための信号を通信部２４に入力する。これにより通信部１４は、ＲＥＳ３２の応答信号をオンからオフにする。演算部２２は、Ｓ８６の処理を行った後、同期タスク処理を終了する。
【０１００】
メインマイコン１０の通信準備が完了していない場合、サブマイコン２０は、メインマイコン１０の通信準備が完了するまで待機する。すなわち、サブマイコン２０は、メインマイコン１０からメインデータが送信されるのを待機する。そして、サブマイコン２０は、メインマイコン１０からのメインデータを受信すると、シリアル通信を開始する。例えば、サブマイコン２０は、メインデータの受信が完了した場合に、サブデータをメインマイコン１０に送信する。
【０１０１】
Ｓ８０において通信結果変数の値がＯＫではないと演算部２２が判定すると、サブマイコン２０は、シリアル通信において正常なメインデータを受信していない。演算部２２は、Ｓ８０において通信結果変数の値がＯＫではないと判定すると、Ｓ８１の処理を行うことなく、Ｓ８２の処理を行う。この場合、Ｓ８２において演算部２２は、直近のシリアル通信で通信部２４が受信したメインデータを用いることなく、データの受信が正常に完了した最新のシリアル通信で受信したサブデータに基づき、サブデータを生成する。ここで、データの受信が正常に完了した最新のシリアル通信とは、直近のシリアル通信よりも前に行われたものであって、メインデータの受信を正常に完了した通信である。
【０１０２】
次に、図８〜図１１に基づき、１０ｍｓタスク処理におけるメインマイコン１０の動作、及び、同期タスク処理におけるサブマイコン２０の動作について説明する。なお、図８〜図１１では、１０ｍｓタスク処理を単に１０ｍと示している。また、図８〜図１１では、同期タスク処理を単に同期と示している。
【０１０３】
図８では、１０ｍｓタスク処理が終了してから次の１０ｍｓタスク処理が起床するまでに、シリアル通信においてデータの送受信が正常に完了した場合を示している。１０ｍタスク処理が起床すると、メインマイコン１０は、シリアル通信で受信したサブデータが正常であると判定して、結果取得処理におけるＳ３５とＳ３７、Ｓ１１、及び、Ｓ１２の処理を行う。これにより、メインマイコン１０の通信状態変数の値がＩＤＬＥとなる。
【０１０４】
そして、時間ｔ１になると、メインマイコン１０は、Ｓ１３の処理によりサブマイコン２０に対して通信準備の要求を行う。これにより、通信状態変数の値がＨＳとなるとともに、ＲＥＱ３０の要求信号がオフからオンとなる。メインマイコン１０からの要求により、同期タスク処理が起床し、サブマイコン２０の通信状態変数の値がＨＳとなる。同期タスクの起床により、サブマイコン２０は、サブデータの生成を開始する。
【０１０５】
時間ｔ１から時間が経過して時間ｔ２になると、同期タスク処理によってサブマイコン２０によるサブデータの生成が終了するとともに通信準備が完了する。これにより、同期タスク処理においてサブマイコン２０は、Ｓ８４の処理により、通信状態変数の値をＨＳからＴＲＡＮＳにするとともに、通信結果変数の値をＯＫからＵＮＦＩＸにする。また、時間ｔ２においてサブマイコン２０は、Ｓ８６の処理によりＲＥＳ３２の応答信号をオンからオフにする。すなわち、時間ｔ２においてサブマイコン２０は、メインマイコン１０に対して通信準備が完了したことを通知する。そしてサブマイコン２０は、同期タスク処理を終了する。
【０１０６】
時間ｔ２から時間が経過して時間ｔ３になると、メインマイコン１０は、１０ｍｓタスク処理においてメインデータの生成を終了する。時間ｔ２から時間ｔ３までの間では、メインマイコン１０が通信準備を完了していないため、サブマイコン２０はメインマイコン１０の通信準備を待機している。そして、メインマイコン１０は、ＲＥＳ３２の応答信号がオフになっていることを検出すると、サブマイコン２０の通信準備が完了していると判定し、サブマイコン２０とシリアル通信を開始する。時間ｔ３では、メインマイコン１０が通信を開始するため、メインマイコン１０の通信状態変数の値がＨＳからＴＲＡＮＳとなる。そして、１０ｍタスク処理は、終了する。
【０１０７】
時間ｔ３から時間が経過して時間ｔ４になると、シリアル通信においてデータの送受信が正常に完了する。そして、時間ｔ４から時間が経過して時間ｔ５になると、１ｍｓタスク処理においてサブマイコン２０は、シリアル通信において受信したメインデータが正常であると判定し、通信結果変数の値をＵＮＦＩＸからＯＫとする。また時間ｔ５においてサブマイコン２０は、シリアル通信が完了したとして、通信状態変数の値をＴＲＡＮＳからＩＤＬＥとし、ＲＥＳ３２の応答信号をオフからオンとする。時間ｔ５から時間が経過して時間ｔ６になると、メインマイコン１０は、１０ｍｓタスク処理を起床する。
【０１０８】
図９では、１０ｍｓタスク処理が終了してから開始されたシリアル通信においてデータの送受信が、次の１０ｍｓタスク処理が起床した後まで続き、１０ｍｓタスク処理の途中で正常に完了する場合を示している。時間ｔ７においてメインマイコン１０は、通信準備を完了し、１０ｍｓタスク処理を終了している。時間ｔ７においてサブマイコン２０の通信準備が完了していないため、メインマイコン１０は、ＲＥＳ待ち状態となる。時間ｔ７から時間が経過して時間ｔ８になると、サブマイコン２０は、通信準備を完了し、ＲＥＳ３２の応答信号をオンからオフとする。そして、サブマイコン２０は、同期タスク処理を終了する。ＲＥＳ３２の応答信号がオフとされたことによりメインマイコン１０のＲＥＳ割り込み処理が起床し、メインマイコン１０及びサブマイコン２０はシリアル通信を開始する。
【０１０９】
時間ｔ８から時間が経過して時間ｔ９になると、メインマイコン１０は、１０ｍｓタスク処理を開始する。なお、時間ｔ９においてメインマイコン１０及びサブマイコン２０は、シリアル通信中である。時間ｔ９の直後においてメインマイコン１０は、サブマイコン２０とシリアル通信中であると判定し、結果取得処理のＳ３４の処理により通信結果変数の値をＴＲＡＮＳにする。時間ｔ９において開始した１０ｍｓタスク処理においてメインマイコン１０は、サブマイコン２０とシリアル通信中であるため、サブマイコン２０に対して同期タスク処理を起床させない。すなわち、メインマイコン１０は、Ｓ１３の処理を行わない。
【０１１０】
時間ｔ９から時間が経過して時間ｔ１０になると、メインマイコン１０及びサブマイコン２０は、時間ｔ８で開始したシリアル通信を完了する。時間ｔ１０においてメインマイコン１０は、１０ｍｓタスク処理を行っている。
【０１１１】
時間ｔ１０から時間が経過して時間ｔ１１になると、１ｍｓタスク処理においてサブマイコン２０は、Ｓ５８の処理においてシリアル通信で受信したメインデータが正常であると判定し、Ｓ５９の処理により通信結果変数の値をＵＮＦＩＸからＯＫとする。また時間ｔ１１においてサブマイコン２０は、シリアル通信が完了したとして、Ｓ５６の処理により通信状態変数の値をＴＲＡＮＳからＩＤＬＥとして、Ｓ５７の処理によりＲＥＳ３２の応答信号をオフからオンとする。
【０１１２】
時間ｔ１１から時間が経過して時間ｔ１２になると、メインマイコン１０は、メインデータの生成を終了し、時間ｔ９で開始した１０ｍｓタスク処理を終了する。そして、時間ｔ１２から時間が経過して時間ｔ１３になると、メインマイコン１０は、１０ｍｓタスク処理を起床する。時間ｔ１３の直後においてメインマイコン１０は、シリアル通信で受信したサブデータが正常であると判定し、結果取得処理においてＳ３７の処理により通信結果変数の値をＯＫとする。
【０１１３】
図１０では、シリアル通信に時間が掛かったために通信がキャンセルされた例を示している。時間ｔ１４においてメインマイコン１０は、１０ｍｓタスク処理を終了している。時間ｔ１４から時間が経過して時間ｔ１５になると、サブマイコン２０が同期タスク処理を終了し、メインマイコン１０及びサブマイコン２０は、シリアル通信を開始する。
【０１１４】
時間ｔ１５から時間が経過して時間ｔ１６になると、メインマイコン１０は、１０ｍｓタスク処理を起床する。なお、時間ｔ１６においてメインマイコン１０及びサブマイコン２０は、シリアル通信中である。時間ｔ１６の直後においてメインマイコン１０は、結果取得処理におけるＳ３３の処理においてサブマイコン２０とシリアル通信中であると判定し、Ｓ３４の処理において通信結果変数の値をＴＲＡＮＳとする。時間ｔ１６で開始した１０ｍｓタスク処理においてメインマイコン１０は、サブマイコン２０とシリアル通信中であるため、サブマイコン２０に対して同期タスク処理を起床させない。すなわちメインマイコン１０は、Ｓ１３の処理を行わない。
【０１１５】
時間ｔ１６から時間が経過して時間ｔ１７になると、メインマイコン１０は、メインデータの生成を終了し、時間ｔ１６で開始した１０ｍｓタスク処理を終了する。時間ｔ１７においてメインマイコン１０及びサブマイコン２０は、シリアル通信中である。
【０１１６】
時間ｔ１７から時間が経過して時間ｔ１８になると、１ｍｓタスク処理においてサブマイコン２０は、シリアル通信に掛かる時間が閾値よりも長いと判定し、シリアル通信をキャンセルする。これにより、何らかの異常が生じてシリアル通信が長くなるのを抑制することができる。また、時間ｔ１８においてサブマイコン２０は、シリアル通信が終了したとして、通信状態変数の値をＴＲＡＮＳからＩＤＬＥとする。さらに、時間ｔ１８においてサブマイコン２０は、シリアル通信が完了し、且つ、シリアル通信で受信したメインデータが正常ではないと判定し、通信結果変数の値をＵＮＦＩＸからＮＧとする。そして時間ｔ１８おいてサブマイコン２０は、ＲＥＳ３２の応答信号をオフからオンとする。
【０１１７】
時間ｔ１８から時間が経過して時間ｔ１９になると、メインマイコン１０は、１０ｍｓタスク処理を起床する。時間ｔ１９の直後においてメインマイコン１０は、結果取得処理において、Ｓ３３の処理でシリアル通信が終了したと判定する。そして、結果取得処理においてメインマイコン１０は、Ｓ３６の処理においてシリアル通信で受信したサブデータが正常ではないと判定し、Ｓ３８の処理により通信結果変数をＮＧとする。
【０１１８】
図１１では、同期タスク処理に時間が掛かり、１０ｍｓタスク処理が終了した後もシリアル通信が開始されない例を示している。時間ｔ２０においてサブマイコン２０は、メインマイコン１０からの要求により、同期タスク処理を起床している。時間ｔ２０から時間が経過して時間ｔ２１になると、１０ｍｓタスク処理においてメインマイコン１０は、Ｓ１４によりメインデータの生成を終了し、Ｓ２５によりＲＥＳ待ち状態となる。そして、メインマイコン１０は、時間ｔ２１において１０ｍｓタスク処理を終了する。
【０１１９】
時間ｔ２１から時間が経過して時間ｔ２２になると、同期タスク処理においてサブマイコン２０は、シリアル通信を開始するために、Ｓ８４の処理により通信状態変数の値をＨＳからＴＲＡＮＳとする。またサブマイコン２０は、Ｓ８４の処理により通信状態変数の値をＯＫからＵＮＦＩＸとする。この例においてサブマイコン２０は、サブデータの生成に時間が掛かり、時間ｔ２２においてサブデータの生成中である。よって、サブマイコン２０は、サブデータのセットを完了せず、通信準備を完了させない。すなわち、サブマイコン２０は、Ｓ８５の判定を繰り返し行い、ＲＥＳ３２の応答信号をオフにしない。この場合、ＲＥＳ３２の応答信号がオフにならないため、シリアル通信は開始されない。
【０１２０】
時間ｔ２２から時間が経過して時間ｔ２３になると、メインマイコン１０は、１０ｍｓタスク処理を開始する。時間ｔ２３の直後においてメインマイコン１０は、結果取得処理において、シリアル通信が開始されなかったと判定し、Ｓ３９の処理により通信結果変数の値をＨＳとする。また、１０ｍｓタスク処理においてメインマイコン１０は、前回の１０ｍｓタスク処理をキャンセルするために、Ｓ１６の処理により通信状態変数の値をＩＤＬＥとする。
【０１２１】
時間ｔ２３から時間が経過して時間ｔ２４になると、メインマイコン１０は、メインデータの生成を完了し、時間ｔ２３で開始した１０ｍｓタスク処理を終了する。そして、時間ｔ２４から時間が経過して時間ｔ２５になると、メインマイコン１０は、１０ｍｓタスク処理を開始する。時間ｔ２５から時間が経過して時間ｔ２６になると、メインマイコン１０は、メインデータの生成を完了し、時間ｔ２５で開始した１０ｍｓタスク処理を終了する。
【０１２２】
時間ｔ２６から時間が経過して時間ｔ２７になると、サブマイコン２０は、サブデータのセットを完了させる。すなわち、サブマイコン２０は、通信準備を完了させる。これにより、同期タスク処理においてサブマイコン２０は、Ｓ８５の処理によりサブデータのセットが完了したと判定し、通信準備が完了したことをメインマイコン１０に通知するためにＳ８６の処理によりＲＥＳ３２の応答信号をオンからオフにする。そして、同期タスク処理は終了する。ＲＥＳ３２の応答信号がオフになることにより、メインマイコン１０は、ＲＥＳ割り込み処理を起床させる。ＲＥＳ割り込み処理においてメインマイコン１０は、Ｓ４０の処理によりＲＥＳ待ち状態であると判定し、Ｓ４１の処理によりサブマイコン２０とのシリアル通信を開始させる。
【０１２３】
時間ｔ２７から時間が経過した時間ｔ２８になると、サブマイコン２０は、１ｍｓタスク処理のＳ５３の処理により、シリアル通信を開始させた同期タスク処理に掛かった時間が閾値よりも長いと判定する。シリアル通信を開始させた同期タスク処理とは、時間ｔ２７に終了した同期タスク処理である。時間ｔ２８においてサブマイコン２０は、１ｍｓタスク処理のＳ５４の処理により、シリアル通信をキャンセルする。また、時間ｔ２８においてサブマイコン２０は、１ｍｓタスク処理のＳ５５の処理により通信結果変数をＮＧとして、Ｓ５６の処理により通信状態変数をＩＤＬＥとする。さらに、時間ｔ２８においてサブマイコン２０は、１ｍｓタスク処理のＳ５７の処理により、ＲＥＳ３２の応答信号をオフからオンにする。
【０１２４】
時間ｔ２８から時間が経過した時間ｔ２９になると、メインマイコン１０は、１０ｍｓタスク処理を起床する。時間ｔ２９の直後においてメインマイコン１０は、結果取得処理において、Ｓ３３の処理でシリアル通信が終了したと判定する。そして結果取得処理においてメインマイコン１０は、Ｓ３６の処理においてシリアル通信で受信したサブデータが正常ではないと判定し、Ｓ３８の処理により通信結果変数をＮＧとする。これによれば、何らかの異常が生じてサブマイコン２０の同期タスク処理に時間が掛かり過ぎた場合に、メインマイコン１０は、時間が掛かり過ぎた同期タスク処理で生成されたサブデータを用いずに、メインデータを生成する。
【０１２５】
次に、上記した電子制御装置１００の効果について説明する。
【０１２６】
本実施形態において、通信部１４が通信部２４に要求信号を送信することで、演算部２２がサブデータの生成を開始する。これによれば、メインマイコン１０は、サブデータにおける生成開始のタイミングを制御することができる。すなわち、メインマイコン１０は、サブデータにおける生成開始のタイミングを判断することができる。詳しく言うと、演算部１２は、サブデータの生成が開始したタイミングを判断して演算を行うことができる。
【０１２７】
また本実施形態において、演算部２２によるサブデータの生成が完了した場合、通信部２４は、ＲＥＳ３２の応答信号をオフにするとともに、通信部２４にサブデータを送信する。そして、通信部１４は、ＲＥＳ３２の応答信号がオフになると、通信部２４からサブデータを受信し、受信したサブデータを演算部１２に入力する。これによれば、演算部２２によるサブデータの生成が完了したタイミングで、サブデータが演算部１２に送信される。
【０１２８】
したがって、演算部１２は、サブデータが入力されたタイミングに基づき、サブデータの生成が完了したタイミングを判断することができる。すなわち、メインマイコン１０は、サブデータにおける生成完了のタイミングを判断することができる。詳しく言うと、演算部１２は、サブデータの生成が完了したタイミングを判断して演算を行うことができる。
【０１２９】
ところで、メインマイコン１０は、サブマイコン２０とシリアル通信中に、新たにメインデータをサブマイコン２０へ送信する場合、シリアル通信を一旦キャンセルする必要がある。シリアル通信がキャンセルされると、メインマイコン１０及びサブマイコン２０は、キャンセルされたシリアル通信で送受信されていたデータをＡＰＰ処理に用いることができない虞がある。すなわち、メインマイコン１０及びサブマイコン２０は、データを取りこぼす虞がある。
【０１３０】
これに対し、本実施形態においてメインマイコン１０は、サブマイコン２０とシリアル通信中の場合に送信禁止状態となる。これによれば、シリアル通信がキャンセルされるのを抑制することができる。したがって、メインマイコン１０及びサブマイコン２０によるデータの取りこぼしを抑制することができる。
【０１３１】
以上、本発明の好ましい実施形態について説明したが、本発明は上記実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【０１３２】
上記実施形態では、メインマイコン１０が周期的に１０ｍｓタスク処理を行う例を示したが、これに限定するものではない。メインマイコン１０は、メインデータを生成するとともに同期タスク処理の起床をサブマイコン２０に要求する処理を少なくとも１回行う構成であればよい。
【０１３３】
上記実施形態では、電子制御装置１００が、マイコンとして、メインマイコン１０とサブマイコン２０とを備える例を示したが、これに限定するものではない。電子制御装置１００が、ＣＰＵとして、メインＣＰＵとサブＣＰＵとを有する例を採用することもできる。この例においてメインＣＰＵは、特許請求の範囲に記載のメイン制御部に相当する。また、サブＣＰＵは、特許請求の範囲に記載のサブ制御部に相当する。この例では、メインＣＰＵ及びサブＣＰＵが、同じマイコンに形成されていてもよく、互いに別のマイコンに形成されていてもよい。
【０１３４】
上記実施形態において、メインマイコン１０がサブマイコン２０にメインデータを送信する例を示したが、これに限定するものではない。メインマイコン１０がサブマイコン２０にメインデータを送信しない例を採用することもできる。少なくとも、サブマイコン２０がサブデータをメインマイコン１０に送信し、メインマイコン１０がサブデータに基づき演算を行う構成であればよい。
【０１３５】
上記実施形態において、外部信号Ａがメインマイコン１０にのみ入力される信号を含むとともに、外部信号Ｂがサブマイコン２０にのみ入力される信号を含む例を示したが、これに限定するものではない。メインマイコン１０には、サブマイコン２０に入力される信号と同じ信号が入力される例を採用することもできる。この例では、演算部１２が演算部２２と同じ演算を行う。よって、演算部１２及び演算部２２が正常に演算を行った場合、メインデータはサブデータと一致する。
【０１３６】
そして、演算部１２は、生成したメインデータと、サブマイコン２０から受信したサブデータがメインデータと、が一致するか否かを判定する。これにより、演算部１２は、演算結果であるメインデータの信頼性を判定する。メインデータがサブデータと一致しない場合において演算部１２は、メインデータがサブデータと一致する場合と異なる制御を制御対象に対して行う。また、メインデータがサブデータと一致しない場合において演算部１２は、制御対象に対して制御を行わない例を採用することもできる。
【符号の説明】
【０１３７】
１０…メインマイコン、１２…演算部、１４…通信部、１６…記憶部、２０…サブマイコン、２２…演算部、２４…通信部、２６…記憶部、３４…クロックライン、３６…メインデータライン、３８…サブデータライン、１００…電子制御装置、２００…外部機器
【図１】
0006614000.tif 000002
【図２】
0006614000.tif 000003
【図３】
0006614000.tif 000004
【図４】
0006614000.tif 000005
【図５】
0006614000.tif 000006
【図６】
0006614000.tif 000007
【図７】
0006614000.tif 000008
【図８】
0006614000.tif 000009
【図９】
0006614000.tif 000010
【図１０】
0006614000.tif 000011
【図１１】
0006614000.tif 000012