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