(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-09
(45)【発行日】2023-11-17
(54)【発明の名称】コントローラ、機器制御システム、時刻同期方法、および時刻同期プログラム
(51)【国際特許分類】
H04L 7/00 20060101AFI20231110BHJP
G05B 19/042 20060101ALI20231110BHJP
【FI】
H04L7/00 990
G05B19/042
(21)【出願番号】P 2021030227
(22)【出願日】2021-02-26
【審査請求日】2021-11-24
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】添田 竜男
(72)【発明者】
【氏名】小林 和敏
【審査官】谷岡 佳彦
(56)【参考文献】
【文献】国際公開第2021/002421(WO,A1)
【文献】国際公開第2014/199729(WO,A1)
【文献】特開2006-313458(JP,A)
【文献】特開2007-263753(JP,A)
【文献】特開2020-149402(JP,A)
【文献】国際公開第2020/194714(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/00
G05B 19/042
(57)【特許請求の範囲】
【請求項1】
外部のグローバル時計に基づくグローバル時刻を時刻サーバから非定周期通信により受信し、該グローバル時刻に基づいて、コントローラ内のコントローラ時計を
該グローバル時計に同期させるコントローラ時計管理部と、
前記同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知する通知部と、
を備え、
前記コントローラ時計管理部は、
前記コントローラ内のマスタ時計を前記グローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定する第1時計管理部と、
前記コントローラ時計を前記マスタ時計に同期させて前記コントローラ時刻を設定する第2時計管理部とを備
え、
前記第2時計管理部は、前記グローバル時計と前記コントローラ時計との時間差に対応する時間変更量が所与の閾値を超えた場合に、該時間変更量を前記定周期通信の複数の通信周期にわたって分散させて得られる補正量により、前記定周期通信の該複数の通信周期のそれぞれにおいて前記コントローラ時計を補正し、
前記通知部は、前記定周期通信の前記複数の通信周期のそれぞれにおいて、補正された前記コントローラ時計に基づく前記コントローラ時刻を、前記少なくとも一つのローカル機器に向けて通知する、
コントローラ。
【請求項2】
前記コントローラ時計管理部は、前記複数の通信周期のそれぞれにおいて、所与の補正上限値の範囲内で前記補正量を設定する、
請求項
1に記載のコントローラ。
【請求項3】
前記コントローラ時計管理部は、
前記補正量が前記補正上限値以下になるまで、前記コントローラ時計の前記補正を繰り返し、
前記補正量が前記補正上限値以下になった場合に、前記コントローラ時計を前記グローバル時計に同期させる、
請求項
2に記載のコントローラ。
【請求項4】
前記時間変更量が前記閾値を超えた場合に、前記コントローラ時計が補正中であることを示すフラグを設定するフラグ管理部を更に備え、
前記コントローラ時計管理部は、前記フラグが設定された場合に、前記グローバル時計を参照することなく、前記時間変更量に基づいて前記コントローラ時計を補正する、
請求項
1~3のいずれか一項に記載のコントローラ。
【請求項5】
前記フラグ管理部は、前記コントローラ時計が前記グローバル時計に同期した場合に、前記フラグをクリアする、
請求項
4に記載のコントローラ。
【請求項6】
前記第1時計管理部は、前記マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成し、
前記第2時計管理部は、
前記コントローラ時刻に対応し、所与の内部周期を有する内部信号を、前記マスタクロック周期に基づいて生成し、
前記マスタ時計に基づく開始時刻と、前記マスタクロック周期および前記内部周期のうちの少なくとも一つとに基づいて、前記コントローラ時計を前記マスタ時計に同期させる、
請求項1~
5のいずれか一項に記載のコントローラ。
【請求項7】
前記第2時計管理部は、前記マスタクロック周期よりも短い前記内部周期で前記内部信号を生成する、
請求項
6に記載のコントローラ。
【請求項8】
前記コントローラ時計管理部は、前記コントローラ内の内部遅延に更に基づいて前記コントローラ時計を前記グローバル時計に同期させる、
請求項1~7のいずれか一項に記載のコントローラ。
【請求項9】
請求項1~
8のいずれか一項に記載のコントローラと、
前記少なくとも一つのローカル機器と、
を備え、
前記少なくとも一つのローカル機器のそれぞれは、前記通知部により通知された前記コントローラ時刻に基づいて、該ローカル機器内のローカル時計を前記コントローラ時計に同期させるローカル時計管理部を備える、
機器制御システム。
【請求項10】
前記ローカル時計管理部は、前記通知されたコントローラ時刻に加えて、前記定周期通信による遅延時間に基づいて、前記ローカル時計を前記コントローラ時計に同期させる、
請求項
9に記載の機器制御システム。
【請求項11】
前記少なくとも一つのローカル機器の少なくとも一つはロボットコントローラである、
請求項
9または10に記載の機器制御システム。
【請求項12】
外部のグローバル時計に基づくグローバル時刻を時刻サーバから非定周期通信により受信し、該グローバル時刻に基づいて、コントローラ内のコントローラ時計を外部のグローバル時計に同期させる同期ステップと、
前記同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知する通知ステップと、
を含み、
前記同期ステップは、
前記コントローラ内のマスタ時計を前記グローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定する
マスタ時刻設定ステップと、
前記コントローラ時計を前記マスタ時計に同期させて前記コントローラ時刻を設定する
コントローラ時刻ステップとを含
み、
前記コントローラ時刻ステップでは、前記グローバル時計と前記コントローラ時計との時間差に対応する時間変更量が所与の閾値を超えた場合に、該時間変更量を前記定周期通信の複数の通信周期にわたって分散させて得られる補正量により、前記定周期通信の該複数の通信周期のそれぞれにおいて前記コントローラ時計を補正し、
前記通知ステップでは、前記定周期通信の前記複数の通信周期のそれぞれにおいて、補正された前記コントローラ時計に基づく前記コントローラ時刻を、前記少なくとも一つのローカル機器に向けて通知する、
時刻同期方法。
【請求項13】
外部のグローバル時計に基づくグローバル時刻を時刻サーバから非定周期通信により受信し、該グローバル時刻に基づいて、コントローラ内のコントローラ時計を外部のグローバル時計に同期させる同期ステップと、
前記同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知する通知ステップと、
をコンピュータに実行させ、
前記同期ステップは、
前記コントローラ内のマスタ時計を前記グローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定する
マスタ時刻設定ステップと、
前記コントローラ時計を前記マスタ時計に同期させて前記コントローラ時刻を設定する
コントローラ時刻ステップとを含
み、
前記コントローラ時刻ステップでは、前記グローバル時計と前記コントローラ時計との時間差に対応する時間変更量が所与の閾値を超えた場合に、該時間変更量を前記定周期通信の複数の通信周期にわたって分散させて得られる補正量により、前記定周期通信の該複数の通信周期のそれぞれにおいて前記コントローラ時計を補正し、
前記通知ステップでは、前記定周期通信の前記複数の通信周期のそれぞれにおいて、補正された前記コントローラ時計に基づく前記コントローラ時刻を、前記少なくとも一つのローカル機器に向けて通知する、
時刻同期プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面はコントローラ、機器制御システム、時刻同期方法、および時刻同期プログラムに関する。
【背景技術】
【0002】
特許文献1には、ネットワーク時刻に基づくタイマクロックに従ったタイミングで、フィールド機器を制御するための演算処理およびフィールド機器との間でのデータ通信を同期して実行するフィールド制御システムが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の一側面では、システム内の時刻を統一的に管理するための仕組みが望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係るコントローラは、コントローラ内のコントローラ時計を外部のグローバル時計に同期させるコントローラ時計管理部と、同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知する通知部とを備える。
【0006】
本開示の一側面に係る時刻同期方法は、コントローラ内のコントローラ時計を外部のグローバル時計に同期させるステップと、同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知するステップとを含む。
【0007】
本開示の一側面に係る時刻同期プログラムは、コントローラ内のコントローラ時計を外部のグローバル時計に同期させるステップと、同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知するステップとをコンピュータに実行させる。
【発明の効果】
【0008】
本開示の一側面によれば、システム内の時刻を統一的に管理できる。
【図面の簡単な説明】
【0009】
【
図1】機器制御システムの全体構成の一例を示す図である。
【
図2】機器制御システムの機能構成の一例を示す図である。
【
図3】機器制御システムで用いられるコンピュータのハードウェア構成の一例を示す図である。
【
図4】機器制御システムでの時刻同期の一例を示すシーケンス図である。
【
図5】コントローラ時刻の補正の一例を示すフローチャートである。
【
図6】機器制御システムの機能構成の他の例を示す図である。
【
図7】上位コントローラでの時刻同期の一例を示すシーケンス図である。
【発明を実施するための形態】
【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は外部のグローバル時計Cgに基づくグローバル時刻を取得し、そのグローバル時刻に基づいて時刻同期を実行する。グローバル時刻を用いることで、機器制御システム1は該システム内の時刻を統一的に管理することができ、例えば、それぞれのローカル機器3を一意の時刻に基づいて制御できる。一例では、上位コントローラ10はグローバル時計Cgを有する時刻サーバ9に第1通信ネットワークNaを介して接続し、グローバル時刻をその時刻サーバ9から取得する。上位コントローラ10およびローカル機器3は第2通信ネットワークNbを介して互いに接続され、グローバル時刻に基づいて同期された時刻に基づいて通信および制御を実行する。機器制御システム1の時刻同期を実現するために、Precision Time Protocol(PTP)、generalized PTP(gPTP)などの様々な手法が採用されてよい。上位コントローラ10は時刻サーバ9以外の装置または手法によってグローバル時刻を取得してもよい。
【0016】
第1通信ネットワークNaおよび第2通信ネットワークNbはいずれも、有線ネットワークでも、無線ネットワークでも、またはこれらの組合せでもよい。第1通信ネットワークNaおよび第2通信ネットワークNbはいずれも、少なくとも一部に移動通信システムを含む方式で構築されてもよい。一例では、第1通信ネットワークNaおよび第2通信ネットワークNbは、非定周期通信を採用するネットワークである。この例では、機器制御システム1はその第2通信ネットワークNb(すなわち非定周期通信)を用いて上位コントローラ10とローカル機器3との同期処理を実行し、さらに、定周期通信を実現する。ここで、定周期通信とは、予め定められたフォーマットに従って一定時間ごとに情報通信を行う通信方式をいう。一方、非定周期通信とは、データ通信のタイミングが必ずしも定められていない通信方式をいう。
【0017】
一例では、機器制御システム1は、グローバル時刻の揺らぎ(誤差の程度)が所与の基準値より大きい場合でも、その揺らぎが機器制御システム1内の時刻同期に与える影響を低減するための仕組みを備える。一例では、本開示の一側面に係るコントローラをその上位コントローラ10に適用することで、揺らぎを吸収しつつ機器制御システム1内の時刻をグローバル時刻に同期させることが可能になる。
【0018】
本開示において、時計とは、時間の流れにおける個々の一点をその流れに沿って離散的にまたは連続的に示し続ける仕組みをいう。時間の経過を示すタイマは時計の一種である。時刻とは時間の流れにおける一点を示す値である。時刻は時、分、秒などの一般的な単位を用いて示されてもよいし、カウンタ値、カレンダ値(システム時刻)などの他の手法により示されてもよい。本開示において「時計に基づく時刻」とは、例えば、時計で示される時刻をいう。
【0019】
[上位コントローラの構成]
図2は機器制御システム1の機能構成の一例を示す図である。この例ではローカル機器3の少なくとも一部としてローカルコントローラ30を示す。
【0020】
一例では、上位コントローラ10は時刻同期のためにコントローラ時計Crという内部時計を有する。一例では、上位コントローラ10は機能モジュールとしてコントローラ時計管理部11および通知部12を備える。
【0021】
コントローラ時計管理部11は、コントローラ時計Crをグローバル時計Cgに同期させる機能モジュールである。一例では、コントローラ時計管理部11は時刻サーバ9から第1通信ネットワーク(非定周期通信)を介してグローバル時刻を受信し、そのグローバル時刻に基づいてその時刻同期を実行し、同期されたコントローラ時計Crに基づくコントローラ時刻を設定する。グローバル時計Cgとコントローラ時計Crとの時間差に対応する時間変更量が所与の閾値よりも大きい場合には、コントローラ時計管理部11はその時間差を一回の処理ではなく段階的な処理によって埋めることで(すなわち、その時間差を徐々に正すことで)コントローラ時刻を設定する。本開示ではこのような段階的な処理をコントローラ時刻の調整という。時間変更量とは、コントローラ時刻をグローバル時刻に同期させるために必要な、コントローラ時刻の変更量をいう。一例では、コントローラ時計管理部11は、コントローラ時刻の調整の少なくとも一部として、時間変更量に基づいてコントローラ時計Crを補正する。コントローラ時計の補正とは、コントローラ時刻とグローバル時刻との時間差を段階的に縮める処理をいう。
【0022】
一例では、コントローラ時計管理部11はフラグ管理部13を備える。フラグ管理部13は、コントローラ時計Crの補正において用いられるフラグを設定する機能モジュールである。このフラグはコントローラ時計Crが補正中であることを示す。フラグ管理部13は時間変更量が閾値を超えた場合にフラグを設定し、コントローラ時計Crがグローバル時計Cgに同期した場合にフラグをクリアする。本開示ではそのフラグを補正フラグともいう。
【0023】
通知部12は、同期されたコントローラ時計Crに基づくコントローラ時刻を、第2通信ネットワークNbを用いた定周期通信により少なくとも一つのローカル機器3に向けて通知する機能モジュールである。一例では、通知部12は調整されたコントローラ時刻(例えば、補正されたコントローラ時計Crに基づくコントローラ時刻)を通知する。
【0024】
一例では、ローカルコントローラ30は時刻同期のためにローカル時計Ceという内部時計を有する。一例では、ローカルコントローラ30は機能モジュールとしてローカル時計管理部31を備える。ローカル時計管理部31は、通知部12により通知されたコントローラ時刻に基づいて、ローカルコントローラ30内のローカル時計Ceをコントローラ時計Crに同期させる機能モジュールである。
【0025】
図3は、機器制御システム1で用いられるコンピュータ100のハードウェア構成の一例を示す図である。例えば上位コントローラ10およびローカルコントローラ30はこのコンピュータ100を用いて実現される。
【0026】
コンピュータ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の少なくとも一つ)を介して他の装置との間でデータ通信を行う。
【0027】
[システムの動作]
本開示に係る時刻同期方法の一例として、
図4および
図5を参照しながら、機器制御システム1の動作の一例を説明する。
図4は機器制御システム1での時刻同期の一例を処理フローS1として示すシーケンス図である。すなわち、機器制御システム1は処理フローS1を実行する。
図5はコントローラ時刻の補正の一例を処理フローS2として示すフローチャートである。すなわち、機器制御システム1(上位コントローラ10)は処理フローS2を実行する。
【0028】
(時刻同期)
図4を参照しながら機器制御システム1での時刻同期について説明する。
図4は便宜的に一つの上位コントローラ10および一つのローカルコントローラ30のみを示す。
【0029】
ステップS11では時刻サーバ9がグローバル時刻を上位コントローラ10に向けて第1通信ネットワーク(非定周期通信)により送信し、コントローラ時計管理部11がそのグローバル時刻を受信する。
【0030】
ステップS12では、コントローラ時計管理部11がそのグローバル時刻に基づいてコントローラ時計Crをグローバル時計Cgに同期させ、通知部12がその同期されたコントローラ時計Crに基づくコントローラ時刻を少なくとも一つのローカルコントローラ30に向けて通知する。ローカルコントローラ30では、ローカル時計管理部31が、そのコントローラ時刻に加えて、定周期通信による遅延時間(いわゆる伝送遅延時間)に基づいて、ローカル時計Ceをコントローラ時計Crに同期させる。
【0031】
一例では、ステップS12では、コントローラ時計管理部11は所与の内部周期を有する内部信号に基づいてコントローラ時計Crを進める(すなわち、コントローラ時刻を更新する)。そして、通知部12は定周期通信のそれぞれの通信周期において、最新のコントローラ時刻を少なくとも一つのローカルコントローラ30に向けて通知する。通信周期はグローバル時刻を受信する周期よりも短く、例えば、グローバル時刻の受信周期が数十ミリ秒以上であるのに対して、通信周期は数100マイクロ秒~数ミリ秒である。通信周期は内部周期より長くても、短くても、同じでもよい。通信周期は内部周期のN倍または1/N倍(Nは2以上の整数)と同期してもよいし、内部周期と非同期でもよい。ローカル時計管理部31はそれぞれの通信周期においてローカル時計Ceをコントローラ時計Crに同期させる。
【0032】
ステップS11,S12の処理は、グローバル時刻が時刻サーバ9から上位コントローラ10に伝送する度に繰り返される。
図4ではその繰り返しの少なくとも一部をステップS13,S14により示す。
【0033】
(コントローラ時刻の補正)
図5を参照しながら、コントローラ時刻の補正の一例を説明する。この例では、グローバル時計Cgとコントローラ時計Crとの時間差に対応する時間変更量が所与の閾値より超えた場合に、コントローラ時刻を補正して、最終的にコントローラ時計Crをグローバル時計Cgに同期させる一連の手順を示す。一例では、処理フローS2は定周期通信の所与の通信周期ごとに繰り返される。
図5において、「補正フラグ=OFF」という表現は、補正フラグがクリアされること、またはクリアされた状態にあることを意味する。「補正フラグ=ON」という表現は、補正フラグが設定されること、または設定された状態にあることを意味する。
【0034】
コントローラ時計管理部11がグローバル時刻を取得し、補正フラグが当初はクリアされていることを前提として以下の説明をする(ステップS201,S202においてYES)。この場合、処理はステップS203に進む。
【0035】
ステップS203では、コントローラ時計管理部11がグローバル時計Cgとコントローラ時計Crとの時間差を算出し、その時間差に対応する時間変更量を設定する。コントローラ時計管理部11は時間差をそのまま時間変更量として設定してもよい。あるいは、コントローラ時計管理部11はその時間差と、第1通信ネットワークNaでの伝送遅延および上位コントローラ10の内部遅延の少なくとも一方とに基づいて時間変更量を設定してもよい。
【0036】
ステップS204では、コントローラ時計管理部11が、その時間変更量が所与の補正上限値以下であるか否かを判定する。一例では、この補正上限値は定周期通信の1通信周期で許容できる値であり、時間変更量と比較される閾値の一例である。時間変更量が補正上限値を超える場合には(ステップS204においてNO)、処理はステップS205に進む。
【0037】
ステップS205では、コントローラ時計管理部11がその補正上限値に基づいてコントローラ時計Crを補正する。コントローラ時計管理部11はコントローラ時刻に補正上限値を加算してコントローラ時刻を変更する(補正上限値が負の値であれば、コントローラ時計Crの針はその値の分だけ戻される)。
【0038】
ステップS206では、コントローラ時計管理部11が時間変更量を更新する。コントローラ時計管理部11は現在の時間変更量から補正上限値を減ずることで、未補正の時間変更量を算出する。この算出された時間変更量が次の通信周期での処理フローS2で用いられる。
【0039】
ステップS207では、フラグ管理部13が補正フラグを設定する。この設定により、コントローラ時計管理部11はコントローラ時計Crが補正中であることを認識できる。
【0040】
ステップS208では、通知部12が補正されたコントローラ時刻を少なくとも一つのローカルコントローラ30に向けて通知する。ローカルコントローラ30では、ローカル時計管理部31がそのコントローラ時刻に基づいてローカル時計Ceをコントローラ時計Crに同期させる。
【0041】
次の通信周期の処理フローS2では、新たなグローバル時刻は取得されず(処理はステップS201においてNO)、処理はステップS209に進む。補正フラグが設定されているので(ステップS209にYES)、処理はステップS204に進む。
【0042】
ステップS204では、コントローラ時計管理部11が、ステップS206において更新された時間変更量が補正上限値以下であるか否かを判定する。その時間変更量が補正上限値を超える場合には(ステップS204においてNO)、処理はステップS205に進み、ステップS205~S208の処理が実行される。一方、時間変更量が補正上限値以下である場合には(ステップS204においてYES)、処理はステップS210に進む。
【0043】
ステップS210では、コントローラ時計Crがコントローラ時計Crをグローバル時計Cgに同期させる。この処理は、残っている時間変更量に基づいてコントローラ時計Crを補正する処理であるともいえる。この結果、コントローラ時刻がグローバル時刻に合う。
【0044】
ステップS211では、フラグ管理部13が補正フラグをクリアする。この設定により、コントローラ時計管理部11はコントローラ時計Crが補正中の状態ではないことを認識できる。
【0045】
ステップS211では、通知部12が補正されたコントローラ時刻を少なくとも一つのローカルコントローラ30に向けて通知する。この通知に基づいて、ローカル時計管理部31がローカル時計Ceをコントローラ時計Crに同期させる。
【0046】
処理フローS2で示すように、コントローラ時計管理部11は、時間変更量が所与の閾値を超えた場合に、その時間変更量を一回の処理で解消してコントローラ時計Crをグローバル時計Cgに同期させるのではなく、その時間変更量を複数の通信周期にわたって分散させて得られる補正量によりコントローラ時計Crを補正する。その補正量は、例えば、ステップS205において用いられる補正上限値であり、ステップS210において残っている時間変更量である。すなわち、コントローラ時計管理部11は、複数の通信周期のそれぞれにおいて、所与の補正上限値の範囲内で補正量を設定する。コントローラ時計管理部11は補正量が補正上限値以下になるまでコントローラ時計Crの補正を繰り返し、補正量が補正上限値以下になった場合に、コントローラ時計Crをグローバル時計Cgに同期させる。
【0047】
コントローラ時計管理部11は、補正フラグが設定された場合(補正フラグがONの場合)には、グローバル時刻を用いることなく(すなわち、グローバル時計Cgを参照することなく)、時間変更量に基づいてコントローラ時計Crを補正する。
【0048】
処理フローS2において、コントローラ時計管理部11は、上位コントローラ10内の内部遅延に更に基づいてコントローラ時計Crをグローバル時計Cgに同期させてもよい。
【0049】
[上位コントローラの変形例]
コントローラはコントローラ時計に加えて少なくとも一つの別の内部時計を備え、少なくとも二つの内部時計を用いてコントローラ時計をグローバル時計に同期させてもよい。
図6はその変形例として上位コントローラ10Aを示す。上位コントローラ10Aはコントローラ時計Crに加えてマスタ時計Cmを有する。上位コントローラ10Aは機能モジュールとしてコントローラ時計管理部11Aおよび通知部12を備える。
【0050】
コントローラ時計管理部11Aは第1時計管理部14、第2時計管理部15、およびフラグ管理部13Aを備える。第1時計管理部14は、マスタ時計Cmをグローバル時計Cgに同期させて、該マスタ時計Cmに基づくマスタ時刻を設定する機能モジュールである。第2時計管理部15は、コントローラ時計Crをマスタ時計Cmに同期させて、該コントローラ時計Crに基づくコントローラ時刻を設定する機能モジュールである。フラグ管理部13Aは、マスタ時計Cmおよびコントローラ時計Crの少なくとも一方の補正において用いられるフラグを設定する機能モジュールであり、フラグ管理部13と同様の機能を有する。
【0051】
図7は上位コントローラ10A内での時刻同期の一例を処理フローS3として示すシーケンス図である。すなわち、上位コントローラ10Aは処理フローS3を実行する。
【0052】
ステップS31では第1時計管理部14がグローバル時刻に基づいてマスタ時計Cmの開始時刻Tsを設定し、その開始時刻Tsを第2時計管理部15に出力する。ステップS32では、第2時計管理部15が開始時刻Tsを取得し、さらに第2時計管理部15に関連する内部遅延Diを取得する。
【0053】
ステップS33では、第1時計管理部14がマスタクロック信号のマスタクロック周期Tmを設定し、そのマスタクロック周期Tmを第2時計管理部15に出力する。ステップS34では、第2時計管理部15がマスタクロック周期Tmを取得する。第2時計管理部15はそのマスタクロック周期Tmに基づいて、コントローラ時刻に対応する内部信号の内部周期を設定してもよい。一例では、第2時計管理部15はマスタクロック周期Tmよりも短い内部周期を設定し、例えば、マスタクロック周期Tmの1/N(Nは2以上の整数)である内部周期を設定する。
【0054】
その後、第1時計管理部14および第2時計管理部15が連携してマスタ時計Cmおよびコントローラ時計Crに対する時刻同期を実行する。以下では、第1時計管理部14および第2時計管理部15での処理をそれぞれステップS35,S36として説明する。
【0055】
ステップS35では、第1時計管理部14が時刻同期を開始し、マスタクロック周期Tmを有するマスタクロック信号を第2時計管理部15に向けて通知する。
【0056】
ステップS36では、第2時計管理部15がそのマスタクロック信号に基づいてコントローラ時計Crをマスタ時計Cmに同期させる。この同期において、第2時計管理部15は開始時刻Tsと内部遅延Diとの和をコントローラ時刻の初期値として設定する。その後、第2時計管理部15は個々のマスタクロック周期Tmにおいて、コントローラ時刻の前回値に該マスタクロック周期Tmを加算してコントローラ時刻を更新する。第2時計管理部15はこの更新に加えて、内部周期に基づいてコントローラ時刻を更新してもよい。
【0057】
一例では、コントローラ時計管理部11AはステップS35,S36の少なくとも一方において処理フローS2を実行する。したがって、マスタ時計Cmを導入して2段階でコントローラ時計Crをグローバル時計Cgに同期させる仕組みにおいて時間変更量が相対的に大きくなる場合でも、ローカル機器3の制御への影響を最小限に抑えることができる。このことは、コントローラが3以上の内部時計を有する場合でも同様である。
【0058】
[プログラム]
上位コントローラ10,10Aの各機能モジュールは、プロセッサ111またはメモリ112の上に時刻同期プログラムを読み込ませてプロセッサ111にそのプログラムを実行させることで実現される。時刻同期プログラムは、上位コントローラ10,10Aの各機能モジュールを実現するためのコードを含む。プロセッサ111は時刻同期プログラムに従って入出力ポート115または通信ポート116を動作させ、メモリ112またはストレージ113におけるデータの読み出しおよび書き込みを実行する。このような処理により機器制御システム1の各機能モジュールが実現される。
【0059】
時刻同期プログラムは、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、時刻同期プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0060】
[効果]
以上説明したように、本開示の一側面に係るコントローラは、コントローラ内のコントローラ時計を外部のグローバル時計に同期させるコントローラ時計管理部と、同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知する通知部とを備える。
【0061】
本開示の一側面に係る時刻同期方法は、コントローラ内のコントローラ時計を外部のグローバル時計に同期させるステップと、同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知するステップとを含む。
【0062】
本開示の一側面に係る時刻同期プログラムは、コントローラ内のコントローラ時計を外部のグローバル時計に同期させるステップと、同期されたコントローラ時計に基づくコントローラ時刻を、定周期通信により少なくとも一つのローカル機器に向けて通知するステップとをコンピュータに実行させる。
【0063】
このような側面においては、グローバル時計に同期したコントローラ時計に基づくコントローラ時刻がローカル機器に通知されるので、システム内の時刻を統一的に管理できる。例えば、少なくとも一つのローカル機器を一意の時刻に基づいて制御できる。
【0064】
他の側面に係るコントローラでは、コントローラ時計管理部は、グローバル時計とコントローラ時計との時間差に対応する時間変更量に基づいてコントローラ時刻を調整してもよい。この時間変更量に応じてコントローラ時刻を調整することで時間差が解消されるので、その時間差に起因するローカル機器の制御への影響を最小限に抑えることができる。
【0065】
他の側面に係るコントローラでは、コントローラ時計管理部は、コントローラ時刻の調整の少なくとも一部として、時間変更量に基づいてコントローラ時計を補正し、通知部は、補正されたコントローラ時計に基づくコントローラ時刻を、少なくとも一つのローカル機器に向けて通知してもよい。コントローラとローカル機器の間で時計を同期させつつコントローラ時計の時刻が調整されるので、コントローラによるローカル機器の制御への影響も最小限に抑えることができる。
【0066】
他の側面に係るコントローラでは、コントローラ時計管理部は、時間変更量が所与の閾値を超えた場合に、時間変更量を定周期通信の複数の通信周期にわたって分散させて得られる補正量により、コントローラ時計を補正してもよい。相対的に大きい時間変更量が複数の通信周期にわたって徐々に解消されるので、ローカル機器の制御に影響を与えるコントローラ時刻の大きな変化を回避しつつ時刻を調整できる。この結果、時刻同期の正確性を一定以上の水準に維持できる。
【0067】
他の側面に係るコントローラでは、コントローラ時計管理部は、複数の通信周期のそれぞれにおいて、所与の補正上限値の範囲内で補正量を設定してもよい。補正の上限値を設定することで補正量の変動が抑えられるので、コントローラ時刻の変化の度合いを均しつつ補正を円滑に進めることができる。
【0068】
他の側面に係るコントローラでは、コントローラ時計管理部は、補正量が補正上限値以下になるまで、コントローラ時計の補正を繰り返し、補正量が補正上限値以下になった場合に、コントローラ時計をグローバル時計に同期させてもよい。補正を繰り返した上で最終的にコントローラ時計をグローバル時計に同期させることで、コントローラ時刻の大きな変化を回避しつつ時刻を調整できる。
【0069】
他の側面に係るコントローラでは、時間変更量が閾値を超えた場合に、コントローラ時計が補正中であることを示すフラグを設定するフラグ管理部を更に備え、コントローラ時計管理部は、フラグが設定された場合に、グローバル時計を参照することなく、時間変更量に基づいてコントローラ時計を補正してもよい。時間差を補正している際はグローバル時計を用いないことで、コントローラ時刻の大きな変化を回避しつつ時刻を調整できる。
【0070】
他の側面に係るコントローラでは、フラグ管理部は、コントローラ時計がグローバル時計に同期した場合に、フラグをクリアしてもよい。このようにフラグを設定することで、コントローラ時計の補正および同期という一連の処理が終わった後に、グローバル時計が新たに参照されるので、時刻同期を安定させることができる。
【0071】
他の側面に係るコントローラでは、通知部は、定周期通信のそれぞれの通信周期において、コントローラ時刻を少なくとも一つのローカル機器に向けて通知してもよい。それぞれの通信周期においてそのコントローラ時刻を通知することで、同期されたコントローラ時刻を適切なタイミングでローカル機器に通知できる。
【0072】
他の側面に係るコントローラでは、コントローラ時計管理部は、グローバル時計に基づくグローバル時刻を時刻サーバから非定周期通信により受信し、該グローバル時刻に基づいてコントローラ時計をグローバル時計に同期させてもよい。この場合には、非定周期通信を介して得られたグローバル時刻を用いて、システム内の時刻を統一的に管理できる。
【0073】
他の側面に係るコントローラでは、コントローラ時計管理部は、コントローラ内のマスタ時計をグローバル時計に同期させて、該マスタ時計に基づくマスタ時刻を設定する第1時計管理部と、コントローラ時計をマスタ時計に同期させて、コントローラ時刻を設定する第2時計管理部とを備えてもよい。マスタ時計を導入して2段階で時計を同期させることで、時刻同期に関連する揺らぎの影響を抑えてロバストな時刻同期を実現できる。
【0074】
他の側面に係るコントローラでは、第1時計管理部は、マスタ時刻に対応し、マスタクロック周期を有するマスタクロック信号を生成してもよい。第2時計管理部は、コントローラ時刻に対応し、所与の内部周期を有する内部信号を、マスタクロック周期に基づいて生成し、マスタ時計に基づく開始時刻と、マスタクロック周期および内部周期のうちの少なくとも一つとに基づいて、コントローラ時計をマスタ時計に同期させてもよい。マスタクロック信号の周期に基づいて内部信号を生成し、双方の信号の周期の少なくとも一つを用いて同期を実行することで、正確な時刻同期を実現できる。
【0075】
他の側面に係るコントローラでは、第2時計管理部は、マスタクロック周期よりも短い内部周期で内部信号を生成してもよい。この内部信号を用いることで、コントローラ内の時刻をより短い間隔でマスタ時刻に同期させることができ、したがって、クロック信号の揺らぎの影響をより確実に抑えてロバストな時刻同期を実行できる。
【0076】
他の側面に係るコントローラでは、コントローラ時計管理部は、コントローラ内の内部遅延に更に基づいてコントローラ時計をグローバル時計に同期させてもよい。コントローラ内の内部遅延が考慮されるので、コントローラ時計をより正確にグローバル時計に同期させることができる。
【0077】
本開示の一側面に係る機器制御システムは、上記のコントローラと、少なくとも一つのローカル機器とを備える。少なくとも一つのローカル機器のそれぞれは、通知部により通知されたコントローラ時刻に基づいて、該ローカル機器内のローカル時計をコントローラ時計に同期させるローカル時計管理部を備える。
【0078】
このような側面においては、グローバル時計に同期したコントローラ時計に基づくコントローラ時刻がローカル機器に通知され、ローカル機器がそのコントローラ時刻に基づいてローカル時計をコントローラ時計に同期させる。したがって、システム内の時刻を統一的に管理できる。例えば、少なくとも一つのローカル機器を一意の時刻に基づいて制御できる。
【0079】
他の側面に係る機器制御システムでは、ローカル時計管理部は、通知されたコントローラ時刻に加えて、定周期通信による遅延時間に基づいて、ローカル時計をコントローラ時計に同期させてもよい。その遅延時間が考慮されることでローカル時計の同期をより正確に実行できる。
【0080】
他の側面に係る機器制御システムでは、少なくとも一つのローカル機器の少なくとも一つはロボットコントローラであってもよい。この場合には、ロボットコントローラを有する機器制御システムにおいて時刻を統一的に管理できる。
【0081】
[変形例]
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0082】
上記実施形態では上位コントローラ10はコントローラ時計Crとグローバル時計Cgとの時間差を段階的に縮める。別の例として、コントローラは、その時間差を一回の処理で解消し、少なくとも一つのローカル機器に通知する時刻(この時刻は一時的に、コントローラ時計Crが示す時刻からずれる結果となる)について補正を実行してもよい。すなわち、コントローラは、時間差の大きさに関係なくコントローラ時計をグローバル時計に同期させ、それぞれのローカル機器に通知する時刻について、時間差を段階的に縮めてもよい。
【0083】
システムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上記実施形態における機能モジュールの少なくとも一部が、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0084】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップ(処理)の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0085】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。このような基準の選択は、二つの数値の大小関係を比較する処理についての技術的意義を変更するものではない。
【符号の説明】
【0086】
1…機器制御システム、3…ローカル機器、9…時刻サーバ、10,10A…上位コントローラ、11,11A…コントローラ時計管理部、12…通知部、13,13A…フラグ管理部、14…第1時計管理部、15…第2時計管理部、20…機器本体、30…ローカルコントローラ、31…ローカル時計管理部、Na…第1通信ネットワーク、Nb…第2通信ネットワーク。