(57)【特許請求の範囲】
【請求項１】
複数の通信装置が所定の通信周期でデータの送受信を行う通信システムにおける通信装置であって、
前記通信システムにおける通信は、同時に複数の装置からの送信を行うことができない通信方式で行うものであり、
前記データの送信エラーが検出された場合に、当該データの再送処理を行う再送手段と、
前記通信周期における１周期内に検出された送信エラーの検出回数または継続時間が第１の閾値を超えた場合に、当該通信周期における前記再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると前記再送処理の禁止を解除する再送制御手段と、
送信エラーの検出回数または継続時間が前記第１の閾値よりも高い第２の閾値を超えた場合に、通信異常が発生していると判断する異常検出手段と、
前記異常検出手段によって異常が検出された場合に、送信処理を禁止する異常時制御手段を備え、
前記異常時制御手段は、
異常を検出して送信処理を禁止した通信周期が終了して次の通信周期が開始されても送信処理の禁止を解除しないことを特徴とする通信装置。
【請求項２】
前記異常時制御手段は、
電源が少なくともオンまたはオフされた際に送信処理の禁止を解除することを特徴とする請求項１に記載の通信装置。
【請求項３】
複数の通信装置が所定の通信周期でデータの送受信を行う通信システムにおける通信装置であって、
前記通信システムにおける通信は、同時に複数の装置からの送信を行うことができない通信方式で行うものであり、
前記データの送信エラーが検出された場合に、当該データの再送処理を行う再送手段と、
前記通信周期における１周期内に検出された送信エラーの検出回数または継続時間が第１の閾値を超えた場合に、当該通信周期における前記再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると前記再送処理の禁止を解除する再送制御手段と
を備え、
前記再送制御手段は、
前記データの送信エラーが検出された場合に、前記所定の通信周期において受信する必要がある残りのデータを全て受信するまでに要する時間と前記所定の通信周期の残り時間とに基づいて前記第１の閾値を決定することを特徴とする通信装置。
【請求項４】
複数の通信装置が所定の通信周期でデータの送受信を行う通信システムにおける通信装置であって、
前記通信システムにおける通信は、同時に複数の装置からの送信を行うことができない通信方式で行うものであり、
前記データの送信エラーが検出された場合に、当該データの再送処理を行う再送手段と、
前記通信周期における１周期内に検出された送信エラーの検出回数または継続時間が第１の閾値を超えた場合に、当該通信周期における前記再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると前記再送処理の禁止を解除する再送制御手段と
を備え、
前記所定の通信周期において受信する必要があるデータの受信が完了しなかった場合には、当該所定の通信周期よりも前の通信周期において受信したデータを当該所定の通信周期において受信したデータとして取り扱うことを特徴とする通信装置。
【請求項５】
複数の通信装置が所定の通信周期でデータの送受信を行う通信システムにおける通信装置であって、
前記通信システムにおける通信は、同時に複数の装置からの送信を行うことができない通信方式で行うものであり、
前記データの送信エラーが検出された場合に、当該データの再送処理を行う再送手段と、
前記通信周期における１周期内に検出された送信エラーの検出回数または継続時間が第１の閾値を超えた場合に、当該通信周期における前記再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると前記再送処理の禁止を解除する再送制御手段と、
受信バッファへ格納されたデータが前記通信周期の開始を示すデータであった場合に、前記所定の通信周期内に送信する必要がある全てのデータを送信バッファへ一括して格納する制御手段と
を備えたことを特徴とする通信装置。
【請求項６】
所定の制御周期で行われる所定の演算処理に用いるデータとして、前記通信周期における１周期内に、所定量のデータを受信する必要がある制御装置に設けられることを特徴とする請求項１〜５のいずれか一つに記載の通信装置。
【請求項７】
複数の通信装置の送信処理が同時に発生した場合には、他の通信装置よりも送信処理が優先されることを特徴とする請求項１〜６のいずれか一つに記載の通信装置。
【請求項８】
第１の通信装置および第２の通信装置が所定の通信周期でデータの送受信を行う通信システムであって、
前記第１の通信装置と第２の通信装置との間の通信は、同時に両装置からの送信を行うことができない通信方式で行うものであり、
前記第１の通信装置は、
前記データの送信エラーが検出された場合に、当該データの再送処理を行う再送手段と、
前記通信周期における１周期内に検出された送信エラーの検出回数または継続時間が第１の閾値を超えた場合に、当該通信周期における前記再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると前記再送処理の禁止を解除する再送制御手段と、
送信エラーの検出回数または継続時間が前記第１の閾値よりも高い第２の閾値を超えた場合に、通信異常が発生していると判断する異常検出手段と、
前記異常検出手段によって異常が検出された場合に、送信処理を禁止する異常時制御手段を備え、
前記異常時制御手段は、
異常を検出して送信処理を禁止した通信周期が終了して次の通信周期が開始されても送信処理の禁止を解除しないことを特徴とする通信システム。
【請求項９】
第１の通信装置および第２の通信装置が所定の通信周期でデータの送受信を行う通信システムであって、
前記第１の通信装置と第２の通信装置との間の通信は、同時に両装置からの送信を行うことができない通信方式で行うものであり、
前記第１の通信装置は、
前記データの送信エラーが検出された場合に、当該データの再送処理を行う再送手段と、
前記通信周期における１周期内に検出された送信エラーの検出回数または継続時間が第１の閾値を超えた場合に、当該通信周期における前記再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると前記再送処理の禁止を解除する再送制御手段と
を備え、
前記再送制御手段は、
前記データの送信エラーが検出された場合に、前記所定の通信周期において受信する必要がある残りのデータを全て受信するまでに要する時間と前記所定の通信周期の残り時間とに基づいて前記第１の閾値を決定することを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、通信装置および通信装置間で通信を行う通信システムに関する。
【背景技術】
【０００２】
従来、エンジンＥＣＵ（Electronic  Control  Unit）やモータＥＣＵといった電子制御ユニット間における通信方式として、ＣＡＮ（Controller  Area  Network）通信が知られている。ＣＡＮ通信は、電子制御ユニット間で送受信される各種データの伝送をＣＡＮバスと呼ばれる通信線を用いて行うものであり、安価で自由度の高い通信方式として広く利用されている。
【０００３】
ＣＡＮ通信では、マスタやスレーブといった主従関係を決めず、それぞれの電子制御ユニットが任意のタイミングでデータの送信を行う所謂マルチマスタ方式が採用されている。ここで、マルチマスタ方式を採用した場合、ＣＡＮバスに対して複数の電子制御ユニットからデータが同時に送信されることがあるが、１つのＣＡＮバス上で複数のデータが同時に存在することはできない。このため、ＣＡＮ通信では、データごとに優先順位を設け、優先順位の高いデータから順に伝送を行う通信調停を行うことによって通信の衝突を回避している。
【０００４】
また、ＣＡＮ通信では、データの送信エラーが発生すると、かかるデータの再送処理を行うこととしている。さらに、近年では、再送処理が所定時間繰り返された場合に、再送処理を停止する技術も知られている。たとえば、特許文献１に記載の技術では、送信エラーが所定時間継続するまでの間は再送処理を繰り返し、所定時間が経過すると、かかる送信エラーが電子制御ユニットの故障等による永続的なエラーであると判定し、再送データを含む全てのデータの送信を停止する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１４７５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術には、電子制御ユニット同士が所定の通信周期でデータの送受信を繰り返す場合に、再送処理が繰り返されることで、通信周期内に受信すべきデータの受信を通信周期内に行うことができない状態が発生するおそれがあった。
【０００７】
特に、送信エラーとなったデータの優先順位が高いと、かかるデータの再送が繰り返されている間、かかるデータよりも優先順位の低いデータが送信されなくなる。このため、優先順位の低いデータを通信周期内に送信することができない状態が発生する可能性が高い。
【０００８】
開示の技術は、上述した従来技術による問題点を解消するためになされたものであり、送信エラーが発生した場合であっても、所定の通信周期において受信すべきデータの取りこぼしを防止することができる通信装置および通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願は、複数の通信装置が所定の通信周期でデータの送受信を行う通信システムにおける通信装置であって、前記通信システムにおける通信は、同時に複数の装置からの送信を行うことができない通信方式で行うものであり、前記データの送信エラーが検出された場合に、当該データの再送処理を行う再送手段と、前記通信周期における１周期内に検出された送信エラーの検出回数または継続時間が第１の閾値を超えた場合に、当該通信周期における前記再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると前記再送処理の禁止を解除する再送制御手段と、送信エラーの検出回数または継続時間が前記第１の閾値よりも高い第２の閾値を超えた場合に、通信異常が発生していると判断する異常検出手段と、前記異常検出手段によって異常が検出された場合に、送信処理を禁止する異常時制御手段を備え、前記異常時制御手段は、異常を検出して送信処理を禁止した通信周期が終了して次の通信周期が開始されても送信処理の禁止を解除しないことを備えたことを特徴とする。
【発明の効果】
【００１０】
本願によれば、送信エラーが発生した場合であっても、所定の通信周期において受信すべきデータを受信できない状態が発生することを防止することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、本願に係る通信手法の概要を示す図である。
【図２】図２は、実施例１に係る通信システムの構成例を示す図である。
【図３】図３は、ＨＶ−ＥＣＵおよびモータＥＣＵの構成を示すブロック図である。
【図４】図４は、フレームデータのフレーム構成の一例を示す図である。
【図５】図５は、通信周期内に送信すべきデータと開始ＩＤとの対応関係の一例を示す図である。
【図６】図６は、ＨＶ−ＥＣＵおよびモータＥＣＵの動作例を示す図である。
【図７】図７は、ＣＡＮプロトコルに基づくデータ出力処理の一例を示す図である。
【図８】図８は、通信部および再送制御部の動作例を示す図である。
【図９】図９は、閾値決定処理の一例を示す図である。
【図１０】図１０は、所定の通信周期におけるＨＶ−ＥＣＵおよびモータＥＣＵの通信タイミングの一例を示すタイミングチャートである。
【図１１】図１１は、送信処理の処理手順を示すフローチャート（その１）である。
【図１２】図１２は、送信処理の処理手順を示すフローチャート（その２）である。
【図１３】図１３は、実施例２に係る再送制御処理の一例を示す図である。
【図１４】図１４は、実施例３に係るＨＶ−ＥＣＵおよびモータＥＣＵの構成を示すブロック図である。
【図１５】図１５は、再送制御部および異常検出部の動作例を示す図（その１）である。
【図１６】図１６は、再送制御部および異常検出部の動作例を示す図（その２）である。
【図１７】図１７は、異常判定カウンタのカウントパターンの一例を示す図である。
【図１８】図１８は、再送制御部および異常検出部の動作例を示す図（その３）である。
【図１９】図１９は、実施例３に係る送信処理の処理手順を示すフローチャートである。
【図２０】図２０は、異常判定処理の処理手順を示すフローチャート（その１）である。
【図２１】図２１は、異常判定処理の処理手順を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明に係る通信装置および通信システムの実施例を詳細に説明する。まず、実施例の詳細な説明に先立ち、本願に係る通信手法の概要について図１を用いて説明する。図１は、本願に係る通信手法の概要を示す図である。
【００１３】
従来の通信手法では、第１の通信装置および第２の通信装置が所定の通信周期でデータの送受信を行う場合に、送信エラーが発生して再送処理が繰り返されると、通信周期内に受信すべきデータの受信を通信周期内に行うことができない状態が発生するおそれがある。
【００１４】
特に、送信エラーとなったデータの優先順位が高いと、かかるデータの再送が繰り返されている間、かかるデータよりも優先順位の低いデータが送信されなくなる。
【００１５】
たとえばＣＡＮ通信のような、同時に複数の装置からの送信が行えない通信手法では、高い優先度のデータを送信して送信エラーを発生させている通信装置において、送信エラーが発生しているデータよりも低い優先順位のデータの送信が行われない状態となるとともに、同じ通信バスに接続された他の通信装置でも、通信バスが占有されているため、送信エラーが発生しているデータよりも低い優先順位のデータの送信ができない状態となる。このため、優先順位の低いデータを通信周期内に送信することができない状態が発生する可能性が高い。
【００１６】
そこで、本願に係る通信手法では、通信周期における１周期内に検出された送信エラーの検出回数が第１の閾値を超えた場合に、かかる通信周期における再送処理を禁止するとともに、かかる通信周期が終了して次の通信周期が開始されると再送処理の禁止を解除することとした。
【００１７】
図１に示すように、本願に係る通信手法では、データの送信エラーが検出されると（図１の（１）参照）、かかるデータの再送処理を行う（図１の（２）参照）。また、本願に係る通信手法では、今回の通信周期内における送信エラーの検出回数が第１の閾値を超えると（図１の（３）参照）、再送処理を禁止する（図１の（４）参照）。
【００１８】
さらに、本願に係る通信手法では、たとえば次回の通信周期が開始された場合に、再送処理の禁止状態を解除する（図１の（５）参照）。これにより、再送処理の禁止状態は、今回の通信周期においてのみ適用されることとなる。
【００１９】
このように、本願に係る通信手法では、データの送信エラーが検出された場合に、当該データの再送処理を行い、所定の通信周期における１周期内に検出された送信エラーの検出回数が第１の閾値を超えた場合に、当該通信周期における再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始されると再送処理の禁止を解除することとした。
【００２０】
すなわち、本願に係る通信手法では、１周期内における送信エラーの検出回数が第１の閾値を超えると、他のデータの送信に問題が生じる可能性があると判断して再送処理を禁止することとした。これにより、再送処理の繰り返しによってデータ受信が阻害されることを防止することができる。
【００２１】
ただし、かかる判定は、通信装置の故障等の永続的なエラーを判定するものではなく、受信データの取りこぼしを防止するための判定である。このため、再送処理を次回の通信周期において解除することとした。
【００２２】
したがって、本願に係る通信手法によれば、送信エラーが発生した場合であっても、所定の通信周期において受信すべきデータの取りこぼしを防止することができる。
【００２３】
なお、図１では、送信エラーの検出回数が第１の閾値を超えた場合に再送処理を禁止する場合の例を示したが、これに限ったものではなく、送信エラーの継続時間が第１の閾値を超えた場合に再送処理を禁止することとしてもよい。
【００２４】
また、本願に係る通信手法では、送信エラーが通信周期のどのタイミングで検出されたかに応じて第１の閾値を動的に変更することとしてもよい。たとえば、第１の閾値は、通信周期の残り時間と、残りのデータを全て受信するまでに要する時間とに基づいて決定することができる。なお、かかる点については後述する。
【００２５】
以下では、本願に係る通信手法を適用した通信装置および通信システムについての実施例を詳細に説明する。なお、以下の実施例では、通信システムの一例として、車載ＥＣＵ間の通信システムを用いて説明するが、これに限定されるものではなく、本願に係る通信手法は、他の通信装置間の通信システムにも適用可能である。
【００２６】
また、以下では、パワートレイン系ＥＣＵを制御するＨＶ−ＥＣＵ（Hybrid  Vehicle−ＥＣＵ）を第１の通信装置の一例とし、パワートレイン系ＥＣＵの一つであるモータＥＣＵを第２の通信装置の一例として説明する。
【実施例１】
【００２７】
まず、実施例１に係る通信システムの構成例について図２を用いて説明する。図２は、実施例１に係る通信システムの構成例を示す図である。
【００２８】
図２に示すように、本実施例に係る通信システムでは、ＨＶ−ＥＣＵ１とモータＥＣＵ２とが、ＣＡＮバスを介して相互に接続される。ＣＡＮバスは、ＣＡＮ＿ＨｉラインおよびＣＡＮ＿Ｌｏラインからなる２線式の通信線である。また、モータＥＣＵ２には、モータ３が接続されている。
【００２９】
かかる通信システムでは、マスタノードであるＨＶ−ＥＣＵ１が、モータＥＣＵ２等の車両に設けられた各種ＥＣＵと連携してモータ３やエンジン等の全体的な制御を行い、スレーブノードであるモータＥＣＵ２が、ＨＶ−ＥＣＵ１からの命令に従ってモータ３の具体的な制御を行う。
【００３０】
たとえば、ＨＶ−ＥＣＵ１は、モータ３のトルク指令値をＣＡＮバス経由でモータＥＣＵ２へ送信する。また、モータＥＣＵ２は、ＨＶ−ＥＣＵ１からＣＡＮバス経由でトルク指令値を受信すると、受信したトルク指令値に基づいてモータ３の制御を行う。また、モータＥＣＵ２は、モータ３への制御結果をＨＶ−ＥＣＵ１へ送信する。かかる一連の処理はあらかじめ決められた所定の通信周期内で行われる。
【００３１】
このように、本願の通信装置は、所定の制御周期で行われる所定の演算処理に用いるデータとして、通信周期における１周期内に、所定量のデータを受信する必要がある制御装置に対して設けられる。
【００３２】
ここで、「制御周期」とは、第１の通信装置で行われる所定の制御処理の処理周期のことであり、またここでは、所定の制御処理のために必要な、第１の通信装置および第２の通信装置間で行われる通信処理を完了させる必要がある期間のことでもある。「通信処理周期」とは、通信周期内に通信のために行う処理の処理周期である。なお、以下では、制御周期が通信周期と同じである場合の例について説明するが、制御周期は、通信周期と周期の長さや開始タイミングが異なってもよい。
【００３３】
ＨＶ−ＥＣＵ１は、ＣＡＮトランシーバ１１とマイコン１２とを備える。また、モータＥＣＵ２も同様に、ＣＡＮトランシーバ２１とマイコン２２とを備える。ここで、ＣＡＮトランシーバ１１，２１、マイコン１２，２２内のハードウェア部、ＣＡＮバスといったハードウェアは、ＣＡＮ通信用のハードウェアをそのまま流用したものである。すなわち、本実施例に係る通信システムは、ＣＡＮ通信と同様、安価な構成を用いて実現することが可能である。
【００３４】
なお、図２に示すように、ＨＶ−ＥＣＵ１は、モータＥＣＵ２と接続するためのＣＡＮバスとは別に、たとえばエンジンＥＣＵ４や電池ＥＣＵ５といった車両に設けられた様々なＥＣＵと接続するためのバス（たとえば、ＣＡＮバス）とも接続する。
【００３５】
また、図２に示すように、ＨＶ−ＥＣＵ１とモータＥＣＵ２とを接続するＣＡＮバスには、ＨＶ−ＥＣＵ１およびモータＥＣＵ２のみが接続されるものとするが、ＣＡＮバスには３つ以上の通信装置（ＥＣＵ）を接続することも可能である。
【００３６】
次に、ＨＶ−ＥＣＵ１およびモータＥＣＵ２の構成について図３を用いて説明する。なお、図３では、ＨＶ−ＥＣＵ１およびモータＥＣＵ２の特徴を説明するために必要な構成要素のみを示しており、一般的な構成要素についての記載を省略している。
【００３７】
図３に示すように、ＨＶ−ＥＣＵ１は、ＣＡＮトランシーバ１１およびマイコン１２を備える。マイコン１２は、通信部１２１と、送信バッファ１２２と、受信バッファ１２３と、レジスタ１２６と、プラットフォーム１２４と、制御部１２５とを備える。また、制御部１２５は、データ格納処理部１２５ａと、受信完了処理部１２５ｂと、再送制御部１２５ｃとを備える。
【００３８】
また、モータＥＣＵ２は、ＣＡＮトランシーバ２１と、マイコン２２とを備える。また、マイコン２２は、通信部２２１と、送信バッファ２２２と、受信バッファ２２３と、プラットフォーム２２４と、制御部２２５とを備える。また、制御部２２５は、ＩＤ読取部２２５ａと、データ格納処理部２２５ｂとを備える。
【００３９】
まず、ＨＶ−ＥＣＵ１の構成について説明する。ＣＡＮトランシーバ１１は、マイコン１２およびＣＡＮバス間のインタフェース用ＩＣ（Integrated  Circuit）である。具体的には、ＣＡＮトランシーバ１１は、マイコン１２で生成されたデータをＣＡＮバスへ出力するとともに、ＣＡＮバスから入力されたデータをマイコン１２へ出力する。
【００４０】
マイコン１２は、モータＥＣＵ２との間の通信をＣＡＮプロトコルに従って制御するマイクロコンピュータである。ここで、かかるマイコン１２のうち、通信部１２１、送信バッファ１２２、受信バッファ１２３およびレジスタ１２６は、ハードウェアで構成され、プラットフォーム１２４および制御部１２５は、ソフトウェアで構成される。
【００４１】
通信部１２１は、データの送受信をＣＡＮプロトコルに従って実行するハードウェア部である。具体的には、通信部１２１は、送信バッファ１２２にデータが格納された場合に、かかる送信バッファ１２２に格納されたデータをＣＡＮプロトコルに従ってＣＡＮトランシーバ１１経由でＣＡＮバスへ出力する。また、通信部１２１は、ＣＡＮトランシーバ１１からデータを受け取った場合には、受け取ったデータを受信バッファ１２３へ格納する。ＣＡＮプロトコルに基づき実行されるデータ送信処理（通信調停）の具体例については、図７を用いて後述することとする。
【００４２】
また、通信部１２１は、データの送信エラーが発生した場合に、かかるデータの再送処理を行う処理部でもある。具体的には、通信部１２１は、ＣＡＮバスへの出力したデータを一時的に保持する送信レジスタ１２１ａと、ＣＡＮバスから入力されたデータを一時的に保持する受信レジスタ１２１ｂとを備える。
【００４３】
通信部１２１が実行する再送処理について説明しておく。なお、かかる再送処理は、ＣＡＮプロトコルに従って通信部１２１が自動的に行う処理である。
【００４４】
通信部１２１は、送信バッファ１２２に格納されたデータをＣＡＮバスへ出力すると、自身がＣＡＮバスへ出力したデータをＣＡＮバスから取得して受信レジスタ１２１ｂへ格納する。
【００４５】
また、通信部１２１は、受信レジスタ１２１ｂに格納されたデータを参照し、ＣＡＮバスへのデータ出力が正常に行われたか否かをチェックする。そして、ＣＡＮバスへのデータ出力が正常に行われていない場合に、送信エラーが発生したことを検出し、送信レジスタ１２１ａに格納しておいたデータ、すなわち、送信エラーの対象となったデータを再度ＣＡＮバスへ出力する。
【００４６】
また、通信部１２１は、送信エラーを検出した場合には、レジスタ１２６の送信エラーフラグをオンにする処理を併せて行い、再送処理を行った場合には、送信エラーフラグをオフにする処理を併せて行う。
【００４７】
レジスタ１２６は、制御部１２５によって参照される各種のステータスフラグを保持する一時記憶部である。たとえば、レジスタ１２６は、送信エラーが発生したことを示す送信エラーフラグや、通信周期における最後の通信処理周期であることを示す最終フラグ、送信停止状態であることを示す送信停止フラグ等を保持する。
【００４８】
送信バッファ１２２は、他のＥＣＵ（ここでは、モータＥＣＵ２）に対して送信すべきデータを一時的に記憶するハードウェア部である。また、受信バッファ１２３は、他のＥＣＵ（ここでは、モータＥＣＵ２）から受信したデータを一時的に記憶するハードウェア部である。
【００４９】
なお、ＣＡＮトランシーバ１１、通信部１２１、送信バッファ１２２、受信バッファ１２３およびレジスタ１２６は、従来のＣＡＮ通信で用いられるＣＡＮトランシーバ、通信部、送信バッファ、受信バッファおよびレジスタを流用することができるが、これに限ったものではない。すなわち、本実施例に係る通信システム専用のトランシーバ、通信部、送信バッファ、受信バッファおよびレジスタを用いてもよい。
【００５０】
プラットフォーム１２４は、ソフトウェア部である制御部１２５によって生成されたデータをハードウェア部である送信バッファ１２２へ渡す処理を行う処理部である。また、プラットフォーム１２４は、ハードウェア部である受信バッファ１２３から受け取ったデータをソフトウェア部である制御部１２５へ渡す処理を行う処理部でもある。
【００５１】
制御部１２５は、たとえばＣＰＵ（Central  Processing  Unit）であり、モータＥＣＵ２との通信に関する処理等を実行するソフトウェア部である。かかる制御部１２５は、特に、データ格納処理部１２５ａと、受信完了処理部１２５ｂと、再送制御部１２５ｃとを備える。
【００５２】
データ格納処理部１２５ａは、モータＥＣＵ２への送信データをプラットフォーム１２４経由で送信バッファ１２２へ格納する処理部である。具体的には、データ格納処理部１２５ａは、モータＥＣＵ２へ送信すべきデータを所定のブロック（たとえば、４フレームごと）に分割し、かかる分割データを通信処理周期ごとに送信バッファ１２２へ格納する。
【００５３】
特に、データ格納処理部１２５ａは、所定の通信周期の開始時に、かかる通信周期の開始を示す開始ＩＤを含んだデータを送信バッファ１２２へ格納する。ここで、本実施例に係る通信システムにおいて送受信されるフレームデータのフレーム構成について図４を用いて説明する。図４は、フレームデータのフレーム構成の一例を示す図である。
【００５４】
図４に示すように、フレームデータには、たとえば０〜８Ｂｙｔｅのデータ情報が含まれる。また、フレームデータには、ＩＤが含まれる。ＩＤは、たとえば１１Ｂｉｔであらわされる値であり、従来のＣＡＮ通信においては、データの種別を示す情報であるとともに、通信調停におけるデータの優先順位を示す情報である。
【００５５】
フレームデータに含まれるＩＤには、通常のデータであり、「トルク指令値」や「モータ回転数」といったこのデータの種別と、このデータの優先順位を示す「通常ＩＤ」と、データの優先順位に加え、所定の通信周期の開始を示す「開始ＩＤ」や検査モードにモード移行することを指示する「検査ＩＤ」といった制御情報を含む「制御ＩＤ」の２種類のＩＤが存在する。
【００５６】
すなわち、本実施例に係る通信システムでは、従来のＣＡＮ通信で用いられるＩＤに「制御ＩＤ」を設け、この「制御ＩＤ」のひとつとして「開始ＩＤ」を設けることとしている。このように、「開始ＩＤ」は、データの優先順位を示す情報であり、かつ、所定の通信周期の開始を示す情報でもある。
【００５７】
なお、制御情報に付与する制御ＩＤを、通常データに付与する通常ＩＤとは別個に設けることとしてもよい。かかる場合の制御ＩＤは、従来のＣＡＮ通信で用いられるＩＤと同じビット数（ここでは、１１Ｂｉｔ）である必要はなく、より少ないビット数で表現することとしてもよい。
【００５８】
また、ここでは、所定の通信周期の開始を示す情報をＩＤに持たせることとしたが、これに限ったものではなく、たとえば、所定の通信周期の開始を示す命令情報をデータとして格納することとしてもよい。かかる場合、ＩＤは、通常ＩＤにおける何らかのデータをあらわすＩＤで、データ内容だけを命令情報に置き換えるようにしてもよいし、未使用のＩＤを命令情報送信用のＩＤとして用いてもよい。
【００５９】
また、データ格納処理部１２５ａは、送信バッファ１２２へデータを格納する場合、レジスタ１２６の送信停止フラグを参照し、かかる送信停止フラグがオフになっていれば、送信バッファ１２２へのデータ格納を行う。一方、データ格納処理部１２５ａは、送信停止フラグがオンになっている場合には、送信バッファ１２２へのデータ格納を行わない。かかる場合には、ＨＶ−ＥＣＵ１からのデータ送信が行われなくなる。
【００６０】
図３へ戻り、ＨＶ−ＥＣＵ１の制御部１２５についての説明を続ける。受信完了処理部１２５ｂは、モータＥＣＵ２から所定の通信周期内における最終フレームデータを受信した場合に、受信完了処理を行う処理部である。
【００６１】
たとえば、受信完了処理部１２５ｂは、モータＥＣＵ２から最終フレームデータを受信すると、サムチェックを実施し、モータＥＣＵ２から全てのフレームデータを正常に受信できたか否かを判定する。
【００６２】
再送制御部１２５ｃは、所定の通信周期における送信エラーの検出回数が第１の閾値を超えた場合に、かかる通信周期における再送処理を禁止する処理部である。また、再送制御部１２５ｃは、再送処理を禁止した通信周期が終了して次の通信周期が開始された場合に、再送処理の禁止を解除する処理も併せて行う。
【００６３】
具体的には、再送制御部１２５ｃは、レジスタ１２６の送信エラーフラグがオンになるごとに、送信判定カウンタをカウントアップする。そして、送信判定カウンタのカウント値が第１の閾値（以下、「送信停止判定閾値」と記載する）を超えると、通信部１２１に対して再送禁止命令を通知して、通信部１２１の再送処理機能をオフする。また、再送制御部１２５ｃは、通信部１２１に対して再送禁止命令を通知すると、送信判定カウンタのカウント値を０に戻す。
【００６４】
また、再送制御部１２５ｃは、送信判定カウンタのカウント値が送信停止判定閾値を超えると、レジスタ１２６の送信停止フラグをオンする。かかる送信停止フラグがオンされると、データ格納処理部１２５ａは、送信バッファ１２２へのデータ格納を停止する。
【００６５】
また、再送制御部１２５ｃは、通信周期における最後の通信処理周期が終了すると（すなわち、通信周期が終了すると）、通信部１２１に対して再送禁止解除命令を通知して通信部１２１の再送処理機能をオンする。これにより、通信部１２１の再送禁止状態が解除される。また、再送制御部１２５ｃは、通信周期における最後の通信処理周期が終了すると、レジスタ１２６の送信停止フラグをオフする。これにより、通信部１２１は、送信バッファ１２２へのデータ格納を再開する。
【００６６】
なお、再送制御部１２５ｃによって行われる再送制御処理の具体的な動作例については、図８を用いて後述することとする。
【００６７】
また、再送制御部１２５ｃは、通信周期内における送信エラーの検出タイミングに基づいて送信停止判定閾値を決定する閾値決定処理も併せて行う。かかる閾値決定処理により、残りのデータの受信に必要な時間を確保しつつ、再送処理をできるだけ長い間、また、多い回数続けさせることが可能となる。なお、かかる閾値決定処理の詳細については、図９を用いて後述する。
【００６８】
なお、図３では、制御部１２５が備える処理部として、データ格納処理部１２５ａ、受信完了処理部１２５ｂおよび再送制御部１２５ｃのみを示したが、制御部１２５は、モータＥＣＵ２から受信したデータを用いて所定の演算を行う演算処理部などの他の処理部を備えていてもよい。
【００６９】
次に、モータＥＣＵ２の構成について説明する。なお、モータＥＣＵ２のハードウェア、具体的には、ＣＡＮトランシーバ２１、通信部２２１、送信バッファ２２２および受信バッファ２２３は、ＨＶ−ＥＣＵ１のハードウェアと同一構成であるため、ここでの説明は省略する。また、プラットフォーム２２４についても、ＨＶ−ＥＣＵ１のプラットフォーム１２４と同様の処理部であるため、ここでの説明は省略する。
【００７０】
また、モータＥＣＵ２は、ＨＶ−ＥＣＵ１が備える送信レジスタ１２１ａ、受信レジスタ１２１ｂ、レジスタ１２６等を備えていてもよい。
【００７１】
モータＥＣＵ２の制御部２２５は、たとえばＣＰＵであり、ＨＶ−ＥＣＵ１との通信に関する処理等を実行するソフトウェア部である。かかる制御部２２５は、ＩＤ読取部２２５ａと、データ格納処理部２２５ｂなどを備える。なお、制御部２２５は、ＨＶ−ＥＣＵ１の制御部１２５が備える受信完了処理部１２５ｂや再送制御部１２５ｃ等を備えていてもよい。
【００７２】
ＩＤ読取部２２５ａは、受信バッファ２２３へ格納されたデータのＩＤを読み取り、読み取ったＩＤが開始ＩＤである場合に、かかる開始ＩＤをデータ格納処理部２２５ｂへ渡す処理を行う処理部である。なお、どのＩＤが開始ＩＤであるかは、あらかじめ決められているものとする。
【００７３】
データ格納処理部２２５ｂは、ＨＶ−ＥＣＵ１への送信データをプラットフォーム２２４経由で送信バッファ２２２へ格納する処理部である。データ格納処理部２２５ｂは、ＩＤ読取部２２５ａから開始ＩＤを受け取ると、受け取った開始ＩＤに対応するデータ、すなわち、所定の通信周期内に送信すべきデータを、所定ブロックごとではなく一括して送信バッファ２２２へ格納する処理を行う。
【００７４】
ここで、通信周期内に送信すべきデータと開始ＩＤとの対応関係について図５を用いて説明する。図５は、通信周期内に送信すべきデータと開始ＩＤとの対応関係の一例を示す図である。
【００７５】
図５に示すように、開始ＩＤには、通信周期内に送信すべきデータがあらかじめ対応付けられている。図５に示した例では、開始ＩＤ「１１１１＊＊＊」には「データＡ」が、開始ＩＤ「１１２２＊＊＊」には「データＢ」がそれぞれ対応付けられている。なお、「データＡ」や「データＢ」は、データの値そのものではなく、データの種別をあらわすものである。
【００７６】
たとえば、データ格納処理部２２５ｂは、トルク指令値を変更する処理の開始を示す開始ＩＤ「１１１１＊＊＊」を受け取ると、モータ３のトルク値などを「データＡ」として取得し、一括して送信バッファ２２２へ格納する。
【００７７】
なお、図３では、制御部２２５が備える処理部として、ＩＤ読取部２２５ａおよびデータ格納処理部２２５ｂのみを示したが、制御部２２５は、他の制御部を備えていてもよい。たとえば、制御部２２５は、ＨＶ−ＥＣＵ１から最終フレームデータを受信した場合に、受信完了処理を実行する受信完了処理部や、ＨＶ−ＥＣＵ１から受信した制御命令に従ってモータ３を制御するモータ制御部などを備えていてもよい。
【００７８】
次に、ＨＶ−ＥＣＵ１およびモータＥＣＵ２の動作例について説明する。図６は、ＨＶ−ＥＣＵ１およびモータＥＣＵ２の動作例を示す図である。図６の（Ａ）には、ＨＶ−ＥＣＵ１のデータ送信処理時の動作例を、図６の（Ｂ）には、モータＥＣＵ２がＨＶ−ＥＣＵ１からのデータを受信し、対応するデータを送信バッファ２２２へ格納するまでの動作例を、それぞれ示している。
【００７９】
図６の（Ａ）に示すように、ＨＶ−ＥＣＵ１は、あらたな通信周期が到来すると、モータＥＣＵ２へのデータ送信を開始する。具体的には、ＨＶ−ＥＣＵ１では、データ格納処理部１２５ａが、通信周期内に送信すべきデータを４フレームごとに分割した分割データを自装置の通信処理周期ごとに送信バッファ１２２へ格納する。
【００８０】
また、ＨＶ−ＥＣＵ１では、通信部１２１が、送信バッファ１２２に分割データが格納されるごとに、かかる分割データをＣＡＮトランシーバ１１経由でＣＡＮバスへ出力する。
【００８１】
ここで、ＨＶ−ＥＣＵ１からモータＥＣＵ２に対して最初に送信される分割データの先頭のフレームデータには、かかる通信周期の開始を示す開始ＩＤが含まれている。ここでは、通信周期内に送信すべきデータを４フレームごとに分割することとしたが、データの分割単位は４フレームである必要はない。
【００８２】
なお、ＨＶ−ＥＣＵ１は、今回の通信周期が開始されると、前回の通信周期（制御周期）においてモータＥＣＵ２から送られてきていた、モータ回転数といったモータの状態に関する情報等や、別のバスから送られてくる運転者のアクセルの踏み込み状態（運転者が求めているトルク量）、電池の充電状態等の車両制御に関する各種情報に基づいて、モータやエンジンで出力する必要があるトルク量（トルク指令値）等を算出する演算処理を行う。
【００８３】
一方、モータＥＣＵ２では、図６の（Ｂ）に示すように、ハードウェア部から受信割り込みを受けると、ＩＤ読取部２２５ａが、ＨＶ−ＥＣＵ１から受信した分割データに含まれるＩＤを読み取る。ＩＤ読取部２２５ａは、読み取ったＩＤの中に開始ＩＤが含まれる場合には、開始ＩＤをデータ格納処理部２２５ｂへ渡す。なお、ここでは、開始ＩＤが「１１１１＊＊＊」であったとする。
【００８４】
データ格納処理部２２５ｂは、ＩＤ読取部２２５ａから開始ＩＤを受け取ると、受け取った開始ＩＤに対応するデータを取得し、取得したデータを送信バッファ２２２へ格納する。ここでは、開始ＩＤ「１１１１＊＊＊」を受け取ったため、データ格納処理部２２５ｂは、かかる開始ＩＤ「１１１１＊＊＊」に対応するデータＡをモータ３などから取得し（図５参照）、取得したデータＡを送信バッファ２２２へ格納する。
【００８５】
なお、モータＥＣＵ２は、ＨＶ−ＥＣＵ１から開始ＩＤを受信すると、取得した現在のモータ回転数といったモータの状態（前回の通信周期で、ＨＶ−ＥＣＵ１から送られてきたトルク指令値等に基づいてモータを制御した後のモータの状態）に関する情報や、前回の通信周期におけるモータＥＣＵ２での演算結果のうち、ＨＶ−ＥＣＵ１に送信する必要があるデータ等を、送信バッファ２２２にセットする。
【００８６】
次に、モータＥＣＵ２の通信部２２１が、送信バッファ２２２に格納されたデータをＣＡＮプロトコルに従ってＣＡＮバスへ出力する処理の動作例について図７を用いて説明する。図７は、ＣＡＮプロトコルに基づくデータ出力処理の一例を示す図である。なお、ここでは、送信バッファ２２２に格納されたデータＡがｎ個のフレームデータで構成される場合の例を示している。
【００８７】
図７に示すように、モータＥＣＵ２の通信部２２１は、ＨＶ−ＥＣＵ１との間で通信調停を適宜行いながら、ＣＡＮバスへのデータ出力を行う。具体的には、通信部２２１は、送信バッファ２２２にフレームデータが格納されている状態にあると、ＣＡＮバスが空き状態であるか否かを確認し、空き状態であれば、送信バッファ２２２に格納されたデータＡを１フレームずつＣＡＮバスへ出力していく。図７に示した場合には、フレームデータ１〜４がＣＡＮバスへ出力されている。
【００８８】
つづいて、モータＥＣＵ２の通信部２２１がフレームデータ５をＣＡＮバスへ出力しようとした際に、ＨＶ−ＥＣＵ１との間でＣＡＮバスの競合が発生したとする。かかる場合、通信部２２１は、ＨＶ−ＥＣＵ１のデータ出力を優先させ、ＣＡＮが空き状態となったのちに、フレームデータ５をＣＡＮバスへ出力する。これは、モータＥＣＵ２からのデータの優先度が、ＨＶ−ＥＣＵ１からのデータの優先度よりも低く設定されているためである。
【００８９】
このように、実施例１に係る通信システムでは、ＨＶ−ＥＣＵ１のデータ格納処理部１２５ａが、所定の通信周期の開始を示す開始ＩＤを含んだデータを送信バッファ１２２へ格納し、ＨＶ−ＥＣＵ１の通信部１２１が、送信バッファ１２２へ格納されたデータをＣＡＮプロトコルに従ってＣＡＮバスへ出力する。
【００９０】
また、モータＥＣＵ２の通信部２２１が、ＣＡＮバスから入力されたデータの受信バッファ２２３への格納および送信バッファ２２２へ格納されたデータのＣＡＮバスへの出力をＣＡＮプロトコルに従って行い、モータＥＣＵ２のデータ格納処理部２２５ｂが、受信バッファ２２３へ格納されたデータに開始ＩＤが含まれる場合に、当該開始ＩＤに対応するデータであって、所定の通信周期内に送信すべきデータを送信バッファ２２２へ格納する処理を開始し、送信バッファ２２２が空になると送信すべきデータを逐次格納していく。
【００９１】
具体的には、モータＥＣＵ２の通信部２２１は、送信バッファ２２２にフレームデータが格納されている状態にあると、送信バッファ２２２に格納された各フレームデータを絶えずＣＡＮバスへ出力しようとするが、ＨＶ−ＥＣＵ１との間でＣＡＮバスの競合が発生した場合には、ＨＶ−ＥＣＵ１からのデータ出力を優先させる。
【００９２】
このように、本実施例１に係る通信システムでは、ＨＶ−ＥＣＵ１およびモータＥＣＵ２の送信処理が同時に発生した場合には、モータＥＣＵ２の送信処理よりもＨＶ−ＥＣＵ１の送信処理が優先される。
【００９３】
なお、ここでは、通信システムにおける通信が、ＣＡＮプロトコルに従って通信を行うＣＡＮ通信であるものとしたが、これに限ったものではなく、ＣＡＮ通信と同様に、同時に複数の通信装置からの送信を行うことができない通信方式で通信を行うものであればよい。
【００９４】
次に、通信部１２１および再送制御部１２５ｃの動作例について図８を用いて説明する。図８は、通信部１２１および再送制御部１２５ｃの動作例を示す図である。なお、図８の（Ａ）には、通信部１２１および再送制御部１２５ｃの動作例を、図８の（Ｂ）には、再送制御部１２５ｃの再送制御パターンをそれぞれ示している。
【００９５】
図８の（Ａ）に示すように、通信部１２１および再送制御部１２５ｃが、それぞれ送信エラーを検出したとする（図８の（Ａ）の（１）参照）。具体的には、通信部１２１は、受信レジスタ１２１ｂに保持されたデータを参照することによって送信エラーを検出し、再送制御部１２５ｃは、レジスタ１２６の送信エラーフラグを参照することによって送信エラーを検出する。
【００９６】
通信部１２１は、送信エラーを検出すると、再送処理を行う（図８の（Ａ）の（２）参照）。また、再送制御部１２５ｃは、送信エラーを検出すると、送信停止判定カウンタのカウント処理を行う（図８の（Ａ）の（３）参照）。なお、図８の（Ａ）では、送信エラーが連続して発生しており、再送処理およびカウント処理が連続的に行われているものとする。
【００９７】
ここで、送信停止判定カウンタのカウント値が送信停止判定閾値を超えたとすると（図８の（Ａ）の（４）参照）、再送制御部１２５ｃは、通信部１２１に対して再送禁止命令を通知する（図８の（５）参照）。これにより、再送機能がオフされるため、再送処理が停止する。
【００９８】
また、再送制御部１２５ｃは、今回の通信周期における最後の通信処理周期が終わったのち、次回の通信周期の開始時において、再送禁止解除命令を通信部１２１に対して通知する（図８の（Ａ）の（６）参照）。これにより、再送機能がオンされる。すなわち、通信部１２１の再送禁止状態は、今回の通信周期においてのみ維持されることとなる。
【００９９】
ところで、図８の（Ａ）では、送信停止判定カウンタのカウント値（すなわち、送信エラーの検出回数や検出時間）が送信停止判定閾値を超えた場合に、再送処理を禁止する場合の例について説明したが、再送制御部１２５ｃは、再送処理を禁止するだけでなく、通常のデータ送信処理も併せて停止してもよい。
【０１００】
すなわち、図８の（Ｂ）に示すように、再送制御部１２５ｃによって行われる再送制御処理には、再送処理のみを禁止するパターンと、再送処理および通常のデータ送信処理（以下、単に「送信処理」と記載する）の双方を禁止するパターンとがある。ＨＶ−ＥＣＵ１の制御部１２５は、これらの再送制御パターンを任意に変更可能である。
【０１０１】
なお、再送制御部１２５ｃは、再送処理のみを禁止する場合（再送制御パターン１の場合）には、通信部１２１に対して再送禁止命令を通知する処理のみを行う。一方、再送制御部１２５ｃは、再送処理および送信処理を禁止する場合（再送制御パターン２の場合）には、通信部１２１に対して再送禁止命令を通知する処理およびレジスタ１２６の送信停止フラグをオンする処理を行う。
【０１０２】
また、再送処理や送信処理を禁止する場合に、必要に応じて送信バッファ１２２から禁止する対象のフレームデータを削除する処理を行う。
【０１０３】
次に、再送制御部１２５ｃによる閾値決定処理について図９を用いて説明する。図９は、閾値決定処理の一例を示す図である。なお、図９の（Ａ）には、再送制御パターン２における閾値決定処理の一例を、図９の（Ｂ）には、再送制御パターン１における閾値決定処理の一例をそれぞれ示している。
【０１０４】
図９の（Ａ）に示すように、再送制御部１２５ｃは、通信周期において送信エラーが初めて検出されると、所定の通信周期において受信する必要がある残りのデータ（未受信データ）を全て受信するまでに要する時間（Ｔ１）と所定の通信周期の残り時間（Ｔ２）とに基づいて送信停止判定閾値を決定する。
【０１０５】
たとえば、再送制御部１２５ｃは、Ｔ２からＴ１を差し引いた時間を、送信エラーの検出時間間隔（１回の送信処理や再送処理に要する時間）で割ることによって、許容可能な送信エラー検出回数を割り出し、割り出した検出回数、もしくは、その検出回数に基づく時間を送信停止判定閾値として決定する。
【０１０６】
これにより、再送制御部１２５ｃは、残りのデータの受信に必要な時間を確保しつつ、再送処理をできるだけ長い間続けさせることができる。なお、ＨＶ−ＥＣＵ１は、通信周期内に受信すべきデータの数やサイズおよび１つのフレームデータの受信に要する時間をあらかじめ把握しており、これらの情報からＴ２を割り出すことができる。また、送信エラーの検出時間間隔もあらかじめ把握しているものとする。
【０１０７】
一方、再送制御パターン１の場合（再送処理のみを禁止する場合）、再送制御部１２５ｃは、未送信データを全て送信するまでに要する時間（Ｔ３）をさらに加味して送信停止判定閾値を決定すればよい。たとえば、再送制御部１２５ｃは、Ｔ２からＴ１およびＴ３を差し引いた時間を、送信エラーの検出時間間隔で割ることによって、許容可能な送信エラー検出回数を割り出し、割り出した検出回数を送信停止判定閾値として決定する。
【０１０８】
このように、再送制御部１２５ｃは、データの送信エラーが検出された場合に、所定の通信周期において受信すべき残りのデータを全て受信するまでに要する時間と所定の通信周期の残り時間とに基づいて送信停止判定閾値を決定することとしたため、残りのデータの受信に必要な時間を確保しつつ、再送処理をできるだけ長い間続けさせることができる。
【０１０９】
なお、図９の（Ａ）および（Ｂ）では、Ｔ２からＴ１を差し引いた時間あるいはＴ２からＴ１およびＴ３を差し引いた時間が経過する直前まで再送処理を繰り返すような送信停止判定閾値を決定することとしたが、これに限ったものではない。
【０１１０】
具体的には、ここでは、再送処理によってデータの送受信が遅れる場合のみを想定して送信停止判定閾値を決定することとしたが、再送処理以外の要因によってデータの送受信が遅れることも想定される。このため、再送制御部１２５ｃは、Ｔ２からＴ１を差し引いた時間あるいはＴ２からＴ１およびＴ３を差し引いた時間からさらに所定のオフセット時間を差し引いた時間に基づいて送信停止判定閾値を決定することとしてもよい。
【０１１１】
次に、ＨＶ−ＥＣＵ１およびモータＥＣＵ２の通信周期内における通信タイミングについて図１０を用いて説明しておく。図１０は、所定の通信周期におけるＨＶ−ＥＣＵ１およびモータＥＣＵ２の通信タイミングの一例を示すタイミングチャートである。
【０１１２】
ここで、図１０では、ＨＶ−ＥＣＵ１およびモータＥＣＵ２の通信処理周期がそれぞれ１ｍｓであり、通信周期（制御周期）が８周期分の通信処理周期に相当する８ｍｓであるものとする。また、図１０では、ＨＶ−ＥＣＵ１とモータＥＣＵ２との間で、通信周期の開始・終了タイミングの同期を取ることなく、通信処理周期および通信周期の長さのみを同じ長さに設定する場合の例を示している。また、図１０には、図８の（Ｂ）に示す再送制御パターン２の場合について示している。
【０１１３】
図１０に示すように、ＨＶ−ＥＣＵ１の制御部１２５は、通信周期が到来すると、前回の通信周期において取得したデータをラッチ（保持）する処理や今回の通信周期において送信する予定のデータのＳＵＭ値を算出する処理を行う（図１０の（１ａ）参照）。
【０１１４】
ここで、ＳＵＭ値とは、各フレームデータのうちＳＵＭ値を除いた情報（ＩＤやデータ等）を０および１の２進数であらわした情報とした場合に、その値を全て足し合わせた値である。算出されたＳＵＭ値は、各フレームデータに付加されることとなる。
【０１１５】
また、ＨＶ−ＥＣＵ１の制御部１２５は、かかる処理を終えると、モータＥＣＵ２へ送信するデータの分割データのうち、最初の分割データを送信バッファ１２２へ格納する（図１０の（１ｂ）参照）。ここで、かかる分割データの先頭のフレームデータには、開始ＩＤが含まれている。
【０１１６】
ＨＶ−ＥＣＵ１の送信バッファ１２２に分割データが格納されると、ＨＶ−ＥＣＵ１の通信部１２１は、送信バッファ１２２に格納された分割データをＣＡＮバスへ出力する（図１０の（１ｃ）参照）。ＣＡＮバスへ出力された分割データは、モータＥＣＵ２の通信部２２１へ入力され、かかる通信部２２１によって受信バッファ２２３へ格納される。
【０１１７】
モータＥＣＵ２の制御部２２５は、受信バッファ２２３に分割データが格納されると、受信割り込みを発生させ、受信バッファ２２３に格納された分割データのＩＤを読み取る（図１０の（２ａ）参照）。
【０１１８】
このとき、モータＥＣＵ２の制御部２２５は、読み取ったＩＤに開始ＩＤが含まれていれば、開始ＩＤに対応するデータの一部（分割データ）を送信バッファ２２２へ格納する（図１０の（２ｂ）参照）。
【０１１９】
モータＥＣＵ２の通信部２２１は、送信バッファ２２２にデータが格納されると、送信バッファ２２２に格納されたデータを１フレームずつＣＡＮバスへ出力していく。ただし、ＨＶ−ＥＣＵ１との間でＣＡＮバスの競合が発生した場合には、ＨＶ−ＥＣＵ１からのデータ出力が完了するのを待ってからデータ出力を再開させる。
【０１２０】
なお、開始ＩＤは、所定の通信周期においてＨＶ−ＥＣＵ１から最初に送信されるフレームデータに埋め込まれている。このため、モータＥＣＵ２は、通信周期内に送信すべきデータを送信バッファ２２２へ格納する処理を通信周期における早い段階で開始することができる。
【０１２１】
これにより、ＨＶ−ＥＣＵ１からの最初の通信処理周期における最終フレームがＣＡＮバスへ出力されてから、モータＥＣＵ２からの最初のデータがＣＡＮバスへ出力されるまでの間に、ＣＡＮバスの空き時間が生じることを確実に防止することができる。
【０１２２】
ここで、ＨＶ−ＥＣＵ１においてフレームデータの送信エラーが発生したとする（図１０の（１ｄ）参照）。かかる場合、ＨＶ−ＥＣＵ１の通信部１２１は、送信エラーが検出されている間、再送処理を続ける（図１０の（１ｅ）参照）。この結果、ＣＡＮバスには、同一のフレームデータが出力され続けることとなる。
【０１２３】
そして、ＨＶ−ＥＣＵ１は、送信エラーの検出回数が送信停止判定閾値を超えた場合には、通信部１２１による再送処理を次の通信周期が開始されるまで禁止するとともに、通常のデータ送信も次の通信周期が開始されるまで禁止する（図１０の（１ｆ）参照）。
【０１２４】
これにより、モータＥＣＵ２の送信バッファ２２２に格納されたデータのＣＡＮバスへの出力は、ＨＶ−ＥＣＵ１からの再送データや通常のデータによって阻害されることなく行われることとなる。したがって、ＨＶ−ＥＣＵ１は、送信エラーが発生した場合であっても、モータＥＣＵ２からのデータを確実に受信することができる。
【０１２５】
なお、ＨＶ−ＥＣＵ１の制御部１２５は、通信周期内に受信すべきデータの最終フレームをモータＥＣＵ２から受信すると、受信完了処理を実行する（図１０の（１ｇ）参照）。具体的には、ＨＶ−ＥＣＵ１では、受信完了処理部１２５ｂが、通信周期内に受信したデータのＳＵＭ値を算出し、算出したＳＵＭ値をＨＶ−ＥＣＵ１から送信されたＳＵＭ値と比較することで、かかるＳＵＭ値が正常であるか否かのサムチェックを行う。
【０１２６】
なお、ここでは、１つの通信周期で受信した全てのフレームデータのＳＵＭチェックをまとめて行う場合の例を示したが、これに限らず、フレームデータを受信するごとにＳＵＭチェックを実行することとしてもよい。
【０１２７】
また、ＨＶ−ＥＣＵ１は、次の通信周期が到来すると、再送処理および送信処理の禁止状態を解除する。これにより、ＨＶ−ＥＣＵ１の制御部１２５は、次の通信周期においてモータＥＣＵ２へ送信すべきデータの送信処理を開始する。
【０１２８】
すなわち、ＨＶ−ＥＣＵ１は、データのラッチ処理やＳＵＭ値の算出処理を行い（図１０の（１ｈ）参照）、モータＥＣＵ２へ送信するデータの分割データのうち、最初の分割データを送信バッファ１２２へ格納する（図１０の（１ｉ）参照）。送信バッファ１２２へ格納された分割データは、ＣＡＮバスを介してモータＥＣＵ２の通信部２２１へ入力され、かかる通信部２２１によって受信バッファ２２３へ格納される。
【０１２９】
モータＥＣＵ２の制御部２２５は、受信バッファ２２３に分割データが格納されると、受信割り込みを発生させ、受信バッファ２２３に格納された分割データのＩＤを読み取り（図１０の（２ｃ）参照）、読み取ったＩＤに開始ＩＤが含まれていれば、開始ＩＤに対応するデータを送信バッファ２２２へ格納する（図１０の（２ｄ）参照）。送信バッファ２２２へ格納されたデータは、ＣＡＮバスが空いていれば、順次ＣＡＮバスへ出力される。
【０１３０】
なお、ＨＶ−ＥＣＵ１は、たとえば再送処理以外の要因によって、今回の通信周期において受信すべきデータの受信を完了させることができなかった場合には、かかる所定の通信周期よりも前の通信周期（たとえば、前回の通信周期）において受信したデータを今回の通信周期において受信したデータとして取り扱い、演算処理等を行うこととしてもよい。
【０１３１】
これにより、今回の通信周期において受信したデータおよび前回の通信周期において受信したデータが混在した状態で演算処理が行われることで、異常な演算結果が出力される事態を防ぐことができる。
【０１３２】
次に、ＨＶ−ＥＣＵ１が実行する送信処理の処理手順について図１１を用いて説明する。図１１は、送信処理の処理手順を示すフローチャート（その１）である。なお、図１１には、再送制御パターンがパターン１（再送処理のみを禁止するパターン）である場合の処理手順を示している。また、図１１に示す送信処理は、所定時間（通信処理周期よりも短い時間）ごとに実施される。
【０１３３】
図１１に示すように、再送制御部１２５ｃは、通信処理周期の開始タイミングであるか否かを判定する（ステップＳ１０１）。具体的には、再送制御部１２５ｃは、前回の通信処理周期の開始タイミングからの時間を計時することで通信処理周期の開始タイミングであると判定する。
【０１３４】
かかる処理において通信処理周期の開始タイミングであると判定すると（ステップＳ１０１，Ｙｅｓ）、再送制御部１２５ｃは、通信周期の開始タイミングであるか否かを判定する（ステップＳ１０２）。具体的には、再送制御部１２５ｃは、通信処理周期の開始タイミングにおいて、通信周期における最後の通信処理周期の処理を行う際にオンされるフラグである、判定レジスタ１２６の最終フラグがオンになっている場合に、新たな通信周期の開始タイミングであると判定する。
【０１３５】
かかる処理において、通信周期の開始タイミングであると判定すると（ステップＳ１０２，Ｙｅｓ）、再送制御部１２５ｃは、通信部１２１に対して再送禁止解除命令を通知するとともに（ステップＳ１０３）、レジスタ１２６の送信停止フラグをオフする（ステップＳ１０４）。また、再送制御部１２５ｃは、送信停止判定カウンタをリセットする（ステップＳ１０５）。
【０１３６】
なお、前回の通信周期において再送禁止命令を通知していない場合には、ステップＳ１０３，Ｓ１０４の処理を省略してもよい。
【０１３７】
ステップＳ１０５の処理を終えたとき、あるいは、ステップＳ１０２において通信周期の開始タイミングでない場合（ステップＳ１０２，Ｎｏ）、データ格納処理部１２５ａは、送信データを抽出し（ステップＳ１０６）、抽出した送信データを送信バッファ１２２にセットする（ステップＳ１０７）。
【０１３８】
ステップＳ１０７の処理を終えたとき、あるいは、ステップＳ１０１において通信処理周期の開始タイミングではない場合（ステップＳ１０１，Ｎｏ）、再送制御部１２５ｃは、送信エラーを検出したか否かを判定する（ステップＳ１０８）。具体的には、再送制御部１２５ｃは、レジスタ１２６の送信エラーフラグがオンされている場合に、送信エラーを検出したと判定する。
【０１３９】
かかる処理において、送信エラーを検出したと判定すると（ステップＳ１０８，Ｙｅｓ）、再送制御部１２５ｃは、送信停止判定カウンタをカウントアップする（ステップＳ１０９）。また、再送制御部１２５ｃは、送信停止フラグがオフされているか否かを判定し（ステップＳ１１０）、オフされていると判定した場合に（ステップＳ１１０，Ｙｅｓ）、閾値が決定済みであるか否かを判定する（ステップＳ１１１）。そして、閾値が決定済みでなければ（ステップＳ１１１，Ｎｏ）、閾値決定処理を行って閾値を決定する（ステップＳ１１２）。
【０１４０】
ステップＳ１１２の処理を終えた場合、あるいは、ステップＳ１１１において閾値が決定済みである場合（ステップＳ１１１，Ｙｅｓ）、再送制御部１２５ｃは、送信判定カウンタのカウント値が送信停止判定閾値を超えたか否かを判定する（ステップＳ１１３）。
【０１４１】
送信判定カウンタのカウント値が送信停止判定閾値を超えたと判定した場合（ステップＳ１１３，Ｙｅｓ）、再送制御部１２５ｃは、通信部１２１に対して再送禁止命令を通知するとともに（ステップＳ１１４）、送信エラーが発生したデータを送信バッファ１２２から削除する（ステップＳ１１５）。そして、再送制御部１２５ｃは、レジスタ１２６の送信停止フラグをオンして（ステップＳ１１６）、処理を終了する。
【０１４２】
なお、再送制御部１２５ｃは、ステップＳ１０８において送信エラーが検出されていない場合（ステップＳ１０８，Ｎｏ）、あるいは、ステップＳ１１３において送信判定カウンタのカウント値が送信停止判定閾値を超えていない場合にも（ステップＳ１１３，Ｎｏ）、処理を終了する。
【０１４３】
また、再送制御部１２５ｃは、ステップＳ１１０において送信停止フラグがオフされていない（オンされている）場合には（ステップＳ１１０，Ｎｏ）、送信エラーが発生したデータを送信バッファ１２２から削除して（ステップＳ１１７）、処理を終了する。
【０１４４】
つづいて、送信処理を禁止する場合の送信処理の処理手順について図１２を用いて説明する。図１２は、送信処理の処理手順を示すフローチャート（その２）である。
【０１４５】
図１２に示すように、再送制御部１２５ｃは、通信処理周期の開始タイミングであるか否かを判定する（ステップＳ２０１）。具体的には、再送制御部１２５ｃは、前回の通信処理周期の開始タイミングからの時間を計時することで通信処理周期の開始タイミングであると判定する。
【０１４６】
かかる処理において通信処理周期の開始タイミングであると判定すると（ステップＳ２０１，Ｙｅｓ）、再送制御部１２５ｃは、通信周期の開始タイミングであるか否かを判定する（ステップＳ２０２）。具体的には、再送制御部１２５ｃは、通信処理周期の開始タイミングにおいて、通信周期における最後の通信処理周期の処理を行う際にオンされるフラグである、判定レジスタ１２６の最終フラグがオンになっている場合に、新たな通信周期の開始タイミングであると判定する。
【０１４７】
かかる処理において、通信周期の開始タイミングであると判定すると（ステップＳ２０２，Ｙｅｓ）、再送制御部１２５ｃは、レジスタ１２６の送信停止フラグをオフし（ステップＳ２０３）、送信停止判定カウンタをリセットする（ステップＳ２０４）。
【０１４８】
ステップＳ２０４の処理を終えたとき、あるいは、ステップＳ２０２において通信周期の開始タイミングではない場合（ステップＳ２０２，Ｎｏ）、データ格納処理部１２５ａは、送信停止フラグがオフされているか否かを判定する（ステップＳ２０５）。
【０１４９】
かかる処理において送信停止フラグがオフされていると判定すると（ステップＳ２０５，Ｙｅｓ）、データ格納処理部１２５ａは、送信データを抽出し（ステップＳ２０６）、抽出した送信データを送信バッファ１２２にセットする（ステップＳ２０７）。
【０１５０】
ステップＳ２０７の処理を終えたとき、ステップＳ２０５において送信停止フラグがオフされていない場合（ステップＳ２０５，Ｎｏ）、あるいは、ステップＳ２０１において通信処理周期の開始タイミングではない場合（ステップＳ２０１，Ｎｏ）、再送制御部１２５ｃは、送信エラーを検出したか否かを判定する（ステップＳ２０８）。具体的には、再送制御部１２５ｃは、レジスタ１２６の送信エラーフラグがオンされている場合に、送信エラーを検出したと判定する。
【０１５１】
かかる処理において、送信エラーを検出したと判定すると（ステップＳ２０８，Ｙｅｓ）、再送制御部１２５ｃは、送信停止判定カウンタをカウントアップする（ステップＳ２０９）。
【０１５２】
また、再送制御部１２５ｃは、送信停止フラグがオフされているか否かを判定し（ステップＳ２１０）、オフされていると判定した場合に（ステップＳ２１０，Ｙｅｓ）、閾値が決定済みであるか否かを判定する（ステップＳ２１１）。そして、閾値が決定済みでなければ（ステップＳ２１１，Ｎｏ）、閾値決定処理を行って閾値を決定する（ステップＳ２１２）。
【０１５３】
ステップＳ２１２の処理を終えた場合、あるいは、ステップＳ２１１において閾値が決定済みである場合（ステップＳ２１１，Ｙｅｓ）、再送制御部１２５ｃは、送信停止判定カウンタのカウント値が送信停止判定閾値を超えたか否かを判定する（ステップＳ２１３）。
【０１５４】
送信停止判定カウンタのカウント値が送信停止判定閾値を超えたと判定した場合（ステップＳ２１３，Ｙｅｓ）、再送制御部１２５ｃは、送信バッファ１２２に格納されている未送信のデータを全て削除し（ステップＳ２１４）、レジスタ１２６の送信停止フラグをオンして（ステップＳ２１５）、処理を終了する。
【０１５５】
なお、再送制御部１２５ｃは、ステップＳ２０６において送信エラーが検出されていない場合（ステップＳ２０８，Ｎｏ）、ステップＳ２０８において送信停止フラグがオフされていない場合（ステップＳ２１０，Ｎｏ）、ステップＳ２１３において送信判定カウンタのカウント値が送信停止判定閾値を超えていない場合にも（ステップＳ２１３，Ｎｏ）、処理を終了する。
【０１５６】
上述してきたように、実施例１では、ＨＶ−ＥＣＵの通信部が、データの送信エラーが検出された場合に、当該データの再送処理を行い、ＨＶ−ＥＣＵの再送制御部が、所定の通信周期における送信エラーの検出回数が送信停止判定閾値を超えた場合に、当該通信周期における再送処理を禁止するとともに、当該通信周期が終了して次の通信周期が開始された場合に再送処理の禁止を解除することとした。
【０１５７】
したがって、送信エラーが発生した場合であっても、所定の通信周期において受信すべきデータの取りこぼしを防止することができる。
【０１５８】
なお、上述してきた実施例１では、送信エラーの検出回数が送信停止判定閾値を超えた場合に再送処理を禁止する場合の例について説明したが、これに限ったものではなく、再送制御部１２５ｃは、送信エラーの継続時間が送信停止判定閾値を超えた場合に再送処理を禁止することとしてもよい。かかる場合には、たとえば図９の（Ａ）に示したように、所定の通信周期の残り時間（Ｔ２）から所定の通信周期において受信すべき残りのデータを全て受信するまでに要する時間（Ｔ１）を差し引いた時間を送信停止判定閾値として決定すればよい。
【実施例２】
【０１５９】
ところで、上述してきた実施例１では、閾値決定処理によって決定される送信停止判定閾値は１つであり、かかる１つの送信停止判定閾値を、送信エラーの対象となったフレームデータの種類にかかわらず一様に適用することとしたが、これに限ったものではない。
【０１６０】
たとえば、開始ＩＤを含んだフレームデータに対して適用する送信停止判定閾値は、他のフレームデータに対して適用する送信停止判定閾値よりも甘くする（すなわち、許容する送信エラーの検出回数を多くする）ことが望ましい。
【０１６１】
これは、閾値ＩＤを含んだフレームデータがモータＥＣＵ２へ到達しないと、モータＥＣＵ２によるデータ送信処理（通信周期内に送信すべきデータの送信バッファ２２２への格納処理）が開始されないためである。かかる場合、データの受信を優先するために送信処理を停止したにも関わらず、ＨＶ−ＥＣＵ１は、モータＥＣＵ２から通信周期内に受信すべきデータを全て取りこぼしてしまうこととなり、好ましくない。
【０１６２】
以下では、開始ＩＤを含んだフレームデータに対して適用する送信停止判定閾値をその他のフレームデータと異ならせる場合の実施例２について説明する。図１３は、実施例２に係る再送制御処理の一例を示す図である。
【０１６３】
図１３に示すように、再送制御部１２５ｃは、送信エラーとなったフレームデータが、開始ＩＤを含んだフレームデータである場合には、再送禁止命令の通知タイミング（送信処理や再送処理を禁止するタイミング）を、送信停止判定閾値Ａを用いて判定する。
【０１６４】
たとえば、再送制御部１２５ｃは、開始ＩＤを含んだフレームデータの送信エラー検出回数が送信停止判定閾値Ａを超えた場合に、通信部１２１に対して再送禁止命令を通知する。一方、再送制御部１２５ｃは、送信エラーとなったフレームデータが、開始ＩＤを含んだフレームデータ以外のフレームデータである場合には、再送禁止命令の通知タイミングを、送信停止判定閾値Ｂを用いて判定する。
【０１６５】
ここで、送信停止判定閾値Ａは、送信停止判定閾値Ｂよりも大きな値に決定される。たとえば、再送制御部１２５ｃは、Ｔ２（所定の通信周期の残り時間）からＴ１（未受信データを全て受信するまでに要する時間）を差し引いた時間を、送信エラーの検出時間間隔で割った値を送信停止判定閾値Ａとして決定する。一方、再送制御部１２５ｃは、Ｔ２からＴ１を差し引いた時間に対して所定の係数α（０＜α＜１）を乗じたうえで、かかる値を送信エラーの検出時間間隔で割った値を送信停止判定閾値Ｂとして決定する。
【０１６６】
すなわち、再送制御部１２５ｃは、開始ＩＤを含んだフレームデータに送信エラーが発生した場合には、残りのデータの受信に必要な時間を確保しつつ、再送処理を可能な限り継続させる。これにより、開始ＩＤを含んだフレームデータがモータＥＣＵ２へ送信される可能性を高めることができる。言い換えれば、モータＥＣＵ２から通信周期内に受信すべきデータを全て取りこぼしてしまう可能性をできる限り少なくすることができる。
【０１６７】
また、再送制御部１２５ｃは、開始ＩＤを含んだフレームデータ以外のフレームデータに送信エラーが発生した場合には、残りのデータの受信に必要な時間よりもさらに長い時間を確保しつつ、再送処理を継続させる（早い時点で再送処理を禁止する）。これにより、再送処理以外の要因によってデータの送受信が遅れた場合に、通信周期内に受信すべきデータの取りこぼしが発生することを防止することができる。
【０１６８】
上述してきたように、実施例２では、ＨＶ−ＥＣＵの再送制御部が、通信周期における１周期内に検出された送信エラーの検出回数または継続時間が送信停止判定閾値を超えた場合に、当該通信周期における再送処理を禁止する。そして、ＨＶ−ＥＣＵの再送制御部が、送信エラーとなったデータがモータＥＣＵに対して送信の開始を指示するデータである場合には、他のデータの場合よりも再送処理の禁止を判断する送信停止判定閾値を高くすることとした。
【０１６９】
したがって、送信エラーが発生した場合であっても、所定の通信周期において受信すべきデータを受信できない状態が発生することを防止するとともに、送信エラーが発生したデータが以後の通信が継続されるかどうかに関わるような特別なデータである場合には送信をできる限り行うことで、通信をできる限り継続することができる。
【０１７０】
特に、送信エラーが発生したデータが、相手側通信装置の送信開始を指示するデータ（開始ＩＤ）である場合には、他のデータの受信を優先させるために再送を禁止することで、かえってデータの受信ができなくなってしまうことを防止することができる。
【０１７１】
なお、ここでは、特定のＩＤが開始ＩＤである場合の例について説明したが、特定のＩＤは、必ずしも開始ＩＤである必要はなく、他のＩＤであってもよい。また、ここでは、送信エラーの検出回数を送信停止判定閾値と比較する場合の例を示したが、実施例１と同様、再送制御部１２５ｃは、送信エラーの継続時間を送信停止判定閾値と比較することとしてもよい。
【実施例３】
【０１７２】
ところで、実施例１および２では、通信周期内に受信すべきデータの取りこぼしを防止するために、通信周期内における送信エラーの検出回数または継続時間が送信停止判定閾値を超えると他のデータの送信（特に、他の通信装置からのデータの送信）に問題が生じる可能性があると判断して、かかる通信周期における再送処理を所定期間だけ禁止することとした。
【０１７３】
しかしながら、実施例１および２のように、他のデータの送信を優先するためにデータ送信を一時的に停止させることとすると、従来から行っている異常検出処理、たとえば、一時的な異常（電気ノイズが一時的に混入する場合）なのか永続的な異常なのかを判定する異常検出処理において、正確に判定することが難しくなり、そのときの通信の状態に応じた適切な対応ができなるおそれがある。
【０１７４】
具体的には、永続的な通信異常を送信エラーの検出回数等によって判定することとした場合、実施例１および２のように、送信処理が一時的に停止されると、送信処理が行われないのが、たとえば、通信部やＣＡＮトランシーバ等に永続的な異常が発生したために送信できなくなったからなのか、電気ノイズ等によって一時的に送信エラーが発生したために送信が禁止されたからなのかを区別し、適切な異常検出処理を行わなければ、永続的な通信異常を正確に検出できないおそれがある。
【０１７５】
そこで、実施例３では、永続的な通信異常状態（以下、「異常状態」と記載する）を判定するためのカウンタ（以下、「異常判定カウンタ」と記載する）を、送信処理の一時的な停止を判定するための送信停止判定カウンタと別個に設けることとした。以下では、かかる場合の実施例３について説明する。
【０１７６】
まず、実施例３に係るＨＶ−ＥＣＵおよびモータＥＣＵの構成について図１４を用いて説明する。図１４は、実施例３に係るＨＶ−ＥＣＵおよびモータＥＣＵの構成を示すブロック図である。なお、以下の説明では、既に説明した部分と同様の部分については、既に説明した部分と同一の符号を付し、重複する説明を省略する。
【０１７７】
図１４に示したように、実施例３に係るＨＶ−ＥＣＵ１’の制御部１２５’は、異常検出部１２５ｄをさらに備える。異常検出部１２５ｄは、複数の通信周期に亘る送信エラーの検出回数が、送信停止判定閾値よりも高い異常判定閾値を超えた場合に、以降のデータ送信を停止する処理部である。
【０１７８】
ここで、再送制御部１２５ｃの動作と比較しながら異常検出部１２５ｄの動作を説明する。図１５は、再送制御部１２５ｃおよび異常検出部１２５ｄの動作例を示す図（その１）である。
【０１７９】
図１５に示すように、再送制御部１２５ｃは、送信エラーが検出されるごとに、送信停止判定カウンタのカウント値をカウントアップしていく。そして、通信周期における送信エラーの検出回数または継続時間が送信停止判定閾値を超えると（図１５の（１）参照）、通信部１２１からのデータ送信（再送を含む）を一時的に停止させる（図１５の（２）参照）。
【０１８０】
また、再送制御部１２５ｃは、次の通信周期の開始時において送信判定カウンタのカウント値をリセットする（図１５の（３）参照）。これにより、次の通信周期では、送信エラーの検出回数をゼロからカウントしていくこととなる。なお、かかる再送制御処理の具体的な動作は、実施例１および２において説明した通りである。
【０１８１】
一方、異常検出部１２５ｄも、再送制御部１２５ｃと同様に、送信エラーが検出されるごとに、異常判定カウンタのカウント値をカウントアップしていく。異常判定カウンタのカウント値は、送信停止判定カウンタのカウント値がリセットされた場合であってもリセットされない（図１５の（４）参照）。
【０１８２】
具体的には、異常検出部１２５ｄは、再送制御部１２５ｃによって通信部１２１からのデータ送信が一時的に停止された場合には、異常判定カウンタのカウント処理を一時的に中断して、異常判定カウンタのカウント値を保持する。
【０１８３】
そして、異常検出部１２５ｄは、異常判定カウンタのカウント値が異常判定閾値を超えると（図１５の（５）参照）、通信異常が発生していると判定し、通信部１２１からのデータ送信（再送を含む）を禁止する。異常検出部１２５ｄは、通信異常を検出して送信処理を禁止した通信周期が終了して次の通信周期が開始されても送信処理の禁止を解除しない（図１５の（６）参照）。
【０１８４】
なお、異常検出部１２５ｄは、送信処理を禁止した場合には、再送制御部１２５ｃに対して、再送禁止解除命令の通知およびレジスタ１２６の送信停止フラグのオフ動作を禁止する。これにより、再送制御部１２５ｃによって送信停止状態が解除されることがなくなる
【０１８５】
このように、一時的な異常を判定するための送信停止判定カウンタと、永続的な異常を判定するための異常判定カウンタとを別々に設け、異常判定カウンタのカウント処理は、送信停止カウンタのカウント処理に基づく送信停止／再開処理の処理状況を考慮して行うこととした。このため、検出された異常が、一時的な異常（電気ノイズが一時的に混入する場合）なのか永続的な異常なのかを正確に判定することができる。
【０１８６】
なお、再送制御部１２５ｃによってオンオフされる送信停止フラグとは別に、異常検出部１２５ｄによってオンオフされる送信停止フラグ（異常フラグ）をレジスタ１２６に設けてもよい。かかる場合、データ格納処理部１２５ａは、再送制御部１２５ｃによって送信停止フラグがオフされたとしても、異常フラグがオンされていれば、送信バッファ１２２へのデータ格納を停止する。
【０１８７】
ところで、図１５では、異常判定後、以後の送信データを停止することとしたが、この場合、何らかの要因（例えば修理を行った場合）で通信システムが正常に戻った場合でも通信を行わないという問題が発生する。そのため、装置の電源、例えば、図示しない車両に取り付けられたＩＧ-ＳＷ（イグニッションスイッチ）がオンまたはオフされるごとに、送信処理を復帰するようにしてもよい。
【０１８８】
以下では、ＩＧ−ＳＷがオフされた場合に送信処理の禁止状態を解除する場合の例について図１６を用いて説明する。図１６は、再送制御部１２５ｃおよび異常検出部１２５ｄの動作例を示す図（その２）である。
【０１８９】
図１５を用いて既に説明した通り、異常判定カウンタのカウント値が異常判定閾値を超えると（図１６の（１）参照）、異常検出部１２５ｄは、通信異常が発生していると判定し、通信部１２１からのデータ送信（再送を含む）を禁止する。送信処理が禁止された状態は、送信処理を禁止した通信周期が終了して次の通信周期が開始されても維持される（図１６の（２）参照）。
【０１９０】
ここで、異常判定がなされた場合には、たとえばウォーニングランプ等によってユーザに対して異常が発生したことが報知される。ユーザは、異常が発生したことを認識すると、車両をディーラー等へ持ち込んで修理をしてもらうこととなる。このとき、修理を行うためにＩＧ−ＳＷがオフされる（図１６の（３）参照）。
【０１９１】
異常検出部１２５ｄは、ＩＧ−ＳＷがオフされると、送信処理の禁止を解除するとともに（図１６の（４）参照）、異常判定カウンタをリセットする（図１６の（５）参照）。なお、送信判定カウンタは、再送制御部１２５ｃによって、異常判定がなされた次の通信周期の開始時においてカウント値がリセットされている（図１６の（６）参照）。
【０１９２】
なお、図１６では、ＩＧ−ＳＷがオフされたことを契機として送信処理の禁止状態を解除する場合の例について説明したが、これに限ったものではなく、ＩＧ−ＳＷがオンされたことを契機として送信処理の禁止状態を解除することとしてもよい。
【０１９３】
このように、電源が少なくともオンまたはオフされた際に送信処理の禁止を解除することとすれば、送信処理の禁止状態を適切なタイミングで解除することができる。
【０１９４】
ところで、図１５や図１６では、送信エラーが検出されるごとに、異常判定カウンタのカウント値をカウントアップすることとしたが、異常判定カウンタのカウント値をカウントアップするタイミングは、これに限ったものではない。たとえば、再送制御部１２５ｃがデータ送信を一時的に停止させるごとに、異常判定カウンタのカウント値をカウントアップするようにしてもよい。
【０１９５】
さらに、異常検出部１２５ｄは、異常判定カウンタのカウント値をカウントアップするだけでなく、所定の条件に従ってカウントダウンすることとしてもよい。そこで、異常判定カウンタのカウントパターンについて図１７を用いて説明する。図１７は、異常判定カウンタのカウントパターンの一例を示す図である。
【０１９６】
図１７に示すように、異常検出部１２５ｄは、たとえば、再送制御部１２５ｃと同様に、送信エラーを検出するごとに、異常判定カウンタのカウント値をカウントアップしてもよい（図１７のパターン１）。また、かかる場合において異常検出部１２５ｄは、フレームデータの送信が正常に行われるごとに、異常判定カウンタのカウント値をカウントダウンしてもよい（図１７のパターン２）。
【０１９７】
また、異常検出部１２５ｄは、送信エラーが検出された通信周期ごとに異常判定カウンタのカウント値をカウントアップさせてもよい（図１７のパターン３）。かかる場合、異常検出部１２５ｄは、通信周期における最初の送信エラーを検出してから次の通信周期が到来するまでの間、カウント処理を行わなくてよい。すなわち、カウント処理の頻度がパターン１や２と比較して少なくなるため、処理負荷を低減することができる。また、異常検出部１２５ｄは、通信周期内において送信エラーが検出されなかった場合に、異常判定カウンタのカウント値をカウントダウンさせてもよい（図１７のパターン４）。
【０１９８】
また、異常検出部１２５ｄは、送信エラーが検出され、かつ、通信周期内にかかる送信エラーから復帰しなかった場合に、異常判定カウンタのカウント値をカウントアップすることとしてもよい（図１７のパターン５）。このようにすれば、送信エラーとなったが通信周期内にエラー復帰した場合をカウントアップの対象から除外することができる。
【０１９９】
また、異常検出部１２５ｄは、通信周期内において送信エラーが検出されなかった場合、または、送信エラーが検出されたが通信周期内にエラー復帰した場合に、異常判定カウンタのカウント値をカウントダウンさせてもよい（図１７のパターン６）。なお、異常検出部１２５ｄは、送信エラーが検出されたが通信周期内にエラー復帰した場合には、異常判定カウンタのカウント値をカウントダウンさせずに維持することとしてもよい。
【０２００】
また、図１７に図示していないパターンとして、異常検出部１２５ｄは、所定時間ごとに送信エラーとフレームデータの正常送信の有無を検出し、以前に送信エラーが検出されてからフレームデータの正常送信が検出されていない場合に、異常判定カウンタのカウント値をカウントアップし、以前にフレームデータの正常送信が検出されてから送信エラーが検出されていない場合に、異常判定カウンタのカウント値をカウントダウンするようにしてもよい。この場合には、送信エラーに基づく異常状態とフレームデータの正常送信に基づく正常状態のそれぞれの継続時間応じた異常検出が可能になる。
【０２０１】
また、上記した各カウントアップ条件とカウントダウン条件は、各パターンに記載したような組み合わせに限定されるものではなく、上記したパターンにないカウントアップ条件とカウントダウン条件の組み合わせにしてもよい。
【０２０２】
また、異常時にカウントアップ、正常時にカウントダウンという構成にしているが、正常時にカウントアップ、異常時カウントダウンするように構成してもよい。また、異常状態のカウントを行うカウンタと正常状態のカウントを行うカウンタとをそれぞれ別に設ける構成にしてもよい。この場合には、たとえば、正常状態をカウントするカウンタが所定閾値を超えると異常時をカウントするカウンタをリセットするように構成される。
【０２０３】
ここで、図１７のパターン２について図１８を用いて説明する。図１８は、再送制御部および異常検出部の動作例を示す図（その３）である。ここで、図１８では、異常判定カウンタのカウント値が異常判定閾値を超える前に、送信状態が正常に戻った場合の例を示している（図１８の（１）参照）。
【０２０４】
図１８に示すように、異常検出部１２５ｄは、データ送信が正常に完了するごとに、異常判定カウンタのカウント値を１ずつカウントダウンする（図１８の（２）参照）。そして、異常検出部１２５ｄは、異常判定カウンタのカウント値が「０」になると、カウント値「０」を維持する（図１８の（３）参照）。
【０２０５】
このように、異常判定カウンタのカウント値を所定の条件に従ってカウントダウンすることとすれば、一時的な送信エラーの検出が長期に亘って蓄積されることによって本異常状態（永続的な異常状態）であると誤判定してしまうことを防止することができる。
【０２０６】
なお、異常検出部１２５ｄは、再送制御部１２５ｃがデータ送信を一時的に停止させるごとに、異常判定カウンタのカウント値をカウントアップすることとしてもよい。かかる場合、異常検出部１２５ｄは、通信周期においてデータ送信が一時停止させられなかった場合に、異常判定カウンタのカウント値をカウントダウンすることとしてもよい。
【０２０７】
次に、実施例３に係る送信処理の処理手順について図１９を用いて説明する。図１９は、実施例３に係る送信処理の処理手順を示すフローチャートである。
【０２０８】
図１９に示すように、再送制御部１２５ｃは、異常フラグがオフされているか否かを判定し（ステップＳ３０１）、異常フラグがオフされていれば（ステップＳ３０１，Ｙｅｓ）、通信処理周期の開始タイミングであるか否かを判定する（ステップＳ３０２）。
【０２０９】
ステップＳ３０２において、通信処理周期の開始タイミングであると判定すると（ステップＳ３０２，Ｙｅｓ）、再送制御部１２５ｃは、通信周期の開始タイミングであるか否かを判定する（ステップＳ３０３）。
【０２１０】
かかる処理において、通信周期の開始タイミングであると判定すると（ステップＳ３０３，Ｙｅｓ）、再送制御部１２５ｃは、レジスタ１２６の送信停止フラグをオフし（ステップＳ３０４）、送信停止判定カウンタをリセットする（ステップＳ３０５）。
【０２１１】
ステップＳ３０５の処理を終えたとき、あるいは、ステップＳ３０３において通信周期の開始タイミングではない場合（ステップＳ３０３，Ｎｏ）、データ格納処理部１２５ａは、送信停止フラグがオフされているか否かを判定する（ステップＳ３０６）。
【０２１２】
かかる処理において送信停止フラグがオフされていると判定すると（ステップＳ３０６，Ｙｅｓ）、データ格納処理部１２５ａは、送信データを抽出し（ステップＳ３０７）、抽出した送信データを送信バッファ１２２にセットする（ステップＳ３０８）。
【０２１３】
ステップＳ３０８の処理を終えたとき、ステップＳ３０６において送信停止フラグがオフされていない場合（ステップＳ３０６，Ｎｏ）、あるいは、ステップＳ３０２において通信処理周期の開始タイミングではない場合（ステップＳ３０２，Ｎｏ）、再送制御部１２５ｃは、送信エラーを検出したか否かを判定する（ステップＳ３０９）。具体的には、再送制御部１２５ｃは、レジスタ１２６の送信エラーフラグがオンされている場合に、送信エラーを検出したと判定する。
【０２１４】
かかる処理において、送信エラーを検出したと判定すると（ステップＳ３０９，Ｙｅｓ）、再送制御部１２５ｃは、送信停止判定カウンタをカウントアップする（ステップＳ３１０）。また、再送制御部１２５ｃは、送信停止フラグがオフされているか否かを判定し（ステップＳ３１１）、オフされていると判定した場合に（ステップＳ３１１，Ｙｅｓ）、閾値が決定済みであるか否かを判定する（ステップＳ３１２）。そして、閾値が決定済みでなければ（ステップＳ３１２，Ｎｏ）、閾値決定処理を行って閾値を決定する（ステップＳ３１３）。
【０２１５】
ステップＳ３１３の処理を終えた場合、あるいは、ステップＳ３１２において閾値が決定済みである場合（ステップＳ３１２，Ｙｅｓ）、再送制御部１２５ｃは、送信停止判定カウンタのカウント値が送信停止判定閾値を超えたか否かを判定する（ステップＳ３１４）。
【０２１６】
送信停止判定カウンタのカウント値が送信停止判定閾値を超えたと判定した場合（ステップＳ３１４，Ｙｅｓ）、再送制御部１２５ｃは、送信バッファ１２２に格納されている未送信のデータを全て削除し（ステップＳ３１５）、レジスタ１２６の送信停止フラグをオンして（ステップＳ３１６）、処理を終了する。
【０２１７】
なお、再送制御部１２５ｃは、ステップＳ３０１において異常フラグがオフされていない場合（ステップＳ３０１，Ｎｏ）、ステップＳ３０９において送信エラーが検出されていない場合（ステップＳ３０９，Ｎｏ）、ステップＳ３１１において送信停止フラグがオフされていない場合（ステップＳ３１１，Ｎｏ）、ステップＳ３１４において送信判定カウンタのカウント値が送信停止判定閾値を超えていない場合にも（ステップＳ３１４，Ｎｏ）、処理を終了する。
【０２１８】
つづいて、異常判定処理に関する処理手順について図２０を用いて説明する。図２０は、異常判定処理の処理手順を示すフローチャート（その１）である。なお、異常検出部１２５ｄは、図２０に示す処理手順を図１９に示す処理手順と並行して行うものとする。
【０２１９】
図２０に示すように、異常検出部１２５ｄは、送信停止フラグがオフされているか否かを判定し（ステップＳ４０１）、送信停止フラグがオフされている場合には（ステップＳ４０１，Ｙｅｓ）、送信エラーを検出したか否かを検出する（ステップＳ４０２）。
【０２２０】
ステップＳ４０２において、送信エラーを検出すると（ステップＳ４０２，Ｙｅｓ）、異常検出部１２５ｄは、異常判定カウンタをカウントアップする（ステップＳ４０３）。つづいて、異常検出部１２５ｄは、異常フラグがオフされているか否かを判定し（ステップＳ４０４）、異常フラグがオフされている場合には（ステップＳ４０４，Ｙｅｓ）、異常判定カウンタのカウント値が異常判定閾値を超えたか否かを判定する（ステップＳ４０５）。
【０２２１】
そして、ステップＳ４０５において、異常判定カウンタのカウント値が異常判定閾値を超えた場合には（ステップＳ４０５，Ｙｅｓ）、異常フラグをオンして（ステップＳ４０６）、処理を終了する。
【０２２２】
一方、異常検出部１２５ｄは、ステップＳ４０２において送信エラーを検出していない場合には（ステップＳ４０２，Ｎｏ）、異常判定カウンタをカウントダウンして（ステップＳ４０７）、処理を終了する。
【０２２３】
なお、異常検出部１２５ｄは、ステップＳ４０１において送信停止フラグがオフされていない場合（ステップＳ４０１，Ｎｏ）、ステップＳ４０４において異常フラグがオンされていない場合（ステップＳ４０４，Ｎｏ）、ステップＳ４０５において異常判定カウント値が異常判定閾値を終えていない場合にも（ステップＳ４０５，Ｎｏ）、処理を終了する。
【０２２４】
また、異常判定処理の処理手順の他の例について図２１を用いて説明する。図２１は、異常判定処理の処理手順を示すフローチャート（その２）である。図２１では、異常判定カウンタをカウントダウンする場合に、データが正常に送信されたか否かを判定する点で図２０と異なる。ここで、図２１のステップＳ５０１〜Ｓ５０６の処理は、図２０のステップＳ４０１〜Ｓ４０６の処理と同様であるため、ここでの説明は省略する。
【０２２５】
図２１に示すように、異常検出部１２５ｄは、ステップＳ５０２において送信エラーを検出していない場合（ステップＳ５０２，Ｎｏ）、データの正常送信を検出したか否かを判定し（ステップＳ５０７）、正常送信を検出した場合には（ステップＳ５０７，Ｙｅｓ）、異常判定カウンタをカウントダウンして（ステップＳ５０８）、処理を終了する。なお、異常検出部１２５ｄは、ステップＳ５０７において、データの正常送信を検出していない場合には（ステップＳ５０７，Ｎｏ）、そのまま処理を終了する。
【０２２６】
上述してきたように、実施例３では、再送制御部１２５ｃが、通信周期における１周期内に検出された送信エラーの検出回数または継続時間が送信停止判定閾値を超えた場合に、当該通信周期における送信処理を禁止し、異常検出部１２５ｄが、複数の通信周期における送信エラーの検出回数または継続時間の検出を、再送制御部１２５ｃによって送信処理が禁止された期間を除外して行い、検出した検出回数または継続時間が送信停止判定閾値よりも高い異常判定閾値を超えた場合に、通信異常が発生していると判断することとした。したがって、通信異常を正確に判定することができる。
【０２２７】
以上、本発明に係る通信システムの実施例のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０２２８】
たとえば、上述してきた各実施例では、データ通信の効率を高めることを目的として、ＨＶ−ＥＣＵ１，１’が開始ＩＤを含んだフレームデータを送信し、モータＥＣＵ２が開始ＩＤを含むフレームデータを受信すると、開始ＩＤに対応するデータの送信を行うこととした。しかしながら、このように送受信処理を必ずしも行う必要はない。すなわち、上述した各実施例に係る通信システムは、第１の通信装置および第２の通信装置が所定の通信周期でデータの送受信を行う通信システムであればよい。
【０２２９】
また、上述してきた各実施例では、閾値決定処理によって送信停止判定閾値を動的に決定する場合の例について説明したが、再送制御部１２５ｃは、閾値決定処理を行わずに、あらかじめ決められた送信停止判定閾値を用いることとしてもよい。
【０２３０】
また、上述してきた各実施例では、マスタノードであるＨＶ−ＥＣＵ１，１’からのデータの優先度が、スレーブノードであるモータＥＣＵ２からのデータの優先度よりも高く設定される場合の例について説明してきたが、これに限ったものではない。
【０２３１】
また、上述してきた各実施例では、ＨＶ−ＥＣＵ１，１’およびモータＥＣＵ２がＣＡＮプロトコルに従って通信を行うこととしたが、ＨＶ−ＥＣＵ１，１’およびモータＥＣＵ２は、ＣＡＮプロトコルと同様の通信調停を行う他の通信プロトコルに従って通信を行うこととしてもよい。また、ここでは、ＨＶ−ＥＣＵ１，１’およびモータＥＣＵ２がＣＡＮバスを介して通信を行うこととしたが、ＣＡＮバスに類するものであれば他の通信線を用いてもよい。
【産業上の利用可能性】
【０２３２】
以上のように、本発明に係る通信装置および通信システムは、送信エラーが発生した場合であっても、所定の通信周期において受信すべきデータの取りこぼしを防止したい場合に有効であり、特に、車載ＥＣＵ間を相互に接続する車載ネットワークへの適用が考えられる。
【符号の説明】
【０２３３】
１，１’  ＨＶ−ＥＣＵ（第１の通信装置）
１１    ＣＡＮトランシーバ
１２    マイコン
１２１    通信部
１２１ａ  送信レジスタ
１２１ｂ  受信レジスタ
１２２    送信バッファ
１２３    受信バッファ
１２４    プラットフォーム
１２５    制御部
１２６    レジスタ
１２５ａ  データ格納処理部
１２５ｂ  受信完了処理部
１２５ｃ  再送制御部
１２５ｄ  異常検出部
２    モータＥＣＵ（第２の通信装置）
２１    ＣＡＮトランシーバ
２２    マイコン
２２１    通信部
２２２    送信バッファ
２２３    受信バッファ
２２４    プラットフォーム
２２５    制御部
２２５ａ  ＩＤ読取部
２２５ｂ  データ格納処理部
３    モータ
【図１】
0005723189.tif 000002
【図２】
0005723189.tif 000003
【図３】
0005723189.tif 000004
【図４】
0005723189.tif 000005
【図５】
0005723189.tif 000006
【図６】
0005723189.tif 000007
【図７】
0005723189.tif 000008
【図８】
0005723189.tif 000009
【図９】
0005723189.tif 000010
【図１０】
0005723189.tif 000011
【図１１】
0005723189.tif 000012
【図１２】
0005723189.tif 000013
【図１３】
0005723189.tif 000014
【図１４】
0005723189.tif 000015
【図１５】
0005723189.tif 000016
【図１６】
0005723189.tif 000017
【図１７】
0005723189.tif 000018
【図１８】
0005723189.tif 000019
【図１９】
0005723189.tif 000020
【図２０】
0005723189.tif 000021
【図２１】
0005723189.tif 000022