(57)【特許請求の範囲】
【請求項１】
送信タイミングが到来する度に、複数種類のデータのうち、その到来した送信タイミングで送信すべきデータを送信バッファに転送して、該送信バッファ内のデータを他の装置に送信する送信装置であって、
複数通りの各送信タイミング別に、その送信タイミングで送信されるべきデータが格納されるデータバッファが設けられており、
前記送信バッファに送信対象のデータを転送する手段として、
前記データバッファのうちから、到来した送信タイミングで送信されるべきデータが格納されているデータバッファを特定し、その特定したデータバッファ内のデータを前記送信バッファに転送する送信処理手段を備えており、
更に、前記データバッファの各々にはバッファ識別番号が与えられており、
各送信タイミングで何れのデータバッファ内のデータを送信すべきかを表す定義テーブルであって、前記複数通りの送信タイミングの各々について、その送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示する定義テーブルが記憶されたテーブル記憶部を備え、
前記送信処理手段は、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファを、前記定義テーブルに基づき前記バッファ識別番号を用いて特定するように構成されていること、
を特徴とする送信装置。
【請求項２】
請求項１に記載の送信装置において、
前記各送信タイミングのうち、最短周期の送信タイミング以外の送信タイミングは、最短周期の送信タイミングが複数回到来する毎に到来するタイミングであると共に、前記最短周期の送信タイミングは、そのタイミングと重複する他の送信タイミングの組み合わせによってＮ通り（Ｎは２以上の整数）の異なる送信タイミングとして区別されており、
更に、そのＮ通りの最短周期の送信タイミングの各々にはタイミング識別番号が与えられており、
前記送信処理手段は、前記最短周期の送信タイミングが到来する毎にカウンタのカウントアップを行うと共に、そのカウンタの値に対応するタイミング識別番号が与えられた送信タイミングを、今回到来した送信タイミングとして特定すること、
を特徴とする送信装置。
【請求項３】
請求項２に記載の送信装置において、
前記定義テーブルは、前記タイミング識別番号の各々に対して、そのタイミング識別番号の送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示するように構成されており、
前記送信処理手段は、前記定義テーブルにおいて、今回到来したと特定した送信タイミングのタイミング識別番号に対して送信対象とすべきと指示されているデータバッファのバッファ識別番号を検出し、その検出したバッファ識別番号のデータバッファを、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファとして特定すること、
を特徴とする送信装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の送信装置において、
前記送信処理手段は、当該装置から送信されるデータの内容を示す識別情報のデータも、前記送信バッファに転送すること、
を特徴とする送信装置。
【請求項５】
複数のマイコンを備えると共に、その複数のマイコンがデータ通信を行いつつ制御対象を制御するための処理を行う電子制御装置であって、
前記複数のマイコンのうち、データを送信するマイコン（以下、送信側マイコンという）には、複数通りの各送信タイミング別に、その送信タイミングで送信されるべきデータが格納されるデータバッファが設けられており、
更に、前記データバッファの各々にはバッファ識別番号が与えられており、
前記送信側マイコンには、各送信タイミングで何れのデータバッファ内のデータを送信すべきかを表す定義テーブルであって、前記複数通りの送信タイミングの各々について、その送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示する定義テーブルが記憶されたテーブル記憶部が備えられており、
前記送信側マイコンは、送信タイミングが到来する度に、前記データバッファのうちから、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファを、前記定義テーブルに基づき前記バッファ識別番号を用いて特定し、その特定したデータバッファ内のデータを他のマイコンに送信すること、
を特徴とする電子制御装置。
【請求項６】
請求項５に記載の電子制御装置において、
前記各送信タイミングのうち、最短周期の送信タイミング以外の送信タイミングは、最短周期の送信タイミングが複数回到来する毎に到来するタイミングであると共に、前記最短周期の送信タイミングは、そのタイミングと重複する他の送信タイミングの組み合わせによってＮ通り（Ｎは２以上の整数）の異なる送信タイミングとして区別されており、
更に、そのＮ通りの最短周期の送信タイミングの各々にはタイミング識別番号が与えられており、
前記送信側マイコンは、前記最短周期の送信タイミングが到来する毎にカウンタのカウントアップを行うと共に、そのカウンタの値に対応するタイミング識別番号が与えられた送信タイミングを、今回到来した送信タイミングとして特定すること、
を特徴とする電子制御装置。
【請求項７】
請求項６に記載の電子制御装置において、
前記定義テーブルは、前記タイミング識別番号の各々に対して、そのタイミング識別番号の送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示するように構成されており、
前記送信側マイコンは、前記定義テーブルにおいて、今回到来したと特定した送信タイミングのタイミング識別番号に対して送信対象とすべきと指示されているデータバッファのバッファ識別番号を検出し、その検出したバッファ識別番号のデータバッファを、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファとして特定すること、
を特徴とする電子制御装置。
【請求項８】
請求項５ないし請求項７の何れか１項に記載の電子制御装置において、
前記送信側マイコンは、前記特定したデータバッファ内のデータと共に、当該マイコンから送信されるデータの内容を示す識別情報も、他のマイコンに送信すること、
を特徴とする電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ通信に関するものである。
【０００２】
【従来の技術】
従来より、例えば自動車のエンジンを制御する電子制御装置（以下、ＥＣＵともいう）として、複数のマイコン（詳しくは、マイクロコンピュータ）を備えたものがあり、そのようなＥＣＵでは、複数のマイコンが、各自で演算した制御データを通信（いわゆるマイコン間通信）によって互いにやり取りしながら、各自に割り当てられた制御対象を制御するための処理を行う。
【０００３】
そして、この種のＥＣＵにおいて、各マイコンは、データの送信タイミングが到来する度に、他のマイコンに送信すべき全種類の各データを予め決められた順番で送信バッファに転送して、その各データを送信するようになっていた。
ここで、図８に具体例を示す。尚、図８は、メインのマイコン（メインマイコン）とサブのマイコン（サブマイコン）との２つが双方向に通信を行う場合の例を表している。
【０００４】
図８の例では、その図８の上段に示すように、メインマイコンからサブマイコンへ、回転数，吸入空気量，ブレーキスイッチのオン／オフ，…，ＩＧ（イグニッション）スイッチのオン／オフといったデータが送信される。
そして、メインマイコンからサブマイコンに送られるデータの１番目は回転数、２番目は吸入空気量、３番目はブレーキスイッチのオン／オフといった具合に、全データの各々を送信する順番が予め決まっており、メインマイコンは、送信タイミングが到来する毎に、サブマイコンへ送信すべき全データを、上記の順番で送信バッファに転送してサブマイコンへ送信する。
【０００５】
このため、図８の上段右側に示すように、サブマイコンの受信バッファには、メインマイコンから送信される順番通りに各データが格納される。そして、受信側であるサブマイコンは、受信バッファに格納されているデータの順番により、そのデータが何であるかを特定することとなる。
【０００６】
また、図８の例では、サブマイコンからメインマイコンへ、アクセル開度，スロットルセンサ値，…，車速といったデータが送信される。
そして、サブマイコンからメインマイコンに送られるデータについても、１番目はアクセル開度、２番目はスロットルセンサ値といった具合に、全データの順番が決まっており、サブマイコンは、送信タイミングが到来する毎に、メインマイコンへ送信すべき全データを、上記の順番で送信バッファに転送してメインマイコンへ送信する。
【０００７】
このため、図８の下段左側に示すように、メインマイコンの受信バッファには、サブマイコンから送信される順番通りに各データが格納され、受信側であるメインマイコンは、受信バッファに格納されているデータの順番により、そのデータが何であるかを特定することとなる。
【０００８】
【発明が解決しようとする課題】
しかしながら、図８のような方法では、毎回、全ての送信対象データを送信するため、例えば８ｍｓ毎に通信するようなシステムにおいては、３２ｍｓ毎にしか更新されないようなデータについても、８ｍｓ毎に送信することとなっていた。つまり、本当は送信周期が長くて良いデータ（換言すれば、更新周期が長いデータ）も、送信周期が短いデータと同じ周期で送信することとなる。よって、図８のような方法では、無駄が多く、送信データ数を増加させることが難しい。
【０００９】
そこで、例えば、３２ｍｓ毎に更新されるデータは、８ｍｓ毎の送信タイミングの４回に１回の割合で（つまり、３２ｍｓ毎の送信タイミングで）送信する、といった具合に、複数通りの送信タイミングを設けて、その各送信タイミング毎に、そのタイミングで送信すべきデータだけを送信する、という手法を採ることが考えられる。
【００１０】
そして、この手法を実現するためには、全ての送信対象データの各々について、どのデータをどのタイミングで送信するのかを管理するようにプログラムを構成することが考えられる。
ところが、そのようにすると、データ送信用処理の複雑化を招く上に、送信対象データの追加、削除、送信タイミングの変更（どのデータをどのタイミングで送信するかの変更）を容易に行うことができないという問題が生じる。
【００１１】
つまり、この場合、送信タイミングが到来する毎に起動されるルーチンにより、今回の送信タイミングが８ｍｓ毎や３２ｍｓ毎といった複数通りの送信タイミングのうちの何れであるかを判定し、その判定した送信タイミングで送信すべき各データを、それが格納されているメモリ領域から読み出して送信バッファに転送する、といった処理を行うこととなる。
【００１２】
しかし、例えば、送信タイミングａで送信していたデータｄを、他の送信タイミングｂで送信するように変更したい場合には、今回の送信タイミングが送信タイミングａであると判定した場合に実行されるプログラムの内容から、データｄの読み出しと送信バッファへの転送とを行っていた処理部分を削除し、更に、今回の送信タイミングが送信タイミングｂであると判定した場合に実行されるプログラムの内容に、データｄの読み出しと送信バッファへの転送とを行うための処理部分を追加しなければならず、プログラムの修正部分が多岐に及んでしまうのである。
【００１３】
本発明は、こうした問題に鑑みなされたものであり、データ送信用の処理を簡素化すると共に、送信対象データの追加、削除、送信タイミングの変更を、容易に行うことができるようにすることを目的としている。
【００１４】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項１に記載の送信装置は、送信タイミングが到来する度に、複数種類のデータのうち、その到来した送信タイミングで送信すべきデータを送信バッファに転送して、該送信バッファ内のデータを他の装置に送信するものであり、この送信装置には、複数通りの各送信タイミング別に、その送信タイミングで送信されるべきデータが格納されるデータバッファが設けられている。そして、この送信装置では、送信バッファに送信対象のデータを転送するために設けられた送信処理手段が、前記送信タイミング別のデータバッファのうちから、到来した送信タイミングで送信されるべきデータが格納されているデータバッファを特定して、その特定したデータバッファ内のデータを送信バッファに転送する。
【００１５】
このような請求項１の送信装置によれば、下記の（１）〜（３）の効果が得られる。
（１）送信対象データの追加、削除、送信タイミングの変更は、送信タイミング別に設けられたデータバッファの内容（どのデータバッファにどのデータを書き込むか）を変えるだけで対応することができる。特に、あるデータｄの送信タイミングを変更したい場合には、そのデータｄを求める演算プログラムが、そのデータｄを、変更前の送信タイミングａに対応するデータバッファではなく、変更後の送信タイミングｂに対応するデータバッファに書き込むといった具合に、データｄの書き込み先を変更するだけで対応することができる。
【００１６】
（２）送信対象データをデータバッファ単位で扱うため、データ送信用処理を簡素化することができる。つまり、送信対象データの各々について、今回の送信タイミングで送信するか否かを個別にチェックする必要がなく、送信対象データをデータバッファ毎にまとめて処理することができるため、データ送信のための処理を効率良く行うことができ、延いては、処理の簡素化及び高速化を図ることができる。
【００１７】
（３）各送信タイミングで送るべきデータのみが送信されるため、効率が良く、送信データ数を増加させ易くなる。
更に、請求項１の送信装置において、データバッファの各々にはバッファ識別番号が与えられている。そして、請求項１の送信装置は、テーブル記憶部を備えており、そのテーブル記憶部には、各送信タイミングで何れのデータバッファ内のデータを送信すべきかを表す定義テーブルであって、複数通りの送信タイミングの各々について、その送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示する定義テーブルが記憶されている。そして、送信処理手段は、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファを、前記定義テーブルに基づきバッファ識別番号を用いて特定するようになっている。
【００１８】
このような請求項１の送信装置によれば、送信処理手段の処理内容を変えなくても、定義テーブルの内容を変更するだけで、どのデータバッファのデータをどの送信タイミングで送信するかを変更することができ、送信データのデータバッファ単位での追加や削除を行う際にも、定義テーブルの内容を変更するだけで対応することができる。そして、送信処理手段の処理内容を変えることなく、各種変更に対応することができるため、送信対象データ及び送信スケジュールが異なる別の通信システムに転用することも容易になる。
【００１９】
次に、請求項２の送信装置では、請求項１の送信装置において、前記各送信タイミングのうち、最短周期の送信タイミング以外の送信タイミングは、最短周期の送信タイミングが複数回到来する毎に到来するタイミングであると共に、前記最短周期の送信タイミングは、そのタイミングと重複する他の送信タイミングの組み合わせによってＮ通り（Ｎは２以上の整数）の異なる送信タイミングとして区別されており、更に、そのＮ通りの最短周期の送信タイミングの各々にはタイミング識別番号が与えられている。そして、送信処理手段は、最短周期の送信タイミングが到来する毎にカウンタのカウントアップを行うと共に、そのカウンタの値に対応するタイミング識別番号が与えられた送信タイミングを、今回到来した送信タイミングとして特定する。
また、請求項３の送信装置では、請求項２の送信装置において、前記定義テーブルは、前記タイミング識別番号の各々に対して、そのタイミング識別番号の送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示するように構成されている。そして、送信処理手段は、前記定義テーブルにおいて、今回到来したと特定した送信タイミングのタイミング識別番号に対して送信対象とすべきと指示されているデータバッファのバッファ識別番号を検出し、その検出したバッファ識別番号のデータバッファを、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファとして特定する。
また、請求項４に記載の送信装置では、請求項１〜３の送信装置において、送信処理手段が、当該装置から送信されるデータの内容を示す識別情報のデータも、送信バッファに転送するようになっている。
このような請求項４の送信装置によれば、本来の送信データと共に、その送信データの内容を示す識別情報のデータも送信されることとなるため、データを受信する側の他の装置は、上記識別情報のデータにより、今回受信したデータの内容を確実に知ることができ、非常に有利である。
【００２０】
次に、請求項５に記載の電子制御装置では、複数のマイコンがデータ通信を行いつつ制御対象を制御するための処理を行うが、特に、その複数のマイコンのうち、データを送信する側である送信側マイコンには、複数通りの各送信タイミング別に、その送信タイミングで送信されるべきデータが格納されるデータバッファが設けられている。そして更に、データバッファの各々にはバッファ識別番号が与えられており、送信側マイコンには、各送信タイミングで何れのデータバッファ内のデータを送信すべきかを表す定義テーブルであって、複数通りの送信タイミングの各々について、その送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示する定義テーブルが記憶されたテーブル記憶部が備えられている。そして、その送信側マイコンは、送信タイミングが到来する度に、前記送信タイミング別のデータバッファのうちから、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファを、前記定義テーブルに基づきバッファ識別番号を用いて特定し、その特定したデータバッファ内のデータを他のマイコンに送信する。
【００２１】
このような請求項５の電子制御装置によれば、請求項１の送信装置と同様の上記（１）〜（３）の効果を得ることができる。尚、例えば、複数のマイコンの各々が送信者となり得る電子制御装置の場合には、その全てのマイコンに対して上記送信側マイコンの構成を適用するのが効果的であるが、一部のマイコンだけに上記送信側マイコンの構成を適用しても良い。
【００２３】
そして更に、請求項５の電子制御装置によれば、送信側マイコンがデータ送信のために行う処理の内容を変えなくても、定義テーブルの内容を変更するだけで、どのデータバッファのデータをどの送信タイミングで送信するかを変更することができ、送信データのデータバッファ単位での追加や削除を行う際にも、定義テーブルの内容を変更するだけで対応することができる。そして、処理内容を変えることなく、各種変更に対応することができるため、その処理のプログラムを、送信対象データ及び送信スケジュールが異なる別の装置に転用することも容易になる。
【００２４】
次に、請求項６の電子制御装置では、請求項５の電子制御装置において、前記各送信タイミングのうち、最短周期の送信タイミング以外の送信タイミングは、最短周期の送信タイミングが複数回到来する毎に到来するタイミングであると共に、前記最短周期の送信タイミングは、そのタイミングと重複する他の送信タイミングの組み合わせによってＮ通り（Ｎは２以上の整数）の異なる送信タイミングとして区別されており、更に、そのＮ通りの最短周期の送信タイミングの各々にはタイミング識別番号が与えられている。そして、送信側マイコンは、最短周期の送信タイミングが到来する毎にカウンタのカウントアップを行うと共に、そのカウンタの値に対応するタイミング識別番号が与えられた送信タイミングを、今回到来した送信タイミングとして特定する。
また、請求項７の電子制御装置では、請求項６の電子制御装置において、前記定義テーブルは、前記タイミング識別番号の各々に対して、そのタイミング識別番号の送信タイミングで送信対象とすべきデータバッファのバッファ識別番号を指示するように構成されている。そして更に、送信側マイコンは、前記定義テーブルにおいて、今回到来したと特定した送信タイミングのタイミング識別番号に対して送信対象とすべきと指示されているデータバッファのバッファ識別番号を検出し、その検出したバッファ識別番号のデータバッファを、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファとして特定する。
また、請求項８に記載の電子制御装置では、請求項５〜７の電子制御装置において、送信側マイコンは、前記特定したデータバッファ内のデータと共に、当該マイコンから送信されるデータの内容を示す識別情報も、他のマイコンに送信するようになっている。この電子制御装置によれば、データを受信する側のマイコンは、上記識別情報により、今回受信したデータの内容を確実に知ることができ、非常に有利である。
【００２５】
【発明の実施の形態】
以下、本発明が適用された実施形態について、図面を用いて説明する。
まず図１は、実施形態のＥＣＵ（電子制御装置）１の構成を表すブロック図である。
【００２６】
本実施形態のＥＣＵ１は、自動車のエンジンを制御するものであり、２つのマイコン３ａ，３ｂを備えている。そして、マイコン３ａ，３ｂの各々は、プログラムを実行するＣＰＵ５と、ＣＰＵ５により実行されるプログラム及び該プログラムの実行時に参照される固定データ等が格納されたＲＯＭ７と、ＣＰＵ５によって演算されるデータが格納されるＲＡＭ９と、外部との入出力を行うためのＩ／Ｏインタフェース１１と、それらを接続するバス１３等とを有している。
【００２７】
また、ＥＣＵ１には、エンジンの運転状態を検出するための各種センサ（クランク角センサ，吸入空気量センサ等）や各種スイッチ（ブレーキスイッチ，ＩＧスイッチ等）からの信号をマイコン３ａ，３ｂに入力させたり、マイコン３ａ，３ｂからの指令に応じてインジェクタやスロットル開度調節用モータ等の各種アクチュエータに駆動信号を出力する入出力回路１５と、自動車のバッテリ１７からの電力を受けて、マイコン３ａ，３ｂや入出力回路１５に一定の電源電圧Ｖｄｄを供給する電源ＩＣ１９とが備えられている。
【００２８】
そして、このＥＣＵ１において、マイコン３ａとマイコン３ｂは、通信ライン２１で接続されている。
尚、図示は省略しているが、通信ライン２１は、マイコン３ａからマイコン３ｂへのデータ送信線、マイコン３ｂからマイコン３ａへのデータ送信線、及びマイコン３ａ，３ｂ同士でデータ送受信用のクロックを共有するためのクロック線等を含んでいる。一方、電源ＩＣ１９は、マイコン３ａから所定時間以内毎にウォッチドッグパルスＷＤＰが出力されない場合に該マイコン３ａへリセット信号ＲＳＴを出力する、いわゆるウォッチドッグタイマ機能（暴走監視機能）を備えている。また、マイコン３ｂが正常に動作しているか否かは、マイコン３ａが監視するようになっている。
【００２９】
このようなＥＣＵ１において、２つのマイコン３ａ，３ｂは、各自が求めたデータを上記通信ライン２１を介して互いにやり取りしながら、各自に割り当てられた制御対象を制御するための処理を行う。
例えば、マイコン３ａからマイコン３ｂへは、エンジン回転数，吸入空気量，ブレーキスイッチのオン／オフ，ＩＧスイッチのオン／オフといったデータが定期的に送信され、マイコン３ｂからマイコン３ａへは、アクセル開度，スロットルセンサ値，車速といったデータが定期的に送信される。そして、マイコン３ａは、自分が求めたデータとマイコン３ｂから受信したデータとに基づいて、インジェクタや点火装置を制御（つまり、エンジンに対する燃料噴射や点火時期を制御）するための処理を行い、マイコン３ｂは、自分が求めたデータとマイコン３ａから受信したデータとに基づいて、スロットル開度調節用モータを制御（つまり、スロットル開度を制御）するための処理を行う。
【００３０】
次に、各マイコン３ａ，３ｂがどの様にしてデータを送信しているのかについて説明する。尚、まず参考例の形態について説明する。また以下では、マイコン３ａからマイコン３ｂへのデータ送信についてのみ説明するが、マイコン３ｂからマイコン３ａへのデータ送信についても同様である。
【００３１】
まず、図２に示すように、マイコン３ａのＲＡＭ９には、８ｍｓ毎に送信されるべきデータが格納されるデータバッファ（以下、８ｍｓデータバッファという）３１と、１６ｍｓ毎に送信されるべきデータが格納される２つのデータバッファ３２，３３と、通信相手（この場合はマイコン３ｂ）に送信されるデータ（送信データ）が格納される送信バッファ４１との、各領域が設けられている。
【００３２】
そして、マイコン３ａは、８ｍｓ毎に、そのタイミングで送信すべきデータを送信バッファ４１に転送して、その送信バッファ４１内のデータをマイコン３ｂへと送信するようになっており、８ｍｓデータバッファ３１に格納されるデータは、毎回（即ち、８ｍｓ毎の送信タイミングが到来する度に）送信される。また、データバッファ３２に格納されるデータと、データバッファ３３に格納されるデータは、交互に送信される。
【００３３】
つまり、データバッファ３２に格納されるデータの送信間隔と、データバッファ３３に格納されるデータの送信間隔は、両方共に１６ｍｓであるが、その送信タイミングは８ｍｓだけずれている。そこで以下、データバッファ３２を、１６ｍｓ−Ａデータバッファ３２といい、データバッファ３３を１６ｍｓ−Ｂデータバッファ３３という。また、１６ｍｓ−Ａデータバッファ３２内のデータを送信するタイミングを、８ｍｓタイミング［１］といい、１６ｍｓ−Ｂデータバッファ３３内のデータを送信するタイミングを、８ｍｓタイミング［２］という。尚、図２においては、［１］を丸付き数字の１で表し、［２］を丸付き数字の２で表している。
【００３４】
よって、マイコン３ａは、図２に示すように、８ｍｓタイミング［１］では、８ｍｓデータバッファ３１内のデータ（以下、８ｍｓデータという）と、１６ｍｓ−Ａデータバッファ３２内のデータ（以下、１６ｍｓ−Ａデータという）とを、送信バッファ４１に転送して、それらをマイコン３ｂに送信し、その次の送信タイミングである８ｍｓタイミング［２］では、８ｍｓデータと、１６ｍｓ−Ｂデータバッファ３３内のデータ（以下、１６ｍｓ−Ｂデータという）とを、送信バッファ４１に転送して、それらをマイコン３ｂに送信することとなる。
【００３５】
また更に、マイコン３ａは、送信バッファ４１の先頭位置に、今回送信されるデータの内容（つまり、送信データの編成であり、その送信データの何番目がどのデータであるかということ）を示すＩＤ（識別情報のデータに相当）も転送する。よって、そのＩＤも、本来の送信データと共に通信相手のマイコン３ｂへと送信され、マイコン３ｂは、そのＩＤにより、今回受信したデータの内容を知ることとなる。
【００３６】
尚、この参考例では、マイコン３ａでの演算プログラムによって演算されるデータのうち、エンジン回転数や吸入空気量等、８ｍｓ毎に更新されるデータが、８ｍｓデータバッファ３１に格納される。そして、ＩＧスイッチのオン／オフやブレーキスイッチのオン／オフ等、１６ｍｓ毎に更新されるデータが、１６ｍｓ−Ａデータバッファ３２と１６ｍｓ−Ｂデータバッファ３３との何れかに、ほぼ均等に割り振られて格納される。
【００３７】
次に、図２の動作を行うためにマイコン３ａのＣＰＵ５が実行する送信データ処理の内容について、図３のフローチャートを用い説明する。尚、図３の送信データ処理は、８ｍｓ毎の送信タイミングが到来する度に実行される。
図３に示すように、マイコン３ａのＣＰＵ５が送信データ処理の実行を開始すると、まず、ステップ（以下単に「Ｓ」と記す）１１０にて、８ｍｓデータバッファ３１の内容（即ち８ｍｓデータ）を送信バッファ４１に転送し、続くＳ１２０にて、カウンタＣｎｔの値が０であるか否かを判定する。尚、カウンタＣｎｔは、今回の送信タイミングが８ｍｓタイミング［１］と８ｍｓタイミング［２］との何れであるかを判定するためのものであり、その値は、当該マイコン３ａが動作を開始した時に０に初期化されている。
【００３８】
ここで、上記Ｓ１２０にて、カウンタＣｎｔの値が０であると判定した場合には、今回の送信タイミングが８ｍｓタイミング［１］であると判断して、Ｓ１３０に進み、１６ｍｓ−Ａデータバッファ３２の内容（即ち１６ｍｓ−Ａデータ）を送信バッファ４１に転送する。次に、Ｓ１４０にて、ＩＤの値を０に設定すると共に、そのＩＤ（＝０）を、送信バッファ４１の先頭位置に転送する。そして、続くＳ１５０にて、カウンタＣｎｔの値を１インクリメント（＋１）し、その後、当該送信データ処理を終了する。すると、図示しない送信処理により、送信バッファ４１内のデータがマイコン３ｂへと送信される。
【００３９】
一方、上記Ｓ１２０にて、カウンタＣｎｔの値が０ではないと判定した場合には、今回の送信タイミングが８ｍｓタイミング［２］であると判断して、Ｓ１６０に移行し、１６ｍｓ−Ｂデータバッファ３３の内容（即ち１６ｍｓ−Ｂデータ）を送信バッファ４１に転送する。次に、Ｓ１７０にて、ＩＤの値を１に設定すると共に、そのＩＤ（＝１）を、送信バッファ４１の先頭位置に転送する。そして、続くＳ１８０にて、カウンタＣｎｔの値を０に戻し（初期化し）、その後、当該送信データ処理を終了する。すると、この場合にも、図示しない送信処理により、送信バッファ４１内のデータがマイコン３ｂへと送信される。
【００４０】
以上の送信データ処理により、８ｍｓタイミング［１］（つまり、８ｍｓ毎の送信タイミングの２回に１回のうちの一方）では、図２の如く、値が０のＩＤと、８ｍｓデータと、１６ｍｓ−Ａデータとが、その順で送信バッファ４１に集められてマイコン３ｂへと送信され、８ｍｓタイミング［２］（つまり、８ｍｓ毎の送信タイミングの２回に１回のうちの他方）では、値が１のＩＤと、８ｍｓデータと、１６ｍｓ−Ｂデータとが、その順で送信バッファ４１に集められてマイコン３ｂへと送信されることとなる。尚、この参考例では、図３の送信データ処理が、送信処理手段としての処理に相当している。
【００４１】
以上のような参考例のＥＣＵ１におけるマイコン３ａ，３ｂには、複数通りの各送信タイミング別に、その送信タイミングで送信されるべきデータが複数格納されるデータバッファ３１，３２，３３が設けられている。よって、各マイコン３ａ，３ｂにおいて、通信相手に送信されるデータは、同じタイミングで送信されるもの同士がブロック化されて格納されることとなる。そして、マイコン３ａ，３ｂは、８ｍｓ毎の送信タイミングが到来する度に、送信タイミング別のデータバッファ３１〜３３のうちから、今回到来した送信タイミングで送信されるべきデータが格納されているデータバッファを特定して（Ｓ１２０）、その特定したデータバッファ内のデータを送信バッファ４１に転送し通信相手へと送信するようにしている。
【００４２】
このため、本参考例のＥＣＵ１によれば、前述した（１）〜（３）の効果を得ることができる。尚、図３の処理では、カウンタＣｎｔの代わりに、フラグを用いても良い。
ところで、データバッファの数は３つ以外でも良い。
【００４３】
例えば、マイコン３ａにおいて、図４に示すように、データバッファ３１〜３３に加えて、更に、３２ｍｓ毎に送信されるべきデータ（換言すれば、３２ｍｓ毎に更新されるデータ）が格納される２つのデータバッファ３４，３５を追加したとする。尚、以下では、一方のデータバッファ３４を、３２ｍｓ−Ａデータバッファ３４といい、他方のデータバッファ３５を、３２ｍｓ−Ｂデータバッファ３５という。
【００４４】
そして、この場合、マイコン３ａは、例えば、１６ｍｓ−Ａデータを送信するタイミングの２回に１回の割合で、３２ｍｓ−Ａデータバッファ３４内のデータ（以下、３２ｍｓ−Ａデータという）を送信バッファ４１に転送し、１６ｍｓ−Ｂデータを送信するタイミングの２回に１回の割合で、３２ｍｓ−Ｂデータバッファ３５内のデータ（以下、３２ｍｓ−Ｂデータという）を送信バッファ４１に転送する、といった具合に、送信対象のデータバッファ（即ち、送信バッファ４１へのデータ転送対象とするデータバッファ）を切り替えるようにすれば良い。
【００４５】
つまり、このようにすれば、３２ｍｓ−Ａデータと、３２ｍｓ−Ｂデータは、８ｍｓ毎の送信タイミングの４回に１回の割合で且つ互いに違うタイミングで、通信相手のマイコン３ｂへと送信されることとなる。そして、この場合、５つのデータバッファ３１〜３５のうち、８ｍｓ毎の送信タイミングで同時に送信対象とされるデータバッファの組み合わせは、「３１＋３２＋３４」と「３１＋３３＋３５」と「３１＋３２」と「３１＋３３」との４通りになる（図５参照）。
【００４６】
尚、この場合、送信バッファ４１の先頭位置に転送されるＩＤの値は、送信対象となったデータバッファの４通りの組み合わせに応じて、０〜３のうちの何れかに設定される。また、図４の送信バッファ４１内において、「１６ｍｓデータ」と記載された部分は、そこに１６ｍｓ−Ａデータと１６ｍｓ−Ｂデータとの何れかが転送されることを表しており、「３２ｍｓデータ」と記載された部分は、そこに３２ｍｓ−Ａデータと３２ｍｓ−Ｂデータとの何れかが転送されることを表している。
【００４７】
一方、図４の如くデータバッファを５つ設けた場合でも、図３の処理と同様に、カウンタの値に応じて送信対象のデータバッファが切り替わるようにプログラムを構成することができる。
但し、どのデータバッファのデータをどの送信タイミングで送信するか、といったスケジューリングの変更や、送信データのデータバッファ単位での追加／削除を簡単に行いたいならば、以下に説明する実施形態のようにすることが好ましい。
【００４８】
そこで次に、実施形態のＥＣＵについて説明する。
尚、本実施形態のＥＣＵは、図１〜図３を用いて説明した先の参考例のＥＣＵ１と比較すると、ハードウェア面は全く同じであるため、以下の説明において、各部の符号は、参考例と同じものを用いることとする。また、以下では、参考例の場合と同様に、マイコン３ａからマイコン３ｂへのデータ送信についてのみ説明するが、マイコン３ｂからマイコン３ａへのデータ送信についても同様である。
【００４９】
まず、実施形態のＥＣＵにおいて、マイコン３ａのＲＡＭ９には、図４に示した５つのデータバッファ３１〜３５（詳しくは、そのデータバッファ３１〜３５としての各領域）が設けられている。
また、マイコン３ａのＲＯＭ７には、テーブル記憶部としての領域が設けられており、その領域には、各送信タイミングで何れのデータバッファ内のデータを送信すべきか（換言すれば、何れのデータバッファを送信対象とすべきか）を表す図５の如き定義テーブルが記憶されている。
【００５０】
即ち、本実施形態では、８ｍｓ毎の送信タイミングを、送信データの内容別に、８ｍｓタイミングＡと、８ｍｓタイミングＢと、８ｍｓタイミングＣと、８ｍｓタイミングＤとの、４つに区別している。そして、定義テーブルは、８ｍｓタイミングＡ〜Ｄの各々について、データバッファ３１〜３５のうちの何れを送信対象にすべきかを示した２次元テーブルとなっている。より詳しく説明すると、この定義テーブルでは、１行目〜４行目が、８ｍｓタイミングＡ〜Ｄの各々に対応しており、１列目〜５列目が、データバッファ３１〜３５の各々に対応している。そして、このテーブルでは“１”が“送信対象にする”を意味している。よって、例えば、定義テーブルの１行目は、その行の各データが「１，１，０，１，０」であるため、「８ｍｓタイミングＡでは、８ｍｓデータバッファ３１と、１６ｍｓ−Ａデータバッファ３２と、３２ｍｓ−Ａデータバッファ３４とを、送信対象にする」ということを示しており、定義テーブルの２行目は、その行の各データが「１，０，１，０，１」であるため、「８ｍｓタイミングＢでは、８ｍｓデータバッファ３１と、１６ｍｓ−Ｂデータバッファ３３と、３２ｍｓ−Ｂデータバッファ３５とを、送信対象にする」ということを示している。
【００５１】
そして更に、本実施形態のＥＣＵにおいて、マイコン３ａのＣＰＵ５は、図３の処理に代えて、図６に示す送信データ処理を実行することにより、今回の送信タイミングで送信対象とすべきデータバッファを、上記定義テーブルから特定し、その特定したデータバッファ内のデータを送信バッファ４１に転送する。
【００５２】
そこで次に、本実施形態のＥＣＵでマイコン３ａのＣＰＵ５が実行する送信データ処理の内容について、図６を用い詳しく説明する。
尚、図６の送信データ処理及び以下の説明では、定義テーブルの１行目を０行目とし、同様に定義テーブルの１列目を０列目としている。また、図６及び以下の説明において、Ｃｎｔは、定義テーブルの行数を示す変数であり、ｉは、定義テーブルの列数を示す変数である（図５参照）。そして更に、「Ｔａｂｌｅ［Ｃｎｔ］［ｉ］」は、定義テーブルにおけるＣｎｔ行目且つｉ列目のデータ値を意味している。また、Ｃｎｔの値は、マイコン３ａが動作を開始した時に０に初期化されている。
【００５３】
図６に示すように、マイコン３ａのＣＰＵ５が送信データ処理の実行を開始すると、まずＳ２１０にて、ｉの値を０に初期化する。
そして、続くＳ２２０にて、ｉの値がデータバッファの数（この例では５）よりも小さいか否かを判定する。
【００５４】
ここで、ｉの値がデータバッファの数よりも小さければ（Ｓ２２０：ＹＥＳ）、Ｓ２３０に進み、定義テーブルを参照して、「Ｔａｂｌｅ［Ｃｎｔ］［ｉ］」が１であるか否かを判定する。そして、１であれば（Ｓ２３０：ＹＥＳ）、Ｓ２４０に進み、定義テーブルにおいてｉの値に対応するデータバッファ（即ち、ｉ列目に対応するデータバッファ）内のデータを、送信バッファ４１に転送する。
【００５５】
そして、上記Ｓ２４０の処理を行うか、或いは、上記Ｓ２３０にて「Ｔａｂｌｅ［Ｃｎｔ］［ｉ］」が１ではないと判定したならば（Ｓ２３０：ＮＯ）、Ｓ２５０に進んで、ｉの値を１インクリメントし、その後、Ｓ２２０に戻る。
一方、上記Ｓ２２０にて、ｉの値がデータバッファの数よりも小さくないと否定判定した場合（つまり、ｉの値がデータバッファの数に達した場合）には、今回の送信タイミングで送信すべきデータバッファ内のデータを全て送信バッファ４１に転送できたと判断して、Ｓ２６０に移行する。
【００５６】
そして、このＳ２６０にて、ＩＤの値を、現在のＣｎｔの値に設定し、そのＩＤを送信バッファ４１の先頭位置に転送する。
そして更に、続くＳ２７０にて、Ｃｎｔの値が「ＩＤ数−１」よりも小さいか否かを判定し、「ＩＤ数−１」よりも小さければ（Ｓ２７０：ＹＥＳ）、次のＳ２８０にて、Ｃｎｔの値を１インクリメントした後、当該送信データ処理を終了する。すると、図示しない送信処理により、送信バッファ４１内のデータがマイコン３ｂへと送信される。
【００５７】
尚、本実施形態では、前述したように、８ｍｓ毎の送信タイミングを、送信データの内容別に、４つのタイミングＡ〜Ｄに区別しており、その各タイミングＡ〜Ｄでの送信データに、夫々異なる値のＩＤを付与している。詳しくは、図５に示すように、８ｍｓタイミングＡでの送信データのＩＤを「０」、８ｍｓタイミングＢでの送信データのＩＤを「１」、８ｍｓタイミングＣでの送信データのＩＤを「２」、８ｍｓタイミングＤでの送信データのＩＤを「３」としている。このため、本実施形態において、ＩＤ数（ＩＤの数）は４である。
【００５８】
一方、上記Ｓ２７０にて、Ｃｎｔの値が「ＩＤ数−１」よりも小さくないと判定した場合には（Ｓ２７０：ＮＯ）、Ｓ２９０に移行して、Ｃｎｔの値を０に初期化し、その後、当該送信データ処理を終了する。すると、この場合にも、図示しない送信処理により、送信バッファ４１内のデータがマイコン３ｂへと送信される。
【００５９】
このような送信データ処理（図６）によれば、Ｓ２７０〜Ｓ２９０の処理により、当該処理が実行される毎に、Ｃｎｔの値が０→１→２→３→０→１→、といった具合に繰り返し更新されることとなる。
そして、Ｃｎｔの値がＭ（但しＭは０〜３の何れか）であるときには、Ｓ２２０〜Ｓ２５０の処理により、図５の定義テーブルにおけるＭ行目が０列目から４列目まで１列ずつ検索され、データ値が１となっている列に対応するデータバッファが、送信対象とすべきデータバッファであると特定されて、そのデータバッファ内のデータが、送信バッファ４１に転送されることとなる。そして、その後、Ｓ２６０の処理により、ＩＤの値がＭに設定されて、送信バッファ４１に転送されることとなる。
【００６０】
よって、例えば、Ｃｎｔの値が０のときには、定義テーブルにて８ｍｓタイミングＡに対応する０行目が１列ずつ検索され、データ値が１となっている列に対応する８ｍｓデータバッファ３１と、１６ｍｓ−Ａデータバッファ３２と、３２ｍｓ−Ａデータバッファ３４とが、送信対象とすべきデータバッファであると特定されて、その各データバッファ３１，３２，３４内のデータが、送信バッファ４１に転送されることとなる。そして、この場合には、Ｓ２６０の処理により、値が０のＩＤが、送信バッファ４１の先頭位置に転送されることとなる。
【００６１】
また、例えば、Ｃｎｔの値が３のときには、定義テーブルにて８ｍｓタイミングＤに対応する３行目が１列ずつ検索され、データ値が１となっている列に対応する８ｍｓデータバッファ３１と、１６ｍｓ−Ｂデータバッファ３３とが、送信対象とすべきデータバッファであると特定されて、その各データバッファ３１，３３内のデータが、送信バッファ４１に転送されることとなる。そして、この場合には、Ｓ２６０の処理により、値が３のＩＤが、送信バッファ４１の先頭位置に転送されることとなる。
【００６２】
尚、本実施形態では、図６の送信データ処理が、送信処理手段としての処理に相当している。
以上のような実施形態のＥＣＵによれば、マイコン３ａ，３ｂがデータ送信のために行う処理（図６の送信データ処理）の内容を変えなくても、定義テーブルの内容を変更するだけで、どのデータバッファのデータをどの送信タイミングで送信するかを変更することができ、送信データのデータバッファ単位での追加や削除を行う際にも、定義テーブルの内容を変更することで簡単に対応することができる。
【００６３】
例えば、３２ｍｓ−Ａデータバッファ３４と３２ｍｓ−Ｂデータバッファ３５との、２つの各送信タイミングとは異なる３２ｍｓ毎のタイミングで、何等かのデータ（以下、追加データという）を送信するように変更したい場合には、その追加データが格納されるデータバッファ（以下、３２ｍｓ−Ｃデータバッファという）を追加すると共に、図７に例示するように、定義テーブルにて、その３２ｍｓ−Ｃデータバッファに対応する５列目を設ければ良く、この場合には、図６のＳ２２０でｉの値と大小比較するデータバッファの数を、「５」から「６」に変更するだけで対応することができる。
【００６４】
そして、本実施形態の送信データ処理によれば、その処理内容を変えなくても、各種変更に対応することができるため、送信対象データ及び送信スケジュールが異なる別のＥＣＵに転用することも容易である。
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
【００６５】
例えば、 上記実施形態の送信データ処理（図６）では、その送信データ処理が終了する度にＣｎｔの値を更新して、ＩＤを毎回切り替えるようにしたが、正しく送信が行われなかった場合には、Ｃｎｔの値を１つ戻して（つまり、更新せずに）、次回の送信タイミングで、再び同じＩＤのデータを送信するように構成しても良い。
【００６６】
また、上記実施形態において、２４ｍｓ毎に送信されるべきデータが格納されるデータバッファや、４０ｍｓ毎に送信されるべきデータが格納されるデータバッファを設けるようにしても良い。つまり、各データバッファの送信周期は、最短送信周期（上記実施形態では８ｍｓ）の整数倍であれば良い。
【００６７】
一方、上記実施形態は、本発明の送信装置をＥＣＵ内のマイコン間通信に適用したものであったが、本発明の送信装置は、例えば、自動車内でＬＡＮを構成するＥＣＵ間の通信や、他の装置間の通信にも同様に適用することができる。
【図面の簡単な説明】
【図１】  実施形態及び参考例のＥＣＵ（電子制御装置）の構成を表すブロック図である。
【図２】  マイコンに設けられたデータバッファ及び送信バッファと、それらの関係とを説明する説明図である。
【図３】  マイコンで実行される送信データ処理の内容を表すフローチャートである。
【図４】  データバッファを５つ設けた場合の例を説明する説明図である。
【図５】  実施形態で用いられる定義テーブルの内容を表す説明図である。
【図６】  実施形態の送信データ処理の内容を表すフローチャートである。
【図７】  実施形態の作用を説明する説明図である。
【図８】  従来技術を説明するための説明図である。
【符号の説明】
１…ＥＣＵ（電子制御装置）、３ａ，３ｂ…マイコン、５…ＣＰＵ、７…ＲＯＭ、９…ＲＡＭ、１１…Ｉ／Ｏインタフェース、１３…バス、１５…入出力回路、１７…バッテリ、１９…電源ＩＣ、２１…通信ライン、３１〜３５…データバッファ、４１…送信バッファ
【図１】
0003882666.tif 000002
【図２】
0003882666.tif 000003
【図３】
0003882666.tif 000004
【図４】
0003882666.tif 000005
【図５】
0003882666.tif 000006
【図６】
0003882666.tif 000007
【図７】
0003882666.tif 000008
【図８】
0003882666.tif 000009