(57)【特許請求の範囲】
【請求項１】
ＩＥＥＥ１３９４を用いて接続されたネットワーク内の各ノード間の同期をとるＩＥＥＥ１３９４を用いた同期システムにおいて、
前記各ノードが有する各サイクルタイマ同士の遅延ずれ量を計測するサイクルタイマ遅延計測手段と、
前記サイクルタイマ遅延計測手段が計測した遅延ずれ量をもとに前記各サイクルタイマ同士の遅延ずれを補正するサイクルタイマ遅延補正手段と、
を備え、
前記サイクルタイマ遅延計測手段は、要求ノードから応答ノードに対してReadパケットを送信し、該応答ノードのサイクルタイマ値を読み取り、この読み取ったサイクルタイマ値を含むReadResponseパケットを前記要求ノードが受信し、この受信したサイクルタイマ値と要求ノードのサイクルタイマ値との差をもとに前記遅延ずれ量を算出する、
ことを特徴とするＩＥＥＥ１３９４を用いた同期システム。
【請求項２】
前記要求ノードは、
前記Readパケットを送信し、前記ReadResponseパケットが返送される一連のシーケンスが、同一のアシンクロナス転送が行われている時間帯である同一のAsynchronous転送時間帯で完了するか否かを判定する判定手段を備え、
前記判定手段が、同一のAsynchronous転送時間帯で完了すると判定した場合に、Readパケットを前記応答ノードに送出することを特徴とする請求項１に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項３】
前記応答ノードの上位層は、
アシンクロナス転送が行われている時間帯であるAsynchronous転送時間帯であるか否かを判定する判定手段を備え、
前記判定手段がAsynchronous転送時間帯であると判定した場合に、前記上位層が前記ReadResponseパケットを送信バッファに蓄えることを特徴とする請求項１に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項４】
前記応答ノードのリンク層は、
パケットの送出直前に該パケットにデータを書き込む書込手段を備え、
前記ReadResponseパケットがリンク層バッファから送出される直前に前記書込手段によって該ReadResponseパケットに当該応答ノードのサイクルタイマ値を書き込むことを特徴とする請求項１に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項５】
各ノードは、前記遅延ずれ量を記憶するサイクルタイマ遅延記憶手段を備えたことを特徴とする請求項１〜４のいずれか一つに記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項６】
前記サイクルタイマ遅延記憶手段は、全てのノード間の遅延ずれ量をデータテーブル形式で記憶することを特徴とする請求項５に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項７】
前記サイクルタイマ遅延記憶手段は、サイクルマスタとしてのノードに設けられたことを特徴とする請求項６に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項８】
前記ネットワークの構成の変化を判別するネットワーク構成変化判別手段をさらに備え、
前記ネットワーク構成変化判別手段がネットワークの構成に変化があったと判別した場合、該ネットワークの再構成後、前記サイクルタイマ遅延計測手段がサイクルタイマ同士の遅延ずれ量を計測し、前記サイクルタイマ遅延補正手段が該遅延ずれ量をもとにサイクルタイマ同士の遅延ずれを補正する処理を一回行うことを特徴とする請求項１〜７のいずれか一つに記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項９】
前記ネットワーク構成変化判別手段は、サイクルマスタとしてのノードに設けられたことを特徴とする請求項８に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１０】
前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段は、ノード間の同期を用いる所定のノードに設けられたことを特徴とする請求項１〜９のいずれか一つに記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１１】
前記遅延ずれ量を伝送するサイクルタイマ遅延伝送手段をさらに備え、
同期の基準となるサイクルタイマを有するサイクルマスタのノードは、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延伝送手段を有し、
前記サイクルマスタのノード以外の所定のノードは、前記サイクルタイマ遅延補正手段を有し、
前記サイクルマスタのノードが、該ノードが計測した遅延ずれ量を前記所定のノードに伝送し、あるいは該ノードが計測した遅延ずれ量をデータテーブルに記憶し、前記所定のノードが前記サイクルマスタのノードから該遅延ずれ量を取得し、その後所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに該ノードのサイクルタイマの遅延ずれを補正することを特徴とする請求項１〜９のいずれか一つに記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１２】
前記サイクルタイマ遅延補正手段は、サイクルスタートパケットを受信した際に、遅延ずれ量をもとにサイクルタイマ値を設定することを特徴とする請求項１０または１１に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１３】
前記サイクルタイマ遅延補正手段は、上位層がサイクルタイマ値の使用時に、前記遅延ずれ量を用いて遅延ずれを補正することを特徴とする請求項１０または１１に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１４】
前記所定のノードは、第２のサイクルタイマをさらに備え、
前記サイクルタイマ遅延補正手段は、任意のタイミングで遅延ずれ量を用いて前記遅延ずれを補正したサイクルタイマ値を前記第２のサイクルタイマに設定することを特徴とする請求項１０または１１に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１５】
前記サイクルマスタのノードは、タイムスタンプを生成するタイムスタンプ生成手段を備え、
前記所定のノードは、タイムスタンプが示す時刻を監視するタイムスタンプ時刻監視手段を備え、
前記サイクルタイマ遅延補正手段は、前記遅延ずれ量をもとに、前記サイクルマスタのノードから送られた前記タイムスタンプのタイムスタンプ値を更新し、
前記タイムスタンプ時刻監視手段は、前記更新されたタイムスタンプ値が示す時刻を監視することを特徴とする請求項１０または１１に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１６】
前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段は、サイクルマスタとしてのノードに設けられたことを特徴とする請求項１〜９のいずれか一つに記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１７】
前記遅延ずれ量を伝送するサイクルタイマ遅延伝送手段をさらに備え、
サイクルマスタのノードは、前記サイクルタイマ遅延補正手段を有し、
前記サイクルマスタのノード以外の所定のノードは、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延伝送手段を有し、
前記所定のノードが、該所定のノードで計測した遅延ずれ量を前記サイクルマスタのノードに伝送し、あるいは前記所定のノードから遅延ずれ量を取得し、その後該所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに前記サイクルマスタのノードのサイクルマスタの遅延ずれを補正することを特徴とする請求項１〜９のいずれか一つに記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１８】
前記サイクルマスタのノードは、タイムスタンプを生成するタイムスタンプ生成手段を備え、
前記所定のノードは、タイムスタンプが示す時刻を監視するタイムスタンプ時刻監視手段を備え、
前記サイクルタイマ遅延補正手段は、前記遅延ずれ量をもとに、前記タイムスタンプ生成手段が生成したタイムスタンプのタイムスタンプ値を更新することを特徴とする請求項１６または１７に記載のＩＥＥＥ１３９４を用いた同期システム。
【請求項１９】
請求項１〜１８のいずれか一つに記載したＩＥＥＥ１３９４を用いた同期システムは、サーボドライブ装置とこれを制御するコントローラとからなる制御システムであることを特徴とするＩＥＥＥ１３９４を用いた同期システム。
【請求項２０】
前記コントローラは、サイクルマスタであることを特徴とする請求項１９に記載のＩＥＥＥ１３９４を用いた同期システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＩＥＥＥ１３９４をネットワークのデータ伝送手段として使用しているシステムにおける各ノード間のサイクルタイマ遅延を測定し補償することができるＩＥＥＥ１３９４を用いた同期システムに関し、特に、１つ以上のコントローラと、センサやサーボドライブなどの１つ以上の被制御対象機器とによって構成される制御システムにおいて、ＩＥＥＥ１３９４をネットワークのデータ伝送手段として使用している場合におけるコントローラと被制御対象機器との間のサイクルタイマ遅延を測定し補償することができるＩＥＥＥ１３９４を用いた同期システムに関するものである。
【０００２】
【従来の技術】
従来から、コントローラとサーボドライバとの間の通信方式は、各メーカ独自が方式で行われていた。一方、近年、このようなＦＡ用コントローラの分野においても、オープン化に対応した製品への要求が高まっている。オープン化コントローラの普及によって、ユーザ独自仕様の組み込み、汎用パソコン資産の利用が可能になり、メーカの異なる製品間の接続も容易になるなど、ユーザの使いやすさの向上が実現される。
【０００３】
このようなコントローラとサーボドライバとの間のオープンなインタフェースとして、ＩＥＥＥ１３９４やＵＳＢを利用することが検討され始めている。特に、ホームオートメーション用のネットワーク規格ＩＥＥＥ１３９４をＦＡ用途に利用しようとする動きが本格化してきている。ＩＥＥＥ１３９４は、
（１）  １００Mバイト／秒以上の高速のデータ転送が可能
（２）  アイソクロナス転送方式が可能で速い通信周期の同期通信が可能
（３）  電源を切ることなく接続や切り離しが可能（活線挿抜）
（４）  ６３台までの機器が接続できる
といった特徴を持つ。さらに量産効果によってインタフェース部分を低コストに製造できる可能性がある。また、インタフェース基板は、イーサネット（Ethernet）に比較して小型なので、各種の機器に組み込みやすい。
【０００４】
図２３は、ＩＥＥＥ１３９４の通信レイヤの構成を示す図である。図２３において、ＩＥＥＥ１３９４の通信レイヤは、物理層（Phyレイヤ）１０１、リンク層（Linkレイヤ）１０２、トランザクション層（Transactionレイヤ）１０３の３層と、シリアルバスマネージメント１０４とから構成される。
【０００５】
Phyレイヤ１０１は、送受信する電気信号とLinkレイヤとの間で信号処理を行うレイヤである。Phyレイヤ１０１は、コネクタ、ケーブルなどの機械的インターフェースの規定、Linkレイヤ１０２が使用する論理信号のアナログディジタル変換を行うエンコードおよびデコード、通信信号の電気レベルを決めるシグナルレベルなどの電気的インターフェースの規定、通信ノード決定のためのアービトレーション、通信ロックの再同期、バスの初期化検出などを行っている。
【０００６】
Linkレイヤ１０２は、Phyレイヤ１０１とTransactionレイヤ１０３との間で信号処理を行うレイヤである。Linkレイヤ１０２は、アドレス割当、データのチェック、データのフレーム分けを行うパケット送受信、サイクルのコントロールを行っている。なお、Isochronousデータは、Transactionレイヤを経由せずに、データが処理される。
【０００７】
Transactionレイヤ１０３は、上位アプリケーションとLinkレイヤ１０２との間で信号処理を行うレイヤである。Transactionレイヤ１０３は、データの読み出し、書き込みなどの処理を行う。すなわち、Transactionレイヤ１０３は、Linkレイヤ１０２の処理を利用して、リクエストパケットの送信とレスポンスパケットの受信を行うことによって、指定されたノードとアドレスに対する１つの通信処理を行っている。また、逆に、リクエストパケットの受信とレスポンスパケットの送信という、他のノードから自ノードへの通信処理を行っている。
【０００８】
シリアルバスマネージメント１０４は、３つのレイヤ全体の制御を行っている。なお、典型的な通信レイヤの実装としては、Phyレイヤ１０１とLinkレイヤ１０２とをハードウェアで構成し、Transactionレイヤ１０３とシリアルバスマネージメント１０４をファームウェアで構成する。
【０００９】
ＩＥＥＥ１３９４のAsynchronous通信は、非同期に、データの通信を行う際に用いられる。Asynchronous通信では、相手ノードに確実にパケットを送信することを保証し、送信の遅延時間は保証しない。送信ノードは、ヘッダ情報と実データとを指定先のノードに送信し、受信ノードは、Acknowledgeパケットを返信することで、パケットを受け取ったことを知らせる。
【００１０】
ＩＥＥＥ１３９４のIsochronous通信は、一種の同期通信であり、動画や音声などの伝送に適している。Isochronous通信では、１２５μsec毎にデータ転送が完了することを保証する。Isochronousパケットの送信ノードは、特定のノードに送信するのではなく、０〜６３までのチャネル番号を使用してバス全体に送信し、受信ノードは、Acknowledgeパケットを返信しない。Isochronousパケットのヘッダは、６ビットのチャネル番号を使用することで、パケットを識別できるため、Asynchronousパケットのヘッダのように、６４ビットのアドレス空間を使うのに比べて単純化されており、ヘッダ情報を少なくすることができる。受信ノードは、自ノードが受信したいチャネル番号のIsochronousパケットを選択して取り込む。送信ノードと受信ノードとが同じチャネル番号を使ってデータの送受信を行うことで、Isochronous通信が確立できる。
【００１１】
図２４に示すように、Isochronous通信とAsynchronous通信とは混在できる。１サイクル１２５μsecのうち、最大で１００μsecをIsochronous通信に使用し、残りをAsynchronous通信に使用する。なお、パケット転送速度によって、Asynchronousパケットのデータペイロードの最大値が決定されているのは、Asynchronousデータの伝送時間が長すぎて、Isochronous通信を保証できなくなるのを回避するためである。
【００１２】
Isochronous転送時間帯は、Isochronous通信を行う帯域であり、Asynchronous転送時間帯は、Asynchronous通信を行う帯域である。図２４に示すように、Isochronous通信が常にAsynchronous通信よりも先に開始され、Isochronous通信を保証することができる。１サイクルでは、サイクルスタートパケットＤＳが送信された後に、図２４では、Isochronous転送時間帯において、チャネルＣＨ１のデータパケットＤ１およびチャネルＣＨ３のデータパケットＤ２が伝送される。その後、Asynchronous転送時間帯において、データパケットＤ３，Ｄ４が伝送されるが、各データパケットＤ３，Ｄ４には、AcknowledgeパケットＤＡが返送される。
【００１３】
ＩＥＥＥ１３９４の各ノードのうち、アイソクロナス（Isochronous）能力のあるノードが搭載するLinkレイヤは、バスとクロック同期するためのCYCLE＿TIMEレジスタを実装し、このCYCLE＿TIMEレジスタの内容を最新にするためのタイマを有している。このタイマをサイクルタイマと呼ぶ。このサイクルタイマの時刻は、サイクルスタート（Cycle Start）パケットによって設定される。また、ＩＥＥＥ１３９４では、このサイクルスタートパケットを発信するノードのことを、サイクルマスタと呼び、このサイクルマスタ以外のノードは、サイクルスレーブと呼ばれる。
【００１４】
すなわち、図２５および図２６に示すように、サイクルマスタ１１１，１３１が有するサイクルタイマ１１２，１３２の時刻をサイクルスタートパケット「CycleStart」に乗せて各ノード（サイクルスレーブ）１２１，１４１，１５１に伝えることによって、各ノード１２１，１４１，１５１が有するサイクルタイマ１２２，１４２，１５２の時刻がサイクルマスタ１１１，１３１が有するサイクルタイマ１１２，１３２と同じ時刻に設定される。
【００１５】
ＩＥＥＥ１３９４を利用したリアルタイムデータ転送は、Isochronousパケットによって伝送されるが、サイクルタイマを基準にして、送信側と受信側でデータの同期を取っている。同期の方法としてIsochronousパケットにタイムスタンプを入れたりする。
【００１６】
【発明が解決しようとする課題】
しかしながら、実際には伝送遅延があるため、送信側のノードと受信側のノードのサイクルタイマは厳密に同じ時刻にはならない。すなわち、応答ノードがサイクルスタートパケットを受信してサイクルタイマの時刻を設定した瞬間には、要求ノードのサイクルタイマの時刻はその分だけ既に進んでおり、伝送遅延によって、送信側のノードと受信側のノードとの間の同期が精度良くとれないことになる。
【００１７】
特に、ＩＥＥＥ１３９４によって接続されたネットワークを用いた制御システムを考えた場合、コントローラとサーボドライブとは、これらサイクルタイマを基準として同期制御を実現することになる。しかしながら、この制御システムに対しては、高速高精度、特に同期制御の高速高精度が要求されており、そのようなコントローラとサーボドライブとの間のタイマ遅延が、制御の高速高精度、特に同期制御の高速高精度に大きな影響を与えてしまうという問題点があった。
【００１８】
この発明は上記に鑑みてなされたもので、送信側のノードと受信側のノードとが有するサイクルタイマのタイマ遅延を補償し、特にＩＥＥＥ１３９４をコントローラとサーボドライバとの間のオープンなインタフェースとして使用した場合でも、高速高精度な制御、特に同期制御の高速高精度を実現することができるＩＥＥＥ１３９４を用いた同期システムを得ることを目的とする。
【００１９】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるＩＥＥＥ１３９４を用いた同期システムは、ＩＥＥＥ１３９４を用いて接続されたネットワーク内の各ノード間の同期をとるＩＥＥＥ１３９４を用いた同期システムにおいて、前記各ノードが有する各サイクルタイマ同士の遅延ずれ量を計測するサイクルタイマ遅延計測手段と、前記サイクルタイマ遅延計測手段が計測した遅延ずれ量をもとに前記各サイクルタイマ同士の遅延ずれを補正するサイクルタイマ遅延補正手段とを備え、前記サイクルタイマ遅延計測手段は、要求ノードから応答ノードに対してReadパケットを送信し、該応答ノードのサイクルタイマ値を読み取り、この読み取ったサイクルタイマ値を含むReadResponseパケットを前記要求ノードが受信し、この受信したサイクルタイマ値と要求ノードのサイクルタイマ値との差をもとに前記遅延ずれ量を算出することを特徴とする。
【００２０】
この発明によれば、ＩＥＥＥ１３９４を用いて接続されたネットワーク内の各ノード間の同期をとる際、サイクルタイマ遅延計測手段が、前記各ノードが有する各サイクルタイマ同士の遅延ずれ量を計測し、要求ノードから応答ノードに対してReadパケットを送信し、該応答ノードのサイクルタイマ値を読み取り、この読み取ったサイクルタイマ値を含むReadResponseパケットを前記要求ノードが受信し、この受信したサイクルタイマ値と要求ノードのサイクルタイマ値との差をもとに前記遅延ずれ量を算出するようにしていると共に、サイクルタイマ遅延補正手段が、前記サイクルタイマ遅延計測手段が計測した遅延ずれ量をもとに前記各サイクルタイマ同士の遅延ずれを補正するようにしている。
【００３１】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記要求ノードは、前記Readパケットを送信し、前記ReadResponseパケットが返送される一連のシーケンスが、同一のアシンクロナス転送が行われている時間帯である同一のAsynchronous転送時間帯で完了するか否かを判定する判定手段を備え、前記判定手段が、一連のシーケンスが同一のAsynchronous転送時間帯で完了すると判定した場合に、Readパケットを前記応答ノードに送出することを特徴とする。
【００３２】
この発明によれば、前記要求ノードの判定手段が、前記Readパケットを送信し、前記ReadResponseパケットが返送される一連のシーケンスが、同一のアシンクロナス転送が行われている時間帯である同一のAsynchronous転送時間帯で完了するか否かを判定し、前記要求ノードが、前記判定手段が同一のAsynchronous転送時間帯で完了すると判定した場合に、Readパケットを前記応答ノードに送出するようにし、ReadResponseパケットが同一のAsynchronous転送時間帯内で返送されるようにしている。
【００３３】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記応答ノードの上位層は、アシンクロナス転送が行われている時間帯であるAsynchronous転送時間帯であるか否かを判定する判定手段を備え、前記判定手段がAsynchronous転送時間帯であると判定した場合に、前記上位層が前記ReadResponseパケットを送信バッファに蓄えることを特徴とする。
【００３４】
この発明によれば、前記応答ノードの上位層の判定手段が、アシンクロナス転送が行われている時間帯であるAsynchronous転送時間帯であるか否かを判定し、前記判定手段がAsynchronous転送時間帯であると判定した場合に、前記上位層は前記ReadResponseパケットを送信バッファ（TX＿FIFO）に蓄えることで、前記ReadResponseパケットは、送信バッファ長くとどまることなく、直ちに要求ノードに返送されるようにしている。
【００３５】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記応答ノードのリンク層は、パケットの送出直前に該パケットにデータを書き込む書込手段を備え、前記ReadResponseパケットがリンク層バッファから送出される直前に前記書込手段によって該ReadResponseパケットに当該応答ノードのサイクルタイマ値を書き込むことを特徴とする。
【００３６】
この発明によれば、前記応答ノードのリンク層の書込手段が、前記ReadResponseパケットがリンク層バッファから送出される直前に該ReadResponseパケットに当該応答ノードのサイクルタイマ値を書き込むようにしている。
【００３７】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、各ノードは、前記遅延ずれ量を記憶するサイクルタイマ遅延記憶手段を備えたことを特徴とする。
【００３８】
この発明によれば、各ノードのサイクルタイマ遅延記憶手段が、前記遅延ずれ量を記憶し、少なくとも他のノードからのアクセスによって遅延ずれ量を獲得できるようにしている。
【００３９】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルタイマ遅延記憶手段は、全てのノード間の遅延ずれ量をデータテーブル形式で記憶することを特徴とする。
【００４０】
この発明によれば、前記サイクルタイマ遅延記憶手段が、全てのノード間の遅延ずれ量をデータテーブル形式で記憶するようにしている。
【００４１】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルタイマ遅延記憶手段は、サイクルマスタとしてのノードに設けられたことを特徴とする。
【００４２】
この発明によれば、前記サイクルタイマ遅延記憶手段を、サイクルマスタとしてのノードに設けるようにしている。
【００４３】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記ネットワークの構成の変化を判別するネットワーク構成変化判別手段をさらに備え、前記ネットワーク構成変化判別手段がネットワークの構成に変化があったと判別した場合、該ネットワークの再構成後、前記サイクルタイマ遅延計測手段がサイクルタイマ同士の遅延ずれ量を計測し、前記サイクルタイマ遅延補正手段が該遅延ずれ量をもとにサイクルタイマ同士の遅延ずれを補正する処理を一回行うことを特徴とする。
【００４４】
この発明によれば、ネットワーク構成変化判別手段が、前記ネットワークの構成の変化を判別し、前記ネットワーク構成変化判別手段がネットワークの構成に変化があったと判別した場合、該ネットワークの再構成後、前記サイクルタイマ遅延計測手段がサイクルタイマ同士の遅延ずれ量を計測し、前記サイクルタイマ遅延補正手段が該遅延ずれ量をもとにサイクルタイマ同士の遅延ずれを補正する処理を一回行うようにしている。
【００４５】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記ネットワーク構成変化判別手段は、サイクルマスタとしてのノードに設けられたことを特徴とする。
【００４６】
この発明によれば、前記ネットワーク構成変化判別手段を、サイクルマスタとしてのノードに設けるようにしている。
【００４７】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段は、ノード間の同期を用いる所定のノードに設けられたことを特徴とする。
【００４８】
この発明によれば、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段を、ノード間の同期を用いる所定のノードに設けるようにしている。
【００４９】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記遅延ずれ量を伝送するサイクルタイマ遅延伝送手段をさらに備え、同期の基準となるサイクルタイマを有するサイクルマスタのノードは、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延伝送手段を有し、前記サイクルマスタのノード以外の所定のノードは、前記サイクルタイマ遅延補正手段を有し、前記サイクルマスタのノードが、該ノードが計測した遅延ずれ量を前記所定のノードに伝送し、あるいは該ノードが計測した遅延ずれ量をデータテーブルに記憶し、前記所定のノードが前記サイクルマスタのノードから該遅延ずれ量を取得し、その後所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに該ノードのサイクルタイマの遅延ずれを補正することを特徴とする。
【００５０】
この発明によれば、同期の基準となるサイクルタイマを有するサイクルマスタのノードが、該ノードが計測した遅延ずれ量を前記サイクルタイマ遅延伝送手段によって前記所定のノードに伝送し、あるいは該ノードが計測した遅延ずれ量をデータテーブルに記憶し、前記所定のノードが前記サイクルマスタのノードから該遅延ずれ量を取得し、その後所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに該ノードのサイクルタイマの遅延ずれを補正するようにしている。
【００５１】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルタイマ遅延補正手段は、サイクルスタートパケットを受信した際に、遅延ずれ量をもとにサイクルタイマ値を設定することを特徴とする。
【００５２】
この発明によれば、前記サイクルタイマ遅延補正手段が、サイクルスタートパケットを受信した際に、遅延ずれ量をもとにサイクルタイマ値を設定するようにしている。
【００５３】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルタイマ遅延補正手段は、上位層がサイクルタイマ値の使用時に、前記遅延ずれ量を用いて遅延ずれを補正することを特徴とする。
【００５４】
この発明によれば、前記サイクルタイマ遅延補正手段が、上位層がサイクルタイマ値の使用時に、前記遅延ずれ量を用いて遅延ずれを補正するようにしている。
【００５５】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記所定のノードは、第２のサイクルタイマをさらに備え、前記サイクルタイマ遅延補正手段は、任意のタイミングで遅延ずれ量を用いて前記遅延ずれを補正したサイクルタイマ値を前記第２のサイクルタイマに設定することを特徴とする。
【００５６】
この発明によれば、所定のノードの前記サイクルタイマ遅延補正手段が、任意のタイミングで遅延ずれ量を用いて前記遅延ずれを補正したサイクルタイマ値を第２のサイクルタイマに設定するようにしている。
【００５７】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルマスタのノードは、タイムスタンプを生成するタイムスタンプ生成手段を備え、前記所定のノードは、タイムスタンプが示す時刻を監視するタイムスタンプ時刻監視手段を備え、前記サイクルタイマ遅延補正手段は、前記遅延ずれ量をもとに、前記サイクルマスタのノードから送られた前記タイムスタンプのタイムスタンプ値を更新し、前記タイムスタンプ時刻監視手段は、前記更新されたタイムスタンプ値が示す時刻を監視することを特徴とする。
【００５８】
この発明によれば、前記サイクルタイマ遅延補正手段が、前記遅延ずれ量をもとに、前記サイクルマスタのノードから送られた前記タイムスタンプのタイムスタンプ値を更新し、前記タイムスタンプ時刻監視手段が、前記更新されたタイムスタンプ値が示す時刻を監視するようにしている。
【００５９】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段は、サイクルマスタとしてのノードに設けられたことを特徴とする。
【００６０】
この発明によれば、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段を、サイクルマスタとしてのノードに設けるようにしている。
【００６１】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記遅延ずれ量を転送するサイクルタイマ遅延伝送手段をさらに備え、サイクルマスタのノードは、前記サイクルタイマ遅延補正手段を有し、前記サイクルマスタのノード以外の所定のノードは、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延伝送手段を有し、前記所定のノードが、該所定のノードで計測した遅延ずれ量を前記サイクルマスタのノードに伝送し、あるいは前記所定のノードから遅延ずれ量を取得し、その後該所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに前記サイクルマスタのノードのサイクルマスタの遅延ずれを補正することを特徴とする。
【００６２】
この発明によれば、前記所定のノードが、該所定のノードで計測した遅延ずれ量を前記サイクルマスタのノードに伝送し、あるいは前記所定のノードから遅延ずれ量を取得し、その後該所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに前記サイクルマスタのノードのサイクルマスタの遅延ずれを補正するようにしている。
【００６３】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記サイクルマスタのノードは、タイムスタンプを生成するタイムスタンプ生成手段を備え、前記所定のノードは、タイムスタンプが示す時刻を監視するタイムスタンプ時刻監視手段を備え、前記サイクルタイマ遅延補正手段は、前記遅延ずれ量をもとに、前記タイムスタンプ生成手段が生成したタイムスタンプのタイムスタンプ値を更新することを特徴とする。
【００６４】
この発明によれば、前記サイクルタイマ遅延補正手段が、前記遅延ずれ量をもとに、自サイクルマスタのノードの前記タイムスタンプ生成手段が生成したタイムスタンプのタイムスタンプ値を更新し、この更新したタイムスタンプ値を含むデータを所定のノードに伝送するようにしている。
【００６５】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、請求項１〜２３のいずれか一つに記載したＩＥＥＥ１３９４を用いた同期システムは、サーボドライブ装置とこれを制御するコントローラとからなる制御システムであることを特徴とする
【００６６】
この発明によれば、請求項１〜２３のいずれか一つに記載したＩＥＥＥ１３９４を用いた同期システムを、サーボドライブ装置とこれを制御するコントローラとからなる制御システムに適用している。
【００６７】
つぎの発明にかかるＩＥＥＥ１３９４を用いた同期システムは、上記の発明において、前記コントローラは、サイクルマスタであることを特徴とする。
【００６８】
この発明によれば、前記コントローラを、サイクルマスタとし、効率的な遅延ずれ量の計測および補正ができるようにしている。
【００６９】
【発明の実施の形態】
以下、添付図面を参照して、この発明にかかるＩＥＥＥ１３９４を用いた同期システムの好適な実施の形態について説明する。
【００７０】
実施の形態１．
まず、この発明の実施の形態１について説明する。この実施の形態１では、ピングパケットを利用してサイクルタイマ遅延を推定し補償するようにしている。P1394aでは、最適なGap＿Count値を計算し設定するために、ピング（Ping）パケットが定義されている。Gap（ギャップ）とは、例えば図２４に示したデータパケットＤ２，Ｄ３間などの時間であり、バスがアイドル状態となっている時間をいい、このギャップが長くなれば、バスがアイドルとなっている時間が長くなり、実際にパケットが流れる時間が制限され、一方、キャップを極端に短くすると、トポロジの構成で、物理層のホップ数が多い場合や接続されるノードが多い場合には通信が行えなくなってしまうため、ギャップは最適化される。
【００７１】
P1394aでは、あるノード（バスマネージャ）から他のノードにこのピングパケット送信すると、このピングパケットを受信した送り先のノードの物理層（Phyレイヤ）は、Self＿IDパケットを送り返す仕様になっており、ピングパケットが送出されてから、Self＿IDパケットが返送されて戻ってくるまでの時間を測ることによって、２つのノード間の遅延時間がわかるようになっている。そして、上述したように、P1394aでは、この遅延時間をもとに、最適なGap＿Count値を計算し設定することができるようになった。ルート以外は、すべてリンク層（Linkレイヤ）がなくても、このPingパケットに応答できるため、物理層だけで構成されるリピータでも遅延時間を知ることができ、トポロジが変わっても最適なGap＿Count値を計算することができる。なお、このPingパケットは、ＩＥＥＥ１３９４−１９９５規格にはないが、P1394a規格で検討中である。
【００７２】
さて、この実施の形態１では、Pingパケットを利用してサイクルタイマ遅延を推定し、補償する。ＩＥＥＥ１３９４の物理層のパケットリピート回路は、対称なため、図１に示すように、要求ノードＮ１の物理層から送られたPingパケットが応答ノードＮ２の物理層に到達するまでの伝送遅延ｔ１は、応答ノードＮ２の物理層から返送されたSelf＿IDパケットが要求ノードＮ１の物理層に到達するまでの伝送遅延ｔ２とほぼ等しい。すなわち、
伝送遅延ｔ１≒伝送遅延ｔ２
とみなすことができる。この結果、図１に示すように、要求ノードＮ１の物理層がPingパケットを送出してからSelf＿IDパケットを受信するまでの時間を所要時間ｔとすると、伝送遅延ｔ１は、
ｔ１（伝送遅延）≒（ｔ（所要時間）−RESPONSE＿TIME）／２
として求めることができる。この伝送遅延ｔ１がそのまま、要求ノードＮ１が保持するサイクルタイマと応答ノードＮ２が保有するサイクルタイマとの間の遅延として考えることができる。なお、「RESPONSE＿TIME」に実際どのぐらいの時間がかかったのかは、この手法では分からないが、「RESPONSE＿TIME」の最小値および最大値は、パラメータで指定されており（Cable interface timing constants）、既知である。したがって、たとえば、
RESPONSE＿TIME≒（最大値＋最小値）／２
として「RESPONSE＿TIME」を求めてもよい。実験的に、「RESPONSE＿TIME」に実際どのぐらいの時間がかかっているのかがわかっていれば、最大値と最小値の平均の代わりに適当な重み付き平均、たとえば、係数ｗを用いて
RESPONSE＿TIME≒（w×最大値＋(1−w)×最小値）／２
とし、これによって一層精度の良い「RESPONSE＿TIME」を求めることができる。
【００７３】
また、Pingパケットを送信し、Self＿IDパケットが返ってくるまでの所要時間ｔを計測する代わりに、RemoteAccessパケットを送信し、RemoteReplyパケットが返ってくるまでの時間を計測し、この時間を所要時間ｔとしてもよい。また、RemoteCommandパケットを送信し、RemoteConfirmationパケットが返ってくるまでの時間を計測し、この時間を所要時間ｔとしてもよい。これらパケットは、ほぼ同じ振る舞い、すなわち物理層が返送するので、これらのどのパケットを用いても良い。これらのパケットは、サイクルマスタ、サイクルスレーブに関わらず、全てのノードが任意にノードに対して送信することができるので、任意のノード間の遅延を任意のノードが必要に応じて計測することができる。
【００７４】
このノード間の遅延（タイマ遅延）は各ノード間で各々異なるので、各ノード間の全ての場合についてタイマ遅延の補償を行うのが望ましい。しかしながら、タイマ遅延計測を頻繁に行えば、タイマ遅延計測のためのパケットが増えることになり、その分だけネットワークのトラフィックが増えることになり、重要なパケットの伝送の妨げになりかねない。
【００７５】
タイマ遅延は、ネットワークの構成（トポロジ）が変わらない限り同じであるから、タイマ遅延補償は、基本的にネットワークの構成（再構成）が行われた後の最初の１回だけ行えば良いので、バスリセットなどのネットワークの再構成を含むネットワークの構成が行われたことを検出し、かつサイクルスタートパケットによるサイクルタイマ設定が行われた後に、最初に１回だけタイマ遅延計測のためのパケットを流してタイマ遅延補償を行う。
【００７６】
このため、ネットワーク上のある１つノード、たとえばサイクルマスタ、制御システムの場合はコントローラが、ネットワーク構成変化判別手段を保有する必要がある。ネットワーク構成変化判別手段は、ネットワークが再構成を判別した場合、タイマ遅延補償を行う指令を他のノードへ伝える。あるいは、ネットワーク構成変化判別手段を、必ずサイクルマスタ（制御システムの場合はコントローラ）が保有するようにし、サイクルマスタ自体が保有するデータテーブルにタイマ遅延を記憶するなどの一連のタイマ遅延に関する作業をすべてサイクルマスタによって管理するようにしても良い。
【００７７】
この実施の形態１によれば、ＩＥＥＥ１３９４の仕様（P1394a既存の仕様）の範囲内で、各ノードが有するサイクルタイマのタイマ遅延を補償することで、ＩＥＥＥ１３９４を任意の用途に利用する場合でも、高精度な同期を実現することが可能となる。さらには、ＩＥＥＥ１３９４をコントローラとサーボドライバと間のオープンなインタフェースとして使用した場合でも、コントローラとサーボドライブとの間、あるいはサーボドライブ間同士のタイマ遅延を補償することが可能となり、高速高精度な制御を実現することができる。また、タイマ遅延計測に使用されるパケットは、サイクルマスタのみが使用できるものではなく、全てのノードが等しく使用できるため、任意のノード間のタイマ遅延を計測することが可能である。
【００７８】
実施の形態２．
つぎに、この発明の実施の形態２について説明する。上述した実施の形態１では、RESPONSE＿TIMEに、実際どのぐらいの時間がかかったのかが分からないため、おおよそのタイマ遅延を推定するようにしていたが、この実施の形態２では、真に正確なタイマ遅延を測定できるようにし、特にタイマ遅延の誤差が大きな影響を及ぼす、コントローラとサーボドライブとを有する制御システムにＩＥＥＥ１３９４を用いる場合であっても、支障のないようにしている。
【００７９】
ＩＥＥＥ１３９４では、リード（Read）パケットを使って、応答ノードが有するサイクルタイマのサイクルタイマ値を読み込むことができる。この読み込みによって取得されたサイクルタイマ値と要求ノードが有するサイクルタイマのサイクルタイマ値との差から、タイマ遅延を計測すれば、実際のタイマ遅延を測定することが可能であるように思われる。
【００８０】
しかし、実際には、Readパケットに対するレスポンス（ReadResponse）パケットは、応答ノードの上位層（トランザクション層およびそれより上位の層）がReadResponseパケットを送信バッファ（TX＿FIFO）に蓄える際、ReadResponseパケットにサイクルタイマ値を書き込むため、その後、実際に応答ノードのリンク層から送信されるまでの時間は一定値ではなく、Readパケットとこれに対するReadResponseパケットとを用いても、正確なタイマ遅延を測定することはできない。
【００８１】
送信バッファに蓄えられる時間が長くなる理由は、このリード処理が非同期（ASYNC）処理であり、ReadパケットおよびReadResponseパケットが非同期（ASYNC）パケットであるから、Asynchronous転送時間帯でしか送信することができないために、ReadResponseパケットが送信バッファに蓄える時がAsynchronous転送時間帯であれば、図２に示すように、送信バッファに滞留する時間は一瞬であって、直ちに送信されるのに対し、図３に示すように、ReadResponseパケットが送信バッファに送られた時がIsochronous転送時間帯であれば、Isochronous転送時間帯が終了してAsynchronous転送時間帯になって送信可能となるまで、ReadResponseパケットが送信バッファに滞留するからである。
【００８２】
この送信バッファに滞留する時間の差異を解消するには、いくつかの方策がある。その第１の方策は、応答ノードＮ２がReadパケットを受け付けてReadResponseパケットを送出するまでの一連の動作が、常に図２に示すように、同一のAsynchronous転送時間帯中に行われればよいのであるから、要求ノードＮ１が予め、Readパケットを送信してReadResponseパケットが返送されるまでの一連の動作が、同一のAsynchronous転送時間帯中に行われるかどうかを判定部１が判定し、同一のAsynchronous転送時間帯中に行われると判断した場合に、要求ノードがReadパケットを応答ノードに送信すればよい。
【００８３】
基本的に、タイマ遅延計測のためのパケットは、ネットワーク構築後の初期の段階で行われるので、ネットワーク構築後の初期の段階においては、制御システムが制御するためのデータ転送はなく、すなわちトラフィックは少なく、また、応答ノードＮ２の上位層でも特別なアプリケーションが作動していないので、タイマ遅延計測のためのパケットの要求に対してすばやく応答するであろう。
【００８４】
したがって、同一のAsynchronous転送時間帯中に上述した一連の動作が行われるネットワーク構築後の初期の段階などに、タイマ遅延計測のためのパケットを要求ノードＮ１が応答ノードＮ２に送出すれば、Readパケットを受け付けてからReadResponseパケットを送出するまでの処理時間は、容易に推定することができる。この場合、上位層における処理時間の推定は、上述した実施の形態１による遅延計測を用いることができる。また、この場合、上述した一連の動作が他のトラフィックに邪魔される可能性は少ないため、信頼度の高い測定が可能となる。
【００８５】
この第１の方策によれば、既存のプロトコルをそのまま使用し、送信側である要求ノードＮ１の上位層に、Readパケットを送信してReadResponseパケットが返送されるまでの一連の動作が同一のAsynchronous転送時間帯中に行われるかどうかを判定する判定部１を設けるのみで、この一連の動作が同一のAsynchronous転送時間帯内で行われるので、正確なタイマ遅延補償が可能となる。
【００８６】
第２の方策としては、図４に示すように、応答ノードＮ１の上位層が、ReadResponseパケットを送信バッファに蓄えるタイミングをAsynchronous転送時間帯の間に行えば良い。すなわち、応答ノードＮ２の上位層が、Asynchronous転送時間帯となるまで待って、ReadResponseパケットをリンク層に送出するようにする。なお、上位層は、下位のリンク層からの割り込み信号によって現在の通信伝送路の状態がIsochronous転送時間帯であるかAsynchronous転送時間帯であるかを知ることができる。これによって、Asynchronous転送時間帯待ちの既知の時間を上位層の処理時間に加えるのであるので、要求ノードＮ１と応答ノードＮ２との間のタイマ遅延を確実に測定することができる。
【００８７】
第２の方策によれば、既存のプロトコルをそのまま使用し、受信側ノードである応答ノードＮ２の上位層に、現在の通信伝送路の状態がIsochronous転送時間帯であるかAsynchronous転送時間帯であるかを判定する判定部を設けるだけで、ReadパケットとReadResponseパケットとが同一のAsynchronous転送時間帯内であろうとなかろうとに関わらず、正確なタイマ遅延補償を行うことができる。
【００８８】
第３の方策としては、図５に示すように、ReadResponseパケットをリンク層から送出する時に、書込部３がこのReadResponseパケットにサイクルタイマ値を書き込むようにする。すなわち、上位層からリンク層にReadResponseパケットが送られたときにサイクルタイマ値を書き込むのではなく、ReadResponseパケットがリンク層から送出される瞬間に、このReadResponseパケットにサイクルタイマ値を書き込むようにする。
【００８９】
ＩＥＥＥ１３９４において、サイクルスタートパケットによるサイクルタイマ設定では、サイクルマスタから送られてくるサイクルスタートパケットを応答ノードＮ２がリンク層で受け取った瞬間に、該サイクルスタートパケットに記述されているサイクルタイマ値を自ノードのサイクルタイマ値として設定する機構を既に備えている。
【００９０】
しかしながら、この機構は、サイクルスタートパケットに固有の機構であって、第３の方策を行う機構は、ＩＥＥＥ１３９４には定義されておらず、新規にこの機構を追加するものである。なお、第１の方策あるいは第２の方策のように、送信バッファに蓄えられてから直ちに送信されると言っても若干の時間はかかるものであるが、この第３の方策によれば、この若干の時間の誤差すら発生せず、一層、正確な遅延測定が可能になる。
【００９１】
第３の方策によれば、既存のプロトコルをそのまま使用し、受信側ノードである応答ノードのリンク層に、ReadResponseパケットがリンク層から送出される瞬間にこのReadResponseパケットにサイクルタイマ値を書き込む書込部３を設けるだけで、ReadパケットとReadResponseパケットとが同一のAsynchronous転送時間帯内であろうとなかろうとに関わらず、正確なタイマ遅延補償が可能となる。
【００９２】
この実施の形態２によれば、ＩＥＥＥ１３９４の仕様（ＩＥＥＥ１３９４−１９９５既存の仕様）の範囲内で、各ノードが有するサイクルタイマのタイマ遅延を補償することで、ＩＥＥＥ１３９４を任意の用途に利用する場合でも、高精度な同期を実現することが可能である。さらには、ＩＥＥＥ１３９４をコントローラとサーボドライバとの間のオープンなインタフェースとして使用した場合でも、コントローラとサーボドライブとの間あるいはサーボドライブ間同士のタイマ遅延を補償することが可能となり、高速高精度な制御を実現できる。また、タイマ遅延計測に使用されるパケットは、サイクルマスタのみが使用できるものではなく、全てのノードが等しく使用できるため、任意のノード間のタイマ遅延を計測することが可能である。
【００９３】
実施の形態３．
つぎに、この発明の実施の形態３について説明する。この実施の形態３では、上述した実施の形態１または実施の形態２によって測定されたタイマ遅延をもとに、タイマ遅延の補償を行うものである。なお、この実施の形態３では、サイクルスレーブ側がサイクルスタートパケット受信時にタイマ遅延を補償する場合について説明する。
【００９４】
まず、サイクルスレーブは、サイクルスレーブ自身が有するサイクルタイマ値と、サイクルマスタが有するサイクルタイマ値との遅延ずれを知っている必要がある。この遅延ずれを取得するためのいくつかの態様としては、たとえば、つぎの９つの遅延ずれ取得態様がある。
【００９５】
第１の遅延ずれ取得態様は、図６に示すように、サイクルマスタＮＭが任意のサイクルスレーブＮＳとの間の遅延ずれを測定し（Ｓ１１）、この遅延ずれを当該サイクルスレーブＮＳに伝える（Ｓ１２）ことによって当該サイクルスレーブＮＳが遅延ずれを取得する態様である。
【００９６】
第２の遅延ずれ取得態様は、図７に示すように、サイクルマスタＮＭが任意のサイクルスレーブＮＳとの間の遅延ずれを測定し（Ｓ２１）、この遅延ずれをサイクルマスタＮＭが有する遅延記憶手段に記憶し（Ｓ２２）、任意のサイクルスレーブＮＳがサイクルマスタＮＭに対してこの遅延記憶手段をアクセスし、遅延ずれを読み取り（Ｓ２３）、当該サイクルスレーブＮＳが遅延ずれを取得する態様である。
【００９７】
第３の遅延ずれ取得態様は、図８に示すように、任意のサイクルスレーブＮＳがサイクルマスタＮＭとの間の遅延ずれを測定し（Ｓ３１）、これによって遅延ずれを取得する態様である。
【００９８】
この第１〜第３の遅延ずれ取得態様によれば、サイクルスレーブＮＳは、サイクルマスタＮＭのタイマ値に厳密に一致するように補償することができる。
【００９９】
第４の遅延ずれ取得態様は、図９に示すように、ある特定のサイクルスレーブＮＳ１が、他の任意のサイクルスレーブＮＳ２との間の遅延ずれを測定し（Ｓ４１）、かつ、サイクルマスタＮＭとの間の遅延ずれを測定し（Ｓ４２）、サイクルマスタＮＭと任意のサイクルスレーブＮＳ２との間の遅延を算出し（Ｓ４３）、この遅延を任意のサイクルスレーブＮＳ２に伝える（Ｓ４４）ことによって、当該任意のサイクルスレーブＮＳ２が遅延ずれを取得する態様である。
【０１００】
第５の遅延ずれ取得態様は、図１０に示すように、ある特定のサイクルスレーブＮＳ１が、他の任意のサイクルスレーブＮＳ２との間の遅延ずれを測定し（Ｓ５１）、かつ、サイクルマスタＮＭとの間の遅延ずれを測定し（Ｓ５２）、サイクルマスタＮＭと任意のサイクルスレーブＮＳ２との間の遅延を算出し（Ｓ５３）、この算出した遅延を、特定のサイクルスレーブ自身が有する遅延記憶手段に記憶し（Ｓ５４）、任意のサイクルスレーブＮＳ２がこの遅延記憶手段をアクセスしてこの遅延を読み取り（Ｓ５５）、これによって任意のサイクルスレーブＮＳ２が遅延ずれを取得する態様である。
【０１０１】
第６の遅延ずれ取得態様は、図１１に示すように、ある特定のサイクルスレーブＮＳ１が、他の任意のサイクルスレーブＮＳ２との間の遅延ずれを測定し（Ｓ６１）、かつ、サイクルマスタＮＭとの間の各遅延ずれを測定し（Ｓ６２）、これらの各遅延を特定のサイクルスレーブＮＳ１自身が有する遅延記憶手段に記憶し（Ｓ６３）、任意のサイクルスレーブＮＳ２が特定のサイクルスレーブＮＳ１をアクセスしてこれらの遅延を読み取り（Ｓ６４）、その後サイクルマスタＮＭとの間の遅延を算出する（Ｓ６５）態様である。
【０１０２】
上述した第４〜第６の遅延ずれ取得態様は、第１〜第３の遅延ずれ取得態様と同じ作用効果を有するが、やや複雑な取得態様となっている。
【０１０３】
第７の遅延ずれ取得態様は、図１２に示すように、ある特定のサイクルスレーブＮＳ１が他の任意のサイクルスレーブＮＳ２との間の遅延ずれを測定し（Ｓ７１）、この遅延ずれを当該任意のサイクルスレーブＮＳ２に伝送し（Ｓ７２）、任意のサイクルスレーブＮＳ２が遅延ずれを取得する態様である。
【０１０４】
第８の遅延ずれ取得態様は、図１３に示すように、ある特定のサイクルスレーブＮＳ１が他の任意のサイクルスレーブＮＳ２との間の遅延ずれを測定し（Ｓ８１）、この遅延ずれを特定のサイクルスレーブＮＳ１自身が有する遅延記憶手段に記憶し（Ｓ８２）、任意のサイクルスレーブＮＳ２がこの遅延記憶手段にアクセスして遅延ずれを読み取る（Ｓ８３）ことによって、任意のサイクルスレーブが遅延ずれを取得する態様である。
【０１０５】
第９の遅延ずれ取得態様は、図１４に示すように、任意のサイクルスレーブＮＳ２が、ある特定のサイクルスレーブＮＳ１との間の遅延ずれを測定し（Ｓ９１）、これによって任意のサイクルスレーブＮＳ２が遅延ずれを取得する態様である。
【０１０６】
上述した第７〜第９の遅延ずれ取得態様によれば、ある特定のサイクルスレーブのタイマ値に厳密に一致するように他の任意のサイクルスレーブのタイマ値を補償することが可能となる。この場合、同じタイマ値を有していないのはネットワーク上ではサイクルマスタのみとなる。
【０１０７】
サイクルスレーブが自信の有するサイクルタイマ値と、基準となるノード（サイクルマスタの場合もあればサイクルスレーブの場合もある）が有するサイクルタイマ値の遅延ずれを、サイクルスレーブ自身で知ることができたならば、サイクルスレーブ側自身でタイマ遅延を補償することができる。このタイマ遅延補償態様には、つぎの３つの態様がある。以下に説明する３つの態様では、基準となるノードがサイクルマスタの場合について説明しているが、基準となるノードがサイクルスレーブの場合でも同様に実施できる。
【０１０８】
第１のタイマ遅延補償態様は、図１５に示されるように、タイマ遅延量Δｔ１１を考慮してサイクルタイマＴＭ１のサイクルタイマ値を設定するものである。サイクルマスタＮＭが、サイクルスレーブＮＳに対し、サイクルスタートパケットによってサイクルマスタＮＭが有するサイクルタイマ値ｔ１０を伝送した際に、サイクルスレーブＮＳ側がこのサイクルスタートパケットを受け取った時にサイクルタイマ値ｔ１０をそのままサイクルスレーブＮＳ自身が有するサイクルタイマＴＭ１のサイクルタイマ値ｔ１０と設定せずに、遅延ずれ量Δｔ１１を考慮してサイクルタイマ値ｔ１２を設定する。すなわち、
ｔ１２（設定すべきサイクルタイマ値）
＝ｔ１０（受け取ったサイクルタイマ値）＋Δｔ１１（タイマ遅延量）
となる。
【０１０９】
第２のタイマ遅延補償態様は、図１６に示すように、サイクルスレーブＮＳ側がサイクルスタートパケットを受け取った時にサイクルタイマ値ｔ１０をそのまま自サイクルスレーブＮＳが有するサイクルタイマ値ｔ１０として設定する点は、従来のタイマ設定と同じであるが、サイクルスレーブＮＳ側の上位層（サイクルスレーブ側のアプリケーション）がサイクルタイマ値を使用する、すなわち読みにきた際におけるサイクルタイマ値ｔ１３に、遅延ずれ量を補正し、この補正したサイクルタイマ値ｔ１４を上位層が用いるようにする。この場合、遅延ずれ量が予め知っていれば、基本的にいつでもサイクルタイマ値を補償でき、この補償したサイクルタイマ値を用いることができる。すなわち、
ｔ１４（使用すべきサイクルタイマ値）
＝ｔ１３（リンク層のサイクルタイマ値）＋Δｔ１１（タイマ遅延量）
となる。
【０１１０】
第３のタイマ遅延補償態様は、図１７に示すように、サイクルスレーブＮＳは、サイクルタイマＴＭ１とは別個に第２のサイクルタイマＴＭ２を有する。サイクルタイマＴＭ１には、受け付けたサイクルタイマ値をそのまま設定し、第２のサイクルタイマＴＭ２には、任意のタイミング、たとえば時間的にクリティカルでないときに、タイマ遅延量Δｔ１１を加味したタイマ遅延補償されたサイクルタイマ値が設定され、上位層は、このサイクルタイマ値を用いるようにしている。
【０１１１】
この実施の形態３によれば、ＩＥＥＥ１３９４の仕様（ＩＥＥＥ１３９４−１９９５既存の仕様）の範囲内で、各ノードが有するサイクルタイマのタイマ遅延を補償することで、ＩＥＥＥ１３９４を任意の用途に利用する場合でも、高精度な同期を実現することが可能である。また、すべてのノードがタイマ補償を必要としている訳ではないので、必要なノードだけが必要に応じて遅延計測補償を行えば良い。さらには、ＩＥＥＥ１３９４をコントローラとサーボドライバとの間のオープンなインタフェースとして使用した場合でも、コントローラとサーボドライブとの間、あるいはサーボドライブ間同士のタイマ遅延を補償することが可能となり、高速高精度な制御を実現できる。また、タイマ遅延補償はサーボ側で行うので、コントローラ部分に何の変更も必要ない。さらには、すべての被制御機器がタイマ補償を必要としている訳ではないので、必要なサーボノードだけが必要に応じて遅延計測補償を行えば良い。
【０１１２】
ところで、上述した第１のタイマ遅延補償態様は、単純であり、また、タイマを用いた割込は遅延を補償した時刻における割込となることから、正確である。しかし、ＩＥＥＥ１３９４の基幹に関わる部分であるリンク層を変更しなければならない。さらに、ＩＥＥＥ１３９４ではサイクルスタートパケットを受け取ってタイマ値を更新する際にタイマ値を戻してはならない、という規約がある。この実施の形態で、サイクルスレーブのサイクルタイマを基準としたならば、遅延ずれが負の値を持ち、タイマ遅延補償をする際にタイマ値を戻すノードが存在することがあるので、このような場合には、ＩＥＥＥ１３９４のこの規約を無視するか、あるいは、「基準となるサイクルスレーブのサイクルタイマ値＋一定時間」をネットワーク上での基準時間とすることで、タイマ遅延補償をする際にタイマ値を戻すノードがないようにして、ＩＥＥＥ１３９４のこの規約を守るようにする、などの処置を行う必要がある。また、タイマ遅延補償を行うサイクルスレーブの上位層からみて、タイマがいつ更新されるかがわからない、すなわちサイクルスタートパケットがいつ送られてくるのかわからないため、タイマ遅延補償を行うサイクルスレーブの上位層において、時間を計測している最中など、時間に対してクリティカルな最中にタイマの更新が行われる可能性があり、クリティカルな最中にタイマの更新が行われた場合とそうでない場合とで誤差が生じてしまう。
【０１１３】
もともと、サイクルマスタが有するサイクルタイマとサイクルスレーブが有するサイクルタイマとは完全に特性が一致するとは限らないので、お互いのサイクルタイマの間に精度の差が存在し、サイクルスタートパケットによってサイクルスレーブのサイクルタイマを、サイクルマスタのサイクルタイマ値に合わせるのは、このサイクルタイマ間の精度差をなくすためである。しかしながら、たとえば、タイマ遅延補償を行うサイクルスレーブの上位層（の任意のアプリケーション）が、何か別の目的で時間計測などを、自身のサイクルタイマを使って行う場合、サイクルタイマの更新が起こらなければ、自身のサイクルタイマの精度の範囲内で、その時間計測の精度は保証されるが、その時間計測の途中でサイクルタイマの更新が起こってしまったら、その時間計測の精度は全く保証されないものになってしまう。もちろん、この誤差が問題のない範囲でシステムにＩＥＥＥ１３９４を用いるのであれば、この第１のタイマ遅延補償態様はこのシステムに十分である。
【０１１４】
一方、第２のタイマ遅延補償態様では、ＩＥＥＥ１３９４に関わる変更は全くなく、上位層（アプリケーション）のみ変更すれば良いので、容易に実現が可能である。しかしながら、このタイマを使った割込は、遅延を補償したタイマが発生する割込とはならない。この代替手段としてアプリケーションからタイマをポーリングして正確な時刻の割込を実現することも可能である。ただし、ポーリングによる負荷が生じることになる。さらに、第１のタイマ遅延補償態様と同様に、サイクルタイマ値の更新がいつ起こるか判らないことによる、タイマの精度の保証の問題が残る。ポーリングによる負荷や、タイマ更新に関わる誤差が問題ない範囲で用いるシステムに適用するのであれば、この第２のタイマ遅延補償態様は、十分用いることができる。
【０１１５】
また、第３のタイマ遅延補償態様では、第１および第２のタイマ遅延補償態様で問題となっていたタイマ更新に関わる誤差の保証問題を解決することができる。この第３のタイマ遅延保証態様では、サイクルタイマ値にタイマ遅延量を考慮したサイクルタイマ値を、第２のサイクルタイマに第２のサイクルタイマ値として設定するタイミングを任意とすることができるため、タイマ遅延量Δｔを計測している最中など、時間にクリティカルな時間帯を避けたタイミングでタイマ値を設定することができる。また、このタイマを使った割込は、遅延を補償した時刻における割込であるから、正確である。したがって、この第３のタイマ遅延補償態様によるタイマ遅延補償が最も好ましいといえる。
【０１１６】
実施の形態４．
つぎに、この発明の実施の形態４について説明する。この実施の形態４では、上述した実施の形態１，２に示したタイマ遅延の測定などを用いてタイマ遅延を測定しておき、このタイマ遅延およびタイムスタンプを用いてタイマ遅延補償を行うようにしている。
【０１１７】
図１８は、タイムスタンプを用いて制御を行う同期システムの概要を示す図である。図１８において、要求ノードＮ１と応答ノードＮ２とによる同期をとる場合、たとえばコントローラと各サーボドライバとによる同期制御を行う場合、ある時刻において同期を取る、すなわち同期制御を行う必要があるが、このような場合には、コマンド内容（制御内容）とともに、このコマンド内容（制御内容）が行われるべき時刻をタイムスタンプとして、要求ノードＮ１から応答ノードＮ２に対して送られる。要求ノードＮ１がコントローラであり、応答ノードＮ２が各サーボドライバである場合には、コントローラから各サーボドライバ対してタイムスタンプが送られる。応答ノードＮ２は、受け取った時刻、すなわちタイムスタンプの時刻（タイムスタンプ値）ｔ２０になると、受け取ったコマンド内容（制御内容）を実行する。
【０１１８】
しかしながら、応答ノードＮ２の時刻は、応答ノードＮ２自身が有するサイクルタイマによるものであるから、応答ノードＮ２と要求ノードＮ１との間に遅延が存在する。応答ノードＮ２が要求ノードＮ１からタイムスタンプ値を受け付けると、応答ノードＮ２は、遅延ずれを補償する。なお、この場合、各応答ノードＮ２は、各応答ノードＮ２が有するサイクルタイマ値と、要求ノードＮ１が有するサイクルタイマ値との遅延ずれを予め知っている必要がある。この遅延ずれを、タイムスタンプを用いて補償する態様には、つぎの２つの態様がある。
【０１１９】
第１のタイムスタンプによるタイマ遅延補償態様は、まず要求ノードＮ１が、任意の応答ノードＮ２との間の遅延ずれを測定し、この遅延を任意の応答ノードＮ２に伝達する。応答ノードＮ２が遅延ずれ量を予め取得する態様には、つぎの３つの態様がある。
【０１２０】
第１の取得態様は、図６に示した第１の遅延ずれ取得態様と同様に、要求ノードＮ１が任意の応答ノードＮ２との間の遅延ずれを測定し、この遅延ずれを当該任意の応答ノードＮ２に伝える態様である。
【０１２１】
第２の取得態様は、図７に示した第２の遅延ずれ取得態様と同様に、要求ノードＮ１が任意の応答ノードＮ２との間の遅延ずれを測定し、要求ノードＮ１自身が有する遅延記憶手段に記憶し、任意の応答ノードＮ２が要求ノードＮ１の遅延記憶手段にアクセスし、この遅延ずれを読み取り、当該任意の応答ノードＮ２が遅延ずれを取得する態様である。
【０１２２】
第３の取得態様は、図８に示した第３の遅延ずれ取得態様と同様に、任意の応答ノードＮ２が要求ノードＮ１との間の遅延ずれを測定し、これによって、遅延ずれを取得する態様である。
【０１２３】
その後、図１９に示すように、要求ノードＮ１から応答ノードＮ２に対して、コマンド内容（制御内容）とともに、このコマンド内容（制御内容）が行われるべき時刻であるタイムスタンプ値ｔ２０が応答ノードに送られてくると、応答ノードＮ２は、受け取った時刻、すなわちタイムスタンプ値ｔ２０に対して遅延ずれ量ΔＴ２１を補償し、この補償したタイムスタンプ値ｔ２２が示す時刻になると、受け取ったコマンド内容（制御内容）を実行する。
【０１２４】
一方、第２のタイムスタンプによるタイマ遅延補償態様では、要求ノードＮ１が各応答ノードＮ２の遅延ずれ量Δｔ２１をそれぞれ考慮したタイムスタンプを発行する。この場合は、要求ノードＮ１は、要求ノードＮ１自身が有するサイクルタイマ値と各応答ノードが有するサイクルタイマ値との遅延ずれ量Δｔ２１を予め知っている必要がある。この遅延ずれ量を取得する態様としては、つぎの３つの態様がある。
【０１２５】
その第１の取得態様は、要求ノードＮ１が各応答ノードＮ２との間の遅延を測定し、要求ノードＮ１自身が有するデータテーブル形式の遅延量記憶手段に記憶しておく。
【０１２６】
第２の取得態様は、各応答ノードＮ２が、要求ノードＮ１との間の遅延ずれ量Δｔ２１を測定し、この遅延ずれ量Δｔ２１を応答ノードＮ２自身の遅延量記憶手段に記憶しておき、要求ノードＮ１が、応答ノードＮ２の遅延量記憶手段に記憶された遅延ずれ量を読み取る。
【０１２７】
第３の取得態様は、各応答ノードＮ２が、要求ノードＮ１との間の遅延ずれ量を測定し、この遅延ずれ量を要求ノードＮ１に伝える。
【０１２８】
その後、図２０に示すように、要求ノードＮ１は、制御内容とともに、この制御内容が行われるべき時刻であるタイムスタンプ値ｔ２０を、各応答ノードＮ２の遅延ずれ量を考慮して、遅延ずれ量Δｔ２１分だけ時刻を戻して設定し、要求ノードＮ１から各応答ノードＮ２に対して送る。これに対し、応答ノードＮ２側は、受け取ったタイムスタンプ値ｔ２２が示す時刻になると、受け取った制御内容を実行する。この場合、受け取ったタイムスタンプ値ｔ２２は、既に遅延ずれ量を考慮した値となっているので、そのまま制御内容を実行すればよい。
【０１２９】
この実施の形態４によれば、ＩＥＥＥ１３９４の仕様（ＩＥＥＥ１３９４−１９９５既存の仕様）の範囲内で、各ノードが有するサイクルタイマのタイマ遅延を補償することで、ＩＥＥＥ１３９４を任意の用途に利用する場合でも、高精度な同期を実現することが可能である。また、すべてのノードがタイマ補償を必要としている訳ではないので、必要なノードだけが必要に応じて遅延計測補償を行えば良い。さらには、ＩＥＥＥ１３９４をコントローラとサーボドライバとの間のオープンなインタフェースとして使用した場合でも、コントローラとサーボドライブとの間、あるいはサーボドライブ間同士のタイマ遅延を補償することが可能となり、高速高精度な制御を実現できる。また、タイマ遅延補償はサーボ側で行うので、コントローラ部分に何の変更も必要ない。さらには、すべての被制御機器がタイマ補償を必要としている訳ではないので、必要なサーボノードだけが必要に応じて遅延計測補償を行えば良い。
【０１３０】
実施の形態５．
つぎに、この発明の実施の形態５について説明する。この実施の形態５では、上述した実施の形態１〜４で示したＩＥＥＥ１３９４を、コントローラとサーボドライバとの間のオープンなインタフェースとして使用した場合について説明する。
【０１３１】
ここで、コントローラをサイクルスレーブとし、被制御対象機器であるサーボドライバをサイクルスレーブとし、被制御対象機器のサーボドライバの１つを、サイクルマスタとしてもよいが、コントローラをサイクルマスタとし、被制御対象機器のサーボドライバの全てをサイクルスレーブとすることが好ましい。
【０１３２】
コントローラは、サーボドライバに対してIsochronousパケットによるサーボデータなどのデータを送出し、サーボドライバは、コントローラに対してIsochronousパケットによるフィードバックデータなどを返送する。この場合、コントローラがサイクルマスタであれば、Isochronous転送時間帯の中で、コントローラの制御パケットを先に優先し、すなわちIsochronousパケットの先頭に位置させて送出することができる。
【０１３３】
上述した実施の形態１〜４を適宜組み合わせ、コントローラとサーボドライバとのタイマ遅延計測補償を行ってもよいが、ここでは、タイマ遅延の計測に関する一連の動作をコントローラが管理し、タイマ遅延の補償をサーボドライバ側が行う場合のタイマ遅延補償処理シーケンスについて説明する。
【０１３４】
図２１は、タイマ遅延の補償をサーボドライバ側が行う場合におけるタイマ遅延補償処理手順を示すフローチャートである。図２１において、まず、サーボドライバをコントローラに接続する（ステップＳ１０１）。その後、コントローラが有するネットワーク構成変化判別手段が、ネットワークの構成が変化したことを検出し、ネットワーク再構成後に１回だけ、コントローラが各サーボドライバとの間のタイマ遅延を計測し、このタイマ遅延量を、コントローラ自身が有するデータテーブルに記憶する（ステップＳ１０２）。
【０１３５】
その後、コントローラは、各サーボドライバにタイマ遅延量を伝達し（ステップＳ１０３）、このタイマ遅延量を受けたサーボドライバは、このタイマ遅延量をもとにタイマ遅延を補償し（ステップＳ１０４）、本処理を終了する。
【０１３６】
つぎに、コントローラが遅延補償したタイムスタンプを生成する場合のタイマ遅延補償処理シーケンスについて説明する。図２２は、コントローラが遅延補償したタイムスタンプを生成する場合の遅延補償処理手順を示すフローチャートである。図２２において、まず、ステップＳ１０１と同様に、サーボドライバをコントローラに接続する（ステップＳ２０１）。その後、コントローラが有するネットワーク構成変化判別手段が、ネットワークの構成が変化したことを検出し、ネットワーク再構成後に１回だけ、コントローラが各サーボドライバとの間のタイマ遅延を計測し、このタイマ遅延量を、コントローラ自身が有するデータテーブルに記憶する（ステップＳ２０２）。その後、コントローラは、タイマ遅延量を補償したタイムスタンプを生成してサーボドライブ側に伝達し（ステップＳ２０３）、本処理を終了する。
【０１３７】
この実施の形態５では、コントローラとサーボドライブとからなる制御システムのように、高速高精度の同期を必要とするシステムであっても、コントローラとサーボドライブとの間にオープンなインタフェースであるＩＥＥＥ１３９４を使用して、コントローラとサーボドライブとの間のタイマ遅延補償を確実かつ精度良く行うことができる。
【０１３８】
【発明の効果】
以上説明したように、この発明によれば、ＩＥＥＥ１３９４を用いて接続されたネットワーク内の各ノード間の同期をとる際、サイクルタイマ遅延計測手段が、前記各ノードが有する各サイクルタイマ同士の遅延ずれ量を計測し、サイクルタイマ遅延補正手段が、前記サイクルタイマ遅延計測手段が計測した遅延ずれ量をもとに前記各サイクルタイマ同士の遅延ずれを補正するようにしているので、ＩＥＥＥ１３９４の仕様の範囲内で、各ノードが有するサイクルタイマのサイクルタイマ同士のタイマ遅延が補償され、高速高精度な同期制御が可能なシステムを実現することができるという効果を奏する。また、前記サイクルタイマ遅延計測手段が、要求ノードから応答ノードに対してReadパケットを送信し、該応答ノードのサイクルタイマ値を読み取り、この読み取ったサイクルタイマ値を含むReadResponseパケットを前記要求ノードが受信し、この受信したサイクルタイマ値と要求ノードのサイクルタイマ値との差をもとに前記遅延ずれ量を算出するようにしているので、サイクルタイマ値を読み取ることによって容易にサイクルタイマ同士の遅延ずれ量を得ることができるという効果を奏する。
【０１４４】
つぎの発明にによれば、前記要求ノードの判定手段が、前記Readパケットを送信し、前記ReadResponseパケットが返送される一連のシーケンスが、同一のアシンクロナス転送が行われている時間帯である同一のAsynchronous転送時間帯で完了するか否かを判定し、前記要求ノードが、前記判定手段が同一のAsynchronous転送時間帯で完了すると判定した場合に、Readパケットを前記応答ノードに送出するようにし、ReadResponseパケットが同一のAsynchronous転送時間帯内で返送されるようにしているので、信頼度の高い遅延ずれ量を計測することができるという効果を奏する。
【０１４５】
つぎの発明によれば、前記応答ノードの上位層の判定手段が、アシンクロナス転送が行われている時間帯であるAsynchronous転送時間帯であるか否かを判定し、前記判定手段がAsynchronous転送時間帯であると判定した場合に、前記上位層は前記ReadResponseパケットを送信バッファ（TX＿FIFO）に蓄えることで、前記ReadResponseパケットは、送信バッファ長くとどまることなく、直ちに要求ノードに返送されるようにしているので、信頼度の高い遅延ずれ量を計測することができるという効果を奏する。
【０１４６】
つぎの発明によれば、前記応答ノードのリンク層の書込手段が、前記ReadResponseパケットがリンク層バッファから送出される直前に該ReadResponseパケットに当該応答ノードのサイクルタイマ値を書き込むようにしているので、信頼度の高い遅延ずれ量を計測することができるという効果を奏する。
【０１４７】
つぎの発明によれば、各ノードのサイクルタイマ遅延記憶手段が、前記遅延ずれ量を記憶し、少なくとも他のノードからのアクセスによって遅延ずれ量を獲得できるようにしているので、効率的な遅延ずれ量の取得を可能にするという効果を奏する。
【０１４８】
つぎの発明によれば、前記サイクルタイマ遅延記憶手段が、全てのノード間の遅延ずれ量をデータテーブル形式で記憶するようにしているので、遅延ずれ量の取得を迅速に行うことができるという効果を奏する。
【０１４９】
つぎの発明によれば、前記サイクルタイマ遅延記憶手段を、サイクルマスタとしてのノードに設けるようにしているので、効率的な遅延ずれ量の管理を行うことができるという効果を奏する。
【０１５０】
つぎの発明によれば、ネットワーク構成変化判別手段が、前記ネットワークの構成の変化を判別し、前記ネットワーク構成変化判別手段がネットワークの構成に変化があったと判別した場合、該ネットワークの再構成後、前記サイクルタイマ遅延計測手段がサイクルタイマ同士の遅延ずれ量を計測し、前記サイクルタイマ遅延補正手段が該遅延ずれ量をもとにサイクルタイマ同士の遅延ずれを補正する処理を一回行うようにしているので、ネットワークのトラヒックに影響を与えず、しかも正確かつ確実な遅延ずれ量の計測および補正を行うことができるという効果を奏する。
【０１５１】
つぎの発明によれば、前記ネットワーク構成変化判別手段を、サイクルマスタとしてのノードに設けるようにしているので、迅速かつ効率的な遅延ずれの計測および補正を行うことができるという効果を奏する。
【０１５２】
つぎの発明によれば、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段を、ノード間の同期を用いる所定のノードに設けるようにしているので、ノード間の同期を必要とするノードが確実に遅延ずれ量を計測し、補正することができるという効果を奏する。
【０１５３】
つぎの発明によれば、同期の基準となるサイクルタイマを有するサイクルマスタのノードが、該ノードが計測した遅延ずれ量を前記サイクルタイマ遅延伝送手段によって前記所定のノードに伝送し、あるいは該ノードが計測した遅延ずれ量をデータテーブルに記憶し、前記所定のノードが前記サイクルマスタのノードから該遅延ずれ量を取得し、その後所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに該ノードのサイクルタイマの遅延ずれを補正するようにしているので、遅延ずれ量およびその補正を確実に行うことができるという効果を奏する。
【０１５４】
つぎの発明によれば、前記サイクルタイマ遅延補正手段が、サイクルスタートパケットを受信した際に、遅延ずれ量をもとにサイクルタイマ値を設定するようにしているので、同期がとれた制御処理を確実に行うことができるという効果を奏する。
【０１５５】
つぎの発明によれば、前記サイクルタイマ遅延補正手段が、上位層がサイクルタイマ値の使用時に、前記遅延ずれ量を用いて遅延ずれを補正するようにしているので、適時に、遅延ずれ量が補正された時刻を用いて制御処理を行うことができ、遅延ずれ量の補正時期の不一致による不具合を解消することができるという効果を奏する。
【０１５６】
つぎの発明によれば、所定のノードの前記サイクルタイマ遅延補正手段が、任意のタイミングで遅延ずれ量を用いて前記遅延ずれを補正したサイクルタイマ値を第２のサイクルタイマに設定するようにしているので、適時に、遅延ずれ量が補正された時刻を用いて制御処理を行うことができ、遅延ずれ量の補正時期の不一致による不具合を解消することができるという効果を奏する。
【０１５７】
つぎの発明によれば、前記サイクルタイマ遅延補正手段が、前記遅延ずれ量をもとに、前記サイクルマスタのノードから送られた前記タイムスタンプのタイムスタンプ値を更新し、前記タイムスタンプ時刻監視手段が、前記更新されたタイムスタンプ値が示す時刻を監視するようにしているので、タイムスタンプを用いた遅延ずれ量の補正を確実に行うことができるという効果を奏する。
【０１５８】
つぎの発明によれば、前記サイクルタイマ遅延計測手段および前記サイクルタイマ遅延補正手段を、サイクルマスタとしてのノードに設けるようにしているので、効率的なサイクルタイマ同士の遅延ずれ量の計測および補正を行うことができるという効果を奏する。
【０１５９】
つぎの発明によれば、前記所定のノードが、該所定のノードで計測した遅延ずれ量を前記サイクルマスタのノードに伝送し、あるいは前記所定のノードから遅延ずれ量を取得し、その後該所定のノードに伝送された遅延ずれ量あるいは取得した遅延ずれ量をもとに前記サイクルマスタのノードのサイクルマスタの遅延ずれを補正するようにしているので、遅延ずれ量およびその補正を確実に行うことができるという効果を奏する。
【０１６０】
つぎの発明によれば、前記サイクルタイマ遅延補正手段が、前記遅延ずれ量をもとに、自サイクルマスタのノードの前記タイムスタンプ生成手段が生成したタイムスタンプのタイムスタンプ値を更新し、この更新したタイムスタンプ値を含むデータを所定のノードに伝送するようにしているので、タイムスタンプを用いた遅延ずれ量の計測および補正を効率的かつ確実に行うことができるという効果を奏する。
【０１６１】
つぎの発明によれば、請求項１〜２３のいずれか一つに記載したＩＥＥＥ１３９４を用いた同期システムを、サーボドライブ装置とこれを制御するコントローラとからなる制御システムに適用しているので、高速高精度の同期制御を確実に行うことができるという効果を奏する。
【０１６２】
つぎの発明によれば、前記コントローラを、サイクルマスタとし、効率的な遅延ずれ量の計測および補正ができるようにしているので、高速高精度の同期制御が可能な制御システムを実現することができるという効果を奏する。
【図面の簡単な説明】
【図１】  この発明の実施の形態１であるＩＥＥＥ１３９４を用いた同期システムにおける伝送遅延測定の処理シーケンスを示す図である。
【図２】  ＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの概要を示す図である。
【図３】  この発明の実施の形態２であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図４】  この発明の実施の形態２であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図５】  この発明の実施の形態２であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図６】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図７】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図８】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図９】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図１０】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図１１】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図１２】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図１３】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図１４】  遅延ずれの取得処理シーケンスの一例を示す図である。
【図１５】  この発明の実施の形態３であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図１６】  この発明の実施の形態３であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図１７】  この発明の実施の形態３であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図１８】  この発明の実施の形態４であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図１９】  この発明の実施の形態４であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図２０】  この発明の実施の形態４であるＩＥＥＥ１３９４を用いた同期システムにおけるタイマ遅延補償の処理シーケンスの一例を示す図である。
【図２１】  この発明の実施の形態５であるＩＥＥＥ１３９４を用いた同期システムを、コントローラと１以上のサーボドライブとからなる制御システムに適用した場合における遅延ずれ補正処理手順の一例を示すフローチャートである。
【図２２】  この発明の実施の形態５であるＩＥＥＥ１３９４を用いた同期システムを、コントローラと１以上のサーボドライブとからなる制御システムに適用した場合における遅延ずれ補正処理手順の一例を示すフローチャートである。
【図２３】  ＩＥＥＥ１３９４の通信レイヤの構成を示す図である。
【図２４】  Isochronous通信とAsynchronous通信とが混在する場合を示す図である。
【図２５】  サイクルスタートパケットを用いたサイクルマスタとサイクルスレーブとの間におけるタイマ同期処理を示すシーケンス図である。
【図２６】  サイクルスタートパケットを用いたサイクルスレーブ間のタイマ同期処理を示すシーケンス図である。
【符号の説明】
１，２  判定部、３  書込部、Ｎ１  要求ノード、Ｎ２  応答ノード、ＮＭ  サイクルマスタ、ＮＳ，ＮＳ１，ＮＳ２  サイクルスレーブ、ＴＭ２  第２のサイクルタイマ。
【図１】
0004097891.tif 000002
【図２】
0004097891.tif 000003
【図３】
0004097891.tif 000004
【図４】
0004097891.tif 000005
【図５】
0004097891.tif 000006
【図６】
0004097891.tif 000007
【図７】
0004097891.tif 000008
【図８】
0004097891.tif 000009
【図９】
0004097891.tif 000010
【図１０】
0004097891.tif 000011
【図１１】
0004097891.tif 000012
【図１２】
0004097891.tif 000013
【図１３】
0004097891.tif 000014
【図１４】
0004097891.tif 000015
【図１５】
0004097891.tif 000016
【図１６】
0004097891.tif 000017
【図１７】
0004097891.tif 000018
【図１８】
0004097891.tif 000019
【図１９】
0004097891.tif 000020
【図２０】
0004097891.tif 000021
【図２１】
0004097891.tif 000022
【図２２】
0004097891.tif 000023
【図２３】
0004097891.tif 000024
【図２４】
0004097891.tif 000025
【図２５】
0004097891.tif 000026
【図２６】
0004097891.tif 000027