(57)【要約】【課題】共有データ量によらず通信のワーストレイテンシを小さくし、ソフトウェア負担が小さいデータ通信システムを実現する。【解決手段】シリアルバスインタフェース１０３を介してシリアルバス１０１に接続する複数の処理装置１００において、各処理装置間を順次接続してシリアルバスの送信権の受渡しを行う通信制御線１０２を設け、通信制御線１０２に接続して送信権の受け渡しを行うと共に、自処理装置内の送信権の状態を管理する送信権管理手段１０５と、送信権が有効の場合はデータ送信を開始し、送信権が無効の場合はデータ送信を保留するデータ送信手段１０４と、初期化時に１台の処理装置の送信権のみを有効とするように、送信権の初期状態を設定する状態初期化手段１０６を備えるデータ通信システム。【選択図】図１
2008193262.tif 000002
【特許請求の範囲】
【請求項１】
シリアルバスインタフェースを備えた複数の処理装置を、シリアルバスを介して相互に接続したデータ通信システムであって、
前記処理装置間を順次接続して、シリアルバスへのデータ送信を許可する送信権の受渡しを行う通信制御線を設け、
前記処理装置は、前記通信制御線に接続し、送信権の受け渡しを行うと共に、自処理装置内の送信権の状態を管理する送信権管理手段と、
自処理装置の送信権が有効の場合はシリアルバスへのデータ送信を開始し、送信権が無効の場合はデータ送信を保留するデータ送信手段と、
初期化時に、シリアルバスに接続する複数の処理装置のうち、１台の処理装置の送信権のみを有効とするように、自処理装置の初期状態を設定する状態初期化手段とを備えたことを特徴とするデータ通信システム。
【請求項２】
請求項１記載のデータ通信システムにおいて、
前記送信権管理手段は、隣接する処理装置から前記通信制御線を介して送信権受渡し信号を受信し、自処理装置の送信権を有効化する処理と、
前記データ送信回路の状態を判定し、保留中の送信データが存在しない場合は、送信権受渡し信号を受信した処理装置とは反対側に隣接する処理装置に送信権受渡し信号を送信し、保留中の送信データが存在する場合は、前記データ送信手段のデータ送信を開始し、データの送信完了後に送信権受渡し信号を反対側に隣接する処理装置に送信する処理と、
送信権受渡し信号の送信と同時に、自処理装置の送信権を無効化する処理とを行うことを特徴とするデータ通信システム。
【請求項３】
請求項１記載のデータ通信システムにおいて、
前記通信制御線をリング状ではなく、端部の処理装置では一方の通信制御線が開放状態となるように接続し、
前記状態初期化手段は、前記通信制御線が開放状態であることを検出する開放検出手段と、
２つある通信制御線のうち、第１の通信制御線が開放状態であった場合は、初期化において自処理装置の送信権を有効化し、第１の通信制御線が開放状態でなかった場合は、初期化において自処理装置の送信権を無効化するように初期状態を設定する送信権初期化手段とから構成し、
前記送信権管理手段は、隣接する処理装置に送信権受渡し信号を送信する処理において、一方の通信制御線が開放状態の場合は、他方の通信制御線から送信権受渡し信号を受信した後、送信権受渡し信号を受信した側の通信制御線に折り返し送信権受渡し信号を送信する処理を行うことを特徴とするデータ通信システム。
【請求項４】
請求項１記載のデータ通信システムにおいて、
前記処理装置は、データを格納する記憶手段と、
前記記憶手段へのアクセス要求を出す処理手段と、
前記処理手段から前記記憶手段へのライトアクセス要求があった場合は、前記記憶手段にデータを書き込むと同時に、書込み先のアドレスとデータとを付加したデータ送信要求を前記データ送信手段に送り、前記処理手段から前記記憶手段へのリードアクセス要求があった場合は、前記記憶手段から該当データを読み出して前記処理手段へ渡すインタフェース手段と、
シリアルバスに接続する他の処理装置から送信されたデータを受信し、前記記憶手段に格納するデータ受信手段を備えたことを特徴とするデータ通信システム。
【請求項５】
請求項４記載のデータ通信システムにおいて、
前記データ受信手段により受信した受信データのアドレス情報を、複数回分保持する受信アドレスバッファと、
前記送信手段が送信するアドレスとデータに基づいて訂正符号を生成し、送信データに付加する符号生成手段と、
前記データ受信手段が受信したアドレスとデータと訂正符号に基づいて通信エラーの有無を判定し、通信エラーが発生しかつ訂正符号を用いたエラー訂正が可能である場合はエラー訂正を実施し、通信エラーが発生しかつエラー訂正が不可能である場合はエラー信号を生成するエラー訂正手段と、
前記エラー訂正手段が生成したエラー信号を受けて、何回前の受信データでエラーが発生したかの情報を含む再送要求コマンドを生成し、前記データ送信手段に送る再送要求生成手段と、
前記データ受信手段が再送要求コマンドを受信した場合、再送が必要なデータが何回前の受信データかを判定し、前記受信アドレスバッファを参照して再送が必要なデータの格納アドレスを取得する再送アドレス生成手段と、
前記再送アドレス生成手段により取得したアドレスを受けて、前記データ送信手段を参照し、取得したアドレスと同じアドレスの再送要求コマンドが送信保留中だった場合、前記データ送信手段に保留されている再送要求コマンドの送信キャンセル要求を出す再送要求キャンセル手段と、
前記再送アドレス生成手段が取得した再送が必要なデータの格納アドレスと、前記受信アドレスバッファの履歴とを参照し、再送要求コマンドを受信した後に、再送対象のアドレスと同一アドレスのデータを受信していない場合、前記記憶手段から該アドレスのデータを読み出し、そのアドレスとデータを再送要求に対する再送データとして生成し、前記データ送信手段に送るデータ再送手段とを備えたことを特徴とするデータ通信システム。
【請求項６】
シリアルバスインタフェースとデータを格納する記憶手段と前記記憶手段へのアクセス要求を出す処理手段とを備えた複数の処理装置を、シリアルバスを介して接続したデータ通信システムにおいて、
前記処理装置間を順次接続して、シリアルバスへのデータ送信を許可する送信権の受渡しを行う通信制御線を設け、
前記通信制御線を介して接続する他の処理装置との間で、送信権の受け渡しを行うと共に、自処理装置内の送信権の状態を管理する送信権管理処理と、
前記処理手段から前記記憶手段にライトアクセス要求があった場合は、前記記憶手段にデータを書き込むと同時に、書込み先のアドレスとデータとを付加したデータ送信要求を生成する処理と、
自処理装置の送信権が有効の場合はシリアルバスへのデータ送信を開始し、送信権が無効の場合はデータ送信を保留するデータ送信処理と、
シリアルバスに接続する他の処理装置から送信されたデータを受信し、前記記憶手段に格納するデータ受信処理と、
初期化時に、シリアルバスに接続する複数の処理装置のうち、１台の処理装置の送信権のみを有効とするように、自処理装置の初期状態を設定する状態初期化処理とを行うことを特徴とするデータ通信方法。
【請求項７】
請求項６記載のデータ通信方法において、
前記送信権管理処理は、隣接する処理装置から前記通信制御線を介して送信権受渡し信号を受信し、自処理装置の送信権を有効化する処理と、
前記データ送信処理において、保留中の送信データが存在しない場合は、送信権受渡し信号を受信した処理装置とは反対側に隣接する処理装置に送信権受渡し信号を送信し、保留中の送信データが存在する場合は、データ送信を開始し、データの送信完了後に送信権受渡し信号を反対側に隣接する処理装置に送信する処理と、
送信権受渡し信号の送信と同時に、自処理装置の送信権を無効化する処理とを行うことを特徴とするデータ通信方法。
【請求項８】
請求項６記載のデータ通信方法において、
前記データ受信処理により受信した受信データのアドレス情報を、複数回分保持する受信アドレスバッファを設け、
データ送信時に、送信するアドレスとデータに基づいて訂正符号を生成し、送信データに付加する符号生成処理と、
データ受信時に、受信したアドレスとデータと訂正符号に基づいて通信エラーの有無を判定し、通信エラーが発生しかつ訂正符号を用いたエラー訂正が可能である場合はエラー訂正を実施し、通信エラーが発生しかつエラー訂正が不可能である場合はエラー信号を生成するエラー訂正処理と、
前記エラー訂正処理が生成したエラー信号を受けて、何回前の受信データでエラーが発生したかの情報を含む再送要求コマンドを生成し、データ送信要求を行う再送要求生成処理と、
データ受信時に、再送要求コマンドを受信した場合、再送が必要なデータが何回前の受信データかを判定し、前記受信アドレスバッファを参照して再送が必要なデータの格納アドレスを取得する再送アドレス生成処理と、
前記再送アドレス生成処理により取得したアドレスを受け、取得したアドレスと同じアドレスの再送要求コマンドが送信保留中だった場合、保留されている再送要求コマンドの送信キャンセルを行う再送要求キャンセル処理と、
前記再送アドレス生成処理にて取得した再送が必要なデータの格納アドレスを基に、前記受信アドレスバッファの履歴を参照し、再送要求コマンドを受信した後に、再送対象のアドレスと同一アドレスのデータを受信していない場合、前記記憶手段から該アドレスのデータを読み出し、そのアドレスとデータを再送要求に対する再送データとして生成し、データ送信要求を行うデータ再送処理とを行うことを特徴とするデータ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアルバスで接続された複数の分散コントローラ間において、リアルタイムにメモリデータを共有するためのデータ通信システム及びデータ通信方法に関する。
【背景技術】
【０００２】
ロボットなどのように、センサやアクチュエータなど多数のデバイスが実装され、それらを使った複雑な制御を必要とする組込み制御機器では、それら複数のデバイスをいくつかの分散コントローラに分割して管理し、相互に通信しながら協調制御する構成が多く採用されている。こうした分散制御型の構成が採用される理由はいくつかあるが、組込み制御として特に重要なのは、配線集中の緩和による機器の小型化と、配線距離の短縮に伴うノイズ問題の改善及び信頼性向上である。
【０００３】
多数のデバイスを単一のコントローラで制御する構成では、各デバイスと接続するための信号線をコントローラ部分に集中配線しなければならないため、コントローラの周辺に多数の信号線を集中して取り回すための広い空きスペースを確保しなければならない。更に、太く束ねた配線束を機器末端部から中央のコントローラ部まで引き回すための配線スペースが必要になる。そのため、集中制御型の構成では、機器の小型化が難しい。
【０００４】
また、アクチュエータ駆動線のような大電流配線からは、周囲に大きなノイズを放射する場合がある。そのため、センサ等の微小アナログ信号線とアクチュエータ駆動線のような大電流配線を機器末端部からコントローラ部まで長距離配線すると、大電流配線から放射されたノイズがアナログ信号線に混入し誤動作の要因となる場合があり、機器の信頼性が低下する。
【０００５】
こうした理由から、機器の部位毎にコントローラを分散し、特定の部位に属するデバイスは、デバイス近くに設置したコントローラに配線して管理する構成が採用されている。また、複数の部位にまたがったデバイスの情報を使って協調制御する際は、各コントローラ間を互いに接続したシリアルバスを介して相互にデータを受け渡す方法が多く採られている。このような分散コントローラシステムでは、コントローラ相互のデータ共有をリアルタイムで実現する必要があるため、どういう方法でデータ通信を行うかが重要である。
【０００６】
現在、最も普及している通信方式の一つに、イーサネット（登録商標）（商標：Ethernet（登録商標）、IEEE802.3uとして100BASE-TXという規格が標準化されている）などを利用したＬＡＮ（Local Area Network）がある。イーサネット（登録商標）は、ＣＳＭＡ／ＣＤ（Carrier Sense Multiple Access/Collision Detection）方式を採用しているため、通信データ量が増えるとデータ衝突が多発してバスの利用効率が低下するほか、通信遅れ時間（レイテンシ）のワースト値が予想不能であるという問題がある。このため、イーサネット（登録商標）は、組込み制御用の通信手段としては不適当である。また、データ衝突の問題を解決したＬＡＮの通信制御方式の一つにトークンリング（Token Ring、IEEE802.5で標準化された規格)がある。「トークン」と呼ばれる送信権を表すデータがネットワークを流れていて、データを送信したい端末は、トークンを取り込んでデータを送信し、送信終了後、再びトークンをネットワークに流す。これにより、一度に一台の端末のみネットワークを利用するように制御し、データ衝突の問題を解決している。ところが、トークンはある長さを持ったデータ列であり、通信データと同じ線に流れるため、通信路に負担がかかる。更に、データはネットワーク上を順番に伝送されるため、通信レイテンシが大きいという問題がある。
【０００７】
また、イーサネット（登録商標）、トークンリング共に、データ受渡し先の指定やデータ送信処理、応答処理やエラー訂正処理などを全てソフトウェアで管理しているため、プロセッサの負担が大きい。そのため、組込み制御機器などのように、機器本体のハードウェアとコントローラなどに組み込むソフトウェアとを同時並行開発する場合は、障害発生時の原因の切り分けが難しい。
【０００８】
特許文献１には、上記問題点を解決するために、メモリを搭載した複数のコントローラ（局）をシリアルバスで接続し、各局が保持するメモリデータを周期的に他局のメモリの該当領域に転写するハードウェアを実装することにより、複数局間でメモリデータを共有する複数局メモリデータ共有システムの例についての開示がある。非特許文献１には、複数局メモリデータ共有システムに関する製品実施例についての開示がある。
【特許文献１】特開２００２−７３５８４号公報
【非特許文献１】株式会社ステップテクニカ  技術資料（STD-CU40-V2.1J）                      「Ｃｕｎｅｔユーザーズマニュアル(MKY40)」
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記従来の方法では、シリアルバスの通信処理をハード化することでソフトウェアの負担が皆無になり、なおかつメモリデータの転写周期が定まることにより通信レイテンシが明確になる。ところが、複数局間で共有する全メモリデータを周期的にシリアルバス上に送信し、全ての局のメモリデータを一致させる方法のため、ある局のメモリに書き込んだデータを他局のメモリに反映させるための遅れ時間（レイテンシ）は、データを共有するメモリの容量に比例して増大するという問題がある。
【００１０】
本発明はかかる点に鑑みてなされたものであり、（１）共有データ量の多少に影響を受けず通信のワーストレイテンシを小さく実現すること、（２）プロセッサのソフトウェア負担が小さいこと、（３）配線量が少なく、省スペース実装に有利なシリアル接続方式とすること、を同時に実現したデータ通信システムを実現することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、シリアルバスインタフェースを備えた複数の処理装置を、シリアルバスを介して相互に接続したデータ通信システムであって、各処理装置間を順次接続して、シリアルバスへのデータ送信を許可する送信権の受渡しを行う通信制御線を設け、処理装置には、通信制御線に接続し、送信権の受け渡しを行うと共に、自処理装置内の送信権の状態を管理する送信権管理手段と、自処理装置の送信権が有効の場合はシリアルバスへのデータ送信を開始し、送信権が無効の場合はデータ送信を保留するデータ送信手段と、初期化時に、シリアルバスに接続する複数の処理装置のうち、１つの処理装置の送信権のみを有効とするように、自処理装置の初期状態を設定する状態初期化手段とを備える。
【発明の効果】
【００１２】
本発明によると、シリアルバスで繋がれた複数の処理装置の間に通信制御線を設けて送信権の受渡しを行うことにより、シリアルバスのデータ通信に負担をかけることなく、シリアルバスへのデータ送信タイミングをハード的に制御する手段を提供することができる。これにより、バス利用効率低下の原因となるデータ衝突を回避することができ、データ通信速度が向上すると同時に、通信のワーストレイテンシを小さくすることができる。
【００１３】
また、処理装置にプロセッサおよびプロセッサが読み書きするメモリを追加し、メモリへのデータ書込み時に、シリアルバスを介して接続する全処理装置のメモリへデータ変更を反映させる手段を設けることにより、ソフトウェアを介すことなくメモリデータを自動的に共有化することができる。更に、データを変更する時だけ変更対象のアドレスとデータを送信するため、共有メモリサイズの増加によるレイテンシへの影響が無い。またシリアルバスの利用効率が高く、転送速度が速くなるため、大容量データの転送に好適である。
【００１４】
更に、本発明において、１つの処理装置が１回に変更できるデータサイズに制約を設けた（例えば１データ）とすると、シリアルバスに接続する各処理装置にはデータ変更の機会が均等に訪れる。１つの処理装置で大量のデータ変更を行う場合は、待ちが発生してレイテンシが増加する場合があるが、増加するレイテンシのワースト値は、その処理装置が行おうとしている処理に関する情報だけに基づいて予測できる。そのため、１データだけ変更するよう制約を設けた場合のワーストレイテンシは、シリアルバスに接続した装置台数だけに依存することになるため、算出可能である。
【００１５】
また、本発明によると、通信エラーの検出と訂正、および再送機能をハードウェアで実現することができる。本発明では、データを変更した処理装置がシリアルバスにデータを送信すると、送信した処理装置以外の全ての処理装置が同時にデータを受信する。データを受信した処理装置は、個別にエラー検出／訂正を実施するが、訂正しきれないエラーを検出した場合は、送信権が巡ってきた時に再送要求コマンドを送信する。一方、正常にデータを受信できた処理装置は全て正常なデータを保持しているので、再送要求コマンドが送信された後、最初に送信権が巡ってきた処理装置（変更データを送信した装置でなくて良い）が再送を実施することができる。また、受信データが訂正不能の場合であっても、自処理装置に送信権が巡ってくる以前に、別の処理装置により該データの再送要求が送出された場合は、同じデータに対して重複して再送要求することはせず、他の処理装置から再送データが送られるのを待つ。これにより、本来であればソフトウェアの負担となるエラー検出／訂正処理や再送処理を、全てハードウェアに任せることができる。また、エラー検出／訂正処理や再送処理は処理装置が個別に行うが、シリアルバスに接続する全ての処理装置が連携して行うため、再送処理などの重複がなく、迅速に処理することができる。また、データ再送によるワーストレイテンシの増加量も明確に算出することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施の形態を、添付図面を参照して説明する。
【００１７】
図１に、本例のデータ通信システムの構成例を示す。本例は、複数の処理装置１００が、シリアルバスインタフェース（Ｉ／Ｆ）１０３を介してシリアルバス１０１に接続し、各処理装置１００の間は、シリアルバス１０１のデータ送信権の受け渡しを行う通信制御線１０２により順次つないで構成する。図１では、通信制御線１０２の端部は開放状態となっているが、開放部の通信制御線を互いに接続し、リング状として構成することも可能である。
【００１８】
次に、図１を参照して処理装置１００の構成について説明する。なお、シリアルバス１０１に接続する処理装置はすべて同じ構成であるため、１つの処理装置の構成を説明し、他の処理装置の説明は省略する。処理装置１００は、シリアルバス１０１に接続するためのシリアルバスＩ／Ｆ１０３と、通信制御線１０２に接続し、送信権の受け渡しを行うと共に、自処理装置内の送信権の状態を管理する送信権管理手段である送信権管理回路１０５と、初期化時に自処理装置の送信権の初期状態を設定する状態初期化手段１０６と、シリアルバスＩ／Ｆ１０３を介してデータを送信するデータ送信手段であるデータ送信回路１０４と、シリアルバスＩ／Ｆ１０３を介してデータを受信するデータ受信手段であるデータ受信回路１１０と、データを格納する記憶手段であるメモリ１０７と、メモリ１０７へのアクセス要求を出す処理手段であるプロセッサ１０８と、プロセッサ１０８からのアクセス要求を受け、メモリ１０７へのデータの入出力を行うメモリインタフェース（Ｉ／Ｆ）１０９から構成する。
【００１９】
次に、本例により、分散型メモリデータ共有システムを構成した場合のメモリデータの共有処理の動作例について説明する。本例を適用して分散型メモリデータ共有システムを構成した場合、シリアルバスに接続する全ての処理装置に搭載するメモリは、すべて同じ内容になる。また、全ての処理装置は、メモリの全領域を読み書きすることが可能であり、メモリの内容を変更した場合は、本例の通信処理により他の処理装置内のメモリへ変更内容を反映する。
【００２０】
まず、プロセッサ１０８が、メモリ１０７のデータを読み出す場合の処理について説明する。プロセッサ１０８が、メモリ１０７のデータを読み出す際は、メモリＩ／Ｆ１０９に対して読み出したいメモリのアドレスを指定し、データの読み出し要求を出す。メモリＩ／Ｆ１０９は、指定されたアドレスのデータをメモリ１０７から読み出し、読み出したデータをプロセッサ１０８に渡す。
【００２１】
次に、図２を参照して、プロセッサ１０８が、メモリ１０７へデータを書き込む場合の処理について説明する。図２は、プロセッサ１０８がメモリ１０７へデータを書き込む場合の、メモリへのデータ書き込み処理例を示すフローチャートである。
【００２２】
プロセッサ１０８が、メモリ１０７へデータを書き込む際は、まず、メモリＩ／Ｆ１０９に対して書き込みたいデータとそのアドレスを指定し、データの書き込み要求を出す（ステップＳ２０１）。メモリＩ／Ｆ１０９は、メモリ１０７の指定されたアドレスへデータを書き込み（ステップＳ２０２）、メモリ１０７へ書き込んだアドレスとデータをデータ送信回路１０４に渡し、シリアルバス１０１への送信を要求する（ステップＳ２０３）。データ送信回路１０４は、メモリＩ／Ｆ１０９からアドレスとデータを受け取ると、送信権管理回路１０５が保持する自処理装置のシリアルバス送信権の状態を判定し（ステップＳ２０４）、送信権が有効である場合は、シリアルバスＩ／Ｆ１０３にアドレスとデータを渡し、データ送信を要求する（ステップＳ２０５）。シリアルバスＩ／Ｆ１０３は、データ送信回路１０４から送信要求を受けると、シリアルバス１０１へデータを送信する（ステップＳ２０６）。ステップＳ２０４の判定の結果、送信権が無効である場合は、シリアルバス１０１への送信を一時保留する（ステップＳ２０７）。送信を保留した場合は、送信権が有効になった時点で、送信を開始する。なお、送信権の状態を管理する方法と、保留した送信データの送信方法については後述する。
【００２３】
次に、データの受信処理について説明する。シリアルバス１０１に接続する処理装置１００からデータが送信されると、シリアルバス１０１に接続する他の全ての処理装置がそのデータを受信する。ある処理装置から送信されたデータは、シリアルバス１０１を介して他の処理装置１００のシリアルバスＩ／Ｆ１０３へ入力され、データ受信回路１１０へ受け渡される。データ受信回路１１０は、他の処理装置１００が送信したアドレスとデータをシリアルバスＩ／Ｆ１０３から受け取り、そのデータを基にメモリＩ／Ｆ１０９にメモリ１０７へのデータの書き込みを指示する。メモリＩ／Ｆ１０９は、メモリ１０７の指定されたアドレスへデータを書き込む。
【００２４】
これらの動作により、ある処理装置のプロセッサ１０８が変更したメモリデータは、その都度シリアルバス１０１に接続された他の全処理装置のメモリに反映され、変更データを共有することができる。
【００２５】
次に、送信権管理回路１０５による送信権の管理方法について説明する。送信権管理回路１０５は、隣接する両隣の処理装置内の送信権管理回路１０５とそれぞれ双方向の通信制御線１０２でつながっているため、送信権管理回路１０５には、通信制御線１０２が２本接続することになる。送信権管理回路１０５は、通信制御線１０２を介して送信権受け渡し信号のやりとりをすることにより、順番に送信権を受け渡していく。
【００２６】
最初に、送信権管理回路１０５は、状態初期化手段１０６の働きにより、同じシリアルバス１０１に接続する複数の処理装置１００の中で、１台だけシリアルバス送信権が有効になるように初期化される。初期化後は、送信権が有効となった処理装置から順番に送信権受け渡し信号を受け渡していく。
【００２７】
状態初期化手段１０６の処理としては、例えば通信制御線１０２をリング状に接続している場合、予め任意の１台の処理装置の送信権を有効とするような送信権の初期値をメモリなどの記憶装置へ設定しておき、状態初期化手段１０６はその初期値を参照して初期状態を設定するように処理してもよい。また、通信制御線１０２がリング状ではなく、端部の処理装置では一方の通信制御線が開放状態となっている場合、状態初期化手段１０６では、通信制御線が開放状態であるかを検出し、２つある通信制御線のうち、第１の通信制御線が開放状態であった場合は、初期化時の送信権の状態を有効とし、第１の通信制御線が開放状態でなかった場合は、初期化時の送信権の状態を無効とするように初期状態を設定してもよい。このように設定することで、初期化時に１台の処理装置のみ送信権を有効にすることができる。
【００２８】
次に、図３を参照して、初期化後の送信権の管理方法と、保留した送信データの送信方法について説明する。図３は、送信権管理回路１０５の送信権管理処理例を示すフローチャートである。
【００２９】
まず、送信権管理回路１０５は、第１の通信制御線１０２に接続する隣接処理装置から送信権受け渡し信号を受け取り（ステップＳ３０１）、自処理装置の送信権の状態を有効とする（ステップＳ３０２）。送信権が有効となった送信権管理回路１０５は、データ送信回路１０４の状態を参照して送信保留データがあるかを判定し（ステップＳ３０３）、送信が保留されているデータがある場合は、データ送信回路１０４へ保留中のデータの送信開始を指示し（ステップＳ３０４）、データの送信完了を待つ（ステップＳ３０５）。データ送信完了後、送信権を無効化し（ステップＳ３０６）、第２の通信制御線１０２に接続する隣接処理装置へ送信権受け渡し信号を送出する（ステップＳ３０７）。ステップＳ３０３の送信保留データ有無の判定の結果、送信保留データが無い場合は、すぐに自処理装置の送信権を無効化し（ステップＳ３０６）、送信権受け渡し信号を送出する（ステップＳ３０７）。
【００３０】
本例によるデータ通信時、シリアルバス１０１と通信制御線１０２に流れる信号のタイミング例を図４に示す。ここでは、シリアルバス１０１上に３つの処理装置（Ａ〜Ｃ）が接続しているものとし、各処理装置のプロセッサ１０８をプロセッサＡ〜Ｃと呼ぶ。また、各処理装置間を接続する通信制御線は、リング状ではなく、端部の処理装置、ここでは処理装置ＡとＣは、通信制御線の片方が開放状態となっている例を示す。
【００３１】
図中の波形（１）〜（３）は、プロセッサＡ〜Ｃのメモリアクセスタイミングを示し、“ＲＤ”はメモリデータの読み出し、“ＷＴ”はメモリへのデータ書き込みを表している。（４）、（５）は、処理装置Ａ−Ｂ間とＢ−Ｃ間の通信制御線の信号の動きを示している。（４）の最初の信号は、処理装置ＡからＢへ送信権受け渡し信号を送出したことを表し、（５）の最初の信号は、処理装置ＢからＣへ送信権受け渡し信号を送出したことを表している。また、（６）は、シリアルバス送信権が有効となっている処理装置の遷移状況であり、（４）、（５）で示される送信権受け渡し信号の送出に伴って、送信権が処理装置Ａ→Ｂ→Ｃの順番に受け渡されていることが分かる。（７）〜（９）は、処理装置Ａ〜Ｃがそれぞれシリアルバス１０１に出力する信号を、（１０）は（７）〜（９）を合成したもの、すなわちシリアルバス１０１に流れるデータを示す。（１１）は、時間を表す。
【００３２】
時間ｔ１〜ｔ２では、波形（１）〜（３）の最初の部分に示すように、プロセッサＡとプロセッサＣのリードアクセスタイミングが重なっているが、リードアクセスはそれぞれの処理装置内で完結する構造となっているため、互いに干渉は起きない。またこの時、どの処理装置もシリアルバス１０１に送信するべきデータを持っていないため、バス送信権はＡ→Ｂ→Ｃ→Ａ→Ｂ→Ｃと待ち時間無しで速やかに巡回している。
【００３３】
なおこの実施例では、処理装置ＡがＡ−Ｂ間の送信権受け渡し信号を出力することでＡ→Ｂに、処理装置ＢがＢ−Ｃ間の送信権受け渡し信号を出力することでＢ→Ｃに送信権が移動するが、処理装置Ｃは通信制御線の片方が開放状態となっていて、隣接する処理装置が存在しないため、Ｂ−Ｃ間の送信権受け渡し信号を出力することで、逆方向（Ｃ→Ｂ方向）に送信権を移動する。送信権を逆方向へ移動する際、途中にある処理装置（Ｂ）は自処理装置の送信権は有効とせず、反対側に隣接する処理装置へ送信権受け渡し信号を送出し、他方の端部に位置する処理装置（Ａ）のところまで送信権を戻す。その後、再び処理装置（Ａ）の送信権を有効とし、順次送信権を受け渡す。このように処理することにより、Ａ→Ｂ→Ｃ→Ａ→Ｂ→Ｃの順に送信権が巡回し、端部に位置する処理装置とその他の処理装置について、送信権を有効化する機会を均等化することができる。
【００３４】
図４において、最初にメモリ書き込み要求を出すのはプロセッサＣである。プロセッサＣが書き込み要求（Ｃ１）を出した時間ｔ３は、バス送信権を処理装置ＢからＡへ受け渡すために送信権受け渡し信号が送出されたタイミングであり、処理装置Ｃは送信権が有効ではないため、データ送信を保留する。処理装置Ｃは、次にバス送信権が巡ってくる時間ｔ４にシリアルバス１０１にライトデータ（Ｃ１）を出力する。プロセッサＣはこれに続いてＣ２、Ｃ３、Ｃ４と連続して書き込み要求を出すが、送信権が有効の時に送信できるデータは１データだけに制限してあるため、Ｃ１データの送信終了後、ライトデータ（Ｃ２）以降の送信は保留し、処理装置Ａにバス送信権を移す。
【００３５】
一方、ライトデータ（Ｃ１）がシリアルバス１０１に出力されている間、プロセッサＡとＢもそれぞれメモリ書き込み要求Ａ１とＢ１を要求している。ライトデータ（Ｃ１）が出力されている間は処理装置Ｃに送信権があるため、自処理装置に送信権が巡ってくるのを待って出力する。処理装置Ａは、時間ｔ６に送信権が有効になると、ライトデータ（Ａ１）をシリアルバス１０１に送信し、処理装置Ｂは、時間ｔ７に送信権が有効になると、ライトデータ（Ｂ１）を送信する。時間ｔ８にライトデータ（Ｂ１）の出力が終了すると、処理装置Ｃの送信権が有効になり、送信保留していたライトデータ（Ｃ２）を送信する。Ｃ２の送信終了後、ライトデータ（Ｃ３）以降の送信は保留し、バス送信権を移す。そして、再び送信権が巡ってきた時点で次のライトデータを送信する。
【００３６】
このように、送信権が有効の時に送信できるデータの数を制限することにより、１台の処理装置が送信権を長時間独占し、他の処理装置の送信タイミングが遅れることを防いでいる。
【００３７】
本例における通信遅れ時間（レイテンシ）のワーストケースは、上記の処理装置Ｃにおけるライトデータ（Ｃ２）の送信のような場合で、自処理装置が書き込み要求を連続して発生し、同時に他の処理装置も書き込み要求を発生するため、自処理装置を含む全ての処理装置がデータ送信後に送信権を受け渡し、送信権が一巡した後にデータ送信するケースである。図４では、時間ｔ５で書き込み要求（Ｃ２）を発生してからｔ９でデータ送信が完了するまでの時間がレイテンシの最大値となる。その長さは、シリアルバス１０１に接続する処理装置の数と、一度に送信が許されるデータの長さによって定まる。
【００３８】
例えば、シリアルバスの通信速度が１０Ｍｂｐｓの場合で、処理装置が１回に送信する１データが（スタートビット＋８ｂｉｔデータ＋ストップビット）の構成だった場合、１ｂｉｔ周期が１００ｎｓとなるため、
１データ周期＝（スタートビット＋８ｂｉｔデータ＋ストップビット）×１００ｎｓ
＝１μｓ
となる。図４では、シリアルバス１０１に接続する処理装置は３台のため、レイテンシの最大値は、（３μｓ＋α）となる。なお、αは、本例では、処理装置ＣからＡへ送信権を受け渡す際の送信権受け渡し信号の通信時間であり、この時間はすべての処理装置の送信権が無効になる時間である。このような無効時間は、システムの構成により異なるが、各構成について固定となるため、それぞれのレイテンシの最大値は算出可能である。
【００３９】
次に、本例の他の実施の形態による、通信エラーの検出／訂正手段を有するデータ通信システムについて説明する。図５に通信エラー検出／訂正機能を追加したデータ通信システムの構成例を示す。なお、図１に示したデータ通信システムと同じ構成には同じ符号を付け、説明を省略する。
【００４０】
本例では、通信エラーの検出／訂正機能を実現するため、シリアルバス１０１に接続する処理装置１００に、データ受信回路１１０により受信したデータとアドレス情報を、複数回分保持する受信アドレスバッファ１１４と、送信するデータを基に訂正符号を生成し、送信データに付加してデータ送信回路１０４へ渡す符号生成手段である符号生成回路１１１と、データ受信回路１１０が受信したデータに付加された訂正符号に基づいてエラーの有無を検査し、エラー訂正を行うエラー訂正手段であるエラー訂正回路１１２と、エラー訂正回路１１２にて訂正できない通信エラーに対し、再送要求コマンドを生成し、データ送信要求を行う再送要求生成手段である再送要求生成回路１１３を設ける。
【００４１】
また、再送要求コマンドを受信したときのデータの再送機能を実現するため、データ受信回路１１０が受信した再送要求コマンドを基に、再送が必要なデータの格納アドレスを取得する再送アドレス生成手段である再送アドレス生成回路１１５と、再送アドレス生成回路１１５から指示されたアドレスを基にメモリからデータを読み出し、再送データを生成して符号生成回路１１１に送り、データ送信要求を行うデータ再送手段である再送回路１１６とを設ける。更に、複数の処理装置において同じデータの通信エラーが発生した場合に、重複してデータを再送することを避けるため、再送要求キャンセル手段である再送要求キャンセル回路１１７を設ける。
【００４２】
次に、本例を構成する各回路の動作例について説明する。
【００４３】
符号生成回路１１１は、シリアルバス１０１へ送信されるデータを入力し、そのデータを基に訂正符号を生成し、データに付加してデータ送信回路１０４に送る。例えば、メモリへの書き込みデータを送信する場合、メモリＩ／Ｆ１０９から送られたデータに訂正符号を付加してデータ送信回路１０４に送る。
【００４４】
データ受信回路１１０は、受信したデータがメモリデータの場合、そのメモリアドレスを受信アドレスバッファ１１４に保存するとともに、受信データをエラー訂正回路１１２へ渡す。受信アドレスバッファ１１４は、リングバッファであり、過去数回分の受信データの受信履歴を保存し、何回前に受信したデータかという情報に基づいて、そのデータのメモリ上の格納アドレスを参照できるようにしたものである。また、データ受信回路１１０は、受信したデータが再送要求コマンドの場合、受信した再送要求コマンドのデータを再送アドレス生成回路１１５へ渡す。
【００４５】
エラー訂正回路１１２は、データ受信回路１１０から受信したデータを入力し、受信データに付加された訂正符号に基づいて通信エラーの有無を検査する。検査の結果、通信エラーが発生しかつ訂正符号を用いたエラー訂正が可能である場合は、エラー訂正を実施し、メモリＩ／Ｆ１０９にメモリ１０７へのデータ書き込みを指示する。訂正符号では訂正できない通信エラーが発生した場合は、再送要求生成回路１１３に再送要求コマンドの生成を指示する。
【００４６】
再送要求生成回路１１３は、エラー訂正回路１１２から訂正失敗情報とその後のデータ受信情報を受け取り、訂正不可のデータが何回前に送信されたデータであるかの情報を付加した再送要求コマンドを生成し、データ送信回路１０４に送る。データ送信回路１０４は、送信権が有効となるのを待って再送要求コマンドを送信する。このとき、送信権が有効になる前に新たなデータを受信する場合があるため、データ受信の度にエラー訂正回路１１２からデータ受信情報を受け取り、送信保留中の再送要求コマンドに付加した何回前に送信されたデータであるかの情報を更新する。
【００４７】
再送アドレス生成回路１１５は、データ受信回路１１０が受信した再送要求コマンドを入力し、再送すべきメモリデータのアドレスを生成する。再送要求コマンドには、再送要求コマンドが送信される時点より何回前にシリアルバスに送信されたデータが再送対象であるかという情報が付加されているため、その情報に基づいて受信アドレスバッファ１１４を参照し、再送対象であるデータのメモリ上の格納アドレスを取得する。取得した格納アドレスを再送回路１１６へ送り、再送を指示する。一方、受信した再送要求コマンドと同じデータを対象とした再送処理を既に実施していた場合、再送処理の重複を避ける必要がある。そのため、再送要求キャンセル回路１１７に対して、受信した再送要求コマンドとアドレスを渡し、キャンセル処理を指示する。
【００４８】
再送回路１１６は、まず、再送アドレス生成回路１１５から指示された格納アドレスを基に受信アドレスバッファ１１４を参照し、再送要求コマンドを受信した後に再送要求を受けたアドレスと同一アドレスのデータを受信していないか確認する。同じアドレスのデータを受信していない場合は、メモリＩ／Ｆ１０９を介してメモリ１０７からデータを読み出し、再送データとして符号生成回路１１１に送る。符号生成回路１１１は、送られた再送データに対して、通常のメモリデータ送信と同様に訂正符号を付加し、データ送信回路１０４へ送る。データ送信回路１０４は、送信権の有効化を待って再送データを送信する。再送回路１１６が、再送要求コマンドの受信後に再送対象のデータと同じアドレスのデータを受信したことを検出した場合は、データの再送を中止する。これにより、同一データに対する再送データをシリアルバスへ複数送出することを避けることができる。
【００４９】
再送要求キャンセル回路１１７は、再送アドレス生成回路１１５から再送要求コマンドとアドレスを受け取ると、再送要求生成回路１１３を参照し、同じデータを対象とした再送要求コマンドが送信保留状態になっているかを確認する。具体的には、再送要求生成回路１１３が生成した再送要求コマンドと、再送アドレス生成回路１１５が生成した再送アドレス情報を比較し、再送の対象となるメモリアドレスが一致した場合に同一データと判断する。その結果、同一データの再送要求コマンドが保留状態になっている場合は、再送要求生成回路１１３に再送要求コマンドのキャンセルを指示する。更に、再送回路１１６に対し、受信した再送要求コマンドに対応する再送処理をキャンセルするよう指示する。これにより、同一データに対する再送要求をシリアルバスへ複数送出することを避けることができる。また、自処理装置において、通信エラーにより正しく受信できなかったデータに関する再送処理を中止することで、誤ったデータを再送してしまうことを防ぐことができる。
【００５０】
次に、本例による通信エラーの検出／訂正処理について、図６、図７を参照して説明する。まず、図６を参照してデータ受信時の処理について説明する。図６は、本例のデータ受信処理例を示すフローチャートである。
【００５１】
まず、データ受信回路１１０がデータを受信する（ステップＳ６０１）。受信したデータがメモリデータか否かを判定し（ステップＳ６０２）、メモリデータの場合は、受信アドレスバッファ１１４にメモリアドレスを格納する（ステップＳ６０３）。次に、エラー訂正回路１１２は、データ受信回路１１０が受信したデータを入力し、訂正符号に基づいて通信エラーの有無を検査する（ステップＳ６０４）。検査の結果、通信エラーがないかを判定し（ステップＳ６０５）、通信エラーなしの場合は、メモリＩ／Ｆ１０９を介してメモリ１０７へデータを書き込み（ステップＳ６０６）、処理を終了する。ステップＳ６０５の判定の結果、通信エラーがある場合は、訂正符号による訂正が可能かを判定し（ステップＳ６０７）、訂正可能な場合は、エラー訂正回路１１２にて訂正符号による訂正を実施し（ステップＳ６０８）、メモリへデータを書き込み（ステップＳ６０６）、処理を終了する。
【００５２】
ステップＳ６０７の判定の結果、訂正符合による訂正が不可能な場合は、エラー訂正回路１１２から訂正失敗情報とその後のデータ受信情報を再送要求生成回路１１３へ受け渡し、再送要求生成回路１１３にて再送要求コマンドを生成する（ステップＳ６０９）。再送要求生成回路１１３は、生成した再送要求コマンドをデータ送信回路１０４へ送り、再送要求コマンドを送信する（ステップＳ６１０）。
【００５３】
ステップＳ６０２の判定の結果、受信したデータがメモリデータでなかった場合は、受信データが再送要求コマンドか否かを判定し（ステップＳ６１１）、再送要求コマンドの場合は、再送処理を実行する（ステップＳ６１２）。ステップＳ６１１の判定の結果、再送要求コマンドでなかった場合は、処理を終了する。
【００５４】
次に、図７を参照してデータの再送処理について説明する。図６に示したフローチャートにおいて、データ受信回路１１０が受信したデータが再送要求コマンドだった場合、ステップＳ６１２にて再送処理を実行する。図７は、ステップＳ６１２の再送処理の詳細な処理例を示すフローチャートである。
【００５５】
まず、データ受信回路１１０は、受信した再送要求コマンドを再送アドレス生成回路１１５へ入力する（ステップＳ７０１）。再送アドレス生成回路１１５は、再送要求コマンドに付加された、再送対象データは何回前にシリアルバスに送信されたデータか、の情報に基づいて受信アドレスバッファ１１４を参照し、再送対象であるデータのメモリ上の格納アドレスを取得する（ステップＳ７０２）。次に、データ再送回路１１６は、再送アドレス生成回路１１５から再送対象データの格納アドレスを入力し、そのアドレスと受信アドレスバッファ１１４の履歴を比較して、再送要求コマンドを受信した後に再送対象データのアドレスと同一アドレスのデータを受信していないかを確認する（ステップＳ７０３）。確認の結果、同一アドレスのデータを受信していない場合は、メモリＩ／Ｆ１０９を介してメモリ１０７から当該アドレスのデータを読み出し（ステップＳ７０４）、再送データとして符号生成回路１１１に送り、データを送信する（ステップＳ７０５）。データの送信は、通常のメモリデータの送信と同様に訂正符号を付加し、送信権の有効化を待って送信する。ステップＳ７０３の確認の結果、再送対象のデータと同じアドレスのデータを受信したことを検出した場合は、データは再送しない。
【００５６】
次に、再送アドレス生成回路１１５から、再送要求コマンドとアドレスを再送要求キャンセル回路１１７へ受け渡し、キャンセル処理を行う。再送要求キャンセル回路１１７は、再送アドレス生成回路１１５から受信した再送要求コマンドと再送対象データの格納アドレスを受け取り、再送要求生成回路１１３を参照して、同じデータを対象とした再送要求コマンドが送信保留状態になっているかを確認する（ステップＳ７０６）。確認の結果、同じデータの再送要求コマンドが送信保留になっている場合は、再送要求生成回路１１３に再送要求コマンドのキャンセルを指示し、再送要求をキャンセルする（ステップＳ７０７）。次に、再送回路１１６に対し、受信した再送要求コマンドに対応した再送処理をキャンセルするよう指示する（ステップＳ７０８）。
【００５７】
このように、本例のエラー検出／訂正機能は、データ送信時にエラー訂正符号を付加し、データを受信した処理装置がそれぞれエラー訂正符号を使ったエラーチェックを行うものである。エラー訂正符号により訂正可能なエラーであった場合は、それぞれ受信側でエラーを訂正するものとし、訂正ができなかった場合のみ再送要求コマンドを生成し、シリアルバス送信権が有効になった時点で再送要求コマンドを送信する。データの再送は、そのデータを送信した処理装置が再送するとは限らない。受信に失敗した処理装置を除けば、全ての処理装置が正しいデータを保持しているため、再送要求コマンドを受け取った後、最初に送信権が有効になった処理装置がデータの再送を実施することができる。これにより、データの再送を迅速に行うことができる。
【００５８】
また、再送要求コマンドには、再送要求コマンドが送信される時点より何回前にシリアルバスに送信されたデータが再送対象であるかという情報を付加している。これは、通信エラーが発生したデータを特定するのに、通信時のデータを用いないようにするためである。再送要求コマンドを受信した処理装置は、内部に保持している受信履歴データと照らし合わせて再送すべきデータを判断し、再送する。但し、送信権が巡ってくる前に別の処理装置が再送データを送った場合や、自処理装置もその対象データの受信に失敗していた場合は、再送要求コマンドに対する処理は行わない。また、自処理装置が受信失敗していたデータに対する再送要求コマンドが、既に他の処理装置から送信されていた場合は、再送要求コマンドは送信しない。このように、シリアルバスに接続するすべての処理装置が連携してエラー検出／訂正することにより、１つのデータに対するデータ再送は１回のみ実施される。更に、同一データについて複数の処理装置の受信が失敗した場合でも、再送処理を重複して行うことはなく、１回の再送で対処できる。
【図面の簡単な説明】
【００５９】
【図１】本発明の一実施の形態による構成例を示すブロック図である。
【図２】本発明の一実施の形態によるメモリへのデータ書き込み処理例を示すフローチャートである。
【図３】本発明の一実施の形態による送信権管理処理例を示すフローチャートである。
【図４】本発明の一実施の形態によるデータ通信のアクセスタイミングを示す説明図である。
【図５】本発明の他の実施の形態による構成例を示すブロック図である。
【図６】本発明の他の実施の形態によるデータ受信処理例を示すフローチャートである。
【図７】本発明の他の実施の形態による再送処理例を示すフローチャートである。
【符号の説明】
【００６０】
１００…処理装置、１０１…シリアルバス、１０２…通信制御線、１０３…シリアルバスインタフェース（Ｉ／Ｆ）、１０４…データ送信回路、１０５…送信権管理回路、１０６…状態初期化手段、１０７…メモリ、１０８…プロセッサ、１０９…メモリインタフェース（Ｉ／Ｆ）、１１０…データ受信回路、１１１…符号生成回路、１１２…エラー訂正回路、１１３…再送要求生成回路、１１４…受信アドレスバッファ、１１５…再送アドレス生成回路、１１６…再送回路、１１７…再送要求キャンセル回路
【図１】
2008193262.tif 000003
【図２】
2008193262.tif 000004
【図３】
2008193262.tif 000005
【図４】
2008193262.tif 000006
【図５】
2008193262.tif 000007
【図６】
2008193262.tif 000008
【図７】
2008193262.tif 000009