(57)【要約】【課題】先のフレームと同じ優先順位の後続フレームを、アービトレーションタイミングに遅れた場合でもバス上に連続して送信することができる制御回路を提供する。【解決手段】通信ノードが、バスに出力された第１のフレームに連続するフレームがあるか否かを示すデータを保持する保持回路と、第１のフレームの送信終了後に第２のフレームを出力するとき、保持回路に保持されたデータを参照して第２のフレームをバスに出力するか否かを決定する制御回路を備える。【選択図】      図１
2006217494.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信ノードが共通のバスに接続され、前記複数の通信ノードがそれぞれバスの使用状況を確認して送信の可否を判断する通信システムにおいて、
前記複数の通信ノードの少なくとも一つは、
バスに出力された第１のフレームに連続するフレームがあるか否かを示すデータを保持する保持回路と、
前記第１のフレームの送信終了後に第２のフレームを出力するとき、前記保持回路に保持されたデータを参照して第２のフレームを前記バスに出力するか否かを決定する制御回路を備えることを特徴とする通信システム。
【請求項２】
前記制御回路は、前記第１のフレームと第２のフレームの優先順位を比較して前記第２のフレームを前記バスに出力するか否かを決定することを特徴とする請求項１記載の通信システム。
【請求項３】
前記制御回路は、前記保持回路に前記データが保持されていることに応答して、前記第１のフレームのＩＤと、前記第２のＩＤとの比較を実行させることを特徴とする請求項１記載の通信システム。
【請求項４】
前記少なくとも一つの通信ノードは、
前記バスに出力された前記第１のフレームのＩＤを保持するＩＤ保持回路と、
メッセージバッファから読み出された前記第２のフレームのＩＤと前記ＩＤ保持回路に保持された前記第１のフレームのＩＤとを比較する比較器と、
を備えることを特徴とする請求項１記載の通信システム。
【請求項５】
バスがアイドル状態か否かを判定するアイドル状態判定ステップと、
前記バスに出力された最新のフレームに連続するフレームが有るか否か判定する連続フレーム判定ステップと、
前記最新のフレームに連続するフレームがあるとき、前記連続するフレームと送信しようとするフレームとの優先順位を比較し、前記送信しようとするフレームの送信を実行するか否かを決定するフレーム送信ステップとを有することを特徴する通信方法。
【請求項６】
前記フレーム送信ステップは、前記送信しようとするフレームの優先順位が前記連続するフレームよりも高いときには前記送信しようとするフレームの送信を実行することを有することを特徴とする請求項５記載の通信方法。
【請求項７】
前記フレーム送信ステップは、
前記送信しようとするフレームの優先順位が前記連続するフレームよりも高くないときには前記送信しようとするフレームの送信を保留することを特徴とする通信方法。
【請求項８】
前記フレーム送信ステップは、
前記バスにフレームのＩＤを送信するステップと、
前記バスに出力されたＩＤとバスに出力中のＩＤとを比較し、一致したとき前記バスにデータを出力することを特徴とする請求項５記載の通信方法。
【請求項９】
バスに出力された第１のフレームに連続するフレームがあるか否かを示すデータを保持する保持回路と、
前記バスに出力された第１のフレームの送信終了後に前記第１のフレームに連続しない第２のフレームを出力するとき、前記保持回路に保持された前記データを参照して第２のフレームを前記バスに出力するか否かを決定する制御回路を備えることを特徴とする通信回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム及び通信方法に関し、特に、マルチマスタの通信システム及び通信方法に関する。
【背景技術】
【０００２】
近年、複数の通信ノードがバスに接続され、バスが解放されているときには複数の通信ノードがデータをバス上に送信することができるマルチマスタの通信システムが注目されている。
【０００３】
このような通信システムでは、図７に示すように、不特定多数の通信ノード１Ａ、１Ｂ、１Ｃが共通のバスに接続されるため、通信ノードに対して共通のバス使用権の調停を行う調停回路を備えておらず、個々の通信ノードがバスの使用状況をモニタして送信の可否を判断している。バス使用権の調停回路を有していないマルチマスタの通信システムとしては、例えば、車内ＬＡＮ等に用いられているController Area Network（ＣＡＮ）等が存在する。
【０００４】
マルチマスタの通信システムにおいて、各通信ノードは、図８に示すように、内部バスに接続されたＣＰＵ１４、ＣＰＵ１４が処理するデータの保存等に用いられるメインＲＡＭ１５、通信ノード１の外部に設けられたセンサ３等の情報を取得する外部Ｉ／Ｆ１６、及び通信をコントロールするＣＡＮ制御ブロック４とから構成される。ＣＡＮ制御ブロック４、ＣＡＮバス２上のシリアルデータをパラレルデータに変換するシフトレジスタ１３と、送受信するデータを保持する受信バッファと送信バッファとからなるメッセージバッファ１２と、メッセージバッファ１２とシフトレジスタ１３との間のデータ授受を制御するＣＡＮコントローラ１１とから構成される。ＣＡＮコントローラ１１は、図９に示すように、メッセージバッファ１２からのフレーム（ＩＤ、ＤＬＣ、データ）を受け取りシフトレジスタ１３に供給する送信テンポラリバッファ１１２と、送信データ及び受信データを受けると共にシフトレジスタ１３へのクロック及びクロック信号を供給し、送信イネーブル信号を出力する制御回路とから構成される。
【０００５】
このような構成の通信システムにおいては、バス上に一度に送ることができる通信量（単位通信量）の上限はプロトコルによって制限されており、通信ノードは大きなデータを送信する場合、データを複数の単位通信量の固まりに分割し、分割されたデータを含む複数のフレームを順次バス上に送り出すことによって単位通信量を超えるデータの送信を可能としている。そのため、上述のマルチマスタの通信システムでは、フレームを送り出す度に、バスの通信状態を確認することが必要となる。
【０００６】
たとえば、一度に８バイトのデータを送ることができる通信システムにおいて、１６バイトのデータを送る場合には２回にデータを分けて送ることになる。そのため、１回目の８バイトのデータを送信する際にバス通信状態を確認して送信を行い、２回目の８バイトのデータを送る際にも、同様に、バス通信状態を確認して送信を行うことになり、併せて２回のバス通信状態確認が必要となる。このような、通信システムとして公知文献１、公知文献２に記載されるようなものが知られている。また、公知文献３に記載されるバスアクセス方式も存在する。
【０００７】
このような従来の通信システムにおいて、通信ノードからバスへのデータ送信は、図６に示すように、以下のフローに従って処理される。
【０００８】
送信を行おうとする通信ノードは、送信準備が完了すると送信のフローを開始し、最初に、バスの状態を確認するステップＳ６１を実行する。ステップＳ６１では、バスがアイドル状態でないときはアイドル状態となるまでバスの状態確認が繰り返し実行され、アイドル状態である場合には送信のステップＳ６２への移行が実行される。
【０００９】
ステップＳ６２では、フレームの送信開始を示すStart Of Flame（ＳＯＦ）の送信の実行に続いて、自分の通信ノードから出力されるフレームの優先順位を示すＩＤ番号の送信が実行され、次のステップＳ６３への移行が実行される。
【００１０】
ステップＳ６３では、バス上に送信されているＩＤが出力中のフレームのＩＤと一致するか否かが判定され、一致しなかった場合には、自分よりも優先順位の高いＩＤを有するフレームが他の通信ノードからバス上に送信されていると判断し、優先順位の低いフレームの送信を中断し、優先順位の高いＩＤのフレームの受信を行い、一致した場合にはデータの送信を実行するステップＳ６４に移行が実行される。なお、フローには記載していないが、フレームのＩＤ以外の部分で自分の送信した値と違うものが観測されたときはエラーが発生したものとして処理される。
【００１１】
ステップＳ６４では、データの送信を完了するとフレームの終了を示すEnd of Flame(ＥＯＦ)を出力し、送信のフローを終了する。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ここで、通信ノードＡが、１フレームでは８バイトのデータしか送ることができないデータ構造において１６バイトのデータを送信する場合について考える。通信ノードＡは、１６バイトのデータを８バイトのデータを有する第１及び第２フレームに分けて送信を行う。通信ノードＡは、第１フレームを送信するため、バス通信状態を確認し、図４に示すように第１フレームの送信（高優先ＩＤ  Ａ及びデータ  Ａ）を実行する。第１フレームの送信を完了した通信ノードＡは、フレームの終了を知らせるEnd Of Flame（ＥＯＦ）を出力し、その後、後続の第２フレームの送信準備、すなわち、制御ブロックがメッセージバッファからＩＤシフトレジスタへＩＤを転送し、バスへＩＤを送信するための準備を行う。ここで、メッセージバッファの中に次に送信されるべきフレーム、すなわち、ＩＤ及びデータが保持されていれば、当該フレームをメッセージバッファから読み出すことによって送信準備を遅滞なく行うことができる。
【００１３】
しかしながら、メッセージバッファへの次のフレームを書き込む処理は、図５に示すように送信準備とは非同期で動作するＣＰＵによって行われている。そのため、ＣＰＵが別の処理を実行することによって、先に送信した第１フレームに続く後続の第２フレームをメッセージバッファに送るタイミングが遅れてしまうことがある。その結果、ＥＯＦにインターフレームスペース（ＩＦＳ）を加えたタイミングで発生するアービトレーションタイミングが発生した時点で、後続の第２フレームのメッセージバッファへの書き込みが完了しておらず、他の通信ノードＢから出された低い優先ＩＤを持つフレームの送信が先に実行されることになる。
【００１４】
そのため、通信ノードＡは後続の第２フレームの送信を、通信ノードＢが通信を終了してＥＯＦを出力し、バスがアイドル状態となったことを検出するまで待つことになる。特に、通信ノードＡのＩＤが通信ノードＢのＩＤよりも高い優先順位を持つ場合においては、本来優先されるべき通信ノードＡの第２フレームの送信が、バスのアイドル状態を検出した優先順位の低い通信ノードＢのフレーム送信によって阻害され、通信ノードＡの第２フレーム中のデータを必要とする処理が遅れてしまうという問題が発生する。
【００１５】
したがって、本発明は、優先順位の高い連続するフレームをバス上に連続して送信することができる制御回路を提供することを目的とする。
【００１６】
【特許文献１】特開平９−６７２１号公報
【特許文献２】特開昭６１−１９５４５３号公報
【特許文献３】特開平３−２７８１５６号公報
【課題を解決するための手段】
【００１７】
本発明の通信システムは、複数の通信ノードが共通のバスに接続され、前記複数の通信ノードがそれぞれバスの使用状況を確認して送信の可否を判断する通信システムにおいて、
前記複数の通信ノードの少なくとも一つは、
バスに出力された第１のフレームに連続するフレームがあるか否かを示すデータを保持する保持回路と、
前記第１のフレームの送信終了後に第２のフレームを出力するとき、前記保持回路に保持されたデータを参照して第２のフレームを前記バスに出力するか否かを決定する制御回路を備えることを特徴とする。
また、本発明の通信方法は、バスがアイドル状態か否かを判定するアイドル状態判定ステップと、
前記バスに出力された最新のフレームに連続するフレームが有るか否か判定する連続フレーム判定ステップと、
前記最新のフレームに連続するフレームがあるとき、前記連続するフレームと送信しようとするフレームとの優先順位を比較し、前記送信しようとするフレームの送信を実行するか否かを決定するフレーム送信ステップとを有することを特徴する。
【発明の効果】
【００１８】
本発明によれば、同じＩＤを有する連続するフレームの通信において、連続するフレームの優先順位に基づいて、送信候補となっているフレームの送信の可否を判断することができるため、当該連続するフレームに基づいて行われる処理を優先順位に基づいて遅滞なく実行することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２０】
本実施の形態による、ＣＡＮ制御ブロックの構成を図１に示す。ＣＡＮ制御ブロック２１は、制御回路２１１、ＤＬＣ保持回路２１３、ＩＤ保持回路２１４、送信テンポラリバッファ２１２、比較器２１５から構成される。なお、制御回路２１１は、メッセージバッファ１２から読み出して送信するフレームを選択するための信号及び受信したフレームをメッセージバッファに格納するための信号も生成しているが、本発明とは直接関係しないため詳しい説明を省略する。
【００２１】
まず最初に、マルチマスタの通信システムでは、マルチキャスト、すなわち、共通バスに接続されている複数の通信ノードは、同じフレームを受信するという機能を備えており、共通バスに出力されたフレームをすべての通信ノードが受け取っているため、フレーム内のＩＤを特定することができると共に、データ長を示すData Length Code（ＤＬＣ）を特定することができる。このマルチキャストの機能によって、ＤＬＣ保持回路２１３は、共通バス上に送信された最新のフレームに入っているデータの長さ（例えば、フレーム間に跨るデータの長さ）を示すコードを保持することができ、同様に、ＩＤ保持回路２１４は、共通バス上に出された最新のフレームのＩＤを保持することができる。
【００２２】
制御回路２１１は、送信要求のフラグが立っているフレームがメッセージバッファ１２内に存在する場合、当該フレームを送信テンポラリバッファに取り出し、送信テンポラリバッファ２１２内に記憶されたフレームの送信ＩＤとＩＤ保持回路２１４に保持されたＩＤとを比較させる比較信号を出力する。比較信号を受け取った比較器２１５は、ＩＤ保持回路２１４に保持されたＩＤと、現在制御ブロックを含むＣＡＮ制御ブロック２１が送信しようとしているフレームのＩＤとを比較し、送信テンポラリバッファの送信ＩＤがＩＤ保持回路に保持されたＩＤより高い優先順位を示すか否かの比較結果信号を制御回路に出力する。
【００２３】
このとき、制御回路２１１は、ＤＬＣ保持回路２１３に保持されたデータ長から、最新ＩＤのフレームに続く後続フレームがあると判断した場合には、送信テンポラリバッファ２１２の送信ＩＤがＩＤ保持回路２１４のＩＤより高い場合を除いて送信を保留し、最新ＩＤのフレームに続く後続フレームがない場合には、送信テンポラリバッファ２１２の送信ＩＤとＩＤ保持回路２１４に保持されたＩＤとを比較することなく送信テンポラリバッファ２１２からシフトレジスタ１３へフレームを転送すると共に、送信許可信号ＴｘＥＮをゲート回路に供給して送信を開始する。送信が開始されると、制御回路２１１から供給されるクロックに応答して、シフトレジスタ１３に転送されたフレームは、順次共通バス２に出力される。このとき、ＩＤが一致した場合には、送信要求のフラグが立っているフレームが最新のフレームに後続するフレームで有ると認識し、送信の処理を実行する。
【００２４】
制御回路２１１は、送信時において、後続フレームを送る場合、先行して送信したフレームに続くフレームであることが、当該先行して送信したフレームのＤＬＣにデータ長を表すコードが含まれているため分かる。また、受信時において（他のノードから出力されたフレームとの競合負けも含む）、受信したフレームに後続フレームが有ることがＤＬＣ保持回路２１３から分かる。したがって、ＣＡＮコントローラ２１が、受信したフレームに後続フレームが有ることが分かっている状態において、たまたま同じＩＤのフレームを送信しようとした場合には、自分が送信しようとしているフレームが受信したフレームに後続するフレームでないことを判断することができるため、送信を中止する。このような制御回路２１１の制御によって、先行して送信されたフレームを送信したＣＡＮコントローラ２１が、先行して送信されたフレームに後続するフレームを送信することができる。
【００２５】
なお、各通信ノードが最初のフレームを共通バスに出力する場合、すなわち、ＤＬＣ保持回路２１３及びＩＤ保持回路２１４が初期状態の時には、対比するコードが存在しない。したがって、制御回路２１１は、比較回路２１５に比較信号を出力しないため比較は実行されず、送信テンポラリバッファ２１２に保持されたフレームが送信される。
【００２６】
上記の通信ノードＡと通信ノードＢの動作について、図２を用いて説明する。
【００２７】
まず、通信ノードＡがタイミングｔ０で高優先ＩＤＡを有するフレーム（ＩＤ、ＤＬＣ（後続フレーム有）、データを含む）のＣＡＮバスへの出力を開始する。ＣＡＮバスに出力された高優先フレームは、通信ノードＢ及びその他の通信ノードによってフレーム受信される。通信ノードＡがフレームを送信している間に、通信ノードＢのメッセージバッファに送信フレームが書き込まれると、通信ノードＢ内で送信要求ＴｘＲｅｑがアクティブ（本例では、ハイレベル）となる。通信ノードＡがフレームを順次送信し、ＤＬＣの送信が完了した時点で通信ノードは受信したフレームから、高優先フレームに後続のフレームがあることを検出する。通信ノードＡは、ＤＬＣに続いてデータを出力し、データの出力が完了した後、End of Flame（ＥＯＦ）とインターフレームスペース（ＩＦＳ）を出力してフレームの送信を完了する。送信要求のあったフレームの送信が完了すると通信ノードＡは、送信要求ＴｘＲｅｑをインアクティブ（本例では、ローレベル）に設定する。ＥＯＦとＩＦＳの期間が終了すると、バスがアイドル状態となるため、終了した直後のｔ１にアービトレーションタイミングとなる。アービトレーションタイミングは、各通信ノードがＣＡＮバスにＩＤの出力を開始するタイミングである。
【００２８】
ここで、通信ノードＡは、先ほど送ったフレームに後続するフレームが有ることを示すＤＬＣを送っているが、ＣＰＵからメッセージバッファへの書き込みが完了しておらず、アービトレーションタイミングｔ１にＩＤを出力することができない。通信ノードＢは、先ほどのフレームに後続するフレームがあることを受け取っており、先ほど送られたフレームのＩＤと通信ノードＢが送ろうとしているフレームのＩＤとを比較した結果、後続するフレームの方が、優先順が高いと判断するため、アービトレーションタイミングｔ１ではフレームの送信を行わず、フレームＷａｉｔ状態とする。
【００２９】
このため、通信ノードＡにおいて、メッセージバッファへの後続するフレームの書き込みがアービトレーションタイミングｔ１よりも遅れて行われ、それによって送信要求ＴｘＲｅｑがアクティブになったときでも、他の通信ノードが送ろうとした後続フレームよりも優先順位の低い送信はフレームＷａｉｔ状態となっている。このように、バスがアイドル状態を維持しているため、通信ノードＡは、他の通信ノードからのフレーム送信にじゃまされることなく高優先ＩＤを有する後続フレームの送信をタイミングｔ２で実行することが可能となる。
【００３０】
本例では、後続するフレームに更に後続するフレームがないため、タイミングｔ３でＣＡＮバスに出力された後続フレームのＤＬＣを受け取った各通信ノードは、次のアービトレーションタイミングｔ４でフレームＷａｉｔ中であった通信ノードＢのフレーム送信が実行されることになる。
【００３１】
次に、各通信ノードの動作フローについて、図３を参照して説明する。
各通信ノードは、送信要求のあるフレームが存在する場合に、以下のフローに従って制御を実行する。
【００３２】
最初に、ステップＳ３１で、バスがアイドル状態か否かを判断し、アイドル状態でない場合にはバスがアイドル状態となるまで待ち、バスがアイドル状態の時には、次のステップＳ３２に進む。  
ステップＳ３２で、ＣＡＮバス上に送信された最新のフレームに後続のフレームが有るか否かを確認し、後続フレームが無い場合にはステップＳ３５へ進み、後続フレームがある場合には、ステップＳ３３に進む。
【００３３】
ステップＳ３３で、ノードが後続フレームと同じＩＤ の先行フレームを受信したノード、すなわち先行フレームを送信していないノードの場合にはステップＳ３４に進み、ノードが後続フレームと同じＩＤの先行フレームを送信したノードの場合にはステップＳ３６に進む。
【００３４】
ステップＳ３４で、後続フレームのＩＤと送信テンポラリバッファ内の送信要求のあるフレームのＩＤとを比較し、後続フレームのＩＤの優先順位が送信要求のあるフレームのＩＤよりも低い優先順位の場合にはステップＳ３６へ進み、後続フレームのＩＤの優先順位が送信要求のあるフレームのＩＤの優先順位と同じか低い場合にステップＳ３５へ進む。
【００３５】
ステップＳ３５で、優先順位の高いＩＤを有する後続フレームの送信完了を待ってステップＳ３１へ進む。すなわち、送信要求のあった送信テンポラリバッファ内のフレームの優先順位が低いため、当該フレームの送信を次のアービトレーションタイミング（バスアイドル）まで保留することを実行する。
【００３６】
ステップＳ３６で、送信テンポラリバッファ内のフレームのＩＤをＣＡＮバス上に送信し、ステップＳ３７に進む。
【００３７】
ステップＳ３７で、通信ノードがＣＡＮバスに送信したＩＤとＣＡＮバス上に送信されたＩＤとを比較し、ＩＤが一致した場合には、自分が送ったＩＤがアービトレーションで勝った、すなわち、優先順位が一番高かったとして、次のステップＳ３７に進み、ＩＤが一致しなかった場合には、自分が送ったＩＤが他の通信ノードから出力されたＩＤにアービトレーションで負けた、すなわち、優先順位が低かったとして他の通信ノードから出力されたフレームの受信を実行する。
【００３８】
ステップＳ３８で、優先順位が一番高かったフレームのＤＬＣ及びデータを送信し、フレームの終了としてＥＯＦを送信して送信を完了する。
【００３９】
このように、本実施の形態では、連続する後続のフレームがあることを検出して、現在送信テンポラリバッファの中に有るフレームの優先順位と、後続フレームの優先順位とを比較し、後続のフレームの優先順位が高い場合には、現在送ろうとしている優先順位の低いフレームの送信を保留し、優先順位の高いフレームの送信完了を待ことになる。
【００４０】
これによって、優先順位の高い、連続したフレームの送信を、優先順位の低いフレームによって妨げられることが無くなり、優先順位の高いフレームに基づく処理を遅滞なく実行することが可能となる。
【００４１】
特に、ＣＡＮ通信の場合には、Data Length Code（ＤＬＣ）がフレームの中に入っているため、ＤＬＣを利用することによって、プロトコルを変更することなく実現することができる。
【００４２】
また、本実施例では、ＣＡＮプロトコルを例にして説明を行ったが、本発明はＣＡＮプロトコルに限定されるものではなく、他の通信方法の場合においても、フレームの中に、連続する後続のフレームがあることを示すコードを付加することによって、同様の効果を得ることができる。
【００４３】
また、本発明では、シリアル通信であるＣＡＮを例にして説明したが、同様の課題を有するパラレル通信にも適用することができる。
【図面の簡単な説明】
【００４４】
【図１】本発明によるＣＡＮコントローラを示すブロック図である。
【図２】本発明による通信ノードＡ及びＢの動作タイミング示すタイミング図である。
【図３】本発明による各通信ノードの動作フローを示すフロー図である。
【図４】従来の通信ノードＡ及び通信ノードＢの動作タイミングを示すタイミング図である。
【図５】通信ノード中でのＣＰＵの動作タイミングを示すタイミング図である。
【図６】従来の各通信ノードの動作フローを示すフロー図である。
【図７】バスと通信ノードとの接続を示すシステム図である。
【図８】各通信ノードの構成を示すブロック図である。
【図９】従来のＣＡＮコントローラの構成を示すブロック図である。
【符号の説明】
【００４５】
１、１Ａ，１Ｂ，１Ｃ  通信ノード
１１  ＣＡＮコントローラ
１２  メッセージバッファ
１３  シフトレジスタ
１３１  ＩＤ・ＤＬＣシフトレジスタ
１３２  データシフトレジスタ
１４  ＣＰＵ
１５  メインＲＡＭ
１６  外部Ｉ／Ｆ
２  ＣＡＮバス
２１１  制御回路
２１２  送信テンポラリバッファ
２１３  ＤＬＣ保持回路
２１４  ＩＤ保持回路
２１５  比較器
３  センサ
４  ＣＡＮ制御ブロック
【図１】
2006217494.tif 000003
【図２】
2006217494.tif 000004
【図３】
2006217494.tif 000005
【図４】
2006217494.tif 000006
【図５】
2006217494.tif 000007
【図６】
2006217494.tif 000008
【図７】
2006217494.tif 000009
【図８】
2006217494.tif 000010
【図９】
2006217494.tif 000011