以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書及び図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
(本実施形態について)
本実施形態は、例えば、複数のプロセッサモジュールや、少なくとも1のプロセッサモジュールをそれぞれ含む複数のノード、装置、基板といった、主従関係にあるモジュール間でカウンタ(タイマ)同期を行う場合に、主モジュール側からの割り込み信号(カウンタリセット信号)に対し、従モジュール側のオーバーヘッド値を求める。また、本実施形態は、求めたオーバーヘッド値と従モジュール側のカウンタとに基づいて同期補正処理を行う。
ただし、当該同期補正処理を頻繁に実行すると処理負荷が増大するので、本実施形態においては、同期補正処理を行う間隔を計数し、所定の補正処理間隔値毎に定期的(間欠的)に同期補正処理を実行する。
また、本実施形態は、主従関係にある装置をマスタノード及びスレーブノードとした場合に、通信路上の遅延時間(伝送遅延時間)も考慮して同期補正処理を行う。
以下に、本実施形態における信号同期システム、及び、ノード同期システムを好適に実施した形態について、図面を用いて説明する。
(第1実施形態:信号同期システム)
図1は、第1実施形態における信号同期システムの概略構成の一例を示す図である。図1に示す信号同期システム10は、一例として、モジュールとしての複数のプロセッサモジュール(図1の例では、プロセッサモジュール11a〜11c)間で、カウンタ同期を行うためのマルチプロセッサの一例を示している。
図1に示す信号同期システム10は、複数のプロセッサモジュール11a〜11c(以下、必要に応じて「プロセッサモジュール11」という)と、伝送バス12と、I/O(入出力)モジュール13(図1中、13a〜13dで示す)と、外部機器14(図1中、14a〜14dで示す)と、プログラミング装置15とを有する。ここで、図1の例では、説明の便宜上、プロセッサモジュール11aを主プロセッサモジュールとし、プロセッサモジュール11b,11cを従プロセッサモジュールとして、それぞれのプロセッサモジュールとしての主な構成について説明する。ただし、従プロセッサモジュールの数等については図1のように2つに限定されるものではない。
なお、本実施形態においては、上記の構成に限定されるものではなく、1つのプロセッサモジュールが主プロセッサモジュール11aにも従プロセッサモジュール11b,11cにもなり得るように同一の構成を有している。また、各プロセッサモジュール11は、伝送バス12により接続されている。なお、第1実施形態では、伝送バス12による遅延時間は生じていないものとする。
ここで、主プロセッサモジュール11aは、第1基準信号生成部21と、第1演算部22と、記憶部23とを有する。なお、図1の例では、第1基準信号生成部21は後述するCPUに内蔵されているが、これに限定されるものではなく、例えば第1基準信号生成部21とCPUとが別体で構成されていてもよい。また、上述した「内蔵されている」とは、例えば第1基準信号生成部21に対して、CPU内の各機能部(第1基準信号生成部21や第1演算部22)のみがアクセスできることを意味する。
また、従プロセッサモジュール11b,11cは、第2基準信号生成部31と、第2演算部32と、間隔計数部33と、オーバーヘッド計数部34と、計数値取得部35と、同期判定部36と、同期補正部37と、記憶部38とを有する。なお、図1の例では、第2基準信号生成部31がCPUに内蔵されているが、これに限定されるものではなく、例えば第2基準信号生成部31とCPUとが別体で構成されていてもよい。
第1基準信号生成部21は、計数を行い、予め設定された基準値に計数値が達することで第1基準信号を生成する。なお、第1基準信号生成部21は、ハードウェア的なカウンタ(以下、必要に応じて「タイマ」ともいう)として機能する。上述した計数値は、基準値に基づいてサイクリックにカウントされている。図1では、このようなハードウェア的なカウンタを破線で示している。
第1演算部22は、第1基準信号生成部21によって生成された第1基準信号に応じて、記憶部23に記憶されている所定のアプリケーションプログラム等を実行(演算)する。また、第1基準信号は、割り込み信号(カウンタリセット信号)として、伝送バス12を介して従プロセッサモジュール11b,11cにも与えられる(送信される)。
記憶部23は、第1演算部22で演算させる所定のアプリケーションプログラム(シーケンスプログラム)を記憶する。なお、第1演算部22が演算する所定のアプリケーションプログラムは、例えば主プロセッサモジュール11aに接続されたI/Oモジュール13aに指示を与え、I/Oモジュール13aによって外部機器14aを制御する処理である。そのため、記憶部23には、主に自プロセッサモジュール11aに接続されているI/Oモジュール13aや外部機器14aに対して所定の処理を実行するためのプログラムが記憶される。
つまり、主プロセッサモジュール11aは、第1基準信号を所定周期毎に生成し、第1演算部22は、第1基準信号に応じてアプリケーションプログラム(シーケンスプログラム)を実行(演算)することで所定の機器を制御し、当該アプリケーションプログラム(シーケンスプログラム)はサイクリックに実行される。
次に、従プロセッサモジュール11b,11cについて説明するが、従プロセッサモジュール11b,11cは同一の構成であるため、以下の説明では、従プロセッサモジュール11bを用いて説明し、従プロセッサモジュール11cの説明は省略する。
第2基準信号生成部31は、計数を行い、上述した第1基準信号生成部21に設定されている基準値と同一の基準値が設定され、基準値に計数値が達することで第2基準信号を生成する。なお、第2基準信号生成部31は、ハードウェア的なカウンタとして機能する。上述した計数値は、基準値に基づいてサイクリックにカウントされている。付言すると、第1基準信号生成部21と第2基準信号生成部31のそれぞれのカウンタは、フリーランニングカウンタであり、自走している。
第2演算部32は、第2基準信号生成部31によって生成された第2基準信号に応じて、記憶部38に記憶されている所定のアプリケーションプログラム等を実行(演算)する。
なお、第2基準信号生成部31は、例えばCPU内の第2演算部32からしかアクセスすることができないカウンタであり、CPUに内蔵されたカウンタ(CPU内蔵カウンタ)である。すなわち、第2基準信号生成部31は、主プロセッサモジュール11a等の外部からハード的にリセットすることができないカウンタである。
また、第2演算部32は、主プロセッサモジュール11aからの第1基準信号(同期基準信号)を割り込み信号として受信し、後述の同期補正処理を起動する。
間隔計数部33は、計数を行い、同期処理を行う補正処理間隔に相当する補正処理間隔値が予め設定され、補正処理間隔値に計数値が達すると、その旨を示す補正処理開始信号を生成する。
なお、補正処理間隔値は、以下のような計算を通じて設定されている。例えば、当該信号同期システムに要求される加工精度を満たすために許容される、主プロセッサモジュール11aと従プロセッサモジュール11bとの同期誤差が10μsであるとする。この場合、本実施形態では、同期誤差が1〜5μsとなるまでの最短時間を計算する。ここで、1μs以上としたのは、それより短いと、同期補正処理の頻度が高くなって処理負荷が増加するからであり、5μs以下としたのは、10μsに対するマージンを考慮したものである。
このとき、主プロセッサモジュール11aと従プロセッサモジュール11bとで用いられる発振器の周波数が50MHz、発振精度が50ppmであったとする。この条件下において、同期誤差が1μsとなる最短時間は、1クロックの時間×同期許容誤差ずれる発振回数であり、20ns×((1μs/20ns)×(1/50ppm))=20msとなる。同様に、同期誤差が5μsとなる最短時間は、100msとなる。したがって、補正処理間隔値は、20ms〜100msを計数値に換算した値とするとよい。補正処理間隔値をこのような範囲に設定し、同期補正処理を間欠的に実行することで、処理負荷を抑制しつつ、より高い加工精度や生産品質の向上を実現できる。
オーバーヘッド計数部34は、計数を行い、補正処理開始信号の受信後、すなわち、間隔計数部33の計数値が補正処理間隔値に達した後、上述した第1基準信号の受信を起点として、同期補正処理が実行されるまでのオーバーヘッド値を計測する。具体的には、オーバーヘッド計数部34は、第1基準信号を受信してリスタートするハードウェア的なカウンタ(タイマ)として機能する。
オーバーヘッド計数部34はハードウェアで構成されたカウンタなので、第1基準信号に対して直ぐに反応するが、同期補正処理は、例えば、計数値を読み込むための準備が整うまでに時間を要する。この計数値を読み込むための準備が整うまでに要する時間がオーバーヘッドとなる。なお、オーバーヘッドとは、あるイベントが発生してからそのイベントに対する処理(ソフトウェア)が実際に実行されるまでの遅延時間を意味するが、本例ではオーバーヘッド計数部34がリスタートされた起点から同期補正処理が実際に行われるまでの時間であり、これに限定されるものではない。
計数値取得部35は、補正処理開始信号の受信後、すなわち、間隔計数部33の計数値が補正処理間隔値に達した後、第1基準信号の受信に応じ、同期補正処理が実際に実行される時点(開始時点)での、第2基準信号生成部31の計数値及びオーバーヘッド計数部34の計数値を取得する。
同期判定部36は、計数値取得部35によって取得された、第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値とが等しいとき、第1基準信号と第2基準信号とが同期していると判定する。また、同期判定部36は、計数値取得部35によって取得された、第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値とが異なるとき、上述した第1基準信号と第2基準信号とが非同期であると判定する。
また、同期判定部36は、計数値取得部35によって取得された第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値とを時間換算し、双方の時間が等しいときに同期していると判定し、また双方の時間が異なるときには非同期であると判定することもできる。つまり、第1実施形態では、各プロセッサモジュール11間において、各カウンタの1クロックあたりの単位時間が等しくない場合もありえる。したがって、そのような場合には、各計数値を時間に換算し、換算された時間で同期/非同期の判定を行う。
同期補正部37は、同期判定部36が第1基準信号と第2基準信号とが同期していると判定すると、基準値を第2基準信号生成部31に設定する。また、同期補正部37は、同期判定部36が第1基準信号と第2基準信号とが非同期であると判定すると、第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値との差分を相殺する値を求める。具体的に、同期補正部37は、計数値取得部35によって取得された、第2基準信号生成部31の計数値から、オーバーヘッド計数部34の計数値を差し引いて同期補正値を求める。次に、同期補正部37は、求めた同期補正値を基準値から差し引き、差し引いた値を第2基準信号生成部31に新たな基準値として設定する。この新たな基準値とは、同期判定部36が同期を判定したときに使われるタイマ基準値(デフォルトの基準値)に対し、同期判定部36が非同期を判定したときに一時的に使われるタイマ基準値である。
また、同期判定部36が第1基準信号と第2基準信号とが非同期であると判定し、差し引いた値を第2基準信号生成部31に新たな基準値として設定し、その差し引いた値での計数が完了すると、同期補正部37は、速やかに、基準値を第2基準信号生成部31に設定する。こうして、一時的に基準値を同期補正値分だけ変更することができる。ここでは、同期補正値分の補正を一度に実行する例を挙げているが、かかる場合に限らず、複数回に分けて実行してもよい。その場合においても、同期補正部37は、同期補正処理が完了した後、基準値を第2基準信号生成部31に設定する。
なお、同期補正部37は、同期判定部36が第1基準信号と第2基準信号との同期を判定すれば、その都度上述したデフォルトの基準値を第2基準信号生成部31に設定してもよいが、同期が保たれている場合には、一度デフォルトの基準値を設定すれば、何もしなくてもよい。
また、本実施形態では、補正処理間隔毎に同期補正処理が実行されるので、第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値とが異なる可能性が高く、同期判定部36が、第1基準信号と第2基準信号とが非同期であると判定することが多い。そこで、同期判定部36による判定を実行することなく、すなわち、第1基準信号と第2基準信号とが同期であるか非同期であるかに拘わらず、同期補正部37が第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値との差分を相殺する値を求め、その値を第2基準信号生成部31に新たな基準値として設定してもよい。
このように、同期判定部36の構成を省略することにより、判定処理が不要になり、判定に費やす処理分、処理負荷を軽減することが可能となる。
記憶部38は、第2演算部32で演算させる所定のアプリケーションプログラム(シーケンスプログラム)を記憶する。なお、第2演算部32が演算する所定のアプリケーションプログラムは、例えば従プロセッサモジュール11bに接続されたI/Oモジュール13b,13cに指示を与え、I/Oモジュール13b,13cによって外部機器14b,14cを制御する処理である。そのため、記憶部38には、主に自プロセッサモジュール11bに接続されているI/Oモジュール13b,13cや外部機器14b,14cに対して所定の処理を実行するためのプログラムが記憶される。
I/Oモジュール13は、外部機器14等と入出力処理を行う。例えば、I/Oモジュール13は、接続された外部機器14等から得られるデータ等をプロセッサモジュール11に出力(送信)したり、プロセッサモジュール11により演算処理された結果を外部機器14等に出力したり、記憶したりする。つまり、プロセッサモジュール11は、I/Oモジュール13から得られた入力データをアプリケーションプログラムで演算し、この演算結果をI/Oモジュール13に出力データとして与えることにより、外部機器14を制御する。
外部機器14は、例えば各種センサやモータ、記録装置等である。外部機器14は、I/Oモジュール13からの制御信号等に基づいて、データの検出や駆動、データの入出力等を行う。
ここで、基準値は、プロセッサモジュール11a,プロセッサモジュール11b,プロセッサモジュール11cのそれぞれに予め設定されていてもよく、それぞれに外部接続されるプログラミング装置15(設定装置)からも設定することができる。
プログラミング装置15は、ユーザ等が使用するPC(Personal Computer)等にプロセッサモジュール11と通信し、基準値を設定する機能を付加すれば実現できるが、これに限定されるものではなく、専用の設定装置であってもよい。これにより、ユーザ毎に基準値(処理周期)を任意に調整することができる。
ここで、上述の例では、信号同期システム10の一例としてマルチプロセッサについて説明したが、信号同期システム10としては、第1基準信号生成部21と、第2基準信号生成部31と、オーバーヘッド計数部34と、計数値取得部35と、同期判定部36と、同期補正部37とを含んでいればよい。
なお、信号同期システム10の適用例については、マルチプロセッサに限定されるものではなく、例えば主装置側を原子時計による日付・時刻情報のデジタル信号を送信する送信局とし、従装置側を電波時計としたタイマ同期システムとしての応用も可能である。
(プロセッサモジュール11のハードウェア構成例)
次に、プロセッサモジュール11のハードウェア構成例について、図を用いて説明する。図2は、プロセッサモジュール11のハードウェア構成の一例を示す図である。図2に示すプロセッサモジュール11は、入力部41と、出力部42と、CPU43と、FPGA44と、メモリ45と、外部インタフェース46とを有し、これらは共通バスBにより接続されている。
入力部41は、例えばユーザ等からのプログラムの実行等、各種操作信号を入力する。なお、入力部41は、例えばユーザ等が操作するキーボードや、マウス、タッチパネル等のポインティングデバイスを有していてもよく、音声等により入力する場合には、音声入力デバイスを有していてもよい。
出力部42は、本実施形態における処理を行うプロセッサモジュール11を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイを有し、CPU43が実行する制御プログラムの実行経過や結果等を表示する。
CPU43は、OS(Operating System)等の制御プログラム、及びメモリ45に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、プロセッサモジュール11全体の処理を制御することで本実施形態における各処理を実現する。また、CPU43は、メモリ45と協働して、上述した第1演算部22、第2演算部32、計数値取得部35、同期判定部36、同期補正部37として実質的に機能し、第1基準信号生成部21、第2基準信号生成部31を内蔵する。なお、プログラム実行中に必要な各種情報等は、メモリ45から取得し、実行結果等をメモリ45に格納してもよい。
FPGA(Field−Programmable Gate Array)44は、論理回路を書き換え可能な集積回路である。FPGA44は、CPU43を補助する様々な論理回路で構成され、本実施形態では、特に、間隔計数部33、オーバーヘッド計数部34として機能する。ただし、間隔計数部33はソフトウェアで処理されてもよい。
メモリ45は、CPU43により読み出された実行プログラム等を格納する。なお、メモリ45は、ROM(Read Only Memory)やRAM(Random Access Memory)等からなる。また、メモリ45は、補助記憶装置として、ハードディスク等のストレージ手段を有していてもよい。また、メモリ45は、本実施形態における実行プログラムやコンピュータに設けられた制御プログラム等を記憶し、必要に応じて入出力を行う。なお、メモリ45は、上述した記憶部23,38等に対応する。
外部インタフェース46は、伝送バス12等を介して他のプロセッサモジュール11間とのデータや制御信号の送受信を行う。また、外部インタフェース46は、接続されたI/Oモジュール13とのデータや制御信号の送受信等も行う。
上述したハードウェア構成により、本実施形態における同期補正処理を実行することが可能となる。また、実行プログラムをインストールすることにより、汎用のパーソナルコンピュータ等で本実施形態における同期補正処理を容易に実現することが可能となる。
次に、第1実施形態における同期補正処理例について以下に説明する。
(第1実施形態における同期補正処理例)
図3〜図5は、第1実施形態における同期補正処理例を説明するためのタイムチャート図(その1〜その3)である。図3〜図5に示す例では、主プロセッサモジュール11aと、従プロセッサモジュール11bとの間における計数値の同期例を示している。なお、第1実施形態における基準値(処理周期)は、1000μsとするが、これに限定されるものではなく、例えば上述したプログラミング装置15により適宜設定を変更することができる。
図3では、主プロセッサモジュール11aの第1基準信号生成部21が計数を行っている。その計数値が図3の(1)時点で基準値に達すると、第1基準信号を出力する。そして、第1演算部22は、当該第1基準信号に応じて所定の処理を実行する。図3中、ハッチングで示した三角形の領域は、計数値の推移を示し、時間の経過に従い計数値が増加し、計数目標(例えば基準値)に達するとリセットされる。
また、従プロセッサモジュール11bの第2基準信号生成部31が計数を行っている。その計数値が図3の(2)時点で基準値に達すると、第2基準信号を出力する。そして、第2演算部32は、当該第2基準信号に応じて所定の処理を実行する。このように、主プロセッサモジュール11a及び従プロセッサモジュール11bでは、それぞれ、独立した第1基準信号及び第2基準信号に応じて所定の処理が遂行される。
また、従プロセッサモジュール11bでは、間隔計数部33が計数を行い、計数値が補正処理間隔値に達すると(図3の(3))、補正処理開始信号を生成する。かかる補正処理開始信号に応じて同期補正処理の準備が開始される。
主プロセッサモジュール11aで生成される第1基準信号は、割り込み信号として従プロセッサモジュール11bに送信されている。従プロセッサモジュール11bは、第1基準信号を割り込みとして受信し、ソフトウェアによる同期補正処理を起動させている(図3の(4))。これと共に従プロセッサモジュール11bのオーバーヘッド計数部34は、当該ハードウェアによるカウンタの計数値をクリアしてリスタートしている(図3の(5))。続いて、同期補正処理の準備が整うと、図3の(6)時点で、計数値取得部35は、第2基準信号生成部31から計数値を取得する(図3の(7))と共に、オーバーヘッド計数部34から計数値を取得する(図3の(8))。
同期判定部36は、計数値取得部35によって与えられた計数値を時間に換算する。ここでは、例えば、第2基準信号生成部31の計数値から300μsを得、オーバーヘッド計数部34の計数値から300μsを得たとする。こうして、第1基準信号の割り込みの起点から、同期補正処理において計数値が取得されるまでのオーバーヘッドを計測すると共に、その時点の第2基準信号生成部31の計数値を取得することができる。第1基準信号と第2基準信号とが同期している場合、かかる計数値は等しくなるはずである。
同期判定部36は、計数値取得部35から得た、第2基準信号生成部31の計数値(300μs)とオーバーヘッド計数部34の計数値(300μs)とを比較する。この場合、同期判定部36は、双方が同じ値なので第1基準信号と第2基準信号とが同期していると判定する。
同期判定部36によって第1基準信号と第2基準信号とが同期していると判定されたため、同期補正部37は、通常通り、基準値1000μsを第2基準信号生成部31に設定している(この時点で第2基準信号生成部31は、リスタートしていない)。そして、第2基準信号生成部31は、図3の(9)の時点で計数値が基準値1000μsに達したため、リスタートしている。
なお、第2基準信号生成部31については、上述したCPU43に内蔵されているが、本実施形態においては、これに限定されるものではなく、CPU43と別体であってもよい。
また、付言しておくが、図3に示す同期補正処理の中には、計数値取得部35、同期判定部36、同期補正部37のプログラムの処理が含まれている。
図4は、従プロセッサモジュール11bのカウンタが、主プロセッサモジュール11aのカウンタより3μs遅れている場合を示している。
図4では、従プロセッサモジュール11bの間隔計数部33が計数を行い、計数値が補正処理間隔値に達すると(図4の(1))、補正処理開始信号を生成する。かかる補正処理開始信号に応じて同期補正処理の準備が開始される。
主プロセッサモジュール11aの第1基準信号生成部21は、計数値が基準値に達したため、1000μs毎に第1基準信号を出力している。従プロセッサモジュール11bは、補正処理開始信号が生成された後、第1基準信号を割り込みとして受信し、ソフトウェアによる同期補正処理を起動させる(図4の(2))。これと共に従プロセッサモジュール11bのオーバーヘッド計数部34は、当該ハードウェアによるカウンタの計数値をクリアしてリスタートしている(図4の(3))。続いて、同期補正処理の準備が整うと、図4の(4)時点で、計数値取得部35は、第2基準信号生成部31から計数値を取得する(図4の(5))と共に、オーバーヘッド計数部34から計数値を取得する(図4の(6))。
同期判定部36は、計数値取得部35によって与えられた計数値を時間に換算する。ここでは、例えば、第2基準信号生成部31の計数値から297μsを得、オーバーヘッド計数部34の計数値から300μsを得たとする。同期判定部36は、両計数値を比較し、両計数値が異なる値なので第1基準信号と第2基準信号とが非同期であると判定する。
同期判定部36によって非同期が判定されたため、同期補正部37は、第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値との差分が相殺されるように、第2基準信号生成部31に臨時の基準値を設定する。具体的には、同期補正部37は、「基準値(処理周期)−(オーバーヘッド計数部34の計数値−第2基準信号生成部31の計数値)」という式にて第2基準信号生成部31の計数値のリスタート値(リセット値)を求め、求めた計数値を臨時の基準値として第2基準信号生成部31にセットする。この例の場合、臨時の基準値は1000μs−(300μs−297μs)=997μsとなる。そして、第2基準信号生成部31は、図4の(7)の時点で計数値が臨時の基準値997μsに達したため、リスタートしている。ちなみに、オーバーヘッド計数部34の計数値−第2基準信号生成部31の計数値の値が同期補正値である。
このようにすることにより、第1実施形態は、第2サイクルに対し、次の第3サイクルの第1基準信号の出力タイミングと略同タイミングで第2基準信号生成部31をリスタートすることができる。したがって、第1実施形態は、第1基準信号と第2基準信号とを同期させることができる。なお、図4の場合、第3サイクル以降は、基準値が1000μsに設定される。
図5は、従プロセッサモジュール11bのカウンタが、主プロセッサモジュール11aのカウンタより3μs進んでいる場合を示している。
図5では、従プロセッサモジュール11bの間隔計数部33が計数を行い、計数値が補正処理間隔値に達すると(図5の(1))、補正処理開始信号を生成する。かかる補正処理開始信号に応じて同期補正処理の準備が開始される。
主プロセッサモジュール11aの第1基準信号生成部21は、計数値が基準値に達したため、1000μs毎に第1基準信号を出力している。従プロセッサモジュール11bは、補正処理開始信号が生成された後、第1基準信号を割り込みとして受信し、ソフトウェアによる同期補正処理を起動させている(図5の(2))。これと共に従プロセッサモジュール11bのオーバーヘッド計数部34は、当該ハードウェアによるカウンタの計数値をクリアしてリスタートしている(図5の(3))。続いて、同期補正処理の準備が整うと、図5の(4)時点で、計数値取得部35は、第2基準信号生成部31から計数値を取得する(図5の(5))と共に、オーバーヘッド計数部34から計数値を取得する(図5の(6))。
同期判定部36は、計数値取得部35によって与えられた計数値を時間に換算する。ここでは、例えば、第2基準信号生成部31の計数値から303μsを得、オーバーヘッド計数部34の計数値から300μsを得たとする。同期判定部36は、両計数値を比較し、両計数値が異なる値であるため、第1基準信号と第2基準信号とが非同期であると判定する。
同期判定部36によって非同期が判定されたため、同期補正部37は、第2基準信号生成部31の計数値とオーバーヘッド計数部34の計数値との差分が相殺されるように、第2基準信号生成部31に臨時の基準値を設定する。具体的には、同期補正部37は、図4の説明と同様に計算して、臨時の基準値を求め、第2基準信号生成部31にセットする。この例の場合、臨時の基準値は、1000μs−(300μs−303μs)=1003μsとなる。そして、第2基準信号生成部31は、図4の(7)の時点で計数値が臨時の基準値1003μsに達したため、リスタートしている。ちなみに、オーバーヘッド計数部34の計数値−第2基準信号生成部31の計数値の値が同期補正値である。
このようにすることにより、第1実施形態は、第2サイクルに対し、次の第3サイクルの第1基準信号の出力タイミングと略同タイミングで第2基準信号生成部31をリスタートすることができる。したがって、本実施形態の信号同期システムは第1基準信号と第2基準信号とを同期させることができる。なお、図5の第3サイクル以降は、基準値が1000μsに設定される。以上のように、第1実施形態では、主プロセッサモジュール11aのカウンタ(タイマ)に対して従プロセッサモジュール11bのカウンタ(タイマ)が遅れた場合も進んだ場合も適切にカウンタ同期を実現することができる。
(信号同期方法のシーケンス例)
図6は、信号同期方法の概略的なシーケンス例を示す図である。図6の例では、説明の便宜上、主プロセッサモジュール11aと従プロセッサモジュール11bとを用いた同期について説明するが、本実施形態においてはこれに限定されるものではなく、1つの主プロセッサモジュールに対して複数の従プロセッサモジュールを同期させることができる。
図6のカウンタ同期処理において、まず、主プロセッサモジュール11aの第1基準信号生成部21は、第1基準信号を生成し(S01)、従プロセッサモジュール11bの第2基準信号生成部31は、第2基準信号を生成する(S02)。なお、この処理は、ハードウェア的にサイクリックに動作されている。また、主プロセッサモジュール11aは、S01の処理で得られた第1基準信号を従プロセッサモジュール11bにも送信している。したがって、従プロセッサモジュール11bは、常に第1基準信号を受信できる状態にある。
また、従プロセッサモジュール11bの間隔計数部33は、補正処理間隔を計数し、計数値が補正処理間隔値に達すると、補正処理開始信号を生成して同期補正処理の準備を開始する(S03)。
間隔計数部33の計数値が補正処理間隔値に達した後、主プロセッサモジュール11aで送信された第1基準信号を、従プロセッサモジュール11bが受信すると(S04)、ソフトウェアによる同期補正処理を起動させる(S05)と共に、オーバーヘッド計数部34をリスタートする(S06)。そして、計数値取得部35は、第2基準信号生成部31とオーバーヘッド計数部34との両計数値を取得し(S07)、同期判定部36は、かかる両計数値に基づいて同期判定を行い(S08)、非同期であると判定されれば、同期補正部37が同期補正を行う(S09)。
こうして、処理負荷を抑制しつつ、所定の信号を高精度に同期させることができる。
(第2実施形態:ノード同期システム)
第2実施形態は、上述した第1実施形態における伝送バス12による遅延時間を含めて同期補正処理を実行することが特徴である。図7は、第2実施形態におけるノード同期システムの概略構成の一例を示す図である。図7に示すノード同期システム50は、ノード51a〜51c等の複数のノードの間で、カウンタ同期を行う一例である。
ノード同期システム50は、複数のノード51a〜51c(以下、必要に応じて「ノード51」という)と、通信路(通信ネットワーク)52と、I/O(入出力)モジュール53(図7中、53a〜53dで示す)と、外部機器54(図7中、54a〜54dで示す)と、プログラミング装置55とを有する。すなわち、ノード同期システム50は、マスタノード51aと、スレーブノード51b,51cとが通信ネットワークとしての通信路52を介して接続されている。
ここで、便宜上、ノード51aをマスタノードとし、ノード51b,51cをスレーブノードとして、それぞれのノード固有の構成について説明するが、これに限定されるものではなく、各ノードがマスタノードにもスレーブノードにもなりえるように両方の構成を兼ね備えている。なお、第2実施形態では、通信路52による伝送遅延時間が生じているものとする。
ここで、第2実施形態(図7)と第1実施形態(図1)との違いについて説明しておく。マスタノード51aは、第1実施形態での主プロセッサモジュール11aに相当し、スレーブノード51b,51cは、第1実施形態での従プロセッサモジュール11b,11cに相当する。また、プログラミング装置55は、第1実施形態でのプログラミング装置15と実質的に等しく、更に、I/Oモジュール53a〜53dは、第1実施形態でのI/Oモジュール13a〜13dと実質的に等しい。また、外部機器54a〜54dは、第1実施形態での外部機器14a〜14dと実質的に等しい。よって、以下の説明では第1実施形態と同じ構成のものについてはその説明を割愛する。
マスタノード51aは、第1基準信号生成部61(第1の実施形態の第1基準信号生成部21に対応)と、第1演算部62(第1実施形態の第1演算部22に対応)と、記憶部63(第1実施形態の記憶部23に対応)と、間隔計数部64(第1の実施形態の間隔計数部33に対応)と、伝送遅延時間通知部65と、同期化フレーム通知部66とを有する。
マスタノード51aの第1実施形態での主プロセッサモジュール11aとの主な相違点は、第1実施形態では従プロセッサモジュール11bに設けられていた間隔計数部33が間隔計数部64として加わったこと、及び、新たに、伝送遅延時間通知部65と、同期化フレーム通知部66とが加わったことである。よって、以下の説明においては、第2実施形態の主要部分を説明することとし、第1実施形態と同様の動きについては割愛する。
以下、第2実施形態での一例を説明する。第2実施形態において、間隔計数部64は、計数を行い、同期処理を行う補正処理間隔に相当する補正処理間隔値が予め設定され、補正処理間隔値に計数値が達すると、その旨を示す補正処理開始信号を生成する。なお、補正処理間隔値は第1の実施形態と実質的に等しいので、ここではその説明を省略する。
なお、ここでは、マスタノード51a側で補正処理間隔を計っているが、スレーブノード51b側で補正処理間隔を計ってもよい。その場合、スレーブノード51bにおいて補正処理間隔値に計数値が達すると、マスタノード51aに補正処理開始信号を送信し、同期補正処理を開始することとなる。
補正処理開始信号の受信後、マスタノード51aの伝送遅延時間通知部65は、伝送遅延時間を算出するために伝送遅延時間リクエストフレームをスレーブノード51b,51cに送信する。この伝送遅延時間リクエストフレームは、後述の同期化フレームとフォーマットが実質的に等しく、同期化フレーム内の所定部分(例えば、コマンド部)のデータが異なるフレームである。かかる伝送遅延時間リクエストフレームは、第1基準信号生成部61によって生成された第1基準信号に同期して送信される。
続いて、伝送遅延時間通知部65は、伝送遅延時間リクエストフレームに応答したスレーブノードからの受信完了フレームを受信する。そして、伝送遅延時間通知部65は、応答フレーム受信時の時刻と伝送遅延時間リクエストフレームを送信したときの時刻との差分から、マスタノード51aとスレーブノード51b,51c間の往復伝送遅延時間を計算する。そして、伝送遅延時間通知部65は、計算した往復伝送遅延時間を含む伝送遅延時間通知フレームを次の第1基準信号に同期してスレーブノード51b,51cに送信することで、スレーブノード51b,51cに通信路52による遅延時間を通知する。
往復伝送遅延時間を通知した後、マスタノード51aは、第1基準信号に基づき(第1基準信号に同期して)、予め用意された同期化フレームを、通信路52を介してスレーブノード51b,51cに送信する。なお、この処理は、同期化フレーム通知部66が実行する。後に詳述するが、同期化フレームは、スレーブノード51b,51cの第2基準信号生成部71の計数値をマスタノード51aの第1基準信号生成部61の計数値に合わせるための同期基準信号である。
次に、スレーブノード51b,51cについて説明する。スレーブノード51b,51cは、第2基準信号生成部71(第1の実施形態の第2基準信号生成部31に対応)と、第2演算部72(第1の実施形態の第2演算部32に対応)と、オーバーヘッド計数部74(第1の実施形態のオーバーヘッド計数部34に対応)と、計数値取得部75(第1の実施形態の計数値取得部35に対応)と、同期判定部76(第1の実施形態の同期判定部36に対応)と、同期補正部77(第1の実施形態の同期補正部37に対応)と、記憶部78(第1の実施形態の記憶部38に対応)と、受信完了通知部79と、フレーム受信部80とを有する。なお、CPU43には、第2基準信号生成部71が内蔵されている。スレーブノード51b,51cは、同一の構成であるため、以下の説明では、スレーブノード51bを用いて説明し、スレーブノード51cの説明は省略する。
第1実施形態のプロセッサモジュール11bとの主な相違点は、同期判定部76が第1実施形態の同期判定部36と相違すること、受信完了通知部79とフレーム受信部80とが加わったことである。ただし、他の構成要素については、第1の実施形態と実質的に等しいので、ここでは、その説明を割愛する。以下、通信路52の伝送遅延時間を含めたスレーブノード51bの同期補正処理について説明する。
受信完了通知部79は、上述した伝送遅延時間リクエストフレームをマスタノード51aから受信し、その伝送遅延時間リクエストフレームに応じて、受信完了フレームをマスタノード51aに送信する。
フレーム受信部80は、マスタノード51aによって送信された上述した伝送遅延時間通知フレームを受信し、そのフレームに含まれる往復伝送遅延時間(値)を上述したメモリ45等に退避する。このようにして、スレーブノード51bはマスタノード51aとスレーブノード51b間との往復伝送遅延時間をマスタノード51aから得る。
マスタノード51aから往復伝送遅延時間を得たスレーブノード51bは、同期化フレームを受信し、第2演算部72に割り込みを発生させる。割り込みを受けた第2演算部72は、後述の同期補正処理を起動する。なお、本実施形態においては、往復伝送遅延時間を得ずに同期化フレームを受信した場合でも、往復伝送遅延時間をゼロ(0)として同期補正処理を起動してよいことは勿論である。また、同期化フレームを受信してから第2演算部72に割り込みが上がるスピードを勘案すると、不図示であるが、同期化フレームの受信手段としては、FPGA44等のハードウェアロジックを使うことが好ましい。
また、オーバーヘッド計数部74は、上述した同期化フレームの受信を起点として、同期補正処理が実行されるまでのオーバーヘッド値を計測する。具体的には、オーバーヘッド計数部74には、同期化フレームを受信してリスタートするハードウェア的なカウンタ(タイマ)として機能する。
計数値取得部75は、同期化フレームの受信に応じ、実際に同期補正処理が実行される開始時点での、第2基準信号生成部71の計数値及びオーバーヘッド計数部74の計数値を取得する。
同期判定部76は、上述した往復伝送遅延時間を2で除算して通信路52の片道の伝送遅延時間を求め、更にこの片道の伝送遅延時間と上述したオーバーヘッド計数部74の計数値を時間換算した値とを加えた総合遅延時間を求める。そして、同期判定部76は、求めた総合遅延時間と、計数値取得部75によって取得された第2基準信号生成部71の計数値を時間換算した値とを比較する。この比較の結果、双方が等しいとき、同期判定部76は、第1基準信号と第2基準信号とが同期していると判定し、双方が相違するとき、第1基準信号と第2基準信号とが非同期であると判定する。ここで同期とは、第1基準信号生成部61の計数値と第2基準信号生成部71の計数値が等しいことを意味する。
なお、同期判定部76は、第1実施形態の同期判定部36と同様に、各カウンタの計数値を時間に換算して比較することで、同期/非同期を判定することも勿論可能である。
第2実施形態では、補正処理間隔毎に、同期判定部76によって第1基準信号と第2基準信号とが同期であると判定されると、同期補正部77は、基準値を第2基準信号生成部71に設定する。また、第1基準信号と第2基準信号とが非同期であると判定されると、第2基準信号生成部71の計数値と、総合遅延時間値との差分を相殺する値を求める。具体的に、同期補正部77は、計数値取得部75によって取得された、第2基準信号生成部71の計数値から総合遅延時間値を差し引いて同期補正値を求める。続いて、同期補正部77は、求めた同期補正値を基準値から差し引き、差し引いた値を第2基準信号生成部71に新たな基準値として設定する。この新たな基準値とは、同期判定部76が同期を判定したときに第2基準信号生成部71に設定される基準値(デフォルトの基準値)に対し、第2基準信号生成部71のタイマ値を補正するために一時的に設定される(臨時の基準値)。
なお、本実施形態は、デフォルトの基準値が第2基準信号生成部71に設定され、同期が保たれていれば、以後デフォルトの基準値を書き換えしなくてよいことは勿論である。
このようにして本実施形態は、同期基準信号(同期化フレーム)が通信路52を介して通知される際の伝送遅延時間の影響をも考慮した同期補正処理を行うことができる。すなわち、第2実施形態では、ノード間の伝送遅延時間とスレーブノード51b,51cのオーバーヘッドとを含めた計数値の補正を行うことができ、高精度なノード間の同期を実現できる。
(第2実施形態における同期補正処理例)
図8〜図10は、第2実施形態における同期補正処理例を説明するためのタイムチャート図であり、マスタノード51aとスレーブノード51b間での計数値の同期例である。なお、第2実施形態における基準値(処理周期)は、第1実施形態と同様1000μsとし、この基準値はプログラミング装置55により適宜変更することができる。
図8では、マスタノード51aの第1基準信号生成部61が計数を行っている。その計数値が図8の(1)時点で基準値に達すると、第1基準信号を出力する。そして、第1演算部62は、当該第1基準信号に応じて所定の処理を実行する。
また、スレーブノード51bの第2基準信号生成部71が計数を行っている。その計数値が図8の(2)時点で基準値に達すると、第2基準信号を出力する。そして、第2演算部72は、当該第2基準信号に応じて所定の処理を実行する。このように、マスタノード51a及びスレーブノード51bでは、それぞれ、独立した第1基準信号及び第2基準信号に応じて所定の処理が遂行される。
また、マスタノード51aでは、間隔計数部64が計数を行い、計数値が補正処理間隔値に達すると(図8の(3))、補正処理開始信号を生成する。かかる補正処理開始信号に応じてマスタノード51aにおける同期補正処理が開始される。
同期補正処理が開始すると、マスタノード51aの伝送遅延時間通知部65は、伝送遅延時間を算出するために伝送遅延時間リクエストフレームを送信する(図8の(4))。スレーブノード51bの受信完了通知部79は、伝送遅延時間リクエストフレームをマスタノード51aから受信すると、その伝送遅延時間リクエストフレームに応じて、受信完了フレームをマスタノード51aに送信する(図8の(5))。
続いて、マスタノード51aの伝送遅延時間通知部65は、受信完了フレームに応じて、マスタノード51aとスレーブノード51b間の往復伝送遅延時間を計算し、計算した往復伝送遅延時間(400μs)を含む伝送遅延時間通知フレームを送信する(図8の(6))。スレーブノード51bのフレーム受信部80は、伝送遅延時間通知フレームを受信すると、そのフレームに含まれる往復伝送遅延時間(値)をメモリ45等に退避する(図8の(7))。
同期補正処理が開始後、マスタノード51aの同期化フレーム通知部66は、同期化フレームを割り込み信号としてスレーブノード51bに送信する(図8の(8))。そして、スレーブノード51bは、同期化フレームを通信路52の片道の伝送遅延時間(200μs)を経て図8の(9)の時点で受信し、スレーブノード51bにおけるソフトウェアによる同期補正処理を起動している。また、同期化フレームの受信に伴い、オーバーヘッド計数部74のハードウェアによるカウンタがクリアされリスタートしている(図8の(10))。
続いて、同期補正処理の準備が整うと、図8の(11)時点で、計数値取得部75は、第2基準信号生成部71から計数値を取得する(図8の(12))と共に、オーバーヘッド計数部74から計数値を取得する(図8の(13))。
続いて、計数値取得部75は、第2基準信号生成部71の計数値を参照して時間に換算し400μsを取得している。これに引き続き、同期判定部76は、往復伝送遅延時間(400μs)から片道の伝送遅延時間200μsを求め、求めた伝送遅延時間とオーバーヘッド計数部74の計数値を時間換算した200μsとを加算し総合遅延時間400μsを求めている。そして、同期判定部76は、総合遅延時間400μsと計数値取得部75が取得した、第2基準信号生成部71の計数値を時間換算した400μsとを比較し、双方が等しいので第1基準信号と第2基準信号とが同期していると判定している。
同期判定部76によって第1基準信号と第2基準信号とが同期していると判定されたため、同期補正部77は、通常通り、基準値1000μsを第2基準信号生成部71に設定している(設定時点で第2基準信号生成部71はリスタートしていない)。そして、第2基準信号生成部71は、図8の(14)の時点で計数値が基準値1000μsに達したため、リスタートしている。
図9は、スレーブノード51bのカウンタが、マスタノード51aのカウンタより3μs遅れている場合を示している。
図9において、マスタノード51aの間隔計数部64の計数値が補正処理間隔値に達し、同期補正処理が開始されてから、スレーブノード51bのフレーム受信部80が伝送遅延時間通知フレームに含まれる往復伝送遅延時間(値)をメモリ45等に退避するまでの処理は、図8の処理と実質的に等しいので、ここでは、その説明を省略する。
同期補正処理が開始後、図9の(1)時点で、マスタノード51aの同期化フレーム通知部66は、同期化フレームを割り込み信号としてスレーブノード51bに送信する。そして、スレーブノード51bは、同期化フレームを通信路52の片道の伝送遅延時間(200μs)を経て図9(2)の時点で受信し、スレーブノード51bにおけるソフトウェアによる同期補正処理を起動している。また、同期化フレームの受信に伴い、オーバーヘッド計数部74のカウンタがクリアされリスタートしている(図9の(3))。
続いて、同期補正処理の準備が整うと、図9の(4)時点で、計数値取得部75は、第2基準信号生成部71から計数値を取得する(図9の(5))と共に、オーバーヘッド計数部74から計数値を取得する(図9の(6))。
続いて、計数値取得部75は、第2基準信号生成部71の計数値を参照して時間に換算し397μsを取得している。これに引き続き、同期判定部76は、往復伝送遅延時間(400μs)から片道の伝送遅延時間200μsを求め、求めた伝送遅延時間とオーバーヘッド計数部74の計数値を時間換算した200μsとを加算し総合遅延時間400μsを求めている。そして、同期判定部76は、総合遅延時間400μsと計数値取得部75が取得した、第2基準信号生成部71の計数値を時間換算した397μsとを比較し、双方が相違するので第1基準信号と第2基準信号とが非同期であると判定する。
同期判定部76によって第1基準信号と第2基準信号とが非同期であると判定されたため、同期補正部77は、第2基準信号生成部71に臨時の基準値を設定している。具体的には、同期補正部77は、「基準値(処理周期)−(総合遅延時間−第2基準信号生成部71の計数値)」という式にて第2基準信号生成部71のリスタート値(リセット値)を求め、求めた計数値を臨時の基準値として第2基準信号生成部71にセットする。この例の場合、臨時の基準値は1000μs−(400μs−397μs)=997μsとなる。そして、第2基準信号生成部71は、図9の(7)の時点で計数値が臨時の基準値997μsに達したため、リスタートしている。ちなみに、総合遅延時間−第2基準信号生成部71の計数値の値が同期補正値である。
図10は、スレーブノード51bのカウンタが、マスタノード51aのカウンタより3μs進んでいる場合を示している。
図10において、マスタノード51aの間隔計数部64の計数値が補正処理間隔値に達し、同期補正処理が開始されてから、スレーブノード51bのフレーム受信部80が伝送遅延時間通知フレームに含まれる往復伝送遅延時間(値)をメモリ45等に退避するまでの処理は、図8及び図9の処理と実質的に等しいので、ここでは、その説明を省略する。
同期補正処理が開始後、図10の(1)時点で、マスタノード51aの同期化フレーム通知部66は、同期化フレームを割り込み信号としてスレーブノード51bに送信する。そして、スレーブノード51bは、同期化フレームを通信路52の片道の伝送遅延時間(200μs)を経て図10(2)の時点で受信し、スレーブノード51bにおけるソフトウェアによる同期補正処理を起動している。また、同期化フレームの受信に伴い、オーバーヘッド計数部74のカウンタがクリアされリスタートしている(図10の(3))。
続いて、同期補正処理の準備が整うと、図10の(4)時点で、計数値取得部75は、第2基準信号生成部71から計数値を取得する(図10の(5))と共に、オーバーヘッド計数部74から計数値を取得する(図10の(6))。
続いて、計数値取得部75は、第2基準信号生成部71の計数値を参照して時間に換算し403μsを取得している。これに引き続き、同期判定部76は、往復伝送遅延時間(400μs)から片道の伝送遅延時間200μsを求め、求めた片道の伝送遅延時間とオーバーヘッド計数部74の計数値を時間換算した200μsとを加算し総合遅延時間400μsを求めている。そして、同期判定部76は、総合遅延時間400μsと計数値取得部75が取得した、第2基準信号生成部71の計数値を時間換算した403μsとを比較し、双方が相違するので第1基準信号と第2基準信号とが非同期であると判定する。
同期判定部76によって第1基準信号と第2基準信号とが非同期であると判定されたため、同期補正部77は、第2基準信号生成部71に臨時の基準値を設定している。この例の場合、臨時の基準値は1000μs−(400μs−403μs)=1003μsとなる。そして、第2基準信号生成部71は、図10の(7)の時点で計数値が臨時の基準値1003μsに達したため、リスタートしている。
なお、図9及び図10の例の場合、第3サイクルで、マスタ側のカウンタとスレーブ側のカウンタとが同期することになるため、以後、同期補正部77は、元の基準値1000μsを第2基準信号生成部71に設定している(設定時点で第2基準信号生成部71は、リスタートしていない)。そして、第2基準信号生成部71は、計数値が基準値1000μsに達したときにリスタートする。すなわち、第2実施形態は、第3サイクルに対し、次の第4サイクルのマスタ側のカウンタのリスタートと略同タイミングでスレーブ側のカウンタをリスタートすることができるため、マスタ側のカウンタの値とスレーブ側のカウンタの値とを略等しい値に合わせることができる。
なお、同期補正処理には、第1実施形態と同様に計数値取得部75、同期判定部76、同期補正部77のプログラムの処理が含まれている。
また、スレーブノード51bの第2基準信号生成部71は、CPU43に内蔵されていることを前提に説明したが、これに限定されるものではない。すなわち、第2基準信号生成部71は、CPU43と別体であっても実現可能である。ただ、第2基準信号生成部71がCPU43に内蔵されていることにより、CPU43の外部で生成された所定の信号で第2基準信号生成部71をハード的にリセットすることができない。言い換えれば、第2基準信号生成部71はプログラムが介在してその動作が制御されるカウンタである。このため、本実施形態は第2基準信号生成部71のリセット処理(リスタート処理)をプログラムで実行する必要があり、そのオーバーヘッドが同期誤差に繋がる。よって、本実施形態ではオーバーヘッドを計測するという構成が必要になる(第1実施形態でも同様)。
また、第2実施形態において、同期補正処理は同期化フレーム受信によって起動される割り込み処理である。
また、上記説明においてスレーブノード51bは、例えば、往復伝送遅延時間をマスタノード51aから得て保持し、保持した往復伝送遅延時間を同期補正処理の際に活用する。これとは別に、マスタノード51aが往復伝送遅延時間を同期化フレームに含めてスレーブノード51bに送信し、これを受信したスレーブノード51bが同期化フレームに含まれる往復伝送時間を活用する方法もある。このようにすることで、マスタノード51aは状況に応じた往復伝送遅延時間をスレーブノード51bに適宜通知することができるため、スレーブノード51bでは状況に応じた往復伝送遅延時間をタイムリーに活用できる。
また、伝送遅延時間通知部65について、往復伝送遅延時間をスレーブノード51bに通知するよう説明したが、これに限定されるものではない。例えば伝送遅延時間通知部65は、算出した往復伝送遅延時間を半分にして片道の伝送遅延時間を求め、求めた片道の伝送遅延時間をスレーブノード51bに通知するようにしてもよい。この場合、スレーブノード51bの同期判定部76は、与えられた片道の伝送遅延時間をそのまま使って総合遅延時間を求めるようにすればよい。
以上の説明のように第2実施形態では、通信路52による信号の伝送遅延時間を含めて第1基準信号と第2基準信号とを同期させることができる。
(同期補正処理における伝送遅延時間の通知手順について)
次に、上述した同期補正処理における伝送遅延時間の通知手順について説明する。図11は、第2実施形態における伝送遅延時間の通知手順の一例を説明するための図である。なお、図11の例では、上述したマスタノード51aと、スレーブノード51b,51cとを有し、各ノード51は、通信路52を介して信号の送受信が可能な状態で接続されているものとする。また、以下の説明では、マスタノード51aが各ノード51間の通信路52による信号の伝送遅延時間を取得する例を示す。
また、図11に示す四角はフレームを示し、各ノード51に対する線上の四角は送信フレームを示し、線下の四角は受信フレームを示している。また、図11に示すフレームは、伝送遅延時間リクエストフレーム81(図11における「REQ*」(*は、例えば各スレーブノードの識別子(例えばb、c)を示す(以下同様))と、受信完了フレーム82(図11における「REC*」)と、伝送遅延時間通知フレーム83(図11における「SET*」)と、伝送遅延時間通知フレーム83に対する応答フレーム84(図11における「ANS*」)とを有する。
図11の例において、マスタノード51aは、スレーブノード51bに対する伝送遅延時間リクエストフレーム81b(REQb)をマスタノード同期基準にしたがって通信路52上にブロードキャスト送信する。このとき、伝送遅延時間リクエストフレーム81bには、スレーブノード51bに対する伝送遅延時間リクエストであることを示す情報(対象ノード情報)が含まれている。
ブロードキャスト送信された伝送遅延時間リクエストフレーム81bは、通信路52を介して所定の伝送遅延時間後に各スレーブノード51b,51cで受信される。なお、図11の例では、スレーブノード51bは、マスタノード同期基準から遅延時間D1で伝送遅延時間リクエストフレーム81bを受信し、スレーブノード51cは、マスタノード同期基準から遅延時間D2で伝送遅延時間リクエストフレーム81bを受信する。
ここで、各スレーブノード51b,51cは、伝送遅延時間リクエストフレーム81bに含まれている上述した対象ノード情報を確認する。上述したように、伝送遅延時間リクエストフレーム81bは、スレーブノード51bに対するリクエストであるため、スレーブノード51bのみがマスタノード51aに対して受信完了フレーム82b(RECb)をブロードキャスト送信する。このとき、受信完了フレーム82bには、マスタノード51aに対する受信完了フレームであることを示す情報(対象ノード情報)が含まれている。
送信された受信完了フレーム82bは、通信路52を介してマスタノード51a及びスレーブノード51cで受信される。次に、マスタノード51a及びスレーブノード51cは、受信完了フレーム82bに含まれている上述した対象ノード情報を確認する。上述したように、受信完了フレーム82bは、マスタノード51aに対するフレームである。そのため、マスタノード51aは、マスタノード同期基準にしたがって送信した伝送遅延時間リクエストフレーム81bの送信から、その受信完了フレーム82bを受信するまでの時間情報に基づいて、スレーブノード51bに対する伝送遅延時間を設定する。なお、ここで、設定される伝送遅延時間は、通信路52を介してマスタノード51aとスレーブノード51b間を所定の信号が往復する往復伝送遅延時間でもよく、片道分の伝送遅延時間でもよい。
また、マスタノード51aは、設定した伝送遅延時間をスレーブノード51bに通知するための伝送遅延時間通知フレーム83b(SETb)を作成し、作成した伝送遅延時間通知フレーム83bをマスタノード同期基準にしたがってブロードキャスト送信する。なお、伝送遅延時間通知フレーム83bには、上述した対象ノード情報が含まれている。
ブロードキャスト送信された伝送遅延時間通知フレーム83bは、上述した伝送遅延時間リクエストフレーム81bと同様に通信路52を介して所定の伝送遅延時間後に各スレーブノード51b,51cで受信される。
このとき、スレーブノード51bは、受信した伝送遅延時間通知フレーム83bの対象ノード情報から自ノードに対する情報であると判断し、フレーム内に含まれる伝送遅延時間と、上述したオーバーヘッド時間等とを含めた第2実施形態における同期補正処理を行う。また、スレーブノード51bは、伝送遅延時間通知フレーム83bに対する応答フレーム84b(ANSb)を作成し、作成した応答フレーム84bをブロードキャスト送信する。このとき、応答フレーム84bには、マスタノード51aに対するフレームであることを示す情報(対象ノード情報)及び同期補正処理が完了したことを示す情報等が含まれている。
送信された応答フレーム84bは、上述した受信完了フレーム82bと同様に、通信路52を介してマスタノード51a及びスレーブノード51cで受信される。次に、マスタノード51a及びスレーブノード51cは、応答フレーム84bに含まれている上述した対象ノード情報を確認する。上述したように、応答フレーム84bは、マスタノード51aに対するフレームである。そのため、マスタノード51aは、スレーブノード51bからの応答フレーム84bにより、同期補正処理が完了したことを把握することができる。なお、スレーブノード51cは、伝送遅延時間リクエストフレーム81b(REQb)と、受信完了フレーム82b(RECb)と、伝送遅延時間通知フレーム83b(SETb)と、応答フレーム84b(ANSb)とを受信しているが、何れも自ノードに対するフレームではないため、受信したフレームは破棄される。
上述した内容までが、スレーブノード51bへの伝送遅延時間通知手順である。したがって、マスタノード51aは、同様にスレーブノード51cに対して伝送遅延時間の通知を行う。
具体的には、図11の例において、マスタノード51aは、スレーブノード51cに対する伝送遅延時間リクエストフレーム81c(REQc)をマスタノード同期基準にしたがって通信路52上にブロードキャスト送信する。ブロードキャスト送信された伝送遅延時間リクエストフレーム81cは、上述したように通信路52を介して所定の伝送遅延時間(D1,D2)で各スレーブノード51b,51cにて受信される。
伝送遅延時間リクエストフレーム81cは、スレーブノード51cに対するリクエストであるため、スレーブノード51cのみがマスタノード51aに対して受信完了フレーム82c(RECc)をブロードキャスト送信する。送信された受信完了フレーム82cは、通信路52を介してマスタノード51a及びスレーブノード51cで受信される。受信完了フレーム82cは、マスタノード51aに対するフレームである。そのため、マスタノード51aは、マスタノード同期基準にしたがって送信した伝送遅延時間リクエストフレーム81cの送信から、その受信完了フレーム82cを受信するまでの時間情報に基づいて、スレーブノード51cに対する伝送遅延時間を設定する。なお、ここで、設定される伝送遅延時間は、通信路52を介してマスタノード51aとスレーブノード51c間を所定の信号が往復する往復伝送遅延時間でもよく、片道分の伝送遅延時間でもよい。
また、マスタノード51aは、設定した伝送遅延時間をスレーブノード51cに通知するための伝送遅延時間通知フレーム83c(SETc)を作成し、作成した伝送遅延時間通知フレーム83cをマスタノード同期基準にしたがってブロードキャスト送信する。ブロードキャスト送信された伝送遅延時間通知フレーム83cは、上述した伝送遅延時間リクエストフレーム81cと同様に通信路52を介して所定の伝送遅延時間(D1,D2)で各スレーブノード51b,51cにて受信される。
このとき、スレーブノード51cは、上述したように、受信した伝送遅延時間通知フレーム83cの対象ノード情報から自ノードに対する情報であると判断し、フレーム内に含まれる伝送遅延時間と、上述したオーバーヘッド時間等とを含めた第2実施形態における同期補正処理を行う。また、スレーブノード51cは、伝送遅延時間通知フレーム83cに対する応答フレーム84c(ANSc)を作成し、作成した応答フレーム84cをブロードキャスト送信する。このとき、応答フレーム84cには、マスタノード51aに対するフレームであることを示す情報(対象ノード情報)及び同期補正処理が完了したことを示す情報等が含まれている。
送信された応答フレーム84cは、上述した受信完了フレーム82cと同様に、通信路52を介してマスタノード51a及びスレーブノード51cで受信される。次に、マスタノード51a及びスレーブノード51bは、応答フレーム84cに含まれている上述した対象ノード情報を確認する。上述したように、応答フレーム84cは、マスタノード51aに対するフレームである。そのため、マスタノード51aは、スレーブノード51cからの応答フレーム84cにより、同期補正処理が完了したことを把握することができる。なお、スレーブノード51bは、伝送遅延時間リクエストフレーム81c(REQc)と、受信完了フレーム82c(RECc)と、伝送遅延時間通知フレーム83c(SETc)と、応答フレーム84c(ANSc)とを受信しているが、何れも自ノードに対するフレームではないため、受信したフレームは破棄される。
第2実施形態では、上述した処理を通信路52の各スレーブノード51b,51cに対して順次実施することで、伝送遅延時間を通知することができる。
なお、伝送遅延時間の通知手順については、上述した手順に限定されるものでない。例えば、伝送遅延時間リクエストフレーム81をブロードキャスト送信し、これを受信したスレーブノード51b,51cが応答フレーム84の送信によって、通信路52上やマスタノード51a上で輻輳しないように、例えば上述した各ノード内部にセンドカウンタを設け、そのセンドカウンタを使って異なるタイミングで応答フレーム84を送信するように制御してもよい。
上述した第2実施形態では、例えばイーサネット(登録商標)のようなスター型トポロジを持つシステムにおいて、時分割多重伝送方式を用いたコモンメモリネットワークに対し、各ノードのカウンタを同期化し、装置全体で制御のタイミングを合わせる同期制御ができる。また、第2実施形態において、同期させるカウンタは、マイコン内部のカウンタを用いたり、FPGA等のハードウェアにてカウンタを用いて構成することができる。したがって、第2実施形態では、例えば送受信されるフレームの受信タイミングでマスタノード51aと同期しているカウンタと、マイコンでの処理時間を計測するカウンタとを、例えばFPGA等のハードウェアで構成し、その計数値をマイコンで演算することで、処理誤差を補正することができる。
ここで、上述の例では、ノード同期システム50の一例として、マスタ−スレーブ間のノード同期について説明したが、本実施形態においては、これに限定されるものではなく、例えば保護リレー等におけるサンプリング同期技術にも応用することができる。
(ネットワーク伝送システム:概略構成例)
ここで、上述した第2実施形態では、例えば各ノード間を、IEEE802.3u(100BASE−TX)やIEEE802.3ab(1000BASE−T)等のようなHUB(ハブ)等の中継装置を介して接続される場合がある。図12は、第2実施形態におけるマスタノード51a及びスレーブノード51b,51cを用いたノード同期システム50を含むネットワーク伝送システムの概略構成の一例を示す図である。図12に示すネットワーク伝送システム90は、一例として、上述した複数のノード51(図12の例では、ノード51a〜51c)と、1又は複数の中継装置としてのHUB91(図12の例では、HUB91a〜91e)とを有する。なお、ノードや中継装置の数や種類、接続方法についてはこれに限定されるものではない。
図12の例では、図7のマスタノード、すなわちノード51aをノードA(マスタ局)とし、図7のスレーブノード、すなわちノード51b,ノード51cをノードB,ノードC(スレーブ局)とする。また、図12に示すように、ネットワーク伝送システム90の通信路は、例えばマスタノード51aとスレーブノード51bとの間に中継装置を有するスター型である。なお、中継装置は、一例としてHUBを用いているが、本実施形態においてはこれに限定されるものではなく、例えばルータ、リピータ、光コンバータ等を用いることもできる。
また、マスタノード51a及びスレーブノード51b,51cは、例えばプログラマブルコントローラ(制御装置、もしくはPLC(Programmable Logic Controller)ともいう)であり、ネットワーク伝送システム90の通信路はこれらプログラマブルコントローラ同士のデータを交換するデータ交換バスである。このデータ交換バスに接続される機器としては、例えば上述のプログラマブルコントローラに加え、PC、サーバ、I/Oモジュール、ドライブ装置(例えば、インバータ、サーボ等)等がある。
図12に示すネットワーク伝送システム90は、ノード51a及びノード51cが同一のHUB91aに接続されており、ノード51bは、5段のHUB(中継装置)を経由してノード51a及びノード51cと接続されている。
ここで、一般的なイーサネットのHUBでは、ストア&フォワードといわれるインタフェース方式が採用されている。この場合、送られてきたフレームは、全てをHUB内の受信バッファに蓄え、HUB内部処理(例えば、異常判定や宛先判定等)を行ってから送信される。
(ノード同期方法のシーケンス例)
図13は、ノード同期方法の概略的なシーケンス例を示す図である。図13の例では、説明の便宜上、マスタノード51aとスレーブノード51bとを用いた同期について説明するが、本実施形態においてはこれに限定されるものではなく、1つのマスタノードに対して複数のスレーブノードを同期させることができる。
図13のノード同期処理において、まず、マスタノード51aの第1基準信号生成部61は、第1基準信号を生成し(S11)、スレーブノード51bの第2基準信号生成部71は、第2基準信号を生成する(S12)。また、この処理は、ハードウェア的にサイクリックに動作されている。
また、マスタノード51aの間隔計数部64は、補正処理間隔を計数し、計数値が補正処理間隔値に達すると、補正処理開始信号を生成して同期補正処理を開始する(S13)。
間隔計数部64の計数値が補正処理間隔値に達すると、マスタノード51aにおける同期補正処理が開始され(S13)、マスタノード51aの伝送遅延時間通知部65は、伝送遅延時間を算出するために伝送遅延時間リクエストフレームを送信する(S14)。なお、伝送遅延時間リクエストフレームは、同期化フレームに含まれる所定部分のデータを変えただけのものであり、同期化フレームと言い換えることができるが、ここでは便宜上、「伝送遅延時間リクエストフレーム」として説明している。
スレーブノード51bの受信完了通知部79は、伝送遅延時間リクエストフレームを受信すると、受信完了通知を生成し、マスタノード51aに通知する(S15)。
マスタノード51aの伝送遅延時間通知部65は、受信完了通知を受信すると、例えば往復伝送遅延時間を算出し(S16)、算出した往復伝送遅延時間等を含む伝送遅延時間通知フレームを生成し(S17)、生成した伝送遅延時間通知フレームを、通信路52を介してスレーブノード51bに送信する(S18)。
スレーブノード51bのフレーム受信部80は、伝送遅延時間通知フレームを受信すると、そのフレームに含まれる往復伝送遅延時間(値)をメモリ45等に退避する(S19)。そして、マスタノード51aの同期化フレーム通知部66は、第1基準信号に同期させて、同期化フレームを割り込み信号としてスレーブノード51bに送信する(S20)。スレーブノード51bが同期化フレームを受信すると(S21)、ソフトウェアによる同期補正処理を起動させる(S22)と共に、オーバーヘッド計数部74をリスタートする(S23)。そして、計数値取得部75は、第2基準信号生成部71とオーバーヘッド計数部74との両計数値を取得し(S24)、同期判定部76は、かかる両計数値に基づいて同期判定を行い(S25)、非同期であると判定されれば、総合遅延時間を算出する(S26)。総合遅延時間とは、例えば伝送遅延時間とオーバーヘッド値とを加算した値であるが、これに限定されるものではない。また、スレーブノード51bの同期補正部77は、算出された総合遅延時間を用いて同期補正を行う(S27)。なお、図13に示す処理では、スレーブノード51bは、同期補正が完了したことを示す応答フレームをマスタノード51aに送信してもよい。また、マスタノード51aは、通信路52に接続されたスレーブノード51b以外のスレーブノードに対しても上述した手順でノード同期処理を行う。
ここで、本実施形態では、コンピュータを、上述したノード51が有する各手段として機能させるためのプログラム(ノード同期プログラム)を生成し、生成したプログラムを、コンピュータ等にインストールすることにより、上述した各ノード同期処理を実現することができる。
上述したように、本実施形態によれば、処理負荷を抑制しつつ、所定の信号を高精度に同期させることができる。これにより、例えば、各ノード51のデータ交換周期の安定化を実現することができる。また、本実施形態によれば、例えばイーサネットのようなスター型トポロジを持つシステムにおいて、時分割多重伝送方式を用いた共有メモリネットワークに対し、各ノード51のタイマを同期化し、伝送の効率化とデータ交換の効率化、データ交換周期の安定化等を実現することができる。
なお、本実施形態は、例えば鉄鋼プラント等のような大規模設備等における一連の動作を複数の操作を用いて行う場合の同期手法に適用することができ、更にギガビットイーサネット全般における各装置間の同期方式としても広く適用することができる。
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
なお、本明細書の信号同期方法、及び、ノード同期方法の各工程は、必ずしもシーケンス図として記載された順序に沿って時系列に処理する必要はなく、並列的あるいはサブルーチンによる処理を含んでもよい。