(57)【要約】  通信装置２０は、時間をカウントするためのカウンタ２０５と、自装置宛のパケットまたはブロードキャストされたパケットを受信した場合にカウンタのカウンタ値を記録するカウンタ値保持部２０６と、パケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定し、周期パケットである場合にはカウンタ値保持部が記憶しているカウンタ値と周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部２０２と、差分に基づいて、自装置の時刻と周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正時間算出部２０４と、を備える。
2016208020.tif 000002
【特許請求の範囲】
【請求項１】
時間をカウントするためのカウンタと、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に前記カウンタのカウンタ値を記録するカウンタ値保持部と、
前記パケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定し、前記パケットが前記周期パケットである場合には前記カウンタ値保持部が記憶しているカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部と、
前記差分に基づいて、自装置の時刻と前記周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正時間算出部と、
を備えることを特徴とする通信装置。
【請求項２】
前記パケット解析部が算出した前記差分を記録する補正情報蓄積部、
を備え、
前記補正時間算出部は、前記補正情報蓄積部に蓄積された前記差分の個数が規定値に達した場合、前記補正情報蓄積部で記録されている差分を用いて前記補正値を算出する、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記補正情報蓄積部は、前記パケット解析部で算出された差分に対応する時間が前記周期パケットの転送時間以下の場合に当該差分を記録する、
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記補正時間算出部は、前記差分に対応する時間が前記周期パケットの転送時間以上となることが予測される場合に前記補正値を算出することを特徴とする請求項１に記載の通信装置。
【請求項５】
他の通信装置の時刻に自装置の時刻を同期させて動作する通信装置における時刻補正方法であって、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に時刻をカウントするためのカウンタのカウンタ値を記録するカウンタ値記録ステップと、
前記パケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定するパケット判定ステップと、
前記パケットが前記周期パケットである場合に前記カウンタ値記録ステップで記録したカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出する差分算出ステップと、
前記差分に基づいて、自装置の時刻と前記周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正値算出ステップと、
を含むことを特徴とする時刻補正方法。
【請求項６】
定周期でパケットを送信するマスタの通信装置と、
自装置の時刻を前記マスタの通信装置の時刻に同期させて動作するスレーブの通信装置と、
を備え、
前記スレーブの通信装置は、
時間をカウントするためのカウンタと、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に前記カウンタのカウンタ値を記録するカウンタ値保持部と、
前記パケットが前記マスタの通信装置から定周期で送信されたパケットである周期パケットか否かを判定し、前記パケットが前記周期パケットである場合には前記カウンタ値保持部が記憶しているカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部と、
前記差分に基づいて、自装置の時刻と前記マスタの通信装置の時刻とのずれを補正するための補正値を算出する補正時間算出部と、
を備えることを特徴とするネットワークシステム。
【請求項７】
前記マスタの通信装置が、一定周期で通信相手のスレーブの通信装置を切り替えながら前記スレーブの通信装置の各々と順番に通信し、かつ通信相手を切り替えた後に宛先がブロードキャストアドレスの前記周期パケットを送信する場合、
前記パケット解析部は、連続して受信したパケットの宛先アドレス同士を比較することにより、前記周期パケットを受信したか否かを判別する、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項８】
前記マスタの通信装置を無線ＬＡＮのアクセスポイント、
前記スレーブの通信装置を無線ＬＡＮの端末、
前記周期パケットを無線ＬＡＮのビーコンまたはハートビートパケットとする、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項９】
前記マスタの通信装置および前記スレーブの通信装置がＬＡＮを構成し、
前記周期パケットをハートビートパケットとする、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項１０】
他の通信装置に接続する通信装置であって、
他の前記通信装置からデータを受信する受信部と、
他の前記通信装置にデータを送信する送信部と、
前記受信部による周期パケットの受信タイミングと前記送信部による周期パケットの送信タイミングとの間にずれが生じた場合、前記送信部による送信タイミングを補正する制御部と、
を備えることを特徴とする通信装置。
【請求項１１】
前記制御部は、前記ずれがフレーム転送時間を超えた場合に前記送信タイミングを補正することを特徴とする請求項１０に記載の通信装置。
【請求項１２】
前記制御部は、前記ずれの積算値が所定値を超えた場合に前記送信タイミングを補正することを特徴とする請求項１０に記載の通信装置。
【請求項１３】
前記制御部は、前記ずれの平均値が所定値を超えた場合に前記送信タイミングを補正することを特徴とする請求項１０に記載の通信装置。
【請求項１４】
前記制御部は、前記受信部が受信したデータが前記周期パケットか否かを判断する周期パケット検出部を備えたことを特徴とする請求項１０に記載の通信装置。
【請求項１５】
他の通信装置に接続する通信装置であって、
時刻カウンタに基づくタイミングで他の前記通信装置からデータを受信する受信部と、
前記受信部による周期パケットの受信タイミングと前記時刻カウンタとの間にずれが生じた場合、前記時刻カウンタを補正する制御部と、
を備えたことを特徴とする通信装置。
【請求項１６】
前記制御部は、前記受信部が受信したデータが前記周期パケットか否かを判断する周期パケット検出部を備えたことを特徴とする請求項１５に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時刻同期が必要なネットワークシステムを構成する通信装置、時刻補正方法およびネットワークシステムに関する。
【背景技術】
【０００２】
複数の通信装置が協調して一連の動作を行なうシステムでは、各通信装置の時刻すなわち各通信装置が個別に管理しているローカル時刻を同期させる必要がある。このようなシステムにおいては、基準となる通信装置であるマスタに他の通信装置であるスレーブが時刻を同期させることにより、各通信装置はある決められた時刻に正確に動作することが可能となる。【０００３】
特許文献１には、通信装置間の時刻同期を実現するための発明が記載されている。特許文献１に記載された発明によれば、送信装置は、自身のデータ作成時刻としての標準時刻を電文情報に載せて受信装置に送信し、受信装置は受信した電文情報に記載されている標準時刻を用いて伝送遅延の揺らぎ分をもとめ、送信装置との間の時計誤差、伝送遅延を補正している。【０００４】
また、非特許文献１には、マスタとスレーブの間で時刻を同期させる手順について規定されている。非特許文献１に記載された時刻同期手順では、マスタは送信時刻の情報が格納されたＳｙｎｃメッセージを送信し、スレーブは、Ｓｙｎｃメッセージを受信すると、メッセージに格納されている情報が示す送信時刻ｔ1と、メッセージを受信した時刻ｔ2とを記憶する。さらに、スレーブは、送信時刻ｔ3の情報が格納されたＤｅｌａｙ＿Ｒｅｑメッセージをマスタへ送信し、マスタは、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信すると、Ｄｅｌａｙ＿Ｒｅｑメッセージの受信時刻ｔ4の情報をＤｅｌａｙ＿Ｒｅｓｐメッセージに格納してスレーブへ送信する。スレーブは、Ｄｅｌａｙ＿Ｒｅｓｐメッセージを受信すると、ｔ1、ｔ2、ｔ3およびｔ4を用いて自身の時刻とマスタの時刻との差を算出し、算出した差に基づいて自身の時刻を補正してマスタの時刻に同期させる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１７８２２６号公報
【非特許文献】
【０００６】
【非特許文献１】ＩＥＥＥ１５８８
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１および非特許文献１に記載された手順で時刻同期を実現する場合、通信装置間で時刻同期用のパケットを送受信する必要がある。【０００８】
ここで、通信装置間の時刻同期が必要なシステムとして、工作機械、半導体製造装置、産業用ロボット等の複数の軸を使用した高精度なモーション動作が必要とされるモーションコントロールシステムが存在する。モーションコントロールシステムでは、マスタは、装置間で動作を同期させる際の基準となるパケット（以下、同期パケットと称する）を定周期で送信する。また、マスタとスレーブは同期パケットが送信されないタイミングで通信を行っている。このようなシステムに対して特許文献１および非特許文献１に記載された時刻同期手順、すなわち、時刻同期用のパケットを使用して時刻同期を実現する手法を適用する場合、時刻同期手順の実行がシステムに悪影響を与える可能性がある。具体的には、マスタとスレーブが連続して通信しているなど、多くのパケットが送受信され、ネットワークの負荷が高くなっている状態において時刻同期手順を実行すると、時刻同期用のパケットが送信されることによりネットワークの負荷がさらに高くなってしまい、モーション動作の制御のために送受信されるパケットの処理に遅延を生じさせるなどの悪影響を与える可能性がある。そのため、時刻同期手順がネットワークに与える負荷の削減、すなわち、時刻同期手順の実行時に発生するトラフィックの削減が望まれる。【０００９】
本発明は、上記に鑑みてなされたものであって、自装置の時刻を他の装置の時刻に同期させる処理で必要なトラフィックを削減可能な通信装置を得ることを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明にかかる通信装置は、時間をカウントするためのカウンタと、自装置宛のパケットまたはブロードキャストされたパケットを受信した場合にカウンタのカウンタ値を記録するカウンタ値保持部と、を備える。また、受信したパケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定し、周期パケットである場合にはカウンタ値保持部が記憶しているカウンタ値と周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部と、差分に基づいて、自装置の時刻と周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正時間算出部と、を備える。
【発明の効果】
【００１１】
本発明にかかる通信装置は、自装置の時刻を他の装置の時刻に同期させる処理で必要なトラフィックを削減できるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１にかかるネットワークシステムの構成例を示す図
【図２】実施の形態１にかかる通信装置の構成例を示す図
【図３】実施の形態１にかかる通信装置の各部を実現するためのハードウェア構成例を示す図
【図４】Ｅｔｈｅｒｎｅｔ（登録商標）フレームの構成例を示す図
【図５】ＩＰパケットの構成例を示す図
【図６】実施の形態１にかかるネットワークシステム全体の時刻同期処理および時刻補正処理の一例を示す図
【図７】実施の形態１にかかるスレーブによる時刻補正動作を示す図
【図８】実施の形態１にかかるネットワークシステム全体の時刻補正処理の具体例を示す図
【図９】実施の形態２にかかるネットワークシステムにおける通信動作の一例を示す図
【発明を実施するための形態】
【００１３】
以下に、本発明の実施の形態にかかる通信装置、時刻補正方法およびネットワークシステムを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１４】
実施の形態１．
図１は、実施の形態１にかかるネットワークシステムの構成例を示す図である。
【００１５】
図１に示したネットワークシステムは、時刻同期のマスタとして動作する通信装置１０と、時刻同期のスレーブとして動作する通信装置２０、３０および４０とを含んで構成されている。通信装置１０、２０、３０および４０の内部構成は同じである。以下の説明では、通信装置１０をマスタ１０、通信装置２０，３０，４０をスレーブ２０，３０，４０と称する。マスタ１０は、モーションコントロールシステムのモーションコントローラなどである。スレーブ２０、３０および４０は、モーションコントロールシステムのＩ／Ｏ（Input/Output）装置である。なお、図１では、時刻同期のスレーブとして動作する通信装置を３台としているが、一例であり、３台以外でも構わない。
【００１６】
マスタ１０とスレーブ２０は論理インタフェース１で接続されている。スレーブ２０とスレーブ３０は論理インタフェース２で接続されている。スレーブ３０とスレーブ４０は論理インタフェース３で接続されている。論理インタフェース１から３は、Ｅｔｈｅｒｎｅｔのような有線伝送路であってもよいし、無線ＬＡＮ（Local  Area  Network）のような無線伝送路であってもよい。また、物理的な接続は、マスタ１０を頂点としてスレーブ２０、３０および４０がスター型に配置されているケース、マスタ１０とスレーブ２０、３０および４０とが全てリング状に接続されているケースなど、どのようなものでもよい。図１では、マスタ１０とスレーブ２０、３０および４０とをカスケード接続し、マスタ１０から送信されたパケットがスレーブ２０、３０、４０に順番に転送される接続形態としている。
【００１７】
図２は、実施の形態１にかかる通信装置、すなわち、マスタ１０、スレーブ２０、３０および４０の構成例を示す図である。なお、図２では、論理インタフェース１および２に接続されているスレーブ２０の構成を示している。図２において、矢印はパケットの流れを示している。
【００１８】
スレーブ２０は、Ｅｔｈｅｒｎｅｔなどの物理層およびＭＡＣ（Media  Access  Control）層を実現する物理インタフェース部２０１と、時刻補正に必要なパケット解析処理を実施するパケット解析部２０２と、時刻補正に必要な情報を蓄積しておく補正情報蓄積部２０３と、補正時間を算出する補正時間算出部２０４と、プロセッサのクロックなどで実現され、時間をカウントするためのカウンタ２０５と、受信パケットの受信時刻を示すカウンタ値を記憶するカウンタ値保持部２０６と、周期通信の開始タイミングを示す開始カウンタ値、周期通信を行う期間の長さを示す通信周期、補正閾値などを保持しておくパラメータ記憶部２０７と、を備える。なお、カウンタ２０５は通信装置が持つ時計であってもよく、時間に換算できる情報を得ることが可能なものであれば何でもよい。周期通信とは、マスタ１０が通信相手のスレーブをある一定の周期で切り替えながら各スレーブと順番に通信を行うような通信である。
【００１９】
ここで、図２に示した実施の形態１にかかる通信装置、すなわち、マスタ１０、スレーブ２０、３０および４０の各部を実現するためのハードウェア構成について説明する。図３は、実施の形態１にかかる通信装置の各部を実現するためのハードウェア構成例を示す図である。
【００２０】
実施の形態１にかかる通信装置の各部は、ＣＰＵ（Central  Processing  Unit）、システムＬＳＩ（Large  Scale  Integration）などのプロセッサ３０１と、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）などで構成されるメモリ３０２と、各種ネットワークに接続するための入出力インタフェース３０３とにより実現することが可能である。プロセッサ３０１、メモリ３０２および入出力インタフェース３０３はバス３００に接続され、バス３００を介してデータ、制御情報などの受け渡しを相互に行うことが可能である。
【００２１】
物理インタフェース部２０１は、入出力インタフェース３０３により実現される。パケット解析部２０２は、プロセッサ３０１およびメモリ３０２に格納されているプログラムにより実現される。具体的には、プロセッサ３０１が、パケット解析部２０２として動作するためのプログラムをメモリ３０２から読み出して実行することにより、パケット解析部２０２を実現する。補正時間算出部２０４は、プロセッサ３０１およびメモリ３０２に格納されているプログラムにより実現される。具体的には、プロセッサ３０１が、補正時間算出部２０４として動作するためのプログラムをメモリ３０２から読み出して実行することにより、補正時間算出部２０４を実現する。補正情報蓄積部２０３、カウンタ値保持部２０６およびパラメータ記憶部２０７は、メモリ３０２により実現される。カウンタ２０５はプロセッサが有しているクロックを利用して実現される。
【００２２】
次に、図２を用いて、スレーブ２０におけるパケット処理、具体的には、マスタ１０が送信したパケットをスレーブ２０が受信してスレーブ３０へ転送する処理について説明する。マスタ１０から送信されたパケットであるパケット１１は、論理的なインタフェースである論理インタフェース１から物理インタフェース部２０１に入力される。なお、パケット１１は、論理インタフェース１においてはフレームとして伝送される。物理インタフェース部２０１は、既知のビット列を検出することによりパケットの先頭を把握し、パケットを受信する。例えば、パケット１１が図４に示すようなＥｔｈｅｒｎｅｔフレームの場合は、「プリアンブル／ＳＦＤ(Start  of  Frame  Delimiter)」がパケットの先頭である。「プリアンブル／ＳＦＤ」は７バイト長のプリアンブルおよび１バイト長のＳＦＤからなる合計８バイトの情報であり、固定のビットパターンとなっている。なお、Ｅｔｈｅｒｎｅｔフレームは、「プリアンブル／ＳＦＤ」に加えて、フレームの宛先を示す「宛先アドレス」と、フレームの送信元を示す「送信元アドレス」と、フレームを受け取る上位プロトコルのタイプまたはフレームの長さを示す「タイプ／長さ」と、データを格納する「データ部」と、フレームの誤りチェックを行うための「ＦＣＳ(Frame  Check  Sequence)」とを含んでいる。「データ部」には、図５に示した構成のＩＰ（Internet  Protocol）パケットなどがデータとして格納される。本実施の形態では、ＩＰパケットがデータとしてデータ部に格納されているものとする。
【００２３】
ＩＰパケットは、ＩＰのバージョンおよびＩＰパケットのヘッダの長さを示す「バージョン／ＩＨＬ(Internet  Header  Length)」と、ＩＰパケットの優先度などを示す「ＴｏＳ(Type  of  Service)」と、上位プロトコルを示す「プロトコル」と、ヘッダの誤りチェックを行うための「ヘッダチェックサム」と、ＩＰパケットの送信元を示す「送信元アドレス」と、ＩＰパケットの宛先を示す「宛先アドレス」と、データを格納する「データ部」とを含んでいる。
【００２４】
パケット処理の説明に戻り、物理インタフェース部２０１は、図４に示した構成のパケット１１を受信すると、データ部に格納されているＩＰパケットを取り出し、取り出したＩＰパケットを受信パケットとしてパケット解析部２０２へ転送する。パケット解析部２０２は、物理インタフェース部２０１から受信パケットを受け取ると、自通信装置宛か他の通信装置宛かを判別し、他の通信装置宛の場合、物理インタフェース部２０１へ出力する。すなわち、パケット解析部２０２は、受信パケット内の宛先アドレスが自装置以外を示していれば、他の通信装置宛と判断し、受信パケットを物理インタフェース部２０１へ出力する。物理インタフェース部２０１は、パケット解析部２０２で他の通信装置宛と判断された受信パケットを受け取ると、パケット１２として論理インタフェース２へ出力する。このとき、物理インタフェース部２０１は、パケット解析部２０２から受け取った受信パケットであるＩＰパケットを図４に示したフレームの「データ部」に格納し、論理インタフェース２へ出力する。
【００２５】
また、パケット解析部２０２は、物理インタフェース部２０１から受け取った受信パケットが自装置宛の場合、図２では記載を省略している上位プロトコルにパケットを転送するなど、受信パケットの内容に応じた処理を実施する。
【００２６】
なお、パケット１１が自装置宛か否かをパケット解析部２０２で判別することとしたが、物理インタフェース部２０１で判別することも可能である。物理インタフェース部２０１で判別する場合、物理インタフェース部２０１は、図４に示したＥｔｈｅｒｎｅｔフレームの宛先アドレスを確認し、自装置以外を示している場合、論理インタフェース２へ転送する。
【００２７】
ここで、本実施の形態にかかるネットワークシステムは、モーションコントロールシステムなど、規定のパケットがマスタ１０から定周期で各スレーブへ送信されるシステムに適用されることを前提とする。また、本実施の形態にかかるネットワークシステムでは、マスタ１０が定周期で送信するパケットを利用して各スレーブが自装置の時刻を補正することにより、時刻同期手順がネットワークに与える負荷の低減を実現する。
【００２８】
各スレーブが自装置の時刻を補正する動作について説明する。各スレーブにおける時刻補正動作は同じである。ここでは、スレーブ２０が時刻を補正する場合について説明する。なお、スレーブ２０は、何らかの方法により、自装置の時刻をマスタ１０の時刻に同期させた後、マスタ１０が定周期で送信するパケットを利用して自装置の時刻を補正する。スレーブ２０が自装置の時刻をマスタ１０の時刻に同期させる方法としては、非特許文献１に記載された方法を利用できるが、この方法に限定するものではない。
【００２９】
スレーブ２０は、自装置の時刻をマスタ１０の時刻に同期させる処理が終了した後、マスタ１０から定周期で送信されるパケットを受信した時刻に基づいて、自装置の時刻を補正する。具体的には、スレーブ２０は、マスタ１０から定周期で送信されるパケットを受信すると、パケットを受信した時刻と、定周期で送信されるパケットの送信周期から推定した時刻すなわちパケットの到着予想時刻とを比較することにより、自装置の時刻とマスタ１０の時刻のずれを推定する。そして、スレーブ２０は、時刻のずれが０に近づくよう、自装置の時刻を補正する。
【００３０】
ネットワークシステム全体の時刻同期処理および時刻補正処理は図６に示したものとなる。
【００３１】
まず、マスタ１０、スレーブ２０、３０および４０は、システム起動時、システムの実動作の休止時など、定周期で送信されるパケットの送信をマスタ１０が開始する前に、従来からある時刻同期処理１００を使用して時刻同期を行う。時刻同期処理１００としては、非特許文献１で規定されている方法などを使用する。時刻同期処理１００は、補正時間算出部２０４が実行するものとするがこれに限定されない。時刻同期処理１００を行うための処理部を備えるようにしても構わない。以下、定周期で送信されるパケットを「周期パケット」と称する。なお、ネットワークシステムの負荷が低い状態においては、後述する時刻補正処理に代えて、時刻同期処理１００を定期的に、または不定期に、マスタ１０、スレーブ２０、３０および４０が実行し、時刻が同期した状態を維持するようにしてもよい。マスタ１０がモーションコントロールシステムのモーションコントローラの場合、周期パケットは、システム全体の同期タイミングを指定してシステム内の装置間で同期制御を実現するためのパケットに相当する。
【００３２】
時刻同期処理１００が終了した後、マスタ１０は、周期通信開始パケット１１０をスレーブ２０、３０および４０へ送信する。周期通信開始パケット１１０は、マスタ１０が周期パケットの送信を開始することをネットワークシステム内に通知するためのパケットである。周期通信開始パケット１１０は、マスタ１０が周期パケットの送信を開始する時刻である、周期パケットの送信開始時刻の情報を含んでいるものとする。本実施の形態では、マスタ１０が周期パケットの送信を開始する時刻はマスタ１０が周期通信を開始する時刻と一致する。周期パケットの送信周期は、ネットワークシステムを構築する際にマスタ１０、スレーブ２０、３０および４０に設定しておいてもよいし、周期通信開始パケット１１０によりマスタ１０がスレーブ２０、３０および４０に通知するようにしてもよい。
【００３３】
マスタ１０は、周期通信開始パケット１１０を送信した後、周期通信開始パケット１１０で各スレーブに通知した、周期パケットの送信開始時刻になると、周期パケット６０を送信する。
【００３４】
スレーブ２０は、周期パケット６０を受信すると、周期パケット６０をスレーブ３０へ転送するとともに、周期パケット６０の受信時刻、周期パケットの送信開始時刻および周期パケットの送信周期に基づいて、自装置の時刻を補正する。時刻を補正する動作の詳細については後述する。
【００３５】
スレーブ３０は、スレーブ２０と同様に、周期パケット６０を受信すると、周期パケット６０をスレーブ４０へ転送するとともに、周期パケット６０の受信時刻、周期パケットの送信開始時刻および周期パケットの送信周期に基づいて、自装置の時刻を補正する。
【００３６】
スレーブ４０は、周期パケット６０を受信すると、周期パケット６０の受信時刻、周期パケットの送信開始時刻および周期パケットの送信周期に基づいて、自装置の時刻を補正する。
【００３７】
マスタ１０は、周期パケット６０を送信した後、規定時間すなわち周期パケットの送信周期が経過すると、周期パケット７０を送信する。スレーブ２０、３０および４０は、周期パケット７０を受信すると、周期パケット６０を受信した場合と同様の処理を行い、自装置の時刻を補正する。なお、図６では、説明を簡単化するため、スレーブ２０、３０および４０が周期パケットを受信するごとに時刻補正を行う場合の例を示しているが、周期パケットを規定回数受信した場合に時刻補正を行うようにしてもよい。一般的に、周期パケットの送信周期は短く、１送信周期の間に時刻がずれる量は、モーションコントロール等を行う上で問題とはならない。そのため、処理負荷が必要以上に増大することがないよう、各スレーブは周期パケットを規定回数受信した場合に時刻補正を実施することが望ましい。
【００３８】
マスタ１０は、周期パケット７０を送信した後、規定時間が経過するごとに、周期パケットを送信する。また、マスタ１０は、周期パケットの送信タイミング以外において、通常パケットを送信する。図６では、マスタ１０が周期パケット６０と周期パケット７０の間に通常パケット５５を送信する場合を示している。通常パケットは、周期パケットに該当しないパケットであり、不定期に送信される。マスタ１０が軸制御に必要な制御データをスレーブ２０，３０，４０へ送信するためのパケットなどが通常パケットに該当する。図６では、周期パケットの送信タイミングの間に通常パケットが１つだけ送信される例を示しているが、通常パケットが複数送信される場合もある。また、スレーブ２０，３０，４０からマスタ１０へ通常パケットが送信される場合もある。
【００３９】
マスタ１０、スレーブ２０、３０および４０が時刻を補正する動作の具体例を示す。スレーブ２０、３０および４０は、時刻同期処理１００を行い自装置の時刻を調整すると、調整後の時刻に対応したカウンタ値を周期通信の先頭位置として設定する。カウンタ値はカウンタ２０５の値であり、マスタ１０のカウンタ値、すなわちマスタ１０のカウンタ２０５のカウンタ値をＭ１０＿Ｃ、スレーブ２０のカウンタ値をＳ２０＿Ｃ、スレーブ３０のカウンタ値をＳ３０＿Ｃ、スレーブ４０のカウンタ値をＳ４０＿Ｃとする。また、カウンタ２０５の値は１μ秒ごとに１増加するのものとする。
【００４０】
時刻同期処理１００によって、マスタ１０、スレーブ２０、３０および４０の時刻を１０時０分０秒０００ｍ秒０００μ秒に一致させ、この時のマスタ１０、各スレーブのカウンタ値がカウンタ値Ｍ１０＿Ｃ＝５００、カウンタ値Ｓ２０＿Ｃ＝７００００、カウンタ値Ｓ３０＿Ｃ＝３０００、カウンタ値Ｓ４０＿Ｃ＝２００であるものとする。
【００４１】
マスタ１０が周期通信開始パケット１１０により、周期通信、すなわち周期パケットの送信を１０時０分０秒０１０ｍ秒０００μ秒から開始する旨をスレーブ２０、３０および４０に通知した場合について考える。この場合、最初の周期パケット６０が送信される時刻に対応する、マスタ１０、スレーブ２０、３０および４０のカウンタ値は、それぞれ、Ｍ１０＿Ｃ＝１０５００、Ｓ２０＿Ｃ＝８００００、Ｓ３０＿Ｃ＝１３０００、Ｓ４０＿Ｃ＝１０２００となる。また、周期パケットの送信周期が１ｍ秒であれば、周期パケットの送信周期と一致する通信周期は１０００となる。なお、上述したように、通信周期は周期通信を行う期間の長さを示す。この場合、周期パケット７０が送信される時刻に対応する、マスタ１０、スレーブ２０、３０および４０のカウンタ値は、それぞれ、Ｍ１０＿Ｃ＝１１５００、Ｓ２０＿Ｃ＝８１０００、Ｓ３０＿Ｃ＝１４０００、Ｓ４０＿Ｃ＝１１２００となる。各スレーブが周期パケット７０を受信したときのカウンタ値がこれらと一致している場合、時刻が同期しているといえる。
【００４２】
次に、スレーブ２０、３０および４０が時刻を補正する動作について、図２および図７を用いて説明する。図７は、スレーブ２０における時刻補正動作を示すフローチャートである。なお、スレーブ３０および４０における時刻補正動作はスレーブ２０における時刻補正動作と同じである。ここでは、スレーブ２０が図４に示した構成のＥｔｈｅｒｎｅｔフレームをパケット１１として受信し、Ｅｔｈｅｒｎｅｔフレームの「データ部」には、図５に示した構成のＩＰパケットが格納されているものとして説明を行う。
【００４３】
スレーブ２０は、まず、周期通信の開始カウンタ値ＣＳ、通信周期Ｐおよび周期回数Ｍを設定する（ステップＳ１０）。各設定値は、パラメータ記憶部２０７が保持する。
【００４４】
このステップＳ１０で設定する開始カウンタ値ＣＳは、周期通信の先頭位置に対応する、カウンタ２０５のカウンタ値である。すなわち、ここでの開始カウンタ値ＣＳは、スレーブ２０が周期通信開始パケット１１０を受信した後、最初の周期パケットの受信時刻を示すカウンタ値である。スレーブ２０の時刻がマスタ１０の時刻に同期しており、かつマスタ１０における周期パケットの送信処理などにおいて処理遅延が発生していない場合、周期パケットは、カウンタ２０５のカウンタ値が開始カウンタ値ＣＳとなるタイミングでスレーブ２０に到着する。なお、詳細については後述するが、開始カウンタ値ＣＳは、補正時間算出部２０４によって適宜補正される。補正後の開始カウンタ値ＣＳは、次に受信する周期パケットの受信予想時刻を示す。
【００４５】
周期回数Ｍは、通信周期Ｐが経過するごとに１インクリメントされる情報である。周期回数Ｍは、ステップＳ１０においてＭ＝０に設定される。スレーブ２０は、図６に示した時刻同期処理１００を実行して自装置の時刻をマスタ１０の時刻に同期させた後、周期通信開始パケット１１０を受信すると、図７のステップＳ１０を実行する。時刻同期処理１００では、マスタ１０から送信されたパケットがスレーブ２０に到着するまでの所要時間である伝送遅延時間を測定するため、スレーブ２０は、この伝送遅延時間と、周期通信開始パケット１１０で通知される周期パケットの送信開始時刻とに基づいて、上記開始カウンタ値ＣＳを算出する。
【００４６】
スレーブ２０は、ステップＳ１０を実行後、補正情報記録回数ｎをｎ＝０に初期化する（ステップＳ１１）。スレーブ２０においては、補正時間算出部２０４がステップＳ１０およびＳ１１を実行する。
【００４７】
ステップＳ１１を実行後、スレーブ２０は、通信周期Ｐが経過したか否か、および、パケットを受信したか否かを継続して監視する（ステップＳ１２からＳ１４）。具体的には、スレーブ２０は、まず、通信周期Ｐが経過したか否かを確認し（ステップＳ１２）、通信周期Ｐが経過した場合には（ステップＳ１２：Ｙｅｓ）、パラメータ記憶部２０７で保持している周期回数Ｍを１インクリメントする（ステップＳ１３）。通信周期Ｐが経過していない場合（ステップＳ１２：Ｎｏ）、および、ステップＳ１３を実行した場合、スレーブ２０は、パケットを受信したか否かを確認する（ステップＳ１４）。スレーブ２０は、パケットを受信した場合（ステップＳ１４：Ｙｅｓ）、ステップＳ１５およびこれに続く処理を実行し、パケットを受信していない場合には（ステップＳ１４：Ｎｏ）、ステップＳ１２に戻る。これらのステップＳ１２からＳ１４のうち、ステップＳ１２およびＳ１３については補正時間算出部２０４が実行し、ステップＳ１４については物理インタフェース部２０１が実行する。
【００４８】
パケット解析部２０２は、カウンタを利用して通信周期Ｐが経過したか否かを判断する。パケット解析部２０２は、通信周期カウント用の専用のカウンタを使用して通信周期Ｐのカウントを行ってもよいし、図２に示したカウンタ２０５を利用してカウントを行ってもよい。
【００４９】
物理インタフェース部２０１は、論理インタフェース１からパケット１１が入力され、パケット１１が自装置で処理すべきパケットかつパケットに誤りがない場合、パケットを受信したと判断する（ステップＳ１４：Ｙｅｓ）。物理インタフェース部２０１は、宛先アドレスがブロードキャストアドレスまたは自装置を示すアドレスであり、かつＦＣＳによる誤り判定で誤りが検出されなければ、パケットを受信したと判断する。
【００５０】
パケットを受信した場合（ステップＳ１４：Ｙｅｓ）、物理インタフェース部２０１は、カウンタ２０５に対してカウンタ値をカウンタ値保持部２０６へ出力するよう指示するとともに、受信したパケットをパケット解析部２０２へ出力する。物理インタフェース部２０１から上記の指示を受けたカウンタ２０５はカウンタ値をカウンタ値保持部２０６へ出力する。カウンタ値保持部２０６は、カウンタ２０５から出力されたカウンタ値をパケットの受信タイミングすなわち受信時刻を示すカウンタ値ＣＮとして記録する（ステップＳ１５）。なお、カウンタ値保持部２０６は、カウンタ２０５から出力されたカウンタ値をカウンタ値ＣＮとして記録する際、それまで保持していたカウンタ値ＣＮを削除する。すなわち、カウンタ値保持部２０６は、カウンタ２０５からカウンタ値が出力されるごとに、保持しているカウンタ値ＣＮを更新する。また、物理インタフェース部２０１がパケット解析部２０２へ出力するパケットは、図５に示した構成のＩＰパケット、すなわち、図４に示したフレームの「データ部」から取り出されたＩＰパケットである。
【００５１】
パケット解析部２０２は、物理インタフェース部２０１からＩＰパケットを受け取ると、周期パケットか否かを確認する（ステップＳ１６）。ＩＰパケットが周期パケットか否かをパケット解析部２０２が判定する方法としては、周期パケットであることを示す情報が含まれているか否かによって判断する方法が考えられるが、他の方法で判定してもよい。周期パケットか否かをどのような方法で判定しても構わない。
【００５２】
パケット解析部２０２は、受け取ったパケットが周期パケットではない場合（ステップＳ１６：Ｎｏ）、時刻補正のための処理としては何も行わない。この場合はステップＳ１２に戻り、通信周期Ｐが経過したか否かを確認するとともに、物理インタフェース部２０１が次のパケットの受信を待つ。このとき、スレーブ２０は受信したパケットの内容に応じた処理を行うが、図７では記載を省略している。パケット解析部２０２は、受け取ったパケットが周期パケットの場合（ステップＳ１６：Ｙｅｓ）、パケット受信時のカウンタ値ＣＮをカウンタ値保持部２０６から読み出し、読み出したカウンタ値と本来周期パケットを受信する時刻を示すカウンタ値との差分βを算出するとともに、差分βの絶対値が規定の補正閾値α以下か否かを確認する。すなわち、パケット解析部２０２は、「−α≦β≦α」を満たしているか否かを確認する（ステップＳ１７）。ここで、本来周期パケットを受信する時刻を示すカウンタ値を基準カウンタ値とすると、基準カウンタ値は「基準カウンタ値＝ＣＳ＋Ｐ×Ｍ」で表される。補正閾値αは、スレーブ２０の時刻がマスタ１０の時刻からずれたことに伴う周期パケットの受信時刻の誤差の発生ではなく、他の要因により周期パケットの受信時刻に誤差が生じた場合に、時刻を誤って補正してしまうことを防止するためのものである。通常、スレーブ２０の時刻はマスタ１０の時刻から徐々にずれていくため、周期パケットを受信した時刻と本来周期パケットを受信する時刻の差分βが急に大きくなった場合、すなわち、差分βが補正閾値αよりも大きくなった場合、マスタ１０の処理負荷が増大するなどの理由により処理遅延が発生し、周期パケットの受信時刻に誤差が生じたと推定することができる。よって、パケット解析部２０２は、差分βが補正閾値αよりも大きい場合、差分βを破棄する。補正閾値αは、パラメータ記憶部２０７に予め設定されているものとする。
【００５３】
パケット解析部２０２は、「−α≦β≦α」ではない場合（ステップＳ１７：Ｎｏ）、何も行わない。この場合はステップＳ１２に戻り、物理インタフェース部２０１が次のパケットの受信を待つ。パケット解析部２０２は、「−α≦β≦α」の場合（ステップＳ１７：Ｙｅｓ）、補正情報記録回数ｎを１インクリメントし、差分βを補正情報蓄積部２０３に記録する（ステップＳ１８）。
【００５４】
補正時間算出部２０４は、補正情報記録回数ｎが規定回数Ｎに達したかどうかを監視しており（ステップＳ１９）、ｎ＜Ｎの場合（ステップＳ１９：Ｎｏ）、何も行わない。この場合はステップＳ１２に戻り、物理インタフェース部２０１が次のパケットの受信を待つ。なお、Ｎは１以上の整数とする。一方、ｎ＝Ｎの場合（ステップＳ１９：Ｙｅｓ）、補正時間算出部２０４は、補正情報蓄積部２０３に記録されている差分βに基づいて、補正値γを計算する（ステップＳ２０）。このステップＳ２０において、補正時間算出部２０４は、補正値γを前回計算してから現在までの間に補正情報蓄積部２０３に記録された差分βの平均値を算出し、補正値γとする。すなわち、補正時間計算部２０４は、γ＝Σβ／Ｎを計算する。Σβは、補正値γを前回計算してから現在までの間に補正情報蓄積部２０３に記録された差分βの和である。なお、補正時間計算部２０４は、ステップＳ２０において補正値γを計算する際、補正情報蓄積部２０３で記録されているＮ個の差分βを削除する処理も併せて行う。
【００５５】
次に、補正時間算出部２０４は、ステップＳ２０で計算した補正値γを用いて、パラメータ記憶部２０７で記憶されている開始カウンタ値ＣＳを補正するとともに、時刻を補正する（ステップＳ２１）。このステップＳ２１において、補正時間算出部２０４は、開始カウンタ値ＣＳに対し、γおよびＰ×Ｍを加算することにより、開始カウンタ値ＣＳを補正する。補正後の開始カウンタ値ＣＳは、次の周期パケットを正常に受信する場合の周期パケットの到着タイミングを示す、カウンタ２０５のカウンタ値である。「周期パケットを正常に受信する」とは、スレーブ２０の時刻がマスタ１０の時刻に同期しており、かつマスタ１０における周期パケットの送信処理などにおいて処理遅延が発生することなく周期パケットを受信する、という意味である。時刻の補正は補正値γを用いて行う。時刻の補正方法は、スレーブ２０における時刻の管理方法に依存する。例えば、スレーブ２０がカウンタ２０５のカウンタ値と実際の時刻の対応テーブルを保持している場合、対応テーブルを更新することにより時刻を補正する。例えば、スレーブ２０が、「カウンタ２０５のカウンタ値＝５００の場合、時刻＝１０時０分０秒０００ｍ秒０００μ秒」であることを示す対応テーブルを保持している状態において、補正時間算出部２０４が補正値γ＝１５を算出した場合、対応テーブルを「カウンタ２０５のカウンタ値＝５１５の場合、時刻＝１０時０分０秒０００ｍ秒０００μ秒」であることを示す内容に更新する。補正時間算出部２０４が補正値γ＝１５を算出した場合の対応テーブルの更新方法は一例であり、これに限定されない。対応テーブル内のカウンタ値を更新するのではなく、カウンタ値に対応する時刻の方を更新しても構わない。
【００５６】
なお、図７に示した例では補正情報の記録回数が規定値Ｎに達した場合、すなわち、補正情報蓄積部２０３が差分βをＮ個記録した場合に補正時間算出部２０４が補正値γを計算することとしたが、前回時刻補正を行ってから規定時間が経過した場合に補正値γを算出して時刻補正を行うようにしてもよい。
【００５７】
次に、図８を用いて、実施の形態１のネットワークシステム全体の時刻補正処理の具体例を説明する。図８では、図６に示した時刻同期処理１００および周期通信開始パケット１１０の送信が実施された後の動作例を示している。
【００５８】
ネットワークシステムにおいて、マスタ１０は、図６に示した時刻同期処理１００を実行し、さらに、周期通信開始パケット１１０により周期パケットの送信開始時刻をスレーブ２０、３０および４０に通知する。その後、マスタ１０は、周期通信開始パケット１１０により各スレーブに通知した送信開始時刻になると、まず、周期パケット６０を送信する。さらに、通信周期５０が経過するごとに、周期パケット７０、８０および９０を順次送信する。図８の例では、マスタ１０は、時刻Ｔ１において周期パケット６０を送信した後、時刻Ｔ６、Ｔ１１およびＴ１６において、周期パケット７０、８０および９０を送信する。
【００５９】
時刻Ｔ１にマスタ１０から送信された周期パケット６０は、各スレーブにおいて時刻ずれが発生しておらず、かつ遅延揺らぎも発生していない状態で、スレーブ２０、３０および４０に到着している。すなわち、周期パケット６０は、各スレーブが保持している開始カウンタ値ＣＳが示す本来の到着時刻に周期パケットが各スレーブに到着している。図８の例では、周期パケット６０は、時刻Ｔ１にマスタ１０から送信された後、時刻Ｔ２にスレーブ２０に到着している。周期パケット６０がマスタ１０に送信されてからスレーブ２０に到着するまでの伝送遅延時間は遅延６１である。その後、周期パケット６０はスレーブ２０により転送され、時刻Ｔ３にスレーブ３０に到着している。周期パケット６０がマスタ１０に送信されてからスレーブ３０に到着するまでの伝送遅延時間は遅延６２である。さらに、周期パケット６０は、スレーブ３０により転送され、時刻Ｔ４にスレーブ４０に到着している。周期パケット６０がマスタ１０に送信されてからスレーブ４０に到着するまでの伝送遅延時間は遅延６３である。
【００６０】
周期パケット６０が本来の到着時刻にスレーブ２０、３０および４０に到着しているため、スレーブ２０、３０および４０は、周期パケット６０を受信すると、上述した差分βとして、０を補正情報蓄積部２０３にそれぞれ記録する。
【００６１】
時刻Ｔ６にマスタ１０から送信された周期パケット７０は、本来であれば、時刻Ｔ７にスレーブ２０に到着する筈である。しかし、スレーブ２０の時刻とマスタ１０の時刻のずれ、または処理遅延の影響により、伝送遅延時間に揺らぎ７１が発生し、本来とは異なる到着時刻に周期パケット７０がスレーブ２０に到着している。また、周期パケット７０は、スレーブ２０により転送された後、本来であれば、時刻Ｔ８にスレーブ３０に到着する筈であるが、伝送遅延時間に揺らぎ７２が発生し、本来とは異なる到着時刻にスレーブ３０に到着している。また、周期パケット７０は、スレーブ３０により転送された後、本来の到着時刻である時刻Ｔ９にスレーブ４０に到着している。よって、揺らぎ７３は０となっている。ここで、スレーブ２０への周期パケット７０の到着時刻は、スレーブ２０の時刻が少し進んだ、もしくは周期パケット７０の到着が少し遅れたことにより、揺らぎ７１が発生し、伝送遅延時間が少し増えたものとする。また、スレーブ３０への周期パケット７０の到着時刻は、スレーブ３０の時刻が少し遅れた、もしくは周期パケット７０の到着が少し早くなったことにより、遅延が少し減少した状態の揺らぎ７２が発生したものとする。なお、伝送遅延時間が増える要因は、スレーブの時刻がマスタ１０の時刻よりも遅れた場合、処理遅延の発生、が考えられる。一方、伝送遅延時間が減少する要因は、スレーブの時刻がマスタ１０の時刻よりも進んだ場合が考えられる。
【００６２】
スレーブ２０、３０および４０は、周期パケット７０を受信すると、上述した差分βとして、揺らぎ７１、７２および７３を補正情報蓄積部２０３にそれぞれ記録する。
【００６３】
時刻Ｔ１１にマスタ１０から送信された周期パケット８０は、本来であれば、時刻Ｔ１２にスレーブ２０に到着する筈である。しかし、スレーブ２０の時刻とマスタ１０の時刻のずれ、または処理遅延の影響により、伝送遅延時間に揺らぎ８１が発生し、本来とは異なる到着時刻に周期パケット８０がスレーブ２０に到着している。また、周期パケット８０は、スレーブ２０により転送された後、本来であれば、時刻Ｔ１３にスレーブ３０に到着する筈であるが、伝送遅延時間に揺らぎ８２が発生し、本来とは異なる到着時刻にスレーブ３０に到着している。また、周期パケット８０は、スレーブ３０により転送された後、本来の到着時刻である時刻Ｔ１４にスレーブ４０に到着している。よって、揺らぎ８３は０となっている。
【００６４】
スレーブ２０、３０および４０は、周期パケット８０を受信すると、上述した差分βとして、揺らぎ８１、８２および８３を補正情報蓄積部２０３にそれぞれ記録する。
【００６５】
時刻Ｔ１６にマスタ１０から送信された周期パケット９０は、本来であれば、時刻Ｔ１７にスレーブ２０に到着する筈である。しかし、スレーブ２０の時刻とマスタ１０の時刻のずれ、または処理遅延の影響により、伝送遅延時間に揺らぎ９１が発生し、本来とは異なる到着時刻に周期パケット９０がスレーブ２０に到着している。また、周期パケット９０は、スレーブ２０により転送された後、本来であれば、時刻Ｔ１８にスレーブ３０に到着する筈であるが、伝送遅延時間に揺らぎ９２が発生し、本来とは異なる到着時刻にスレーブ３０に到着している。また、周期パケット９０は、スレーブ３０により転送された後、本来の到着時刻である時刻Ｔ１９にスレーブ４０に到着している。よって、揺らぎ９３は０となっている。
【００６６】
ここで、スレーブ２０への周期パケット９０の伝送遅延時間は揺らぎ９１を含むが、補正閾値５１より大きいものとする。このようなケースでは、スレーブ３０および４０は、周期パケット９０を受信すると、上述した差分βとして、揺らぎ９２および９３を補正情報蓄積部２０３にそれぞれ記録する。一方、スレーブ２０は、揺らぎ９１を補正情報蓄積部２０３に記録しない。すなわち、スレーブ２０は、周期パケット９０を受信した場合には差分βを補正情報蓄積部２０３に記録しない。この場合、周期パケット９０の受信が完了した時点では、スレーブ２０の補正情報蓄積部２０３は、０、揺らぎ７１および揺らぎ８１を上述した差分βとして記録するとともに、揺らぎを記録した回数すなわち差分βを記録した回数（ここでは３回）を記録することになる。揺らぎ９１に関しては、上述した補正閾値αに相当する補正閾値５１を超えているため、スレーブ２０の補正情報蓄積部２０３は記録しない。
【００６７】
以下、同様にして、マスタ１０は周期パケットを送信し、スレーブ２０、３０および４０は、周期パケットを受信するごとに、差分βを算出し、差分βが補正閾値α以下であれば、補正情報蓄積部２０３に記録し、差分βの記録回数ｎをインクリメントする。
【００６８】
スレーブ２０、３０および４０は、記録回数ｎがＮになると、以下の計算を行う。以下の計算はスレーブ２０、３０および４０の補正時間算出部２０４が行う。マスタ１０から周期パケット６０が到着する本来の時刻を示す周期通信の開始カウンタ値をＣＳ、周期パケットが送信される周期である通信周期をＰ、通信周期が経過した回数を示す周期回数をＭ、補正閾値をα、揺らぎ、すなわち本来の伝送遅延時間との差分をβ、差分の記録回数をＮ、補正値をγ、補正後のカウンタ値をＣとすると、補正値を平均値で求めるとすれば、補正時間算出部２０４は、以下の式（１）および（２）に従い、周期回数Ｍのカウンタ値Ｃを算出する。カウンタ値Ｃは、時刻補正後に最初に受信する周期パケットの到着予想時刻を示す。補正値γは差分βの平均値である。
【００６９】
Ｃ＝ＣＳ＋Ｐ×Ｍ＋γ                  …（１）
γ＝Σβ／Ｎ、ただし−α≦β≦α      …（２）
【００７０】
カウンタ２０５が１μ秒ごとに１増加するものとした場合、マスタ１０の時刻との差である時刻の補正値は、γ（μ秒）となる。
【００７１】
なお、揺らぎは負の値になることがあるため、βおよびγは負の値となることもある。また、補正値γの算出方法は、平均値だけでなく中心値または最尤値としてもよい。補正に用いる回数は時間であってよい。すなわち、規定時間が経過するごとに、補正情報蓄積部２０３が記録している差分βおよび記録回数Ｎに基づいて補正値γを算出してもよい。本発明では補正値γを算出するためのアルゴリズムについては規定しない。
【００７２】
以上のように、本実施の形態のネットワークシステムにおいて、スレーブ２０、３０および４０は自装置の時刻をマスタ１０の時刻に同期させた後、マスタ１０から定周期で送信される周期パケットを受信すると、自装置の時刻とマスタ１０の時刻のずれを示す差分βを算出し、差分βに基づいて時刻の補正値を算出することとした。これにより、スレーブ２０、３０および４０は、自装置の時刻をマスタの時刻に同期させた後、トラフィックが増加するのを回避しつつ時刻を補正することができる。すなわち、自装置の時刻をマスタの時刻に同期させる処理で必要なトラフィックを削減することができる。特に、マスタがスレーブの動作を制御するための送信を行っている状態での時刻補正動作ではトラフィックが増加しないため、マスタによるスレーブの制御動作に時刻補正動作が悪影響を与えるのを防止できる。
【００７３】
実施の形態２．
実施の形態２のネットワークシステムについて説明する。なお、ネットワークシステムの構成およびネットワークシステムを構成している通信装置の構成は実施の形態１と同様である。
【００７４】
モーションコントロールシステムで使用される通信方式として、マスタと通信するスレーブを周期的に切り替えながら行う方式が存在する。図１に示した構成のネットワークシステムにおいて、例えば、図９に示したように、まず、マスタ１０とスレーブ２０がある通信周期で通信を行い、次の通信周期ではマスタ１０とスレーブ３０が通信を行う。さらに次の通信周期ではマスタ１０とスレーブ４０が通信を行い、マスタ１０とスレーブ４０の通信周期が終了すると、次の通信周期ではマスタ１０とスレーブ２０が通信する。以下、同様にして、各スレーブが順番にマスタ１０と通信する。各通信周期ではマスタ１０と決められた１台のスレーブが通信を行う。マスタ１０は、各通信周期の開始時には、その通信周期で通信を行うスレーブ宛に周期パケットを送信する。
【００７５】
このような、マスタ１０が通信相手のスレーブを一定周期（通信周期）で切り替えて各スレーブと順番に通信を行い、かつ各通信周期において周期パケットを最初に送信する構成の場合、スレーブ２０は、受信したパケットのアドレスに基づいて、受信パケットが周期パケットか否かを判別できる。すなわち、連続して受信した２つのパケットの宛先アドレスが異なる場合、後から受信したパケットが周期パケットとなるので、スレーブ２０は、マスタ１０からパケットを受信するごとに、受信パケットの宛先アドレスを確認し、前回の受信パケットの宛先アドレスと異なる場合、受信パケットが周期パケットであると判別できる。スレーブ３０も同様に、受信したパケットの宛先アドレスに基づいて、受信したパケットが周期パケットか否かを判別できる。
【００７６】
図９の例では、周期パケットの宛先アドレスにスレーブ２０、３０または４０のアドレスを設定しているため、スレーブ４０は受信したパケットの宛先アドレスのみに基づいて受信パケットが周期パケットか否かを判別することはできない。しかし、スレーブ４０に周期パケットが到着する前は、通信周期の２倍以上の時間にわたってパケットがスレーブ４０に到着しない状態が続く。そのため、スレーブ４０は、例えば、パケットを受信しない状態が通信周期の２倍以上の時間にわたって続いた後に最初に受信したパケットを周期パケットと判別できる。
【００７７】
また、マスタ１０が、周期パケットの宛先アドレスにブロードキャストアドレスを設定して送信する場合、各スレーブは、受信したパケットの宛先がユニキャストアドレスからブロードキャストアドレスに変化したか否かを監視することにより、受信したパケットが周期パケットか否かを判別できる。
【００７８】
以上のように、マスタ１０が通信相手のスレーブを一定周期（通信周期）で切り替えて各スレーブと順番に通信を行い、かつ各通信周期において周期パケットを最初に送信する構成の場合、各スレーブは、受信したパケットの宛先アドレスに基づいて、周期パケットの受信を検知し、実施の形態１と同様の手順で時刻を補正することができる。
【００７９】
実施の形態３．
実施の形態３のネットワークシステムについて説明する。なお、ネットワークシステムの構成およびネットワークシステムを構成している通信装置の構成は実施の形態１と同様である。
【００８０】
ネットワークシステムを構成している通信装置のうち、マスタ１０が無線ＬＡＮのアクセスポイント、スレーブ２０、３０および４０が無線ＬＡＮの端末の場合、実施の形態１で説明した周期パケットとしてビーコンを使用することができる。
【００８１】
ＩＥＥＥ８０２．１１規格の無線ＬＡＮでは、アクセスポイントが周期的にビーコンを送信する。そのため、ネットワークシステムを無線ＬＡＮシステムのアクセスポイントおよび端末で実現する場合、端末であるスレーブ２０、３０および４０は、アクセスポイントであるマスタ１０から周期的に送信されるビーコンを実施の形態１で説明した周期パケットとして扱い、ビーコンの受信時刻に基づいて自装置の時刻を補正することが可能である。
【００８２】
また、ネットワークシステムをＬＡＮシステムとした場合、ＬＡＮを構成している各通信装置が他の通信装置の状態確認などを行うために周期的に送信するハートビートパケットを実施の形態１で説明した周期パケットとして使用することも可能である。なお、ＬＡＮシステムは、無線ＬＡＮシステムであってもよいし有線ＬＡＮシステムであってもよい。ハートビートパケットか否かは、スレーブとして動作する各通信装置のパケット解析部２０２が、受信したパケットのデータ部を解析することにより判別する。各スレーブが受信するパケットの構成は、実施の形態１で説明した構成、すなわち、図５に示した構成と同じである。
【００８３】
以上のように、無線ＬＡＮのアクセスポイントおよび端末によりネットワークシステムを実現した場合、周期パケットとしてビーコンまたはハートビートパケットを使用することにより、実施の形態１と同様の手順で各スレーブが時刻を補正することができる。また、有線ＬＡＮシステムでネットワークシステムを実現した場合、周期パケットとしてハートビートパケットを使用し、実施の形態１と同様の手順で各スレーブが時刻を補正することができる。
【００８４】
なお、無線ＬＡＮのアクセスポイントおよび端末によりネットワークシステムを実現した場合、各スレーブは、ビーコンおよびハートビートパケットの双方を周期パケットとして扱い、これらの受信時刻に基づいて自装置の時刻を補正するようにしてもよい。
【００８５】
ここで、実施の形態１，２では、マスタと各スレーブが通信する通信周期の最初に周期パケットが送信させるものとして説明を行った。しかし、上記のハートビートパケットは、通信周期の最初以外で送信される周期パケットに該当する。また、通信周期の最後を示すパケットを送信するシステムも考えられる。このような、通信周期の最初以外で周期パケットが送信される場合であっても、周期パケットを利用した時刻補正が可能である。通信周期の最初以外で周期パケットが送信される場合であっても各スレーブが時刻補正を行う手順は実施の形態１と同様である。
【００８６】
上記のハートビートパケットを周期パケットとして使用する場合の例を説明する。周期パケットをハートビートパケットとする場合、マスタ１は、図６に示した周期通信開始パケット１１０を送信する際、周期通信の開始時刻である周期パケットの送信開始時刻の情報に代えて、周期通信開始パケット１１０を送信した後の最初のハートビートパケットの送信時刻の情報を送信する。なお、周期パケットの送信周期はハートビートパケットの送信周期とする。
【００８７】
ハートビートパケットの送信周期をＰ’、周期通信開始パケット１１０を送信した後の最初のハートビートパケットの送信時刻をＣＳ、送信時刻ＣＳと周期通信の開始時刻とのオフセットをｋとすると、周期通信の開始カウンタ値ＣＳ’は、次式（３）で表される。また、実施の形態１において式（１）で示したカウンタ値Ｃは、次式（４）で表される。
【００８８】
ＣＳ’＝ＣＳ＋ｋ              …（３）
Ｃ＝ＣＳ＋ｋ＋Ｐ’×Ｍ＋γ    …（４）
【００８９】
実施の形態４．
実施の形態４のネットワークシステムについて説明する。なお、ネットワークシステムの構成およびネットワークシステムを構成している通信装置の構成は実施の形態１と同様である。
【００９０】
各実施の形態で説明した時刻補正動作は、従来の時刻同期手順で使用していた時刻同期を実現するための専用のパケットを使用して時刻を補正するのではなく、他の周期パケットを用いて時刻を補正するため、揺らぎを測定する周期パケットは毎回同じタイミングで受信される必要がある。すなわち、周期パケットが途中で紛失し再送パケットとして受信され、かつ再送かどうかを示す情報がなければ、周期パケットの実際の受信タイミングと本来受信すべきタイミングの誤差がどの程度であるかを正確に判断できなくなる。従って、実施の形態１で説明した補正閾値αは、本来周期パケットを受信する時刻である周期パケットの到着予想時刻よりも１パケット分以上前後しないようにするのが望ましい。例えば、図４のＥｔｈｅｒｎｅｔフレームを１００Ｍｂｐｓの回線を使用して最大負荷で通信する場合、最小フレーム長は８４バイトであるから、このフレームの転送時間は６．７２μ秒である。この場合には、補正閾値αを６．７２μ秒より小さい値とするのが望ましい。補正閾値をこのように設定することで、再送された周期パケットの受信時刻を用いて時刻を補正するのを回避できる。転送時間とは、フレームを転送する処理の所要時間である。逆に、実効スループットが小さく、送信するパケットの間隔が大きければ、補正閾値αの値を大きくしてよいが、この値が大きすぎると再送パケットと区別しにくくなるため、時刻補正の精度が悪くなる。そのため、システムに要求される時刻同期精度が実現可能な値を補正閾値αに設定する。
【００９１】
このように、本実施の形態の各スレーブが時刻補正動作で使用する補正閾値αは、１パケットの転送処理の所要時間よりも小さな値に設定する。これにより、再送された周期パケットなど、遅延揺らぎが大きいパケットを受信した場合の差分βを除外し、遅延揺らぎが小さい周期パケットを受信した場合の差分βのみを補正情報蓄積部２０３に記録することができる。よって、遅延揺らぎが小さい周期パケットを受信した場合の差分βのみを用いて補正時間算出部２０４が補正値γを算出することになり、時刻補正の精度が劣化するのを防止できる。
【００９２】
実施の形態５．
実施の形態５のネットワークシステムについて説明する。なお、ネットワークシステムの構成およびネットワークシステムを構成している通信装置の構成は実施の形態１と同様である。
【００９３】
実施の形態１のスレーブでは、周期回数Ｍのカウンタ値Ｃの補正で使用する補正値γの計算を、差分βをＮ回記録した場合に行うようにしていた。しかし、差分βをＮ回記録する前に時刻の同期ずれが大きくなり差分βが補正閾値αを継続して超えているような状態となる可能性がある。この場合、差分βの記録回数がＮとならず、補正が実行されない。そのため、各スレーブは、差分βの直近の平均値、すなわち補正値γが補正閾値αを超えそうになった場合、または、差分βの増減の傾向が補正閾値αを超えそうになった場合にカウンタ値Ｃを補正するのが望ましい。
【００９４】
例えば、上記Ｎを細分化し、Ｎ（０）、Ｎ（１）、…、Ｎ（ｔ）、…、とし、それぞれの補正値をγ（０）、γ（１）、…、γ（ｔ）、…、とする。現在時間ｔにおける補正値γ（ｔ）から次の時間ｔ＋１の補正値γ（ｔ＋１）を予測すると次式（５）となる。
γ（ｔ＋１）＝γ（ｔ）＋（γ（ｔ）−γ（ｔ−１））    …（５）
【００９５】
そのため、各スレーブでは、予測した補正値γ（ｔ＋１）が次式（６）を満足するか否かを監視し、満足する場合には、補正処理、すなわち、図７に示したステップＳ２０およびＳ２１の処理を実行する。ステップＳ２０では、補正時間算出部２０４が、補正情報蓄積部２０３がそれまで保持していた差分βを用いて補正値γを算出する。
｜γ（ｔ＋１）｜＞α        …（６）
【００９６】
また、各スレーブでは、差分βが規定回数にわたって補正閾値αよりも大きくなっている状態を検知した場合に補正処理を行うようにしてもよい。
【００９７】
このように、本実施の形態のスレーブは、時刻の同期ずれ、すなわち差分βが大きくなったと判断した場合、補正処理を実行する。これにより、補正処理が実行されなくなるのを回避できる。
【００９８】
なお、各実施の形態では、モーションコントロールシステムのマスタが時刻の発生源となり、マスタの時刻に各スレーブが時刻を合わせることとしたが、スレーブの中の１台を時刻の発生源とし、これに他のスレーブ、マスタが時刻を同期させるようにしてもよい。実施の形態３において周期パケットの例として説明したハートビートパケットは、無線ＬＡＮを構成している各通信装置、すなわち、マスタに相当するアクセスポイントおよびスレーブに相当する端末のいずれからも送信される。従って、スレーブも周期パケットを送信することが可能な構成のシステムにおいては、スレーブを時刻の発生源とすることが可能である。スレーブを時刻の発生源とする場合、マスタは、時刻の発生源以外のスレーブと同様の手順で自装置の時刻を補正する。
【００９９】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１００】
１，２，３  論理インタフェース、１０  通信装置（マスタ）、２０，３０，４０  通信装置（スレーブ）、１１，１２  パケット、２０１  物理インタフェース部、２０２  パケット解析部、２０３  補正情報蓄積部、２０４  補正時間算出部、２０５  カウンタ、２０６  カウンタ値保持部、２０７  パラメータ記憶部、３００  バス、３０１  プロセッサ、３０２  メモリ、３０３  入出力インタフェース。
【図１】
2016208020.tif 000003
【図２】
2016208020.tif 000004
【図３】
2016208020.tif 000005
【図４】
2016208020.tif 000006
【図５】
2016208020.tif 000007
【図６】
2016208020.tif 000008
【図７】
2016208020.tif 000009
【図８】
2016208020.tif 000010
【図９】
2016208020.tif 000011
【手続補正書】
【提出日】平成28年11月2日(2016.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
時間をカウントするためのカウンタと、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に前記カウンタのカウンタ値を記録するカウンタ値保持部と、
前記パケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定し、前記パケットが前記周期パケットである場合には前記カウンタ値保持部が記憶しているカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部と、
前記差分に基づいて、自装置の時刻と前記周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正時間算出部と、
を備えることを特徴とする通信装置。
【請求項２】
前記パケット解析部が算出した前記差分を記録する補正情報蓄積部、
を備え、
前記補正時間算出部は、前記補正情報蓄積部に蓄積された前記差分の個数が規定値に達した場合、前記補正情報蓄積部で記録されている差分を用いて前記補正値を算出する、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記補正情報蓄積部は、前記パケット解析部で算出された差分に対応する時間が前記周期パケットの転送時間以下の場合に当該差分を記録する、
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記補正時間算出部は、前記差分に対応する時間が前記周期パケットの転送時間以上となることが予測される場合に前記補正値を算出することを特徴とする請求項１に記載の通信装置。
【請求項５】
他の通信装置の時刻に自装置の時刻を同期させて動作する通信装置における時刻補正方法であって、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に時刻をカウントするためのカウンタのカウンタ値を記録するカウンタ値記録ステップと、
前記パケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定するパケット判定ステップと、
前記パケットが前記周期パケットである場合に前記カウンタ値記録ステップで記録したカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出する差分算出ステップと、
前記差分に基づいて、自装置の時刻と前記周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正値算出ステップと、
を含むことを特徴とする時刻補正方法。
【請求項６】
定周期でパケットを送信するマスタの通信装置と、
自装置の時刻を前記マスタの通信装置の時刻に同期させて動作するスレーブの通信装置と、
を備え、
前記スレーブの通信装置は、
時間をカウントするためのカウンタと、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に前記カウンタのカウンタ値を記録するカウンタ値保持部と、
前記パケットが前記マスタの通信装置から定周期で送信されたパケットである周期パケットか否かを判定し、前記パケットが前記周期パケットである場合には前記カウンタ値保持部が記憶しているカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部と、
前記差分に基づいて、自装置の時刻と前記マスタの通信装置の時刻とのずれを補正するための補正値を算出する補正時間算出部と、
を備えることを特徴とするネットワークシステム。
【請求項７】
前記マスタの通信装置が、一定周期で通信相手のスレーブの通信装置を切り替えながら前記スレーブの通信装置の各々と順番に通信し、かつ通信相手を切り替えた後に宛先がブロードキャストアドレスの前記周期パケットを送信する場合、
前記パケット解析部は、連続して受信したパケットの宛先アドレス同士を比較することにより、前記周期パケットを受信したか否かを判別する、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項８】
前記マスタの通信装置を無線ＬＡＮのアクセスポイント、
前記スレーブの通信装置を無線ＬＡＮの端末、
前記周期パケットを無線ＬＡＮのビーコンまたはハートビートパケットとする、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項９】
前記マスタの通信装置および前記スレーブの通信装置がＬＡＮを構成し、
前記周期パケットをハートビートパケットとする、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項１０】
他の通信装置に接続する通信装置であって、
他の前記通信装置からデータを受信する受信部と、
他の前記通信装置にデータを送信する送信部と、
前記受信部による周期パケットの受信タイミングと前記周期パケットの予想受信タイミングとの間にずれが生じた場合、前記送信部による送信タイミングを補正する制御部と、
を備えることを特徴とする通信装置。
【請求項１１】
前記制御部は、前記ずれがフレーム転送時間を超えた場合に前記送信タイミングを補正することを特徴とする請求項１０に記載の通信装置。
【請求項１２】
前記制御部は、前記ずれの積算値が所定値を超えた場合に前記送信タイミングを補正することを特徴とする請求項１０に記載の通信装置。
【請求項１３】
前記制御部は、前記ずれの平均値が所定値を超えた場合に前記送信タイミングを補正することを特徴とする請求項１０に記載の通信装置。
【請求項１４】
前記制御部は、前記受信部が受信したデータが前記周期パケットか否かを判断する周期パケット検出部を備えたことを特徴とする請求項１０に記載の通信装置。
【手続補正書】
【提出日】平成29年3月31日(2017.3.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
時間をカウントするためのカウンタと、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に前記カウンタのカウンタ値を記録するカウンタ値保持部と、
前記パケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定し、前記パケットが前記周期パケットである場合には前記カウンタ値保持部が記憶しているカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部と、
前記差分に基づいて、自装置の時刻と前記周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正時間算出部と、
を備えることを特徴とする通信装置。
【請求項２】
前記パケット解析部が算出した前記差分を記録する補正情報蓄積部、
を備え、
前記補正時間算出部は、前記補正情報蓄積部に蓄積された前記差分の個数が規定値に達した場合、前記補正情報蓄積部で記録されている差分を用いて前記補正値を算出する、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記補正情報蓄積部は、前記パケット解析部で算出された差分に対応する時間が前記周期パケットの転送時間以下の場合に当該差分を記録する、
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記補正時間算出部は、前記差分に対応する時間が前記周期パケットの転送時間以上となることが予測される場合に前記補正値を算出することを特徴とする請求項１に記載の通信装置。
【請求項５】
他の通信装置の時刻に自装置の時刻を同期させて動作する通信装置における時刻補正方法であって、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に時刻をカウントするためのカウンタのカウンタ値を記録するカウンタ値記録ステップと、
前記パケットがネットワーク内に定周期で送信されるパケットである周期パケットか否かを判定するパケット判定ステップと、
前記パケットが前記周期パケットである場合に前記カウンタ値記録ステップで記録したカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出する差分算出ステップと、
前記差分に基づいて、自装置の時刻と前記周期パケットの送信元の装置の時刻とのずれを補正するための補正値を算出する補正値算出ステップと、
を含むことを特徴とする時刻補正方法。
【請求項６】
定周期でパケットを送信するマスタの通信装置と、
自装置の時刻を前記マスタの通信装置の時刻に同期させて動作するスレーブの通信装置と、
を備え、
前記スレーブの通信装置は、
時間をカウントするためのカウンタと、
自装置宛のパケットまたはブロードキャストされたパケットを受信した場合に前記カウンタのカウンタ値を記録するカウンタ値保持部と、
前記パケットが前記マスタの通信装置から定周期で送信されたパケットである周期パケットか否かを判定し、前記パケットが前記周期パケットである場合には前記カウンタ値保持部が記憶しているカウンタ値と前記周期パケットの本来の受信時刻を示すカウンタ値との差分を算出するパケット解析部と、
前記差分に基づいて、自装置の時刻と前記マスタの通信装置の時刻とのずれを補正するための補正値を算出する補正時間算出部と、
を備えることを特徴とするネットワークシステム。
【請求項７】
前記マスタの通信装置が、一定周期で通信相手のスレーブの通信装置を切り替えながら前記スレーブの通信装置の各々と順番に通信し、かつ通信相手を切り替えた後に宛先がブロードキャストアドレスの前記周期パケットを送信する場合、
前記パケット解析部は、連続して受信したパケットの宛先アドレス同士を比較することにより、前記周期パケットを受信したか否かを判別する、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項８】
前記マスタの通信装置を無線ＬＡＮのアクセスポイント、
前記スレーブの通信装置を無線ＬＡＮの端末、
前記周期パケットを無線ＬＡＮのビーコンまたはハートビートパケットとする、
ことを特徴とする請求項６に記載のネットワークシステム。
【請求項９】
前記マスタの通信装置および前記スレーブの通信装置がＬＡＮを構成し、
前記周期パケットをハートビートパケットとする、
ことを特徴とする請求項６に記載のネットワークシステム。
【国際調査報告】
2016208020.tif 000012
2016208020.tif 000013
2016208020.tif 000014
2016208020.tif 000015
2016208020.tif 000016
2016208020.tif 000017
2016208020.tif 000018
2016208020.tif 000019