(57)【要約】【課題】データフレームの使用効率を向上させること。【解決手段】第１の通信ノードと、第２の通信ノードとを有する通信システムは、第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせたメッセージIDをデータフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から所定のビット数の部分に前記メッセージID以外のデータを付帯するデータフレーム作成部と、該データフレームを送信する送信部とを有する第１の通信ノードと、第１の通信ノードからのデータフレームを受信する受信部と、該データフレームのIDフィールドからメッセージID以外のデータを取得するとともに、所定のビット数シフトさせたメッセージIDを上位から下位へ所定のビット数シフトさせることによりメッセージIDを取得するデータフレーム取得部とを有する第２の通信ノードとを有する。【選択図】図５
2014204287.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信する受信部と、
前記受信部により受信したデータフレームのIDフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得するデータフレーム取得部と
を有する、通信システム。
【請求項２】
前記第１の通信ノードは、
前記データフレームのデータフィールドに付帯されるデータに基づいて誤り検出値を演算する誤り検出値演算部
を有し、
前記データフレーム作成部は、前記IDフィールドの下位から前記所定のビット数の部分に前記誤り検出値を付帯する、請求項１に記載の通信システム。
【請求項３】
前記データフレーム取得部は、前記受信部により受信したデータフレームのIDフィールドから前記誤り検出値を取得し、
第２の通信ノードは、
前記データフレーム取得部により取得した誤り検出値に基づいて、前記データフレームのデータフィールドに付帯されるデータの誤り検出を行う誤り検出部
を有する、請求項２に記載の通信システム。
【請求項４】
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分と、前記データフレームのDLCフィールドの一部に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信する受信部と、
前記受信部により受信したデータフレームのIDフィールドとDLCフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得するデータフレーム取得部と
を有する、通信システム。
【請求項５】
前記第１の通信ノードは、
前記データフレームのデータフィールドに付帯されるデータに基づいて誤り検出値を演算する誤り検出値演算部
を有し、
前記データフレーム作成部は、前記IDフィールドの下位から前記所定のビット数の部分と前記DLCフィールドの一部に前記誤り検出値を付帯する、請求項４に記載の通信システム。
【請求項６】
前記データフレーム取得部は、前記受信部により受信したデータフレームのIDフィールドとDLCフィールドから前記誤り検出値を取得し、
第２の通信ノードは、
前記データフレーム取得部により取得した誤り検出値に基づいて、前記データフレームのデータフィールドに付帯されるデータの誤り検出を行う誤り検出部
を有する、請求項５に記載の通信システム。
【請求項７】
複数の通信ノードを有する通信システムにおける１の通信ノードであって、
他の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有する、通信ノード。
【請求項８】
複数の通信ノードを有する通信システムにおける１の通信ノードであって、
他の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分と、前記データフレームのDLCフィールドの一部に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有する、通信ノード。
【請求項９】
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、
該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分に前記メッセージID以外のデータを付帯し、
該データフレームを送信し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信し、
該データフレームのIDフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得する、通信方法。
【請求項１０】
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、
該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分と、前記データフレームのDLCフィールドの一部に前記メッセージID以外のデータを付帯し、
該データフレームを送信し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信し、
該データフレームのIDフィールドとDLCフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得する、通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムに関する。
【背景技術】
【０００２】
車両には、該車両内の様々な制御を行うために車載ネットワークが構成されることが多い。車載ネットワークは、LANに、多くの電子制御ユニット(ECU: Electronic Control Unit)、センサ、アクチュエータ等が接続されることにより実現される。以下、車載ネットワークに接続される、電子制御ユニット、センサ、アクチュエータなどを通信ノードと呼ぶ。該通信ノードは、車両内の様々な位置に設置される。通信ノード間は、通信線や電線により接続される。
【０００３】
例えば、データバスに、複数の通信ノードが接続されることにより、車載ネットワークが構成される。該車載ネットワークは、CAN(Controller Area Network)、LIN(Local Interconnect Network)であることもある。また、該車載ネットワークには、FlexRay（登録商標）に従って通信を行うものがある。
【０００４】
CANでは、データフレームと呼ばれる転送フォーマットに従って、メッセージの送信を行う。CANでは、該データフレームに従って、メッセージの数やデータサイズが設定される。例えば、データフレームには、IDが付加（付帯）されるフィールドが存在し、そのIDが付加されるフィールドは11ビットである。従って、11ビットで表されるIDにより、最大2048種類のメッセージを識別できる。
【０００５】
CANに関して、CANメッセージバッファを少なくとも一つ備えるCANメッセージバッファ部と、CANメッセージバッファアクセス管理部とを具備するマイクロコンピュータが知られている。CANメッセージバッファは、CAN標準IDを記憶する第一の記憶領域と、CAN拡張IDを記憶する第二の記憶領域と、CAN送受信データを記憶する第三の記憶領域とを有する。CANメッセージバッファアクセス管理部は、CAN拡張ＩＤとは異なる目的外データを受け取り、その目的外データを、CANメッセージバッファにおける第二の記憶領域に書き込む（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2009-282612号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
CANのデータフレームの転送フォーマットによれば、IDが付加されるフィールドは11ビットであり、最大2048種類のメッセージを識別することができる。しかし、数メッセージしか通信しない車載ネットワークが存在することもある。数メッセージしか通信しない車載ネットワークでは、11ビットのうちのほとんどのビットが未使用であることが想定される。IDが付加されるフィールドに未使用の部分があることは、データフレームの使用効率の観点からは好ましくない。
【０００８】
本発明は、データフレームの使用効率を向上させることを目的とする。
【課題を解決するための手段】
【０００９】
開示の一実施例の通信システムは、
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信する受信部と、
前記受信部により受信したデータフレームのIDフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得するデータフレーム取得部と
を有する。
【００１０】
開示の一実施例の通信システムは、
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分と、前記データフレームのDLCフィールドの一部に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信する受信部と、
前記受信部により受信したデータフレームのIDフィールドとDLCフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得するデータフレーム取得部と
を有する。
【００１１】
開示の一実施例の通信ノードは、
複数の通信ノードを有する通信システムにおける１の通信ノードであって、
他の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有する。
【００１２】
開示の一実施例の通信ノードは、
複数の通信ノードを有する通信システムにおける１の通信ノードであって、
他の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分と、前記データフレームのDLCフィールドの一部に前記メッセージID以外のデータを付帯するデータフレーム作成部と、
該データフレーム作成部により作成したデータフレームを送信する送信部と
を有する。
【００１３】
開示の一実施例の通信方法は、
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、
該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分に前記メッセージID以外のデータを付帯し、
該データフレームを送信し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信し、
該データフレームのIDフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得する。
【００１４】
開示の一実施例の通信方法は、
第１の通信ノードと、該第１の通信ノードと通信を行う第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記第２の通信ノードへ送信するデータフレームのメッセージIDを下位から上位へ所定のビット数シフトさせ、
該所定のビット数シフトさせた前記メッセージIDを前記データフレームのIDフィールドに付帯するとともに、該IDフィールドの下位から前記所定のビット数の部分と、前記データフレームのDLCフィールドの一部に前記メッセージID以外のデータを付帯し、
該データフレームを送信し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信し、
該データフレームのIDフィールドとDLCフィールドから前記メッセージID以外のデータを取得するとともに、前記所定のビット数シフトさせた前記メッセージIDを上位から下位へ前記所定のビット数シフトさせることにより前記メッセージIDを取得する。
【発明の効果】
【００１５】
開示の実施例によれば、データフレームの使用効率を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】通信システムの一実施例を示す図である。
【図２】データフレームの一例を示す図である。
【図３】IDフィールドに付加する補完データの一実施例を示す図である。
【図４】第１の通信ノードの一実施例を示す図である。
【図５】第１の通信ノードの一実施例を示す機能ブロック図である。
【図６】第１の通信ノードの動作の一実施例を示すフローチャートである。
【図７】第１の通信ノードの動作の一実施例を示すフローチャートである。
【図８】DLCフィールドに付加する情報の一例を示す図である。
【図９】IDフィールドとDLCフィールドに付加する情報の一実施例を示す図である。
【図１０】第１の通信ノードの一実施例を示す機能ブロック図である。
【図１１】第１の通信ノードの動作の一実施例を示すフローチャートである。
【図１２】第１の通信ノードの動作の一実施例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。以下で説明する実施例は一例に過ぎず、本発明が適用される実施の形態は、以下の実施例に限られない。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００１８】
＜第１の実施例＞
＜通信システム＞
図１は、通信システムの一実施例を示す。
【００１９】
通信システムは、１又は複数の通信ノードを有する。図１に示される例では、通信システムは、第１の通信ノード１００と、第２の通信ノード２００とを有する。図１には、一例として２個の通信ノードが示されているが、２個に限られない。通信システムが、３個以上の通信ノードで構成されてもよい。
【００２０】
第１の通信ノード１００、第２の通信ノード２００は、通信バス５０を介して有線接続される。
【００２１】
第１の通信ノード１００、第２の通信ノード２００などの通信ノードは、電子制御ユニット等により実現されてもよい。また、第１の通信ノード１００、第２の通信ノード２００などの通信ノードは、センサ、アクチュエータ等であってもよい。例えば、いずれかの通信ノードにエアコンの制御機能が搭載され、他の通信ノードに温度センサ等が搭載されてもよい。
【００２２】
また、第１の通信ノード１００、第２の通信ノード２００などの通信ノードに複数のシステムが内蔵されてもよい。例えば、通信ノードが、他の通信ノードとの間で通信を行うようにしてもよい。また、通信ノードが、システムの制御を実行してもよい。
【００２３】
第１の通信ノード１００、第２の通信ノード２００は、例えば車両等の移動体に搭載される。通信システムの一実施例は、車両に搭載される。通信システムの一実施例は、CAN(Controller Area Network)、LIN(Local Interconnect Network)などのLANが適用される。通信システムの一実施例が、情報系LAN、パワートレイン系LAN、ボディ系LANなどに適用されてもよい。通信システムの一実施例は、FlexRay（登録商標）に従って通信を行うようにしてもよい。以下では、一例として、CANが適用される場合について説明する。
【００２４】
通信システムの一実施例では、各通信ノードは、データフレームを送受信する。各通信ノードは、データフレームを送受信することによりメッセージをやり取りする。メッセージの数やデータサイズは、データフレームの転送フォーマットに従う。
【００２５】
通信システムの一実施例では、通信バス５０が空いているときは、各通信ノードがメッセージの送信を開始することができる。通信バス５０に対して最初に送信を開始した通信ノードが送信を継続する。同時に複数の通信ノードが送信を開始した場合には、優先順位の高いIDのメッセージを送信している通信ノードが送信を継続する。第１の通信ノード１００が、第２の通信ノード２００宛にメッセージを送信する場合について説明する。
【００２６】
第１の通信ノード１００は、メッセージを作成し、送信する。第２の通信ノード２００は、第１の通信ノード１００からのメッセージを受信することにより、所定の処理を実行する。
【００２７】
図２は、メッセージを送信するデータフレームの一実施例を示す。このデータフレームは、通信ノードに格納されたアプリケーションなどのソフトウェアに従ってマイコンが動作することにより作成されるのが好ましい。このデータフレームは、標準フォーマットの形式に従ったものであるのが好ましい。
【００２８】
データフレームは、スタートオブフレーム(SOF: Start Of Frame)フィールドを有する。スタートオブフレームは、メッセージの開始を示す。スタートオブフレームは、ドミナント(論理「0」)状態で示されるのが好ましい。
【００２９】
データフレームは、IDフィールドを有する。IDは、メッセージを識別し、メッセージの優先順位を示す。
【００３０】
データフレームは、リモートトランスミッションリクエスト(RTR: Remote Transmission Request) フィールドを有する。リモートトランスミッションリクエストは、リモートフレームとデータフレームとを区別するのに使用される。リモートトランスミッションリクエストは、3ビットで表されるのが好ましい。リモートトランスミッションリクエストがドミナント(論理「0」)状態で示される場合にはデータフレームを示す。リモートトランスミッションリクエストがリセッシブ(論理「1」)状態で示される場合にはリモートフレームを示す。
【００３１】
データフレームは、データ長コード(DLC: Data Length Code) フィールドを有する。データ長コードは、データフィールドのバイト数を示す。データ長コードは、4ビットで表されるのが好ましい。
【００３２】
データフレームは、Dataフィールドを有する。Dataは、0〜64ビットのデータである。Dataフィールドに、メッセージが付与（付帯）されるのが好ましい。
【００３３】
データフレームは、CRCシーケンスを有する。CRCシーケンスは、巡回冗長検査を示す。CRCには、15ビットの巡回冗長検査コードとリセッシブデリミタビットである。CRCシーケンスは、エラー検出に使用される。
【００３４】
データフレームは、ACK（アクノレッジ）スロットを有する。ACK（アクノレッジ）スロットは、メッセージを正しく受信した場合に、メッセージの最後に送信する。送信側のノードはバス上でACKビットの有無をチェックし、ACKが検出されなかった場合は再度送信を試みるのが好ましい。
【００３５】
データフレームは、エンドオブフレーム(EOF: End of Frame) フィールドを有する。エンドオブフレームは、データフレームやリモートフレームの終了位置を示す。エンドオブフレームは、7ビットで構成され、ビットレベルは全て"リセッシブ"である。
【００３６】
通信システムの一実施例では、IDフィールドにメッセージIDと補完データが付与される。補完データは、データの誤りを検出するためのデータであるのが好ましい。また、補完データは、データの誤りを検出し訂正するためのデータであってもよい。通信システムの一実施例では、補完データとして、データの誤りを検出するためのデータ（以下、「誤り検出値」という）である場合について説明する。補完データは、1ビット以上であり且つIDフィールドのビット数からIDに使用されるビット数を減算したビット数以下であるのが好ましい。IDフィールドのビット数は、例えば11ビットである。
【００３７】
図３は、IDフィールドに付加する補完データの一実施例を示す。具体的には、通信システムで送受信されるメッセージ数の最大値と補完データに使用できる最大ビット数を示す。図３に示される例では、IDに使用される最小ビット数と補完データに使用できる最大ビット数との合計が11ビットである。
【００３８】
通信ネットワークで送受信されるメッセージ数の最大値が2個であり、且つIDに1ビットが使用される場合、補完データには10ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が4個であり、且つIDに2ビットが使用される場合、補完データには9ビット使用できる。
【００３９】
通信ネットワークで送受信されるメッセージ数の最大値が8個であり、且つIDに3ビットが使用される場合、補完データには8ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が16個であり、且つIDに4ビットが使用される場合、補完データには7ビット使用できる。
【００４０】
通信ネットワークで送受信されるメッセージ数の最大値が32個であり、且つIDに5ビットが使用される場合、補完データには6ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が64個であり、且つIDに6ビットが使用される場合、補完データには5ビット使用できる。
【００４１】
通信ネットワークで送受信されるメッセージ数の最大値が128個であり、且つIDに7ビットが使用される場合、補完データには4ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が256個であり、且つIDに8ビットが使用される場合、補完データには3ビット使用できる。
【００４２】
通信ネットワークで送受信されるメッセージ数の最大値が512個であり、且つIDに9ビットが使用される場合、補完データには2ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が1024個であり、且つIDに10ビットが使用される場合、補完データには1ビット使用できる。
【００４３】
通信システムの一実施例では、図３に従って、メッセージ数の最大値に応じて、IDに使用するビット数と、補完データに使用するビット数とが設定されるのが好ましい。ただし、図３に示されるのは一例であり、適宜設定可能である。例えば、メッセージ数の最大値が2個であっても、IDに2ビットを使用するようにしてもよい。この場合、補完データには最大9ビット使用できる。
【００４４】
＜第１の通信ノード１００＞
図４は、第１の通信ノード１００の一実施例を示す。図４には、主に、第１の通信ノード１００のハードウェア構成が示される。第２の通信ノード２００のハードウェア構成も、第１の通信ノード１００のハードウェア構成と略同一である。
【００４５】
第１の通信ノード１００は、マイクロコントローラユニット(MCU: Micro-Control Unit)１０２と、トランシーバ１０６とを有する。
【００４６】
マイクロコントローラユニット１０２には、１又は複数のマイコンが含まれる。マイコンの代わりにＣＰＵが含まれてもよいし、マイコンとＣＰＵとが混在していてもよい。さらに、マイクロコントローラユニット１０２には、通信装置１０４が含まれる。通信装置１０４はトランシーバ１０６との間で、シリアル通信を行う。具体的には、該通信装置１０４は、ＵＡＲＴ(Universal Asynchronous Receiver Transmitter)であってもよい。
【００４７】
トランシーバ１０６は、マイクロコントローラユニット１０２、通信バス５０と接続される。トランシーバ１０６は、マイクロコントローラユニット１０２から入力されたデータを通信バス５０に送信し、通信バス５０からのデータをマイクロコントローラユニット１０２に入力する。
【００４８】
第１の通信ノード１００が複数のマイクロコントローラユニットを有するようにしてもよい。また、第１の通信ノード１００が複数のトランシーバを有するようにしてもよい。
【００４９】
＜第１の通信ノード１００の機能＞
図５は、第１の通信ノード１００の機能の一実施例を示す。第２の通信ノード２００の機能も、第１の通信ノード１００の機能と略同一である。
【００５０】
図５の機能ブロック図により表される機能は、主に、マイクロコントローラユニット１０２により実行される。つまり、マイクロコントローラユニット１０２は、メッセージID設定部１０２２と、データ作成部１０２４と、DLC作成部１０２６と、誤り検出値演算部１０２８と、データフレーム作成部１０３０として機能する。また、マイクロコントローラユニット１０２は、データフレーム取得部１０３２と、メッセージID取得部１０３４と、誤り検出値取得部１０３６と、誤り検出部１０３８として機能する。
【００５１】
マイクロコントローラユニット１０２の内部に記憶されたアプリケーション（ファームウェア）に従ってマイクロコントローラユニット１０２により、メッセージID設定部１０２２と、データ作成部１０２４と、DLC作成部１０２６と、誤り検出値演算部１０２８と、データフレーム作成部１０３０としての機能が実行されるのが好ましい。また、記憶部（図示無し）に記憶されたアプリケーションに従ってマイクロコントローラユニット１０２により、メッセージID設定部１０２２と、データ作成部１０２４と、DLC作成部１０２６と、誤り検出値演算部１０２８と、データフレーム作成部１０３０としての機能が実行されてもよい。
【００５２】
また、マイクロコントローラユニット１０２の内部に記憶されたアプリケーション（ファームウェア）に従ってマイクロコントローラユニット１０２により、データフレーム取得部１０３２と、メッセージＩＤ取得部１０３４と、誤り検出値取得部１０３６、誤り検出部１０３８としての機能が実行されるのが好ましい。また、記憶部（図示無し）に記憶されたアプリケーションに従ってマイクロコントローラユニット１０２により、データフレーム取得部１０３２と、メッセージＩＤ取得部１０３４と、誤り検出値取得部１０３６、誤り検出部１０３８としての機能が実行されてもよい。
【００５３】
マイクロコントローラユニット１０２は、メッセージＩＤ設定部１０２２として機能する。メッセージＩＤ設定部１０２２は、第１の通信ノード１００から送信するメッセージのメッセージＩＤを設定する。メッセージＩＤ設定部１０２２は、データフレーム作成部１０３０へ、メッセージＩＤを入力する。
【００５４】
マイクロコントローラユニット１０２は、データ作成部１０２４として機能する。データ作成部１０２４は、第１の通信ノード１００から送信するメッセージデータを作成する。データ作成部１０２４は、DLC作成部１０２６、誤り検出値演算部１０２８及びデータフレーム作成部１０３０へ、メッセージデータを入力する。
【００５５】
第１の通信ノード１００は、DLC作成部１０２６として機能する。DLC作成部１０２６は、データ作成部１０２４からの第１の通信ノード１００から送信するメッセージデータに基づいて、該メッセージデータの長さを表すデータ長コード(DLC: Data Length Code)を作成する。メッセージデータの長さは、バイト数で表されるのが好ましい。DLC作成部１０２６は、データフレーム作成部１０３０へ、DLCを入力する。
【００５６】
マイクロコントローラユニット１０２は、誤り検出値演算部１０２８として機能する。誤り検出値演算部１０２８は、データ作成部１０２４と接続される。誤り検出値演算部１０２８は、データ作成部１０２４からのメッセージデータに基づいて誤り検出値を演算する。誤り検出値演算部１０２８は、データフレーム作成部１０３０へ誤り検出値を入力する。
【００５７】
第１の通信ノード１００は、データフレーム作成部１０３０として機能する。データフレーム作成部１０３０は、メッセージID設定部１０２２、誤り検出値演算部１０２８、データ作成部１０２４、及びDLC作成部１０２６と接続される。データフレーム作成部１０３０は、メッセージID設定部１０２２により入力されるメッセージID、誤り検出値演算部１０２８により入力される誤り検出値、データ作成部１０２４により入力されるメッセージデータ、DLC作成部１０２６により入力されるDLCに基づいて、データフレームを作成する。具体的には、データフレーム作成部１０３０は、データフレームの転送フォーマットのIDフィールドにメッセージIDと誤り検出値を付加し、データフィールドにメッセージデータを付加し、DLCフィールドにDLCを付加する。データフレーム作成部１０３０は、通信装置１０４へ、データフレームを入力する。
【００５８】
例えば、データフレーム作成部１０３０は、送信レジスタＡと、送信レジスタＢと、送信レジスタＣを有する。
【００５９】
データフレーム作成部１０３０は、メッセージID設定部１０２２により入力されるメッセージIDを左へビットシフトする。つまり、データフレーム作成部１０３０は、メッセージIDを下位から上位へ所定のビット数シフトさせる。この所定のビット数は、誤り検出値演算部１０２８により入力される誤り検出値のビット数と同じであるのが好ましい。データフレーム作成部１０３０は、左へビットシフトしたメッセージIDと誤り検出値演算部１０２８により入力される誤り検出値との論理和を演算し、送信レジスタＡに格納する。送信レジスタＡに格納された、左へビットシフトしたメッセージIDと誤り検出値との論理和は、データフレームのIDフィールドに付加される。
【００６０】
データフレーム作成部１０３０は、データ作成部１０２４により入力されるメッセージデータを送信レジスタＢに格納する。送信レジスタＢに格納されたメッセージデータは、データフレームのデータフィールドに付加される。
【００６１】
データフレーム作成部１０３０は、DLC作成部１０２６により入力されるDLCを送信レジスタＣに格納する。データフレーム作成部１０３０は、各送信レジスタに格納されるデータに基づいてデータフレームを作成する。送信レジスタＣに格納されたDLCは、データフレームのDLCフィールドに付加される。
【００６２】
マイクロコントローラユニット１０２は、データフレーム取得部１０３２として機能する。データフレーム取得部１０３２は、通信装置１０４と接続される。データフレーム取得部１０３２は、通信装置１０４からのデータフレームを取得する。該データフレームは、第２の通信ノード２００から第１の通信ノード１００へ送信されたものである。
【００６３】
例えば、データフレーム取得部１０３２は、受信レジスタＡと、受信レジスタＢと、受信レジスタＣを有する。
【００６４】
データフレームのIDフィールドは受信レジスタＡで取得される。つまり、左へビットシフトしたメッセージIDと誤り検出値との論理和は、データフレーム取得部１０３２の受信レジスタＡで取得される。
【００６５】
データフレームのデータフィールドは受信レジスタＢで取得される。つまり、メッセージデータは、データフレーム取得部１０３２の受信レジスタＢで取得される。
【００６６】
データフレームのDLCフィールドは受信レジスタＣで取得される。つまり、DLCは、データフレーム取得部１０３２の受信レジスタＣで受信される。
【００６７】
データフレーム取得部１０３２は、メッセージID取得部１０３４、誤り検出値取得部１０３６へ、受信レジスタＡで取得した左へビットシフトしたメッセージIDと誤り検出値との論理和を入力する。データフレーム取得部１０３２は、誤り検出部１０３８へ、受信レジスタＢで取得したメッセージデータを入力する。
【００６８】
マイクロコントローラユニット１０２は、メッセージID取得部１０３４として機能する。メッセージID取得部１０３４は、データフレーム取得部１０３２からの左へビットシフトしたメッセージIDと誤り検出値との論理和から、メッセージIDを取得する。メッセージID取得部１０３４は、左へビットシフトしたメッセージIDと誤り検出値との論理和から誤り検出値を削除し、右へビットシフトさせることによりメッセージIDを取得する。
【００６９】
マイクロコントローラユニット１０２は、誤り検出値取得部１０３６として機能する。誤り検出値取得部１０３６は、データフレーム取得部１０３２からの左へビットシフトしたメッセージIDと誤り検出値との論理和から誤り検出値を取得する。誤り検出値取得部１０３６は、誤り検出部１０３８へ、誤り検出値を入力する。
【００７０】
マイクロコントローラユニット１０２は、誤り検出部１０３８として機能する。誤り検出部１０３８は、データフレーム取得部１０３２からのメッセージデータと、誤り検出値取得部１０３６からの誤り検出値に基づいて、誤り検出を行う。誤り検出部１０３８によりメッセージデータが誤っていると判定された場合、そのメッセージデータを破棄するようにしてもよいし、送信側へ再送を要求するようにしてもよい。
【００７１】
＜第１の通信ノード１００の動作＞
＜第１の通信ノード１００の送信処理＞
図６、図７は、第１の通信ノード１００の動作の一実施例を示す。
【００７２】
図６、図７に示される例では、メッセージIDに使用されるビット数が4ビット、誤り検出値に使用されるビット数が７ビットに設定される場合について説明する。メッセージIDに使用されるビット数、誤り検出値に使用されるビット数については、適宜設定可能である。
【００７３】
図６は、第１の通信ノード１００の送信処理を示す。図６には、主に、誤り検出値演算部１０２８と、データフレーム作成部１０３０の処理が示される。第２の通信ノード２００の送信処理についても第１の通信ノード１００の送信処理と略同一である。
【００７４】
ステップＳ６０２では、第１の通信ノード１００は、メッセージIDを左へビットシフトさせる。例えば、第１の通信ノード１００は、メッセージIDを誤り検出値に使用されるビット数左へシフトさせる。つまり、データフレーム作成部１０３０は、メッセージID設定部１０２２からのメッセージIDを左へ７ビットシフトさせる。具体的には、メッセージID設定部１０２２からデータフレーム作成部１０３０にメッセージID「0000000xxxx」が入力される。データフレーム作成部１０３０は、メッセージID設定部１０２２からのメッセージID「0000000xxxx」を左へ７ビットシフトさせる。
【００７５】
ステップＳ６０４では、第１の通信ノード１００は、誤り検出値を演算する。誤り検出値演算部１０２８は、データ作成部１０２４からのメッセージデータに基づいて、誤り検出値を演算する。ここでは、誤り検出値演算部１０２８は、誤り検出値を演算することにより、誤り検出値「zzzzzzz」を得る場合について説明する。誤り検出値の演算には様々なものを適用できる。例えば、チェックサムにより誤り検出値が演算されてもよい。
【００７６】
ステップＳ６０６では、第１の通信ノード１００は、ステップＳ６０２でメッセージIDを左へ７ビットビットシフトさせた「xxxx0000000」とステップＳ６０４で演算された誤り検出値「zzzzzzz」の論理和を演算する。データフレーム作成部１０３０は、「xxxx0000000」と「zzzzzzz」の論理和を演算することにより「xxxxzzzzzzz」を得る。
【００７７】
ステップＳ６０８では、第１の通信ノード１００は、ステップＳ６０６における論理和の演算結果を送信レジスタＡに格納する。データフレーム作成部１０３０は、送信レジスタＡへ、論理和の演算結果を格納する。送信レジスタＡへ格納された論理和の演算結果は、データフレームのIDフィールドに付加される。
【００７８】
ステップＳ６１０では、第１の通信ノード１００は、メッセージデータを送信レジスタＢに格納し、DLCを送信レジスタＣに格納する。データフレーム作成部１０３０は、メッセージデータを送信レジスタＢに格納し、ＤＬＣを送信レジスタＣに格納する。送信レジスタＢへ格納されたメッセージデータは、データフレームのデータフィールドに付加される。送信レジスタＣへ格納されたDLCは、データフレームのDLCフィールドに付加される。
【００７９】
ステップＳ６１２では、第１の通信ノード１００は、データフレームを送信する。データフレーム作成部１０３０は、通信装置１０４へデータフレームを入力する。通信装置１０４は、データフレーム作成部１０３０からのデータフレームをトランシーバ１０６へ入力する。トランシーバ１０６は、通信バス５０へ、データフレームを送信する。
【００８０】
＜第１の通信ノード１００の受信処理＞
図７は、第１の通信ノード１００の受信処理を示す。図７には、主に、データフレーム取得部１０３２と、メッセージID取得部１０３４と、誤り検出値取得部１０３６と、誤り検出部１０３８の処理が示される。第２の通信ノード２００の受信処理についても第１の通信ノード１００の受信処理と略同一である。
【００８１】
ステップＳ７０２では、第１の通信ノード１００は、データフレームを受信する。第２の通信ノード１００からのデータフレームは、トランシーバ１０６により受信され、通信装置１０４を介して、マイクロコントローラユニット１０２に入力される。データフレームは、データフレーム取得部１０３２により取得される。IDフィールドは受信レジスタＡで取得され、データフィールドは受信レジスタＢで取得され、DLCフィールドは受信レジスタＣで取得される。
【００８２】
ステップＳ７０４では、第１の通信ノード１００は、メッセージIDを取得する。データフレーム取得部１０３２は、受信レジスタＡで取得されたIDフィールドから左へビットシフトしたメッセージIDと誤り検出値との論理和を取得する。データフレーム取得部１０３２は、メッセージID取得部１０３４へ、左へビットシフトしたメッセージIDと誤り検出値との論理和を入力する。メッセージID取得部１０３４は、左へビットシフトしたメッセージIDと誤り検出値との論理和から誤り検出値を除去し、右へビットシフトさせることによりメッセージIDを取得する。具体的には、メッセージID取得部１０３４は、左へビットシフトしたメッセージIDと誤り検出値との論理和「xxxxzzzzzzz」から誤り検出値「zzzzzzz」を除去し「xxxx0000000」を得る。メッセージID取得部１０３４は、該「xxxx0000000」を右に7ビットシフトさせることによりメッセージID「0000000xxxx」を取得する。
【００８３】
ステップＳ７０６では、第１の通信ノード１００は、誤り検出値を取得する。データフレーム取得部１０３２は、受信レジスタＡで取得されたIDフィールドから左へビットシフトしたメッセージIDと誤り検出値との論理和を取得する。データフレーム取得部１０３２は、誤り検出値取得部１０３６へ、左へビットシフトしたメッセージIDと誤り検出値との論理和を入力する。誤り検出値取得部１０３６は、左へビットシフトしたメッセージIDと誤り検出値との論理和から誤り検出値を取得する。具体的には、誤り検出値取得部１０３６は、左へビットシフトしたメッセージIDと誤り検出値との論理和「xxxxzzzzzzz」から下位７桁を取得することにより誤り検出値「zzzzzzz」を取得する。
【００８４】
ステップＳ７０８では、第１の通信ノード１００は、誤り検出値に基づいて、メッセージデータの誤り検出を行う。データフレーム取得部１０３２は、受信レジスタＢで取得されたデータフィールドからメッセージデータを取得する。データフレーム取得部１０３２は、誤り検出部１０３８へ、メッセージデータを入力する。誤り検出値取得部１０３６は、誤り検出部１０３８へ、誤り検出値を入力する。誤り検出部１０３８は、データフレーム取得部１０３２からのメッセージデータと、誤り検出値取得部１０３６からの誤り検出値に基づいて、メッセージデータの誤り検出を行う。
【００８５】
通信システムの一実施例によれば、IDフィールドに割り当てられるビットの一部のビットにメッセージIDが使用される場合、メッセージIDに使用しないビットを他の用途に使用できる。メッセージIDに使用しないビットを他の用途に使用することにより、データフレームの使用効率を向上できる。例えば、CANのデータフレームの通常フォーマットにおいて、IDフィールドを有効活用できる。つまり、IDフィールドの11ビットのうち下位4ビットで全メッセージを識別できる場合には、上位7ビットは未活用領域であるため、該未活用領域を他の用途に使用できる。
【００８６】
メッセージデータの誤り検出にメッセージIDに使用しないビットを使用するのが好ましい。メッセージIDに使用しないビットをメッセージデータの誤り検出に使用することにより、通信能力を向上させることができる。
【００８７】
＜第２の実施例＞
＜通信システム＞
通信システムの一実施例は、図１を参照して説明した通信システムと略同一である。
【００８８】
メッセージを送信するデータフレームは、図２と略同一である。
【００８９】
通信システムの一実施例は、図２を参照して説明したデータフレームと比較して、DLCフィールドに割り当てられる4ビットのうち、1ビットがDLCに使用される。DLCフィールドに割り当てられる4ビットのうち、残りの３ビットは、補完データが付与される。
【００９０】
図８は、データフィールドのバイト数とDLCとの対応を示す。通信システムの一実施例では、DLCが１ビットで表される。この場合、データフィールドは8バイトに固定されるのが好ましい。データフィールドが8バイトで固定される場合には、DLCが「1000」で表される。DLCが「1000」で表される場合、2の3乗の位の「1」以外は「0」であっても「1」であっても、データフィールドのバイト数は8となることが明らかであるためである。また、「0」、「1」のそれぞれに対して異なるバイト数と対応付けてもよい。
【００９１】
通信システムの一実施例では、IDフィールドのメッセージIDが付加される部分以外の部分とDLCフィールドのDLCが付加される部分以外の3ビットに補完データが付加される。通信システムの一実施例では、補完データとして誤り検出値を付帯する場合について説明する。
【００９２】
IDフィールドに加え、DLCフィールドに、誤り検出値を付帯することにより、メッセージIDのビット数と誤り検出値のビット数との和がIDフィールドのビット数よりも多い場合でも、その多い分をDLCフィールドに付帯できる。このため、第1の実施例よりも、メッセージIDの数を増大できる。
【００９３】
図９は、IDフィールドとDLCフィールドに付加する補完データの一実施例を示す。具体的には、通信システムで送受信されるメッセージ数の最大値と補完データに使用できる最大ビット数を示す。図９に示される例では、第１の実施例と比較して、IDに使用される最小ビット数と補完データに使用できる最大ビット数との合計が11ビットから14ビットに増大する。
【００９４】
通信ネットワークで送受信されるメッセージ数の最大値が2個であり、且つIDに1ビットが使用される場合、補完データには13ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が4個であり、且つIDに2ビットが使用される場合、補完データには12ビット使用できる。
【００９５】
通信ネットワークで送受信されるメッセージ数の最大値が8個であり、且つIDに3ビットが使用される場合、補完データには11ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が16個であり、且つIDに4ビットが使用される場合、補完データには10ビット使用できる。
【００９６】
通信ネットワークで送受信されるメッセージ数の最大値が32個であり、且つIDに5ビットが使用される場合、補完データには9ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が64個であり、且つIDに6ビットが使用される場合、補完データには8ビット使用できる。
【００９７】
通信ネットワークで送受信されるメッセージ数の最大値が128個であり、且つIDに7ビットが使用される場合、補完データには7ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が256個であり、且つIDに8ビットが使用される場合、補完データには6ビット使用できる。
【００９８】
通信ネットワークで送受信されるメッセージ数の最大値が512個であり、且つIDに9ビットが使用される場合、補完データには5ビット使用できる。通信ネットワークで送受信されるメッセージ数の最大値が1024個であり、且つIDに10ビットが使用される場合、補完データには4ビット使用できる。
【００９９】
通信システムの一実施例では、図９に従って、メッセージ数の最大値に応じて、IDに使用するビット数と、補完データに使用するビット数とが設定されるのが好ましい。ただし、図９に示されるのは一例であり、適宜設定可能である。例えば、メッセージ数の最大値が2個であっても、IDに2ビットを使用するようにしてもよい。この場合、補完データには最大12ビット使用できる。
【０１００】
＜第１の通信ノード１００＞
第１の通信ノード１００のハードウェア構成の一実施例は、図４と略同一であるため、その説明を省略する。
【０１０１】
＜第１の通信ノード１００の機能＞
図１０は、第１の通信ノード１００の機能の一実施例を示す。第２の通信ノード２００の機能も、第１の通信ノード１００の機能と略同一である。
【０１０２】
図１０の機能ブロック図により表される機能は、主に、マイクロコントローラユニット１０２により実行される。つまり、マイクロコントローラユニット１０２は、メッセージID設定部１０２２と、データ作成部１０２４と、DLC作成部１０２６と、誤り検出値演算部１０２８と、データフレーム作成部１０３０として機能する。また、マイクロコントローラユニット１０２は、データフレーム取得部１０３２と、メッセージID取得部１０３４と、誤り検出値取得部１０３６と、誤り検出部１０３８として機能する。
【０１０３】
マイクロコントローラユニット１０２の内部に記憶されたアプリケーション（ファームウェア）に従ってマイクロコントローラユニット１０２により、メッセージID設定部１０２２と、データ作成部１０２４と、DLC作成部１０２６と、誤り検出値演算部１０２８と、データフレーム作成部１０３０としての機能が実行されるのが好ましい。また、記憶部（図示無し）に記憶されたアプリケーションに従ってマイクロコントローラユニット１０２により、メッセージID設定部１０２２と、データ作成部１０２４と、DLC作成部１０２６と、誤り検出値演算部１０２８と、データフレーム作成部１０３０としての機能が実行されてもよい。
【０１０４】
また、マイクロコントローラユニット１０２の内部に記憶されたアプリケーション（ファームウェア）に従ってマイクロコントローラユニット１０２により、データフレーム取得部１０３２と、メッセージＩＤ取得部１０３４と、誤り検出値取得部１０３６、誤り検出部１０３８としての機能が実行されるのが好ましい。また、記憶部（図示無し）に記憶されたアプリケーションに従ってマイクロコントローラユニット１０２により、データフレーム取得部１０３２と、メッセージＩＤ取得部１０３４と、誤り検出値取得部１０３６、誤り検出部１０３８としての機能が実行されてもよい。
【０１０５】
マイクロコントローラユニット１０２は、メッセージＩＤ設定部１０２２として機能する。メッセージＩＤ設定部１０２２は、第１の通信ノード１００から送信するメッセージのメッセージＩＤを設定する。メッセージＩＤ設定部１０２２は、データフレーム作成部１０３０へ、メッセージＩＤを入力する。
【０１０６】
マイクロコントローラユニット１０２は、データ作成部１０２４として機能する。データ作成部１０２４は、第１の通信ノード１００から送信するメッセージデータを作成する。データ作成部１０２４は、誤り検出値演算部１０２８及びデータフレーム作成部１０３０へ、メッセージデータを入力する。
【０１０７】
第１の通信ノード１００は、DLC作成部１０２６として機能する。DLC作成部１０２６は、第１の通信ノード１００から送信するメッセージデータの長さを表すデータ長コードを作成する。DLC作成部１０２６は、メッセージデータの長さとして8ビットを表す「1000」を作成するのが好ましい。DLC作成部１０２６は、データフレーム作成部１０３０へ、DLCを入力する。
【０１０８】
マイクロコントローラユニット１０２は、誤り検出値演算部１０２８として機能する。誤り検出値演算部１０２８は、データ作成部１０２４と接続される。誤り検出値演算部１０２８は、データ作成部１０２４からのメッセージデータに基づいて誤り検出値を演算する。誤り検出値演算部１０２８は、データフレーム作成部１０３０へ誤り検出値を入力する。
【０１０９】
第１の通信ノード１００は、データフレーム作成部１０３０として機能する。データフレーム作成部１０３０は、メッセージID設定部１０２２、誤り検出値演算部１０２８、データ作成部１０２４、及びDLC作成部１０２６と接続される。データフレーム作成部１０３０は、メッセージID設定部１０２２により入力されるメッセージID、誤り検出値演算部１０２８により入力される誤り検出値、データ作成部１０２４により入力されるメッセージデータ、DLC作成部１０２６により入力されるDLCに基づいて、データフレームを作成する。具体的には、データフレーム作成部１０３０は、データフレームの転送フォーマットのIDフィールドにメッセージIDと誤り検出値と付加し、データフィールドにメッセージデータを付加し、DLCフィールドにDLCと誤り検出値を付加する。データフレーム作成部１０３０は、通信装置１０４へ、データフレームを入力する。
【０１１０】
例えば、データフレーム作成部１０３０は、送信レジスタＡと、送信レジスタＢと、送信レジスタＣを有する。
【０１１１】
データフレーム作成部１０３０は、メッセージID設定部１０２２により入力されるメッセージIDを左へビットシフトする。つまり、データフレーム作成部１０３０は、メッセージIDを下位から上位へ所定のビット数シフトさせる。データフレーム作成部１０３０は、左へビットシフトしたメッセージIDと誤り検出値演算部１０２８により入力される誤り検出値の上位から所定のビット数（以下、「第１の誤り検出値」という）との論理和を演算し、送信レジスタＡに格納する。ここで、メッセージIDをシフトさせたビット数と、誤り検出値の上位から取得される所定のビット数は同じであるのが好ましい。送信レジスタＡに格納された、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和は、データフレームのIDフィールドに付加される。
【０１１２】
データフレーム作成部１０３０は、データ作成部１０２４により入力されるメッセージデータを送信レジスタＢに格納する。送信レジスタＢに格納されたメッセージデータは、データフレームのデータフィールドに付加される。
【０１１３】
データフレーム作成部１０３０は、DLC作成部１０２６により入力されるDLCを送信レジスタＣに格納する。さらに、データフレーム作成部１０３０は、誤り検出値のうち、上位から所定のビット取得された残りのビット（以下、「第２の誤り検出値」という）を送信レジスタＣに格納する。データフレーム作成部１０３０は、各送信レジスタに格納されるデータに基づいてデータフレームを作成する。送信レジスタＣに格納されたDLCと、第２の誤り検出値は、データフレームのDLCフィールドに付加される。
【０１１４】
マイクロコントローラユニット１０２は、データフレーム取得部１０３２として機能する。データフレーム取得部１０３２は、通信装置１０４と接続される。データフレーム取得部１０３２は、通信装置１０４からのデータフレームを取得する。該データフレームは、第２の通信ノード２００から第１の通信ノード１００へ送信されたものである。
【０１１５】
例えば、データフレーム取得部１０３２は、受信レジスタＡと、受信レジスタＢと、受信レジスタＣを有する。
【０１１６】
データフレームのIDフィールドは受信レジスタＡで取得される。つまり、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和は、データフレーム取得部１０３２の受信レジスタＡで取得される。
【０１１７】
データフレームのデータフィールドは受信レジスタＢで取得される。つまり、メッセージデータは、データフレーム取得部１０３２の受信レジスタＢで取得される。
【０１１８】
データフレームのDLCフィールドは受信レジスタＣで取得される。つまり、DLCと第２の誤り検出値は、データフレーム取得部１０３２の受信レジスタＣで受信される。
【０１１９】
データフレーム取得部１０３２は、メッセージID取得部１０３４へ、受信レジスタＡで取得した左へビットシフトしたメッセージIDと第１の誤り検出値との論理和を入力する。
【０１２０】
データフレーム取得部１０３２は、誤り検出値取得部１０３６へ、受信レジスタＡで取得した左へビットシフトしたメッセージIDと第１の誤り検出値との論理和を入力する。データフレーム取得部１０３２は、誤り検出値取得部１０３６へ、受信レジスタＣで取得したDLCと、第２の誤り検出値を入力する。
【０１２１】
データフレーム取得部１０３２は、誤り検出部１０３８へ、受信レジスタＢで取得したデータフィールドを入力する。
【０１２２】
マイクロコントローラユニット１０２は、メッセージID取得部１０３４として機能する。メッセージID取得部１０３４は、データフレーム取得部１０３２からの左へビットシフトしたメッセージIDと第１の誤り検出値との論理和から、メッセージIDを取得する。メッセージID取得部１０３４は、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和から第１の誤り検出値を削除し、右へビットシフトさせることによりメッセージIDを取得する。
【０１２３】
マイクロコントローラユニット１０２は、誤り検出値取得部１０３６として機能する。誤り検出値取得部１０３６は、データフレーム取得部１０３２からの左へビットシフトしたメッセージIDと第１の誤り検出値との論理和から第１の誤り検出値を取得する。誤り検出値取得部１０３６は、データフレーム取得部１０３２からのDLCと第２の誤り検出値との論理和から第２の誤り検出値を取得する。誤り検出値取得部１０３６は、第１の誤り検出値と第２の誤り検出値から誤り検出値を取得する。誤り検出値取得部１０３６は、誤り検出部１０３８へ、誤り検出値を入力する。
【０１２４】
マイクロコントローラユニット１０２は、誤り検出部１０３８として機能する。誤り検出部１０３８は、データフレーム取得部１０３２からのメッセージデータと、誤り検出値取得部１０３６からの誤り検出値に基づいて、誤り検出を行う。誤り検出部１０３８によりメッセージデータが誤っていると判定された場合、そのメッセージデータを破棄するようにしてもよいし、送信側へ再送を要求するようにしてもよい。
【０１２５】
＜第１の通信ノード１００の動作＞
＜第１の通信ノード１００の送信処理＞
図１１、図１２は、第１の通信ノード１００の動作の一実施例を示す。
【０１２６】
図１１、図１２に示される例では、メッセージIDに使用されるビット数が5ビット、誤り検出値に使用されるビット数が７ビットに設定される場合について説明する。メッセージIDに使用されるビット数、誤り検出値に使用されるビット数については、適宜設定可能である。
【０１２７】
図１１は、第１の通信ノード１００の送信処理を示す。図１１には、主に、誤り検出値演算部１０２８と、データフレーム作成部１０３０の処理が示される。第２の通信ノード２００の送信処理についても第１の通信ノード１００の送信処理と略同一である。
【０１２８】
ステップＳ１１０２では、第１の通信ノード１００は、メッセージIDを左へビットシフトさせる。例えば、第１の通信ノード１００は、IDフィールドのビット数からメッセージIDに使用されるビット数を減算したビット数左へシフトさせる。つまり、データフレーム作成部１０３０は、メッセージID設定部１０２２からのメッセージIDを左側へ6ビットシフトさせる。メッセージID設定部１０２２は、データフレーム作成部１０３０にメッセージID「000000xxxxx」を入力する。データフレーム作成部１０３０は、メッセージID設定部１０２２からのメッセージID「000000xxxxx」を左側に6ビットシフトさせる。
【０１２９】
ステップＳ１１０４では、第１の通信ノード１００は、誤り検出値を演算する。誤り検出値演算部１０２８は、データ作成部１０２４からのデータに基づいて、誤り検出値を演算する。ここでは、誤り検出値演算部１０２８は、誤り検出値を演算することにより、誤り検出値「zzzzzzz」を得る。誤り検出値の演算には様々なものを適用できる。例えば、誤り検出値として、チェックサムが適用されてもよい。
【０１３０】
ステップＳ１１０６では、第１の通信ノード１００は、ステップＳ１１０４により演算された誤り検出値からステップＳ１１０２によりビットシフトしたビット数と同数のビットを一方のビット、例えば上位ビットから取得する。データフレーム作成部１０３０は、誤り検出値「zzzzzzz」の上位ビットから6ビットを取得する。
【０１３１】
ステップＳ１１０８では、第１の通信ノード１００は、ステップＳ１１０２でメッセージIDを左側へ6ビットビットシフトさせた「xxxxx000000」とステップＳ１１０６で取得された誤り検出値「zzzzzz」の論理和を演算する。データフレーム作成部１０３０は、「xxxxx000000」と「zzzzzz」の論理和を演算することにより「xxxxxzzzzzz」を得る。
【０１３２】
ステップＳ１１１０では、第１の通信ノード１００は、ステップＳ１１０８における論理和の演算結果を送信レジスタＡに格納する。データフレーム作成部１０３０は、送信レジスタＡへ、論理和の演算結果を格納する。
【０１３３】
ステップＳ１１１２では、第１の通信ノード１００は、メッセージデータを送信レジスタＢに格納する。
【０１３４】
ステップＳ１１１４では、第１の通信ノード１００は、DLCと、誤り検出値のうちステップＳ１１０６により取得された誤り検出値の残りのビットを送信レジスタＣに格納する。データフレーム作成部１０３０は、DLC「1」と、誤り検出値のうちステップＳ１１０６により取得された誤り検出値の残りのビット「z」を送信レジスタＣに格納する。
【０１３５】
ステップＳ１１１６では、第１の通信ノード１００は、データフレームを送信する。データフレーム作成部１０３０は、データフレームを送信する。
【０１３６】
＜第１の通信ノード１００の受信処理＞
図１２は、第１の通信ノード１００の受信処理を示す。図１２には、主に、データフレーム取得部１０３２と、メッセージID取得部１０３４と、誤り検出値取得部１０３６と、誤り検出部１０３８の処理が示される。第２の通信ノード２００の受信処理についても第１の通信ノード１００の受信処理と略同一である。
【０１３７】
ステップＳ１２０２では、第１の通信ノード１００は、データフレームを受信する。第２の通信ノード１００からのデータフレームは、トランシーバ１０６により受信され、通信装置１０４を介して、マイクロコントローラユニット１０２に入力される。データフレームは、データフレーム取得部１０３２により取得される。IDフィールドは受信レジスタＡで取得され、データフィールドは受信レジスタＢで取得され、DLCフィールドは受信レジスタＣで取得される。
【０１３８】
ステップＳ１２０４では、第１の通信ノード１００は、メッセージIDを取得する。データフレーム取得部１０３２は、受信レジスタＡで取得されたIDフィールドから左へビットシフトしたメッセージIDと第１の誤り検出値との論理和を取得する。データフレーム取得部１０３２は、メッセージID取得部１０３４へ、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和を入力する。メッセージID取得部１０３２は、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和から第１の誤り検出値を除去し、右へビットシフトさせることによりメッセージIDを取得する。具体的には、メッセージID取得部１０３２は、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和「xxxxxzzzzzz」から第１の誤り検出値「zzzzzz」を除去し「xxxxx000000」を得る。メッセージID取得部１０３２は、該「xxxxx000000」を右に6ビットシフトさせることによりメッセージID「000000xxxxx」を取得する。
【０１３９】
ステップＳ１２０６では、第１の通信ノード１００は、第１の誤り検出値を取得する。データフレーム取得部１０３２は、受信レジスタＡで取得されたIDフィールドから左へビットシフトしたメッセージIDと第１の誤り検出値との論理和を取得する。データフレーム取得部１０３２は、誤り検出値取得部１０３６へ、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和を入力する。誤り検出値取得部１０３６は、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和から第１の誤り検出値を取得する。具体的には、誤り検出値取得部１０３６は、左へビットシフトしたメッセージIDと第１の誤り検出値との論理和「xxxxxzzzzzz」から下位6桁を取得することにより第１の誤り検出値「zzzzzz」を取得する。
【０１４０】
ステップＳ１２０８では、第１の通信ノード１００は、第２の誤り検出値を取得する。データフレーム取得部１０３２は、受信レジスタＣで取得されたDLCフィールドからDLCと第２の誤り検出値とを取得する。データフレーム取得部１０３２は、誤り検出値取得部１０３６へ、DLCと第２の誤り検出値とを入力する。誤り検出値取得部１０３６は、DLCと第２の誤り検出値とから第２の誤り検出値を取得する。具体的には、誤り検出値取得部１０３６は、DLCと第２の誤り検出値との論理和「100z」から下位1桁を取得することにより第２の誤り検出値「z」を取得する。
【０１４１】
ステップＳ１２１０では、第１の通信ノード１００は、誤り検出値を求める。誤り検出値取得部１０３６は、第１の誤り検出値「zzzzzz」と第２の誤り検出値「z」に基づいて、誤り検出値を求める。誤り検出値取得部１０３６は、第１の誤り検出値と第２の誤り検出値とを並べることにより誤り検出値を取得するのが好ましい。
【０１４２】
ステップＳ１２１２では、第１の通信ノード１００は、誤り検出値に基づいて、メッセージデータの誤り検出を行う。データフレーム取得部１０３２は、受信レジスタＢで取得されたデータフィールドからメッセージデータを取得する。データフレーム取得部１０３２は、誤り検出部１０３８へ、メッセージデータを入力する。誤り検出値取得部１０３６は、誤り検出部１０３８へ、誤り検出値を入力する。誤り検出部１０３８は、データフレーム取得部１０３２からのメッセージデータと、誤り検出値取得部１０３６からの誤り検出値に基づいて、メッセージデータの誤り検出を行う。
【０１４３】
通信システムの一実施例によれば、IDフィールドに割り当てられるビットの一部のビットにメッセージIDが使用され、且つDLCフィールドの一部でDLCを表す場合、メッセージIDに使用しないビットとDLCに使用しないビットを他の用途に使用できる。メッセージIDに使用しないビットとDLCに使用しないビットを他の用途に使用することにより、データフレームの使用効率を向上できる。例えば、CANのデータフレームの通常フォーマットにおいて、IDフィールドとDLCフィールドを有効活用できる。つまり、IDフィールドの11ビットのうち下位4ビットで全メッセージを識別できる場合には、上位7ビットは未活用領域である。また、データフィールドのデータ長が8ビットである場合には、DLCフィールドの4ビットのうち1ビットで識別できるため、3ビットは未活用領域である。このため、該未活用領域を他の用途に使用できる。
【０１４４】
メッセージデータの誤り検出にメッセージIDに使用しないビットとDLCに使用しないビットを使用するのが好ましい。メッセージIDに使用しないビットとDLCに使用しないビットをメッセージデータの誤り検出に使用することにより、通信能力を向上させることができる。
【０１４５】
以上、本発明は特定の実施例及び変形例を参照しながら説明されてきたが、各実施例及び変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウェアで、ソフトウェアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【０１４６】
５０  通信バス
１００  第１の通信ノード
１０２  マイクロコントローラユニット
１０４  通信装置
１０６  トランシーバ
２００  第２の通信ノード
１０２２  メッセージID設定部
１０２４  データ作成部
１０２６  DLC作成部
１０２８  誤り検出値演算部
１０３０  データフレーム作成部
１０３２  データフレーム取得部
１０３４  メッセージID取得部
１０３６  誤り検出値取得部
１０３８  誤り検出部
【図１】
2014204287.tif 000003
【図２】
2014204287.tif 000004
【図３】
2014204287.tif 000005
【図４】
2014204287.tif 000006
【図５】
2014204287.tif 000007
【図６】
2014204287.tif 000008
【図７】
2014204287.tif 000009
【図８】
2014204287.tif 000010
【図９】
2014204287.tif 000011
【図１０】
2014204287.tif 000012
【図１１】
2014204287.tif 000013
【図１２】
2014204287.tif 000014