(57)【特許請求の範囲】
【請求項１】
複数の電子機器をバスで接続し、該電子機器間でデータの通信を行う通信システムにおける電子機器であって、
自分が出力を停止させた電子機器の識別情報を記憶する記憶手段と、
他の電子機器がバスへデータを出力することを停止させると共に該他の電子機器の識別情報を上記記憶手段に記憶し、該他の電子機器が使用していたチャンネルを使用してデータの出力を行い、該データの出力を停止する際に、前記記憶手段に記憶しておいた識別情報が示す電子機器に対してバスへデータを出力することを要請するコマンドを送信する制御手段とを具備することを特徴とする電子機器。
【請求項２】
複数の電子機器をバスで接続し、該電子機器間でデータの通信を行い、各電子機器は、他の電子機器がバスへデータを出力することを停止させると共に該他の電子機器の識別情報を記憶し、該他の電子機器が使用していたチャンネルを使用してデータの出力を行い、該データの出力を停止する際に、前記識別情報が示す電子機器に対してバスへデータを出力することを要請するコマンドを送信する通信システムにおける電子機器であって、
所定の通信チャンネルを使用している電子機器の有無を監視する監視手段と、
内部状態を検出する内部状態検出手段と、
前記監視手段及び内部状態検出手段の出力に基づいて、一定時間前記通信チャンネルを使用している電子機器が存在せず、かつ内部状態が出力可能である場合に、前記通信チャンネルを使用してバスへの出力を開始する制御手段とを具備し、
バスへデータを出力することを要請するコマンドを受信した際、前記内部状態検出手段の出力に基づいて、自分の内部状態がバスへのデータの出力が可能である時には、前記監視手段の出力に基づいて、通信チャンネルおよび帯域を確保した後、バスへのデータの出力を開始することを特徴とする電子機器。
【請求項３】
前記制御手段は、バスへデータを出力することを要請するコマンドを受信した際、自分の内部状態がバスへのデータの出力が不可能な時には、前記他の電子機器とは別の他の電子機器がバスへデータを出力することを自分が停止させているのであれば、前記受信したコマンドを該電子機器に転送することを特徴とする請求項２記載の電子機器。
【請求項４】
前記制御手段は、コマンドを転送した後に、バスへ出力する電子機器が現れないまま再び同一のコマンドを受信した場合には、再度のコマンドの転送は行わないことを特徴とする請求項２記載の電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、制御信号とデータを混在させることのできるバスで複数の電子機器を接続し、これらの電子機器間でデータの通信を行うシステムにおいて、システムの資源を有効に利用するための技術に関するものである。
【０００２】
【従来の技術】
従来、ビデオテープレコーダー（以下「ＶＴＲ」という）、テレビ受信機、カメラ一体型ＶＴＲ、コンピューター等の電子機器を制御信号とデータを混在させることのできるバスで接続し、これらの電子機器間で制御信号及びデータを送受する通信システムとしては、Ｐ１３９４シリアルバスを用いた通信システムが考えられている。
【０００３】
まず、図６を参照しながらこのような通信システムの一例を説明する。この通信システムは、電子機器としてＶＴＲ−Ａ、ＶＴＲ−Ｂ、ＶＴＲ−Ｃ及び編集機を備えている。そして、ＶＴＲ−Ａと編集機の間、編集機とＶＴＲ−Ｂの間、及びＶＴＲ−ＢとＶＴＲ−Ｃの間は、制御信号及びデータを混在させて伝送できるＰ１３９４シリアルバスで接続されている。以下本明細書では、これらの電子機器をノードと呼ぶ。
【０００４】
図６の通信システムでは、図７に示されているように、所定の通信サイクル（例、１２５μｓ）で通信が行われる。そして、デジタルＡＶ信号のようなデータを一定のデータレートで連続的に伝送するＩｓｏｃｈｒｏｎｏｕｓ通信（以下「Ｉｓｏｃｈｒｏｎｏｕｓ」を「Ｉｓｏ」と略す）と、接続制御コマンドなどの制御信号を必要に応じて不定期に伝送するＡｓｙｎｃｈｒｏｎｏｕｓ通信（以下「Ａｓｙｎｃｈｒｏｎｏｕｓ」を「Ａｓｙｎｃ」と略す）の両方を行うことができる。
【０００５】
通信サイクルの始めにはサイクルスタートパケットＣＳＰがあり、それに続いてＩｓｏパケットを送信する期間が設定される。Ｉｓｏパケットそれぞれにチャンネル番号１，２，３  ，・・・Ｎを付けることにより、複数のＩｓｏ通信を行うことが可能である。そして、送信すべき全てのチャンネルのＩｓｏパケットの送信が終了した後、次のサイクルスタートパケットＣＳＰまでの期間がＡｓｙｎｃパケットの通信に使用される。Ｉｓｏパケットはチャンネル番号と発信元ノードのノード番号が付されたヘッダを持っており、１通信サイクル内では１つのチャンネルにつき最大１パケットのみ出力できる。
【０００６】
バスにＩｓｏパケットを送出しようとするノードは、使用チャンネルとデータ伝送に必要な帯域をまず確保する。このため、バスのチャンネルと帯域を管理するノードであるレゾルバノードに、チャンネル及び必要とする帯域を申請する。
【０００７】
レゾルバノードは、図８に示すように、バスの各チャンネルの使用状態を示すレジスタ（ＣＨＡＮＮＥＬＳ  ＡＶＡＩＬＡＢＬＥ  ＲＥＧＩＳＴＥＲ）ＲＥＧ１と、バスの残りの容量を示すレジスタ（ＢＡＮＤＷＩＤＴＨ  ＡＬＬＯＣＡＴＥ  ＲＥＧＩＳＴＥＲ）ＲＥＧ２を備えている。
【０００８】
バスにＩｓｏパケットを送出しようとするノードは、これらのレジスタＲＥＧ１，２に対して、Ａｓｙｎｃパケットを用いて読み出し命令を送り、ＲＥＧ１，２の内容を読み出す。そして、空きチャンネルと空き容量があれば、Ａｓｙｎｃパケットを用いて自分が使用したいチャンネルと帯域をＲＥＧ１，２に書き込むための書き込み命令をレゾルバノードへ送る。レジスタＲＥＧ１，２への書き込みに成功すれば、バスへの出力が可能となる。
【０００９】
例えばあるチャンネルＮに帯域Ｘで出力したいノードは、ＲＥＧ１における当該チャンネルＮのビットを０にリセットし、かつＲＥＧ２の値を帯域Ｘ分だけ減算することによりバスへの出力権を得る。
【００１０】
また、バスへの出力権を放棄する時は、上記と逆の手順、すなわち、確保していた帯域値ＸをＲＥＧ２に加算し、かつＲＥＧ１の当該チャンネルＮのビットを１にセットする。これにより、使用していたチャンネルと帯域を解放する。
【００１１】
なお、レゾルバノードは、複数のノードをＰ１３９４シリアルバスに接続して通信システムを構成した時に、ＩＥＥＥ−Ｐ１３９４で規定する手法により自動的に決定される。
【００１２】
【発明が解決しようとする課題】
Ｐ１３９４シリアルバスで複数のノードが接続された通信システムにおいて、Ｉｓｏデータの出力を制御するために、出力制御レジスタを設けることが考えられている。図９に出力制御レジスタの一例を示す。
【００１３】
図９において、ＣＣはこのレジスタが設けられているノードに対してＩｓｏデータの出力を要求しているノードの数をカウントする接続カウンタの値である。このカウンタ値は自分でも他のノードからも書き換えることができる。また、ＣＨはこのノードがＩｓｏデータを出力しているバス上のチャンネル番号、ＢＷはそのノードが現在確保している伝送帯域、ＤＲはその機器が出力しているＩｓｏ通信データの転送レート、ｒはリザーブである。そして、オフ−イネーブルは、接続カウンタの値が１である時に、他の任意のノードがこの接続カウンタを０にクリアして出力を停止させても構わないかどうかを示す出力停止許可ビットである。なお、この図の上の（  ）内の数字はビット数である。
【００１４】
以上のように構成された出力制御レジスタを備えるノードが所定のチャンネルを使用してＩｓｏデータの出力を行う際の通信制御方法として、以下の特徴を有する方法が考えられている。
【００１５】
ＣＣが１以上に設定されると、そのノードはＣＨ／ＤＲ／ＢＷで指定された通信形態でバスへＩｓｏデータの出力を行う。ＣＣは他のノードからも設定が可能であるので、あるノードのＣＣが０である場合、他のノードはあるノードのＣＣを１にセットしてバスへＩｓｏデータを出力させることができる。
【００１６】
また、あるノードのＣＣをセットした他のノードはセットした数だけＣＣの値を減算することができるので、例えばＣＣを１にセットした後、ＣＣを０にセットしてそのノードにＩｓｏデータの出力を停止させることができる。
【００１７】
さらに、あるノードのＣＣが１であってもオフ−イネーブルが１であれば、他の任意のノードがＣＣおよびオフ−イネーブルを０にクリアすることでＩｓｏデータの出力を停止させ、あるノードが使用していたチャンネルおよび帯域を他の任意のノードが継続して使用しバスへＩｓｏデータを出力することができる。
【００１８】
しかしながら、前記通信制御方法では、あるノードの出力を停止させた他のノードが自分の出力を停止させた後の処理に関して、以下の（１）〜（４）に記載するような問題点があった。
【００１９】
（１）あるノードの出力を停止させた他のノードが、自らの出力を停止し、チャンネルおよび帯域を解放するように構成した場合、出力を停止させられたノードは内部的には出力可能な状態であるにもかかわらず出力できないため、バスへデータを出力するノードがなくなってしまう。
【００２０】
（２）コマンドを用いて特定のノードを指定し、データを出力させようとしても、そのノードが出力可能状態でなければ出力されず、結果としてどのノードもバスへデータを出力しなくなってしまう。
【００２１】
（３）バスへデータを出力するノードがないことを検知して通信システム内のノードが勝手にバスへデータの出力を始めるようにすると、自分が出力を停止したら次にどのノードがバスへデータを出力するのか全くわからずユーザーの混乱を招く。
【００２２】
（４）バスへの出力を停止したノードが自分以外のノードの出力制御レジスタを直接制御してバスへデータを出力させようとすると、内部状態は出力不可能であるにもかかわらず出力制御レジスタはバスへデータを出力している状態を示すことになり、内部制御の破壊につながりかねない。
【００２３】
本発明は、このような問題点を解決するためになされたものであって、通信システムの有効利用とノードの内部状態に合致したバス出力状態を実現すると共に、データを出力するノードの遷移を予測可能にした電子機器を提供することを目的とする。
【００２４】
【課題を解決するための手段】
本発明は、複数の電子機器をバスで接続し、該電子機器間でデータの通信を行う通信システムにおける電子機器であって、自分が出力を停止させた電子機器の識別情報を記憶する記憶手段と、他の電子機器がバスへデータを出力することを停止させると共に該他の電子機器の識別情報を上記記憶手段に記憶し、該他の電子機器が使用していたチャンネルを使用してデータの出力を行い、該データの出力を停止する際に、前記記憶手段に記憶しておいた識別情報が示す電子機器に対してバスへデータを出力することを要請するコマンドを送信する制御手段とを具備することを特徴とする。
【００２５】
また、本発明は、複数の電子機器をバスで接続し、該電子機器間でデータの通信を行い、各電子機器は、他の電子機器がバスへデータを出力することを停止させると共に該他の電子機器の識別情報を記憶し、該他の電子機器が使用していたチャンネルを使用してデータの出力を行い、該データの出力を停止する際に、前記識別情報が示す電子機器に対してバスへデータを出力することを要請するコマンドを送信する通信システムにおける電子機器であって、所定の通信チャンネルを使用している電子機器の有無を監視する監視手段と、内部状態を検出する内部状態検出手段と、前記監視手段及び内部状態検出手段の出力に基づいて、一定時間前記通信チャンネルを使用している電子機器が存在せず、かつ内部状態が出力可能である場合に、前記通信チャンネルを使用してバスへの出力を開始する制御手段とを具備し、バスへデータを出力することを要請するコマンドを受信した際、前記内部状態検出手段の出力に基づいて、自分の内部状態がバスへのデータの出力が可能である時には、前記監視手段の出力に基づいて、通信チャンネルおよび帯域を確保した後、バスへのデータの出力を開始することを特徴とする。
【００２６】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら、〔１〕本発明の実施例によるノードの要部構成、〔２〕Ｉｓｏ監視用受信装置、〔３〕元出力権保持ノード番号記憶装置、〔４〕出力停止時の処理、〔５〕出力要請コマンド受け取り時の処理の順序で詳細に説明する。
【００２７】
〔１〕本発明の実施例によるノードの要部構成
図１は本発明の実施の形態におけるノードの要部構成を示すブロック図である。この図１に示すように、本実施の形態におけるノードは、物理層コントローラ（ＰＨＹ）１と、リンク層コントローラ（ＬＩＮＫ）２と、ＣＰＵ３と、入力制御レジスタ４，出力制御レジスタ５及びその他のレジスタ／メモリ６からなるレジスタ／メモリ群と、Ｉｓｏ監視用受信装置７と、元出力権保持ノード番号記憶装置８と、内部状態検出装置９とを備えている。なお、以上示したのはＰ１３９４シリアルバスを介した通信を行うのに必要な部分である。したがって、ここには図示されていないが、例えばノードがＶＴＲの場合には、デジタルビデオ信号の記録／再生系等を備えている。
【００２８】
物理層コントローラ１は、Ｐ１３９４シリアルバスに接続されており、このバスのイニシャライズ、データのエンコード／デコード、アービトレーション等の機能を持つ。
【００２９】
リンク層コントローラ２は、Ａｓｙｎｃ送信ＦＩＦＯ１１と、Ａｓｙｎｃ受信ＦＩＦＯ１２と、Ｉｓｏ送信ＦＩＦＯ１３と、Ｉｓｏ受信ＦＩＦＯ１４とを備えており、Ａｓｙｎｃパケットの生成／検出、Ｉｓｏパケットの生成／検出等を行う。
【００３０】
出力制御レジスタ５は、図９を参照しながら説明したレジスタであって、その内容によってＩｓｏ送信ＦＩＦＯ１３の動作が制御される。そして、前述したように、他のノードはこのレジスタへ書き込みを行うことにより、Ｉｓｏデータの送信を制御することができる。
【００３１】
入力制御レジスタ４は、出力制御レジスタ５と同様に構成されており、その内容によってＩｓｏ受信ＦＩＦＯ１４の動作が制御される。他のノードはこのレジスタへ書き込みを行うことにより、Ｉｓｏデータの受信を制御することができる。
【００３２】
その他のレジスタ／メモリ６は、Ｐ１３９４の仕様書に規定されている各種データを記憶するためのレジスタ／メモリであるが、本発明とは直接関係がないので、ここでは説明しない。
【００３３】
Ｉｓｏ監視用受信装置７は、バス上に出力されているＩｓｏパケットが所定のチャンネルへの出力であるかどうかを監視するものである。また、元出力権保持ノード番号記憶装置８は他のノードから出力権を奪ったときに、奪った相手のノードのノード番号を記憶するものである。さらに、内部状態検出装置９は、ノードの内部状態、例えばＶＴＲであればＲＥＣ、ＰＢ等の動作モードを検出する装置である。なお、図１では、Ｉｓｏ受信ＦＩＦＯ１４の出力をＩｓｏ監視用受信装置７へ入力するように構成したが、リンク層コントローラ２内にＩｓｏ監視用受信装置７にパケットを出力するための専用のＦＩＦＯをＩｓｏ受信ＦＩＦＯ１４とは別に設けてもよい。
【００３４】
次に、このように構成されたノードの動作を説明する。Ａｓｙｎｃパケットの送信時には、ＣＰＵ３はリンク層コントローラ２内のＡｓｙｎｃ送信ＦＩＦＯ１１にデータを書き込む。このデータはＡｓｙｎｃ送信ＦＩＦＯ１１においてパケット化され、物理層コントローラ１を介してＰ１３９４シリアルバスへ送出される。
【００３５】
Ａｓｙｎｃパケットの受信時には、Ｐ１３９４シリアルバス上のパケットが物理層コントローラ１により受信され、リンク層コントローラ２内のＡｓｙｎｃ受信ＦＩＦＯ１２書き込まれる。このパケットはＣＰＵ３によって読み出され、パケットのアドレスフィールドが示すレジスタあるいはメモリへのトランザクション（ｒｅａｄ／ｗｒｉｔｅ／ｌｏｃｋ）が実行される。
【００３６】
同様に、ＣＰＵ３がＩｓｏ送信ＦＩＦＯ１３にデータを書き込むことにより、Ｉｓｏパケットの送信が行われ、Ｉｓｏ受信ＦＩＦＯ１４からパケットを読み出すことによってＩｓｏパケットの受信が行われる。
【００３７】
〔２〕Ｉｓｏ監視用受信装置
Ｉｓｏ監視用受信装置７は、Ｉｓｏ受信ＦＩＦＯ１４に書き込まれたＩｓｏパケットのヘッダを見て、それが所定のチャンネルへの出力かどうかを監視しＣＰＵ３に知らせる。また、内部状態検出装置９はユーザーの操作等により設定されたノードの内部状態を検出し、ＣＰＵ３に知らせる。ＣＰＵ３は、Ｉｓｏ監視用受信装置７によりある一定時間（例えば１秒間）そのチャンネルへ出力されているＩｓｏデータが存在しないことが検知され、かつ、内部状態検出装置９によりノードの内部状態が出力可能状態（例えばＡＶ機器におけるＰＢ状態）であるならば、ＣＰＵ３はレゾルバノードのＲＥＧ１およびＲＥＧ２にアクセスし、所定のチャンネルおよび帯域を確保する。その後、自ノードの出力制御レジスタ５のＣＣおよびオフ−イネーブルを１に設定しバスへのデータ出力を開始する。
【００３８】
図２は本発明の実施例によるＩｓｏ監視用受信装置を有するノードの動作の一例を示す図である。この図に示すように、ノードＡ，Ｂ，・・・ＮはＰ１３９４シリアルバスにより接続されている。
【００３９】
この図の（ａ）では、ノードＢがチャンネル１にＩｓｏデータを出力中である。このチャンネル１は、例えばＡＶ機器の伝送用にデフォルトで定められているチャンネルである。そして、ノードＡはチャンネル１にＩｓｏデータを出力することを希望している。ノードＡは、バスへ出力されているＩｓｏパケットを受信し、そのヘッダに書かれているチャンネル番号と発信元ノードのノード番号を見ることにより、ノードＢがチャンネル１に出力していることを知る。
【００４０】
この図の（ｂ）では、ノードＢはチャンネル１への出力を停止した後、レゾルバノードのＲＥＧ１，ＲＥＧ２にアクセスし、チャンネル１と使用帯域を解放する。ノードＡは、ヘッダにチャンネル１が書かれているＩｓｏ通信パケットを受信しなくなるので、チャンネル１への出力が停止されたことを知る。
【００４１】
この図の（ｃ）では、ノードＡは、チャンネル１への出力がないことを検知してから１秒経過したので、レゾルバノードのＲＥＧ１，ＲＥＧ２にアクセスし、チャンネル１とＩｓｏデータの伝送に必要な帯域を確保する。
【００４２】
そして、この図の（ｄ）では、チャンネル１と使用帯域の確保ができたので、チャンネル１へＩｓｏデータの出力を開始する。
【００４３】
このように、本実施の形態におけるノードによれば、バスへ出力されているＩｓｏパケットを監視し、所定のチャンネルに他のノードが出力していないことを検知すると、そのチャンネルを確保して自らバスへの出力を開始するので、どのノードもバスへＩｓｏデータを出力していないという状況がなくなる。
【００４４】
〔３〕元出力権保持ノード番号記憶装置
元出力権保持ノード番号記憶装置８は、他のノードから出力権を奪ったときに、奪った相手のノードのノード番号を記憶する。つまり、Ｉｓｏデータを出力中の他のノードの出力制御レジスタに対して出力停止の書き込み（オフ−イネーブル＝０  ，ＣＣ＝０）に成功したならば、そのノード番号を記憶する。そして、相手が使用していたチャンネルと帯域を使用して自分がバスへＩｓｏデータを出力する。その後、自分が出力を停止する際、使用チャンネルおよび帯域を解放した後、元出力権保持ノード番号記憶装置８にノード番号を記憶していたノードに対し、奪ったチャンネルへの出力を要請するコマンド（出力要請コマンド）をＡｓｙｎｃパケットで送信する。
【００４５】
図３は以上の動作の一例を示す図である。この図３においてはノードＡ，Ｂ，・・・ＮはＰ１３９４シリアルバスにより接続されている。
【００４６】
まずこの図３の（ａ）では、ノードＢがチャンネル１に出力している。このチャンネル１は、前述したように、例えばＡＶ機器の伝送用にデフォルトで定められているチャンネルである。そして、ノードＢのＣＣ＝１、オフ−イネーブル＝１である。したがって、他の任意のノードがノードＢのＣＣをクリアして出力を停止させても構わないことになっている。
【００４７】
この図３の（ｂ）では、ノードＡがノードＢの出力を停止させ、出力権を奪うために、ノードＢの出力制御レジスタ中のＣＣ及びオフ−イネーブルを０にクリアする。その結果、ノードＢはチャンネル１への出力を停止する。ノードＡは元出力権保持ノード番号記憶装置８にノードＢのノード番号を記憶する。そして、ノードＢから奪ったチャンネル１と伝送帯域を使用してバスへＩｓｏデータを出力する。もし、自分が必要とする帯域がノードＢから奪い取った帯域では不足する場合には、レゾルバノードのＲＥＧ２にアクセスして必要な帯域を確保する。
【００４８】
そして、この図３の（ｃ）では、ノードＡはＣＣ及びオフ−イネーブルを０にクリアしてバスへのＩｓｏデータの出力を停止する。そして、レゾルバノードのＲＥＧ１，ＲＥＧ２にアクセスして、チャンネルと伝送帯域を解放する。さらに、元出力権保持ノード番号記憶装置８にノード番号を記憶しておいたノードＢに対して、Ａｓｙｎｃパケットを用いて、Ｉｓｏデータをチャンネル１へ出力することを要請するコマンドを送信する。
【００４９】
なお、この時、図２を参照しながら説明した、バスへＩｓｏデータを出力するノードが存在しないことを検知して自らバスへＩｓｏデータを出力するノードは、ノードＡが出力を停止し、ノードＢに出力要請コマンドを送り、その後、その出力要請コマンドを受け取ったノードＢがＩｓｏデータの出力を開始できるのに十分な時間を見計らった後、チャンネルおよび帯域の確保といった出力処理を開始することが望ましい。
【００５０】
〔４〕出力停止時の処理
ノードがＩｓｏデータの出力を停止する際の処理フローを図４に示す。この処理フローは、図３に示したような、他のノードから出力権を奪った場合だけでなく、自らチャンネルと伝送帯域を確保してＩｓｏデータを出力し、その後出力を停止する場合も含む。
【００５１】
この図４において、ステップＳ１では、自分の出力制御レジスタのＣＣ及びオフ−イネーブルを０にクリアし、出力を停止する処理を示す。また、ステップＳ２は、レゾルバノードのＲＥＧ１，ＲＥＧ２にアクセスして、Ｉｓｏデータの出力に使用していたチャンネルと伝送帯域を解放する処理を示す。さらに、ステップＳ３は自分が他のノードから出力権を奪っていたかどうかを判断する。つまり、自らチャンネルと伝送帯域を確保してＩｓｏデータを出力した後にその出力を停止する場合は、これで処理を終了する。一方、図３に示したように、他のノードから出力権を奪ってＩｓｏデータを出力した後にその出力を停止する場合は、ステップＳ４へ移行し、出力権を奪った相手のノードに対して、Ａｓｙｎｃパケットを用いて、奪ったチャンネルへのＩｓｏデータの出力を要請するコマンドを送信する。
【００５２】
〔５〕出力要請コマンド受け取り時の処理
図５は各ノードが前述した出力要請コマンドを受けとった時の処理を示すフローチャートである。
【００５３】
各ノードは、この出力要請コマンドを受け取った時（Ｓ１１）、その内部状態が出力可能な状態であるならば（Ｓ１２でＹｅｓ）、チャンネルおよび帯域をレゾルバノードの所定のＲＥＧ１，ＲＥＧ２への書き込みによって確保し（Ｓ１３）、また、自ノードの出力制御レジスタへの書き込み（ＣＣ＝１，オフ−イネーブル＝１）によってＩｓｏデータの出力を開始する（Ｓ１４）。
【００５４】
もし、出力要請コマンドを受けとった時（Ｓ１１）、その内部状態が出力可能な状態でないならば（Ｓ１２でＮｏ）、他のノードからバスへの出力権を奪ったノードがバスへのＩｓｏデータの出力を停止して以来最初のコマンドかどうか検査する（Ｓ１５）。そして、最初のコマンドであれば（Ｓ１５でＹｅｓ）、以前他のノードから出力権を奪ったことがあるかどうか前述の元出力権保持ノード番号記憶装置８を見て確認し、奪ったことがあるのならば（Ｓ１６でＹｅｓ）、その相手のノードに出力要請コマンドを転送する（Ｓ１７）。奪ったことがないのならば何もしない（Ｓ１６でＮｏ）。
【００５５】
また、出力要請コマンドを受信した時（Ｓ１１）、前述と同様にノードの内部状態が出力可能でないならば、他のノードからバスへの出力権を奪ったノードがバスへのＩｓｏデータの出力を停止して以来最初のコマンドかどうか検査し、２回目以降の同一コマンドの受信であるならば（Ｓ１５でＮｏ）、コマンドの転送がループになっている可能性があり、無用な通信トラフィックを起こさないためにコマンドの転送を中止する。
【００５６】
なお、本実施の形態ではバスとしてＰ１３９４シリアルバスを想定しているが、ノード間でデータおよび制御信号をやりとりできるバスならば任意のバスを使用してよい。また、バスへの出力を要請するコマンドは、各ノード間で使用する共通の所定のチャンネルへの出力を意味するもので、かつ各ノードで同一の解釈となるものであれば、そのフォーマットはどのようなものであってもよい。さらに、コマンドの転送がループになっているような場合、わざわざ転送を中止せず、どれかのノードが出力するまで継続することも可能である。
【００５７】
【発明の効果】
以上詳細に説明したように、本発明によれば、以下のような効果が得られる。
【００５８】
（１）バスへのデータの出力を監視し、どのノードもバスに出力していないことを検知することにより、自らバスへの出力を開始するので、バス上にどのノードも出力していないという状況がなくなる。これにより、通信システムの有効利用が達成されるだけでなく、ノードの内部状態に合致したバス出力状態が得られる。
【００５９】
（２）バスへの出力権を奪い取った相手のノード番号を記憶しておくことにより、出力停止時にそのノードへ出力要請コマンドを送信することができ、また、そのコマンドを解釈／実行することにより、バス全体として出力ノードの遷移が予測可能であり、かつ自然で違和感のないものにすることができる。
【００６０】
（３）出力要請コマンドを受け取っても、内部状態により出力が不可能である場合には、受信した出力要請コマンドを転送することにより、前記と同様に出力ノードの遷移をより自然なものとすることができる。
【００６１】
（４）バスへの出力ノードが現れないうちに出力要請コマンドが複数来た場合、そのコマンドを転送しないことにより、バス上のトラフィックを低減し、帯域という資源の有効利用が計れる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるノードの要部構成を示すブロック図である。
【図２】本発明の実施の形態におけるＩｓｏ監視用受信装置を有するノードの動作の一例を示す図である。
【図３】本発明の実施例による元出力権保持ノード番号記憶装置を有するノードの動作の一例を示す図である。
【図４】出力を停止する際の処理を示すフローチャートである。
【図５】出力要請コマンドを受けとった時の処理を示すフローチャートである。
【図６】Ｐ１３９４シリアルバスを用いた通信システムの一例を示す図である。
【図７】Ｐ１３９４シリアルバスの通信サイクルの一例を示す図である。
【図８】レゾルバノードの構成を示す図である。
【図９】出力制御レジスタの内容を示す図である。
【符号の説明】
３  ＣＰＵ、７  Ｉｓｏ監視用受信装置、８  元出力権保持ノード番号記憶装置、９  内部状態検出装置
【図１】
0003627726.tif 000002
【図２】
0003627726.tif 000003
【図３】
0003627726.tif 000004
【図４】
0003627726.tif 000005
【図５】
0003627726.tif 000006
【図６】
0003627726.tif 000007
【図７】
0003627726.tif 000008
【図８】
0003627726.tif 000009
【図９】
0003627726.tif 000010