以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
本実施形態に係るシステムは、互いに通信しながら、それぞれが繰り返し処理を行う複数のデバイスを備える。デバイス間の通信には、各デバイスの処理サイクルに対する同期性が求められる場合がある。以下、各デバイスの処理サイクルに同期した通信を「同期通信」という。
同期通信の信頼性を向上させるために、本実施形態に係るシステムは、第1処理を繰り返す第1デバイスと、第1デバイスと通信し、第2処理を繰り返す第2デバイスと、を備え、第1デバイスは、第1処理により第1情報を生成する第1処理モジュールと、第1情報に第1サイクル情報を付加する第1付加部と、第1情報を第2デバイスに送信する第1通信部と、を有し、第2デバイスは、第1デバイスから第1情報を受信する第2通信部と、第2通信部が受信した第1情報を記憶し、当該第1情報に付加された第1サイクル情報に対応するサイクルの第2処理において当該第1情報を呼び出すタイミング調整部と、タイミング調整部により呼び出された第1情報に基づいて第2処理を実行する第2処理モジュールと、を有する。
第2デバイスにおける第1受信タイミングのゆらぎが大きくなると、同期通信の維持が困難になる可能性がある。これに対し、上記システムによれば、第1デバイスから送信された第1情報が第2デバイスでバッファリングされ、第1サイクル情報に対応するサイクルの第2処理において呼び出される。このように、第1情報をその使用タイミングまでバッファリングする機能によって、第1デバイス側からの第1情報の送信を前倒し、第2デバイスにおける第1情報の受信タイミングから当該第1情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、通信状況等に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした第1情報を適切な使用タイミングで呼び出すことができる。このため、同期通信の信頼性を向上させることができる。
第2処理モジュールは、第2処理により第2情報を生成し、第2デバイスは、第2情報に第2サイクル情報を付加する第2付加部を更に有し、第2通信部は、第2情報を第1デバイスに送信し、第1通信部は、第2情報を第2デバイスから受信し、第1デバイスは、第1通信部が受信した第2情報を記憶し、当該第2情報に付加された第2サイクル情報に対応するサイクルの第1処理において当該第2情報を呼び出す第1タイミング調整部を更に有し、第1処理モジュールは、第1タイミング調整部により呼び出された第2情報に基づいて第1処理を実行してもよい。この場合、第1デバイスと第2デバイスとの間における双方向の同期通信の信頼性を向上させることができる。
第1デバイス及び第2デバイスは、現実空間上に実装されたデバイスであってもよく、仮想空間上に実装されたデバイスであってもよい。現実空間とは、現実の物体が存在する空間である。仮想空間は、現実空間を模擬するようにデータによって表された空間である。デバイスを仮想空間上に実装するとは、仮想空間を構成する装置に対し、デバイスの機能を仮想空間において模擬するプログラムを付加することを意味する。
第1デバイス及び第2デバイスの具体例としては、現実空間上に実装されたコントローラ、マシン、センサ、モータ、及びサーボドライバ等が挙げられる。第1デバイス及び第2デバイスは、仮想空間上に実装されたコントローラ、マシン、センサ、モータ、及びサーボドライバ等であってもよい。
第1デバイスと第2デバイスとの間の通信は、少なくとも一部に無線通信を含んでいてもよい。第1デバイスと第2デバイスとの間の通信が無線通信を含む場合、上述した受信タイミングの揺らぎを吸収する効果がより有効である。
以下、本実施形態の一例として、第1デバイスが、仮想空間上に実装されたコントローラであり、第2デバイスが現実空間上に実装されたマシンであり、コントローラとマシンとの間の通信が、一部に無線通信を含むマシン制御システムを具体的に例示する。
〔マシン制御システム〕
図1に示すマシン制御システム1は、少なくとも1台のコントローラサーバ2から無線通信ネットワークを介して送信される演算結果に基づいて、複数のマシン4を制御するシステムである。マシン制御システム1の一例としては、複数のマシン4の協調モーションにより、ワークを生産する生産システムが挙げられる。図1に示すように、マシン制御システム1は、少なくとも1台のコントローラサーバ2と、通信サーバ3と、複数のマシン4とを備える。
コントローラサーバ2は、コントロールサイクルで所定の演算を実行する。コントローラサーバ2は、複数のコントローラ100を有する(図3参照)。複数のコントローラ100は、コントローラサーバ2において仮想空間上に実装され、複数のマシン4をそれぞれ制御する。一つのコントローラ100は、少なくとも一台のマシン4に対応する。一つのコントローラ100が複数のマシン4に対応していてもよく、複数のコントローラ100が一台のマシン4に対応していてもよい。仮想空間上に実装するとは、ソフトウェアにより、コントローラ100としての機能をコントローラサーバ2等の演算装置に付加することを意味する。コントローラ100としての機能は、マシン4からの情報の取得と、取得した情報に基づくマシン指令の生成と、生成したマシン指令のマシン4への出力とを含む。複数のコントローラ100は、複数のコントローラサーバ2に分配されていてもよい。これにより、一台のコントローラサーバ2の演算負担が軽減される。
通信サーバ3は、コントローラサーバ2と有線通信ネットワーク8を介して通信し、複数のマシン4と無線通信ネットワーク7を介して通信し、コントローラサーバ2と複数のマシン4との間で情報を中継する。有線通信ネットワーク8の具体例としては、イーサネット(登録商標)等のローカルエリアネットワークが挙げられる。無線通信ネットワーク7の具体例としては、第5世代移動通信システム(5G)等の高速無線通信ネットワークが挙げられる。通信サーバ3は、コントローラサーバ2から離れた場所に設けられていてもよく、コントローラサーバ2に近接した場所に設けられていてもよく、コントローラサーバ2と同じ筐体内に設けられていてもよい。
通信サーバ3は、通信コントローラ200と、無線通信基地局201とを有する。通信コントローラ200は、コントローラサーバ2と有線通信ネットワーク8を介して通信し、複数のマシン4と無線通信基地局201を介して通信する。無線通信基地局201は、複数のマシン4の無線通信端末301(後述)と無線通信ネットワーク7を介して通信する。
複数のマシン4は、現実空間上に構成され、それぞれコントローラサーバ2の演算結果に応じてモーションを実現する。例えば複数のマシン4は、それぞれ上記マシン指令に応じてモーションを実現する。モーションを実現するとは、現実空間において少なくとも一つの物体を変位させることを意味する。変位とは、移動と、姿勢変更とを含む。また、変位は、筐体内等、外部から視認できない空間内における変位を含む。
複数のマシン4のそれぞれは、マシン本体10と、ローカルコントローラ300と、無線通信端末301とを有する。マシン本体10は、モーションを実現する機器である。コントローラサーバ2の演算結果に基づいてモーションを実現する機器である限り、マシン本体10はいかなる機器であってもよい。図1においては、マシン本体10の具体例として、移動ロボット20と、定置ロボット30と、NC工作機械60と、環境センサ70と、コンベヤ80とを示している。移動ロボット20は、自立走行可能なロボットであり、無人搬送車21と、ロボット22とを有する。無人搬送車21は、マシン指令が含む移動指令に応じて自律走行する。無人搬送車21の具体例としては、電動式の所謂AGV(Automated Guided Vehicle)が挙げられる。ロボット22は、マシン指令が含む作業指令に応じてワークに対する作業を実行する。
例えばロボット22は、6軸の垂直多関節ロボットであり、図2に示すように、基部31と、旋回部32と、第1アーム33と、第2アーム34と、第3アーム35と、先端部36と、アクチュエータ41,42,43,44,45,46とを有する。基部31は、無人搬送車21の上に固定されている。旋回部32は、鉛直な軸線51まわりに旋回するように基部31上に設けられている。第1アーム33は、軸線51に交差(例えば直交)する軸線52まわりに揺動するように旋回部32に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第2アーム34は、軸線52に実質的に平行な軸線53まわりに揺動するように第1アーム33の先端部に接続されている。第3アーム35は、第2アーム34に沿った軸線54まわりに旋回し、軸線54に交差(例えば直交)する軸線55まわりに揺動するように、第2アーム34の先端部に接続されている。先端部36は、軸線55に交差(例えば直交)する軸線56まわりに旋回するように第3アーム35の先端部に接続されている。先端部36には、吸着ノズル、ロボットハンド、又は加工ツール等、用途に応じて様々なツールが設けられる。
アクチュエータ41,42,43,44,45,46は、例えば電動モータ及び減速機を含み、ロボット22を駆動する。例えばアクチュエータ41は軸線51まわりに旋回部32を旋回させ、アクチュエータ42は軸線52まわりに第1アーム33を揺動させ、アクチュエータ43は軸線53まわりに第2アーム34を揺動させ、アクチュエータ44は軸線54まわりに第3アーム35を旋回させ、アクチュエータ45は軸線55まわりに第3アーム35を揺動させ、アクチュエータ46は軸線56まわりに先端部36を旋回させる。
なお、ロボット22の具体的な構成は適宜変更可能である。例えばロボット22は、上記6軸の垂直多関節ロボットに更に1軸の関節を追加した7軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。また、ロボット22は所謂パラレルリンク型のロボットであってもよい。
図1に戻り、定置ロボット30は、作業エリアの床面などに定置される。定置ロボット30の具体例としては、ロボット22と同様に、垂直多関節ロボット、スカラー型の多関節ロボット、パラレルリンク型のロボット等が挙げられる。NC工作機械60は、マシン指令が含む加工指令に応じて、切削加工等の機械加工をワークに施す。環境センサ70は、マシン指令が含むセンシング指令に応じて、システムの環境情報を取得する。環境センサ70の具体例としては、システムの環境画像を取得するカメラ、システムの環境温度を取得する温度センサ等が挙げられる。コンベヤ80は、マシン指令が含む搬送指令に応じて、ワークを搬送する。コンベヤ80の具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。
ローカルコントローラ300は、通信サーバ3と無線通信端末301を介して通信し、無線通信端末301を介して通信サーバ3から取得したマシン指令に応じてマシン本体10にモーションを実現させる。また、ローカルコントローラ300は、マシン本体10から取得した応答情報を、無線通信端末301を介して通信サーバ3にフィードバックする。無線通信端末301は、ローカルコントローラ300からの指令に従って、無線通信基地局201と無線通信ネットワーク7を介して通信する。
第5世代移動通信システム(5G)の実用化等により、高速無線通信が可能となったため、無線通信を介したマシン制御の実現可能性も高まっている。マシン制御においては、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシン4の制御とを所定のコントロールサイクルで繰り返す必要がある。上述のようにマシン指令が無線通信ネットワーク7を介して送受信される場合、無線通信に起因して、マシン4側におけるマシン指令の受信タイミングのゆらぎが拡大し、マシン4側においてマシン指令をコントロールサイクルで受信するのが困難になる可能性がある。また、応答情報が無線通信ネットワーク7を介して送受信される場合、無線通信に起因して、コントローラ100側における応答情報の受信タイミングのゆらぎが拡大し、コントローラ100側において応答情報をコントロールサイクルで受信するのが困難になる可能性がある。
これに対し、マシン制御システム1は、コントローラ側(無線通信ネットワーク7のコントローラ100側)から無線通信ネットワーク7を介して送信されたマシン指令を、その使用タイミングまでマシン側(無線通信ネットワーク7のマシン4側)でバッファリングするように構成されていてもよい。この場合、コントローラ側からのマシン指令の送信を前倒し、マシン側におけるマシン指令の受信タイミングから当該マシン指令の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファしたマシン指令をコントロールサイクルに同期したタイミングで使用することができる。
また、マシン制御システム1は、マシン側から無線通信ネットワーク7を介して送信された応答情報を、その使用タイミングまでコントローラ側でバッファリングするように構成されていてもよい。この場合、マシン側からの応答情報の送信を前倒し、コントローラ側における応答情報の受信タイミングから当該応答情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした応答情報をコントロールサイクルに同期したタイミングで使用することができる。
以上のように、マシン指令をその使用タイミングまでマシン側でバッファリングし、応答情報をその使用タイミングまでコントローラ側でバッファリングする構成によれば、応答情報の取得と、応答情報に基づくモーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシン4の制御とをコントロールサイクルで繰り返すことが可能となる。
以下、コントローラ100と、通信コントローラ200と、ローカルコントローラ300との構成をより詳細に例示する。
(コントローラ)
コントローラ100は、対応するマシン4(以下、「管轄マシン4」という。)が送信した応答情報を、有線通信ネットワーク8を介して通信サーバ3から受信することと、受信した応答情報に基づいてモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することと、マシン指令を、有線通信ネットワーク8を介して通信サーバ3に送信することと、を実行するように構成されている。
例えば図4に示すように、コントローラ100は、機能上の構成(以下、「機能ブロック」という。)として、プログラム記憶部111と、受信情報記憶部112と、モーションモジュール113と、同期通信部114と、非同期通信部115とを有する。
プログラム記憶部111は、モーションプログラムを記憶する。モーションプログラムは、時系列の複数のモーション指令を含む。モーション指令は、例えば目標位置・姿勢への変位命令である。動作命令は、目標位置・姿勢への到達時刻の指定を含んでいてもよいし、目標位置・姿勢への変位速度の指定を含んでいてもよい。モーション指令は、目標速度での変位命令であってもよい。この場合、モーション指令は、目標速度での変位期間の指定を含んでもよい。
受信情報記憶部112は、通信サーバ3の通信コントローラ200からの受信情報を記憶する。受信情報は、上記応答情報を含む。
モーションモジュール113は、コントロールサイクルでモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成する。例えばモーションモジュール113は、モーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することをコントロールサイクルで繰り返し実行する。モーションプログラムを実行することは、管轄マシン4のモーションをモーション指令に追従させるようにマシン指令を算出することを含む。モーションモジュール113は、受信情報記憶部112が記憶する応答情報に基づいてモーションプログラムを実行してもよい。例えばモーションモジュール113は、受信情報記憶部112が記憶する応答情報に基づく管轄マシン4のモーション実績を算出し、モーション実績をモーション指令に追従させるようにマシン指令を算出する。マシン指令の具体例としては、速度指令又は駆動力指令(トルク指令を含む。)等が挙げられる。
同期通信部114は、有線通信ネットワーク8を介して、マシン指令を通信コントローラ200に送信する。「同期通信」は、コントロールサイクルに同期した定周期通信を意味する。同期通信は、コントロールサイクルごとに実行する通信、及び所定数のコントロールサイクルごとに実行する通信を含む。後述するように、同期通信部114が送信したマシン指令は管轄マシン4のローカルコントローラ300(以下、「管轄ローカルコントローラ300」という。)においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、同期通信部114によるマシン指令の送信自体は、コントロールサイクルに同期していなくてもよい。
非同期通信部115は、他のノードに対する非同期通信データを、通信コントローラ200を経由せずに有線通信ネットワーク8を介して他のノードに送信する。「非同期通信」は、コントロールサイクルとの同期が必須ではない通信を意味するが、コントロールサイクルに同期していてもよい。他のノードは、他のコントローラ100であってもよいし、複数のコントローラ100とは別のノードであってもよい。別のノードの具体例としては、アプリサーバ6が挙げられる(図1参照)。アプリサーバ6は、有線通信ネットワーク8を介してコントローラサーバ2に接続されたコンピュータである。アプリサーバ6は、コントローラサーバ2に組み込まれていてもよいし、通信サーバ3に組み込まれていてもよい。
アプリサーバ6は、マシン指令、応答情報等の制御情報を複数のコントローラ100から収集し、蓄積するデータ収集アプリケーションを有する。アプリサーバ6は、データ収集アプリケーションが蓄積した制御情報に基づいて、複数のマシン4のモーションを仮想空間上でシミュレーションするシミュレータアプリケーションを更に有してもよい。アプリサーバ6は、データ収集アプリケーションが蓄積した制御情報に基づく機械学習により、学習済みモデルを生成する学習アプリケーションを更に有してもよい。学習済みモデルの具体例としては、制御情報の入力に応じてマシン4の正常度を出力する診断モデル等が挙げられる。アプリサーバ6は、制御情報と学習済みモデルとに基づいて、上記正常度等の出力情報を生成し、出力情報をコントローラ100に送信する分析アプリケーションを更に有してもよい。非同期通信部115は、シミュレータアプリケーション、学習アプリケーション、分析アプリケーション等の実行結果を、通信コントローラ200を経由せずに有線通信ネットワーク8を介してアプリサーバ6から取得してもよい。
コントローラ100は、応答情報を、その使用タイミングまでバッファリングするように構成されていてもよい。例えばコントローラ100は、コントローラ側タイミング調整部116を更に有する。コントローラ側タイミング調整部116は、管轄マシン4から受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出す。第2サイクル情報は、応答情報の使用タイミング(例えば、当該応答情報を使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。)を示す情報である。第2サイクル情報は、使用時サイクル数自体であってもよいし、応答情報が取得されたタイミングにおける管轄ローカルコントローラ300のコントロールサイクル数(以下、「取得時サイクル数」という。)であってもよい。
第2サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部116は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出すことは、当該コントロールサイクルにおいて使用可能なタイミングで当該応答情報を呼び出すことを意味する。このため、当該コントロールサイクルにおいて使用されるように、当該コントロールサイクルに先立って当該応答情報を呼び出すことも、当該コントロールサイクルにおいて当該応答情報を呼び出すことに含まれる。第2サイクル情報が上記取得時サイクル数である場合、コントローラ側タイミング調整部116は、第2サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。
コントローラ側タイミング調整部116は、呼び出した応答情報を同期通信部114に出力し、同期通信部114は当該応答情報を受信情報記憶部112に格納する。これにより、コントローラ100のモーションモジュール113は、コントローラ側タイミング調整部116が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
コントローラ100は、上記コントロールサイクルを生成することと、当該コントロールサイクルのサイクルタイミングを管轄マシン4に送信することとを更に実行するように構成されていてもよい。後述するように、サイクルタイミングは、コントロールサイクルに同期したコントロールサイクルを管轄マシン4において生成するのに用いられる。例えばコントローラ100は、コントローラ側時刻生成部121と、コントローラ側サイクル生成部122と、タイミング送信部123と、サイクルカウンタ124とを更に有してもよい。
コントローラ側時刻生成部121は、時刻サーバ5が生成した時刻(以下、「グローバル時刻」という。)に同期して、コントローラ側時刻を生成する。時刻サーバ5は、有線通信ネットワーク8を介してコントローラサーバ2に接続されたコンピュータであり、グローバル時刻を出力する。時刻サーバ5は、コントローラサーバ2に組み込まれていてもよいし、通信サーバ3に組み込まれていてもよい。例えばコントローラ側時刻生成部121は、有線通信ネットワーク8を介したTSN(Time Sensitive Networking)通信等、時刻同期性を保証する通信によって同期通信部114が時刻サーバ5から受信したグローバル時刻を取得し、取得したグローバル時刻に同期してコントローラ側時刻を生成する。例えばコントローラ側時刻生成部121は、タイマ195(後述)がカウントする時刻を、グローバル時刻に合わせる。
コントローラ側サイクル生成部122は、コントローラ側時刻に基づいて、コントロールサイクルを生成する。例えばコントローラ側サイクル生成部122は、コントローラ時刻に基づいて、コントロールサイクルの開始タイミングをセットし、コントローラ側時刻が当該開始タイミングに達した時点から、コントロールサイクルでサイクルパルスを繰り返し生成する。
タイミング送信部123は、コントロールサイクルのサイクルタイミングを、通信コントローラ200を介して管轄ローカルコントローラ300に送信する。サイクルタイミングは、コントロール側時刻におけるコントロールサイクルの位相を示す情報である。例えばサイクルタイミングは、コントローラ側サイクル生成部122によるサイクルパルスの生成タイミングである。タイミング送信部123は、コントローラ側サイクル生成部122がコントロールサイクルの生成を開始するのに先立って、上記開始タイミングをサイクルタイミングとして管轄ローカルコントローラ300に送信してもよいし、コントローラ側サイクル生成部122がコントロールサイクルの生成を開始した後に、2番目以降のサイクルパルスの生成タイミングをサイクルタイミングとして管轄ローカルコントローラ300に送信してもよい。タイミング送信部123は、サイクルタイミングをマスタタイミングとして他のコントローラ100に送信してもよい。この場合、他のコントローラ100のコントローラ側サイクル生成部122は、有線通信ネットワーク8を介してマスタタイミングを取得し、取得したマスタタイミングと、コントローラ側時刻とに基づいてコントロールサイクルを生成してもよい。例えばコントローラ側サイクル生成部122は、取得したマスタタイミングに基づき上記開始タイミングをセットしてもよい。
タイミング送信部123は、管轄ローカルコントローラ300のマシン側タイミング調整部315(後述)がコントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを管轄ローカルコントローラ300に再度送信してもよい。例えばタイミング送信部123は、管轄ローカルコントローラ300からのセット完了通知の受信を待機し、セット完了通知を受信しないままコントローラ側時刻がサイクルタイミングに達した場合に、マシン側タイミング調整部315がコントロールサイクルの生成に失敗したと判定する。セット完了通知は、管轄ローカルコントローラ300における開始タイミングのセットが完了したことの通知である。
サイクルカウンタ124は、コントローラ側サイクル生成部122が生成したコントロールサイクル数(例えば上記サイクルパルスの数)をカウントする。モーションモジュール113は、サイクルカウンタ124によりカウントされたコントロールサイクル数に基づいてモーションプログラムを実行する。例えばモーションモジュール113は、コントロールサイクル数がカウントアップされる度に、実行対象を現在実行中のモーション指令から次のモーション指令に変更する。
コントローラ100は、コントロールサイクルに同期した通信サイクルを生成するように構成されていてもよい。例えばコントローラ100は、通信サイクル生成部131と、サイクルカウンタ132とを更に有してもよい。
通信サイクル生成部131は、コントロールサイクルに同期した通信サイクルを生成する。例えば通信サイクル生成部131は、コントローラ側時刻と、コントロールサイクルのサイクルタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部131は、サイクルタイミングに基づいて、コントロールサイクルの開始タイミングに同期した開始タイミングをセットし、コントローラ側時刻が当該開始タイミングに達した時点から、通信サイクルでサイクルパルスを繰り返し生成する。なお、コントロールサイクルの開始タイミングに同期した開始タイミングは、コントロールサイクルの開始タイミングに対して所定期間(例えばコントロールサイクルのサイクル長の半分)ずれた開始タイミングを含む。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数倍(1倍を含む)である。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数分の1であってもよい。
サイクルカウンタ132は、通信サイクル生成部131が生成した通信サイクル数(例えば上記サイクルパルスの数)をカウントする。通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでコントローラ側タイミング調整部116は、コントロールサイクル数が使用時サイクル数となるコントロールサイクルにおいて応答情報を呼び出すことを、通信サイクル数に基づいて行ってもよい。
コントローラ100は、マシン指令に対し、その使用タイミングを示す情報を付加するように構成されていてもよい。例えばコントローラ100は、付加部125を更に有してもよい。付加部125は、マシン指令に第1サイクル情報を付加する。第1サイクル情報は、管轄マシン4において、いずれのマシン側コントロールサイクルでマシン指令を呼び出すかを指定する情報である。第1サイクル情報が付加されたマシン指令を受信した管轄ローカルコントローラ300は、第1サイクル情報に基づいて上記使用タイミング(例えば、当該マシン指令を使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。)を検知し、当該使用タイミングまで当該マシン指令をバッファリングする。例えば付加部125は、現在のコントロールサイクル数に基づいて使用時サイクル数を算出し、使用時サイクル数自体を第1サイクル情報としてマシン指令に付加する。一例として、付加部125は現在のサイクル数に所定数を加算して使用時サイクル数を算出する。付加部125は、現在のコントロールサイクル数を第1サイクル情報としてマシン指令に付加してもよい。この場合、管轄マシン4が第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出する。
コントローラ100は、マシン指令に含まれる第1サイクル情報に基づいて当該マシン指令の送信遅れを検出するように構成されていてもよい。また、コントローラ100は、応答情報に含まれる第2サイクル情報に基づいて当該応答情報の受信遅れを検出するように構成されていてもよい。例えばコントローラ100は、サイクルチェック部133を更に有してもよい。
サイクルチェック部133は、マシン指令に含まれる第1サイクル情報に基づいて、当該マシン指令の送信遅れを検出する。マシン指令の送信遅れは、ローカルコントローラ300によるマシン指令の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、同期通信部114がマシン指令を送信する際に、現在のコントロールサイクル数が、当該マシン指令の上記使用時サイクル数以上となっている場合にマシン指令の送信遅れを検出する。
サイクルチェック部133は、応答情報に含まれる第2サイクル情報に基づいて、当該応答情報の受信遅れを検出してもよい。応答情報の受信遅れは、コントローラ側タイミング調整部116による応答情報の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、管轄マシン4から応答情報を受信した後に、現在のコントロールサイクル数が、当該応答情報の上記使用時サイクル数以上となっている場合に応答情報の受信遅れを検出する。
上述したように、通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでサイクルチェック部133は、マシン指令の送信遅れを第1サイクル情報と通信サイクル数とに基づいて検出し、応答情報の受信遅れを第2サイクル情報と通信サイクル数とに基づいて検出してもよい。
サイクルチェック部133は、マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルしてもよい。例えばコントローラ側タイミング調整部116は、マシン指令の送信遅れを検出した場合に、通信コントローラ200への当該マシン指令の送信に先立って、当該マシン指令を破棄する。サイクルチェック部133は、応答情報の受信遅れを検出した場合に、当該応答情報を破棄してもよい。
同期通信部114は、有線通信ネットワーク8を介して、複数のコントローラ100における他のコントローラ100のコントローラ側タイミング調整部116に同期通信データを送信してもよい。同期通信データの具体例としては、管轄マシン4のモーションと、他のコントローラ100が対応するマシン4(以下、「他のマシン4」という。)のモーションとを協調させるために用いられる管轄マシン4のステータス情報(例えば管轄マシン4へのマシン指令又は管轄マシン4からの応答情報)が挙げられる。
同期通信部114が、他のコントローラ100のコントローラ側タイミング調整部116に同期通信データを送信する場合、付加部125は、同期通信データに第1サイクル情報を付加してもよい。
第1サイクル情報が付加された同期通信データを受信した他のコントローラ100のコントローラ側タイミング調整部116は、第1サイクル情報に基づいて当該同期通信データの使用タイミング(例えば、当該同期通信データを使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。)を検知し、当該使用タイミングまで当該同期通信データをバッファリングする。例えば付加部125は、現在のコントロールサイクル数に基づいて使用時サイクル数を算出し、使用時サイクル数自体を第1サイクル情報として同期通信データに付加する。一例として、付加部125は現在のサイクル数に所定数を加算して使用時サイクル数を算出する。付加部125は、現在のコントロールサイクル数(以下、「付加時サイクル数」という。)を第1サイクル情報として同期通信データに付加してもよい。
他のコントローラ100のコントローラ側タイミング調整部116は、同期通信データを記憶し、当該同期通信データに付加された第1サイクル情報に対応するコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部213は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記付加時サイクル数である場合、コントローラ側タイミング調整部213は、第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。
コントローラ側タイミング調整部116は、呼び出した同期通信データを同期通信部114に出力し、同期通信部114は当該同期通信データを受信情報記憶部112に格納する。これにより、他のコントローラ100のモーションモジュール113は、コントローラ側タイミング調整部116が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
このように、同期通信データは、他のコントローラ100のコントローラ側タイミング調整部116においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、同期通信部114による同期通信データの送信自体は、コントロールサイクルに同期していなくてもよい。
同期通信部114が送信するデータが、他のコントローラ100宛ての同期通信データを含む場合、サイクルチェック部133は、同期通信データに含まれる第1サイクル情報に基づいて、当該同期通信データの送信遅れを検出してもよい。同期通信データの送信遅れは、他のコントローラ100のコントローラ側タイミング調整部116による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、同期通信部114が同期通信データを送信する際に、現在の通信サイクル数に対応するコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの送信遅れを検出する。サイクルチェック部133は、同期通信データの送信遅れを検出した場合に、当該同期通信データの送信をキャンセルしてもよい。
他のコントローラ100のサイクルチェック部133が、同期通信データに含まれる第1サイクル情報に基づいて、当該同期通信データの受信遅れを検出してもよい。同期通信データの受信遅れは、コントローラ側タイミング調整部116による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、コントローラ側タイミング調整部116宛ての同期通信データを受信した際に、現在のコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの受信遅れを検出する。サイクルチェック部133は、同期通信データの受信遅れを検出した場合に、当該同期通信データを破棄してもよい。
コントローラ100は、同期通信部114が送信するデータが管轄マシン4宛てであるか他のコントローラ100宛てであるかに基づいて、当該データの送信先を切り替えるように構成されていてもよい。例えばコントローラ100は、スイッチ134を有する。
スイッチ134は、同期通信部114が送信するデータが管轄マシン4宛てであれば、通信サーバ3を介して管轄ローカルコントローラ300へ当該データを送信し、当該データが他のコントローラ100宛てであれば、有線通信ネットワーク8を介して、他のコントローラ100のコントローラ側タイミング調整部116へ当該データを送信する。
(ローカルコントローラ)
ローカルコントローラ300は、通信サーバ3を介してマシン指令を受信することと、マシン指令に基づいて、マシン本体10にモーションを実現させることと、を実行するように構成されている。例えば図5に示すように、ローカルコントローラ300は、機能ブロックとして、端末通信部314と、マシン側タイミング調整部315と、指令記憶部311と、マシン制御部313と、応答情報記憶部312とを有する。
端末通信部314は、無線通信ネットワーク7を介して、通信サーバ3からマシン指令を受信する。指令記憶部311は、端末通信部314が受信したマシン指令を記憶する。マシン制御部313は、指令記憶部311が記憶するマシン指令に基づいて、マシン本体10にモーションを実現させ、マシン本体10が実現したモーションに基づく応答情報を取得して応答情報記憶部312に格納する。
例えばマシン制御部313は、マシン本体10の動作をマシン指令に追従させる。例えばマシン制御部313は、指令記憶部311が記憶するマシン指令と、応答情報記憶部312が記憶する過去の応答情報との偏差を縮小するようにマシン本体10を駆動し、これに応じたマシン本体10の応答情報を取得して応答情報記憶部312に格納することをマシン側コントロールサイクルで繰り返し実行する。例えば、マシン側コントロールサイクルは、上記コントロールサイクルとサイクル長が等しいサイクルである。一例として、マシン指令が速度指令である場合、マシン制御部313は、応答情報記憶部312が記憶する応答情報が示す動作速度を速度指令に追従させるようにマシン本体10を駆動する。マシン指令が駆動力指令である場合、マシン制御部313は、応答情報記憶部312が記憶する応答情報が示す駆動力を駆動力指令に追従させるようにマシン本体10を駆動する。
マシン制御部313は、マシン側コントロールサイクルよりも短いサイクル長のマシンサイクルでマシン本体10を制御してもよい。各マシンサイクルにおいて、マシン制御部313は、マシン指令と、応答情報記憶部312が記憶する過去の応答情報との偏差を縮小するようにマシン本体10を駆動し、これに応じたマシン本体10の応答情報を取得して応答情報記憶部312に格納する。マシンサイクルのサイクル長は、例えばマシン側コントロールサイクルのサイクル長の整数分の1である。
例えばマシン制御部313は、中間コントローラ331と、サーボ332とを有する。中間コントローラ331は、マシン指令と、応答情報記憶部312が記憶する過去の応答情報との偏差を縮小するように、マシン本体10の各アクチュエータに対する駆動データ(例えば位置指令、速度指令、又は駆動力指令)をマシンサイクルで生成する。サーボ332は、駆動データに基づいて、マシン本体10の各アクチュエータに駆動電力を出力する。サーボ332は、マシンサイクルよりも短いサイクル長のサーボサイクルで駆動データに基づく駆動電力を出力してもよい。なお、マシン制御部313は、中間コントローラ331とサーボ332との少なくとも一方を有していればよい。マシン制御部313がサーボ332を有しない場合、マシン制御部313は、上記駆動データをマシン本体10に出力し、マシン本体10が、駆動データに基づいて各アクチュエータの駆動電力を生成する。また、マシン制御部313が中間コントローラ331を有しない場合、コントローラ100が上記駆動データをマシン指令として生成し、管轄マシン4に送信する。
例えばマシン本体10が上記移動ロボット20又は定置ロボット30である場合、中間コントローラ331は、先端部36の目標位置・目標姿勢及び目標速度等を含むマシン指令を取得し、逆運動学演算により、アクチュエータ41,42,43,44,45,46の位置指令及び速度指令を含む駆動データを生成してもよい。中間コントローラ331は、アクチュエータ41,42,43,44,45,46の目標位置及び目標速度を含むマシン指令を取得し、中間コントローラはアクチュエータ41,42,43,44,45,46の駆動力指令を含む駆動データを生成してもよい。また、中間コントローラ331は、時系列に並ぶ複数のマシン指令に基づいて駆動データを生成してもよい。
端末通信部314は、マシン側コントロールサイクルごとに、応答情報記憶部312が記憶する応答情報を、無線通信ネットワーク7を介して通信サーバ3に送信する。
ローカルコントローラ300は、マシン指令を、その使用タイミングまでバッファリングするように構成されていてもよい。例えばローカルコントローラ300は、マシン側タイミング調整部315を更に有する。
マシン側タイミング調整部315は、端末通信部314が受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出す。第1サイクル情報が、上記使用時サイクル数である場合、マシン側タイミング調整部315は、コントロールサイクル数が使用時サイクル数となるマシン側コントロールサイクルにおいて当該マシン指令を呼び出す。コントロールサイクル数が当該使用時サイクル数となるマシン側コントロールサイクルにおいて当該マシン指令を呼び出すことは、当該マシン側コントロールサイクルにおいて使用可能なタイミングで当該マシン指令を呼び出すことを意味する。このため、当該マシン側コントロールサイクルにおいて使用されるように、当該マシン側コントロールサイクルに先立って当該マシン指令を呼び出すことも、当該マシン側コントロールサイクルにおいて当該マシン指令を呼び出すことに含まれる。第1サイクル情報が上記付加時サイクル数である場合、マシン側タイミング調整部315は、第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるマシン側コントロールサイクルにおいて当該マシン指令を呼び出す。
マシン側タイミング調整部315は、呼び出したマシン指令を指令記憶部311に格納する。これにより、マシン制御部313によるマシン本体10の制御は、マシン側タイミング調整部315が呼び出したマシン指令に基づいて行われることとなる。
ローカルコントローラ300は、対応するコントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルを生成するように構成されていてもよい。例えばローカルコントローラ300は、マシン側時刻生成部321と、マシン側サイクル生成部322と、サイクルカウンタ323とを更に有してもよい。
マシン側時刻生成部321は、上記グローバル時刻に同期してマシン側時刻を生成する。例えばマシン側時刻生成部321は、無線通信ネットワーク7を介したTSN通信等、時刻同期性を保証する通信によって端末通信部314が通信サーバ3から受信したグローバル時刻を取得し、取得したグローバル時刻に同期してマシン側時刻を生成する。マシン側時刻生成部321は、有線通信ネットワーク8を介して時刻サーバ5又は対応するコントローラ100からグローバル時刻を取得してもよい。例えばマシン側時刻生成部321は、タイマ395(後述)がカウントする時刻を、グローバル時刻に合わせる。
マシン側サイクル生成部322は、無線通信ネットワーク7を介して端末通信部314が通信サーバ3から受信したサイクルタイミングを取得し、取得したサイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルを生成する。例えばマシン側サイクル生成部322は、マシン側時刻と、サイクルタイミングとに基づいてマシン側コントロールサイクルを生成する。例えばマシン側サイクル生成部322は、サイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットし、マシン側時刻が当該開始タイミングに達した時点から、マシン側コントロールサイクルでサイクルパルスを繰り返し生成する。マシン側サイクル生成部322は、開始タイミングのセットが完了した時点で、セット完了通知をコントローラ100に送信してもよい。マシン側サイクル生成部322が生成するマシン側コントロールサイクルのサイクル長は、コントローラ100におけるコントロールサイクルのサイクル長と同じである。
サイクルカウンタ323は、マシン側サイクル生成部322が生成したコントロールサイクル数(例えば上記サイクルパルスの数)をカウントする。
ローカルコントローラ300は、端末通信部314が通信サーバ3に送信する応答情報に対し、その使用タイミングを示す情報を付加するように構成されていてもよい。例えばローカルコントローラ300は、付加部324を更に有してもよい。付加部324は、応答情報に上記第2サイクル情報を付加する。上述したように、端末通信部314が送信した応答情報は対応するコントローラ100のコントローラ側タイミング調整部116においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、端末通信部314による応答情報の送信自体は、コントロールサイクルに同期していなくてもよい。
ローカルコントローラ300は、マシン側コントロールサイクルに同期したマシンサイクルを生成するように構成されていてもよい。例えばローカルコントローラ300は、ローカルサイクル生成部325と、サイクルカウンタ326と、を更に有する。
ローカルサイクル生成部325は、マシン側時刻と、サイクルタイミングとに基づいてマシンサイクルを生成する。例えばローカルサイクル生成部325は、サイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットし、マシン側時刻が当該開始タイミングに達した時点から、マシンサイクルでサイクルパルスを繰り返し生成する。
サイクルカウンタ326は、ローカルサイクル生成部325が生成したマシンサイクル数(例えば上記サイクルパルスの数)をカウントする。
(通信コントローラ)
コントローラ側タイミング調整部116、通信サイクル生成部131、サイクルカウンタ132、サイクルチェック部133及びスイッチ134は、少なくともコントローラ100と通信コントローラ200との間(コントローラ100内及び通信コントローラ200内を含む)に設けられていればよく、必ずしもコントローラ100に設けられていなくてもよい。以下、コントローラ側タイミング調整部、通信サイクル生成部、サイクルカウンタ、サイクルチェック部及びスイッチが通信コントローラ200に設けられる場合の構成を例示する。この場合、コントローラ100は、図6に示すように、コントローラ側タイミング調整部116、通信サイクル生成部131、サイクルカウンタ132、サイクルチェック部133及びスイッチ134を有しなくてもよい。図7に示すように、通信コントローラ200は、機能ブロックとして、コントローラ側通信部211と、マシン側通信部212と、コントローラ側タイミング調整部213とを有する。
コントローラ側通信部211は、複数のコントローラ100のそれぞれから、有線通信ネットワーク8を介してマシン指令又は同期通信データを受信し、コントローラ100のそれぞれに対し、有線通信ネットワーク8を介して応答情報又は同期通信データを送信する。
マシン側通信部212は、複数のローカルコントローラ300のそれぞれに対して、無線通信ネットワーク7を介してマシン指令を送信し、複数のローカルコントローラ300のそれぞれから、無線通信ネットワーク7を介して応答情報を取得する。
コントローラ側タイミング調整部213は、マシン側通信部212が取得した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出す。第2サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部213は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出すことは、当該コントロールサイクルにおいて使用可能なタイミングで当該応答情報を呼び出すことを意味する。このため、当該コントロールサイクルにおいて使用されるように、当該コントロールサイクルに先立って当該応答情報を呼び出すことも、当該コントロールサイクルにおいて当該応答情報を呼び出すことに含まれる。第2サイクル情報が上記取得時サイクル数である場合、コントローラ側タイミング調整部213は、第2サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。
コントローラ側通信部211は、コントローラ側タイミング調整部213が呼び出した応答情報を、対応するコントローラ100に対し、有線通信ネットワーク8を介して送信する。対応するコントローラ100の同期通信部114は、受信した応答情報を受信情報記憶部112に格納する。これにより、対応するコントローラ100のモーションモジュール113は、コントローラ側タイミング調整部213が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
通信コントローラ200は、複数のコントローラ100の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成するように構成されていてもよい。例えば通信コントローラ200は、時刻生成部221と、通信サイクル生成部222と、サイクルカウンタ223とを更に有してもよい。
時刻生成部221は、上記グローバル時刻に同期して通信サーバ時刻を生成する。例えば時刻生成部221は、有線通信ネットワーク8を介したTSN通信等、時刻同期性を保証する通信によってコントローラ側通信部211が時刻サーバ5から受信したグローバル時刻を取得し、取得したグローバル時刻に同期して通信サーバ時刻を生成する。例えばコントローラ側時刻生成部121は、タイマ296(後述)がカウントする時刻を、グローバル時刻に合わせる。時刻サーバ5が通信サーバ3に組み込まれる場合、時刻生成部221は、グローバル時刻自体を通信サーバ時刻とする。
通信サイクル生成部222は、複数のコントローラ100の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する。例えば通信サイクル生成部222は、通信サーバ時刻と、複数のコントローラ100の少なくともいずれかが管轄ローカルコントローラ300に送信したサイクルタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部222は、サイクルタイミングに基づいて、コントロールサイクルの開始タイミングに同期した開始タイミングをセットし、通信サーバ時刻が当該開始タイミングに達した時点から、通信サイクルでサイクルパルスを繰り返し生成する。なお、コントロールサイクルの開始タイミングに同期した開始タイミングは、コントロールサイクルの開始タイミングに対して所定期間(例えばコントロールサイクルのサイクル長の半分)ずれた開始タイミングを含む。
通信サイクル生成部222は、開始タイミングのセットが完了した時点で、セット完了通知をコントローラ100に送信してもよい。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数倍(1倍を含む)である。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数分の1であってもよい。
サイクルカウンタ223は、通信サイクル生成部222が生成した通信サイクル数(例えば上記サイクルパルスの数)をカウントする。通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでコントローラ側タイミング調整部213は、コントロールサイクル数が使用時サイクル数となるコントロールサイクルにおいて応答情報を呼び出すことを、通信サイクル数に基づいて行ってもよい。
通信コントローラ200は、上記マスタタイミングを生成するように構成されていてもよい。例えば通信コントローラ200はタイミングマスタ224を有してもよい。タイミングマスタ224は、通信サーバ時刻に基づいてマスタタイミングを生成する。タイミングマスタ224は、生成したマスタタイミングを、有線通信ネットワーク8を介して複数のコントローラ100の少なくとも一つに送信する。
通信コントローラ200がタイミングマスタ224を有し、複数のコントローラ100の少なくとも一つがマスタタイミングに基づいてコントロールサイクルを生成する場合、通信サイクル生成部222は、通信サーバ時刻と、マスタタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部222は、マスタタイミングに基づいて上記開始タイミングをセットしてもよい。複数のコントローラ100の少なくとも一つにおけるコントロールサイクルの生成と、通信コントローラ200における通信サイクルの生成とが、同一のマスタタイミングに基づいて行われることによって、通信サイクルが当該コントロールサイクルに同期する。
通信コントローラ200は、マシン指令に含まれる第1サイクル情報に基づいて当該マシン指令の送信遅れを検出するように構成されていてもよい。また、通信コントローラ200は、応答情報に含まれる第2サイクル情報に基づいて当該応答情報の受信遅れを検出するように構成されていてもよい。例えば通信コントローラ200は、サイクルチェック部225を更に有してもよい。
サイクルチェック部225は、マシン指令に含まれる第1サイクル情報に基づいて、当該マシン指令の送信遅れを検出する。マシン指令の送信遅れは、ローカルコントローラ300によるマシン指令の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部225は、マシン側通信部212がローカルコントローラ300にマシン指令を送信する前に、現在の通信サイクル数に対応するコントロールサイクル数が、当該マシン指令の上記使用時サイクル数以上となっている場合にマシン指令の送信遅れを検出する。
サイクルチェック部225は、応答情報に含まれる第2サイクル情報に基づいて、当該応答情報の受信遅れを検出してもよい。応答情報の受信遅れは、コントローラ側タイミング調整部213による応答情報の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部225は、マシン側通信部212がマシン4から応答情報を受信した後に、現在の通信サイクル数に対応するコントロールサイクル数が、当該応答情報の上記使用時サイクル数以上となっている場合に応答情報の受信遅れを検出する。
上述したように、通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでサイクルチェック部225は、マシン指令の送信遅れを第1サイクル情報と通信サイクル数とに基づいて検出し、応答情報の受信遅れを第2サイクル情報と通信サイクル数とに基づいて検出してもよい。
サイクルチェック部225は、マシン指令の送信遅れを検出した場合に、マシン側通信部212による当該マシン指令の送信をキャンセルしてもよい。例えばサイクルチェック部225は、マシン指令の送信遅れを検出した場合に、マシン側通信部212による当該マシン指令の送信に先立って、当該マシン指令を破棄する。サイクルチェック部225は、応答情報の受信遅れを検出した場合に、当該応答情報を破棄してもよい。
通信コントローラ200は、コントローラ100から受信したデータが管轄マシン4宛てであるか他のコントローラ100宛てであるかに基づいて、当該データの送信先を切り替えるように構成されていてもよい。この場合、コントローラ100は、通信コントローラ200に送信するデータにその宛先を付加するように構成されていてもよい。例えば通信コントローラ200は、スイッチ226を有する。
スイッチ226は、コントローラ側通信部211が一のコントローラ100から受信したデータが管轄マシン4宛てであれば、マシン側通信部212により無線通信ネットワーク7を介して管轄ローカルコントローラ300へ当該データを送信させ、当該データが他のコントローラ100宛てであれば、コントローラ側通信部211により有線通信ネットワーク8を介して、当該他のコントローラ100へ当該データを送信させる。
スイッチ226が、コントローラ側通信部211により他のコントローラ100に同期通信データを送信させる場合、コントローラ側タイミング調整部213は、同期通信データを記憶し、当該同期通信データに付加された第1サイクル情報に対応するコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部213は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記付加時サイクル数である場合、コントローラ側タイミング調整部213は、第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。
コントローラ側通信部211は、コントローラ側タイミング調整部213が呼び出した同期通信データを、その宛先である他のコントローラ100に対し、有線通信ネットワーク8を介して送信する。他のコントローラ100の同期通信部114は、受信した同期通信データを受信情報記憶部112に格納する。これにより、他のコントローラ100のモーションモジュール113は、コントローラ側タイミング調整部213が呼び出した同期通信データに基づいて、モーションプログラムを実行することとなる。
コントローラ側通信部211がコントローラ100から受信するデータが、他のコントローラ100宛ての同期通信データを含む場合、サイクルチェック部225は、同期通信データに含まれる第1サイクル情報に基づいて、当該同期通信データの受信遅れを検出してもよい。同期通信データの受信遅れは、コントローラ側タイミング調整部213による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部225は、コントローラ側通信部211がコントローラ100から同期通信データを受信した後に、現在の通信サイクル数に対応するコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの受信遅れを検出する。サイクルチェック部225は、同期通信データの受信遅れを検出した場合に、当該同期通信データを破棄してもよい。
図8は、コントローラサーバ2、通信コントローラ200、及びローカルコントローラ300のハードウェア構成を例示するブロック図である。図8に示すように、コントローラサーバ2は、回路190を有する。回路190は、プロセッサ191と、メモリ192と、ストレージ193と、有線通信ポート194と、タイマ195とを有する。回路190が有する各構成要素の数は一つに限られない。
ストレージ193は、管轄マシン4が送信した応答情報を、有線通信ネットワーク8を介して通信サーバ3から受信することと、受信した応答情報に基づいてモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することと、マシン指令を、有線通信ネットワーク8を介して通信サーバ3に送信することと、をコントローラサーバ2に実行させるプログラムを記憶している。当該プログラムがコントローラサーバ2に実行させる制御方法は、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことを更に含んでもよい。この場合、受信した応答情報に基づいてモーションプログラムを実行することは、第2サイクル情報に対応するコントロールサイクルにおいて呼び出した応答情報に基づいてモーションプログラムを実行することを含む。例えばストレージ193は、上述したコントローラ100の各機能ブロックをコントローラサーバ2に構成させるためのプログラムを記憶している。
メモリ192は、ストレージ193からロードしたプログラム等を一時的に記憶する。プロセッサ191は、演算結果をメモリ192に一時的に記憶しながら、メモリ192にロードされたプログラムを実行する。有線通信ポート194は、プロセッサ191からの指令に応じ、有線通信ネットワーク8を介して通信コントローラ200と通信する。タイマ195は、クロックパルスのカウントにより経過時間を計測する。
通信コントローラ200は、回路290を有する。回路290は、プロセッサ291と、メモリ292と、ストレージ293と、有線通信ポート294と、無線通信ポート295と、タイマ296とを有する。
ストレージ293は、複数のコントローラ100のそれぞれから、有線通信ネットワーク8を介してマシン指令を受信することと、複数のマシン4のそれぞれに対し、無線通信ネットワーク7を介してマシン指令を送信することと、複数のマシン4のそれぞれから、無線通信ネットワーク7を介して応答情報を受信することと、複数のコントローラ100のそれぞれに対し、有線通信ネットワーク8を介して応答情報を送信することと、を含む通信方法を通信コントローラ200に実行させるプログラムを記憶している。当該プログラムが通信コントローラ200に実行させる通信方法は、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことを更に含んでもよい。この場合、有線通信ネットワーク8を介して応答情報を送信することは、第2サイクル情報に対応するコントロールサイクルにおいて呼び出した応答情報を送信することを含む。例えばストレージ293は、上述した各機能ブロックを通信コントローラ200に構成させるためのプログラムを記憶している。
メモリ292は、ストレージ293からロードしたプログラム等を一時的に記憶する。プロセッサ291は、演算結果をメモリ292に一時的に記憶しながら、メモリ292にロードされたプログラムを実行する。有線通信ポート294は、プロセッサ291からの指令に応じて、有線通信ネットワーク8を介してコントローラサーバ2と通信する。無線通信ポート295は、プロセッサ291からの指令に応じて、無線通信基地局201及び無線通信端末301を介してローカルコントローラ300と通信する。タイマ296は、クロックパルスのカウントにより経過時間を計測する。
ローカルコントローラ300は、回路390を有する。回路390は、プロセッサ391と、メモリ392と、ストレージ393と、無線通信ポート394と、タイマ395と、ドライバ回路396とを有する。
ストレージ393は、通信サーバ3を介してマシン指令を受信することと、マシン指令に基づいて、マシン本体10にモーションを実現させることと、を含む制御方法をローカルコントローラ300に実行させるプログラムを記憶している。当該プログラムがローカルコントローラ300に実行させる制御方法は、受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出すことを更に含んでいてもよい。この場合、マシン指令に基づいて、マシン本体10にモーションを実現させることは、第1サイクル情報に対応するマシン側コントロールサイクルにおいて呼び出したマシン指令に基づいて、マシン本体10にモーションを実現させることを含む。例えばローカルコントローラ300は、上述した各機能ブロックをローカルコントローラ300に構成させるためのプログラムを記憶している。
メモリ392は、ストレージ393からロードしたプログラム等を一時的に記憶する。プロセッサ391は、演算結果をメモリ392に一時的に記憶しながら、メモリ392にロードされたプログラムを実行する。無線通信ポート394は、プロセッサ391からの指令に応じて、無線通信端末301及び無線通信基地局201を介して通信コントローラ200と通信する。タイマ395は、クロックパルスのカウントにより経過時間を計測する。ドライバ回路396は、プロセッサ391からの指令に応じてマシン本体10に駆動電力を供給する。
〔マシン制御手順〕
続いて、マシン制御方法の一例として、マシン制御システム1が実行するマシン制御手順を例示する。この手順は、コントロールサイクル、通信サイクル等のサイクル生成手順と、生成したサイクルでのマシン制御手順とを含む。
(サイクル生成手順の概要)
サイクル生成手順は、コントローラ100が、コントロールサイクルを生成することと、ローカルコントローラ300が、上記コントロールサイクルに同期したマシン側コントロールサイクルを生成することとを含む。
図9は、サイクル生成手順の概要を例示するタイミングチャートであり、各チャートの横軸は経過時間を表す。(i)は、時刻サーバ5における情報処理タイミングを示し、(ii)は、コントローラ100におけるコントロールサイクル生成の情報処理タイミングを示し、(iii)は、コントローラ100における通信サイクル生成の情報処理タイミングを示し、(iv)は、無線通信端末301における情報処理タイミングを示し、(v)は、ローカルコントローラ300における情報タイミングを示している。
まず、時刻pt1において、時刻サーバ5がグローバル時刻をコントローラ100に送信する。コントローラ100は、時刻pt2においてグローバル時刻を受信し、受信したグローバル時刻に同期したコントローラ側時刻を生成する。無線通信端末301は、時刻pt5においてグローバル時刻を受信し、ローカルコントローラ300は、無線通信端末301が受信したグローバル時刻に同期したマシン側時刻を時刻pt6において生成する。
コントローラ100は、コントローラ側時刻に基づいてコントロールサイクルの開始タイミングを時刻pt11でセットし、通信サイクルの開始タイミングを時刻pt12でセットする。無線通信端末301は、時刻pt13において無線通信基地局201を介して通信コントローラ200からサイクルタイミングを受信し、ローカルコントローラ300は、無線通信端末301が受信したサイクルタイミングに基づいて、時刻pt14において上記開始タイミングに一致する開始タイミングをセットする。
その後、コントローラ100は、上記開始タイミングに該当する時刻pt21においてコントロールサイクルc1の生成を開始し、上記開始タイミングに該当する時刻pt22において通信サイクルc2の生成を開始し、ローカルコントローラ300は、上記開始タイミングに該当する時刻pt23においてコントロールサイクルc3の生成を開始する。以上でサイクル生成手順が完了する。
以下、サイクル生成手順においてコントローラ100が実行するコントロールサイクル及び通信サイクル生成手順と、ローカルコントローラ300が実行するコントロールサイクル生成手順とをそれぞれ詳細に例示する。
(コントローラにおけるサイクル生成手順)
図10は、コントローラ100におけるサイクル生成手順を例示するフローチャートである。図10に示すように、コントローラ100は、まずステップS01,S02,S03,S04,S05を実行する。ステップS01では、コントローラ側時刻生成部121が、同期通信部114によるグローバル時刻の受信を待機する。ステップS02では、コントローラ側時刻生成部121が、同期通信部114が受信したグローバル時刻に同期してコントローラ側時刻を生成する。ステップS03では、コントローラ側サイクル生成部122が、コントローラ側時刻に基づいて、コントロールサイクルの開始タイミングをセットする。また、通信サイクル生成部131が、コントローラ側時刻に基づいて、通信サイクルの開始タイミングをセットする。ステップS04では、コントローラ側サイクル生成部122が、コントロールサイクルの開始フラグを「開始不可」とする。ステップS05では、タイミング送信部123が、コントロールサイクルのサイクルタイミング(例えば上記開始タイミング)を、通信サーバ3を介して管轄ローカルコントローラ300に送信する。タイミング送信部123は、サイクルタイミングをマスタタイミングとして他のコントローラ100に送信してもよい。
次に、コントローラ100はステップS06を実行する。ステップS06では、タイミング送信部123が、管轄ローカルコントローラ300からのセット完了通知を受信しているか否かを確認する。ステップS06において、ローカルコントローラ300からセット完了通知を受信していると判定した場合、コントローラ100はステップS07を実行する。ステップS07では、コントローラ側サイクル生成部122が、コントロールサイクルの開始フラグを「開始可」とする。
次に、コントローラ100はステップS08を実行する。ステップS06において、管轄ローカルコントローラ300からセット完了通知を受信していないと判定した場合、コントローラ100は、ステップS07を実行することなくステップS08を実行する。ステップS08では、コントローラ側サイクル生成部122が、コントロール側時刻が開始タイミングに達したかを確認する。
ステップS08において、コントロール側時刻が開始タイミングに達していないと判定した場合、コントローラ100は処理をステップS06に戻す。以後、コントロール側時刻が開始タイミングに達するまで、セット完了通知の受信確認が繰り返される。
ステップS08において、コントロール側時刻が開始タイミングに達していると判定した場合、コントローラ100は、ステップS09を実行する。ステップS09では、コントローラ側サイクル生成部122が、開始フラグが「開始可」であるか否かを確認する。
ステップS09において、開始フラグが「開始可」ではないと判定した場合、コントローラ100は処理をステップS03に戻す。これにより、開始タイミングのセット以降の処理が再度実行される。ステップS09において、開始フラグが「開始可」であると判定した場合、コントローラ100はステップS11を実行する。ステップS11では、コントローラ側サイクル生成部122がコントロールサイクルの生成を開始し、タイミング送信部123がコントロールサイクル数のカウントを開始する。また、通信サイクル生成部131が通信サイクルの生成を開始し、サイクルカウンタ132が通信サイクルのカウントを開始する。以上でコントローラ100におけるコントロールサイクルの生成手順が完了する。なお、ステップS11において、通信サイクル生成部131は、コントローラ側サイクル生成部122によるコントロールサイクルの生成開始とずれたタイミングで通信サイクルの生成を開始してもよい。
(ローカルコントローラにおけるコントロールサイクル生成手順)
図11は、ローカルコントローラ300におけるサイクル生成手順を例示するフローチャートである。図11に示すように、ローカルコントローラ300は、まずステップS31,S32,S33を実行する。ステップS31では、マシン側時刻生成部321が、端末通信部314によるグローバル時刻の受信を待機する。ステップS32では、マシン側時刻生成部321が、端末通信部314が受信したグローバル時刻に同期してマシン側時刻を生成する。ステップS33では、マシン側サイクル生成部322が、対応するコントローラ100が送信したサイクルタイミング(例えば上記開始タイミング)を端末通信部314が受信するのを待機する。
次に、ローカルコントローラ300はステップS34,S35,S36,S37,S38を実行する。ステップS34では、マシン側サイクル生成部322が、端末通信部314が受信したサイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットする。ステップS35では、マシン側サイクル生成部322が、セット完了通知をコントローラ100に送信する。ステップS36では、マシン側サイクル生成部322が、マシン側時刻が開始タイミングに達するのを待機する。ステップS37では、マシン側サイクル生成部322がマシン側コントロールサイクルの生成を開始し、サイクルカウンタ323がコントロールサイクル数のカウントを開始する。ステップS38では、ローカルサイクル生成部325がマシンサイクルの生成を開始し、サイクルカウンタ326がマシンサイクル数のカウントを開始する。以上でローカルコントローラ300におけるコントロールサイクルの生成手順が完了する。
(サイクル生成手順の変形例)
上述したように、コントローラ100は、有線通信ネットワーク8を介してマスタタイミングを取得し、取得したマスタタイミングと、コントローラ側時刻とに基づいてコントロールサイクルを生成してもよい。図12は、マスタタイミングに基づくサイクル生成手順を示すフローチャートである。図12に示すように、コントローラ100は、まずステップS51,S52,S53を実行する。ステップS51では、コントローラ側時刻生成部121が、同期通信部114によるグローバル時刻の受信を待機する。ステップS52では、コントローラ側時刻生成部121が、同期通信部114が受信したグローバル時刻に同期してコントローラ側時刻を生成する。ステップS53では、コントローラ側サイクル生成部122が、マスタタイミングを同期通信部114が受信するのを待機する。
次に、コントローラ100はステップS55,S56,S57,S58を実行する。ステップS55では、コントローラ側サイクル生成部122が、マスタタイミングに同期した開始タイミングをセットする。ステップS56では、コントローラ側サイクル生成部122が、セット完了通知を通信コントローラ200に送信する。ステップS57では、コントローラ側サイクル生成部122が、コントローラ側時刻が開始タイミングに達するのを待機する。ステップS58では、コントローラ側サイクル生成部122がコントローラサイクルの生成を開始し、タイミング送信部123がコントロールサイクル数のカウントを開始する。以上でコントローラ100におけるコントロールサイクルの生成手順が完了する。
(マシン制御手順の概要)
マシン制御手順は、コントローラ100が、コントロールサイクルでモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することと、マシン指令に第1サイクル情報を付加することと、マシン指令を通信コントローラ200に送信することと、通信コントローラ200が、マシン指令を受信することと、管轄ローカルコントローラ300にマシン指令を送信することと、管轄ローカルコントローラ300が、通信コントローラ200からマシン指令を受信することと、受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出すことと、呼び出したマシン指令に基づいて、マシン本体10にモーションを実現させることと、を含む。
また、マシン制御手順は、ローカルコントローラ300が、マシン本体10が実現したモーションに基づく応答情報を取得することと、応答情報に第2サイクル情報を付加することと、通信コントローラ200に応答情報を送信することと、通信コントローラ200又はコントローラ100が、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、呼び出した当該応答情報に基づいてコントローラ100がモーションプログラムを実行することと、を更に含んでもよい。
図13は、マシン制御手順の概要を例示するタイミングチャートであり、各チャートの横軸は経過時間を表す。(i)は、モーションモジュール113における情報処理タイミングを示し、(ii)は、同期通信部114における情報処理タイミングを示し、(iii)は、コントローラ側タイミング調整部116における情報処理タイミングを示し、(iv)は、端末通信部314における情報処理タイミングを示し、(v)は、マシン側タイミング調整部315における情報処理タイミングを示し、(vi)は、マシン制御部313における情報処理タイミングを示している。
図13において、サイクルc11,c12,c13は、コントローラ側サイクル生成部122が順次生成するコントロールサイクルであり、サイクルc21,c22,c23は、サイクルc11,c12,c13に同期して通信サイクル生成部131が順次生成する通信サイクルであり、サイクルc31,c32,c33は、サイクルc11,c12,c13に同期してマシン側サイクル生成部322が順次生成するマシン側コントロールサイクルである。
例えばモーションモジュール113は、サイクルc11の時刻t10においてモーションプログラムを実行し、マシン指令を生成する。このマシン指令は、時刻t11において同期通信部114により送信され、時刻t12において端末通信部314により受信される。端末通信部314が受信したマシン指令は、時刻t13においてマシン側タイミング調整部315により記憶され、マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクル(例えばサイクルc33)において呼び出される。そして、呼び出されたマシン指令に基づいて、サイクルc33の時刻t14において、マシン制御部313がマシン本体10にモーションを実現させる。無線通信に起因して、時刻t12にはゆらぎが生じるが、時刻t12から時刻t14までの余裕により、時刻t12のゆらぎが吸収され、コントロールサイクルに同期した時刻t14でマシン指令が使用される。
マシン制御部313は、サイクルc31の時刻t110においてマシン本体10が実現したモーションに基づく応答情報を取得する。この応答情報は、時刻t111において端末通信部314により送信され、時刻t112においてコントローラ側タイミング調整部116により記憶され、応答情報に付加された第2サイクル情報に対応するコントロールサイクル(例えばサイクルc13)において呼び出される。呼び出された応答情報は、サイクルc13の直前の時刻t113において同期通信部114により受信情報記憶部112に格納され、受信情報記憶部112に格納された応答情報に基づいて、サイクルc13の時刻t114においてモーションモジュール113がモーションプログラムを実行する。無線通信に起因して、時刻t112にはゆらぎが生じるが、時刻t112から時刻t114までの余裕により、時刻t112のゆらぎが吸収され、コントロールサイクルに同期した時刻t114で応答情報が使用される。
以下、マシン制御手順を、コントローラ100における制御手順と、ローカルコントローラ300における制御手順とに分けて詳細に例示する。
(コントローラにおける制御手順)
コントローラ100における制御手順は、データ受信手順と、データ生成・送信手順とを含む。データ受信手順とデータ生成・送信手順とは並行して繰り返し実行される。データ受信手順は、必ずしもコントロールサイクルに同期して実行されなくてもよいが、データ生成・送信手順はコントロールサイクルに同期して実行される。
図14は、データ受信手順を例示するフローチャートである。図14に示すように、コントローラ100は、まずステップS91,S92を実行する。ステップS91では、同期通信部114が通信コントローラ200からのデータの受信を待機する。ステップS92では、サイクルチェック部133が、データの受信遅れがないか否かを確認する。例えばサイクルチェック部133は、応答情報に付加された第2サイクル情報に基づいて、応答情報の送信遅れがないか否かを確認する。
ステップS92において、データの受信遅れがあると判定した場合、コントローラ100はステップS93を実行する。ステップS93では、サイクルチェック部133が当該データを破棄する。
ステップS92において、データの受信遅れはないと判定した場合、コントローラ100はステップS94を実行する。ステップS94では、サイクルチェック部133が、コントローラ側タイミング調整部116に当該データを記憶させる。ステップS93,S94を実行した後、コントローラ100は処理をステップS91に戻す。通信コントローラ200は以上の手順を繰り返す。
図15は、データ生成・送信手順を例示するフローチャートである。コントローラ100は、まずステップS71,S72,S73,S74,S75を実行する。ステップS71では、モーションモジュール113が、サイクルカウンタ124によるコントロールサイクル数のカウントアップを待機する。ステップS72では、コントローラ側タイミング調整部116が、使用時サイクル数が現在のコントロールサイクル数に対応する受信データ(例えば応答情報及び同期通信データ)を呼び出す。ステップS73では、モーションモジュール113が、モーションプログラムを実行し、管轄マシン4に対するマシン指令を生成する。例えばモーションモジュール113は、受信情報記憶部112が記憶する応答情報に基づく管轄マシン4のモーション実績を算出し、モーション実績をモーション指令に追従させるようにマシン指令を算出する。ステップS74では、付加部125が、マシン指令に第1サイクル情報を付加する。ステップS75では、同期通信部114が、有線通信ネットワーク8を介して、マシン指令を通信サーバ3に送信する。ステップS75の具体的処理内容については後述する。
次に、コントローラ100はステップS76,S77,S78を実行する。ステップS76では、同期通信部114が、同期通信データを生成する。ステップS77では、付加部125が、同期通信データに第1サイクル情報を付加する。ステップS78では、同期通信部114が、有線通信ネットワーク8を介して、同期通信データを通信サーバ3に送信する。ステップS78の具体的処理内容については後述する。その後、コントローラ100は処理をステップS71に戻す。コントローラ100は、以上の手順を繰り返す。
図16は、ステップS75,S78におけるデータの送信手順を例示するフローチャートである。図16に示すように、コントローラ100は、まずステップS82を実行する。ステップS82では、サイクルチェック部133が、データの送信遅れがないか否かを確認する。例えばサイクルチェック部133は、マシン指令に付加された第1サイクル情報に基づいて、マシン指令の送信遅れがないか否かを確認し、同期通信データに付加された第1サイクル情報に基づいて、同期通信データの送信遅れがないか否かを確認する。
ステップS82において、データの送信遅れがあると判定した場合、コントローラ100はステップS83を実行する。ステップS83では、サイクルチェック部133が当該データを破棄する。
ステップS82において、データの送信遅れがないと判定した場合、コントローラ100はステップS84を実行する。ステップS84では、スイッチ134が、データが管轄マシン4宛てであるか、他のコントローラ100宛てであるかを確認する。
ステップS84において、データが管轄マシン4宛てであると判定した場合、通信コントローラ200はステップS85を実行する。ステップS85では、スイッチ134が、通信サーバ3を介して管轄マシン4へ当該データを送信する。
ステップS84において、データが他のコントローラ100宛てであると判定した場合、通信コントローラ200はステップS86を実行する。ステップS86では、スイッチ134が、有線通信ネットワーク8を介して、他のコントローラ100のコントローラ側タイミング調整部116に当該データを送信する。ステップS83,S85,S86を実行した後、コントローラ100は処理をステップS82に戻す。コントローラ100は以上の手順を繰り返す。
(ローカルコントローラにおける制御手順)
ローカルコントローラ300における制御手順は、マシン指令の受信手順と、タイミング調整手順と、マシン制御手順とを含む。これらは並行して繰り返し実行される。マシン指令の制御手順は、必ずしもコントロールサイクルに同期して実行されなくてもいが、タイミング調整手順はコントロールサイクルに同期して実行される。マシン制御手順は、マシンサイクルに同期して実行される。
図17は、マシン指令の受信手順を例示するフローチャートである。図17に示すように、ローカルコントローラ300はステップS111,S112を実行する。ステップS111では、端末通信部314が、マシン指令の受信を待機する。ステップS112では、マシン側タイミング調整部315が、マシン指令を記憶する。その後、ローカルコントローラ300は処理をステップS111に戻す。ローカルコントローラ300は以上の手順を繰り返す。
図18は、タイミング調整手順を例示するフローチャートである。図18に示すように、ローカルコントローラ300は、ステップS121,S122,S123,S124を実行する。ステップS121では、マシン側タイミング調整部315が、サイクルカウンタ323によるコントロールサイクル数のカウントアップを待機する。ステップS122では、マシン側タイミング調整部315が、使用時サイクル数が現在のコントロールサイクル数に対応するマシン指令を呼び出し、指令記憶部311に格納する。これにより、指令記憶部311が記憶するマシン指令が更新される。ステップS123では、付加部324が、応答情報記憶部312が記憶する応答情報に第1サイクル情報を付加する。ステップS124では、端末通信部314が、応答情報を、有線通信ネットワーク8を介して通信コントローラ200に送信する。その後、ローカルコントローラ300は処理をステップS121に戻す。ローカルコントローラ300は以上の手順を繰り返す。
図19は、マシン制御手順を例示するフローチャートである。図19に示すように、ローカルコントローラ300は、まずステップS131,S132を実行する。ステップS131では、マシン制御部313が、サイクルカウンタ326によるマシンサイクル数のカウントアップを待機する。ステップS132では、サイクルカウンタ326が、指令記憶部311が記憶するマシン指令が更新されたか否かを確認する。
ステップS132において、指令記憶部311が記憶するマシン指令が更新されたと判定した場合、ローカルコントローラ300はステップS133を実行する。ステップS133では、サイクルカウンタ326が、マシンサイクル数を初期値(例えばゼロ)にリセットする。
次に、ローカルコントローラ300はステップS134を実行する。ステップS132において、指令記憶部311が記憶するマシン指令が更新されていないと判定した場合、ローカルコントローラ300は、ステップS133を実行することなくステップS134を実行する。ステップS134では、マシン制御部313が、マシン指令と、応答情報記憶部312が記憶する応答情報との偏差を縮小するように駆動データを生成する。
次に、ローカルコントローラ300はステップS135,S136を実行する。ステップS135では、マシン制御部313が、駆動データに基づいてマシン本体10を駆動する。ステップS136では、マシン制御部313が、マシン本体10が実現したモーションに基づく応答情報を取得し、応答情報記憶部312に格納する。その後、ローカルコントローラ300は処理をステップS131に戻す。ローカルコントローラ300は、以上の手順を繰り返す。
〔本実施形態の効果〕
以上に説明したように、マシン制御システム1は、現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する1以上のマシン4と、仮想空間上に実装され、1以上のマシン4をそれぞれ制御する1以上のコントローラ100と、1以上のコントローラ100と有線通信ネットワーク8を介して通信し、1以上のマシン4と無線通信ネットワーク7を介して通信する通信サーバ3と、を備え、1以上のコントローラ100のそれぞれは、コントロールサイクルでモーションプログラムを実行し、対応するマシン4に対するマシン指令を生成するモーションモジュール113と、マシン指令に第1サイクル情報を付加する付加部125と、マシン指令を通信サーバ3に送信する同期通信部114と、を有し、1以上のマシン4のそれぞれは、通信サーバ3からマシン指令を受信する端末通信部314と、端末通信部314が受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部315と、を有する。
第5世代移動通信システム(5G)の実用化等により、高速無線通信が可能となったため、無線通信を介したマシン制御の実現可能性も高まっている。マシン制御においては、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシンの制御とを所定のコントロールサイクルで繰り返す必要がある。生成されたマシン指令が無線通信ネットワークを介して送信される場合、無線通信に起因して、マシン側におけるマシン指令の受信タイミングのゆらぎが拡大し、マシン側においてマシン指令をコントロールサイクルで受信するのが困難になる可能性がある。本マシン制御システム1によれば、通信サーバ3から無線通信ネットワーク7を介して送信されたマシン指令がマシン4側でバッファリングされ、第1サイクル情報に対応するマシン側コントロールサイクルにおいて呼び出される。このように、マシン指令をその使用タイミングまでバッファリングする機能によって、コントローラ100側からのマシン指令の送信を前倒し、マシン4におけるマシン指令の受信タイミングから当該マシン指令の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファしたマシン指令をマシン側コントロールサイクルで呼び出すことができる。このため、無線通信を介してマシン指令が送信されるシステムにおいて、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシンの制御とをコントロールサイクルで繰り返すことが可能となる。従って、無線通信を介したマシン制御の実現に有効である。
1以上のマシン4のそれぞれは、モーションを実現するマシン本体10と、マシン側タイミング調整部315が呼び出したマシン指令に基づいて、マシン本体10にモーションを実現させ、マシン本体10が実現したモーションに基づく応答情報を取得するマシン制御部313と、応答情報に第2サイクル情報を付加する付加部324と、を更に有し、端末通信部314は、応答情報を通信サーバ3に送信し、マシン制御システム1は、1以上のコントローラ100と通信サーバ3との間において、1以上のマシン4から受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すコントローラ側タイミング調整部116,213を更に備え、モーションモジュール113は、コントローラ側タイミング調整部116,213が呼び出した応答情報に基づいて、モーションプログラムを実行してもよい。この場合、マシン4から無線通信ネットワークを介して送信された応答情報がコントローラ100側でバッファリングされ、第1サイクル情報に対応するコントロールサイクルにおいて呼び出される。このように、応答情報をその使用タイミングまでバッファリングする機能によって、マシン4側からの応答情報の送信を前倒し、コントローラ100側における応答情報の受信タイミングから当該応答情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした応答情報をコントロールサイクルで呼び出すことができる。このため、無線通信を介して応答情報が送信されるシステムにおいて、応答情報の受信をコントロールサイクルで繰り返すことが可能となる。従って、無線通信を介したマシン制御の実現に更に有効である。
1以上のコントローラ100のそれぞれは、コントロールサイクルのサイクルタイミングを対応するマシン4に送信するタイミング送信部123を更に有し、1以上のマシン4のそれぞれは、サイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルを生成するマシン側サイクル生成部322を更に有してもよい。この場合、サイクルタイミングに基づく同期処理の後は、コントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルがマシン4において生成される。このため、無線通信の負担を抑えつつ、マシン4におけるマシン側コントロールサイクルをコントローラにおけるコントロールサイクルに容易に同期させることができる。
1以上のコントローラ100のそれぞれは、時刻サーバ5が生成した時刻に同期して、コントローラ側時刻を生成するコントローラ側時刻生成部121と、コントローラ側時刻に基づいて、コントロールサイクルを生成するコントローラ側サイクル生成部122と、を更に有し、1以上のマシン4のそれぞれは、時刻サーバが生成した時刻に同期して、マシン側時刻を生成するマシン側時刻生成部321を更に有し、マシン側サイクル生成部322は、マシン側時刻生成部321が生成した時刻と、サイクルタイミングとに基づいて、マシン側コントロールサイクルを生成してもよい。この場合、コントローラ100及びマシン4における時刻合わせを予め行っておくことで、マシン4におけるサイクルタイミングの受信タイミングにゆらぎが生じた場合であっても、マシン側時刻に基づいて、マシン4におけるマシン側コントロールサイクルを適切なタイミングで生成することができる。
タイミング送信部123は、対応するマシン4のマシン側サイクル生成部322がマシン側コントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを当該マシン4に再度送信してもよい。この場合、より高い信頼性で、マシン4におけるマシン側コントロールサイクルをコントローラ100におけるコントロールサイクルに同期させることができる。
マシン制御部313は、マシン側タイミング調整部315が呼び出したマシン指令に基づいて、コントロールサイクルよりも短いサイクル長のマシンサイクルでマシン本体10を制御してもよい。この場合、コントロールサイクルによるマシン指令の呼び出しの定周期性と、より細分化されたマシンサイクルによるマシンの適切な制御との両立を図ることができる。
マシン制御システム1は、1以上のコントローラとして複数のコントローラ100を備え、複数のコントローラ100のそれぞれがコントローラ側タイミング調整部116を有してもよい。この場合、複数のコントローラ100それぞれがと管轄マシン4との間で同期通信が可能になる一方で、同一のネットワークを利用するコントローラ100とマシン4の複数の対間においては、コントロールサイクルを同期させる必要性が低くなり、システムを容易に構成することができる。
複数のコントローラ100における一のコントローラ100の同期通信部114が送信するデータが対応するマシン宛てであれば、通信サーバ3を介して、対応するマシン4へ当該データを送信し、データが他のコントローラ100宛てであれば、有線通信ネットワーク8を介して、他のコントローラ100のコントローラ側タイミング調整部116へ当該データを送信するスイッチ134を更に備えてもよい。この場合、コントローラ100とマシン4との間の同期通信と、コントローラ100間の同期通信とに同期通信部114を適切に使い分けることができる。
一のコントローラ100は、他のコントローラ100を含む他のノードに対する非同期通信データを、有線通信ネットワーク8を介して他のノードに送信する非同期通信部115を更に有してもよい。この場合、同期通信用の通信リソースを節約することができる。
複数のコントローラ100の少なくとも一つは、有線通信ネットワーク8を介して受信したマスタタイミングに基づいて、コントロールサイクルを生成するコントローラ側サイクル生成部122を更に有してもよい。この場合、コントローラ100間においてコントロールサイクルを容易に同期させることができる。
通信サーバ3は、マスタタイミングを生成するタイミングマスタ224を有し、コントローラ側サイクル生成部122は、タイミングマスタ224からマスタタイミングを受信してもよい。この場合、コントロールサイクルを同期させるべき複数のコントローラ100のいずれにおいても、通信サーバ3のタイミングマスタ224が生成したタイミングマスタに基づいてコントロールサイクルを生成する同一の設定を採用することができる。このため、システムへのコントローラ100の追加・削除が容易である。
1以上のコントローラ100と通信サーバ3との間において、マシン指令に含まれる第1サイクル情報に基づいて、当該マシン指令の送信遅れを検出するサイクルチェック部133,225を更に備えてもよい。この場合、コントロールサイクルに同期したマシン指令の送信の信頼性を向上させることができる。
サイクルチェック部133は、マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルしてもよい。この場合、コントロールサイクルでの呼び出しに間に合わないマシン指令の送信をキャンセルすることで、通信サーバ3における無線通信リソースを節約することができる。
1以上のコントローラ100と通信サーバ3との間において、応答情報に含まれる第2サイクル情報に基づいて、当該応答情報の受信遅れを検出するサイクルチェック部133,225を更に備えてもよい。この場合、コントロールサイクルでの呼び出しに間に合わない応答情報を未然に検知し、例えば一つ前に呼び出された応答情報を代用して応答情報の欠落を防ぐ等の対処が可能となる。
1以上のコントローラ100と通信サーバ3との間において、1以上のコントローラ100の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する通信サイクル生成部131,222を更に備え、サイクルチェック部133,225は、マシン指令に付加された第1サイクル情報と、通信サイクルのサイクル情報とに基づいて、マシン指令の送信遅れを検出してもよい。この場合、サイクルチェック部133,225による送信遅れの検出を容易に行うことができる。
〔マシン制御システムの変形例〕
マシン制御システム1は、少なくとも、1以上のマシン4と、1以上のマシン4と通信する1以上のサーバが有する仮想空間上に実装され、1以上のマシン4をそれぞれ制御する1以上のコントローラ100と、を備える限りにおいて、マシン制御システム1は適宜変更可能である。例えば図20に示すように、無線通信ネットワーク7を有線通信ネットワーク7Aに置き換えてもよい。この場合、図5、図7、及び図8において、通信コントローラ200とローカルコントローラ300との間に介在する無線通信基地局201及び無線通信端末301は不要となる。また、図9において、時刻pt5,pt13で実行される無線通信端末301の処理も不要となる。図21に示すように、通信サーバ3を、例えばスイッチングハブ等の通信ハブ3Aに置き換えてもよい。この場合、通信サーバ3が有していたタイミングマスタ224が、通信サーバ3以外の1以上のサーバ(例えば、コントローラサーバ2、時刻サーバ5、又はアプリサーバ6)のいずれに設けられていてもよい。
図20及び図21のように、コントローラ100とマシン4との間の通信が無線通信を含まない場合においても、ストレージ193は、少なくともコントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成することと、対応するマシン4において、いずれのマシン側コントロールサイクルでマシン指令を呼び出すかを指定する第1サイクル情報をマシン指令に付加することと、第1サイクル情報が付加されたマシン指令を対応するマシン4に送信することと、を実行するコントローラ100を、対応するマシン4と通信するコントローラサーバ2の仮想空間上に実装させるプログラムを記憶する。ストレージ193は、対応するマシン4が第2サイクル情報を付加した応答情報を、対応するマシン4から受信することと、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、を更に実行し、呼び出した応答情報に基づいてモーションプログラムを実行し、マシン指令を生成するコントローラをコントローラサーバ2の仮想空間上に実装させるプログラムを記憶していてもよい。
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。