(57)【特許請求の範囲】
【請求項１】
複数のユニットを連結して構成される産業用コントローラであって、
その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなり、
前記マスタは、自己の計時手段に基づき規則的な周期で所定のスレーブに対して計時タイミング信号を複数回送る機能を有し、
スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、
その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、
その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、を備え、
前記時間差調整量算出手段が求める調整量は、スレーブ側の時間軸のズレを徐々にマスタ側に近づけるものであることを特徴とする産業用コントローラ。
【請求項２】
複数のユニットを連結して構成される産業用コントローラであって、
その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなり、
前記マスタは、自己の計時手段に基づき一定の周期Ｔで所定のスレーブに対して計時タイミング信号を複数回送る機能を有し、
スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、
その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、
その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、
調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求める手段と、
を備え、
前記時間差認識手段は、前記調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻が一致していると仮定した場合の時間差を、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃとして求めることができるものであり、
前記時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃと前記ずれに基づき、自機の計時手段の時刻と前記マスタの計時手段の時刻の差を徐々に少なくし、前記４回目の周期の終了時点で自機の計時手段の時刻が前記マスタの計時手段の時刻に一致するような前記調整量を求める機能と、を有する
ことを特徴とする産業用コントローラ。
【請求項３】
複数のユニットを連結して構成される産業用コントローラであって、
その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなり、
前記マスタは、自己の計時手段に基づき一定の周期Ｔで所定のスレーブに対して計時タイミング信号を複数回送る機能を有し、
スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、
その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、
その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、
調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求める手段と、
を備え、
前記時間差認識手段は、前記調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻が一致していると仮定した場合の時間差を、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃを求めることができるものであり、
前記時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−３Ａ）になるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃと前記ずれに基づき、自機の計時手段の時刻と前記マスタの計時手段の時刻の差を徐々に少なくし、前記４回目の周期の終了時点で自機の計時手段の時刻が前記マスタの計時手段の時刻に一致するような前記調整量を求める機能と、を有する
ことを特徴とする産業用コントローラ。
【請求項４】
複数のユニットを連結して構成される産業用コントローラであって、
その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなり、
前記マスタは、自己の計時手段に基づき一定の周期Ｔで所定のスレーブに対して計時タイミング信号を複数回送る機能を有し、
スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、
その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、
その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、
調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求める手段と、
を備え、
前記時間差認識手段は、前記調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻が一致していると仮定した場合の時間差を、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂを求めることができるものであり、
前記時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ），（Ｔ−３Ａ）のいずれかになるような前記調整量を求める機能と、３回目の周期が時間差Ａ，Ｂと前記ずれに基づき、自機の計時手段の時刻と前記マスタの計時手段の時刻の差を徐々に少なくし、前記３回目の周期の終了時点で自機の計時手段の時刻が前記マスタの計時手段の時刻に一致するような前記調整量を求める機能と、を有する
ことを特徴とする産業用コントローラ。
【請求項５】
前記２回目の周期が（Ｔ−２Ａ）になるような調整量を設定した場合に、前記時間差認識手段で求めた前記時間差Ｂが基準値以内か否かを判断し、基準値以内の場合は、次の周期が（Ｔ−Ａ−”前記ずれ”）で、それ以降の周期が（Ｔ−Ａ）になるように調整を行なう機能を備えたことを特徴とする請求項２または４に記載の産業用コントローラ。
【請求項６】
前記調整開示時点よりも前に、前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求め、そのずれが徐々に小さくなるように前記スレーブの計時手段を調整する手段を備えたことを特徴とする請求項２から５のいずれか１項に記載の作業用コントローラ。
【請求項７】
複数のユニットを連結して構成される産業用コントローラであって、
その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなり、
前記マスタは、自己の計時手段に基づき一定の周期Ｔで所定のスレーブに対して計時タイミング信号を複数回送る機能を有し、
スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、
その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、
その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、
制御運転開始前の調整開示時点における前記マスタの計時手段の時刻を取得し、自己の計時手段の時刻を取得した時刻に設定する手段と、を備え、
前記時間差認識手段は、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃを求めることができるものであり、
前記時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃに基づき、マスタの計時手段と自機の計時手段との時間差が無くなるような前記調整量を求める機能と、を有する
ことを特徴とする産業用コントローラ。
【請求項８】
複数のユニットを連結して構成される産業用コントローラであって、
その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなり、
前記マスタは、自己の計時手段に基づき一定の周期Ｔで所定のスレーブに対して計時タイミング信号を複数回送る機能を有し、
スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、
その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、
その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、
制御運転開始前の調整開示時点における前記マスタの計時手段の時刻を取得し、自己の計時手段の時刻を取得した時刻に設定する手段と、を備え、
前記時間差認識手段は、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃを求めることができるものであり、
前記時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−３Ａ）になるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃに基づき、マスタの計時手段と自機の計時手段との時間差が無くなるような前記調整量を求める機能と、を有する
ことを特徴とする産業用コントローラ。
【請求項９】
複数のユニットを連結して構成される産業用コントローラであって、
その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなり、
前記マスタは、自己の計時手段に基づき一定の周期Ｔで所定のスレーブに対して計時タイミング信号を複数回送る機能を有し、
スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、
その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、
その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、
制御運転開始前の調整開示時点における前記マスタの計時手段の時刻を取得し、自己の計時手段の時刻を取得した時刻に設定する手段と、を備え、
前記時間差認識手段は、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂを求めることができるものであり、
前記時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ），（Ｔ−３Ａ）のいずれかになるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ−２Ｂ）になるような前記調整量を求める機能と、を有する
ことを特徴とする産業用コントローラ。
【請求項１０】
前記２回目の周期が（Ｔ−２Ａ）になるような調整量を設定した場合に、前記時間差認識手段で求めた前記時間差Ｂが基準値以内か否かを判断し、基準値以内の場合は、それ以降、周期が（Ｔ−Ａ）になるように調整を行なう機能を備えたことを特徴とする請求項７または９に記載の産業用コントローラ。
【請求項１１】
前記計時手段は、ｎｓオーダーの計時機能を持つものである請求項１から１０のいずれか１項に記載の産業用コントローラ。
【請求項１２】
前記スレーブを複数備えた産業用コントローラであって、
前記マスタは、その複数のスレーブがそれぞれ求めた前記時間差の情報を取得すると共に記憶手段に記憶保持し、
その記憶手段に記憶保持した各スレーブの時間差の履歴と傾向が異なる時間差のスレーブを検出し、その検出したスレーブの数に応じて異常を検出する異常検出手段を備えたことを特徴とする請求項１から１１のいずれか１項に記載の産業用コントローラ。
【請求項１３】
前記異常検出手段は、
前記傾向が異なる時間差のスレーブが１つの場合には、そのスレーブの計時手段が異常と判断する機能と、
前記傾向が異なる時間差のスレーブが設定された数以上の場合にはマスタの計時手段が異常と判断する機能と、
前記傾向が異なる時間差のスレーブが複数の場合には、スレーブを接続する信号伝達媒体の異常と判断する機能のうち、少なくとも１つの機能を備えたことを特徴とする請求項１２に記載の産業用コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＰＬＣやＰＡＣ等の産業用コントローラに関するものである。
【背景技術】
【０００２】
ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）におけるネットワークシステムは、生産設備の制御を司る１または複数のＰＬＣ（Programmable Logic Controller）と、そのＰＬＣにより動作が制御される機器とが、制御系のネットワークに接続される。それらＰＬＣと機器は、その制御系のネットワークを介してサイクリックに通信を行なうことで、Ｉ／Ｏデータの送受を行ない、生産設備を制御する。
【０００３】
また、最近では、次世代の産業用コントローラとして、ＰＡＣ（Programmable Automation Controller）と称されるコントローラが開発されている。このＰＡＣは、パーソナルコンピュータが持つ高速性や高機能や機能拡張性に加え、ＰＬＣが持つ高精度や耐久性を備えている。
【０００４】
上記のＰＬＣやＰＡＣ等の産業用コントローラは、複数のユニットを連結して構成されるタイプのものがある。各ユニットには、時計が内蔵されたものがある。その時計が内蔵されたユニットは、その時計に合わせて指定された動作（制御値の出力，データの取得等）を行なうものがある。各ユニットに内蔵された時計は、通常相互に時間合わせ等をすることはなく、仮に時間あわせ（時間同期）をする場合には、複数のユニットのうちの１つが基準時刻を管理するマスタとなり、マスタ以外のユニットがマスタに管理されるスレーブとなり、スレーブがマスタから受け取った現在時刻をそのまま各スレーブの時計に上書きすることで対応していた。また、ネットワークでつながれたコントローラ間で時計情報を調整し、同期した時計情報を生成する手段を持つものもあった。
【０００５】
【特許文献１】特開平４−１３５２１０号
【特許文献２】特開２００１−２７９０４号
【特許文献３】特開２００７−２１３４７４号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のＰＬＣにおける計時機能は、およそ１秒単位であり、リアルタイムＯＳを用いても１秒（以下、秒を「ｓ」と表記する）単位よりも桁が小さく、数百μｓからそれ以下のμｓ単位であった。そのため、各ユニットに存在する時計同士の時間同期を高精度にする必要性があまりなかった。しかし、高速性を有するＰＡＣは、μｓ単位よりも桁が小さく、数百μｓからそれ以下のｎｓ単位での計時が要求される。そして、高精度を担保するためには、各ユニットに実装されるｎｓ単位の計時機能を持つ内部時計が、基準となる時計、つまりマスタの時計と正確に時間同期する必要がある。すなわち、ｎｓ単位の時計を持たない従来のシステムでは、たとえばモータユニットが複数台接続されていた場合に各モータユニットによってモータを同期させて動作しようとしたとき、各モータユニット内の時間が高精度に同期していないために個々のモータの動作にμｓ単位の時間ばらつきが発生する。従来のシステムは、基本の計時機能が１秒単位であるので、μｓ単位のばらつきはシステム全体に対しては、さほど影響を与えない。しかし、計時機能がｎｓ単位となった場合には、μｓ単位の時間のばらつきは同期制御をするうえで大きな影響があるという新たな課題が見つかった。
【０００７】
そして、時間同期として、マスタから受け取った現在時刻をそのままスレーブの時計に上書きする方式を採った場合、ｎｓ単位といった計時機能に対してばらつきはμｓ単位に及ぶこともあることに鑑みると、上書きにより修正したスレーブの時計の刻みは大きく跳躍することになる。つまり時間の進みが連続的でなくなり、途中の時刻を経由しないような状況となる。たとえば、１０００ｎｓを示していた時計が急に９０００ｎｓに上書きされた場合、途中の５０００ｎｓに予定されていた制御は実行するタイミングを失い、制御に重大な影響を与えるので、係る上書きによる時間同期は行えない。なお、計時機能が、従来の秒単位やｍｓ単位のものでは、たとえ上書きにより一気に時計の刻みが飛んだとしても、問題は生じないため、本発明のような解決課題はなかった。
【０００８】
この発明は、仮にｎｓオーダーの計時機能を持つ計時手段を備えたユニット間であっても、制御に影響を与えることなく比較的短時間で時間同期を行なうことができる産業用コントローラを提供することを目的とする。
【課題を解決するための手段】
【０００９】
この発明による産業用コントローラは、（１）複数のユニットを連結して構成される産業用コントローラであって、その複数のユニットのうちの少なくとも２つは、計時手段を備え、その計時手段を備えたユニットの１つはマスタとなり、他のユニットはスレーブとなる。マスタは、自己の計時手段に基づき規則的な周期で所定のスレーブに対して計時タイミング信号を複数回送る機能を有する。スレーブは、受信した計時タイミング信号に基づいてマスタの計時手段と自機の計時手段との時間差を求める時間差認識手段と、その時間差認識手段で求めた時間差に基づき、次の周期の調整量を求める時間差調整量算出手段と、その時間差調整量算出手段で求めた調整量に従い、自機の計時手段の動作を調整する調整手段と、を備える。上記の構成を基本構成とし、時間差調整量算出手段が求める調整量は、スレーブ側の時間軸のズレを徐々にマスタ側に近づけるものとした。計時手段は、実施形態の時計に対応する。
【００１０】
本発明では、スレーブ側の計時手段の時間軸のズレが徐々に解消され、最終的にマスタ側の計時手段と時間合わせ（時間同期）が行なわれるので、調整作業中であってもスレーブの時間軸は連続して進む。よって、本発明の産業用コントローラは、スレーブの時間軸上で設定された処理が飛ばされ、実行されないようなことが無く、正しく制御が行なわれる。また、この時間合わせの調整作業は、定期的（たとえば１秒間隔）或いは不定期に実行すると良い。このようにすると、仮に計時手段の性能があまり高くなく、個々にばらつきがあるとともに、時間の経過に伴いずれが生じるような場合でも、適宜のタイミングで調整作業を行なうことで、常時マスタとスレーブの計時手段の時間同期が保証される。この作用効果は、以下の各発明でも同様である。
【００１１】
規則的な周期は、実施形態に示すように、１つの固定した周期（ｔ１，ｔ２，ｔ３，…が、同一時間間隔）でもよいし、個々の周期は変わるもののその変化が一定の規則に従って行なわれるものでもよい。一定の規則に従って個々の周期が変わるものとしては、たとえば、ｔ１まで１．０秒，ｔ２まで１．２秒，ｔ３まで１．５秒，ｔ４まで１．０秒，ｔ５まで１．２秒，ｔ６まで１．５秒，ｔ７まで１．０秒，…というようにある規則（パターン）で各周期を変化させるのを繰り返し行なうようにしたり、ｔ１まで１．０秒，ｔ２まで１．２秒，ｔ３まで１．０秒，ｔ４まで１．２秒，ｔ５まで１．０秒，…というように２つ置きに交互に変化させるようにしたりするなどの他、各種のバリエーションをとることができる。１つの固定した周期とした場合、プロセッサのクロック周期に基づいて処理を行なうことで、ＩＥＥＥ１５８８の規格に準拠させることができる。もちろん、プロセッサのクロック周期に基づいて実行させることは、本発明の必須の要件ではない。
【００１２】
（２）別の解決手段は、上記の基本構成を前提とし、調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求める手段を備える。そして、時間差認識手段は、前記調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻が一致していると仮定した場合の時間差を、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃとして求めることができるものであり、時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃと前記ずれに基づき、自機の計時手段の時刻と前記マスタの計時手段の時刻の差を徐々に少なくし、前記４回目の周期の終了時点で自機の計時手段の時刻が前記マスタの計時手段の時刻に一致するような前記調整量を求める機能と、を有するようにした。この発明は、図８（ｂ），図１１（ｂ），図１２（ｂ），図１３（ｂ）に示す実施形態並びに変形例にて実現される。
【００１３】
これにより、各周期では、スレーブの計時手段の時刻は、連続的に変化しながら修正され、調整開始時点（実施形態のｔ１）でマスタとスレーブの時刻にずれがあったとしても、最終的に４回目の周期でマスタの計時手段の時刻に一致し、絶対的な時刻合わせが完了する。よって、時刻が飛ぶことがないので、制御運転を行ないつつ、調整作業が行なえ、その後は、マスタとスレーブの周期が一致すると共に、時刻も一致しているので、絶対時刻での指定や、所定時間経過後など相対的な指定によって、スレーブが精度良く同期運転等する。
【００１４】
特に、２回目の周期が自機で（Ｔ−２Ａ）になるような調整量を求めた場合、その周期の終了時の時間差（＝Ｂ）は、ほぼゼロに近づくので、時間差Ｂの測定精度（分解能）を高くすることができ、それ以降の調整作業がより高性能に行える。さらに、２回目の周期が自機で（Ｔ−２Ａ）で、３回目の周期が自機で（Ｔ−Ａ）になるように調整量を設定した場合、時間差Ｂ，Ｃは、共にほぼゼロに近い値をとることができ、性能があまり高くないＭＰＵを用いたスレーブでも、精度良く時間差を測定し、適切な調整量を求めることができ、より高性能な時間同期を行なうことができる。
【００１５】
なお、「調整開示時点におけるマスタの計時手段の時刻とスレーブの計時手段の時刻が一致していると仮定した場合」とは、実際に２つの計時手段の時刻が互いに一致することを必要としておらず、また、各計時手段が示す時刻の実際の物理的時間差を求めることを必要としなくてもよく、この発明でいう計算上の想定時間差を便宜的に求めるための抽象的概念を説明する限りにおける仮定を意味する。以下同様である。また、その「仮定した場合の時間差」とは、各計時手段が示す時刻の実際の物理的時間差を求めることを必要としなくてもよく、この発明でいう計算上の想定時間差を説明するための抽象的概念を意味する。以下同様である。
【００１６】
（３）別の解決手段は、上記の基本構成を前提とし、調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求める手段を備える。そして、時間差認識手段は、前記調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻が一致していると仮定した場合の時間差を、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃを求めることができるものであり、前記時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−３Ａ）になるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃと前記ずれに基づき、自機の計時手段の時刻と前記マスタの計時手段の時刻の差を徐々に少なくし、前記４回目の周期の終了時点で自機の計時手段の時刻が前記マスタの計時手段の時刻に一致するような前記調整量を求める機能と、を有するようにした。この発明は、図１４（ｂ），図１５（ｂ）に示す変形例にて実現される。
【００１７】
（４）別の解決手段は、上記の基本構成を前提とし、調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求める手段を備え、時間差認識手段は、前記調整開示時点における前記マスタの計時手段の時刻と前記スレーブの計時手段の時刻が一致していると仮定した場合の時間差を、前記マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂを求めることができるものであり、時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ），（Ｔ−３Ａ）のいずれかになるような前記調整量を求める機能と、３回目の周期が時間差Ａ，Ｂと前記ずれに基づき、自機の計時手段の時刻と前記マスタの計時手段の時刻の差を徐々に少なくし、前記３回目の周期の終了時点で自機の計時手段の時刻が前記マスタの計時手段の時刻に一致するような前記調整量を求める機能と、を有するようにした。この発明は、図１６（ｂ），図１８（ｂ），図１９（ｂ）に示す実施形態並びに変形例にて実現される。
【００１８】
（５）（２），（４）の発明を前提とし、２回目の周期が（Ｔ−２Ａ）になるような調整量を設定した場合に、前記時間差認識手段で求めた前記時間差Ｂが基準値以内か否かを判断し、基準値以内の場合は、次の周期が（Ｔ−Ａ−”前記ずれ”）で、それ以降の周期が（Ｔ−Ａ）になるように調整を行なう機能を備えるようにするとよい。（２）にて説明したとおり、２回目の周期が（Ｔ−２Ａ）になるように調整をした場合、時間差Ｂは、ゼロに近づく。そこで、測定した時間差Ａが、実際の時間差にほぼ一致しているような場合には時間差Ｂもゼロ或いはそれに近い値となるので、この２回目の周期の調整作業で時間あわせ（時のあゆみ：周期の長さが一致すること）が成功するので、次の周期で調整開始時における時刻のずれ分を調整して時刻を一致させ、それ以降は、その一致した状態を維持するようにすることで、時間差Ｃを求めそれに基づく調整作業を省略することができ、スレーブの負荷が軽減する。
【００１９】
（６）調整開示時点よりも前（実施形態のｔ（−ｎ））に、マスタの計時手段の時刻と前記スレーブの計時手段の時刻のずれを求め、そのずれが徐々に小さくなるようにスレーブの計時手段を調整する手段を備えるとよい。このようすると、調整開始時点（実施形態のｔ１）におけるマスタとスレーブの時刻のずれが小さくなり、最終的にずれ分を考慮して時刻合わせをする際の変化量を小さくすることができる。
【００２０】
（７）別の解決手段は、上記の基本構成を前提とし、時間差認識手段は、マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃを求めることができるものであり、時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃに基づき、マスタの計時手段と自機の計時手段との時間差が無くなるような調整量を求める機能と、を有するようにした。この発明は、図８（ａ），図１１（ａ），図１２（ａ），図１３（ａ）に示す実施形態並びに変形例にて実現される。特に、２回目の周期が自機で（Ｔ−２Ａ）になるような調整量を求めた場合、その周期の終了時の時間差（＝Ｂ）は、ほぼゼロに近づくので、時間差Ｂの測定精度（分解能）を高くすることができ、それ以降の調整作業がより高性能に行える。さらに、２回目の周期が自機で（Ｔ−２Ａ）で、３回目の周期が自機で（Ｔ−Ａ）になるように調整量を設定した場合、時間差Ｂ，Ｃは、共にほぼゼロに近い値をとることができ、性能があまり高くないＭＰＵを用いたスレーブでも、精度良く時間差を測定し、適切な調整量を求めることができ、より高性能な時間同期を行なうことができる。
【００２１】
（８）別の解決手段は、上記の基本構成を前提とし、時間差認識手段は、マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂ，時間差Ｃを求めることができるものであり、時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−３Ａ）になるような前記調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ），（Ｔ）のいずれかになるような前記調整量を求める機能と、４回目の周期が、時間差Ａ，Ｂ，Ｃに基づき、マスタの計時手段と自機の計時手段との時間差が無くなるような調整量を求める機能と、を有するようにした。この発明は、図１４（ａ），図１５（ａ）に示す変形例にて実現される。
【００２２】
（９）別の解決手段は、上記の基本構成を前提とし、時間差認識手段は、マスタから与えられる周期Ｔのタイミングで、順に時間差Ａ，時間差Ｂを求めることができるものであり、時間差調整量算出手段は、１回目の周期Ｔで生じた時間差Ａに基づき、２回目の周期が自機で（Ｔ−Ａ），（Ｔ−２Ａ），（Ｔ−３Ａ）のいずれかになるような調整量を求める機能と、３回目の周期が自機で（Ｔ−Ａ−２Ｂ）になるような調整量を求める機能と、を有するようにした。この発明は、図１６（ａ），図１８（ａ），図１９（ａ）に示す実施形態並びに変形例にて実現される。
【００２３】
（１０）（７），（９）の発明を前提とし、２回目の周期が（Ｔ−２Ａ）になるような調整量を設定した場合に、時間差認識手段で求めた前記時間差Ｂが基準値以内か否かを判断し、基準値以内の場合は、それ以降、周期が（Ｔ−Ａ）になるように調整を行なう機能を備えるようにするとよい。（７）にて説明したとおり、２回目の周期が（Ｔ−２Ａ）になるように調整をした場合、時間差Ｂは、ゼロに近づく。そこで、測定した時間差Ａが、実際の時間差にほぼ一致しているような場合には時間差Ｂもゼロ或いはそれに近い値となるので、この２回目の周期の調整作業で時間あわせが成功するので、それ以降は、その一致した状態を維持するようにすることで、時間差Ｃを求めそれに基づく調整作業を省略することができ、スレーブの負荷が軽減する。
【００２４】
（１１）計時手段は、ｎｓオーダーの計時機能を持つものとするとよい。本発明では、ｎｓオーダー（単位）で計時するものに好ましく適用できるが、それ以外の計時機能のものに適用してももちろん良い。
【００２５】
（１２）前記スレーブを複数備えた産業用コントローラであって、マスタは、その複数のスレーブがそれぞれ求めた前記時間差の情報を取得すると共に記憶手段に記憶保持し、その記憶手段に記憶保持した各スレーブの時間差の履歴と傾向が異なる時間差のスレーブを検出し、その検出したスレーブの数に応じて異常を検出する異常検出手段を備えると良い。この発明は、図２５以降の実施形態により実現される。スレーブが複数存在すると、時間あわせを行なうユニットがマスタを含めて３台以上存在することになるので、過去履歴と傾向が異なる時間差を計測したスレーブが存在した場合に、そのスレーブが異常か否か、さらには、スレーブ以外（マスタや信号伝達媒体等）の異常箇所を推定することができる。
【００２６】
（１３）異常検出手段は、傾向が異なる時間差のスレーブが１つの場合には、そのスレーブの計時手段が異常と判断する機能と、傾向が異なる時間差のスレーブが設定された数以上の場合にはマスタの計時手段が異常と判断する機能と、傾向が異なる時間差のスレーブが複数の場合には、スレーブを接続する信号伝達媒体の異常と判断する機能のうち、少なくとも１つの機能を備えると良い。
【発明の効果】
【００２７】
本発明は、仮にｎｓオーダーの計時機能を持つ計時手段を備えたユニット間であっても、制御に影響を与えることなく比較的短時間で時間同期を行なうことができる。
【発明を実施するための最良の形態】
【００２８】
図１は、本発明が適用される産業用コントローラの一種であるＰＡＣ１の一形態を示している。このＰＡＣ１は、各種の機能を実現するための複数のユニットを連結し、互いに内部バスにより接続して構成される。この複数のユニットは、少なくとも１つのＣＰＵユニット２を有する。更に、本実施形態では、ＰＡＣ１は、電源ユニット３，モータユニット４，カウンタユニット５，画像ユニット６，通信ユニット７，Ｉ／Ｏユニット８を備えている。もちろん、ＰＡＣ１を構成するユニットは、上記のものに限ることはなく、実行したい制御等に応じて必要なものを適宜取捨選択して構成する。例えば、ＰＡＣは、「ＣＰＵユニット＋モータユニット＋カウンタユニット」，「ＣＰＵユニット＋Ｉ／Ｏユニット」という構成も有効である。なお、本実施形態では、ＰＡＣ１を例にして説明するが、ＰＬＣについても同様である。
【００２９】
ＣＰＵユニット２は、制御対象をどのように動作させるかという制御内容に応じてユーザが組んだ制御プログラムに基づく演算を繰返し実行する。また、ＣＰＵユニット２や、その他のユニットに対して各種の詳細設定を行なう場合、図１に示すように、ユーザは、ＣＰＵユニット２にパソコンを接続するとともに、そのパソコンにインストールされたアプリケーションプログラムである設定ツールを起動し、その設定ツールを用いて詳細設定する。電源ユニット３は、商用電力・交流電圧を各ユニットに応じた直流電圧に変換し、連結された各ユニットに電力を供給する。なお、各ユニットに対して直接直流電圧を供給することで、電源ユニットを接続しないＰＡＣの構成もある。モータユニット４は、１台以上のサーボドライブ（サーボモータとその制御装置）を接続でき、モータ（図示せず）の制御を行なう。カウンタユニット５は、高速カウンタ、または制御対象の位置の変化に応じてパルス信号を出力する１台以上のロータリーエンコーダを接続し、回転量や移動量などをパルス信号に基づいて計測する。画像ユニット６は、１台以上のカメラを接続し、カメラからの撮像画像に基づいて移動量や部品個数などを計測する。通信ユニット７は、ネットワークに接続された他の外部装置とデータの送受を行なう。Ｉ／Ｏユニット８は、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニットやアクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット等である。
【００３０】
これらの各ユニットは、ユニットの側面に設けられたコネクタ同士を接続することで、電気的に接続される。つまり各ユニットに内部バスが貫通し、パラレル通信や高速シリアル通信をするための内部バス線等を用いて接続され、その内部バスによりユニット間で互いにデータの送受が行なわれる。なお、ユニットの側面に代えてユニットの背面に設けられたコネクタ同士をベースユニットと呼ばれるベース基板のバス線を介して接続することで電気的に接続する構造でもよい。
【００３１】
ＰＡＣ１の機能の一つである高速性を実現するため、所定のユニットには、計時機能としてμｓ単位よりも桁が小さく、数百ｎｓの単位、数十ｎｓの単位、または数ｎｓの単位（以下ｎｓ単位という）の時計１ｂが実装される（図２参照）。但し、ＰＡＣ１を構成する全てのユニットに、当該ｎｓ単位の時計１ｂが実装されるわけではない。すなわち、例えば画像ユニット６は、カメラのシャッタースピードが主にｍｓ単位であるため、ｎｓ単位の時間同期の必要性は少ない。同様に、Ｉ／Ｏユニット８に関しても、時間同期の機能を組み込んだユニット（時間同期に関してスレーブとなる）と、時間同期の機能を組み込んでいない低速安価なＩ／Ｏユニットが存在し得る。
【００３２】
ＰＡＣ１の機能の１つである高精度を担保するためには、各ユニットに実装されるｎｓ単位の計時機能を持つ内部時計が、基準の時計、つまりマスタの時計と正確に時間同期する必要がある。そこで、図２に示すように、本実施形態では、バスまたは高速シリアル通信線等の通信媒体１ａに接続される、最低１台のマスタと、最低１台のスレーブから構成され、マスタとスレーブは各々ｎｓ単位といった微小時間の計時機能（ｎｓ単位の時計１ｂ）を持ち、相互の時計を時間同期させるシステム構成を採る。スレーブが複数存在する場合には、個々のスレーブがマスタの時計１ｂに同期をとることで、ＰＡＣ１を構成するｎｓ単位の時計１ｂが実装されるユニット間で高精度に同期を採ることができる。具体的には、マスタは、高機能な１つのＣＰＵユニット２により実現され、残りのユニットがスレーブとなる。
【００３３】
また、マスタ，スレーブに内蔵される時計１ｂは、内蔵する水晶発振器に基づくクロックパルスのパルス数を計数することで、時刻を求める。つまり、クロックパルスの周期から１パルスあたりの時間（基準時間）がわかるので、パルス数に基準時間を乗算することで、その計数していた期間に経過した時間を求めることができる。よって、電源投入時からの総パルス数を求めることで、電源投入時からの経過時間を算出することができる。そして、あるパルス数のときの時刻（何時何分といった基準時刻）が決まれば、任意の時点でのパルス数と基準時刻の時のパルス数の差分から、当該任意の時点の時刻が決定される。時計１ｂのよる計時は、上記のように基準時刻とパルス数に基づいて時刻を決定することで行なう。
【００３４】
そこで、マスタ，スレーブの個々の時計１ｂにおける１パルスあたりの時間（基準時間）が等しい（つまり時の進みが同じの意味）と、ある時点での時刻を一致させることで個々の時計１ｂで計時される時間が同じ（つまり時刻が同じの意味、換言すれば絶対的な時間が同じの意味）になり、絶対的な時間が合った時間同期が行なわれる。そして、水晶発振器に基づくクロックパルスは、水晶発振器自体のクロック信号ではなく、クロック信号に対してＰＬＬ等のハードウェアからなる調整手段で調整されたものであるので、１パルスあたりの時間を合わせるのは、この調整手段で行なうことができる。
【００３５】
なお、上述したように、ＰＡＣ１を構成するユニットの中には、微小時間の計時機能に対応しないものもあり、係るユニットは本実施形態における時間同期に関与しないユニットとなり、時間同期に関してはマスタにもスレーブにもならない。
【００３６】
図３は、ＣＰＵユニット２の内部構成を示している。ＣＰＵユニット２は、ＭＰＵ２ａと、周辺コントローラ２ｂと、メモリ２ｃと、時計２ｄ（図２におけるＣＰＵユニット２に実装された時計１ｂに対応）と、第１通信インタフェース２ｅと、第２通信インタフェース２ｆと、を備えている。
【００３７】
ＭＰＵ２ａは、パーソナルコンピュータ等にも実装される高性能なもので、所定の演算処理を実行する。このＭＰＵ２ａは、実行周期ごとに分けた複数のタスクを、定周期間隔でスキャンし動作する。すなわち、ＭＰＵ２ａが実行すべきタスクは、たとえば１ｍｓ周期で実行すべきタスクもあれば、２ｍｓ周期で実行すべきタスクもある。もちろん、それ以外にも、４ｍｓ，８ｍｓ，……というような様々な周期のタスクが存在することがある。そこで、ＭＰＵ２ａは、マルチタスク処理により実行すべき周期のタスクを演算処理する。なお、各タスクは、例えば、ラダー言語などで書かれたプログラムを実行するものである。従来のＰＬＣの場合、上記の各タスクの実行周期という概念はなく、それら各タスクに対応するプログラムをまとめて記述した一連の制御プログラムを先頭から順に実行し、更に、Ｉ／Ｏリフレッシュや周辺処理を含む１つのサイクルをサイクリックに実行するようにしていたが、本実施形態のＰＡＣは、上記のようにマルチタスク処理（時分割処理）を行なう点で相違する。但し、ＰＡＣは、必ずしもマルチタスク処理をするものではなく、従来のようにサイクリックに処理をするものでも良い。
【００３８】
周辺コントローラ２ｂは、チップセットとも称されるもので、メモリ２ｃや各種インタフェース２ｅ，２ｆ等とＭＰＵ２ａとの間を取り持ち、調停やタイミング調整を行なう。これにより、ＭＰＵ２ａは、演算に注力することができる。メモリ２ｃは、例えばＭＰＵ２ａが演算処理をする際にワークメモリとして使用される。第１通信インタフェース２ｅは、他のスレーブと通信をするもので、ＰＡＣ１の内部に実装される通信媒体（内部バス，高速シリアル通信線）１ａを介して通信をするためのインタフェースである。第２通信インタフェース２ｆは、ツール装置を構成するパーソナルコンピュータと接続を図るためのインタフェースである。
【００３９】
時計２ｄは、ｎｓ単位で計時可能な機能を持つ。この時計２ｄは、ＭＰＵ２ａからも読み書きが可能となる。また、図示した例では、時計２ｄと第１通信インタフェース２ｅとが別々に構成されているが、第１通信インタフェース２ｅが精度の高い時間情報を活用するためには、ｎｓ単位の時計２ｄと第１通信インタフェース２ｅとの２つの機能を一つのＩＣ／ＡＳＩＣに組み込み結合させるようにしてもよい。そのようにすると、通信インタフェースの機能は、ＭＰＵ経由で読み書きするのに比べ高精度な時間情報を活用することができる。
【００４０】
図４は、スレーブの一例であるモータユニット４の内部構成を示している。このモータユニット４は、ＭＰＵ４ａと、メモリ４ｃと、時計４ｄ（図２におけるモータユニット４に実装された時計１ｂに対応）と、第１通信インタフェース４ｅと、第２通信インタフェース４ｆと、を備えている。なお、以下の説明では、モータユニット４の例をとって説明しているが、スレーブを構成する他の機能を実現するためのユニットにおいても同様の構成（時間同期機能）を採ることで、時計合わせができるのはもちろんである。
【００４１】
ＭＰＵ４ａは、所定の演算処理を実行するもので、ＣＰＵユニット２のＭＰＵ２ａと比べて機能が限定されており、演算性能もＣＰＵユニット２のＭＰＵ２ａほどは要求されないことが多いので、例えば、１６ｂｉｔマイコンや３２ｂｉｔマイコン等により実現することができる。よって、ＣＰＵユニット２のように周辺コントローラを設けることなく、ＭＰＵ４ａが直接各種インタフェースを管理する構成を採る。
【００４２】
メモリ４ｃは、例えばＭＰＵ４ａが演算処理をする際にワークメモリとして使用される。第１通信インタフェース４ｅは、マスタと通信をするもので、ＰＡＣ１の内部に実装される通信媒体（内部バス，高速シリアル通信線）１ａを介して通信をするためのインタフェースである。第２通信インタフェース４ｆは、そのユニットに接続される外部機器との通信インタフェースであり、モータユニット４の場合には、サーボドライブと通信するためのものである。図示省略するが、カウンタユニットでは、この部分は高速カウンタとの通信インタフェースとなるし、通信ユニット７であれは、接続されるネットワークに対応する通信インタフェースとなるし、画像ユニットであれば、この第２通信インタフェース部分は、カメラとの通信インタフェースとなる。
【００４３】
時計４ｄは、ｎｓ単位で計時可能な機能を持つ。この時計４ｄは、ＭＰＵ４ａからも読み書きが可能となる。また、ＣＰＵユニット２の場合と同様に、時計４ｄと第１通信インタフェース４ｅとの２つの機能を一つのＩＣ／ＡＳＩＣに組み込み密結合させるようにしてもよい。
【００４４】
図５は、モータユニット４の機能を示すフローチャートである。ＭＰＵ４ａは、第１通信インタフェース４ｅを介してマスタ（ＣＰＵユニット２）から制御値、制御指定時間を取得する（Ｓ１）。制御値は、例えばサーボモータの移動量（回転角度）を規定するもので、次のサイクルで出力するサーボドライブのパルス数等である。制御指定時間は、制御値を出力する時間情報である。この時間情報は、例えば、時刻であったり、所定時間経過後であったりする。
【００４５】
ＭＰＵ４ａは、これらの制御値，制御指定時間を取得すると、時計４ｄを監視し制御指定時間に到達するのを待つ（Ｓ２）。そして、制御指定時間に到達したならば（Ｓ２がＹｅｓ）、ＭＰＵ４ａは取得した制御値を、第１通信インタフェース４ｅを介してサーボドライブに送出し（Ｓ３）、サーボドライブからのＡＣＫを受領した（Ｓ４）ならば、処理ステップＳ１に戻り、次の指示を待つ。このように、モータユニット４は、ＣＰＵユニット２の指示により、サーボドライブを制御するものである。
【００４６】
本実施形態では、ｎｓ単位の時計４ｄを搭載すると共に、この時計４ｄとＣＰＵユニット２の時計２ｄとを正確に合わせる機能を備えている。その結果、仮に、ＣＰＵユニット２に複数のモータユニット４が接続されていた場合、各モータユニット４の時計４ｄが正確に合っているので、同一のタイミングで制御値をそれぞれのモータユニット４に接続されたサーボドライブに送出することができる。また、カウンタユニット５とモータユニット４との時間が同期し定周期ごとに制御を行うシステムでは、モータユニット４で前の一周期の間に回転した量を正確にカウンタユニット５で計測することができる。
【００４７】
次に、時計を合わせる機能（時間同期機能）について説明する。モータユニット４を始め、各スレーブを構成するユニットには、図６に示す時間同期機能を備える。この時間同期機能は、一部又は全部をアプリケーションプログラムとして実現することができ、そのプログラムはＭＰＵ４にインストールされ実行される。もちろん、時間同期機能は、専用のＩＣ等により実現することもできる。
【００４８】
図６に示すように、この時間同期機能は、時間差認識部２０と、時間差調整量算出部２１と、周波数・波数調整部２２と、を備えている。時間差認識部２０は、他機（ここでは、マスタであるＣＰＵユニット２）の時計２ｄと、自己の時計４ｄとの時間差を求めるもので、ＩＥＥＥ１５８８等により規格化された技術により実現できる。
【００４９】
時間差調整量算出部２１は、時間差認識部２０で求めたマスタの時計との時間差に基づき、スレーブの時計をマスタの時計に滑らかに漸近させていくための次のサイクルでの調整量などを算出するものである。この時間差調整量算出部２１の具体的なアルゴリズムは、後述する。
【００５０】
周波数・波数調整部２２は、時間差調整量算出部２１で求めた調整量に従い、自己の時計４ｅの動作を調整するものである。すなわち、時計を駆動するクロック信号は、水晶発振器の発振周波数等により規定され、微視的に比較すると、それぞれ固有のばらつきを持つ。そこで、時計を駆動しているクロック信号に対し、ＰＬＬや周波数スケーリング等のハードウェアからなる調整手段を用いて時間差調整量算出部２１で求めた調整量になるように調整処理を行なう。なお、係る、指定された調整量になるように調整・修正する調整手段としては、たとえば、特許３７５７１６７号に開示された周波数・位相を調整するＰＬＬや、特許３５５３０２０号に開示された波数を調整する周波数スケーリング等の技術を用いて実現できる。
【００５１】
この時計あわせを行なうための時間同期機能は、図５に示すフローチャートを実行する本来持つ外部機器に対する制御機能とは別に独立して動作する。つまり、それぞれの機能は、マスタからの指示に従い動作する。そして、時間同期機能の概要は、以下の通りである。
【００５２】
まず、本実施形態の前提として、マスタの時計は、周期Ｔは不変で規則正しく計時するものとし、またはマスタの時計の周期が仮に極微小に変動したとしてもマスタの時計を基準と定めることとし、スレーブがマスタの時計に合わせるものとした。そして、時間同期機能は、できるだけ少ない試行回数で、マスタとスレーブの時間差をゼロに近づけるようにすることを目的とし、マスタから一定の間隔で発行される時間差測定指示に基づき、スレーブの時間差認識部２０がそのときのマスタとの時間差を求め、求めた時間差に基づき時間差調整量算出部２１が次のサイクルでの調整量を求め、求めた調整量に従い周波数・波数調整部２２にて実際にスレーブの時計の調整を行なう。
【００５３】
図７（ａ）は、時間同期機能の前提となる概念を示している。図において、横軸は、マスタの時計の時間経過を示し、上述したように不変で規則正しく計時される。これに対し、折れ線で示すのが、スレーブ側の時計の計時状態であり、横軸よりも上側はスレーブの時計がマスタの時間よりも進んでいる状態を示し、横軸よりも下側はスレーブの時計がマスタの時間よりも遅れている状態を示す。そして、横軸から離れるほど、マスタとスレーブのそれぞれの時計のズレ量が大きいことを示す。なお、図ではスレーブの時計の状態を連続した折れ線で示しているが、時間同期機能は、時々刻々と変化する自己の時計のズレを直接認識しているのではなく、マスタからの指示に従い離間的に測定する時間差に基づきその間を推定（直線で結ぶ）するようにしている。
【００５４】
図７（ａ）に示すように、時間同期機能は、まず補正を行なっていないフリーランの状態で、マスタとの時間差を２回計測（ｔ１，ｔ２）し、時間差の変化率・傾き（＝バイアス）αを測定する。なお、ｔ１の時にマスタの時計とスレーブの時計の時間（時刻）があっていると仮定すると、ｔ２の時に時間差を計測することで傾きを求めることはできる。時間同期機能は、次のステップ（区間ｔ２〜ｔ３）における調整量として、求めた傾きの「マイナス２倍」（＝−２α）に設定する。これにより、前回のステップ（区間ｔ１〜ｔ２）で生じた差を打ち消し、誤差をゼロに近づける（粗調整フェーズ）。その後、それ以降の区間の調整量として、区間ｔ１〜ｔ２までの傾きの「マイナス１倍」（α−α＝０）に設定し、誤差ゼロに近づいた状態を維持する（維持フェーズ）。なお、時間差を測定するタイミング（ｔ１，ｔ２，ｔ３）は、マスタが決める周期Ｔで、十分精度良く定期的である。
【００５５】
換言すると、調整開始時のｔ１から、次に時間差の測定指示がきたｔ２までの区間で生じた時間差がＡとすると、ｔ２〜ｔ３の区間は、ｔ１〜ｔ２の区間の傾き（Ａ／（ｔ２−ｔ１））の「マイナス２倍」を適用して補正する。つまり、ｔ２のときに、マスタの周期をＴ（＝ｔ２−ｔ１）とすると、次の期間のスレーブの周期が（Ｔ−２Ａ）となるように制御する。そして、係るｔ２〜ｔ３の区間で誤差をゼロに近づけて調整が完了すると、以降は、時の進みを両者であわせるため、以降のスレーブの周期は、Ｔ−Ａになるように調整する。
【００５６】
このようにスレーブ側の時計の時間軸のズレが徐々に解消され、最終的にマスタ側の時計と時間合わせ（時間同期）が行なわれるので、調整作業中であってもスレーブの時間軸は連続して進む。よって、本実施形態のＰＡＣは、スレーブの時間軸上で設定された処理が飛ばされ、実行されないようなことが無く、正しく制御が行なわれる。
【００５７】
上記の時間あわせは、時間同期処理の開始時点（ｔ１）におけるマスタとスレーブの時計の時間（時刻）が一致していることを前提とする。従って、係る一致させるためには、たとえば、マスタから各スレーブに対して一斉同報により、マスタの時計にあわせた現在時刻（タイムスタンプ）を送信し、それを受信したスレーブが内蔵する時計の時刻を受信した現在時刻に上書きすることで行える。係る処理は、たとえば、実際の制御を行なっている場合には、上書きにより各スレーブの内部時計の時刻が飛び、制御に影響を与えるので実行できないが、実際の制御開始前のトレーニング期間（準備期間）であれば問題がない。これにより、実際の制御開始前に、この上書きにより基準時刻を合わせて、その後、上記の手法で進み時間の調整あわせを行なうことで、各時計の時間あわせを行なうことができる。
【００５８】
上記のように、スレーブが受信したマスタのタイムスタンプをそのまま上書きした場合、少なくとも、伝搬遅延に応じた時間だけマスタとスレーブとの間で絶対時刻がずれることになり、同期制御を絶対時刻を指定して行なう場合には、当該伝搬遅延分だけずれて動作することになる。伝搬遅延自体は、非常に短時間ではあるが、ｎｓオーダーのより高精度な時間制御を行なう場合に、影響を生じるおそれがある。もちろん、一定時間後というような相対的な同期制御を行なう場合には、時間合わせのときと、実際の制御指令を送信する際に同じように伝搬遅延を生じるとすると、ほぼ正確な制御を行なうことができるとも言える。
【００５９】
一方、マスタが送信するタイムスタンプに着目すると、同報メッセージを作成する際のタイムスタンプを、当該メッセージに格納するようにした場合、メッセージ作成から送信までのタイムラグにより、正確に送信した時刻ではないとともに、当該タイムラグは必ずしも一定になるとは限らない。そこで本実施形態では、送信するマスタのタイムスタンプ（現在時刻）として、例えば図２０に示すように、まず、マスタが、スレーブに対して「Ｓｙｎｃ」メッセージを送信するとともに、この送信したときの自身のローカル・システム・クロック（時計）のタイムスタンプ（ＴＳ１）を記録する。これにより、マスタは、当該メッセージを送信した時刻を正確に記録することができる。スレーブは、このＳｙｎｃメッセージを受信すると、その受信したときの自身のローカル・システム・クロック（時計）のタイムスタンプ（ＴＳ２）を記録する。
【００６０】
次に、マスタがスレーブに対して「Ｆｏｌｌｏｗ＿ｕｐ」メッセージを送信する。このメッセージの中には、先に Ｓｙｎｃメッセージを送出したときのマスタのタイムスタンプ（ＴＳ１）が含まれる。スレーブは、これら２つのタイムスタンプＴＳ１，ＴＳ２をもとに、マスタの時計の時刻とスレーブの時計の時刻との差分、つまり、オフセットＯを求めることができる。よって、スレーブは、任意のタイミングで、現在の自己のタイムスタンプ（現在時刻）に、オフセット分だけ差分を採った値に書き換えることで、自己の時計の時刻をマスタの時計の時刻に合わせることができる。
【００６１】
このようにマスタとスレーブの時刻合わせが完了したならば、以下の手順で、伝搬時間を求めることができる。すなわち、スレーブがマスタに対して「Ｄｅｌａｙ  Ｒｅｑｕｅｓｔ（Ｄｅｌａｙ＿Ｒｅｑ）」メッセージを送信する。このＤｅｌａｙ＿Ｒｅｑ  メッセージの送出をトリガとして、スレーブは当該メッセージ送信時の自身の時計のタイムスタンプ（ＴＳ３）を記録する。マスタは、このＤｅｌａｙ＿Ｒｅｑメッセージを受信したときの自身の時計のタイムスタンプ（ＴＳ４）をキャプチャする。
【００６２】
次いで、マスタは、スレーブに対して「Ｄｅｌａｙ  Ｒｅｓｐｏｎｓｅ  （Ｄｅｌａｙ＿Ｒｅｓｐ）」メッセージを返す。このメッセージの中には、先にマスタがｄｅｌａｙ＿Ｒｅｑメッセージを受信した時のマスタのタイムスタンプ（ＴＳ４）が含まれる。スレーブはこれら２つのタイムスタンプＴＳ３，ＴＳ４の差分を求め、マスタとスレーブのノード間の伝播遅延を算出することができる。なお、ＩＥＥＥ  １５８８プロトコルではネットワーク内の伝播遅延が対称であることを前提とする。
【００６３】
以上の４つの手順を踏むことで、スレーブはマスタとのクロック差分（オフセット）およびネットワーク伝播遅延という２つの情報を取得し、これによってマスタとの時間同期を行なうことができる。なお、時間同期の精度は、IEEE 1588メッセージの送受信の際にどれだけ正確にタイムスタンプを記録できるかに依存する。この点については、ファームウェアの割り込みやアプリケーション・レベルでのトリガを利用するよりも、物理層のレベルでハードウェア・ベースのトリガを利用する方が、精度が高くなる。物理層レベルのトリガを利用してタイムスタンプを記録することで、ナノ秒からサブマイクロ秒オーダーの精度で時間同期を行うことができる。
【００６４】
一方、上記のように、上書きに基づき時間あわせを完了した場合、運転開始当初は各スレーブとマスタの時計の時刻は一致しているため、同期制御等がｎｓ単位で精度良く行なうことができる。しかし、各スレーブの時計は、通常、水晶発振器の発振周波数を利用して計時が行なわれるが、その水晶発振器の発振周波数は、常に一定とは限らず、動作中に変動することがある。すると、計時の基となる水晶発振器の発振周波数が変化すると、当然のことながら、時間の進みが変化し、他のスレーブやマスタとの時計が示す時刻と同期がとれなくなる。そして、すでに、制御運転が開始されている場合、上述した初期あわせのように上書きにより時間あわせ制御の開始時点（ｔ１）で調整対象のスレーブの時計の時刻をマスタに併せることはできない。従って、係る場合には、すでにマスタとスレーブの時計の時刻がずれていることを前提とし、係るズレ（オフセット）を加味して各時計の時間あわせを行なう必要がある。
【００６５】
そのため、時間合わせを行なうに際し、マスタとスレーブの時刻のズレ（オフセット）を求め、そのオフセット分も考慮して時間合わせを行なうとよい。すなわち、たとえば図７（ｂ）に示すように、時間合わせ制御の開始点（ｔ１）のときに、オフセットＯを求めてレジスタに記憶する。次いで、調整開始時のｔ１から、次に時間差の測定指示がきたｔ２までの区間で生じた時間差Ａを求め、ｔ２〜ｔ３の区間は、スレーブの周期が（Ｔ−２Ａ−Ｏ）となるように制御する。そして、係るｔ２〜ｔ３の区間で誤差をゼロに近づけて調整が完了すると、以降は、時の進みを両者であわせるため、以降のスレーブの周期は、Ｔ−Ａになるように調整する。
【００６６】
ところで、上記の調整アルゴリズムを用いた場合、マスタとスレーブの時間差がたまたま小さいか、時間差認識部２０の測定精度が十分に高い場合は、静定させるのは可能である。しかし、実際には、時計を合わせる間隔（ｓ）と合わせる精度（１００ｎｓ）は１千万倍のオーダーにも及ぶため、図７（ａ）に示す調整アルゴリズムでは、残差を取りきれず静定させられない場合がある。すなわち、ＭＰＵの性能から一度に演算処理できる桁数に限界があり、測定した時間差は、その測定値丁度の場合もあるが、通常は、有効桁数以下で測定結果から微小時間のズレがある。従って、仮に測定した時間差（それに基づく傾き）に測定誤差がない場合には、傾き（α）のマイナス２倍（−２α）で調整すると、ｔ３の時には時間差が０になる。そして、有効桁数以下の測定結果に表れない時間差分があるため、ｔ３の時に時間差が０にならず、また、維持フェーズにおいても徐々に時間差が開いていくおそれがある。特に、ｔ２で測定した時間差が大きい場合には、一度に演算処理可能な桁数の関係から微小時間部分の時間差を十分に認識することができない。その結果、従来のμｓ程度の時計の場合には、係る有効桁数以下の微小時間のズレは時計合わせにさほど影響を与えないものの、本実施形態のようにｎｓ単位の時計の時間あわせでは、係る微小時間のズレが大きく影響を与えることになり、高精度な時計あわせができなくなるのである。以下、具体的な調整アルゴリズムを、制御開始前のトレーニング期間や、実際の運転中時それぞれの場合に分けて説明する。
【００６７】
まず、本実施形態では、図８に示すように、粗調整フェーズの後に精密調整フェーズを設け、２段階で調整を図るようにした。２段構成で調整を行なうので、１段で１万倍の誤差を補正できるとすると、２段で１万×１万＝１億倍の誤差を効果的に補正できる。しかも、図示するように、５ステップで静定に至るので、早期に調整作業が終了する。さらに、調整量は、時間差の傾きを基準に「マイナス２倍」や、「マイナス１倍」等の演算処理により求めるので、演算の過程で乗除算を必要とせず、低機能のＭＰＵでも実装可能と言うメリットを有する。すなわち、２倍は１回の加算か、１回の２進数１ビットシフトで実現可能であるし、３倍は２回の加算で実現可能であるためである。
【００６８】
２段階での調整の具体的なアルゴリズムは、以下の通りである。まず、図８（ａ）に基づいて、実際の制御運転開始前の初期設定あわせ時における調整アルゴリズムについて説明する。まず、粗調整フェーズについては、上述した図７（ａ）に示すものと同様である。調整開始時のｔ１において、時刻の上書き等によりマスタとスレーブの時刻を一致させる。これは、たとえば、ｔ１の時点においてマスタから調整対象のスレーブに対して測定指示を送るに際し、マスタの時計の時刻情報をあわせて送る。これにともない、スレーブは、受信した時刻情報に従って自己の時計の時刻合わせを行ない、ｔ１の時点でのマスタとスレーブの時刻を一致させることができる。
【００６９】
そして、係るｔ１から、次に時間差の測定指示がきたｔ２までの区間で生じた時間差がＡとすると、その後全く補正をしないとすると、スレーブの時間は図中点線に示すように進む。本実施形態では、ｔ２の時に、ｔ１〜ｔ２の区間の傾き（Ａ／（ｔ２−ｔ１））の「マイナス２倍」を適用して補正するため、次のｔ２〜ｔ３区間では、実線で示すようにそれまでの差を打ち消すように誤差ゼロに近づく。そして、次の時間差を測定するｔ３のときには、全く修正しない場合に比べて２Ａ分だけ時間差が解消される。そして、そのときのマスタとスレーブの時計の時間差は、Ｂとする。この２回のステップにより粗調整フェーズは終了し、マスタとスレーブの時計の時間差Ｂは小さくなる。
【００７０】
次のステップ（区間ｔ３〜ｔ４）では、区間ｔ１〜ｔ２までの傾きの「マイナス１倍」に設定し、再度、傾きを精密に測定する。つまり、ｔ４の時の時間差Ｃを測定し、ｔ３の時の時間差Ｂとの差分（Ｃ−Ｂ）を周期（Ｔ：ｔ４−ｔ３）で除算して傾きを求める。このようにして求めた傾きから、次のステップ（区間ｔ４〜ｔ５）でぴったり誤差ゼロにするための傾きを計算し、当該次のステップで適用する。ｔ３，ｔ４において求めた時間差Ｂ，Ｃは、いずれも時間差の絶対値が小さくなっているので、ｔ２の時に比べて精度良く時間差を求めることができ、精密調整が可能となる。なお、このぴったり誤差ゼロにするための傾きは、演算処理によって求めても良いし、予め用意したルックアップテーブルを用いて演算を実行することなく求めても良い。
【００７１】
その後、前２回のステップ（ｔ３の時とｔ４の時）に計算した傾きを再調整し、ｔ５以降の維持フェーズでは、残差を限りなくゼロに維持する。この５クロック目（ｔ６）で４クロック目（ｔ５）との差から「静定」していることが確認できる。
【００７２】
係る処理を実行するための具体的なアルゴリズムは、時間同期機能を構成する各処理部２０〜２２が、図９に示すフローチャートを実行することで行なう。すなわち、まず、時間差認識部２０は、マスタから指示されたタイミングで時間差Ａを測定する（Ｓ１１）。この処理ステップＳ１１は、図８（ａ）におけるｔ１〜ｔ２の区間に対応する。時間差調整量算出部２１は、時間差認識部２０が測定した時間差Ａを取得し、その時間差が基準値以内かを判断する（Ｓ１２）。この基準値は、自己の時計をマスタに合わせるための補正が必要か否かを判定するもので、予め設定してある。基準値以内（Ｓ１２でＹｅｓ）の場合には、補正・調整作業は不要であるので、粗調整等することなくそのまま処理を終了する。
【００７３】
一方、時間差Ａが基準値以上の場合（Ｓ１２でＮｏ）には、時間同期機能は、マスタの周期Ｔ（＝ｔ２−ｔ１）が自機で周期Ｔ−２Ａとなるように周波数・波数を調整する（Ｓ１３）。つまり、時間差調整量算出部２１は、処理ステップＳ１１で求めた時間差から、その周期Ｔ（ｔ１−ｔ２の区間）の自機の時計の時間差の傾きを求め、その傾きの「マイナス２倍」を調整量として決定し、周波数・波数調整部２２は、自機の時計の進みが、その「マイナス２倍」の傾きになるように調整する。この処理ステップＳ１３は、図８（ａ）におけるｔ２〜ｔ３の区間の調整処理に対応する。
【００７４】
時間差認識部２０は、マスタから指示されたタイミング（周期Ｔ経過）で時間差Ｂを測定する（Ｓ１４）。この処理ステップＳ１４は、図８（ａ）におけるｔ３のタイミングで時間差を求めることに対応する。時間差調整量算出部２１は、時間差認識部２０が測定した時間差Ｂを取得し、その時間差が基準値以内か否かを判断する（Ｓ１５）。基準値以内（Ｓ１５でＹｅｓ）の場合には、処理ステップＳ１３の粗調整による補正処理よって時計あわせが成功したことを意味するので、以降、時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ）となるように周波数・波数を調整する（Ｓ１６）。つまり、時間差調整量算出部２１は、処理ステップＳ１１で求めた時間差から求めたその周期Ｔ（ｔ１−ｔ２の区間）の自機の時計の傾きの「マイナス１倍」を調整量として決定し、周波数・波数調整部２２は、自機の時計の進みが、その「マイナス１倍」の傾きになるように調整する。この処理で、今回の調整作業は終了し、そのまま維持フェーズとなる。なお、処理ステップＳ１５の分岐判断における基準値は、処理ステップＳ１２の分岐判断における基準値よりも小さい値となる。
【００７５】
一方、時間差Ｂが基準値以上の場合（Ｓ１５でＮｏ）には、処理ステップＳ１７に飛び、図８（ａ）の精密調整フェーズに移行する。すなわち、時間同期機能は、マスタの周期Ｔが自機で周期Ｔ−Ａとなるように周波数・波数を調整する（Ｓ１７）。つまり、時間差調整量算出部２１は、処理ステップＳ１１で求めた時間差から求めたその周期Ｔの自機の時計の傾きの「マイナス１倍」を調整量として決定し、周波数・波数調整部２２は、自機の時計の進みが、その「マイナス１倍」の傾きになるように調整する。この処理ステップＳ１７は、図８（ａ）におけるｔ３〜ｔ４の区間の調整処理に対応する。
【００７６】
次いで、時間差認識部２０は、マスタから指示されたタイミング（周期Ｔ経過：ｔ４）で時間差Ｃを測定する（Ｓ１８）。そして、時間差調整量算出部２１は、マスタの周期Ｔが、自機で周期（Ｔ−Ａ−２Ｃ＋Ｂ）となるような調整量（傾き）を算出し、周波数・波数調整部２２は、求めた調整量に基づき周波数・波数を調整する。この処理ステップＳ１９は、図８（ａ）におけるｔ４〜ｔ５の区間の調整処理（誤差をゼロに調整する処理）に対応する。
【００７７】
次いで、時間差認識部２０は、マスタから指示されたタイミング（周期Ｔ経過）で時間差Ｄを測定する（Ｓ２０）。この処理ステップＳ２０は、図８（ａ）におけるｔ５のタイミングで時間差を求めることに対応する。時間差調整量算出部２１は、時間差認識部２０が測定した時間差Ｄを取得し、その時間差が基準値以内か否かを判断する（Ｓ２１）。ここでの基準値は、ほぼゼロに近い値を採り、マスタと自機（スレーブ）の時計が一致している（調整完了）か否かの判定基準となる。基準値以内（Ｓ２１でＹｅｓ）の場合には、処理ステップＳ１９の精密調整による補正処理よって時計あわせが成功したことを意味するので、以降のステップでは、時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ−Ｃ＋Ｂ）となるように周波数・波数を調整する（Ｓ２２）。一方、基準値を超えている場合（Ｓ２１でＮｏ）には、時間同期機能は、処理ステップＳ１１に戻り、次のマスタからの指示に基づく新たな調整に備える。
【００７８】
ところで、粗調整を行なう場合、調整開始（ｔ１）から周期Ｔ経過後（ｔ２）までにマスタと自機の時計の時間差を求め、その求めた時間差（傾き）から次の周期の調整量を設定するが、このとき、調整量は、演算処理等の関係からｎ倍（ｎは整数）のバイアスとするのが好ましい。すると、図１０に示すように、特徴量は、いくつかの態様が考えられる。まず、マスタとスレーブとの時間差（図中のＡ）を早期に限りなくゼロにする目的からは、「正のバイアスをかける」方式や「４倍以上の逆バイアスを掛ける」方式は、時間差を増やす方向に調整されるので好ましくない。同様に、「バイアスなしのまま時間差を複数回測定する」方式は、無駄な処理であるので好ましくない。
【００７９】
そこで、「マイナス１倍」，「マイナス２倍」，「マイナス３倍」の３種類が好ましい。さらに、２進数の場合、「マイナス１倍」，「マイナス２倍」は、演算の過程で乗除算を必要としないので、計算負荷が少なくて済み、ＭＰＵの処理能力が小さくても対応できるので、より好ましい。更に、時間差を測定する分解能は、時間差認識部２０の実装方法やＭＰＵ内レジスタのビット長などによって変わる。仮に１６ビットＭＰＵと仮定すると１演算で扱える自然数は（２＾１６−１）＝６５５３５までである。この制約から仮に分解能を測定した時間差の１万分の１とすると、測定した時間差が小さければ小さいほど、分解能を小さくできる。従って、調整量を「マイナス２倍」とする本実施形態のものは、図８（ａ）からも明らかなとおり、Ａ（粗調整）にくらべてＢとＣ（精密調整）は十分小さくなり、ＢとＣの分解能を小さくできるので好ましい。
【００８０】
図８（ｂ）は、実際の制御運転時における調整アルゴリズムを示している。まず、調整開示時（ｔ１）において、マスタの時計の時刻と、スレーブの時計の時刻の差であるオフセットＯを求める。この求めたオフセットＯは、レジスタ等にセットして記憶保持する。そして、ｔ２→ｔ３→ｔ４までは、図８（ａ）に示した調整と同様にマスタとスレーブの時間差Ａ，Ｂ，Ｃを求めるとともに、Ａ，Ｂを用いた調整（粗調整フェーズ，精密調整フェーズの前段）を行なう。つまり、ｔ２の時に、ｔ１〜ｔ２の区間の傾き（Ａ／（ｔ２−ｔ１））の「マイナス２倍」を適用して補正し、次のｔ２〜ｔ３区間では、実線で示すようにそれまでの時間差Ａを打ち消すように誤差ゼロ（オフセット分を除く）に近づく。そして、次の時間差を測定するｔ３のときのマスタとスレーブの時計の時間差Ｂを求め、次のステップ（区間ｔ３〜ｔ４）では、区間ｔ１〜ｔ２までの傾きの「マイナス１倍」に設定し、再度、傾きを精密に測定する。そして、ｔ４の時の時間差Ｃを測定する。
【００８１】
また、このとき求める時間差Ａ，Ｂ，Ｃは、前回測定指示が来たときから今回測定指示が来たときまでに生じた時間差である。この時間差は、マスタの時計における時の進み方（時のあゆみ）と、スレーブの時計における時の進み方のずれであり、仮に両者で時刻が異なっていても（オフセットＯがあったとしても）、両時計の時間経過の進み方が一致している場合には、時間差はゼロとなり、図８（ｂ）に示す図では、スレーブ時間軸は、マスタの時間と平行になる。
【００８２】
そして、ｔ４からｔ５に遷移する際に、オフセットＯを考慮して、「（Ｃ−Ｂ）＋Ｃ＋Ｏ」だけ傾きを補正することにより、オフセットを取り除くことができる。なお、このオフセットＯを考慮した傾きを求めるためには、ｔ４までに行なった「−２倍」や「−１倍」等と異なり、割り算が必要となるので、演算処理が煩雑となる。なお、ｔ２からｔ３に遷移する際にオフセット分を考慮して傾きを設定しないのは、ｔ１からｔ２までの傾きを求め、マイナス２倍の傾きでＢやＣをＡに比べ十分小さくするためである。また、これにより、少なくとも、マスタとスレーブの時のあゆみのずれは小さくなる。つまり、ｔ３，ｔ４において求めた時間差Ｂ，Ｃは、いずれも時間差の絶対値がＡに比べて小さくなっているので、ｔ２の時に比べて精度良く時間差を求めることができ、精密調整が可能となる。
【００８３】
その後、前２回のステップ（ｔ３の時とｔ４の時）に計算した傾きを再調整し、ｔ５以降の維持フェーズでは、残差を限りなくゼロに維持する。この５クロック目（ｔ６）で４クロック目（ｔ５）との差から「静定」していることが確認できる。
【００８４】
係る処理を実行するための具体的なアルゴリズムは、時間同期機能を構成する各処理部２０〜２２が、図２１に示すフローチャートを実行することで行なう。すなわち、まず、時間差認識部２０は、マスタから指示されたタイミング（ｔ１）で、マスタとスレーブの現在時刻の差（オフセット：Ｏ）を求め、その求めた値をレジスタに格納する（Ｓ１０）。このオフセットを求める処理は、上述した図２０に示す手順に従って行なうことができる。
【００８５】
つまり、まず、マスタが、スレーブに対して「Ｓｙｎｃ」メッセージを送信するとともに、この送信したときの自身の時計のタイムスタンプ（ＴＳ１）を記録する。スレーブは、このＳｙｎｃメッセージを受信すると、その受信したときの自身の時計のタイムスタンプ（ＴＳ２）を記録する。次に、マスタがスレーブに対して「Ｆｏｌｌｏｗ＿ｕｐ」メッセージを送信する。このメッセージの中には、先に Ｓｙｎｃメッセージを送出したときのマスタのタイムスタンプ（ＴＳ１）が含まれる。スレーブは、これら２つのタイムスタンプＴＳ１，ＴＳ２をもとに、マスタの時計の時刻とスレーブの時計の時刻との差分、つまり、オフセットＯを求めることができる。なお、本実施形態では、オフセットＯを求めたら、初期のトレーニング期間と相違して上書き等によってすぐにオフセットを修正することはないので、伝搬遅延もすぐに求めることはない。また、一度伝搬遅延を求めたならば、ＰＡＣ１が連結するユニットの接続構成に変更がない限り、伝搬遅延は、さほど大きく変動することもないので、オフセットを求めて時間合わせを行なうごとに伝搬遅延を求める必要はない。
【００８６】
次に、時間差認識部２０は、マスタから指示されたタイミングで時間差Ａを測定する（Ｓ１１）。この処理ステップＳ１１は、図８（ｂ）におけるｔ１〜ｔ２の区間に対応する。また、時間差Ａは、例えば、マスタから送信されてくる時間差の測定指示ｔ１，ｔ２，ｔ３，……の間隔Ｔが常に一定で、既知とすると、スレーブは、前回の測定指示（この場合ｔ１）を受信したときの自己の時計の値と、今回の測定指示（この場合ｔ２）を受信したときの自己の時計の値の差から、スレーブにおける経過時間を求め、その求めた経過時間とＴとの差分から時間差Ａを求めることができる。これは、以降の時間差Ｂ，Ｃ等についても同様である。また、マスタ側にて前回測定指示を送信してから今回送信指示を送信するまでの間隔Ｔをその都度マスタから送信してくるようにしてもよい。
【００８７】
また、処理ステップＳ１０と処理ステップＳ１１の実行タイミングであるが、処理ステップＳ１０は、ｔ１におけるオフセットを求め、処理ステップＳ１１はｔ１〜ｔ２における時間差を求めることから、実際には、処理ステップＳ１０と処理ステップＳ１１とは、ほぼ同時に処理を開始し処理ステップＳ１０が先に処理を完了するようになる。
【００８８】
そして、ｔ２からｔ４までの区間では、図８（ａ）の場合と同様であることから、そのアルゴリズムも基本的に同様である。すなわち、処理ステップＳ１２からＳ１４までは、図９に示す対応するステップ番号の処理ステップと同様の処理を実行する。そして、処理ステップＳ１４にて求めた時間差Ｂが、基準値以内（Ｓ１５でＹｅｓ）の場合には、処理ステップＳ１３の粗調整による補正処理によって、マスタとスレーブ間の時の歩み（周期の長さ）の調整が成功したことを意味する。よって、次の周期（ｔ３からｔ４）では、マスタとスレーブの時計の時刻を合わせるべく、スレーブの時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ−Ｏ）となるように周波数・端数を調整する（Ｓ１６′）。そして、それ以降（ｔ４以降）、時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ）となるように周波数・波数を調整する（Ｓ１６）。
【００８９】
一方、時間差Ｂが基準値以上の場合（Ｓ１５でＮｏ）には、処理ステップＳ１７に飛び、次の周期での調整に移行する。処理ステップＳ１７，Ｓ１８は、上述した図９に示す対応するステップ番号の処理ステップと同様の処理を実行する。そして、処理ステップＳ１９′では、オフセットＯを考慮した補正を行なうことから、時間差調整量算出部２１は、マスタの周期Ｔが、自機で周期（Ｔ−Ａ−２Ｃ＋Ｂ−Ｏ）となるような調整量（傾き）を算出し、周波数・波数調整部２２は、求めた調整量に基づき周波数・波数を調整する。この処理ステップＳ１９′は、図８（ａ）におけるｔ４〜ｔ５の区間の調整処理（誤差をゼロに調整する処理）に対応する。
【００９０】
次いで、時間差認識部２０は、マスタから指示されたタイミング（周期Ｔ経過）で時間差Ｄを測定する（Ｓ２０）。この処理ステップＳ２０は、図８（ａ）におけるｔ５のタイミングで時間差を求めることに対応する。この時間差Ｄは、スレーブの時計の時刻と、マスタの時計の時刻との差である。この時間差Ｄは、例えば、オフセットＯを算出する際に取得したｔ１におけるマスタの時刻であるタイムスタンプ（ＴＳ１）に、ｔ５までのマスタの時計の経過時間（４Ｔ）を加算した値と、スレーブの時計の現在の時刻とを比較することで簡単に求められる。また、図２０に示すようにオフセットを求める際に用いた方式でマスタのタイムスタンプＴＳ１と、スレーブのタイムスタンプＴＳ２とを取得し、ＴＳ１に伝搬遅延を加算した時刻と、ＴＳ２との差を求めることでマスタとスレーブの時間差を求めることもできる。
【００９１】
時間差調整量算出部２１は、時間差認識部２０が測定した時間差Ｄを取得し、その時間差が基準値以内か否かを判断する（Ｓ２１）。ここでの基準値は、ほぼゼロに近い値を採り、マスタと自機（スレーブ）の時計が一致している（調整完了）か否かの判定基準となる。基準値以内（Ｓ２１でＹｅｓ）の場合には、処理ステップＳ１９′の精密調整による補正処理よって時計あわせが成功したことを意味するので、以降のステップでは、時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ−Ｃ＋Ｂ）となるように周波数・波数を調整する（Ｓ２２）。一方、基準値を超えている場合（Ｓ２１でＮｏ）には、時間同期機能は、処理ステップＳ１０に戻り、次のマスタからの指示に基づく新たな調整に備える。
【００９２】
図１１以降は、粗調整フェーズ及び又は精密調整フェーズにおける調整量を変更した場合の変形例を示している。図１１（ａ），（ｂ）に示す変形例では、粗調整フェーズの際の調整量を、傾きのマイナス１倍に設定している点で、上述の実施形態と相違する。つまり、図９に示すフローチャートに処理ステップＳ１３が、「マスタの周期Ｔが自機で周期Ｔ−Ａとなるように周波数・波数を調整」を実行するようにする。その後の精密調整フェーズは、図７，図８に示す実施形態と同様である。図１１から明らかなように、この変形例でも、５ステップで静定に至るので、早期に調整作業が終了する。なお、図１１（ａ）が、トレーニング期間における調整のため、ｔ１時の上書き処理によりマスタとスレーブの時刻を一旦合わせ、その後の調整でマスタとスレーブの時計の時のあゆみを同一にすることで、最終的に両者の絶対時刻を合わせるものである。また、図１１（ｂ）が、実際の制御運転中における時間合わせの調整を行なうもので、ｔ１におけるオフセットＯを求め、ｔ４からｔ５の区間で、オフセット分も合わせて絶対時刻合わせを行なうものである。
【００９３】
図１２（ａ），（ｂ）は、別の変形例を示している。この変形例では、図８，図９に示す実施形態における調整量を、粗調整フェーズと精密調整フェーズで逆にしている。具体的には、粗調整フェーズ実行中のｔ２の時の調整量を、時間差Ａに基づく傾きのマイナス１倍に設定し、精密調整フェーズ実行中のｔ３の時の調整量を時間差Ａに基づく傾きのマイナス２倍に設定している。つまり、図９に示すフローチャートに処理ステップＳ１３が、「マスタの周期Ｔが自機で周期Ｔ−Ａとなるように周波数・波数を調整」を実行するようにする。更に、図９に示すフローチャートに処理ステップＳ１７が、「マスタの周期Ｔが自機で周期Ｔ−２Ａとなるように周波数・波数を調整」を実行するようにする。図１２（ａ），（ｂ）から明らかなように、この変形例でも、５ステップで静定に至るので、早期に調整作業が終了する。そして、この変形例でも、同図（ａ）がトレーニング期間における調整アルゴリズムで、同図（ｂ）が制御運転時における調整アルゴリズムである。
【００９４】
図１３（ａ），（ｂ）は、別の変形例を示している。この変形例では、ｔ２で測定した時間差Ａに基づく粗調整フェーズと精密調整フェーズで行なう調整量を共に、「マイナス２倍」に設定している。これにともない、図９に示すフローチャートに処理ステップＳ１７が、「マスタの周期Ｔが自機で周期Ｔ−２Ａとなるように周波数・波数を調整」を実行するようにする。その他の処理・機能は、図７，図８に示す実施形態と同様である。図１３から明らかなように、この変形例でも、５ステップで静定に至るので、早期に調整作業が終了する。なお、この図１３でＢを正の値とする場合、Ｃは矢印の向きが逆のため、負の値となる。この点は、以下の変形例の図でも同様である。
【００９５】
図１４（ａ），（ｂ）は、さらに別の変形例を示している。この変形例では、ｔ２で測定した時間差Ａに基づく粗調整フェーズの調整量を「マイナス３倍」に設定し、ｔ２で測定した時間差Ａに基づく精密調整フェーズで行なう調整量を、「１倍」に設定している。これにともない、図９に示すフローチャートに処理ステップＳ１３が、「マスタの周期Ｔが自機で周期Ｔ−３Ａとなるように周波数・波数を調整」を実行するようにし、図９に示すフローチャートに処理ステップＳ１７が、「マスタの周期Ｔが自機で周期Ｔとなるように周波数・波数を調整」を実行するようにする。その他の処理・機能は、図７，図８に示す実施形態と同様である。図１４（ａ），（ｂ）から明らかなように、この変形例でも、５ステップで静定に至るので、早期に調整作業が終了する。そして、この変形例でも、同図（ａ）がトレーニング期間における調整アルゴリズムで、同図（ｂ）が制御運転時における調整アルゴリズムである。
【００９６】
図１５（ａ），（ｂ）は、さらに別の変形例を示している。この変形例では、ｔ２で測定した時間差Ａに基づく粗調整フェーズの調整量を「マイナス３倍」に設定し、ｔ２で測定した時間差Ａに基づく精密調整フェーズで行なう調整量を、「マイナス１倍」に設定している。これにともない、図９に示すフローチャートに処理ステップＳ１３が、「マスタの周期Ｔが自機で周期Ｔ−３Ａとなるように周波数・波数を調整」を実行するようにする。その他の処理・機能は、図７，図８に示す実施形態と同様である。図１５（ａ），（ｂ）から明らかなように、この変形例でも、５ステップで静定に至るので、早期に調整作業が終了する。そして、この変形例でも、同図（ａ）がトレーニング期間における調整アルゴリズムで、同図（ｂ）が制御運転時における調整アルゴリズムである。
【００９７】
図２２は、制御運転時にオフセットＯを考慮した調整アルゴリズムを行なう図８（ｂ）に対応する更に別の変形例を示している。すなわち、図８（ｂ）の変形例では、ｔ４とｔ５の間で、一気に誤差を修正するため、時の刻みが飛ばないとはいえ、オフセットが大きい場合には急な変更により、各種ＣＰＵ動作に不具合を生じる可能性がある。そこで、本変形例では、オフセットが大きい場合に、１周期Ｔで調整することをあきらめ、ｎ周期かけて緩やかに調整を図るようにした。すなわち、時間差認識部２０は、ｔ（−ｎ）のときにオフセットＯ′を求める。このＯ′が一定以上大きい値の場合、ｎ周期かけてマスタとスレーブの時計の時間差を小さくする。つまり、予め決めた１周期当たりの調整量（傾き）を用いて補正する。ここで、ｎは、１周期当たりで修正できる時間差（例えば、Ａ）でＯ′を除算した値となる。但し、係る除算した結果、割り切れるとは限らないので、最初にオフセットを求めてからｎ周期が経過したｔ１の時点では、マスタとスレーブの時計の時刻の時間差（残る残差）がＥとなる。そして、そのまま同じ傾きでさらに１周期経過してｔ２になると、マスタとスレーブの時計の時刻の差はＡ＋Ｅとなる。
【００９８】
そして、このときのＡは、図８（ｂ）のｔ２におけるＡと同様であり、Ｅは図８（ｂ）のｔ１におけるオフセットＯと同じといえる。従って、以降は、図８（ｂ）の変形例と同様の手順に従い、ｔ４まで補正処理が進み、ｔ４から ｔ５ に移るときにＥを吸収する。このとき、Ｅは小さいので、ｔ４からｔ５の区間における変化は小さく、ｔ（−ｎ）からｔ１への調整も、ｎ周期とたっぷり時間があるので、変化を小さくすることができる。よって、時間が掛かるものの、滑らかな調整により時刻を合わせることができる。
【００９９】
なお、上記の説明では、ｔ（−ｎ）からｔ１までの期間における周期ごとの変化・調整量を固定としたため、オフセットの値によりｎの値が変動するが、ｎある程度大きい値に設定しておき、オフセットＯ′をｎで除算することで、１周期当たりの変化量を求めるようにしても良い。
【０１００】
また、具体的な図示は省略するが、図１１以降の他の変形例においても、上記の図２２に示すｔ１前の所定区間を用いてマスタとスレーブの時計の時刻のずれを小さくした後で、調整する方式を適用することができるのはもちろんである。
【０１０１】
図１６から図１９は、別の実施形態並びにその変形例を示している。図１６，図１７に基づいて基本となる実施形態を説明する。本実施形態では、時間差認識部２０が非常に高い時間ズレの分解能が得られるものを用い、上述した実施形態並びに変形例の調整アルゴリズムの一部を簡略化している。
【０１０２】
図１６（ａ）に示すように、ｔ１〜ｔ３までの粗調整フェーズは、上述のトレーニング期間における実施形態と同様である。つまり、スレーブは、ｔ１の時にマスタの時計の時刻（タイムスタンプ）を取得して自己の時計に上書きし、両者の時刻を一旦合わせる。そして、ｔ２の時の時間差Ａに基づく傾きのマイナス２倍の傾きを、ｔ２〜ｔ３のステップの際の調整量とする。そして、時間差調整量算出部２１は、この粗調整フェーズが終了するｔ３の時に測定する時間差Ｂと、前回測定した時間差Ａに基づいてぴったり誤差ゼロにするための調整量を求め、次のステップ（ｔ３〜ｔ４）の際に調整を図る。これにより、ｔ４の時には残差が限りなくゼロに近付いているので、以後、その状態を維持する。この実施形態によれば、４クロック目で３クロック目との差から「静定」していることが確認できる。つまり、４ステップで静定に至るので、本実施形態は、さらに早期に調整作業が終了する。
【０１０３】
係る処理を実行するための具体的なアルゴリズムは、時間同期機能を構成する各処理部２０〜２２が、図１７に示すフローチャートを実行することで行なう。すなわち、まず、時間差認識部２０は、マスタから指示されたタイミングで時間差Ａを測定する（Ｓ３１）。この処理ステップＳ３１は、図１６（ａ）におけるｔ１〜ｔ２の区間に対応する。時間差調整量算出部２１は、時間差認識部２０が測定した時間差Ａを取得し、その時間差が基準値以内か否かを判断する（Ｓ３２）。基準値以内（Ｓ３２でＹｅｓ）の場合には、補正・調整作業は不要であるので、粗調整等することなくそのまま処理を終了する。
【０１０４】
一方、時間差Ａが基準値以上の場合（Ｓ３２でＮｏ）には、時間同期機能は、マスタの周期Ｔ（＝ｔ２−ｔ１）が自機で周期Ｔ−２Ａとなるように周波数・波数を調整する（Ｓ３３）。つまり、時間差調整量算出部２１は、処理ステップＳ３１で求めた時間差から、その周期Ｔ（ｔ１−ｔ２の区間）の自機の時計の時間差の傾きを求め、その傾きの「マイナス２倍」を調整量として決定し、周波数・波数調整部２２は、自機の時計の進みが、その「マイナス２倍」の傾きになるように調整する。この処理ステップＳ３３は、図１６（ａ）におけるｔ２〜ｔ３の区間の調整処理に対応する。
【０１０５】
時間差認識部２０は、マスタから指示されたタイミング（周期Ｔ経過）で時間差Ｂを測定する（Ｓ３４）。時間差調整量算出部２１は、時間差認識部２０が測定した時間差Ｂを取得し、その時間差が基準値以内か否かを判断する（Ｓ３５）。基準値以内（Ｓ３５でＹｅｓ）の場合には、処理ステップＳ３３の粗調整による補正処理よって時計あわせが成功したことを意味するので、以降、時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ）となるように周波数・波数を調整する（Ｓ３６）。つまり、時間差調整量算出部２１は、処理ステップＳ３１で求めた時間差から求めたその周期Ｔ（ｔ１−ｔ２の区間）の自機の時計の傾きの「マイナス１倍」を調整量として決定し、周波数・波数調整部２２は、自機の時計の進みが、その「マイナス１倍」の傾きになるように調整する。この処理で、今回の調整作業は終了し、そのまま維持フェーズとなる。
【０１０６】
一方、時間差Ｂが基準値以上の場合（Ｓ３５でＮｏ）には、処理ステップＳ３７に飛び、時間差調整量算出部２１は、マスタの周期Ｔが自機で周期Ｔ−Ａ−２Ｂとなるような調整量（傾き）を算出し、周波数・波数調整部２２は、求めた調整量に基づき周波数・波数を調整する（Ｓ３７）。この処理ステップＳ３７は、図１６（ａ）におけるｔ３〜ｔ４の区間の調整処理に対応する。
【０１０７】
次いで、時間差認識部２０は、マスタから指示されたタイミング（周期Ｔ経過：ｔ４）で時間差Ｃを測定する（Ｓ３８）。時間差調整量算出部２１は、時間差認識部２０が測定した時間差Ｃを取得し、その時間差が基準値以内か否かを判断する（Ｓ３９）。ここでの基準値は、ほぼゼロに近い値を採る。基準値以内（Ｓ３９でＹｅｓ）の場合には、処理ステップＳ３７の調整による補正処理よって時計あわせが成功したことを意味するので、以降、時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ−Ｂ）となるように周波数・波数を調整する（Ｓ４０）。一方、基準値を超えている場合には、時間同期機能は、処理ステップＳ３１に戻り、次のマスタからの指示に基づく新たな調整に備える。
【０１０８】
次に、実際の制御運転時の調整アルゴリズムを説明する。図１６（ｂ）に示すように、まず、調整開示時（ｔ１）において、マスタの時計の時刻と、スレーブの時計の時刻の差であるオフセットＯを求める。この求めたオフセットＯは、レジスタ等にセットして記憶保持する。そして、時間差認識部２０は、ｔ１からｔ２までに生じたマスタとの時間差Ａを求める。このｔ２の時の時間差Ａに基づく傾きのマイナス２倍の傾きを、ｔ２〜ｔ３のステップの際の調整量とする。時間差調整量算出部２１は、粗調整フェーズが終了するｔ３の時に測定する時間差Ｂと、前回測定した時間差Ａと、オフセットＯに基づいてぴったり誤差ゼロにするための調整量を求め、次のステップ（ｔ３〜ｔ４）の際に調整を図る。これにより、ｔ４の時には残差が限りなくゼロに近付いているので、以後、その状態を維持する。この実施形態によれば、４クロック目で３クロック目との差から「静定」していることが確認できる。つまり、４ステップで静定に至るので、本実施形態は、さらに早期に調整作業が終了する。
【０１０９】
係る処理を実行するための具体的なアルゴリズムは、時間同期機能を構成する各処理部２０〜２２が、図２３に示すフローチャートを実行することで行なう。すなわち、まず、時間差認識部２０は、マスタから指示されたタイミング（ｔ１）で、マスタとスレーブの現在時刻の差（オフセット：Ｏ）を求め、求めた値をレジスタに格納する（Ｓ３０）。このオフセットの求める処理は、上述した図２０に示す手順に従って行なうことができる。
【０１１０】
次に、時間差認識部２０は、マスタから指示されたタイミングで時間差Ａを測定する（Ｓ３１）。この処理ステップＳ３１は、図１６（ｂ）におけるｔ１〜ｔ２の区間に対応する。そして、この時間差Ａを求める処理は、例えば図２１の処理ステップＳ１１と同様に、オフセット分を除き、ｔ１からｔ２まででマスタの時計の時間の進みに対するスレーブの時計の時間の進みの相違（差分）を求める。
【０１１１】
これ以降、処理ステップＳ３２〜Ｓ３４までの処理ステップは、図１７に示すものと同様である。そして、処理ステップＳ３４にて求めた時間差Ｂが、基準値以内か否かを判断する（Ｓ３５）。そして、基準値以内（Ｓ３５でＹｅｓ）の場合には、処理ステップＳ３３の粗調整による補正処理によってマスタとスレーブ間の時の歩み（周期の長さ）の調整が成功したことを意味する。よって、次の周期（ｔ２からｔ３）では、マスタとスレーブの時計の時刻を合わせるべく、スレーブの時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ−Ｏ）となるように周波数・端数を調整する（Ｓ３６′）。そして、それ以降（ｔ４以降）、時間同期機能は、マスタの周期Ｔが自機で周期（Ｔ−Ａ）となるように周波数・波数を調整する（Ｓ３６）。
【０１１２】
一方、時間差Ｂが基準値以上の場合（Ｓ３５でＮｏ）には、処理ステップＳ３７′に飛び、時間差調整量算出部２１は、マスタの周期Ｔが自機で周期Ｔ−Ａ−２Ｂ−Ｏとなるような調整量（傾き）を算出し、周波数・波数調整部２２は、求めた調整量に基づき周波数・波数を調整する（Ｓ３７′）。この処理ステップＳ３７′は、図１６（ｂ）におけるｔ３〜ｔ４の区間の調整処理に対応する。そして、これ以降は、処理ステップＳ３８からＳ４０を実行する。
【０１１３】
図１８以降は、調整量を変更した場合の変形例を示している。図１８（ａ），（ｂ）に示す変形例では、時間差Ａに基づく調整量を、傾きのマイナス１倍に設定している点で、上述の実施形態と相違する。つまり、図１７に示すフローチャートに処理ステップＳ３３が、「マスタの周期Ｔが自機で周期（Ｔ−Ａ）となるように周波数・波数を調整」を実行するようにする。その後の調整フェーズは、図１６，図１７に示す実施形態と同様である。図１８から明らかなように、この変形例でも、４ステップで静定に至るので、早期に調整作業が終了する。そして、この変形例でも、同図（ａ）がトレーニング期間における調整アルゴリズムで、同図（ｂ）が制御運転時における調整アルゴリズムである。
【０１１４】
図１９（ａ），（ｂ）は、さらに別の変形例を示している。この変形例では、ｔ２で測定した時間差Ａに基づく調整量を「マイナス３倍」に設定している。これにともない、図１７に示すフローチャートに処理ステップＳ３３が、「マスタの周期Ｔが自機で周期（Ｔ−３Ａ）となるように周波数・波数を調整」を実行するようにする。その他の処理・機能は、図１６，図１７に示す実施形態と同様である。図１９（ａ），（ｂ）から明らかなように、この変形例でも、４ステップで静定に至るので、早期に調整作業が終了する。そして、この変形例でも、同図（ａ）がトレーニング期間における調整アルゴリズムで、同図（ｂ）が制御運転時における調整アルゴリズムである。
【０１１５】
図２４は、上述したようにマスタとスレーブの時間合わせが完了した後で行なう同期制御の一例を示している。図２４（ａ）は、相対制御の例を示す。この相対制御は、マスタがブロードキャスト或いはマルチキャストによる一斉同報により、各スレーブに対してパルス（タイミング）を通知する。図２０の処理を実行することで、各スレーブは、マスタからの伝搬遅延を認識している。すると、各スレーブは、マスタからのパルスを受信すると、その受信した時刻から伝搬遅延を引いた時刻が、当該パルスを送信した時刻であることがわかり、各スレーブは係るパルスを送信した時刻にあらかじめ指定された待ち時間を経過後に動作する。これにより、各スレーブは、当該時間経過後に一斉に同期して所定の制御動作を行うことができる。
【０１１６】
また、図２４（ｂ）は、絶対時刻による同期制御を示している。マスタは、ブロードキャスト或いはマルチキャストを用いた一斉同報或いはユニキャスト（１対１）通信を用いて個々のスレーブに対して動作を開始する時刻を通知する。この通知を受けたスレーブは、受信した時刻にきたならば一斉に同期して所定の制御動作を行なうことができる。
【０１１７】
図２５は、本発明の更に別の実施形態を示している。上述したとおり、各スレーブは、マスタからの指示に従い、自機の時計をマスタの時計に合わせる処理を行なう。そこで、本実施形態では、個々のスレーブがその実行結果（時間差）をマスタに伝えるようにし、マスタ側では、各スレーブから取得した時間差（ズレ量）に基づき、異常・故障を検出する機能を備えた。
【０１１８】
マスタは、各スレーブから取得した時間差（ズレ量）を、メモリ等に記憶保持させておき、その過去の履歴と傾向が異なる場合に、何かしらの異常があると判断する。ここで、「過去履歴と傾向が異なる」とは、具体的には、スレーブ毎に過去Ｘ回（Ｘは１６など）の時間差の標準偏差σを求め、今回測定した該当スレーブの時間差が±σや±２σを超えていた場合や、スレーブ毎に前回の時間差を記録しておき、今回測定した該当スレーブの時間差が前回までの平均値の３倍といった閾値を超えていた場合などにより判定できる。もちろん、マスタの時計が壊れる場合もあり、係る場合には、全てのスレーブの時間差が過去履歴と傾向が異なることになるので、その状態から判定することができる。更に、図２に示したように、各スレーブがバスに接続された構成の場合、バスのある点に障害があると、その障害点を境にして、マスタより距離が遠いスレーブはすべて計測値が異常となる可能性がある。従って、複数のスレーブが同時に障害を報告してきた場合、実際の接続構成に照らして、バスの障害点を予測することも可能である。
【０１１９】
そこで、本実施形態では、マスタとなるＣＰＵユニット２のＭＰＵ２ａに、図２６に示すフローチャートを実施する機能（異常検出機能）を実装した。すなわち、まず前提として、マスタは、周期Ｔで所定のスレーブに対して時計あわせのための時間差測定指示を発するので、各スレーブは、その指示に対するレスポンスとして、自己が測定した時間差情報をマスタに返す。そこで、マスタは、そのレスポンスとして返されてきた各スレーブの時間差を取得し、スレーブ毎に過去Ｘ回の時間差の履歴を保持する（Ｓ４１）。マスタは、過去Ｘ回の時間差の情報から、標準偏差を求めておき、今回取得したスレーブ毎の時間差は標準偏差以内か否かを判断する（Ｓ４２）。そして、全てが標準偏差以内に収まっている場合には、マスタは、異常なしと判断し、システムにその旨を通知する（Ｓ４３）。この場合の通知先のシステムは、全てのスレーブであってもよいし、外部の各種の装置・機器としても良い。
【０１２０】
一方、標準偏差を超えたスレーブがあった場合（Ｓ４２でＮｏ）、マスタは、該当するスレーブの数を検出する。そして、マスタは、１台のスレーブの時間差だけが標準偏差より大きい場合には、そのスレーブが異常と判断して、“当該スレーブに異常の可能性があり”とシステムに通知する（Ｓ４４，Ｓ４５）。
【０１２１】
また、８割以上のスレーブの時間差が標準偏差より大きい場合、マスタは、マスタ自身の異常の可能性があると判断し、その旨をシステムに通知する（Ｓ４６，Ｓ４７）。更に、処理ステップＳ４４，Ｓ４６のいずれにも該当せず、複数のスレーブの時間差が標準偏差より大きい場合、マスタは、接続するバスに異常の可能性があると判断し、その旨をシステムに通知する。
【０１２２】
なお、上述した各実施形態並びにその変形例では、マスタは１台として説明したが、複数のマスタ候補をあらかじめ登録し、それぞれのマスタ候補に１号機２号機といった号機番号を割り振り、正常稼動している中で最も若い号機番号をマスタとして動作させることができる。また、現行のマスタに故障や応答遅延等の事故あるときには、他のスレーブから１台を選んでマスタに昇格させることももちろんできる。更に、各実施形態では，ＰＡＣに適用した例を説明したが、ＰＬＣその他の産業用コントローラに適用できるのはもちろんである。
【０１２３】
また、上述した各実施形態並びにその変形例では、スレーブは、マスタからの指示に従いマスタの時計との時間差を一定周期で測定し、それに基づいて調整量を決定し、調整作業を行なうようにしたが、本発明はこれに限ることはなく、時間差を求める周期は、所定の規則に従って異ならせるようにしても良い。各周期が、ある規則（パターン）に従って変化する場合、スレーブがその規則がわかっていると、今回測定した時間差と、その時間が生じるまでの時間（周期）から、傾きを求めることができ、次の周期は、その傾きのマイナスｎ倍のバイアスとなるように調整をしたり、次の周期の時間がわかっているのでそれを考慮して、上述した各種の実施形態並びに変形例を適用することで、適宜時間あわせをすることができる。ただし、調整量を求めるのに掛算・割算を使う必要が出てくるため、上述した各実施形態等と比較すると演算処理の負荷がかかるので、それに対応すべく高機能・高価なプロセッサ（ＣＰＵ・ＭＰＵ）を用いるとよい。換言すると、上述した各実施形態等によれば、加算・減算処理で時間合わせに対応できるようにすることで、プロセッサにかかる演算処理の負荷を可及的に抑制することができるので好ましい。
【図面の簡単な説明】
【０１２４】
【図１】本発明が適用されるネットワークシステムの一例を示す図である。
【図２】ＰＡＣの内部構成の一例を示す図である。
【図３】マスタを構成するＣＰＵユニットの内部構成の一例を示す図である。
【図４】スレーブを構成するモータユニットの内部構成の一例を示す図である。
【図５】モータユニットの機能を示すフローチャートである。
【図６】時間同期機能の一形態を示す図である。
【図７】調整アルゴリズムの概要を説明する図である。
【図８】調整アルゴリズムの概要を説明する図である。
【図９】本発明の好適な一実施形態である時間同期機能を示すフローチャートである。
【図１０】動作原理を説明する図である。
【図１１】調整アルゴリズムの変形例の概要を説明する図である。
【図１２】調整アルゴリズムの変形例の概要を説明する図である。
【図１３】調整アルゴリズムの変形例の概要を説明する図である。
【図１４】調整アルゴリズムの変形例の概要を説明する図である。
【図１５】調整アルゴリズムの変形例の概要を説明する図である。
【図１６】調整アルゴリズムの別の実施形態の概要を説明する図である。
【図１７】本発明の好適な別の実施形態である時間同期機能を示すフローチャートである。
【図１８】調整アルゴリズムの変形例の概要を説明する図である。
【図１９】調整アルゴリズムの変形例の概要を説明する図である。
【図２０】オフセットを求めるアルゴリズムを説明する図である。
【図２１】本発明の変形例である時間同期機能を示すフローチャートである。
【図２２】調整アルゴリズムの概要を説明する図である。
【図２３】本発明の変形例である時間同期機能を示すフローチャートである。
【図２４】同期制御の一例を示す図である。
【図２５】本発明の好適な別の実施形態を説明する図である。
【図２６】本発明の好適な別の実施形態である異常検知機能を示すフローチャートである。
【符号の説明】
【０１２５】
１  ＰＡＣの一例を示す図である。
１ａ  通信媒体
１ｂ  時計
２０  時間差認識部
２１  時間差調整量算出部
２２  周波数・波数調整部
【図１】
0005141972.tif 000002
【図２】
0005141972.tif 000003
【図３】
0005141972.tif 000004
【図４】
0005141972.tif 000005
【図５】
0005141972.tif 000006
【図６】
0005141972.tif 000007
【図７】
0005141972.tif 000008
【図８】
0005141972.tif 000009
【図９】
0005141972.tif 000010
【図１０】
0005141972.tif 000011
【図１１】
0005141972.tif 000012
【図１２】
0005141972.tif 000013
【図１３】
0005141972.tif 000014
【図１４】
0005141972.tif 000015
【図１５】
0005141972.tif 000016
【図１６】
0005141972.tif 000017
【図１７】
0005141972.tif 000018
【図１８】
0005141972.tif 000019
【図１９】
0005141972.tif 000020
【図２０】
0005141972.tif 000021
【図２１】
0005141972.tif 000022
【図２２】
0005141972.tif 000023
【図２３】
0005141972.tif 000024
【図２４】
0005141972.tif 000025
【図２５】
0005141972.tif 000026
【図２６】
0005141972.tif 000027