(57)【要約】【課題】スケジュールを用いたマスタ・スレーブ方式による通信システムにおいて、通信効率を悪化させずに通信漏れを減らすこと。【解決手段】送信すべき各データブロックに前回からの更新なしと判定すると（Ｓ１３０ＹＥＳ）、全データブロックの送信をせずに、次のスロットに移る。一方、前回からの更新ありと判定すると（Ｓ１３０ＮＯ）、更新されたデータブロックの内、最も更新頻度が低いデータブロック、及びそのデータブロックよりも更新頻度が高いデータブロック、並びに送信対象のデータブロックの数を示すデータブロック数情報とを送信する（Ｓ１３５）。このように、更新されていないデータを省いて送信をすることで、イベントデータを送受信するための期間を増やし、通信漏れが生じる確率を減らしている。【選択図】図３
2011103581.tif 000002
【特許請求の範囲】
【請求項１】
マスタノードが複数のスレーブノードとの間で通信可能に構成され、
前記マスタノードが、定期的に実行される定期データの送受信のための期間である定期通信期間と、不定期に実行されるイベントデータの送受信のための期間であるイベント通信期間とが配列されたスケジュールに従い、前記スレーブノードと１つずつ順に通信をする通信システムにおいて、前記マスタノードとして機能する通信装置であって、
前記定期データの送信をする際に、その送信に要する期間の短縮をするために、一周期前からの更新部分のみを送信するマスタ送信手段を備え、
前記短縮によって生じた期間において、前記イベントデータの送信または受信をする
ことを特徴とする通信装置。
【請求項２】
前記定期データは、複数のデータブロックに分割されており、
前記マスタ送信手段は、一周期前から更新された前記データブロックと共に、前記複数のデータブロックの内の何れが送信されているかを示す送信対象情報を送信する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記データブロックは、更新頻度に基づいて配列されており、
前記マスタ送信手段は、前記更新されたデータブロックの内で最も更新頻度が低いデータブロックと、そのデータブロックよりも更新頻度が高いデータブロックとを、前記更新されたデータブロックとして送信すると共に、その送信されるデータブロックの個数を示す情報を前記送信対象情報として送信する
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記定期データの内、より重要度の高いものから送受信されるように前記定期通信期間が配列されているスケジュールに従って通信をする
ことを特徴とする請求項１〜請求項３何れか１項に記載の通信装置。
【請求項５】
前記イベントデータの送受信を前記定期データの送受信よりも優先して実行するために、前記スケジュールの配列を変更するようになっており、
前記マスタ送信手段は、一周期前において送信できなかった前記定期データがある場合、その定期データを前記イベントデータとして送受信する
ことを特徴とする請求項１〜請求項４何れか１項に記載の通信装置。
【請求項６】
前記定期通信期間における通信が実行可能か否かを前記複数のスレーブノードそれぞれに照会し、その照会に対する返信を得ることで、前記定期通信期間における通信が実行可能なスレーブノードを特定する特定手段と、
前記定期通信期間における通信が実行可能であると前記特定手段によって特定されたスレーブノードと、前記定期通信期間における通信が割り当てられているスレーブノードとに相違がある場合、その相違が無くなるようにスケジュールを変更する変更手段とを備える
ことを特徴とする請求項１〜請求項５何れか１項に記載の通信装置。
【請求項７】
前記マスタ送信手段は、前記イベントデータの送信をする際に、その送信に要する期間の短縮をするために、前回からの更新部分のみを送信をする
ことを特徴とする請求項１〜請求項６何れか１項に記載の通信装置。
【請求項８】
マスタノードが複数のスレーブノードとの間で通信可能に構成され、
前記マスタノードが、定期的に送受信される定期データのために用意された定期通信期間と、不定期に送受信されるイベントデータのために用意されたイベント通信期間とが配列されたスケジュールに従い、前記スレーブノードと１つずつ順に通信を行う通信システムであって、
前記スレーブノードは、前記マスタノードへの返信として前記定期データの送信をする際に、その送信に要する期間の短縮をするために、一周期前からの更新部分のみを送信するスレーブ送信手段を備え、
前記マスタノードは、前記短縮によって生じた期間において、前記イベントデータの送信または受信をする
ことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
スケジュールを用いたマスタ・スレーブ方式による通信システム、及びこの通信システムに属する通信装置に関する。
【背景技術】
【０００２】
複数の通信装置が互いに通信するための通信プロトコルは種々開発されており、それぞれ特徴があるので、用途に応じて使い分けられている。そして、このような通信プロトコルの一種として、スケジュールを用いたマスタ・スレーブ方式による通信プロトコルがある。
【０００３】
この種の通信プロトコルを、ＬＩＮ２．１（非特許文献１）を例にとって説明する。ＬＩＮ２．１では、マスタノードが、スケジュールに従ってスレーブノードと通信をする。このスケジュールは、複数の期間（タイムスロット）の配列によって構成されている。そして、このタイムスロットは、定期的に実行される定期データの送受信のための期間である定期スロットと、不定期に（つまり、イベントが発生した場合に）実行されるイベントデータの送受信のための期間であるイベントスロットとに分類される。このようなスケジュールによって、マスタノードは、スレーブノードとの通信を管理するようになっている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＬＩＮ２．１仕様書（LIN Specification Package Revision 2.1）、[online]、［平成２１年８月２８日検索］、インターネット<ＵＲＬ：http://www.lin-subbus.org>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
先述した従来技術の課題は、スケジュールの一周期中のイベントスロット数よりも多いイベントが一周期中に発生すると、その周期においては送受信できないデータが出てしまうことである（通信漏れ）。そもそも、イベントが一周期中にいくつ発生するかというのにはバラツキがある。よって、このような通信漏れを防ぐためには、イベントスロット数をできるだけ増やすのが好ましい。
【０００６】
しかし、イベントスロット数を増やせば、通信効率が悪化してしまうという課題が生じる。すなわち、イベントスロットの内、一周期中に発生したイベント数に満たない分は、何も送受信されない無駄な期間となってしまうため、イベントスロット数を増やすほど、無駄な期間が増えて通信効率が悪化することになる。
【０００７】
このような課題は、ＬＩＮ２．１のみにおいて生じるものではなく、［背景技術］で述べたようなスケジュールを用いたマスタ・スレーブ方式による通信システムにおいて生じ得るものである。そこで、本発明は、スケジュールを用いたマスタ・スレーブ方式による通信システムにおいて、通信効率を悪化させずに通信漏れを減らすことを目的とする。
【課題を解決するための手段】
【０００８】
この目的を達成するための請求項１に係る発明は、マスタノードが複数のスレーブノードとの間で通信可能に構成され、マスタノードが、定期的に実行される定期データの送受信のための期間である定期通信期間と、不定期に実行されるイベントデータの送受信のための期間であるイベント通信期間とが配列されたスケジュールに従い、スレーブノードと１つずつ順に通信をする通信システムにおいて、マスタノードとして機能する通信装置である。
【０００９】
そして、定期データの送信をする際に、その送信に要する期間の短縮をするために、一周期前からの更新部分のみを送信するマスタ送信手段を備える。そして、上記短縮によって生じた期間において、イベントデータの送信または受信をする。
【００１０】
この通信装置によれば、通信効率を悪化させずに通信漏れを減らすことができる。すなわち、この通信装置は、定期データを送信する際に、その更新部分のみを送信することで、送信に要する期間を短縮するようにしており、この短縮によって生じた期間において、イベントデータの送信または受信をするようにしている。よって、用意されたイベント通信期間において送受信可能なイベントデータ数よりも、実際に送受信可能なイベントデータ数を、定期データの未更新部分の量に応じて増やすことができ、上記効果が得られる。
【００１１】
なお、定期データに更新部分が無い場合、送信対象がないので、送信自体が省略されるようにしてもよい。また、「短縮によって生じた期間」はイベント通信期間と同様、イベントデータが発生した場合にそのイベントデータの送受信のために用いることができる期間であって、イベントデータが存在しなければ送受信は行われない。
【００１２】
ところで、定期データにおける更新の有無の判定手法としては、例えば、定期データを複数に分割したデータブロック単位で行う手法が考えられる。つまり、データブロック毎に送信対象にするか否かの判定をすることになる。この場合、スレーブノードは、複数のデータブロックの内の何れが送信されてきたかを把握する必要がある。そのためには、例えば、各データブロックに固有の識別子を付けるようにする等も考えられるが、各データブロックのデータ量が大きくなって好ましくない。そこで次のようにすると良い。
【００１３】
請求項２に記載の通信装置においては、定期データが、複数のデータブロックに分割されている。そして、マスタ送信手段は、一周期前から更新されたデータブロックと共に、複数のデータブロックの内の何れが送信されているかを示す送信対象情報を送信する。
【００１４】
この通信装置によれば、各データブロックに識別子等を付けなくても、スレーブノードが、各定期データにおける何れのデータブロックが送信されてきたかを把握することができる。例えば、送信対象情報が、各データブロックについて送信されているか否かを示す場合、データブロック数と同数のビット数が必要となる。よって、データブロックの個数が２n（ｎ：２以上の整数）個とすると、送信対象情報のデータ量は２nビットとなる。なお、２nとしているのは、後述する例との対比をしやすくするためである。
【００１５】
一方、各データブロックに識別子を付ける場合、識別子のデータ量の合計はｎ２nビットとなる。なぜなら、各データブロックに付与する識別子のデータ量は、データブロック数と同数のビット数（２nビット）が必要であり、識別子の数はデータブロックの個数と同じだけ（ｎ個）必要となるからである。
【００１６】
したがって、識別子の合計データ量＞送信対象情報のデータ量（ｎ２n＞２n）となり、送信対象情報を用いる方がデータ量を小さくすることができる。
ところで、送信対象情報のデータ量はより小さい方が望ましい。そこで次のようにすると良い。
【００１７】
請求項３に記載の通信装置においては、データブロックが、更新頻度に基づいて配列されている。そして、マスタ送信手段は、更新されたデータブロックの内で最も更新頻度が低いデータブロック（以下「代表データブロック」という）と、代表データブロックよりも更新頻度が高いデータブロックとを、更新されたデータブロックとして送信すると共に、その送信されるデータブロックの個数を示す情報を送信対象情報として送信する。
【００１８】
この通信装置によれば、送信対象情報のデータ量を小さくすることができる。データブロックの個数が２n個とすると、本請求項における送信対象情報は、データブロックの個数通り（例えば４個であれば４通り）の表現ができればよいので、ｎビット（例えば４個であれば２ビット）になるからである。そして、２n＞ｎなので、各データブロックについて送信されているか否かを示す場合（２nビット）よりも、本請求項に係る通信装置の方がデータ量を小さくすることができる。
【００１９】
また、スレーブノードによる受信したデータブロックの特定は、《１》代表データブロック及び代表データブロックよりも更新頻度が高いデータブロックが送信されてくること、《２》更新頻度に基づいたデータブロックの配列、《３》送信されるデータブロックの個数、の３つに基づくことで実行できる。《１》《２》については、マスタノード及びスレーブノードで予め共有しておくことができるため、マスタノードが、《３》として送信対象情報を送信することで、スレーブノードは、受信したデータブロックの特定ができる。
【００２０】
なお、請求項３に記載の通信装置では、代表データブロックよりも更新頻度が高いデータブロックは、更新されたか否かに関わらず送信されることになる。しかし、実際には、より更新頻度が低い代表データブロックが更新されているわけだから、代表データブロックよりも更新頻度が高いデータブロックは更新されている場合が多く、無駄な送信になってしまう可能性は低くなっている。
【００２１】
ところで、上記の通信装置においても、通信漏れが全く無くなる訳ではない。そこで、通信漏れが発生する場合を考慮して、次のようにすると良い。
請求項４に記載の通信装置は、定期データの内、より重要度の高いものから送受信されるように定期通信期間が配列されているスケジュールに従って通信をする。
【００２２】
この通信装置によれば、重要度の低いものから通信漏れの対象となるので、通信漏れによる影響を低く抑えることができる。
さらに、通信漏れが発生する場合を考慮して、次のようにすると良い。
【００２３】
請求項５に記載の通信装置は、イベントデータの送受信を定期データの送受信よりも優先して実行するために、スケジュールの配列を変更するようになっている。そして、マスタ送信手段は、一周期前において送信できなかった定期データがある場合、その定期データをイベントデータとして送受信する。
【００２４】
この通信装置によれば、通信漏れが発生した場合、その漏れた通信を次の周期において優先して実行することができるので、通信漏れによる影響を低く抑えることができる。
ところで、通信途中において、スレーブノードが通信システムに追加されたり、故障によって離脱したりする場合がある。例えば、ある定期通信期間において通信対象となっているスレーブノードが通信から離脱した場合、スケジュールにおけるその定期通信期間は、通信が行われない無駄な期間になってしまうので、通信効率が悪化することになる。また、定期通信期間を設けて通信すべきスレーブノードが追加された場合、スケジュールを変更しないとそのスレーブノードが通信に参加できないことが考えられる。そこで次のようにすると良い。
【００２５】
請求項６に記載の通信装置は、特定手段と変更手段とを備える。特定手段は、定期通信期間における通信が実行可能か否かを複数のスレーブノードそれぞれに照会し、その照会に対する返信を得ることで、定期通信期間における通信が実行可能なスレーブノードを特定する。
【００２６】
変更手段は、定期通信期間における通信が実行可能であると特定手段によって特定されたスレーブノードと、定期通信期間における通信が割り当てられているスレーブノードとに相違がある場合、その相違が無くなるようにスケジュールを変更する。
【００２７】
この通信装置によれば、通信途中において、スレーブノードが追加されたり離脱したりしても、その追加または離脱に対応できる。よって、通信効率が悪化するのを防ぐことができる。
【００２８】
なお、スケジュールの変更は、定期通信期間における通信が割り当てられているにも関わらず、定期通信期間における通信が可能であると特定されなかったスレーブノードがある場合、その定期通信期間をスケジュールから削除したり、定期通信期間における通信が割り当てられていないにも関わらず、定期通信期間における通信が可能であると特定されたスレーブノードがある場合、その定期通信期間をスケジュールに追加したりすることが例えば考えられる。
【００２９】
ところで、イベントデータにおいても、前回からの更新が無い場合がある。このようなイベントデータの送信も、無駄な期間となってしまう。そこで、次のようにすると良い。
請求項７に記載の通信装置が備えるマスタ送信手段は、イベントデータの送信をする際に、その送信に要する期間の短縮をするために、前回からの更新部分のみを送信をする。
【００３０】
この通信装置によれば、イベントデータについても、更新されていない部分の送信を省くので、さらに通信漏れを減らすことができる。
ところで、これまで説明したようにマスタノードとしての通信装置ではなくスレーブノードに、通信効率を悪化させずに通信漏れを減らすための構成を備えさせることも考えられる。
【００３１】
請求項８に係る発明は、マスタノードが複数のスレーブノードとの間で通信可能に構成され、マスタノードが、定期的に送受信される定期データのために用意された定期通信期間と、不定期に送受信されるイベントデータのために用意されたイベント通信期間とが配列されたスケジュールに従い、スレーブノードと１つずつ順に通信を行う通信システムである。
【００３２】
そして、スレーブノードは、マスタノードへの返信として定期データの送信をする際に、その送信に要する期間の短縮をするために、一周期前からの更新部分のみを送信するスレーブ送信手段を備える。また、マスタノードは、上記短縮によって生じた期間において、イベントデータの送信または受信をする。
【００３３】
この通信システムによれば、通信効率を悪化させずに通信漏れを減らすことができる。なぜなら、この通信システムのスレーブノードは、上記マスタノードとしての通信装置が備えるマスタ送信手段と同様なスレーブ送信手段を備えるからである。よって、上記通信装置と同様な効果を奏することができる。
【図面の簡単な説明】
【００３４】
【図１】通信システムのブロック構成図。
【図２】スケジュール及び通信フレームの説明図。
【図３】第１マスタ処理を示すフローチャート。
【図４】スケジュールの変更を示す図。
【図５】スレーブ処理を示すフローチャート。
【図６】第２マスタ処理を示すフローチャート。
【発明を実施するための形態】
【００３５】
［実施例１］
［１．ハードウェア］
本発明の実施例を説明する。図１は、本発明が適用された車載用通信システム１のブロック構成図である。車載用通信システム１は、自動車に搭載されるものであり、マスタＥＣＵ（Electronic Control Unit：電子制御装置）１０、及び複数のスレーブＥＣＵ（電子制御装置）２０，２０，…から構成される。マスタＥＣＵ１０や各スレーブＥＣＵ２０は、それぞれが制御対象とする車載装置（ドアロック装置・パワーウインドウ装置・サイドミラーの角度調整装置等）の制御をする装置である。そして、マスタＥＣＵ１０は、バス９９を介して、各スレーブＥＣＵ２０と１つずつ順に通信することが可能に構成されている。この通信は、ＬＩＮ２．１を改良した通信プロトコルに従って行われる。
【００３６】
なお、この通信プロトコルの改良が本発明の特徴となっており、具体的な内容は追って説明するが、少なくとも［背景技術］で説明した「マスタ・スレーブ方式」「スケジュール」「定期スロット」「イベントスロット」についてはＬＩＮ２．１と同様であるため、これらについての説明は省く。
【００３７】
マスタＥＣＵ１０は、図示のようにマイクロコンピュータ（以下「マイコン」という）１１・トランシーバ１９を備える。さらに、マイコン１１は、制御部１２・通信コントローラ１３・送受信バッファ１４を備える。
【００３８】
制御部１２は、先述した制御対象の制御をすると共に、その制御のための信号を、通信コントローラ１３を介してスレーブＥＣＵ２０と送受信する。通信コントローラ１３は、自身が記憶するソフトウェア（プログラム）を実行することで、上記通信プロトコルに従った通信をし、上記制御のための信号を制御部１２に対して入出力する。
【００３９】
送受信バッファ１４は、通信コントローラ１３とトランシーバ１９との間に接続され、送受信される信号を一時的に記憶する。トランシーバ１９は、バス９９とマイコン１１（詳細には、送受信バッファ１４）との間で信号の仲介をする。なお、スレーブＥＣＵ２０の内部構成は、マスタＥＣＵ１０と同じなので、図示や説明を省く。
【００４０】
［２．スケジュール及びデータ構成］
図２（ａ）は、本実施例において使用されるスケジュールである「スケジュールＡ」、及び、定期スロット１においてマスタＥＣＵ１０が送信する通信フレームを説明するための図である。まず、スケジュールＡについて説明する。図２（ａ）に示すように、スケジュールＡは、６つのタイムスロットに分割されている。このタイムスロットは、１〜５番目が定期スロット、６番目がイベントスロットとなっている。以下の説明では、１番目の定期スロットを「定期スロット１」、２番目の定期スロットを「定期スロット２」、…という具合に呼ぶ。また、６番目に配列されたイベントスロットは「イベントスロットα」と呼ぶ。
【００４１】
また、スケジュールＡにおいては、重要度の高い通信のための定期スロットほど、図の左に配列されており、早く送信されるようになっている。このため、重要度の高い通信ほど、通信漏れになりにくい。
【００４２】
そして、各定期スロットには、予め通信指示が割り当てられている。通信指示とは、マスタＥＣＵ１０が実行すべき通信内容を定めた情報である。具体的には、送受信される対象としてのデータ種別を識別するための「データアドレス」、通信相手としての何れか１つのスレーブＥＣＵ２０を識別するための「スレーブアドレス」、及びデータのライトなのかリードなのか等を定めた情報である。
【００４３】
なお、データ種別とは、例えば、ドアロックのオン／オフを示す情報・パワーウインドウの位置情報・サイドミラーの角度情報等、データの種別を示すものである。また、データのライトとは、スレーブＥＣＵ２０に対してデータの送信をして、そのデータの書き込みをさせることである。一方、データのリードとは、スレーブＥＣＵ２０に対してデータの返信要求をして、そのデータを取得することである。
【００４４】
例えば、定期スロット１においては、図２（ａ）に示すように、ライトに定められている。なお、図２（ａ）に示すように、各定期スロットの通信指示については、ライトなのかリードなのかのみを示し、データアドレスとスレーブアドレスとについては、発明のポイントとの関係が薄いので、具体的にどのような指示が割り当てられているかの図示や説明は省く。
【００４５】
次に、通信フレームについて、定期スロット１を例にとって説明する。図２（ａ）において、定期スロット１が「マスタ」及び「スレーブ」に分割されているのは、定期スロット１が、マスタＥＣＵ１０が通信フレームを送信するための期間と、スレーブＥＣＵ２０がレスポンスを送信するための期間とに分けられていることを示している。そして、図２（ａ）においてスケジュールＡの下に示されているのは、マスタＥＣＵ１０が送信する通信フレームの一部である。そして、この一部とは、データブロック数情報および４つのデータブロックのことである（実際の通信フレームには、ヘッダやフッタ等の他の部分も含まれるが、それらの説明は省く。）。
【００４６】
データブロックとは、送信対象となるデータを４分割してできたものであり、それぞれ２バイトの格納領域を有する。このように分割する理由は、更新有無および送信対象とするか否かの判定単位としてデータブロックを用いるためである。すなわち、車載用通信システム１は、後述する第１マスタ処理やスレーブ処理によって、更新されたデータのみの送信をして通信漏れを減らすことを特徴としているが、「更新されたデータのみの送信」を厳密に実行するのは難しいので、上記データブロック毎に更新有無および送信対象とするか否かを判定するようにしている（第１マスタ処理等で後述）。
【００４７】
ただし、必ずしも「更新があったデータブロックのみが送信対象となり、更新が無かったデータブロックが送信対象とならない」とは限らないようになっている。具体的には、更新があったデータブロックの内で更新頻度が最も低いデータブロック（以下「代表データブロック」という）と、代表データブロックよりも更新頻度が高いデータブロックとが、送信対象となる。よって、代表データブロックよりも更新頻度が高いデータブロックは、更新されていなくても送信されることになる。なお、この更新頻度は、マスタＥＣＵ１０及びスレーブＥＣＵ２０が予め記憶している。
【００４８】
そして、データブロック数情報とは、送信対象となるデータブロックの数を示す情報である。具体的には、４つのデータブロックが送信対象であれば「００」、３つであれば「０１」、…という具合の２ビットの情報である。
【００４９】
なお、データブロックの配列は、更新頻度順（更新頻度が低いものほど、図において左側にある）になっている。よって、代表データブロックと、代表データブロックよりも図における右のデータブロックが送信対象となる。つまり、１番目のデータブロックが更新されていれば送信対象となるのは全データブロック、２番目のデータブロックが更新されていれば、送信対象となるのは２〜４番目のデータブロック、…という具合である。よって、スレーブＥＣＵ２０は、データブロック数情報に基づいて、何れのデータブロックが送信されてくるのかを把握できる。
【００５０】
なお、データブロック数情報の替わりに、各データブロックについての更新の有無を示す情報を用いれば、更新されたデータブロックのみを送信することができ、無駄なデータ送信をより確実に減らすことができる。しかし、４つのデータブロックについての更新の有無を示すためには、４ビットが必要である。一方、データブロック数を示すためには２ビットでよく、格納領域の節約になるので、データブロック数情報を用いるようにしている。
【００５１】
このように、データブロック数情報と、各データブロックとで、６６ビットのデータ量となる。なお、以上の説明は、定期スロット１を例に取ったものであったが、このデータ構成は、定期スロットなのかイベントスロットなのか、或いは、ライトのスロットにおいてマスタＥＣＵ１０が送信するのか、リードのスロットにおいてスレーブＥＣＵ２０が送信するのかに関わらず、本実施例においては共通である。
【００５２】
［３．ソフトウェア］
図３は、第１マスタ処理を示すフローチャートである。第１マスタ処理は、マスタＥＣＵ１０が主体となる（詳しくはマイコン１１が主体となり、より詳しくは通信コントローラ１３が主体となる）処理であり、スレーブＥＣＵ２０との通信のためのものである。また、第１マスタ処理は、マスタＥＣＵ１０の電源オン時において繰り返し実行される処理である。
【００５３】
処理が開始されると、まず、スケジュールの設定をする（Ｓ１１０）。ここでは、先述したスケジュールＡを設定する。なお、Ｓ１１０で設定されるスケジュールは、以降の処理において変更が加えられることになる。例えば、通信要求の高いイベントが発生した場合に、そのイベントのための通信を直ぐに実行するためにイベントスロットを移動させることは、ＬＩＮ２．１の規定通り、本実施例においても実施される。さらに、第１マスタ処理においては、データブロックの更新状況に応じて、定期スロット又はイベントスロットの長さが短縮されるようになっている。そこで、イベントの発生とデータの更新とについて場合分けをして、スケジュールにどのような変更が加えられるのかを、処理の各ステップと共に説明していく。
【００５４】
［３−１．全定期スロットにおける全データブロックに更新があり、イベント発生なしの場合（図４（ａ）参照）］
まず、全定期スロットにおける全データブロックに更新があり、イベント発生なしの場合を説明する。この場合は、スケジュールが変更されることなく、設定通りに通信が実行されることになる。
【００５５】
Ｓ１１０の次は、周期が終了したかを判定する（Ｓ１１５）。具体的には、スケジュール開始から経過した時間（スケジュール上の時間）が、Ｓ１１０で設定したスケジュールの周期に相当する時間に達したか否かを判定する。Ｓ１１０の直後であれば周期が終了していることはないので、周期が終了していないと判定すると（Ｓ１１５ＮＯ）、定期スロット又はイベントスロットにおいて実行すべき通信の内、未実行の通信があるかを判定する（Ｓ１２０）。定期スロット１〜５の通信指示が未実行なので、未実行の通信があると判定すると（Ｓ１２０ＹＥＳ）、現時点のスロットはライトなのかリードなのかを判定する（Ｓ１２５）。
【００５６】
図４（ａ）に示すように、定期スロット１はライトであるので、ライトと判定すると（Ｓ１２５ライト）、一周期前の同じ定期スロット（この場合は定期スロット１）の各データブロックを比較対象として、送信すべきデータブロック全てに更新がないかを判定する（Ｓ１３０）。一周期目においては、一周期前のデータが無く比較ができないが、全データブロックに更新があるとみなすようになっている。よって、更新があると判定すると（Ｓ１３０ＮＯ）、定期スロット１に割り当てられたデータブロック全てと、データブロック数情報（この場合は、データブロック数４つを示す「００」）とを含む通信フレームをライト要求として、定期スロット１の通信指示に定められたスレーブＥＣＵ２０に送信する（Ｓ１３５）。そして、送信先のスレーブＥＣＵ２０からレスポンス（後述する図５のスレーブ処理のＳ２３０参照）を受信して（Ｓ１４０）、Ｓ１１５に戻る。
【００５７】
ここで図５に移り、スレーブ処理を説明する。スレーブ処理は、スレーブＥＣＵ２０が主体となって実行する処理であり、先述したレスポンス（第１マスタ処理においてマスタＥＣＵ１０が受信する情報）を返信するための処理である。そして、マスタＥＣＵ１０からのライト要求またはリード要求を受信したことをトリガとして開始される。また、このスレーブ処理は、第１マスタ処理と同様に、更新されていないデータブロックの送信を省くようになっている。
【００５８】
まず、受信したのがライト要求なのかリード要求なのかを判定する（Ｓ２１０）。ライト要求と判定すると（Ｓ２１０ライト）、受信したデータブロックを格納する（Ｓ２２０）。この格納は、データブロックと共に受信したデータブロック数情報を参照して、受信した各データブロックが何れであるかを特定した上で行う（図２参照）。つまり、データブロック数情報に示された数をｍ（１≦ｍ≦４）とすると、１番目に受信したデータブロックは、本来は（５−ｍ）番目のデータブロックであり、２番目に受信したデータブロックは、本来は（６−ｍ）番目のデータブロックであり、…という具合である。
【００５９】
そして、ライト完了を示すレスポンスをマスタＥＣＵ１０に返信して（Ｓ２３０）、処理を終える。このようにして返信されるのが、第１マスタ処理のＳ１３５に対するレスポンスである。
【００６０】
図３に戻り、第１マスタ処理の説明を再開する。定期スロット１におけるＳ１４０を終えると、定期スロット２の通信指示を実行する。定期スロット２の通信指示もライトであり、定期スロット１と同様なステップによって通信をすることになるので、説明は省く。定期スロット２の次の定期スロット３も同様である。
【００６１】
そして、定期スロット３におけるＳ１４０を終えると、周期が終了していないと判定し（Ｓ１１５ＮＯ）、未実行の通信があると判定し（Ｓ１２０ＹＥＳ）、図４（ａ）に示すように定期スロット４はリードなので、リードと判定する（Ｓ１２５リード）。そして、スレーブＥＣＵ２０にリード要求をする（Ｓ１４５）。その後、その要求に対するレスポンス（後述する図５のスレーブ処理のＳ２５０／Ｓ２６０参照）を受信する（Ｓ１４０）。
【００６２】
なお、ライトの場合にはデータ更新の判定（Ｓ１３０）を行うのに対して、リードの場合には行わないのは、データをスレーブから取得するからであり、このようなデータ判定はスレーブ処理において行われるようになっている（後述するＳ２４０）。
【００６３】
再び図５に移って、スレーブ処理における、上記リード要求に対するレスポンスを返信するステップを説明する。受信したのがリード要求と判定すると（Ｓ２１０リード）、要求された全データブロックに更新がないかを判定する（Ｓ２４０）。更新がないと判定すると（Ｓ２４０ＹＥＳ）、更新なしを示すレスポンスをマスタＥＣＵ１０に返信して（Ｓ２５０）、スレーブ処理を終える。このようにして返信されるのが、先述した第１マスタ処理のＳ１４５に対するレスポンスである。
【００６４】
一方、少なくとも１つのデータブロックに更新ありと判定すると（Ｓ２４０ＮＯ）、先述した第１マスタ処理のＳ１３５と同様に、データブロック数情報と、代表データブロック以降のデータブロックとをレスポンスとしてマスタＥＣＵ１０に返信して（Ｓ２６０）、スレーブ処理を終える。このようにして返信されるのも、先述した第１マスタ処理のＳ１４５に対するレスポンスである。
【００６５】
定期スロット５もリードであり、定期スロット４と同様なので、説明は省く。そして、定期スロット５におけるＳ１４０を終えると、イベントスロットαが残っているので、周期は終了していないと判定する（Ｓ１１５ＮＯ）。そして、３−１ではイベントが発生しない場合を想定しているので、イベントスロットαにおいて実行すべき通信はなく、未実行の通信はないと判定する（Ｓ１２０ＮＯ）。Ｓ１２０ＮＯと判定すると、Ｓ１１５に戻るので、イベントスロットαの期間、Ｓ１１５ＮＯ及びＳ１２０ＮＯを繰り返すことになる。
【００６６】
そして、周期が終了したと判定すると（Ｓ１１５ＹＥＳ）、通信漏れがあるかを判定する（Ｓ１５０）。一周期目において通信漏れはなかったので、通信漏れなしと判定し（Ｓ１５０ＮＯ）、スケジュール上の時間を初期化して（Ｓ１６０）、２周期目をＳ１１５から実行する。
【００６７】
以上の説明は、一周期目を具体例に取ったものだが、全データブロックに更新があり、イベント発生なしという条件下であれば、何周期目であっても同様な内容となる。
【００６８】
［３−２．全スロットにおける全データブロックに更新があり、イベントが１つ発生する場合（図４（ｂ）参照）］
全スロット（定期スロット及びイベントスロット）における全データブロックに更新があり、イベントが１つ発生する場合を説明する。そのイベントはリードであり、定期スロット２の最中に発生するものとする（図４（ｂ）参照）。
【００６９】
このように定期スロット２の最中にイベントが発生すると、図４（ｂ）に示すように、定期スロット１・２は、そのイベントの発生に影響を受けずに実行される一方で、定期スロット２の終了後は、ＬＩＮ２．１に規定されている通り、通信要求の高いイベントの発生直後にイベントスロットαを割り込ませるように移動させ、それに伴いその後の定期スロットを移動させるようにスケジュールが変更される。そこで、定期スロット２の終了後から説明を始める。
【００７０】
定期スロット２におけるＳ１４０を終えると、周期は終了していないと判定し（Ｓ１１５ＮＯ）、未実行の通信があると判定する（Ｓ１２０ＹＥＳ）。そして、発生したイベントはリードなのでＳ１２５リードと進み、そのイベントの通信指示に従ってリード要求をする（Ｓ１４５）。そして、そのリード要求に対するレスポンスを受信してイベントスロットαを終える。
【００７１】
その後、定期スロット３〜５を実行すると、周期が終わったと判定し（Ｓ１１５ＹＥＳ）、通信漏れは無かったと判定し（Ｓ１５０ＮＯ）、スケジュール上の時間を初期化して（Ｓ１６０）、次の周期に入る。
【００７２】
［３−３．全スロットにおける全データブロックに更新があり、イベントが２つ発生する場合（図４（ｃ）（ｄ）参照）］
全スロットにおける全データブロックに更新があり、イベントが２つ発生する場合を説明する。１つ目のイベントはリードであり、定期スロット２の最中に発生するものとする。また、２つ目のイベントもリードであり、定期スロット２の後に移動してきたイベントスロットαの最中に発生するものとする（図４（ｃ）参照）。イベントスロットαを実行するまでは、３−２での説明と同じなので、イベントスロットα終了後から説明を始める。
【００７３】
イベントスロットαにおけるＳ１４０を終えると、イベントスロットαの直後にイベントスロットβが挿入される。イベントスロットβは、スケジュールＡに規定されていないが、イベントの発生に応じて追加されるものである。このイベントスロットβにおいて、２つ目に発生したイベントの通信指示が実行される。その後、定期スロット３・４の通信指示が実行されると、定期スロット５の通信指示が未実行であるものの、周期が終わったと判定することになる（Ｓ１１５ＹＥＳ）。そして、定期スロット５が通信漏れとなったので、通信漏れありと判定する（Ｓ１５０ＹＥＳ）。そして、通信漏れしたスロット（この場合は定期スロット５）の通信指示に対応するイベントが発生したとみなして、送受信バッファ１４に記憶する（Ｓ１５５）。そして、スケジュール上の時間を初期化し（Ｓ１６０）、次の周期に入る。
【００７４】
そして、このように通信漏れした定期スロットがイベントとして設定された場合、図４（ｄ）に示すように、そのイベントは、次の周期の初めに実行されることになり、各定期スロットは１つずつ後にずれることになる。
【００７５】
［３−４．一部のデータブロックに更新がなく、イベントが２つ発生する場合（図４（ｅ）参照）］
一部のデータブロックに更新がなく、イベントが２つ発生する場合を説明する。ここで説明する具体例は、定期スロット２・４の全データブロックに更新なし、定期スロット３の一部（１つ目〜３つ目のデータブロック）に更新なしとする。そして、それ以外は更新ありとする。そして、図４（ｃ）の場合と同様に２つのイベントが発生するものとする。
【００７６】
定期スロット１は全データブロックが更新されており、先述した説明と同様になるので、定期スロット１の終了後から説明を始める。
定期スロット１を終えてＳ１１５に移行すると、周期は終了していないと判定し（Ｓ１１５ＮＯ）、未実行の通信がありと判定し（Ｓ１２０ＹＥＳ）、定期スロット２はライトなので、ライトと判定して（Ｓ１２５ライト）、Ｓ１３０に進む。定期スロット２の全データブロックに更新がないので、データ更新なしと判定して（Ｓ１３０ＹＥＳ）、Ｓ１１５に戻る。つまり、定期スロット２がスキップされることになる。
【００７７】
そして、Ｓ１１５に戻ると、周期は終わっていないと判定し（Ｓ１１５ＮＯ）、未実行の通信がありと判定し（Ｓ１２０ＹＥＳ）、定期スロット３はライトなので、ライトと判定し（Ｓ１２５ライト）、Ｓ１３０に進む。定期スロット３は、先述したように代表データブロックが４つ目なので、「１１」を格納したデータブロック数情報および４つ目のデータブロック（計１８ビット：図２（ｂ）参照）を送信する（Ｓ１３５）。そして、レスポンスを受信する（Ｓ１４０）。この結果、図４（ｅ）に示すように、定期スロット３の実際の時間の長さは、スケジュールＡに規定されている時間の長さよりも短くなる。
【００７８】
そして、Ｓ１１５に戻ると、周期は終わっていないと判定し（Ｓ１１５ＮＯ）、未実行の通信がありと判定する（Ｓ１２０ＹＥＳ）。そして、先述したように、３−３の場合と同様に２つ目のスロットの最中にリードのイベントが発生しているので、リードと判定し（Ｓ１２５リード）、イベントスロットαにおいてリード要求をする（Ｓ１４５）。そして、スレーブＥＣＵ２０からのレスポンスを受信して（Ｓ１４０）、Ｓ１１５に戻る。
【００７９】
Ｓ１１５に戻ると、先述したように、３−３の場合と同様、イベントスロットαの最中にリードのイベントが発生するので、イベントスロットαと同様に、Ｓ１１５からＳ１４０を実行し、Ｓ１１５に戻る。
【００８０】
次は、定期スロット４である。Ｓ１１５に戻ると、周期は終わっていないと判定し（Ｓ１１５ＮＯ）、未実行の通信がありと判定する（Ｓ１２０ＹＥＳ）。そして、定期スロット４はリードなので、リード要求をする（Ｓ１４５）。そして、レスポンスを受信して（Ｓ１４０）、Ｓ１１５に戻る。このとき、先述したように、定期スロット４の全データブロックには更新がないので、更新なしを示すレスポンスが返信されてくる（図５のＳ２６０参照）。このレスポンスは、データブロック１つよりも小さなデータ量となっている。この結果、図４（ｅ）に示すように、定期スロット４の実際の長さは、スケジュールＡに規定されている長さ（全データブロックの送信が省略されずに実行される場合の長さ）よりも短くなる。
【００８１】
そして、次の定期スロット５についてＳ１１５〜Ｓ１４０を実行し、Ｓ１１５に戻ると、周期が終わるまで、Ｓ１１５ＮＯとＳ１２０ＮＯとを繰り返す。そして、周期が終わった判定すると（Ｓ１１５ＹＥＳ）、通信漏れはないと判定し（Ｓ１５０ＮＯ）、スケジュールを初期化して（Ｓ１６０）、次の周期に入る。
【００８２】
なお、イベントスロットにおいて送信されるデータブロックについて、更新されていない場合は例示しなかったが、定期スロットと同様に、更新が無いデータブロックの送信は省かれることになる。イベントスロットの場合は、比較対象は一周期前ではなく、同種の通信指示を実行したイベントスロットの内、直前のものにおけるデータブロックが比較対象となる。
【００８３】
［４．実施例１の効果］
車載用通信システム１によれば、通信効率を悪化させることなく、通信漏れを減らすことができる。３−４においては、スケジュールに規定されたイベントスロット数よりも多いイベントが発生しているにも関わらず、通信漏れが発生していない。なぜなら、更新されていないデータブロックが存在したことにより、そのデータブロックの送信を省くことで生じた期間を、イベントデータの送受信に振り分けているからである。
【００８４】
また、通信漏れが発生した場合は、３−３で述べたように、次の周期の最初に送信することで、通信漏れによる影響を小さくすることができる。また、送信が省かれたデータブロックを特定するために、データブロック数情報を用いることで、新たに付加される情報のデータ量を小さくしている。
【００８５】
［実施例２］
［５．実施例１との違い］
実施例２について、実施例１との違いを説明する。実施例２では、第１マスタ処理に替えて、図６に示された第２マスタ処理が実行される。第１マスタ処理および第２マスタ処理とは、スケジュールの設定（Ｓ２１０／Ｓ３１０）及びスケジュールの周期の開始から終了までのステップは同じである一方で（同じなので図示省略）、スケジュールの周期終了後においては違いがある。よって、スケジュールの周期終了後から説明を始める。
【００８６】
マスタＥＣＵ１０は、周期が終了したと判定すると（Ｓ３１５ＹＥＳ）、スレーブ接続状態照会信号を送信する（Ｓ３２０）。スレーブ接続状態照会信号とは、接続状態（何れのスレーブＥＣＵ２０がマスタＥＣＵ１０と通信可能に接続されているか、また、各スレーブが、スリープ状態（通信を休止している状態）ではなくアクティブ状態（通信を行う状態）であるか）を各スレーブＥＣＵ２０に照会するために、ブロードキャストする信号である。なお、スレーブ接続状態照会信号を受信したスレーブＥＣＵ２０は、自身が通信可能に接続されていることを示す信号を、マスタＥＣＵ１０に返信するようになっている。ただし、車載用通信システム１に新たに接続されたスレーブＥＣＵ２０は、自身が実行できる通信内容（送信可能なデータや、受信すべきデータ等）を示す情報も返信する。
【００８７】
そして、接続状態に前回送信時に対する相違があるかを、スレーブＥＣＵ２０からの返信に基づいて判定する（Ｓ３３０）。接続状態に相違がないと判定すると（Ｓ３３０ＮＯ）、スケジュール上の時間を初期化してＳ３１５に戻る。
【００８８】
一方、接続状態に相違があると判定すると（Ｓ３３０ＹＥＳ）、現在の接続状態に適合するスケジュールを再設定するための情報を、スレーブＥＣＵ２０からの返信に基づいて作成する（Ｓ３５０）。具体的には、定期スロットにおける通信が割り当てられているにも関わらず返信をしてこなかったスレーブノードがある場合、その定期スロットをスケジュールから削除したり、定期スロットにおける通信が割り当てられていないにも関わらず返信をしてきたスレーブノードがある場合、そのスレーブノードとの通信のための定期スロットが必要であれば、その定期スロットをスケジュールに追加したりする。なお、このような定期スロットの追加や削除に伴って、スケジュールの周期も変動させる。そして、Ｓ３１０に戻って、Ｓ３５０で作成した情報に基づいて、スケジュールの再設定をする。
【００８９】
［６．実施例２の効果］
実施例１と同様に通信漏れの軽減に加えて、実施例２においては、スレーブＥＣＵ２０の接続状態が通信途中で変化しても、通信を中断してユーザによる手動設定等を必要とせず、自動的にスケジュールを設定し直すことができる。よって、スレーブノードのユーザによる追加や故障による離脱などがあっても、通信が中断されることなく、その追加または離脱に対応できる。よって、通信効率が悪化するのを防ぐことができる。
【００９０】
［７．特許請求の範囲との対応］
特許請求の範囲と実施例との対応関係を説明する。Ｓ１３０及びＳ１３５がマスタ送信手段、Ｓ２５０又はＳ２６０がスレーブ送信手段、Ｓ３１０及びＳ３５０が変更手段、Ｓ３２０が特定手段のソフトウェアにそれぞれ相当する。
【００９１】
［８．変形例］
変形例を述べる。データブロック数情報に替えて、各データブロックについて更新されたか否かを示す情報を送信するようにしても良い。先述したように、この情報は、データブロック数情報よりもデータ量が多くなるが、正確に更新部分を示すことができる。よって、更新されたデータブロックを更新頻度によって推定することが信頼できない場合は有効である。
【００９２】
また、実施例では、通信漏れした定期スロットのデータを次の周期で送受信する場合、その定期スロットのデータは、イベントスロット及び定期スロットにおいて送信されるので、一周期に２回送信されることになる。そこで、２回送信しないように、２回目の送信に当たる定期スロットをスキップするようにしてもよい。
【００９３】
また、実施例ではデータブロックを更新頻度が低いものから配列させていたが、高い順に配列させても構わないし、その他の配列でも構わない。
また、実施例２のスケジュール変更において、定期スロットが減る場合、周期を変更しなくてもよい。この場合は、消滅する定期スロットをイベントスロットに置き換えればよい。
【００９４】
また、イベントスロット及び定期スロットの優先度の比較に基づいて、イベントスロットを挿入する箇所を変更できるようにしてもよい。具体的には次のように行う。まず、各イベントスロットと各定期スロットとに、優先的に実行されるべき度合いを示す優先度を予め定めておく。そして、イベントが発生すると、そのイベントに対応するイベントスロットの優先度と、次の定期スロットの優先度とを比べる。そして、定期スロットの優先度よりもイベントスロットの優先度の方が高ければ、実施例通り、イベントスロットを割り込ませて実行する。
【００９５】
一方、イベントスロットの優先度よりも定期スロットの優先度の方が高ければ、定期スロットを実行する。そして、このようにしてイベントスロットの実行が後回しになった場合は、さらに次の定期スロットの優先度との比較をする。このような手順を繰り返すことで、イベントスロットの挿入箇所が決定されるようにしてもよい。
【００９６】
また、定期スロット又はイベントスロットにおいて通信エラーによって通信できなかったデータがあった場合は、そのデータをイベントスロットによって通信してもよい。
また、第２マスタ処理のＳ３２０（図６参照）において、スレーブ接続状態照会信号による通信効率の低下を軽減するために、全スレーブＥＣＵ２０を対象にしたスレーブ接続状態照会信号の送信を、間引いてもよい。例えば、１０周期に１回だけＳ３２０を実行（全スレーブＥＣＵ２０を対象に信号を送信）する方法が考えられる。或いは、１周期目は、ある１つのスレーブＥＣＵ２０のみを対象にしてスレーブ接続状態照会信号を送信し、２周期目は、別の１つのスレーブＥＣＵ２０のみを対象にしてスレーブ接続状態照会信号を送信し、という具合に、１回に１つのスレーブＥＣＵ２０のみを対象にして信号を送信する方法も考えられる。
【００９７】
また、ベースにする通信プロトコルは、ＬＩＮ２．１でなくても、同種のものであればよい。この他、自動車搭載用でなくても、他の用途の通信システムに適用してもよい。
【符号の説明】
【００９８】
１…車載用通信システム、１０…マスタＥＣＵ、１１…マイコン、１２…制御部、１３…通信コントローラ、１４…送受信バッファ、１９…トランシーバ、２０…スレーブＥＣＵ、９９…バス
【図１】
2011103581.tif 000003
【図２】
2011103581.tif 000004
【図３】
2011103581.tif 000005
【図４】
2011103581.tif 000006
【図５】
2011103581.tif 000007
【図６】
2011103581.tif 000008