(57)【特許請求の範囲】
【請求項１】
現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する１以上のマシンと、
仮想空間上に実装され、前記１以上のマシンをそれぞれ制御する１以上のコントローラと、
前記１以上のコントローラと有線通信ネットワークを介して通信し、前記１以上のマシンと無線通信ネットワークを介して通信する通信サーバと、
を備え、
前記１以上のコントローラのそれぞれは、
コントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成するモーションモジュールと、
前記マシン指令に第１サイクル情報を付加する付加部と、
前記マシン指令を前記通信サーバに送信する同期通信部と、
を有し、
前記１以上のマシンのそれぞれは、
前記通信サーバから前記マシン指令を受信する端末通信部と、
前記端末通信部が受信した前記マシン指令を記憶し、当該マシン指令に付加された第１サイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部と、
を有する、マシン制御システム。
【請求項２】
前記１以上のマシンのそれぞれは、
モーションを実現する本体と、
前記マシン側タイミング調整部が呼び出したマシン指令に基づいて、前記本体にモーションを実現させ、前記本体が実現したモーションに基づく応答情報を取得するマシン制御部と、
前記応答情報に第２サイクル情報を付加する付加部と、
を更に有し、
前記端末通信部は、前記応答情報を前記通信サーバに送信し、
前記マシン制御システムは、前記１以上のコントローラと前記通信サーバとの間において、前記１以上のマシンから受信した前記応答情報を記憶し、当該応答情報に付加された第２サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すコントローラ側タイミング調整部を更に備え、
前記モーションモジュールは、前記コントローラ側タイミング調整部が呼び出した応答情報に基づいて、前記モーションプログラムを実行する、請求項１記載のマシン制御システム。
【請求項３】
前記１以上のコントローラのそれぞれは、
前記コントロールサイクルのサイクルタイミングを対応するマシンに送信するタイミング送信部を更に有し、
前記１以上のマシンのそれぞれは、
前記サイクルタイミングに基づいて、対応するコントローラにおける前記コントロールサイクルに同期した当該マシンにおける前記コントロールサイクルを生成するマシン側サイクル生成部を更に有する、請求項１又は２記載のマシン制御システム。
【請求項４】
前記１以上のコントローラのそれぞれは、
時刻サーバが生成した時刻に同期して、コントローラ側時刻を生成するコントローラ側時刻生成部と、
前記コントローラ側時刻に基づいて、前記コントロールサイクルを生成するコントローラ側サイクル生成部と、
を更に有し、
前記１以上のマシンのそれぞれは、
前記時刻サーバが生成した時刻に同期して、マシン側時刻を生成するマシン側時刻生成部を更に有し、
前記マシン側サイクル生成部は、前記マシン側時刻生成部が生成した時刻と、前記サイクルタイミングとに基づいて、前記コントロールサイクルを生成する、請求項３記載のマシン制御システム。
【請求項５】
前記タイミング送信部は、対応するマシンの前記マシン側サイクル生成部が前記コントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを当該マシンに再度送信する、請求項４記載のマシン制御システム。
【請求項６】
前記マシン制御部は、前記マシン側タイミング調整部が呼び出したマシン指令に基づいて、前記コントロールサイクルよりも短いサイクル長のマシンサイクルで前記本体を制御する、請求項２記載のマシン制御システム。
【請求項７】
前記マシン制御システムは、前記１以上のコントローラとして複数のコントローラを備え、
前記複数のコントローラのそれぞれが前記コントローラ側タイミング調整部を有する、請求項２記載のマシン制御システム。
【請求項８】
前記複数のコントローラにおける一のコントローラの前記同期通信部が送信するデータがマシン宛てであれば、前記通信サーバを介して、当該マシンへ当該データを送信し、前記データが他のコントローラ宛てであれば、前記有線通信ネットワークを介して、前記他のコントローラの前記コントローラ側タイミング調整部へ当該データを送信するスイッチを更に備える、請求項７記載のマシン制御システム。
【請求項９】
前記一のコントローラは、
前記他のコントローラを含む他のノードに対する非同期通信データを、前記有線通信ネットワークを介して前記他のノードに送信する非同期通信部を更に有する、請求項８記載のマシン制御システム。
【請求項１０】
前記複数のコントローラの少なくとも一つは、前記有線通信ネットワークを介して受信したマスタタイミングに基づいて、前記コントロールサイクルを生成するコントローラ側サイクル生成部を更に有する、請求項７〜９のいずれか一項記載のマシン制御システム。
【請求項１１】
前記通信サーバは、前記マスタタイミングを生成するタイミングマスタを有し、
前記コントローラ側サイクル生成部は、前記タイミングマスタから前記マスタタイミングを受信する、請求項１０記載のマシン制御システム。
【請求項１２】
前記１以上のコントローラと前記通信サーバとの間において、前記マシン指令に含まれる前記第１サイクル情報に基づいて、当該マシン指令の送信遅れを検出するサイクルチェック部を更に備える、請求項１〜１１のいずれか一項記載のマシン制御システム。
【請求項１３】
前記サイクルチェック部は、前記マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルする、請求項１２記載のマシン制御システム。
【請求項１４】
前記１以上のコントローラと前記通信サーバとの間において、前記応答情報に含まれる前記第２サイクル情報に基づいて、当該応答情報の受信遅れを検出するサイクルチェック部を更に備える、請求項２記載のマシン制御システム。
【請求項１５】
前記１以上のコントローラと前記通信サーバとの間において、前記１以上のコントローラの少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する通信サイクル生成部を更に備え、
前記サイクルチェック部は、前記マシン指令に付加された前記第１サイクル情報と、前記通信サイクルのサイクル情報とに基づいて、前記マシン指令の送信遅れを検出する、請求項１２又は１３記載のマシン制御システム。
【請求項１６】
無線通信ネットワークを介してマシンと通信する通信サーバと有線通信ネットワークを介して通信し、マシンがサイクル情報を付加した応答情報を、通信サーバを介してマシンから受信することと、
受信した応答情報を記憶し、当該応答情報に付加されたサイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、
呼び出した応答情報に基づいてモーションプログラムを実行し、マシン指令を生成することと、
通信サーバを介してマシン指令をマシンに送信することと、を含む制御方法を装置に実行させるプログラム。
【請求項１７】
モーションを実現する本体と、
有線通信ネットワークを介してコントローラと通信する通信サーバと無線通信ネットワークを介して通信し、コントローラがサイクル情報を付加したマシン指令を、通信サーバを介して受信する端末通信部と、
端末通信部が受信したマシン指令を記憶し、当該マシン指令に付加されたサイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部と、
マシン側タイミング調整部が呼び出したマシン指令に基づいて、前記本体にモーションを実現させるマシン制御部と、を備えるマシン。
【請求項１８】
１以上のコントローラのそれぞれが、コントロールサイクルでモーションプログラムを実行して生成したマシン指令を、有線通信ネットワークを介して受信することと、
１以上のマシンのそれぞれに対し、無線通信ネットワークを介して前記マシン指令を送信することと、
１以上のマシンのそれぞれが、サイクル情報を付加した応答情報を、無線通信ネットワークを介して受信することと、
受信した前記応答情報を記憶し、当該応答情報に付加されたサイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、
呼び出した応答情報を、対応するコントローラに対し、有線通信ネットワークを介して送信することと、を含む通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マシン制御システム、通信サーバ、プログラム、マシン、及び通信方法に関する。
【背景技術】
【０００２】
特許文献１には、ロボットと、加工装置と、ロボットを制御するロボットコントローラと、加工装置を制御する加工装置コントローラと、ロボットコントローラ及び加工装置コントローラに対する指令を生成するプログラマブルロジックコントローラとを備えるシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１９−２０９４５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、無線通信を介したマシン制御の実現に有効なマシン制御システムを提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るマシン制御システムは、現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する１以上のマシンと、仮想空間上に実装され、１以上のマシンをそれぞれ制御する１以上のコントローラと、１以上のコントローラと有線通信ネットワークを介して通信し、１以上のマシンと無線通信ネットワークを介して通信する通信サーバと、を備え、１以上のコントローラのそれぞれは、コントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成するモーションモジュールと、マシン指令に第１サイクル情報を付加する付加部と、マシン指令を通信サーバに送信する同期通信部と、を有し、１以上のマシンのそれぞれは、通信サーバからマシン指令を受信する端末通信部と、端末通信部が受信したマシン指令を記憶し、当該マシン指令に付加された第１サイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部と、を有する。【０００６】
本開示の他の側面に関するマシン制御システムは、現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する１以上のマシンと、仮想空間上に実装され、１以上のマシンをそれぞれ制御する１以上のコントローラと、１以上のコントローラと有線通信ネットワークを介して通信し、１以上のマシンと無線通信ネットワークを介して通信する通信サーバと、を備え、１以上のコントローラのそれぞれは、コントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成するモーションモジュールと、マシン指令を通信サーバに送信する同期通信部と、を有し、１以上のマシンのそれぞれは、モーションを実現する本体と、通信サーバからマシン指令を受信する端末通信部と、マシン指令に基づいて、本体にモーションを実現させるマシン制御部と、を有する。【０００７】
本開示の他の側面に係るマシン制御システムは、現実空間上に構成され、それぞれモーションを実現する１以上のマシンと、コントロールサイクルで所定の演算を実行するコントローラサーバと、コントローラサーバと有線通信ネットワークを介して通信し、１以上のマシンと無線通信ネットワークを介して通信する通信サーバと、を備え、１以上のマシンのそれぞれは、モーションを実現する本体と、通信サーバから演算結果を受信する端末通信部と、端末通信部が受信したコントローラサーバによる演算結果に基づいて本体にモーションを実現させるマシン制御部と、を有する。【０００８】
本開示の他の側面に係るプログラムは、無線通信ネットワークを介してマシンと通信する通信サーバと有線通信ネットワークを介して通信し、マシンがサイクル情報を付加した応答情報を、通信サーバを介してマシンから受信することと、受信した応答情報を記憶し、当該応答情報に付加されたサイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、呼び出した応答情報に基づいてモーションプログラムを実行し、マシン指令を生成することと、通信サーバを介してマシン指令をマシンに送信することと、を含む制御方法を装置に実行させる。【０００９】
本開示の他の側面に係るマシンは、モーションを実現する本体と、有線通信ネットワークを介してコントローラと通信する通信サーバと無線通信ネットワークを介して通信し、コントローラがサイクル情報を付加したマシン指令を、通信サーバを介して受信する端末通信部と、端末通信部が受信したマシン指令を記憶し、当該マシン指令に付加されたサイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部と、マシン側タイミング調整部が呼び出したマシン指令に基づいて、本体にモーションを実現させるマシン制御部と、を備える。【００１０】
本開示の他の側面に係る通信方法は、１以上のコントローラのそれぞれが、コントロールサイクルでモーションプログラムを実行して生成したマシン指令を、有線通信ネットワークを介して受信することと、１以上のマシンのそれぞれに対し、無線通信ネットワークを介してマシン指令を送信することと、１以上のマシンのそれぞれが、サイクル情報を付加した応答情報を、無線通信ネットワークを介して受信することと、受信した応答情報を記憶し、当該応答情報に付加されたサイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、呼び出した応答情報を、対応するコントローラに対し、有線通信ネットワークを介して送信することと、を含む。
【発明の効果】
【００１１】
本開示によれば、無線通信を介したマシン制御の実現に有効なマシン制御システムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】マシン制御システムの概略構成を例示する模式図である。
【図２】ロボットの構成を例示する模式図である。
【図３】コントローラサーバの機能上の構成を例示するブロック図である。
【図４】コントローラの機能上の構成を例示するブロック図である。
【図５】ローカルコントローラの機能上の構成を例示するブロック図である。
【図６】コントローラの変形例を示すブロック図である。
【図７】通信コントローラの機能上の構成を例示するブロック図である。
【図８】コントローラサーバ、通信コントローラ、及びローカルコントローラのハードウェア構成を例示するブロック図である。
【図９】サイクル生成手順を例示するタイミングチャートである。
【図１０】コントローラにおけるサイクル生成手順を例示するフローチャートである。
【図１１】ローカルコントローラにおけるサイクル生成手順を例示するフローチャートである。
【図１２】ローカルコントローラにおけるサイクル生成手順の変形例を示すフローチャートである。
【図１３】マシン制御手順を例示するタイミングチャートである。
【図１４】コントローラにおける制御手順を例示するフローチャートである。
【図１５】コントローラにおける制御手順を例示するフローチャートである。
【図１６】コントローラにおける制御手順を例示するフローチャートである。
【図１７】ローカルコントローラにおける制御手順を例示するフローチャートである。
【図１８】ローカルコントローラにおける制御手順を例示するフローチャートである。
【図１９】ローカルコントローラにおける制御手順を例示するフローチャートである。
【発明を実施するための形態】
【００１３】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１４】
〔マシン制御システム〕
図１に示すマシン制御システム１は、少なくとも１台のコントローラサーバ２から無線通信ネットワークを介して送信される演算結果に基づいて、複数のマシン４を制御するシステムである。マシン制御システム１の一例としては、複数のマシン４の協調モーションにより、ワークを生産する生産システムが挙げられる。図１に示すように、マシン制御システム１は、少なくとも１台のコントローラサーバ２と、通信サーバ３と、複数のマシン４とを備える。
【００１５】
コントローラサーバ２は、コントロールサイクルで所定の演算を実行する。コントローラサーバ２は、複数のコントローラ１００を有する（図３参照）。複数のコントローラ１００は、コントローラサーバ２において仮想空間上に実装され、複数のマシン４をそれぞれ制御する。一つのコントローラ１００は、少なくとも一台のマシン４に対応する。一つのコントローラ１００が複数のマシン４に対応していてもよく、複数のコントローラ１００が一台のマシン４に対応していてもよい。仮想空間上に実装するとは、ソフトウェアにより、コントローラ１００としての機能をコントローラサーバ２等の演算装置に付加することを意味する。コントローラ１００としての機能は、マシン４からの情報の取得と、取得した情報に基づくマシン指令の生成と、生成したマシン指令のマシン４への出力とを含む。複数のコントローラ１００は、複数のコントローラサーバ２に分配されていてもよい。これにより、一台のコントローラサーバ２の演算負担が軽減される。
【００１６】
通信サーバ３は、コントローラサーバ２と有線通信ネットワーク８を介して通信し、複数のマシン４と無線通信ネットワーク７を介して通信し、コントローラサーバ２と複数のマシン４との間で情報を中継する。有線通信ネットワーク８の具体例としては、イーサネット（登録商標）等のローカルエリアネットワークが挙げられる。無線通信ネットワーク７の具体例としては、第５世代移動通信システム（５Ｇ）等の高速無線通信ネットワークが挙げられる。通信サーバ３は、コントローラサーバ２から離れた場所に設けられていてもよく、コントローラサーバ２に近接した場所に設けられていてもよく、コントローラサーバ２と同じ筐体内に設けられていてもよい。
【００１７】
通信サーバ３は、通信コントローラ２００と、無線通信基地局２０１とを有する。通信コントローラ２００は、コントローラサーバ２と有線通信ネットワーク８を介して通信し、複数のマシン４と無線通信基地局２０１を介して通信する。無線通信基地局２０１は、複数のマシン４の無線通信端末３０１（後述）と無線通信ネットワーク７を介して通信する。
【００１８】
複数のマシン４は、現実空間上に構成され、それぞれコントローラサーバ２の演算結果に応じてモーションを実現する。例えば複数のマシン４は、それぞれ上記マシン指令に応じてモーションを実現する。モーションを実現するとは、現実空間において少なくとも一つの物体を変位させることを意味する。変位とは、移動と、姿勢変更とを含む。また、変位は、筐体内等、外部から視認できない空間内における変位を含む。
【００１９】
複数のマシン４のそれぞれは、マシン本体１０と、ローカルコントローラ３００と、無線通信端末３０１とを有する。マシン本体１０は、モーションを実現する機器である。コントローラサーバ２の演算結果に基づいてモーションを実現する機器である限り、マシン本体１０はいかなる機器であってもよい。図１においては、マシン本体１０の具体例として、移動ロボット２０と、定置ロボット３０と、ＮＣ工作機械６０と、環境センサ７０と、コンベヤ８０とを示している。移動ロボット２０は、自立走行可能なロボットであり、無人搬送車２１と、ロボット２２とを有する。無人搬送車２１は、マシン指令が含む移動指令に応じて自立走行する。無人搬送車２１の具体例としては、電動式の所謂ＡＧＶ（Ａｕｔｏｍａｔｅｄ  Ｇｕｉｄｅｄ  Ｖｅｈｃｌｅ）が挙げられる。ロボット２２は、マシン指令が含む作業指令に応じてワークに対する作業を実行する。
【００２０】
例えばロボット２２は、６軸の垂直多関節ロボットであり、図２に示すように、基部３１と、旋回部３２と、第１アーム３３と、第２アーム３４と、第３アーム３５と、先端部３６と、アクチュエータ４１，４２，４３，４４，４５，４６とを有する。基部３１は、無人搬送車２１の上に固定されている。旋回部３２は、鉛直な軸線５１まわりに旋回するように基部３１上に設けられている。第１アーム３３は、軸線５１に交差（例えば直交）する軸線５２まわりに揺動するように旋回部３２に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第２アーム３４は、軸線５２に実質的に平行な軸線５３まわりに揺動するように第１アーム３３の先端部に接続されている。第３アーム３５は、第２アーム３４に沿った軸線５４まわりに旋回し、軸線５４に交差（例えば直交）する軸線５５まわりに揺動するように、第２アーム３４の先端部に接続されている。先端部３６は、軸線５５に交差（例えば直交）する軸線５６まわりに旋回するように第３アーム３５の先端部に接続されている。先端部３６には、吸着ノズル、ロボットハンド、又は加工ツール等、用途に応じて様々なツールが設けられる。
【００２１】
アクチュエータ４１，４２，４３，４４，４５，４６は、例えば電動モータ及び減速機を含み、ロボット２２を駆動する。例えばアクチュエータ４１は軸線５１まわりに旋回部３２を旋回させ、アクチュエータ４２は軸線５２まわりに第１アーム３３を揺動させ、アクチュエータ４３は軸線５３まわりに第２アーム３４を揺動させ、アクチュエータ４４は軸線５４まわりに第３アーム３５を旋回させ、アクチュエータ４５は軸線５５まわりに第３アーム３５を揺動させ、アクチュエータ４６は軸線５６まわりに先端部３６を旋回させる。
【００２２】
なお、ロボット２２の具体的な構成は適宜変更可能である。例えばロボット２２は、上記６軸の垂直多関節ロボットに更に１軸の関節を追加した７軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。また、ロボット２２は所謂パラレルリンク型のロボットであってもよい。
【００２３】
図１に戻り、定置ロボット３０は、作業エリアの床面などに定置される。定置ロボット３０の具体例としては、ロボット２２と同様に、垂直多関節ロボット、スカラー型の多関節ロボット、パラレルリンク型のロボット等が挙げられる。ＮＣ工作機械６０は、マシン指令が含む加工指令に応じて、切削加工等の機械加工をワークに施す。環境センサ７０は、マシン指令が含むセンシング指令に応じて、システムの環境情報を取得する。環境センサ７０の具体例としては、システムの環境画像を取得するカメラ、システムの環境温度を取得する温度センサ等が挙げられる。コンベヤ８０は、マシン指令が含む搬送指令に応じて、ワークを搬送する。コンベヤ８０の具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。
【００２４】
ローカルコントローラ３００は、通信サーバ３と無線通信端末３０１を介して通信し、無線通信端末３０１を介して通信サーバ３から取得したマシン指令に応じてマシン本体１０にモーションを実現させる。また、ローカルコントローラ３００は、マシン本体１０から取得した応答情報を、無線通信端末３０１を介して通信サーバ３にフィードバックする。無線通信端末３０１は、ローカルコントローラ３００からの指令に従って、無線通信基地局２０１と無線通信ネットワーク７を介して通信する。
【００２５】
第５世代移動通信システム（５Ｇ）の実用化等により、高速無線通信が可能となったため、無線通信を介したマシン制御の実現可能性も高まっている。マシン制御においては、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシン４の制御とを所定のコントロールサイクルで繰り返す必要がある。上述のようにマシン指令が無線通信ネットワーク７を介して送受信される場合、無線通信に起因して、マシン４側におけるマシン指令の受信タイミングのゆらぎが拡大し、マシン４側においてマシン指令をコントロールサイクルで受信するのが困難になる可能性がある。また、応答情報が無線通信ネットワーク７を介して送受信される場合、無線通信に起因して、コントローラ１００側における応答情報の受信タイミングのゆらぎが拡大し、コントローラ１００側において応答情報をコントロールサイクルで受信するのが困難になる可能性がある。
【００２６】
これに対し、マシン制御システム１は、コントローラ側（無線通信ネットワーク７のコントローラ１００側）から無線通信ネットワーク７を介して送信されたマシン指令を、その使用タイミングまでマシン側（無線通信ネットワーク７のマシン４側）でバッファリングするように構成されていてもよい。この場合、コントローラ側からのマシン指令の送信を前倒し、マシン側におけるマシン指令の受信タイミングから当該マシン指令の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファしたマシン指令をコントロールサイクルに同期したタイミングで使用することができる。
【００２７】
また、マシン制御システム１は、マシン側から無線通信ネットワーク７を介して送信された応答情報を、その使用タイミングまでコントローラ側でバッファリングするように構成されていてもよい。この場合、マシン側からの応答情報の送信を前倒し、コントローラ側における応答情報の受信タイミングから当該応答情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした応答情報をコントロールサイクルに同期したタイミングで使用することができる。
【００２８】
以上のように、マシン指令をその使用タイミングまでマシン側でバッファリングし、応答情報をその使用タイミングまでコントローラ側でバッファリングする構成によれば、応答情報の取得と、応答情報に基づくモーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシン４の制御とをコントロールサイクルで繰り返すことが可能となる。
【００２９】
以下、コントローラ１００と、通信コントローラ２００と、ローカルコントローラ３００との構成をより詳細に例示する。
【００３０】
（コントローラ）
コントローラ１００は、対応するマシン４（以下、「管轄マシン４」という。）が送信した応答情報を、有線通信ネットワーク８を介して通信サーバ３から受信することと、受信した応答情報に基づいてモーションプログラムを実行し、管轄マシン４に対するマシン指令を生成することと、マシン指令を、有線通信ネットワーク８を介して通信サーバ３に送信することと、を実行するように構成されている。
【００３１】
例えば図４に示すように、コントローラ１００は、機能上の構成（以下、「機能ブロック」という。）として、プログラム記憶部１１１と、受信情報記憶部１１２と、モーションモジュール１１３と、同期通信部１１４と、非同期通信部１１５と、コントローラ側タイミング調整部１１６とを有する。
【００３２】
プログラム記憶部１１１は、モーションプログラムを記憶する。モーションプログラムは、時系列の複数のモーション指令を含む。モーション指令は、例えば目標位置・姿勢への変位命令である。動作命令は、目標位置・姿勢への到達時刻の指定を含んでいてもよし、目標位置・姿勢への変位速度の指定を含んでいてもよい。モーション指令は、目標速度での変位命令であってもよい。この場合、モーション指令は、目標速度での変位期間の指定を含んでもよい。
【００３３】
受信情報記憶部１１２は、通信サーバ３の通信コントローラ２００からの受信情報を記憶する。受信情報は、上記応答情報を含む。
【００３４】
モーションモジュール１１３は、コントロールサイクルでモーションプログラムを実行し、管轄マシン４に対するマシン指令を生成する。モーションプログラムを実行することは、管轄マシン４のモーションをモーション指令に追従させるようにマシン指令を算出することを含む。モーションモジュール１１３は、受信情報記憶部１１２が記憶する応答情報に基づいてモーションプログラムを実行してもよい。例えばモーションモジュール１１３は、受信情報記憶部１１２が記憶する応答情報に基づく管轄マシン４のモーション実績を算出し、モーション実績をモーション指令に追従させるようにマシン指令を算出する。マシン指令の具体例としては、速度指令又は駆動力指令（トルク指令を含む。）等が挙げられる。
【００３５】
同期通信部１１４は、有線通信ネットワーク８を介して、マシン指令を通信コントローラ２００に送信する。「同期通信」は、コントロールサイクルに同期した定周期通信を意味する。同期通信は、１コントロールサイクルごとに実行する通信、及び所定数のコントロールごとに実行する通信を含む。後述するように、同期通信部１１４が送信したマシン指令は管轄マシン４のローカルコントローラ３００（以下、「管轄ローカルコントローラ３００」という。）においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、同期通信部１１４によるマシン指令の送信自体は、コントロールサイクルに同期していなくてもよい。
【００３６】
非同期通信部１１５は、他のノードに対する非同期通信データを、通信コントローラ２００を経由せずに有線通信ネットワーク８を介して他のノードに送信する。「非同期通信」は、コントロールサイクルとの同期が必須ではない通信を意味するが、コントロールサイクルに同期していてもよい。他のノードは、他のコントローラ１００であってもよいし、複数のコントローラ１００とは別のノードであってもよい。別のノードの具体例としては、アプリサーバ６が挙げられる（図１参照）。アプリサーバ６は、有線通信ネットワーク８を介してコントローラサーバ２に接続されたコンピュータである。アプリサーバ６は、コントローラサーバ２に組み込まれていてもよいし、通信サーバ３に組み込まれていてもよい。
【００３７】
アプリサーバ６は、マシン指令、応答情報等の制御情報を複数のコントローラ１００から収集し、蓄積するデータ収集アプリケーションを有する。アプリサーバ６は、データ収集アプリケーションが蓄積した制御情報に基づいて、複数のマシン４のモーションを仮想空間上でシミュレーションするシミュレータアプリケーションを更に有してもよい。アプリサーバ６は、データ収集アプリケーションが蓄積した制御情報に基づく機械学習により、学習済みモデルを生成する学習アプリケーションを更に有してもよい。学習済みモデルの具体例としては、制御情報の入力に応じてマシン４の正常度を出力する診断モデル等が挙げられる。アプリサーバ６は、制御情報と学習済みモデルとに基づいて、上記正常度等の出力情報を生成し、出力情報をコントローラ１００に送信する分析アプリケーションを更に有してもよい。非同期通信部１１５は、シミュレータアプリケーション、学習アプリケーション、分析アプリケーション等の実行結果を、通信コントローラ２００を経由せずに有線通信ネットワーク８を介してアプリサーバ６から取得してもよい。
【００３８】
コントローラ１００は、応答情報を、その使用タイミングまでバッファリングするように構成されていてもよい。例えばコントローラ１００は、コントローラ側タイミング調整部１１６を更に有する。コントローラ側タイミング調整部１１６は、管轄マシン４から受信した応答情報を記憶し、当該応答情報に付加された第２サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出す。第２サイクル情報は、応答情報の使用タイミング（例えば、当該応答情報を使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。）を示す情報である。第２サイクル情報は、使用時サイクル数自体であってもよいし、応答情報が取得されたタイミングにおける管轄ローカルコントローラ３００のコントロールサイクル数（以下、「取得時サイクル数」という。）であってもよい。
【００３９】
第２サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部１１６は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出すことは、当該コントロールサイクルにおいて使用可能なタイミングで当該応答情報を呼び出すことを意味する。このため、当該コントロールサイクルにおいて使用されるように、当該コントロールサイクルに先立って当該応答情報を呼び出すことも、当該コントロールサイクルにおいて当該応答情報を呼び出すことに含まれる。第２サイクル情報が上記取得時サイクル数である場合、コントローラ側タイミング調整部１１６は、第２サイクル情報に基づいて（例えば所定数を加算して）使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。
【００４０】
コントローラ側タイミング調整部１１６は、呼び出した応答情報を同期通信部１１４に出力し、同期通信部１１４は当該応答情報を受信情報記憶部１１２に格納する。これにより、コントローラ１００のモーションモジュール１１３は、コントローラ側タイミング調整部１１６が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
【００４１】
コントローラ１００は、上記コントロールサイクルを生成することと、当該コントロールサイクルのサイクルタイミングを管轄マシン４に送信することとを更に実行するように構成されていてもよい。後述するように、サイクルタイミングは、コントロールサイクルに同期したコントロールサイクルを管轄マシン４において生成するのに用いられる。例えばコントローラ１００は、コントローラ側時刻生成部１２１と、コントローラ側サイクル生成部１２２と、タイミング送信部１２３と、サイクルカウンタ１２４とを更に有してもよい。
【００４２】
コントローラ側時刻生成部１２１は、時刻サーバ５が生成した時刻（以下、「グローバル時刻」という。）に同期して、コントローラ側時刻を生成する。時刻サーバ５は、有線通信ネットワーク８を介してコントローラサーバ２に接続されたコンピュータであり、グローバル時刻を出力する。時刻サーバ５は、コントローラサーバ２に組み込まれていてもよいし、通信サーバ３に組み込まれていてもよい。例えばコントローラ側時刻生成部１２１は、有線通信ネットワーク８を介したＴＳＮ（Ｔｉｍｅ  Ｓｅｎｓｉｔｉｖｅ  Ｎｅｔｗｏｒｋｉｎｇ）通信等、時刻同期性を保証する通信によって同期通信部１１４が時刻サーバ５から受信したグローバル時刻を取得し、取得したグローバル時刻に同期してコントローラ側時刻を生成する。例えばコントローラ側時刻生成部１２１は、タイマ１９５（後述）がカウントする時刻を、グローバル時刻に合わせる。
【００４３】
コントローラ側サイクル生成部１２２は、コントローラ側時刻に基づいて、コントロールサイクルを生成する。例えばコントローラ側サイクル生成部１２２は、コントローラ時刻に基づいて、コントロールサイクルの開始タイミングをセットし、コントローラ側時刻が当該開始タイミングに達した時点から、コントロールサイクルでサイクルパルスを繰り返し生成する。
【００４４】
タイミング送信部１２３は、コントロールサイクルのサイクルタイミングを、通信コントローラ２００を介して管轄ローカルコントローラ３００に送信する。サイクルタイミングは、コントロール側時刻におけるコントロールサイクルの位相を示す情報である。例えばサイクルタイミングは、コントローラ側サイクル生成部１２２によるサイクルパルスの生成タイミングである。タイミング送信部１２３は、コントローラ側サイクル生成部１２２がコントロールサイクルの生成を開始するのに先立って、上記開始タイミングをサイクルタイミングとして管轄ローカルコントローラ３００に送信してもよいし、コントローラ側サイクル生成部１２２がコントロールサイクルの生成を開始した後に、２番目以降のサイクルパルスの生成タイミングをサイクルタイミングとして管轄ローカルコントローラ３００に送信してもよい。タイミング送信部１２３は、サイクルタイミングをマスタタイミングとして他のコントローラ１００に送信してもよい。この場合、他のコントローラ１００のコントローラ側サイクル生成部１２２は、有線通信ネットワーク８を介してマスタタイミングを取得し、取得したマスタタイミングと、コントローラ側時刻とに基づいてコントロールサイクルを生成してもよい。例えばコントローラ側サイクル生成部１２２は、取得したマスタタイミングに基づき上記開始タイミングをセットしてもよい。
【００４５】
タイミング送信部１２３は、管轄ローカルコントローラ３００のマシン側タイミング調整部３１５（後述）がコントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを管轄ローカルコントローラ３００に再度送信してもよい。例えばタイミング送信部１２３は、管轄ローカルコントローラ３００からのセット完了通知の受信を待機し、セット完了通知を受信しないままコントローラ側時刻がサイクルタイミングに達した場合に、マシン側タイミング調整部３１５がコントロールサイクルの生成に失敗したと判定する。セット完了通知は、管轄ローカルコントローラ３００における開始タイミングのセットが完了したことの通知である。
【００４６】
サイクルカウンタ１２４は、コントローラ側サイクル生成部１２２が生成したコントロールサイクル数（例えば上記サイクルパルスの数）をカウントする。モーションモジュール１１３は、サイクルカウンタ１２４によりカウントされたコントロールサイクル数に基づいてモーションプログラムを実行する。例えばモーションモジュール１１３は、コントロールサイクル数がカウントアップされる度に、実行対象を現在実行中のモーション指令から次のモーション指令に変更する。
【００４７】
コントローラ１００は、コントロールサイクルに同期した通信サイクルを生成するように構成されていてもよい。例えばコントローラ１００は、通信サイクル生成部１３１と、サイクルカウンタ１３２とを更に有してもよい。
【００４８】
通信サイクル生成部１３１は、コントロールサイクルに同期した通信サイクルを生成する。例えば通信サイクル生成部１３１は、コントローラ側時刻と、コントロールサイクルのサイクルタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部１３１は、サイクルタイミングに基づいて、コントロールサイクルの開始タイミングに同期した開始タイミングをセットし、コントローラ側時刻が当該開始タイミングに達した時点から、通信サイクルでサイクルパルスを繰り返し生成する。なお、コントロールサイクルの開始タイミングに同期した開始タイミングは、コントロールサイクルの開始タイミングに対して所定期間（例えばコントロールサイクルのサイクル長の半分）ずれた開始タイミングを含む。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数倍（１倍を含む）である。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数分の１であってもよい。
【００４９】
サイクルカウンタ１３２は、通信サイクル生成部１３１が生成した通信サイクル数（例えば上記サイクルパルスの数）をカウントする。通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでコントローラ側タイミング調整部１１６は、コントロールサイクル数が使用時サイクル数となるコントロールサイクルにおいて応答情報を呼び出すことを、通信サイクル数に基づいて行ってもよい。
【００５０】
コントローラ１００は、マシン指令に対し、その使用タイミングを示す情報を付加するように構成されていてもよい。例えばコントローラ１００は、付加部１２５を更に有してもよい。付加部１２５は、マシン指令に第１サイクル情報を付加する。第１サイクル情報が付加されたマシン指令を受信した管轄ローカルコントローラ３００は、第１サイクル情報に基づいて上記使用タイミング（例えば、当該マシン指令を使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。）を検知し、当該使用タイミングまで当該マシン指令をバッファリングする。例えば付加部１２５は、現在のコントロールサイクル数に基づいて使用時サイクル数を算出し、使用時サイクル数自体を第１サイクル情報としてマシン指令に付加する。一例として、付加部１２５は現在のサイクル数に所定数を加算して使用時サイクル数を算出する。付加部１２５は、現在のコントロールサイクル数を第１サイクル情報としてマシン指令に付加してもよい。この場合、管轄マシン４が第１サイクル情報に基づいて（例えば所定数を加算して）使用時サイクル数を算出する。
【００５１】
コントローラ１００は、マシン指令に含まれる第１サイクル情報に基づいて当該マシン指令の送信遅れを検出するように構成されていてもよい。また、コントローラ１００は、応答情報に含まれる第２サイクル情報に基づいて当該応答情報の受信遅れを検出するように構成されていてもよい。例えばコントローラ１００は、サイクルチェック部１３３を更に有してもよい。
【００５２】
サイクルチェック部１３３は、マシン指令に含まれる第１サイクル情報に基づいて、当該マシン指令の送信遅れを検出する。マシン指令の送信遅れは、ローカルコントローラ３００によるマシン指令の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部１３３は、同期通信部１１４がマシン指令を送信する際に、現在のコントロールサイクル数が、当該マシン指令の上記使用時サイクル数以上となっている場合にマシン指令の送信遅れを検出する。
【００５３】
サイクルチェック部１３３は、応答情報に含まれる第２サイクル情報に基づいて、当該応答情報の受信遅れを検出してもよい。応答情報の受信遅れは、コントローラ側タイミング調整部１１６による応答情報の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部１３３は、管轄マシン４から応答情報を受信した後に、現在のコントロールサイクル数が、当該応答情報の上記使用時サイクル数以上となっている場合に応答情報の受信遅れを検出する。
【００５４】
上述したように、通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでサイクルチェック部１３３は、マシン指令の送信遅れを第１サイクル情報と通信サイクル数とに基づいて検出し、応答情報の受信遅れを第２サイクル情報と通信サイクル数とに基づいて検出してもよい。
【００５５】
サイクルチェック部１３３は、マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルしてもよい。例えばコントローラ側タイミング調整部１１６は、マシン指令の送信遅れを検出した場合に、通信コントローラ２００への当該マシン指令の送信に先立って、当該マシン指令を破棄する。サイクルチェック部１３３は、応答情報の受信遅れを検出した場合に、当該応答情報を破棄してもよい。
【００５６】
同期通信部１１４は、有線通信ネットワーク８を介して、複数のコントローラ１００における他のコントローラ１００のコントローラ側タイミング調整部１１６に同期通信データを送信してもよい。同期通信データの具体例としては、管轄マシン４のモーションと、他のコントローラ１００が対応するマシン４（以下、「他のマシン４」という。）のモーションとを協調させるために用いられる管轄マシン４のステータス情報（例えば管轄マシン４へのマシン指令又は管轄マシン４からの応答情報）が挙げられる。
【００５７】
同期通信部１１４が、他のコントローラ１００のコントローラ側タイミング調整部１１６に同期通信データを送信する場合、付加部１２５は、同期通信データに第１サイクル情報を付加してもよい。
【００５８】
第１サイクル情報が付加された同期通信データを受信した他のコントローラ１００のコントローラ側タイミング調整部１１６は、第１サイクル情報に基づいて当該同期通信データの使用タイミング（例えば、当該同期通信データを使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。）を検知し、当該使用タイミングまで当該同期通信データをバッファリングする。例えば付加部１２５は、現在のコントロールサイクル数に基づいて使用時サイクル数を算出し、使用時サイクル数自体を第１サイクル情報として同期通信データに付加する。一例として、付加部１２５は現在のサイクル数に所定数を加算して使用時サイクル数を算出する。付加部１２５は、現在のコントロールサイクル数（以下、「付加時サイクル数」という。）を第１サイクル情報として同期通信データに付加してもよい。
【００５９】
他のコントローラ１００のコントローラ側タイミング調整部１１６は、同期通信データを記憶し、当該同期通信データに付加された第１サイクル情報に対応するコントロールサイクルにおいて当該同期通信データを呼び出す。第１サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部２１３は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。第１サイクル情報が上記付加時サイクル数である場合、コントローラ側タイミング調整部２１３は、第１サイクル情報に基づいて（例えば所定数を加算して）使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。
【００６０】
コントローラ側タイミング調整部１１６は、呼び出した同期通信データを同期通信部１１４に出力し、同期通信部１１４は当該同期通信データを受信情報記憶部１１２に格納する。これにより、他のコントローラ１００のモーションモジュール１１３は、コントローラ側タイミング調整部１１６が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
【００６１】
このように、同期通信データは、他のコントローラ１００のコントローラ側タイミング調整部１１６においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、同期通信部１１４による同期通信データの送信自体は、コントロールサイクルに同期していなくてもよい。
【００６２】
同期通信部１１４が送信するデータが、他のコントローラ１００宛ての同期通信データを含む場合、サイクルチェック部１３３は、同期通信データに含まれる第１サイクル情報に基づいて、当該同期通信データの送信遅れを検出してもよい。同期通信データの送信遅れは、他のコントローラ１００のコントローラ側タイミング調整部１１６による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部１３３は、同期通信部１１４が同期通信データを送信する際に、現在の通信サイクル数に対応するコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの送信遅れを検出する。サイクルチェック部１３３は、同期通信データの送信遅れを検出した場合に、当該同期通信データの送信をキャンセルしてもよい。
【００６３】
他のコントローラ１００のサイクルチェック部１３３が、同期通信データに含まれる第１サイクル情報に基づいて、当該同期通信データの受信遅れを検出してもよい。同期通信データの受信遅れは、コントローラ側タイミング調整部１１６による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部１３３は、コントローラ側タイミング調整部１１６宛ての同期通信データを受信した際に、現在のコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの受信遅れを検出する。サイクルチェック部１３３は、同期通信データの受信遅れを検出した場合に、当該同期通信データを破棄してもよい。
【００６４】
コントローラ１００は、同期通信部１１４が送信するデータが管轄マシン４宛てであるか他のコントローラ１００宛てであるかに基づいて、当該データの送信先を切り替えるように構成されていてもよい。例えばコントローラ１００は、スイッチ１３４を有する。
【００６５】
スイッチ１３４は、同期通信部１１４が送信するデータが管轄マシン４宛てであれば、通信サーバ３を介して管轄ローカルコントローラ３００へ当該データを送信し、当該データが他のコントローラ１００宛てであれば、有線通信ネットワーク８を介して、他のコントローラ１００のコントローラ側タイミング調整部１１６へ当該データを送信する。
【００６６】
（ローカルコントローラ）
ローカルコントローラ３００は、通信サーバ３を介してマシン指令を受信することと、マシン指令に基づいて、マシン本体１０にモーションを実現させることと、を実行するように構成されている。例えば図５に示すように、ローカルコントローラ３００は、機能ブロックとして、端末通信部３１４と、マシン側タイミング調整部３１５と、指令記憶部３１１と、マシン制御部３１３と、応答情報記憶部３１２とを有する。
【００６７】
端末通信部３１４は、無線通信ネットワーク７を介して、通信サーバ３からマシン指令を受信する。指令記憶部３１１は、端末通信部３１４が受信したマシン指令を記憶する。マシン制御部３１３は、指令記憶部３１１が記憶するマシン指令に基づいて、マシン本体１０にモーションを実現させ、マシン本体１０が実現したモーションに基づく応答情報を取得して応答情報記憶部３１２に格納する。
【００６８】
例えばマシン制御部３１３は、マシン本体１０の動作をマシン指令に追従させる。例えばマシン制御部３１３は、指令記憶部３１１が記憶するマシン指令と、応答情報記憶部３１２が記憶する過去の応答情報との偏差を縮小するようにマシン本体１０を駆動し、これに応じたマシン本体１０の応答情報を取得して応答情報記憶部３１２に格納する。一例として、マシン指令が速度指令である場合、マシン制御部３１３は、応答情報記憶部３１２が記憶する応答情報が示す動作速度を速度指令に追従させるようにマシン本体１０を駆動する。マシン指令が駆動力指令である場合、マシン制御部３１３は、応答情報記憶部３１２が記憶する応答情報が示す駆動力を駆動力指令に追従させるようにマシン本体１０を駆動する。
【００６９】
マシン制御部３１３は、コントロールサイクルよりも短いサイクル長のマシンサイクルでマシン本体１０を制御してもよい。各マシンサイクルにおいて、マシン制御部３１３は、マシン指令と、応答情報記憶部３１２が記憶する過去の応答情報との偏差を縮小するようにマシン本体１０を駆動し、これに応じたマシン本体１０の応答情報を取得して応答情報記憶部３１２に格納する。マシンサイクルのサイクル長は、例えばコントロールサイクルのサイクル長の整数分の１である。
【００７０】
例えばマシン制御部３１３は、中間コントローラ３３１と、サーボ３３２とを有する。中間コントローラ３３１は、マシン指令と、応答情報記憶部３１２が記憶する過去の応答情報との偏差を縮小するように、マシン本体１０の各アクチュエータに対する駆動データ（例えば位置指令、速度指令、又は駆動力指令）をマシンサイクルで生成する。サーボ３３２は、駆動データに基づいて、マシン本体１０の各アクチュエータに駆動電力を出力する。サーボ３３２は、マシンサイクルよりも短いサイクル長のサーボサイクルで駆動データに基づく駆動電力を出力してもよい。なお、マシン制御部３１３は、中間コントローラ３３１とサーボ３３２との少なくとも一方を有していればよい。マシン制御部３１３がサーボ３３２を有しない場合、マシン制御部３１３は、上記駆動データをマシン本体１０に出力し、マシン本体１０が、駆動データに基づいて各アクチュエータの駆動電力を生成する。また、マシン制御部３１３が中間コントローラ３３１を有しない場合、コントローラ１００が上記駆動データをマシン指令として生成し、管轄マシン４に送信する。
【００７１】
例えばマシン本体１０が上記移動ロボット２０又は定置ロボット３０である場合、中間コントローラ３３１は、先端部３６の目標位置・目標姿勢及び目標速度等を含むマシン指令を取得し、逆運動学演算により、アクチュエータ４１，４２，４３，４４，４５，４６の位置指令及び速度指令を含む駆動データを生成してもよい。中間コントローラ３３１は、アクチュエータ４１，４２，４３，４４，４５，４６の目標位置及び目標速度を含むマシン指令を取得し、中間コントローラはアクチュエータ４１，４２，４３，４４，４５，４６の駆動力指令を含む駆動データを生成してもよい。また、中間コントローラ３３１は、時系列に並ぶ複数のマシン指令に基づいて駆動データを生成してもよい。
【００７２】
端末通信部３１４は、コントロールサイクルごとに、応答情報記憶部３１２が記憶する応答情報を、無線通信ネットワーク７を介して通信サーバ３に送信する。
【００７３】
ローカルコントローラ３００は、マシン指令を、その使用タイミングまでバッファリングするように構成されていてもよい。例えばローカルコントローラ３００は、マシン側タイミング調整部３１５を更に有する。
【００７４】
マシン側タイミング調整部３１５は、端末通信部３１４が受信したマシン指令を記憶し、当該マシン指令に付加された第１サイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出す。第１サイクル情報が、上記使用時サイクル数である場合、マシン側タイミング調整部３１５は、コントロールサイクル数が使用時サイクル数となるコントロールサイクルにおいて当該マシン指令を呼び出す。コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該マシン指令を呼び出すことは、当該コントロールサイクルにおいて使用可能なタイミングで当該マシン指令を呼び出すことを意味する。このため、当該コントロールサイクルにおいて使用されるように、当該コントロールサイクルに先立って当該マシン指令を呼び出すことも、当該コントロールサイクルにおいて当該マシン指令を呼び出すことに含まれる。第１サイクル情報が上記付加時サイクル数である場合、マシン側タイミング調整部３１５は、第１サイクル情報に基づいて（例えば所定数を加算して）使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該マシン指令を呼び出す。
【００７５】
マシン側タイミング調整部３１５は、呼び出したマシン指令を指令記憶部３１１に格納する。これにより、マシン制御部３１３によるマシン本体１０の制御は、マシン側タイミング調整部３１５が呼び出したマシン指令に基づいて行われることとなる。
【００７６】
ローカルコントローラ３００は、対応するコントローラ１００におけるコントロールサイクルに同期したコントロールサイクルを生成するように構成されていてもよい。例えばローカルコントローラ３００は、マシン側時刻生成部３２１と、マシン側サイクル生成部３２２と、サイクルカウンタ３２３とを更に有してもよい。
【００７７】
マシン側時刻生成部３２１は、上記グローバル時刻に同期してマシン側時刻を生成する。例えばマシン側時刻生成部３２１は、無線通信ネットワーク７を介したＴＳＮ通信等、時刻同期性を保証する通信によって端末通信部３１４が通信サーバ３から受信したグローバル時刻を取得し、取得したグローバル時刻に同期してマシン側時刻を生成する。マシン側時刻生成部３２１は、有線通信ネットワーク８を介して時刻サーバ５又は対応するコントローラ１００からグローバル時刻を取得してもよい。例えばマシン側時刻生成部３２１は、タイマ３９５（後述）がカウントする時刻を、グローバル時刻に合わせる。
【００７８】
マシン側サイクル生成部３２２は、無線通信ネットワーク７を介して端末通信部３１４が通信サーバ３から受信したサイクルタイミングを取得し、取得したサイクルタイミングに基づいて、対応するコントローラ１００におけるコントロールサイクルに同期したコントロールサイクルを生成する。例えばマシン側サイクル生成部３２２は、マシン側時刻と、サイクルタイミングとに基づいてコントロールサイクルを生成する。例えばマシン側サイクル生成部３２２は、サイクルタイミングに基づいて、対応するコントローラ１００におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットし、マシン側時刻が当該開始タイミングに達した時点から、コントロールサイクルでサイクルパルスを繰り返し生成する。マシン側サイクル生成部３２２は、開始タイミングのセットが完了した時点で、セット完了通知をコントローラ１００に送信してもよい。マシン側サイクル生成部３２２が生成するコントロールサイクルのサイクル長は、コントローラ１００におけるコントロールサイクルのサイクル長と同じである。
【００７９】
サイクルカウンタ３２３は、マシン側サイクル生成部３２２が生成したコントロールサイクル数（例えば上記サイクルパルスの数）をカウントする。
【００８０】
ローカルコントローラ３００は、端末通信部３１４が通信サーバ３に送信する応答情報に対し、その使用タイミングを示す情報を付加するように構成されていてもよい。例えばローカルコントローラ３００は、付加部３２４を更に有してもよい。付加部３２４は、応答情報に上記第２サイクル情報を付加する。上述したように、端末通信部３１４が送信した応答情報は対応するコントローラ１００のコントローラ側タイミング調整部１１６においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、端末通信部３１４による応答情報の送信自体は、コントロールサイクルに同期していなくてもよい。
【００８１】
ローカルコントローラ３００は、コントロールサイクルに同期したマシンサイクルを生成するように構成されていてもよい。例えばローカルコントローラ３００は、ローカルサイクル生成部３２５と、サイクルカウンタ３２６と、を更に有する。
【００８２】
ローカルサイクル生成部３２５は、マシン側時刻と、サイクルタイミングとに基づいてマシンサイクルを生成する。例えばマシン側サイクル生成部３２２は、サイクルタイミングに基づいて、対応するコントローラ１００におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットし、マシン側時刻が当該開始タイミングに達した時点から、マシンサイクルでサイクルパルスを繰り返し生成する。
【００８３】
サイクルカウンタ３２６は、ローカルサイクル生成部３２５が生成したマシンサイクル数（例えば上記サイクルパルスの数）をカウントする。
（通信コントローラ）
コントローラ側タイミング調整部１１６、通信サイクル生成部１３１、サイクルカウンタ１３２、サイクルチェック部１３３及びスイッチ１３４は、少なくともコントローラ１００と通信コントローラ２００との間（コントローラ１００内及び通信コントローラ２００内を含む）に設けられていればよく、必ずしもコントローラ１００に設けられていなくてもよい。以下、コントローラ側タイミング調整部、通信サイクル生成部、サイクルカウンタ、サイクルチェック部及びスイッチが通信コントローラ２００に設けられる場合の構成を例示する。この場合、コントローラ１００は、図６に示すように、コントローラ側タイミング調整部１１６、通信サイクル生成部１３１、サイクルカウンタ１３２、サイクルチェック部１３３及びスイッチ１３４を有しなくてもよい。図７に示すように、通信コントローラ２００は、機能ブロックとして、コントローラ側通信部２１１と、マシン側通信部２１２と、コントローラ側タイミング調整部２１３とを有する。
【００８４】
コントローラ側通信部２１１は、複数のコントローラ１００のそれぞれから、有線通信ネットワーク８を介してマシン指令又は同期通信データを受信し、コントローラ１００のそれぞれに対し、有線通信ネットワーク８を介して応答情報又は同期通信データを送信する。
【００８５】
マシン側通信部２１２は、複数のローカルコントローラ３００のそれぞれに対して、無線通信ネットワーク７を介してマシン指令を送信し、複数のローカルコントローラ３００のそれぞれから、無線通信ネットワーク７を介して応答情報を取得する。
【００８６】
コントローラ側タイミング調整部２１３は、マシン側通信部２１２が取得した応答情報を記憶し、当該応答情報に付加された第２サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出す。第２サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部２１３は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出すことは、当該コントロールサイクルにおいて使用可能なタイミングで当該応答情報を呼び出すことを意味する。このため、当該コントロールサイクルにおいて使用されるように、当該コントロールサイクルに先立って当該応答情報を呼び出すことも、当該コントロールサイクルにおいて当該応答情報を呼び出すことに含まれる。第２サイクル情報が上記取得時サイクル数である場合、コントローラ側タイミング調整部２１３は、第２サイクル情報に基づいて（例えば所定数を加算して）使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。
【００８７】
コントローラ側通信部２１１は、コントローラ側タイミング調整部２１３が呼び出した応答情報を、対応するコントローラ１００に対し、有線通信ネットワーク８を介して送信する。対応するコントローラ１００の同期通信部１１４は、受信した応答情報を受信情報記憶部１１２に格納する。これにより、対応するコントローラ１００のモーションモジュール１１３は、コントローラ側タイミング調整部２１３が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
【００８８】
通信コントローラ２００は、複数のコントローラ１００の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成するように構成されていてもよい。例えば通信コントローラ２００は、時刻生成部２２１と、通信サイクル生成部２２２と、サイクルカウンタ２２３とを更に有してもよい。
【００８９】
時刻生成部２２１は、上記グローバル時刻に同期して通信サーバ時刻を生成する。例えば時刻生成部２２１は、有線通信ネットワーク８を介したＴＳＮ通信等、時刻同期性を保証する通信によってコントローラ側通信部２１１が時刻サーバ５から受信したグローバル時刻を取得し、取得したグローバル時刻に同期して通信サーバ時刻を生成する。例えばコントローラ側時刻生成部１２１は、タイマ２９６（後述）がカウントする時刻を、グローバル時刻に合わせる。時刻サーバ５が通信サーバ３に組み込まれる場合、時刻生成部２２１は、グローバル時刻自体を通信サーバ時刻とする。
【００９０】
通信サイクル生成部２２２は、複数のコントローラ１００の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する。例えば通信サイクル生成部２２２は、通信サーバ時刻と、複数のコントローラ１００の少なくともいずれかが管轄ローカルコントローラ３００に送信したサイクルタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部２２２は、サイクルタイミングに基づいて、コントロールサイクルの開始タイミングに同期した開始タイミングをセットし、通信サーバ時刻が当該開始タイミングに達した時点から、通信サイクルでサイクルパルスを繰り返し生成する。なお、コントロールサイクルの開始タイミングに同期した開始タイミングは、コントロールサイクルの開始タイミングに対して所定期間（例えばコントロールサイクルのサイクル長の半分）ずれた開始タイミングを含む。
【００９１】
通信サイクル生成部２２２は、開始タイミングのセットが完了した時点で、セット完了通知をコントローラ１００に送信してもよい。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数倍（１倍を含む）である。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数分の１であってもよい。
【００９２】
サイクルカウンタ２２３は、通信サイクル生成部２２２が生成した通信サイクル数（例えば上記サイクルパルスの数）をカウントする。通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでコントローラ側タイミング調整部２１３は、コントロールサイクル数が使用時サイクル数となるコントロールサイクルにおいて応答情報を呼び出すことを、通信サイクル数に基づいて行ってもよい。
【００９３】
通信コントローラ２００は、上記マスタタイミングを生成するように構成されていてもよい。例えば通信コントローラ２００はタイミングマスタ２２４を有してもよい。タイミングマスタ２２４は、通信サーバ時刻に基づいてマスタタイミングを生成する。タイミングマスタ２２４は、生成したマスタタイミングを、有線通信ネットワーク８を介して複数のコントローラ１００の少なくとも一つに送信する。
【００９４】
通信コントローラ２００がタイミングマスタ２２４を有し、複数のコントローラ１００の少なくとも一つがマスタタイミングに基づいてコントロールサイクルを生成する場合、通信サイクル生成部２２２は、通信サーバ時刻と、マスタタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部２２２は、マスタタイミングに基づいて上記開始タイミングをセットしてもよい。複数のコントローラ１００の少なくとも一つにおけるコントロールサイクルの生成と、通信コントローラ２００における通信サイクルの生成とが、同一のマスタタイミングに基づいて行われることによって、通信サイクルが当該コントロールサイクルに同期する。
【００９５】
通信コントローラ２００は、マシン指令に含まれる第１サイクル情報に基づいて当該マシン指令の送信遅れを検出するように構成されていてもよい。また、通信コントローラ２００は、応答情報に含まれる第２サイクル情報に基づいて当該応答情報の受信遅れを検出するように構成されていてもよい。例えば通信コントローラ２００は、サイクルチェック部２２５を更に有してもよい。
【００９６】
サイクルチェック部２２５は、マシン指令に含まれる第１サイクル情報に基づいて、当該マシン指令の送信遅れを検出する。マシン指令の送信遅れは、ローカルコントローラ３００によるマシン指令の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部２２５は、マシン側通信部２１２がローカルコントローラ３００にマシン指令を送信する前に、現在の通信サイクル数に対応するコントロールサイクル数が、当該マシン指令の上記使用時サイクル数以上となっている場合にマシン指令の送信遅れを検出する。
【００９７】
サイクルチェック部２２５は、応答情報に含まれる第２サイクル情報に基づいて、当該応答情報の受信遅れを検出してもよい。応答情報の受信遅れは、コントローラ側タイミング調整部２１３による応答情報の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部２２５は、マシン側通信部２１２がマシン４から応答情報を受信した後に、現在の通信サイクル数に対応するコントロールサイクル数が、当該応答情報の上記使用時サイクル数以上となっている場合に応答情報の受信遅れを検出する。
【００９８】
上述したように、通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでサイクルチェック部２２５は、マシン指令の送信遅れを第１サイクル情報と通信サイクル数とに基づいて検出し、応答情報の受信遅れを第２サイクル情報と通信サイクル数とに基づいて検出してもよい。
【００９９】
サイクルチェック部２２５は、マシン指令の送信遅れを検出した場合に、マシン側通信部２１２による当該マシン指令の送信をキャンセルしてもよい。例えばサイクルチェック部２２５は、マシン指令の送信遅れを検出した場合に、マシン側通信部２１２による当該マシン指令の送信に先立って、当該マシン指令を破棄する。サイクルチェック部２２５は、応答情報の受信遅れを検出した場合に、当該応答情報を破棄してもよい。
【０１００】
通信コントローラ２００は、コントローラ１００から受信したデータが管轄マシン４宛てであるか他のコントローラ１００宛てであるかに基づいて、当該データの送信先を切り替えるように構成されていてもよい。この場合、コントローラ１００は、通信コントローラ２００に送信するデータにその宛先を付加するように構成されていてもよい。例えば通信コントローラ２００は、スイッチ２２６を有する。
【０１０１】
スイッチ２２６は、コントローラ側通信部２１１が一のコントローラ１００から受信したデータが管轄マシン４宛てであれば、マシン側通信部２１２により無線通信ネットワーク７を介して管轄ローカルコントローラ３００へ当該データを送信させ、当該データが他のコントローラ１００宛てであれば、コントローラ側通信部２１１により有線通信ネットワーク８を介して、当該他のコントローラ１００へ当該データを送信させる。
【０１０２】
スイッチ２２６が、コントローラ側通信部２１１により他のコントローラ１００に同期通信データを送信させる場合、コントローラ側タイミング調整部２１３は、同期通信データを記憶し、当該同期通信データに付加された第１サイクル情報に対応するコントロールサイクルにおいて当該同期通信データを呼び出す。第１サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部２１３は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。第１サイクル情報が上記付加時サイクル数である場合、コントローラ側タイミング調整部２１３は、第１サイクル情報に基づいて（例えば所定数を加算して）使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。
【０１０３】
コントローラ側通信部２１１は、コントローラ側タイミング調整部２１３が呼び出した同期通信データを、その宛先である他のコントローラ１００に対し、有線通信ネットワーク８を介して送信する。他のコントローラ１００の同期通信部１１４は、受信した同期通信データを受信情報記憶部１１２に格納する。これにより、他のコントローラ１００のモーションモジュール１１３は、コントローラ側タイミング調整部２１３が呼び出した同期通信データに基づいて、モーションプログラムを実行することとなる。
【０１０４】
コントローラ側通信部２１１がコントローラ１００から受信するデータが、他のコントローラ１００宛ての同期通信データを含む場合、サイクルチェック部２２５は、同期通信データに含まれる第１サイクル情報に基づいて、当該同期通信データの受信遅れを検出してもよい。同期通信データの受信遅れは、コントローラ側タイミング調整部２１３による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部２２５は、コントローラ側通信部２１１がコントローラ１００から同期通信データを受信した後に、現在の通信サイクル数に対応するコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの受信遅れを検出する。サイクルチェック部２２５は、同期通信データの受信遅れを検出した場合に、当該同期通信データを破棄してもよい。
【０１０５】
図８は、コントローラサーバ２、通信コントローラ２００、及びローカルコントローラ３００のハードウェア構成を例示するブロック図である。図８に示すように、コントローラ１００は、回路１９０を有する。回路１９０は、プロセッサ１９１と、メモリ１９２と、ストレージ１９３と、有線通信ポート１９４と、タイマ１９５とを有する。回路１９０が有する各構成要素の数は一つに限られない。
【０１０６】
ストレージ１９３は、管轄マシン４が送信した応答情報を、有線通信ネットワーク８を介して通信サーバ３から受信することと、受信した応答情報に基づいてモーションプログラムを実行し、管轄マシン４に対するマシン指令を生成することと、マシン指令を、有線通信ネットワーク８を介して通信サーバ３に送信することと、をコントローラサーバ２に実行させるプログラムを記憶している。当該プログラムがコントローラサーバ２に実行させる制御方法は、受信した応答情報を記憶し、当該応答情報に付加された第２サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことを更に含んでもよい。この場合、受信した応答情報に基づいてモーションプログラムを実行することは、第２サイクル情報に対応するコントロールサイクルにおいて呼び出した応答情報に基づいてモーションプログラムを実行することを含む。例えばストレージ１９３は、上述したコントローラ１００の各機能ブロックをコントローラサーバ２に構成させるためのプログラムを記憶している。
【０１０７】
メモリ１９２は、ストレージ１９３からロードしたプログラム等を一時的に記憶する。プロセッサ１９１は、演算結果をメモリ１９２に一時的に記憶しながら、メモリ１９２にロードされたプログラムを実行する。有線通信ポート１９４は、プロセッサ１９１からの指令に応じ、有線通信ネットワーク８を介して通信コントローラ２００と通信する。タイマ１９５は、クロックパルスのカウントにより経過時間を計測する。
【０１０８】
通信コントローラ２００は、回路２９０を有する。回路２９０は、プロセッサ２９１と、メモリ２９２と、ストレージ２９３と、有線通信ポート２９４と、無線通信ポート２９５と、タイマ２９６とを有する。
【０１０９】
ストレージ２９３は、複数のコントローラ１００のそれぞれから、有線通信ネットワーク８を介してマシン指令を受信することと、複数のマシン４のそれぞれに対し、無線通信ネットワーク７を介して前記マシン指令を送信することと、複数のマシン４のそれぞれから、無線通信ネットワーク７を介して応答情報を受信することと、複数のコントローラ１００のそれぞれに対し、有線通信ネットワーク８を介して応答情報を送信することと、を含む通信方法を通信コントローラ２００に実行させるプログラムを記憶している。当該プログラムが通信コントローラ２００に実行させる通信方法は、受信した応答情報を記憶し、当該応答情報に付加された第２サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことを更に含んでもよい。この場合、有線通信ネットワーク８を介して応答情報を送信することは、第２サイクル情報に対応するコントロールサイクルにおいて呼び出した応答情報を送信することを含む。例えばストレージ２９３は、上述した各機能ブロックを通信コントローラ２００に構成させるためのプログラムを記憶している。
【０１１０】
メモリ２９２は、ストレージ２９３からロードしたプログラム等を一時的に記憶する。プロセッサ２９１は、演算結果をメモリ２９２に一時的に記憶しながら、メモリ２９２にロードされたプログラムを実行する。有線通信ポート２９４は、プロセッサ２９１からの指令に応じて、有線通信ネットワーク８を介してコントローラサーバ２と通信する。無線通信ポート２９５は、プロセッサ２９１からの指令に応じて、無線通信基地局２０１及び無線通信端末３０１を介してローカルコントローラ３００と通信する。タイマ２９６は、クロックパルスのカウントにより経過時間を計測する。
【０１１１】
ローカルコントローラ３００は、回路３９０を有する。回路３９０は、プロセッサ３９１と、メモリ３９２と、ストレージ３９３と、無線通信ポート３９４と、タイマ３９５と、ドライバ回路３９６とを有する。
【０１１２】
ストレージ３９３は、通信サーバ３を介してマシン指令を受信することと、マシン指令に基づいて、マシン本体１０にモーションを実現させることと、を含む制御方法をローカルコントローラ３００に実行させるプログラムを記憶している。当該プログラムがローカルコントローラ３００に実行させる制御方法は、受信したマシン指令を記憶し、当該マシン指令に付加された第１サイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すことを更に含んでいてもよい。この場合、マシン指令に基づいて、マシン本体１０にモーションを実現させることは、第１サイクル情報に対応するコントロールサイクルにおいて呼び出したマシン指令に基づいて、マシン本体１０にモーションを実現させることを含む。例えばローカルコントローラ３００は、上述した各機能ブロックをローカルコントローラ３００に構成させるためのプログラムを記憶している。
【０１１３】
メモリ３９２は、ストレージ３９３からロードしたプログラム等を一時的に記憶する。プロセッサ３９１は、演算結果をメモリ３９２に一時的に記憶しながら、メモリ３９２にロードされたプログラムを実行する。無線通信ポート３９４は、プロセッサ３９１からの指令に応じて、無線通信端末３０１及び無線通信基地局２０１を介して通信コントローラ２００と通信する。タイマ３９５は、クロックパルスのカウントにより経過時間を計測する。ドライバ回路３９６は、プロセッサ３９１からの指令に応じてマシン本体１０に駆動電力を供給する。
【０１１４】
〔マシン制御手順〕
続いて、マシン制御方法の一例として、マシン制御システム１が実行するマシン制御手順を例示する。この手順は、コントロールサイクル、通信サイクル等のサイクル生成手順と、生成したサイクルでのマシン制御手順とを含む。
【０１１５】
（サイクル生成手順の概要）
サイクル生成手順は、コントローラ１００が、コントロールサイクルを生成することと、ローカルコントローラ３００が、上記コントロールサイクルに同期したコントロールサイクルを生成することとを含む。
【０１１６】
図９は、サイクル生成手順の概要を例示するタイミングチャートであり、各チャートの横軸は経過時間を表す。（ｉ）は、時刻サーバ５における情報処理タイミングを示し、（ｉｉ）は、コントローラ１００におけるコントロールサイクル生成の情報処理タイミングを示し、（ｉｉｉ）は、コントローラ１００における通信サイクル生成の情報処理タイミングを示し、（ｉｖ）は、無線通信端末３０１における情報処理タイミングを示し、（ｖ）は、ローカルコントローラ３００における情報タイミングを示している。
【０１１７】
まず、時刻ｐｔ１において、時刻サーバ５がグローバル時刻をコントローラ１００に送信する。コントローラ１００は、時刻ｐｔ２においてグローバル時刻を受信し、受信したグローバル時刻に同期したコントローラ側時刻を生成する。無線通信端末３０１は、時刻ｐｔ４においてグローバル時刻を受信し、ローカルコントローラ３００は、無線通信端末３０１が受信したグローバル時刻に同期したマシン側時刻を時刻ｐｔ５において生成する。
【０１１８】
コントローラ１００は、コントローラ側時刻に基づいてコントロールサイクルの開始タイミングを時刻ｐｔ１１でセットし、通信サイクルの開始タイミングを時刻ｐｔ１２でセットする。無線通信端末３０１は、時刻ｐｔ１３において無線通信基地局２０１を介して通信コントローラ２００からサイクルタイミングを受信し、ローカルコントローラ３００は、無線通信端末３０１が受信したサイクルタイミングに基づいて、時刻ｐｔ１４において上記開始タイミングに一致する開始タイミングをセットする。
【０１１９】
その後、コントローラ１００は、上記開始タイミングに該当する時刻ｐｔ２１においてコントロールサイクルｃ１の生成を開始し、上記開始タイミングに該当する時刻ｐｔ２２において通信サイクルｃ２の生成を開始し、ローカルコントローラ３００は、上記開始タイミングに該当する時刻ｐｔ２３においてコントロールサイクルｃ３の生成を開始する。以上でサイクル生成手順が完了する。
【０１２０】
以下、サイクル生成手順においてコントローラ１００が実行するコントロールサイクル及び通信サイクル生成手順と、ローカルコントローラ３００が実行するコントロールサイクル生成手順とをそれぞれ詳細に例示する。
【０１２１】
（コントローラにおけるサイクル生成手順）
図１０は、コントローラ１００におけるサイクル生成手順を例示するフローチャートである。図１０に示すように、コントローラ１００は、まずステップＳ０１，Ｓ０２，Ｓ０３，Ｓ０４，Ｓ０５を実行する。ステップＳ０１では、コントローラ側時刻生成部１２１が、同期通信部１１４によるグローバル時刻の受信を待機する。ステップＳ０２では、コントローラ側時刻生成部１２１が、同期通信部１１４が受信したグローバル時刻に同期してコントローラ側時刻を生成する。ステップＳ０３では、コントローラ側サイクル生成部１２２が、コントローラ側時刻に基づいて、コントロールサイクルの開始タイミングをセットする。また、通信サイクル生成部１３１が、コントローラ側時刻に基づいて、通信サイクルの開始タイミングをセットする。ステップＳ０４では、コントローラ側サイクル生成部１２２が、コントロールサイクルの開始フラグを「開始不可」とする。ステップＳ０５では、タイミング送信部１２３が、コントロールサイクルのサイクルタイミング（例えば上記開始タイミング）を、通信サーバ３を介して管轄ローカルコントローラ３００に送信する。タイミング送信部１２３は、サイクルタイミングをマスタタイミングとして他のコントローラ１００に送信してもよい。
【０１２２】
次に、コントローラ１００はステップＳ０６を実行する。ステップＳ０６では、タイミング送信部１２３が、管轄ローカルコントローラ３００からのセット完了通知を受信しているか否かを確認する。ステップＳ０６において、ローカルコントローラ３００からセット完了通知を受信していると判定した場合、コントローラ１００はステップＳ０７を実行する。ステップＳ０７では、コントローラ側サイクル生成部１２２が、コントロールサイクルの開始フラグを「開始可」とする。
【０１２３】
次に、コントローラ１００はステップＳ０８を実行する。ステップＳ０６において、管轄ローカルコントローラ３００からセット完了通知を受信していないと判定した場合、コントローラ１００は、ステップＳ０７を実行することなくステップＳ０８を実行する。ステップＳ０８では、コントローラ側サイクル生成部１２２が、コントロール側時刻が開始タイミングに達したかを確認する。
【０１２４】
ステップＳ０８において、コントロール側時刻が開始タイミングに達していないと判定した場合、コントローラ１００は処理をステップＳ０６に戻す。以後、コントロール側時刻が開始タイミングに達するまで、セット完了通知の受信確認が繰り返される。
【０１２５】
ステップＳ０８において、コントロール側時刻が開始タイミングに達していると判定した場合、コントローラ１００は、ステップＳ０９を実行する。ステップＳ０９では、コントローラ側サイクル生成部１２２が、開始フラグが「開始可」であるか否かを確認する。
【０１２６】
ステップＳ０９において、開始フラグが「開始可」ではないと判定した場合、コントローラ１００は処理をステップＳ０３に戻す。これにより、開始タイミングのセット以降の処理が再度実行される。ステップＳ０９において、開始フラグが「開始可」であると判定した場合、コントローラ１００はステップＳ１１を実行する。ステップＳ１１では、コントローラ側サイクル生成部１２２がコントロールサイクルの生成を開始し、タイミング送信部１２３がコントロールサイクル数のカウントを開始する。また、通信サイクル生成部１３１が通信サイクルの生成を開始し、サイクルカウンタ１３２が通信サイクルのカウントを開始する。以上でコントローラ１００におけるコントロールサイクルの生成手順が完了する。なお、ステップＳ１１において、通信サイクル生成部１３１は、コントローラ側サイクル生成部１２２によるコントロールサイクルの生成開始とずれたタイミングで通信サイクルの生成を開始してもよい。
【０１２７】
（ローカルコントローラにおけるコントロールサイクル生成手順）
図１１は、ローカルコントローラ３００におけるサイクル生成手順を例示するフローチャートである。図１１に示すように、ローカルコントローラ３００は、まずステップＳ３１，Ｓ３２，Ｓ３３を実行する。ステップＳ３１では、マシン側時刻生成部３２１が、端末通信部３１４によるグローバル時刻の受信を待機する。ステップＳ３２では、マシン側時刻生成部３２１が、端末通信部３１４が受信したグローバル時刻に同期してマシン側時刻を生成する。ステップＳ３３では、マシン側サイクル生成部３２２が、対応するコントローラ１００が送信したサイクルタイミング（例えば上記開始タイミング）を端末通信部３１４が受信するのを待機する。
【０１２８】
次に、ローカルコントローラ３００はステップＳ３４，Ｓ３５，Ｓ３６，Ｓ３７，Ｓ３８を実行する。ステップＳ３４では、マシン側サイクル生成部３２２が、端末通信部３１４が受信したサイクルタイミングに基づいて、対応するコントローラ１００におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットする。ステップＳ３５では、マシン側サイクル生成部３２２が、セット完了通知をコントローラ１００に送信する。ステップＳ３６では、マシン側サイクル生成部３２２が、マシン側時刻が開始タイミングに達するのを待機する。ステップＳ３７では、マシン側サイクル生成部３２２がコントロールサイクルの生成を開始し、サイクルカウンタ３２３がコントロールサイクル数のカウントを開始する。ステップＳ３８では、ローカルサイクル生成部３２５がマシンサイクルの生成を開始し、サイクルカウンタ３２６がマシンサイクル数のカウントを開始する。以上でローカルコントローラ３００におけるコントロールサイクルの生成手順が完了する。
【０１２９】
（サイクル生成手順の変形例）
上述したように、コントローラ１００は、有線通信ネットワーク８を介してマスタタイミングを取得し、取得したマスタタイミングと、コントローラ側時刻とに基づいてコントロールサイクルを生成してもよい。図１２は、マスタタイミングに基づくサイクル生成手順を示すフローチャートである。図１２に示すように、コントローラ１００は、まずステップＳ５１，Ｓ５２，Ｓ５３を実行する。ステップＳ５１では、コントローラ側時刻生成部１２１が、同期通信部１１４によるグローバル時刻の受信を待機する。ステップＳ５２では、コントローラ側時刻生成部１２１が、同期通信部１１４が受信したグローバル時刻に同期してコントローラ側時刻を生成する。ステップＳ５３では、コントローラ側サイクル生成部１２２が、マスタタイミングを同期通信部１１４が受信するのを待機する。
【０１３０】
次に、コントローラ１００はステップＳ５５，Ｓ５６，Ｓ５７，Ｓ５８を実行する。ステップＳ５５では、コントローラ側サイクル生成部１２２が、マスタタイミングに同期した開始タイミングをセットする。ステップＳ５６では、コントローラ側サイクル生成部１２２が、セット完了通知を通信コントローラ２００に送信する。ステップＳ５７では、コントローラ側サイクル生成部１２２が、コントローラ側時刻が開始タイミングに達するのを待機する。ステップＳ５８では、コントローラ側サイクル生成部１２２がコントローラサイクルの生成を開始し、タイミング送信部１２３がコントロールサイクル数のカウントを開始する。以上でコントローラ１００におけるコントロールサイクルの生成手順が完了する。
【０１３１】
（マシン制御手順の概要）
マシン制御手順は、コントローラ１００が、コントロールサイクルでモーションプリグラムを実行し、管轄マシン４に対するマシン指令を生成することと、マシン指令に第１サイクル情報を付加することと、マシン指令を通信コントローラ２００に送信することと、通信コントローラ２００が、マシン指令を受信することと、管轄ローカルコントローラ３００にマシン指令を送信することと、管轄ローカルコントローラ３００が、通信コントローラ２００からマシン指令を受信することと、受信したマシン指令を記憶し、当該マシン指令に付加された第１サイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すことと、呼び出したマシン指令に基づいて、マシン本体１０にモーションを実現させることと、を含む。
【０１３２】
また、マシン制御手順は、ローカルコントローラ３００が、マシン本体１０が実現したモーションに基づく応答情報を取得することと、応答情報に第２サイクル情報を付加することと、通信コントローラ２００に応答情報を送信することと、通信コントローラ２００又はコントローラ１００が、受信した応答情報を記憶し、当該応答情報に付加された第２サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、呼び出した当該応答情報に基づいてコントローラ１００がモーションプログラムを実行することと、を更に含んでもよい。
【０１３３】
図１３は、マシン制御手順の概要を例示するタイミングチャートであり、各チャートの横軸は経過時間を表す。（ｉ）は、モーションモジュール１１３における情報処理タイミングを示し、（ｉｉ）は、同期通信部１１４における情報処理タイミングを示し、（ｉｉｉ）は、コントローラ側タイミング調整部１１６における情報処理タイミングを示し、（ｉｖ）は、端末通信部３１４における情報処理タイミングを示し、（ｖ）は、マシン側タイミング調整部３１５における情報処理タイミングを示し、（ｖｉ）は、マシン制御部３１３における情報処理タイミングを示している。
【０１３４】
図１３において、サイクルｃ１１，ｃ１２，ｃ１３は、コントローラ側サイクル生成部１２２が順次生成するコントロールサイクルであり、サイクルｃ２１，ｃ２２，ｃ２３は、サイクルｃ１１，ｃ１２，ｃ１３に同期して通信サイクル生成部１３１が順次生成する通信サイクルであり、サイクルｃ３１，ｃ３２，ｃ３３は、サイクルｃ１１，ｃ１２，ｃ１３に同期してマシン側サイクル生成部３２２が順次生成するコントロールサイクルである。
【０１３５】
例えばモーションモジュール１１３は、サイクルｃ１１の時刻ｔ１０においてモーションプログラムを実行し、マシン指令を生成する。このマシン指令は、時刻ｔ１１において同期通信部１１４により送信され、時刻ｔ１２において端末通信部３１４により受信される。端末通信部３１４が受信したマシン指令は、時刻ｔ１３においてマシン側タイミング調整部３１５により記憶され、マシン指令に付加された第１サイクル情報に対応するコントロールサイクル（例えばサイクルｃ３３）において呼び出される。そして、呼び出されたマシン指令に基づいて、サイクルｃ３３の時刻ｔ１４において、マシン制御部３１３がマシン本体１０にモーションを実現させる。無線通信に起因して、時刻ｔ１２にはゆらぎが生じるが、時刻ｔ１２から時刻ｔ１４までの余裕により、時刻ｔ１２のゆらぎが吸収され、コントロールサイクルに同期した時刻ｔ１４でマシン指令が使用される。
【０１３６】
マシン制御部３１３は、サイクルｃ３１の時刻ｔ１１０においてマシン本体１０が実現したモーションに基づく応答情報を取得する。この応答情報は、時刻ｔ１１１において端末通信部３１４により送信され、時刻ｔ１１２においてコントローラ側タイミング調整部１１６により記憶され、応答情報に付加された第２サイクル情報に対応するコントロールサイクル（例えばサイクルｃ１３）において呼び出される。呼び出された応答情報は、サイクルｃ１３の直前の時刻ｔ１１３において同期通信部１１４により受信情報記憶部１１２に格納され、受信情報記憶部１１２に格納された応答情報に基づいて、サイクルｃ１３の時刻ｔ１１４においてモーションモジュール１１３がモーションプログラムを実行する。無線通信に起因して、時刻ｔ１１２にはゆらぎゆらぎが生じるが、時刻ｔ１１２から時刻ｔ１１４までの余裕により、時刻ｔ１１２のゆらぎが吸収され、コントロールサイクルに同期した時刻ｔ１１４で応答情報が使用される。
【０１３７】
以下、マシン制御手順を、コントローラ１００における制御手順と、ローカルコントローラ３００における制御手順とに分けて詳細に例示する。
【０１３８】
（コントローラにおける制御手順）
コントローラ１００における制御手順は、データ受信手順と、データ生成・送信手順とを含む。データ受信手順とデータ生成・送信手順とは並行して繰り返し実行される。データ受信手順は、必ずしもコントロールサイクルに同期して実行されなくてもよいが、データ生成・送信手順はコントロールサイクルに同期して実行される。
【０１３９】
図１４は、データ受信手順を例示するフローチャートである。図１４に示すように、コントローラ１００は、まずステップＳ９１，Ｓ９２を実行する。ステップＳ９１では、同期通信部１１４が通信コントローラ２００からのデータの受信を待機する。ステップＳ９２では、サイクルチェック部１３３が、データの受信遅れがないか否かを確認する。例えばサイクルチェック部１３３は、応答情報に付加された第２サイクル情報に基づいて、応答情報の送信遅れがないか否かを確認する。
【０１４０】
ステップＳ９２において、データの受信遅れがあると判定した場合、コントローラ１００はステップＳ９３を実行する。ステップＳ９３では、サイクルチェック部１３３が当該データを破棄する。
【０１４１】
ステップＳ９２において、データの受信遅れはないと判定した場合、コントローラ１００はステップＳ９４を実行する。ステップＳ９４では、サイクルチェック部１３３が、コントローラ側タイミング調整部１１６に当該データを記憶させる。ステップＳ９３，Ｓ９４を実行した後、コントローラ１００は処理をステップＳ９１に戻す。通信コントローラ２００は以上の手順を繰り返す。
【０１４２】
図１５は、データ生成・送信手順を例示するフローチャートである。コントローラ１００は、まずステップＳ７１，Ｓ７２，Ｓ７３，Ｓ７４，Ｓ７５を実行する。ステップＳ７１では、モーションモジュール１１３が、サイクルカウンタ１２４によるコントロールサイクル数のカウントアップを待機する。ステップＳ７２では、コントローラ側タイミング調整部１１６が、使用時サイクル数が現在のコントロールサイクル数に対応する受信データ（例えば応答情報及び同期通信データ）を呼び出す。ステップＳ７３では、モーションモジュール１１３が、モーションプログラムを実行し、管轄マシン４に対するマシン指令を生成する。例えばモーションモジュール１１３は、受信情報記憶部１１２が記憶する応答情報に基づく管轄マシン４のモーション実績を算出し、モーション実績をモーション指令に追従させるようにマシン指令を算出する。ステップＳ７４では、付加部１２５が、マシン指令に第１サイクル情報を付加する。ステップＳ７５では、同期通信部１１４が、有線通信ネットワーク８を介して、マシン指令を通信サーバ３に送信する。ステップＳ７５の具体的処理内容については後述する。
【０１４３】
次に、コントローラ１００はステップＳ７６，Ｓ７７，Ｓ７８を実行する。ステップＳ７６では、同期通信部１１４が、同期通信データを生成する。ステップＳ７７では、付加部１２５が、同期通信データに第１サイクル情報を付加する。ステップＳ７８では、同期通信部１１４が、有線通信ネットワーク８を介して、同期通信データを通信サーバ３に送信する。ステップＳ７８の具体的処理内容については後述する。その後、コントローラ１００は処理をステップＳ７１に戻す。コントローラ１００は、以上の手順を繰り返す。
【０１４４】
図１６は、ステップＳ７６，Ｓ７８におけるデータの送信手順を例示するフローチャートである。図１６に示すように、コントローラ１００は、まずステップＳ８２を実行する。ステップＳ８２では、サイクルチェック部１３３が、データの送信遅れがないか否かを確認する。例えばサイクルチェック部１３３は、マシン指令に付加された第１サイクル情報に基づいて、マシン指令の送信遅れがないか否かを確認し、同期通信データに付加された第１サイクル情報に基づいて、同期通信データの送信遅れがないか否かを確認する。
【０１４５】
ステップＳ８２において、データの送信遅れがあると判定した場合、コントローラ１００はステップＳ８３を実行する。ステップＳ８３では、サイクルチェック部１３３が当該データを破棄する。
【０１４６】
ステップＳ８２において、データの送信遅れがないと判定した場合、コントローラ１００はステップＳ８４を実行する。ステップＳ８４では、スイッチ１３４が、データが管轄マシン４宛てであるか、他のコントローラ１００宛てであるかを確認する。
【０１４７】
ステップＳ８４において、データが管轄マシン４宛てであると判定した場合、通信コントローラ２００はステップＳ８５を実行する。ステップＳ８５では、スイッチ１３４が、通信サーバ３を介して管轄マシン４へ当該データを送信する。
【０１４８】
ステップＳ８４において、データが他のコントローラ１００宛てであると判定した場合、通信コントローラ２００はステップＳ８６を実行する。ステップＳ８６では、スイッチ１３４が、有線通信ネットワーク８を介して、他のコントローラ１００のコントローラ側タイミング調整部１１６に当該データを送信する。ステップＳ８３，Ｓ８５，Ｓ８６を実行した後、コントローラ１００は処理をステップＳ８２に戻す。コントローラ１００は以上の手順を繰り返す。
【０１４９】
（ローカルコントローラにおける制御手順）
ローカルコントローラ３００における制御手順は、マシン指令の受信手順と、タイミング調整手順と、マシン制御手順とを含む。これらは並行して繰り返し実行される。マシン指令の制御手順は、必ずしもコントロールサイクルに同期して実行されなくてもいが、タイミング調整手順はコントロールサイクルに同期して実行される。マシン制御手順は、マシンサイクルに同期して実行される。
【０１５０】
図１７は、マシン指令の受信手順を例示するフローチャートである。図１７に示すように、ローカルコントローラ３００はステップＳ１１１，Ｓ１１２を実行する。ステップＳ１１１では、端末通信部３１４が、マシン指令の受信を待機する。ステップＳ１１２では、マシン側タイミング調整部３１５が、マシン指令を記憶する。その後、ローカルコントローラ３００は処理をステップＳ１１１に戻す。ローカルコントローラ３００は以上の手順を繰り返す。
【０１５１】
図１８は、タイミング調整手順を例示するフローチャートである。図１８に示すように、ローカルコントローラ３００は、ステップＳ１２１，Ｓ１２２，Ｓ１２３，Ｓ１２４を実行する。ステップＳ１２１では、マシン側タイミング調整部３１５が、サイクルカウンタ３２３によるコントロールサイクル数のカウントアップを待機する。ステップＳ１２２では、マシン側タイミング調整部３１５が、使用時サイクル数が現在のコントロールサイクル数に対応するマシン指令を呼び出し、指令記憶部３１１に格納する。これにより、指令記憶部３１１が記憶するマシン指令が更新される。ステップＳ１２３では、付加部３２４が、応答情報記憶部３１２が記憶する応答情報に第１サイクル情報を付加する。ステップＳ１２４では、端末通信部３１４が、応答情報を、有線通信ネットワーク８を介して通信コントローラ２００に送信する。その後、ローカルコントローラ３００は処理をステップＳ１２１に戻す。ローカルコントローラ３００は以上の手順を繰り返す。
【０１５２】
図１９は、マシン制御手順を例示するフローチャートである。図１９に示すように、ローカルコントローラ３００は、まずステップＳ１３１，Ｓ１３２を実行する。ステップＳ１３１では、マシン制御部３１３が、サイクルカウンタ３２６によるマシンサイクル数のカウントアップを待機する。ステップＳ１３２では、サイクルカウンタ３２６が、指令記憶部３１１が記憶するマシン指令が更新されたか否かを確認する。
【０１５３】
ステップＳ１３２において、指令記憶部３１１が記憶するマシン指令が更新されたと判定した場合、ローカルコントローラ３００はステップＳ１３３を実行する。ステップＳ１３３では、サイクルカウンタ３２６が、マシンサイクル数を初期値（例えばゼロ）にリセットする。
【０１５４】
次に、ローカルコントローラ３００はステップＳ１３４を実行する。ステップＳ１３２において、指令記憶部３１１が記憶するマシン指令が更新されていないと判定した場合、ローカルコントローラ３００は、ステップＳ１３３を実行することなくステップＳ１３４を実行する。ステップＳ１３４では、マシン制御部３１３が、マシン指令と、応答情報記憶部３１２が記憶する応答情報との偏差を縮小するように駆動データを生成する。
【０１５５】
次に、ローカルコントローラ３００はステップＳ１３５，Ｓ１３６を実行する。ステップＳ１３５では、マシン制御部３１３が、駆動データに基づいてマシン本体１０を駆動する。ステップＳ１３６では、マシン制御部３１３が、マシン本体１０が実現したモーションに基づく応答情報を取得し、応答情報記憶部３１２に格納する。その後、ローカルコントローラ３００は処理をステップＳ１３１に戻す。ローカルコントローラ３００は、以上の手順を繰り返す。
【０１５６】
〔本実施形態の効果〕
以上に説明したように、マシン制御システム１は、現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する１以上のマシン４と、仮想空間上に実装され、１以上のマシン４をそれぞれ制御する１以上のコントローラ１００と、１以上のコントローラ１００と有線通信ネットワーク８を介して通信し、１以上のマシン４と無線通信ネットワーク７を介して通信する通信サーバ３と、を備え、１以上のコントローラ１００のそれぞれは、コントロールサイクルでモーションプログラムを実行し、対応するマシン４に対するマシン指令を生成するモーションモジュール１１３と、マシン指令に第１サイクル情報を付加する付加部１２５と、マシン指令を通信サーバ３に送信する同期通信部１１４と、を有し、１以上のマシン４のそれぞれは、通信サーバ３からマシン指令を受信する端末通信部３１４と、端末通信部３１４が受信したマシン指令を記憶し、当該マシン指令に付加された第１サイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部３１５と、を有する。
【０１５７】
第５世代移動通信システム（５Ｇ）の実用化等により、高速無線通信が可能となったため、無線通信を介したマシン制御の実現可能性も高まっている。マシン制御においては、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシンの制御とを所定のコントロールサイクルで繰り返す必要がある。生成されたマシン指令が無線通信ネットワークを介して送信される場合、無線通信に起因して、マシン側におけるマシン指令の受信タイミングのゆらぎが拡大し、マシン側においてマシン指令をコントロールサイクルで受信するのが困難になる可能性がある。本マシン制御システム１によれば、通信サーバ３から無線通信ネットワーク７を介して送信されたマシン指令がマシン４側でバッファリングされ、第１サイクル情報に対応するコントロールサイクルにおいて呼び出される。このように、マシン指令をその使用タイミングまでバッファリングする機能によって、コントローラ１００側からのマシン指令の送信を前倒し、マシン４におけるマシン指令の受信タイミングから当該マシン指令の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファしたマシン指令をコントロールサイクルで呼び出すことができる。このため、無線通信を介してマシン指令が送信されるシステムにおいて、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシンの制御とをコントロールサイクルで繰り返すことが可能となる。従って、無線通信を介したマシン制御の実現に有効である。
【０１５８】
１以上のマシン４のそれぞれは、モーションを実現するマシン本体１０と、マシン側タイミング調整部３１５が呼び出したマシン指令に基づいて、マシン本体１０にモーションを実現させ、マシン本体１０が実現したモーションに基づく応答情報を取得するマシン制御部３１３と、応答情報に第２サイクル情報を付加する付加部３２４と、を更に有し、端末通信部３１４は、応答情報を通信サーバ３に送信し、マシン制御システム１は、１以上のコントローラ１００と通信サーバ３との間において、１以上のマシン４から受信した応答情報を記憶し、当該応答情報に付加された第２サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すコントローラ側タイミング調整部１１６，２１３を更に備え、モーションモジュール１１３は、コントローラ側タイミング調整部１１６，２１３が呼び出した応答情報に基づいて、モーションプログラムを実行してもよい。この場合、マシン４から無線通信ネットワークを介して送信された応答情報がコントローラ１００側でバッファリングされ、第１サイクル情報に対応するコントロールサイクルにおいて呼び出される。このように、応答情報をその使用タイミングまでバッファリングする機能によって、マシン４側からの応答情報の送信を前倒し、コントローラ１００側における応答情報の受信タイミングから当該応答情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした応答情報をコントロールサイクルで呼び出すことができる。このため、無線通信を介して応答情報が送信されるシステムにおいて、応答情報の受信をコントロールサイクルで繰り返すことが可能となる。従って、無線通信を介したマシン制御の実現に更に有効である。
【０１５９】
１以上のコントローラ１００のそれぞれは、コントロールサイクルのサイクルタイミングを対応するマシン４に送信するタイミング送信部１２３を更に有し、１以上のマシン４のそれぞれは、サイクルタイミングに基づいて、対応するコントローラ１００におけるコントロールサイクルに同期した当該マシン４におけるコントロールサイクルを生成するマシン側サイクル生成部３２２を更に有してもよい。この場合、サイクルタイミングに基づく同期処理の後は、コントローラ１００におけるコントロールサイクルに同期したコントロールサイクルがマシン４において生成される。このため、無線通信の負担を抑えつつ、マシン４におけるコントロールサイクルをコントローラにおけるコントロールサイクルに容易に同期させることができる。
【０１６０】
１以上のコントローラ１００のそれぞれは、時刻サーバ５が生成した時刻に同期して、コントローラ側時刻を生成するコントローラ側時刻生成部１２１と、コントローラ側時刻に基づいて、コントロールサイクルを生成するコントローラ側サイクル生成部１２２と、を更に有し、１以上のマシン４のそれぞれは、時刻サーバが生成した時刻に同期して、マシン側時刻を生成するマシン側時刻生成部３２１を更に有し、マシン側サイクル生成部３２２は、マシン側時刻生成部３２１が生成した時刻と、サイクルタイミングとに基づいて、コントロールサイクルを生成してもよい。この場合、コントローラ１００及びマシン４における時刻合わせを予め行っておくことで、マシン４におけるサイクルタイミングの受信タイミングにゆらぎが生じた場合であっても、マシン側時刻に基づいて、マシン４におけるコントロールサイクルを適切なタイミングで生成することができる。
【０１６１】
タイミング送信部１２３は、対応するマシン４のマシン側サイクル生成部３２２がコントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを当該マシン４に再度送信してもよい。この場合、より高い信頼性で、マシン４におけるコントロールサイクルをコントローラ１００におけるコントロールサイクルに同期させることができる。
【０１６２】
マシン制御部３１３は、マシン側タイミング調整部３１５が呼び出したマシン指令に基づいて、コントロールサイクルよりも短いサイクル長のマシンサイクルでマシン本体１０を制御してもよい。この場合、コントロールサイクルによるマシン指令の呼び出しの定周期性と、より細分化されたマシンサイクルによるマシンの適切な制御との両立を図ることができる。
【０１６３】
マシン制御システム１は、１以上のコントローラとして複数のコントローラ１００を備え、複数のコントローラ１００のそれぞれがコントローラ側タイミング調整部１１６を有してもよい。この場合、複数のコントローラ１００それぞれがと管轄マシン４との間で同期通信が可能になる一方で、同一のネットワークを利用するコントローラ１００とマシン４の複数の対間においては、コントロールサイクルを同期させる必要性が低くなり、システムを容易に構成することができる。
【０１６４】
複数のコントローラ１００における一のコントローラ１００の同期通信部１１４が送信するデータがマシン宛てであれば、通信サーバ３を介して、当該マシン４へ当該データを送信し、データが他のコントローラ１００宛てであれば、有線通信ネットワーク８を介して、他のコントローラ１００のコントローラ側タイミング調整部１１６へ当該データを送信するスイッチ１３４を更に備えてもよい。この場合、コントローラ１００とマシン４との間の同期通信と、コントローラ１００間の同期通信とに同期通信部１１４を適切に使い分けることができる。
【０１６５】
一のコントローラ１００は、他のコントローラ１００を含む他のノードに対する非同期通信データを、有線通信ネットワーク８を介して他のノードに送信する非同期通信部１１５を更に有してもよい。この場合、同期通信用の通信リソースを節約することができる。
【０１６６】
複数のコントローラ１００の少なくとも一つは、有線通信ネットワーク８を介して受信したマスタタイミングに基づいて、コントロールサイクルを生成するコントローラ側サイクル生成部１２２を更に有してもよい。この場合、コントローラ１００間においてコントロールサイクルを容易に同期させることができる。
【０１６７】
通信サーバ３は、マスタタイミングを生成するタイミングマスタ２２４を有し、コントローラ側サイクル生成部１２２は、タイミングマスタ２２４からマスタタイミングを受信してもよい。この場合、コントロールサイクルを同期させるべき複数のコントローラ１００のいずれにおいても、通信サーバ３のタイミングマスタ２２４が生成したタイミングマスタに基づいてコントロールサイクルを生成する同一の設定を採用することができる。このため、システムへのコントローラ１００の追加・削除が容易である。
【０１６８】
１以上のコントローラ１００と通信サーバ３との間において、マシン指令に含まれる第１サイクル情報に基づいて、当該マシン指令の送信遅れを検出するサイクルチェック部１３３，２２５を更に備えてもよい。この場合、コントロールサイクルに同期したマシン指令の送信の信頼性を向上させることができる。
【０１６９】
サイクルチェック部１３３は、マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルしてもよい。この場合、コントロールサイクルでの呼び出しに間に合わないマシン指令の送信をキャンセルすることで、通信サーバ３における無線通信リソースを節約することができる。
【０１７０】
１以上のコントローラ１００と通信サーバ３との間において、応答情報に含まれる第２サイクル情報に基づいて、当該応答情報の受信遅れを検出するサイクルチェック部１３３，２２５を更に備えてもよい。この場合、コントロールサイクルでの呼び出しに間に合わない応答情報を未然に検知し、例えば一つ前に呼び出された応答情報を代用して応答情報の欠落を防ぐ等の対処が可能となる。
【０１７１】
１以上のコントローラ１００と通信サーバ３との間において、１以上のコントローラ１００の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する通信サイクル生成部１３１，２２２を更に備え、サイクルチェック部１３３，２２５は、マシン指令に付加された第１サイクル情報と、通信サイクルのサイクル情報とに基づいて、マシン指令の送信遅れを検出してもよい。この場合、サイクルチェック部１３３，２２５による送信遅れの検出を容易に行うことができる。
【０１７２】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【０１７３】
１…マシン制御システム、２…コントローラサーバ、４…マシン、３…通信サーバ、１００…コントローラ、８…有線通信ネットワーク、７…無線通信ネットワーク、１０…マシン本体、１１３…モーションモジュール、１１４…同期通信部、１１５…非同期通信部、１２１…コントローラ側時刻生成部、１２２…コントローラ側サイクル生成部、１２３…タイミング送信部、５…時刻サーバ、１２５…付加部、２１１…コントローラ側通信部、２１２…マシン側通信部、１１６，２１３…コントローラ側タイミング調整部、１３１，２２２…通信サイクル生成部、２２４…タイミングマスタ、１３３，２２５…サイクルチェック部、１３４，２２６…スイッチ、３１４…端末通信部、３１３…マシン制御部、３１５…マシン側タイミング調整部、３２１…マシン側時刻生成部、３２２…マシン側サイクル生成部、３２４…付加部。
【図１】
0006916399.tif 000002
【図２】
0006916399.tif 000003
【図３】
0006916399.tif 000004
【図４】
0006916399.tif 000005
【図５】
0006916399.tif 000006
【図６】
0006916399.tif 000007
【図７】
0006916399.tif 000008
【図８】
0006916399.tif 000009
【図９】
0006916399.tif 000010
【図１０】
0006916399.tif 000011
【図１１】
0006916399.tif 000012
【図１２】
0006916399.tif 000013
【図１３】
0006916399.tif 000014
【図１４】
0006916399.tif 000015
【図１５】
0006916399.tif 000016
【図１６】
0006916399.tif 000017
【図１７】
0006916399.tif 000018
【図１８】
0006916399.tif 000019
【図１９】
0006916399.tif 000020