(57)【要約】【課題】マスタノード（以下、マスタ）から定期的に送信される定期フレームよりも、スレーブノード（以下、スレーブ）からイベントの発生に伴って送信されるイベントフレームの方が、バス調停での優先度を高くしつつ、マスタによる定期フレームの送信が滞ってしまうことを防止する。【解決手段】マスタは、送信を試みた定期フレームがイベントフレームに調停負けしたことに伴って送信待ちの定期フレームが溜まってしまった送信滞留状態になったことを検出すると（時刻ｔ１）、スレーブへのモード切替フレームを送信すると共に、自身のモードを、「定期フレームを送信する合間に、スレーブに対して送信許可を通知するためのイベントヘッダを送信するモード」に切り替える。スレーブは、モード切替フレームを受信すると、自身の動作モードを、「イベントが発生し且つ上記イベントヘッダを受信した場合に、イベントフレームの送信を実施するモード」に切り替える。【選択図】図５
2016082296.tif 000002
【特許請求の範囲】
【請求項１】
バス（５）を介して接続された複数のノード（１，３）が、前記バスに送信するフレームの先頭部分であるヘッダを用いたバス調停を実施すると共に、送信しようとして調停負けしたフレームの再送信を新規のフレームの送信よりも優先して実施し、
前記複数のノードのうちの１つは、予め設定されたスケジュールに従って、定期的に送信すべきフレームである定期フレームの送信を実施するマスタノード（１）であり、
前記複数のノードのうち、前記マスタノード以外のノードは、予め定められたイベントが発生した場合に、そのイベントに関連する情報を含むフレームであるイベントフレームの送信を実施するスレーブノード（３）であり、
バス調停における優先度が、前記定期フレームよりも前記イベントフレームの方が高く設定されている通信システム（１１）において、
前記マスタノードの動作モードとしては、前記スケジュールに従って前記定期フレームの送信を実施する基本モードとしてのマスタ側第１モードと、前記定期フレームを送信する合間に前記スレーブノードに対する送信許可通知を送信するマスタ側第２モードと、があり、
前記スレーブノードの動作モードとしては、前記イベントが発生した場合に自律的に前記イベントフレームの送信を実施する基本モードとしてのスレーブ側第１モードと、前記イベントが発生し且つ前記マスタノードからの前記送信許可通知を受信した場合に前記イベントフレームの送信を実施するスレーブ側第２モードと、があり、
前記マスタノードは、前記スレーブノードの動作モードが前記スレーブ側第１モードになっていると共に、当該マスタノードの動作モードが前記マスタ側第１モードになっている場合に動作する手段として、
送信を試みた前記定期フレームが前記イベントフレームに調停負けしたことに伴って、送信待ちの前記定期フレームが溜まってしまった送信滞留状態になったか否かを判定する状態判定手段（Ｓ３２５，Ｓ３２７，Ｓ３２８）と、
前記状態判定手段により肯定判定された場合に、前記スレーブノードに対して前記スレーブ側第２モードへの切り替えを指令するための第２モード切替指令を送信する第２モード切替指令手段（Ｓ３６５）と、
前記第２モード切替指令手段が前記第２モード切替指令を送信した場合に、当該マスタノードの動作モードを、前記マスタ側第１モードから前記マスタ側第２モードに切り替えるマスタ側第２モード切替手段（Ｓ３７０）と、を備え、
前記スレーブノードは、
当該スレーブノードの動作モードが前記スレーブ側第１モードである場合に、当該スレーブノードが前記第２モード切替指令を受信すると、当該スレーブノードの動作モードを、前記スレーブ側第１モードから前記スレーブ側第２モードに切り替えるスレーブ側第２モード切替手段（Ｓ２３０）、を備えること、
を特徴とする通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記第２モード切替指令は、前記イベントフレームよりも、バス調停における優先度が高く設定されているフレームであること、
を特徴とする通信システム。
【請求項３】
請求項１又は請求項２に記載の通信システムにおいて、
前記マスタノードは、
前記スケジュールに基づく送信タイミングが到来したものの、送信が未実施である前記定期フレームを示す情報が格納される定期送信キューを備え、
前記状態判定手段（Ｓ３２５）は、前記定期送信キューに格納された前記情報の数が所定数になった場合に、前記送信滞留状態になったと判定すること、
を特徴とする通信システム。
【請求項４】
請求項１又は請求項２に記載の通信システムにおいて、
前記マスタノードは、
前記スケジュールに基づく送信タイミングが到来したものの、送信が未実施である前記定期フレームを示す情報が格納される定期送信キューと、
前記定期送信キューに前記情報が格納されている継続時間を計測する継続時間計測手段（Ｓ３８０，Ｓ３８５，Ｓ３８７）と、を備え、
前記状態判定手段（Ｓ３２７）は、前記継続時間計測手段による計測値が規定値以上になった場合に、前記送信滞留状態になったと判定すること、
を特徴とする通信システム。
【請求項５】
請求項１又は請求項２に記載の通信システムにおいて、
前記マスタノードは、
前記スケジュールで定められた１スケジュール分の前記定期フレームの送信が完了するのに要する時間を計測する所要時間計測手段（Ｓ３９０，Ｓ３９５，Ｓ３９７）を備え、
前記状態判定手段（Ｓ３２８）は、前記所要時間計測手段による計測値が規定値以上になった場合に、前記送信滞留状態になったと判定すること、
を特徴とする通信システム。
【請求項６】
請求項１ないし請求項５の何れか１項に記載の通信システムにおいて、
前記マスタノードは、前記スレーブノードの動作モードが前記スレーブ側第２モードになっていると共に、当該マスタノードの動作モードが前記マスタ側第２モードになっている場合に動作する手段として、
前記定期フレームを前記スケジュールの通りに送信することが可能な状態に復帰したか否かを判定する復帰判定手段（Ｓ５６３，Ｓ５６５，Ｓ５６６，Ｓ５６７）と、
前記復帰判定手段により肯定判定された場合に、前記スレーブノードに対して前記スレーブ側第１モードへの切り替えを指令するための第１モード切替指令を送信する第１モード切替指令手段（Ｓ５７０）と、
前記第１モード切替指令手段が前記第１モード切替指令を送信した場合に、当該マスタノードの動作モードを、前記マスタ側第２モードから前記マスタ側第１モードに切り替えるマスタ側第１モード切替手段（Ｓ５７５）と、を備え、
前記スレーブノードは、
当該スレーブノードの動作モードが前記スレーブ側第２モードである場合に、当該スレーブノードが前記第１モード切替指令を受信すると、当該スレーブノードの動作モードを、前記スレーブ側第２モードから前記スレーブ側第１モードに切り替えるスレーブ側第１モード切替手段（Ｓ２５０）、を備えること、
を特徴とする通信システム。
【請求項７】
請求項６に記載の通信システムにおいて、
前記マスタノードは、
前記スケジュールに基づく送信タイミングが到来したものの、送信が未実施である前記定期フレームを示す情報が格納される定期送信キューを備え、
前記復帰判定手段（Ｓ５６５）は、前記定期送信キューが空になった場合に、前記定期フレームを前記スケジュールの通りに送信することが可能な状態に復帰したと判定すること、
を特徴とする通信システム。
【請求項８】
請求項７に記載の通信システムにおいて、
前記復帰判定手段（Ｓ５６５，Ｓ５６６，Ｓ５６７）は、前記定期送信キューが空になった場合に、前記送信許可通知の送信を実施して、前記スレーブノードが前記イベントフレームを送信しないことを確認したならば、前記定期フレームを前記スケジュールの通りに送信することが可能な状態に復帰したと判定すること、
を特徴とする通信システム。
【請求項９】
請求項７に記載の通信システムにおいて、
前記スレーブノードは、
前記イベントが発生したものの、送信が未実施である前記イベントフレームを示す情報が格納されるイベント送信キューと、
前記イベント送信キューに格納された前記情報の数が所定数になった場合に、そのことを示すキュー通知を前記マスタノードへ送信する通知手段（Ｓ４３２）と、を備え、
前記マスタノードの前記復帰判定手段（Ｓ５６３，Ｓ５６５）は、当該マスタノードが前記スレーブノードからの前記キュー通知を受信し、且つ、前記定期送信キューが空になった場合に、前記定期フレームを前記スケジュールの通りに送信することが可能な状態に復帰したと判定すること、
を特徴とする通信システム。
【請求項１０】
請求項１ないし請求項９の何れか１項に記載の通信システムにおいて、
当該通信システムが起動してから最初の前記マスタノードの動作モードは、前記マスタ側第１モードであり、当該通信システムが起動してから最初の前記スレーブノードの動作モードは、前記スレーブ側第１モードであること、
を特徴とする通信システム。
【請求項１１】
バス（５）を介して接続された複数のノード（１，３）が、前記バスに送信するフレームの先頭部分であるヘッダを用いたバス調停を実施すると共に、送信しようとして調停負けしたフレームの再送信を新規のフレームの送信よりも優先して実施し、
前記複数のノードのうちの１つは、予め設定されたスケジュールに従って、定期的に送信すべきフレームである定期フレームの送信を実施するマスタノード（１）であり、
前記複数のノードのうち、前記マスタノード以外のノードは、予め定められたイベントが発生した場合に、そのイベントに関連する情報を含むフレームであるイベントフレームの送信を実施するスレーブノード（３）であり、
バス調停における優先度が、前記定期フレームよりも前記イベントフレームの方が高く設定されている通信システム（１１）において、
前記マスタノードとして使用されるノードであって、
当該ノードの動作モードとしては、前記スケジュールに従って前記定期フレームの送信を実施する基本モードとしてのマスタ側第１モードと、前記定期フレームを送信する合間に前記スレーブノードに対する送信許可通知を送信するマスタ側第２モードと、があり、
当該ノードの動作モードが前記マスタ側第１モードになっている場合に動作する手段として、
送信を試みた前記定期フレームが前記イベントフレームに調停負けしたことに伴って、送信待ちの前記定期フレームが溜まってしまった送信滞留状態になったか否かを判定する状態判定手段（Ｓ３２５，Ｓ３２７，Ｓ３２８）と、
前記状態判定手段により肯定判定された場合に、前記スレーブノードに対して、前記スレーブノードの動作モードを、前記イベントが発生した場合に自律的に前記イベントフレームの送信を実施するスレーブ側第１モードから、前記イベントが発生し且つ前記送信許可通知を受信した場合に前記イベントフレームの送信を実施するスレーブ側第２モードへと切り替えさせるための第２モード切替指令を送信する第２モード切替指令手段（Ｓ３６５）と、
前記第２モード切替指令手段が前記第２モード切替指令を送信した場合に、当該ノードの動作モードを、前記マスタ側第１モードから前記マスタ側第２モードに切り替えるマスタ側第２モード切替手段（Ｓ３７０）と、を備えること、
を特徴とするノード。
【請求項１２】
請求項１１に記載のノードにおいて、
当該ノードの動作モードが前記マスタ側第２モードになっている場合に動作する手段として、
前記定期フレームを前記スケジュールの通りに送信することが可能な状態に復帰したか否かを判定する復帰判定手段（Ｓ５６３，Ｓ５６５，Ｓ５６６，Ｓ５６７）と、
前記復帰判定手段により肯定判定された場合に、前記スレーブノードに対して前記スレーブ側第１モードへの切り替えを指令するための第１モード切替指令を送信する第１モード切替指令手段（Ｓ５７０）と、
前記第１モード切替指令手段が前記第１モード切替指令を送信した場合に、当該ノードの動作モードを、前記マスタ側第２モードから前記マスタ側第１モードに切り替えるマスタ側第１モード切替手段（Ｓ５７５）と、を備えること、
を特徴とするノード。
【請求項１３】
バス（５）を介して接続された複数のノード（１，３）が、前記バスに送信するフレームの先頭部分であるヘッダを用いたバス調停を実施すると共に、送信しようとして調停負けしたフレームの再送信を新規のフレームの送信よりも優先して実施し、
前記複数のノードのうちの１つは、予め設定されたスケジュールに従って、定期的に送信すべきフレームである定期フレームの送信を実施するマスタノード（１）であり、
前記複数のノードのうち、前記マスタノード以外のノードは、予め定められたイベントが発生した場合に、そのイベントに関連する情報を含むフレームであるイベントフレームの送信を実施するスレーブノード（３）であり、
バス調停における優先度が、前記定期フレームよりも前記イベントフレームの方が高く設定されている通信システム（１１）において、
前記スレーブノードとして使用されるノードであって、
当該ノードの動作モードとしては、前記イベントが発生した場合に自律的に前記イベントフレームの送信を実施する基本モードとしてのスレーブ側第１モードと、前記イベントが発生し且つ前記マスタノードからの送信許可通知を受信した場合に前記イベントフレームの送信を実施するスレーブ側第２モードと、があり、
当該ノードの動作モードが前記スレーブ側第１モードである場合に、当該ノードが前記マスタノードから送信される第２モード切替指令を受信すると、当該ノードの動作モードを、前記スレーブ側第１モードから前記スレーブ側第２モードに切り替えるスレーブ側第２モード切替手段（Ｓ２３０）、を備えること、
を特徴とするノード。
【請求項１４】
請求項１３に記載のノードにおいて、
当該ノードの動作モードが前記スレーブ側第２モードである場合に、当該ノードが前記マスタノードから送信される第１モード切替指令を受信すると、当該ノードの動作モードを、前記スレーブ側第２モードから前記スレーブ側第１モードに切り替えるスレーブ側第１モード切替手段（Ｓ２５０）、を備えること、
を特徴とするノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム及びその通信システムを構成するノードに関する。
【背景技術】
【０００２】
複数のノードがバスを介して接続される通信システムとして、各ノードが、バスに送信するフレームの先頭部分であるヘッダを用いたバス調停を実施すると共に、送信しようとして調停負けしたフレームの再送信を新規のフレームの送信よりも優先して実施する通信システムがある（例えば、特許文献１参照）。また、特許文献１には、マスタノードとスレーブノードとのうち、スレーブノードにも、自律的に送信する機能を持たせることが記載されている。自律的に送信する機能を持つノードは、バスのアイドル状態を確認した上で、フレームの送信を開始し、調停負けしなければ、そのまま送信を続ける。また、調停負けした場合には、送信を中止し、その後、バスのアイドル状態を確認してから、同じフレームの再送信を行うこととなる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５５１０２７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、車両における通信システムにおいて、ドアミラーやパワーウィンドウ等の機器を制御する電子制御装置（以下、ＥＣＵという）を、マスタノードとし、上記機器を動かすためのスイッチの状態を検出する装置を、スレーブノードとしたとする。
【０００５】
その場合、スレーブノードは、例えば、スイッチの状態が変化した場合に、そのスイッチの状態を示すフレームを送信し、マスタノードは、スレーブノードから受信したフレームの内容に応じて機器を動作させることとなる。
【０００６】
そして、ユーザ（車両の使用者）の利便性の観点からは、スイッチの状態が変化した（換言すれば、スイッチが操作された）というイベントに対して、機器が素速く動作を開始することが重要となる。このため、スレーブノードからマスタノードへの通信の応答性が重視される。
【０００７】
また、マスタノードからは、他のノードへ、予め設定されたスケジュールに従って、定期的にフレームを送信したい、という要望もある。
その場合、スレーブノードからマスタノードへの通信の応答性を考慮すると、スレーブノードは、フレームを送信すべきイベントが発生した場合に自律的にフレームを送信することができるノードにすべきである。そして更に、マスタノードが定期的に送信するフレームよりも、スレーブノードが送信するフレームの方が、バス調停における優先度を高く設定することが考えられる。
【０００８】
しかし、スレーブノードからの自律的なフレームの送信と、マスタノードからの定期的なフレームの送信とが、同時に実施される可能性があり、その場合、マスタノードは、調停負けによってフレームを送信することができない。このため、スレーブノードにおいてイベントが多発して、スレーブノードの送信頻度が上がると、マスタノードがスケジュール通りにフレームを送信することができない、という状態が継続することになる。
【０００９】
そして、マスタノードにおいて、送信できないフレームが滞留すると、定期的なフレームの送信スケジュールが崩れてしまい、その定期的なフレームを受信する他のノードにおいて、不都合が生じることとなる。例えば、他のノードへ定期的に送信されていた制御データが送信されなくなることで、その制御データを用いるノードにおいて、制御処理を正しく実施することができなくなったり、他のノードにおける異常検出機能により、異常であると誤検出されてしまったりすることとなる。
【００１０】
そこで、本発明は、マスタノードから定期的に送信されるフレームよりも、スレーブノードからイベントの発生に伴って送信されるフレームの方が、バス調停での優先度を高くしつつ、マスタノードによる定期的なフレームの送信が滞ってしまうことを防止すること、を目的としている。
【課題を解決するための手段】
【００１１】
第１発明の通信システムでは、バスを介して接続された複数のノードが、バスに送信するフレームの先頭部分であるヘッダを用いたバス調停を実施すると共に、送信しようとして調停負けしたフレームの再送信を新規のフレームの送信よりも優先して実施する。
【００１２】
そして、複数のノードのうちの１つは、予め設定されたスケジュールに従って、定期的に送信すべきフレームである定期フレームの送信を実施するマスタノードである。また、複数のノードのうち、マスタノード以外のノードは、予め定められたイベントが発生した場合に、そのイベントに関連する情報を含むフレームであるイベントフレームの送信を実施するスレーブノードである。更に、バス調停における優先度は、定期フレームよりもイベントフレームの方が高く設定されている。
【００１３】
この通信システムにおいて、マスタノードの動作モードとしては、スケジュールに従って定期フレームの送信を実施する基本モードとしてのマスタ側第１モードと、定期フレームを送信する合間にスレーブノードに対する送信許可通知を送信するマスタ側第２モードと、がある。
【００１４】
そして、スレーブノードの動作モードとしては、イベントが発生した場合に自律的にイベントフレームの送信を実施する基本モードとしてのスレーブ側第１モードと、イベントが発生し且つマスタノードからの前記送信許可通知を受信した場合にイベントフレームの送信を実施するスレーブ側第２モードと、がある。
【００１５】
更に、マスタノードは、スレーブノードの動作モードがスレーブ側第１モードになっていると共に、当該マスタノードの動作モードがマスタ側第１モードになっている場合に動作する手段として、状態判定手段と、第２モード切替指令手段と、マスタ側第２モード切替手段と、を備える。状態判定手段は、送信を試みた定期フレームがイベントフレームに調停負けしたことに伴って、送信待ちの定期フレームが溜まってしまった送信滞留状態になったか否かを判定する。第２モード切替指令手段は、状態判定手段により肯定判定された場合（即ち、送信滞留状態になったと判定された場合）に、スレーブノードに対してスレーブ側第２モードへの切り替えを指令するための第２モード切替指令を送信する。マスタ側第２モード切替手段は、第２モード切替指令手段が第２モード切替指令を送信した場合に、当該マスタノードの動作モードを、マスタ側第１モードからマスタ側第２モードに切り替える。
【００１６】
そして、スレーブノードは、スレーブ側第２モード切替手段を備える。そのスレーブ側第２モード切替手段は、当該スレーブノードの動作モードがスレーブ側第１モードになっている場合に、当該スレーブノードがマスタノードからの第２モード切替指令を受信すると、当該スレーブノードの動作モードを、スレーブ側第１モードからスレーブ側第２モードに切り替える。
【００１７】
以下では、マスタノードがマスタ側第１モードで、スレーブノードがスレーブ側第１モードである場合の、通信システムのモードを、第１モードと言う。また、マスタノードがマスタ側第２モードで、スレーブノードがスレーブ側第２モードである場合の、通信システムのモードを、第２モードと言う。
【００１８】
通信システムが第１モードの場合には、スレーブノードからのイベントフレームの送信と、マスタノードからの定期フレームの送信とが、同時に実施されて、マスタノードが、調停負けにより定期フレームを送信することができない可能性がある。このため、スレーブノードにおいてイベントが多発して、スレーブノードの送信頻度が上がると、マスタノードがスケジュール通りに定期フレームを送信することができない、という状態が継続することになる。
【００１９】
そして、マスタノードにおいて、調停負けによって送信できない定期フレーム（即ち、送信待ちとなった定期フレーム）が溜まると、状態判定手段が、送信滞留状態になったと肯定判定する。
【００２０】
すると、マスタノードは、第２モード切替指令手段により、スレーブノードに対して第２モード切替指令を送信すると共に、マスタ側第２モード切替手段により、動作モードが、マスタ側第１モードからマスタ側第２モードに切り替わる。そして、スレーブノードは、マスタノードからの第２モード切替指令を受信することにより、動作モードが、スレーブ側第１モードからスレーブ側第２モードに切り替わる。よって、通信システムは、第２モードとなる。
【００２１】
通信システムが第２モードになると、マスタノードは、定期フレームを送信する合間にスレーブノードに対する送信許可通知を送信する。そして、スレーブノードは、その送信許可通知を受信することによって、イベントフレームの送信が許可されることとなる。よって、スレーブノードからのイベントフレームの送信及び送信頻度が、マスタノードによってコントロールされる。
【００２２】
そして、マスタノードは、スレーブノードからのイベントフレームの送信頻度を抑制した状態で、滞留していた送信待ちの定期フレームを送信することができる。このため、定期フレームをスケジュール通りに送信できる状態へと復帰することができる。また、スレーブノードからのイベントフレームの送信は、頻度が抑制されるだけであり、完全に禁止されるわけではないため、イベントフレームが送信されることによる機能も確保される。
【００２３】
以上のことから、本発明によれば、マスタノードからの定期フレームよりも、スレーブノードからのイベントフレームの方が、バス調停での優先度を高くしつつ、マスタノードによる定期フレームの送信が滞ってしまうことを防止することができる。
【００２４】
一方、第２発明のノードは、上記マスタノードとして使用可能なノードである。
このため、第２発明のノードの動作モードとしては、前述のマスタ側第１モードとマスタ側第２モードとがある。そして、第２発明のノードは、当該ノードの動作モードがマスタ側第１モードになっている場合に動作する手段として、前述の状態判定手段、第２モード切替指令手段及びマスタ側第２モード切替手段を備える。
【００２５】
また、第３発明のノードは、上記スレーブノードとして使用可能なノードである。
このため、第３発明のノードの動作モードとしては、前述のスレーブ側第１モードとスレーブ側第２モードとがある。そして、第３発明のノードは、前述のスレーブ側第２モード切替手段を備える。
【００２６】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００２７】
【図１】第１実施形態の通信システムを表す構成図である。
【図２】定期フレームの送信スケジュールを説明する第１の説明図である。
【図３】定期フレームの送信スケジュールを説明する第２の説明図である。
【図４】比較例を説明する説明図である。
【図５】第１実施形態の特徴の概要を説明する説明図である。
【図６】スレーブノードで実行されるモード切替処理を表すフローチャートである。
【図７】第１実施形態のマスタ側第１モードでのフレーム送信処理を表すフローチャートである。
【図８】第１実施形態のスレーブ側第１モードでのフレーム送信処理を表すフローチャートである。
【図９】第１実施形態のマスタ側第２モードでのフレーム送信処理を表すフローチャートである。
【図１０】第１実施形態のスレーブ側第２モードでのフレーム送信処理を表すフローチャートである。
【図１１】第２実施形態のマスタ側第１モードでのフレーム送信処理を表すフローチャートである。
【図１２】第３実施形態のマスタ側第１モードでのフレーム送信処理を表すフローチャートである。
【図１３】第４実施形態のマスタ側第２モードでのフレーム送信処理を表すフローチャートである。
【図１４】第５実施形態のスレーブ側第２モードでのフレーム送信処理を表すフローチャートである。
【図１５】第５実施形態のマスタ側第２モードでのフレーム送信処理を表すフローチャートである。
【発明を実施するための形態】
【００２８】
以下に、本発明が適用された実施形態の通信システムについて説明する。本実施形態の通信システムは、例えば、車両に搭載された複数の装置をノードとして備える車載用の通信システムである。
【００２９】
［第１実施形態］
＜全体構成＞
図１に示すように、実施形態の通信システム１１は、バス５を介して接続された複数のノードとして、マスタノード（以下単に、マスタという）１と、スレーブノード（以下単に、スレーブという）３とを備える。スレーブ３は、１つでも良いが、この例では複数ある。そして、図１では、３つのスレーブ３を図示している。以下において、３つのスレーブ３を区別して説明する場合には、符号として、「３ａ」，「３ｂ」，「３ｃ」のそれぞれを用いる。
【００３０】
マスタ１は、例えばドアミラー、パワーウィンドウ、ドアロック等の機器（いわゆるボデー系機器）を制御するＥＣＵである。
スレーブ３は、マスタ１の制御対象である機器を操作するためのスイッチの状態を検出する装置である。例えば、スレーブ３ａは、ドアミラーを操作するためのスイッチ（ミラースイッチ）７ａの状態を検出する。スレーブ３ｂは、パワーウィンドウを操作するためのスイッチ（パワーウィンドウスイッチ）７ｂの状態を検出する。スレーブ３ｃは、ドアの開／閉に応じてオン／オフするスイッチ（ドアスイッチ）７ｃの状態を検出する。
【００３１】
スレーブ３は、例えば自身に接続されたスイッチ（７ａ〜７ｃの何れか）の状態が変化した場合に、通信実施トリガとしてのイベントが発生したとして、そのイベントに関連する情報を含むフレーム（例えば、変化したスイッチの状態を示すフレーム）を送信する。つまり、スレーブ３は、少なくとも、車両の使用者によるスイッチ操作を検出して、マスタ１に通知する機能を有している。以下では、スレーブ３がイベントの発生に伴って送信するフレームのことを、イベントフレームと言う。また、スレーブ３が行うイベントフレームの送信のことを、イベント送信と言う。
【００３２】
マスタ１は、スレーブ３からのイベントフレームの内容に応じて機器を動作させる。
更に、マスタ１は、スレーブ３が検出する情報とは別の車両状態を検出すると共に、スレーブ３へ、予め設定されたスケジュール（以下、送信スケジュールとも言う）に従って定期的にフレームを送信する。その定期的なフレームには、例えば、マスタ１が検出した車両状態に基づく制御データや故障診断情報等が含まれる。以下では、マスタ１が定期的に送信するフレームのことを、定期フレームと言う。また、マスタ１が行う定期フレームの送信のことを、定期送信と言う。
【００３３】
そして、スレーブ３は、例えば、自身に接続されているアクチュエータ（図示省略）をマスタ１からの定期フレームの内容に応じて動作させたり、マスタ１からの定期フレームに含まれている情報を記憶したりする機能も有している。
【００３４】
バス５では、レセッシブ、ドミナントと呼ばれる二つの信号レベルが用いられる。そして、複数のノードが同時に送信を開始した場合、いずれか一つでもドミナントが含まれていると、バス５の信号レベルはドミナントとなる。つまり、バス５上で信号が衝突した場合、バス調停によって、レセッシブを送信した側が調停負けする（逆に言えば、ドミナントを送信した側が調停勝ちする）ようになっている。以下では、バス５において、レセッシブが予め設定されたビット数（例えば１１ビット）以上継続した状態を、バスアイドル状態という。バスアイドル状態は、どのノードも送信していない状態である。
【００３５】
＜フレームフォーマットの説明＞
通信システム１１において、データの送受信に使用されるフレーム（定期フレーム及びイベントフレーム）は、フレームの先頭部分であるヘッダと、そのヘッダに続くデータ部分とからなる。
【００３６】
ヘッダは、フレームの受け取り先であるノードや、データ部分に含まれるデータの種類等を示す複数ビット（例えば１バイト）のＩＤ（識別子）からなり、そのヘッダの値（ＩＤの値）によって優先度が変わる。
【００３７】
データ部分には、ノード間でやり取りされる実質的なデータの他に、例えば、データ部分のサイズを示すサイズ情報や、エラーの有無をチェックするための誤り訂正符号等も含まれる。
【００３８】
また、通信システム１１において、バス調停における優先度は、マスタ１からの定期フレームよりも、スレーブ３からのイベントフレームの方が、高く設定されている。
＜マスタの構成＞
マスタ１は、当該マスタ１の動作を司るマイクロコンピュータ（以下、マイコンと言う）２１と、通信回路２３と、を備える。
【００３９】
マイコン２１は、ＣＰＵ２５と、ＣＰＵ２５が実行するプログラムが記憶されたＲＯＭ２６と、ＣＰＵ２５による演算結果が記憶されるＲＡＭ２７と、を備える。また例えば、ＲＡＭ２７における所定の記憶領域は、後述する定期送信キュー２８として使用される。
【００４０】
通信回路２３は、下記〈ａ〉〜〈ｆ〉の機能を備える。但し、〈ａ〉,〈ｆ〉の機能は、マイコン２１に備えても良い。
〈ａ〉バス５の電圧レベルからバスアイドル状態であるか否かを判断して、バスアイドル状態である場合には、マイコン２１へアイドル検出信号ＩＤＬを出力するアイドル検出機能。
【００４１】
〈ｂ〉マイコン２１から供給されるＮＲＺ符号の送信データＴｘを、バス５上で用いる伝送符号に符号化する符号化機能。伝送符号は、例えばＰＷＭ符号である。
〈ｃ〉符号化機能で符号化された送信データＴｘＤをバス５に出力する送信機能。
【００４２】
〈ｄ〉バス５上のデータを取り込む受信機能。
〈ｅ〉受信機能で取り込まれたＰＷＭ符号の受信データＲｘＤをＮＲＺ符号に復号し、復号後の受信データＲｘをマイコン２１に供給する復号機能。
【００４３】
〈ｆ〉送信機能でバスに出力される送信データＴｘＤと、受信機能で取り込まれた受信データＲｘＤとを比較して、両データＴｘＤ，ＲｘＤの信号レベルが不一致であれば、マイコン２１へ衝突検出信号ＣＤを出力すると共に、送信機能による送信を中止させる調停機能。
【００４４】
＜スレーブの構成＞
スレーブ３も、当該スレーブ３の動作を司るマイコン３１と、マスタ１における通信回路２３と同様の通信回路３３と、を備えている。そして、マイコン３１は、ＣＰＵ３５と、ＣＰＵ３５が実行するプログラムが記憶されたＲＯＭ３６と、ＣＰＵ３５による演算結果が記憶されるＲＡＭ３７と、を備える。また例えば、ＲＡＭ３７における所定の記憶領域は、後述するイベント送信キュー３８として使用される。また、スレーブ３はマイコン３１を備えず、通信回路３３のみで構成しても良い。
【００４５】
尚、通信回路２３，３３において、送信機能を担う送信回路（図示省略）は、複数のノードから同時に信号が出力された場合、いずれか１つでもローレベルであれば、バス５の信号レベルがローレベルとなるように構成されている。つまり、この例において、バス５上では、ハイレベルがレセッシブ、ローレベルがドミナントである。
【００４６】
＜調停負けした場合のノードの動作＞
各ノードは、バスアイドル状態を確認した上で、フレームの送信を開始するが、他のノードと送信が重なって、ヘッダの送信段階で調停負けした場合、つまり、ヘッダの送信データＴｘＤと受信データＲｘＤとが不一致になった場合には、フレームの送信（ヘッダの送信）を中止する。その場合、バス５への出力レベルは、ハイレベル（レセッシブ）にする。そして、調停負けしたノードは、その後、バスアイドル状態であることを確認した後、送信しようとして調停負けしたフレームの再送信を実施する。その再送信は、新規のフレームの送信よりも優先して実施する。つまり、ノードは、送信したヘッダが調停負けした場合には、その後、送信が成功するまでヘッダの再送を繰り返し、ヘッダの送信が完了すると、そのヘッダに続いてデータ部を送信する。
【００４７】
＜マスタにおける送信スケジュールの説明＞
例えば図２に示すように、マスタ１は、定期フレームとして、送信タイミングが異なる５種類のフレーム〈１〉〜〈５〉を送信する。フレーム〈１〉，〈２〉の送信周期は５０ｍｓであり、フレーム〈３〉の送信周期は１００ｍｓであり、フレーム〈４〉の送信周期は２００ｍｓであり、フレーム〈５〉の送信周期は５００ｍｓである。
【００４８】
各フレーム〈１〉〜〈５〉の送信順序及び送信間隔は、図３に示す通りである。
図３において、「Ｎｏ」の欄に記載した番号は、各フレーム〈１〉〜〈５〉の送信スケジュールにおける送信順序であり、図２において各フレーム〈１〉〜〈５〉の下に記載した「ＮｏＸ：Ｘは１〜２３の何れか」に対応している。そして、図３において、「間隔」の欄に記載した時間は、１つ前の定期フレームの送信タイミングから、その欄に対応する定期フレームの送信タイミングまでの、時間間隔を示している。
【００４９】
つまり、図３は、スケジュールにおける最初の定期フレーム（Ｎｏ１のフレーム〈１〉）の送信タイミングから１５ｍｓ後に、２番目の定期フレーム（Ｎｏ２のフレーム〈２〉）の送信タイミングが到来し、２番目の定期フレームの送信タイミングから１５ｍｓ後に、３番目の定期フレーム（Ｎｏ３のフレーム〈３〉）の送信タイミングが到来する、といった内容を示している。また、図３は、スケジュールにおける最後の定期フレーム（Ｎｏ２３のフレーム〈５〉）の送信タイミングから１０ｍｓ後に、最初の定期フレーム（Ｎｏ１のフレーム〈１〉）の送信タイミングが到来する、という内容も示している。この例では、Ｎｏ１からＮｏ２３までのフレームを、１スケジュール分として、繰り返し送信するスケジュールとなっている。
【００５０】
そして、マスタ１のマイコン２１においては、図３に示す間隔で、フレーム〈１〉〜〈５〉の送信タイミングを示す定期送信要求が発生するようになっている。
＜モードの説明＞
通信システム１１のモード（マスタ１とスレーブ３との通信方式のモードでもある）は、第１モードと第２モードとに切り替わるようになっている。
【００５１】
第１モードは、マスタ１の動作モードがマスタ側第１モードで、スレーブ３の動作モードがスレーブ側第１モードである場合の、通信システム１１のモードである。第２モードは、マスタ１の動作モードがマスタ側第２モードで、スレーブ３の動作モードがスレーブ側第２モードである場合の、通信システム１１のモードである。
【００５２】
マスタ１は、マスタ側第１モードの場合には、前述の送信スケジュールに従って定期フレームの送信を実施する。
そして、スレーブ３は、スレーブ側第１モードの場合には、イベントが発生した場合に、自律的にイベントフレームの送信を実施する。
【００５３】
マスタ側第１モードは、マスタ１の基本モードであり、スレーブ側第１モードは、スレーブ３の基本モードである。基本モードとは、通信システム１１が起動してから最初のモード（初期のモード）に該当する。
【００５４】
一方、マスタ１は、マスタ側第２モードの場合には、定期フレームを送信する合間に、スレーブ３に対する送信許可通知を送信する。本実施形態において、マスタ１は、送信許可通知として、イベントフレームの送信許可を意味するヘッダ（通常のフレームにおけるヘッダと同じビット数のデータであり、以下、イベントヘッダと言う）を送信する。
【００５５】
そして、スレーブ３は、スレーブ側第２モードの場合には、イベントが発生し且つマスタ１からのイベントヘッダを受信した場合に、イベントフレームの送信を実施する。つまり、スレーブ３は、スレーブ側第２モードの場合には、マスタ１から送信許可通知としてのイベントヘッダが送信されることで、イベントフレームの送信が許可される。
【００５６】
尚、マスタ１の動作モードは、マイコン２１の動作モードでもあり、スレーブ３の動作モードは、マイコン３１の動作モードでもある。
そして、マスタ１がマスタ側第１モードの場合、マイコン２１は、フレームを送信するためのフレーム送信処理として、後述する図７の処理を行い、スレーブ３がスレーブ側第１モードの場合、マイコン３１は、フレーム送信処理として、後述する図８の処理を行う。一方、マスタ１がマスタ側第２モードの場合、マイコン２１は、フレーム送信処理として、後述する図９の処理を行い、スレーブ３がスレーブ側第２モードの場合、マイコン３１は、フレーム送信処理として、後述する図１０の処理を行う。
【００５７】
換言すれば、マイコン２１が図７の処理を行う場合のマスタ１の動作モード（＝マイコン２１の動作モード）が、マスタ側第１モードであり、マイコン３１が図８の処理を行う場合のスレーブ３の動作モード（＝マイコン３１の動作モード）が、スレーブ側第１モードである。また、マイコン２１が図９の処理を行う場合のマスタ１の動作モードが、マスタ側第２モードであり、マイコン３１が図１０の処理を行う場合のスレーブ３の動作モードが、スレーブ側第２モードである。
【００５８】
＜比較例＞
図４は、通信システム１１において、第２モードを備えないと仮定した場合（つまり、第１モードのままである場合）の動作を、比較例として表している。尚、図４では、スレーブ３として、２つのスレーブ３ａ，３ｂの動作を例示している。そして、このことは、後述する図５についても同様である。
【００５９】
図４に示すように、マスタ１からの定期フレームの送信と、スレーブ３（３ａ，３ｂ）からのイベントフレームの送信とが、同時に実施された場合、マスタ１は、イベントフレームとの調停負けによって定期フレームの送信を中止する。前述の通り、定期フレームよりもイベントフレームの方が、バス調停における優先度が高く設定されているからである。
【００６０】
そして、マスタ１は、その後、バスアイドル状態になったことを確認してから、調停負けした定期フレームの再送信を試みる。尚、図４において、「マスタ」の段に示した曲線の矢印は、調停負けした定期フレームの再送信を表している。このことは、後述する図５についても同様である。
【００６１】
スレーブ３においてイベントが多発し、スレーブ３の送信頻度が上がると、マスタ１は、調停負けした同じ定期フレームの再送信を繰り返し試みることとなる。
そして、マスタ１においては、調停負けした定期フレームの再送信を繰り返している間に、次に送信すべき新規の定期フレームの送信タイミングが到来することで、送信待ちの定期フレーム（具体的には、送信タイミングが到来したものの、送信が未実施の定期フレーム）が滞留していく。
【００６２】
マスタ１において、送信待ちの定期フレームが滞留すると、送信スケジュールが崩れてしまい、定期フレームを受信するスレーブ３において、不都合が生じる。例えば、マスタ１からの定期フレームに含まれる制御データを用いるスレーブ３において、制御処理を正しく実施することができなくなったり、スレーブ３における異常検出機能により、異常であると誤検出されてしまったりすることとなる。
【００６３】
＜実施形態の特徴の概要＞
一方、図５に示すように、本実施形態の通信システム１１では、第１モードの場合に、マスタ１は、送信待ちの定期フレームが溜まってしまった送信滞留状態になったことを検出すると（時刻ｔ１）、スレーブ３に対してモード切替フレームを送信する。
【００６４】
モード切替フレームは、全てのスレーブ３に対して動作モードの切り替えを指令するためのフレームである。そして、この場合、マスタ１は、モード切替フレームとして、スレーブ側第２モードへの切り替えを指令するためのフレーム（第２モード切替指令に相当するフレームであり、以下、第２モード切替フレームと言う）を送信する。尚、第２モード切替フレームは、イベントフレームよりも、バス調停における優先度が高く設定されている。このため、全てのスレーブ３に対して、スレーブ側第２モードへの切り替えを、調停負けが発生することなく確実に通知することができる。
【００６５】
マスタ１は、第２モード切替フレームを送信すると、自身の動作モードを、マスタ側第１モードからマスタ側第２モードに切り替える。また、スレーブ３は、第２モード切替フレームを受信すると、自身の動作モードを、スレーブ側第１モードからスレーブ側第２モードに切り替える。このため、通信システム１１は、第１モードから第２モードに切り替わる。
【００６６】
第２モードにおいて、マスタ１は、定期フレームを送信する合間に、スレーブ３に対する前述のイベントヘッダを送信する。本実施形態において、マスタ１は、イベントヘッダを定期的に（一定時間毎に）送信する。
【００６７】
そして、スレーブ３は、マスタ１からのイベントヘッダを受信することによって、イベントフレームの送信が許可される。つまり、スレーブ３は、イベントが発生しても、マスタ１からのイベントヘッダを受信しない限り、イベントフレームを送信しない。
【００６８】
よって、スレーブ３からのイベントフレームの送信及び送信頻度が、マスタ１によってコントロールされることとなり、マスタ１からの定期フレームが調停負けすることが無い。そして、マスタ１は、スレーブ３からのイベントフレームの送信頻度を抑制した状態で、滞留していた送信待ちの定期フレームを順次送信する。このため、定期フレームをスケジュール通りに送信することが可能な状態（以下単に、正常状態とも言う）へと復帰することができる。また、スレーブ３からのイベントフレームの送信を完全に禁止するわけではないため、イベントフレームが送信されることによる機能も確保される。これにより、スレーブ３のイベント送信を実現しつつ、マスタ１における定期送信の停滞を解消することができる。
【００６９】
そして、第２モードの場合に、マスタ１は、送信滞留状態が解消したことを検出すると（時刻ｔ２）、スレーブ３に対してモード切替フレームを送信する。この場合、マスタ１は、モード切替フレームとして、スレーブ側第１モードへの切り替えを指令するためのフレーム（第１モード切替指令に相当するフレームであり、以下、第１モード切替フレームと言う）を送信する。
【００７０】
マスタ１は、第１モード切替フレームを送信すると、自身の動作モードを、マスタ側第２モードからマスタ側第１モードに切り替える。また、スレーブ３は、第１モード切替フレームを受信すると、自身の動作モードを、スレーブ側第２モードからスレーブ側第１モードに切り替える。このため、通信システム１１は、第２モードから第１モードに戻る。
【００７１】
つまり、マスタ１において滞留した定期フレームの送信が全て完了して、定期送信をスケジュール通りに実施することができる状態になったら、スレーブ３のイベント送信が自由に実施できる元の第１モード（換言すれば、イベントフレームの送信応答性を高くした第１モード）に復帰する。
【００７２】
＜各ノードで実施される処理の説明＞
マスタ１のマイコン２１が行う処理（実際には、ＣＰＵ２５がＲＯＭ２６内のプログラムに従って行う処理）と、スレーブ３のマイコン３１が行う処理（実際には、ＣＰＵ３５がＲＯＭ３６内のプログラムに従って行う処理）とについて、説明する。
【００７３】
《スレーブ側のモード切替処理》
スレーブ３のマイコン３１は、通信回路３３によって他のノードからのフレームが受信されたことを検知すると、図６に示すモード切替処理を実行する。
【００７４】
図６に示すように、スレーブ３のマイコン３１は、モード切替処理を開始すると、Ｓ２１０にて、通信回路３３から受信データを取得する。マイコン３１は、次のＳ２２０にて、Ｓ２１０で取得した受信データに基づいて、今回受信したフレームがマスタ１からの第２モード切替フレームであるか否か（即ち、第２モード切替フレームを受信したか否か）を判定する。
【００７５】
マイコン３１は、第２モード切替フレームを受信したと判定した場合には（Ｓ２２０：ＹＥＳ）、Ｓ２３０にて、当該スレーブ３の動作モードをスレーブ側第２モードに設定する処理を行い、その後、当該モード切替処理を終了する。マイコン３１は、Ｓ２３０では、具体的には、フレーム送信処理として図１０の処理を行うように、内部設定を行う。
【００７６】
このため、スレーブ３の動作モードがスレーブ側第１モードである場合に、スレーブ３が第２モード切替フレームを受信すると、Ｓ２３０の処理により、スレーブ３の動作モードは、スレーブ側第１モードからスレーブ側第２モードに切り替わる。
【００７７】
また、マイコン３１は、上記Ｓ２２０にて、第２モード切替フレームを受信していないと判定した場合には、Ｓ２４０に移行する。
マイコン３１は、Ｓ２４０では、Ｓ２１０で取得した受信データに基づいて、今回受信したフレームがマスタ１からの第１モード切替フレームであるか否か（即ち、第１モード切替フレームを受信したか否か）を判定する。
【００７８】
マイコン３１は、第１モード切替フレームを受信したと判定した場合には（Ｓ２４０：ＹＥＳ）、Ｓ２５０にて、当該スレーブ３の動作モードをスレーブ側第１モードに設定する処理を行い、その後、当該モード切替処理を終了する。マイコン３１は、Ｓ２５０では、具体的には、フレーム送信処理として図８の処理を行うように、内部設定を行う。
【００７９】
このため、スレーブ３の動作モードがスレーブ側第２モードである場合に、スレーブ３が第１モード切替フレームを受信すると、Ｓ２５０の処理により、スレーブ３の動作モードは、スレーブ側第２モードからスレーブ側第１モードに切り替わる。
【００８０】
一方、マイコン３１は、上記Ｓ２４０にて、第１モード切替フレームを受信していないと判定した場合には、そのまま当該モード切替処理を終了する。この場合、マイコン３１は、受信したデータの種類に応じて定められている処理を行うこととなる。
【００８１】
尚、前述したように、通信システム１１の起動直後におけるマスタ１とスレーブ３との動作モードは、マスタ側第１モードとスレーブ側第１モードであるが、通信システム１１の起動時において、マスタ１が第１モード切替フレームを送信することで、スレーブ３がスレーブ側第１モードになるように構成しても良い。
【００８２】
《マスタ側第１モードでのフレーム送信処理》
マスタ１がマスタ側第１モードの場合に、マイコン２１は、フレーム送信処理として、図７に示す「マスタ側第１モードでのフレーム送信処理」を一定時間毎に実行する。尚、その一定時間は、図２，図３で説明した送信スケジュールにおける定期フレームの送信間隔の最小値（この例では１０ｍｓ）よりも十分に短い。
【００８３】
図７に示すように、マイコン２１は、マスタ側第１モードでのフレーム送信処理を開始すると、Ｓ３１０にて、送信要求があるか否かを判定する。このＳ３１０にて、送信要求があると判定される条件は、下記３つの条件の何れかである。
【００８４】
・当該図７の処理を前回開始してから今回開始するまでの間に、新規の定期送信要求が発生した、という条件。
尚、「新規の定期送信要求が発生した」とは、送信スケジュールで定められている何れかの定期フレーム（フレーム〈１〉〜〈５〉）の送信タイミングが到来した、ということである。
【００８５】
・定期送信キュー２８にフレーム情報が格納されている、という条件。
尚、定期送信キュー２８は、送信スケジュールに基づく送信タイミングが到来したものの、送信が未実施である定期フレームを示す情報（識別情報）が、フレーム情報として格納されるキューである。定期送信キュー２８は、フレーム情報をＮ個（Ｎは２以上の整数）格納できるようになっている。また例えば、定期送信キュー２８には、フレーム情報として、定期フレームのヘッダを成すデータが格納される。
【００８６】
・再送キューに再送情報が格納されている、という条件。
尚、再送キューは、送信を試みた（実施した）ものの、ヘッダの送信時点で調停負けして、送信が中止されたフレーム（即ち、マスタ１においては、調停負けして再送すべき定期フレーム）を示す情報（識別情報）が、再送情報として格納されるキューである。再送キューは、再送情報を１個格納できるようになっている。また例えば、定期送信キュー２８と同様に、再送キューには、再送情報として、再送すべきフレームのヘッダを成すデータが格納される。
【００８７】
マイコン２１は、Ｓ３１０にて、送信要求がないと判定した場合には、そのまま当該図７の処理を終了するが、Ｓ３１０にて、送信要求があると判定した場合には、Ｓ３１５に進む。
【００８８】
マイコン２１は、Ｓ３１５では、当該図７の処理を前回開始してから今回開始するまでの間に、新規の定期送信要求が発生したか否かを判定し、新規の定期送信要求が発生した場合には、Ｓ３２０に進む。
【００８９】
マイコン２１は、Ｓ３２０では、発生した新規の定期送信要求に対応する定期フレーム（つまり、送信タイミングが到来した定期フレーム）の識別情報を、フレーム情報として、定期送信キュー２８にエンキューする（つまり、定期送信キュー２８に格納する）。その後、マイコン２１は、Ｓ３２５に進む。
【００９０】
また、マイコン２１は、Ｓ３１５にて、新規の定期送信要求が発生していないと判定した場合には、そのままＳ３２５に進む。
マイコン２１は、Ｓ３２５では、定期送信キュー２８がフルになったか否か（つまり、定期送信キュー２８に格納されたフレーム情報の数が最大数のＮ個になったか否か）を判定し、定期送信キュー２８がフルになっていなければ、Ｓ３３０に進む。
【００９１】
マイコン２１は、Ｓ３３０では、通信回路２３からのアイドル検出信号ＩＤＬに基づいて、バスアイドル状態であるか否かを判定し、バスアイドル状態でなければ、そのまま当該図７の処理を終了するが、バスアイドル状態であれば、Ｓ３３５に進む。
【００９２】
マイコン２１は、Ｓ３３５では、再送キューに再送情報が入っているか否かを判定し、再送キューに再送情報が入っている場合には、Ｓ３４０に進む。
マイコン２１は、Ｓ３４０では、再送キューから再送情報をデキューする。つまり、再送キュー内の再送情報を読み出した後、その読み出した再送情報を再送キューから削除する。その後、マイコン２１は、Ｓ３５０に進む。
【００９３】
また、マイコン２１は、上記Ｓ３３５にて、再送キューに再送情報が入っていないと判定した場合には、Ｓ３４５に進み、定期送信キュー２８からフレーム情報をデキューする。つまり、定期送信キュー２８内の最も古いフレーム情報を読み出した後、その読み出したフレーム情報を定期送信キュー２８から削除する。その後、マイコン２１は、Ｓ３５０に進む。
【００９４】
マイコン２１は、Ｓ３５０では、Ｓ３４０から当該Ｓ３５０に進んだ場合には、Ｓ３４０で再送キューから読み出した再送情報が示す定期フレームを、送信対象のフレームとする。また、マイコン２１は、Ｓ３４５から当該Ｓ３５０に進んだ場合には、Ｓ３４５で定期送信キュー２８から読み出したフレーム情報が示す定期フレームを、送信対象のフレームとする。
【００９５】
そして、マイコン２１は、Ｓ３５０では、送信対象のフレームを送信するための送信処理を実施する。具体的には、マイコン２１は、まず、フレームのヘッダを成すデータを、通信回路２３に送信データＴｘとして供給する。そして、マイコン２１は、通信回路２３から前述の衝突検出信号ＣＤが出力されなければ（つまり、通信回路２３によってバス５に出力されたヘッダが調停負けしなければ）、フレームのデータ部分を成すデータを、通信回路２３に送信データＴｘとして供給する。尚、通信回路２３に供給するデータのうち、フレームのデータ部分を成すデータとしては、例えば、当該Ｓ３５０の実行時における最新のデータを用いるが、そのフレームの送信タイミングが到来したときのデータを用いても良い。
【００９６】
マイコン２１は、次のＳ３５５にて、調停負けしたか否かを判定する。具体的には、通信回路２３から衝突検出信号ＣＤが出力されたか否かを判定する。そして、マイコン２１は、調停負けしていないと判定した場合には、そのまま当該図７の処理を終了するが、調停負けしたと判定した場合には、Ｓ３６０に進む。
【００９７】
尚、実際には、マイコン２１は、Ｓ３５０にて、ヘッダの送信を実施している途中で、通信回路２３から衝突検出信号ＣＤが出力されると、送信処理を中止して、Ｓ３５５に進み、そのＳ３５５にて、調停負けしたと判定する。また、マイコン２１は、Ｓ３５０にて、ヘッダの送信を実施している途中で、通信回路２３から衝突検出信号ＣＤが出力されなければ、フレームの送信を全て完了してから、Ｓ３５５に進み、そのＳ３５５にて、調停負けしていないと判定することとなる。
【００９８】
マイコン２１は、Ｓ３６０では、今回送信対象とした定期フレーム（即ち、調停負けによって送信に失敗した定期フレーム）の識別情報を、再送情報として、再送キューにエンキューする（つまり、格納する）。その後、マイコン２１は、当該図７の処理を終了する。
【００９９】
一方、マイコン２１は、上記Ｓ３２５にて、定期送信キュー２８がフルになったと判定した場合には、前述の送信滞留状態（送信待ちの定期フレームが溜まってしまった状態）になったと判断して、Ｓ３６５に進む。
【０１００】
そして、マイコン２１は、Ｓ３６５では、通信回路２３からのアイドル検出信号ＩＤＬに基づきバスアイドル状態であることを確認した上で、前述の第２モード切替フレームを送信するための送信処理を実施する。その送信処理の内容は、Ｓ３５０での送信処理と同様である。このＳ３６５にて、スレーブ３へ第２モード切替フレームが送信されることにより、スレーブ３の動作モードがスレーブ側第１モードからスレーブ側第２モードに切り替わる。
【０１０１】
更に、マイコン２１は、次のＳ３７０にて、当該マスタ１の動作モードを、マスタ側第１モードからマスタ側第２モードに切り替える処理を行う。具体的には、マイコン２１は、フレーム送信処理として当該図７の処理を行うモードから、フレーム送信処理として図９の処理を行うモードへと、切り替えるための内部設定を行う。このため、マイコン２１は、以後は、一定時間毎に、当該図７の処理に代えて、図９の処理を実行することとなる。
【０１０２】
そして更に、マイコン２１は、次のＳ３７５にて、イベントヘッダの送信間隔を計測するためのイベントヘッダ送信タイマをスタートさせ、その後、当該図７の処理を終了する。尚、イベントヘッダ送信タイマは、図示しないタイマ処理によって一定の時間毎にカウントアップされるタイマである。そして、マイコン２１は、Ｓ３７５では、イベントヘッダ送信タイマの値を０にリセットすることで、そのイベントヘッダ送信タイマをスタートさせる。
【０１０３】
マスタ１では、マイコン２１が図７の処理を実行することにより、下記の機能が実現される。
・送信スケジュールで定められた何れかの定期フレームの送信タイミングが到来すると、送信タイミングが到来した定期フレームの識別情報が、フレーム情報として定期送信キュー２８に格納される（Ｓ３２０）。そして、定期送信キュー２８に格納されたフレーム情報のうち、最も古い（つまり、最も前に格納された）フレーム情報が示す定期フレームの送信が実施されると共に、送信が実施された定期フレームのフレーム情報は定期送信キュー２８から削除される（Ｓ３４５，Ｓ３５０）。このため、送信スケジュールに従って定期フレームの送信が実施される。
【０１０４】
・但し、定期フレームの送信を実施した際に、ヘッダの送信段階で調停負けした場合には（Ｓ３５５：ＹＥＳ）、その調停負けした定期フレームの識別情報が、再送情報として再送キューに格納される（Ｓ３６０）。そして、再送キュー内に再送情報が格納されると、定期送信キュー２８よりも再送キューの方が優先してデキューの対象となり、定期送信キュー２８内のフレーム情報が示す定期フレームよりも、再送キュー内の再送情報が示す定期フレームの方が、優先して送信対象とされる（Ｓ３３５：ＹＥＳ，Ｓ３４０，Ｓ３５０）。つまり、調停負けした定期フレームの再送信が、新規の定期フレームの送信よりも優先して実施される。このため、調停負けした定期フレームの再送信を試みている間に、次に送信すべき定期フレームの送信タイミングが到来すると、定期送信キュー２８にフレーム情報が蓄積されていく。
【０１０５】
・定期送信キュー２８に複数個のフレーム情報が蓄積されても、調停負けした定期フレームの再送信に成功して再送キュー内の再送情報が無くなれば、定期送信キュー２８内のフレーム情報が古いものから１つずつデキューされる（Ｓ３３５：ＮＯ，Ｓ３４５）。そして、そのデキューされたフレーム情報が示す定期フレーム（即ち、送信待ちとなっていた定期フレーム）の送信が実施される（Ｓ３５０）。
【０１０６】
・一方、定期フレームの再送信が調停負けによって繰り返されて、定期送信キュー２８内のフレーム情報がＮ個になった場合には（Ｓ３２５：ＹＥＳ）、マスタ１からスレーブ３へ第２モード切替フレームが送信される（Ｓ３６５）。すると、スレーブ３がスレーブ側第１モードからスレーブ側第２モードに遷移する。また、マスタ１もマスタ側第１モードからマスタ側第２モードに遷移する（Ｓ３７０）。更に、その場合には、イベントヘッダ送信タイマがスタートされる（Ｓ３７５）。
【０１０７】
《スレーブ側第１モードでのフレーム送信処理》
スレーブ３がスレーブ側第１モードの場合に、マイコン３１は、フレーム送信処理として、図８に示す「スレーブ側第１モードでのフレーム送信処理」を一定時間毎に実行する。
【０１０８】
図８に示すように、マイコン３１は、スレーブ側第１モードでのフレーム送信処理を開始すると、Ｓ４１０にて、送信要求があるか否かを判定する。このＳ４１０にて、送信要求があると判定される条件は、下記３つの条件の何れかである。
【０１０９】
・当該図８の処理を前回開始してから今回開始するまでの間に、新規のイベント（通信実施トリガとしてのイベント）が発生した、という条件。
・イベント送信キュー３８にフレーム情報が格納されている、という条件。
【０１１０】
尚、イベント送信キュー３８は、イベントが発生したものの、送信が未実施であるイベントフレームを示す情報（識別情報）が、フレーム情報として格納されるキューである。イベント送信キュー３８は、フレーム情報をＭ個（Ｍは２以上の整数）格納できるようになっている。また例えば、イベント送信キュー３８には、フレーム情報として、イベントフレームのヘッダを成すデータが格納される。
【０１１１】
・再送キューに再送情報が格納されている、という条件。
尚、再送キュー及び再送情報は、マスタ１のマイコン２１に関して説明した再送キュー及び再送情報と同様のものである。但し、スレーブ３のマイコン３１において、再送キューには、調停負けして送信が中止されたイベントフレームを示す情報（識別情報）が、再送情報として格納される。また、スレーブ３からのイベントフレームが調停負けする可能性がある相手は、他のスレーブ３が送信するイベントフレームか、マスタ１が送信する第２モード切替フレームである。
【０１１２】
マイコン３１は、Ｓ４１０にて、送信要求がないと判定した場合には、そのまま当該図８の処理を終了するが、Ｓ４１０にて、送信要求があると判定した場合には、Ｓ４１５に進む。
【０１１３】
マイコン３１は、Ｓ４１５では、当該図８の処理を前回開始してから今回開始するまでの間に、新規のイベントが発生したか否かを判定し、新規のイベントが発生した場合には、Ｓ４２０に進む。
【０１１４】
マイコン３１は、Ｓ４２０では、発生した新規のイベントに対応するイベントフレームの識別情報を、フレーム情報として、イベント送信キュー３８にエンキューする（つまり、イベント送信キュー３８に格納する）。その後、マイコン３１は、Ｓ４３０に進む。
【０１１５】
また、マイコン３１は、Ｓ４１５にて、新規のイベントが発生していないと判定した場合には、そのままＳ４３０に進む。
マイコン３１は、Ｓ４３０では、通信回路３３からのアイドル検出信号ＩＤＬに基づいて、バスアイドル状態であるか否かを判定し、バスアイドル状態でなければ、そのまま当該図８の処理を終了するが、バスアイドル状態であれば、Ｓ４３５に進む。
【０１１６】
マイコン３１は、Ｓ４３５では、再送キューに再送情報が入っているか否かを判定し、再送キューに再送情報が入っている場合には、Ｓ４４０に進む。
マイコン３１は、Ｓ４４０では、再送キューから再送情報をデキューする。つまり、再送キュー内の再送情報を読み出した後、その読み出した再送情報を再送キューから削除する。その後、マイコン３１は、Ｓ４５０に進む。
【０１１７】
また、マイコン３１は、上記Ｓ４３５にて、再送キューに再送情報が入っていないと判定した場合には、Ｓ４４５に進み、イベント送信キュー３８からフレーム情報をデキューする。つまり、イベント送信キュー３８内の最も古いフレーム情報を読み出した後、その読み出したフレーム情報をイベント送信キュー３８から削除する。その後、マイコン３１は、Ｓ４５０に進む。
【０１１８】
マイコン３１は、Ｓ４５０では、Ｓ４４０から当該Ｓ４５０に進んだ場合には、Ｓ４４０で再送キューから読み出した再送情報が示すイベントフレームを、送信対象のフレームとする。また、マイコン３１は、Ｓ４４５から当該Ｓ４５０に進んだ場合には、Ｓ４４５でイベント送信キュー３８から読み出したフレーム情報が示すイベントフレームを、送信対象のフレームとする。
【０１１９】
そして、マイコン３１は、Ｓ４５０では、送信対象のフレームを送信するための送信処理を実施する。その送信処理の内容は、マスタ１のマイコン２１が図７のＳ３５０で実施する送信処理と同様である。尚、Ｓ４５０の送信処理において、通信回路３３に供給するデータのうち、イベントフレームのデータ部分を成すデータとしては、そのイベントフレームに対応するイベントが発生した時点でのデータを用いる。
【０１２０】
マイコン３１は、次のＳ４５５にて、調停負けしたか否かを判定する。具体的には、通信回路３３から衝突検出信号ＣＤが出力されたか否かを判定する。そして、マイコン３１は、調停負けしていないと判定した場合には、そのまま当該図８の処理を終了するが、調停負けしたと判定した場合には、Ｓ４６０に進む。
【０１２１】
尚、図７のＳ３５０及びＳ３５５について説明したのと同様に、マイコン３１は、実際には、Ｓ４５０にて、ヘッダの送信を実施している途中で、通信回路３３から衝突検出信号ＣＤが出力されると、送信処理を中止して、Ｓ４５５に進み、そのＳ４５５にて、調停負けしたと判定する。また、マイコン３１は、Ｓ４５０にて、ヘッダの送信を実施している途中で、通信回路３３から衝突検出信号ＣＤが出力されなければ、フレームの送信を全て完了してから、Ｓ４５５に進み、そのＳ４５５にて、調停負けしていないと判定することとなる。
【０１２２】
マイコン３１は、Ｓ４６０では、今回送信対象としたイベントフレーム（即ち、調停負けによって送信に失敗したイベントフレーム）の識別情報を、再送情報として、再送キューにエンキューする（つまり、格納する）。その後、マイコン３１は、当該図８の処理を終了する。
【０１２３】
スレーブ３では、マイコン３１が図８の処理を実行することにより、下記の機能が実現される。
・予め定められたイベントが発生すると、発生したイベントに対応するイベントフレームの識別情報が、フレーム情報としてイベント送信キュー３８に格納される（Ｓ４２０）。そして、イベント送信キュー３８に格納されたフレーム情報のうち、最も古いフレーム情報が示すイベントフレームの送信が実施されると共に、送信が実施されたイベントフレームのフレーム情報はイベント送信キュー３８から削除される（Ｓ４４５，Ｓ４５０）。このため、イベントが発生する毎に、その発生したイベントに関連する情報をデータ部分に含むイベントフレームの送信が実施される。
【０１２４】
・但し、イベントフレームの送信を実施した際に、ヘッダの送信段階で調停負けした場合には（Ｓ４５５：ＹＥＳ）、その調停負けしたイベントフレームの識別情報が、再送情報として再送キューに格納される（Ｓ４６０）。そして、再送キュー内に再送情報が格納されると、イベント送信キュー３８よりも再送キューの方が優先してデキューの対象となり、イベント送信キュー３８内のフレーム情報が示すイベントフレームよりも、再送キュー内の再送情報が示すイベントフレームの方が、優先して送信対象とされる（Ｓ４３５：ＹＥＳ，Ｓ４４０，Ｓ４５０）。つまり、調停負けしたイベントフレームの再送信が、新規のイベントフレームの送信よりも優先して実施される。このため、調停負けしたイベントフレームの再送信を試みている間に、新たにイベントが発生すると、イベント送信キュー３８にフレーム情報が蓄積されていく。
・イベント送信キュー３８に複数個のフレーム情報が蓄積されても、調停負けしたイベントフレームの再送信に成功して再送キュー内の再送情報が無くなれば、イベント送信キュー３８内のフレーム情報が古いものから１つずつデキューされる（Ｓ４３５：ＮＯ，Ｓ４４５）。そして、そのデキューされたフレーム情報が示すイベントフレーム（即ち、送信待ちとなっていたイベントフレーム）の送信が実施される（Ｓ４５０）。
【０１２５】
《マスタ側第２モードでのフレーム送信処理》
マスタ１がマスタ側第２モードの場合に、マイコン２１は、図７の処理に代えて、図９に示す「マスタ側第２モードでのフレーム送信処理」を実行する。
【０１２６】
図９に示すように、マイコン２１は、マスタ側第２モードでのフレーム送信処理を開始すると、Ｓ５１０にて、イベントヘッダ送信タイマのスタート時から規定時間が経過したか否かを判定する。具体的には、イベントヘッダ送信タイマの値が規定値以上になったか否かを判定する。尚、イベントヘッダ送信タイマは、前述した図７のＳ３７５でスタートされるが、図９における後述のＳ５６０でもスタート（この場合は再スタート）される。
【０１２７】
マイコン２１は、Ｓ５１０にて、イベントヘッダ送信タイマのスタート時から規定時間が経過していないと判定した場合には、Ｓ５２０に進む。
マイコン２１は、Ｓ５２０では、図７のＳ３１０と同様に、送信要求があるか否かを判定する。但し、マスタ側第２モードの場合、マスタ１からの定期フレームが調停負けする可能性は無いため、Ｓ５１０にて、送信要求があると判定される条件は、下記２つの条件の何れかである。
【０１２８】
・当該図９の処理を前回開始してから今回開始するまでの間に、新規の定期送信要求が発生した、という条件。
・定期送信キュー２８にフレーム情報が格納されている、という条件。
【０１２９】
マイコン２１は、Ｓ５２０にて、送信要求がないと判定した場合には、そのままＳ５６５に進むが、Ｓ５２０にて、送信要求があると判定した場合には、Ｓ５２５に進む。
マイコン２１は、Ｓ５２５では、図７のＳ３１５と同様に、当該図９の処理を前回開始してから今回開始するまでの間に、新規の定期送信要求が発生したか否かを判定し、新規の定期送信要求が発生した場合には、Ｓ５３０に進む。
【０１３０】
マイコン２１は、Ｓ５３０では、図７のＳ３２０と同様に、発生した新規の定期送信要求に対応する定期フレーム（つまり、送信タイミングが到来した定期フレーム）の識別情報を、フレーム情報として、定期送信キュー２８にエンキューする（格納する）。その後、マイコン２１は、Ｓ５３５に進む。
【０１３１】
また、マイコン２１は、Ｓ５２５にて、新規の定期送信要求が発生していないと判定した場合には、そのままＳ５３５に進む。
一方、マイコン２１は、Ｓ５１０にて、イベントヘッダ送信タイマのスタート時から規定時間が経過したと判定した場合には、Ｓ５１５に進み、イベントヘッダの送信タイミングが到来したことを示すイベントヘッダ送信フラグをオンした後、Ｓ５３５に進む。
【０１３２】
マイコン２１は、Ｓ５３５では、図７のＳ３３０と同様に、バスアイドル状態であるか否かを判定し、バスアイドル状態でなければ、そのままＳ５６５に進むが、バスアイドル状態であれば、Ｓ５４０に進む。
【０１３３】
マイコン２１は、Ｓ５４０では、イベントヘッダ送信フラグがオンであるか否かを判定し、イベントヘッダ送信フラグがオンでなければ、Ｓ５４５進み、図７のＳ３４５と同様に、定期送信キュー２８からフレーム情報をデキューする。つまり、定期送信キュー２８内の最も古いフレーム情報を読み出した後、その読み出したフレーム情報を定期送信キュー２８から削除する。そして、マイコン２１は、次のＳ５５０にて、Ｓ５４５で定期送信キュー２８から読み出したフレーム情報が示す定期フレームを送信するための送信処理を実施する。その送信処理の内容は、図７のＳ３５０で実施する送信処理と同様である。その後、マイコン２１は、Ｓ５６５に進む。
【０１３４】
また、マイコン２１は、Ｓ５４０にて、イベントヘッダ送信フラグがオンであると判定した場合には、Ｓ５５５に進み、イベントヘッダの送信を実施する。具体的には、マイコン２１は、イベントヘッダを成すデータを、通信回路２３に送信データＴｘとして供給する。そして、マイコン２１は、次のＳ５６０にて、イベントヘッダ送信フラグをオフすると共に、イベントヘッダ送信タイマの値を０にリセットすることで、そのイベントヘッダ送信タイマを再スタートさせ、その後、Ｓ５６５に進む。
【０１３５】
マイコン２１は、Ｓ５６５では、定期送信キュー２８が空である（つまり、定期送信キュー２８に格納されているフレーム情報が０個である）か否かを判定する。
そして、マイコン２１は、定期送信キュー２８が空でなければ、そのまま当該図９の処理を終了するが、定期送信キュー２８が空であれば、送信滞留状態から正常状態（定期フレームをスケジュールの通りに送信することが可能な状態）に復帰したと判断して、Ｓ５７０に進む。
【０１３６】
マイコン２１は、Ｓ５７０では、通信回路２３からのアイドル検出信号ＩＤＬに基づきバスアイドル状態であることを確認した上で、前述の第１モード切替フレームを送信するための送信処理を実施する。その送信処理の内容は、図７のＳ３５０で実施する送信処理と同様である。このＳ５７０にて、スレーブ３へ第１モード切替フレームが送信されることにより、スレーブ３の動作モードがスレーブ側第２モードからスレーブ側第１モードに切り替わる。尚、第２モード切替フレームと同様に、第１モード切替フレームのバス調停における優先度も、イベントフレームより高く設定しておくことができる。また、第１モード切替フレームのバス調停における優先度が、イベントフレームより低く設定されていても、例えば、Ｓ５５５でイベントヘッダを送信してから所定時間が経過していることを確認した上でＳ５７０の処理を実施すれば、第１モード切替フレームとイベントフレームとが衝突する可能性を無くすことができる。
【０１３７】
更に、マイコン２１は、次のＳ５７５にて、当該マスタ１の動作モードを、マスタ側第２モードからマスタ側第１モードに切り替える処理を行う。具体的には、マイコン２１は、フレーム送信処理として当該図９の処理を行うモードから、フレーム送信処理として図７の処理を行うモードへと、切り替えるための内部設定を行う。その後、マイコン２１は、当該図９の処理を終了する。マイコン２１は、以後は、一定時間毎に、当該図９の処理に代えて、図７の処理を実行することとなる。
【０１３８】
マスタ１では、マイコン２１が図９の処理を実行することにより、下記の機能が実現される。
・定期送信キュー２８内の複数の各フレーム情報が古いものから１つずつデキューされて（Ｓ５４５）、その各フレーム情報が示す定期フレームの送信が順次実施される（Ｓ５５０）。このため、送信待ちとなっていた定期フレームが本来の送信順で送信される。また、送信待ちとなっていた定期フレームを順次送信している間に、新たな定期フレームの送信タイミングが到来した場合には、その新たな定期フレームの識別情報が最新のフレーム情報として定期送信キュー２８に格納される（Ｓ５２５：ＹＥＳ、Ｓ５３０）。このため、その新たな定期フレームの送信も実施される。
【０１３９】
よって、マスタ１がマスタ側第２モードの場合でも、送信スケジュールに従って定期フレームの送信が実施される。
・定期フレームが送信される合間に、スレーブ３に対するイベントヘッダが送信される（Ｓ５４０：ＹＥＳ、Ｓ５５５）。この例では、マスタ１がマスタ側第２モードになってから、Ｓ５１０で判定される一定の規定時間毎に、イベントヘッダが送信される。
【０１４０】
・定期送信キュー２８内のフレーム情報が０個になると（Ｓ５６５：ＹＥＳ）、マスタ１からスレーブ３へ第１モード切替フレームが送信される（Ｓ５７０）。すると、スレーブ３がスレーブ側第２モードからスレーブ側第１モードに遷移する。更に、マスタ１もマスタ側第２モードからマスタ側第１モードに遷移する（Ｓ５７５）。
【０１４１】
《スレーブ側第２モードでのフレーム送信処理》
スレーブ３がスレーブ側第２モードの場合に、マイコン３１は、フレーム送信処理として、図１０に示す「スレーブ側第２モードでのフレーム送信処理」を一定時間毎に実行する。尚、図１０において、図８と同じ処理のステップについては、同じステップ番号を付しているため、説明を省略する。
【０１４２】
図１０に示すように、スレーブ側第２モードでのフレーム送信処理は、図８の処理と比較すると、Ｓ４２０とＳ４３０との間にＳ４２５が追加されている。
マイコン３１は、Ｓ４２０の処理を行った後、あるいは、Ｓ４１５にて、新規のイベントが発生していないと判定した場合には、Ｓ４２５に進み、マスタ１からのイベントヘッダを受信したか否かを判定する。そして、マイコン３１は、イベントヘッダを受信したと判定した場合には、Ｓ４３０に進み、バスアイドル状態であることを確認した上でイベントフレームの送信を実施するが（Ｓ４５０）、イベントヘッダを受信していないと判定した場合には、そのまま当該図１０の処理を終了する。
【０１４３】
尚、スレーブ３では、イベントヘッダを受信すると、マイコン３１において、イベントヘッダの受信履歴がセットされる。そして、マイコン３１は、Ｓ４２５では、その受信履歴がセットされているか否かにより、イベントヘッダの受信有無を判定する。また、イベントヘッダの受信履歴は、イベント送信キュー３８に格納されている１つのフレーム情報が示すイベントフレームの送信が完了するか、またはイベント送信キューと再送キューが共に空の場合、消去される。
【０１４４】
スレーブ３では、スレーブ側第２モードの場合に、マイコン３１が図１０の処理を実行することにより、イベントフレームの送信実施がマスタ１からのイベントヘッダによって許可されることとなる。
【０１４５】
＜実施形態の効果＞
マスタ１のマイコン２１が図７又は図９の処理を実行し、スレーブ３のマイコン３１が図８又は図１０の処理を実行することで、図５を用いて説明した通信システム１１の動作が実現される。
【０１４６】
このため、マスタ１は、送信停滞状態になった場合には、通信システム１１を第１モードから第２モードに切り替えて、滞留していた送信待ちの定期フレームを送信することができ、定期フレームをスケジュール通りに送信できる状態へと復帰することができる。また、第２モードにおいて、スレーブ３からのイベントフレームの送信は、マスタ１によって頻度が抑制されるだけであるため、イベントフレームが送信されることによる機能（この例では、マスタ１が制御する機器の動作）も確保される、このため、スレーブ３のイベント送信を実現しつつ、マスタ１による定期フレームの送信が滞ってしまうことを防止することができる。
【０１４７】
また、通信システム１１が第２モードの場合に、マスタ１は、定期フレームをスケジュール通りに送信できる状態に復帰したと判定すると、通信システム１１を第１モードに戻す。このため、イベントフレームの送信応答性が高い状態に復帰することができる。
【０１４８】
また、マスタ１からスレーブ３への第２モード切替フレームは、スレーブ３からのイベントフレームよりもバス調停における優先度が高く設定されているフレームである。このため、全てのスレーブ３に対してスレーブ側第２モードへの切り替えを確実に通知することができる。
【０１４９】
また、マスタ１のマイコン２１は、マスタ側第１モードでのフレーム送信処理（図７）では、定期送信キュー２８に格納されたフレーム情報の数が、定期送信キュー２８に格納可能な最大数であるＮ個になった場合に（Ｓ３２５：ＹＥＳ）、送信滞留状態になったと判定する。このため、通信システム１１のモードを第１モードから第２モードに切り替えるべきタイミングを適切に判断することができる。尚、例えば、上記Ｎが３以上であれば、マイコン２１は、図７のＳ３２５では、定期送信キュー２８内のフレーム情報の数が、Ｎよりも小さい２以上の所定数になったか否かを判定し、肯定判定した場合に、送信滞留状態になったと判断するようになっていても良い。
【０１５０】
また、マスタ１のマイコン２１は、マスタ側第２モードでのフレーム送信処理（図９）では、定期送信キュー２８が空になった場合に（Ｓ５６５：ＹＥＳ）、定期フレームをスケジュールの通りに送信することが可能な状態に復帰したと判定する。このため、通信システム１１のモードを第２モードから第１モードに戻すべきタイミングを適切に判断することができる。
【０１５１】
［第２実施形態］
第２実施形態の通信システムについて説明するが、通信システムの符号としては、第１実施形態と同じ“１１”を用いる。また、第１実施形態と同様の構成要素や処理についても、第１実施形態と同じ符号を用いる。そして、このことは、後述する他の実施形態についても同様である。
【０１５２】
第２実施形態の通信システム１１は、第１実施形態と比較すると、マスタ１のマイコン２１が、マスタ側第１モードでのフレーム送信処理として、図７の処理に代えて、図１１の処理を実行する。図１１の処理は、図７の処理と比較すると、Ｓ３２５の代わりにＳ３２７が設けられており、更に、Ｓ３８０，Ｓ３８５，Ｓ３８７が追加されている。
【０１５３】
図１１に示すように、マイコン２１は、この図１１の処理を終了する前に、Ｓ３８０に進む。
マイコン２１は、Ｓ３８０では、定期送信キュー２８にフレーム情報が格納されているか否かを判定し、定期送信キュー２８にフレーム情報が格納されていなければ、Ｓ３８５に進んで、定期送信キュータイマをクリアした後、当該図１１の処理を終了する。定期送信キュータイマは、定期送信キュー２８にフレーム情報が格納されている継続時間を計測するためのカウンタである。
【０１５４】
また、マイコン２１は、Ｓ３８０にて、定期送信キュー２８にフレーム情報が格納されていると判定した場合には、Ｓ３８７に進んで、定期送信キュータイマのカウントアップ（この例では＋１するインクリメント）を行い、その後、当該図１１の処理を終了する。
【０１５５】
よって、定期送信キュー２８にフレーム情報が格納されていれば、当該図１１が実行される一定時間毎に、定期送信キュータイマの値が１ずつ増加していく。
そして、マイコン２１は、図１１の処理では、Ｓ３１５にて、新規の定期送信要求が発生していないと判定した場合、あるいは、Ｓ３２０にて、定期送信キュー２８にフレーム情報をエンキューした後、Ｓ３２７に進む。
【０１５６】
マイコン２１は、Ｓ３２７では、定期送信キュータイマの値が規定値以上になったか否かを判定する。そして、マイコン２１は、定期送信キュータイマの値が規定値以上ではないと判定した場合には、Ｓ３３０に進むが、定期送信キュータイマの値が規定値以上であると判定した場合には、送信滞留状態になったと判断してＳ３６５に進む。
【０１５７】
つまり、マイコン２１は、定期送信キュー２８にフレーム情報が格納されている継続時間を計測し（Ｓ３８０〜Ｓ３８７）、その継続時間の計測値に相当する定期送信キュータイマの値が規定時間以上になった場合に、送信滞留状態になったと判定して、通信システム１１の第２モードへの切り替えを実施する。そして、このような第２実施形態によっても、通信システム１１のモードを第１モードから第２モードに切り替えるべきタイミングを適切に判断することができる。
【０１５８】
［第３実施形態］
第３実施形態の通信システム１１は、第１実施形態と比較すると、マスタ１のマイコン２１が、マスタ側第１モードでのフレーム送信処理として、図７の処理に代えて、図１２の処理を実行する。図１２の処理は、図７の処理と比較すると、Ｓ３２５の代わりにＳ３２８が設けられており、更に、Ｓ３９０，Ｓ３９５，Ｓ３９７が追加されている。
【０１５９】
図１２に示すように、マイコン２１は、この図１２の処理を終了する前に、Ｓ３９０に進む。
マイコン２１は、Ｓ３９０では、送信スケジュールで定められた１スケジュール分の定期フレームの送信が完了したか否かを判定する。具体的には、マイコン２１は、Ｓ３５０の送信処理が今回実施され、且つ、その今回の送信処理により送信スケジュールにおける最後の定期フレーム（図３におけるＮｏ２３のフレーム〈５〉）の送信が完了したか否かを判定する。
【０１６０】
そして、マイコン２１は、Ｓ３９０にて、１スケジュール分の定期フレームの送信が完了していないと判定した場合には、Ｓ３９７に進んで、スケジュール計測タイマのカウントアップ（この例では＋１するインクリメント）を行い、その後、当該図１２の処理を終了する。尚、スケジュール計測タイマは、送信スケジュールで定められた１スケジュール分の定期フレームの送信が完了するのに要する時間（以下、１スケジュール分の送信所要時間という）を計測するためのカウンタである。そして、スケジュール計測タイマは、マイコン２１が起動してから、送信スケジュールにおける最初の定期フレームの送信タイミングが最初に到来したとき（つまり、送信スケジュールの１回目の開始時）にクリアされる。
【０１６１】
また、マイコン２１は、Ｓ３９０にて、１スケジュール分の定期フレームの送信が完了したと判定した場合には、Ｓ３９５に進んで、スケジュール計測タイマをクリアした後、当該図１２の処理を終了する。尚、マイコン２１は、Ｓ３９５において、次のスケジュールにおける最初の定期フレームの送信タイミングが既に到来していた場合には、その到来していた最初の定期フレームの送信タイミングから現在までの経過時間に相当する分の値を、スケジュール計測タイマにプリセットしても良い。
【０１６２】
そして、マイコン２１は、図１２の処理では、Ｓ３１５にて、新規の定期送信要求が発生していないと判定した場合、あるいは、Ｓ３２０にて、定期送信キュー２８にフレーム情報をエンキューした後、Ｓ３２８に進む。
【０１６３】
マイコン２１は、Ｓ３２８では、スケジュール計測タイマの値が規定値以上になったか否かを判定する。そして、マイコン２１は、スケジュール計測タイマの値が規定値以上ではないと判定した場合には、Ｓ３３０に進むが、スケジュール計測タイマの値が規定値以上であると判定した場合には、送信滞留状態になったと判断してＳ３６５に進む。尚、Ｓ３２８での判定に用いる規定値は、送信スケジュールの１スケジュール時間（即ち、図２における「スケジュール開始」から「スケジュール終了」までの時間）よりも長い時間に相当する値に設定されている。
【０１６４】
つまり、マイコン２１は、１スケジュール分の送信所要時間を計測し（Ｓ３９０〜Ｓ３９７）、その１スケジュール分の送信所要時間の計測値に相当するスケジュール計測タイマの値が規定値以上になった場合に、送信滞留状態になったと判定して、通信システム１１の第２モードへの切り替えを実施する。調停負けによって送信待ちの定期フレームが複数滞留すると、１スケジュール分の送信所要時間が長くなるからである。そして、このような第３実施形態によっても、通信システム１１のモードを第１モードから第２モードに切り替えるべきタイミングを適切に判断することができる。
【０１６５】
［第４実施形態］
第４実施形態の通信システム１１は、第１〜第３実施形態と比較すると、マスタ１のマイコン２１が、マスタ側第２モードでのフレーム送信処理として、図９の処理に代えて、図１３の処理を実行する。図１３の処理は、図９の処理と比較すると、Ｓ５６６，Ｓ５６７が追加されている。
【０１６６】
図１３に示すように、マイコン２１は、Ｓ５６５にて、定期送信キュー２８が空であると判定した場合には、Ｓ５６６に進み、バスアイドル状態であることを確認した上で、Ｓ５５５と同様にイベントヘッダの送信を実施する。
【０１６７】
そして、マイコン２１は、次のＳ５６７にて、スレーブ３からのイベントフレームを所定時間以内に受信したか否かを判定し、イベントフレームを受信した場合には、そのまま当該図１３の処理を終了する。また、マイコン２１は、Ｓ５６７にて、スレーブ３からのイベントフレームを受信しないと判定した場合には、送信滞留状態から正常状態に復帰したと判断して、Ｓ５７０に進む。
【０１６８】
つまり、マイコン２１は、定期送信キュー２８が空になった場合に（Ｓ５６５：ＹＥＳ）、イベントヘッダの送信を実施して（Ｓ５６６）、スレーブ３がイベントフレームを送信しないことを確認したならば（Ｓ５６７：ＮＯ）、正常状態に復帰したと判定して、通信システム１１の第１モードへの切り替えを実施するようになっている。
【０１６９】
このような第４実施形態によれば、スレーブ３においてイベントが発生しておらず送信すべきイベントフレームがないことを確認した上で、通信システム１１を第１モードに戻すことができる。つまり、ある程度の時間は定期送信を正常に実施し続けることができると予想される状況であることを確認した上で、通信システム１１を第１モードに戻すことができる。
【０１７０】
［第５実施形態］
第５実施形態の通信システム１１は、第１〜第３実施形態と比較すると、スレーブ３のマイコン３１が、スレーブ側第２モードでのフレーム送信処理として、図１０の処理に代えて、図１４の処理を実行する。更に、マスタ１のマイコン２１が、マスタ側第２モードでのフレーム送信処理として、図９の処理に代えて、図１５の処理を実行する。
【０１７１】
まず、図１４の処理は、図１０の処理と比較すると、Ｓ４３１，Ｓ４３２が追加されている。
図１４に示すように、スレーブ３のマイコン３１は、Ｓ４３０にて、バスアイドル状態であると判定した場合には、Ｓ４３１に進み、イベント送信キュー３８がフルになったか否か（つまり、イベント送信キュー３８に格納されたフレーム情報の数が、最大数のＭ個になったか否か）を判定する。マイコン３１は、イベント送信キュー３８がフルになっていないと判定した場合には、既述したＳ４３５に進むが、イベント送信キュー３８がフルになったと判定した場合には、Ｓ４３２に進む。
【０１７２】
そして、マイコン３１は、Ｓ４３２では、イベント送信キュー３８内のフレーム情報の数が所定数（この例ではＭ個）になったことを示すフレームであるキュー通知を、マスタ１へ送信するための送信処理を実施し、その後、当該図１４の処理を終了する。尚、キュー通知のバス調停における優先度は、マスタ１からの定期フレームよりも高く設定しておくことができる。また、キュー通知のバス調停における優先度が、マスタ１からの定期フレームよりも低く設定されていても、マスタ１から定期フレームが送信されていないバスアイドル状態のときに、Ｓ４３２の処理が実行されれば、マスタ１にキュー通知が伝達されることとなる。
【０１７３】
一方、図１５の処理は、図９の処理と比較すると、Ｓ５６３が追加されている。
図１５に示すように、マスタ１のマイコン２１は、Ｓ５２０又はＳ５３５で「ＮＯ」と判定した場合、あるいは、Ｓ５５０又はＳ５６０の処理を実行した後に、Ｓ５６５ではなく、Ｓ５６３に進む。
【０１７４】
そして、マイコン２１は、Ｓ５６３にて、スレーブ３からのキュー通知を受信したか否かを判定し、キュー通知を受信していないと判定した場合には、当該図１５の処理を終了するが、キュー通知を受信したと判定したと判定した場合には、Ｓ５６５に進む。
【０１７５】
つまり、マイコン２１は、スレーブ３からのキュー通知を受信し、且つ、定期送信キュー２８が空になった場合に、送信滞留状態から正常状態に復帰したと判定して、通信システム１１の第１モードへの切り替えを実施するようになっている。
【０１７６】
このような第５実施形態によれば、第２モードから第１モードへの復帰を、スレーブ３において送信待ちのイベントフレームが所定数滞留するまで遅らせて、定期送信の正常化を最優先させることができる。
【０１７７】
尚、例えば、上記Ｍ（イベント送信キュー３８に格納可能なフレーム情報の最大数）が３以上であれば、スレーブ３のマイコン３１は、図１４のＳ４３１では、イベント送信キュー３８内のフレーム情報の数が、Ｍよりも小さい２以上の所定数になったか否かを判定し、肯定判定した場合にＳ４３２へ進むようになっていても良い。
【０１７８】
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。また、前述の数値も一例であり他の値でも良い。例えば、本発明は、車載用の通信システム以外についても適用することができる。
【０１７９】
また、上記実施形態における１つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を１つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言によって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。また、上述したマスタ１又はスレーブ３としてコンピュータを機能させるためのプログラム、このプログラムを記録した媒体、通信システムのモード切替方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【０１８０】
１…マスタノード（マスタ）、３…スレーブノード（スレーブ）、５…バス、１１…通信システム、２１，３１…マイコン
【図１】
2016082296.tif 000003
【図２】
2016082296.tif 000004
【図３】
2016082296.tif 000005
【図４】
2016082296.tif 000006
【図５】
2016082296.tif 000007
【図６】
2016082296.tif 000008
【図７】
2016082296.tif 000009
【図８】
2016082296.tif 000010
【図９】
2016082296.tif 000011
【図１０】
2016082296.tif 000012
【図１１】
2016082296.tif 000013
【図１２】
2016082296.tif 000014
【図１３】
2016082296.tif 000015
【図１４】
2016082296.tif 000016
【図１５】
2016082296.tif 000017