(57)【要約】      （修正有）【課題】ユーザが設定した時間間隔で、複数のシミュレータの各々に、シミュレーションを同期させて実行させる。【解決手段】シミュレータ連携装置１０の、同期部１０７は、コントローラについてのシミュレータである第１シミュレータ３００、およびコントローラにより制御される被制御装置についてのシミュレータである第２シミュレータ４００の各々に、受付部１０１によりユーザから受け付けたサンプル間隔でシミュレーションを、周期的に実行させる。【選択図】図１
2018036945.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションを周期的に実行させる間隔であるサンプル間隔をユーザから受け付ける受付部と、
コントローラについてのシミュレータである第１シミュレータから、第１シミュレータの前記サンプル間隔分のシミュレーション実行結果である第１実行結果を取得する第１取得部と、
前記コントローラにより制御される被制御装置についてのシミュレータである第２シミュレータから、第２シミュレータの前記サンプル間隔分のシミュレーション実行結果である第２実行結果を取得する第２取得部と、
前記第１取得部により取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記第２取得部により取得した前記第２実行結果を前記第１シミュレータに出力し、前記第１シミュレータおよび前記第２シミュレータの各々に前記サンプル間隔でシミュレーションを周期的に実行させる同期部と、を備えることを特徴とするシミュレータ連携装置。
【請求項２】
前記サンプル間隔の初期設定値として前記コントローラの制御周期を表示する表示部をさらに備えることを特徴とする請求項１に記載のシミュレータ連携装置。
【請求項３】
前記サンプル間隔は、前記コントローラの制御周期よりも長い時間を設定可能であることを特徴とする請求項１または２に記載のシミュレータ連携装置。
【請求項４】
前記同期部は、前記第１シミュレータにおけるシミュレーションに用いる変数であって、前記第１シミュレータにおけるシミュレーションの実行によって値が変化しない変数を、前記第１シミュレータがシミュレーションを実行する前に１回だけ、前記第１シミュレータに出力することを特徴とする請求項１から３のいずれか１項に記載のシミュレータ連携装置。
【請求項５】
前記受付部は、前記第１シミュレータまたは前記第２シミュレータがシミュレーションを実行する際に用いる変数ごとのサンプル間隔を、ユーザから受け付けることを特徴とする請求項１から４のいずれか１項に記載のシミュレータ連携装置。
【請求項６】
前記第２シミュレータと一体の装置として構成されることを特徴とする請求項１から５のいずれか１項に記載のシミュレータ連携装置。
【請求項７】
複数のシミュレータの各々が実行するシミュレーションを連携させるシミュレータ連携装置の制御方法であって、
シミュレーションを周期的に実行させる間隔であるサンプル間隔をユーザから受け付ける受付ステップと、
コントローラについてのシミュレータである第１シミュレータから、第１シミュレータの前記サンプル間隔分のシミュレーション実行結果である第１実行結果を取得する第１取得ステップと、
前記コントローラにより制御される被制御装置についてのシミュレータである第２シミュレータから、第２シミュレータの前記サンプル間隔分のシミュレーション実行結果である第２実行結果を取得する第２取得ステップと、
前記第１取得ステップにて取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記第２取得ステップにて取得した前記第２実行結果を前記第１シミュレータに出力し、前記第１シミュレータおよび前記第２シミュレータの各々に前記サンプル間隔でシミュレーションを周期的に実行させる同期ステップと、を含むことを特徴とする制御方法。
【請求項８】
請求項１から６のいずれか１項に記載のシミュレータ連携装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項９】
請求項８に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のシミュレータの各々が実行するシミュレーションを連携させるシミュレータ連携装置等に関する。
【背景技術】
【０００２】
従来、複数のシミュレータ間を連携するシミュレーション装置が知られている。例えば、下掲の特許文献１には、同期要求メッセージを受信した時点で、或るシミュレータから送信されるメッセージを加工し、加工したメッセージを連携する他のシミュレータに送信するシミュレータ連携装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−３２１２０号公報（２０１５年２月１６日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来技術は、複数のシミュレータの各々が、複数のシミュレータの各々において予め定められている同期をとる時刻までシミュレーションの実行を進行すると同期要求メッセージを通知し、シミュレータ連携装置は、前記同期要求メッセージを受信すると、前記複数のシミュレータ間の同期をとるものに過ぎない。
【０００５】
したがって、従来のシミュレータ連携装置には、ユーザが任意に設定した時間間隔で複数のシミュレータの各々にシミュレーションを実行させつつ、前記複数のシミュレータの各々が実行するシミュレーションを同期させることができないという問題がある。
【０００６】
本発明は、前記の問題点に鑑みてなされたものであり、その目的は、ユーザが設定した時間間隔で、複数のシミュレータの各々に、シミュレーションを同期させて実行させることにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一態様に係るシミュレータ連携装置は、シミュレーションを周期的に実行させる間隔であるサンプル間隔をユーザから受け付ける受付部と、コントローラについてのシミュレータである第１シミュレータから、前記第１シミュレータの前記サンプル間隔分のシミュレーション実行結果である第１実行結果を取得する第１取得部と、前記コントローラにより制御される被制御装置についてのシミュレータである第２シミュレータから、前記第２シミュレータの前記サンプル間隔分のシミュレーション実行結果である第２実行結果を取得する第２取得部と、前記第１取得部により取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記第２取得部により取得した前記第２実行結果を前記第１シミュレータに出力し、前記第１シミュレータおよび前記第２シミュレータの各々に前記サンプル間隔でシミュレーションを周期的に実行させる同期部と、を備えることを特徴としている。
【０００８】
前記の構成によれば、前記同期部は、前記コントローラについてのシミュレータである前記第１シミュレータ、および前記コントローラにより制御される前記被制御装置についてのシミュレータである前記第２シミュレータの各々に、前記受付部によりユーザから受け付けた前記サンプル間隔でシミュレーションを、周期的に実行させる。
【０００９】
したがって、前記シミュレータ連携装置は、前記第１シミュレータおよび前記第２シミュレータの各々に、前記受付部によりユーザから受け付けた前記サンプル間隔でシミュレーションを、同期させて周期的に実行させることができるという効果を奏する。
【００１０】
つまり、例えば、ユーザが長い時間間隔を前記サンプル間隔とすることにより、前記同期部は、前記長い時間間隔の前記サンプル間隔で、前記第１取得部により取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記長い時間間隔の前記サンプル間隔で、前記第２取得部により取得した前記第２実行結果を前記第１シミュレータに出力する。この場合、前記同期部は、前記第１シミュレータおよび前記第２シミュレータがシミュレーションを完了させるまでに、前記第１シミュレータと前記第２シミュレータとの間での前記シミュレーション実行結果の送受信の回数を抑制することができ、結果として、シミュレーションの実行時間全体を短縮することができる。
【００１１】
また、例えば、ユーザが短い時間間隔を前記サンプル間隔とすることにより、前記同期部は、前記短い時間間隔の前記サンプル間隔で、前記第１取得部により取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記短い時間間隔の前記サンプル間隔で、前記第２取得部により取得した前記第２実行結果を前記第１シミュレータに出力する。この場合、前記同期部は、前記第１シミュレータおよび前記第２シミュレータの各々が前記短い時間間隔で実行したシミュレーションの結果を、都度、前記第２シミュレータおよび前記第２シミュレータの各々に通知するので、前記第１シミュレータと前記第２シミュレータの各々に実行させるシミュレーションの実行結果のシミュレーション精度を、前記サンプル間隔を長くした場合に比べて向上させることができる。
【００１２】
したがって、前記シミュレータ連携装置は、ユーザが、前記シミュレーションの実行時間と、前記シミュレーションのシミュレーション精度とのいずれを重視して前記シミュレーションを実行させるかを、任意に選択することができるようになるとの効果を奏する。
【００１３】
好ましくは、前記シミュレータ連携装置は、前記サンプル間隔の初期設定値として前記コントローラの制御周期を表示する表示部をさらに備える。
【００１４】
前記の構成によれば、前記表示部は、前記サンプル間隔の初期設定値として前記コントローラの制御周期を表示する。
【００１５】
したがって、前記シミュレータ連携装置は、前記コントローラについてのシミュレータである前記第１シミュレータに、前記コントローラの制御周期でシミュレーションを実行させつつ、前記コントローラにより制御される前記被制御装置についてのシミュレータである前記第２シミュレータに、前記第１シミュレータのシミュレーションと同期させて、シミュレーションを実行させることができるという効果を奏する。
【００１６】
好ましくは、前記シミュレータ連携装置において、前記サンプル間隔は、前記コントローラの制御周期よりも長い時間を設定可能である。
【００１７】
前記の構成によれば、前記同期部は、前記コントローラの制御周期よりも長い時間である前記サンプル間隔で、前記第１取得部により取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記受付部により受け付けた前記サンプル間隔で、前記第２取得部により取得した前記第２実行結果を前記第１シミュレータに出力する。
【００１８】
したがって、前記同期部は、前記第１シミュレータおよび前記第２シミュレータがシミュレーションを完了させるまでに、前記第１シミュレータと前記第２シミュレータとの間での前記シミュレーション実行結果の送受信の回数を抑制することができるという効果を奏する。つまり、前記シミュレータ連携装置は、前記第１シミュレータおよび前記第２シミュレータがシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【００１９】
好ましくは、前記シミュレータ連携装置において、前記同期部は、前記第１シミュレータにおけるシミュレーションに用いる変数であって、前記第１シミュレータにおけるシミュレーションの実行によって値が変化しない変数を、前記第１シミュレータがシミュレーションを実行する前に１回だけ、前記第１シミュレータに出力する。
【００２０】
前記の構成によれば、前記同期部は、前記第２シミュレータにおけるシミュレーションに用いる変数であって、前記第２シミュレータにおけるシミュレーションの実行によって値が変化しない変数を、前記第１シミュレータがシミュレーションを実行する前に１回だけ、前記第１シミュレータに出力する。
【００２１】
したがって、前記同期部は、前記第１シミュレータと前記第２シミュレータとの間で送受信するデータ量を抑制することができるという効果を奏する。つまり、前記シミュレータ連携装置は、前記第１シミュレータおよび前記第２シミュレータがシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【００２２】
好ましくは、前記シミュレータ連携装置において、前記受付部は、前記第１シミュレータまたは前記第２シミュレータがシミュレーションを実行する際に用いる変数ごとのサンプル間隔を、ユーザから受け付ける。
【００２３】
前記の構成によれば、前記同期部は、前記第１シミュレータまたは前記第２シミュレータがシミュレーションを実行する際に用いる変数ごとに設定されたサンプル間隔で、前記変数を前記第１シミュレータと前記第２シミュレータとの間で送受信させる。
【００２４】
したがって、前記シミュレータ連携装置は、前記第１シミュレータまたは前記第２シミュレータにおいて実行されるシミュレーションで用いられる変数ごとに最適な時間間隔で、前記変数を前記第１シミュレータと前記第２シミュレータとの間で送受信させることができるので、前記第１シミュレータおよび前記第２シミュレータがシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【００２５】
ここで、例えば前記コントローラが並行して複数の処理を実行する場合、前記受付部は、前記複数の処理に対応して前記第１シミュレータが実行する複数のシミュレーションの各々について、サンプル間隔をユーザから受け付けることができる。そして、前記同期部は、前記複数のシミュレーションの各々のシミュレーション実行結果を、前記複数のシミュレーションの各々の前記サンプル間隔で、前記第２シミュレータに出力する。
【００２６】
したがって、前記シミュレータ連携装置は、前記第１シミュレータが並行して実行する前記複数のシミュレーションの各々のシミュレーション実行結果を、前記複数のシミュレーションごとに最適な間隔で、前記第２シミュレータに出力することにより、前記第１シミュレータおよび前記第２シミュレータがシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【００２７】
好ましくは、前記シミュレータ連携装置は、前記第２シミュレータと一体の装置として構成される。
【００２８】
前記の構成によれば、前記第２シミュレータと一体の装置として構成された前記シミュレータ連携装置が、前記第１シミュレータに、前記受付部によりユーザから受け付けた前記サンプル間隔でシミュレーションを、前記第２シミュレータのシミュレーションと同期させて周期的に実行させることができるという効果を奏する。
【００２９】
また、上記の課題を解決するために、本発明の一態様に係る制御方法は、複数のシミュレータの各々が実行するシミュレーションを連携させるシミュレータ連携装置の制御方法であって、シミュレーションを周期的に実行させる間隔であるサンプル間隔をユーザから受け付ける受付ステップと、コントローラについてのシミュレータである第１シミュレータから、第１シミュレータの前記サンプル間隔分のシミュレーション実行結果である第１実行結果を取得する第１取得ステップと、前記コントローラにより制御される被制御装置についてのシミュレータである第２シミュレータから、第２シミュレータの前記サンプル間隔分のシミュレーション実行結果である第２実行結果を取得する第２取得ステップと、前記第１取得ステップにて取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記第２取得ステップにて取得した前記第２実行結果を前記第１シミュレータに出力し、前記第１シミュレータおよび前記第２シミュレータの各々に前記サンプル間隔でシミュレーションを周期的に実行させる同期ステップと、を含むことを特徴としている。
【００３０】
前記の方法によれば、前記同期ステップは、前記コントローラについてのシミュレータである前記第１シミュレータ、および前記コントローラにより制御される前記被制御装置についてのシミュレータである前記第２シミュレータの各々に、前記受付ステップにてユーザから受け付けた前記サンプル間隔で、シミュレーションを、周期的に実行させる。
【００３１】
したがって、前記制御方法は、前記第１シミュレータおよび前記第２シミュレータの各々に、前記受付ステップにてユーザから受け付けた前記サンプル間隔で、シミュレーションを、同期させて周期的に実行させることができるという効果を奏する。
【００３２】
つまり、例えば、ユーザが長い時間間隔を前記サンプル間隔とすることにより、前記同期ステップは、前記長い時間間隔の前記サンプル間隔で、前記第１取得ステップにて取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記長い時間間隔の前記サンプル間隔で、前記第２取得ステップにて取得した前記第２実行結果を前記第１シミュレータに出力する。この場合、前記同期ステップは、前記第１シミュレータおよび前記第２シミュレータがシミュレーションを完了させるまでに、前記第１シミュレータと前記第２シミュレータとの間での前記シミュレーション実行結果の送受信の回数を抑制することができ、結果として、シミュレーションの実行時間全体を短縮することができる。
【００３３】
また、例えば、ユーザが短い時間間隔を前記サンプル間隔とすることにより、前記同期ステップは、前記短い時間間隔の前記サンプル間隔で、前記第１取得ステップにて取得した前記第１実行結果を前記第２シミュレータに出力するとともに、前記短い時間間隔の前記サンプル間隔で、前記第２取得ステップにて取得した前記第２実行結果を前記第１シミュレータに出力する。この場合、前記同期ステップは、前記第１シミュレータおよび前記第２シミュレータの各々が前記短い時間間隔で実行したシミュレーションの結果を、都度、前記第２シミュレータおよび前記第２シミュレータの各々に通知するので、前記第１シミュレータと前記第２シミュレータの各々に実行させるシミュレーションの実行結果のシミュレーション精度を、前記サンプル間隔を長くした場合に比べて向上させることができる。
【００３４】
したがって、前記制御方法は、ユーザが、前記シミュレーションの実行時間と、前記シミュレーションのシミュレーション精度とのいずれを重視して前記シミュレーションを実行させるかを、任意に選択することができるようになるとの効果を奏する。
【発明の効果】
【００３５】
本発明は、ユーザが設定した時間間隔で、複数のシミュレータの各々に、シミュレーションを同期させて実行させることができるという効果を奏する。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施形態１に係るシミュレータ連携装置の要部構成を示すブロック図である。
【図２】図１のシミュレータ連携装置を含むシミュレーションシステムの一例を示す図である。
【図３】図２のシミュレーションシステムにおける、第１シミュレータ、第２シミュレータ、およびシミュレータ連携装置の各々の処理の流れを説明するフロー図である。
【図４】図１のシミュレータ連携装置が、シミュレーションを周期的に実行させる間隔であるサンプル間隔についてユーザに表示し、また前記サンプル間隔についてユーザからの操作を受け付けるインターフェースの一例を示す図である。
【図５】図２のシミュレーションシステムにおいて、シミュレータ連携装置によって第１シミュレータおよび第２シミュレータを連携させる方法の一例を示す図である。
【図６】図２のシミュレーションシステムにおいて、シミュレータ連携装置によって第１シミュレータおよび第２シミュレータを連携させる方法の、図５に示すのとは別の例を示す図である。
【図７】図２のシミュレーションシステムにおける第２シミュレータが表示する画面例を示す図である。
【図８】図２のシミュレーションシステムにおける第２シミュレータが表示する、図７に示すのとは別の画面例を示す図である。
【図９】図２のシミュレーションシステムにおける第１シミュレータが表示する画面例を示す図である。
【図１０】図２のシミュレーションシステムによって可能となるモデルベースデザインを説明するための図である。
【発明を実施するための形態】
【００３７】
〔実施形態１〕
以下、本発明の実施形態１について、図１から図１０に基づいて詳細に説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。本発明の一態様に係るシミュレータ連携装置１０についての理解を容易にするため、先ず、シミュレータ連携装置１０を含むシミュレーションシステム１の概要を、図２を用いて説明する。
【００３８】
（制御システム）
図２は、シミュレータ連携装置１０を含むシミュレーションシステム１の概要を示す図である。シミュレーションシステム１は、（１）例えばプログラマブルコントローラ（ＰＬＣ、Programmable Logic Controller）のような上位コントローラについてのシミュレータである第１シミュレータ３００と、（２）前記上位コントローラにより制御される被制御装置（例えばサーボドライバのような下位コントローラ、および当該下位コントローラによって駆動される機械要素）についてのシミュレータである第２シミュレータ４００と、（３）第１シミュレータ３００と第２シミュレータ４００とを連携するシミュレータ連携装置１０と、を含んでいる。シミュレータ連携装置１０は、第１シミュレータ３００および第２シミュレータ４００のシミュレーション実行（特に、第１シミュレータ３００と第２シミュレータ４００との間のデータ交換、およびシミュレーション時刻）をコントロールする。
【００３９】
なお、図２に例示するシミュレーションシステム１においては、シミュレータ連携装置１０は、第２シミュレータ４００と一体の装置として構成されている。しかしながら、シミュレータ連携装置１０が第２シミュレータ４００と一体の装置として構成されることは必須ではない。シミュレータ連携装置１０は、例えば、第１シミュレータ３００と一体の装置として構成されてもよく、また、第１シミュレータ３００および第２シミュレータ４００のいずれからも独立した装置として構成されてもよい。シミュレータ連携装置１０は、第１シミュレータ３００と第２シミュレータ４００とを連携することができればよく、例えば、第１シミュレータ３００および第２シミュレータ４００のいずれとも異なる第３の装置と一体の装置として構成されていてもよい。
【００４０】
（第１シミュレータの概要）
上位コントローラのシミュレータである第１シミュレータ３００は、第２シミュレータ４００のシミュレーション対象である被制御装置が実行する駆動制御（例えば、「軌道追従制御」および「加工機における軌道制御」など）のための指令値（制御信号）を、シミュレータ連携装置１０を介して、第２シミュレータ４００に送信する。
【００４１】
また、第１シミュレータ３００は、上位コントローラについてのシミュレーションを実行すると、その実行結果である第１実行結果を、前記上位コントローラにより制御される被制御装置についてのシミュレータである第２シミュレータ４００に送信する。
【００４２】
さらに、第１シミュレータ３００は、第２シミュレータ４００の出力である制御量（第２実行結果）を、フィードバック情報として受信する。第１シミュレータ３００は、フィードバック情報として第２シミュレータ４００から受信した第２実行結果（第２シミュレータ４００から出力された制御量）を用いて、上位コントローラについてのシミュレーションを実行する。
【００４３】
なお、シミュレーションシステム１において、第１シミュレータ３００は、上位コントローラのシミュレータであるとともに、上位コントローラの開発環境を提供する装置であってもよい。すなわち、第１シミュレータ３００は、ＰＬＣなどの上位コントローラのコンフィグレーション（構成設定）、プログラミング、デバッグ、メンテナンス、モニタリング機能の他、３Ｄモーションシミュレーションにも対応した統合開発環境（ＩＤＥ）を提供する装置であってもよい。第１シミュレータ３００は、例えば、ＩＬ（Instruction List）言語、ラダー（LD、Ladder Diagram）言語、ＳＦＣ（Sequential Function Chart）言語、ＦＢＤ（Function Block Diagram）言語、ＳＴ（Structured Text）言語等で、上位コントローラについてプログラミングすることができる。第１シミュレータ３００は、上位コントローラについてプログラミングすることのできる言語を複数種類準備しているので、ユーザは、スキルおよび経験にあった言語を選択することができ、また、用途に応じた使い分けが可能である。第１シミュレータ３００は、ラダー言語とＳＴ言語という２つの言語が使えるので、あらゆる用途に対応することができる。
【００４４】
なお、第１シミュレータ３００は、第２シミュレータ４００における制御モデルから、ＰＬＣ等の上位コントローラのためのプログラム（例えば、ST言語）を自動生成することができる。すなわち、シミュレータ連携装置１０は、第２シミュレータ４００におけるモデルを、第１シミュレータ３００にFunctionBlock（FB）としてインポートして、他のユーザプログラム同様に利用させることができる。
【００４５】
（第２シミュレータの概要）
第２シミュレータ４００は、上位コントローラにより制御される被制御装置（例えばサーボドライバのような下位コントローラ、および当該下位コントローラによって駆動される機械要素）についてのシミュレータであり、例えばマシンモデルを含んでいる。
【００４６】
第２シミュレータ４００は、上位コントローラのシミュレータである第１シミュレータ３００から指令値（制御信号）を受信する。第２シミュレータ４００は、受信した指令値に基づいて、前記上位コントローラにより制御される被制御装置（例えばサーボドライバのような下位コントローラ、および当該下位コントローラによって駆動される機械要素）についてのシミュレーションを実行する。
【００４７】
また、第２シミュレータ４００は、前記被制御装置についてのシミュレーションを実行すると、その実行結果である第２実行結果を、前記上位コントローラについてのシミュレータである第１シミュレータ３００にフィードバック情報として送信する。
【００４８】
さらに、第２シミュレータ４００は、第１シミュレータ３００から、第１シミュレータ３００が上位コントローラについてのシミュレーションを実行した結果である第１実行結果を受信する。第２シミュレータ４００は、受信した前記第１実行結果を用いて、前記被制御装置についてのシミュレーションを実行する。
【００４９】
なお、シミュレーションシステム１において、第２シミュレータ４００は、前記被制御装置のシミュレータであるとともに、被制御装置（例えばサーボドライバのような下位コントローラ）の開発環境を提供する装置であってもよい。すなわち、第２シミュレータ４００は、モデルをブロック線図として作成するためのグラフィカルエディターを提供し、また、定義したモデルの動的な動作をシミュレーションし、シミュレーションの実行結果を表示することができてもよい。第２シミュレータ４００は、例えば、ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）などの制御ＣＡＤであってもよい。シミュレーションシステム１において、シミュレータ連携装置１０が第２シミュレータ４００と一体の装置として構成される場合、シミュレータ連携装置１０は、例えばＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）などの制御ＣＡＤである第２シミュレータ４００にアドオンできるように構成されてもよい。
【００５０】
（制御システムの概要）
上位コントローラと、上位コントローラによって制御される被制御装置（例えば、サーボドライバのような下位コントローラなど）との全体のプログラムおよび設計の検証を、実機検証の前に、追加作業を抑制しつつ前倒しで実行したいという要望がある。
【００５１】
また、ＰＬＣのような上位コントローラの従来の開発環境（開発装置）は、当該上位コントローラによって制御される被制御装置からのフィードバック値を得ることができなかった。そのため、上位コントローラの開発環境のユーザは、当該開発環境内に、前記被制御装置の動作をするようにデバッグ用のプログラムを作成する必要があった。
【００５２】
ここで、モデルベースデザインでは、ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）などの制御ＣＡＤにより、ＰＬＣのような上位コントローラによって制御される被制御装置のモデルをソフトウェア設計工程で作成している。
【００５３】
シミュレーションシステム１では、シミュレータ連携装置１０は、サーボドライバのような下位コントローラを含む被制御装置についてのシミュレータであって、前記下位コントローラの開発環境である第２シミュレータ４００で作成した被制御装置のモデルを、ソフトウェア検証工程で利用させることができる。すなわち、シミュレーションシステム１において、シミュレータ連携装置１０は、上位コントローラのシミュレータであって、前記上位コントローラの開発環境である第１シミュレータ３００に、第２シミュレータ４００で作成した被制御装置のモデルを、利用させることができる。
【００５４】
シミュレーションシステム１においてシミュレータ連携装置１０は、第１シミュレータ３００と第２シミュレータ４００とで、両者のシミュレーション時刻の同期を取りながら必要なデータの交換を行い、両者にシミュレーションを実行させる。特に、シミュレーションシステム１においてシミュレータ連携装置１０は、ユーザが設定した時間間隔で、第１シミュレータ３００と第２シミュレータ４００との各々に、シミュレーションを同期させて実行させる。
【００５５】
したがって、シミュレーションシステム１では、例えば、「速度超過したときに警報が出て停止するか」、「軸変数のリミット設定が意図通りに機能するか」等、実機では発生させにくい、または、実機で発生させるのは危険な動作の、プログラムおよび設定の検証をすることができる。
【００５６】
また、シミュレーションシステム１においてシミュレータ連携装置１０は、以下に説明するように、第２シミュレータ４００を利用した自動テストを可能とし、上位コントローラおよび下位コントローラの全体のプログラムおよび設計の検証工数を削減することができる。
【００５７】
さらに、シミュレータ連携装置１０は、第１シミュレータ３００におけるプログラムの１周期実行およびブレークポイントの設定などによってプログラムの実行速度を変更した場合でも、第２シミュレータ４００とのシミュレーション時刻の同期を維持する。したがって、ユーザは、シミュレータ連携装置１０を利用することにより、上位コントローラおよび被制御装置についての厳密なロジック検証が可能となる。
【００５８】
また、シミュレータ連携装置１０は、第２シミュレータ４００において、シミュレーション実行を一時停止させたり、ステップ実行させたりした場合にも、第１シミュレータ３００とのシミュレーション時刻の同期を維持させることができる。
【００５９】
（モデルベースデザインについて）
図１０は、シミュレーションシステム１によって可能となるモデルベースデザインを説明するための図である。図１０に示すように、モデルベースデザインにおいては、システム設計段階、ソフトウェア設計段階、ソフトウェア作成（プログラミング）段階は、この順で進められる。そして、シミュレーションシステム１によって可能となるモデルベースデザインにおいては、システム設計段階、ソフトウェア設計段階、ソフトウェア作成（プログラミング）段階において、モデル検証、ソフトウェア検証、実機検証を行うことができる。
【００６０】
システム設計段階からソフトウェア設計段階までの間に行う制御対象モデリング工程において、ユーザは、第２シミュレータ４００を利用して、サーボドライバおよびアナログ入出力などの制御対象をモデリングする。ユーザは、第２シミュレータ４００を利用して設計した制御器モデルおよびマシンモデルに対し、シミュレータ連携装置１０によって連携された第１シミュレータ３００および第２シミュレータ４００の少なくとも一方を利用して、モデル検証を行うことができる。なお、以下の説明において、制御対象モデリングは、「ＭＩＬＳ（Model In the Loop Simulation）」と略記する。
【００６１】
ＭＩＬＳについて、シミュレータ連携装置１０が第１シミュレータ３００と第２シミュレータ４００とを連携しているので、第２シミュレータ４００におけるI/O機器のモデルを、第１シミュレータ３００で設定したI/O機器の設定に基づいてシミュレーションさせることができる。これにより、I/O機器の特性を考慮した制御性能の確認および調整を行うことができ、また、I/O機器の設定を含めた検証を行うことができる。
【００６２】
ソフトウェア設計段階において、ユーザは、第１シミュレータ３００を利用して、制御系（例えば、ＰＬＣ等の上位コントローラ）を設計することができる。ユーザは、第１シミュレータ３００を利用して設計した制御系に対し、シミュレータ連携装置１０によって連携された第１シミュレータ３００および第２シミュレータ４００の少なくとも一方を利用して、モデル検証を行うことができる。
【００６３】
さらに、ソフトウェア作成（プログラミング）段階において、ユーザは、シミュレータ連携装置１０によって連携される第１シミュレータ３００および第２シミュレータ４００を利用してソフトウェアを作成する。ユーザは、作成したソフトウェアについてソフトウェア検証を行い、例えば、シミュレータ連携装置１０によって連携された第１シミュレータ３００および第２シミュレータ４００の少なくとも一方を利用してソフトウェア検証を行う。なお、以下の説明において、ソフトウェア検証は、「ＳＩＬＳ（Software In the Loop Simulation）」と略記する。
【００６４】
また、ユーザは、シミュレータ連携装置１０に、第２シミュレータ４００と第１シミュレータ３００との連携シミュレーションを実行させることによって、ＳＩＬＳを実行することができる。つまり、ユーザは、シミュレータ連携装置１０によって、実機検証前の事前検証を行うことができ、ハンドコーディングしたプログラム、表示器を含めた装置全体のプログラム検証を行うことができる。また、ユーザは、プログラムの１周期実行、およびブレークポイントの設定等による、厳密なロジック検証を行うことができ、さらに、検証の繰り返し、検証の自動実行、レアケースの検証等についても容易に行うことができる。
【００６５】
ソフトウェア検証後、ユーザは、実機検証を行う。この際、ユーザは、上位コントローラ（または、第１シミュレータ３００）によって、第２シミュレータ４００およびマシン（被制御装置）を動作させることにより、第２シミュレータ４００に実機制御データ（マシンを実際に動作させた際に得られるデータ）を取得させることができる。
【００６６】
シミュレータ連携装置１０が、第１シミュレータ３００と第２シミュレータ４００とを連携させているので、ユーザは、実機を制御しているＰＬＣ等の上位コントローラおよび第１シミュレータ３００の少なくとも一方で用いているデータを、第２シミュレータ４００でモニタすることができる。また、ユーザは、上位コントローラおよび第１シミュレータ３００の少なくとも一方で用いられる制御パラメータ（調整パラメータ）を、第２シミュレータ４００から書き込むこともできる。すなわち、ユーザは、ＭＩＬＳおよびＳＩＬＳと同様に、第２シミュレータ４００で実機制御をモニタすることができ、モニタ環境を再利用することができる。ユーザは、シミュレーションと実機制御とを追加の手間なく比較することができ、第２シミュレータ４００から、上位コントローラおよび第１シミュレータ３００の少なくとも一方で用いられる制御パラメータの調整ができ、第２シミュレータ４００で用いられるモデルと実機との間のパラメータを常に一致させることができる。
【００６７】
シミュレーションシステム１によって可能となるモデルベースデザインにより、システム設計およびソフトウェア設計については、モデル作成およびシミュレーション実行のために工数が少し増加し得るが、ソフトウェア作成については、自動コード生成により工数が大幅に減少し、ソフトウェア検証についても、設計段階での不具合除去により工数が大幅に減少する。以下、詳細を説明していく。
【００６８】
従来の開発プロセスにおいては、制御設計および検証が後回しとなるため、開発後半に工数増大する傾向があった。これに対して、図１０に示すモデルベースデザインでは、実機組立前に制御設計および検証が可能である。
【００６９】
ここで、シミュレーションシステム１によって可能となる開発手順としては、例えば以下の４つのものを挙げることができる。すなわち、第１に、先ずＭＩＬＳを行い、次にソフトウェア作成（プログラミング）を行い、さらにＳＩＬＳを行ったうえで、最後に、実機制御（実機検証）を行う手順を挙げることができる。これは、図１０に例示するような、モデルベースデザインの標準的な開発手順である。
【００７０】
第２に、先ずＭＩＬＳを行い、次にＳＩＬＳを行った後に、実機制御（実機検証）を行う手順を挙げることができる。第２シミュレータ４００において開発するコントローラモデルがシンプルな場合、ユーザは、自動コード生成を実行する代わりに手作業でプログラミングをして、実機制御（実機検証）を行うことができる場合がある。
【００７１】
第３に、先ずＭＩＬＳを行い、次にソフトウェア作成（プログラミング）を行った後に、実機制御（実機検証）を行う手順を挙げることができる。制御プログラムの大半を第２シミュレータ４００において開発する場合、ＭＩＬＳとＳＩＬＳとの違いは小さい。そして、シミュレータ連携装置１０が第１シミュレータ３００と第２シミュレータ４００とを連携しているので、ＳＩＬＳを行うことは必須ではない。
【００７２】
第４に、先ずＳＩＬＳを行った後に、実機制御（実機検証）を行う手順を挙げることができる。第２シミュレータ４００は制御対象モデルの開発およびシミュレーションにのみ使用し、制御プログラムのすべてを第１シミュレータ３００において開発する場合、シミュレータ連携装置１０が第１シミュレータ３００と第２シミュレータ４００とを連携しているので、ＳＩＬＳから開発を開始することもできる。
【００７３】
（シミュレーションが奏する効果について）
例えば、温度制御において、制御が困難な要因の例として、非線形、特性変動、熱干渉、むだ時間など、制御対象の特性に起因するものを挙げることができる。また、外乱が大きい場合、または連続的な場合も、制御が困難な要因の例として挙げることができる。さらに、応答が遅いため、時間制約からチューニング仕切れない場合も、制御が困難な要因の例として挙げることができる。
【００７４】
シミュレーションによって、制御対象の特性に起因するものに対し、適切な制御アルゴリズムを短期間で開発できる。また、外乱が大きい場合、または連続的な場合も、シミュレーションによって、適切な制御アルゴリズムを短期間で開発できる。さらに、応答が遅いため、時間制約からチューニング仕切れない場合であっても、シミュレーションによって、最適な制御パラメータを短期間で見つけることができる。
【００７５】
（シミュレータ連携装置）
シミュレータ連携装置１０は、シミュレーションを周期的に実行させる間隔であるサンプル間隔をユーザから受け付ける受付部１０１と、コントローラ（例えば、ＰＬＣ）についてのシミュレータである第１シミュレータ３００から、第１シミュレータ３００の前記サンプル間隔分のシミュレーション実行結果である第１実行結果を取得する第１取得部１０３と、前記コントローラにより制御される被制御装置（例えばサーボドライバのような下位コントローラ、および当該下位コントローラによって駆動される機械要素）についてのシミュレータである第２シミュレータ４００から、第２シミュレータ４００の前記サンプル間隔分のシミュレーション実行結果である第２実行結果を取得する第２取得部１０４と、第１取得部１０３により取得した前記第１実行結果を第２シミュレータ４００に出力するとともに、第２取得部１０４により取得した前記第２実行結果を第１シミュレータ３００に出力し、第１シミュレータ３００および第２シミュレータ４００の各々に前記サンプル間隔でシミュレーションを周期的に実行させる同期部１０７と、を備えている。
【００７６】
前記の構成によれば、同期部１０７は、前記コントローラについてのシミュレータである第１シミュレータ３００、および前記コントローラにより制御される前記被制御装置についてのシミュレータである第２シミュレータ４００の各々に、受付部１０１によりユーザから受け付けた前記サンプル間隔でシミュレーションを、周期的に実行させる。
【００７７】
したがって、シミュレータ連携装置１０は、第１シミュレータ３００および第２シミュレータ４００の各々に、受付部１０１によりユーザから受け付けた前記サンプル間隔でシミュレーションを、同期させて周期的に実行させることができるという効果を奏する。
【００７８】
つまり、例えば、ユーザが長い時間間隔を前記サンプル間隔とすることにより、同期部１０７は、前記長い時間間隔の前記サンプル間隔で、第１取得部１０３により取得した前記第１実行結果を第２シミュレータ４００に出力するとともに、前記長い時間間隔の前記サンプル間隔で、第２取得部１０４により取得した前記第２実行結果を第１シミュレータ３００に出力する。この場合、同期部１０７は、第１シミュレータ３００および第２シミュレータ４００がシミュレーションを完了させるまでに、第１シミュレータ３００と第２シミュレータ４００との間での前記シミュレーション実行結果の送受信の回数を抑制することができ、結果として、シミュレーションの実行時間全体を短縮することができる。
【００７９】
また、例えば、ユーザが短い時間間隔を前記サンプル間隔とすることにより、同期部１０７は、前記短い時間間隔の前記サンプル間隔で、第１取得部１０３により取得した前記第１実行結果を第２シミュレータ４００に出力するとともに、前記短い時間間隔の前記サンプル間隔で、第２取得部１０４により取得した前記第２実行結果を第１シミュレータ３００に出力する。この場合、同期部１０７は、第１シミュレータ３００および第２シミュレータ４００の各々が前記短い時間間隔で実行したシミュレーションの結果を、都度、第２シミュレータ４００および第２シミュレータ４００の各々に通知するので、第１シミュレータ３００と第２シミュレータ４００の各々に実行させるシミュレーションの実行結果のシミュレーション精度を、前記サンプル間隔を長くした場合に比べて向上させることができる。
【００８０】
したがって、シミュレータ連携装置１０は、ユーザが、前記シミュレーションの実行時間と、前記シミュレーションのシミュレーション精度とのいずれを重視して前記シミュレーションを実行させるかを、任意に選択することができるようになるとの効果を奏する。
【００８１】
シミュレータ連携装置１０は、第２シミュレータ４００と一体の装置として構成されている。
【００８２】
前記の構成によれば、第２シミュレータ４００と一体の装置として構成されたシミュレータ連携装置１０が、第１シミュレータ３００に、受付部１０１によりユーザから受け付けた前記サンプル間隔でシミュレーションを、第２シミュレータ４００のシミュレーションと同期させて周期的に実行させることができるという効果を奏する。
【００８３】
（シミュレータ連携装置の詳細）
以上に概要を説明したシミュレータ連携装置１０について、次に、図１を用いて、その詳細を説明していく。
【００８４】
図１は、本発明の実施形態１に係るシミュレータ連携装置１０の要部構成を示すブロック図である。図１に示すように、シミュレータ連携装置１０は、受付部１０１と、表示部１０２と、第１取得部１０３と、第２取得部１０４と、第１出力部１０５と、第２出力部１０６と、同期部１０７と、を備えている。
【００８５】
受付部１０１は、第１シミュレータ３００および第２シミュレータ４００の各々に、シミュレーションを周期的に実行させる間隔であるサンプル間隔を指定するユーザ操作を受け付ける。詳細は図４を用いて後述するが、受付部１０１は、第１シミュレータ３００または第２シミュレータ４００がシミュレーションを実行する際に用いる変数ごとのサンプル間隔を、ユーザから受け付ける。
【００８６】
表示部１０２は、ユーザがサンプル間隔を確認し、設定するための画面を、例えばユーザインタフェース２００に表示する。表示部１０２が表示する「ユーザがサンプル間隔を確認し、設定するための画面」の一例は、図４に例示するサンプル間隔設定画面である。表示部１０２は、ユーザが設定可能なサンプル間隔の初期設定値として、第１シミュレータ３００がシミュレーションを行う上位コントローラ（例えば、ＰＬＣ）の制御周期を、サンプル間隔設定画面に表示する。また、詳細は図４を用いて後述するが、表示部１０２は、サンプル間隔設定画面において、第１シミュレータ３００または第２シミュレータ４００がシミュレーションを実行する際に用いる変数ごとに、ユーザが設定可能なサンプル間隔を表示する。
【００８７】
第１取得部１０３は、第１シミュレータ３００から、第１シミュレータ３００の前記サンプル間隔分のシミュレーション実行結果である第１実行結果を取得する。第１取得部１０３は、第１シミュレータ３００から取得した第１実行結果を同期部１０７に送信する。
【００８８】
第２取得部１０４は、第２シミュレータ４００から、第２シミュレータ４００の前記サンプル間隔分のシミュレーション実行結果である第２実行結果を取得する。第２取得部１０４は、第２シミュレータ４００から取得した第２実行結果を同期部１０７に送信する。
【００８９】
第１出力部１０５は、第２取得部１０４が第２シミュレータ４００から取得した第２実行結果を、同期部１０７が指示するタイミングで、第１シミュレータ３００に出力する。第１出力部１０５は、例えば、同期部１０７から第２実行結果を取得し、取得した第２実行結果を、同期部１０７が指示するタイミングで、第１シミュレータ３００に出力する。
【００９０】
第２出力部１０６は、第１取得部１０３が第１シミュレータ３００から取得した第１実行結果を、同期部１０７が指示するタイミングで、第２シミュレータ４００に出力する。第２出力部１０６は、例えば、同期部１０７から第１実行結果を取得し、取得した第１実行結果を、同期部１０７が指示するタイミングで、第２シミュレータ４００に出力する。
【００９１】
同期部１０７は、第１シミュレータ３００および第２シミュレータ４００の各々に、受付部１０１がユーザから受け付けたサンプル間隔で、シミュレーションを周期的に実行させる。同期部１０７は、第１出力部１０５に、第２シミュレータ４００のサンプル間隔分のシミュレーション実行結果である第２実行結果を、第１シミュレータ３００がサンプル間隔分のシミュレーションを完了した後に、第１シミュレータ３００に出力させる。
そして、同期部１０７は、第１シミュレータ３００に、前記第２実行結果を用いてサンプル間隔分のシミュレーションを実行するよう指示する。
【００９２】
同期部１０７は、また、第２出力部１０６に、第１シミュレータ３００のサンプル間隔分のシミュレーション実行結果である第１実行結果を、第２シミュレータ４００がサンプル間隔分のシミュレーションを完了した後に、第２シミュレータ４００に出力させる。そして、同期部１０７は、第２シミュレータ４００に、前記第１実行結果を用いてサンプル間隔分のシミュレーションを実行するよう指示する。
【００９３】
図１に示すように、シミュレータ連携装置１０には、ユーザインタフェース２００が接続されてもよい。ユーザインタフェース２００は、例えば、ＨＭＩ（Human Machine Interface）である。ＨＭＩは、人間と機械とが情報をやり取りするための手段であり、具体的には、人間が機械を操作したり（機械に指示を与えたり）、機械が現在の状態・結果を人間に知らせたりする手段である。ＨＭＩについて、人間が機械に指示を与える手段としてはスイッチ、ボタン、ハンドル、ダイヤル、ペダル、リモコン、マイク、キーボード、マウスなどが含まれ、機械が現在の状態・結果等に係る情報を人間に伝える手段としては液晶画面、メーター、ランプ、スピーカーなどが含まれる。
【００９４】
（シミュレーションシステム１において実行される処理の詳細）
図３は、シミュレーションシステム１における、第１シミュレータ３００、第２シミュレータ４００、およびシミュレータ連携装置１０の各々の処理の流れを説明するフロー図である。なお、以下の説明においてシミュレータ連携装置１０は、第１シミュレータ３００および第２シミュレータ４００の各々にシミュレーションを周期的に実行させる間隔である「サンプル間隔」を、図示しない「ステップ（０）」において、ユーザから受け付けているものとする。
【００９５】
シミュレータ連携装置１０の第２取得部１０４は、第２シミュレータ４００（特にそのマシンモデル）から、第２シミュレータ４００のシミュレーション実行結果である入力値（第２実行結果）を取得する（ステップ（１）：入力値取得）。
【００９６】
シミュレータ連携装置１０の第１出力部１０５は、第２シミュレータ４００から取得した入力値（第２実行結果）を、第１シミュレータ３００に送信する（ステップ（２）：入力値書込）。
【００９７】
シミュレータ連携装置１０の第１取得部１０３は、第１シミュレータ３００から、出力値（第１実行結果）を取得する（ステップ（３）：出力値読出）。
【００９８】
シミュレータ連携装置１０の同期部１０７は、第１シミュレータ３００に、サンプル間隔分のシミュレーションを実行するよう指示する（ステップ（４−１））。第１シミュレータ３００は、シミュレータ連携装置１０（特に、同期部１０７）からの指示に従って、サンプル間隔分のシミュレーション実行する（ステップ３００）。
【００９９】
また、シミュレータ連携装置１０の同期部１０７は、第２出力部１０６に出力値（第１実行結果）を第２シミュレータ４００へと出力させ（送信させ）、前記出力値を用いて、第２シミュレータ４００に、サンプル間隔分のシミュレーションを実行するよう指示する（ステップ（４−２））。第２シミュレータ４００は、シミュレータ連携装置１０（同期部１０７）からの指示に従って、サンプル間隔分のシミュレーション実行する（ステップ４００）。なお、ステップ（４−１）とステップ（４−２）とを併せて、「ステップ（４）」と称する。
【０１００】
シミュレータ連携装置１０の第２取得部１０４は、第２シミュレータ４００から、第２シミュレータ４００がステップ４００で実行したシミュレーションの実行結果である入力値（第２実行結果）を取得する（ステップ（５）：入力値取得）。
【０１０１】
第１シミュレータ３００が、シミュレータ連携装置１０の同期部１０７からの指示に基づいて、サンプル間隔分のシミュレーションを実行し終わってから（サンプル間隔分のシミュレーション実行が完了してから）、シミュレータ連携装置１０の第１出力部１０５は、ステップ（５）で第２シミュレータ４００から取得した入力値（第２実行結果）を、第１シミュレータ３００に送信する（ステップ（６）：入力値書込）。
【０１０２】
シミュレータ連携装置１０の第１取得部１０３は、第１シミュレータ３００から、第１シミュレータ３００がステップ３００で実行したシミュレーションの実行結果である入力値（第１実行結果）を取得する（ステップ（７）：出力値読出）。
【０１０３】
シミュレータ連携装置１０の同期部１０７は、第１シミュレータ３００に、第１シミュレータ３００がステップ（６）で取得した第２実行結果を用いて、サンプル間隔分のシミュレーションを実行するよう指示する（ステップ（８−１））。第１シミュレータ３００は、シミュレータ連携装置１０（特に、同期部１０７）からの「ステップ（８−１）における指示」に従って、サンプル間隔分のシミュレーション実行する（ステップ３００）。
【０１０４】
また、シミュレータ連携装置１０の同期部１０７は、第２出力部１０６に、ステップ（７）で第１シミュレータ３００から取得した第１実行結果を第２シミュレータ４００へと出力させる（送信させる）。そして、同期部１０７は、第２シミュレータ４００に、ステップ（７）で第１取得部１０３が第１シミュレータ３００から取得した第１実行結果を用いて、サンプル間隔分のシミュレーションを実行するよう指示する（ステップ（８−２））。第２シミュレータ４００は、シミュレータ連携装置１０（同期部１０７）からの「ステップ（８−２）における指示」に従って、サンプル間隔分のシミュレーション実行する（ステップ４００）。なお、ステップ（８−１）とステップ（８−２）とを併せて、「ステップ（８）」と称する。
【０１０５】
図３を用いて説明した、シミュレータ連携装置１０が実行する処理（シミュレータ連携装置１０の制御方法）は、以下のように整理することができる。すなわち、シミュレータ連携装置１０が実行する処理は、複数のシミュレータの各々が実行するシミュレーションを連携させるシミュレータ連携装置の制御方法であって、シミュレーションを周期的に実行させる間隔であるサンプル間隔をユーザから受け付ける受付ステップ（ステップ（０））と、コントローラ（例えば、ＰＬＣ）についてのシミュレータである第１シミュレータ３００から、第１シミュレータ３００の前記サンプル間隔分のシミュレーション実行結果である第１実行結果を取得する第１取得ステップ（ステップ（３）および（７））と、前記コントローラにより制御される被制御装置（例えばサーボドライバのような下位コントローラ、および当該下位コントローラによって駆動される機械要素）についてのシミュレータである第２シミュレータ４００から、第２シミュレータ４００の前記サンプル間隔分のシミュレーション実行結果である第２実行結果を取得する第２取得ステップ（ステップ（１）および（５））と、前記第１取得ステップにて取得した前記第１実行結果を第２シミュレータ４００に出力するとともに、前記第２取得ステップにて取得した前記第２実行結果を第１シミュレータ３００に出力し、第１シミュレータ３００および第２シミュレータ４００の各々に前記サンプル間隔でシミュレーションを周期的に実行させる同期ステップ（ステップ（４）および（８））と、を含んでいる。
【０１０６】
前記の方法によれば、前記同期ステップは、前記コントローラについてのシミュレータである第１シミュレータ３００、および前記コントローラにより制御される前記被制御装置についてのシミュレータである第２シミュレータ４００の各々に、前記受付ステップにてユーザから受け付けた前記サンプル間隔で、シミュレーションを、周期的に実行させる。
【０１０７】
したがって、前記制御方法は、第１シミュレータ３００および第２シミュレータ４００の各々に、前記受付ステップにてユーザから受け付けた前記サンプル間隔で、シミュレーションを、同期させて周期的に実行させることができるという効果を奏する。
【０１０８】
つまり、例えば、ユーザが長い時間間隔を前記サンプル間隔とすることにより、前記同期ステップは、前記長い時間間隔の前記サンプル間隔で、前記第１取得ステップにて取得した前記第１実行結果を第２シミュレータ４００に出力するとともに、前記長い時間間隔の前記サンプル間隔で、前記第２取得ステップにて取得した前記第２実行結果を第１シミュレータ３００に出力する。この場合、前記同期ステップは、第１シミュレータ３００および第２シミュレータ４００がシミュレーションを完了させるまでに、第１シミュレータ３００と第２シミュレータ４００との間での前記シミュレーション実行結果の送受信の回数を抑制することができ、結果として、シミュレーションの実行時間全体を短縮することができる。
【０１０９】
また、例えば、ユーザが短い時間間隔を前記サンプル間隔とすることにより、前記同期ステップは、前記短い時間間隔の前記サンプル間隔で、前記第１取得ステップにて取得した前記第１実行結果を第２シミュレータ４００に出力するとともに、前記短い時間間隔の前記サンプル間隔で、前記第２取得ステップにて取得した前記第２実行結果を第１シミュレータ３００に出力する。この場合、前記同期ステップは、第１シミュレータ３００および第２シミュレータ４００の各々が前記短い時間間隔で実行したシミュレーションの結果を、都度、第２シミュレータ４００および第２シミュレータ４００の各々に通知するので、第１シミュレータ３００と第２シミュレータ４００の各々に実行させるシミュレーションの実行結果のシミュレーション精度を、前記サンプル間隔を長くした場合に比べて向上させることができる。
【０１１０】
したがって、前記制御方法は、ユーザが、前記シミュレーションの実行時間と、前記シミュレーションのシミュレーション精度とのいずれを重視して前記シミュレーションを実行させるかを、任意に選択することができるようになるとの効果を奏する。
【０１１１】
（ユーザによるサンプル間隔の設定について）
図４は、シミュレータ連携装置１０が、シミュレーションを周期的に実行させる間隔であるサンプル間隔についてユーザに表示し、また前記サンプル間隔についてユーザからの操作を受け付けるインターフェースの一例を示す図である。
【０１１２】
図４に例示するサンプル間隔設定画面は、例えば、表示部１０２が、ユーザインタフェース２００に表示させる。そして、図４のサンプル間隔設定画面に対するユーザ操作は、受付部１０１によって処理される（受け付けられる）。例えば、図４のサンプル間隔設定画面でユーザに設定されたサンプル間隔で、シミュレータ連携装置１０は、第１シミュレータ３００と第２シミュレータ４００の各々にシミュレーションを周期的に実行させる。
【０１１３】
シミュレーションシステム１においては、通常、第１シミュレータ３００のシミュレーション対象である上位コントローラの制御周期が、サンプル間隔として、ユーザによって設定される。すなわち、表示部１０２は、図４に例示するサンプル間隔設定画面において、第１シミュレータ３００および第２シミュレータ４００の各々にシミュレーションを周期的に実行させる間隔であるサンプル間隔の初期設定値として、上位コントローラ（例えば、ＰＬＣ）の制御周期を表示する。
【０１１４】
前記の構成によれば、表示部１０２は、前記サンプル間隔の初期設定値として上位コントローラの制御周期を表示する。
【０１１５】
したがって、シミュレータ連携装置１０は、上位コントローラについてのシミュレータである第１シミュレータ３００に、上位コントローラの制御周期でシミュレーションを実行させつつ、上位コントローラにより制御される前記被制御装置についてのシミュレータである第２シミュレータ４００に、第１シミュレータ３００のシミュレーションと同期させて、シミュレーションを実行させることができるという効果を奏する。
【０１１６】
ただし、ユーザは、図４に例示するサンプル間隔設定画面において、上位コントローラの制御周期とは異なる値を、サンプル間隔として設定することもできる。例えば、シミュレータ連携装置１０において、前記サンプル間隔は、上位コントローラの制御周期よりも長い時間を設定可能である。
【０１１７】
前記の構成によれば、同期部１０７は、上位コントローラの制御周期よりも長い時間である前記サンプル間隔で、第１取得部１０３により取得した前記第１実行結果を第２シミュレータ４００に出力するとともに、受付部１０１により受け付けた前記サンプル間隔で、第２取得部１０４により取得した前記第２実行結果を第１シミュレータ３００に出力する。
【０１１８】
したがって、同期部１０７は、第１シミュレータ３００および第２シミュレータ４００がシミュレーションを完了させるまでに、第１シミュレータ３００と第２シミュレータ４００との間での前記シミュレーション実行結果の送受信の回数を抑制することができるという効果を奏する。つまり、シミュレータ連携装置１０は、第１シミュレータ３００および第２シミュレータ４００がシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【０１１９】
シミュレータ連携装置１０において、ユーザは、サンプル間隔を長く設定することにより、第１シミュレータ３００と第２シミュレータ４００との間のデータ交換回数を減らし、シミュレーション実行時間を短縮することができる。
【０１２０】
図４に例示するように、ユーザは、サンプル間隔設定画面において、第１シミュレータ３００または第２シミュレータ４００がシミュレーションを実行する際に用いる変数ごとに、サンプル間隔を設定することができる。すなわち、シミュレータ連携装置１０において、受付部１０１は、第１シミュレータ３００または第２シミュレータ４００がシミュレーションを実行する際に用いる変数ごとのサンプル間隔を、ユーザから受け付ける。
【０１２１】
前記の構成によれば、同期部１０７は、第１シミュレータ３００または第２シミュレータ４００がシミュレーションを実行する際に用いる変数ごとに設定されたサンプル間隔で、前記変数を第１シミュレータ３００と第２シミュレータ４００との間で送受信させる。
【０１２２】
したがって、シミュレータ連携装置１０は、第１シミュレータ３００または第２シミュレータ４００において実行されるシミュレーションで用いられる変数ごとに最適な時間間隔で、前記変数を第１シミュレータ３００と第２シミュレータ４００との間で送受信させることができるので、第１シミュレータ３００および第２シミュレータ４００がシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【０１２３】
ここで、例えば上位コントローラが並行して複数の処理を実行する場合、受付部１０１は、前記複数の処理に対応して第１シミュレータ３００が実行する複数のシミュレーションの各々について、サンプル間隔をユーザから受け付けることができる。そして、同期部１０７は、前記複数のシミュレーションの各々のシミュレーション実行結果を、前記複数のシミュレーションの各々の前記サンプル間隔で、第２シミュレータ４００に出力する。
【０１２４】
したがって、シミュレータ連携装置１０は、第１シミュレータ３００が並行して実行する前記複数のシミュレーションの各々のシミュレーション実行結果を、前記複数のシミュレーションごとに最適な間隔で、第２シミュレータ４００に出力することにより、第１シミュレータ３００および第２シミュレータ４００がシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【０１２５】
例えば、第１シミュレータ３００のシミュレーション対象である上位コントローラでマルチタスクの機能を使っている場合には、シミュレータ連携装置１０は、参照している変数のタスク周期に応じたデータ交換を行うことにより、第１シミュレータ３００と第２シミュレータ４００との間でのデータ交換回数を減らし、シミュレーション実行時間を短縮させることもできる。
【０１２６】
上記コントローラは、例えば、「EtherCAT通信、モーション制御、I/Oリフレッシュ、および、ユーザプログラム」を主な処理内容とするプライマリ定周期タスクと、「I/Oリフレッシュおよびユーザプログラム」を主な処理内容とする定周期タスクと、「ユーザプログラム」を主な処理内容とするイベントタスクという３種類のタスクを有していてもよい。上記コントローラは、プライマリ定周期タスクを最優先で実行し、定周期タスクとイベントタスクとの間の優先関係はユーザが指定できてもよく、さらに、１タスクあたり、例えば最大１２８のプログラムを割り当てることができてもよい。
【０１２７】
（シミュレータ間で交換するデータについて）
シミュレータ連携装置１０が第１シミュレータ３００および第２シミュレータ４００の少なくとも一方から取得する信号（情報）は、第１シミュレータ３００および第２シミュレータ４００の各々におけるシミュレーションの実行によって値が変化するもの（例えば、シミュレーション実行結果としてのフィードバック値）と、値が変化しないもの（例えば、ＰＩＤパラメータなど）と、がある。
【０１２８】
シミュレータ連携装置１０は、シミュレーションの実行によって値が変化しない信号（情報）は、最初の１回目のデータ交換のタイミングでのみ、第１シミュレータ３００から第２シミュレータ４００へ書込みし、または、第２シミュレータ４００から第１シミュレータ３００へ書込みし、データ交換の量を削減している。
【０１２９】
すなわち、シミュレータ連携装置１０において、同期部１０７は、第１シミュレータ３００におけるシミュレーションに用いる変数であって、第１シミュレータ３００におけるシミュレーションの実行によって値が変化しない変数を、第１シミュレータ３００がシミュレーションを実行する前に１回だけ、第１シミュレータ３００に出力する。
【０１３０】
前記の構成によれば、同期部１０７は、第２シミュレータ４００におけるシミュレーションに用いる変数であって、第２シミュレータ４００におけるシミュレーションの実行によって値が変化しない変数を、第１シミュレータ３００がシミュレーションを実行する前に１回だけ、第１シミュレータ３００に出力する。
【０１３１】
したがって、同期部１０７は、第１シミュレータ３００と第２シミュレータ４００との間で送受信するデータ量を抑制することができるという効果を奏する。つまり、シミュレータ連携装置１０は、第１シミュレータ３００および第２シミュレータ４００がシミュレーションを完了させる時間を短縮することができるという効果を奏する。
【０１３２】
（シミュレータ連携装置の利用例について）
これまでに説明してきたシミュレータ連携装置１０について、次に、図５および図６を用いて、その利用方法について具体例を用いて説明していく。
【０１３３】
図５は、シミュレーションシステム１において、シミュレータ連携装置１０によって第１シミュレータ３００および第２シミュレータ４００を連携させる方法の一例を示す図である。
【０１３４】
図５に示すように、シミュレータ連携装置１０は、シーケンス制御の制御器モデル設計時に利用することができる。すなわち、ユーザは、先ず、例えばＨＭＩであるユーザインタフェース２００を操作して（または、第１シミュレータ３００を操作して）、第１シミュレータ３００においてイベントを発生させる（つまり、遷移条件を満足させ、状態を遷移させる）。
【０１３５】
シミュレータ連携装置１０は、第１シミュレータ３００における状態遷移の結果を第１実行結果（第１シミュレータ３００におけるシミュレーションの実行結果）として取得する。シミュレータ連携装置１０は、第１シミュレータ３００における状態遷移の結果を、第２シミュレータ４００に送信し、第２シミュレータ４００に、第１シミュレータ３００における状態遷移の結果を用いたシミュレーションを実行させる。
【０１３６】
図５に示す例で、シミュレータ連携装置１０は、例えば、シーケンス制御に用いる制御器モデル（例えば、Stateflow（登録商標））に、第１シミュレータ３００における状態遷移の結果を用いたシミュレーションを実行させる。
【０１３７】
ユーザは、第２シミュレータ４００における制御器モデルによるシミュレーション結果をステート図により確認し、必要により制御器モデルを適宜修正し、修正した制御器モデルに、第１シミュレータ３００における状態遷移の結果を用いたシミュレーションを再実行させることができる。
【０１３８】
シミュレータ連携装置１０は、第２シミュレータ４００における制御器モデルのシミュレーションの実行結果を、第２実行結果（第２シミュレータ４００におけるシミュレーションの実行結果）として取得する。シミュレータ連携装置１０は、制御器モデルのシミュレーションの実行結果を第１シミュレータ３００に送信し、第１シミュレータ３００に、制御器モデルのシミュレーションの実行結果を用いたシミュレーションを実行させる。
【０１３９】
第１シミュレータ３００は、制御器モデルのシミュレーションの実行結果を用いたシミュレーションを実行し、例えば、制御プログラムを起動し、制御器モデルのシミュレーションの実行結果を用いて、制御プログラム等を実行する。
【０１４０】
シミュレータ連携装置１０は、第１シミュレータ３００による上記シミュレーションの実行結果を、第１実行結果として取得する。シミュレータ連携装置１０は、第１シミュレータ３００から取得したシミュレーションの実行結果を、第２シミュレータ４００に送信し、第２シミュレータ４００に、シミュレーションを実行させる。
【０１４１】
図５に示す例で、シミュレータ連携装置１０は、例えば、連続制御に用いるマシンモデルに、第１シミュレータ３００による上記シミュレーションの実行結果を用いたシミュレーションを実行させる。
【０１４２】
図５は、第２シミュレータ４００に、マシンモデルだけでなく、シーケンス制御の制御器モデルを配置してシミュレーションする例を示している。図５において、第１シミュレータ３００には、シーケンス制御のための制御プログラムが準備されていない。しかしながら、シミュレータ連携装置１０が、第１シミュレータ３００と第２シミュレータ４００との間で漏れなくデータを交換させることができることにより、図５に示すように、シミュレータ連携装置１０は、シーケンス制御の制御器モデル設計時に利用することができる。
【０１４３】
（シミュレータ連携装置の別の利用例について）
図６は、シミュレーションシステム１において、シミュレータ連携装置１０によって第１シミュレータ３００および第２シミュレータ４００を連携させる方法の、図５に示すのとは別の例を示す図である。図６に示す例では、図５に示した例と異なり、第１シミュレータ３００には、シーケンス制御のための制御プログラムが準備されている。図６に示すように、シミュレータ連携装置１０は、シーケンス制御の制御器モデル設計時に利用することができ、ユーザは、ステート図で制御器モデル（Stateflow）をモニタできるので、視認性が向上する。
【０１４４】
図６に例示するように、シミュレータ連携装置１０は、第１シミュレータ３００と第２シミュレータ４００とを連携することにより、第１シミュレータ３００は、第２シミュレータ４００における制御器モデル（Stateflow）を、FunctionBlock（FB）として第１シミュレータ３００において表示させることができる。シミュレータ連携装置１０によって第１シミュレータ３００と第２シミュレータ４００とは互いに連携し、データだけでなく、モデル、プログラム等を相互に共有することができる。したがって、ユーザは、例えば図６に例示するように、第２シミュレータ４００においてモデリングしたモデル等を、第１シミュレータ３００において確認し、第１シミュレータ３００において利用することができる。すなわち、制御器モデル（Stateflow）を自動コード生成することにより、FunctionBlock（FB）にすることができる。
【０１４５】
ユーザは、先ず、図５に示したのと同様に、例えばＨＭＩであるユーザインタフェース２００を操作して（または、第１シミュレータ３００を操作して）、第１シミュレータ３００においてイベントを発生させる（つまり、遷移条件を満足させ、状態を遷移させる）。
【０１４６】
シミュレータ連携装置１０は、第１シミュレータ３００における状態遷移の結果を第１実行結果（第１シミュレータ３００におけるシミュレーションの実行結果）として取得する。シミュレータ連携装置１０は、第１シミュレータ３００における状態遷移の結果を、第２シミュレータ４００に送信し、第２シミュレータ４００に、第１シミュレータ３００における状態遷移の結果を用いたシミュレーションを実行させる。
【０１４７】
図６に示す例で、シミュレータ連携装置１０は、例えば、シーケンス制御に用いる制御器モデル（Stateflow）に、第１シミュレータ３００における状態遷移の結果を用いたシミュレーションを実行させる。
【０１４８】
ユーザは、第２シミュレータ４００における制御器モデルによるシミュレーション結果をステート図により確認できるので、視認性が向上する。
【０１４９】
なお、図６に示す例では、図５に示した例とは異なり、シミュレータ連携装置１０は、制御器モデルのシミュレーションの実行結果を取得しない。
【０１５０】
図６に示す例では、シミュレータ連携装置１０は、第１実行結果として取得した「第１シミュレータ３００における状態遷移の結果（ユーザ操作による、第１シミュレータ３００における状態遷移の結果）」を、第２シミュレータ４００に送信する。シミュレータ連携装置１０は、第２シミュレータ４００に、「第１シミュレータ３００における状態遷移の結果」を用いたシミュレーションを実行させる。
【０１５１】
図６に示す例で、シミュレータ連携装置１０は、例えば、連続制御に用いるマシンモデルに、「第１シミュレータ３００における状態遷移の結果（ユーザ操作による、第１シミュレータ３００における状態遷移の結果）」を用いたシミュレーションを実行させる。
【０１５２】
（ユーザが確認することのできるその他の画面例について）
シミュレーションシステム１において、これまでに説明してきた画面例以外の、ユーザが確認することのできる画面例について、図７〜図９を用いて説明しておく。
【０１５３】
（第２シミュレータの表示する画面例について）
図７は、シミュレーションシステム１における第２シミュレータ４００が表示する画面例を示す図である。図７に示す例では、「シーケンス制御に用いる制御器モデル（Stateflow）および連続制御に用いるマシンモデル」と、「シミュレータ連携装置１０が第２シミュレータ４００のシミュレーションについて制御する、データ交換およびシミュレーション時刻等の項目」との対応関係が、１画面中に表示されている。
【０１５４】
ユーザは、図７に示す画面により、第２シミュレータ４００におけるシーケンス制御および連続制御の各々に用いる制御器モデル（Stateflow）およびマシンモデルの全体構成について、シミュレータ連携装置１０の制御対象（例えば、シミュレータ連携装置１０が第１シミュレータ３００と第２シミュレータ４００との間で連携させる項目）と関係させながら、確認することができる。つまり、ユーザは、図７に示す画面により、サーボドライバのような下位コントローラ、および当該下位コントローラによって駆動される機械要素の全体構成について、シミュレータ連携装置１０の制御対象と関係させながら（例えば、上位コントローラのシミュレーション項目と関係させながら）、確認することができる。
【０１５５】
ユーザは、また、図７に示す画面により、第２シミュレータ４００においてシーケンス制御に用いられる制御器モデル（Stateflow）と連続制御に用いられるマシンモデルとの間のデータの流れを、確認することができる。さらに、シミュレータ連携装置１０によって連携されている第１シミュレータ３００と第２シミュレータ４００との間のデータの流れについて、確認することができてもよい。つまり、ユーザは、図７に示す画面により、シミュレータ連携装置１０によって連携されている、第１シミュレータ３００（上位コントローラのモデル）と、第２シミュレータ４００（制御器モデル（Stateflow）およびマシンモデル）との間のデータの流れを、確認することができる。
【０１５６】
なお、図７に示す画面において、ユーザが、制御器モデル（Stateflow）およびマシンモデルの全体構成中の各構成要素を選択することによって、当該構成要素についての詳細を確認することのできる画面が表示されてもよい。例えば、図７に示す画面において、ユーザが「制御器モデル（Stateflow）」をダブルクリック等によって選択することによって、選択した「制御器モデル（Stateflow）」の詳細を示す画面（例えば、図８に例示する画面）が表示されてもよい。
【０１５７】
なお、図７に示す画面例を第２シミュレータ４００が表示することは必須ではなく、シミュレータ連携装置１０の表示部１０２が、ユーザインタフェース２００に表示してもよい。
【０１５８】
図８は、シミュレーションシステム１における第２シミュレータ４００が表示する、図７に示すのとは別の画面例を示す図であり、具体的には、シーケンス制御に用いる制御器モデルについての状態遷移図の一例を示している。図８に例示する画面は、例えば、図７に示す画面において、ユーザが「制御器モデル（Stateflow）」をダブルクリック等によって選択することによって、表示されてもよい。
【０１５９】
図８に例示する画面においては、図７に例示した全体構成において概要を示されていた制御器モデル（Stateflow）の詳細が示されている。すなわち、図８に例示する画面においては、制御器モデル（Stateflow）を構成する要素、機能、処理の流れ等についての詳細が表示される。
【０１６０】
さらに、図８に例示する画面においては、シミュレーション等が実行されている処理、機能等に対応する制御器モデル（Stateflow）等が強調表示されてもよい。例えば、図８において太線で囲まれている部分は、シミュレーションが実行されている要素、機能、処理を表していてもよい。
【０１６１】
図８に例示する状態遷移図は、動く状態遷移図として、制御器モデルについて、連続制御と組み合わせた動作確認（デバッグ）を行うことができる。なお、図８に示す画面例を第２シミュレータ４００が表示することは必須ではなく、シミュレータ連携装置１０の表示部１０２が、ユーザインタフェース２００に表示してもよい。
【０１６２】
（第１シミュレータの表示する別の画面例について）
図９は、シミュレーションシステム１における第１シミュレータ３００が表示する画面例を示す図である。図９は、「第１シミュレータ３００においてイベントを発生させる（つまり、遷移条件を満足させ、状態を遷移させる）」ための画面例である。ユーザは、例えば、ユーザインタフェース２００に表示された図９の画面を操作して、第１シミュレータ３００においてイベントを発生させることができる。
【０１６３】
すなわち、ユーザは、図９に例示する画面を利用して、サーボＯＮ／ＯＦＦ（Ｐｏｗｅｒ  ＯＮ／Ｐｏｗｅｒ  ＯＦＦ。サーボＯＮすると、サーボドライバはサーボモータに通電し、制御を開始する）、Ｈｏｍｅポジションへの復帰（Ｈｏｍｅ）、運転開始（Ｓｔａｒｔ）、警報解除（Ａｌａｒｍ  ｃｌｅａｒ）等の指示を与えることができる。また、ユーザは、図９の（ａ）に例示する画面を利用して、現在の状態（Ｃｕｒｒｅｎｔ  Ｐｏｓｉｔｉｏｎ）の確認等を行うことができる。
【０１６４】
なお、図９に示す画面例を第１シミュレータ３００が表示することは必須ではなく、シミュレータ連携装置１０の表示部１０２が、ユーザインタフェース２００に表示してもよい。
【０１６５】
〔ソフトウェアによる実現例〕
シミュレータ連携装置１０の制御ブロック（特に、受付部１０１、表示部１０２、第１取得部１０３、第２取得部１０４、第１出力部１０５、第２出力部１０６、同期部１０７）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【０１６６】
後者の場合、シミュレータ連携装置１０は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０１６７】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０１６８】
１０  シミュレータ連携装置
１０１  受付部
１０２  表示部
１０３  第１取得部
１０４  第２取得部
１０７  同期部
３００  第１シミュレータ
４００  第２シミュレータ
ステップ（０）  受付ステップ
ステップ（３）および（７）  第１取得ステップ
ステップ（１）および（５）  第２取得ステップ
ステップ（４）および（８）  同期ステップ
【図１】
2018036945.tif 000003
【図２】
2018036945.tif 000004
【図３】
2018036945.tif 000005
【図４】
2018036945.tif 000006
【図５】
2018036945.tif 000007
【図６】
2018036945.tif 000008
【図７】
2018036945.tif 000009
【図８】
2018036945.tif 000010
【図９】
2018036945.tif 000011
【図１０】
2018036945.tif 000012