(57)【要約】【課題】  送信にかかる処理の遅れを最小限に抑えることができるゲートウェイ装置を提供する。【解決手段】  複数バスＡ２０，Ｂ３０の間に設けられ、バスＡ２０，Ｂ３０間のフレーム転送するゲートウェイ制御装置１０であって、バスから受信したフレームを記憶するメモリ１３と、フレームをバスＢ３０に転送するために、フレームを記憶するコントローラバッファ１１２と、コントローラバッファ１１２のフレームデータをバスＢ３０に出力するコントローラＢ１２と、メモリ１３に記憶されたフレームをコントローラバッファ１１２に送信セットする通信制御部１８とを有し、通信制御部１８は、コントローラＢ１２から送信完了通知を受け取って、コントローラバッファ１１２にフレームを格納させる。【選択図】        図４
2007243322.tif 000002
【特許請求の範囲】
【請求項１】
複数のバス間のデータ転送を制御するゲートウェイ装置であって、
前記バスを介して受信したデータを記憶する第１の記憶手段と、
前記データを前記バス上に転送する前に、前記データを記憶しておく第２の記憶手段と、
前記第２の記憶手段に記憶されたデータをバス上に出力する送信制御手段と、
前記第１の記憶手段に記憶されたデータを前記第２の記憶手段に送信セットする制御手段とを有し、
前記制御手段は、前記送信制御手段から送信完了通知を受け取って、前記第２の記憶手段にデータを記憶することを特徴とするゲートウェイ装置。
【請求項２】
前記制御手段は、所定間隔ごとに前記送信制御手段に送信完了の問い合わせを行うことを特徴とする請求項１記載のゲートウェイ装置。
【請求項３】
前記第１の記憶手段は、データを複数のブロックに分類して記憶し、
前記制御手段は、データに設定された送信間隔に応じて、各ブロックに格納するデータを振り分けることを特徴とする請求項１又は２記載のゲートウェイ装置。
【請求項４】
前記第１の記憶手段は、データを複数のブロックに分類して記憶し、
前記制御手段は、データに設定された優先度に応じて、各ブロックに格納するデータを振り分けることを特徴とする請求項１又は２記載のゲートウェイ装置。
【請求項５】
複数のバス間でのデータ転送を制御するデータ転送方法であって、
前記バスを介して受信したデータを第１の記憶手段に格納するステップと、
第２の記憶手段に格納済みのデータのバスへの送信完了通知を待って、前記第１の記憶手段から前記第２の記憶手段にデータを格納するステップと、
前記第２の記憶手段に格納されたデータをバス上に出力するステップと、を有することを特徴とするデータ転送方法。
【請求項６】
複数のバス間でのデータ転送を制御するデータ転送プログラムであって、
前記バスを介して受信したデータを第１の記憶手段に格納する処理と、
第２の記憶手段に格納したデータのバスへの送信完了通知を待って、前記第１の記憶手段から前記第２の記憶手段にデータを格納する処理と、
前記第２の記憶手段に格納済みのデータをバス上に出力する処理とをコンピュータに実行させることを特徴とするデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバス間のデータを中継するゲートウェイ装置及びそのゲートウェイ装置におけるデータ転送方法に関する。特に、メモリに蓄積されたフレームをバスに出力する送信用コントローラバッファへの転送処理技術に関する。
【背景技術】
【０００２】
従来から、主として自動車の車載ネットワークにＣＡＮ（Controller Area Network）と呼ばれる通信プロトコルが採用されている（例えば、以下の非特許文献１及び２参照）。ＣＡＮはＩＳＯ（International Organization for Standardization）で国際的に標準化されたシリアル通信プロトコルである。最近では、その高い性能と信頼性から車内ＬＡＮ以外にも、船舶、医療機器等多方面で採用されている。
【０００３】
このようなＣＡＮを利用した車内ネットワークシステムでは、非特許文献１に記載されているように、自動車のハードウェアを制御する複数のＥＣＵ（Electric Control Unit）がＣＡＮバスを介して接続され、更に、各バス間がゲートウェイ装置を介して接続される。例えば、エンジンやトランスミッション等を制御するＥＣＵを接続するエンジン系のＣＡＮバスと、ＶＩＣＳナビなどを制御するＥＣＵを接続する情報系のＣＡＮバスとがゲートウェイ装置を介して接続される。かかるゲートウェイ装置は、異なるＣＡＮバス間のプロトコル変換を行うとともに、一方のＣＡＮバス内のＥＣＵから送信されたメッセージを他方のＣＡＮバス内のＥＣＵに転送する役割を果たす。
【０００４】
ＣＡＮプロトコルの特徴は、（１）バスが空いているときに、すべてのノード（ＥＣＵ）がメッセージ（以下、「フレーム」と称す。ＣＡＮプロトコルにおける通信単位である）の送信を始めることができるマルチマスタ方式が採用され、（２）バスに早くアクセスしたノードがフレーム送信権を得て、（３）同時に複数のノードが送信を始めると、優先順位の高い識別子（ＩＤ）のフレームを送信するノードが送信権を得る、等が上げられる。なお、この識別子は、送信フレームに付加されるものであるが、フレームの送り先を示すものではなく、バス上にフレームを出力できる優先順位を示すものである。
【０００５】
このようなマルチマスタ通信において、フレームを送信するノードは、バスの通信状態や負荷に関係なくノードを構成するデバイス毎の周期にて送信を行う。また、自動車のスイッチ入力情報やエンジンの回転数などの値の変化に応じてイベント送信を行うノードは、バスの通信状態等に関係なく発生したイベントに応じてフレームの送信を行う。そして、同時にフレームが送信されると、上述したＩＤにより調停（アービトレーション）が行われ、送信権を獲得したフレームがバス上に送信される。
【０００６】
一方、ゲートウェイ装置は、一般に各デバイスから送信されるフレームを格納するメモリと、フレームの送信を行う送信用コントローラと、受信を行う受信用コントローラとを備える。更に、各コントローラ内には送受信されるフレームを格納するバッファが備えられている。メモリに蓄積されたフレームは、ゲートウェイ装置内のＣＰＵによって、図１に示すように基本周期ごとに送信コントローラ内のバッファに転送され、バッファからバスに出力される。
【非特許文献１】「ＣＡＮ入門書」  ＷＷＷ．ｒｅｎｅｓａｓ．ｃｏｍ
【非特許文献２】「ＣＡＮとは？」ＷＷＷ．ｔｏｙｏ．ｃｏ．ｊｐ／ｃａｒ／ＣＡＮ／ＣＡＮ＿Ｇｅｎｅｒａｌ．ｈｔｍ
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述のようにゲートウェイ装置では、ＣＰＵによってメモリに蓄積したフレームを基本周期ごとにコントローラ内のバッファに出力している。このとき、コントローラバッファに未送信のフレームが残っていると、ＣＰＵはバッファにフレームを転送することができない。この場合、次の基本周期までメモリにフレームを保持して置かなければならず、送信に遅れが生じる。
【０００８】
本発明は上記事情に鑑みてなされたものであり、送信にかかる処理の遅れを最小限に抑えることができるゲートウェイ装置、データ転送方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するために本発明のゲートウェイ装置は、複数のバス間のデータ転送を制御するゲートウェイ装置であって、前記バスを介して受信したデータを記憶する第１の記憶手段と、前記データを前記バス上に転送する前に、前記データを記憶しておく第２の記憶手段と、前記第２の記憶手段に記憶されたデータをバス上に出力する送信制御手段と、前記第１の記憶手段に記憶されたデータを前記第２の記憶手段に送信セットする制御手段とを有し、前記制御手段は、前記送信制御手段から送信完了通知を受け取って、前記第２の記憶手段にデータを記憶する構成を備えている。
第２の記憶手段に記憶したデータの送信が完了していないと第２の記憶手段に次のデータをセットできない場合がある。そのような場合に、送信制御手段がデータ送信を完了すると、送信完了通知を制御手段に出力することで、送信にかかる処理の遅れを最小限に抑えることができる。
【００１０】
上記ゲートウェイ装置において、前記制御手段は、所定間隔ごとに前記送信制御手段に送信完了の問い合わせを行うとよい。
送信制御手段の送信完了通知機能が故障しても、制御手段は第２の記憶手段にデータをセットすることができる。
【００１１】
上記ゲートウェイ装置において、前記第１の記憶手段は、データを複数のブロックに分類して記憶し、前記制御手段は、データに設定された送信間隔に応じて、各ブロックに格納するデータを振り分けるとよい。
従って、送信間隔の短いデータの送信が、送信間隔の長いデータの送信によって中断されることがない。
【００１２】
上記ゲートウェイ装置において、前記第１の記憶手段は、データを複数のブロックに分類して記憶し、前記制御手段は、データに設定された優先度に応じて、各ブロックに格納するデータを振り分けるとよい。
従って、優先度の高いデータを優先的に送信することができる。
【００１３】
本発明のデータ転送方法は、複数のバス間でのデータ転送を制御するデータ転送方法であって、前記バスを介して受信したデータを第１の記憶手段に格納するステップと、第２の記憶手段に格納済みのデータのバスへの送信完了通知を待って、前記第１の記憶手段から前記第２の記憶手段にデータを格納するステップと、前記第２の記憶手段に格納されたデータをバス上に出力するステップとを有している。
【００１４】
本発明のデータ転送プログラムは、複数のバス間でのデータ転送を制御するデータ転送プログラムであって、前記バスを介して受信したデータを第１の記憶手段に格納する処理と、第２の記憶手段に格納したデータのバスへの送信完了通知を待って、前記第１の記憶手段から前記第２の記憶手段にデータを格納する処理と、前記第２の記憶手段に格納済みのデータをバス上に出力する処理とをコンピュータに実行させる。
【発明の効果】
【００１５】
本発明によれば、送信にかかる処理の遅れを最小限に抑えることができる。
【発明を実施するための最良の形態】
【００１６】
添付図面を参照しながら本実施例の最良の実施例を説明する。
【実施例１】
【００１７】
まず、図２を参照しながら本実施例の構成を説明する。図２には、本発明が適用される車載ネットワークシステムの一例が示されている。
車載ネットワークシステム１は、図２に示すように、バスＡ２０に接続されたノードＡ２１からノードＦ２６と、バスＢ３０に接続されたノードＧ３１からノードＬ３６との間でフレームの送受信を行うものである。ゲートウェイ装置１０は、異なるバス間でのフレームの転送を実現するためにこれらバス間でのフレームを中継する役割を担う。なお、本実施例では、バスＡ２０及びバスＢ３０に接続されたノードは、ＣＡＮのプロトコルに従って通信を行うものとする。但し、通信に使用するプロトコルはＣＡＮに限定されるものではなく、ＬＩＮ（ｌｏｃａｌ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｎｅｔｗｏｋｒ）やＦｌｅｘＲａｙなどのプロコトルも用いることができる。図３には、本実施例を車両に搭載した場合の構成を示す。車両に搭載した場合のノードとして、エンジンＥＣＵ、トランスミッションＥＣＵ、電源制御ＥＣＵ、エアコンＥＣＵ、セキュリティＥＣＵ、メーターＥＣＵなどが挙げられ、これらのノード間でゲートウェイ装置１０を介して通信を行う。
【００１８】
図４に、ゲートウェイ制御装置１０の構成を示す。ゲートウェイ制御装置１０は、受信用のコントローラＡ１１と、送信用のコントローラＢ１２と、主としてフレームを蓄積するためのメモリ１３（本発明の第１の記憶手段に該当する）と、ＣＰＵ１４と、ＲＯＭ１５とから構成され、それぞれ内部バスを介して接続される。なお、以下では、説明を簡略化するため、バスＡ２０に接続されたノードからバスＢ３０に接続されたノードにフレームを送信する場合だけを例に説明する。バスＢ３０に接続されたノードからバスＡ２０に接続したノードへのフレーム送信も同様の手順で実行される。
【００１９】
コントローラＡ１１は、バス２０Ａを介してノードＡ２１〜ノードＦ２６から送信されたフレームの受信制御を行う。またコントローラＡ１１は、内部に受信用のコントローラバッファ１１１を備え、受信したフレームを蓄積する。
【００２０】
コントローラＢ１２（本発明の送信制御手段に該当する）は、受信したフレームを、バスＢ３０を介してノードＧ３１〜ノードＬ３６に送信する送信制御を行う。また、コントローラＢ１２は、内部に送信用のコントローラバッファ１１２（本発明の第２の記憶手段に該当する）を備え、送信すべきフレームを蓄積する。
【００２１】
また、コントローラバッファ１１１、１１２内は、図５に示すように複数のメッセージボックス（以下、ＭＢと略記する）に分割されている。各メッセージボックスには、ボックス番号が付与され、メッセージボックス内にはメッセージの種類や調停時の優先度を表すＩＤコードを格納するためのＩＤコードレジスタ、メッセージボックスの使用方法（送信用／受信用）を指定するための用途指定レジスタなどが設けられている。各メッセージボックスにセットされたフレームがバスＢ３０上に出力され、送信先のノードに送信される。また、バスＡ２０から受信したメッセージをメッセージボックスに取り込み、通信制御部１８にフレーム受信の割り込みを行う。
【００２２】
ＣＰＵ１４は、ゲートウェイ制御装置１０全体を制御すると共に、図４に示すように、通信ドライバ１６、１７、通信制御部１８、アプリケーション１９の各プログラム（又はモジュール）を実行する。これらのプログラム等はＲＯＭ１５に記憶される。
【００２３】
次に、図６を参照しながらノード間で送受信されるフレームの構成について説明する。フレームは、ＣＡＮプロトコルにおける通信の１単位である。主として、フレームの開始を示すスタートオブフレーム（ＳＯＦ）と、当該フレームの優先順位を示す識別子（ＩＤ）が格納されるＩＤ領域と、データが格納されるデータ領域と、フレームの伝送誤りをチェックするＣＲＣチェック符号とが格納される領域と、フレームの終了を示すエンドオブフレーム（ＥＯＦ）とから構成される。
【００２４】
ＣＡＮプロトコルでは、バスＡ２０の送信権は、第１にアイドル中のバスにフレームを先に出力したノードに与えられ、第２に同時に複数のノードからフレームを出力したときは上述した識別子（ＩＤ）により優先順位の高いフレームを出力したノードに与えられる。つまり、すべての識別子は異なる優先順位を有し、ノードＦ２６とノードＡ２１とが同時にフレームをバスＡ２０に出力すると、その識別子の優先順位により送信権が決定され、例えば、優先順位の高いノードＦ２６からのフレームにバスＡ２０の送信権が与えられ、優先順位の低いノードＡ２１からのフレームの送信は停止する。もちろん、ノードＡ２１が先にフレームの出力を開始したときは、他のノードＢ２２等はフレームの出力はできない。
【００２５】
次に、全体動作を説明する。上述のようにして、ノードＦ２６から送信されたフレームにバスＡ２０の送信権が与えられると、当該フレームは、ゲートウェイ制御装置１０に出力される。そして、このフレームは、コントローラＡ１１内のコントローラバッファ１１１に一旦蓄積される。その後、通信ドライバ１６の管理するメモリ１３の領域に格納される。
【００２６】
その後、通信制御部１８が、メモリ１３に格納したフレームを読み出して、コントローラＢ１２内のバッファ１１２に送信セットする。更に、通信ドライバ１７によってコントローラＢ１２が制御され、コントローラＢ１２は、コントローラバッファ１１２に蓄積されたフレームをバスＢ３０に出力する。その後、ゲートウェイ制御装置１０から出力されたフレームは、バスＢ３０を介してノードＬ３６に送信される。
【００２７】
このノードＬ３６に対する送信もバスＡ２０と同様にバスの送信権獲得のための調停が行われる。すなわち、バスＢ３０に接続された各ノードＬ３６等は、どの識別子のフレームを受信すべきか予め設定されており、その設定された識別子のフレームを、バスＢ３０上に出力されるメッセージから判断して、該当する場合に受信することになる。
【００２８】
本発明の特徴は、コントローラＡ，Ｂからの送信完了通知を受信して、通信制御部１８がコントローラバッファ１１１、１１２へフレームを格納するようにしたことにある。
【００２９】
例えば、図７に示すようにコントローラバッファからバスＢ３０に１基本周期（例えば、１ｍｓ）で送信可能なフレーム数を「４」とし、コントローラバッファ１１２に記憶可能なフレーム数も「４」とした場合を考える。１基本周期内において、メモリ１３に記憶されたフレーム１からフレーム４がコントローラバッファ１１２に転送されて送信セットが完了した状態で、さらにフレーム５に対してもＣＰＵ１４が送信セットしようとしても、コントローラバッファ１１２が空き状態とならない限り、送信セットの処理待ちとなってしまう。
【００３０】
そこで、本実施例では、送信の遅れを最小限に抑えるために、コントローラバッファ１１２に格納したフレームの送信を完了すると、図８に示すようにコントローラＢ１２は、通信制御部１８に対して送信完了の割込み通知を送る。この割込み通知を受信した通信制御部１８は、次に送信するフレームをコントローラバッファ１１２に送って格納する。
【００３１】
また、コントローラＢ１２の備える送信完了の通知機能に故障が生じた場合、コントローラバッファ１１２へのフレームのセットに遅れが生じてしまう。そこで、通信制御部１８は、従来通り予め設定された基本周期ごとに、コントローラＢ１２にコントローラバッファ１１２に空きがあるかを問い合わせる。コントローラＢ１２からコントローラバッファ１１２に空きがあるとの通知を得ると、通信制御部１８は、フレームをコントローラバッファ１１２にセットする。
【００３２】
通信制御部１８の処理手順を図９に示すフローチャートを参照しながら説明する。
送信側となるノードからフレームが送信され、コントローラＡ１１からフレーム受信の割り込みが入力されると（ステップＳ１）、通信制御部１８は、コントローラＡ１１のバッファ１１１に蓄積されたフレームを通信ドライバ１６を制御してメモリ１３内に取り込む（ステップＳ２）。フレームを取得した通信制御部１８は、コントローラＢ１２に対して、コントローラバッファ１１２に空きがあるか否かを問い合わせる（ステップＳ３）。コントローラＢ１２からコントローラバッファ１１２に空きがあるとの応答を得ると（ステップＳ３／ＹＥＳ）、通信制御部１８は通信ドライバ１７を制御して、フレームをコントーラバッファ１１２の該当メッセージボックスにセットする（ステップＳ６）。
【００３３】
また、コントローラＢ１２からコントローラバッファ１１２には空きがないとの応答を得ると（ステップＳ３／ＮＯ）、コントローラＢ１２へのフレームのセットを保留し、コントローラＢ１２からの送信完了通知があるまで待機する（ステップＳ４）。その後、コントローラＢ１２から送信完了通知を受け取ると（ステップＳ４／ＹＥＳ）、送信するフレームをコントーラバッファ１１２の該当メッセージボックスにセットする（ステップＳ６）。また、送信完了通知の待機中に、予め設定された周期となると（ステップＳ５）、通信制御部１８はコントローラＢ１２に対して問い合わせを行う。通信制御部１８は、例えば１ｍｓｅｃごとに、コントローラＢ１２に対して、コントローラバッファ１１２に空きがあるか否かを問い合わせる（ステップＳ３）。コントローラＢ１２からコントローラバッファ１１２に空きがあるとの応答を得ると（ステップＳ３／ＹＥＳ）、送信するフレームをコントローラバッファ１１２の該当メッセージボックスにセットして（ステップＳ６）、フレームの送信を行う。
【００３４】
このように本実施例は、コントローラからの送信完了通知を受け取って、通信制御部１８が、コントローラＡ１１、Ｂ１２のコントローラバッファにフレームを格納するので、送信にかかる処理の遅れを最小限に抑えることができる。
【００３５】
また、予め設定された基本周期ごとに、通信制御部１８がコントローラＡ１１，Ｂ１２に対して問い合わせを行うので、コントローラＡ１１，Ｂ１２の送信完了通知機能がダウンしても、フレームをコントローラバッファ１１１，１１２に格納して送信することができる。
【００３６】
次に、添付図面を参照しながら本発明の第２実施例を説明する。本実施例は、図１０に示すようにコントローラＢ１２に転送するフレームを格納しておくメモリ１３の領域を複数のクラスに分割しておく。そして、送信側のノードからフレームを受信すると、これを優先度や送信タイミングに応じて分類して、クラスごとにフレームを格納する。
【００３７】
優先度とは、ノードごとに設定されたものであり、図６に示すようにフレーム内に優先度を表すＩＤが埋め込まれている。通信制御部１８は、このＩＤを読み出し、ＩＤに設定された優先順位のメッセージボックスに格納する。例えば、図１０では、クラスａが最も優先度の高いクラスで、クラスｂが次に優先度の高いクラスで、クラスｎが優先度の最も低いクラスに設定している。
【００３８】
またコントローラバッファ１１２のメッセージボックスにフレームを格納するときには、優先度の高いクラスのフレームを優先的にメッセージボックスに格納する。このようにして、優先度順にフレームの送信を行うことができる。
【００３９】
さらに、送信間隔によってメモリ１３内をクラス分けしてもよい。送信側となるノードは、所定間隔ごとにフレームの送信を行っている。この送信間隔に応じてメモリ１３内をクラス分けする。
送信間隔が短いノードからのフレームと、送信間隔が長いノードからのフレームとが同じクラス内に混在すると、送信間隔の長いフレームによって、送信間隔が短いフレームが待機させられることになる。
このような不具合を防止するために、メモリ１３内を送信間隔でクラス分けしておく。例えば、図１０に示すクラスａには送信間隔の短いノードからのフレームだけを格納し、クラスｎには、送信間隔の長いノードからのフレームを格納するようにする。
【００４０】
このようにして、送信間隔の短いフレームが、送信間隔の長いフレームによって待機させられるような不具合を防止することができる。
【００４１】
上述した実施例は本発明の好適な実施例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【図面の簡単な説明】
【００４２】
【図１】従来のフレームのコントローラバッファへのセットタイミングを示す図である。
【図２】ゲートウェイ制御装置の接続構成を示す図である。
【図３】ゲートウェイ制御装置を車両に搭載した際の接続構成を示す図である。
【図４】ゲートウェイ制御装置の構成を示すブロック図である。
【図５】コントローラバッファ内のメッセージボックスの構成を示す図である。
【図６】フレームの構成を示す図である。
【図７】従来技術の問題点を示す図である。
【図８】送信が完了した際にコントローラから通知される完了通知信号を示す図である。
【図９】通信制御部の制御手順を示すフローチャートである。
【図１０】クラス分けされたメモリ１３を示す図である。
【符号の説明】
【００４３】
１０  ゲートウェイ制御装置
１１  コントローラＡ
１２  コントローラＢ
１３  メモリ
１４  ＣＰＵ
１５  ＲＯＭ
１６、１７  通信ドライバ
１８  通信制御部
１９  アプリケーション
２０  バスＡ
２１〜２６  ノード
３０  バスＢ
３１〜３６  ノード
【図１】
2007243322.tif 000003
【図２】
2007243322.tif 000004
【図３】
2007243322.tif 000005
【図４】
2007243322.tif 000006
【図５】
2007243322.tif 000007
【図６】
2007243322.tif 000008
【図７】
2007243322.tif 000009
【図８】
2007243322.tif 000010
【図９】
2007243322.tif 000011
【図１０】
2007243322.tif 000012