以下、図面を参照しつつ、本発明に従う各本実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各本実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
<A.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る通信システム1の構成を模式的に示す図である。
本実施の形態に係る通信システム1は、ネットワーク2に複数の通信装置(制御装置100、デバイス200A〜200C)が接続された通信システムである。
複数の通信装置は、時刻マスタと、複数の時刻スレーブとを含む。時刻マスタおよび複数の時刻スレーブの各々は、互いに時刻同期されたタイマを有している。時刻マスタは、通信システム1の時刻を管理する「マスタクロック」として機能するタイマを有しており、時刻同期プロトコルにおける同期手順に従って、ネットワーク接続されている時刻スレーブが有する「スレーブクロック」として機能するタイマを時刻同期する。
図1に示す例においては、制御装置100は時刻マスタとして機能し、デバイス200A〜200Cは時刻スレーブとして機能する。制御装置100は、ネットワーク2を介してデバイス200A〜200Cとの間でデータを送受信する。制御装置100は、ネットワーク内のデータ伝送を管理する。デバイス200A〜200Cは、制御装置100からの指令に従ってデータ伝送を行なう。
本実施の形態に係る通信システム1のネットワークは、製造装置や生産設備などを制御する制御装置100を含むものであり、いわゆる産業用ネットワークまたは産業用ネットワークに準拠する要件を充足するように構成される。そのような要件の1つとして、送信元から送出したデータが宛先に到着する時刻が保証される。
このような宛先への到着時刻を保証するために、互いに時刻同期された複数の通信装置がネットワーク接続された通信システム1が採用される。つまり、通信システム1のネットワークを構成する複数の通信装置の間では送受信タイミングが時刻同期されている。より具体的には、ネットワークを構成する複数の通信装置の各々は、時刻同期されたタイマ(あるいは、同期してインクリメントまたはデクリメントされるカウンタ)を有しており、それらの時刻同期されたタイマまたはカウンタに従って、各通信装置がデータの送信または受信のタイミングを決定する。
図1に示す例においては、制御装置100はタイマ101を有しており、デバイス200A〜200Cはタイマ201A〜201Cをそれぞれ有している。例えば、制御装置100のタイマ101が「マスタクロック」として機能し、デバイス200A〜200Cのタイマがこのマスタクロックを基準としてタイミングを同期させる。このようなタイマ間の同期によって、通信システム1において、データの伝送タイミングなどを互いに一致させることができる。
本実施の形態に係る通信システム1は、時刻マスタおよび複数の時刻スレーブとの間で時刻同期を実現するために、各時刻スレーブに時刻同期機能が実装されている。この時刻同期機能として、各時刻スレーブは、ネットワーク上においてマスタ側に隣接して接続される通信装置の有するタイマを基準として、自装置の有するタイマを補正するための機能を有している。
具体的には、図1に示す通信システム1において、デバイス200Aは、マスタ側に隣接して接続される制御装置100との間で時刻同期するために、制御装置100のタイマ101(マスタクロック)を基準として、自装置のタイマ201A(スレーブクロック)の時刻を補正する。具体的には、デバイス200Aは、制御装置100との間で時刻同期用パケットを遣り取りする時刻同期処理を定期的に実行し、その過程で得られた情報に基づいて、タイマ101と自装置のタイマ201Aとの差分を計算する。そして、デバイス200Aは、この差分を時刻調整値として自装置のタイマ201Aを補正する。
デバイス200Bは、マスタ側に隣接して接続されるデバイス200Aとの間で上述した時刻同期処理を定期的に実行する。デバイス200Bは、デバイス200Aのタイマ201Aと自装置のタイマ201Bとの差分を計算し、その差分を時刻調整値として自装置のタイマ201Bを補正する。
デバイス200Cは、マスタ側に隣接して接続されるデバイス200Bとの間で上述した時刻同期処理を定期的に実行する。デバイス200Cは、デバイス200Bのタイマ201Bと自装置のタイマ201Cとの差分を計算し、その差分を時刻調整値として自装置のタイマ201Cを補正する。
以上説明したように、通信システム1においては、隣接して接続される2つの通信装置がマスタとスレーブとの関係になって時刻同期処理を実行することにより、最終的にデバイス200A〜200Cの各々のタイマ(スレーブクロック)を、制御装置100のタイマ101(マスタクロック)に時刻同期させることができる。
しかしながら、上記の時刻同期処理では、各時刻スレーブの時刻同期精度を時刻マスタに通知するシーケンスが存在しないため、時刻マスタは、複数の時刻スレーブの時刻同期が完了したか否かを判定することができない。そのため、通信システム1の電源投入後において、時刻マスタは、複数の時刻スレーブとの間でデータ伝送を開始することができるタイミングを判断することができない。
これには、例えば、実際に時刻同期処理に費やされる時間よりも十分に長い時間を設定しておき、電源投入後、この設定時間が経過した後において、データ伝送を開始する構成を採用することができる。これによると、時刻同期が完了した状態でデータ伝送が実行されることが保証される。しかしながら、電源が投入されてからデータ伝送を開始するまでに必要以上に時間がかかってしまうことが懸念される。
また、上記の時刻同期処理では、データ伝送の実行中において、時刻マスタが時刻スレーブの時刻同期精度を監視するシーケンスが存在しない。そのため、時刻マスタのマスタクロックと時刻スレーブのスレーブクロックとの間に時刻ずれが発生した際に、これを検出することができない。
そこで、本実施の形態に従う通信システム1では、複数の時刻スレーブの各々は、自装置のスレーブクロックの時刻同期精度を示す時刻同期情報を時刻マスタへ通知するための「通信手段」を有する。これによると、図1に示す構成例においては、時刻マスタである制御装置100には、デバイス200A〜200Cの各々から時刻同期情報が通知されることになる。したがって、制御装置100は、デバイス200A〜200Cから通知された時刻同期情報に基づいて、自装置と各デバイスとの間の時刻同期が完了しているか否かを判断することができる。この結果、通信システム1全体において時刻同期が完了したタイミングで、データ伝送を開始することができる。したがって、電源投入後、設定時間が経過したタイミングでデータ伝送を開始する構成に比べて、より迅速にデータ伝送を開始することが可能となる。
また、データ伝送の実行中、制御装置100は、デバイス200A〜200Cから通知された時刻同期情報に基づいて、デバイス200A〜200Cの各々の時刻同期精度を監視することができるため、いずれかのデバイスとの間に時刻ずれが発生したときには直ちにデータの伝送を停止することができる。よって、時刻ずれの発生に依存して、デバイスが入力データを取得する、および、出力データを出力するタイミングがばらつく可能性を回避することができる。
<B.通信システムの全体構成例>
まず、本実施の形態に従う通信システム1の全体構成について説明する。図1は、本実施の形態に係る通信システム1の構成を模式的に示す図である。
図1に示す構成例においては、ネットワーク2には、制御装置100および複数のデバイス200A〜200C(以下、「デバイス200」と総称することもある。)が接続される。デバイス200A〜200Cは、例えばデイジーチェーンで順次接続されている。図1では、ネットワーク2のデバイス200と制御装置100との接続形態は、ライン型としているが、ライン型に限定されない。例えば、リング型、バス型またはスター型を含む他の接続形態であってもよい。
通信システム1のネットワーク内においては、制御装置100およびデバイス200A〜200Cは、いずれも「データ転送機能を有する通信装置」とみなすことができる。図1に示す例においては、制御装置100およびデバイス200A〜200Cの各々は、隣接して接続されている他の通信装置から、ネットワーク上を転送されるデータ(以下では、1つの転送単位のデータを「フレーム」とも称す。)を受信すると、当該入来したフレームを必要に応じて、隣接して接続されている別の他の通信装置へ転送する機能を有している。なお、受信されたフレームが自装置宛てである場合には、当該受信したフレームを他の通信装置へ転送されることなく、当該フレームを受信した装置自体で当該フレームが処理される。
制御装置100は、製造装置または生産ライン(以下、「フィールド」とも称す。)に備えられる各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。以下では、制御装置100を「制御マスタ」とも称す。制御装置100は、制御演算を実行する一種のコンピュータであり、典型的には、PLC(プログラマブルコントローラ)として具体化されてもよい。
制御装置100には、センサ、アクチュエータといった制御対象が直接またはネットワーク2を介して接続され得る。本実施の形態では、図1に示すように、これら制御対象はデバイス200およびネットワーク2を介して制御装置100に接続され得る。
デバイス200の各々は、フィールド信号を取得する入力デバイス、および、制御装置100からの指示に従ってフィールドに対して何らかのアクションを行なう出力デバイスあるいはアクチュエータを含む。デバイス200は、制御マスタによって制御される「制御スレーブ」の一実施例に対応する。ネットワーク2は、入力およびデバイス制御を主たる機能として提供する。ネットワーク2は、狭義の「フィールドネットワーク」に相当する。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡単化のため、以下の説明においては、ネットワーク2は、「フィールドネットワーク」および「フィールドバス」の両方を含み得る概念である。
制御装置100において実行される制御演算は、デバイス200において収集または生成されたデータ(以下、「入力データ」とも称す。)を収集する処理(入力処理)、デバイス200に対する指令などのデータ(以下、「出力データ」とも称す。)を生成する処理(演算処理)、生成した出力データを対象のデバイス200へ送信する処理(出力処理)などを含む。
また、制御装置100には、サポート装置500が接続され得る。サポート装置500は、制御装置100がネットワーク2を管理するための必要な準備、および制御対象を制御するために必要な準備などを支援する装置である。サポート装置500は、ネットワーク2の管理に関連して、例えば制御装置100に接続されるデバイス200のパラメータ(コンフィギュレーション)を設定するための設定環境などを提供する。サポート装置500は、設定環境などを提供する設定ツールがインストールされたPC(パーソナルコンピュータ)などを含み得る。
なお、図1に示す通信システム1においては、サポート装置500は、制御装置100と別体として備えられるが、サポート装置500は、制御装置100に一体的に備えられてもよい。すなわち、サポート装置500が有する機能は、制御装置100に内蔵され得る。
ネットワーク2には、任意のデバイス200を接続することができる。デバイス200は、フィールドに対して何らかの物理的な作用を与えるアクチュエータ、およびフィールドとの間で情報を遣り取りする入出力装置などを含む。
ネットワーク2を介して制御装置100とデバイス200との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数100μsecオーダ〜数10msecオーダのごく短い周期で更新されることになる。
<C.伝送されるデータと通信性能>
図1に示すネットワーク2においては、基本的には、製造装置または生産設備の制御に用いられるデータ(以下、「制御系データ」と総称することもある。)が周期的に伝送される。また、ネットワーク2においては、制御系データと異なる他のデータも伝送され得る。他のデータは、例えば「情報系データ」または「制御情報系データ」と称するデータを含む。これらは、制御系データのような高速なリアルタイム性が要求されないものの、ある程度の定時性が求められるデータである。
制御系データは、例えば、サーボ指令値、エンコーダ値、センサのON/OFF値などが挙げられる。制御系データは、製造装置または生産設備の制御に用いられるため、制御装置100から一定の通信周期で伝送される。通信システム1では、この通信周期を確実に保証する必要がある。
本実施の形態に係るネットワーク2は、データの到達時間が保証される、定周期通信を行なうバスまたはネットワークを採用することが好ましい。例えば、マシンコントロール用ネットワークの一例であるEtherCAT(登録商標)、汎用的なEthernet(登録商標)上に制御用プロトコルを実装した産業用オープンネットワークであるEtherNet/IP(登録商標)などの公知のプロトコルに係るネットワークを採用してもよい。
<D.ハードウェア構成>
図2は、本実施の形態に従う通信システム1のハードウェア構成の一例を示す模式図である。制御装置100は、典型的には、PLCをベースとして構成されてもよい。
図2を参照して、制御装置100は、主たるコンポーネントとして、プロセッサ102と、メモリ104と、ストレージ106と、ネットワークコントローラ110とを含む。制御装置100は、サポート装置500と通信するI/F(Interface)をさらに含む。
ストレージ106には、制御装置100の各部を制御するためのシステムプログラム107、および制御対象などに応じて設計されるユーザアプリケーションプログラム108が格納される。プロセッサ102は、ストレージ106に格納されているシステムプログラム107およびユーザアプリケーションプログラム108をメモリ104に読み出して実行することで、後述するような処理を含む各種処理を実現する。メモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置からなる。
ネットワークコントローラ110は、制御装置100がネットワーク2を介して各デバイス200との間でデータを遣り取りするためのインターフェイスを提供する。ネットワークコントローラ110は、主たるコンポーネントとして、受信回路(Rx)111と、受信バッファ112と、送受信コントローラ113と、送信バッファ114と、送信回路(Tx)115と、タイマ101とを含む。
受信回路111は、ネットワークコントローラ110上を定周期で伝送されるフレームを受信して、その受信したフレームに格納されているデータを受信バッファ112に書込む。送受信コントローラ113は、受信バッファ112に書込まれた受信フレームを順次読出す。送受信コントローラ113は、当該読出されたフレームから、制御装置100での処理に必要なデータのみを抽出し、プロセッサ102へ出力する。送受信コントローラ113は、プロセッサ102からの指令に従って、デバイス200へ送信すべきデータあるいはフレームを送信バッファ114へ順次書込む。送信回路115は、ネットワークコントローラ110上をフレームが伝送される周期に同期して、送信バッファ114に格納されているデータを順次ネットワーク2へ送出する。タイマ101は、送受信コントローラ113から通信フレームの送信などを指示するタイミングの基準となるパルスを発生するグランドマスタでもあり得る。
図2を参照して、デバイス200は、通信システム1による様々な設備や装置の制御を実現するために必要な各種機能を実現する。典型的には、デバイス200の各々は、制御対象の設備や装置などからのフィールド情報の収集や、制御対象の設備や装置などへの指令信号の出力を司る。デバイス200の各々は、主たるコンポーネントとして、プロセッサ202と、メモリ204と、ストレージ206と、通信回路210とを含む。通信回路210は、ネットワーク2を伝送されるフレームを処理する。すなわち、通信回路210は、ネットワーク2を介して何らのフレームを受信すると、当該受信したフレームに対するデータ書込みおよび/またはフレームからのデータ読出しを行ない、その後、ネットワーク2上において次に位置するデバイス200へ当該フレームを転送する。
より具体的には、通信回路210は、受信回路(Rx)211と、送受信コントローラ212と、送信回路(Tx)213と、タイマ201とを含む。受信回路211および送信回路213は、ネットワーク2と物理的に接続される部位であり、送受信コントローラ212からの指令に従って、ネットワーク2上を伝送されるフレームを受信し、受信フレームを処理し、処理後のフレームをネットワーク2に送出する。送受信コントローラ212は、ネットワーク2上を伝送されるフレームに対するデータ書込みおよび/または当該フレームからのデータ読出しを行なう。タイマ201は、送受信コントローラ212による指令出力のタイミングまたはデバイス200による処理の実行のタイミングなどの基準となるクロックを発生する。これにより、制御装置100および各デバイス200を含む複数の通信装置を、互いに時刻同期させることができる。
<E.時刻同期機能>
図1に示す通信システム1において、制御装置100はタイマ101を有し、デバイス200A〜200Dはタイマ201A〜201Cをそれぞれ有している。制御装置100のタイマ101がマスタクロックとして機能し、デバイス200A〜200Cのタイマがマスタクロックを基準としてタイミングを同期させることで、通信システム1において、データの伝送タイミングなどを互いに一致させることができる。
通信システム1における通信装置間の時刻同期は、例えばIEEE1588、IEEE802.1AS,IEEE802.1AS−Revなどの高精度時刻同期プロトコルを採用することができる。
高精度時刻同期プロトコルとして、例えば、IEEE1588には、PTP(Precision Time Protocol)が規定されている。PTPは、マスタクロックを持つ時刻マスタMと、スレーブクロックを持つ時刻スレーブSとを含む通信システムに適用され得る。PTPでは、時刻マスタMと時刻スレーブSとの間で定期的に時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて、時刻スレーブSのスレーブクロックの時刻補正を行なう。
図3は、PTPの時刻同期処理の一例を示すシーケンス図である。図3に示すシーケンス図においては、時刻マスタMと時刻スレーブSとが連係することにより、マスタクロックとスレーブクロックとの間の時刻同期が実現される。
図3において、時刻マスタMのマスタクロックの持つ時刻TMと、時刻スレーブSのスレーブクロックの持つ時刻TSとの差分であるOFFSETは、一般に次式(1)で表わされる。
OFFSET=TS−TM …(1)
最初に、時刻マスタMは、時刻スレーブSへ時刻同期用パケット(Syncメッセージ)を送信する。時刻マスタMがSyncメッセージを送信した時刻T1、時刻スレーブSがSyncメッセージを受信した時刻T2、および時刻マスタMから時刻スレーブSへの方向の遅延時間DM/Sの間には、次式(2)の関係が成り立つ。
T2=T1+OFFSET+DM/S …(2)
次に、時刻マスタMは、時刻スレーブSへ時刻同期用パケット(Follow_Upメッセージ)を送信する。Follow_Upメッセージは、時刻マスタMからSyncメッセージを送信した時刻T1を示す情報を含んでいる。時刻スレーブSは、時刻T1と時刻T2とを記録する。
次に、時刻スレーブSは、時刻マスタMへ時刻同期パケット(Delay_Reqメッセージ)を送信する。時刻マスタMは、Delay_Reqメッセージを受信すると、時刻スレーブSに時刻同期用パケット(Delay_Respメッセージ)を送信する。Delay_Respメッセージは、Delay_Reqメッセージを受信した時刻T4を示す情報を含んでいる。時刻スレーブSは、Delay_Respメッセージを受信すると、時刻マスタMがDelay_Reqメッセージを受信したことを確認できるため、時刻T3と時刻T4とを記録する。
時刻スレーブSがDelay_Reqメッセージを送信した時刻T3、時刻マスタMがDelay_Reqメッセージを受信した時刻T4、および時刻スレーブSから時刻マスタMへの方向の遅延時間DS/Mの間には、次式(3)の関係が成り立つ。
T4=T3−OFFSET+DS/M …(3)
時刻スレーブSは、時刻T1,T2,T3,T4(すなわち、4つのタイムスタンプ)を記録している。ここで、双方向の遅延時間DM/S、DS/Mが等しいと仮定すると(DM/S=DS/M)、時刻スレーブSは、式(2),(3)に基づいて、次式(4)によりOFFSETを算出できる。
OFFSET={(T2−T4)−(T1−T3)}/2 …(4)
このようなPTPの時刻同期処理は、双方向の遅延時間が等しい場合は成り立つが、途中にスイッチ等を経由している場合、双方向の遅延時間は異なるために誤差を生じる。双方向の遅延時間の差によって生じる誤差を解決するためにIEEE1588では、さらに、トランスペアレントクロック(Transparent Clock)と呼ばれる遅延管理機能が定義されている。
トランスペアレントクロックには、E2E(End to End)トランスペアレントクロックと、P2P(Peer to Peer)トランスペアレントクロックとがある。E2Eトランスペアレントクロックは、時刻マスタMと時刻スレーブSとの間に配置される各スイッチの入力部および出力部にタイムスタンプ付与機能を設置し、各スイッチのパケット通過時間を計測して補正する方式である。E2Eトランスペアレントクロックは、図3に示したDelay request-Delay responseメカニズムを用いて、時刻マスタMと時刻スレーブSとの間で遅延時間を計測する。
一方、P2Pトランスペアレントクロックは、図4に示すように、隣接する2つの通信装置がマスタとスレーブとの関係になって時計を合わせていく方式である。P2Pトランスペアレントクロックは、Peer delayメカニズムを用いて、各ピア間で遅延時間を計測する。図4の例では、時刻マスタMおよび時刻スレーブS1〜S3がデイジーチェーンで順次接続されている。図1に示す通信システム1においては、制御装置100が時刻マスタMに対応し、デバイス200A〜200Cが時刻スレーブS1〜S3にそれぞれ対応する。
時刻マスタMおよび時刻スレーブS1〜S3の各々は、ポートP1,P2を有する。ポートP1,P2の各々は、マスタポートおよびスレーブポートのいずれかに指定され得るる。
ただし、制御装置100を時刻マスタMとして機能させる場合には、時刻マスタMにおけるポートP1,P2の一方のポートがマスタポートに指定され、他方のポートが上位ネットワークまたは、同一ネットワーク上の他の制御装置に接続されることがある(図24参照)。あるいは、時刻マスタMおよび時刻スレーブS1〜S3の接続形態がリング型である場合には、時刻マスタMのポートP1,P2はいずれもマスタポートに指定される。
なお、通信システム1を構成する複数の通信装置のうちのどの通信装置のタイマをマスタクロックとして機能させるかについては、ユーザが指定することができる。あるいは、マスタクロック選出アルゴリズムを用いて自動的に指定することができる。時刻スレーブS1〜S3の各々のポートP1,P2は、ユーザが指定することができる。あるいは、ツールで設計された通信システム1のトポロジー情報に基づいて、自動的に指定することができる。
本実施の形態に係る通信システム1では、P2Pトランスペアレントクロックを用いた時刻同期処理を実行することにより、時刻マスタMのマスタクロックに時刻スレーブS1〜S3の各々のスレーブクロックを時刻同期させる。
図5は、P2Pトランスペアレントクロックを用いた時刻同期処理の一例を示すシーケンス図である。図5に示すシーケンス図において、スイッチSW1,SW2は、P2Pトランスペアレントクロック機能を有するネットワークスイッチである。スイッチSW1,SW2は、ネットワーク上において隣接して接続される。図5では、スイッチSW2は、スイッチSW1のマスタ側に隣接して位置するものとする。スイッチSW1とスイッチSW2との間で定期的に時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて、スイッチSW1のクロックの時刻補正を行なう。
図5において、スイッチSW1のクロックの持つ時刻TS1と、スイッチSW2のクロックの持つ時刻TS2との差分をΔTとすると、ΔTは次式(5)で表される。
ΔT=TS2−TS1 …(5)
最初に、スイッチSW1は、スイッチSW2へ時刻同期用パケット(Pdelay_Reqメッセージ)を送信する。スイッチSW1がPdelay_Reqメッセージを送信した時刻T1、スイッチSW2がPdelay_Reqメッセージを受信した時刻T2、およびスイッチSW1からスイッチSW2への方向の遅延時間D1/2の間には、次式(6)の関係が成り立つ。
T2=T1+ΔT+D1/2 …(6)
次に、スイッチSW2は、スイッチSW1へ時刻同期用パケット(Pdelay_Respメッセージ)を送信する。Pdelay_Respメッセージは、スイッチSW2がPdelay_Reqメッセージを受信した時刻T2を示す情報を含んでいる。スイッチSW1は、時刻T1と時刻T2とを記録する。
次に、スイッチSW2は、スイッチSW1へ時刻同期用パケット(Pdelay_Resp_followupメッセージ)を送信する。Pdelay_Resp_followupメッセージは、スイッチSW2がPdelay_Respメッセージを送信した時刻T3を示す情報を含んでいる。スイッチSW1は、Pdelay_Resp_followupメッセージを送信した時刻T3と、Pdelay_Resp_followupメッセージを受信した時刻T4とを記録する。
スイッチSW2がPdelay_Resp_followupメッセージを送信した時刻T3、スイッチSW1がPdelay_Resp_followupメッセージを受信した時刻T4、およびスイッチSW2からスイッチSW1への方向の遅延時間D2/1の間には、次式(7)の関係が成り立つ。
T4=T3−ΔT+D2/1 …(7)
スイッチSW1は、時刻T1,T2,T3,T4(すなわち、4つのタイムスタンプ)を記録している。ここで、双方向の遅延時間D1/2、D2/1が等しいと仮定すると(D1/2=D2/1)、遅延時間Dを次式(8)により算出できる。
D={(T4−T1)−(T3−T2)}/2 …(8)
さらに、式(6),(8)に基づいて、スイッチSW1の持つクロックの時刻とスイッチSWの持つクロックの時刻との差分ΔTを次式(9)により算出できる。スイッチSW1は、差分ΔTを時刻調整値として、自装置のクロックの時刻補正を行なう。
ΔT=(T2−T1)−{(T4−T1)−(T3−T2)}/2 …(9)
図4に戻って、時刻スレーブS1は、スレーブポートに接続される時刻マスタMとの間で図5に示す時刻同期処理を実行することにより、時刻マスタMが持つクロック(マスタクロック)の時刻と自装置の持つクロック(スレーブクロック)の時刻との差分ΔTを算出する。この場合、図5のシーケンス図において、時刻スレーブS1はスイッチSW1に対応し、時刻マスタMはスイッチSW2に対応する。以下の説明では、時刻マスタMの時刻に対する時刻スレーブS1の時刻の差分ΔTを「ΔTM−1」と表す。時刻スレーブS1は、差分ΔTM−1を時刻調整値として、自装置のタイマを時刻補正する。
時刻スレーブS2は、スレーブポートに接続される時刻スレーブS1との間で図5に示す時刻同期処理を実行することにより、時刻スレーブS1が時刻差ΔTを計算する。時刻スレーブS2は図4のスイッチSW1に対応し、時刻スレーブS1が持つクロックの時刻と自装置のクロックの時刻との差分ΔTを算出する。この場合、図5のシーケンス図において、時刻スレーブS2はスイッチSW1に対応し、時刻スレーブS1はスイッチSW2に対応する。以下の説明では、時刻スレーブS1の時刻に対する時刻スレーブS2の時刻の差分ΔTを「ΔT1−2」と表す。時刻スレーブS2は、差分ΔT1−2を時刻調整値として、自装置のクロックを時刻補正する。
時刻スレーブS3は、スレーブポートに接続される時刻スレーブS2との間で図5に示す時刻同期処理を実行することにより、時刻スレーブS2が持つクロックの時刻と自装置が持つクロックの時刻との差分ΔTを計算する。この場合、図5のシーケンス図において、時刻スレーブS3はスイッチSW1に対応し、時刻スレーブS2はスイッチSW2に対応する。以下の説明では、時刻スレーブS2の時刻に対する時刻スレーブS3の時刻の差分ΔTを「ΔT2−3」と表す。時刻スレーブS3は、差分ΔT2−3を時刻調整値として、自装置のクロックを時刻補正する。
このように、複数の通信装置の各々が、マスタ側に隣接して接続される通信装置のクロックの時刻と自装置のクロックの時刻との差分ΔTを時刻調整値として、自装置のクロックを時刻補正することにより、最終的に、時刻マスタMと全ての時刻スレーブS1〜S3との間で時刻同期が実現される。通信システム1全体の時刻同期が完了することにより、複数の通信装置の間で制御系データの伝送を開始することが可能となる。
しかしながら、図5に示す時刻同期処理には、各時刻スレーブSの時刻同期精度を時刻マスタMに通知するシーケンスが存在しない。このため、時刻マスタMは、各時刻スレーブSの時刻同期が完了したか否かを判定することができず、通信システム1の電源投入後などにおいて、制御系データの伝送を開始することができるタイミングを判断することができない。
これには、例えば、実際に時刻同期処理に費やされる時間よりも十分に長い時間を設定しておき、通信システム1の電源を投入してからこの設定時間が経過した時点で、制御系データの伝送を開始する構成を採用することができる。これによると、時刻同期が完了した状態で制御系データの伝送が実行されることが保証される。しかしながら、電源を投入してから制御系データの伝送を開始するまでに必要以上に時間がかかってしまうことが懸念される。
また、データ伝送の実行中において、時刻マスタMには、時刻スレーブSのスレーブクロックを監視するシーケンスが存在しない。そのため、時刻マスタMのマスタクロックと時刻スレーブSのスレーブクロックとの間に時刻ずれが発生した際に、これを検出することができない。
ここで、特許文献1には、図3に示したE2Eトランスペアレントクロックを用いた時刻同期処理において、時刻スレーブSは、時刻マスタMに送信する時刻同期用パケット(Delay_Reqメッセージ)に、Delay_Reqメッセージを送信した時刻T3を示す情報を含ませる技術が開示されている。この技術によれば、時刻マスタMは、時刻T3と時刻T4との差分である監視用時刻差分(T4−T3)が予め決められた許容範囲内であるか否かを判定することにより、時刻スレーブSの時刻同期が完了したか否かを判定することができる。
この特許文献1の技術を、図5に示すP2Pトランスペアレントクロックを用いた時刻同期処理に適用した場合、時刻マスタMは、直近の時刻スレーブS1から時刻情報を含んだ時刻同期用パケットを受信することで、時刻スレーブS1の時刻同期が完了したか否かを判定することができる。しかしながら、時刻マスタMと時刻スレーブS2,S3との間では時刻同期用パケットの遣り取りが行なわれないため、時刻マスタMは、時刻スレーブS2、S3の各々の時刻同期が完了したか否かを判定することができない。
そこで、本実施の形態に従う通信システム1では、時刻スレーブSは、自装置のスレーブクロックの時刻同期精度を示す情報(時刻同期情報)を時刻マスタMへ通知するための「通信手段」を有する。これによると、時刻マスタMは、時刻スレーブS1〜S3の各々から通知される時刻同期情報に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定することができる。
<F.通信手段>
以下では、本実施の形態に係る通信システム1において、時刻スレーブSが有する通信手段の構成例について説明する。
(f1.通信手段の構成例1)
図6は、本実施の形態に係る通信手段の構成例1を模式的に示す図である。本実施の形態に係る通信手段は、時刻同期情報として、自装置のスレーブクロックの時刻補正に用いた時刻調整値ΔTを通知するように構成される。
図6を参照して、時刻スレーブS3は、時刻スレーブS2との間で時刻同期処理(図5参照)を実行することにより、時刻スレーブS2の時刻に対する時刻スレーブS3の時刻の差分ΔT2−3を算出する。時刻スレーブS3は、算出した時刻調整値ΔT2−3を時刻スレーブS2へ通知する。
時刻スレーブS2は、時刻スレーブS1との間で時刻同期処理を実行することにより、時刻スレーブS1の時刻に対する時刻スレーブS2の時刻の差分ΔT1−2を算出する。時刻スレーブS2は、時刻スレーブS3より受信した時刻調整値ΔT2−3と、算出した時刻調整値ΔT1−2とを比較する。具体的には、時刻スレーブS2は、時刻調整値ΔT2−3の絶対値|ΔT2−3|と、時刻調整値ΔT1−2の絶対値と|ΔT1−2|とを比較し、大きい方の絶対値(以下、「最大時刻調整値ΔTmax」とも称す。)を選択する。時刻スレーブS2における最大時刻調整値をΔTmax2とすると、最大時刻調整値ΔTmax2は次式(10)で与えられる。時刻スレーブS2は、最大時刻調整値ΔTmax2を時刻スレーブS1へ通知する。
ΔTmax2=Max{|ΔT2−3|,|ΔT1−2|} …(10)
時刻スレーブS1は、時刻マスタMとの間で時刻同期処理を実行することにより、時刻マスタMの時刻に対する時刻スレーブS1の時刻の差分ΔTM−1を算出する。時刻スレーブS1は、時刻スレーブS2より受信した最大時刻調整値ΔTmax2と、時刻調整値ΔTM−1の絶対値|ΔTM−1|とを比較し、大きい方の絶対値(最大時刻調整値ΔTmax)を選択する。時刻スレーブS1における最大時刻調整値ΔTmax1とすると、最大時刻調整値ΔTmax1は次式(11)で与えられる。時刻スレーブS1は、最大時刻調整値ΔTmax1を時刻マスタMへ通知する。
ΔTmax1=Max{|ΔTM−1|,ΔTmax2} …(11)
ここで、式(10),(11)によると、最大時刻調整値ΔTmax1は次式(12)のように表わすことができる。
ΔTmax1=Max{|ΔT2−3|,|ΔT1−2|,|ΔTM−1|} …(12)
式(12)から分かるように、時刻マスタMには、時刻スレーブS1〜S3の時刻調整値ΔT2−3,ΔT1−2,ΔTM−1の絶対値のうち最も大きいものが、最大時刻調整値ΔTmax1として通知されることになる。
時刻マスタMは、最大時刻調整値ΔTmax1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。具体的には、時刻マスタMは、時刻同期が完了したか否かを判定するための閾値を、通信システム1において予め定められた許容時刻精度を最大パス数で除算した値に設定する。この最大パス数とは、時刻マスタMと末端の時刻スレーブS(図6の例では時刻スレーブS3に相当)との間に存在する伝送経路の総数に値する。図6の例では、最大パス数は3となる。したがって、閾値は許容時刻精度/3に設定される。例えば、許容時刻精度を1μsとした場合、閾値は0.333μsに設定される。
図6の例では、時刻マスタMと末端の時刻スレーブS3との間には、各時刻スレーブSの差分ΔTを足し合わせた時刻差が生じる。そのため、各時刻スレーブSにおいて、隣接して接続される他の通信装置との時刻の差分ΔTが許容時刻精度より小さくても、時刻マスタMと末端の時刻スレーブS3との間には許容時刻精度を超える時刻差が発生している可能性がある。そこで、時刻同期の完了を判定するための閾値を、許容時刻精度を最大パス数で除算した値とすることで、時刻マスタMと時刻スレーブS3との時刻差が許容時刻精度より小さいことを、時刻同期完了の判定条件としている。
時刻マスタMは、最大時刻調整値ΔTmax1と上記閾値とを比較し、最大時刻調整値ΔTmax1が閾値より小さい場合、時刻スレーブS1〜S3の時刻同期が完了したと判定する。時刻マスタMは、時刻同期が完了したと判定されると、時刻スレーブS1〜S3の間で制御系データの伝送を開始する。一方、最大時刻調整値ΔTmax1が閾値より大きい場合、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了していないと判定し、制御系データの伝送を開始しないこととする。
通信システム1において、時刻同期処理は定期的に実行されるため、各時刻スレーブSの時刻同期情報も時刻マスタMに定期的に通知されることになる。したがって、時刻マスタMは、データ伝送の実行中において、時刻スレーブS1〜S3の時刻同期精度を監視することができる。時刻スレーブS1〜S3のいずれか1つと時刻マスタMとの間で時刻ずれが発生したことによって、時刻マスタMに通知される最大時刻調整値ΔTmax1が閾値を超えた場合、時刻マスタMは、時刻マスタMと時刻スレーブS1〜S3との間の時刻同期が破綻したものと判断し、制御系データの伝送を停止する。これによると、図1に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200A〜200Cの制御系データの送受信のタイミングを安定的に管理することができる。
図7は、本実施の形態に係る通信手段の構成例1を含む時刻同期処理を示すシーケンス図である。
図7を参照して、通信システム1において時刻同期処理が開始されると、時刻スレーブS3は、時刻スレーブS2に対して、Pdelay_Reqメッセージを送信する。時刻スレーブS3は、時刻スレーブS2に送信するPdelay_Reqメッセージに、前回の時刻同期処理で算出された時刻調整値ΔT2−3を格納する。
時刻スレーブS2は、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている時刻調整値ΔT2−3を抽出する。時刻スレーブS2は、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS3に送信する。時刻スレーブS3は、時刻調整値ΔT2−3を算出し、算出した時刻調整値ΔT2−3を用いて自装置のスレーブクロックの時刻を補正する。
時刻スレーブS2は、時刻スレーブS3より受信した時刻調整値ΔT2−3と、前回の時刻同期処理で算出された時刻調整値ΔT1−2とを式(10)に代入することにより、最大時刻調整値ΔTmax2を算出する。時刻スレーブS2は、時刻スレーブS1に送信するPdelay_Reqメッセージに、算出した最大時刻調整値ΔTmax2を格納する。
時刻スレーブS1は、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている最大時刻調整値ΔTmax2を抽出する。時刻スレーブS1は、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS2に送信する。時刻スレーブS2は、時刻調整値ΔT1−2を算出し、算出した時刻調整値ΔT1−2を用いて自装置のスレーブクロックの時刻を補正する。
時刻スレーブS1は、時刻スレーブS2より受信した最大時刻調整値ΔTmax2と、前回の時刻同期処理で算出された時刻調整値ΔTM−1とを式(11)に代入することにより、最大時刻調整値ΔTmax1を算出する。時刻スレーブS1は、時刻マスタMに送信するPdelay_Reqメッセージに、算出した最大時刻調整値ΔTmax1を格納する。
時刻マスタMは、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている最大時刻調整値ΔTmax1を抽出する。時刻マスタMは、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS1に送信する。時刻スレーブS1は、時刻調整値ΔTM−1を算出し、算出した時刻調整値ΔTM−1を用いて自装置のスレーブクロックの時刻を補正する。
時刻マスタMは、時刻スレーブS1より受信した最大時刻調整値ΔTmax1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。時刻マスタMは、最大時刻調整値ΔTmax1が閾値(=許容時刻精度/最大パス数)より小さい場合、時刻スレーブS1〜S3の時刻同期が完了していると判定し、時刻スレーブS1〜S3との間で制御系データの伝送を開始する。
図7に示すように、マスタ側に位置する通信装置に送信する時刻同期用パケット(Pdelay_Reqメッセージ)に時刻同期情報(時刻調整値ΔT)を含めることで、既存の時刻同期シーケンスを利用して、通信手段を実現することができる。これによると、通信手段を実現するために、時刻同期処理の実行中に通信装置間で遣り取りされるパケットが増えてしまうことを防止することができる。
図8は、本実施の形態に係る通信システム1を構成する時刻スレーブSによる処理手順を示すフローチャートである。図8では、時刻マスタMに順次接続される複数の時刻スレーブS1〜S3(S3は末端のスレーブに相当)のうちの1つの時刻スレーブSi(1≦i≦3)による処理手順が示されている。図8に示すフローチャートは所定周期で実行される。
図8を参照して、時刻スレーブSiは、マスタ側ノード(時刻スレーブS(i−1)または時刻マスタMに相当)に対して、時刻同期用パケット(Pdelay_Reqメッセージ)を送信する(ステップS01)。時刻スレーブSiは、Pdelay_Reqメッセージに、最大時刻調整値ΔTmaxiを格納する。時刻スレーブSiは、Pdelay_Reqメッセージを送信した時刻T1を記録する(図6参照)。
続いて、時刻スレーブSiは、マスタ側ノードから時刻同期用パケット(Pdelay_Respメッセージ)を受信する(ステップS02)。Pdelay_Respメッセージは、マスタ側ノードがPdelay_Reqメッセージを受信した時刻T2を含んでいる。時刻スレーブSiは、時刻T2を記録する。
時刻スレーブSiは、さらに、マスタ側ノードから時刻同期用パケット(Pdelay_Resp followupメッセージ)を受信する(ステップS03)。Pdelay_Resp followupメッセージは、マスタ側ノードがPdelay_Respメッセージを送信した時刻T3を含んでいる。時刻スレーブSiは、時刻T3および、Pdelay_Respメッセージを受信した時刻T4を記録する。
次に、時刻スレーブSiは、4つの時刻T1,T2,T3,T4に基づいて、マスタ側ノードの時刻に対する時刻スレーブSiの時刻の差分(時刻調整値)ΔTを算出する(ステップS04)。時刻スレーブSiは、時刻調整値ΔTを用いて、自装置のクロックの時刻を補正する(ステップS05)。
次に、時刻スレーブSiは、スレーブ側ノード(時刻スレーブS(i+1)に相当)から、時刻同期用パケット(Pdelay_Reqメッセージ)を受信する(ステップS06)。Pdelay_Reqメッセージには、スレーブ側ノードで算出された最大時刻調整値ΔTmax(i+1)が格納されている。
時刻スレーブSiは、時刻調整値ΔTの絶対値|ΔT|と、最大時刻調整値ΔTmax(i+1)とを比較し、大きい方の絶対値を選択する。時刻スレーブSiは、選択した絶対値を、最大時刻調整値ΔTmaxiに設定する。時刻スレーブSiは、設定した最大時刻調整値ΔTmaxiを、次回の時刻同期処理においてマスタ側ノードに送信する時刻同期用パケット(Pdelay_Reqメッセージ)に格納する。したがって、更新された最大時刻調整値ΔTmaxiがマスタ側ノードに通知されることになる(ステップS01)。
図8に示す処理手順に従って、時刻スレーブS1〜Snの各々がマスタ側ノードに最大時刻調整値ΔTmaxiを通知することにより、最終的に、時刻スレーブS1から時刻マスタMに最大時刻調整値ΔTmax1が通知される。
図9は、本実施の形態に係る通信システム1を構成する時刻マスタMによる処理手順を示すフローチャートである。図9に示すフローチャートは所定周期で実行される。
図9を参照して、時刻マスタMは、スレーブ側ノード(時刻スレーブS1)から時刻同期用パケット(Pdelay_Reqメッセージ)を受信する(ステップS11)。Pdelay_Reqメッセージには、時刻スレーブS1で算出された最大時刻調整値ΔTmax1が格納されている。
時刻マスタMは、時刻スレーブS1へ時刻同期用パケット(Pdelay_Respメッセージ)を送信する(ステップS12)。Pdelay_Respメッセージは、時刻マスタMがPdelay_Reqメッセージを受信した時刻T2を含んでいる。
時刻マスタMは、さらに、時刻スレーブS1へ時刻同期用パケット(Pdelay_Resp followupメッセージ)を送信する(ステップS13)。Pdelay_Resp followupメッセージは、時刻マスタMがPdelay_Respメッセージを送信した時刻T3を含んでいる。
続いて、時刻マスタMは、時刻スレーブS1より受信した最大時刻調整値ΔTmax1と、閾値(許容時刻精度/最大パス数)とを比較する(ステップS14)。最大時刻調整値ΔTmax1が閾値より小さい場合(S14のYES判定時)、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了したと判定し、時刻スレーブS1〜S3との間で制御系データの伝送を実行する(ステップS15)。
一方、最大時刻調整値ΔTmax1が閾値以上である場合(S14のNO判定時)、時刻マスタMは、さらに、制御系データの伝送を実行中であるか否かを判定する(ステップS16)。制御系データの伝送を実行中であれば(S16のYES判定時)、時刻マスタMは、制御系データの伝送を停止する(ステップS17)。一方、制御系データの伝送を実行していなければ(S16のNO判定時)、時刻マスタMは、制御系データの伝送を開始しない。
(f2.通信手段の構成例2)
図10は、本実施の形態に係る通信手段の構成例2を模式的に示す図である。本構成例においても構成例1と同様に、通信手段は、時刻同期情報として、自装置のスレーブクロックの時刻補正に用いた時刻調整値ΔTを通知するように構成される。
図10を参照して、時刻スレーブS3は、時刻スレーブS2との間で時刻同期処理(図5参照)を実行することにより、時刻スレーブS2の時刻に対する時刻スレーブS3の時刻の差分ΔT2−3を算出する。時刻スレーブS3は、算出した時刻調整値ΔT2−3を時刻スレーブS2へ通知する。
時刻スレーブS2は、時刻スレーブS1との間で時刻同期処理を実行することにより、時刻スレーブS1の時刻に対する時刻スレーブS2の時刻の差分ΔT1−2を算出する。時刻スレーブS2は、時刻スレーブS3より受信した時刻調整値ΔT2−3と、算出した時刻調整値ΔT1−2とを時刻スレーブS1へ通知する。
時刻スレーブS1は、時刻マスタMとの間で時刻同期処理を実行することにより、時刻マスタMの時刻に対する時刻スレーブS1の時刻の差分ΔTM−1を算出する。時刻スレーブS1は、時刻スレーブS2より受信したΔT2−3,ΔT1−2と、時刻調整値ΔTM−1とを時刻マスタMへ通知する。
時刻マスタMは、時刻調整値ΔT2−3,ΔT1−2,ΔTM−1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。具体的には、時刻マスタMは、時刻調整値ΔT1−2およびΔTM−1を足し合わせることにより、時刻マスタMの時刻に対する時刻スレーブS2の時刻の差分(時刻調整値)ΔTM−2を算出する。時刻調整値ΔTM−2は、次式(13)で与えられる。
ΔTM−2=ΔT1−2+ΔTM−1 …(13)
時刻マスタMは、さらに、時刻調整値ΔT2−3,ΔT1−2およびΔTM−1を足し合わせることにより、時刻マスタMの時刻に対する時刻スレーブS3の時刻の差分(時刻調整値)ΔTM−3を算出する。時刻調整値ΔTM−3は、次式(14)で与えられる。
ΔTM−3=ΔT2−3+ΔT1−2+ΔTM−1 …(14)
次に、時刻マスタMは、時刻調整値ΔTM−1,ΔTM−2,ΔTM−3のうち絶対値が最も大きいものを選択する。時刻マスタMは、選択した時刻調整値の絶対値を最大時刻調整値ΔTMmaxに設定する。最大時刻調整値ΔTMmaxは、次式(15)で与えられる。
ΔTMmax=Max{|ΔTM−3|,|ΔTM−2|,|ΔTM−1|} …(15)
時刻マスタMは、最大時刻調整値ΔTMmaxと許容時刻精度とを比較し、最大時刻調整値ΔTMmaxが許容時刻精度より小さい場合、時刻スレーブS1〜S3の時刻同期が完了したと判定する。時刻マスタMは、時刻同期が完了したと判定されると、時刻スレーブS1〜S3の間で制御系データの伝送を開始する。一方、最大時刻調整値ΔTMmaxが許容時刻精度より大きい場合、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了していないと判定し、制御系データの伝送を開始しないこととする。なお、データ伝送の実行中において、最大時刻調整値ΔTMmaxが許容時刻精度を超えた場合、時刻マスタMは、時刻マスタMと時刻スレーブS1〜S3との間の時刻同期が破綻したものと判断し、制御系データの伝送を停止する。これによると、図1に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200A〜200Cの制御系データの送受信のタイミングを安定的に管理することができる。
図11は、本実施の形態に係る通信システム1を構成する時刻スレーブSによる処理手順を示すフローチャートである。図11では、時刻マスタMに順次接続される複数の時刻スレーブS1〜S3(S3は末端のスレーブに相当)のうちの1つの時刻スレーブSi(1≦i≦3)による処理手順が示されている。図11に示すフローチャートは、図8に示したフローチャートと比較して、ステップS01,S06をステップS01A,S06Aにそれぞれ置き換えたものである。
図11を参照して、時刻スレーブSiは、マスタ側ノード(時刻スレーブS(i−1)または時刻マスタMに相当)に対して、時刻同期用パケット(Pdelay_Reqメッセージ)を送信する(ステップS01A)。時刻スレーブSiは、Pdelay_Reqメッセージに、自装置の時刻調整値ΔTと、スレーブ側ノード(時刻スレーブS(i+1)に相当)より受信した時刻調整値ΔTとを格納する。時刻スレーブSiは、Pdelay_Reqメッセージを送信した時刻T1を記録する(図6参照)。
続いて、時刻スレーブSiは、マスタ側ノードから時刻同期用パケット(Pdelay_Respメッセージ)を受信する(ステップS02)。時刻スレーブSiは、さらに、マスタ側ノードから時刻同期用パケット(Pdelay_Resp followupメッセージ)を受信する(ステップS03)。時刻スレーブSiは、4つの時刻T1,T2,T3,T4に基づいて、マスタ側ノードの時刻に対する時刻スレーブSiの時刻の差分(時刻調整値)ΔTを算出する(ステップS04)。時刻スレーブSiは、時刻調整値ΔTを用いて、自装置のクロックの時刻を補正する(ステップS05)。
次に、時刻スレーブSiは、スレーブ側ノードから、時刻同期用パケット(Pdelay_Reqメッセージ)を受信する(ステップS06A)。Pdelay_Reqメッセージには、スレーブ側ノードにおける時刻調整値ΔTが格納されている。スレーブ側ノードにおける時刻調整値ΔTは、自装置よりもスレーブ側に位置する全ての時刻スレーブSの時刻調整値ΔTを含んでいる。時刻スレーブSiは、受信した時刻調整値ΔTおよび、自装置の時刻調整値ΔTを、次回の時刻同期処理においてマスタ側ノードに送信する時刻同期用パケット(Pdelay_Reqメッセージ)に格納する。したがって、更新された時刻調整値ΔTがマスタ側ノードに通知されることになる(ステップS01A)。
図11に示す処理手順に従って、時刻スレーブS1〜Snの各々がマスタ側ノードに時刻調整値ΔTを通知することにより、最終的に、時刻スレーブS1〜S3の全ての時刻調整値ΔTが時刻マスタMに通知される。
図12は、本実施の形態に係る通信システム1を構成する時刻マスタMによる処理手順を示すフローチャートである。図12に示すフローチャートは、図9のフローチャートと比較して、ステップS11をステップS11Aに置き換えるとともに、ステップS18〜S20を追加したものである。
図12を参照して、時刻マスタMは、スレーブ側ノード(時刻スレーブS1)から時刻同期用パケット(Pdelay_Reqメッセージ)を受信する(ステップS11A)。Pdelay_Reqメッセージには、時刻スレーブS1〜S3の時刻調整値ΔT2−3,ΔT1−2,ΔTM−1が格納されている。
時刻マスタMは、時刻スレーブS1へ時刻同期用パケット(Pdelay_Respメッセージ)を送信する(ステップS12)。時刻マスタMは、さらに、時刻スレーブS1へ時刻同期用パケット(Pdelay_Resp followupメッセージ)を送信する(ステップS13)。
次に、時刻マスタMは、時刻スレーブS1より受信した時刻調整値ΔT2−3,ΔT1−2,ΔTM−1に基づいて、時刻マスタMの時刻に対する時刻スレーブS2,S3の時刻の差分(時刻調整値)ΔTM−2,ΔTM−3を算出する(ステップS18)。続いて、時刻マスタMは、算出した時刻調整値ΔTM−3,ΔTM−2,ΔTM−1の絶対値の最大値(最大時刻調整値ΔTMmax)を求める(ステップS19)。
次に、時刻マスタMは、最大時刻調整値ΔTMmaxと、許容時刻精度とを比較する(ステップS20)。最大時刻調整値ΔTMmaxが許容時刻精度より小さい場合(S20のYES判定時)、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了したと判定し、時刻スレーブS1〜S3との間で制御系データの伝送を実行する(ステップS15)。
一方、最大時刻調整値ΔTMmaxが許容時刻精度以上である場合(S20のNO判定時)、時刻マスタMは、さらに、制御系データの伝送を実行中であるか否かを判定する(ステップS16)。制御系データの伝送を実行中であれば(S16のYES判定時)、時刻マスタMは、制御系データの伝送を停止する(ステップS17)。一方、制御系データの伝送を実行していなければ(S16のNO判定時)、時刻マスタMは、制御系データの伝送を開始しない。
(f3.通信手段の構成例3)
図13は、本実施の形態に係る通信手段の構成例3を模式的に示す図である。本構成例においても構成例1,2と同様に、通信手段は、時刻同期情報として、自装置のスレーブクロックの時刻補正に用いた時刻調整値ΔTを通知するように構成される。
図13を参照して、時刻スレーブS3は、時刻スレーブS2との間で時刻同期処理(図6)を実行することにより、時刻スレーブS2の時刻に対する時刻スレーブS3の時刻の差分ΔT2−3を算出する。時刻スレーブS3は、算出した時刻調整値ΔT2−3を時刻スレーブS2へ通知する。
時刻スレーブS2は、時刻スレーブS1との間で時刻同期処理を実行することにより、時刻スレーブS1の時刻に対する時刻スレーブS2の時刻の差分ΔT1−2を算出する。時刻スレーブS2は、時刻スレーブS3より受信した時刻調整値ΔT2−3と算出した時刻調整値ΔT1−2とを足し合わせる。時刻スレーブS2は、合算値(ΔT2−3+ΔT1−2)と時刻調整値ΔT1−2とを時刻スレーブS1へ通知する。
時刻スレーブS1は、時刻マスタMとの間で時刻同期処理を実行することにより、時刻マスタMの時刻に対する時刻スレーブS1の時刻の差分ΔTM−1を算出する。時刻スレーブS1は、時刻スレーブS2より受信した合計値(ΔT2−3+ΔT1−2)と、時刻調整値ΔTM−1とを足し合わせる。時刻スレーブS1は、また、時刻スレーブS2より受信した時刻調整値ΔT1−2と、時刻調整値ΔTM−1とを足し合わせる。時刻スレーブS1は、合算値(ΔT2−3+ΔT1−2+ΔTM−1),(ΔT1−2+ΔTM−1)と、時刻調整値ΔTM−1とを時刻マスタMへ通知する。
ここで、合計値(ΔT2−3+ΔT1−2+ΔTM−1)は、式(14)により、時刻マスタMの時刻に対する時刻スレーブS3の時刻の差分(時刻調整値)ΔTM−3に相当する。合算値(ΔΔT1−2+ΔTM−1)は、式(13)により、時刻マスタMの時刻に対する時刻スレーブS2の時刻の差分(時刻調整値)ΔTM−2に相当する。
時刻マスタMは、式(15)を用いて、時刻調整値ΔTM−1,ΔTM−2,ΔTM−3のうち絶対値が最も大きいものを最大時刻調整値ΔTMmaxに設定する。時刻マスタMは、最大時刻調整値ΔTMmaxと許容時刻精度とを比較し、最大時刻調整値ΔTMmaxが許容時刻精度より小さい場合、時刻スレーブS1〜S3の時刻同期が完了したと判定する。時刻マスタMは、時刻同期が完了したと判定されると、時刻スレーブS1〜S3の間で制御系データの伝送を開始する。一方、最大時刻調整値ΔTMmaxが許容時刻精度より大きい場合、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了していないと判定し、制御系データの伝送を開始しないこととする。なお、データ伝送の実行中において、最大時刻調整値ΔTMmaxが許容時刻精度を超えた場合、時刻マスタMは、時刻マスタMと時刻スレーブS1〜S3との間の時刻同期が破綻したものと判断し、制御系データの伝送を停止する。これによると、図1に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200A〜200Cの制御系データの送受信のタイミングを安定的に管理することができる。
図14は、本実施の形態に係る通信システム1を構成する時刻スレーブSによる処理手順を示すフローチャートである。図14では、時刻マスタMに順次接続される複数の時刻スレーブS1〜S3(S3は末端のスレーブに相当)のうちの1つの時刻スレーブSi(1≦i≦3)による処理手順が示されている。図14に示すフローチャートは、図8に示したフローチャートと比較して、ステップS01,S06をステップS01B,S06Bにそれぞれ置き換えるとともに、ステップS08を追加したものである。
図14を参照して、時刻スレーブSiは、マスタ側ノード(時刻スレーブS(i−1)または時刻マスタMに相当)に対して、時刻同期用パケット(Pdelay_Reqメッセージ)を送信する(ステップS01B)。時刻スレーブSiは、Pdelay_Reqメッセージに、自装置の時刻調整値ΔTおよび、自装置の時刻調整値ΔTとスレーブ側ノード(時刻スレーブS(i+1)に相当)より受信した時刻調整値ΔTとの合算値を格納する。時刻スレーブSiは、Pdelay_Reqメッセージを送信した時刻T1を記録する(図6参照)。
続いて、時刻スレーブSiは、マスタ側ノードから時刻同期用パケット(Pdelay_Respメッセージ)を受信する(ステップS02)。時刻スレーブSiは、さらに、マスタ側ノードから時刻同期用パケット(Pdelay_Resp followupメッセージ)を受信する(ステップS03)。時刻スレーブSiは、4つの時刻T1,T2,T3,T4に基づいて、マスタ側ノードの時刻に対する時刻スレーブSiの時刻の差分(時刻調整値)ΔTを算出する(ステップS04)。時刻スレーブSiは、時刻調整値ΔTを用いて、自装置のクロックの時刻を補正する(ステップS05)。
次に、時刻スレーブSiは、スレーブ側ノードから、時刻同期用パケット(Pdelay_Reqメッセージ)を受信する(ステップS06B)。Pdelay_Reqメッセージには、スレーブ側ノードにおける時刻調整値ΔTと、スレーブ側ノードで算出された時刻調整値ΔTの合算値とが格納されている。時刻スレーブSiは、受信した時刻調整値ΔTと自装置の時刻調整値ΔTとを加算する(ステップS08)。時刻スレーブSiは、合算値および自装置の時刻調整値ΔTを、次回の時刻同期処理においてマスタ側ノードに送信する時刻同期用パケット(Pdelay_Reqメッセージ)に格納する。したがって、更新された時刻調整値ΔTおよび合算値がマスタ側ノードに通知されることになる(ステップS01B)。
図14に示す処理手順に従って、スレーブ側ノードから送信される時刻調整値ΔTの合算値に、自装置の時刻調整値ΔTを加算した合算値をマスタ側ノードに通知することにより、最終的に、時刻マスタMの時刻と時刻スレーブS1〜S3の各々の時刻との差分(時刻調整値)ΔTM−1,ΔTM−2,ΔTM−3が時刻マスタMに通知される。
図15は、本実施の形態に係る通信システム1を構成する時刻マスタMによる処理手順を示すフローチャートである。図15に示すフローチャートは、図9のフローチャートと比較して、ステップS11をステップS11Bに置き換えるとともに、ステップS19,S20を追加したものである。
図15を参照して、時刻マスタMは、スレーブ側ノード(時刻スレーブS1)から時刻同期用パケット(Pdelay_Reqメッセージ)を受信する(ステップS11B)。Pdelay_Reqメッセージには、時刻マスタMの時刻と時刻スレーブS1〜S3の各々の時刻との差分である時刻調整値ΔTM−3,ΔTM−2,ΔTM−1が格納されている。
時刻マスタMは、時刻スレーブS1へ時刻同期用パケット(Pdelay_Respメッセージ)を送信する(ステップS12)。時刻マスタMは、さらに、時刻スレーブS1へ時刻同期用パケット(Pdelay_Resp followupメッセージ)を送信する(ステップS13)。
時刻マスタMは、時刻スレーブS1より受信した時刻調整値ΔTM−3,ΔTM−2,ΔTM−1の絶対値の最大値(最大時刻調整値ΔTMmax)を求める(ステップS19)。続いて、時刻マスタMは、最大時刻調整値ΔTMmaxと、許容時刻精度とを比較する(ステップS20)。最大時刻調整値ΔTMmaxが許容時刻精度より小さい場合(S20のYES判定時)、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了したと判定し、時刻スレーブS1〜S3との間で制御系データの伝送を実行する(ステップS15)。
一方、最大時刻調整値ΔTMmaxが許容時刻精度以上である場合(S20のNO判定時)、時刻マスタMは、さらに、制御系データの伝送を実行中であるか否かを判定する(ステップS16)。制御系データの伝送を実行中であれば(S16のYES判定時)、時刻マスタMは、制御系データの伝送を停止する(ステップS17)。一方、制御系データの伝送を実行していなければ(S16のNO判定時)、時刻マスタMは、制御系データの伝送を開始しない。
(f4.通信手段の構成例4)
図16は、本実施の形態に係る通信手段の第4例を含む時刻同期処理を示すシーケンス図である。
図16を参照して、通信システム1において時刻同期処理が開始されると、時刻スレーブS3は、時刻スレーブS2との間で時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて時刻調整値ΔT2−3を算出する。時刻スレーブS3は、算出した時刻調整値ΔT2−3を用いて、時刻スレーブS3のスレーブクロックの時刻補正を行なう。
時刻スレーブS2は、時刻スレーブS1との間で時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて時刻調整値ΔT1−2を算出する。時刻スレーブS2は、算出した時刻調整値ΔT1−2を用いて、時刻スレーブS2のスレーブクロックの時刻補正を行なう。
時刻スレーブS1は、時刻マスタMとの間で時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて時刻調整値ΔTM−1を算出する。時刻スレーブS1は、算出した時刻調整値ΔTM−1を用いて、時刻スレーブS1のスレーブクロックの時刻補正を行なう。
時刻同期処理を実行した後、時刻マスタMは、時刻スレーブS1〜S3の各々に対して、時刻調整値ΔTを問い合わせる。各時刻スレーブSは、問い合わせに応答して、自装置の時刻調整値ΔTを時刻マスタMに通知する。
時刻マスタMは、時刻調整値ΔT2−3,ΔT1−2,ΔTM−1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。具体的には、時刻マスタMは、時刻調整値ΔT1−2およびΔTM−1を足し合わせることにより、時刻マスタMの時刻に対する時刻スレーブS2の時刻の差分(時刻調整値)ΔTM−2を算出する。時刻マスタMは、さらに、時刻調整値ΔT2−3,ΔT1−2およびΔTM−1を足し合わせることにより、時刻マスタMの時刻に対する時刻スレーブS3の時刻の差分(時刻調整値)ΔTM−3を算出する。
次に、時刻マスタMは、時刻調整値ΔTM−1,ΔTM−2,ΔTM−3のうち絶対値が最も大きいものを選択する。時刻マスタMは、選択した時刻調整値の絶対値を最大時刻調整値ΔTMmaxに設定する。時刻マスタMは、最大時刻調整値ΔTMmaxと許容時刻精度とを比較し、最大時刻調整値ΔTMmaxが許容時刻精度より小さい場合、時刻スレーブS1〜S3の時刻同期が完了したと判定する。時刻マスタMは、時刻同期が完了したと判定されると、時刻スレーブS1〜S3の間で制御系データの伝送を開始する。一方、最大時刻調整値ΔTMmaxが許容時刻精度より大きい場合、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了していないと判定し、制御系データの伝送を開始しないこととする。なお、データ伝送の実行中において、最大時刻調整値ΔTMmaxが許容時刻精度を超えた場合、時刻マスタMは、時刻マスタMと時刻スレーブS1〜S3との間の時刻同期が破綻したものと判断し、制御系データの伝送を停止する。これによると、図1に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200A〜200Cの制御系データの送受信のタイミングを安定的に管理することができる。
本構成例では、各時刻スレーブSの通信手段は、時刻同期処理が実行された後に、当該処理で得られた自装置の時刻調整値ΔTを時刻マスタMに通知するように構成される。時刻同期処理の実行中に各時刻スレーブSが時刻調整値ΔTを時刻マスタMに通知する構成とした場合、ネットワーク上において、時刻同期用パケットと、時刻調整値ΔTを示すデータとが衝突してしまう虞が懸念される。本構成例によれば、このような衝突が発生することを防止することができる。
(f5.通信手段の構成例5)
図17は、本実施の形態に係る通信手段の第5例を含む時刻同期処理を示すシーケンス図である。
図17を参照して、通信システム1において時刻同期処理が開始されると、時刻スレーブS3は、時刻スレーブS2との間で時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて時刻調整値ΔT2−3を算出する。時刻スレーブS3は、算出した時刻調整値ΔT2−3を用いて、時刻スレーブS3のスレーブクロックの時刻補正を行なう。
時刻スレーブS2は、時刻スレーブS1との間で時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて時刻調整値ΔT1−2を算出する。時刻スレーブS2は、算出した時刻調整値ΔT1−2を用いて、時刻スレーブS2のスレーブクロックの時刻補正を行なう。
時刻スレーブS1は、時刻マスタMとの間で時刻同期用パケットを遣り取りし、その過程で得られた情報に基づいて時刻調整値ΔTM−1を算出する。時刻スレーブS1は、算出した時刻調整値ΔTM−1を用いて、時刻スレーブS1のスレーブクロックの時刻補正を行なう。
時刻同期処理を実行した後、時刻スレーブS1〜S3の各々は、自装置の時刻調整値ΔTを時刻マスタMに通知する。時刻マスタMは、時刻調整値ΔT2−3,ΔT1−2,ΔTM−1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。具体的には、時刻マスタMは、時刻マスタMの時刻に対する時刻スレーブS2の時刻の差分(時刻調整値)ΔTM−2および、時刻マスタMの時刻に対する時刻スレーブS3の時刻の差分(時刻調整値)ΔTM−3を算出する。
次に、時刻マスタMは、時刻調整値ΔTM−1,ΔTM−2,ΔTM−3のうち絶対値が最も大きいものを選択する。時刻マスタMは、選択した時刻調整値の絶対値を最大時刻調整値ΔTMmaxに設定する。時刻マスタMは、最大時刻調整値ΔTMmaxと許容時刻精度とを比較し、最大時刻調整値ΔTMmaxが許容時刻精度より小さい場合、時刻スレーブS1〜S3の時刻同期が完了したと判定する。時刻マスタMは、時刻同期が完了したと判定されると、時刻スレーブS1〜S3の間で制御系データの伝送を開始する。一方、最大時刻調整値ΔTMmaxが許容時刻精度より大きい場合、時刻マスタMは、時刻スレーブS1〜S3の時刻同期が完了していないと判定し、制御系データの伝送を開始しないこととする。なお、データ伝送の実行中において、最大時刻調整値ΔTMmaxが許容時刻精度を超えた場合、時刻マスタMは、時刻マスタMと時刻スレーブS1〜S3との間の時刻同期が破綻したものと判断し、制御系データの伝送を停止する。これによると、図1に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200A〜200Cの制御系データの送受信のタイミングを安定的に管理することができる。
本構成例によれば、上述した構成例4と同様に、通信手段は、時刻同期処理が実行された後に、当該処理で得られた自装置の時刻調整値ΔTを時刻マスタMに通知するように構成される。したがって、時刻同期処理の実行中、ネットワーク上において、時刻同期用パケットと、時刻調整値ΔTを示すデータとが衝突することを防止することができる。
なお、上述した通信手段の構成例1〜5においては、時刻スレーブS1〜S3の時刻同期処理が互いに等しいタイミングで実行される構成について説明したが、時刻同期処理を実行するタイミングが時刻スレーブ間で異なっていてもよい。この場合、時刻マスタMは、全ての時刻スレーブSの時刻同期情報が収集されたタイミングで、時刻同期の完了を判定することができる。
<G.通信システムの変形例>
図1に示す通信システム1においては、制御装置100(制御マスタ)を時刻マスタとして機能させる構成例について説明したが、制御装置100を他の通信装置に時刻同期させるようにしてもよい。このとき、他の通信装置が時刻マスタとして機能し、制御装置100(制御マスタ)が時刻スレーブとして機能することになる。例えば、図1に示す通信システム1において、デバイス200A〜200Cのうちの1つのデバイス200を時刻マスタとして機能させる構成例について説明する。
(g1.通信システム1の変形例1)
図18は、本実施の形態に係る通信システム1の変形例1が提供する時刻同期機能を示す模式図である。
図18に示す構成例では、時刻スレーブS2が制御装置100(制御マスタ)に対応し、時刻マスタMおよび時刻スレーブS1,S3がデバイス200A〜200Cにそれぞれ対応する。時刻スレーブS1〜S3の各々は、図7に示す時刻同期処理において算出された時刻調整値ΔT2−3,ΔT1−2,ΔTM−1を時刻マスタMへ通知する。図18では、各時刻スレーブSには、図6に示した通信手段の構成例1が適用される。したがって、時刻マスタMとして機能するデバイス200には、最大時刻調整値ΔTmax1が通知される。
時刻マスタMであるデバイス200は、図9に示す処理手順を実行することにより、最大時刻調整値ΔTmax1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。デバイス200は、判定結果を時刻スレーブS2として機能する制御装置100(制御マスタ)に通知する。
制御装置100は、時刻スレーブS1〜S3の時刻同期が完了したと判定された場合、デバイス200A〜200Cとの間で制御系データの伝送を開始する。一方、時刻スレーブS1〜S3の時刻同期が完了していないと判定された場合、制御装置100は、制御系データの伝送を開始しないこととする。なお、データ伝送の実行中において、時刻マスタMと時刻スレーブS1〜S3との間の時刻同期が破綻したものと判断された場合には、制御装置100は、デバイス200A〜200Cとの間の制御系データの伝送を停止する。これによると、図1に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200A〜200Cの制御系データの送受信のタイミングを安定的に管理することができる。
図19は、本実施の形態に係る通信システム1の変形例1における時刻同期処理を示すシーケンス図である。
図19を参照して、通信システム1において時刻同期処理が開始されると、時刻スレーブS3は、時刻スレーブS2に対して、Pdelay_Reqメッセージを送信する。時刻スレーブS3は、時刻スレーブS2に送信するPdelay_Reqメッセージに、前回の時刻同期処理で算出された時刻調整値ΔT2−3を格納する。
時刻スレーブS2は、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている時刻調整値ΔT2−3を抽出する。時刻スレーブS2は、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS3に送信する。時刻スレーブS3は、時刻調整値ΔT2−3を算出し、算出した時刻調整値ΔT2−3を用いて自装置のスレーブクロックの時刻を補正する。
時刻スレーブS2は、時刻スレーブS3より受信した時刻調整値ΔT2−3と、前回の時刻同期処理で算出された時刻調整値ΔT1−2とを式(10)に代入することにより、最大時刻調整値ΔTmax2を算出する。時刻スレーブS2は、時刻スレーブS1に送信するPdelay_Reqメッセージに、算出した最大時刻調整値ΔTmax2を格納する。
時刻スレーブS1は、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている最大時刻調整値ΔTmax2を抽出する。時刻スレーブS1は、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS2に送信する。時刻スレーブS2は、時刻調整値ΔT1−2を算出し、算出した時刻調整値ΔT1−2を用いて自装置のスレーブクロックの時刻を補正する。
時刻スレーブS1は、時刻スレーブS2より受信した最大時刻調整値ΔTmax2と、前回の時刻同期処理で算出された時刻調整値ΔTM−1とを式(11)に代入することにより、最大時刻調整値ΔTmax1を算出する。時刻スレーブS1は、時刻マスタMに送信するPdelay_Reqメッセージに、算出した最大時刻調整値ΔTmax1を格納する。
時刻マスタMは、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている最大時刻調整値ΔTmax1を抽出する。時刻マスタMは、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS1に送信する。時刻スレーブS1は、時刻調整値ΔTM−1を算出し、算出した時刻調整値ΔTM−1を用いて自装置のスレーブクロックの時刻を補正する。
時刻マスタMは、時刻スレーブS1より受信した最大時刻調整値ΔTmax1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。時刻マスタMは、最大時刻調整値ΔTmax1が閾値(=許容時刻精度/最大パス数)より小さい場合、時刻スレーブS1〜S3の時刻同期が完了していると判定し、判定結果を制御装置100(制御マスタ)に通知する。制御装置100は、時刻スレーブS1〜S3との間で制御系データの伝送を開始する。
一方、時刻マスタMは、最大時刻調整値ΔTmax1が閾値より大きい場合、時刻スレーブS1〜S3の時刻同期が完了していないと判定し、判定結果を制御装置100(制御マスタ)に通知する。制御装置100は、制御系データの伝送を開始しない。データ伝送の実行中である場合、制御装置100は、制御系データの伝送を停止する。
(g2.通信システム1の変形例2)
図20は、本実施の形態に係る通信システム1の変形例2が提供する時刻同期機能を示す模式図である。
図20に示す構成例では、図18に示す構成例と同様に、時刻スレーブS2が制御装置100に対応し、時刻マスタMおよび時刻スレーブS1,S3がデバイス200A〜200Cにそれぞれ対応する。時刻スレーブS1〜S3の各々は、図7に示す時刻同期処理において算出された時刻調整値ΔT2−3,ΔT1−2,ΔTM−1を時刻マスタMへ通知する。図20では、各時刻スレーブSには、図6に示した通信手段の構成例1が適用される。時刻マスタMとして機能するデバイス200には、最大時刻調整値ΔTmax1が通知される。
本変形例では、時刻マスタMは、通知された最大時刻調整値ΔTmax1を制御装置100(制御マスタ)に転送する。制御装置100は、図9に示す処理手順を実行することにより、最大時刻調整値ΔTmax1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。制御装置100は、時刻スレーブS1〜S3の時刻同期が完了したと判定された場合、デバイス200A〜200Cとの間で制御系データの伝送を開始する。一方、時刻スレーブS1〜S3の時刻同期が完了していないと判定された場合、制御装置100は、制御系データの伝送を開始しないこととする。なお、データ伝送の実行中において、時刻マスタMと時刻スレーブS1〜S3との間の時刻同期が破綻したものと判断された場合には、制御装置100は、デバイス200A〜200Cとの間の制御系データの伝送を停止する。これによると、図1に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200A〜200Cの制御系データの送受信のタイミングを管理することができる。
図21は、本実施の形態に係る通信システム1の変形例2における時刻同期処理を示すシーケンス図である。
図21を参照して、通信システム1において時刻同期処理が開始されると、時刻スレーブS3は、時刻スレーブS2に対して、Pdelay_Reqメッセージを送信する。時刻スレーブS3は、時刻スレーブS2に送信するPdelay_Reqメッセージに、前回の時刻同期処理で算出された時刻調整値ΔT2−3を格納する。
時刻スレーブS2は、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている時刻調整値ΔT2−3を抽出する。時刻スレーブS2は、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS3に送信する。時刻スレーブS3は、時刻調整値ΔT2−3を算出し、算出した時刻調整値ΔT2−3を用いて自装置のスレーブクロックの時刻を補正する。
時刻スレーブS2は、時刻スレーブS3より受信した時刻調整値ΔT2−3と、前回の時刻同期処理で算出された時刻調整値ΔT1−2とを式(10)に代入することにより、最大時刻調整値ΔTmax2を算出する。時刻スレーブS2は、時刻スレーブS1に送信するPdelay_Reqメッセージに、算出した最大時刻調整値ΔTmax2を格納する。
時刻スレーブS1は、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている最大時刻調整値ΔTmax2を抽出する。時刻スレーブS1は、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS2に送信する。時刻スレーブS2は、時刻調整値ΔT1−2を算出し、算出した時刻調整値ΔT1−2を用いて自装置のスレーブクロックの時刻を補正する。
時刻スレーブS1は、時刻スレーブS2より受信した最大時刻調整値ΔTmax2と、前回の時刻同期処理で算出された時刻調整値ΔTM−1とを式(11)に代入することにより、最大時刻調整値ΔTmax1を算出する。時刻スレーブS1は、時刻マスタMに送信するPdelay_Reqメッセージに、算出した最大時刻調整値ΔTmax1を格納する。
時刻マスタMは、Pdelay_Reqメッセージを受信すると、Pdelay_Reqメッセージに格納されている最大時刻調整値ΔTmax1を抽出する。時刻マスタMは、Pdelay_RespメッセージおよびPdelay_Resp_followupメッセージを時刻スレーブS1に送信する。時刻スレーブS1は、時刻調整値ΔTM−1を算出し、算出した時刻調整値ΔTM−1を用いて自装置のスレーブクロックの時刻を補正する。
時刻マスタMは、時刻スレーブS1より受信した最大時刻調整値ΔTmax1を制御装置100(制御マスタ)へ転送する。制御装置100は、最大時刻調整値ΔTmax1に基づいて、時刻スレーブS1〜S3の時刻同期が完了したか否かを判定する。制御装置100は、最大時刻調整値ΔTmax1が閾値より小さい場合、時刻スレーブS1〜S3の時刻同期が完了していると判定し、時刻スレーブS1〜S3との間で制御系データの伝送を開始する。
一方、制御装置100は、最大時刻調整値ΔTmax1が閾値より大きい場合、時刻スレーブS1〜S3の時刻同期が完了していないと判定し、制御系データの伝送を開始しない。データ伝送の実行中である場合、制御装置100は、制御系データの伝送を停止する。
(g3.通信システムの変形例3)
図1に示す通信システム1においては、ネットワーク2に、時刻マスタM(制御装置100)および時刻スレーブS1〜S3(デバイス200A〜200C)がデイジーチェーンで順次接続されている構成例について説明したが、ネットワーク2の時刻マスタMと時刻スレーブS1〜S3との接続形態は、これに限定されない。例えば、ネットワーク2の時刻マスタMと時刻スレーブS1〜S3との接続形態がスター型とした構成例について説明する。
図22は、本実施の形態に係る通信システム1の変形例3の構成を模式的に示す図である。図22に示す構成例において、ネットワーク2には、時刻マスタMおよび複数の時刻スレーブS1〜S5が接続される。時刻マスタMおよび時刻スレーブS3〜S5の各々は、ポートP1,P2を有する。時刻スレーブS1,S2の各々は、ポートP1〜P4を有する。時刻スレーブS1のポートP1は時刻マスタMのポートP2に接続され、時刻スレーブS1のポートP2は時刻スレーブS3のポートP2に接続され、時刻スレーブS1のポートP3は時刻スレーブS2のポートP1に接続される。時刻スレーブS2のポートP2は時刻スレーブS4のポートP2に接続され、時刻スレーブS2のポートP3は時刻スレーブS5のポートP1に接続される。
図22に示す構成例においても、P2Pトランスペアレントクロックを用いた時刻同期処理を実行することにより、時刻マスタMの有するマスタクロックに各時刻スレーブS1〜S5の有するスレーブクロックを時刻同期させる。
具体的には、時刻スレーブS1は、ポートP1(スレーブポート)に接続される時刻マスタMとの間で図5に示す時刻同期処理を実行することにより、時刻マスタMが持つクロック(マスタクロック)の時刻と自装置の持つクロック(スレーブクロック)の時刻との差分ΔTM−1を算出する。時刻スレーブS1は、差分ΔTM−1を時刻調整値として、自装置のタイマを時刻補正する。
時刻スレーブS2は、ポートP1(スレーブポート)に接続される時刻スレーブS1との間で図5に示す時刻同期処理を実行することにより、時刻スレーブS1が持つクロックの時刻と自装置のクロックの時刻との差分ΔT1−2を算出する。時刻スレーブS2は、差分ΔT2−1を時刻調整値として、自装置のクロックを時刻補正する。
時刻スレーブS3は、ポートP2(スレーブポート)に接続される時刻スレーブS1との間で図5に示す時刻同期処理を実行することにより、時刻スレーブS1が持つクロックの時刻と自装置が持つクロックの時刻との差分ΔT1−3を算出する。時刻スレーブS3は、差分ΔT1−3を時刻調整値として、自装置のクロックを時刻補正する。
時刻スレーブS4は、ポートP2(スレーブポート)に接続される時刻スレーブS2との間で図5に示す時刻同期処理を実行することにより、時刻スレーブS2が持つクロックの時刻と自装置が持つクロックの時刻との差分ΔT2−4を算出する。時刻スレーブS4は、差分ΔT2−4を時刻調整値として、自装置のクロックを時刻補正する。
時刻スレーブS5は、ポートP1(スレーブポート)に接続される時刻スレーブS2との間で図5に示す時刻同期処理を実行することにより、時刻スレーブS2が持つクロックの時刻と自装置が持つクロックの時刻との差分ΔT2−5を算出する。時刻スレーブS5は、差分ΔT2−5を時刻調整値として、自装置のクロックを時刻補正する。
このように、時刻スレーブS1〜S5の各々が、マスタ側に隣接して接続される通信装置のクロックの時刻と自装置のクロックの時刻との差分ΔTを時刻調整値として、自装置のクロックを時刻補正することにより、最終的に、時刻マスタMと全ての時刻スレーブS1〜S5との間で時刻同期が実現される。通信システム1全体の時刻同期が完了することにより、複数の通信装置の間で制御系データの伝送を開始することが可能となる。
時刻スレーブS1〜S5の各々は、自装置のスレーブクロックの時刻同期情報を時刻マスタMへ通知するための「通信手段」を有する。これによると、時刻マスタMは、時刻スレーブS1〜S5の各々から通知される時刻同期情報に基づいて、時刻スレーブS1〜S3との間の時刻同期が完了したか否かを判定することができる。
図23は、図22に示す通信システム1における各スレーブの通信手段の構成例を模式的に示す図である。各スレーブの通信手段は、時刻同期情報として、自装置のスレーブクロックの時刻補正に用いた時刻調整値ΔTを通知するように構成される。
図23を参照して、時刻スレーブS4は、時刻スレーブS2との間で時刻同期処理を実行することにより、時刻スレーブS2の時刻に対する時刻スレーブS4の時刻の差分ΔT2−4を算出する。時刻スレーブS4は、算出した時刻調整値ΔT2−4を時刻スレーブS2へ通知する。
時刻スレーブS5は、時刻スレーブS2との間で時刻同期処理を実行することにより、時刻スレーブS2の時刻に対する時刻スレーブS5の時刻の差分ΔT2−5を算出する。時刻スレーブS5は、算出した時刻調整値ΔT2−5を時刻スレーブS2へ通知する。
時刻スレーブS2は、時刻スレーブS1との間で時刻同期処理を実行することにより、時刻スレーブS1の時刻に対する時刻スレーブS2の時刻の差分ΔT1−2を算出する。時刻スレーブS2は、時刻スレーブS4より受信した時刻調整値ΔT2−4と、時刻スレーブS5より受信した時刻調整値ΔT2−5と、算出した時刻調整値ΔT1−2とを比較する。具体的には、時刻スレーブS2は、時刻調整値ΔT2−4の絶対値|ΔT2−4|と、時刻調整値ΔT2−5の絶対値|ΔT2−5|と、時刻調整値ΔT1−2の絶対値と|ΔT1−2|とを比較し、最も大きい絶対値(最大時刻調整値ΔTmax2)を選択する。最大時刻調整値ΔTmax2は次式(16)で与えられる。時刻スレーブS2は、最大時刻調整値ΔTmax2を時刻スレーブS1へ通知する。
ΔTmax2=Max{|ΔT2−4|,|ΔT2−5|,|ΔT1−2|} …(16)
時刻スレーブS3は、時刻スレーブS1との間で時刻同期処理を実行することにより、時刻スレーブS1の時刻に対する時刻スレーブS3の時刻の差分ΔT1−3を算出する。時刻スレーブS3は、算出した時刻調整値ΔT1−3を時刻スレーブS1へ通知する。
時刻スレーブS1は、時刻マスタMとの間で時刻同期処理を実行することにより、時刻マスタMの時刻に対する時刻スレーブS1の時刻の差分ΔTM−1を算出する。時刻スレーブS1は、時刻スレーブS2より受信した最大時刻調整値ΔTmax2と、時刻調整値ΔT1−3の絶対値|ΔT1−3|と、時刻調整値ΔTM−1の絶対値|ΔTM−1|とを比較し、最も大きい絶対値(最大時刻調整値ΔTmax1)を選択する。最大時刻調整値ΔTmax1は次式(17)で与えられる。時刻スレーブS1は、最大時刻調整値ΔTmax1を時刻マスタMへ通知する。
ΔTmax1=Max{|ΔTM−1|,|ΔT1−3|,ΔTmax2} …(17)
ここで、式(16),(17)よると、最大時刻調整値ΔTmax1は次式(18)のように表わすことができる。
ΔTmax1=Max{|ΔT2−4|,|ΔT2−5|,|ΔT1−2|,|ΔT1−3|,|ΔTM−1|} …(18)
式(18)から分かるように、時刻マスタMには、時刻スレーブS1〜S5の時刻調整値ΔT2−4,ΔT2−5,ΔT1−2,ΔT1−3,ΔTM−1のうち絶対値が最も大きいものが、最大時刻調整値ΔTmax1として時刻マスタMに通知されることになる。
時刻マスタMは、最大時刻調整値ΔTmax1に基づいて、時刻スレーブS1〜S5の時刻同期が完了したか否かを判定する。時刻マスタMは、時刻同期が完了したか否かを判定するための閾値を、通信システム1において予め定められた許容時刻精度を最大パス数で除算した値に設定する。図22の例では最大パス数は3となる。したがって、閾値は許容時刻精度/3に設定される。
時刻マスタMは、最大時刻調整値ΔTmax1と上記閾値とを比較し、最大時刻調整値ΔTmax1が閾値より小さい場合、時刻スレーブS1〜S5の時刻同期が完了したと判定する。時刻マスタMは、時刻同期が完了したと判定されると、時刻スレーブS1〜S5の間で制御系データの伝送を開始する。一方、最大時刻調整値ΔTmax1が閾値より大きい場合、時刻マスタMは、時刻スレーブS1〜S5の時刻同期が完了していないと判定し、制御系データの伝送を開始しないこととする。
時刻マスタMは、また、データ伝送の実行中に、時刻マスタMに通知される最大時刻調整値ΔTmax1が閾値を超えた場合には、時刻マスタMと時刻スレーブS1〜S5との間の時刻同期が破綻したものと判断し、制御系データの伝送を停止する。これによると、図22に示す通信システム1におけるデータ伝送において、制御装置100は、複数のデバイス200の制御系データの送受信のタイミングを安定的に管理することができる。
図24は、図22に示される接続形態が適用された通信システム1の第1の構成例を模式的に示す図である。
図24に示す第1の構成例においては、通信システム1は、複数の制御装置100A,100Bと、複数のデバイス200A〜200Dとを備える。制御装置100Aに接続されるネットワーク2(フィールドネットワーク)には、デバイス200A,200Bがスター接続されており、制御装置100Bに接続されるネットワーク2には、デバイス200C,200Dがスター接続されている。制御装置100A,100Bの各々は、ネットワーク2内のデータ伝送を管理する制御マスタとして機能する。デバイス200A〜200Dの各々は、対応する制御装置100からの指令に従ってデータ伝送を行なう制御スレーブとして機能する。
制御装置100Aと制御装置100Bとは、ネットワーク3を介して接続される。ネットワーク3は、コントロールレベルのネットワークであり、制御装置100Aおよび100B間でデータを伝送できるリンクを構築する。ネットワーク2は、制御系に係る情報の伝送を主たる機能として提供する。
図24に示す第1の構成例においては、各ネットワーク2に接続される制御装置100と複数のデバイス200との間を時刻同期させるとともに、複数の制御装置100A〜100Dの間で時刻同期をとることにより、互いに異なる制御装置100に接続される複数のデバイス200A〜200Dを互いに時刻同期させる。これにより、互いに異なる制御装置100に接続される複数のデバイス200を連係して動作させることが可能となる。
図24に示す例においては、制御装置100A,100Bがそれぞれ有するタイマ101A,101Bのいずれかを、通信システム1全体のマスタクロック(時刻マスタM)として機能させる。一例として、図24では、制御装置100Aのタイマ101Aがマスタクロックに設定される。そして、残りの制御装置100Bおよび複数のデバイス200A〜200Dのタイマ(時刻スレーブS1〜S5に相当)を、この時刻マスタMのマスタクロックに時刻同期させる。
図24に示す構成例においても、P2Pトランスペアレントクロックを用いた時刻同期処理を実行することにより、時刻マスタMの有するマスタクロックに各時刻スレーブSの有するスレーブクロックを時刻同期させる。これにより、制御装置100A,100Bおよびデバイス200A〜200Dを互いに時刻同期させることができる。
各時刻スレーブSは、マスタ側に隣接して接続される他の通信装置との間で時刻同期処理を実行するとともに、自装置の時刻精度情報(自装置の時刻調整値)を、時刻マスタMである制御装置100Aに通知する。制御装置100Aは、各時刻スレーブSから通知される時刻同期情報に基づいて、全ての時刻スレーブS(制御装置100Bおよびデバイス200A〜200D)の時刻同期が完了したか否かを判定する。制御装置100Aは、時刻同期が完了したと判定されると、複数の時刻スレーブSの間で制御系データの伝送を開始する。
これによると、ネットワーク3に接続される制御装置100A,100Bの各々は、他の制御装置と互いに時刻同期されたタイマの時刻を基準として、ネットワーク2を介して複数のデバイス200との間のデータ伝送を管理することができる。したがって、制御装置100A,100Bの間で、入力データを収集するタイミングまたは出力データを送信するタイミングを互いに同期させることができる。また、制御装置100A,100Bの間でデータを遣り取りするタイミングを互いに同期させることができる。この結果、複数のデバイス200A〜200Dの間で制御タイミングを同期させることができるため、複数のデバイス200A〜200Dの協調制御を実現することができる。
図25は、図22に示される接続形態が適用された通信システム1の第2の構成例を模式的に示す図である。
図25に示す第2の構成例においては、通信システム1は、複数の制御装置100A〜100Dと、複数のデバイス200A〜200Jと、複数のスイッチ600A,600Bとを備える。
制御装置100Aに接続されるネットワーク2(フィールドネットワーク)には、デバイス200A,200Bがデイジーチェーンで順次接続されており、制御装置100Bに接続されるネットワーク2には、デバイス200C〜200Eがデイジーチェーンで順次接続されている。制御装置100Cに接続されるネットワーク2には、デバイス200F〜200Hがデイジーチェーンで順次接続されており、制御装置100Dに接続されるネットワーク2にはデバイス200I,200Jがデイジーチェーンで順次接続されている。
制御装置100A〜100Dの各々は、ネットワーク2内のデータ伝送を管理する制御マスタとして機能する。デバイス200A〜200Jの各々は、対応する制御装置100からの指令に従ってデータ伝送を行なう制御スレーブとして機能する。
制御装置100A,100Bは、ネットワーク3を介してスイッチ600Aに接続される。制御装置100C,100Dは、ネットワーク3を介してスイッチ600Bに接続される。スイッチ600Aとスイッチ600Bとは互いに接続されている。スイッチ600Aはタイマ601Aを有しており、スイッチ600Bはタイマ601Bを有している。
ネットワーク3は、コントロールレベルのネットワークであり、制御装置100A〜100D間でデータを伝送できるリンクを構築する。ネットワーク2は、制御系に係る情報の伝送を主たる機能として提供する。
図25に示す第2の構成例においては、各ネットワーク2に接続される制御装置100と複数のデバイス200との間を時刻同期させるとともに、複数の制御装置100A〜100Dおよび複数のスイッチ600A,600Bの間で時刻同期をとることにより、互いに異なる制御装置100に接続される複数のデバイス200A〜200Jを互いに時刻同期させる。これにより、互いに異なる制御装置100に接続される複数のデバイス200を連係して動作させることが可能となる。
図25に示す例においては、制御装置100A〜100Dおよびスイッチ600A,600Bがそれぞれ有するタイマ101A〜101D,601Aおよび601Bのいずれかを、通信システム1全体のマスタクロック(時刻マスタM)として機能させる。一例として、図25では、制御装置100Aのタイマ101Aがマスタクロックに設定される。そして、残りの制御装置100B〜100Dおよびスイッチ600A,600Bのタイマ(時刻スレーブS1〜S5に相当)を、この時刻マスタのマスタクロックに時刻同期させる。
図25に示す構成例においても、P2Pトランスペアレントクロックを用いた時刻同期処理を実行することにより、時刻マスタMの有するマスタクロックに各時刻スレーブS(制御装置100B〜100Dおよびスイッチ600A,600B)の有するスレーブクロックを時刻同期させる。これにより、制御装置100A〜100Dおよびスイッチ600A,600Bを互いに時刻同期させることができる。
上記時刻同期処理が完了すると、制御装置100A〜100Dの各々は、ネットワーク2を介して接続されるデバイス200との間で時刻同期処理を実行する。この時刻同期処理は、ネットワーク2に応じて、上述した時刻同期処理とは異なる時刻同期プロトコルが用いられる。例えば、マシンコントロール用ネットワークの一例であるEtherCAT(登録商標)が採用され得る。
第2の構成例においても、各時刻スレーブSは、マスタ側に隣接して接続される他の通信装置との間で時刻同期処理を実行するとともに、自装置の時刻精度情報(自装置の時刻調整値)を、時刻マスタMである制御装置100Aに通知する。制御装置100Aは、各時刻スレーブS(制御装置100B〜100Dおよびスイッチ600A,600B)から通知される時刻同期情報に基づいて、全ての時刻スレーブSの時刻同期が完了したか否かを判定する。制御装置100Aは、時刻同期が完了したと判定されると、複数の時刻スレーブSの間で制御系データの伝送を開始する。
これによると、ネットワーク3に接続される制御装置100A〜100Dの各々は、他の制御装置と互いに時刻同期されたタイマの時刻を基準として、ネットワーク2を介して複数のデバイス200との間のデータ伝送を管理することができる。したがって、制御装置100A〜100Dの間で、入力データを収集するタイミングまたは出力データを送信するタイミングを互いに同期させることができる。また、制御装置100A〜100Dの間でデータを遣り取りするタイミングを互いに同期させることができる。この結果、複数のデバイス200A〜200Jの間で制御タイミングを同期させることができるため、複数のデバイス200A〜200Jの協調制御を実現することができる。
<H.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
ネットワーク(2)に複数の通信装置(M,S1〜S3)が接続された通信システム(1)であって、
前記複数の通信装置は、
前記通信システムの時刻を管理するマスタクロックを有する時刻マスタ(M)と、
各々が、前記マスタクロックに時刻同期したスレーブクロックを有する複数の時刻スレーブ(S1〜S3)とを含み、
前記複数の時刻スレーブの各々は、
前記ネットワーク上においてマスタ側に隣接して接続される他の通信装置との間で時刻同期するための同期手段と、
前記同期手段で求められた自装置の時刻同期精度を示す時刻同期情報を前記時刻マスタへ通知するための通信手段とを含む、通信システム。
[構成2]
前記同期手段は、前記他の通信装置の時刻と自装置の時刻との差分を時刻調整値(ΔT)として、自装置の時刻を補正し、
前記通信手段は、前記時刻同期情報として、前記時刻調整値を前記時刻マスタへ通知する、構成1に記載の通信システム。
[構成3]
前記通信手段は、前記ネットワーク上においてスレーブ側に隣接して接続される別の他の通信装置から前記時刻調整値を受信し、受信した前記時刻調整値および自装置の前記時刻調整値のうち、その絶対値が大きい方の前記時刻調整値を前記他の通信装置へ転送する、構成2に記載の通信システム。
[構成4]
前記通信手段は、前記ネットワーク上においてスレーブ側に隣接して接続される別の他の通信装置から前記時刻調整値を受信し、受信した前記時刻調整値および自装置の前記時刻調整値を前記他の通信装置へ転送する、構成2に記載の通信システム。
[構成5]
前記通信手段は、前記ネットワーク上においてスレーブ側に隣接して接続される別の他の通信装置から前記時刻調整値を受信し、受信した前記時刻調整値と自装置の前記時刻調整値との合計値を前記他の通信装置へ転送する、構成2に記載の通信システム。
[構成6]
前記同期手段は、前記他の通信装置との間で時刻同期用パケットを遣り取りすることにより、自装置の時刻を補正する時刻同期処理を定期的に実行し、
前記通信手段は、前記他の通信装置へ送信する時刻同期用パケット内に、前記他の通信装置へ転送する前記時刻調整値を格納する、構成3から5のいずれか1に記載の通信システム。
[構成7]
前記時刻マスタは、前記ネットワーク内のデータ伝送を管理する制御装置であり、
前記複数の時刻スレーブの各々は、前記時刻マスタからの指令に従ってデータ伝送を実行するデバイスであり、
前記制御装置は、複数のデバイスから通知される前記時刻同期情報に基づいて、前記複数のデバイスとの間で時刻同期が完了したか否かを判定し、時刻同期が完了したと判定されたときに、前記ネットワーク内のデータ伝送を開始する、構成1から6のいずれか1に記載の通信システム。
[構成8]
前記複数の時刻スレーブのうちの1つの時刻スレーブは、前記ネットワーク内のデータ伝送を管理する制御装置であり、
前記1つの時刻スレーブを除いた残りの時刻スレーブおよび前記時刻マスタの各々は、前記制御装置からの指令に従ってデータ伝送を実行するデバイスであり、
前記時刻マスタは、前記複数の時刻スレーブから通知される前記時刻同期情報に基づいて、前記複数の時刻スレーブとの間で時刻同期が完了したか否かを判定し、判定結果を前記制御装置に通知し、
前記制御装置は、前記判定結果から時刻同期が完了したと判定されたときに、前記ネットワーク内のデータ伝送を開始する、構成1から6のいずれか1に記載の通信システム。
[構成9]
前記複数の時刻スレーブのうちの1つの時刻スレーブは、前記ネットワーク内のデータ伝送を管理する制御装置であり、
前記1つの時刻スレーブを除いた残りの時刻スレーブおよび前記時刻マスタの各々は、前記制御装置からの指令に従ってデータ伝送を実行するデバイスであり、
前記時刻マスタは、前記複数の時刻スレーブから通知される前記時刻同期情報を前記制御装置へ転送し、
前記制御装置は、前記同期情報に基づいて、複数のデバイスとの間で時刻同期が完了したか否かを判定し、時刻同期が完了したと判定されたときに、前記ネットワーク内のデータ伝送を開始する、構成1から6のいずれか1に記載の通信システム。
[構成10]
前記同期手段は、前記他の通信装置との間で時刻同期用パケットを遣り取りすることにより、自装置の時刻を補正する時刻同期処理を定期的に実行し、
前記通信手段は、前記時刻同期処理の実行後において、前記時刻同期情報を前記マスタ装置へ通知する、構成1または2に記載の通信システム。
[構成11]
通信システムにネットワーク接続される通信装置であって、前記通信装置は、前記通信システムの時刻を管理するマスタクロックに時刻同期したスレーブクロックを有し、
前記ネットワーク上においてマスタ側に隣接して接続される他の通信装置との間で時刻同期するための同期手段と、
前記同期手段で求められた自装置の時刻同期精度を示す時刻同期情報を、前記マスタクロックを有する時刻マスタへ通知するための通信手段とを含む、通信装置。
[構成12]
ネットワークに複数の通信装置が接続された通信システムにおける通信方法であって、
前記複数の通信装置は、
前記通信システムの時刻を管理するマスタクロックを有する時刻マスタと、
各々が、前記マスタクロックに時刻同期したスレーブクロックを有する複数の時刻スレーブとを含み、
前記複数の時刻スレーブの各々が、前記ネットワーク上においてマスタ側に隣接して接続される他の通信装置との間で時刻同期するステップと、
前記複数のスレーブ装置の各々が、自装置の時刻同期精度を示す時刻同期情報を前記時刻マスタへ通知するステップとを備える、通信方法。
<I.利点>
本実施の形態に従う通信システム1では、複数の時刻スレーブの各々は、自装置のスレーブクロックの時刻同期精度を示す時刻同期情報を時刻マスタへ通知するための「通信手段」を有する。これによると、時刻マスタは、各時刻スレーブから通知される時刻同期情報に基づいて、自装置と複数の時刻スレーブとの間の時刻同期が完了しているか否かを判断することができる。この結果、通信システム1全体において時刻同期が完了したタイミングで、データ伝送を開始することができる。したがって、電源投入後、設定時間が経過したタイミングでデータ伝送を開始する構成に比べて、より迅速にデータ伝送を開始することが可能となる。
また、データ伝送の実行中、時刻マスタは、各時刻スレーブから通知される時刻同期情報に基づいて、複数の時刻スレーブの各々の時刻同期精度を監視することができるため、いずれかの時刻スレーブとの間に時刻ずれが発生したときには直ちにデータの伝送を停止することができる。したがって、時刻ずれに依存して、時刻スレーブが入力データを取得する、および、出力データを出力するタイミングがばらつく可能性を回避することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。