(57)【要約】      （修正有）【課題】異なる種類の制御プログラムを同期して実行するための技術を提供する。【解決手段】情報処理装置（仮想ＦＡシステム１Ｘ）は、第１及び第２制御対象を駆動するための第１及び第２駆動機器の挙動を模擬するアクチュエータエミュレータ１５５、１６５と、夫々のアクチュエータエミュレータに対する命令群を含むＰＬＣプログラム１１１、１１２を格納するための記憶装置と、仮想時刻を生成するためのタイマー１４０と、仮想時刻を尺度とする予め定められた第１制御周期ごとにＰＬＣプログラム１１１に含まれる命令群を繰り返し実行するためのＰＬＣエミュレータ１５１と、仮想時刻に従って、ロボットプログラム１１２に含まれる命令群を予め定められた実行順序で逐次的に実行するためのロボットコントローラエミュレータ１６１とを備える。【選択図】図２
2019032788.tif 000002
【特許請求の範囲】
【請求項１】
第１制御対象を駆動するための第１駆動機器の挙動を模擬する第１アクチュエータエミュレータと、
第２制御対象を駆動するための第２駆動機器の挙動を模擬する第２アクチュエータエミュレータと、
前記第１アクチュエータエミュレータに対する命令群を含む第１制御プログラムと、前記第２アクチュエータエミュレータに対する命令群を含む第２制御プログラムとを格納するための記憶装置と、
仮想時刻を生成するためのタイマーと、
前記仮想時刻を尺度とする予め定められた第１制御周期ごとに前記第１制御プログラムに含まれる命令群を繰り返し実行するための第１コントローラエミュレータと、
前記仮想時刻に従って、前記第２制御プログラムに含まれる命令群を予め定められた実行順序で逐次的に実行するための第２コントローラエミュレータとを備える、情報処理装置。
【請求項２】
前記第２コントローラエミュレータは、前記第２制御プログラムに含まれる各命令について、当該命令の実行に要する実行時間を、前記仮想時刻を尺度として算出し、
前記第１コントローラエミュレータは、前記第２コントローラエミュレータが前記第２制御プログラムに含まれる１つの命令を実行している間、当該命令の実行に要する実行時間の分、前記第１制御プログラムに含まれる命令群を繰り返し実行する、請求項１に記載の情報処理装置。
【請求項３】
前記第１コントローラエミュレータが、前記１つの命令の実行に要する実行時間の分、前記第１制御プログラムに含まれる命令群を繰り返した後、前記第２コントローラエミュレータは、当該１つの命令の次の命令の実行を開始する、請求項２に記載の情報処理装置。
【請求項４】
前記第１コントローラエミュレータは、前記第１駆動機器の位置指令値を前記第１アクチュエータエミュレータに前記第１制御周期ごとに出力する、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第２コントローラエミュレータは、前記第１制御周期と同期された第２制御周期ごとに、前記第２駆動機器の位置指令値を前記第１アクチュエータエミュレータに出力する、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項６】
前記第１制御周期および前記第２制御周期のいずれか一方の制御周期は、他方の制御周期の整数倍である、請求項５に記載の情報処理装置。
【請求項７】
第１制御対象を駆動するための第１駆動機器の挙動を模擬する第１アクチュエータエミュレータに対する命令群を含む第１制御プログラムと、第２制御対象を駆動するための第２駆動機器の挙動を模擬する第２アクチュエータエミュレータに対する命令群を含む第２制御プログラムとを準備するステップと、
仮想時刻を生成するステップと、
前記仮想時刻を尺度とする予め定められた第１制御周期ごとに前記第１制御プログラムに含まれる命令群を繰り返し実行するステップと、
前記仮想時刻に従って、前記第２制御プログラムに含まれる命令群を予め定められた実行順序で逐次的に実行するステップとを備える、情報処理方法。
【請求項８】
コンピュータに実行される情報処理プログラムであって、
前記情報処理プログラムは、前記コンピュータに、
第１制御対象を駆動するための第１駆動機器の挙動を模擬する第１アクチュエータエミュレータに対する命令群を含む第１制御プログラムと、第２制御対象を駆動するための第２駆動機器の挙動を模擬する第２アクチュエータエミュレータに対する命令群を含む第２制御プログラムとを準備するステップと、
仮想時刻を生成するステップと、
前記仮想時刻を尺度とする予め定められた第１制御周期ごとに前記第１制御プログラムに含まれる命令群を繰り返し実行するステップと、
前記仮想時刻に従って、前記第２制御プログラムに含まれる命令群を予め定められた実行順序で逐次的に実行するステップとを実行させる、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、異なる種類の制御プログラムを同期して実行させるための技術に関する。
【背景技術】
【０００２】
ワークの生産工程を自動化するために様々なＦＡ（Factory  Automation）システムが開発されている。ＦＡシステムは、たとえば、ワークを移動するためのテーブルや、ワークを搬送するためのコンベアや、予め定められた移動先までワーク移動するためのアームロボットなどで構成されている。以下では、テーブルや、コンベアや、アームロボットなどの制御対象を総称して「移動装置」ともいう。これらの移動装置は、ＰＬＣ（Programmable Logic Controller）やロボットコントローラなどのコントローラによって制御される。
【０００３】
通常、設計者は、設計した制御プログラムがシミュレーション上で意図した通りに動作することを確認した上で、制御プログラムをコントローラに書き込む。このようなシミュレーションを支援するための技術に関し、特開２０１６−４２３７８号公報（特許文献１）は、視覚センサを含めた統合的なシミュレーションを実現することが可能なシミュレーション装置を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−４２３７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、各種移動装置を同期して駆動するためのコントローラが開発されている。これにより、たとえば、テーブルが移動している間に、アームロボットがテーブル上のワークをピックアップすることなどが可能になる。
【０００６】
各種移動装置の制御プログラムは、移動装置の種類によって、異なる種類のプログラミング言語で記述されていることがある。この場合、同期シミュレーションを実現するためには、異なる種類の制御プログラムを同期して実行する必要がある。特許文献１に開示されるシミュレーション装置は、異なる種類の制御プログラムの実行を同期させるものではないので、各種移動装置の動作を同期してシミュレーションすることができない。したがって、異なる種類の制御プログラムを同期して実行するための技術が望まれている。
【課題を解決するための手段】
【０００７】
ある局面に従うと、情報処理装置は、第１制御対象を駆動するための第１駆動機器の挙動を模擬する第１アクチュエータエミュレータと、第２制御対象を駆動するための第２駆動機器の挙動を模擬する第２アクチュエータエミュレータと、上記第１アクチュエータエミュレータに対する命令群を含む第１制御プログラムと、上記第２アクチュエータエミュレータに対する命令群を含む第２制御プログラムとを格納するための記憶装置と、仮想時刻を生成するためのタイマーと、上記仮想時刻を尺度とする予め定められた第１制御周期ごとに上記第１制御プログラムに含まれる命令群を繰り返し実行するための第１コントローラエミュレータと、上記仮想時刻に従って、上記第２制御プログラムに含まれる命令群を予め定められた実行順序で逐次的に実行するための第２コントローラエミュレータとを備える。
【０００８】
ある局面に従うと、上記第２コントローラエミュレータは、上記第２制御プログラムに含まれる各命令について、当該命令の実行に要する実行時間を、上記仮想時刻を尺度として算出し、上記第１コントローラエミュレータは、上記第２コントローラエミュレータが上記第２制御プログラムに含まれる１つの命令を実行している間、当該命令の実行に要する実行時間の分、上記第１制御プログラムに含まれる命令群を繰り返し実行する。
【０００９】
ある局面に従うと、上記第１コントローラエミュレータが、上記１つの命令の実行に要する実行時間の分、上記第１制御プログラムに含まれる命令群を繰り返した後、上記第２コントローラエミュレータは、当該１つの命令の次の命令の実行を開始する。
【００１０】
ある局面に従うと、上記第１コントローラエミュレータは、上記第１駆動機器の位置指令値を上記第１アクチュエータエミュレータに上記第１制御周期ごとに出力する。
【００１１】
ある局面に従うと、上記第２コントローラエミュレータは、上記第１制御周期と同期された第２制御周期ごとに、上記第２駆動機器の位置指令値を上記第１アクチュエータエミュレータに出力する。
【００１２】
ある局面に従うと、上記第１制御周期および上記第２制御周期のいずれか一方の制御周期は、他方の制御周期の整数倍である。
【００１３】
ある局面に従うと、情報処理方法は、第１制御対象を駆動するための第１駆動機器の挙動を模擬する第１アクチュエータエミュレータに対する命令群を含む第１制御プログラムと、第２制御対象を駆動するための第２駆動機器の挙動を模擬する第２アクチュエータエミュレータに対する命令群を含む第２制御プログラムとを準備するステップと、仮想時刻を生成するステップと、上記仮想時刻を尺度とする予め定められた第１制御周期ごとに上記第１制御プログラムに含まれる命令群を繰り返し実行するステップと、上記仮想時刻に従って、上記第２制御プログラムに含まれる命令群を予め定められた実行順序で逐次的に実行するステップとを備える。
【００１４】
ある局面に従うと、情報処理プログラムは、コンピュータに、第１制御対象を駆動するための第１駆動機器の挙動を模擬する第１アクチュエータエミュレータに対する命令群を含む第１制御プログラムと、第２制御対象を駆動するための第２駆動機器の挙動を模擬する第２アクチュエータエミュレータに対する命令群を含む第２制御プログラムとを準備するステップと、仮想時刻を生成するステップと、上記仮想時刻を尺度とする予め定められた第１制御周期ごとに上記第１制御プログラムに含まれる命令群を繰り返し実行するステップと、上記仮想時刻に従って、上記第２制御プログラムに含まれる命令群を予め定められた実行順序で逐次的に実行するステップとを実行させる。
【発明の効果】
【００１５】
ある局面において、異なる種類の制御プログラムを同期して実行することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態に従うＦＡシステムのシステム構成の一例を示す図である。
【図２】実施の形態に従う仮想ＦＡシステムの構成の一例を示す図である。
【図３】生成された軌跡の一例を示す図である。
【図４】ＰＬＣプログラムおよびロボットプログラムの設計画面の一例を示す図である。
【図５】ＰＬＣプログラムおよびロボットプログラムの設計画面の一例を示す図である。
【図６】アクチュエータエミュレータに対する位置指令値の出力タイミングの同期処理を説明するための図である。
【図７】実施の形態に従う情報処理装置によるシミュレーション画面の一例を示す図である。
【図８】実施の形態に従う情報処理装置のハードウェア構成を示す模式図である。
【図９】実施の形態に従う情報処理装置の制御装置が実行する処理の一部を表わすフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【００１８】
［Ａ．ＦＡシステムの構成］
本開示は、ＦＡシステムを構成する異なる種類の移動装置を同期してシミュレーションするための技術に関する。理解を容易にするために、同期シミュレーションについて説明を行う前に、図１を参照して、シミュレーション対象のＦＡシステムの一例について説明する。図１は、ＦＡシステム１のシステム構成の一例を示す図である。
【００１９】
ＦＡシステム１は、情報処理装置１００と、ＰＬＣ（Programmable Logic Controller）２００と、ロボットコントローラ３００と、アームロボット４００と、サーボドライバ５００Ａ，５００Ｂと、移動テーブル６００とを含む。
【００２０】
説明の便宜のために、以下では、水平面上における所定方向をｘ方向ともいう。また、水平面上においてｘ方向に直交する方向をｙ方向ともいう。ｘ方向およびｙ方向に直交する方向をｚ方向ともいう。すなわち、ｚ方向は、鉛直方向に相当する。
【００２１】
情報処理装置１００は、ＰＬＣ２００やロボットコントローラ３００の制御プログラムを設計するための開発環境を設計者に提供する。情報処理装置１００は、たとえば、ＰＣ（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）などの記憶媒体に書き込まれているプログラムによって書き換えられるように構成されてもよい。
【００７７】
記憶装置１１０は、たとえば、ハードディスクや外付けの記憶媒体である。一例として、記憶装置１１０は、開発中のＰＬＣプログラム１１１と、情報処理プログラム１１３とを格納する。情報処理プログラム１１３は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う同期処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う情報処理装置１００の趣旨を逸脱するものではない。さらに、本実施の形態に従う情報処理プログラム１１３によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも１つのサーバが本実施の形態に従う同期処理を実現する、所謂クラウドサービスの形態で情報処理装置１００が構成されてもよい。
【００７８】
［Ｇ．情報処理装置１００の制御構造］
図９を参照して、情報処理装置１００の制御構造について説明する。図９は、情報処理装置１００の制御装置１０１が実行する処理の一部を表わすフローチャートである。図９の処理は、制御装置１０１がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【００７９】
ステップＳ１１０において、制御装置１０１は、同期シミュレーションの実行開始操作を受け付けたか否かを判断する。一例として、ユーザインターフェイス１２５（図７参照）における同期シミュレーションの実行ボタンが押下されたことに基づいて、制御装置１０１は、同期シミュレーションの実行開始操作を受け付けたと判断する。制御装置１０１は、同期シミュレーションの実行開始操作を受け付けたと判断した場合（ステップＳ１１０においてＹＥＳ）、制御をステップＳ１１２に切り替える。そうでない場合には（ステップＳ１１０においてＮＯ）、制御装置１０１は、ステップＳ１１０の処理を再び実行する。
【００８０】
ステップＳ１１２において、制御装置１０１は、上述の解釈部１５４（図２参照）として、ロボットプログラム１１２の実行対象の行に示されるロボット命令を解釈し、アクチュエータエミュレータ１５５をシミュレーション上で駆動するための軌跡演算を実行する。当該演算結果から実行対象の行に示されるロボット命令の実行に要するサイクル数が特定される。
【００８１】
ステップＳ１１４において、制御装置１０１は、ロボットコントローラ３００の動作を模擬するロボットコントローラエミュレータ１６１として機能し、実行対象のロボット命令の実行を開始する。
【００８２】
ステップＳ１２０において、制御装置１０１は、タイマー１４０が示す仮想時刻に基づいて、ＰＬＣプログラム１１１の実行周期が到来したか否かを判断する。制御装置１０１は、ＰＬＣプログラム１１１の実行周期が到来したと判断した場合（ステップＳ１２０においてＹＥＳ）、制御をステップＳ１２２に切り替える。そうでない場合には（ステップＳ１２０においてＮＯ）、制御装置１０１は、制御をステップＳ１３０に切り替える。
【００８３】
ステップＳ１２２において、制御装置１０１は、移動テーブル６００のアクチュエータエミュレータ１５５に、前回にステップＳ１２４で生成された位置指令値を出力する。すなわち、後続のステップＳ１２４で生成された位置指令値は、ステップＳ１２２が次に実行されるときにアクチュエータエミュレータ１５５に出力される。
【００８４】
ステップＳ１２４において、制御装置１０１は、上述の指令値生成部１５３（図２参照）として、移動テーブル６００のアクチュエータエミュレータ１５５に出力するための位置指令値を生成する。当該位置指令値の生成方法については図３で説明した通りであるので、その説明については繰り返さない。
【００８５】
ステップＳ１３０において、制御装置１０１は、タイマー１４０が示す仮想時刻に基づいて、ロボットプログラム１１２の実行周期が到来したか否かを判断する。なお、ＰＬＣプログラム１１１の実行周期とロボットプログラム１１２の実行周期とが同じ場合には、ステップＳ１３０の判断処理は省かれてもよい。制御装置１０１は、ロボットプログラム１１２の実行周期が到来したと判断した場合（ステップＳ１３０においてＹＥＳ）、制御をステップＳ１３２に切り替える。そうでない場合には（ステップＳ１３０においてＮＯ）、制御装置１０１は、制御をステップＳ１４０に切り替える。
【００８６】
ステップＳ１３２において、制御装置１０１は、アームロボット４００のアクチュエータエミュレータ１６５に、前回にステップＳ１３４で生成された位置指令値を出力する。すなわち、後続のステップＳ１３４で生成された位置指令値は、ステップＳ１３２が次に実行されるときにアクチュエータエミュレータ１６５に出力される。
【００８７】
ステップＳ１３４において、制御装置１０１は、上述の指令値生成部１６３（図２参照）として、ロボットコントローラ３００の動作を模擬するＰＬＣエミュレータ１５１として機能し、アームロボット４００のアクチュエータエミュレータ１５５に出力するための位置指令値を生成する。当該位置指令値の生成方法については図３で説明した通りであるので、その説明については繰り返さない。
【００８８】
ステップＳ１４０において、制御装置１０１は、タイマー１４０の仮想時刻をカウントアップする。仮想時刻は、たとえば、１ｍｓカウントアップされる。
【００８９】
ステップＳ１５０において、制御装置１０１は、ステップＳ１１２で特定されたサイクル数に基づいて、アクチュエータエミュレータ１６５によってシミュレーション上で駆動されるアームロボットの位置が目標位置に到達したか否かを判断する。制御装置１０１は、アクチュエータエミュレータ１６５によってシミュレーション上で駆動されるアームロボットの位置が目標位置に到達したと判断した場合（ステップＳ１５０においてＹＥＳ）、制御をステップＳ１５２に切り替える。そうでない場合には（ステップＳ１５０においてＮＯ）、制御装置１０１は、制御をステップＳ１２０に戻す。
【００９０】
ステップＳ１５２において、制御装置１０１は、上述の解釈部１５４として、ロボットプログラム１１２における実行対象の行を次の行に切り替える。
【００９１】
［Ｈ．まとめ］
以上のようにして、情報処理装置１００は、タイマー１４０によって生成される仮想時刻を尺度する予め定められた制御周期ごとに、サイクリック実行型のＰＬＣプログラム１１１に含まれる命令群を繰り返し実行する。また、情報処理装置１００は、タイマー１４０によって生成される仮想時刻に従って、逐次実行型のロボットプログラム１１２に含まれる命令群を予め定められた実行順序で逐次的に実行する。このように、ＰＬＣプログラム１１１およびロボットプログラム１１２が共通の仮想時刻に基づいて実行されることで、実行形態が異なるプログラムが同期して実行される。その結果、異なる種類の制御対象（たとえば、アームロボットや移動テーブルなど）の動作を同期してシミュレーションすることができる。
【００９２】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【００９３】
１  ＦＡシステム、１Ｘ  仮想ＦＡシステム、１００  情報処理装置、１０１  制御装置、１０２  主メモリ、１０３  通信インターフェイス、１０５  操作インターフェイス、１０６  表示インターフェイス、１０７  光学ドライブ、１０７Ａ  光学ディスク、１１０  記憶装置、１１１  ＰＬＣプログラム、１１２  ロボットプログラム、１１３  情報処理プログラム、１１４，１１５  ロボット命令、１１９  内部バス、１２０  表示部、１２０Ａ，１２０Ｂ  編集領域、１２０Ｃ  表示領域、１２２  操作部、１２５  ユーザインターフェイス、１４０  タイマー、１５０  第１エミュレータ、１５１  ＰＬＣエミュレータ、１５１Ａ  実行部、１５２，１６２  軌跡演算部、１５３，１６３  指令値生成部、１５４  解釈部、１５５，１６５  アクチュエータエミュレータ、１５６Ａ，１５６Ｂ  サーボドライバエミュレータ、１５７Ａ，１５７Ｂ，１６７Ａ，１６７Ｂ  サーボモータエミュレータ、１６０  第２エミュレータ、１６１  ロボットコントローラエミュレータ、３００  ロボットコントローラ、４００  アームロボット、４００Ａ，４００Ｂ  ロボット画像、４２０  基台、４２４  第１アーム、４２８  第２アーム、４３２  エンドエフェクタ、４４０Ａ，４４０Ｂ，４４０Ｃ，４４０Ｄ，６０１，６０１Ａ，６０１Ｂ  サーボモータ、５００Ａ，５００Ｂ  サーボドライバ、６００  移動テーブル、６００Ａ  移動テーブル画像、６０２  設置台。
【図１】
2019032788.tif 000003
【図２】
2019032788.tif 000004
【図３】
2019032788.tif 000005
【図４】
2019032788.tif 000006
【図５】
2019032788.tif 000007
【図６】
2019032788.tif 000008
【図７】
2019032788.tif 000009
【図８】
2019032788.tif 000010
【図９】
2019032788.tif 000011