(57)【特許請求の範囲】
【請求項１】
駆動機器と、
第１制御パラメータ群を入力として制御プログラムを実行し、当該制御プログラムに従って前記駆動機器を制御するためのコントローラと、
前記駆動機器の挙動を模擬するアクチュエータエミュレータと、
前記コントローラの挙動を模擬するコントローラエミュレータとを備え、前記コントローラエミュレータは、第２制御パラメータ群を入力として前記制御プログラムを実行し、当該制御プログラムに従って前記アクチュエータエミュレータを制御し、
前記第１制御パラメータ群を入力として前記制御プログラムが実行されているときに、前記駆動機器の挙動を示す第１動作データを収集するための第１収集部と、
前記第２制御パラメータ群を入力として前記制御プログラムが実行されているときに、前記アクチュエータエミュレータの挙動を示す第２動作データを収集するための第２収集部と、
前記第１収集部によって収集された複数の前記第１動作データおよび前記第２収集部によって収集された複数の前記第２動作データを出力するための出力部と、
複数の前記第１動作データと、複数の前記第２動作データとの間の差異の度合いを算出するための算出部と、
前記差異の度合いが小さくなるように、前記第１制御パラメータ群および前記第２制御パラメータ群の少なくとも一方を繰り返し調整するための調整部とを備える、情報処理システム。
【請求項２】
前記出力部は、前記第１収集部によって収集された複数の前記第１動作データと、前記第２収集部によって収集された複数の前記第２動作データとを並べて表示する、請求項１に記載の情報処理システム。
【請求項３】
前記出力部は、複数の前記第１動作データおよび複数の前記第２動作データを同一の時間軸上に表示する、請求項１または２に記載の情報処理システム。
【請求項４】
前記出力部は、複数の前記第１動作データの各々と複数の前記第２動作データの各々との各組み合わせにおいて差が所定値よりも大きくなる組み合わせを他の組み合わせよりも強調して表示する、請求項１〜３のいずれか１項に記載の情報処理システム。
【請求項５】
前記調整部は、前記差異の度合いが予め定められた条件を満たしたことに基づいて、前記第１制御パラメータ群および前記第２制御パラメータ群の少なくとも一方の調整を終了する、請求項１に記載の情報処理システム。
【請求項６】
前記第１収集部は、前記駆動機器および前記コントローラの通信周期ごとに前記第１動作データを収集し、
前記第２収集部は、前記通信周期に従った所定周期ごとに前記第２動作データを収集する、請求項１〜５のいずれか１項に記載の情報処理システム。
【請求項７】
第１制御パラメータ群を入力として制御プログラムをコントローラに実行させ、当該制御プログラムに従って駆動機器を制御するステップと、
前記駆動機器の挙動を模擬するアクチュエータエミュレータを制御するステップと、
前記コントローラの挙動を模擬するコントローラエミュレータとを制御するステップとを備え、前記コントローラエミュレータを制御するステップは、第２制御パラメータ群を入力として前記制御プログラムを実行し、当該制御プログラムに従って前記アクチュエータエミュレータを制御することを含み、
前記第１制御パラメータ群を入力として前記制御プログラムが実行されているときに、前記駆動機器の挙動を示す第１動作データを収集するステップと、
前記第２制御パラメータ群を入力として前記制御プログラムが実行されているときに、前記アクチュエータエミュレータの挙動を示す第２動作データを収集するするステップと、
収集された複数の前記第１動作データおよび収集された複数の前記第２動作データを出力するステップと、
複数の前記第１動作データと、複数の前記第２動作データとの間の差異の度合いを算出するステップと、
前記差異の度合いが小さくなるように、前記第１制御パラメータ群および前記第２制御パラメータ群の少なくとも一方を繰り返し調整するステップとを備える、情報処理方法。
【請求項８】
コンピュータに実行される情報処理プログラムであって、
前記情報処理プログラムは、前記コンピュータに、
第１制御パラメータ群を入力として制御プログラムをコントローラに実行させ、当該制御プログラムに従って駆動機器を制御するステップと、
前記駆動機器の挙動を模擬するアクチュエータエミュレータを制御するステップと、
前記コントローラの挙動を模擬するコントローラエミュレータとを制御するステップとを実行させ、前記コントローラエミュレータを制御するステップは、第２制御パラメータ群を入力として前記制御プログラムを実行し、当該制御プログラムに従って前記アクチュエータエミュレータを制御することを含み、
前記情報処理プログラムは、前記コンピュータに、さらに、
前記第１制御パラメータ群を入力として前記制御プログラムが実行されているときに、前記駆動機器の挙動を示す第１動作データを収集するステップと、
前記第２制御パラメータ群を入力として前記制御プログラムが実行されているときに、前記アクチュエータエミュレータの挙動を示す第２動作データを収集するするステップと、
収集された複数の前記第１動作データおよび収集された複数の前記第２動作データを出力するステップと、
複数の前記第１動作データと、複数の前記第２動作データとの間の差異の度合いを算出するステップと、
前記差異の度合いが小さくなるように、前記第１制御パラメータ群および前記第２制御パラメータ群の少なくとも一方を繰り返し調整するステップとを実行させる、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、実機としてのＦＡシステム（Factory  Automation）の動作データと、シミュレータ上でのＦＡシステムの動作データとを収集するための技術に関する。
【背景技術】
【０００２】
様々な生産現場において、生産工程を自動化するためのＦＡシステムが普及している。ＦＡシステムは、たとえば、ワークを移動するための移動テーブルや、ワークを搬送するためのコンベアや、予め定められた目的の場所までワーク移動するためのアームロボットなどで構成されている。以下では、移動テーブル、コンベア、アームロボットなどを総称して「搬送装置」ともいう。これらの搬送装置は、ＰＬＣ（Programmable Logic Controller）やロボットコントローラなどのコントローラによって制御される。
【０００３】
通常、設計者は、設計した制御プログラムがシミュレーション上で意図した通りに動作することを確認した上で制御プログラムをコントローラに書き込む。このようなシミュレーションを支援するための技術に関し、特開２０１６−４２３７８号公報（特許文献１）は、視覚センサを含めた統合的なシミュレーションを実現することが可能なシミュレーション装置を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−４２３７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実機としてのＦＡシステムが正常に動作していることを確認するため、あるいは、当該ＦＡシステムのシミュレータが意図した通りに動作していることを確認するために、実機としてのＦＡシステムの挙動と当該ＦＡシステムのシミュレータの挙動とを比較したいというニーズがある。特許文献１に開示されるシミュレーション装置は、これらの比較を実現するためのものではない。したがって、ＦＡシステムの挙動と当該ＦＡシステムのシミュレータの挙動とを比較することが可能な環境を提供するための技術が望まれている。
【課題を解決するための手段】
【０００６】
本開示の一例では、情報処理システムは、駆動機器と、第１制御パラメータ群を入力として制御プログラムを実行し、当該制御プログラムに従って上記駆動機器を制御するためのコントローラと、上記駆動機器の挙動を模擬するアクチュエータエミュレータと、上記コントローラの挙動を模擬するコントローラエミュレータとを備える。上記コントローラエミュレータは、第２制御パラメータ群を入力として上記制御プログラムを実行し、当該制御プログラムに従って上記アクチュエータエミュレータを制御する。上記情報処理システムは、上記第１制御パラメータ群を入力として上記制御プログラムが実行されているときに、上記駆動機器の挙動を示す第１動作データを収集するための第１収集部と、上記第２制御パラメータ群を入力として上記制御プログラムが実行されているときに、上記アクチュエータエミュレータの挙動を示す第２動作データを収集するための第２収集部と、上記第１収集部によって収集された複数の上記第１動作データおよび上記第２収集部によって収集された複数の上記第２動作データを出力するための出力部とを備える。
【０００７】
この開示によれば、情報処理システムは、実機としての駆動機器について取得された動作データと、当該駆動機器の挙動を模擬するアクチュエータエミュレータについて取得された動作データとを比較することが可能な環境を提供することができる。
【０００８】
本開示の他の例では、上記出力部は、上記第１収集部によって収集された複数の上記第１動作データと、上記第２収集部によって収集された複数の上記第２動作データとを並べて表示する。
【０００９】
この開示によれば、設計者は、第１，第２動作データの差異を容易に把握することができる。
【００１０】
本開示の他の例では、上記出力部は、複数の上記第１動作データおよび複数の上記第２動作データを同一の時間軸上に表示する。
【００１１】
この開示によれば、設計者は、第１，第２動作データの差がいつの時点で大きくなっているのかを容易に把握することができる。
【００１２】
本開示の他の例では、上記出力部は、複数の上記第１動作データの各々と複数の上記第２動作データの各々との各組み合わせにおいて差が所定値よりも大きくなる組み合わせを他の組み合わせよりも強調して表示する。
【００１３】
この開示によれば、設計者は、差が大きくなっている第１，第２動作データの組み合わせを容易に認識することができる。
【００１４】
本開示の他の例では、上記情報処理システムは、複数の上記第１動作データと、複数の上記第２動作データとの間の差異の度合いを算出するための算出部と、上記差異の度合いが小さくなるように、上記第１制御パラメータ群および上記第２制御パラメータ群の少なくとも一方を繰り返し調整するための調整部とをさらに備える。
【００１５】
この開示によれば、上記調整部は、駆動機器やコントローラなどのＦＡ機器の精度と、アクチュエータエミュレータやコントローラエミュレータなどのシミュレータの精度との一方を他方に自動で合わせることができる。
【００１６】
本開示の他の例では、上記調整部は、上記差異の度合いが予め定められた条件を満たしたことに基づいて、上記第１制御パラメータ群および上記第２制御パラメータ群の少なくとも一方の調整を終了する。
【００１７】
この開示によれば、上記差異の度合いが予め定められた条件を満たした時点で第１パラメータ群および第２パラメータ群の調整が自動で停止されるので、調整処理に要する時間が短縮される。
【００１８】
本開示の他の例では、上記第１収集部は、上記駆動機器および上記コントローラの通信周期ごとに上記第１動作データを収集する。上記第２収集部は、上記通信周期に従った所定周期ごとに上記第２動作データを収集する。
【００１９】
この開示によれば、第１，第２動作データが対応した周期で収集されることで、設計者は、第１，第２動作データの比較がより容易になる。
【００２０】
本開示の他の例では、情報処理方法は、第１制御パラメータ群を入力として制御プログラムをコントローラに実行させ、当該制御プログラムに従って駆動機器を制御するステップと、上記駆動機器の挙動を模擬するアクチュエータエミュレータを制御するステップと、上記コントローラの挙動を模擬するコントローラエミュレータとを制御するステップとを備える。上記コントローラエミュレータを制御するステップは、第２制御パラメータ群を入力として上記制御プログラムを実行し、当該制御プログラムに従って上記アクチュエータエミュレータを制御することを含む。上記情報処理方法は、上記第１制御パラメータ群を入力として上記制御プログラムが実行されているときに、上記駆動機器の挙動を示す第１動作データを収集するステップと、上記第２制御パラメータ群を入力として上記制御プログラムが実行されているときに、上記アクチュエータエミュレータの挙動を示す第２動作データを収集するするステップと、収集された複数の上記第１動作データおよび収集された複数の上記第２動作データを出力するステップとを備える。
【００２１】
この開示によれば、設計者は、実機としての駆動機器について取得された動作データと、当該駆動機器の挙動を模擬するアクチュエータエミュレータについて取得された動作データとを比較することが可能になる。
【００２２】
本開示の他の例では、情報処理プログラムは、上記コンピュータに、第１制御パラメータ群を入力として制御プログラムをコントローラに実行させ、当該制御プログラムに従って駆動機器を制御するステップと、上記駆動機器の挙動を模擬するアクチュエータエミュレータを制御するステップと、上記コントローラの挙動を模擬するコントローラエミュレータとを制御するステップとを実行させる。上記コントローラエミュレータを制御するステップは、第２制御パラメータ群を入力として上記制御プログラムを実行し、当該制御プログラムに従って上記アクチュエータエミュレータを制御することを含む。上記情報処理プログラムは、上記コンピュータに、さらに、上記第１制御パラメータ群を入力として上記制御プログラムが実行されているときに、上記駆動機器の挙動を示す第１動作データを収集するステップと、上記第２制御パラメータ群を入力として上記制御プログラムが実行されているときに、上記アクチュエータエミュレータの挙動を示す第２動作データを収集するするステップと、収集された複数の上記第１動作データおよび収集された複数の上記第２動作データを出力するステップとを実行させる。
【００２３】
この開示によれば、設計者は、実機としての駆動機器について取得された動作データと、当該駆動機器の挙動を模擬するアクチュエータエミュレータについて取得された動作データとを比較することが可能になる。
【発明の効果】
【００２４】
ある局面において、ＦＡシステムの挙動と当該ＦＡシステムのシミュレータの挙動とを比較することができる。
【図面の簡単な説明】
【００２５】
【図１】実施の形態に従う情報処理システムを示す図である。
【図２】動作データの表示態様の一例を示す図である。
【図３】実施の形態に従う情報処理システムの機能構成の一例を示す図である。
【図４】実施の形態に従うＦＡシステムの装置構成を説明するための図である。
【図５】サーボドライバの機能構成の一例を示す図である。
【図６】シミュレータの構成の一例を示す図である。
【図７】生成された軌跡の一例を示す図である。
【図８】ＰＬＣプログラムおよびロボットプログラムの編集画面の一例を示す図である。
【図９】ＰＬＣプログラムおよびロボットプログラムの編集画面の一例を示す図である。
【図１０】アクチュエータエミュレータに対する指令値の出力タイミングの同期処理を説明するための図である。
【図１１】実施の形態に従う情報処理装置によるシミュレーション画面の一例を示す図である。
【図１２】実施の形態に従う情報処理装置のハードウェア構成を示す模式図である。
【図１３】制御パラメータ群の調整処理を表わすフローチャートである。
【発明を実施するための形態】
【００２６】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【００２７】
＜Ａ．適用例＞
まず、図１を参照して、本発明の適用例について説明する。図１は、実施の形態に従う情報処理システム１を示す図である。
【００２８】
情報処理システム１は、ＦＡシステム５０と、ＦＡシステム５０のシミュレーション環境を提供する情報処理装置１００と、出力機器１３３とを含む。ＦＡシステム５０は、コントローラ５１と、駆動機器５５と、第１収集部６０などを含む。情報処理装置１００は、コントローラエミュレータ１２０と、アクチュエータエミュレータ１２４と、第２収集部１３０とを含む。
【００２９】
コントローラ５１は、たとえば、ＰＬＣやロボットコントローラなどである。コントローラ５１は、産業用のフィールドネットワークで駆動機器５５とネットワーク接続されており、各種の駆動機器５５を制御する。
【００３０】
コントローラ５１は、制御パラメータ群２０Ａ（第１制御パラメータ群）を入力として制御プログラム１５を実行し、制御プログラム１５に従って駆動機器５５を制御する。制御パラメータ群２０Ａは、制御プログラム１５の処理結果に影響を与えるパラメータ群である。制御プログラム１５は、サイクリック実行型のプログラム言語（たとえば、ラダー言語やＳＴ（Structured Text）言語）で記述されていてもよいし、逐次実行型の言語で記述されていてもよい。
【００３１】
駆動機器５５は、生産工程において直接的または間接的にワークに対して作用を及ぼすワークの搬送装置である。駆動機器５５は、コントローラ５１から受ける制御指令に従って駆動する。駆動機器５５は、たとえば、パラレルロボットやスカラロボットや多関節ロボットなどロボット機構である。あるいは、駆動機器５５は、ワークを移動するための移動テーブルやワークを搬送するためのコンベアなどであってもよい。
【００３２】
第１収集部６０は、制御パラメータ群２０Ａを入力として制御プログラム１５が実行されているときに、駆動機器５５の挙動を示す複数の動作データＤ１（第１動作データ）を収集する。第１収集部６０は、駆動機器５５の動作データＤ１を検知するための各種センサであってもよいし、データ収集のための収集プログラムであってもよい。動作データＤ１は、たとえば、駆動機器５５の各部分の位置、速度、加速度、角速度、角加速度などである。
【００３３】
コントローラエミュレータ１２０は、コントローラ５１の挙動を模擬するためのプログラムである。コントローラエミュレータ１２０は、制御パラメータ群２０Ｂ（第２制御パラメータ群）を入力として制御プログラム１５を実行し、制御プログラム１５に従ってコントローラエミュレータ１２０を制御する。制御パラメータ群２０Ｂは、制御プログラム１５の処理結果に影響を与えるパラメータ群である。典型的には、制御パラメータ群２０Ｂの種類は、制御パラメータ群２０Ａの種類と同じである。
【００３４】
アクチュエータエミュレータ１２４は、駆動機器５５の挙動を模擬するためのプログラムである。アクチュエータエミュレータ１２４は、コントローラエミュレータ１２０から受ける制御指令に従って駆動機器５５の動作をコンピュータ上で模擬する。
【００３５】
第２収集部１３０は、データ収集のための収集プログラムである。第２収集部１３０は、制御パラメータ群２０Ｂを入力として制御プログラム１５が実行されているときに、アクチュエータエミュレータ１２４の挙動を示す複数の動作データＤ２（第２動作データ）を収集する。動作データＤ２は、たとえば、駆動機器５５の各部分のシミュレーション上における位置、速度、加速度、角速度、角加速度などである。
【００３６】
出力機器１３３は、設計者に対して各種情報を提示するための機器である。出力機器１３３は、たとえば、ディスプレイやインジケータなどである。出力機器１３３は、実機であるＦＡシステム５０から収集された複数の動作データＤ１と、シミュレータから収集された複数の動作データＤ２とを出力する。これにより、設計者は、ＦＡシステム５０の挙動とシミュレータの挙動とを比較することが可能になる。
【００３７】
設計者は、制御パラメータ群２０Ｂを調整して動作データＤ２を動作データＤ１に近付けることで、ＦＡシステム５０の挙動をより正確に模擬できるシミュレータを設計することが可能になる。その結果、コントローラエミュレータ１２０やアクチュエータエミュレータ１２４などの各種エミュレータの精度が改善される。設計者は、このような各種のエミュレータを用いて新たなシミュレータを構築することで、様々なＦＡシステムのシミュレータを高度に設計することができる。
【００３８】
また、設計者は、制御パラメータ群２０Ａを調整して動作データＤ１を動作データＤ２に近付けることで、ＦＡシステム５０をシミュレータ通りに動作させることができる。このような調整は、たとえば、ＦＡシステム５０の経年劣化や環境変化に対して有効である。ＦＡシステム５０は、経年劣化や環境変化などにより精度が低下することがあるが、設計者は、動作データＤ２に対して動作データＤ１がずれていることを確認することで、何らかの原因により精度が低下していることを発見することができる。その後、設計者は、制御パラメータ群２０Ａを調整して動作データＤ１を動作データＤ２に近付けることで、ＦＡシステム５０の精度を当初の精度に近付けることができる。
【００３９】
＜Ｂ．動作データの表示態様＞
図２を参照して、ＦＡシステム５０から収集された動作データＤ１（図１参照）と、シミュレーションを実行した情報処理装置１００から収集された動作データＤ２（図１参照）との表示態様について説明する。図２は、動作データＤ１，Ｄ２の表示態様の一例を示す図である。
【００４０】
第１収集部６０は、コントローラ５１および駆動機器５５の通信周期ごとに動作データＤ１を収集し、各時刻に対応付けて動作データＤ１を記憶する。ここでいう時刻とは、制御プログラム１５の実行が開始されてからの相対的な時刻のことをいう。一方で、第２収集部１３０は、当該通信周期に従った所定周期ごとに動作データＤ２を収集し、各時刻に対応付けて動作データＤ２を記憶する。ここでいう時刻とは、制御プログラム１５の実行が開始されてからの相対的な時刻のことをいう。
【００４１】
出力機器１３３は、第１収集部６０によって収集された複数の動作データＤ１と第２収集部１３０によって収集された複数の動作データＤ２とを並べて表示する。これにより、設計者は、動作データＤ１および動作データＤ２の差異を容易に把握することができる。
【００４２】
好ましくは、出力機器１３３は、複数の動作データＤ１および複数の動作データＤ２を同一の時間軸上に表示する。なお、ここでいう同一の時間軸とは、動作データＤ１，Ｄ２間での共通の１つの時間軸であってもよいし、動作データＤ１，Ｄ２のそれぞれについて表示される２つの同じ時間軸であってもよい。すなわち、動作データＤ１，Ｄ２は、１つの時間軸上に表示されてもよいし、動作データＤ１が第１時間軸上に表示され、動作データＤ２が第１時間軸と同じ第２の時間軸上に表示されてもよい。動作データＤ１，Ｄ２が同一の時間軸上に表示されることで、設計者は、動作データＤ１，Ｄ２の差がいつの時点で大きくなっているのかを容易に把握することができる。
【００４３】
好ましくは、出力機器１３３は、複数の動作データＤ１の各々と複数の動作データＤ２の各々との各組み合わせにおいて差が所定値よりも大きくなる箇所を他の箇所よりも強調して表示する。これにより、設計者は、差が大きくなっている動作データＤ１，Ｄ２の組み合わせを容易に認識することができる。
【００４４】
より具体的には、情報処理装置１００は、複数の動作データＤ１の各々について、時刻をキーとして対応する動作データＤ２を特定し、特定された動作データＤ１，Ｄ２の各組み合わせについて差分を算出する。情報処理装置１００は、差分値が所定値を超える動作データＤ１，Ｄ２の組み合わせを強調箇所として特定する。一例として、時刻ｔ４〜ｔ８における動作データＤ１，Ｄ２の組み合わせが強調箇所として特定されたとする。この場合、出力機器１３３は、時刻ｔ１〜ｔ１３における動作データＤ１，Ｄ２の組み合わせの内、時刻ｔ４〜ｔ８における動作データＤ１，Ｄ２の組み合わせを他の組み合わせよりも強調して表示する。
【００４５】
強調表示の方法は、任意である。たとえば、強調箇所は、他の箇所と異なる色で表示されてもよいし、他の箇所と異なるフォントで表示されてもよい。他の箇所とは異なる表示態様（たとえば、点滅など）で表示されてもよい。
【００４６】
好ましくは、出力機器１３３は、動作データＤ１，Ｄ２間で差分値が大きい箇所ほど強調の度合いを大きくする。これにより、設計者は、動作データＤ１，Ｄ２間で差分値の大小を視覚的に把握することができる。
【００４７】
＜Ｃ．情報処理システム１の機能構成＞
図３を参照して、情報処理システム１の機能構成について説明する。図３は、情報処理システム１の機能構成の一例を示す図である。
【００４８】
図３に示されるように、情報処理システム１は、主要な構成機器として、ＦＡシステム５０と、情報処理装置１００と、記憶装置１１０とを含む。ＦＡシステム５０は、コントローラ５１と、駆動機器５５と、第１収集部６０とを含む。情報処理装置１００は、コントローラエミュレータ１２０と、アクチュエータエミュレータ１２４と、第２収集部１３０と、算出部１３２と、調整部１３４とを含む。
【００４９】
算出部１３２および調整部１３４以外の構成については、図１で説明した通りであるので、それらの説明については繰り返さない。
【００５０】
算出部１３２は、第１収集部６０によって収集された複数の動作データＤ１と、第２収集部１３０によって収集された複数の動作データＤ２とを比較し、動作データＤ１，Ｄ２の差異の度合いを算出する。より具体的には、算出部１３２は、複数の動作データＤ１の各々について、時刻をキーとして対応する動作データＤ２を特定し、特定された動作データＤ１，Ｄ２の各組み合わせについて差分を算出する。算出部１３２は、算出された差分値の絶対値を平均し、当該平均値を差異の度合いとして算出する。あるいは、算出部１３２は、算出された差分値の絶対値の内、最大値を差異の度合いとして算出する。差異の度合いは、算出される度に調整部１３４に出力される。
【００５１】
調整部１３４は、算出部１３２によって算出される差異の度合いが小さくなるように、制御パラメータ群２０Ａおよび制御パラメータ群２０Ｂの少なくとも一方を繰り返し調整する。より具体的には、調整部１３４は、各制御パラメータ群について動作データＤ１，Ｄ２の差異の度合いを記憶しておき、差異の度合いが最小となる制御パラメータ群を最終的な設定値として採用する。これにより、調整部１３４は、ＦＡシステム５０およびシミュレータの一方の精度を他方の精度に自動で合わせることができる。
【００５２】
典型的には、調整部１３４は、動作データＤ１，Ｄ２の差異の度合いが予め定められた収束条件を満たしたことに基づいて、制御パラメータ群２０Ａ，２０Ｂの調整処理を終了する。当該収束条件は、たとえば、動作データＤ１，Ｄ２の差異の度合いが予め定められた閾値よりも小さくなったときに満たされる。あるいは、当該収束条件は、制御パラメータ群２０Ａ，２０Ｂの調整回数が所定回数を超えたときに満たされてもよい。
【００５３】
好ましくは、情報処理装置１００は、制御パラメータ群２０Ａ，２０Ｂのいずれを調整対象とするかを選択可能に構成される。調整部１３４は、調整対象として選択された制御パラメータ群を他方の制御パラメータ群に合わせて繰り返し調整する。
【００５４】
調整部１３４による制御パラメータ群２０Ａ，２０Ｂの調整の仕方は、任意である。ある局面において、調整部１３４は、制御パラメータ群２０Ａを調整するときには、制御パラメータ群２０Ａの各制御パラメータを所定値ずつ調整していき、動作データＤ１，Ｄ２の差分の度合いが最小となる制御パラメータ群を最終的な設定値として採用する。同様に、調整部１３４は、制御パラメータ群２０Ｂを調整するときには、制御パラメータ群２０Ｂの各制御パラメータを所定値ずつ調整していき、動作データＤ１，Ｄ２の差分の度合いが最小となる制御パラメータ群を最終的な設定値として採用する。
【００５５】
他の局面において、情報処理装置１００は、制御パラメータ群２０Ａの各制御パラメータ、または、制御パラメータ群２０Ｂの各制御パラメータの中から、調整対象の制御パラメータを選択可能に構成されてもよい。調整部１３４は、選択された制御パラメータを所定値ずつ調整していき、動作データＤ１，Ｄ２の差分の度合いが最小となる制御パラメータ群を最終的な設定値として採用する。
【００５６】
＜Ｄ．ＦＡシステム５０の装置構成＞
図４を参照して、ＦＡシステム５０の装置構成について説明する。図４は、ＦＡシステム５０の装置構成を説明するための図である。
【００５７】
図４に示されるように、情報処理システム１は、ＦＡシステム５０と、ＦＡシステム５０のシミュレーション環境を提供する情報処理装置１００とを含む。ＦＡシステム５０は、ＰＬＣとしてのコントローラ５１と、駆動機器５５と、ロボットコントローラ３００とを含む。駆動機器５５は、アームロボット４００と、サーボドライバ５００Ａ，５００Ｂと、移動テーブル６００とを含む。
【００５８】
情報処理装置１００は、ＰＬＣとしてのコントローラ５１やロボットコントローラ３００の制御プログラム１５を設計するための開発環境を設計者に提供する。情報処理装置１００は、たとえば、ＰＣ（Personal Computer）、タブレット端末、または、スマートフォンなどのサポート装置である。コントローラ５１および情報処理装置１００は、フィールドネットワークＮＷ１に接続されている。フィールドネットワークＮＷ１には、たとえば、ＥｔｈｅｒＮＥＴ（登録商標）が採用される。但し、フィールドネットワークＮＷ１は、ＥｔｈｅｒＮＥＴに限定されず、任意の通信手段が採用され得る。たとえば、コントローラ５１および情報処理装置１００は、信号線で直接接続されてもよい。
【００５９】
コントローラ５１、ロボットコントローラ３００、およびサーボドライバ５００Ａ，５００Ｂは、デイジーチェーンでフィールドネットワークＮＷ２に接続されている。フィールドネットワークＮＷ２には、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００６０】
アームロボット４００は、たとえば、スカラロボットである。アームロボット４００は、基台４２０と、第１アーム４２４と、第２アーム４２８と、エンドエフェクタ４３２とで構成されている。第１アーム４２４は、基台４２０に連結され、当該連結点を回転軸としてｘｙ平面上においてサーボモータ４４０Ａによって回転可能に構成される。第２アーム４２８は、第１アーム４２４に連結され、当該連結点を回転軸としてｘｙ平面上においてサーボモータ４４０Ｂによって回転駆動される。エンドエフェクタ４３２は、第２アーム４２８に連結されており、サーボモータ４４０Ｃによってｚ方向に沿って駆動可能に構成されるとともに、サーボモータ４４０Ｄによって回転可能に構成される。
【００６１】
以下では、サーボモータ４４０Ａ〜４４０Ｄを総称してサーボモータ４４０ともいう。ロボットコントローラ３００には、複数のサーボドライバ（図示しない）が内蔵されており、各サーボドライバは、対応するサーボモータ４４０を制御する。サーボモータ４４０の回転軸にはエンコーダ（図示しない）が設けられている。当該エンコーダは、サーボモータ４４０の位置（回転角度）、サーボモータ４４０の回転速度、サーボモータ４４０の累積回転数などを、対応するサーボドライバにフィードバックする。なお、当該サーボドライバは、ロボットコントローラ３００に必ずしも内蔵されている必要はなく、ロボットコントローラ３００と別に設けられてもよい。
【００６２】
エンドエフェクタ４３２は、たとえば、ワークＷのピックアップツールである。ワークＷは、製品または半製品である。一例として、エンドエフェクタ４３２は、吸引力を利用してワークＷを吸着することでワークＷをピックアップする。なお、アームロボット４００は、ワークＷを把持することによりワークＷをピックアップするように構成されてもよい。
【００６３】
移動テーブル６００は、サーボモータ６０１Ａ，６０１Ｂと、ワークＷの設置台６０２とを含む。サーボモータ６０１Ａは、サーボドライバ５００Ａによって制御され、ｘ軸方向において設置台６０２を駆動する。サーボモータ６０１Ｂは、サーボドライバ５００Ｂによって制御され、ｙ軸方向において設置台６０２を駆動する。サーボモータ６０１Ａ，６０１Ｂが協働して駆動されることで、設置台６０２は、ｘｙ平面上の任意の位置に駆動される。
【００６４】
以下では、サーボドライバ５００Ａ，５００Ｂを総称してサーボドライバ５００ともいい、サーボモータ６０１Ａ，６０１Ｂを総称してサーボモータ６０１ともいう。サーボドライバ５００は、対応するサーボモータ６０１を制御する。サーボモータ６０１の回転軸には後述のエンコーダ６０５が設けられている。エンコーダ６０５は、サーボモータ６０１の位置（回転角度）、回転速度、累積回転数などをサーボドライバ５００にフィードバックする。
【００６５】
コントローラ５１およびロボットコントローラ３００が協働して動作することで、アームロボット４００および移動テーブル６００が同期して駆動される。その結果、たとえば、移動テーブル６００が移動している間に、アームロボット４００が設置台６０２上のワークＷをピックアップすることなどが可能になる。
【００６６】
図５を参照して、図４に示されるサーボドライバ５００Ａ，５００Ｂ（以下、「サーボドライバ５００」ともいう。）の機能構成について説明する。図５は、サーボドライバ５００の機能構成の一例を示す図である。
【００６７】
サーボドライバ５００は、コントローラ５１から出力される指令値に従って、サーボモータ６０１Ａ，６０１Ｂ（以下、「サーボモータ６０１」ともいう。）に制御信号（電気信号）を出力する。一例として、目標位置がコントローラ５１からサーボドライバ５００に対して与えられる。サーボドライバ５００は、駆動対象である移動テーブル６００の実位置がコントローラ５１からの目標位置と一致するように、サーボモータ６０１へ供給する駆動電流を制御する。
【００６８】
典型的には、サーボドライバ５００においては、位置についてのメインループに加えて、速度についてのマイナーループを含む、制御ループが実装されている。より具体的には、サーボドライバ５００は、機能構成として、差分演算部５１０，５１４と、位置制御部５１２と、速度制御部５１６と、加算部５１８と、トルクフィルタ５２０と、電流制御部５２２と、速度検知部５２４とを含む。
【００６９】
位置制御部５１２は、位置についての制御ループを構成する制御演算部であり、差分演算部５１０において算出される、目標位置と実位置（フィードバック値）との偏差に応じた制御量を出力する。位置制御部５１２としては、典型的には、Ｐ（比例）制御が用いられてもよい。つまり、位置制御部５１２は、目標位置と実位置との偏差に予め定められた比例係数を乗じた値を制御量として出力する。
【００７０】
速度制御部５１６は、速度についての制御ループを構成する制御演算部であり、差分演算部５１４において算出される、位置制御部５１２からの制御量と速度検知部５２４からの実速度との偏差に応じた制御量を出力する。速度制御部５１６としては、典型的には、ＰＩ（比例積分）制御が用いられてもよい。つまり、位置制御部５１２は、位置制御部５１２からの指令速度と実速度との偏差に対して、比例係数を乗じた値と積分要素によって積分された値との和を制御量として出力する。
【００７１】
トルクフィルタ５２０は、速度制御部５１６から出力される制御量（サーボモータ６０１で発生させるべきトルクの指令値）の単位時間あたりの変化の度合いが大きくなり過ぎないように、時間変化の度合いを緩和する。すなわち、トルクフィルタ５２０は、速度制御部５１６から出力される制御量を鈍らせる。トルクフィルタ５２０からの制御量は電流制御部５２２に出力される。
【００７２】
電流制御部５２２は、トルクフィルタ５２０からの制御量に対応させて、移動テーブル６００のサーボモータ６０１でのスイッチングタイミングを決定する。つまり、電流制御部５２２は、トルクフィルタ５２０にて決定された指令トルクを実現できるように、サーボモータ６０１へ供給する電流の大きさ、タイミング、波形などを決定する。電流制御部５２２にて決定された制御量に従って、サーボモータ６０１が駆動される。サーボモータ６０１から供給される電流によって、サーボモータ６０１が回転駆動される。
【００７３】
移動テーブル６００の変位を示すフィードバック値として、エンコーダ６０５から実位置が出力される、速度検知部５２４は、エンコーダ６０５からの実位置を微分して実速度を算出する。
【００７４】
なお、図５では、移動テーブル６００を駆動するためのサーボドライバ５００の機能構成について説明を行ったが、上述のアームロボット４００を駆動するためのサーボドライバも図５に示されるサーボドライバ５００と同様の機能構成を有する。
【００７５】
＜Ｆ．収集対象のデータ＞
引き続き図５を参照して、第１収集部６０によって収集される動作データＤ１（図１参照）、および第２収集部１３０によって収集される動作データＤ２（図１参照）について説明する。
【００７６】
動作データＤ１は、たとえば、駆動機器５５の各部分の位置、速度、加速度、角速度、角加速度などである。これらの動作データＤ１は、たとえば、図５に示されるサーボドライバ５００やエンコーダ６０５などから取得される。
【００７７】
より具体的には、第１収集部６０は、エンコーダ６０５によって検知される駆動機器５５の実位置を動作データＤ１として収集する。また、第１収集部６０は、サーボドライバ５００の速度検知部５２４によって検知される駆動機器５５の実速度を動作データＤ１として収集してもよい。また、第１収集部６０は、サーボドライバ５００の速度検知部５２４によって検知される駆動機器５５の実速度を動作データＤ１として収集してもよい。また、第１収集部６０は、コントローラ５１から出力される指令値を動作データＤ１として収集してもよい。
【００７８】
また、第１収集部６０は、アームロボット４００がワークを空気圧により吸着している時間を動作データＤ１として収集してもよい。また、第１収集部６０は、アームロボット４００のアーム部分における振動周波数を動作データＤ１として収集してもよい。
【００７９】
第２収集部１３０は、動作データＤ１と同種のデータをシミュレーション上で動作データＤ２として収集する。
【００８０】
＜Ｇ．シミュレータ＞
情報処理装置１００は、図４に示される実機のＦＡシステム５０の動作をシミュレーションするために、ＦＡシステム５０内の各機器の挙動を模擬するエミュレータ群を利用する。ここでいうエミュレータとは、ＦＡシステム５０内の各機器の挙動を再現することが可能なプログラムのことをいう。各エミュレータがＦＡシステム５０内の各機器の挙動を正確に模擬することで、情報処理装置１００は、実機としてのＦＡシステム５０の動作を正確にシミュレーションすることができる。
【００８１】
以下では、図６および図７を参照して、エミュレータで構成されたシミュレータ５０Ｘについて説明する。図６は、シミュレータ５０Ｘの構成の一例を示す図である。
【００８２】
図６に示されるように、シミュレータ５０Ｘは、記憶装置１１０と、仮想時刻を生成するためのタイマー１４０と、第１エミュレータ１５０と、第２エミュレータ１６０とを含む。
【００８３】
記憶装置１１０は、シミュレータ５０Ｘを制御するための制御プログラム１５を格納する。図６の例では、制御プログラム１５は、第１エミュレータ１５０を制御するためのＰＬＣプログラム１１１と、第２エミュレータ１６０を制御するためのロボットプログラム１１２とで構成されている。
【００８４】
第１エミュレータ１５０は、コントローラ５１の挙動を模擬するＰＬＣエミュレータ１５１と、移動テーブル６００などの駆動機器の挙動を模擬するアクチュエータエミュレータ１５５とで構成されている。ＰＬＣエミュレータ１５１は、実行部１５１Ａと、指令値生成部１５３とで構成されている。アクチュエータエミュレータ１５５は、サーボドライバ５００Ａ，５００Ｂ（図４参照）の挙動を模擬するためのサーボドライバエミュレータ１５６Ａ，１５６Ｂと、サーボモータ６０１Ａ，６０１Ｂ（図４参照）の挙動を模擬するためのサーボモータエミュレータ１５７Ａ，１５７Ｂとで構成されている。
【００８５】
実行部１５１Ａは、アクチュエータエミュレータ１５５を制御するためのＰＬＣプログラムと、アクチュエータエミュレータ１６５を制御するためのロボットプログラム１１２とを実行する。
【００８６】
実行部１５１Ａは、軌跡演算部１５２と、解釈部１５４とで構成されている。軌跡演算部１５２は、アクチュエータエミュレータ１５５をシミュレーション上で駆動するためのＰＬＣプログラム１１１を読み込んでアクチュエータエミュレータ１５５を駆動するための軌跡を生成する。ＰＬＣプログラム１１１は、サイクリック実行型のプログラム言語で記述されており、たとえば、ラダー言語やＳＴ（Structured Text）言語で記述されている。サイクリック実行型とは、予め定められた制御周期ごとにプログラムに含まれる命令群を繰り返し実行する実行形態のことをいう。すなわち、軌跡演算部１５２は、予め定められた制御周期ごとにＰＬＣプログラム１１１に含まれる命令群を繰り返し実行する。当該制御周期は、タイマー１４０によって生成される仮想時刻を尺度とする。
【００８７】
ＰＬＣプログラム１１１には、移動テーブル６００を目標位置まで移動させるための移動命令が含まれている。軌跡演算部１５２は、ＰＬＣプログラム１１１に含まれる移動命令を実行すると、アクチュエータエミュレータ１５５による制御対象をシミュレーション上で移動させるための軌跡を生成する。当該軌跡は、たとえば、駆動対象の現在位置と、移動命令に含まれる目標位置とに基づいて生成される。図７は、生成された軌跡の一例を示す図である。図７の例では、ｘｙ平面上の軌跡が示されているが、生成される軌跡は、一次元であってもよいし、三次元であってもよい。生成された軌跡は、指令値生成部１５３に出力される。軌跡演算部１５２は、アクチュエータエミュレータ１６５によって駆動されるアームロボット４００の位置が目標位置に到達したことに基づいて、次の命令の解釈指示を解釈部１５４に送る。
【００８８】
指令値生成部１５３は、生成された軌跡に従ってアクチュエータエミュレータ１５５に出力するための指令値を生成する。当該指令値は、サーボモータエミュレータ１５７Ａ，１５７Ｂをシミュレーション上で駆動するための制御値であり、たとえば、回転角度、回転速度、または位置などで示される。図７の例では、指令値生成部１５３は、サーボモータエミュレータ１５７Ａについての回転角度θｘと、サーボモータエミュレータ１５７Ｂについての回転角度θｙとを指令値として各制御周期ごとに生成している。現在の仮想時刻に応じて、対応する回転角度θｘ，θｙがサーボモータエミュレータ１５７Ａ，１５７Ｂに順次出力される。
【００８９】
サーボドライバエミュレータ１５６Ａ，１５６Ｂは、指令値生成部１５３から出力される指令値に従ってサーボモータエミュレータ１５７Ａ，１５７Ｂをシミュレーション上で駆動する。
【００９０】
第２エミュレータ１６０は、ロボットコントローラ３００の挙動を模擬するロボットコントローラエミュレータ１６１と、アームロボット４００の駆動機器の挙動を模擬するアクチュエータエミュレータ１６５とで構成されている。ロボットコントローラエミュレータ１６１は、軌跡演算部１６２と、指令値生成部１６３とで構成されている。アクチュエータエミュレータ１６５は、図４に示されるサーボモータ４４０Ａ，４４０Ｂの挙動を模擬するサーボモータエミュレータ１６７Ａ，１６７Ｂとで構成されている。
【００９１】
解釈部１５４は、ロボットプログラム１１２を実行する。ロボットプログラム１１２は、アクチュエータエミュレータ１６５をシミュレーション上で駆動するための命令群を含む。ロボットプログラム１１２は、逐次実行型のロボット言語で記述されている。逐次実行型とは、予め定められた実行順序に従ってプログラムに含まれる命令群を順次実行する実行形態のことをいう。すなわち、解釈部１５４は、ロボットプログラム１１２に含まれる命令群を予め定められた実行順序で逐次的に実行する。当該命令群の実行は、タイマー１４０によって生成される仮想時刻に従って実行される。図６の例では、解釈部１５４は、ロボットプログラム１１２に含まれる命令群を予め定められた実行順序に従って解釈し、その解釈結果を順次ロボットコントローラエミュレータ１６１に出力している。
【００９２】
軌跡演算部１６２は、解釈部１５４から出力される解釈結果が移動命令を示す場合、アクチュエータエミュレータ１６５による制御対象をシミュレーション上で移動させるための軌跡を生成する。当該軌跡は、駆動対象の現在位置と、移動命令に含まれる目標位置とに基づいて生成される。生成された軌跡は、指令値生成部１６３に出力される。
【００９３】
指令値生成部１６３は、軌跡演算部１６２から出力された軌跡に従ってアクチュエータエミュレータ１６５に出力するための指令値を生成する。当該指令値は、サーボモータエミュレータ１６７Ａ，１６７Ｂをシミュレーション上で駆動するための制御値であり、たとえば、サーボモータエミュレータ１６７Ａ，１６７Ｂの仮想的な回転角度、回転速度、または位置などで示される。アクチュエータエミュレータ１６５に対する指令値の生成方法は、アクチュエータエミュレータ１５５に対する指令値の生成方法と同じであるので、その説明については繰り返さない。
【００９４】
サーボモータエミュレータ１６７Ａ，１６７Ｂは、指令値生成部１６３から出力される指令値に従ってシミュレーション上で駆動される。なお、アクチュエータエミュレータ１６５は、アクチュエータエミュレータ１５５と同様に、サーボドライバエミュレータを含んでもよい。
【００９５】
なお、上述では、ＰＬＣプログラム１１１およびロボットプログラム１１２を例に挙げて説明を行ったが、情報処理装置１００による実行対象の制御プログラムは、ＰＬＣプログラム１１１およびロボットプログラム１１２に限定されない。制御プログラムには、種類が異なるプログラム言語で記述されている制御プログラムであれば任意の制御プログラムが採用される。
【００９６】
＜Ｈ．制御プログラムの同期実行処理＞
上述のＰＬＣプログラム１１１およびロボットプログラム１１２は、同期して実行される。これにより、情報処理装置１００は、ＰＬＣプログラム１１１に従って駆動されるテーブルと、ロボットプログラム１１２に従って駆動されるロボットとをシミュレーション上で協働させることができる。以下では、図８および図９を参照して、ＰＬＣプログラム１１１およびロボットプログラム１１２の同期処理について説明する。
【００９７】
図８および図９は、ＰＬＣプログラム１１１およびロボットプログラム１１２の編集画面の一例を示す図である。情報処理装置１００の出力機器１３３には、ＰＬＣプログラム１１１およびロボットプログラム１１２の編集画面１２５が表示されている。編集画面１２５は、ＰＬＣプログラム１１１の編集領域１２０Ａと、ロボットプログラム１１２の編集領域１２０Ｂとを含む。編集領域１２０Ａ，１２０Ｂは、１つの画面において並べて表示されている。これにより、設計者は、ＰＬＣプログラム１１１およびロボットプログラム１１２を並行して設計することができる。
【００９８】
上述したように、ＰＬＣプログラム１１１は、サイクリック実行型のプログラムである。そのため、ＰＬＣエミュレータ１５１（図６参照）は、予め定められた制御周期ごとにＰＬＣプログラム１１１に含まれる命令群を繰り返し実行する。より具体的には、ＰＬＣエミュレータ１５１は、ＰＬＣプログラム１１１の先頭から最終までを１制御周期で実行する。その次の制御周期では、ＰＬＣエミュレータ１５１は、再び、ＰＬＣプログラム１１１の先頭から最終までを実行する。
【００９９】
一方で、ロボットプログラム１１２は、逐次実行型のプログラムである。そのため、解釈部１５４（図６参照）は、ロボットプログラム１１２に含まれる命令群を予め定められた実行順序で逐次的に解釈する。その結果、ロボットコントローラエミュレータ１６１は、ロボットプログラム１１２を上から順に１行ずつ実行する。このとき、解釈部１５４は、各行の命令の実行が完了するまでは次の行の命令を解釈しない。より具体的には、ロボットコントローラエミュレータ１６１は、現命令の実行が完了したことに基づいて、そのことを解釈部１５４にフィードバックする。解釈部１５４は、このフィードバックを受けて次の行の命令を解釈する。
【０１００】
このような実行形態の違いから、ＰＬＣプログラム１１１およびロボットプログラム１１２を同期して実行するためには、ＰＬＣプログラム１１１における命令群とロボットプログラム１１２に含まれる命令群とが、同期された制御周期で実行される必要がある。
【０１０１】
同期実行を実現するために、解釈部１５４は、ロボットプログラム１１２（第２制御プログラム）に含まれる各命令について、当該命令の実行に要する実行時間を算出する。ここでいう実行時間は、ロボットプログラム１１２に含まれる命令の実行に要する時間に相関する指標で表されればよく、たとえば、ロボットプログラム１１２に含まれる各命令の実行に要する制御周期のサイクル数などで表されてもよい。当該サイクル数は、タイマー１４０による仮想時刻を尺度とする。仮想時刻の単位は、たとえば、「ｍｓ」で表される。図８の例では、ロボットプログラム１１２の１４行目に示されるロボット命令１１４については「２００ｍｓ」のサイクル数が特定されている。ロボット命令１１４に示される「ＡＰＰＲＯＳ  ｐｉｃｋ  ｌｏｃ，２５」は、目標位置「２５」にアームロボット４００を移動させる移動命令である。解釈部１５４が当該移動命令を解釈することにより、アームロボット４００を目標位置まで動作させるのに要する制御周期のサイクル数として「２００ｍｓ」が特定される。
【０１０２】
ＰＬＣエミュレータ１５１は、ロボットコントローラエミュレータ１６１がロボット命令１１４を実行している間、ロボット命令１１４の実行に要する時間「２００ｍｓ」の分、ＰＬＣプログラム１１１に含まれる命令群を繰り返し実行する。一例として、ＰＬＣプログラム１１１の制御周期が「１ｍｓ」である場合には、ロボット命令１１４が実行されている間に、ＰＬＣエミュレータ１５１は、ＰＬＣプログラム１１１を２００サイクル（＝２００ｍｓ／１ｍｓ）繰り返し実行する。
【０１０３】
ＰＬＣエミュレータ１５１が、ロボット命令１１４の実行に要する実行時間の分、ＰＬＣプログラム１１１に含まれる命令群を繰り返した後、ロボットコントローラエミュレータ１６１は、ロボット命令１１４の次の命令の実行を開始する。その例が図９に示されている。図９の例では、解釈部１５４は、ロボット命令１１４からロボット命令１１５に制御を切り替えている。ロボット命令１１５に示される「ＭＯＶＥＳ  ｐｉｃｋ．ｌｏｃ」は、目標位置「ｐｉｃｋ．ｌｏｃ」にアームロボット４００を移動させる移動命令である。解釈部１５４がロボット命令１１５を解釈することにより、アームロボット４００を目標位置まで動作させるのに要する実行時間「１０ｍｓ」が特定される。当該実行時間は、ロボット命令１１５の実行開始前または実行開始時に特定される。
【０１０４】
その後、ＰＬＣエミュレータ１５１は、解釈部１５４がロボット命令１１５を実行している間、ロボット命令１１５の実行に要する時間「１０ｍｓ」の分、ＰＬＣプログラム１１１に含まれる命令群を繰り返し実行する。一例として、ＰＬＣプログラム１１１の制御周期が「１ｍｓ」である場合には、ロボット命令１１５が実行されている間に、ＰＬＣエミュレータ１５１は、ＰＬＣプログラム１１１を１０サイクル（＝１０ｍｓ／１ｍｓ）繰り返し実行する。
【０１０５】
＜Ｉ．指令値の同期出力処理＞
ＥｔｈｅｒＣＡＴでの通信態様を模擬するために、ＰＬＣエミュレータ１５１（図６参照）は、ＥｔｈｅｒＣＡＴの通信周期に従った予め定められた制御周期ごとに、アクチュエータエミュレータ１５５に指令値を出力する。同様に、ロボットコントローラエミュレータ１６１（図６参照）は、ＥｔｈｅｒＣＡＴの通信周期に従った予め定められた制御周期ごとに、アクチュエータエミュレータ１６５に指令値を出力する。これにより、実システムと同様の通信態様でＦＡシステム５０の動作をシミュレーションすることができる。
【０１０６】
図１０は、アクチュエータエミュレータ１５５，１６５（図６参照）に対する指令値の出力タイミングの同期処理を説明するための図である。以下では、ロボットプログラム１１２に含まれるロボット命令１１４，１１５（図８，図９参照）の実行過程を例に挙げて、指令値の出力タイミングの同期処理について説明する。
【０１０７】
制御周期「Ｎ」において、ＰＬＣエミュレータ１５１は、Ｏ／Ｉ（Output/Input）処理、指令値計算処理、および解釈処理を順に実行する。ＰＬＣエミュレータ１５１の「Ｏ／Ｉ処理」は、前の指令値計算処理の結果を出力し、その後、今回の指令値計算処理に必要な情報を入力として取得する処理である。ＰＬＣエミュレータ１５１の「指令値計算処理」は、アクチュエータエミュレータ１５５に対する位置指令値を計算する処理である。解釈処理は、ロボットプログラム１１２を解釈するための処理である。図１０の例では、この解釈処理により、ロボットプログラム１１２に含まれるロボット命令１１４の実行に要する制御周期のサイクル数として「２００ｍｓ」が特定される。
【０１０８】
同様に、制御周期「Ｎ」において、ロボットコントローラエミュレータ１６１は、Ｏ／Ｉ処理、および指令値計算処理を順に実行する。ロボットコントローラエミュレータ１６１の「Ｏ／Ｉ処理」は、前の指令値計算処理の結果を出力し、その後、今回の指令値計算処理に必要な情報を入力として取得する処理である。ロボットコントローラエミュレータ１６１の「指令値計算処理」は、アクチュエータエミュレータ１６５に対する位置指令値を計算する処理である。
【０１０９】
ＰＬＣエミュレータ１５１は、ロボットコントローラエミュレータ１６１がロボット命令１１４を実行している間、ロボット命令１１４の実行時間「２００ｍｓ」の分、ＰＬＣプログラム１１１を繰り返し実行する。制御周期が「１ｍｓ」である場合、ＰＬＣエミュレータ１５１は、ＰＬＣプログラム１１１を２００サイクル（＝２００ｍｓ／１ｍｓ）実行する。その間、ＰＬＣエミュレータ１５１は、Ｏ／Ｉ処理および指令値計算処理を制御周期「１ｍｓ」ごとに実行し、制御周期「１ｍｓ」ごとにアクチュエータエミュレータ１５５に指令値を出力する。
【０１１０】
一方で、ロボットコントローラエミュレータ１６１は、ロボット命令１１４を実行している間、予め定められた制御周期ごとにＯ／Ｉ処理および指令値計算処理を実行する。制御周期が「１ｍｓ」である場合、ロボットコントローラエミュレータ１６１は、Ｏ／Ｉ処理および指令値計算処理を制御周期「１ｍｓ」ごとに実行し、制御周期「１ｍｓ」ごとにアクチュエータエミュレータ１６５に指令値を出力する。
【０１１１】
ロボット命令１１４の実行から「２００ｍｓ」後である制御周期「Ｎ＋２００」において、ロボット命令１１４の実行が完了する。ＰＬＣエミュレータ１５１は、次の制御周期「Ｎ＋２０１」において、次のロボット命令１１５の解釈処理を実行する。図１０の例では、この解釈処理により、ロボット命令１１５の実行時間として「１０ｍｓ」が特定される。
【０１１２】
ＰＬＣエミュレータ１５１は、ロボットコントローラエミュレータ１６１がロボット命令１１５を実行している間、ロボット命令１１５の実行時間「１０ｍｓ」の分、ＰＬＣプログラム１１１を繰り返し実行する。制御周期が「１ｍｓ」である場合、ＰＬＣエミュレータ１５１は、ＰＬＣプログラム１１１を１０サイクル（＝１０ｍｓ／１ｍｓ）実行する。その間、ＰＬＣエミュレータ１５１は、Ｏ／Ｉ処理および指令値計算処理を実行し、制御周期「１ｍｓ」ごとにアクチュエータエミュレータ１５５に指令値を出力する。
【０１１３】
一方で、ロボットコントローラエミュレータ１６１は、ロボット命令１１５を実行している間、予め定められた制御周期ごとにＯ／Ｉ処理および指令値計算処理を実行する。制御周期が「１ｍｓ」である場合、ロボットコントローラエミュレータ１６１は、Ｏ／Ｉ処理および指令値計算処理を制御周期「１ｍｓ」ごとに実行し、制御周期「１ｍｓ」ごとにアクチュエータエミュレータ１６５に指令値を出力する。
【０１１４】
このように、ＰＬＣエミュレータ１５１およびロボットコントローラエミュレータ１６１が同期された状態で、アクチュエータエミュレータ１５５，１６５のそれぞれに指令値が出力されることで、異なる種類の制御対象の（たとえば、アームロボットや移動テーブルなど）を同期することが可能になる。
【０１１５】
なお、上述では、ＰＬＣエミュレータ１５１の制御周期とロボットコントローラエミュレータ１６１の制御周期とが同じである例について説明を行ったが、これらの制御周期は、同期されていれば異なっていてもよい。一例として、これらの制御周期の一方は、他方の制御周期の整数倍であってもよい。たとえば、ＰＬＣエミュレータ１５１の制御周期が「１ｍｓ」であり、ロボットコントローラエミュレータ１６１の制御周期が「２ｍｓ」であってもよい。
【０１１６】
なお、上述では、ＰＬＣエミュレータ１５１およびロボットコントローラエミュレータ１６１で構成されるシミュレータによる制御プログラム（すなわち、ＰＬＣプログラム１１１およびロボットプログラム１１２）の実行周期について説明を行ったが、実機としてのＦＡシステム５０による制御プログラムの実行周期も同様である。そのため、ＦＡシステム５０による制御プログラムの実行周期の説明については繰り返さない。
【０１１７】
シミュレータによって収集される上述の動作データＤ２（図１参照）は、図１０に示される制御周期ごとに収集される。当該制御周期は、実機としてのコントローラ５１（図１参照）および駆動機器５５（図１参照）の通信周期に従って決定される。一方で、実機としてのＦＡシステム５０によって収集される上述の動作データＤ１（図１参照）は、コントローラ５１および駆動機器５５の通信周期ごとに収集される。このように、動作データＤ１，Ｄ２が対応した周期で収集されることで、動作データＤ１，Ｄ２の比較がより容易になる。
【０１１８】
＜Ｊ．シミュレーション画面＞
図１１は、情報処理装置１００によるシミュレーション画面の一例を示す図である。図１１を参照して、同期シミュレーションを実現するためのシミュレーション画面の一例について説明する。
【０１１９】
情報処理装置１００の出力機器１３３には、ＰＬＣプログラム１１１およびロボットプログラム１１２を編集するための編集画面１２５が示されている。編集画面１２５は、ＰＬＣプログラム１１１の編集領域１２０Ａと、ロボットプログラム１１２の編集領域１２０Ｂと、アームロボットや移動テーブルなどの駆動対象のシミュレーション上での挙動をリアルタイムに表示する表示領域１２０Ｃとを含む。
【０１２０】
表示領域１２０Ｃには、実機のアームロボット４００を表したロボット画像４００Ａ，４００Ｂと、実機の移動テーブル６００を表した移動テーブル画像６００Ａとが示されている。ロボット画像４００Ａ，４００Ｂや移動テーブル画像６００Ａは、たとえば、ＣＡＤ（Computer Aided Design）データなどから生成される。一例として、情報処理装置１００は、三次元の形状をＣＡＤデータのインポート機能を有し、このインポート機能により、アームロボット４００のＣＡＤデータと、移動テーブル６００のＣＡＤデータを読み込む。情報処理装置１００は、２つのアームロボット４００と１つの移動テーブル６００とについて同期シミュレーションを行う場合には、アームロボット４００のＣＡＤデータから２つのアームロボットの三次元データを生成するとともに、移動テーブル６００のＣＡＤデータから１つの移動テーブルの三次元データを生成する。
【０１２１】
図１１の例のように、１つの移動テーブル６００と２つのアームロボット４００とについてシミュレーションを行う場合には、１つの第１エミュレータ１５０と、２つの第２エミュレータ１６０とが用いられる。上述したように、第１エミュレータ１５０および第２エミュレータは、同期した制御周期に従って、対応するアクチュエータエミュレータに指令値を出力する。情報処理装置１００は、順次出力されるこれらの指令値に基づいて、アームロボットの各三次元データを逐次更新するとともに、移動テーブルの三次元データを逐次更新する。情報処理装置１００は、逐次更新されるアームロボットの各三次元データからロボット画像４００Ａ，４００Ｂの表示を逐次更新する。これと同期して、情報処理装置１００は、逐次更新される移動テーブルの三次元データから移動テーブル画像６００Ａの表示を逐次更新する。
【０１２２】
これにより、ＰＬＣプログラム１１１およびロボットプログラム１１２の実行に従って、ロボット画像４００Ａ，４００Ｂの表示および移動テーブル画像６００Ａの表示が同期して更新される。その結果、設計者は、ＰＬＣプログラム１１１およびロボットプログラム１１２が意図した通りに動作しているか否かを容易に確認することができ、ＰＬＣプログラム１１１およびロボットプログラム１１２を容易にデバッグすることができる。
【０１２３】
＜Ｋ．情報処理装置１００のハードウェア構成＞
図１２を参照して、情報処理装置１００のハードウェア構成について説明する。図１２は、情報処理装置１００のハードウェア構成を示す模式図である。
【０１２４】
情報処理装置１００は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。情報処理装置１００は、制御装置１０１と、主メモリ１０２と、通信インターフェイス１０３と、操作インターフェイス１０５と、表示インターフェイス１０６と、光学ドライブ１０７と、記憶装置１１０（記憶部）とを含む。これらのコンポーネントは、内部バス１１９を介して互いに通信可能に接続されている。
【０１２５】
制御装置１０１は、たとえば、少なくとも１つの集積回路によって構成される。集積回路は、たとえば、少なくとも１つのＣＰＵ（Central  Processing  Unit）、少なくとも１つのＡＳＩＣ（Application  Specific  Integrated  Circuit）、少なくとも１つのＦＰＧＡ（Field  Programmable  Gate  Array）、またはそれらの組み合わせなどによって構成される。制御装置１０１は、プログラムを主メモリ１０２に展開して実行することで、本実施の形態に従う各種処理を実現する。主メモリ１０２は、揮発性メモリにより構成され、制御装置１０１によるプログラム実行に必要なワークメモリとして機能する。
【０１２６】
通信インターフェイス１０３は、外部機器との間でネットワークを介してデータを遣り取りする。当該外部機器は、たとえば、上述のコントローラ５１（図１参照）、サーバ、その他の通信機器などを含む。情報処理装置１００は、通信インターフェイス１０３を介して、情報処理プログラム１１３をダウンロードできるように構成されてもよい。情報処理プログラム１１３は、制御プログラム１５の統合開発環境を提供するためのプログラムであり、上述のシミュレーション処理などの機能を提供する。
【０１２７】
操作インターフェイス１０５は、操作部１２２に接続され、操作部１２２からのユーザ操作を示す信号を取り込む。操作部１２２は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。設計者は、操作部１２２を用いて、制御プログラム１５を編集することができる。
【０１２８】
表示インターフェイス１０６は、出力機器１３３と接続され、制御装置１０１などからの指令に従って、出力機器１３３に対して、画像を表示するための画像信号を送出する。出力機器１３３は、ディスプレイ、インジケータなどからなり、ユーザに対して各種情報を提示する。
【０１２９】
光学ドライブ１０７は、光学ディスク１０７Ａなどから、その中に格納されている各種プログラムを読み出して、記憶装置１１０にインストールする。
【０１３０】
図１２には、光学ドライブ１０７を介して必要なプログラムを情報処理装置１００にインストールする構成例を示すが、これに限られることなく、ネットワーク上のサーバ装置などからダウンロードするようにしてもよい。あるいは、情報処理装置１００上のプログラムは、ＵＳＢ（Universal Serial Bus）メモリ、ＳＤ（Secure Digital）カード、ＣＦ（Compact Flash）などの記憶媒体に書き込まれているプログラムによって書き換えられるように構成されてもよい。
【０１３１】
記憶装置１１０は、たとえば、ハードディスクや外付けの記憶媒体である。一例として、記憶装置１１０は、情報処理プログラム１１３と、制御プログラム１５とを格納する。情報処理プログラム１１３は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う同期処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う情報処理装置１００の趣旨を逸脱するものではない。さらに、本実施の形態に従う情報処理プログラム１１３によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも１つのサーバが本実施の形態に従う同期処理を実現する、所謂クラウドサービスの形態で情報処理装置１００が構成されてもよい。
【０１３２】
＜Ｌ．情報処理装置１００の制御構造＞
図１３を参照して、情報処理装置１００の制御構造について説明する。図１３は、制御プログラム１５の制御パラメータ群２０Ａ，２０Ｂの調整処理を表わすフローチャートである。図１３には、制御パラメータ群２０Ａ，２０Ｂの手動での調整処理が示されている。図１３の処理は、情報処理装置１００の制御装置１０１がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【０１３３】
ステップＳ１１０において、制御装置１０１は、ＦＡシステム５０用の制御パラメータ群２０Ａについて変更命令を受け付けたか否かを判断する。一例として、当該変更命令は、設計者によって制御パラメータ群２０Ａが変更されたことに基づいて発せられる。制御装置１０１は、制御パラメータ群２０Ａについて変更命令を受け付けたと判断した場合（ステップＳ１１０においてＹＥＳ）、制御をステップＳ１１２に切り替える。そうでない場合には（ステップＳ１１０においてＮＯ）、制御装置１０１は、制御をステップＳ１２０に切り替える。
【０１３４】
ステップＳ１１２において、制御装置１０１は、変更後の制御パラメータ群２０Ａと、制御プログラム１５とをＦＡシステム５０のコントローラ５１に送信する。このとき、制御プログラム１５が既にコントローラ５１にダウンロードされている場合には、制御プログラム１５の送信は省略されてもよい。
【０１３５】
ステップＳ１１４において、制御装置１０１は、ＦＡシステム５０のコントローラ５１に制御プログラム１５を実行させる。これにより、コントローラ５１は、制御パラメータ群２０Ａを入力として制御プログラム１５を実行する。このとき、ＦＡシステム５０の第１収集部６０は、駆動機器５５の挙動を示す動作データＤ１を収集する。収集された動作データＤ１は、情報処理装置１００に送信される。
【０１３６】
ステップＳ１２０において、制御装置１０１は、シミュレータ用の制御パラメータ群２０Ｂについて変更命令を受け付けたか否かを判断する。一例として、当該変更命令は、設計者によって制御パラメータ群２０Ｂが変更されたことに基づいて発せられる。制御装置１０１は、制御パラメータ群２０Ｂについて変更命令を受け付けたと判断した場合（ステップＳ１２０においてＹＥＳ）、制御をステップＳ１２２に切り替える。そうでない場合には（ステップＳ１２０においてＮＯ）、制御装置１０１は、制御をステップＳ１３０に切り替える。
【０１３７】
ステップＳ１２２において、制御装置１０１は、コントローラエミュレータ１２０として、変更後の制御パラメータ群２０Ｂを入力として制御プログラム１５を実行する。
【０１３８】
ステップＳ１２４において、制御装置１０１は、第２収集部１３０として、アクチュエータエミュレータ１２４の挙動を示す動作データＤ２を収集する。
【０１３９】
ステップＳ１３０において、制御装置１０１は、動作データＤ１と動作データＤ２とを出力機器１３３に並べて表示させる。これにより、設計者は、動作データＤ１および動作データＤ２の違いを容易に把握することができ、制御パラメータ群２０Ａ，２０Ｂを調整するための手がかりにすることができる。
【０１４０】
ステップＳ１４０において、制御装置１０１は、制御パラメータの調整処理を終了するか否かを判断する。制御装置１０１は、制御パラメータの調整処理を終了するか否かを判断すると判断した場合（ステップＳ１４０においてＹＥＳ）、図１３に示される処理を終了する。そうでない場合には（ステップＳ１４０においてＮＯ）、制御装置１０１は、制御をステップＳ１１０に戻す。
【０１４１】
なお、上述では、設計者が制御パラメータを手動で調整する例について説明を行ったが、図３の調整部１３４ついて説明したように、制御パラメータは、自動で調整されてもよい。
【０１４２】
＜Ｍ．まとめ＞
以上のようにして、情報処理システム１は、制御パラメータ群２０Ａを入力として制御プログラム１５をコントローラ５１に実行させ、駆動機器５５の動作データＤ１を取得する。一方で、情報処理システム１は、制御パラメータ群２０Ｂを入力として制御プログラム１５をコントローラエミュレータ１２０に実行させ、アクチュエータエミュレータ１２４のコンピュータ上における動作データＤ２取得する。情報処理システム１は、取得した動作データＤ１，Ｄ２を出力機器１３３に表示させる。これにより、情報処理システム１は、ＦＡシステム５０の挙動とシミュレータの挙動とを比較することが可能な環境を提供することができる。
【０１４３】
設計者は、制御パラメータ群２０Ｂを調整して動作データＤ２を動作データＤ１に近付けることで、ＦＡシステム５０の挙動をより正確に模擬できるシミュレータを設計することが可能になる。その結果、コントローラエミュレータ１２０やアクチュエータエミュレータ１２４などの各種エミュレータの精度が改善される。設計者は、このような各種のエミュレータを用いて新たなシミュレータを構築することで、様々なＦＡシステムのシミュレータを高度に設計することができる。
【０１４４】
また、設計者は、制御パラメータ群２０Ａを調整して動作データＤ１を動作データＤ２に近付けることで、ＦＡシステム５０をシミュレータ通りに動作させることができる。このような調整は、たとえば、ＦＡシステム５０の経年劣化や環境変化に対して有効である。ＦＡシステム５０は、経年劣化や環境変化などにより精度が低下することがあるが、設計者は、動作データＤ２に対して動作データＤ１がずれていることを確認することで、何らかの原因により精度が低下していることを発見することができる。その後、設計者は、制御パラメータ群２０Ａを調整して動作データＤ１を動作データＤ２に近付けることで、ＦＡシステム５０の精度を当初の精度に近付けることができる。
【０１４５】
＜Ｎ．付記＞
以上のように、本実施形態は以下のような開示を含む。
【０１４６】
［構成１］
駆動機器（５５）と、
第１制御パラメータ群（２０Ａ）を入力として制御プログラム（１５）を実行し、当該制御プログラム（１５）に従って前記駆動機器（５５）を制御するためのコントローラと、
前記駆動機器（５５）の挙動を模擬するアクチュエータエミュレータ（１２４）と、
前記コントローラの挙動を模擬するコントローラエミュレータ（１２０）とを備え、前記コントローラエミュレータ（１２０）は、第２制御パラメータ群（２０Ｂ）を入力として前記制御プログラム（１５）を実行し、当該制御プログラム（１５）に従って前記アクチュエータエミュレータ（１２４）を制御し、
前記第１制御パラメータ群（２０Ａ）を入力として前記制御プログラム（１５）が実行されているときに、前記駆動機器（５５）の挙動を示す第１動作データ（Ｄ１）を収集するための第１収集部（６０）と、
前記第２制御パラメータ群（２０Ｂ）を入力として前記制御プログラム（１５）が実行されているときに、前記アクチュエータエミュレータ（１２４）の挙動を示す第２動作データ（Ｄ２）を収集するための第２収集部（１３０）と、
前記第１収集部（６０）によって収集された複数の前記第１動作データ（Ｄ１）および前記第２収集部（１３０）によって収集された複数の前記第２動作データ（Ｄ２）を出力するための出力部（１３３）とを備える、情報処理システム。
【０１４７】
［構成２］
前記出力部（１３３）は、前記第１収集部（６０）によって収集された複数の前記第１動作データ（Ｄ１）と、前記第２収集部（１３０）によって収集された複数の前記第２動作データ（Ｄ２）とを並べて表示する、構成１に記載の情報処理システム。
【０１４８】
［構成３］
前記出力部（１３３）は、複数の前記第１動作データ（Ｄ１）および複数の前記第２動作データ（Ｄ２）を同一の時間軸上に表示する、構成１または２に記載の情報処理システム。
【０１４９】
［構成４］
前記出力部（１３３）は、複数の前記第１動作データ（Ｄ１）の各々と複数の前記第２動作データ（Ｄ２）の各々との各組み合わせにおいて差が所定値よりも大きくなる組み合わせを他の組み合わせよりも強調して表示する、構成１〜３のいずれか１項に記載の情報処理システム。
【０１５０】
［構成５］
前記情報処理システムは、
複数の前記第１動作データ（Ｄ１）と、複数の前記第２動作データ（Ｄ２）との間の差異の度合いを算出するための算出部（１３２）と、
前記差異の度合いが小さくなるように、前記第１制御パラメータ群（２０Ａ）および前記第２制御パラメータ群（２０Ｂ）の少なくとも一方を繰り返し調整するための調整部（１３４）とをさらに備える、構成１〜４のいずれか１項に記載の情報処理システム。
【０１５１】
［構成６］
前記調整部（１３４）は、前記差異の度合いが予め定められた条件を満たしたことに基づいて、前記第１制御パラメータ群（２０Ａ）および前記第２制御パラメータ群（２０Ｂ）の少なくとも一方の調整を終了する、構成５に記載の情報処理システム。
【０１５２】
［構成７］
前記第１収集部（６０）は、前記駆動機器（５５）および前記コントローラの通信周期ごとに前記第１動作データ（Ｄ１）を収集し、
前記第２収集部（１３０）は、前記通信周期に従った所定周期ごとに前記第２動作データ（Ｄ２）を収集する、構成１〜６のいずれか１項に記載の情報処理システム。
【０１５３】
［構成８］
第１制御パラメータ群（２０Ａ）を入力として制御プログラム（１５）をコントローラに実行させ、当該制御プログラム（１５）に従って駆動機器（５５）を制御するステップと、
前記駆動機器（５５）の挙動を模擬するアクチュエータエミュレータ（１２４）を制御するステップと、
前記コントローラの挙動を模擬するコントローラエミュレータ（１２０）とを制御するステップとを備え、前記コントローラエミュレータ（１２０）を制御するステップは、第２制御パラメータ群（２０Ｂ）を入力として前記制御プログラム（１５）を実行し、当該制御プログラム（１５）に従って前記アクチュエータエミュレータ（１２４）を制御することを含み、
前記第１制御パラメータ群（２０Ａ）を入力として前記制御プログラム（１５）が実行されているときに、前記駆動機器（５５）の挙動を示す第１動作データ（Ｄ１）を収集するステップと、
前記第２制御パラメータ群（２０Ｂ）を入力として前記制御プログラム（１５）が実行されているときに、前記アクチュエータエミュレータ（１２４）の挙動を示す第２動作データ（Ｄ２）を収集するするステップと、
収集された複数の前記第１動作データ（Ｄ１）および収集された複数の前記第２動作データ（Ｄ２）を出力するステップとを備える、情報処理方法。
【０１５４】
［構成９］
コンピュータに実行される情報処理プログラムであって、
前記情報処理プログラムは、前記コンピュータに、
第１制御パラメータ群（２０Ａ）を入力として制御プログラム（１５）をコントローラに実行させ、当該制御プログラム（１５）に従って駆動機器（５５）を制御するステップと、
前記駆動機器（５５）の挙動を模擬するアクチュエータエミュレータ（１２４）を制御するステップと、
前記コントローラの挙動を模擬するコントローラエミュレータ（１２０）とを制御するステップとを実行させ、前記コントローラエミュレータ（１２０）を制御するステップは、第２制御パラメータ群（２０Ｂ）を入力として前記制御プログラム（１５）を実行し、当該制御プログラム（１５）に従って前記アクチュエータエミュレータ（１２４）を制御することを含み、
前記情報処理プログラムは、前記コンピュータに、さらに、
前記第１制御パラメータ群（２０Ａ）を入力として前記制御プログラム（１５）が実行されているときに、前記駆動機器（５５）の挙動を示す第１動作データ（Ｄ１）を収集するステップと、
前記第２制御パラメータ群（２０Ｂ）を入力として前記制御プログラム（１５）が実行されているときに、前記アクチュエータエミュレータ（１２４）の挙動を示す第２動作データ（Ｄ２）を収集するするステップと、
収集された複数の前記第１動作データ（Ｄ１）および収集された複数の前記第２動作データ（Ｄ２）を出力するステップとを実行させる、情報処理プログラム。
【０１５５】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１５６】
１  情報処理システム、１５  制御プログラム、２０Ａ，２０Ｂ  制御パラメータ群、５０  ＦＡシステム、５０Ｘ  シミュレータ、５１  コントローラ、５５  駆動機器、６０  第１収集部、１００  情報処理装置、１０１  制御装置、１０２  主メモリ、１０３  通信インターフェイス、１０５  操作インターフェイス、１０６  表示インターフェイス、１０７  光学ドライブ、１０７Ａ  光学ディスク、１１０  記憶装置、１１１  ＰＬＣプログラム、１１２  ロボットプログラム、１１３  情報処理プログラム、１１４，１１５  ロボット命令、１１９  内部バス、１２０  コントローラエミュレータ、１２０Ａ，１２０Ｂ  編集領域、１２０Ｃ  表示領域、１２２  操作部、１２４，１５５，１６５  アクチュエータエミュレータ、１２５  編集画面、１３０  第２収集部、１３２  算出部、１３３  出力機器、１３４  調整部、１４０  タイマー、１５０  第１エミュレータ、１５１  ＰＬＣエミュレータ、１５１Ａ  実行部、１５２，１６２  軌跡演算部、１５３，１６３  指令値生成部、１５４  解釈部、１５６Ａ，１５６Ｂ  サーボドライバエミュレータ、１５７Ａ，１５７Ｂ，１６７Ａ，１６７Ｂ  サーボモータエミュレータ、１６０  第２エミュレータ、１６１  ロボットコントローラエミュレータ、３００  ロボットコントローラ、４００  アームロボット、４００Ａ，４００Ｂ  ロボット画像、４２０  基台、４２４  第１アーム、４２８  第２アーム、４３２  エンドエフェクタ、４４０，４４０Ａ，４４０Ｂ，４４０Ｃ，４４０Ｄ，６０１，６０１Ａ，６０１Ｂ  サーボモータ、５００，５００Ａ，５００Ｂ  サーボドライバ、５１０，５１４  差分演算部、５１２  位置制御部、５１６  速度制御部、５１８  加算部、５２０  トルクフィルタ、５２２  電流制御部、５２４  速度検知部、６００  移動テーブル、６００Ａ  移動テーブル画像、６０２  設置台、６０５  エンコーダ。
【図１】
0006988665.tif 000002
【図２】
0006988665.tif 000003
【図３】
0006988665.tif 000004
【図４】
0006988665.tif 000005
【図５】
0006988665.tif 000006
【図６】
0006988665.tif 000007
【図７】
0006988665.tif 000008
【図８】
0006988665.tif 000009
【図９】
0006988665.tif 000010
【図１０】
0006988665.tif 000011
【図１１】
0006988665.tif 000012
【図１２】
0006988665.tif 000013
【図１３】
0006988665.tif 000014