(57)【特許請求の範囲】
【請求項１】
第１基準信号に従って動作する主モジュールと、第２基準信号に従って動作する従モジュールとを含み、該第１基準信号に該第２基準信号を同期させる信号同期システムであって、
前記主モジュールは、
計数を行い、予め設定された基準値に計数値が達することで前記第１基準信号を生成する第１基準信号生成部を備え、
前記従モジュールは、
計数を行い、前記基準値に計数値が達することで前記第２基準信号を生成する第２基準信号生成部と、
同期補正処理を行う間隔を計数する間隔計数部と、
前記間隔計数部において前記同期補正処理を行う補正処理間隔値に計数値が達した後、前記第１基準信号を受信してリスタートし、計数を行うオーバーヘッド計数部と、
前記間隔計数部において前記補正処理間隔値に計数値が達した後、前記第１基準信号の受信に応じて前記第２基準信号生成部の計数値及び前記オーバーヘッド計数部の計数値を取得する計数値取得部と、
前記第２基準信号生成部の計数値と前記オーバーヘッド計数部の計数値との差分を相殺する値を、前記第２基準信号生成部に一時的に基準値として設定する同期補正部と、
を備えることを特徴とする信号同期システム。
【請求項２】
前記従モジュールは、該従モジュールにおける演算を実行するプロセッサを含み、
前記第２基準信号生成部は、前記プロセッサのみがアクセスできるカウンタであることを特徴とする請求項１に記載の信号同期システム。
【請求項３】
前記従モジュールに含まれるプロセッサは、前記計数値取得部、前記同期補正部として機能することを特徴とする請求項２に記載の信号同期システム。
【請求項４】
前記従モジュールは、
前記計数値取得部によって取得された、前記第２基準信号生成部の計数値と前記オーバーヘッド計数部の計数値とが異なるとき前記第１基準信号と前記第２基準信号とが非同期であると判定する同期判定部をさらに備え、
前記同期補正部は、前記同期判定部に非同期であると判定された場合にのみ、前記差分を相殺する値を、前記第２基準信号生成部に一時的に基準値として設定することを特徴とする請求項１から３のいずれか１項に記載の信号同期システム。
【請求項５】
前記同期判定部は、前記計数値取得部によって取得された前記第２基準信号生成部の計数値と前記オーバーヘッド計数部の計数値とを時間換算し、双方の時間が異なるとき非同期であると判定することを特徴とする請求項４に記載の信号同期システム。
【請求項６】
前記第１基準信号生成部は、前記第１基準信号を周期的に生成し、
前記第２基準信号生成部は、前記第２基準信号を周期的に生成することを特徴とする請求項１から５のいずれか１項に記載の信号同期システム。
【請求項７】
前記基準値は、外部接続される設定装置から設定できることを特徴とする請求項１から６のいずれか１項に記載の信号同期システム。
【請求項８】
第１基準信号に従って動作するマスタノードと、第２基準信号に従って動作するスレーブノードとを含み、該第１基準信号に該第２基準信号を同期させるノード同期システムであって、
前記マスタノードは、
計数を行い、予め設定された基準値に計数値が達することで前記第１基準信号を生成する第１基準信号生成部と、
同期補正処理を行う間隔を計数する間隔計数部と、
前記間隔計数部において前記同期補正処理を行う補正処理間隔値に計数値が達した後、前記マスタノードと前記スレーブノードとを接続する通信路における伝送遅延時間を算出して前記スレーブノードに通知する伝送遅延時間通知部と、
前記通信路を介して前記第１基準信号に同期した同期化フレームを前記スレーブノードに送信する同期化フレーム通知部と、
を備え、
前記スレーブノードは、
計数を行い、前記基準値に計数値が達することで前記第２基準信号を生成する第２基準信号生成部と、
前記同期化フレームを受信してリスタートし、計数を行うオーバーヘッド計数部と、
前記同期化フレームの受信に応じて前記第２基準信号生成部の計数値及び前記オーバーヘッド計数部の計数値を取得する計数値取得部と、
前記第２基準信号生成部の計数値と、前記オーバーヘッド計数部の計数値と前記伝送遅延時間を示す値との和である総合遅延時間値との差分を相殺する値を、前記第２基準信号生成部に一時的に基準値として設定する同期補正部と、
を備えることを特徴とするノード同期システム。
【請求項９】
前記伝送遅延時間通知部は、伝送遅延時間リクエストフレームを前記スレーブノードに送信し、前記伝送遅延時間リクエストフレームに対する前記スレーブノードからの受信完了フレームを受信し、該受信時の時刻と前記伝送遅延時間リクエストフレームを送信したときの時刻との差分から、前記伝送遅延時間を算出することを特徴とする請求項８に記載のノード同期システム。
【請求項１０】
前記通信路は、前記マスタノードと前記スレーブノードとの間に中継装置を有するスター型であることを特徴とする請求項８または９に記載のノード同期システム。
【請求項１１】
前記スレーブノードは、該スレーブノードにおける演算を実行するプロセッサを含み、
前記第２基準信号生成部は、前記プロセッサのみがアクセスできるカウンタであることを特徴とする請求項８から１０のいずれか１項に記載のノード同期システム。
【請求項１２】
前記スレーブノードに含まれるプロセッサは、前記計数値取得部、前記同期補正部として機能することを特徴とする請求項１１に記載のノード同期システム。
【請求項１３】
前記スレーブノードは、
前記計数値取得部によって取得された、前記第２基準信号生成部の計数値と前記総合遅延時間とが異なるとき前記第１基準信号と前記第２基準信号とが非同期であると判定する同期判定部をさらに備え、
前記同期補正部は、前記同期判定部に非同期であると判定された場合にのみ、前記差分を相殺する値を、前記第２基準信号生成部に一時的に基準値として設定することを特徴とする請求項８から１２のいずれか１項に記載のノード同期システム。
【請求項１４】
前記同期判定部は、前記計数値取得部によって取得された前記第２基準信号生成部の計数値と前記オーバーヘッド計数部の計数値とを時間換算し、双方の時間が異なるとき非同期であると判定することを特徴とする請求項１３に記載のノード同期システム。
【請求項１５】
前記第１基準信号生成部は、前記第１基準信号を周期的に生成し、
前記第２基準信号生成部は、前記第２基準信号を周期的に生成することを特徴とする請求項８から１４のいずれか１項に記載のノード同期システム。
【請求項１６】
前記基準値は、外部接続される設定装置から設定できることを特徴とする請求項８から１５のいずれか１項に記載のノード同期システム。
【請求項１７】
第１基準信号に従って動作する主モジュールと、第２基準信号に従って動作する従モジュールとによって、該第１基準信号に該第２基準信号を同期させる信号同期方法であって、
前記主モジュールは、
計数を行い、予め設定された基準値に計数値が達することで前記第１基準信号を生成し、
前記従モジュールは、
計数を行い、前記基準値に計数値が達することで前記第２基準信号を生成し、
同期補正処理を行う間隔を計数し、
前記同期補正処理を行う補正処理間隔値に計数値が達した後、前記第１基準信号を受信してリスタートし、計数を行い、
前記同期補正処理を行う間隔を示す計数値が前記補正処理間隔値に達した後、前記第２基準信号を生成するための計数値及び前記第１基準信号を受信してリスタートした計数値を取得し、
前記第２基準信号を生成するための計数値と前記第１基準信号を受信してリスタートした計数値との差分を相殺する値を、前記第２基準信号を生成するための計数に一時的に基準値として設定することを特徴とする信号同期方法。
【請求項１８】
第１基準信号に従って動作するマスタノードと、第２基準信号に従って動作するスレーブノードとによって、該第１基準信号に該第２基準信号を同期させるノード同期方法であって、
前記マスタノードは、
計数を行い、予め設定された基準値に計数値が達することで前記第１基準信号を生成し、
同期補正処理を行う間隔を計数し、
前記同期補正処理を行う間隔の計数値が補正処理間隔値に達した後、前記マスタノードと前記スレーブノードとを接続する通信路における伝送遅延時間を算出して前記スレーブノードに通知し、
前記通信路を介して前記第１基準信号に同期した同期化フレームをスレーブノードに送信し、
前記スレーブノードは、
計数を行い、前記基準値に計数値が達することで前記第２基準信号を生成し、
前記同期化フレームを受信してリスタートし、計数を行い、
前記同期化フレームの受信に応じて前記第２基準信号を生成するための計数値及び前記同期化フレームを受信してリスタートした計数値を取得し、
前記第２基準信号を生成するための計数値と、前記同期化フレームを受信してリスタートした計数値と前記伝送遅延時間を示す値との和である総合遅延時間値との差分を相殺する値を、前記第２基準信号を生成するための計数に一時的に基準値として設定することを特徴とするノード同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の信号を同期させるための信号同期システム、ノード同期システム、信号同期方法、及び、ノード同期方法に関する。
【背景技術】
【０００２】
従来、プロセッサ等を用いて所定のプログラムを実行させるような場合に、大規模処理への対応や処理の迅速化、負荷分散等の目的から、複数のプロセッサを用いて処理を実行するマルチプロセッサシステムが知られている。このようなマルチプロセッサシステムでは、複数のプロセッサ間でカウンタ（タイマ）の同期を行うために、主プロセッサから従プロセッサのカウンタに対して割り込み信号等を発生させ、従プロセッサはその割り込み信号に合わせてカウンタの同期を図っている。【０００３】
また、従来のプラント制御用伝送システム等の産業用ネットワークにおいては、システムを構成する各機器が、リアルタイム性を保証したうえで相互に大容量のデータ交換を行う必要がある。したがって、例えば各機器に搭載されるアプリケーションによるアクセス要求の発生に応じてイベント的に相互アクセスを行うような場合には、ネットワーク負荷がアプリケーションに依存してしまい、リアルタイム性を保証することができない場合がある。【０００４】
そこで、従来、各機器に仮想的な共有メモリ（コモンメモリ）を設け、更新タイミングでネットワーク上の全ノード（局）へ自ノードデータの送信を行う技術が存在する。このような技術を用いた場合には、受信した各ノードが、そのデータを更新し、アプリケーションにアクセスさせることにより、リアルタイム性を保証したデータ交換方式を実現している。また、従来、上述したデータ交換時にネットワーク上での効率的な同報通信（ブロードキャスト通信）を実現するための手法が提案されている（例えば、特許文献１参照）。【０００５】
特許文献１では、各ノードの内蔵タイマによる時分割多重アクセス方式とマスタノードからの同期化フレームによるスレーブノードの内蔵タイマ補正を併用している。また、特許文献１に示す手法では、伝送路をバス又はシリアルケーブルで接続されたネットワークとして構成している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１５９７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、上述したような主プロセッサと従プロセッサ間等でのカウンタ同期補正処理では、主プロセッサから従プロセッサのカウンタに対して直接（ハードウェア的に）リセットさせるのが好ましい。しかしながら、このカウンタは、内部で行う複数のプログラム処理の実行基準となるカウンタであるため、外部により勝手に書き換えられると他の処理に問題が生じ得る。また、カウンタが従プロセッサのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等に内蔵されているような場合には、主プロセッサから直接従プロセッサのカウンタをリセットすることができない。したがって、従来、一旦主プロセッサから従プロセッサに割り込み信号を送信し、従プロセッサがその信号を受信して、所定のソフトウェアを用いて間接的（ソフトウェア的）にカウンタのリセット処理を実行している。【０００８】
そのような場合に、従プロセッサは、主プロセッサから割り込み信号を受信してから、その信号に対応する自カウンタのリセット処理を実行するまでの間にオーバーヘッド等による遅延時間が発生する。そのため、従来、リセット処理を行ったとしても、主プロセッサと従プロセッサとのカウンタ同期誤差が残ってしまう。【０００９】
また、ネットワーク間のマスタースレーブ関係にあるノード間のカウンタの同期については、例えば、同期化フレームを受信しタイマをクリアする等の手法が考えられる。しかしながら、上述と同様に、同期化フレーム受信後にファームウェアが介在してカウンタのクリアを行うと、そのオーバーヘッド等の遅延時間によってカウンタに誤差が生じていた。【００１０】
したがって、従来手法である同期化フレームを用いたノード間の同期手法についても、マスタノードと各スレーブノードとの同期時間の測定の補正をマイコンのファームウェアで行っている場合には、マイコンの処理時間による誤差が発生する。【００１１】
そこで、カウンタの書き換えによる他の処理への影響を抑えるべく、主プロセッサから従プロセッサに送信される割り込み信号をハードウェア的に計数し、従プロセッサ内のカウンタとの差分に基づいて、従プロセッサのカウンタの計数目標（基準値）を調整することで、主プロセッサと従プロセッサの同期を図ることが考えられる。【００１２】
主プロセッサのカウンタと従プロセッサのカウンタは、それぞれ電気的特性が異なるので、主プロセッサと従プロセッサとの間で、カウンタのずれがどの程度であるか推定することは難しい。そこで、上記従プロセッサのカウンタの基準値を調整する同期補正処理を割り込み信号毎に行えば、主プロセッサと従プロセッサとの同期が保たれることとなる。しかし、同期補正処理を頻繁に行うと、その処理負荷が増大し、本来実行すべき他の処理に影響を及ぼすおそれがある。【００１３】
本発明は、上記の点に鑑みて考案されたものであり、処理負荷を抑制しつつ、所定の信号を高精度に同期させる信号同期システム、ノード同期システム、信号同期方法、及び、ノード同期方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために、第１基準信号に従って動作する主モジュールと、第２基準信号に従って動作する従モジュールとを含み、第１基準信号に第２基準信号を同期させる本発明の信号同期システムは、主モジュールは、計数を行い、予め設定された基準値に計数値が達することで第１基準信号を生成する第１基準信号生成部を備え、従モジュールは、計数を行い、基準値に計数値が達することで第２基準信号を生成する第２基準信号生成部と、同期補正処理を行う間隔を計数する間隔計数部と、間隔計数部において同期補正処理を行う補正処理間隔値に計数値が達した後、第１基準信号を受信してリスタートし、計数を行うオーバーヘッド計数部と、間隔計数部において補正処理間隔値に計数値が達した後、第１基準信号の受信に応じて第２基準信号生成部の計数値及びオーバーヘッド計数部の計数値を取得する計数値取得部と、第２基準信号生成部の計数値とオーバーヘッド計数部の計数値との差分を相殺する値を、第２基準信号生成部に一時的に基準値として設定する同期補正部と、を備えることを特徴とする。【００１５】
なお、本発明の構成要素、表現又は構成要素の任意の組み合わせを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造等に適用したものも本発明の態様として有効である。
【発明の効果】
【００１６】
本発明によれば、処理負荷を抑制しつつ、所定の信号を高精度に同期させることができる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態における信号同期システムの概略構成の一例を示す図である。
【図２】プロセッサモジュールのハードウェア構成の一例を示す図である。
【図３】第１実施形態における同期補正処理例を説明するためのタイムチャート図（その１）である。
【図４】第１実施形態における同期補正処理例を説明するためのタイムチャート図（その２）である。
【図５】第１実施形態における同期補正処理例を説明するためのタイムチャート図（その３）である。
【図６】信号同期方法の概略的なシーケンス例を示す図である。
【図７】第２実施形態におけるノード同期システムの概略構成の一例を示す図である。
【図８】第２実施形態における同期補正処理例を説明するためのタイムチャート図（その１）である。
【図９】第２実施形態における同期補正処理例を説明するためのタイムチャート図（その２）である。
【図１０】第２実施形態における同期補正処理例を説明するためのタイムチャート図（その３）である。
【図１１】第２実施形態における伝送遅延時間の通知手順の一例を説明するための図である。
【図１２】第２実施形態におけるマスタノード及びスレーブノードを用いたノード同期システムを含むネットワーク伝送システムの概略構成の一例を示す図である。
【図１３】ノード同期方法の概略的なシーケンス例を示す図である。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書及び図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【００１９】
（本実施形態について）
本実施形態は、例えば、複数のプロセッサモジュールや、少なくとも１のプロセッサモジュールをそれぞれ含む複数のノード、装置、基板といった、主従関係にあるモジュール間でカウンタ（タイマ）同期を行う場合に、主モジュール側からの割り込み信号（カウンタリセット信号）に対し、従モジュール側のオーバーヘッド値を求める。また、本実施形態は、求めたオーバーヘッド値と従モジュール側のカウンタとに基づいて同期補正処理を行う。
【００２０】
ただし、当該同期補正処理を頻繁に実行すると処理負荷が増大するので、本実施形態においては、同期補正処理を行う間隔を計数し、所定の補正処理間隔値毎に定期的（間欠的）に同期補正処理を実行する。
【００２１】
また、本実施形態は、主従関係にある装置をマスタノード及びスレーブノードとした場合に、通信路上の遅延時間（伝送遅延時間）も考慮して同期補正処理を行う。
【００２２】
以下に、本実施形態における信号同期システム、及び、ノード同期システムを好適に実施した形態について、図面を用いて説明する。
【００２３】
（第１実施形態：信号同期システム）
図１は、第１実施形態における信号同期システムの概略構成の一例を示す図である。図１に示す信号同期システム１０は、一例として、モジュールとしての複数のプロセッサモジュール（図１の例では、プロセッサモジュール１１ａ〜１１ｃ）間で、カウンタ同期を行うためのマルチプロセッサの一例を示している。
【００２４】
図１に示す信号同期システム１０は、複数のプロセッサモジュール１１ａ〜１１ｃ（以下、必要に応じて「プロセッサモジュール１１」という）と、伝送バス１２と、Ｉ／Ｏ（入出力）モジュール１３（図１中、１３ａ〜１３ｄで示す）と、外部機器１４（図１中、１４ａ〜１４ｄで示す）と、プログラミング装置１５とを有する。ここで、図１の例では、説明の便宜上、プロセッサモジュール１１ａを主プロセッサモジュールとし、プロセッサモジュール１１ｂ，１１ｃを従プロセッサモジュールとして、それぞれのプロセッサモジュールとしての主な構成について説明する。ただし、従プロセッサモジュールの数等については図１のように２つに限定されるものではない。
【００２５】
なお、本実施形態においては、上記の構成に限定されるものではなく、１つのプロセッサモジュールが主プロセッサモジュール１１ａにも従プロセッサモジュール１１ｂ，１１ｃにもなり得るように同一の構成を有している。また、各プロセッサモジュール１１は、伝送バス１２により接続されている。なお、第１実施形態では、伝送バス１２による遅延時間は生じていないものとする。
【００２６】
ここで、主プロセッサモジュール１１ａは、第１基準信号生成部２１と、第１演算部２２と、記憶部２３とを有する。なお、図１の例では、第１基準信号生成部２１は後述するＣＰＵに内蔵されているが、これに限定されるものではなく、例えば第１基準信号生成部２１とＣＰＵとが別体で構成されていてもよい。また、上述した「内蔵されている」とは、例えば第１基準信号生成部２１に対して、ＣＰＵ内の各機能部（第１基準信号生成部２１や第１演算部２２）のみがアクセスできることを意味する。
【００２７】
また、従プロセッサモジュール１１ｂ，１１ｃは、第２基準信号生成部３１と、第２演算部３２と、間隔計数部３３と、オーバーヘッド計数部３４と、計数値取得部３５と、同期判定部３６と、同期補正部３７と、記憶部３８とを有する。なお、図１の例では、第２基準信号生成部３１がＣＰＵに内蔵されているが、これに限定されるものではなく、例えば第２基準信号生成部３１とＣＰＵとが別体で構成されていてもよい。
【００２８】
第１基準信号生成部２１は、計数を行い、予め設定された基準値に計数値が達することで第１基準信号を生成する。なお、第１基準信号生成部２１は、ハードウェア的なカウンタ（以下、必要に応じて「タイマ」ともいう）として機能する。上述した計数値は、基準値に基づいてサイクリックにカウントされている。図１では、このようなハードウェア的なカウンタを破線で示している。
【００２９】
第１演算部２２は、第１基準信号生成部２１によって生成された第１基準信号に応じて、記憶部２３に記憶されている所定のアプリケーションプログラム等を実行（演算）する。また、第１基準信号は、割り込み信号（カウンタリセット信号）として、伝送バス１２を介して従プロセッサモジュール１１ｂ，１１ｃにも与えられる（送信される）。
【００３０】
記憶部２３は、第１演算部２２で演算させる所定のアプリケーションプログラム（シーケンスプログラム）を記憶する。なお、第１演算部２２が演算する所定のアプリケーションプログラムは、例えば主プロセッサモジュール１１ａに接続されたＩ／Ｏモジュール１３ａに指示を与え、Ｉ／Ｏモジュール１３ａによって外部機器１４ａを制御する処理である。そのため、記憶部２３には、主に自プロセッサモジュール１１ａに接続されているＩ／Ｏモジュール１３ａや外部機器１４ａに対して所定の処理を実行するためのプログラムが記憶される。
【００３１】
つまり、主プロセッサモジュール１１ａは、第１基準信号を所定周期毎に生成し、第１演算部２２は、第１基準信号に応じてアプリケーションプログラム（シーケンスプログラム）を実行（演算）することで所定の機器を制御し、当該アプリケーションプログラム（シーケンスプログラム）はサイクリックに実行される。
【００３２】
次に、従プロセッサモジュール１１ｂ，１１ｃについて説明するが、従プロセッサモジュール１１ｂ，１１ｃは同一の構成であるため、以下の説明では、従プロセッサモジュール１１ｂを用いて説明し、従プロセッサモジュール１１ｃの説明は省略する。
【００３３】
第２基準信号生成部３１は、計数を行い、上述した第１基準信号生成部２１に設定されている基準値と同一の基準値が設定され、基準値に計数値が達することで第２基準信号を生成する。なお、第２基準信号生成部３１は、ハードウェア的なカウンタとして機能する。上述した計数値は、基準値に基づいてサイクリックにカウントされている。付言すると、第１基準信号生成部２１と第２基準信号生成部３１のそれぞれのカウンタは、フリーランニングカウンタであり、自走している。
【００３４】
第２演算部３２は、第２基準信号生成部３１によって生成された第２基準信号に応じて、記憶部３８に記憶されている所定のアプリケーションプログラム等を実行（演算）する。
【００３５】
なお、第２基準信号生成部３１は、例えばＣＰＵ内の第２演算部３２からしかアクセスすることができないカウンタであり、ＣＰＵに内蔵されたカウンタ（ＣＰＵ内蔵カウンタ）である。すなわち、第２基準信号生成部３１は、主プロセッサモジュール１１ａ等の外部からハード的にリセットすることができないカウンタである。
【００３６】
また、第２演算部３２は、主プロセッサモジュール１１ａからの第１基準信号（同期基準信号）を割り込み信号として受信し、後述の同期補正処理を起動する。
【００３７】
間隔計数部３３は、計数を行い、同期処理を行う補正処理間隔に相当する補正処理間隔値が予め設定され、補正処理間隔値に計数値が達すると、その旨を示す補正処理開始信号を生成する。
【００３８】
なお、補正処理間隔値は、以下のような計算を通じて設定されている。例えば、当該信号同期システムに要求される加工精度を満たすために許容される、主プロセッサモジュール１１ａと従プロセッサモジュール１１ｂとの同期誤差が１０μｓであるとする。この場合、本実施形態では、同期誤差が１〜５μｓとなるまでの最短時間を計算する。ここで、１μｓ以上としたのは、それより短いと、同期補正処理の頻度が高くなって処理負荷が増加するからであり、５μｓ以下としたのは、１０μｓに対するマージンを考慮したものである。
【００３９】
このとき、主プロセッサモジュール１１ａと従プロセッサモジュール１１ｂとで用いられる発振器の周波数が５０ＭＨｚ、発振精度が５０ｐｐｍであったとする。この条件下において、同期誤差が１μｓとなる最短時間は、１クロックの時間×同期許容誤差ずれる発振回数であり、２０ｎｓ×（（１μｓ/２０ｎｓ）×（１／５０ｐｐｍ））＝２０ｍｓとなる。同様に、同期誤差が５μｓとなる最短時間は、１００ｍｓとなる。したがって、補正処理間隔値は、２０ｍｓ〜１００ｍｓを計数値に換算した値とするとよい。補正処理間隔値をこのような範囲に設定し、同期補正処理を間欠的に実行することで、処理負荷を抑制しつつ、より高い加工精度や生産品質の向上を実現できる。
【００４０】
オーバーヘッド計数部３４は、計数を行い、補正処理開始信号の受信後、すなわち、間隔計数部３３の計数値が補正処理間隔値に達した後、上述した第１基準信号の受信を起点として、同期補正処理が実行されるまでのオーバーヘッド値を計測する。具体的には、オーバーヘッド計数部３４は、第１基準信号を受信してリスタートするハードウェア的なカウンタ（タイマ）として機能する。
【００４１】
オーバーヘッド計数部３４はハードウェアで構成されたカウンタなので、第１基準信号に対して直ぐに反応するが、同期補正処理は、例えば、計数値を読み込むための準備が整うまでに時間を要する。この計数値を読み込むための準備が整うまでに要する時間がオーバーヘッドとなる。なお、オーバーヘッドとは、あるイベントが発生してからそのイベントに対する処理（ソフトウェア）が実際に実行されるまでの遅延時間を意味するが、本例ではオーバーヘッド計数部３４がリスタートされた起点から同期補正処理が実際に行われるまでの時間であり、これに限定されるものではない。
【００４２】
計数値取得部３５は、補正処理開始信号の受信後、すなわち、間隔計数部３３の計数値が補正処理間隔値に達した後、第１基準信号の受信に応じ、同期補正処理が実際に実行される時点（開始時点）での、第２基準信号生成部３１の計数値及びオーバーヘッド計数部３４の計数値を取得する。
【００４３】
同期判定部３６は、計数値取得部３５によって取得された、第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値とが等しいとき、第１基準信号と第２基準信号とが同期していると判定する。また、同期判定部３６は、計数値取得部３５によって取得された、第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値とが異なるとき、上述した第１基準信号と第２基準信号とが非同期であると判定する。
【００４４】
また、同期判定部３６は、計数値取得部３５によって取得された第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値とを時間換算し、双方の時間が等しいときに同期していると判定し、また双方の時間が異なるときには非同期であると判定することもできる。つまり、第１実施形態では、各プロセッサモジュール１１間において、各カウンタの１クロックあたりの単位時間が等しくない場合もありえる。したがって、そのような場合には、各計数値を時間に換算し、換算された時間で同期／非同期の判定を行う。
【００４５】
同期補正部３７は、同期判定部３６が第１基準信号と第２基準信号とが同期していると判定すると、基準値を第２基準信号生成部３１に設定する。また、同期補正部３７は、同期判定部３６が第１基準信号と第２基準信号とが非同期であると判定すると、第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値との差分を相殺する値を求める。具体的に、同期補正部３７は、計数値取得部３５によって取得された、第２基準信号生成部３１の計数値から、オーバーヘッド計数部３４の計数値を差し引いて同期補正値を求める。次に、同期補正部３７は、求めた同期補正値を基準値から差し引き、差し引いた値を第２基準信号生成部３１に新たな基準値として設定する。この新たな基準値とは、同期判定部３６が同期を判定したときに使われるタイマ基準値（デフォルトの基準値）に対し、同期判定部３６が非同期を判定したときに一時的に使われるタイマ基準値である。
【００４６】
また、同期判定部３６が第１基準信号と第２基準信号とが非同期であると判定し、差し引いた値を第２基準信号生成部３１に新たな基準値として設定し、その差し引いた値での計数が完了すると、同期補正部３７は、速やかに、基準値を第２基準信号生成部３１に設定する。こうして、一時的に基準値を同期補正値分だけ変更することができる。ここでは、同期補正値分の補正を一度に実行する例を挙げているが、かかる場合に限らず、複数回に分けて実行してもよい。その場合においても、同期補正部３７は、同期補正処理が完了した後、基準値を第２基準信号生成部３１に設定する。
【００４７】
なお、同期補正部３７は、同期判定部３６が第１基準信号と第２基準信号との同期を判定すれば、その都度上述したデフォルトの基準値を第２基準信号生成部３１に設定してもよいが、同期が保たれている場合には、一度デフォルトの基準値を設定すれば、何もしなくてもよい。
【００４８】
また、本実施形態では、補正処理間隔毎に同期補正処理が実行されるので、第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値とが異なる可能性が高く、同期判定部３６が、第１基準信号と第２基準信号とが非同期であると判定することが多い。そこで、同期判定部３６による判定を実行することなく、すなわち、第１基準信号と第２基準信号とが同期であるか非同期であるかに拘わらず、同期補正部３７が第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値との差分を相殺する値を求め、その値を第２基準信号生成部３１に新たな基準値として設定してもよい。
【００４９】
このように、同期判定部３６の構成を省略することにより、判定処理が不要になり、判定に費やす処理分、処理負荷を軽減することが可能となる。
【００５０】
記憶部３８は、第２演算部３２で演算させる所定のアプリケーションプログラム（シーケンスプログラム）を記憶する。なお、第２演算部３２が演算する所定のアプリケーションプログラムは、例えば従プロセッサモジュール１１ｂに接続されたＩ／Ｏモジュール１３ｂ，１３ｃに指示を与え、Ｉ／Ｏモジュール１３ｂ，１３ｃによって外部機器１４ｂ，１４ｃを制御する処理である。そのため、記憶部３８には、主に自プロセッサモジュール１１ｂに接続されているＩ／Ｏモジュール１３ｂ，１３ｃや外部機器１４ｂ，１４ｃに対して所定の処理を実行するためのプログラムが記憶される。
【００５１】
Ｉ／Ｏモジュール１３は、外部機器１４等と入出力処理を行う。例えば、Ｉ／Ｏモジュール１３は、接続された外部機器１４等から得られるデータ等をプロセッサモジュール１１に出力（送信）したり、プロセッサモジュール１１により演算処理された結果を外部機器１４等に出力したり、記憶したりする。つまり、プロセッサモジュール１１は、Ｉ／Ｏモジュール１３から得られた入力データをアプリケーションプログラムで演算し、この演算結果をＩ／Ｏモジュール１３に出力データとして与えることにより、外部機器１４を制御する。
【００５２】
外部機器１４は、例えば各種センサやモータ、記録装置等である。外部機器１４は、Ｉ／Ｏモジュール１３からの制御信号等に基づいて、データの検出や駆動、データの入出力等を行う。
【００５３】
ここで、基準値は、プロセッサモジュール１１ａ，プロセッサモジュール１１ｂ，プロセッサモジュール１１ｃのそれぞれに予め設定されていてもよく、それぞれに外部接続されるプログラミング装置１５（設定装置）からも設定することができる。
【００５４】
プログラミング装置１５は、ユーザ等が使用するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等にプロセッサモジュール１１と通信し、基準値を設定する機能を付加すれば実現できるが、これに限定されるものではなく、専用の設定装置であってもよい。これにより、ユーザ毎に基準値（処理周期）を任意に調整することができる。
【００５５】
ここで、上述の例では、信号同期システム１０の一例としてマルチプロセッサについて説明したが、信号同期システム１０としては、第１基準信号生成部２１と、第２基準信号生成部３１と、オーバーヘッド計数部３４と、計数値取得部３５と、同期判定部３６と、同期補正部３７とを含んでいればよい。
【００５６】
なお、信号同期システム１０の適用例については、マルチプロセッサに限定されるものではなく、例えば主装置側を原子時計による日付・時刻情報のデジタル信号を送信する送信局とし、従装置側を電波時計としたタイマ同期システムとしての応用も可能である。
【００５７】
（プロセッサモジュール１１のハードウェア構成例）
次に、プロセッサモジュール１１のハードウェア構成例について、図を用いて説明する。図２は、プロセッサモジュール１１のハードウェア構成の一例を示す図である。図２に示すプロセッサモジュール１１は、入力部４１と、出力部４２と、ＣＰＵ４３と、ＦＰＧＡ４４と、メモリ４５と、外部インタフェース４６とを有し、これらは共通バスＢにより接続されている。
【００５８】
入力部４１は、例えばユーザ等からのプログラムの実行等、各種操作信号を入力する。なお、入力部４１は、例えばユーザ等が操作するキーボードや、マウス、タッチパネル等のポインティングデバイスを有していてもよく、音声等により入力する場合には、音声入力デバイスを有していてもよい。
【００５９】
出力部４２は、本実施形態における処理を行うプロセッサモジュール１１を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイを有し、ＣＰＵ４３が実行する制御プログラムの実行経過や結果等を表示する。
【００６０】
ＣＰＵ４３は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等の制御プログラム、及びメモリ４５に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、プロセッサモジュール１１全体の処理を制御することで本実施形態における各処理を実現する。また、ＣＰＵ４３は、メモリ４５と協働して、上述した第１演算部２２、第２演算部３２、計数値取得部３５、同期判定部３６、同期補正部３７として実質的に機能し、第１基準信号生成部２１、第２基準信号生成部３１を内蔵する。なお、プログラム実行中に必要な各種情報等は、メモリ４５から取得し、実行結果等をメモリ４５に格納してもよい。
【００６１】
ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）４４は、論理回路を書き換え可能な集積回路である。ＦＰＧＡ４４は、ＣＰＵ４３を補助する様々な論理回路で構成され、本実施形態では、特に、間隔計数部３３、オーバーヘッド計数部３４として機能する。ただし、間隔計数部３３はソフトウェアで処理されてもよい。
【００６２】
メモリ４５は、ＣＰＵ４３により読み出された実行プログラム等を格納する。なお、メモリ４５は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等からなる。また、メモリ４５は、補助記憶装置として、ハードディスク等のストレージ手段を有していてもよい。また、メモリ４５は、本実施形態における実行プログラムやコンピュータに設けられた制御プログラム等を記憶し、必要に応じて入出力を行う。なお、メモリ４５は、上述した記憶部２３，３８等に対応する。
【００６３】
外部インタフェース４６は、伝送バス１２等を介して他のプロセッサモジュール１１間とのデータや制御信号の送受信を行う。また、外部インタフェース４６は、接続されたＩ／Ｏモジュール１３とのデータや制御信号の送受信等も行う。
【００６４】
上述したハードウェア構成により、本実施形態における同期補正処理を実行することが可能となる。また、実行プログラムをインストールすることにより、汎用のパーソナルコンピュータ等で本実施形態における同期補正処理を容易に実現することが可能となる。
【００６５】
次に、第１実施形態における同期補正処理例について以下に説明する。
【００６６】
（第１実施形態における同期補正処理例）
図３〜図５は、第１実施形態における同期補正処理例を説明するためのタイムチャート図（その１〜その３）である。図３〜図５に示す例では、主プロセッサモジュール１１ａと、従プロセッサモジュール１１ｂとの間における計数値の同期例を示している。なお、第１実施形態における基準値（処理周期）は、１０００μｓとするが、これに限定されるものではなく、例えば上述したプログラミング装置１５により適宜設定を変更することができる。
【００６７】
図３では、主プロセッサモジュール１１ａの第１基準信号生成部２１が計数を行っている。その計数値が図３の（１）時点で基準値に達すると、第１基準信号を出力する。そして、第１演算部２２は、当該第１基準信号に応じて所定の処理を実行する。図３中、ハッチングで示した三角形の領域は、計数値の推移を示し、時間の経過に従い計数値が増加し、計数目標（例えば基準値）に達するとリセットされる。
【００６８】
また、従プロセッサモジュール１１ｂの第２基準信号生成部３１が計数を行っている。その計数値が図３の（２）時点で基準値に達すると、第２基準信号を出力する。そして、第２演算部３２は、当該第２基準信号に応じて所定の処理を実行する。このように、主プロセッサモジュール１１ａ及び従プロセッサモジュール１１ｂでは、それぞれ、独立した第１基準信号及び第２基準信号に応じて所定の処理が遂行される。
【００６９】
また、従プロセッサモジュール１１ｂでは、間隔計数部３３が計数を行い、計数値が補正処理間隔値に達すると（図３の（３））、補正処理開始信号を生成する。かかる補正処理開始信号に応じて同期補正処理の準備が開始される。
【００７０】
主プロセッサモジュール１１ａで生成される第１基準信号は、割り込み信号として従プロセッサモジュール１１ｂに送信されている。従プロセッサモジュール１１ｂは、第１基準信号を割り込みとして受信し、ソフトウェアによる同期補正処理を起動させている（図３の（４））。これと共に従プロセッサモジュール１１ｂのオーバーヘッド計数部３４は、当該ハードウェアによるカウンタの計数値をクリアしてリスタートしている（図３の（５））。続いて、同期補正処理の準備が整うと、図３の（６）時点で、計数値取得部３５は、第２基準信号生成部３１から計数値を取得する（図３の（７））と共に、オーバーヘッド計数部３４から計数値を取得する（図３の（８））。
【００７１】
同期判定部３６は、計数値取得部３５によって与えられた計数値を時間に換算する。ここでは、例えば、第２基準信号生成部３１の計数値から３００μｓを得、オーバーヘッド計数部３４の計数値から３００μｓを得たとする。こうして、第１基準信号の割り込みの起点から、同期補正処理において計数値が取得されるまでのオーバーヘッドを計測すると共に、その時点の第２基準信号生成部３１の計数値を取得することができる。第１基準信号と第２基準信号とが同期している場合、かかる計数値は等しくなるはずである。
【００７２】
同期判定部３６は、計数値取得部３５から得た、第２基準信号生成部３１の計数値（３００μｓ）とオーバーヘッド計数部３４の計数値（３００μｓ）とを比較する。この場合、同期判定部３６は、双方が同じ値なので第１基準信号と第２基準信号とが同期していると判定する。
【００７３】
同期判定部３６によって第１基準信号と第２基準信号とが同期していると判定されたため、同期補正部３７は、通常通り、基準値１０００μｓを第２基準信号生成部３１に設定している（この時点で第２基準信号生成部３１は、リスタートしていない）。そして、第２基準信号生成部３１は、図３の（９）の時点で計数値が基準値１０００μｓに達したため、リスタートしている。
【００７４】
なお、第２基準信号生成部３１については、上述したＣＰＵ４３に内蔵されているが、本実施形態においては、これに限定されるものではなく、ＣＰＵ４３と別体であってもよい。
【００７５】
また、付言しておくが、図３に示す同期補正処理の中には、計数値取得部３５、同期判定部３６、同期補正部３７のプログラムの処理が含まれている。
【００７６】
図４は、従プロセッサモジュール１１ｂのカウンタが、主プロセッサモジュール１１ａのカウンタより３μｓ遅れている場合を示している。
【００７７】
図４では、従プロセッサモジュール１１ｂの間隔計数部３３が計数を行い、計数値が補正処理間隔値に達すると（図４の（１））、補正処理開始信号を生成する。かかる補正処理開始信号に応じて同期補正処理の準備が開始される。
【００７８】
主プロセッサモジュール１１ａの第１基準信号生成部２１は、計数値が基準値に達したため、１０００μｓ毎に第１基準信号を出力している。従プロセッサモジュール１１ｂは、補正処理開始信号が生成された後、第１基準信号を割り込みとして受信し、ソフトウェアによる同期補正処理を起動させる（図４の（２））。これと共に従プロセッサモジュール１１ｂのオーバーヘッド計数部３４は、当該ハードウェアによるカウンタの計数値をクリアしてリスタートしている（図４の（３））。続いて、同期補正処理の準備が整うと、図４の（４）時点で、計数値取得部３５は、第２基準信号生成部３１から計数値を取得する（図４の（５））と共に、オーバーヘッド計数部３４から計数値を取得する（図４の（６））。
【００７９】
同期判定部３６は、計数値取得部３５によって与えられた計数値を時間に換算する。ここでは、例えば、第２基準信号生成部３１の計数値から２９７μｓを得、オーバーヘッド計数部３４の計数値から３００μｓを得たとする。同期判定部３６は、両計数値を比較し、両計数値が異なる値なので第１基準信号と第２基準信号とが非同期であると判定する。
【００８０】
同期判定部３６によって非同期が判定されたため、同期補正部３７は、第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値との差分が相殺されるように、第２基準信号生成部３１に臨時の基準値を設定する。具体的には、同期補正部３７は、「基準値（処理周期）−（オーバーヘッド計数部３４の計数値−第２基準信号生成部３１の計数値）」という式にて第２基準信号生成部３１の計数値のリスタート値（リセット値）を求め、求めた計数値を臨時の基準値として第２基準信号生成部３１にセットする。この例の場合、臨時の基準値は１０００μｓ−（３００μｓ−２９７μｓ）＝９９７μｓとなる。そして、第２基準信号生成部３１は、図４の（７）の時点で計数値が臨時の基準値９９７μｓに達したため、リスタートしている。ちなみに、オーバーヘッド計数部３４の計数値−第２基準信号生成部３１の計数値の値が同期補正値である。
【００８１】
このようにすることにより、第１実施形態は、第２サイクルに対し、次の第３サイクルの第１基準信号の出力タイミングと略同タイミングで第２基準信号生成部３１をリスタートすることができる。したがって、第１実施形態は、第１基準信号と第２基準信号とを同期させることができる。なお、図４の場合、第３サイクル以降は、基準値が１０００μｓに設定される。
【００８２】
図５は、従プロセッサモジュール１１ｂのカウンタが、主プロセッサモジュール１１ａのカウンタより３μｓ進んでいる場合を示している。
【００８３】
図５では、従プロセッサモジュール１１ｂの間隔計数部３３が計数を行い、計数値が補正処理間隔値に達すると（図５の（１））、補正処理開始信号を生成する。かかる補正処理開始信号に応じて同期補正処理の準備が開始される。
【００８４】
主プロセッサモジュール１１ａの第１基準信号生成部２１は、計数値が基準値に達したため、１０００μｓ毎に第１基準信号を出力している。従プロセッサモジュール１１ｂは、補正処理開始信号が生成された後、第１基準信号を割り込みとして受信し、ソフトウェアによる同期補正処理を起動させている（図５の（２））。これと共に従プロセッサモジュール１１ｂのオーバーヘッド計数部３４は、当該ハードウェアによるカウンタの計数値をクリアしてリスタートしている（図５の（３））。続いて、同期補正処理の準備が整うと、図５の（４）時点で、計数値取得部３５は、第２基準信号生成部３１から計数値を取得する（図５の（５））と共に、オーバーヘッド計数部３４から計数値を取得する（図５の（６））。
【００８５】
同期判定部３６は、計数値取得部３５によって与えられた計数値を時間に換算する。ここでは、例えば、第２基準信号生成部３１の計数値から３０３μｓを得、オーバーヘッド計数部３４の計数値から３００μｓを得たとする。同期判定部３６は、両計数値を比較し、両計数値が異なる値であるため、第１基準信号と第２基準信号とが非同期であると判定する。
【００８６】
同期判定部３６によって非同期が判定されたため、同期補正部３７は、第２基準信号生成部３１の計数値とオーバーヘッド計数部３４の計数値との差分が相殺されるように、第２基準信号生成部３１に臨時の基準値を設定する。具体的には、同期補正部３７は、図４の説明と同様に計算して、臨時の基準値を求め、第２基準信号生成部３１にセットする。この例の場合、臨時の基準値は、１０００μｓ−（３００μｓ−３０３μｓ）＝１００３μｓとなる。そして、第２基準信号生成部３１は、図４の（７）の時点で計数値が臨時の基準値１００３μｓに達したため、リスタートしている。ちなみに、オーバーヘッド計数部３４の計数値−第２基準信号生成部３１の計数値の値が同期補正値である。
【００８７】
このようにすることにより、第１実施形態は、第２サイクルに対し、次の第３サイクルの第１基準信号の出力タイミングと略同タイミングで第２基準信号生成部３１をリスタートすることができる。したがって、本実施形態の信号同期システムは第１基準信号と第２基準信号とを同期させることができる。なお、図５の第３サイクル以降は、基準値が１０００μｓに設定される。以上のように、第１実施形態では、主プロセッサモジュール１１ａのカウンタ（タイマ）に対して従プロセッサモジュール１１ｂのカウンタ（タイマ）が遅れた場合も進んだ場合も適切にカウンタ同期を実現することができる。
【００８８】
（信号同期方法のシーケンス例）
図６は、信号同期方法の概略的なシーケンス例を示す図である。図６の例では、説明の便宜上、主プロセッサモジュール１１ａと従プロセッサモジュール１１ｂとを用いた同期について説明するが、本実施形態においてはこれに限定されるものではなく、１つの主プロセッサモジュールに対して複数の従プロセッサモジュールを同期させることができる。
【００８９】
図６のカウンタ同期処理において、まず、主プロセッサモジュール１１ａの第１基準信号生成部２１は、第１基準信号を生成し（Ｓ０１）、従プロセッサモジュール１１ｂの第２基準信号生成部３１は、第２基準信号を生成する（Ｓ０２）。なお、この処理は、ハードウェア的にサイクリックに動作されている。また、主プロセッサモジュール１１ａは、Ｓ０１の処理で得られた第１基準信号を従プロセッサモジュール１１ｂにも送信している。したがって、従プロセッサモジュール１１ｂは、常に第１基準信号を受信できる状態にある。
【００９０】
また、従プロセッサモジュール１１ｂの間隔計数部３３は、補正処理間隔を計数し、計数値が補正処理間隔値に達すると、補正処理開始信号を生成して同期補正処理の準備を開始する（Ｓ０３）。
【００９１】
間隔計数部３３の計数値が補正処理間隔値に達した後、主プロセッサモジュール１１ａで送信された第１基準信号を、従プロセッサモジュール１１ｂが受信すると（Ｓ０４）、ソフトウェアによる同期補正処理を起動させる（Ｓ０５）と共に、オーバーヘッド計数部３４をリスタートする（Ｓ０６）。そして、計数値取得部３５は、第２基準信号生成部３１とオーバーヘッド計数部３４との両計数値を取得し（Ｓ０７）、同期判定部３６は、かかる両計数値に基づいて同期判定を行い（Ｓ０８）、非同期であると判定されれば、同期補正部３７が同期補正を行う（Ｓ０９）。
【００９２】
こうして、処理負荷を抑制しつつ、所定の信号を高精度に同期させることができる。
【００９３】
（第２実施形態：ノード同期システム）
第２実施形態は、上述した第１実施形態における伝送バス１２による遅延時間を含めて同期補正処理を実行することが特徴である。図７は、第２実施形態におけるノード同期システムの概略構成の一例を示す図である。図７に示すノード同期システム５０は、ノード５１ａ〜５１ｃ等の複数のノードの間で、カウンタ同期を行う一例である。
【００９４】
ノード同期システム５０は、複数のノード５１ａ〜５１ｃ（以下、必要に応じて「ノード５１」という）と、通信路（通信ネットワーク）５２と、Ｉ／Ｏ（入出力）モジュール５３（図７中、５３ａ〜５３ｄで示す）と、外部機器５４（図７中、５４ａ〜５４ｄで示す）と、プログラミング装置５５とを有する。すなわち、ノード同期システム５０は、マスタノード５１ａと、スレーブノード５１ｂ，５１ｃとが通信ネットワークとしての通信路５２を介して接続されている。
【００９５】
ここで、便宜上、ノード５１ａをマスタノードとし、ノード５１ｂ，５１ｃをスレーブノードとして、それぞれのノード固有の構成について説明するが、これに限定されるものではなく、各ノードがマスタノードにもスレーブノードにもなりえるように両方の構成を兼ね備えている。なお、第２実施形態では、通信路５２による伝送遅延時間が生じているものとする。
【００９６】
ここで、第２実施形態（図７）と第１実施形態（図１）との違いについて説明しておく。マスタノード５１ａは、第１実施形態での主プロセッサモジュール１１ａに相当し、スレーブノード５１ｂ,５１ｃは、第１実施形態での従プロセッサモジュール１１ｂ，１１ｃに相当する。また、プログラミング装置５５は、第１実施形態でのプログラミング装置１５と実質的に等しく、更に、Ｉ／Ｏモジュール５３ａ〜５３ｄは、第１実施形態でのＩ／Ｏモジュール１３ａ〜１３ｄと実質的に等しい。また、外部機器５４ａ〜５４ｄは、第１実施形態での外部機器１４ａ〜１４ｄと実質的に等しい。よって、以下の説明では第１実施形態と同じ構成のものについてはその説明を割愛する。
【００９７】
マスタノード５１ａは、第１基準信号生成部６１（第１の実施形態の第１基準信号生成部２１に対応）と、第１演算部６２（第１実施形態の第１演算部２２に対応）と、記憶部６３（第１実施形態の記憶部２３に対応）と、間隔計数部６４（第１の実施形態の間隔計数部３３に対応）と、伝送遅延時間通知部６５と、同期化フレーム通知部６６とを有する。
【００９８】
マスタノード５１ａの第１実施形態での主プロセッサモジュール１１ａとの主な相違点は、第１実施形態では従プロセッサモジュール１１ｂに設けられていた間隔計数部３３が間隔計数部６４として加わったこと、及び、新たに、伝送遅延時間通知部６５と、同期化フレーム通知部６６とが加わったことである。よって、以下の説明においては、第２実施形態の主要部分を説明することとし、第１実施形態と同様の動きについては割愛する。
【００９９】
以下、第２実施形態での一例を説明する。第２実施形態において、間隔計数部６４は、計数を行い、同期処理を行う補正処理間隔に相当する補正処理間隔値が予め設定され、補正処理間隔値に計数値が達すると、その旨を示す補正処理開始信号を生成する。なお、補正処理間隔値は第１の実施形態と実質的に等しいので、ここではその説明を省略する。
【０１００】
なお、ここでは、マスタノード５１ａ側で補正処理間隔を計っているが、スレーブノード５１ｂ側で補正処理間隔を計ってもよい。その場合、スレーブノード５１ｂにおいて補正処理間隔値に計数値が達すると、マスタノード５１ａに補正処理開始信号を送信し、同期補正処理を開始することとなる。
【０１０１】
補正処理開始信号の受信後、マスタノード５１ａの伝送遅延時間通知部６５は、伝送遅延時間を算出するために伝送遅延時間リクエストフレームをスレーブノード５１ｂ，５１ｃに送信する。この伝送遅延時間リクエストフレームは、後述の同期化フレームとフォーマットが実質的に等しく、同期化フレーム内の所定部分（例えば、コマンド部）のデータが異なるフレームである。かかる伝送遅延時間リクエストフレームは、第１基準信号生成部６１によって生成された第１基準信号に同期して送信される。
【０１０２】
続いて、伝送遅延時間通知部６５は、伝送遅延時間リクエストフレームに応答したスレーブノードからの受信完了フレームを受信する。そして、伝送遅延時間通知部６５は、応答フレーム受信時の時刻と伝送遅延時間リクエストフレームを送信したときの時刻との差分から、マスタノード５１ａとスレーブノード５１ｂ，５１ｃ間の往復伝送遅延時間を計算する。そして、伝送遅延時間通知部６５は、計算した往復伝送遅延時間を含む伝送遅延時間通知フレームを次の第１基準信号に同期してスレーブノード５１ｂ，５１ｃに送信することで、スレーブノード５１ｂ，５１ｃに通信路５２による遅延時間を通知する。
【０１０３】
往復伝送遅延時間を通知した後、マスタノード５１ａは、第１基準信号に基づき（第１基準信号に同期して）、予め用意された同期化フレームを、通信路５２を介してスレーブノード５１ｂ，５１ｃに送信する。なお、この処理は、同期化フレーム通知部６６が実行する。後に詳述するが、同期化フレームは、スレーブノード５１ｂ，５１ｃの第２基準信号生成部７１の計数値をマスタノード５１ａの第１基準信号生成部６１の計数値に合わせるための同期基準信号である。
【０１０４】
次に、スレーブノード５１ｂ，５１ｃについて説明する。スレーブノード５１ｂ，５１ｃは、第２基準信号生成部７１（第１の実施形態の第２基準信号生成部３１に対応）と、第２演算部７２（第１の実施形態の第２演算部３２に対応）と、オーバーヘッド計数部７４（第１の実施形態のオーバーヘッド計数部３４に対応）と、計数値取得部７５（第１の実施形態の計数値取得部３５に対応）と、同期判定部７６（第１の実施形態の同期判定部３６に対応）と、同期補正部７７（第１の実施形態の同期補正部３７に対応）と、記憶部７８（第１の実施形態の記憶部３８に対応）と、受信完了通知部７９と、フレーム受信部８０とを有する。なお、ＣＰＵ４３には、第２基準信号生成部７１が内蔵されている。スレーブノード５１ｂ，５１ｃは、同一の構成であるため、以下の説明では、スレーブノード５１ｂを用いて説明し、スレーブノード５１ｃの説明は省略する。
【０１０５】
第１実施形態のプロセッサモジュール１１ｂとの主な相違点は、同期判定部７６が第１実施形態の同期判定部３６と相違すること、受信完了通知部７９とフレーム受信部８０とが加わったことである。ただし、他の構成要素については、第１の実施形態と実質的に等しいので、ここでは、その説明を割愛する。以下、通信路５２の伝送遅延時間を含めたスレーブノード５１ｂの同期補正処理について説明する。
【０１０６】
受信完了通知部７９は、上述した伝送遅延時間リクエストフレームをマスタノード５１ａから受信し、その伝送遅延時間リクエストフレームに応じて、受信完了フレームをマスタノード５１ａに送信する。
【０１０７】
フレーム受信部８０は、マスタノード５１ａによって送信された上述した伝送遅延時間通知フレームを受信し、そのフレームに含まれる往復伝送遅延時間（値）を上述したメモリ４５等に退避する。このようにして、スレーブノード５１ｂはマスタノード５１ａとスレーブノード５１ｂ間との往復伝送遅延時間をマスタノード５１ａから得る。
【０１０８】
マスタノード５１ａから往復伝送遅延時間を得たスレーブノード５１ｂは、同期化フレームを受信し、第２演算部７２に割り込みを発生させる。割り込みを受けた第２演算部７２は、後述の同期補正処理を起動する。なお、本実施形態においては、往復伝送遅延時間を得ずに同期化フレームを受信した場合でも、往復伝送遅延時間をゼロ（０）として同期補正処理を起動してよいことは勿論である。また、同期化フレームを受信してから第２演算部７２に割り込みが上がるスピードを勘案すると、不図示であるが、同期化フレームの受信手段としては、ＦＰＧＡ４４等のハードウェアロジックを使うことが好ましい。
【０１０９】
また、オーバーヘッド計数部７４は、上述した同期化フレームの受信を起点として、同期補正処理が実行されるまでのオーバーヘッド値を計測する。具体的には、オーバーヘッド計数部７４には、同期化フレームを受信してリスタートするハードウェア的なカウンタ（タイマ）として機能する。
【０１１０】
計数値取得部７５は、同期化フレームの受信に応じ、実際に同期補正処理が実行される開始時点での、第２基準信号生成部７１の計数値及びオーバーヘッド計数部７４の計数値を取得する。
【０１１１】
同期判定部７６は、上述した往復伝送遅延時間を２で除算して通信路５２の片道の伝送遅延時間を求め、更にこの片道の伝送遅延時間と上述したオーバーヘッド計数部７４の計数値を時間換算した値とを加えた総合遅延時間を求める。そして、同期判定部７６は、求めた総合遅延時間と、計数値取得部７５によって取得された第２基準信号生成部７１の計数値を時間換算した値とを比較する。この比較の結果、双方が等しいとき、同期判定部７６は、第１基準信号と第２基準信号とが同期していると判定し、双方が相違するとき、第１基準信号と第２基準信号とが非同期であると判定する。ここで同期とは、第１基準信号生成部６１の計数値と第２基準信号生成部７１の計数値が等しいことを意味する。
【０１１２】
なお、同期判定部７６は、第１実施形態の同期判定部３６と同様に、各カウンタの計数値を時間に換算して比較することで、同期／非同期を判定することも勿論可能である。
【０１１３】
第２実施形態では、補正処理間隔毎に、同期判定部７６によって第１基準信号と第２基準信号とが同期であると判定されると、同期補正部７７は、基準値を第２基準信号生成部７１に設定する。また、第１基準信号と第２基準信号とが非同期であると判定されると、第２基準信号生成部７１の計数値と、総合遅延時間値との差分を相殺する値を求める。具体的に、同期補正部７７は、計数値取得部７５によって取得された、第２基準信号生成部７１の計数値から総合遅延時間値を差し引いて同期補正値を求める。続いて、同期補正部７７は、求めた同期補正値を基準値から差し引き、差し引いた値を第２基準信号生成部７１に新たな基準値として設定する。この新たな基準値とは、同期判定部７６が同期を判定したときに第２基準信号生成部７１に設定される基準値（デフォルトの基準値）に対し、第２基準信号生成部７１のタイマ値を補正するために一時的に設定される（臨時の基準値）。
【０１１４】
なお、本実施形態は、デフォルトの基準値が第２基準信号生成部７１に設定され、同期が保たれていれば、以後デフォルトの基準値を書き換えしなくてよいことは勿論である。
【０１１５】
このようにして本実施形態は、同期基準信号（同期化フレーム）が通信路５２を介して通知される際の伝送遅延時間の影響をも考慮した同期補正処理を行うことができる。すなわち、第２実施形態では、ノード間の伝送遅延時間とスレーブノード５１ｂ，５１ｃのオーバーヘッドとを含めた計数値の補正を行うことができ、高精度なノード間の同期を実現できる。
【０１１６】
（第２実施形態における同期補正処理例）
図８〜図１０は、第２実施形態における同期補正処理例を説明するためのタイムチャート図であり、マスタノード５１ａとスレーブノード５１ｂ間での計数値の同期例である。なお、第２実施形態における基準値（処理周期）は、第１実施形態と同様１０００μｓとし、この基準値はプログラミング装置５５により適宜変更することができる。
【０１１７】
図８では、マスタノード５１ａの第１基準信号生成部６１が計数を行っている。その計数値が図８の（１）時点で基準値に達すると、第１基準信号を出力する。そして、第１演算部６２は、当該第１基準信号に応じて所定の処理を実行する。
【０１１８】
また、スレーブノード５１ｂの第２基準信号生成部７１が計数を行っている。その計数値が図８の（２）時点で基準値に達すると、第２基準信号を出力する。そして、第２演算部７２は、当該第２基準信号に応じて所定の処理を実行する。このように、マスタノード５１ａ及びスレーブノード５１ｂでは、それぞれ、独立した第１基準信号及び第２基準信号に応じて所定の処理が遂行される。
【０１１９】
また、マスタノード５１ａでは、間隔計数部６４が計数を行い、計数値が補正処理間隔値に達すると（図８の（３））、補正処理開始信号を生成する。かかる補正処理開始信号に応じてマスタノード５１ａにおける同期補正処理が開始される。
【０１２０】
同期補正処理が開始すると、マスタノード５１ａの伝送遅延時間通知部６５は、伝送遅延時間を算出するために伝送遅延時間リクエストフレームを送信する（図８の（４））。スレーブノード５１ｂの受信完了通知部７９は、伝送遅延時間リクエストフレームをマスタノード５１ａから受信すると、その伝送遅延時間リクエストフレームに応じて、受信完了フレームをマスタノード５１ａに送信する（図８の（５））。
【０１２１】
続いて、マスタノード５１ａの伝送遅延時間通知部６５は、受信完了フレームに応じて、マスタノード５１ａとスレーブノード５１ｂ間の往復伝送遅延時間を計算し、計算した往復伝送遅延時間（４００μｓ）を含む伝送遅延時間通知フレームを送信する（図８の（６））。スレーブノード５１ｂのフレーム受信部８０は、伝送遅延時間通知フレームを受信すると、そのフレームに含まれる往復伝送遅延時間（値）をメモリ４５等に退避する（図８の（７））。
【０１２２】
同期補正処理が開始後、マスタノード５１ａの同期化フレーム通知部６６は、同期化フレームを割り込み信号としてスレーブノード５１ｂに送信する（図８の（８））。そして、スレーブノード５１ｂは、同期化フレームを通信路５２の片道の伝送遅延時間（２００μｓ）を経て図８の（９）の時点で受信し、スレーブノード５１ｂにおけるソフトウェアによる同期補正処理を起動している。また、同期化フレームの受信に伴い、オーバーヘッド計数部７４のハードウェアによるカウンタがクリアされリスタートしている（図８の（１０））。
【０１２３】
続いて、同期補正処理の準備が整うと、図８の（１１）時点で、計数値取得部７５は、第２基準信号生成部７１から計数値を取得する（図８の（１２））と共に、オーバーヘッド計数部７４から計数値を取得する（図８の（１３））。
【０１２４】
続いて、計数値取得部７５は、第２基準信号生成部７１の計数値を参照して時間に換算し４００μｓを取得している。これに引き続き、同期判定部７６は、往復伝送遅延時間（４００μｓ）から片道の伝送遅延時間２００μｓを求め、求めた伝送遅延時間とオーバーヘッド計数部７４の計数値を時間換算した２００μｓとを加算し総合遅延時間４００μｓを求めている。そして、同期判定部７６は、総合遅延時間４００μｓと計数値取得部７５が取得した、第２基準信号生成部７１の計数値を時間換算した４００μｓとを比較し、双方が等しいので第１基準信号と第２基準信号とが同期していると判定している。
【０１２５】
同期判定部７６によって第１基準信号と第２基準信号とが同期していると判定されたため、同期補正部７７は、通常通り、基準値１０００μｓを第２基準信号生成部７１に設定している（設定時点で第２基準信号生成部７１はリスタートしていない）。そして、第２基準信号生成部７１は、図８の（１４）の時点で計数値が基準値１０００μｓに達したため、リスタートしている。
【０１２６】
図９は、スレーブノード５１ｂのカウンタが、マスタノード５１ａのカウンタより３μｓ遅れている場合を示している。
【０１２７】
図９において、マスタノード５１ａの間隔計数部６４の計数値が補正処理間隔値に達し、同期補正処理が開始されてから、スレーブノード５１ｂのフレーム受信部８０が伝送遅延時間通知フレームに含まれる往復伝送遅延時間（値）をメモリ４５等に退避するまでの処理は、図８の処理と実質的に等しいので、ここでは、その説明を省略する。
【０１２８】
同期補正処理が開始後、図９の（１）時点で、マスタノード５１ａの同期化フレーム通知部６６は、同期化フレームを割り込み信号としてスレーブノード５１ｂに送信する。そして、スレーブノード５１ｂは、同期化フレームを通信路５２の片道の伝送遅延時間（２００μｓ）を経て図９（２）の時点で受信し、スレーブノード５１ｂにおけるソフトウェアによる同期補正処理を起動している。また、同期化フレームの受信に伴い、オーバーヘッド計数部７４のカウンタがクリアされリスタートしている（図９の（３））。
【０１２９】
続いて、同期補正処理の準備が整うと、図９の（４）時点で、計数値取得部７５は、第２基準信号生成部７１から計数値を取得する（図９の（５））と共に、オーバーヘッド計数部７４から計数値を取得する（図９の（６））。
【０１３０】
続いて、計数値取得部７５は、第２基準信号生成部７１の計数値を参照して時間に換算し３９７μｓを取得している。これに引き続き、同期判定部７６は、往復伝送遅延時間（４００μｓ）から片道の伝送遅延時間２００μｓを求め、求めた伝送遅延時間とオーバーヘッド計数部７４の計数値を時間換算した２００μｓとを加算し総合遅延時間４００μｓを求めている。そして、同期判定部７６は、総合遅延時間４００μｓと計数値取得部７５が取得した、第２基準信号生成部７１の計数値を時間換算した３９７μｓとを比較し、双方が相違するので第１基準信号と第２基準信号とが非同期であると判定する。
【０１３１】
同期判定部７６によって第１基準信号と第２基準信号とが非同期であると判定されたため、同期補正部７７は、第２基準信号生成部７１に臨時の基準値を設定している。具体的には、同期補正部７７は、「基準値（処理周期）−（総合遅延時間−第２基準信号生成部７１の計数値）」という式にて第２基準信号生成部７１のリスタート値（リセット値）を求め、求めた計数値を臨時の基準値として第２基準信号生成部７１にセットする。この例の場合、臨時の基準値は１０００μｓ−（４００μｓ−３９７μｓ）＝９９７μｓとなる。そして、第２基準信号生成部７１は、図９の（７）の時点で計数値が臨時の基準値９９７μｓに達したため、リスタートしている。ちなみに、総合遅延時間−第２基準信号生成部７１の計数値の値が同期補正値である。
【０１３２】
図１０は、スレーブノード５１ｂのカウンタが、マスタノード５１ａのカウンタより３μｓ進んでいる場合を示している。
【０１３３】
図１０において、マスタノード５１ａの間隔計数部６４の計数値が補正処理間隔値に達し、同期補正処理が開始されてから、スレーブノード５１ｂのフレーム受信部８０が伝送遅延時間通知フレームに含まれる往復伝送遅延時間（値）をメモリ４５等に退避するまでの処理は、図８及び図９の処理と実質的に等しいので、ここでは、その説明を省略する。
【０１３４】
同期補正処理が開始後、図１０の（１）時点で、マスタノード５１ａの同期化フレーム通知部６６は、同期化フレームを割り込み信号としてスレーブノード５１ｂに送信する。そして、スレーブノード５１ｂは、同期化フレームを通信路５２の片道の伝送遅延時間（２００μｓ）を経て図１０（２）の時点で受信し、スレーブノード５１ｂにおけるソフトウェアによる同期補正処理を起動している。また、同期化フレームの受信に伴い、オーバーヘッド計数部７４のカウンタがクリアされリスタートしている（図１０の（３））。
【０１３５】
続いて、同期補正処理の準備が整うと、図１０の（４）時点で、計数値取得部７５は、第２基準信号生成部７１から計数値を取得する（図１０の（５））と共に、オーバーヘッド計数部７４から計数値を取得する（図１０の（６））。
【０１３６】
続いて、計数値取得部７５は、第２基準信号生成部７１の計数値を参照して時間に換算し４０３μｓを取得している。これに引き続き、同期判定部７６は、往復伝送遅延時間（４００μｓ）から片道の伝送遅延時間２００μｓを求め、求めた片道の伝送遅延時間とオーバーヘッド計数部７４の計数値を時間換算した２００μｓとを加算し総合遅延時間４００μｓを求めている。そして、同期判定部７６は、総合遅延時間４００μｓと計数値取得部７５が取得した、第２基準信号生成部７１の計数値を時間換算した４０３μｓとを比較し、双方が相違するので第１基準信号と第２基準信号とが非同期であると判定する。
【０１３７】
同期判定部７６によって第１基準信号と第２基準信号とが非同期であると判定されたため、同期補正部７７は、第２基準信号生成部７１に臨時の基準値を設定している。この例の場合、臨時の基準値は１０００μｓ−（４００μｓ−４０３μｓ）＝１００３μｓとなる。そして、第２基準信号生成部７１は、図１０の（７）の時点で計数値が臨時の基準値１００３μｓに達したため、リスタートしている。
【０１３８】
なお、図９及び図１０の例の場合、第３サイクルで、マスタ側のカウンタとスレーブ側のカウンタとが同期することになるため、以後、同期補正部７７は、元の基準値１０００μｓを第２基準信号生成部７１に設定している（設定時点で第２基準信号生成部７１は、リスタートしていない）。そして、第２基準信号生成部７１は、計数値が基準値１０００μｓに達したときにリスタートする。すなわち、第２実施形態は、第３サイクルに対し、次の第４サイクルのマスタ側のカウンタのリスタートと略同タイミングでスレーブ側のカウンタをリスタートすることができるため、マスタ側のカウンタの値とスレーブ側のカウンタの値とを略等しい値に合わせることができる。
【０１３９】
なお、同期補正処理には、第１実施形態と同様に計数値取得部７５、同期判定部７６、同期補正部７７のプログラムの処理が含まれている。
【０１４０】
また、スレーブノード５１ｂの第２基準信号生成部７１は、ＣＰＵ４３に内蔵されていることを前提に説明したが、これに限定されるものではない。すなわち、第２基準信号生成部７１は、ＣＰＵ４３と別体であっても実現可能である。ただ、第２基準信号生成部７１がＣＰＵ４３に内蔵されていることにより、ＣＰＵ４３の外部で生成された所定の信号で第２基準信号生成部７１をハード的にリセットすることができない。言い換えれば、第２基準信号生成部７１はプログラムが介在してその動作が制御されるカウンタである。このため、本実施形態は第２基準信号生成部７１のリセット処理（リスタート処理）をプログラムで実行する必要があり、そのオーバーヘッドが同期誤差に繋がる。よって、本実施形態ではオーバーヘッドを計測するという構成が必要になる（第１実施形態でも同様）。
【０１４１】
また、第２実施形態において、同期補正処理は同期化フレーム受信によって起動される割り込み処理である。
【０１４２】
また、上記説明においてスレーブノード５１ｂは、例えば、往復伝送遅延時間をマスタノード５１ａから得て保持し、保持した往復伝送遅延時間を同期補正処理の際に活用する。これとは別に、マスタノード５１ａが往復伝送遅延時間を同期化フレームに含めてスレーブノード５１ｂに送信し、これを受信したスレーブノード５１ｂが同期化フレームに含まれる往復伝送時間を活用する方法もある。このようにすることで、マスタノード５１ａは状況に応じた往復伝送遅延時間をスレーブノード５１ｂに適宜通知することができるため、スレーブノード５１ｂでは状況に応じた往復伝送遅延時間をタイムリーに活用できる。
【０１４３】
また、伝送遅延時間通知部６５について、往復伝送遅延時間をスレーブノード５１ｂに通知するよう説明したが、これに限定されるものではない。例えば伝送遅延時間通知部６５は、算出した往復伝送遅延時間を半分にして片道の伝送遅延時間を求め、求めた片道の伝送遅延時間をスレーブノード５１ｂに通知するようにしてもよい。この場合、スレーブノード５１ｂの同期判定部７６は、与えられた片道の伝送遅延時間をそのまま使って総合遅延時間を求めるようにすればよい。
【０１４４】
以上の説明のように第２実施形態では、通信路５２による信号の伝送遅延時間を含めて第１基準信号と第２基準信号とを同期させることができる。
【０１４５】
（同期補正処理における伝送遅延時間の通知手順について）
次に、上述した同期補正処理における伝送遅延時間の通知手順について説明する。図１１は、第２実施形態における伝送遅延時間の通知手順の一例を説明するための図である。なお、図１１の例では、上述したマスタノード５１ａと、スレーブノード５１ｂ，５１ｃとを有し、各ノード５１は、通信路５２を介して信号の送受信が可能な状態で接続されているものとする。また、以下の説明では、マスタノード５１ａが各ノード５１間の通信路５２による信号の伝送遅延時間を取得する例を示す。
【０１４６】
また、図１１に示す四角はフレームを示し、各ノード５１に対する線上の四角は送信フレームを示し、線下の四角は受信フレームを示している。また、図１１に示すフレームは、伝送遅延時間リクエストフレーム８１（図１１における「ＲＥＱ＊」（＊は、例えば各スレーブノードの識別子（例えばｂ、ｃ）を示す（以下同様））と、受信完了フレーム８２（図１１における「ＲＥＣ＊」）と、伝送遅延時間通知フレーム８３（図１１における「ＳＥＴ＊」）と、伝送遅延時間通知フレーム８３に対する応答フレーム８４（図１１における「ＡＮＳ＊」）とを有する。
【０１４７】
図１１の例において、マスタノード５１ａは、スレーブノード５１ｂに対する伝送遅延時間リクエストフレーム８１ｂ（ＲＥＱｂ）をマスタノード同期基準にしたがって通信路５２上にブロードキャスト送信する。このとき、伝送遅延時間リクエストフレーム８１ｂには、スレーブノード５１ｂに対する伝送遅延時間リクエストであることを示す情報（対象ノード情報）が含まれている。
【０１４８】
ブロードキャスト送信された伝送遅延時間リクエストフレーム８１ｂは、通信路５２を介して所定の伝送遅延時間後に各スレーブノード５１ｂ，５１ｃで受信される。なお、図１１の例では、スレーブノード５１ｂは、マスタノード同期基準から遅延時間Ｄ１で伝送遅延時間リクエストフレーム８１ｂを受信し、スレーブノード５１ｃは、マスタノード同期基準から遅延時間Ｄ２で伝送遅延時間リクエストフレーム８１ｂを受信する。
【０１４９】
ここで、各スレーブノード５１ｂ，５１ｃは、伝送遅延時間リクエストフレーム８１ｂに含まれている上述した対象ノード情報を確認する。上述したように、伝送遅延時間リクエストフレーム８１ｂは、スレーブノード５１ｂに対するリクエストであるため、スレーブノード５１ｂのみがマスタノード５１ａに対して受信完了フレーム８２ｂ（ＲＥＣｂ）をブロードキャスト送信する。このとき、受信完了フレーム８２ｂには、マスタノード５１ａに対する受信完了フレームであることを示す情報（対象ノード情報）が含まれている。
【０１５０】
送信された受信完了フレーム８２ｂは、通信路５２を介してマスタノード５１ａ及びスレーブノード５１ｃで受信される。次に、マスタノード５１ａ及びスレーブノード５１ｃは、受信完了フレーム８２ｂに含まれている上述した対象ノード情報を確認する。上述したように、受信完了フレーム８２ｂは、マスタノード５１ａに対するフレームである。そのため、マスタノード５１ａは、マスタノード同期基準にしたがって送信した伝送遅延時間リクエストフレーム８１ｂの送信から、その受信完了フレーム８２ｂを受信するまでの時間情報に基づいて、スレーブノード５１ｂに対する伝送遅延時間を設定する。なお、ここで、設定される伝送遅延時間は、通信路５２を介してマスタノード５１ａとスレーブノード５１ｂ間を所定の信号が往復する往復伝送遅延時間でもよく、片道分の伝送遅延時間でもよい。
【０１５１】
また、マスタノード５１ａは、設定した伝送遅延時間をスレーブノード５１ｂに通知するための伝送遅延時間通知フレーム８３ｂ（ＳＥＴｂ）を作成し、作成した伝送遅延時間通知フレーム８３ｂをマスタノード同期基準にしたがってブロードキャスト送信する。なお、伝送遅延時間通知フレーム８３ｂには、上述した対象ノード情報が含まれている。
【０１５２】
ブロードキャスト送信された伝送遅延時間通知フレーム８３ｂは、上述した伝送遅延時間リクエストフレーム８１ｂと同様に通信路５２を介して所定の伝送遅延時間後に各スレーブノード５１ｂ，５１ｃで受信される。
【０１５３】
このとき、スレーブノード５１ｂは、受信した伝送遅延時間通知フレーム８３ｂの対象ノード情報から自ノードに対する情報であると判断し、フレーム内に含まれる伝送遅延時間と、上述したオーバーヘッド時間等とを含めた第２実施形態における同期補正処理を行う。また、スレーブノード５１ｂは、伝送遅延時間通知フレーム８３ｂに対する応答フレーム８４ｂ（ＡＮＳｂ）を作成し、作成した応答フレーム８４ｂをブロードキャスト送信する。このとき、応答フレーム８４ｂには、マスタノード５１ａに対するフレームであることを示す情報（対象ノード情報）及び同期補正処理が完了したことを示す情報等が含まれている。
【０１５４】
送信された応答フレーム８４ｂは、上述した受信完了フレーム８２ｂと同様に、通信路５２を介してマスタノード５１ａ及びスレーブノード５１ｃで受信される。次に、マスタノード５１ａ及びスレーブノード５１ｃは、応答フレーム８４ｂに含まれている上述した対象ノード情報を確認する。上述したように、応答フレーム８４ｂは、マスタノード５１ａに対するフレームである。そのため、マスタノード５１ａは、スレーブノード５１ｂからの応答フレーム８４ｂにより、同期補正処理が完了したことを把握することができる。なお、スレーブノード５１ｃは、伝送遅延時間リクエストフレーム８１ｂ（ＲＥＱｂ）と、受信完了フレーム８２ｂ（ＲＥＣｂ）と、伝送遅延時間通知フレーム８３ｂ（ＳＥＴｂ）と、応答フレーム８４ｂ（ＡＮＳｂ）とを受信しているが、何れも自ノードに対するフレームではないため、受信したフレームは破棄される。
【０１５５】
上述した内容までが、スレーブノード５１ｂへの伝送遅延時間通知手順である。したがって、マスタノード５１ａは、同様にスレーブノード５１ｃに対して伝送遅延時間の通知を行う。
【０１５６】
具体的には、図１１の例において、マスタノード５１ａは、スレーブノード５１ｃに対する伝送遅延時間リクエストフレーム８１ｃ（ＲＥＱｃ）をマスタノード同期基準にしたがって通信路５２上にブロードキャスト送信する。ブロードキャスト送信された伝送遅延時間リクエストフレーム８１ｃは、上述したように通信路５２を介して所定の伝送遅延時間（Ｄ１，Ｄ２）で各スレーブノード５１ｂ，５１ｃにて受信される。
【０１５７】
伝送遅延時間リクエストフレーム８１ｃは、スレーブノード５１ｃに対するリクエストであるため、スレーブノード５１ｃのみがマスタノード５１ａに対して受信完了フレーム８２ｃ（ＲＥＣｃ）をブロードキャスト送信する。送信された受信完了フレーム８２ｃは、通信路５２を介してマスタノード５１ａ及びスレーブノード５１ｃで受信される。受信完了フレーム８２ｃは、マスタノード５１ａに対するフレームである。そのため、マスタノード５１ａは、マスタノード同期基準にしたがって送信した伝送遅延時間リクエストフレーム８１ｃの送信から、その受信完了フレーム８２ｃを受信するまでの時間情報に基づいて、スレーブノード５１ｃに対する伝送遅延時間を設定する。なお、ここで、設定される伝送遅延時間は、通信路５２を介してマスタノード５１ａとスレーブノード５１ｃ間を所定の信号が往復する往復伝送遅延時間でもよく、片道分の伝送遅延時間でもよい。
【０１５８】
また、マスタノード５１ａは、設定した伝送遅延時間をスレーブノード５１ｃに通知するための伝送遅延時間通知フレーム８３ｃ（ＳＥＴｃ）を作成し、作成した伝送遅延時間通知フレーム８３ｃをマスタノード同期基準にしたがってブロードキャスト送信する。ブロードキャスト送信された伝送遅延時間通知フレーム８３ｃは、上述した伝送遅延時間リクエストフレーム８１ｃと同様に通信路５２を介して所定の伝送遅延時間（Ｄ１，Ｄ２）で各スレーブノード５１ｂ，５１ｃにて受信される。
【０１５９】
このとき、スレーブノード５１ｃは、上述したように、受信した伝送遅延時間通知フレーム８３ｃの対象ノード情報から自ノードに対する情報であると判断し、フレーム内に含まれる伝送遅延時間と、上述したオーバーヘッド時間等とを含めた第２実施形態における同期補正処理を行う。また、スレーブノード５１ｃは、伝送遅延時間通知フレーム８３ｃに対する応答フレーム８４ｃ（ＡＮＳｃ）を作成し、作成した応答フレーム８４ｃをブロードキャスト送信する。このとき、応答フレーム８４ｃには、マスタノード５１ａに対するフレームであることを示す情報（対象ノード情報）及び同期補正処理が完了したことを示す情報等が含まれている。
【０１６０】
送信された応答フレーム８４ｃは、上述した受信完了フレーム８２ｃと同様に、通信路５２を介してマスタノード５１ａ及びスレーブノード５１ｃで受信される。次に、マスタノード５１ａ及びスレーブノード５１ｂは、応答フレーム８４ｃに含まれている上述した対象ノード情報を確認する。上述したように、応答フレーム８４ｃは、マスタノード５１ａに対するフレームである。そのため、マスタノード５１ａは、スレーブノード５１ｃからの応答フレーム８４ｃにより、同期補正処理が完了したことを把握することができる。なお、スレーブノード５１ｂは、伝送遅延時間リクエストフレーム８１ｃ（ＲＥＱｃ）と、受信完了フレーム８２ｃ（ＲＥＣｃ）と、伝送遅延時間通知フレーム８３ｃ（ＳＥＴｃ）と、応答フレーム８４ｃ（ＡＮＳｃ）とを受信しているが、何れも自ノードに対するフレームではないため、受信したフレームは破棄される。
【０１６１】
第２実施形態では、上述した処理を通信路５２の各スレーブノード５１ｂ，５１ｃに対して順次実施することで、伝送遅延時間を通知することができる。
【０１６２】
なお、伝送遅延時間の通知手順については、上述した手順に限定されるものでない。例えば、伝送遅延時間リクエストフレーム８１をブロードキャスト送信し、これを受信したスレーブノード５１ｂ，５１ｃが応答フレーム８４の送信によって、通信路５２上やマスタノード５１ａ上で輻輳しないように、例えば上述した各ノード内部にセンドカウンタを設け、そのセンドカウンタを使って異なるタイミングで応答フレーム８４を送信するように制御してもよい。
【０１６３】
上述した第２実施形態では、例えばイーサネット（登録商標）のようなスター型トポロジを持つシステムにおいて、時分割多重伝送方式を用いたコモンメモリネットワークに対し、各ノードのカウンタを同期化し、装置全体で制御のタイミングを合わせる同期制御ができる。また、第２実施形態において、同期させるカウンタは、マイコン内部のカウンタを用いたり、ＦＰＧＡ等のハードウェアにてカウンタを用いて構成することができる。したがって、第２実施形態では、例えば送受信されるフレームの受信タイミングでマスタノード５１ａと同期しているカウンタと、マイコンでの処理時間を計測するカウンタとを、例えばＦＰＧＡ等のハードウェアで構成し、その計数値をマイコンで演算することで、処理誤差を補正することができる。
【０１６４】
ここで、上述の例では、ノード同期システム５０の一例として、マスタ−スレーブ間のノード同期について説明したが、本実施形態においては、これに限定されるものではなく、例えば保護リレー等におけるサンプリング同期技術にも応用することができる。
【０１６５】
（ネットワーク伝送システム：概略構成例）
ここで、上述した第２実施形態では、例えば各ノード間を、ＩＥＥＥ８０２．３ｕ（１００ＢＡＳＥ−ＴＸ）やＩＥＥＥ８０２．３ａｂ（１０００ＢＡＳＥ−Ｔ）等のようなＨＵＢ（ハブ）等の中継装置を介して接続される場合がある。図１２は、第２実施形態におけるマスタノード５１ａ及びスレーブノード５１ｂ，５１ｃを用いたノード同期システム５０を含むネットワーク伝送システムの概略構成の一例を示す図である。図１２に示すネットワーク伝送システム９０は、一例として、上述した複数のノード５１（図１２の例では、ノード５１ａ〜５１ｃ）と、１又は複数の中継装置としてのＨＵＢ９１（図１２の例では、ＨＵＢ９１ａ〜９１ｅ）とを有する。なお、ノードや中継装置の数や種類、接続方法についてはこれに限定されるものではない。
【０１６６】
図１２の例では、図７のマスタノード、すなわちノード５１ａをノードＡ（マスタ局）とし、図７のスレーブノード、すなわちノード５１ｂ，ノード５１ｃをノードＢ，ノードＣ（スレーブ局）とする。また、図１２に示すように、ネットワーク伝送システム９０の通信路は、例えばマスタノード５１ａとスレーブノード５１ｂとの間に中継装置を有するスター型である。なお、中継装置は、一例としてＨＵＢを用いているが、本実施形態においてはこれに限定されるものではなく、例えばルータ、リピータ、光コンバータ等を用いることもできる。
【０１６７】
また、マスタノード５１ａ及びスレーブノード５１ｂ，５１ｃは、例えばプログラマブルコントローラ（制御装置、もしくはＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）ともいう）であり、ネットワーク伝送システム９０の通信路はこれらプログラマブルコントローラ同士のデータを交換するデータ交換バスである。このデータ交換バスに接続される機器としては、例えば上述のプログラマブルコントローラに加え、ＰＣ、サーバ、Ｉ／Ｏモジュール、ドライブ装置（例えば、インバータ、サーボ等）等がある。
【０１６８】
図１２に示すネットワーク伝送システム９０は、ノード５１ａ及びノード５１ｃが同一のＨＵＢ９１ａに接続されており、ノード５１ｂは、５段のＨＵＢ（中継装置）を経由してノード５１ａ及びノード５１ｃと接続されている。
【０１６９】
ここで、一般的なイーサネットのＨＵＢでは、ストア&フォワードといわれるインタフェース方式が採用されている。この場合、送られてきたフレームは、全てをＨＵＢ内の受信バッファに蓄え、ＨＵＢ内部処理（例えば、異常判定や宛先判定等）を行ってから送信される。
【０１７０】
（ノード同期方法のシーケンス例）
図１３は、ノード同期方法の概略的なシーケンス例を示す図である。図１３の例では、説明の便宜上、マスタノード５１ａとスレーブノード５１ｂとを用いた同期について説明するが、本実施形態においてはこれに限定されるものではなく、１つのマスタノードに対して複数のスレーブノードを同期させることができる。
【０１７１】
図１３のノード同期処理において、まず、マスタノード５１ａの第１基準信号生成部６１は、第１基準信号を生成し（Ｓ１１）、スレーブノード５１ｂの第２基準信号生成部７１は、第２基準信号を生成する（Ｓ１２）。また、この処理は、ハードウェア的にサイクリックに動作されている。
【０１７２】
また、マスタノード５１ａの間隔計数部６４は、補正処理間隔を計数し、計数値が補正処理間隔値に達すると、補正処理開始信号を生成して同期補正処理を開始する（Ｓ１３）。
【０１７３】
間隔計数部６４の計数値が補正処理間隔値に達すると、マスタノード５１ａにおける同期補正処理が開始され（Ｓ１３）、マスタノード５１ａの伝送遅延時間通知部６５は、伝送遅延時間を算出するために伝送遅延時間リクエストフレームを送信する（Ｓ１４）。なお、伝送遅延時間リクエストフレームは、同期化フレームに含まれる所定部分のデータを変えただけのものであり、同期化フレームと言い換えることができるが、ここでは便宜上、「伝送遅延時間リクエストフレーム」として説明している。
【０１７４】
スレーブノード５１ｂの受信完了通知部７９は、伝送遅延時間リクエストフレームを受信すると、受信完了通知を生成し、マスタノード５１ａに通知する（Ｓ１５）。
【０１７５】
マスタノード５１ａの伝送遅延時間通知部６５は、受信完了通知を受信すると、例えば往復伝送遅延時間を算出し（Ｓ１６）、算出した往復伝送遅延時間等を含む伝送遅延時間通知フレームを生成し（Ｓ１７）、生成した伝送遅延時間通知フレームを、通信路５２を介してスレーブノード５１ｂに送信する（Ｓ１８）。
【０１７６】
スレーブノード５１ｂのフレーム受信部８０は、伝送遅延時間通知フレームを受信すると、そのフレームに含まれる往復伝送遅延時間（値）をメモリ４５等に退避する（Ｓ１９）。そして、マスタノード５１ａの同期化フレーム通知部６６は、第１基準信号に同期させて、同期化フレームを割り込み信号としてスレーブノード５１ｂに送信する（Ｓ２０）。スレーブノード５１ｂが同期化フレームを受信すると（Ｓ２１）、ソフトウェアによる同期補正処理を起動させる（Ｓ２２）と共に、オーバーヘッド計数部７４をリスタートする（Ｓ２３）。そして、計数値取得部７５は、第２基準信号生成部７１とオーバーヘッド計数部７４との両計数値を取得し（Ｓ２４）、同期判定部７６は、かかる両計数値に基づいて同期判定を行い（Ｓ２５）、非同期であると判定されれば、総合遅延時間を算出する（Ｓ２６）。総合遅延時間とは、例えば伝送遅延時間とオーバーヘッド値とを加算した値であるが、これに限定されるものではない。また、スレーブノード５１ｂの同期補正部７７は、算出された総合遅延時間を用いて同期補正を行う（Ｓ２７）。なお、図１３に示す処理では、スレーブノード５１ｂは、同期補正が完了したことを示す応答フレームをマスタノード５１ａに送信してもよい。また、マスタノード５１ａは、通信路５２に接続されたスレーブノード５１ｂ以外のスレーブノードに対しても上述した手順でノード同期処理を行う。
【０１７７】
ここで、本実施形態では、コンピュータを、上述したノード５１が有する各手段として機能させるためのプログラム（ノード同期プログラム）を生成し、生成したプログラムを、コンピュータ等にインストールすることにより、上述した各ノード同期処理を実現することができる。
【０１７８】
上述したように、本実施形態によれば、処理負荷を抑制しつつ、所定の信号を高精度に同期させることができる。これにより、例えば、各ノード５１のデータ交換周期の安定化を実現することができる。また、本実施形態によれば、例えばイーサネットのようなスター型トポロジを持つシステムにおいて、時分割多重伝送方式を用いた共有メモリネットワークに対し、各ノード５１のタイマを同期化し、伝送の効率化とデータ交換の効率化、データ交換周期の安定化等を実現することができる。
【０１７９】
なお、本実施形態は、例えば鉄鋼プラント等のような大規模設備等における一連の動作を複数の操作を用いて行う場合の同期手法に適用することができ、更にギガビットイーサネット全般における各装置間の同期方式としても広く適用することができる。
【０１８０】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１８１】
なお、本明細書の信号同期方法、及び、ノード同期方法の各工程は、必ずしもシーケンス図として記載された順序に沿って時系列に処理する必要はなく、並列的あるいはサブルーチンによる処理を含んでもよい。
【産業上の利用可能性】
【０１８２】
本発明は、所定の信号を同期させるための信号同期システム、ノード同期システム、信号同期方法、及び、ノード同期方法に利用することができる。
【符号の説明】
【０１８３】
１０  信号同期システム
１１  プロセッサモジュール
１２  伝送バス
１３，５３  Ｉ／Ｏ（入出力）モジュール
１４，５４  外部機器
１５，５５  プログラミング装置
２１，６１  第１基準信号生成部
２２，６２  第１演算部
２３，３８，６３，７８  記憶部
３１，７１  第２基準信号生成部
３２，７２  第２演算部
３４，７４  オーバーヘッド計数部
３５，７５  計数値取得部
３６，７６  同期判定部
３７，７７  同期補正部
４１  入力部
４２  出力部
４３  ＣＰＵ
４４  ＦＰＧＡ
４５  メモリ
４６  外部インタフェース
５０  ノード同期システム
５１  ノード
５２  通信路
６５  伝送遅延時間通知部
６６  同期化フレーム通知部
７９  受信完了通知部
８０  フレーム受信部
８１  伝送遅延時間リクエストフレーム
８２  受信完了フレーム
８３  伝送遅延時間通知フレーム
８４  応答フレーム
９０  ネットワーク伝送システム
９１  ＨＵＢ（中継装置）
【図１】
0005825446.tif 000002
【図２】
0005825446.tif 000003
【図３】
0005825446.tif 000004
【図４】
0005825446.tif 000005
【図５】
0005825446.tif 000006
【図６】
0005825446.tif 000007
【図７】
0005825446.tif 000008
【図８】
0005825446.tif 000009
【図９】
0005825446.tif 000010
【図１０】
0005825446.tif 000011
【図１１】
0005825446.tif 000012
【図１２】
0005825446.tif 000013
【図１３】
0005825446.tif 000014