(57)【特許請求の範囲】
【請求項１】
周期的に複数の変数の各々を更新して、他の産業装置を制御する産業装置と、
前記産業装置及び前記他の産業装置の少なくとも一方の動作に基づいて、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令の入力条件が満たされたか否かを判定する判定部と、
前記入力条件が満たされたと判定された場合に、前記産業装置に対し、前記制御指令を入力する入力部と、
を有し、
前記産業装置は、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える書き換え部を有する、
生産システム。
【請求項２】
複数の変数の各々に基づいて、他の産業装置を制御する産業装置と、
前記産業装置に対し、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令を入力する入力部と、
を有し、
前記産業装置は、
前記複数の変数の各々に基づいて、前記他の産業装置を制御する第１制御回路と、
前記制御指令を受け付ける第２制御回路と、
を有し、
前記第１制御回路は、前記複数の変数の各々を記憶する第１記憶部を有し、
前記第２制御回路は、
前記複数の変数の各々を記憶し、定期的に前記第１記憶部との整合が取られる第２記憶部と、
前記制御指令に応じた前記少なくとも１つの変数を記憶する第３記憶部と、
前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える書き込み部であって、前記第３記憶部に記憶された前記少なくとも１つの変数を前記第２記憶部に書き込み、前記第２記憶部に書き込まれた前記少なくとも１つの変数を前記第１記憶部に書き込む書き換え部と、
を有する生産システム。
【請求項３】
前記書き換え部は、
前記制御指令に応じた前記少なくとも１つの変数の前記第３記憶部への書き込みが完了したか否かを判定し、
前記第３記憶部への書き込みが完了したと判定された場合に、前記第３記憶部に書き込まれた前記少なくとも１つの変数の前記第２記憶部への書き込みを開始する、
請求項２に記載の生産システム。
【請求項４】
前記生産システムは、前記制御指令の入力が完了した場合に、前記産業装置に対し、所定の完了通知を送信する送信部を有し、
前記書き換え部は、前記完了通知を受信した場合に、前記制御指令に応じた前記少なくとも１つの変数の前記第３記憶部への書き込みが完了したと判定する、
請求項３に記載の生産システム。
【請求項５】
前記生産システムは、前記第１記憶部と前記第２記憶部との間で整合が取られたか否かを判定する判定部を有し、
前記書き換え部は、前記第１記憶部と前記第２記憶部との間の整合が取られたと判定された場合に、前記第３記憶部に書き込まれた変数を前記第２記憶部に書き込む、
請求項２〜４の何れかに記載の生産システム。
【請求項６】
複数の変数の各々に基づいて、他の産業装置を制御する産業装置と、
前記産業装置及び前記他の産業装置の少なくとも一方の動作を解析する解析部と、
前記解析部の解析結果に基づいて、前記産業装置に対し、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令を入力する入力部と、
を有し、
前記産業装置は、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える書き換え部を有する、
生産システム。
【請求項７】
前記解析部は、複数のアプリケーションの各々に基づいて解析を行い、
前記入力部は、各アプリケーションの実行結果に基づいて、当該アプリケーションに関連付けられた少なくとも１つの変数を含む制御指令を入力し、
前記書き換え部は、各アプリケーションの前記制御指令に基づいて、当該アプリケーションに関連付けられた少なくとも１つの変数を書き換える、
請求項６に記載の生産システム。
【請求項８】
前記生産システムは、複数の前記アプリケーションの制御指令が同時に入力されることを制限する制限部を有する、
請求項７に記載の生産システム。
【請求項９】
前記生産システムは、前記産業装置とは異なる外部装置を含み、
前記外部装置は、前記入力部を有し、
前記書き換え部は、前記外部装置から入力された前記制御指令に基づいて、前記少なくとも１つの変数を書き換える、
請求項１〜８の何れかに記載の生産システム。
【請求項１０】
周期的に複数の変数の各々を更新して、他の産業装置を制御する産業装置及び前記他の産業装置の少なくとも一方の動作に基づいて、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令の入力条件が満たされたか否かを判定し、
前記入力条件が満たされたと判定された場合に、前記産業装置に対し、前記制御指令を入力し、
前記産業装置は、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える、
制御方法。
【請求項１１】
複数の変数の各々に基づいて、他の産業装置を制御する産業装置に対し、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令を入力し、
前記産業装置は、
前記複数の変数の各々に基づいて、前記他の産業装置を制御する第１制御回路と、
前記制御指令を受け付ける第２制御回路と、
を有し、
前記第１制御回路は、前記複数の変数の各々を記憶する第１記憶部を有し、
前記第２制御回路は、
前記複数の変数の各々を記憶し、定期的に前記第１記憶部との整合が取られる第２記憶部と、
前記制御指令に応じた前記少なくとも１つの変数を記憶する第３記憶部と、
を有し、
前記第２制御回路は、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える場合に、前記第３記憶部に記憶された前記少なくとも１つの変数を前記第２記憶部に書き込み、前記第２記憶部に書き込まれた前記少なくとも１つの変数を前記第１記憶部に書き込む、
制御方法。
【請求項１２】
複数の変数の各々に基づいて、他の産業装置を制御する産業装置及び前記他の産業装置の少なくとも一方の動作を解析し、
前記動作の解析結果に基づいて、前記産業装置に対し、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令を入力し、
前記産業装置は、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える、
制御方法。
【請求項１３】
周期的に複数の変数の各々を更新して、他の産業装置を制御する産業装置を、
前記産業装置及び前記他の産業装置の少なくとも一方の動作に基づいて、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令の入力条件が満たされたと判定された場合に入力された前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換えさせる、
ためのプログラム。
【請求項１４】
複数の変数の各々に基づいて、他の産業装置を制御する制御する第１制御回路と、
前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令の入力を受け付ける第２制御回路と、
を有する産業装置であって、
前記第１制御回路は、前記複数の変数の各々を記憶する第１記憶部を有し、
前記第２制御回路は、
前記複数の変数の各々を記憶し、定期的に前記第１記憶部との整合が取られる第２記憶部と、
前記制御指令に応じた前記少なくとも１つの変数を記憶する第３記憶部と、
を有する前記産業装置の前記第２制御回路に、
前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換えさせる場合に、前記第３記憶部に記憶された前記少なくとも１つの変数を前記第２記憶部に書き込ませ、前記第２記憶部に書き込まれた前記少なくとも１つの変数を前記第１記憶部に書き込ませる、
ためのプログラム。
【請求項１５】
複数の変数の各々に基づいて、他の産業装置を制御する産業装置を、
前記産業装置及び前記他の産業装置の少なくとも一方の動作を解析する解析部の解析結果に基づいて、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令が入力された場合に、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換えさせる、
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、生産システム、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、複数の産業装置の各々の動作を検出し、クラウドサーバにトレースデータをアップロードするシステムが記載されている。このシステムでは、解析者によってトレースデータの解析が行われる。解析者の解析結果は、産業装置のユーザに通知される。産業装置のユーザは、解析結果をもとに産業装置のパラメータの調整等を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１５／０６８２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示の一態様が解決しようとする課題は、例えば、産業装置に対する制御指令を迅速かつ正確に実行することである。
【課題を解決するための手段】
【０００５】
本開示の一側面に係る生産システムは、複数の変数の各々に基づいて、他の産業装置を制御する産業装置と、前記産業装置に対し、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令を入力する入力部と、を有し、前記産業装置は、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える書き換え部を有する。
【０００６】
本開示の一側面に係る制御方法は、複数の変数の各々に基づいて、他の産業装置を制御する産業装置に対し、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令を入力し、前記産業装置は、前記制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える。
【０００７】
本開示の一側面に係るプログラムは、複数の変数の各々に基づいて、他の産業装置を制御する産業装置を、前記産業装置及び前記他の産業装置の少なくとも一方の動作に関する制御指令に基づいて、前記複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換えさせる。
【０００８】
本開示の一側面によれば、前記産業装置は、周期的に前記複数の変数の各々を更新して、前記他の産業装置を制御し、前記生産システムは、前記産業装置及び前記他の産業装置の少なくとも一方の動作に基づいて、前記制御指令の入力条件が満たされたか否かを判定する判定部を更に有し、前記入力部は、前記入力条件が満たされたと判定された場合に、前記産業装置に対し、前記制御指令を入力する。
【０００９】
本開示の一側面によれば、前記産業装置は、前記複数の変数の各々に基づいて、前記他の産業装置を制御する第１制御回路と、前記制御指令を受け付ける第２制御回路と、を有し、前記第２制御回路は、前記書き換え部を有する。
【００１０】
本開示の一側面によれば、前記第１制御回路は、前記複数の変数の各々を記憶する第１記憶部を有し、前記第２制御回路は、前記複数の変数の各々を記憶し、定期的に前記第１記憶部との整合が取られる第２記憶部と、前記制御指令に応じた前記少なくとも１つの変数を記憶する第３記憶部と、を有し、前記書き換え部は、前記第３記憶部に記憶された前記少なくとも１つの変数を前記第２記憶部に書き込み、前記第２記憶部に書き込まれた前記少なくとも１つの変数を前記第１記憶部に書き込む。
【００１１】
本開示の一側面によれば、前記書き換え部は、前記制御指令に応じた前記少なくとも１つの変数の前記第３記憶部への書き込みが完了したか否かを判定し、前記第３記憶部への書き込みが完了したと判定された場合に、前記第３記憶部に書き込まれた前記少なくとも１つの変数の前記第２記憶部への書き込みを開始する。
【００１２】
本開示の一側面によれば、前記生産システムは、前記制御指令の入力が完了した場合に、前記産業装置に対し、所定の完了通知を送信する送信部を有し、前記書き換え部は、前記完了通知を受信した場合に、前記制御指令に応じた前記少なくとも１つの変数の前記第３記憶部への書き込みが完了したと判定する。
【００１３】
本開示の一側面によれば、前記生産システムは、前記第１記憶部と前記第２記憶部との間で整合が取られたか否かを判定する判定部を有し、前記書き換え部は、前記第１記憶部と前記第２記憶部との間の整合が取られたと判定された場合に、前記第３記憶部に書き込まれた変数を前記第２記憶部に書き込む。
【００１４】
本開示の一側面によれば、前記生産システムは、前記産業装置及び前記他の産業装置の少なくとも一方の動作を解析する解析部を有し、前記入力部は、前記解析部の解析結果に基づいて、前記制御指令を入力する。
【００１５】
本開示の一側面によれば、前記解析部は、複数のアプリケーションの各々に基づいて解析を行い、前記入力部は、各アプリケーションの実行結果に基づいて、当該アプリケーションに関連付けられた少なくとも１つの変数を含む制御指令を入力し、前記書き換え部は、各アプリケーションの前記制御指令に基づいて、当該アプリケーションに関連付けられた少なくとも１つの変数を書き換える。
【００１６】
本開示の一側面によれば、前記生産システムは、複数の前記アプリケーションの制御指令が同時に入力されることを制限する制限部を有する。
【００１７】
本開示の一側面によれば、前記生産システムは、前記産業装置とは異なる外部装置を含み、前記外部装置は、前記入力部を有し、前記書き換え部は、前記外部装置から入力された前記制御指令に基づいて、前記少なくとも１つの変数を書き換える。
【発明の効果】
【００１８】
上記発明によれば、例えば、産業装置に対する制御指令を迅速かつ正確に実行することができる。
【図面の簡単な説明】
【００１９】
【図１】生産システムの全体構成の一例を示す図である。
【図２】変数の値を書き換える処理の流れを示す図である。
【図３】生産システムで実現される機能を示す機能ブロック図である。
【図４】変数定義データのデータ格納例を示す図である。
【図５】変数値データのデータ格納例を示す図である。
【図６】生産システムで実行される処理の一例を示すフロー図である。
【図７】変形例（２）の機能ブロック図である。
【発明を実施するための形態】
【００２０】
［１．生産システムの全体構成］
産業装置の動作に関するデータを収集する技術では、解析者による解析が行われた後に、産業装置に対して解析結果が反映されていたので、解析結果が反映されるのに時間がかかっていた。また、解析者による解析には誤りが生じることもあり、解析が正確に行われないこともあった。そこで発明者達は、産業装置に対する制御指令を迅速かつ正確に実行するために鋭意研究開発を行った結果、新規かつ独創的な生産システム等に想到した。以降、本実施形態に係る生産システム等を詳細に説明する。
【００２１】
図１は、生産システムの全体構成の一例を示す図である。図１に示すように、生産システム１は、解析装置１０、コントローラ２０、及び被制御装置３０を含む。本実施形態では、解析装置１０とコントローラ２０との各々は、Ｅｔｈｅｒｎｅｔ（登録商標）等の一般的なネットワークにより接続される。コントローラ２０と被制御装置３０との各々は、産業装置用のネットワークにより接続される。なお、各装置を接続するネットワークは、本実施形態の例に限られず、任意のネットワークで接続可能である。
【００２２】
解析装置１０は、外部装置の一例である。このため、本実施形態で解析装置１０と記載した箇所は、外部装置と読み替えることができる。外部装置は、後述する産業装置とは異なる装置である。外部装置は、産業装置とネットワークを介して通信可能に接続される。例えば、外部装置は、産業装置の動作に関するデータを収集する。また例えば、外部装置は、産業装置の動作を解析する。本実施形態では、外部装置は、産業装置に対し、解析結果に応じた制御指令を送信する。
【００２３】
例えば、解析装置１０は、パーソナルコンピュータ、サーバコンピュータ、携帯電話（スマートフォンを含む）、又は携帯端末（タブレット型端末を含む）である。なお、解析装置１０は、産業装置の一種であってもよい。解析装置１０は、ＣＰＵ１１、記憶部１２、通信部１３、操作部１４、及び表示部１５を含む。
【００２４】
ＣＰＵ１１は、少なくとも１つのプロセッサを含む。記憶部１２は、ＲＡＭやハードディスクを含み、各種プログラムやデータを記憶する。ＣＰＵ１１は、これらプログラムやデータに基づいて各種処理を実行する。通信部１３は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。操作部１４は、マウスやキーボード等の入力デバイスである。表示部１５は、液晶ディスプレイ又は有機ＥＬディスプレイ等であり、ＣＰＵ１１の指示により各種画面を表示する。
【００２５】
コントローラ２０は、産業装置の一例である。このため、本実施形態でコントローラ２０と記載した箇所は、産業装置と読み替えることができる。産業装置は、人間が行う作業の補助又は代行をする機器及びその周辺機器の総称である。例えば、コントローラ２０以外にも被制御装置３０も産業装置に相当する。例えば、ＰＬＣ（Programmable Logic Controller）、ロボットコントローラ、産業用ロボット、モータコントローラ、サーボアンプ、インバータ、コンバータ、工作機械、搬送装置、又は半導体製造装置は、産業装置に相当する。コントローラ２０は、少なくとも１つの被制御装置３０を制御する。生産システム１全体は、ラインよりも小さな単位であるセルと呼ばれることがあり、この場合には、コントローラ２０は、セルコントローラと呼ばれることもある。
【００２６】
コントローラ２０は、ＣＰＵ２１、ＩｏＴ（Internet of Things）部２２、第４記憶部２３、及び第２通信部２４を含む。ＣＰＵ２１、第４記憶部２３、及び第２通信部２４の物理的構成は、それぞれＣＰＵ１１、記憶部１２、及び通信部１３と同様であってよい。本実施形態では、ＣＰＵ２１は、第１記憶部２１Ａを含む。第１記憶部２１Ａは、揮発メモリ及び不揮発メモリの少なくとも一方を含む。例えば、第１記憶部２１Ａは、キャッシュメモリと呼ばれるメモリを含んでもよい。第１記憶部２１Ａは、後述する変数を記憶する。
【００２７】
ＣＰＵ２１は、第１制御回路の一例である。このため、本実施形態でＣＰＵ２１と記載した箇所は、第１制御回路と読み替えることができる。第１制御回路は、後述する複数の変数の各々に基づいて、後述する他の産業装置を制御する。第１制御回路は、汎用プロセッサに限られず、任意の回路であってよい。例えば、第１制御回路は、ＦＰＧＡ又はＡＳＩＣと呼ばれる回路であってもよい。第１制御回路は、circuitryの一種である。
【００２８】
ＩｏＴ部２２は、第２制御回路の一例である。このため、本実施形態でＩｏＴ部２２と記載した箇所は、第２制御回路と読み替えることができる。このため、本実施形態でＩｏＴ部２２と記載した箇所は、第２制御回路と読み替えることができる。第２制御回路は、制御指令を受け付ける回路である。第２制御回路は、ＩｏＴに利用される回路に限られず、任意の回路であってよい。例えば、第２制御回路は、ＦＰＧＡ又はＡＳＩＣと呼ばれる回路であってもよい。また例えば、第２制御回路は、汎用プロセッサであってもよい。第２制御回路は、circuitryの一種である。
【００２９】
ＩｏＴ部２２は、ネットワークを介して、他のコンピュータにデータを送信する。例えば、ＩｏＴ部２２は、第２記憶部２２Ａ、第３記憶部２２Ｂ、及び第１通信部２２Ｃを含む。第２記憶部２２Ａと第３記憶部２２Ｂは、それぞれ記憶部１２と同様であってよい。第１通信部２２Ｃは、通信部１３と同様であってよい。例えば、第１通信部２２Ｃは、主に解析装置１０との通信に用いられ、第２通信部２４は、主に被制御装置３０の制御に用いられる。なお、ＩｏＴ部２２は、ＣＰＵ等の他の構成を含んでもよい。また、データ収集の機能をＣＰＵ２１に持たせる場合には、ＩｏＴ部２２は省略してもよい。
【００３０】
被制御装置３０は、他の産業装置の一例である。このため、本実施形態でコントローラ２０と記載した箇所は、他の産業装置と読み替えることができる。産業装置という言葉の意味は、先述した通りである。他の産業装置は、先述した任意の種類の産業装置であってよい。本実施形態では、他の産業装置は、コントローラ２０により制御される。他の産業装置は、コントローラ２０とは異なる産業装置であればよい。
【００３１】
被制御装置３０は、ＣＰＵ３１、記憶部３２、及び通信部３３を含む。ＣＰＵ３１、記憶部３２、及び通信部３３の物理的構成は、それぞれＣＰＵ１１、記憶部１２、及び通信部１３と同様であってよい。なお、被制御装置３０は、他の物理的構成が含まれてもよく、例えば、ＦＰＧＡ又はＡＳＩＣと呼ばれる回路が含まれてもよい。また例えば、被制御装置３０には、モータ等の制御対象の機器、モータ等の動作を検出するためのセンサ、加工対象となるワークの状態を撮影するカメラ、入出力機器、又は他の産業装置などが接続されていてもよい。コントローラ２０の制御対象となる被制御装置３０の台数は、任意の台数であってよく、例えば、１台だけであってもよいし、２台以上であってもよい。
【００３２】
なお、解析装置１０、コントローラ２０、及び被制御装置３０の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されてもよい。また、各装置のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部（例えば、光ディスクドライブやメモリカードスロット）や外部機器と直接的に接続するための入出力部（例えば、ＵＳＢ端子）が含まれてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが、読取部又は入出力部を介して供給されてもよい。
【００３３】
［２．生産システムの概要］
本実施形態では、コントローラ２０は、複数の変数の各々に基づいて、被制御装置３０を制御する。変数は、被制御装置３０を制御するための制御プログラムにより参照される。制御プログラムは、変数を書き換えることもある。例えば、変数は、途中の計算結果、又は、センサにより検出された物理量（例えば、トルクセンサにより検出されたトルク値、又は、モータエンコーダにより検出されたモータの回転速度）を示す。変数は、被制御装置３０の動作に関する値であってもよく、例えば、ロボットアームの位置若しくは移動速度、モータの速度、又は動作を待機する待機時間などの値であってもよい。
【００３４】
例えば、被制御装置３０が複数の工程を所定の順序で実行する場合、制御プログラムには、各工程の実行順が記述されている。コントローラ２０は、制御プログラムに基づいて、被制御装置３０に対して指示を送る。変数は、工程の実行条件になってもよい。例えば、被制御装置３０は、工程を開始するための変数、工程を一時停止するための変数、又は、工程を終了するための変数を記憶する。変数は、入出力変数と呼ばれることもある。
【００３５】
工程とは、被制御装置３０が行う作業又は動作である。工程は、１つの作業だけから構成されてもよいし、複数の作業の組み合わせから構成されてもよい。工程は、被制御装置３０の用途に応じた任意の内容であってよく、例えば、ワークの認識、ワークの把持、扉の開閉、ワークのセット、又は工作機器を利用した加工などである。被制御装置３０は、少なくとも１つの工程を行う。被制御装置３０が行う工程の数は、任意の数であってよく、被制御装置３０は、１つの工程だけを行ってもよいし、複数の工程を行ってもよい。被制御装置３０は、コントローラ２０から受信した指示と、自身に記憶された装置プログラムと、に基づいて工程を行う。
【００３６】
装置プログラムは、被制御装置３０の動作を定義したプログラムである。装置プログラムには、各工程における個々の手順が定義されている。装置プログラムは、被制御装置３０に応じた任意の言語で作成可能であり、例えば、ラダー言語又はロボット言語等によって作成される。本実施形態では、工程ごとに装置プログラムが用意されている。このため、ある被制御装置３０がｎ個（ｎは自然数）の工程を行うとすると、当該被制御装置３０は、少なくともｎ個の装置プログラムを記憶していることになる。
【００３７】
本実施形態では、解析装置１０のユーザ、コントローラ２０のユーザ、及び被制御装置３０のユーザの各々が異なる場合を説明する。例えば、コントローラ２０のユーザによって変数が定義されて制御プログラムが作成される場合、解析装置１０のユーザは、変数や制御プログラムの内容を熟知していないことがある。このため、変数の中には、解析装置１０からの制御指令によって書き換えない方がよい変数もある。
【００３８】
そこで、本実施形態の生産システム１は、複数の変数のうち、解析装置１０からの制御指令で書き換え可能な変数が定義されている。以降、この定義を変数定義と記載する。変数定義に定義された変数は、解析装置１０のユーザに公開された変数ということもできる。例えば、解析装置１０のユーザは、変数定義に定義された変数を収集できる。解析装置１０のユーザは、変数定義に定義された全ての変数を収集してもよいし、その一部だけを収集してもよい。変数定義により、解析装置１０からの制御指令で書き換え可能な変数と、解析装置１０からの制御指令では書き換えられない変数と、が区別される。例えば、変数定義は、コントローラ２０のユーザにより作成される。
【００３９】
図２は、変数の値を書き換える処理の流れを示す図である。図２に示すように、解析装置１０は、コントローラ２０に対し、制御指令を送信する。制御指令は、解析装置１０からコントローラ２０に対する指令であり、任意の内容を含むことができる。例えば、制御指令は、変数定義に定義された変数のうちの少なくとも１つを書き換えるための指令である。制御指令は、定周期的な指令であってもよいし、特に定周期的ではない指令であってもよい。解析装置１０によるフィードバックとしての指令は、制御指令の一例である。制御指令は、フィードバックとしての指令に限られない。制御指令のデータフォーマットは、予め定められており、そのデータ長は固定であってもよいし可変であってもよい。制御指令には、書き換え対象となる変数の名前とその値とが含まれる。例えば、解析装置１０は、コントローラ２０から取集した変数の値を解析し、その解析結果に応じた制御指令を送信する。制御指令は、ＩｏＴ部２２の第１通信部２２Ｃに送信される。
【００４０】
第１通信部２２Ｃは、制御指令の受信を開始すると、受信した変数の名前とその値を第３記憶部２２Ｂに書き込む。なお、変数の名前は第３記憶部２２Ｂに書き込まれず、変数の名前に応じたレジスタにその値が書き込まれてもよい。この点は、後述する第１記憶部２１Ａ及び第２記憶部２２Ａに変数の値が書き込まれる場合にも同様である。解析装置１０は、制御指令を送信し終えると、コントローラ２０に対し、所定の完了通知を送信する。第１通信部２２Ｃは、完了通知を受信するまでの間、制御指令を受信し続けるので、受信した変数の名前とその値を第３記憶部２２Ｂに書き込む。
【００４１】
第１通信部２２Ｃが完了通知を受信すると、制御指令に含まれる全ての変数の第３記憶部２２Ｂへの書き込みが完了する。ＩｏＴ部２２は、第３記憶部２２Ｂへの変数の書き込みが完了すると、第３記憶部２２Ｂに書き込まれた変数が第２記憶部２２Ａに書き込まれる。第３記憶部２２Ｂは、制御指令に含まれる変数の値を一時的に保持するバッファとしての役割を果たす。
【００４２】
本実施形態では、第１記憶部２１Ａに記憶された変数と、第２記憶部２２Ａに記憶された変数と、は周期的（定期的）に整合が取られている。これらの変数には、制御指令に含まれる変数以外の変数も含まれる。例えば、第１記憶部２１Ａには、変数定義に定義されていない変数（解析装置１０のユーザに公開しない変数）も記憶される。この変数は、被制御装置３０の制御用の変数ということもできる。
【００４３】
第１記憶部２１Ａと第２記憶部２２Ａとの間における変数の整合が完了する前に（これらの変数の整合取られている最中に）、第３記憶部２２Ｂに書き込まれた変数が第２記憶部２２Ａに書き込まれると、制御指令に含まれる変数の値が正確に反映されないことがある。
【００４４】
例えば、１周期内において、複数の変数の各々が所定の順番で整合が取られる。１周期における整合が完了する前に、その周期で既に整合された変数が第３記憶部２２Ｂから第２記憶部２２Ａに書き込まれたとする。その周期では、この変数はもう整合されないので、第２記憶部２２Ａに値が書き込まれたとしても、この値は次の周期で第１記憶部２１Ａに反映される。一方、まだ整合が取られていない変数については、現在の周期で第１記憶部２１Ａには反映される。この場合、同時に反映すべき複数の変数が、互いに別々の周期で反映されるので、正確な反映がなされないことになる。
【００４５】
この点、１周期が終了する直前であれば、第１記憶部２１Ａと第２記憶部２２Ａとの間における変数の整合が完了している可能性が高い。このため、本実施形態では、１周期が終了する直前に、第３記憶部２２Ｂから第２記憶部２２Ａに変数が書き込まれる。第２記憶部２２Ａに書き込まれた変数は、次の周期で第１記憶部２２Ａに書き込まれる。これにより、制御指令に含まれる変数を同時に反映することができる。ＣＰＵ２１は、第１記憶部２２Ａに書き込まれた変数に基づいて、被制御装置３０を制御する。
【００４６】
以上のように、生産システム１は、解析装置１０からコントローラ２０に対する制御指令に応じて、変数定義に定義された変数の少なくとも１つを書き換えることにより、コントローラ２０に対する制御指令を迅速かつ正確に実行するようにしている。以降、この構成の詳細を説明する。
【００４７】
［３．生産システムで実現される機能］
図３は、生産システム１で実現される機能を示す機能ブロック図である。本実施形態では、解析装置１０、コントローラ２０、及び被制御装置３０の各々で実現される機能について説明する。
【００４８】
［３−１．解析装置で実現される機能］
図３に示すように、解析装置１０は、データ記憶部１００、解析部１０１、判定部１０２、入力部１０３、及び送信部１０４を含む。
【００４９】
［データ記憶部］
データ記憶部１００は、記憶部１２を主として実現される。データ記憶部１００は、制御指令の送信に必要なデータを記憶する。例えば、データ記憶部１００は、コントローラ２０から収集した変数が格納された収集データを記憶する。収集データは、変数定義に定義された変数の値が格納されたデータである。収集データには、ある一時点の変数の値が格納されてもよいし、変数の値の時系列的な変化が格納されてもよい。また、収集データには、１つの変数の値だけが格納されていてもよいし、複数の変数の値が格納されていてもよい。他にも例えば、収集データには、複数の変数の値に基づいて計算された値が格納されていてもよい。
【００５０】
また例えば、データ記憶部１００は、コントローラ２０又は被制御装置３０の動作を解析するためのアプリケーションを記憶する。例えば、このアプリケーションは、収集データを入力とし、解析結果を出力とする。アプリケーションには、収集データと解析結果との関係が定義されている。解析結果には、制御指令の内容が含まれる。例えば、解析結果には、制御指令により値を変更すべき変数の名前とその値が含まれる。アプリケーションは、値を変更すべき変数の種類とその値を決定するためのプログラムということもできる。
【００５１】
なお、データ記憶部１００に記憶されるデータは、上記の例に限られない。例えば、データ記憶部１００は、変数定義に定義された変数のうち、収集データの収集対象となる変数を示すデータを記憶してもよい。収集対象となる変数は、解析装置１０のユーザにより指定される。解析装置１０は、コントローラ２０から収集対象となる変数を収集し、収集データとしてデータ記憶部１００に記録する。
【００５２】
［解析部］
解析部１０１は、ＣＰＵ１１を主として実現される。解析部１０１は、コントローラ２０及び被制御装置３０の少なくとも一方の動作を解析する。解析部１０１は、コントローラ２０及び被制御装置３０の両方の動作を解析してもよいし、コントローラ２０又は被制御装置３０の何れかの動作を解析してもよい。
【００５３】
動作の解析とは、収集データを解析することである。解析部１０１は、収集データが所定の条件を満たすか否かを判定することによって、解析を行う。所定の条件は、収集データに基づいて判定可能な条件であり、例えば、収集データが示す値が閾値以上であるか否か、又は、収集データに基づいて計算された値が閾値以上であるか否かである。例えば、動作に異常が発生しているか否かを判定することは、解析に相当する。また例えば、動作に異常は発生していないが、変数の値、パラメータ、又はファームウェアを変更する必要があるか否かを判定することは、解析に相当する。
【００５４】
本実施形態では、アプリケーションにより解析が行われるので、解析部１０１は、収集データに示された変数をアプリケーションに入力し、アプリケーションを利用して動作を解析する。例えば、解析部１０１は、アプリケーションを利用して、制御指令の内容を取得する。制御指令の内容は、制御指令によって書き換えるべき変数の名前とその値を含む。制御指令の内容は、他の内容を含んでもよく、例えば、コントローラ２０又は被制御装置３０に実行させるコマンド、変更すべきパラメータ及びその値、又は変更すべきファームウェアなどを含んでもよい。
【００５５】
［判定部］
判定部１０２は、ＣＰＵ１１を主として実現される。判定部１０２は、コントローラ２０及び被制御装置３０の少なくとも一方の動作に基づいて、制御指令の入力条件が満たされたか否かを判定する。判定部１０２は、コントローラ２０及び被制御装置３０の両方の動作に基づいて、入力条件が満たされたか否かを判定してもよいし、コントローラ２０又は被制御装置３０の何れかの動作に基づいて、入力条件が満たされたか否かを判定してもよい。
【００５６】
入力条件は、制御指令を入力するか否かを決定するための条件である。本実施形態では、入力条件が収集データに基づいて判定可能な条件である場合を説明するが、入力条件は、任意の条件であってよい。例えば、入力条件は、収集データに関係のない条件であってもよく、例えば、解析装置１０に直接的に接続されたセンサの信号、カメラ（ビジョンセンサ）によって撮影された画像に示された被写体（例えば、ワーク）の状態、又は、現在日時などの条件であってもよい。
【００５７】
例えば、判定部１０２は、収集データに基づいて、入力条件が満たされたか否かを判定する。判定部１０２は、収集データに含まれる変数の値が所定の範囲になったか否かを判定する。変数の値が閾値以上になること、又は、変数の値が閾値未満になることは、所定の範囲になることに相当する。また例えば、判定部１０２は、収集データに含まれる変数の値が所定の範囲になった回数が所定回数以上になったか否かを判定する。また例えば、判定部１０２は、収集データに基づいて計算した値が閾値以上になったか否か、又は、当該値が閾値以上になった回数が所定回数以上になったか否かを判定してもよい。
【００５８】
［入力部］
入力部１０３は、ＣＰＵ１１を主として実現される。入力部１０３は、コントローラ２０に対し、コントローラ２０及び被制御装置３０の少なくとも一方の動作に関する制御指令を入力する。制御指令は、コントローラ２０及び被制御装置３０の両方の動作に関する指令であってもよいし、コントローラ２０又は被制御装置３０の何れかの動作に関する指令であってもよい。なお、ここでの入力とは、送信と同じ意味である。
【００５９】
本実施形態では、コントローラ２０及び被制御装置３０の少なくとも一方の動作が、コントローラ２０から収集された収集データによって特定可能なので、入力部１０３は、収集データに応じた制御指令を入力する。なお、収集データ以外の他のデータによって動作が特定可能なのであれば、入力部１０３は、他のデータに応じた制御指令を入力する。他のデータは、任意のデータであってよく、例えば、トルクセンサ又はモータエンコーダなどのセンサにより検出された物理量のデータ（瞬時値のデータ）であってもよいし、これらの物理量が時系列的に格納されたトレースデータであってもよい。
【００６０】
入力部１０３は、コントローラ２０に対し、収集データに基づいて決定された内容の制御指令を送信する。本実施形態では、解析のアプリケーションによって制御指令の内容が決定されるので、入力部１０３は、コントローラ２０に対し、解析部１０１により出力された内容を示す制御指令を送信する。例えば、収集データの内容に基づいて、制御指令により書き換えるべき変数の種類とその値が決定される。これらは、入力部１０３により決定されてもよいし、解析部１０１等により決定されてもよい。
【００６１】
本実施形態では、入力部１０３は、入力条件が満たされたと判定された場合に、コントローラ２０に対し、制御指令を入力する。入力条件が満たされたと判定されない場合には、制御指令は入力されない。別の言い方をすれば、入力部１０３は、入力条件が満たされたと判定されたことに応じて、コントローラ２０に対し、制御指令を入力する。入力部１０３は、入力条件が満たされるまで、制御指令の入力を待機する。
【００６２】
本実施形態では、入力部１０３は、解析部１０１の解析結果に基づいて、制御指令を入力する。例えば、入力部１０３は、解析部１０１の解析結果に基づいて、制御指令を送信するか否かを決定する。入力部１０３は、解析結果が所定の結果であった場合に、制御指令を送信する。この場合、制御指令の内容は、収集データに基づいて決まってもよいし、収集データに関係なく固定値であってもよい。また例えば、入力部１０３は、解析部１０１の解析結果に応じた内容の制御指令を入力する。この場合、制御指令に含まれる変数の名前とその値が、解析結果によって決定される。
【００６３】
［送信部］
送信部１０４は、ＣＰＵ１１を主として実現される。送信部１０４は、制御指令の入力が完了した場合に、コントローラ２０に対し、所定の完了通知を送信する。制御指令の入力が完了していない場合には、完了通知は送信されない。送信部１０４は、制御指令の入力が完了したことに応じて、コントローラ２０に対し、完了通知を送信する。
【００６４】
制御指令の入力が完了したとは、解析装置１０が制御指令の送信を完了した時点、コントローラ２０が制御指令の受信を完了した時点、制御指令に含まれる変数の値が第３記憶部２２Ｂに書き込まれた時点、又は、これらの時点の後の時点である。
【００６５】
完了通知は、制御指令の入力が完了したことを示す通知である。完了通知は、所定形式のデータであればよく、完了通知であることを示す識別情報を含む。例えば、送信部１０４は、制御指令の最後のデータ部分まで入力されたか否かを判定する。送信部１０４は、最後のデータ部分まで入力されたと判定された場合に、完了通知を送信する。送信部１０４は、最後のデータ部分の入力が完了するまでは、完了通知の送信を待機する。
【００６６】
［３−２．コントローラで実現される機能］
図３に示すように、コントローラ２０では、第１データ記憶部２００、第２データ記憶部２０１、第３データ記憶部２０２、第４データ記憶部２０３、書き換え部２０４、判定部２０５、及び動作制御部２０６が実現される。
【００６７】
［第１データ記憶部］
第１データ記憶部２００は、ＣＰＵ２１の第１記憶部２１を主として実現される。第１データ記憶部２００は、被制御装置３０の制御に必要なデータを記憶する。例えば、第１データ記憶部２００は、変数定義を示す変数定義データＤ１と、複数の変数の各々を示す変数値データＤ２と、を記憶する。
【００６８】
図４は、変数定義データのデータ格納例を示す図である。図４に示すように、変数定義データＤ１には、書き換え可能な変数を識別する情報を含む。例えば、変数定義データＤ１には、書き換え可能な変数の名前と、変数のコメントと、が格納されている。変数の名前は、変数を識別する情報の一例であり、名前以外にもＩＤのような情報によって変数が識別されてもよい。
【００６９】
コメントは、コントローラ２０のユーザにより入力された任意の文字列であり、変数が示す内容や用途等の情報が示される。なお、変数定義データＤ１は、図４の例に限られず、変数定義データＤ１には、全ての変数の一覧と、書き換え可能であるか否かを示すフラグと、が格納されているようにしてもよい。この場合、コントローラ２０のユーザによりフラグの値が指定される。
【００７０】
図５は、変数値データのデータ格納例を示す図である。図５に示すように、変数値データＤ２は、各変数の現在値を示すデータである。例えば、変数値データＤ２には、変数ごとに、現在値が示される。各変数は、特定のレジスタに格納される。変数とレジスタの関係（どの変数をどのレジスタに格納するか）については、制御プログラムの作成者等によって予め指定されているものとする。レジスタに格納された変数は、他の機器（例えば、コントローラ２０）によって適宜参照可能となる。
【００７１】
［第２データ記憶部］
第２データ記憶部２０１は、第２記憶部２２Ａを主として実現される。第２データ記憶部２０１は、複数の変数の各々を記憶する。第２データ記憶部２０１は、変数値データＤ２と同様のデータを記憶する。第２データ記憶部２０１は、定期的に第１データ記憶部２００との整合が取られる。
【００７２】
整合を取るとは、第１データ記憶部２００に記憶された値と第２データ記憶部２０１に記憶された値との何れか一方を他方に合わせる（一方の値を他方にコピーする）ことである。例えば、ある変数名の変数について、第１データ記憶部２００に記憶された値を、第２データ記憶部２０１に記憶された値にすることは、整合を取ることに相当する。書き換え対象の変数については、第１データ記憶部２００に記憶された値が、第２データ記憶部２０１に記憶された値になる。
【００７３】
また例えば、ある変数名の変数について、第２データ記憶部２０１に記憶された値を、第１データ記憶部２００に記憶された値にすることは、整合を取ることに相当する。解析装置１０により収集される変数が第２データ記憶部２０１に記録される場合、第２データ記憶部２０１に記憶された値が、第１データ記憶部２００に記憶された値になる。これにより、第１データ記憶部２００に記憶された変数が、第２データ記憶部２０１を介して解析装置１０に送信される。
【００７４】
定期的とは、周期的と同じ意味である。周期ごとに、第１データ記憶部２００に記憶された変数と、第２データ記憶部２０１に記憶された変数と、の整合が取られる。これらの整合は、ＣＰＵ２１が主体となって実行されてもよいし、ＩｏＴ部２２が主体となって実行されてもよい。ＣＰＵ２１又はＩｏＴ部２２は、周期ごとに、第１データ記憶部２００に記憶された変数と、第２データ記憶部２０１に記憶された変数と、の整合を取る。
【００７５】
例えば、変数定義に定義された変数は、書き換えの対象となりうるので、第２データ記憶部２０１に記憶された変数が第１データ記憶部２００にコピーされる。このため、第１データ記憶部２００の変数値データＤ２は、第２データ記憶部２０１の最新の変数値データＤ２に置き換わる（上書きされる）。第２データ記憶部２０１に記憶された変数値データＤ２の一部の内容だけがコピーされてもよく、例えば、書き換えの対象となった変数の値だけがコピーされてもよい。
【００７６】
［第３データ記憶部］
第３データ記憶部２０２は、第３記憶部２２Ｂを主として実現される。第３データ記憶部２０２は、制御指令に応じた少なくとも１つの変数を記憶する。第３データ記憶部２０２は、制御指令に含まれる変数の値を記憶する。制御指令に１つの変数の値だけが含まれている場合には、第３データ記憶部２０２は、１つの変数の値だけを記憶する。制御指令に複数の変数の値が含まれている場合には、第３データ記憶部２０２は、複数の変数の値だけを記憶する。
【００７７】
本実施形態では、コントローラ２０は、第１通信部２２Ｃを介して制御指令を受信するので、第３データ記憶部２０２には、第１通信部２２Ｃを介して受信した制御指令に含まれる変数を記憶する。第３データ記憶部２０２に記憶された変数は、第２データ記憶部２０１に書き込まれるので、第３データ記憶部２０２は、制御指令に含まれる変数を一時的に記憶する。第３データ記憶部２０２に記憶された変数は、第２データ記憶部２０１に書き込まれた場合に消去されてもよいし、次の制御指令が入力されるまで保持されてもよい。
【００７８】
［第４データ記憶部］
第４データ記憶部２０３は、第４記憶部２３を主として実現される。第４データ記憶部２０３は、被制御装置３０の制御に必要なデータを記憶する。例えば、第４データ記憶部２０３は、制御プログラムとパラメータを記憶する。また例えば、第４データ記憶部２０３は、ファームウェアなどの他のプログラムを記憶してもよいし、解析装置１０に収集データを送信するためのプログラムを記憶してもよい。
【００７９】
なお、コントローラ２０に記憶されるデータは、上記の例に限られない。例えば、コントローラ２０は、各変数に対応するレジスタを定義したレジスタ定義データを記憶してもよい。また例えば、コントローラ２０は、自身の制御対象となる被制御装置３０を識別可能な情報を記憶してもよい。また例えば、コントローラ２０は、解析装置１０を識別可能な情報を記憶してもよい。これらのデータは、第１データ記憶部２００〜第４データ記憶部２０３の何れかに記憶されるようにすればよい。
【００８０】
［書き換え部］
書き換え部２０４は、ＩｏＴ部２２を主として実現される。即ち、ＩｏＴ部２２は、書き換え部２０４を有する。書き換え部２０４は、制御指令に基づいて、複数の変数のうち、書き換え可能な変数として定義された少なくとも１つの変数を書き換える。本実施形態では、外部装置である解析装置１０により制御指令が入力されるので、書き換え部２０４は、解析装置１０から入力された制御指令に基づいて、少なくとも１つの変数を書き換える。
【００８１】
書き換え部２０４は、制御指令に名前が含まれる変数の値を、制御指令に含まれる値に書き換える。変数定義に定義されていない変数については、書き換えの対象とはならない。書き換えとは、上書き、更新、又は転送と同じ意味である。メモリに記憶されていた値を、制御指令に含まれる値に変えることは、書き換えに相当する。
【００８２】
なお、書き換え部２０４は、制御指令に、変数定義に定義されていない変数（書き換え可能ではない変数）が含まれていた場合、当該変数の値を書き換えないように制限してもよい。この場合、書き換え部２０４は、変数定義データＤ１を参照し、制御指令に含まれる変数が書き換え可能な変数であるか否かを判定する。書き換え部２０４は、制御指令に含まれる変数が書き換え可能な変数であると判定した場合、当該変数の値を書き換える。書き換え部２０４は、制御指令に含まれる変数が書き換え可能な変数であると判定しない場合、当該変数の値を書き換えない。
【００８３】
本実施形態では、書き換え部２０４は、第３データ記憶部２０２に記憶された少なくとも１つの変数を第２データ記憶部２０１に書き込み、第２データ記憶部２０１に書き込まれた少なくとも１つの変数を第１データ記憶部２００に書き込む。書き換え部２０４は、第３データ記憶部２０２に記憶された少なくとも１つの変数を、第２データ記憶部２０１を介して（経由して）、第１データ記憶部２００に書き込む。
【００８４】
例えば、書き換え部２０４は、制御指令に応じた少なくとも１つの変数の第３データ記憶部２０２への書き込みが完了したか否かを判定する。書き換え部２０４は、制御指令に応じた少なくとも１つの変数の全てが第３データ記憶部２０２に書き込まれたか否かを判定する。例えば、書き換え部２０４は、完了通知を受信した場合に、制御指令に応じた少なくとも１つの変数の第３データ記憶部２０２への書き込みが完了したと判定する。
【００８５】
書き換え部２０４は、第３データ記憶部２０２への書き込みが完了したと判定された場合に、第３データ記憶部２０２に書き込まれた少なくとも１つの変数の第２データ記憶部２０１への書き込みを開始する。第３データ記憶部２０２への書き込みが完了したと判定されない場合には、書き込みは開始されない。書き換え部２０４は、第３データ記憶部２０２への書き込みが完了したと判定されたことに応じて、書き込みを開始する。即ち、書き換え部２０４は、第３データ記憶部２０２への書き込みが完了したと判定されるまで、書き込みを待機する。
【００８６】
書き換え部２０４は、第１データ記憶部２００と第２データ記憶部２０１との間の整合が取られたと判定された場合に、第３データ記憶部２０２に書き込まれた変数を第２データ記憶部２０１に書き込む。整合が取られたと判定されない場合には、書き込みは開始されない。書き換え部２０４は、整合が取られたと判定されたことに応じて、書き込みを開始する。即ち、書き換え部２０４は、整合が取られたと判定されるまで、書き込みを待機する。
【００８７】
［判定部］
判定部２０５は、ＩｏＴ部２２を主として実現される。判定部２０５は、第１データ記憶部２００と第２データ記憶部２０１との間で整合が取られたか否かを判定する。本実施形態では、第１データ記憶部２００と第２データ記憶部２０１との間で周期的に整合が取られ、１周期が終了する直前には整合が完了するので、判定部２０５は、１周期が終了する直前の時点が訪れたか否かを判定する。この時点は、１周期の終了時点から所定時間前の時点（１周期の開始時点から所定時間後の時点）であればよい。
【００８８】
例えば、１周期をＴマイクロ秒（Ｔは正数）とすると、１周期の終了時点のＴ／１０マイクロ秒前の時点が訪れることであってもよい。ただし、この時点から１周期の終了時点までの期間の長さは、第３データ記憶部２０２に記憶された変数の値を第２データ記憶部２０１に書き込む処理を十分完了できる程度に定めておけばよい。判定部２０５は、この時点が訪れた場合に、第１データ記憶部２００と第２データ記憶部２０１との間で整合が取られたと判定する。
【００８９】
なお、判定部２０５の判定方法は、上記の例に限られない。例えば、複数の変数の整合が順番に取られる場合には、判定部２０５は、最後の変数の整合まで完了したか否かを判定してもよい。また例えば、変数の整合の完了時にＣＰＵ２１からＩｏＴ部２２に対し、所定の通知が送信される場合には、判定部２０５は、この通知を受信したか否かを判定してもよい。
【００９０】
［動作制御部］
動作制御部２０６は、ＣＰＵ２１を主として実現される。動作制御部２０６は、周期的に複数の変数の各々を更新して、被制御装置３０を制御する。動作制御部２０６は、制御プログラムに基づいて、被制御装置３０の動作を制御する。例えば、動作制御部２０６は、被制御装置３０に対して指示を送り、被制御装置３０は、当該指示に基づいて動作する。本実施形態では、装置プログラムに関連付けられた変数の値に基づいて被制御装置３０が動作するので、例えば、動作制御部２０６は、被制御装置３０に対し、装置プログラムを開始させるための変数の値を変える旨の指示を送る。被制御装置３０は、当該指示に基づいて変数の値を変えて装置プログラムを実行する。なお、被制御装置３０の動作制御のために特に変数を利用しない場合には、動作制御部２０６は、被制御装置３０が実行すべき動作を示すコマンドを送信することによって、被制御装置３０の動作を制御すればよい。
【００９１】
［３−３．被制御装置で実現される機能］
図３に示すように、被制御装置３０では、データ記憶部３００及び工程実行部３０１が実現される。
【００９２】
［データ記憶部］
データ記憶部３００は、記憶部３２を主として実現される。データ記憶部３００は、被制御装置３０が所定の動作をするために必要なデータを記憶する。例えば、データ記憶部３００は、装置プログラムと、変数の現在値と、を記憶する。変数の現在値は、変数値データＤ２に格納される値と同じである。なお、データ記憶部３００は、変数定義に定義された変数以外の変数の値も記憶する。各変数の値は、予め定められたレジスタに格納される。
【００９３】
［工程実行部］
工程実行部３０１は、ＣＰＵ３１を主として実現される。工程実行部３０１は、データ記憶部３００に記憶された装置プログラムと、コントローラ２０から受信した指示と、に基づいて、所定の工程を実行する。例えば、コントローラ２０は、ある装置プログラムを開始させる場合に、当該装置プログラムに関連付けられた変数を所定の値にする旨の指示を被制御装置３０に送信する。被制御装置３０は、当該指示を受信すると変数を所定の値に変更する。工程実行部３０１は、変数が所定の値になったことを検知すると、当該変数に関連付けられた装置プログラムを実行する。
【００９４】
工程実行部３０１は、装置プログラムが示す工程が終了すると、当該装置プログラムに関連付けられた変数を所定の値に変更し、その旨をコントローラ２０に対して送信する。その後に、別の装置プログラムを実行させる場合には、コントローラ２０は、当該別の装置プログラムに関連付けられた変数を所定の値にする旨の指示を被制御装置３０に送信し、工程実行部３０１は、別の装置プログラムを実行させることになる。なお、被制御装置３０の中で複数の装置プログラムの実行順が定義されている場合には、コントローラ２０に対して、装置プログラムの終了が送信されずに、工程実行部３０１は、当該複数の装置プログラムを次々と実行するようにしてもよい。
【００９５】
［４．生産システムで実行される処理］
図６は、生産システム１で実行される処理の一例を示すフロー図である。図６に示す処理は、図３に示す機能ブロックにより実行される処理の一例である。なお、図６では、主に制御指令に関する処理について説明し、コントローラ２０が被制御装置３０を制御する処理については省略する。
【００９６】
図６に示すように、コントローラ２０は、解析装置１０に対し、収集データを送信する（Ｓ１）。Ｓ１においては、コントローラ２０は、第１記憶部２１Ａに記憶された変数定義データＤ１に基づいて、収集対象の変数を特定する。コントローラ２０は、第１記憶部２１Ａに記憶された変数値データＤ２を参照し、収集対象の変数の値を示す収集データを生成する。コントローラ２０は、解析装置１０に対し、当該生成した収集データを送信する。
【００９７】
解析装置１０は、コントローラ２０から収集データを受信する（Ｓ２）。Ｓ２においては、解析装置１０は、受信した収集データを記憶部１２に記録する。収集データは、解析用のアプリケーションによって参照される。解析用のアプリケーションは、解析装置１０のユーザの操作によって起動してもよいし、常時起動されていてもよい。収集データは、任意のタイミングでアプリケーションによって参照されるようにすればよい。
【００９８】
解析装置１０は、解析のアプリケーションに基づいて、コントローラ２０又は被制御装置３０の動作を解析する（Ｓ３）。Ｓ３においては、解析装置１０は、アプリケーションに収集データを入力し、アプリケーションを実行する。アプリケーションは、解析結果を出力する。
【００９９】
解析装置１０は、Ｓ３における解析結果に基づいて、制御指令の入力条件が満たされたか否かを判定する（Ｓ４）。Ｓ４においては、解析装置１０は、変数の値が閾値以上であることを示す解析結果が得られたか否かを判定する。
【０１００】
入力条件が満たされたと判定されない場合（Ｓ４；Ｎ）、Ｓ３の処理に戻る。この場合、入力条件が満たされないので、制御指令は送信されない。一方、入力条件が満たされたと判定された場合（Ｓ４；Ｙ）、解析装置１０は、解析結果に基づいて、制御指令の内容を決定する（Ｓ５）。Ｓ５においては、解析装置１０は、アプリケーションによって決定された変数の種類とその値を取得し、これらを制御指令の内容として決定する。
【０１０１】
解析装置１０は、コントローラ２０に対し、制御指令を送信する（Ｓ６）。Ｓ６においては、解析装置１０は、Ｓ５において決定した変数の名前とその値を含む制御指令を生成して送信する。解析装置１０は、制御指令の送信が完了したか否かを判定する（Ｓ７）。Ｓ７においては、解析装置１０は、制御指令における最後のデータ部分（最後のパケット）まで送信が完了したか否かを判定する。
【０１０２】
制御指令の送信が完了したと判定されない場合（Ｓ７；Ｎ）、Ｓ６の処理に戻り、制御指令の送信が継続される。一方、制御指令の送信が完了したと判定された場合（Ｓ７；Ｙ）、解析装置１０は、コントローラ２０に対し、所定の完了通知を送信する（Ｓ８）。
【０１０３】
コントローラ２０は、第１通信部２２Ｃを介して、制御指令を受信し、制御指令に含まれる変数の名前とその値を第３記憶部２２Ｂに記録する（Ｓ９）。Ｓ９においては、コントローラ２０は、制御指令のパケットを受信するたびに、そのパケットに含まれる変数の名前とその値を第３記憶部２２Ｂに記録する。
【０１０４】
コントローラ２０は、完了通知を受信したか否かを判定する（Ｓ１０）。完了通知を受信したと判定されない場合（Ｓ１０；Ｎ）、Ｓ９の処理に戻り、制御指令の受信が継続される。一方、完了通知を受信したと判定された場合（Ｓ１０；Ｙ）、コントローラ２０は、第１記憶部２１Ａと第２記憶部２２Ａとの間で変数の整合が取られる周期の終了時点が近づいたか否かを判定する（Ｓ１１）。例えば、コントローラ２０は、タイマ値によって時間を管理し、タイマ値を参照して１周期内の終了時点の所定時間前の時点が訪れたか否かを判定する。
【０１０５】
周期の終了時点が近づいたと判定されない場合（Ｓ１１；Ｎ）、再びＳ１１の処理が実行される。この場合、完了通知を受信したとしても、制御指令に含まれる変数は第２記憶部２２Ａに書き込まれない。一方、周期の終了時点が近づいたと判定された場合（Ｓ１１；Ｙ）、コントローラ２０は、第３記憶部２２Ｂに書き込まれた変数を、第２記憶部２２Ａに書き込む（Ｓ１２）。コントローラ２０は、Ｓ１１における判定が肯定になるまで、Ｓ１２の処理の実行を待機することになる。
【０１０６】
コントローラ２０は、次の周期が訪れた場合に、第２記憶部２２Ａに書き込まれた変数を第１記憶部２１Ａに書き込み（Ｓ１３）、本処理は終了する。コントローラ２０は、Ｓ１３において書き込んだ変数に基づいて、被制御装置３０を制御する。
【０１０７】
以上説明した生産システム１によれば、コントローラ２０及び被制御装置３０の少なくとも一方の動作に関する制御指令に基づいて、書き換え可能な変数として定義された少なくとも１つの変数を書き換える。これにより、制御指令の内容を変数の値に迅速に反映し、コントローラ２０に対する制御指令を迅速に実行できる。また、制御指令により書き換え可能な変数を予め定義しておくことで、意図しない変数の書き換えを防止し、コントローラ２０に対する制御指令を正確に実行することができる。制御指令を迅速かつ正確に実行することにより、被制御装置３０の動作精度を向上させることができる。
【０１０８】
生産システム１では、入力条件が満たされた場合に制御指令が入力され、定期的に制御指令が入力されるわけではない（常に制御指令が入力されるわけではない）ため、コントローラ２０の処理負荷を軽減できる。
【０１０９】
生産システム１では、被制御装置３０の制御用の第１制御回路であるＣＰＵ２１と、外部との通信用の第２制御回路であるＩｏＴ部２２と、が物理的に分けられていることにより、処理負荷を分散し、被制御装置３０の制御や制御指令の実行に支障が出ることを防止できる。その結果、制御の精度を向上させたり、コントローラ２０に対する制御指令をより迅速かつ正確に実行したりすることができる。
【０１１０】
生産システム１では、第３記憶部２２Ｂに記憶された少なくとも１つの変数が第２記憶部２２Ａに書き込まれ、第２記憶部２２Ａに書き込まれた少なくとも１つの変数を第１記憶部２１Ａに書き込まれることにより、制御指令に応じた少なくとも１つの変数を、コントローラ２０に正確に反映できる。
【０１１１】
生産システム１は、制御指令に含まれる少なくとも１つの変数の第３記憶部２２Ｂへの書き込みが完了したと判定された場合に、第３記憶部２２Ｂに書き込まれた少なくとも１つの変数の第２記憶部２２Ａへの書き込みを開始することにより、制御指令に含まれる少なくとも１つの変数の書き込みが完了していないにも関わらず第２記憶部２２Ａへの書き込みが開始されてしまうといったことを防止し、制御指令をより正確に実行することができる。
【０１１２】
生産システム１では、コントローラ２０が完了通知を受信した場合に、制御指令に応じた少なくとも１つの変数の第３記憶部２２Ｂへの書き込みが完了したと判定することにより、書き込みの完了を正確に判定し、制御指令をより正確に実行することができる。また、コントローラ２０は、完了通知を受信すれば書き込みの完了を特定できるので、書き込みが完了したか否かを常時判定する必要がなくなり、コントローラ２０の処理負荷を軽減できる。
【０１１３】
生産システム１は、第１記憶部２１Ａと第２記憶部２２Ａとの間の整合が取られたと判定された場合に、第３記憶部２２Ｂに書き込まれた変数を第２記憶部２２Ａに書き込むことにより、制御指令をより正確に実行することができる。
【０１１４】
生産システム１は、動作の解析結果に基づいて制御指令を入力することにより、解析結果に応じた制御指令を迅速かつ正確に実行することができる。
【０１１５】
生産システム１は、外部装置である解析装置１０からの制御指令を迅速かつ正確に実行することができる。解析装置１０とコントローラ２０とで役割分担をすることで、コントローラ２０は、制御指令の送信要否等を判定する必要がなくなり、コントローラ２０の処理負荷を軽減できる。
【０１１６】
［５．変形例］
なお、本開示は、以上に説明した実施の形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
【０１１７】
（１）例えば、解析装置１０が複数のアプリケーションを記憶しており、解析部１０１が複数のアプリケーションの各々に基づいて解析を行う場合に、アプリケーションごとに、書き換え対象となる変数が定義されていてもよい。各アプリケーションでは、互いに異なる観点で解析が行われる。各アプリケーションによって参照される変数の種類は異なってもよい。例えば、トルクを解析するアプリケーションでは、トルクを示す変数が参照される。また例えば、モータの速度を解析するアプリケーションでは、回転数及び回転角を示す変数が参照される。他のアプリケーションについても同様であり、解析に必要な変数が参照される。
【０１１８】
各アプリケーションには、変数が関連付けられている。各アプリケーションに関連付けられた変数は、制御指令によって書き換えられる変数である。アプリケーションと変数の関連付けは、データ記憶部１００に記憶されているものとする。この関連付けは、任意のデータ形式であってよい。例えば、数式形式又はテーブル形式のデータによって関連付けが定義されていてもよいし、解析用のアプリケーション又は他のプログラムのコードとして関連付けが定義されていてもよい。
【０１１９】
入力部１０３は、各アプリケーションの実行結果に基づいて、当該アプリケーションに関連付けられた少なくとも１つの変数を含む制御指令を入力する。本変形例では、アプリケーションごとに入力条件が定められており、入力部１０３は、入力条件を満たしたアプリケーションに関連付けられた変数を特定する。入力部１０３は、特定した変数の名前とその値を含む制御指令を生成し、コントローラ２０に対して入力する。複数のアプリケーションの各々の入力条件が満たされた場合には、入力部１０３は、これら複数のアプリケーションの各々に対応する制御指令を入力してもよい。この場合、後述する変形例（２）のように、複数の制御指令が同時に入力されないように制限されてもよいし、特にこのような制限がなされずに複数の制御指令が同時に入力されてもよい。
【０１２０】
書き換え部２０４は、各アプリケーションの制御指令に基づいて、当該アプリケーションに関連付けられた少なくとも１つの変数を書き換える。変数を書き換える処理自体は、実施形態で説明した通りである。書き換え部２０４は、受信した制御指令に名前が含まれる変数の値を書き換えればよい。
【０１２１】
変形例（１）によれば、アプリケーションに応じた変数を書き換えることにより、アプリケーションに応じた制御指令を、より迅速かつ正確に実行することができる。その結果、被制御装置３０の動作精度を、より効果的に向上させることができる。
【０１２２】
（２）また例えば、変形例（１）において、複数のアプリケーションが同時に制御指令を送ろうとすると、変数が正確に反映されないことがある。例えば、あるアプリケーションＸの制御指令に変数Ａの値が含まれており、別のアプリケーションＹの制御指令に同じ変数Ａの値が含まれていることがある。この場合、これらの制御指令が同時にコントローラ２０に送信されると、コントローラ２０は、何れの値に書き換えてよいかを特定することができない。また、アプリケーションＸ，Ｙの何れか一方の値に書き換えられると、他方による書き換えが正確に行われないことがある。このため、複数のアプリケーションの制御指令が同時に入力されないようにしてもよい。
【０１２３】
図７は、変形例（２）の機能ブロック図である。図７に示すように、変形例（２）では、解析装置１０により制限部１０５が実現される。制限部１０５は、ＣＰＵ１１を主として実現される。制限部１０５は、複数のアプリケーションの制御指令が同時に入力されることを制限する。
【０１２４】
制限とは、複数のアプリケーションの制御指令が同時にコントローラ２０に入力されることを禁止することである。例えば、制限部１０５は、入力条件を満たしたアプリケーションが複数存在した場合に、入力部１０３に、制御指令を１つずつ入力させる。制御指令の順番は、ランダムに決まってもよいし、アプリケーションに優先順位を定めておき、その優先順位に基づいて決まってもよい。
【０１２５】
制限部１０５は、制御指令を入力する順番を決定し、入力部１０３に、当該決定した順番で制御指令を入力させる。例えば、制限部１０５は、あるアプリケーションの制御指令の入力が完了した場合に、次のアプリケーションの制御指令の入力を開始する。なお、制限部１０５による制限方法は、上記の例に限られない。例えば、制限部１０５は、入力条件を満たしたアプリケーションが複数存在した場合に、入力部１０３に、何れか１つのアプリケーションの制御指令だけを入力させてもよい。この場合、優先順位が最も高いアプリケーションの制御指令だけが入力されてもよい。
【０１２６】
変形例（２）によれば、複数のアプリケーションの制御指令が同時に入力されることを制限することにより、制御指令をより正確に実行することができる。
【０１２７】
（３）また例えば、上記変形例を組み合わせてもよい。
【０１２８】
また例えば、制御指令の入力条件が特に設定されておらず、制御指令が定期的又は常にコントローラ２０に入力されてもよい。また例えば、コントローラ２０は、ＣＰＵ２１とＩｏＴ部２２で役割分担がなされていなくてもよい。ＣＰＵ２１がＩｏＴ部２２の機能も実現してもよい。また例えば、コントローラ２０は、第１記憶部２１Ａ、第２記憶部２２Ａ、第３記憶部２２Ｂ、及び第４記憶部２３に分かれていなくてもよく、１つの記憶部内で変数の書き換えが完結してもよい。この場合、メモリが物理的に分かれているわけではないので、１つのメモリに設定された複数のデータ領域の各々に対し、制御指令に含まれる変数が書き込まれる。データ領域間で変数の値の書き換えが行われる。
【０１２９】
また例えば、第１記憶部２１Ａと第２記憶部２２Ａとの間で変数の整合が定期的に取られていなくてもよい。この場合、制御指令を受信した場合にだけ、第２記憶部２２Ａに書き込まれた変数が第１記憶部２１Ａに書き込まれてもよい。また例えば、制御指令は、収集データの解析結果ではなく、トレースデータなどの他のデータに基づいて入力されてもよい。また例えば、生産システム１における各装置のユーザが異なる場合を説明したが、ユーザは同じであってもよい。また例えば、第２記憶部２２Ａから第３記憶部２２Ｂへの変数の書き込みは、１周期が終了する直前でなくてもよい。例えば、１周期〜数周期程度のずれが許容される変数であれば、第２記憶部２２Ａから第３記憶部２２Ｂへの変数の書き込みは、任意のタイミングで行われてよい。
【０１３０】
また例えば、上記説明した各機能は、生産システム１における任意の装置で実現されるようにすればよい。例えば、解析装置１０で実現されるものとして説明した機能がコントローラ２０又は被制御装置３０によって実現されてもよい。また例えば、コントローラ２０で実現されるものとして説明した機能が解析装置１０又は被制御装置３０によって実現されてもよい。また例えば、各機能が複数のコンピュータによって分担されるのではなく、１つのコンピュータによって実現されてもよい。
【０１３１】
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【０１３２】
１  生産システム、１０  解析装置、１１，２１，３１  ＣＰＵ、１２，３２  記憶部、１３，３３  通信部、１４  操作部、１５  表示部、２０  コントローラ、２１Ａ  第１記憶部、２２Ａ  第２記憶部、２２Ｂ  第３記憶部、２２Ｃ  第１通信部、２３  第４記憶部、２４  第２通信部、３０  被制御装置、Ｄ１  変数定義データ、Ｄ２  変数値データ、１００  データ記憶部、１０１  解析部、１０２  判定部、１０３  入力部、１０４  送信部、１０５  制限部、２００  第１データ記憶部、２０１  第２データ記憶部、２０２  第３データ記憶部、２０３  第４データ記憶部、２０４  書き換え部、２０５  判定部、２０６  動作制御部、３００  データ記憶部、３０１  工程実行部。
【図１】
0006950772.tif 000002
【図２】
0006950772.tif 000003
【図３】
0006950772.tif 000004
【図４】
0006950772.tif 000005
【図５】
0006950772.tif 000006
【図６】
0006950772.tif 000007
【図７】
0006950772.tif 000008