(57)【特許請求の範囲】
【請求項１】
通信遅延を含む同期誤差が補正された共有時刻を、ネットワークを介して共有する第１通信装置と第２通信装置とを備える通信システムであって、
前記第１通信装置は、
ユーザによって設定された設定時刻を取得する取得手段と、
前記設定時刻を、前記第１通信装置のシステム時刻である第１システム時刻に設定する第１設定手段と、
前記共有時刻と前記設定時刻との時間差を示す時間差データを前記第２通信装置に送信する時間差データ送信手段と、を有し、
前記第２通信装置は、
前記時間差データを受信する時間差データ受信手段と、
前記共有時刻と、前記時間差データにより示される前記時間差と、の和を、前記第２通信装置のシステム時刻である第２システム時刻に設定する第２設定手段と、を有する、通信システム。
【請求項２】
前記第１設定手段は、前記共有時刻と前記時間差との和を前記第１システム時刻に設定する、
請求項１に記載の通信システム。
【請求項３】
前記第２設定手段は、前記共有時刻と、前記時間差データ受信手段によって受信された前記時間差データにより示される前記時間差と、の和を算出することによる前記第２システム時刻の補正を繰り返し実行する、
請求項２に記載の通信システム。
【請求項４】
前記第１通信装置及び前記第２通信装置のいずれか一方の通信装置にバスを介して接続される第３通信装置を備える通信システムであって、
前記第１通信装置及び前記第２通信装置のいずれか一方の通信装置は、システム時刻を示す時刻データを、前記バスを介して前記第３通信装置に送信する時刻データ送信手段、をさらに有し、
前記第３通信装置は、
前記時刻データを受信する時刻データ受信手段と、
前記時刻データにより示されるシステム時刻を、前記第３通信装置のシステム時刻である第３システム時刻に設定する第３設定手段と、を有し、
前記第３設定手段は、前記時刻データ受信手段によって受信された前記時刻データに基づいて、計時している前記第３システム時刻を補正する、
請求項１から３のいずれか一項に記載の通信システム。
【請求項５】
前記第３設定手段は、前記第３システム時刻を計時する速さを調整することにより、計時される前記第３システム時刻と、前記時刻データ受信手段によって将来において受信される前記時刻データにより示されるシステム時刻と、の偏差を減少させる、
請求項４に記載の通信システム。
【請求項６】
通信遅延を含む同期誤差が補正された共有時刻を、ネットワークを介して他の通信装置と共有する通信装置であって、
前記共有時刻とユーザによって設定された設定時刻との時間差を示す時間差データを前記他の通信装置から受信する時間差データ受信手段と、
前記共有時刻と、前記時間差データにより示される前記時間差と、の和を、通信装置のシステム時刻に設定する設定手段と、
を備える通信装置。
【請求項７】
通信遅延を含む同期誤差が補正された共有時刻を、ネットワークを介して第１通信装置と共有する第２通信装置を、
前記共有時刻とユーザによって設定された設定時刻との時間差を示す時間差データを前記第１通信装置から受信する時間差データ受信手段、
前記共有時刻と、前記時間差データにより示される前記時間差と、の和を、前記第２通信装置のシステム時刻に設定する設定手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信装置及びプログラムに関する。
【背景技術】
【０００２】
工場に代表される施設では、通信ネットワークを介して複数の機器を制御するシステムが運用されている。このようなシステムには、正確に複数の機器を協働させることが求められる。そこで、通信ネットワーク上の機器の時刻を同期するための技術が提案されている（例えば、特許文献１を参照）。【０００３】
特許文献１には、複数のコントローラが同期するための時刻を複数の方式から選択可能としたシステムが開示されている。第１の方式では、ＰＣ（パーソナルコンピュータ）からネットワークを介してコントローラへ時刻データが送信されることで時刻が同期される。第２の方式では、ＧＰＳ（Global Positioning System）の標準時刻データが、標準時刻レシーバから専用ケーブルを介してコントローラに取り込まれることで時刻が同期される。このシステムによれば、コントローラはそれぞれ、ＰＣからの時刻と、高精度な標準時刻と、を選択することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２７６９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
機器を制御するシステムのユーザが、当該システムを稼働させるための基準となるシステム時刻を設定したいという要望がある。例えば、ユーザが、システムの一時停止中にはシステム時刻の計時も停止させることを所望する場合、システム時刻とは異なる時刻にシステム時刻を合わせることを所望する場合、及び、システムを適切に管理するためにシステム時刻を過去の時刻に戻すことを所望する場合、に代表されるように、ユーザが必要に応じて時刻を任意に設定したいという要望がある。【０００６】
特許文献１の技術においては、ＧＰＳの標準時刻を変更することができないため、ユーザは任意の時刻をＰＣから設定することができる。しかしながら、ＰＣからの時刻は、標準時刻に比べて精度が低く、精度が求められる場合には、ユーザが時刻を設定する余地がなかった。このため、システムにおいて同期されて用いられる時刻の利便性を向上させる余地があった。【０００７】
本発明は、上記の事情に鑑みてなされたものであり、システムにおいて同期されて用いられる時刻の利便性を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の通信システムは、通信遅延を含む同期誤差が補正された共有時刻を、ネットワークを介して共有する第１通信装置と第２通信装置とを備える通信システムであって、第１通信装置は、ユーザによって設定された設定時刻を取得する取得手段と、設定時刻を、第１通信装置のシステム時刻である第１システム時刻に設定する第１設定手段と、共有時刻と設定時刻との時間差を示す時間差データを第２通信装置に送信する時間差データ送信手段と、を有し、第２通信装置は、時間差データを受信する時間差データ受信手段と、共有時刻と、時間差データにより示される時間差と、の和を、第２通信装置のシステム時刻である第２システム時刻に設定する第２設定手段と、を有する。
【発明の効果】
【０００９】
本発明によれば、第１通信装置と第２通信装置とは、ネットワークを介して共有時刻を共有し、第１通信装置は、ユーザによって設定された設定時刻を第１システム時刻に設定する第１設定手段と、時間差データを送信する時間差データ送信手段と、を有し、第２通信装置は、共有時刻と、時間差データにより示される時間差と、の和を第２システム時刻に設定する第２設定手段を有する。これにより、ユーザが必要に応じて設定時刻を任意に設定し、設定時刻に基づいて設定される第１通信装置の第１システム時刻と第２通信装置の第２システム時刻とが同期する。したがって、システムにおいて同期されて用いられる時刻の利便性を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る通信システムの構成を示す図
【図２】実施の形態に係るネットワークを介した時刻の同期について説明するための図
【図３】実施の形態に係るシステムバスを介した時刻の同期について説明するための図
【図４】実施の形態に係る通信装置のハードウェア構成を示す図
【図５】実施の形態に係る通信装置の機能的な構成を示す第１の図
【図６】実施の形態に係る設定値を含む情報の一例を示す図
【図７】実施の形態に係る通信装置の機能的な構成を示す第２の図
【図８】実施の形態に係る通信装置の機能的な構成を示す第３の図
【図９】実施の形態に係る第１処理を示すフローチャート
【図１０】実施の形態に係る共有時刻とシステム時刻との関係を示す図
【図１１】実施の形態に係るシステム時刻の計時について説明するための図
【図１２】実施の形態に係る第２処理を示すフローチャート
【図１３】実施の形態に係る第３処理を示すフローチャート
【図１４】実施の形態に係る計時の速さの調整について説明するための図
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態に係る通信システム１０００について、図面を参照しつつ詳細に説明する。なお、複数の装置が時刻を共有すること及び同期することは、複数の装置それぞれが有する時計を同期することを意味する。複数の装置それぞれが有する時計が同等の時刻を計時することで、この時刻が複数の装置において共有されていれば、複数の装置が時刻を同期することとなる。
【００１２】
実施の形態
本実施の形態に係る通信システム１０００は、工場に設置されるＦＡシステムの一部に相当する。通信システム１０００は、ＦＡシステムとしての生産システム、検査システム、加工システム、その他のシステムを構成する機器同士を、通信路を介して接続することで形成される。図１に示されるように、通信システム１０００は、時刻を設定するための設定装置１０１と、産業用の制御装置であるＰＬＣ（Programmable Logic Controller）１００，２００と、を有する。
【００１３】
設定装置１０１は、ユーザインタフェースを有するコンピュータ端末であって、例えば、ＩＰＣ（Industrial Personal Computer）又はタブレット型の端末である。設定装置１０１は、ＰＬＣ１００と伝送路１０２を介して接続される。伝送路１０２は、例えば、ＵＳＢ（Universal Serial Bus）に代表される通信線であってもよいし、無線の通信路であってもよい。
【００１４】
ＰＬＣ１００，２００は、不図示の機器を制御するために利用される。ＰＬＣ１００，２００を利用して制御される機器は、例えば、アクチュエータ又はロボットである。ＰＬＣ１００，２００は、ネットワーク４００を介して接続されて互いに通信する。ネットワーク４００は、フィールドネットワークに代表されるＦＡ（Factory Automation）ネットワークであってもよいし、他のネットワークであってもよい。
【００１５】
ＰＬＣ１００は、ネットワーク４００に接続される通信装置１０と、この通信装置１０にシステムバス４０１を介して接続される複数の通信装置３０と、を有する。通信装置１０は、ＰＬＣ１００を構成するネットワークユニット又は通信ユニットに相当し、通信装置３０はそれぞれ、例えば、ＣＰＵ（Central Processing Unit）ユニット、Ｉ／Ｏ（Input/Output）ユニット、Ａ／Ｄ（Analog/Digital）変換ユニット、その他のユニットに相当する。ただし、通信装置１０は、他のユニットであってもよい。例えば、通信装置１０は、ネットワーク４００に接続する機能を有するＣＰＵユニットであってもよい。通信装置１０，３０が協働することで、ＰＬＣ１００による制御処理が実現される。
【００１６】
ＰＬＣ２００は、ネットワーク４００に接続される通信装置２０と、この通信装置２０にシステムバス４０２を介して接続される複数の通信装置３０と、を有する。通信装置２０は、ＰＬＣ２００を構成するネットワークユニット又は通信ユニットに相当してもよいし、ネットワーク４００に接続する機能を有するＣＰＵユニットであってもよい。通信装置２０，３０が協働することで、ＰＬＣ２００による制御処理が実現される。
【００１７】
通信装置１０，２０は、ネットワーク４００を介して、図２に示されるように時刻を同期する。詳細には、通信装置１０は、通信装置２０と時刻同期プロトコルにより時刻を共有する。時刻同期プロトコルは、通信ネットワーク上の機器の時刻を高精度に同期するためのプロトコルである。このようなプロトコルの一例に、ＬＡＮ（Local Area Network）上の機器の時刻をナノ秒オーダで高精度に同期させるＩＥＥＥ８０２．１ＡＳが挙げられる。以下では、この時刻同期プロトコルを単に時刻同期プロトコルと表記する。時刻同期プロトコルによれば、グランドマスタが、ネットワーク経由で高精度な基準クロックを配信し、スレーブが基準クロックを定期的に受け取る。これにより、ネットワーク上の機器が時刻を高精度に同期することができる。
【００１８】
詳細には、グランドマスタとスレーブとの間でデータを往復させることで通信遅延が計測され、スレーブは、この通信遅延を補正した基準クロックを得る。また、グランドマスタは、基準クロックを数十マイクロ秒の短いサイクルタイムで繰り返し配信する。グランドマスタ及びスレーブは、以上により通信遅延が補正された時刻を共有する。さらに、時刻同期プロトコルでは、グランドマスタとスレーブとがそれぞれ管理する時刻が、後述の周波数偏差に代表されるようにズレた場合にも、このズレを基準クロックにより補正する。以上のように、時刻同期プロトコルにより、通信遅延を含む同期誤差が補正されて、時刻が同期する。
【００１９】
以下では、時刻同期プロトコルにより同期されて、装置間で共有される時刻を共有時刻と表記する。通信装置１０，２０それぞれによって管理される共有時刻は、ナノ秒オーダで高精度に同期する。換言すると、共有時刻の誤差の最大値は、例えば１ミリ秒、１００ナノ秒、又は１０ナノ秒である。
【００２０】
共有時刻は、通信システム１０００による制御処理において直接用いられることはなく、共有時刻とは異なるシステム時刻が、通信システム１０００が稼働するための基準となる。例えば、通信システム１０００を構成する装置が、ロギング処理を実行する際にシステム時刻を記録する。ただし、共有時刻は、システム時刻を得るための基準となる。詳細には、共有時刻から一定の時間差が加算された時刻がシステム時刻に相当する。この時間差は、正値、負値又はゼロであってもよい。
【００２１】
通信装置１０は、設定装置１０１に設定されたシステム時刻の設定値である設定時刻を受け付ける。この設定値は、例えば、システム時刻の一の時点を示す値と、この値を開始するトリガーと、を含むパラメータである。トリガーは、設定値が設定装置１０１又は通信装置１０によって取得されることであってもよいし、他のイベントであってもよいし、共有時刻を用いて指定されたタイミングであってもよい。そして、通信装置１０は、設定値により示されるシステム時刻と共有時刻との時間差を算出し、その後は、共有時刻と時間差との和としてシステム時刻を得る。また、通信装置１０は、算出した時間差を示すデータを通信装置２０に送信する。通信装置２０は、共有時刻と、通信装置１０から受信したデータにより示される時間差と、の和としてシステム時刻を得る。通信装置１０，２０がそれぞれ得るシステム時刻は、共有時刻と同等の精度で同期することとなる。
【００２２】
また、通信装置１０，３０は、システムバス４０１を介して、図３に示されるようにシステム時刻を共有する。詳細には、通信装置１０が、システム時刻の現在値を通信装置３０に繰り返し通知する。この通知は、周期的に実行され、通知の周期は、例えば、１ミリ秒、１００ミリ秒、又は１分である。通信装置３０は、第１の通知によりシステム時刻を得たときから、内蔵のクロック素子を用いてシステム時刻を計時する。その後、通信装置３０は、第２の通知により新たなシステム時刻を得ると、計時したシステム時刻と、通知されたシステム時刻とを比較して、これらのシステム時刻の差を時刻偏差として算出する。そして、通信装置３０は、算出した時刻偏差に基づいてシステム時刻を補正しつつ計時を続行する。より詳細には、通信装置３０は、計時の速さを調整することにより、第２の通知以降の将来の通知により得るシステム時刻と、続行して計時するシステム時刻と、の時刻偏差を減少させる。通信装置３０によって計時の速さが調整されたシステム時刻と、通信装置１０から通知されるシステム時刻とは、その時刻偏差が小さくなり、同期することとなる。
【００２３】
続いて、通信装置１０，２０，３０のハードウェア構成について、図４を参照して説明する。図４に示される通信装置４０は、通信装置１０，２０，３０の総称である。通信装置４０は、そのハードウェア構成として、プロセッサ４１と、主記憶部４２と、補助記憶部４３と、クロック部４４と、入力部４５と、出力部４６と、通信部４７と、を有する。主記憶部４２、補助記憶部４３、クロック部４４、入力部４５、出力部４６及び通信部４７はいずれも、内部バス４９を介してプロセッサ４１に接続される。
【００２４】
プロセッサ４１は、ＣＰＵ（Central Processing Unit）を含む。プロセッサ４１は、補助記憶部４３に記憶されるプログラムＰ１を実行することにより、通信装置４０の種々の機能を実現して、後述の処理を実行する。
【００２５】
主記憶部４２は、ＲＡＭ（Random Access Memory）を含む。主記憶部４２には、補助記憶部４３からプログラムＰ１がロードされる。そして、主記憶部４２は、プロセッサ４１の作業領域として用いられる。
【００２６】
補助記憶部４３は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）及びＨＤＤ（Hard Disk Drive）に代表される不揮発性メモリを含む。補助記憶部４３は、プログラムＰ１の他に、プロセッサ４１の処理に用いられる種々のデータを記憶する。補助記憶部４３は、プロセッサ４１の指示に従って、プロセッサ４１によって利用されるデータをプロセッサ４１に供給し、プロセッサ４１から供給されたデータを記憶する。
【００２７】
クロック部４４は、水晶振動子を有するクロック発生回路を含む。クロック部４４は、水晶振動子の発振回数に基づいてクロック信号を生成して出力する。クロック信号は、クロックパルスを含み、例えばプロセッサ４１がクロックパルスの立ち上がり回数をカウントすることで時刻を計時するために利用される。
【００２８】
入力部４５は、入力キー及びポインティングデバイスに代表される入力デバイスを含む。入力部４５は、通信装置４０のユーザによって入力された情報を取得して、取得した情報をプロセッサ４１に通知する。
【００２９】
出力部４６は、ＬＣＤ（Liquid Crystal Display）及びスピーカに代表される出力デバイスを含む。出力部４６は、プロセッサ４１の指示に従って、種々の情報をユーザに提示する。
【００３０】
通信部４７は、外部の装置と通信するためのネットワークインタフェース回路を含む。通信部４７は、外部から信号を受信して、この信号により示されるデータをプロセッサ４１へ出力する。また、通信部４７は、プロセッサ４１から出力されたデータを示す信号を外部の装置へ送信する。なお、図４では、１つの通信部４７が代表として示されているが、通信装置１０は、伝送路１０２に接続するための通信部４７と、ネットワーク４００に接続するための通信部４７と、システムバス４０１に接続するための通信部４７と、を個別に有してもよいし、通信装置２０は、ネットワーク４００に接続するための通信部４７と、システムバス４０２に接続するための通信部４７と、を個別に有してもよい。
【００３１】
図４に示されるハードウェア構成が協働することで、通信装置４０は、種々の機能を発揮する。詳細には、通信装置１０は、図５に示されるように、その機能として、設定装置１０１から伝送路１０２を介して設定時刻を取得する設定時刻取得部１１と、設定時刻と共有時刻との時間差を算出する時間差算出部１２と、種々のデータを記憶する記憶部１３と、時間差を示す時間差データ１３１をネットワークＩ／Ｆ（Interface）１９１を介してネットワーク４００へ送信する時間差データ送信部１４と、ネットワーク４００を介して通信装置２０と共有時刻を同期させるための同期部１５と、共有時刻と時間差との和をシステム時刻に設定してシステム時刻を計時する設定部１６と、システム時刻を利用した制御処理を実行する制御部１７と、システム時刻を示すシステム時刻データ１３３をシステムバスＩ／Ｆ１９２を介してシステムバス４０１へ送信する時刻データ送信部１８と、ネットワーク４００を介して通信するためのネットワークＩ／Ｆ１９１と、システムバス４０１を介して通信するためのシステムバスＩ／Ｆ１９２と、を有する。
【００３２】
設定時刻取得部１１は、主として通信装置１０のプロセッサ４１及び通信部４７との協働により実現される。設定時刻取得部１１は、通信装置１０においてユーザによって設定された設定時刻を取得する取得手段の一例である。設定時刻取得部１１は、設定時刻を示す設定情報を、伝送路１０２を介して設定装置１０１から取得する。この設定情報は、例えば図６に示されるように、システム時刻の設定値と、この設定値を適用するタイミングを示すトリガーと、を関連付ける情報である。図６におけるトリガーは、設定値を現在時刻として即座に適用することを示している。なお、設定時刻取得部１１によって取得される情報からは、トリガーが省略されてもよい。トリガーが省略される場合には、設定時刻を適用するタイミングが予め規定される。予め規定されるタイミングは、例えば現在時刻、すなわち即時である。図５に戻り、設定時刻取得部１１は、取得した設定時刻を示す情報を時間差算出部１２に送出する。
【００３３】
時間差算出部１２は、主として通信装置１０のプロセッサ４１により実現される。時間差算出部１２は、設定時刻取得部１１から送出された設定時刻を示す情報を取得するとともに、共有時刻を示す共有時刻データ１３２を記憶部１３から読み出して、この設定時刻が適用されるタイミングにおける、この設定時刻と共有時刻との時間差を算出する。換言すると、時間差算出部１２は、設定時刻から共有時刻を減じて得る差を時間差として算出する。図６に示される情報が設定時刻取得部１１によって取得された場合には、時間差算出部１２は、即座に、記憶部１３から共有時刻を読み出して、設定時刻から共有時刻を減算する。この場合において、例えば、「２０１８年１２月２５日１５時４０分４５．６７８秒」という共有時刻が読み出されたときには、読み出した時刻を図６中の「２０１８年１２月２５日１５時４０分５０．７８９秒」から減算することで「５．１１１秒」すなわち５１１１ミリ秒という時間差が算出される。そして、時間差算出部１２は、算出した時間差を示す時間差データ１３１を記憶部１３に書き込む。なお、設定値が適用されるタイミングが現在時刻とは異なる場合には、このタイミングにおいて時間差の算出及び時間差データの書き込みが実行されればよい。また、このタイミングが演算可能な時刻であれば、このタイミングにおける共有時刻を算出することで時間差を得てもよい。
【００３４】
記憶部１３は、主として通信装置１０のプロセッサ４１を構成するレジスタ、主記憶部４２、及び補助記憶部４３のうち少なくとも１つにより実現される。記憶部１３は、時間差データ１３１と、共有時刻の現在値を示す共有時刻データ１３２と、システム時刻の現在値を示すシステム時刻データ１３３と、を記憶する。共有時刻データ１３２は、同期部１５によって更新され、システム時刻データ１３３は、設定部１６によって更新される。
【００３５】
時間差データ送信部１４は、主として通信装置１０のプロセッサ４１により実現される。時間差データ送信部１４は、通信装置１０において共有時刻と設定時刻との時間差を示す時間差データ１３１を通信装置２０に送信する時間差データ送信手段の一例である。時間差データ送信部１４は、時間差データ１３１が記憶部１３に書き込まれると、記憶部１３から時間差データ１３１を読み出して、ネットワークＩ／Ｆ１９１及びネットワーク４００を介して時間差データ１３１を通信装置２０へ送信する。
【００３６】
同期部１５は、主として通信装置１０のプロセッサ４１及びクロック部４４の協働により実現される。同期部１５は、ネットワークＩ／Ｆ１９１及びネットワーク４００を介して通信装置２０と共有時刻を同期する。同期部１５による同期は、時刻同期プロトコルに従ってなされるが、これに限定されず、他の時刻同期プロトコルに従ってなされてもよい。また、時刻同期プロトコルに従う同期部１５を有する通信装置１０は、グランドマスタに相当してもよいし、スレーブに相当してもよい。そして、同期部１５は、記憶部１３に格納されている共有時刻データ１３２を、現在値を示すものに更新する。
【００３７】
設定部１６は、主として通信装置１０のプロセッサ４１及びクロック部４４の協働により実現される。設定部１６は、設定時刻を通信装置１０のシステム時刻に設定する第１設定手段の一例である。設定部１６は、記憶部１３から共有時刻データ１３２及び時間差データ１３１を読み出して、共有時刻データ１３２により示される共有時刻と、時間差データ１３１により示される時間差と、の和を算出することにより、システム時刻を設定する。詳細には、設定部１６は、共有時刻と時間差とを定期的に読み込んで加算して、記憶部１３に格納されているシステム時刻データ１３３を、加算により得た値を示すものに更新する。なお、システム時刻を得るための加算に伴う演算負荷を考慮して、加算を実行する周期が定められる。この周期は、例えば、１０ミリ秒、又は１秒である。そして、この周期内では、設定部１６は、クロック部４４のクロックパルスのカウントに基づいてシステム時刻データ１３３を更新する。
【００３８】
制御部１７は、主として通信装置１０のプロセッサ４１によって実現される。制御部１７は、記憶部１３からシステム時刻データ１３３を読み出して、システム時刻を利用した種々の処理を実行する。例えば、制御部１７は、システム時刻と関連付けたイベント種別を示すレコードを逐次記録するロギング処理を実行してもよいし、システム時刻が予め定められた値となるまで待機してから予定された処理を実行してもよい。
【００３９】
時刻データ送信部１８は、主として通信装置１０のプロセッサ４１によって実現される。時刻データ送信部１８は、システム時刻を示す時刻データを、システムバス４０１を介して通信装置３０に繰り返し送信する時刻データ送信手段の一例である。時刻データ送信部１８は、記憶部１３に格納されているシステム時刻データ１３３を監視して、システム時刻データ１３３により示される時刻に基づいて定期的に、システム時刻の現在値を示すシステム時刻データ１３３を、システムバスＩ／Ｆ１９２及びシステムバス４０１を介して通信装置３０へ送信する。この送信の周期は、設定部１６による加算の周期と同等であってもよいし、異なってもよい。
【００４０】
ネットワークＩ／Ｆ１９１及びシステムバスＩ／Ｆ１９２は、主として通信装置１０の通信部４７によって実現される。
【００４１】
続いて、通信装置２０の機能的な構成について、図７を参照して説明する。通信装置２０は、通信装置１０の一部の機能と同等の機能を有するが、通信装置１０から時間差を取得する構成を備える点で通信装置１０とは異なっている。詳細には、通信装置２０は、図７に示されるように、種々のデータを記憶する記憶部２３と、通信装置１０から時間差データ１３１を受信する時間差データ受信部２４と、ネットワーク４００を介して通信装置１０と共有時刻を同期させるための同期部２５と、共有時刻と時間差との和をシステム時刻に設定する設定部２６と、システム時刻を利用した制御処理を実行する制御部２７と、システム時刻を示すシステム時刻データ２３３をシステムバスＩ／Ｆ２９２を介してシステムバス４０２へ送信する時刻データ送信部２８と、ネットワーク４００を介して通信するためのネットワークＩ／Ｆ２９１と、システムバス４０２を介して通信するためのシステムバスＩ／Ｆ２９２と、を有する。
【００４２】
記憶部２３は、主として通信装置２０のプロセッサ４１を構成するレジスタ、主記憶部４２、及び補助記憶部４３のうち少なくとも１つにより実現される。記憶部２３は、時間差データ２３１と、共有時刻の現在値を示す共有時刻データ２３２と、システム時刻の現在値を示すシステム時刻データ２３３と、を記憶する。共有時刻データ２３２は、同期部２５によって更新され、システム時刻データ２３３は、設定部２６によって更新される。
【００４３】
時間差データ受信部２４は、主として通信装置２０のプロセッサ４１によって実現される。時間差データ受信部２４は、通信装置２０において、通信装置１０から送信された時間差データ１３１を受信する時間差データ受信手段の一例である。時間差データ受信部２４は、通信装置１０からの時間差データ１３１を、ネットワーク４００及びネットワークＩ／Ｆ２９１を介して受信すると、この時間差データ１３１を記憶部２３に時間差データ２３１として書き込む。
【００４４】
同期部２５は、主として通信装置２０のプロセッサ４１及びクロック部４４の協働により実現される。同期部２５は、通信装置１０との時刻同期プロトコルに従った通信により共有時刻を通信装置１０との間で同期する。同期部２５を有する通信装置２０は、グランドマスタに相当してもよいし、スレーブに相当してもよい。なお、通信装置１０，２０の双方がスレーブに相当してもよい。そして、同期部２５は、記憶部２３に格納されている共有時刻データ２３２を、現在値を示すものに更新する。
【００４５】
設定部２６は、主として通信装置２０のプロセッサ４１及びクロック部４４の協働により実現される。設定部２６は、通信装置２０において、共有時刻と、時間差データ受信部２４によって受信された時間差データ１３１により示される時間差と、の和を通信装置２０のシステム時刻に設定する第２設定手段の一例である。設定部２６は、通信装置１０の設定部１６と同様に、記憶部２３から共有時刻データ２３２及び時間差データ２３１を読み出して、共有時刻データ２３２により示される共有時刻と、時間差データ２３１により示される時間差と、の和を算出することにより、システム時刻を設定する。設定部２６は、時間差データ２３１を一旦取得すると、共有時刻データ２３２を監視して、記憶部２３に格納されているシステム時刻データ２３３を、共有時刻の現在値に時間差を加算して得る値を示すものに更新する。
【００４６】
制御部２７は、主として通信装置２０のプロセッサ４１によって実現される。制御部２７は、記憶部２３からシステム時刻データ２３３を読み出して、システム時刻を利用した種々の処理を実行する。
【００４７】
時刻データ送信部２８は、主として通信装置２０のプロセッサ４１によって実現される。時刻データ送信部２８は、システム時刻を示す時刻データを、システムバス４０２を介して通信装置３０に繰り返し送信する時刻データ送信手段の一例である。時刻データ送信部２８は、通信装置１０の時刻データ送信部１８と同様に、記憶部２３に格納されているシステム時刻データ２３３を監視して、システム時刻データ２３３により示される時刻に基づいて定期的に、システム時刻の現在値を示すシステム時刻データ２３３を、システムバスＩ／Ｆ２９２及びシステムバス４０２を介して通信装置３０へ送信する。
【００４８】
ネットワークＩ／Ｆ２９１及びシステムバスＩ／Ｆ２９２は、主として通信装置２０の通信部４７によって実現される。
【００４９】
続いて、通信装置３０の機能的な構成について図８を参照して説明する。通信装置１０と共にＰＬＣ１００を構成する通信装置３０は、通信装置２０と共にＰＬＣ２００を構成する通信装置３０と同等の構成を有する。以下では、ＰＬＣ１００を構成する通信装置３０を例として、その構成について説明する。
【００５０】
通信装置３０は、共有時刻を同期するための構成、及び、時間差に基づいてシステム時刻を得るための構成を有しない。通信装置３０は、通信装置１０から定期的に通知されるシステム時刻に基づいて、内蔵のクロック素子を利用してシステム時刻を計時する。通信装置３０は、図８に示されるように、システム時刻を設定する設定部３１と、種々のデータを記憶する記憶部３３と、通信装置１０からシステム時刻データ１３３を受信する時刻データ受信部３４と、システム時刻を利用した制御処理を実行する制御部３７と、システムバス４０１を介して通信するためのシステムバスＩ／Ｆ３９と、を有する。
【００５１】
設定部３１は、主として通信装置３０のプロセッサ４１及びクロック部４４の協働により実現される。設定部３１は、通信装置３０において、時刻データ受信部３４によって受信されたシステム時刻データ１３３により示されるシステム時刻を、通信装置３０自体が管理するシステム時刻に設定する第３設定手段の一例である。設定部３１は、時刻データ受信部３４によって記憶部３３のシステム時刻データ３３３が更新されると、クロック信号のクロックパルスをカウントすることでシステム時刻を計時し、システム時刻データ３３３を、カウント結果に基づく現在時刻を示すデータに更新する。
【００５２】
ここで、通信装置３０のクロック部４４によって生成されるクロック信号が正確であれば、設定部３１は、正確なシステム時刻を計時することができる。しかしながら、水晶振動子の発振周波数にはわずかな誤差があり、通信装置３０の水晶振動子と他の装置の水晶振動子との間には、周波数偏差が生じ得る。このため、設定部３１がクロックパルスのカウントによりシステム時刻の計時を開始してから、新たに通信装置１０からシステム時刻の現在値が通知された時点において、設定部３１が計時しているシステム時刻と、通知されたシステム時刻と、の間には、時刻偏差が生じ得る。
【００５３】
設定部３１は、受信した時刻データに基づいて、計時しているシステム時刻を補正して、このような時刻偏差を減少させる。詳細には、設定部３１は、時刻偏差を減少させるために設定部３１による計時の速さを調整する調整部３１１を有する。調整部３１１は、設定部３１が計時したシステム時刻の値と、通信装置１０から通知されたシステム時刻の現在値と、を比較する。より詳細には、調整部３１１は、計時されたシステム時刻の値から、通知されたシステム時刻の現在値を減じて得た時刻偏差を算出する。調整部３１１は、この時刻偏差を示す時刻偏差データ３３４を記憶部３３に格納する。そして、調整部３１１は、時刻偏差データ３３４に基づいて、計時の速さを調整して、次回のシステム時刻が通知される際における時刻偏差を極力小さくする。
【００５４】
記憶部３３は、主として通信装置３０のプロセッサ４１を構成するレジスタ、主記憶部４２、及び補助記憶部４３のうち少なくとも１つにより実現される。記憶部３３は、システム時刻の現在値を示すシステム時刻データ３３３と、時刻偏差を示す時刻偏差データ３３４と、を記憶する。システム時刻データ３３３は、設定部３１によって更新され、時刻偏差データ３３４は、時刻データ受信部３４によって更新されて調整部３１１によって利用される。
【００５５】
時刻データ受信部３４は、主として通信装置３０のプロセッサ４１によって実現される。時刻データ受信部３４は、通信装置３０において、通信装置１０からシステム時刻データ１３３を受信する時刻データ受信手段の一例である。時刻データ受信部３４は、通信装置１０からシステムバス４０１及びシステムバスＩ／Ｆ３９を介して受信したシステム時刻データ１３３を、システム時刻データ３３３として記憶部３３に書き込む。
【００５６】
制御部３７は、主として通信装置３０のプロセッサ４１によって実現される。制御部３７は、記憶部３３からシステム時刻データ２３３を読み出して、システム時刻を利用した種々の処理を実行する。システムバスＩ／Ｆ３９は、主として通信装置３０の通信部４７によって実現される。
【００５７】
続いて、通信装置１０によって実行される第１処理、通信装置２０によって実行される第２処理、及び、通信装置３０によって実行される第３処理について、順に説明する。
【００５８】
図９に示される第１処理は、通信装置１０の電源が投入されることで開始する。なお、第１処理は、同期部１５による共有時刻の同期処理とは並列に実行される。第１処理では、通信装置１０は、設定装置１０１から設定時刻を取得したか否かを判定する（ステップＳ１１）。具体的には、設定時刻取得部１１が、システム時刻の設定値を設定装置１０１から取得したか否かを判定する。
【００５９】
設定時刻を取得していないと判定した場合（ステップＳ１１；Ｎｏ）、通信装置１０は、ステップＳ１１の判定を繰り返して、設定時刻を取得するまで待機する。一方、設定時刻を取得したと判定した場合（ステップＳ１１；Ｙｅｓ）、通信装置１０は、共有時刻と設定時刻との時間差を算出して、時間差データ１３１を記憶する（ステップＳ１２）。具体的には、時間差算出部１２が、ステップＳ１１にて取得したと判定された設定時刻により示されるシステム時刻から共有時刻を減算し、この減算により得た時間差を示す時間差データ１３１を記憶部１３に格納する。
【００６０】
図１０には、共有時刻とシステム時刻との関係が示されている。図１０において横軸は、実際の経過時間である実時間に対応し、縦軸は、共有時刻及びシステム時刻の計時された時刻に対応する。実線で示される線Ｌ１は、共有時刻の推移を示し、破線で示される線Ｌ２は、システム時刻の推移を示す。図１０に示されるように、システム時刻と共有時刻との時間差５１は、常に一定の値である。
【００６１】
図９に戻り、ステップＳ１２に続いて、通信装置１０は、ネットワーク４００を介して時間差データ１３１を送信する（ステップＳ１３）。具体的には、時間差データ送信部１４が、ステップＳ１２にて算出された時間差を示す時間差データ１３１を通信装置２０へ送信する。
【００６２】
次に、通信装置１０は、共有時刻の現在値と時間差とからシステム時刻の現在値を算出して、システム時刻を更新する（ステップＳ１４）。具体的には、設定部１６が、共有時刻とステップＳ１２にて算出された時間差との和としてシステム時刻の最新の値を演算して、演算結果である最新の値で記憶部１３のシステム時刻データ１３３を更新する。
【００６３】
次に、通信装置１０は、システムバス４０１を介してシステム時刻を通知する（ステップＳ１５）。具体的には、時刻データ送信部１８が、ステップＳ１４にて更新されたシステム時刻を示すシステム時刻データ１３３を通信装置３０へ送信する。
【００６４】
次に、通信装置１０は、共有時刻の現在値が同期部１５により補正されたか否かを判定する（ステップＳ１６）。具体的には、同期部１５が、グランドマスタが基準クロックを配信することによって共有時刻データ１３２が更新されたか否かを判定する。
【００６５】
共有時刻の現在値が同期部１５により補正されたと判定した場合（ステップＳ１６；Ｙｅｓ）、通信装置１０は、ステップＳ１４以降の処理を繰り返す。これにより、共有時刻が補正された直後には、補正された共有時刻に基づいてシステム時刻が更新される。一方、共有時刻の現在値が同期部１５により補正されてはいないと判定した場合（ステップＳ１６；Ｎｏ）、通信装置１０は、クロック信号に基づいてシステム時刻を更新しながら一定時間待機する（ステップＳ１７）。具体的には、設定部１６が、クロック部４４を利用してシステム時刻を更新する。
【００６６】
次に、通信装置１０は、設定装置１０１から新たな設定時刻を取得したか否かを判定する（ステップＳ１８）。具体的には、設定時刻取得部１１が、システム時刻の新たな設定値が設定装置１０１から送信されたか否かを判定する。
【００６７】
設定装置１０１から新たな設定時刻を取得していないと判定した場合（ステップＳ１８；Ｎｏ）、通信装置１０は、ステップＳ１４以降の処理を繰り返す。これにより、ステップＳ１４におけるシステム時刻の算出、及びステップＳ１５におけるシステム時刻の通知が、ステップＳ１７で待機した一定時間に等しい周期で繰り返し実行される。
【００６８】
ここで、ステップＳ１７におけるシステム時刻の更新は、クロックパルスのカウント結果に基づいて行われる。しかしながら、このクロックパルスを生成するための水晶振動子の発振周期には、上述したように周波数偏差が含まれ得る。このため、ステップＳ１７において更新されるシステム時刻は、図１０に示されるように共有時刻から常に一定の時間差５１だけズレた時刻になるとは限らず、図１１中の線Ｌ３，Ｌ４に示されるように、共有時刻に対応する線Ｌ１とは異なる速さで計時され得る。しかしながら、ステップＳ１４におけるシステム時刻の更新が、図１１中のタイミングＴ１，Ｔ２，Ｔ３のように定期的に実行されるため、システム時刻と共有時刻との時間差が、このタイミングで補正され、当初の値から大きく離れることがない。これにより、システム時刻の精度をある程度高く保つことができる。
【００６９】
図９に戻り、ステップＳ１８にて、設定装置１０１から新たな設定時刻を取得したと判定した場合（ステップＳ１８；Ｙｅｓ）、通信装置１０は、ステップＳ１２以降の処理を繰り返す。これにより、新たな設定値に基づく時間差でシステム時刻の更新が再度実行される。
【００７０】
続いて、通信装置２０による第２処理について、図１２を参照して説明する。図１２に示される第２処理は、通信装置２０の電源が投入されることで開始する。なお、第２処理は、同期部２５による共有時刻の同期処理とは並列に実行される。第２処理では、通信装置２０は、ネットワーク４００を介して時間差データ１３１を受信したか否かを判定する（ステップＳ２１）。具体的には、時間差データ受信部２４が、通信装置１０から送信された時間差データ１３１を、ネットワーク４００を介して受信したか否かを判定する。
【００７１】
時間差データ１３１を受信していないと判定した場合（ステップＳ２１；Ｎｏ）、通信装置２０は、ステップＳ２１の判定を繰り返して、時間差データ１３１を受信するまで待機する。一方、時間差データ１３１を受信したと判定した場合（ステップＳ２１；Ｙｅｓ）、通信装置２０は、時間差データ１３１を記憶する（ステップＳ２２）。具体的には、時間差データ受信部２４が、ステップＳ２１にて取得したと判定された時間差データ１３１を、時間差データ２３１として記憶部１３に格納する。
【００７２】
次に、通信装置２０は、共有時刻の現在値と時間差とからシステム時刻の現在値を算出して、システム時刻を更新する（ステップＳ２３）。具体的には、設定部２６が、共有時刻とステップＳ２２にて記憶された時間差との和としてシステム時刻の最新の値を演算して、演算結果である最新の値で記憶部２３のシステム時刻データ２３３を更新する。
【００７３】
次に、通信装置２０は、システムバス４０２を介してシステム時刻を通知する（ステップＳ２４）。具体的には、時刻データ送信部２８が、ステップＳ２３にて更新されたシステム時刻を示すシステム時刻データ２３３を通信装置３０へ送信する。
【００７４】
次に、通信装置２０は、共有時刻の現在値が同期部２５により補正されたか否かを判定する（ステップＳ２５）。具体的には、同期部２５が、グランドマスタが基準クロックを配信することによって共有時刻データ１３２が更新されたか否かを判定する。
【００７５】
共有時刻の現在値が同期部２５により補正されたと判定した場合（ステップＳ２５；Ｙｅｓ）、通信装置２０は、ステップＳ２３以降の処理を繰り返す。一方、共有時刻の現在値が同期部２５により補正されてはいないと判定した場合（ステップＳ２５；Ｎｏ）、通信装置２０は、クロック信号に基づいてシステム時刻を更新しながら一定時間待機する（ステップＳ２６）。具体的には、設定部２６が、クロック部４４を利用してシステム時刻を更新する。
【００７６】
次に、通信装置２０は、通信装置１０から時間差データ１３１を新たに受信したか否かを判定する（ステップＳ２７）。具体的には、時間差データ受信部２４が、新たな時間差を示す時間差データ１３１が通信装置１０から送信されたか否かを判定する。
【００７７】
時間差データ１３１を新たに受信していないと判定した場合（ステップＳ２７；Ｎｏ）、通信装置２０は、ステップＳ２３以降の処理を繰り返す。このため、ステップＳ２３におけるシステム時刻の算出、及びステップＳ２４におけるシステム時刻の通知が、ステップＳ２６で待機した一定時間に等しい周期で繰り返し実行される。これにより、図１１に示されるように、システム時刻が繰り返し補正されて、システム時刻の精度をある程度高く保つことができる。
【００７８】
一方、時間差データ１３１を新たに受信したと判定した場合（ステップＳ２７；Ｙｅｓ）、通信装置２０は、ステップＳ２２以降の処理を繰り返す。これにより、新たな時間差でシステム時刻の更新が再度実行される。
【００７９】
続いて、通信装置３０による第３処理について、図１３を参照して説明する。図１３に示される第３処理は、ＰＬＣ１００を構成する通信装置３０によって実行される。なお、ＰＬＣ２００を構成する通信装置３０は、第３処理と同等の処理を実行する。第３処理は、通信装置３０の電源が投入されることで開始する。
【００８０】
第３処理では、通信装置３０は、システムバス４０１を介してシステム時刻が通知されたか否かを判定する（ステップＳ３１）。具体的には、時刻データ受信部３４が、システム時刻の現在値を示すシステム時刻データ１３３を通信装置１０から受信したか否かを判定する。
【００８１】
システム時刻が通知されていないと判定した場合（ステップＳ３１；Ｎｏ）、通信装置３０は、ステップＳ３１の判定を繰り返して、システム時刻が通知されるまで待機する。一方、システム時刻が通知されたと判定した場合（ステップＳ３１；Ｙｅｓ）、通信装置３０は、システム時刻データ３３３を記憶する（ステップＳ３２）。具体的には、時刻データ受信部３４が、ステップＳ３１にて通知されたと判定されたシステム時刻を示すシステム時刻データ３３３を記憶部３３に格納する。
【００８２】
次に、通信装置３０は、時刻偏差データ３３４を用いてシステム時刻の現在値を更新する（ステップＳ３３）。具体的には、設定部３１が、時刻偏差データ３３４に基づいてクロックパルスをカウントし、このカウント結果に基づいてシステム時刻データ３３３をシステム時刻の現在値を示すものに更新する。ただし、ステップＳ３３が初めて実行されるときには、時刻偏差データ３３４が実質的な情報を含まない初期データとされているため、設定部３１は、クロックパルスを単純にカウントした結果に基づいてシステム時刻データ３３３を更新する。このときには、調整部３１１による計時の速さの調整は実質的に実行されない。
【００８３】
次に、通信装置３０は、新たにシステム時刻が通知されたか否かを判定する（ステップＳ３４）。システム時刻が通知されていないと判定した場合（ステップＳ３４；Ｎｏ）、通信装置３０は、ステップＳ３３以降の処理を繰り返す。これにより、クロック信号に基づいてシステム時刻データ３３３が更新される。
【００８４】
一方、システム時刻が通知されたと判定した場合（ステップＳ３４；Ｙｅｓ）、通信装置３０は、自機が管理するシステム時刻の現在値と、通知されたシステム時刻との差から時刻偏差データ３３４を生成して記憶する（ステップＳ３５）。具体的には、時刻データ受信部３４が、記憶部３３に格納されているシステム時刻データ３３３の値と、新たに通知されたシステム時刻の値とを比較して、それらの時刻の差を示す時刻偏差データ３３４を記憶部３３に格納する。時刻偏差データ３３４は、単に時刻の偏差とともにシステム時刻が通知される周期を関連付けた情報であってもよいし、この偏差を周期で除した値を示す情報であってもよいし、調整部３１１が計時の速さを調整するために必要な情報を示す他の情報であってもよい。
【００８５】
次に、通信装置３０は、ステップＳ３２以降の処理を繰り返す。これにより、ステップＳ３３が再度実行される際には、クロックパルスをカウントする速さが、調整部３１１によって調整される。
【００８６】
図１４には、調整部３１１による計時の速さの調整の具体例が模式的に示されている。図１４中の実線で示される線Ｌ３１は、通信装置１０によって計時されているシステム時刻であり、この線Ｌ３１のうち、定期的なサンプル値が通信装置３０に通知される。また、線Ｌ３２は、通信装置３０の設定部３１がクロックパルスをカウントした結果を示す。線Ｌ３１，Ｌ３２を比較するとわかるように、線Ｌ３２は、３回のカウント毎に１カウントずつ線Ｌ３１とズレている。このため、実時間が経過するほど、周波数偏差に起因する時刻の偏差が拡大する。
【００８７】
調整部３１１は、このような偏差が生じないように、計時の速さを調整する。図１４の例では、調整部３１１は、クロックパルスが３回現れるたびに、このクロックパルスのカウントをスキップする。これにより、調整部３１１による調整後のカウント結果は、通信装置１０から通知されるべきシステム時刻とほぼ一致することとなる。
【００８８】
以上、説明したように、通信装置１０，２０は、ネットワーク４００を介して共有時刻を同期し、通信装置１０は、ユーザによって設定された設定時刻をシステム時刻に設定する設定部１６と、時間差データ１３１を送信する時間差データ送信部１４と、を有し、通信装置２０は、共有時刻と、時間差データ２３１により示される時間差と、の和をシステム時刻に設定する設定部２６を有する。これにより、ユーザが必要に応じてシステム時刻を任意に設定し、設定されたシステム時刻が通信装置１０，２０で同期される。したがって、システムにおいて同期されて用いられる時刻の利便性を向上させることができる。
【００８９】
また、通信装置１０，２０との間では時間差データ１３１が伝送され、共有時刻の同期に必要なデータを除いて、現在時刻を示すようなデータは伝送されない。このため、共有時刻の同期が達成されていれば、通信遅延に起因する同期誤差が生じない。したがって、システム時刻を高精度に同期することができる。
【００９０】
また、通信装置１０は、設定時刻からシステム時刻を直接的に得ることなく、一旦時間差を算出してから、この時間差と共有時刻の和としてシステム時刻を得た。すなわち、通信装置１０が共有時刻を利用することなく、システム時刻の設定時刻のみに基づいてシステム時刻を計時するような場合も考えられる。しかしながら、本実施の形態に係る通信装置１０は、システム時刻を計時する際に、共有時刻を利用して、通信装置２０と同様の手順によりシステム時刻を得た。このため、通信装置１０は、通信装置２０と同様に、システム時刻を高精度に計時することができる。また、通信装置１０，２０が同様の手順によりシステム時刻を計時するため、システム時刻を同期するための通信システム１０００の形成が容易になるとともに通信装置１０，２０間でシステム時刻が高精度に同期される。
【００９１】
また、通信装置２０は、共有時刻と受信した時間差データにより示される時間差との和としてシステム時刻を算出することで図１１に示されるようにシステム時刻を繰り返し補正した。このため、通信装置２０は、時間差を一旦取得するだけで、その後のシステム時刻を、通信装置１０と同期しつつ計時することができる。したがって、通信装置２０がシステム時刻を通信装置１０と同期するための補正をする度に通信装置１０，２０間でデータを伝送する必要はない。例えば、通信装置１０にシステム時刻が設定されたときのみに時間差データが通信装置２０へ伝送されれば、以降は通信装置１０，２０間で時間差データを伝送する必要はない。これにより、通信装置１０，２０間における通信負荷を軽減することができる。また、通信装置２０がシステム時刻の補正を繰り返し実行することにより、図１１を用いて説明したように、システム時刻が共有時刻と同等の速さで計時され、同期されたシステム時刻の誤差の拡大を防ぐことができる。
【００９２】
また、通信装置３０は、通信装置１０，２０のいずれか一方から送信された時刻データに基づいて、計時しているシステム時刻を補正した。このため、通信装置３０は、通信装置１０，２０とシステム時刻を高精度に同期させることができる。
【００９３】
詳細には、通信装置３０は、計時の速さを調整して、自機において計時されるシステム時刻と、時刻データにより示されるシステム時刻と、の時刻偏差を減少させた。これにより、通信装置３０は、時刻データを受信してから次の時刻データを受信するまでの期間においても、通信装置１０，２０とシステム時刻を高精度に同期させることができる。
【００９４】
以上、本発明の実施の形態について説明したが、本発明は上記実施の形態によって限定されるものではない。
【００９５】
例えば、通信装置４０の数、及びＰＬＣ１００，２００の数は、図１に例示した数に限られず、任意に変更してもよい。
【００９６】
また、通信システム１０００が機器を制御するＦＡシステムを構成する例について説明したが、これには限定されない。例えば、通信システム１０００は、センサから出力された情報を収集して記録する監視システムを構成してもよい。
【００９７】
また、記憶部１３，２３に共有時刻の現在値を示す共有時刻データ１３２，２３２が記憶される例について説明したが、これには限定されない。例えば、共有時刻データ１３２，２３２が常時更新されることはなく、記憶部１３，２３は、特定のタイミングで更新された共有時刻データ１３２，２３２を記憶しておいて、外部からの要求があるときに、記憶するデータに基づいて共有時刻の現在値を示すデータを生成して出力してもよい。同様に、記憶部１３，２３，３３にシステム時刻の現在値を示すシステム時刻データ１３３，２３３，３３３が記憶される例について説明したが、これには限定されない。記憶部１３，２３，３３が、外部からの要求に応じてシステム時刻の現在値を示すデータを生成して出力してもよい。
【００９８】
また、設定時刻取得部１１が、設定装置１０１からの設定時刻を取得する例について説明したが、これには限定されない。設定時刻取得部１１は、ＮＴＰ（Network Time Protocol）サーバから設定時刻を取得してもよいし、システムバス４０１を介して通信装置３０から設定時刻を取得してもよいし、ユーザインタフェースを備えるＰＬＣ２００から設定時刻を取得してもよい。
【００９９】
また、通信装置１０，２０間で時間差データが伝送されないケースも考えられる。例えば、通信装置２０，３０が、エラーログに代表されるイベントを示す情報と当該イベントが発生した共有時刻とを関連付けて示すデータを通信装置１０へ送信して、通信装置１０は、受信したデータにより示される共有時刻と、時間差と、から上記イベントが発生したシステム時刻を算出し、算出したシステム時刻に上記イベントの情報を関連付けてユーザに提供してもよい。これにより、通信装置２０，３０が、システム時刻を管理することなく共有時刻を管理する場合においても、通信装置２０，３０において生じたイベントの情報とシステム時刻とを通信装置１０で関連付けることができる。
【０１００】
また、時間差データにより示される時間差の値が、システム時刻から共有時刻を減じて得る差である例について説明したが、これには限定されない。例えば、共有時刻からシステム時刻を減じて得る差を、時間差としてもよい。
【０１０１】
また、図５に示される通信装置１０の機能的な構成を、ＰＬＣ１００を構成するユニットが分担してもよいし、図７に示される通信装置２０の機能的な構成を、ＰＬＣ２００を構成するユニットが分担してもよい。すなわち、通信装置１０と同等の機能をＰＬＣ１００が発揮してもよいし、通信装置２０と同等の機能をＰＬＣ２００が発揮してもよい。
【０１０２】
また、通信装置４０の機能は、専用のハードウェアによっても、また、通常のコンピュータシステムによっても実現することができる。
【０１０３】
例えば、プロセッサ４１によって実行されるプログラムＰ１を、コンピュータ読み取り可能な非一時的な記録媒体に格納して配布し、そのプログラムＰ１をコンピュータにインストールすることにより、上述の処理を実行する装置を構成することができる。このような記録媒体としては、例えばフレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read−Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＭＯ（Magneto−Optical Disc）が考えられる。
【０１０４】
また、プログラムＰ１をインターネットに代表される通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
【０１０５】
また、通信ネットワークを介してプログラムＰ１を転送しながら起動実行することによっても、上述の処理を達成することができる。
【０１０６】
さらに、プログラムＰ１の全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながらプログラムを実行することによっても、上述の処理を達成することができる。
【０１０７】
なお、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
【０１０８】
また、通信装置４０の機能を実現する手段は、ソフトウェアに限られず、その一部又は全部を、回路を含む専用のハードウェアによって実現してもよい。
【０１０９】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【０１１０】
本発明は、ネットワークを介した時刻の同期に適している。
【符号の説明】
【０１１１】
１０００  通信システム、  １０，２０，３０，４０  通信装置、  １１  設定時刻取得部、  １２  時間差算出部、  １３  記憶部、  １３１  時間差データ、  １３２  共有時刻データ、  １３３  システム時刻データ、  １４  時間差データ送信部、  １５  同期部、  １６  設定部、  １７  制御部、  １８  時刻データ送信部、  １９１  ネットワークＩ／Ｆ、  １９２  システムバスＩ／Ｆ、  ２３  記憶部、  ２３１  時間差データ、  ２３２  共有時刻データ、  ２３３  システム時刻データ、  ２４  時間差データ受信部、  ２５  同期部、  ２６  設定部、  ２７  制御部、  ２８  時刻データ送信部、  ２９１  ネットワークＩ／Ｆ、  ２９２  システムバスＩ／Ｆ、  ３１  設定部、  ３１１  調整部、  ３３  記憶部、  ３３３  システム時刻データ、  ３３４  時刻偏差データ、  ３４  時刻データ受信部、  ３７  制御部、  ３９  システムバスＩ／Ｆ、  ４１  プロセッサ、  ４２  主記憶部、  ４３  補助記憶部、  ４４  クロック部、  ４５  入力部、  ４６  出力部、  ４７  通信部、  ４９  内部バス、  １００，２００  ＰＬＣ、  １０１  設定装置、  １０２  伝送路、  ４００  ネットワーク、  ４０１，４０２  システムバス、  Ｌ１〜Ｌ４，Ｌ３１，Ｌ３２  線、  Ｐ１  プログラム。
【要約】
通信システム（１０００）は、通信遅延を含む同期誤差が補正された共有時刻を、ネットワーク（４００）を介して共有する通信装置（１０，２０）を備える。通信装置（１０）は、ユーザによって設定された設定時刻を取得する設定時刻取得部と、設定時刻を、通信装置（１０）のシステム時刻である第１システム時刻に設定する設定部と、共有時刻と設定時刻との時間差を示す時間差データを通信装置（２０）に送信する時間差データ送信部と、を有する。通信装置（２０）は、時間差データを受信する時間差データ受信部と、共有時刻と、時間差データにより示される時間差と、の和を、通信装置（２０）のシステム時刻である第２システム時刻に設定する設定部と、を有する。【図１】
0006704548.tif 000002
【図２】
0006704548.tif 000003
【図３】
0006704548.tif 000004
【図４】
0006704548.tif 000005
【図５】
0006704548.tif 000006
【図６】
0006704548.tif 000007
【図７】
0006704548.tif 000008
【図８】
0006704548.tif 000009
【図９】
0006704548.tif 000010
【図１０】
0006704548.tif 000011
【図１１】
0006704548.tif 000012
【図１２】
0006704548.tif 000013
【図１３】
0006704548.tif 000014
【図１４】
0006704548.tif 000015