(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-20
(45)【発行日】2023-03-29
(54)【発明の名称】コントローラ、機器制御システム、時刻同期方法、および時刻同期プログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20230322BHJP
H04L 7/00 20060101ALI20230322BHJP
G04G 7/00 20060101ALI20230322BHJP
【FI】
G05B19/05 J
H04L7/00 990
G04G7/00
(21)【出願番号】P 2021030211
(22)【出願日】2021-02-26
【審査請求日】2021-11-24
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】森若 良太
(72)【発明者】
【氏名】小川 邦彦
(72)【発明者】
【氏名】中村 喬之
(72)【発明者】
【氏名】水口 徳人
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特開2012-211881(JP,A)
【文献】特開2010-061458(JP,A)
【文献】特開2017-052306(JP,A)
【文献】特開2002-139585(JP,A)
【文献】特開2017-022965(JP,A)
【文献】米国特許第05052030(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
H04L 7/00
G04G 7/00
(57)【特許請求の範囲】
【請求項1】
コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するマスタ時計管理部と、
前記コントローラ内のコントローラ時計を前記マスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するコントローラ時計管理部と、
前記時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定する判定部と、
前記クロック周期が前記時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する前記時刻同期を保留する更新制御部と、
を備えるコントローラ。
【請求項2】
前記マスタ時計管理部は、前記外部のグローバル時計に基づくグローバル時刻を非定周期通信により時刻サーバから受信し、該グローバル時刻に基づいて前記マスタ時刻を設定し、
前記コントローラ時計管理部は、定周期通信により少なくとも一つのローカル機器に向けて前記コントローラ時刻を送信する、
請求項1に記載のコントローラ。
【請求項3】
前記マスタ時計管理部は、前記マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を、前記時刻同期のための前記クロック信号として生成し、
前記判定部は、それぞれの前記マスタクロック周期が、対応する前記所与の時間ウィンドウ内で開始したか否かを判定し、
前記更新制御部は、前記マスタクロック周期が前記対応する時間ウィンドウ内で開始しなかった場合に、該マスタクロック周期に対応する前記時刻同期を保留する、
請求項1または2に記載のコントローラ。
【請求項4】
前記コントローラ時計は中間コントローラ時計および基準コントローラ時計を含み、
前記コントローラ時計管理部は、
前記マスタクロック信号に基づいて前記中間コントローラ時計を前記マスタ時計に同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、前記マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を前記時刻同期のための前記クロック信号として生成する中間時計管理部と、
前記中間クロック信号に基づいて、前記基準コントローラ時計を前記中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行する基準時計管理部と、
を備える、
請求項3に記載のコントローラ。
【請求項5】
前記判定部は、それぞれの前記中間クロック周期が、対応する前記時間ウィンドウ内で開始したか否かをさらに判定し、
前記更新制御部は、前記中間クロック周期が前記対応する時間ウィンドウ内で開始しなかった場合に、該中間クロック周期に対応する前記第2時刻同期を保留する、
請求項4に記載のコントローラ。
【請求項6】
前記コントローラ時計は基準コントローラ時計であり、
前記コントローラ時計管理部は、前記マスタクロック信号に基づいて前記基準コントローラ時計を前記マスタ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する前記時刻同期を実行する、
請求項3に記載のコントローラ。
【請求項7】
前記クロック信号は、
第1時間ウィンドウ内で開始しなかった第1クロック周期と、
前記第1時間ウィンドウに続く第2時間ウィンドウ内で開始した第2クロック周期と、
を有し、
前記更新制御部は、前記第2クロック周期に対応する前記時刻同期をコントローラ時計管理部に実行させる、
請求項1~6のいずれか一項に記載のコントローラ。
【請求項8】
前記クロック信号は、
第1時間ウィンドウ内で開始しなかった第1クロック周期と、
前記第1時間ウィンドウに続く第2時間ウィンドウ内で開始した第2クロック周期と、
前記第2時間ウィンドウに続く第3時間ウィンドウ内で開始した第3クロック周期と、
を有し、
前記更新制御部は、
前記第2クロック周期に対応する前記時刻同期を更に保留し、
前記第3クロック周期に対応する前記時刻同期をコントローラ時計管理部に実行させる、
請求項1~6のいずれか一項に記載のコントローラ。
【請求項9】
それぞれの前記クロック周期の推定開始タイミングに対応する前記時間ウィンドウを設定するウィンドウ設定部を更に備える請求項1~8のいずれか一項に記載のコントローラ。
【請求項10】
前記ウィンドウ設定部は、前記クロック周期の推定開始タイミングより前の時点から、該推定開始タイミングより後の時間までの時間幅を前記時間ウィンドウとして設定する、
請求項9に記載のコントローラ。
【請求項11】
前記ウィンドウ設定部は、前記コントローラ時刻に対応する内部信号の内部周期を前記時間幅として設定する、
請求項10に記載のコントローラ。
【請求項12】
前記ウィンドウ設定部は、前記クロック周期が前記時間ウィンドウ内で開始した場合に、該クロック周期の開始時点に基づいて該時間ウィンドウの終端を設定する、
請求項9~11のいずれか一項に記載のコントローラ。
【請求項13】
前記ウィンドウ設定部は、前記時間ウィンドウが設定されているか否かを示すフラグを更に設定し、
前記判定部は、前記クロック周期が開始した時点での前記フラグを参照して、前記クロック周期が前記時間ウィンドウ内で開始したか否かを判定する、
請求項9~12のいずれか一項に記載のコントローラ。
【請求項14】
前記コントローラ時計管理部は、
前記クロック周期に基づいて、前記コントローラ時刻に対応し、所与の内部周期を有する内部信号を生成し、
前記マスタ時計に基づく開始時刻と、前記クロック周期および前記内部周期のうちの少なくとも一つとに基づいて前記時刻同期を実行する、
請求項1~13のいずれか一項に記載のコントローラ。
【請求項15】
前記コントローラ時計管理部は、前記更新制御部が前記時刻同期を保留した場合に、前記クロック周期を用いることなく前記内部周期に基づいて代替の時刻同期を実行する、
請求項14に記載のコントローラ。
【請求項16】
前記コントローラ時計管理部は、前記クロック周期よりも短い前記内部周期で前記内部信号を生成する、
請求項14または15に記載のコントローラ。
【請求項17】
前記コントローラ時計管理部は、前記コントローラ内の内部遅延に更に基づいて前記時刻同期を実行する、
請求項1~16のいずれか一項に記載のコントローラ。
【請求項18】
請求項1~17のいずれか一項に記載のコントローラと、
少なくとも一つのローカル機器と、
を備える機器制御システム。
【請求項19】
前記少なくとも一つのローカル機器の少なくとも一つはロボットコントローラである、
請求項18に記載の機器制御システム。
【請求項20】
コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するステップと、
前記コントローラ内のコントローラ時計を前記マスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するステップと、
前記時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定するステップと、
前記クロック周期が前記時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する前記時刻同期を保留するステップと、
を含む時刻同期方法。
【請求項21】
コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するステップと、
前記コントローラ内のコントローラ時計を前記マスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するステップと、
前記時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定するステップと、
前記クロック周期が前記時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する前記時刻同期を保留するステップと、
をコンピュータに実行させる時刻同期プログラム。
【請求項22】
コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定し、該マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成するマスタ時計管理部と、
前記マスタクロック信号に基づいて前記コントローラ内の中間コントローラ時計を前記マスタ時計に対応同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、前記マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を生成する中間時計管理部と、
前記中間クロック信号に基づいて、前記コントローラ内の基準コントローラ時計を前記中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行する基準時計管理部と、
前記マスタクロック周期または前記中間クロック周期が、対応する所与の時間ウィンドウ内で開始しなかった場合に、前記第1時刻同期および前記第2時刻同期のうち、該開始しなかったクロック周期に対応する時刻同期を保留する更新制御部と、
を備えるコントローラ。
【請求項23】
コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定し、該マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成するステップと、
前記マスタクロック信号に基づいて前記コントローラ内の中間コントローラ時計を前記マスタ時計に対応同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、前記マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を生成するステップと、
前記中間クロック信号に基づいて、前記コントローラ内の基準コントローラ時計を前記中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行するステップと、
前記マスタクロック周期または前記中間クロック周期が、対応する所与の時間ウィンドウ内で開始しなかった場合に、前記第1時刻同期および前記第2時刻同期のうち、該開始しなかったクロック周期に対応する時刻同期を保留するステップと、
を含む時刻同期方法。
【請求項24】
コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定し、該マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成するステップと、
前記マスタクロック信号に基づいて前記コントローラ内の中間コントローラ時計を前記マスタ時計に対応同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、前記マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を生成するステップと、
前記中間クロック信号に基づいて、前記コントローラ内の基準コントローラ時計を前記中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行するステップと、
前記マスタクロック周期または前記中間クロック周期が、対応する所与の時間ウィンドウ内で開始しなかった場合に、前記第1時刻同期および前記第2時刻同期のうち、該開始しなかったクロック周期に対応する時刻同期を保留するステップと、
をコンピュータに実行させる時刻同期プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面はコントローラ、機器制御システム、時刻同期方法、および時刻同期プログラムに関する。
【背景技術】
【0002】
特許文献1には、ネットワーク時刻に基づくタイマクロックに従ったタイミングで、フィールド機器を制御するための演算処理およびフィールド機器との間でのデータ通信を同期して実行するフィールド制御システムが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の一側面では、安定した時刻同期の実現が望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係るコントローラは、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するマスタ時計管理部と、コントローラ内のコントローラ時計をマスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するコントローラ時計管理部と、時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定する判定部と、クロック周期が時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する時刻同期を保留する更新制御部とを備える。
【0006】
本開示の一側面に係る時刻同期方法は、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するステップと、コントローラ内のコントローラ時計をマスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するステップと、時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定するステップと、クロック周期が時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する時刻同期を保留するステップとを含む。
【0007】
本開示の一側面に係る時刻同期プログラムは、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するステップと、コントローラ内のコントローラ時計をマスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するステップと、時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定するステップと、クロック周期が時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する時刻同期を保留するステップとをコンピュータに実行させる。
【発明の効果】
【0008】
本開示の一側面によれば、安定した時刻同期を実現できる。
【図面の簡単な説明】
【0009】
【
図1】機器制御システムの全体の構成の一例を示す図である。
【
図2】時刻のずれを生じさせ得るクロック信号の一例を示す図である。
【
図3】上位コントローラの機能構成の一例を示す図である。
【
図4】上位コントローラとして機能するコンピュータのハードウェア構成の一例を示す図である。
【
図5】機器制御システムの動作の一例を示すシーケンス図である。
【
図6】時間ウィンドウの設定の一例を示す図である。
【
図7】時刻同期の監視および制御の一例を示す図である。
【
図8】時刻同期の監視および制御の別の例を示す図である。
【発明を実施するための形態】
【0010】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0011】
[システムの概要]
図1は実施形態に係る機器制御システム1の全体の構成の一例を示す図である。機器制御システム1は、現実の作業環境(すなわちフィールド)に配置されたローカル機器3を制御するための仕組みである。一例では、機器制御システム1は少なくとも一つの上位コントローラ10と少なくとも一つのローカル機器3とを備える。それぞれの上位コントローラ10は少なくとも一つのローカル機器3に向けて指令を送信することで該ローカル機器3を制御する。一つの上位コントローラ10は少なくとも一つのローカル機器3に対応する。複数の上位コントローラ10が一つのローカル機器3に対応してもよい。
【0012】
機器制御システム1は複数種類のローカル機器3を備えてもよい。
図1はローカル機器3の例として移動ロボット4、定置ロボット5、NC工作機械6、環境センサ7、およびコンベヤ8を示す。移動ロボット4は自律走行可能なロボットである。一例では、移動ロボット4は、移動指令に応じて自律走行する無人搬送車と、作業指令に従ってワークに対する作業を実行するロボットとを備える。無人搬送車は例えば、電動式のAGV(Automated Guided Vehicle)でもよい。定置ロボット5は、作業環境内に(例えば床面に)固定されたロボットである。移動ロボット4および定置ロボット5はいずれも、6軸の垂直多関節ロボット、追加の1軸の関節が追加された7軸の冗長型ロボット、いわゆるスカラー型の多関節ロボット、または、いわゆるパラレルリンク型のロボットでもよい。一例では、移動ロボット4および定置ロボット5はいずれも先端部を有し、この先端部には処理の目的に応じたツールが取り付けられる。ツールの例として吸着ノズル、ロボットハンド、加工ツール、および溶接ガンが挙げられる。NC工作機械6は加工指令に従って切削等の機械加工をワークに施す装置である。環境センサ7はセンシング指令に従って、作業環境に関する情報を取得する装置である。環境センサ7は例えば、作業環境の画像を取得するカメラでもよいし、作業環境の温度を取得する温度センサでもよい。コンベヤ8は搬送指令に従ってワークを搬送する装置である。コンベヤ8の例としてベルトコンベヤおよびローラコンベヤが挙げられる。
【0013】
一例では、それぞれのローカル機器3は、ローカル機器3の主たる機能を発揮する機器本体20と、その機器本体20を制御するローカルコントローラ30とを備える。ローカルコントローラ30は上位コントローラ10からの指令に従って機器本体20を制御し、その指令に対する応答を上位コントローラ10に送信する。この例ではローカルコントローラ30はローカル機器3の一要素である。別の例として、機器制御システム1においてローカルコントローラ30そのものがローカル機器3として存在してもよい。移動ロボット4または定置ロボット5を制御するローカルコントローラ30はロボットコントローラともいわれる。
【0014】
一例では、機器制御システム1は、それぞれの上位コントローラ10とそれぞれのローカル機器3との間で時刻を同期させて、それぞれのローカル機器3を定周期通信に基づいて動作させる。定周期通信が適用された場合では、上位コントローラ10は所与の周期で指令を出力し、ローカル機器3はその周期でその指令に基づいて動作する。また、ローカル機器3はその周期で応答を上位コントローラ10に向けて出力し、上位コントローラ10はその周期で応答を取得する。
【0015】
一例では、機器制御システム1は外部のグローバル時計に基づくグローバル時刻を取得し、そのグローバル時刻に基づいて時刻同期を実行する。例えば、上位コントローラ10はグローバル時計を有する時刻サーバ9に第1通信ネットワークNaを介して接続し、グローバル時刻をその時刻サーバ9から取得する。上位コントローラ10およびローカル機器3は第2通信ネットワークNbを介して互いに接続され、グローバル時刻に基づいて同期された時刻に基づいて通信および制御を実行する。機器制御システム1の時刻同期を実現するために、Precision Time Protocol(PTP)、generalized PTP(gPTP)、Time Sensitive Networking(TSN)などの様々な手法が採用されてよい。上位コントローラ10は時刻サーバ9以外の装置または手法によってグローバル時刻を取得してもよい。
【0016】
第1通信ネットワークNaおよび第2通信ネットワークNbはいずれも、有線ネットワークでも、無線ネットワークでも、またはこれらの組合せでもよい。第1通信ネットワークNaおよび第2通信ネットワークNbはいずれも、少なくとも一部に移動通信システムを含む方式で構築されてもよい。一例では、第1通信ネットワークNaおよび第2通信ネットワークNbは、非定周期通信を採用するネットワークである。この例では、機器制御システム1はその第2通信ネットワークNb(すなわち非定周期通信)を用いて上位コントローラ10とローカル機器3との時刻同期を実行し、さらに、定周期通信を実現する。ここで、定周期通信とは、予め定められたフォーマットに従って一定時間ごとに情報通信を行う通信方式をいう。一方、非定周期通信とは、データ通信のタイミングが必ずしも定められていない通信方式をいう。
【0017】
一例では、機器制御システム1での時刻同期を安定させるために、グローバル時刻に基づく時刻同期を実行する上位コントローラ10内の処理を考慮する必要がある。例えば、上位コントローラ10の内部では、時刻同期のために生成されるクロック信号のクロック周期が、予期しない現象によって乱れてしまう可能性がある。予期しない現象の原因として、例えば、バス上で発生するノイズまたは反射、電圧変化などが挙げられる。或るクロック周期が意図しないタイミングで開始した場合には、そのクロック周期に対応する時刻が間違ったタイミングで設定されかねない。その結果、上位コントローラ10内の時計に狂いが生じ、その内部時計が示す時刻に基づいて生成される内部信号(例えば割り込み信号)にジッタ(信号波形の揺らぎ)が生じ得る。
【0018】
図2は時刻のずれを生じさせ得るクロック信号の一例を示す図である。この例に示すクロック信号200はクロック周期Tを有し、個々のクロック周期の開始は信号の立ち上がりにより示される。本開示において、クロック周期の開始は信号の立ち下がりにより示されてもよいことに留意されたい。
図2は、クロック信号の乱れの例として、クロックの抜け201、クロックのずれ202、およびノイズ203を示す。クロック信号の抜けとは、本来は観測されるはずのクロックが、不安定な電圧、振幅の低下などの要因により観測されない現象である。クロックのずれとは、クロックが本来のタイミングとは異なる時に観測される現象である。ノイズとは、クロック信号の周期およびタイミングとは関係のない不規則な波である。
【0019】
一例では、機器制御システム1は、
図2に示すような予期しない現象が生ずる場合でも時刻同期を安定させるための仕組みを備える。この仕組みにより時刻同期の正確性が向上するので、機器制御システム1の全体において、統一された時刻に基づく様々な処理(例えば、機器の制御、応答の解析など)を正確に実行することが可能になる。その仕組みは、本開示の一側面に係るコントローラをその上位コントローラ10に適用することで実現し得る。
【0020】
本開示において、時計とは、時間の流れにおける個々の一点をその流れに沿って離散的にまたは連続的に示し続ける仕組みをいう。時間の経過を示すタイマは時計の一種である。時刻とは時間の流れにおける一点を示す値である。時刻は時、分、秒などの一般的な単位を用いて示されてもよいし、カウンタ値、カレンダ値(システム時刻)などの他の手法により示されてもよい。本開示において「時計に基づく時刻」とは、例えば、時計で示される時刻をいう。
【0021】
[上位コントローラの構成]
図3は上位コントローラ10の機能構成の一例を示す図である。一例では、上位コントローラ10は時刻同期のために3種類の内部時計を有する。それらの内部時計は、マスタ時計Cmと、中間コントローラ時計Ciおよび基準コントローラ時計Crという2種類のコントローラ時計とである。一例では、上位コントローラ10は機能モジュールとしてマスタ時計管理部11、コントローラ時計管理部12、および監視部13を備える。
【0022】
マスタ時計管理部11は、マスタ時計Cmを外部のグローバル時計に同期させて、マスタ時計Cmに基づくマスタ時刻を設定する機能モジュールである。一例では、マスタ時計管理部11は時刻サーバ9から第1通信ネットワーク(非定周期通信)を介してグローバル時刻を受信し、そのグローバル時刻に基づいてその時刻同期を実行し、マスタ時刻を設定する。マスタ時計管理部11は、マスタ時刻に対応し且つマスタクロック周期を有するマスタクロック信号を生成する。マスタクロック信号は時刻同期のためのクロック信号の一例である。
【0023】
コントローラ時計管理部12は、コントローラ時計をマスタ時計Cmに同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行する機能モジュールである。この時刻同期はコントローラ時刻をマスタ時刻に同期させる処理である、ということもできる。一例では、コントローラ時計管理部12は中間時計管理部14、基準時計管理部15、および通知部16を備える。
【0024】
中間時計管理部14は第1時刻同期を実行する機能モジュールである。第1時刻同期は、マスタクロック信号に基づいて中間コントローラ時計Ciをマスタ時計Cmに同期させて、該中間コントローラ時計Ciに基づく中間コントローラ時刻を設定する処理である。第1時刻同期は中間コントローラ時刻をマスタ時刻に同期させる処理である、ということもできる。中間時計管理部14は、中間コントローラ時刻に対応し且つマスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を生成する。中間クロック信号は時刻同期のためのクロック信号の一例である。中間クロック信号は、コントローラ時刻に対応し且つ所与の内部周期を有する内部信号の一例である、ともいえる。この場合、中間時計管理部14はクロック周期(マスタクロック周期)よりも短い内部周期で内部信号を生成する、といえる。
【0025】
基準時計管理部15は第2時刻同期を実行する機能モジュールである。第2時刻同期は、中間クロック信号に基づいて基準コントローラ時計Crを中間コントローラ時計Ciに同期させて、該基準コントローラ時計Crに基づく基準コントローラ時刻を設定する第2時刻同期を実行する機能モジュールである。第2時刻同期は基準コントローラ時刻を中間コントローラ時刻に同期させる処理である、ということもできる。
【0026】
通知部16は、第2通信ネットワークNbを用いた定周期通信により少なくとも一つのローカル機器にコントローラ時刻を送信する機能モジュールである。例えば、通知部16は基準コントローラ時刻を送信する。
【0027】
監視部13は、コントローラ時計管理部12による時刻同期を監視し、必要に応じてその時刻同期に介入する機能モジュールである。一例では、監視部13はウィンドウ設定部17、判定部18、および更新制御部19を備える。
【0028】
ウィンドウ設定部17は、時刻同期のためのクロック信号のそれぞれのクロック周期が正しく開始したか否かを判定するための時間ウィンドウを設定する機能モジュールである。この時間ウィンドウは時間幅によって表現され得る。ウィンドウ設定部17は、それぞれのクロック周期の推定開始タイミングに対応する時間ウィンドウを設定する。一例では、ウィンドウ設定部17はそれぞれのマスタクロック周期について判定するための時間ウィンドウと、それぞれの中間クロック周期について判定するための時間ウィンドウとを生成する。
【0029】
判定部18は、時刻同期のためのクロック信号のそれぞれのクロック周期が時間ウィンドウ内で開始したか否かを判定する機能モジュールである。一例では、判定部18は、それぞれのマスタクロック周期が、対応する所与の時間ウィンドウ内で開始したか否かを判定する。また、判定部18は、それぞれの中間クロック周期が、対応する所与の時間ウィンドウ内で開始したか否かを判定する。
【0030】
更新制御部19は、時刻同期のためのクロック信号のクロック周期が時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する時刻同期を保留する機能モジュールである。「クロック周期に対応する時刻同期を保留する」とは、そのクロック周期における時刻同期を実行しないことをいう。或るクロック周期が時間ウィンドウ内で開始しないということは、そのクロック周期が正常でないことを意味する。時刻同期が保留される場合には、クロック周期ごとに実行されてきた時刻同期が一時的に停止されて、次回以降のクロック周期から時刻同期が再開される。一例では、更新制御部19は、或るマスタクロック周期が、対応する時間ウィンドウ内で開始しなかった場合に、該マスタクロック周期に対応する第1時刻同期を保留する。また、更新制御部19は、或る中間クロック周期、対応する時間ウィンドウ内で開始しなかった場合に、該中間クロック周期に対応する第2時刻同期を保留する。
【0031】
時刻同期のためのクロック信号のクロック周期が時間ウィンドウ内で開始した場合、すなわち該クロック周期が正常であるには、更新制御部19はそのクロック周期に対応する時刻同期をコントローラ時計管理部12に実行させる。マスタクロック周期が、対応する時間ウィンドウ内で開始した場合には、中間時計管理部14はそのマスタクロック周期に対応する第1時刻同期を実行する。中間クロック周期が、対応する時間ウィンドウ内で開始した場合には、基準時計管理部15はその中間クロック周期に対応する第2時刻同期を実行する。
【0032】
図4は、上位コントローラ10として機能するコンピュータ100のハードウェア構成の一例を示す図である。コンピュータ100は回路110を有する。回路110はプロセッサ111、メモリ112、ストレージ113、タイマ114、入出力ポート115、および通信ポート116を備える。これらのハードウェア要素のそれぞれの個数は1でもよいし2以上でもよい。ストレージ113は、コンピュータ100上の各機能モジュールを構成するためのプログラムを記録する。ストレージ113は、ハードディスク、不揮発性の半導体メモリ、磁気ディスク、光ディスクなどの、コンピュータ読み取り可能な記録媒体である。メモリ112は、ストレージ113からロードされたプログラム、プロセッサ111の演算結果などを一時的に記憶する。プロセッサ111は、メモリ112と協働してプログラムを実行することで、各機能モジュールを実現する。入出力ポート115は、プロセッサ111からの指令に応じて、機器本体、モニタ、または入力デバイスなどの対象装置120との間で電気信号の入出力を行う。入出力ポート115は機器本体への電力供給の役割も果たし得る。通信ポート116は、プロセッサ111からの指令に従って、通信ネットワークN(例えば第1通信ネットワークNaまたは第2通信ネットワークNbの少なくとも一つ)を介して他の装置との間でデータ通信を行う。
【0033】
[システムの動作]
本開示に係る時刻同期方法の一例として、
図5~
図8を参照しながら、上位コントローラ10の動作の一例を説明する。
図5は上位コントローラ10の動作の一例を処理フローS1として示すシーケンス図である。すなわち、一例では上位コントローラ10は処理フローS1を実行する。
図6は時間ウィンドウの設定の一例を示す図である。
図7および
図8はいずれも、時刻同期の監視および制御の一例を示す図である。
【0034】
(時刻同期)
図5を参照しながら上位コントローラ10内での時刻同期について説明する。ステップS11ではマスタ時計管理部11がマスタ時計Cmの開始時刻Tsを設定し、その開始時刻Tsを中間時計管理部14に出力する。ステップS12では、中間時計管理部14が開始時刻Tsを取得し、さらに中間時計管理部14に関連する内部遅延Diを取得し、そしてこれらの値を基準時計管理部15に出力する。ステップS13では、基準時計管理部15が開始時刻Tsおよび内部遅延Diを取得し、さらに基準時計管理部15に関連する内部遅延Drを取得する。
【0035】
ステップS14では、マスタ時計管理部11がマスタクロック信号のマスタクロック周期Tmを設定し、そのマスタクロック周期Tmを中間時計管理部14に出力する。ステップS15では、中間時計管理部14がマスタクロック周期Tmに基づいて、中間クロック信号の中間クロック周期Tiを設定する。一例では、中間時計管理部14はマスタクロック周期Tmよりも短い中間クロック周期Tiを設定し、例えば、マスタクロック周期Tmの1/N(Nは2以上の整数)である中間クロック周期Tiを設定する。中間時計管理部14は中間クロック周期Tiを基準時計管理部15に出力する。ステップS16では、基準時計管理部15がその中間クロック周期Tiを取得する。
【0036】
その後、マスタ時計管理部11、中間時計管理部14、および基準時計管理部15が連携してマスタ時計Cm、中間コントローラ時計Ci、および基準コントローラ時計Crの間での時刻同期を実行する。以下では、マスタ時計管理部11、中間時計管理部14、および基準時計管理部15での一連の処理をそれぞれステップS17,S18,S19として説明する。
【0037】
ステップS17では、マスタ時計管理部11が時刻同期を開始し、マスタクロック周期Tmを有するマスタクロック信号を中間時計管理部14に向けて出力する。
【0038】
ステップS18では、中間時計管理部14がそのマスタクロック信号に基づいて中間コントローラ時計Ciをマスタ時計Cmに同期させる。この同期において、中間時計管理部14は開始時刻Tsと内部遅延Diとの和を中間コントローラ時刻の初期値として設定する。その後、中間時計管理部14は個々のマスタクロック周期Tmにおいて、中間コントローラ時刻の前回値に該マスタクロック周期Tmを加算して中間コントローラ時刻を更新する。
図5では、マスタクロック信号に基づくこのような中間コントローラ時刻の初期設定および更新をステップS18aとして示す。ステップS18では更に、中間時計管理部14は中間クロック周期Tiを有する中間クロック信号を中間時計管理部14に向けて出力する。
図5では、その出力をステップS18bとして示す。一例ではステップS18aおよびステップS18bは互いに独立した処理であることに留意されたい。
【0039】
ステップS19では、基準時計管理部15がその中間クロック信号に基づいて基準コントローラ時計Crを中間コントローラ時計Ciに同期させる。この同期において、基準時計管理部15は開始時刻Ts、内部遅延Di、および内部遅延Drの和(すなわち、中間コントローラ時刻と内部遅延Drとの和)を基準コントローラ時刻の初期値として設定する。その後、基準時計管理部15は個々の中間クロック周期Tiにおいて、基準コントローラ時刻の前回値に該中間クロック周期Tiを加算して基準コントローラ時刻を更新する。
【0040】
ステップS18,S19に示すように、コントローラ時計管理部(中間時計管理部14および基準時計管理部15)は上位コントローラ10内の内部遅延(例えば、内部遅延Di,Dr)に更に基づいて時刻同期を実行してもよい。
【0041】
通知部16は少なくとも一つのローカル機器3に所与の通信周期で基準コントローラ時刻を通知する。通信周期はクロック信号のクロック周期(マスタクロック周期Tmまたは中間クロック周期Ti)より長くても、短くても、または同じでもよい。通信周期はクロック周期のN倍または1/N倍(Nは2以上の整数)と同期してもよいし、クロック周期と非同期でもよい。
【0042】
(時間ウィンドウの設定)
図6を参照しながら、時間ウィンドウの設定の一例について説明する。この例では、正確なクロック周期Tを有する正確なクロック信号210を示す。時間ウィンドウを設定する処理はマスタクロック信号および中間クロック信号の双方に共通であり、クロック信号210はマスタクロック信号および中間クロック信号のそれぞれに対応し得る。クロック信号210の個々のクロック周期の開始は、信号の立ち上がりにより示される。一例では、ウィンドウ設定部17は、クロック周期の推定開始タイミング211より前の時点から、該推定開始タイミング211より後の時間までの時間幅Twを時間ウィンドウ300として設定する。
図5ではこのように設定された時間ウィンドウ300の集合をウィンドウ列311として示す。
【0043】
ウィンドウ設定部17はクロック信号210の周期に基づいて時間幅Twを設定してもよい。例えばウィンドウ設定部17は、推定開始タイミング211の前に位置する該周期の1/4の長さと、該推定開始タイミング211の後に位置する該周期の1/4の長さとから成る時間幅Tw(すなわち、該周期の1/2の長さである時間幅Tw)を設定してもよい。あるいは、ウィンドウ設定部17は、コントローラ時刻に対応する内部信号の内部周期を時間幅Twとして設定してもよい。内部信号は、同期させようとするコントローラ時刻に対応するクロック信号(例えば中間クロック信号)でもよいし、周期的に生成される他の割り込み信号でもよい。したがって、内部周期は、そのクロック信号のクロック周期(例えば中間クロック周期)でもよいし、その割り込み信号の周期でもよい。
【0044】
ウィンドウ設定部17は、時間ウィンドウ300が設定されているか否かを示すフラグを更に設定してもよい。このフラグにより、判定部18は時間ウィンドウ300の始端、終端、および長さを考慮することなく時間ウィンドウ300の存在を認識できる。
図6の例では、そのフラグの値は、時間ウィンドウ300が設定されていることを示す値「OK」と、時間ウィンドウ300が設定されていないことを示す値「NG」とのいずれかである。フラグは他の2種類の値により表現されてもよい。フラグが設定される場合には、判定部18は、クロック周期が開始した時点でのフラグを参照して、クロック周期が時間ウィンドウ300内で開始したか否かを判定する。
【0045】
一例では、ウィンドウ設定部17は、クロック周期が時間ウィンドウ300内で開始した場合に、該クロック周期の開始時点に基づいて該時間ウィンドウ300の終端を設定してもよい。このような終端の設定は、該終端を初期設定から変更する処理であるといえる。ウィンドウ列312として示す例では、ウィンドウ設定部17はクロック周期の開始に応答して時間ウィンドウ300の終端を設定(変更)する。個々の時間ウィンドウ300の始端は変更されない。
【0046】
(時刻同期の監視)
図7を参照しながら、時刻同期の監視および制御の一例について説明する。この例は、コントローラ時計管理部12が、クロック周期Tpを有するクロック信号220に基づいてコントローラ時刻を設定する処理を示す。この例は中間時計管理部14および基準時計管理部15に共通の処理を表す。
【0047】
クロック信号220がマスタクロック信号である場合の処理を説明する。したがって、クロック周期Tpはマスタクロック周期を意味する。中間時計管理部14は時間ウィンドウ321内で開始したマスタクロック周期221に対応する第1時刻同期を実行し、中間コントローラ時刻をTnに設定する。更に、中間時計管理部14は次の時間ウィンドウ322内で開始したマスタクロック周期222に対応する第1時刻同期を実行し、中間コントローラ時刻を(Tn+Tp)に設定する。次の時間ウィンドウ323では、マスタクロック周期223が該時間ウィンドウ323内で開始しなかったと判定部18が判定し、更新制御部19がそのマスタクロック周期223に対応する第1時刻同期を保留する。次の時間ウィンドウ324内ではマスタクロック周期224が開始したが、更新制御部19はそのマスタクロック周期224に対応する第1時刻同期を更に保留する。中間時計管理部14は次の時間ウィンドウ325内で開始したマスタクロック周期225に対応する第1時刻同期を実行し、中間コントローラ時刻を(Tn+4*Tp)に設定する。中間時計管理部14は次の時間ウィンドウ326内で開始したマスタクロック周期226に対応する第1時刻同期を実行し、中間コントローラ時刻を(Tn+5*Tp)に設定する。
【0048】
クロック信号220が中間クロック信号である場合の処理を説明する。したがって、クロック周期Tpは中間クロック周期を意味する。基準時計管理部15は時間ウィンドウ321内で開始した中間クロック周期221に対応する第2時刻同期を実行し、基準コントローラ時刻をTnに設定する。更に、基準時計管理部15は次の時間ウィンドウ322内で開始した中間クロック周期222に対応する第2時刻同期を実行し、基準コントローラ時刻を(Tn+Tp)に設定する。次の時間ウィンドウ323では、中間クロック周期223が該時間ウィンドウ323内で開始しなかったと判定部18が判定し、更新制御部19がその中間クロック周期223に対応する第2時刻同期を保留する。次の時間ウィンドウ324内では中間クロック周期224が開始したが、更新制御部19はその中間クロック周期224に対応する第2時刻同期を更に保留する。基準時計管理部15は次の時間ウィンドウ325内で開始した中間クロック周期225に対応する第2時刻同期を実行し、基準コントローラ時刻を(Tn+4*Tp)に設定する。基準時計管理部15は次の時間ウィンドウ326内で開始した中間クロック周期226に対応する第2時刻同期を実行し、基準コントローラ時刻を(Tn+5*Tp)に設定する。
【0049】
図7の例において、マスタクロック周期(または中間クロック周期)324が時間ウィンドウ324内で開始した場合に、更新制御部19はそのマスタクロック周期224に対応する時刻同期を中間時計管理部14(または基準時計管理部15)に実行させてもよい。この場合には、中間時計管理部14は第1時刻同期を実行し、中間コントローラ時刻を(Tn+3*Tp)に設定する(または、基準時計管理部15は第2時刻同期を実行し、基準コントローラ時刻を(Tn+3*Tp)に設定する)。
【0050】
図8を参照しながら、時刻同期の監視および制御の別の例について説明する。この例は、コントローラ時計管理部12が、クロック周期Tpを有するクロック信号230に基づいてコントローラ時刻を設定する処理を示す。この例も中間時計管理部14および基準時計管理部15に共通の処理を表す。
【0051】
クロック信号230がマスタクロック信号である場合の処理を説明する。したがって、クロック周期Tpはマスタクロック周期を意味する。中間時計管理部14は時間ウィンドウ331内で開始したマスタクロック周期231に対応する第1時刻同期を実行し、中間コントローラ時刻をTnに設定する。更に、中間時計管理部14は次の時間ウィンドウ332内で開始したマスタクロック周期232に対応する第1時刻同期を実行し、中間コントローラ時刻を(Tn+Tp)に設定する。次の時間ウィンドウ333では、マスタクロック周期233が該時間ウィンドウ333内で開始しなかったと判定部18が判定し、更新制御部19がそのマスタクロック周期233に対応する第1時刻同期を保留する。中間時計管理部14は次の時間ウィンドウ334内で開始したマスタクロック周期234に対応する第1時刻同期を実行し、中間コントローラ時刻を(Tn+3*Tp)に設定する。中間時計管理部14は次の時間ウィンドウ335内で開始したマスタクロック周期235に対応する第1時刻同期を実行し、中間コントローラ時刻を(Tn+4*Tp)に設定する。その後、ノイズ236が発生するが、このタイミングは時間ウィンドウの外であるので(フラグが「NG」であるので)、中間時計管理部14は第1時刻同期を実行しない。その後、中間時計管理部14は次の時間ウィンドウ336内で開始したマスタクロック周期237に対応する第1時刻同期を実行し、中間コントローラ時刻を(Tn+5*Tp)に設定する。
【0052】
クロック信号230が中間クロック信号である場合の処理を説明する。したがって、クロック周期Tpは中間クロック周期を意味する。基準時計管理部15は時間ウィンドウ331内で開始した中間クロック周期231に対応する第2時刻同期を実行し、基準コントローラ時刻をTnに設定する。更に、基準時計管理部15は次の時間ウィンドウ332内で開始した中間クロック周期232に対応する第2時刻同期を実行し、基準コントローラ時刻を(Tn+Tp)に設定する。次の時間ウィンドウ333では、中間クロック周期233が該時間ウィンドウ333内で開始しなかったと判定部18が判定し、更新制御部19がその中間クロック周期233に対応する第2時刻同期を保留する。基準時計管理部15は次の時間ウィンドウ334内で開始した中間クロック周期234に対応する第2時刻同期を実行し、基準コントローラ時刻を(Tn+3*Tp)に設定する。基準時計管理部15は次の時間ウィンドウ335内で開始した中間クロック周期235に対応する第2時刻同期を実行し、基準コントローラ時刻を(Tn+4*Tp)に設定する。その後、ノイズ236が発生するが、この時点は時間ウィンドウの外であるので(フラグが「NG」であるので)、基準時計管理部15は第2時刻同期を実行しない。その後、基準時計管理部15は次の時間ウィンドウ336内で開始した中間クロック周期237に対応する第2時刻同期を実行し、基準コントローラ時刻を(Tn+5*Tp)に設定する。
【0053】
図8の例において、マスタクロック周期(または中間クロック周期)234が時間ウィンドウ334内で開始した場合に、更新制御部19はそのマスタクロック周期234に対応する時刻同期を更に保留してもよい。この場合には、次の第1時刻同期はマスタクロック周期235において実行される(または、次の第2時刻同期は中間クロック周期235において実行される)。
【0054】
図7の例では、クロック信号220は、時間ウィンドウ323で開始しなかったクロック周期223と、時間ウィンドウ324内で開始したクロック周期224とを含む。
図8の例では、クロック信号230は、時間ウィンドウ333で開始しなかったクロック周期233と、時間ウィンドウ334内で開始したクロック周期234とを含む。これらの例のように、クロック信号は、第1時間ウィンドウ内で開始しなかった第1クロック周期と、該第1時間ウィンドウに続く第2時間ウィンドウ内で開始した第2クロック周期とを含み得る。一例では、更新制御部19は、その第2クロック周期(クロック周期224,234)に対応する時刻同期をコントローラ時計管理部12(中間時計管理部14または基準時計管理部15)実行させてもよい。
【0055】
図7の例では、クロック信号220は、時間ウィンドウ323で開始しなかったクロック周期223と、時間ウィンドウ324内で開始したクロック周期224と、時間ウィンドウ325内で開始したクロック周期225とを含む。
図8の例では、クロック信号230は、時間ウィンドウ333で開始しなかったクロック周期233と、時間ウィンドウ334内で開始したクロック周期234と、時間ウィンドウ335内で開始したクロック周期235とを含む。すなわち、クロック信号は、第1時間ウィンドウ内で開始しなかった第1クロック周期と、該第1時間ウィンドウに続く第2時間ウィンドウ内で開始した第2クロック周期と、該第2時間ウィンドウに続く第3時間ウィンドウ内で開始した第3クロック周期とを含み得る。一例では、更新制御部19は、第2クロック周期(クロック周期224,234)に対応する時刻同期を更に保留し、第3クロック周期(クロック周期225,235)に対応する時刻同期をコントローラ時計管理部12(中間時計管理部14または基準時計管理部15)に実行させてもよい。
【0056】
更新制御部19が時刻同期を保留した場合には、コントローラ時計管理部12は、クロック周期を用いることなく内部周期に基づいて代替の時刻同期を実行してもよい。一例として、更新制御部19が第1時刻同期を保留した場合には、中間時計管理部14は、マスタクロック周期を用いることなく、中間クロック周期に基づいて第1の代替の時刻同期を実行してもよい。別の例として、更新制御部19が第2時刻同期を保留した場合には、基準時計管理部15は、中間クロック周期を用いることなく、関連する割り込み信号の周期に基づいて第2の代替の時刻同期を実行してもよい。このように、コントローラ時計管理部12(中間時計管理部14または基準時計管理部15)はマスタ時計Cmに基づく開始時刻と、クロック周期および内部周期のうちの少なくとも一つに基づいて時刻同期(第1時刻同期または第2時刻同期)を実行してよい。あるいは、コントローラ時計管理部12は、時刻同期が保留された場合に、クロック周期に基づいて推定した値に基づいて代替の時刻同期を実行してもよい。
【0057】
[プログラム]
上位コントローラ10の各機能モジュールは、プロセッサ111またはメモリ112の上に時刻同期プログラムを読み込ませてプロセッサ111にそのプログラムを実行させることで実現される。時刻同期プログラムは、上位コントローラ10の各機能モジュールを実現するためのコードを含む。プロセッサ111は時刻同期プログラムに従って入出力ポート115または通信ポート116を動作させ、メモリ112またはストレージ113におけるデータの読み出しおよび書き込みを実行する。このような処理により機器制御システム1の各機能モジュールが実現される。
【0058】
時刻同期プログラムは、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、時刻同期プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0059】
[効果]
以上説明したように、本開示の一側面に係るコントローラは、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するマスタ時計管理部と、コントローラ内のコントローラ時計をマスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するコントローラ時計管理部と、時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定する判定部と、クロック周期が時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する時刻同期を保留する更新制御部とを備える。
【0060】
本開示の一側面に係る時刻同期方法は、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するステップと、コントローラ内のコントローラ時計をマスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するステップと、時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定するステップと、クロック周期が時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する時刻同期を保留するステップとを含む。
【0061】
本開示の一側面に係る時刻同期プログラムは、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定するステップと、コントローラ内のコントローラ時計をマスタ時計に同期させて、該コントローラ時計に基づくコントローラ時刻を設定する時刻同期を実行するステップと、時刻同期のためのクロック信号のそれぞれのクロック周期が所与の時間ウィンドウ内で開始したか否かを判定するステップと、クロック周期が時間ウィンドウ内で開始しなかった場合に、該クロック周期に対応する時刻同期を保留するステップとをコンピュータに実行させる。
【0062】
このような側面においては、1周期分のクロック信号の開始タイミングが適切でない場合に時刻同期が行われないので、コントローラ時刻がマスタ時刻からずれる状況を回避して、時刻同期を安定させることができる。
【0063】
他の側面に係るコントローラでは、マスタ時計管理部は、外部のグローバル時計に基づくグローバル時刻を非定周期通信により時刻サーバから受信し、該グローバル時刻に基づいてマスタ時刻を設定し、コントローラ時計管理部は、定周期通信により少なくとも一つのローカル機器にコントローラ時刻を送信してもよい。この場合には、非定周期通信を介して取得されたグローバル時刻に同期されたコントローラ時刻が定周期通信によってローカル機器に通知される。すなわち、グローバル時刻が非定周期通信によって取得される場合でも、定周期通信に基づいて制御される1以上のローカル機器のそれぞれでのローカル時刻を適切に設定できる。
【0064】
他の側面に係るコントローラでは、マスタ時計管理部は、マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を、時刻同期のためのクロック信号として生成し、判定部は、それぞれのマスタクロック周期が、対応する所与の時間ウィンドウ内で開始したか否かを判定し、更新制御部は、マスタクロック周期が対応する時間ウィンドウ内で開始しなかった場合に、該マスタクロック周期に対応する時刻同期を保留してもよい。マスタクロックの開始タイミングが適切でない場合に時刻同期を行わないことで、コントローラ時刻がマスタ時刻からずれる状況を回避して、時刻同期を安定させることができる。
【0065】
他の側面に係るコントローラでは、コントローラ時計は中間コントローラ時計および基準コントローラ時計を含んでもよい。コントローラ時計管理部は、マスタクロック信号に基づいて中間コントローラ時計をマスタ時計に同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を時刻同期のためのクロック信号として生成する中間時計管理部と、中間クロック信号に基づいて、基準コントローラ時計を中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行する基準時計管理部とを備えてもよい。マスタクロック周期よりも短い中間クロック周期を用いてコントローラ内の時刻を2段階でマスタ時刻に同期させることで、マスタクロック信号の揺らぎの影響をより確実に抑えてロバストな時刻同期を実現できる。
【0066】
他の側面に係るコントローラでは、判定部は、それぞれの中間クロック周期が、対応する時間ウィンドウ内で開始したか否かをさらに判定し、更新制御部は、中間クロック周期が対応する時間ウィンドウ内で開始しなかった場合に、該中間クロック周期に対応する第2時刻同期を保留してもよい。マスタクロック周期および中間クロック周期のそれぞれで判定を実行することで、より確実に時刻同期を安定させることができる。
【0067】
他の側面に係るコントローラでは、クロック信号は、第1時間ウィンドウ内で開始しなかった第1クロック周期と、第1時間ウィンドウに続く第2時間ウィンドウ内で開始した第2クロック周期とを有してもよい。更新制御部は、第2クロック周期に対応する時刻同期をコントローラ時計管理部に実行させてもよい。この場合には、クロック周期が正常に戻ったと推定される時点で速やかに時刻同期を再開できる。
【0068】
他の側面に係るコントローラでは、クロック信号は、第1時間ウィンドウ内で開始しなかった第1クロック周期と、第1時間ウィンドウに続く第2時間ウィンドウ内で開始した第2クロック周期と、第2時間ウィンドウに続く第3時間ウィンドウ内で開始した第3クロック周期とを有してもよい。更新制御部は、第2クロック周期に対応する時刻同期を更に保留し、第3クロック周期に対応する時刻同期をコントローラ時計管理部に実行させてもよい。この場合には、クロック周期が確実に正常に戻ったと推定される時点で初めて時刻同期が再開されるので、より確実に時刻同期を安定させることができる。
【0069】
他の側面に係るコントローラは、それぞれのクロック周期の推定開始タイミングに対応する時間ウィンドウを設定するウィンドウ設定部を更に備えてもよい。それぞれのクロック周期に対して時間ウィンドウが設定されるので、個々のクロック周期を確実に監視できる。
【0070】
他の側面に係るコントローラでは、ウィンドウ設定部は、クロック周期の推定開始タイミングより前の時点から、該推定開始タイミングより後の時間までの時間幅を時間ウィンドウとして設定してもよい。このように時間ウィンドウを設定することで、適切な(正しい)クロック周期を確実に捕捉できる。
【0071】
他の側面に係るコントローラでは、ウィンドウ設定部は、コントローラ時刻に対応する内部信号の内部周期を時間幅として設定してもよい。内部信号の周期を考慮して時間ウィンドウの長さが設定されるので、その内部信号に基づく処理に影響を及ぼさないように時刻同期を制御することができる。
【0072】
他の側面に係るコントローラでは、ウィンドウ設定部は、クロック周期が時間ウィンドウ内で開始した場合に、該クロック周期の開始時点に基づいて該時間ウィンドウの終端を設定してもよい。適切な(正しい)クロック周期の開始を特定したことに応答して時間ウィンドウの終端を設定することで、適切なクロック周期を捕捉し続けることができる。
【0073】
他の側面に係るコントローラでは、ウィンドウ設定部は、時間ウィンドウが設定されているか否かを示すフラグを更に設定し、判定部は、クロック周期が開始した時点でのフラグを参照して、クロック周期が時間ウィンドウ内で開始したか否かを判定してもよい。クロック周期が適切であるか否かを判定するためにフラグを参照すれば足りるので、判定処理を簡易にすることができる。
【0074】
他の側面に係るコントローラでは、コントローラ時計管理部は、クロック周期に基づいて、コントローラ時刻に対応し、所与の内部周期を有する内部信号を生成し、マスタ時計に基づく開始時刻と、クロック周期および内部周期のうちの少なくとも一つとに基づいて時刻同期を実行してもよい。クロック信号の周期に基づいて内部信号を生成し、双方の周期の少なくとも一つを用いて同期を実行することで、正確な時刻同期が可能になる。
【0075】
他の側面に係るコントローラでは、コントローラ時計管理部は、更新制御部が時刻同期を保留した場合に、クロック周期を用いることなく内部周期に基づいて代替の時刻同期を実行してもよい。このような処理により、適切な(正確な)マスタ時刻を得られなかった場合にも時刻同期を実行できる。
【0076】
他の側面に係るコントローラでは、コントローラ時計管理部は、クロック周期よりも短い内部周期で内部信号を生成してもよい。この内部信号を用いることで、コントローラ内の時刻をより短い間隔でマスタ時刻に同期させることが可能になり、したがって、クロック信号の揺らぎの影響をより確実に抑えてロバストな時刻同期を実行できる。
【0077】
他の側面に係るコントローラでは、コントローラ時計管理部は、コントローラ内の内部遅延に更に基づいて時刻同期を実行してもよい。コントローラ内の内部遅延が考慮されるので、コントローラ時刻をより正確にマスタ時刻に同期させることができる。
【0078】
本開示の一側面に係る機器制御システムは、上記のコントローラと、少なくとも一つのローカル機器とを備える。この場合には、機器制御システムにおいて、コントローラ時刻がマスタ時刻からずれる状況を回避して、時刻同期を安定させることができる。
【0079】
他の側面に係る機器制御システムでは、少なくとも一つのローカル機器の少なくとも一つはロボットコントローラであってもよい。この場合には、ロボットコントローラを有する機器制御システムにおいて、コントローラ時刻がマスタ時刻からずれる状況を回避して、時刻同期を安定させることができる。
【0080】
本開示の一側面に係るコントローラは、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定し、該マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成するマスタ時計管理部と、マスタクロック信号に基づいてコントローラ内の中間コントローラ時計をマスタ時計に対応同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を生成する中間時計管理部と、中間クロック信号に基づいて、コントローラ内の基準コントローラ時計を中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行する基準時計管理部とを備える。
【0081】
本開示の一側面に係る時刻同期方法は、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定し、該マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成するステップと、マスタクロック信号に基づいてコントローラ内の中間コントローラ時計をマスタ時計に対応同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を生成するステップと、中間クロック信号に基づいて、コントローラ内の基準コントローラ時計を中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行するステップとを含む。
【0082】
本開示の一側面に係る時刻同期プログラムは、コントローラ内のマスタ時計を外部のグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定し、該マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成するステップと、マスタクロック信号に基づいてコントローラ内の中間コントローラ時計をマスタ時計に対応同期させて、該中間コントローラ時計に基づく中間コントローラ時刻を設定する第1時刻同期を実行し、該中間コントローラ時刻に対応し、マスタクロック周期よりも短い中間クロック周期を有する中間クロック信号を生成するステップと、中間クロック信号に基づいて、コントローラ内の基準コントローラ時計を中間コントローラ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する第2時刻同期を実行するステップとをコンピュータに実行させる。
【0083】
このような側面においては、マスタクロック周期よりも短い中間クロック周期を用いてコントローラ内の時刻を2段階でマスタ時刻に同期させることで、マスタクロック信号の揺らぎの影響をより確実に抑えてロバストな時刻同期を実現できる。
【0084】
[変形例]
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0085】
上述した例では上位コントローラ10が中間コントローラ時計Ciと基準コントローラ時計Crという二つのコントローラ時計を備える。しかし、上位コントローラ10は中間コントローラ時計Ciを備えることなく基準コントローラ時計Crを備えてもよい。この変形例では、コントローラ時計管理部12は、マスタクロック信号に基づいて基準コントローラ時計Crをマスタ時計Cmに同期させて、該基準コントローラ時計Crに基づく基準コントローラ時刻を設定する時刻同期を実行する。
【0086】
すなわち、他の側面に係るコントローラでは、コントローラ時計は基準コントローラ時計であってもよい。コントローラ時計管理部は、マスタクロック信号に基づいて基準コントローラ時計をマスタ時計に同期させて、該基準コントローラ時計に基づく基準コントローラ時刻を設定する時刻同期を実行してもよい。中間コントローラ時計が省略されるので、コントローラの構成を簡易にしつつ、時刻同期を安定させることができる。
【0087】
システムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上記実施形態における機能モジュールの少なくとも一部が、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0088】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップ(処理)の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0089】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。このような基準の選択は、二つの数値の大小関係を比較する処理についての技術的意義を変更するものではない。
【符号の説明】
【0090】
1…機器制御システム、3…ローカル機器、9…時刻サーバ、10…上位コントローラ、11…マスタ時計管理部、12…コントローラ時計管理部、13…監視部、14…中間時計管理部、15…基準時計管理部、16…通知部、17…ウィンドウ設定部、18…判定部、19…更新制御部、20…機器本体、30…ローカルコントローラ、300,321~326,331~336…時間ウィンドウ、Na…第1通信ネットワーク、Nb…第2通信ネットワーク。