IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特許7604918プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法
<>
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図1
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図2
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図3
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図4
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図5
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図6
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図7
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図8
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図9
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図10
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図11
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図12
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図13
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図14
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図15
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図16
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図17
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図18
  • 特許-プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-16
(45)【発行日】2024-12-24
(54)【発明の名称】プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法
(51)【国際特許分類】
   G05B 19/05 20060101AFI20241217BHJP
   B25J 13/00 20060101ALI20241217BHJP
【FI】
G05B19/05 A
B25J13/00 Z
【請求項の数】 8
(21)【出願番号】P 2021013385
(22)【出願日】2021-01-29
(65)【公開番号】P2022116952
(43)【公開日】2022-08-10
【審査請求日】2023-11-09
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】岩村 慎太郎
(72)【発明者】
【氏名】阿部 裕
【審査官】影山 直洋
(56)【参考文献】
【文献】特開2000-158301(JP,A)
【文献】特開2008-033419(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
B25J 13/00
(57)【特許請求の範囲】
【請求項1】
対象装置を仮想空間上で仮想的に表現する描画部と、
ユーザによる前記対象装置の動作内容の指定を取得する取得部と、
前記指定された動作内容に基づいて、IECプログラムロボットプログラム、および前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報を生成するプログラム生成部とを備え
前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報は、前記IECプログラムおよび前記ロボットプログラムとは独立した、前記IECプログラムおよび前記ロボットプログラムが参照する値を更新する命令を含む、プログラム生成装置。
【請求項2】
前記取得部は、前記指定された動作内容を特定する動作定義を生成する、請求項1に記載のプログラム生成装置。
【請求項3】
前記動作定義に対するユーザによる変更を受け付ける受付部をさらに備える、請求項2に記載のプログラム生成装置。
【請求項4】
前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報は、前記IECプログラムおよび前記ロボットプログラムを実行するタイミングを規定するテーブルを含む、請求項1~3のいずれか1項に記載のプログラム生成装置。
【請求項5】
前記対象装置の設計データから前記仮想空間上で前記対象装置を仮想的に表現するための情報を生成する生成部をさらに備える、請求項1~のいずれか1項に記載のプログラム生成装置。
【請求項6】
前記IECプログラムおよび前記ロボットプログラムに基づいて、前記対象装置の動作を再現するシミュレータをさらに備える、請求項1~のいずれか1項に記載のプログラム生成装置。
【請求項7】
コンピュータに、
対象装置を仮想空間上で仮想的に表現するステップと、
ユーザによる前記対象装置の動作内容の指定を取得するステップと、
前記指定された動作内容に基づいて、IECプログラムロボットプログラム、および前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報を生成するステップとを実行させ
前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報は、前記IECプログラムおよび前記ロボットプログラムとは独立した、前記IECプログラムおよび前記ロボットプログラムが参照する値を更新する命令を含む、プログラム生成プログラム。
【請求項8】
対象装置を仮想空間上で仮想的に表現するステップと、
ユーザによる前記対象装置の動作内容の指定を取得するステップと、
前記指定された動作内容に基づいて、IECプログラムロボットプログラム、および前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報を生成するステップとを備え
前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報は、前記IECプログラムおよび前記ロボットプログラムとは独立した、前記IECプログラムおよび前記ロボットプログラムが参照する値を更新する命令を含む、プログラム生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法に関する。
【背景技術】
【0002】
FA(Factory Automation)分野においては、ロボットが様々なアプリケーションに用いられている。このようなアプリケーションにおいては、PLC(プログラマブルロジックコントローラ)などの制御装置で実行されるプログラムと、ロボットを制御するためのプログラムとが必要となる。
【0003】
このようなプログラムの作成を容易化するための技術が提案されている。例えば、特開2019-018250号公報(特許文献1)は、ロボットの動作プログラムの作成に要するオペレータの作業を減らすためのプログラミング装置などを開示する。
【0004】
また、特開2018-118330号公報(特許文献2)は、複数のロボットの協調動作を短時間で自動生成することができる演算装置などを開示する。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2019-018250号公報
【文献】特開2018-118330号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ロボットを含むアプリケーションにおいては、制御装置で実行されるプログラムと、ロボットを制御するためのプログラムとを直接的または間接的に連携させる必要がある。これに対して、上述の先行技術文献に開示される技術は、ロボットを動作させるためのプログラムの生成に注目するものであり、制御装置で実行されるプログラムについては、何ら考慮されていない。
【0007】
本技術は、ロボットを含むアプリケーションにおいて必要なプログラムを容易に生成できる解決手段を提供することを目的とする。
【課題を解決するための手段】
【0008】
本技術のある実施の形態に係るプログラム生成装置は、対象装置を仮想空間上で仮想的に表現する描画部と、ユーザによる対象装置の動作内容の指定を取得する取得部と、指定された動作内容に基づいて、IECプログラムおよびロボットプログラムを生成するプログラム生成部とを含む。
【0009】
この構成によれば、ユーザは、仮想空間上で対象装置の動作内容を指定するだけで、対象装置を実環境で動作させるためのIECプログラムおよびロボットプログラムを生成できるので、プログラムの生成に関する知識が乏しいユーザであっても、動作に必要なプログラムを生成できる。
【0010】
取得部は、指定された動作内容を特定する動作定義を生成するようにしてもよい。この構成によれば、ユーザは、動作定義などの生成を意識することなく、仮想空間上で対象装置の動作を指定さえすればよいので、専門的な知識が乏しいユーザであっても利用できる。また、指定された動作内容を特定する動作定義を生成することで、IECプログラムおよびロボットプログラムをより確実に生成できる。
【0011】
プログラム生成装置は、動作定義に対するユーザによる変更を受け付ける受付部をさらに含むようにしてもよい。この構成によれば、ユーザは、指定された動作内容を特定する動作定義を確認した上で、必要に応じて修正などを行うことができる。
【0012】
プログラム生成部は、IECプログラムとロボットプログラムとの間の実行順序を規定する情報をさらに生成するようにしてもよい。この構成によれば、ロボットと他の機構との間で同期して動作させる必要がある場合などにおいて、より正確な制御を実現できる。
【0013】
IECプログラムとロボットプログラムとの間の実行順序を規定する情報は、IECプログラムおよびロボットプログラムが参照する値を更新する命令を含むようにしてもよい。この構成によれば、IECプログラムおよびロボットプログラムが並列的に実行されるような環境において、両プログラム間で相互にインターロックを取りながら処理を進めることができる。
【0014】
IECプログラムとロボットプログラムとの間の実行順序を規定する情報は、IECプログラムおよびロボットプログラムを実行するタイミングを規定するテーブルを含んでいてもよい。この構成によれば、IECプログラムおよびロボットプログラムの実行順序を明示的に規定できる。
【0015】
プログラム生成装置は、対象装置の設計データから仮想空間上で対象装置を仮想的に表現するための情報を生成する生成部をさらに含んでいてもよい。この構成によれば、CADデータなどの設計データから容易に対象装置を仮想空間に再現できる。
【0016】
プログラム生成装置は、IECプログラムおよびロボットプログラムに基づいて、対象装置の動作を再現するシミュレータをさらに含んでいてもよい。この構成によれば、生成されたIECプログラムおよびロボットプログラムによる動作を容易に確認できる。
【0017】
本技術の別の実施の形態に係るプログラム生成プログラムは、コンピュータに、対象装置を仮想空間上で仮想的に表現するステップと、ユーザによる対象装置の動作内容の指定を取得するステップと、指定された動作内容に基づいて、IECプログラムおよびロボットプログラムを生成するステップとを実行させる。
【0018】
本技術のさらに別の実施の形態に係るプログラム生成方法は、対象装置を仮想空間上で仮想的に表現するステップと、ユーザによる対象装置の動作内容の指定を取得するステップと、指定された動作内容に基づいて、IECプログラムおよびロボットプログラムを生成するステップとを含む。
【発明の効果】
【0019】
本技術によれば、ロボットを含むアプリケーションにおいて必要なプログラムを容易に生成できる。
【図面の簡単な説明】
【0020】
図1】本実施の形態に係るプログラム生成装置の主たる機能を示す模式図である。
図2】本実施の形態に係る制御システムのシステム構成を概略する模式図である。
図3】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示す模式図である。
図4】本実施の形態に係る制御システムを構成するロボットコントローラのハードウェア構成例を示す模式図である。
図5】本実施の形態に係る制御システムを構成するモータドライバのハードウェア構成例を示す模式図である。
図6】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。
図7】本実施の形態に係るサポート装置にインストールされた開発プログラムのより詳細な構成を示す模式図である。
図8】本実施の形態に係るサポート装置を用いて仮想空間上で作成した対象装置の一例を示す模式図である。
図9図8に示す対象装置の第1番目の動作を設定するための手順例を説明するための図である。
図10図8に示す対象装置の第2番目の動作を設定するための手順例を説明するための図である。
図11図8に示す対象装置の第3番目の動作を設定するための手順例を説明するための図である。
図12図8に示す対象装置の第4番目の動作を設定するための手順例を説明するための図である。
図13図8に示す対象装置の第5番目の動作を設定するための手順例を説明するための図である。
図14】本実施の形態に係るサポート装置が生成した動作定義の一例を示す図である。
図15図14に示される動作定義に従って生成されたIECプログラムの一例を示す。
図16図14に示される動作定義に従って生成されたロボットプログラムの一例を示す。
図17図14に示される動作定義に従って生成された実行順序管理プログラムの一例を示す。
図18図14に示される動作定義に対してユーザが修正あるいは変更を行った一例を示す図である。
図19】本実施の形態に係るサポート装置によるプログラム生成に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【0021】
本技術の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0022】
<A.適用例>
まず、本技術が適用される場面の一例について説明する。図1は、本実施の形態に係るプログラム生成装置の主たる機能を示す模式図である。図1には、本実施の形態に係るプログラム生成装置の一例として、サポート装置400を示す。サポート装置400は、対象装置を仮想空間上で仮想的に表現する描画機能を有している。ユーザは、対象装置の動作内容を指定するとともに、サポート装置400は、ユーザにより指定された動作内容を取得する。そして、サポート装置400は、指定された動作内容に基づいて、IECプログラム1104およびロボットプログラム1106を生成する。
【0023】
このような構成を提供することで、ロボットを含むアプリケーションにおいて必要なプログラムを容易に生成できる。
【0024】
なお、プログラム生成装置は、サポート装置400ではなく、任意の情報処理装置として実現してもよいし、必要な機能の一部または全部を複数のプロセッサリソースを用いて実現してもよい。
【0025】
<B.制御システム構成>
次に、本実施の形態に係るプログラム生成装置を含む制御システム1の構成について説明する。
【0026】
(b1:全体構成)
図2は、本実施の形態に係る制御システム1のシステム構成を概略する模式図である。図2を参照して、制御システム1は、制御装置100と、フィールドネットワーク10を介して制御装置100とネットワーク接続された、ロボットコントローラ250およびモータドライバ350とを含む。
【0027】
制御装置100は、フィールドネットワーク10に接続されたデバイスとの間でデータをやり取りして、後述するような処理を実行する。制御装置100は、典型的には、PLCにより実現されてもよい。
【0028】
ロボットコントローラ250は、ロボット200の制御を担当する。より具体的には、ロボットコントローラ250は、ロボット200との間のインターフェイスとして機能し、制御装置100からの指令に従って、ロボット200を駆動するための指令を出力するとともに、ロボット200の状態値を取得して制御装置100へ出力する。
【0029】
モータドライバ350は、図示しない任意の機構を駆動するモータ300の制御を担当する。より具体的には、モータドライバ350は、機構との間のインターフェイスとして機能し、制御装置100からの指令に従って、機構を構成する軸を駆動するための指令を対応するモータ300へ出力するとともに、モータ300の状態値を取得して制御装置100へ出力する。
【0030】
フィールドネットワーク10には、産業用ネットワーク用のプロトコルである、EtherCAT(登録商標)やEtherNet/IPなどを用いることができる。プロトコルとしてEtherCATを採用した場合には、制御装置100とフィールドネットワーク10に接続されたデバイスとの間で、例えば、数百μ秒~数m秒の定周期でデータをやり取りできる。このような定周期でのデータのやり取りによって、制御システム1に含まれるロボット200および機構を高速高精度に制御できる。
【0031】
制御装置100は、上位ネットワーク20を介して、表示装置500およびサーバ装置600に接続されてもよい。上位ネットワーク20には、産業用ネットワーク用のプロトコルであるやEtherNet/IPなどを用いることができる。
【0032】
制御装置100には、制御装置100で実行されるユーザプログラムのインストールや各種設定を行うためのサポート装置400が接続されてもよい。サポート装置400は、本実施の形態に係るプログラム生成装置の一例である。
【0033】
以下、図2に示す制御システム1を構成する主要装置のハードウェア構成例について説明する。
【0034】
(b2:制御装置100)
図3は、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示す模式図である。図3を参照して、制御装置100は、プロセッサ102と、メインメモリ104と、ストレージ110と、メモリカードインターフェイス112と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116と、USB(Universal Serial Bus)インターフェイスを提供するUSBコントローラ120とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
【0035】
プロセッサ102は、制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラムを読み出して、メインメモリ104に展開して実行することで、制御対象に対する制御演算を実現する。
【0036】
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
【0037】
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102、および、制御対象に応じて作成されたIECプログラム1104およびロボットプログラム1106などが格納される。
【0038】
IECプログラム1104は、本実施の形態に係る制御システム1におけるロボット200を制御する処理以外の処理を実現するために必要な命令を含む。IECプログラム1104は、典型的には、シーケンス命令およびモーション命令を含み得る。IECプログラム1104は、国際電気標準会議(IEC:International Electrotechnical Commission)が定めるIEC61131-3で規定されるいずれかの言語で記述されてもよい。但し、IECプログラム1104は、IEC61131-3で規定される言語以外のメーカ独自言語で記述されるプログラムを含んでいてもよい。IECプログラム1104は、PLCが実行する基本的なプログラムであるので、「PLCプログラム」とも称される。
【0039】
ロボットプログラム1106は、ロボット200を制御するための命令を含む。ロボットプログラム1106は、所定のプログラミング言語(例えば、V+言語などのロボット制御用プログラミング言語やGコードなどのNC制御に係るプログラミング言語)で記述された命令を含んでいてもよい。
【0040】
メモリカードインターフェイス112は、着脱可能な記憶媒体の一例であるメモリカード114を受け付ける。メモリカードインターフェイス112は、メモリカード114に対して任意のデータの読み書きが可能になっている。
【0041】
上位ネットワークコントローラ106は、上位ネットワーク20を介して、任意の情報処理装置(図2に示される表示装置500およびサーバ装置600など)との間でデータをやり取りする。
【0042】
フィールドネットワークコントローラ108は、フィールドネットワーク10を介して、それぞれのデバイスとの間でデータをやり取りする。
【0043】
ローカルバスコントローラ116は、ローカルバス122を介して、制御装置100に含まれる任意の機能ユニット130との間でデータをやり取りする。機能ユニット130は、例えば、アナログ信号の入力および/または出力を担当するアナログI/Oユニット、デジタル信号の入力および/または出力を担当するデジタルI/Oユニット、エンコーダなどからのパルスを受け付けるカウンタユニットなどからなる。
【0044】
USBコントローラ120は、USB接続を介して、任意の情報処理装置(サポート装置400など)との間でデータをやり取りする。
【0045】
(b3:ロボットコントローラ250)
図4は、本実施の形態に係る制御システム1を構成するロボットコントローラ250のハードウェア構成例を示す模式図である。図4を参照して、ロボットコントローラ250は、
ロボットコントローラ250は、フィールドネットワークコントローラ252と、制御処理回路260とを含む。
【0046】
フィールドネットワークコントローラ252は、フィールドネットワーク10を介して、主として、制御装置100との間でデータをやり取りする。
【0047】
制御処理回路260は、ロボット200を駆動するために必要な演算処理を実行する。一例として、制御処理回路260は、プロセッサ262と、メインメモリ264と、ストレージ270と、インターフェイス回路268とを含む。
【0048】
プロセッサ262は、ロボット200を駆動するための制御演算を実行する。メインメモリ264は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ270は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
【0049】
ストレージ270には、ロボット200を駆動するための制御を実現するためのシステムプログラム272が格納される。システムプログラム272は、ロボット200の動作に係る制御演算を実行する命令、および、ロボット200との間のインターフェイスに係る命令を含む。
【0050】
インターフェイス回路268は、ロボット200との間でデータをやり取りする。
(b4:モータドライバ350)
図5は、本実施の形態に係る制御システム1を構成するモータドライバ350のハードウェア構成例を示す模式図である。図5を参照して、モータドライバ350は、フィールドネットワークコントローラ352と、制御処理回路360と、ドライブ回路380とを含む。
【0051】
フィールドネットワークコントローラ352は、フィールドネットワーク10を介して、主として、制御装置100との間でデータをやり取りする。
【0052】
制御処理回路360は、モータ300の制御に必要な演算処理を実行する。一例として、制御処理回路360は、プロセッサ362と、メインメモリ364と、ストレージ370とを含む。
【0053】
プロセッサ362は、モータ300に係る制御演算を実行する。メインメモリ364は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ370は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
【0054】
ストレージ370には、モータ300の駆動制御を実現するためのシステムプログラム372が格納される。システムプログラム372は、モータ300の動作に係る制御演算を実行する命令、および、モータ300との間のインターフェイスに係る命令を含む。
【0055】
ドライブ回路380は、コンバータ回路およびインバータ回路などを含み、制御処理回路360により算出された指令値に従って、指定された電圧・電流・位相の電力を生成して、モータ300へ供給する。
【0056】
モータ300は、機構を構成するいずれかの軸と機械的に結合されている。モータ300としては、駆動対象の機構に応じた特性のモータを採用できる。例えば、モータ300としては、誘導型モータ、同期型モータ、永久磁石型モータ、リラクタンスモータのいずれを採用してもよいし、回転型だけではなく、リニアモータを採用してもよい。
【0057】
(b5:サポート装置400)
図6は、本実施の形態に係る制御システム1を構成するサポート装置400のハードウェア構成例を示す模式図である。図6を参照して、サポート装置400は、CPUやMPUなどのプロセッサ402と、メインメモリ404と、ストレージ410と、ネットワークコントローラ420と、USBコントローラ424と、入力部426と、表示部428とを含む。これらのコンポーネントは、バス408を介して接続される。
【0058】
プロセッサ402は、ストレージ410に格納された各種プログラムを読み出して、メインメモリ404に展開して実行することで、サポート装置400で必要な処理を実現する。
【0059】
ストレージ410は、例えば、HDDやSSDなどで構成される。ストレージ410には、典型的には、OS412と、後述するような処理を実現するための開発プログラム414とが格納される。なお、ストレージ410には、図6に示すプログラム以外の必要なプログラムが格納されてもよい。
【0060】
ネットワークコントローラ420は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。
【0061】
USBコントローラ424は、USB接続を介して、任意の情報処理装置との間でデータをやり取りする。
【0062】
入力部426は、マウス、キーボード、タッチパネルなどで構成され、ユーザからの指示を受け付ける。表示部428は、ディスプレイ、各種インジケータなどで構成され、プロセッサ402からの処理結果などを出力する。
【0063】
サポート装置400は、光学ドライブ406を有していてもよい。光学ドライブ406は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体407(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムを読み取って、ストレージ410などに格納する。
【0064】
サポート装置400で実行される各種プログラムは、コンピュータ読取可能な記録媒体407を介してインストールされてもよいが、ネットワーク上の任意のサーバからダウンロードする形でインストールするようにしてもよい。
【0065】
(b6:表示装置500)
本実施の形態に係る制御システム1を構成する表示装置500は、一例として、汎用パソコンを用いて実現されてもよい。表示装置500の基本的なハードウェア構成例は、周知であるので、ここでは詳細な説明は行わない。
【0066】
(b7:サーバ装置600)
本実施の形態に係る制御システム1を構成するサーバ装置600は、一例として汎用パソコンを用いて実現されてもよい。サーバ装置600の基本的なハードウェア構成例は、周知であるので、ここでは詳細な説明は行わない。
【0067】
(b8:その他の形態)
図3図6には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0068】
<C.開発プログラム>
図7は、本実施の形態に係るサポート装置400にインストールされた開発プログラム414のより詳細な構成を示す模式図である。図7を参照して、開発プログラム414は、主要なエレメントとして、描画エンジン430と、操作取得エンジン432と、シミュレータ434と、プログラム生成管理エンジン436と、IECプログラム生成エンジン438と、ロボットプログラム生成エンジン440とを含む。
【0069】
描画エンジン430は、対象装置を仮想空間上で仮想的に表現する描画部に相当する。描画エンジン430は、装置設定470を参照して、仮想空間上に任意の装置を描画する。装置設定470は、対象の装置に関する情報を含み、後述するように、CAD(computer-aided design)データなどの設計データから自動的に生成されてもよい。加えて、ユーザが対象とする任意の装置の情報を装置設定470に追加等するようにしてもよい。
【0070】
なお、本明細書においては、仮想空間上に設定される任意の装置や機構を「対象装置」と総称する。但し、「対象装置」は、完全な装置として構成されている必要はなく、装置の一部の機構や部位なども含み得る概念である。
【0071】
操作取得エンジン432は、ユーザによる対象装置の動作内容の指定を取得する取得部に相当する。より具体的には、操作取得エンジン432は、取得したユーザの操作に基づいて、動作定義460を生成する。動作定義460は、ユーザにより指定された動作内容を特定する情報である。動作定義460は、後述するように、ユーザによる操作の内容を記述したものであり、IECプログラム1104およびロボットプログラム1106を生成するための基準となる。
【0072】
シミュレータ434は、設定された装置や機構の動作をエミュレートする。すなわち、シミュレータ434は、IECプログラム1104およびロボットプログラム1106に基づいて、対象装置の動作を再現する。シミュレータ434による挙動情報(例えば、時間毎の各部位の位置や速度など)は、描画エンジン430に出力される。描画エンジン430は、シミュレータ434からの挙動情報に基づいて、仮想空間上で装置や機構の動作を再現する。
【0073】
プログラム生成管理エンジン436は、IECプログラム生成エンジン438およびロボットプログラム生成エンジン440によるプログラムの生成処理を管理するとともに、後述するような実行順序管理プログラム1108を生成する。
【0074】
IECプログラム生成エンジン438は、動作定義460を参照して、必要なIECプログラム1104を生成する。
【0075】
ロボットプログラム生成エンジン440は、動作定義460を参照して、必要なロボットプログラム1106を生成する。
【0076】
このように、プログラム生成管理エンジン436、IECプログラム生成エンジン438およびロボットプログラム生成エンジン440は、ユーザにより指定された動作内容に基づいて、IECプログラム1104およびロボットプログラム1106を生成するプログラム生成部に相当する。
【0077】
実行順序管理プログラム1108は、IECプログラム1104とロボットプログラム1106との間の実行順序を規定する情報の一例である。実行順序管理プログラム1108に代えて、あるいは、実行順序管理プログラム1108とともに、実行順序を規定するテーブルを用意してもよい。
【0078】
シミュレータ434は、制御装置100をエミュレートすることもでき、生成されたプログラム(IECプログラム1104、ロボットプログラム1106、実行順序管理プログラム1108)を参照して、プログラムによる装置や機構の動作を再現することもできる。
【0079】
<D.生成手順例>
次に、本実施の形態に係るサポート装置400を用いたプログラムの生成手順の一例について説明する。
【0080】
図8は、本実施の形態に係るサポート装置400を用いて仮想空間上で作成した対象装置の一例を示す模式図である。図8を参照して、ユーザは、サポート装置400が提供する仮想空間450上で任意の対象装置を仮想的に作成できる。図8には、ロボットと、ロボットを駆動するためのロボットスライダと、2つのスライダとを含む対象装置の例を示す。現実には、ロボットスライダおよび2つのスライダの各々は、モータ300およびモータドライバ350(図2参照)により駆動される。また、ロボットは、ロボットコントローラ250(図2参照)により制御される。
【0081】
ロボットスライダおよび2つのスライダの各々の制御には、IECプログラム1104(図3参照)が用いられ、ロボットの制御には、ロボットプログラム1106(図3参照)が用いられる。本実施の形態に係るサポート装置400は、ユーザが後述するような操作を行うことで、IECプログラム1104およびロボットプログラム1106を生成する。
【0082】
先に、図8に示される制御装置に動作について説明する。スライダ1は、3枚のパレットを搭載できる3段の棚が形成された移動トレイ1を所定方向に沿って移動させる。初期状態において、移動トレイ1には、空のパレット(ワークが置載されていないパレット)が格納されている。ロボットは、移動トレイ1から空のパレットをピックし、作業エリアにプレイスする。作業後には、ワークが置載されたパレットをロボットが移動トレイ1に戻す。
【0083】
スライダ2は、ワークを供給する移動トレイ2を所定方向に沿って移動させる。初期状態において、移動トレイ2には、ワークが置載されており、ロボットが移動トレイ2からワークをピックする。
【0084】
ロボットスライダは、スライダ1、作業エリア、スライダ2にロボットを移動させる。ロボットは、作業エリアにおいて、空のパレットにワークを置載する。すなわち、ロボットは、以下の動作を行う。
【0085】
(1)スライダ1の移動トレイ1の棚にある空のパレットを先端のアームでピックして、作業エリアにプレイスする
(2)スライダ2の移動トレイ2に配置されたワークを先端の吸着機構でピックして、作業エリアにあるパレット上にプレイスする
(3)作業エリアにあるパレットをピックして、スライダ1の移動トレイ1の棚にプレイスする
以下、上述したような処理を実現するための操作手順の一例について説明する。
【0086】
図9は、図8に示す対象装置の第1番目の動作を設定するための手順例を説明するための図である。図9を参照して、第1番目の動作として、ロボットが移動トレイ1からパレットをピックするために、移動トレイ1をロボットの近傍に移動する動作を設定する。
【0087】
より具体的には、ユーザは、スライダ1の移動開始位置および移動終了位置をマウス操作などで指定する。なお、仮想空間450においては、移動トレイ1の位置を任意に変更でき、ユーザは、サポート装置400上で動きおよび位置を確認できる。
【0088】
ユーザは、仮想空間450上で、マウス操作により移動トレイ1を選択して移動させることで、スライダ1の移動開始位置および移動終了位置を指定してもよいし、キーボード操作で対応するパラメータを入力あるいは変更することで、スライダ1の移動開始位置および移動終了位置を指定してもよい。
【0089】
図10は、図8に示す対象装置の第2番目の動作を設定するための手順例を説明するための図である。図10を参照して、第2番目の動作として、ロボットが移動トレイ1からパレットをピックするために、ロボットスライダでロボットを移動トレイ1の近傍に移動する動作を設定する。
【0090】
より具体的には、ユーザは、ロボットスライダの移動開始位置および移動終了位置をマウス操作などで指定する。なお、仮想空間450においては、ロボットの位置を任意に変更でき、ユーザは、サポート装置400上で動きおよび位置を確認できる。
【0091】
ユーザは、仮想空間450上で、マウス操作によりロボットを選択して移動させることで、ロボットスライダの移動開始位置および移動終了位置を指定してもよいし、キーボード操作で対応するパラメータを入力あるいは変更することで、ロボットスライダの移動開始位置および移動終了位置を指定してもよい。
【0092】
図11は、図8に示す対象装置の第3番目の動作を設定するための手順例を説明するための図である。図11を参照して、第3番目の動作として、ロボットが移動トレイ1からパレットをピックするために、ロボット先端のアームの軌跡を設定(ロボットをティーチング)する。
【0093】
より具体的には、ユーザは、ロボット先端のアームの軌跡をマウス操作などで指定する。あるいは、ユーザは、キーボード操作で対応するパラメータを入力あるいは変更することで、ロボット先端のアームの軌跡を指定してもよい。さらにあるいは、サポート装置400の表示部428上にティーチングペンダントのオブジェクトを表示して、ユーザが表示されたティーチングペンダントのオブジェクトに対して操作を行うことで、ロボット先端のアームの軌跡を指定してもよい。
【0094】
図12は、図8に示す対象装置の第4番目の動作を設定するための手順例を説明するための図である。図12を参照して、第4番目の動作として、ロボットが移動トレイ1からピックしたパレットを作業エリアにプレイスするために、ロボットスライダでロボットを作業エリアの近傍に移動する動作を設定する。
【0095】
より具体的には、ユーザは、ロボットスライダの移動開始位置および移動終了位置をマウス操作などで指定する。なお、仮想空間450においては、ロボットの位置を任意に変更でき、ユーザは、サポート装置400上で動きおよび位置を確認できる。
【0096】
ユーザは、仮想空間450上で、マウス操作によりロボットを選択して移動させることで、ロボットスライダの移動開始位置および移動終了位置を指定してもよいし、キーボード操作で対応するパラメータを入力あるいは変更することで、ロボットスライダの移動開始位置および移動終了位置を指定してもよい。
【0097】
図13は、図8に示す対象装置の第5番目の動作を設定するための手順例を説明するための図である。図13を参照して、第5番目の動作として、ロボットが移動トレイ1からピックしたパレットを作業エリアにプレイスするために、ロボット先端のアームの軌跡を設定する。
【0098】
より具体的には、ユーザは、ロボット先端のアームの軌跡をマウス操作などで指定する。あるいは、ユーザは、キーボード操作で対応するパラメータを入力あるいは変更することで、ロボット先端のアームの軌跡を指定してもよい。さらにあるいは、サポート装置400の表示部428上にティーチングペンダントのオブジェクトを表示して、ユーザが表示されたティーチングペンダントのオブジェクトに対して操作を行うことで、ロボット先端のアームの軌跡を指定してもよい。
【0099】
以下同様の手順で、対象装置の動作が順次設定される。より具体的には、第6番目の動作として、ロボットが移動トレイ2からワークをピックするために、移動トレイ2をロボットの近傍に移動する動作を設定する。第7番目の動作として、ロボットが移動トレイ2からワークをピックするために、ロボットスライダでロボットを移動トレイ2の近傍に移動する動作を設定する。第8番目の動作として、ロボットが移動トレイ2からワークをピックするために、ロボット先端のアームの軌跡を設定する。第9番目の動作として、ロボットが移動トレイ2からピックしたワークを作業エリアにあるパレットにプレイスするために、ロボットスライダでロボットを作業エリアの近傍に移動する動作を設定する。第10番目の動作として、ロボットが移動トレイ2からピックしたワークを作業エリアにあるパレットにプレイスするために、ロボット先端のアームの軌跡を設定する。さらに、ワークがプレイスされたパレットを移動トレイ1に移動するための動作が設定される。
【0100】
以上のような手順で、ユーザは、対象装置での動作を要素ごとに規定する。サポート装置400は、ユーザによる操作手順に応じて、動作定義460を生成する。
【0101】
図14は、本実施の形態に係るサポート装置400が生成した動作定義460の一例を示す図である。なお、説明の簡素化のため、以下においては、第1番目から第5番目までの動作に注目して説明する。
【0102】
図14を参照して、動作定義460は、動作の順序を示す順序欄461と、動作対象を示す動作対象欄462と、機構種別を示す機構種別欄463と、動作内容を示す動作内容欄464とを含む。
【0103】
順序欄461には、ユーザにより設定された順序を示す番号が格納される。順序欄461に格納された番号ごとに、動作対象欄462に動作対象が定義され、機構種別欄463に機構種別が定義され、動作内容欄464に動作内容が定義される。
【0104】
図14に示す例では、機構種別欄463には、「スライダ」および/または「ロボット」が格納される。基本的には、「スライダ」が格納された動作については、IECプログラム1104により実現され、「ロボット」が格納された動作については、ロボットプログラム1106により実現される。
【0105】
対応する動作対象および動作内容に応じて、IECプログラム1104およびロボットプログラム1106のコードが生成される。
【0106】
図15は、図14に示される動作定義460に従って生成されたIECプログラム1104の一例を示す。図16は、図14に示される動作定義460に従って生成されたロボットプログラム1106の一例を示す。
【0107】
図15に示されるIECプログラム1104は、初期化処理を実現するための命令に加えて、第1番目、第2番目および第4番目の動作に対応する命令が記述される。図15に示す例では、スライダの移動(位置制御)は、モーション命令(MC_MoveAbsolute)が用いられているが、スライダではなく回転機構などに適用する場合には、異なるモーション命令が用いられてもよい。
【0108】
図16に示されるロボットプログラム1106は、第3番目および第5番目の動作に対応する命令が記述される。
【0109】
このように、サポート装置400は、ユーザが仮想空間450上で指定した動作に応じて、IECプログラム1104およびロボットプログラム1106を自動的に生成する。なお、IECプログラム1104とロボットプログラム1106との間で、処理の動作順序およびインターロックを実現するために、実行順序管理プログラムが生成されてもよい。
【0110】
図17は、図14に示される動作定義460に従って生成された実行順序管理プログラム1108の一例を示す。図17を参照して、実行順序管理プログラム1108は、IECプログラム1104およびロボットプログラム1106が共通に参照することのできる変数Index(フラグ)を順次更新(インクリメント)するための命令を含む。変数Indexを順次更新するとともに、変数Indexを各動作の実行条件とすることで、IECプログラム1104とロボットプログラム1106との間で処理を同期させることもできる。
【0111】
このように、IECプログラム1104とロボットプログラム1106との間の実行順序を規定する情報の一例である実行順序管理プログラム1108は、IECプログラム1104およびロボットプログラム1106が参照する値を更新する命令を含む。
【0112】
なお、実行順序管理プログラム1108を生成する代わりに、IECプログラム1104およびロボットプログラム1106の実行順序を記述するテーブルや任意の定義を生成するようにしてもよい。すなわち、IECプログラム1104とロボットプログラム1106との間の実行順序を規定する情報の別の一例として、IECプログラム1104およびロボットプログラム1106を実行するタイミングを規定するテーブルであってもよい。
【0113】
<E.動作定義の修正/変更>
サポート装置400は、図14に示される動作定義460に基づいて、IECプログラム1104およびロボットプログラム1106を自動的に生成可能であるが、ユーザは、一種の中間データである動作定義460を修正あるいは変更することもできる。
【0114】
例えば、ユーザは、仮想空間450上において、対象装置に含まれる機構およびロボットの動作および動作手順を指定した後、生成された動作定義460を参照して、動作の妥当性などを評価することができる。ユーザは、必要に応じて、動作定義460に規定される移動距離、目標座標、速度などの値を変更することができる。なお、変更された動作定義460に基づいて、仮想空間450上のシミュレーションを行うことも可能であり、シミュレーションにより動作の妥当性を確認できる。
【0115】
図18は、図14に示される動作定義460に対してユーザが修正あるいは変更を行った一例を示す図である。図18を参照して、例えば、第2番目の動作については、第1番目の動作と競合することはないので、2つの動作を並列的に実行するように変更されている。
【0116】
また、元の第4番目の動作については、仮想空間450上のシミュレーションにより、移動距離の修正が必要であると判断されて、移動距離の値が変更されている。同様に、元の第5番目の動作については、より滑らかな軌跡となるように、通過するポイントが追加されるという経路の見直しが行われている。
【0117】
このように、サポート装置400は、動作定義460に対するユーザによる変更を受け付ける受付部を有していてもよい。
【0118】
本実施の形態に係るサポート装置400によれば、動作定義460に記述された理解できる数値を修正あるいは変更するだけで、新たなIECプログラム1104およびロボットプログラム1106が自動的に生成される。これによって、IECプログラム1104およびロボットプログラム1106をプログラミングすることができない装置設計者などであっても、装置全体の動作の指定および指定した動作の確認などを容易に行うことができる。
【0119】
<F.処理手順>
次に、本実施の形態に係るサポート装置400によるプログラム生成に係る処理手順の一例について説明する。
【0120】
図19は、本実施の形態に係るサポート装置400によるプログラム生成に係る処理手順を示すフローチャートである。図19に示す各ステップは、典型的には、サポート装置400のプロセッサ402が開発プログラム414を実行することで実現される。
【0121】
図19を参照して、サポート装置400は、ユーザによる対象装置の設定を受け付ける(ステップS100)。そして、サポート装置400は、対象装置を仮想空間上で仮想的に表現する(ステップS102)。なお、サポート装置400は、装置設定470(図7)の形で外部からデータを読み込んでもよい。
【0122】
続いて、サポート装置400は、ユーザによる設定操作を受け付けて(ステップS104)、動作定義460を順次生成する(ステップS106)。すなわち、サポート装置400は、ユーザによる対象装置の動作内容の指定を取得する。そして、サポート装置400は、ユーザによる設定操作が終了したか否かを判断する(ステップS108)。ユーザによる設定操作が終了していなければ(ステップS108においてNO)、ステップS102以下の処理が繰り返される。
【0123】
ユーザによる設定操作が終了していれば(ステップS108においてYES)、サポート装置400は、ユーザによる動作定義460の表示が要求されたか否かを判断する(ステップS110)。
【0124】
ユーザによる動作定義460の表示が要求されると(ステップS110においてYES)、サポート装置400は、生成した動作定義460を表示し(ステップS112)、ユーザによる修正または変更の操作を受け付け(ステップS114)、受け付けた内容に従って、動作定義460を変更する(ステップS116)。
【0125】
ユーザによる動作定義460の表示が要求されていなければ(ステップS110においてNO)、ステップS112~S116の処理はスキップされる。
【0126】
次に、サポート装置400は、ユーザによるプログラム生成が要求されたか否かを判断する(ステップS118)。ユーザによるプログラム生成が要求されると(ステップS118においてYES)、サポート装置400は、指定された動作内容を記述した動作定義460に基づいて、IECプログラム1104、ロボットプログラム1106および実行順序管理プログラム1108を生成する(ステップS120)。
【0127】
以上により、サポート装置400によるプログラム生成に係る処理は終了する。なお、生成されたプログラム(IECプログラム1104、ロボットプログラム1106および実行順序管理プログラム1108)は、ユーザ操作に応じて、サポート装置400から制御装置100へ転送される。
【0128】
<G.付加機能>
上述したように、装置設定470については、CADデータなどの設計データから自動的に生成するような機能を実装してもよい。この場合、対象となるワークの形状などについても、CADデータから自動的に生成するようにしてもよい。
【0129】
このようなCADデータを利用できる場合には、機構およびロボットが移動する方向や面を規定するようにしてもよい。例えば、XYZステージなどの機構およびロボットを含む製造装置においては、XYZステージのXY面を基準として、ロボットの軌跡を設定できるようにしてもよい。より具体的には、ロボットはXY面に平行にのみ動作するように制限し、その動作制限に応じて、ユーザによる設定の入力を支援するようにしてもよい。このようなユーザ設定に対して制限を行うことで、ユーザはより容易に動作の設定を行うことができる。さらに、機構とロボットとの間で同期したより正確な制御を実現できる。
【0130】
このように、サポート装置400は、CADデータなどの対象装置の設計データから仮想空間上で対象装置を仮想的に表現するための情報(装置設定470)を生成する生成機能を有していてもよい。
【0131】
また、ワークの対象となる面(例えば、ある傾きをもった一面を塗装するなど)に沿って、ロボットを移動させるようなプログラムの生成を容易に行うことができる。なお、ロボットをある傾きをもった面に沿って移動させる場合には、公知の座標変換を行うロジックを適用することが好ましい。
【0132】
また、上述したようなワークの対象となる面は、CADデータではなく、仮想空間におけるオブジェクトの座標群から特定してもよい。例えば、ワークの露出面については、対応する座標群が算出される。そのため、算出される座標群を補間することで、露出面を特定できる。
【0133】
上述したように、本実施の形態に係るサポート装置400は、生成されたプログラムに従うシミュレーションも可能となっている。このようなシミュレーションの結果は、仮想空間上にレンダリング(再現)されるため、ユーザは、再現された機構やロボットの動作を参照しながら、生成されたプログラムの妥当性を事前に確認できる。
【0134】
<H.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
対象装置を仮想空間(450)上で仮想的に表現する描画部(430)と、
ユーザによる前記対象装置の動作内容の指定を取得する取得部(432)と、
前記指定された動作内容に基づいて、IECプログラム(1104)およびロボットプログラム(1106)を生成するプログラム生成部(436,438,440)とを備える、プログラム生成装置。
[構成2]
前記取得部は、前記指定された動作内容を特定する動作定義(460)を生成する、構成1に記載のプログラム生成装置。
[構成3]
前記動作定義に対するユーザによる変更を受け付ける受付部をさらに備える、構成2に記載のプログラム生成装置。
[構成4]
前記プログラム生成部は、前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報(1108)をさらに生成する、構成1~3のいずれか1項に記載のプログラム生成装置。
[構成5]
前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報は、前記IECプログラムおよび前記ロボットプログラムが参照する値を更新する命令を含む、構成4に記載のプログラム生成装置。
[構成6]
前記IECプログラムと前記ロボットプログラムとの間の実行順序を規定する情報は、前記IECプログラムおよび前記ロボットプログラムを実行するタイミングを規定するテーブルを含む、構成4または5に記載のプログラム生成装置。
[構成7]
前記対象装置の設計データから前記仮想空間上で前記対象装置を仮想的に表現するための情報を生成する生成部をさらに備える、構成1~6のいずれか1項に記載のプログラム生成装置。
[構成8]
前記IECプログラムおよび前記ロボットプログラムに基づいて、前記対象装置の動作を再現するシミュレータ(434)をさらに備える、構成1~7のいずれか1項に記載のプログラム生成装置。
[構成9]
コンピュータ(400)に、
対象装置を仮想空間上で仮想的に表現するステップ(S102)と、
ユーザによる前記対象装置の動作内容の指定を取得するステップ(S106)と、
前記指定された動作内容に基づいて、IECプログラムおよびロボットプログラムを生成するステップ(S120)とを実行させる、プログラム生成プログラム。
[構成10]
対象装置を仮想空間上で仮想的に表現するステップ(S102)と、
ユーザによる前記対象装置の動作内容の指定を取得するステップ(S106)と、
前記指定された動作内容に基づいて、IECプログラムおよびロボットプログラムを生成するステップ(S120)とを備える、プログラム生成方法。
【0135】
<I.利点>
本実施の形態に係る制御システム1によれば、ユーザは、仮想空間上で対象装置の動作内容を指定するだけで、対象装置を実環境で動作させるためのIECプログラムおよびロボットプログラムを生成できるので、プログラムの生成に関する知識が乏しいユーザであっても、動作に必要なプログラムを生成できる。
【0136】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0137】
1 制御システム、10 フィールドネットワーク、20 上位ネットワーク、100 制御装置、102,262,362,402 プロセッサ、104,264,364,404 メインメモリ、106 上位ネットワークコントローラ、108,252,352 フィールドネットワークコントローラ、110,270,370,410 ストレージ、112 メモリカードインターフェイス、114 メモリカード、116 ローカルバスコントローラ、118 プロセッサバス、120,424 USBコントローラ、122 ローカルバス、130 機能ユニット、200 ロボット、250 ロボットコントローラ、260,360 制御処理回路、268 インターフェイス回路、272,372,1102 システムプログラム、300 モータ、350 モータドライバ、380 ドライブ回路、400 サポート装置、406 光学ドライブ、407 記録媒体、408 バス、412 OS、414 開発プログラム、420 ネットワークコントローラ、426 入力部、428 表示部、430 描画エンジン、432 操作取得エンジン、434 シミュレータ、436 プログラム生成管理エンジン、438 生成エンジン、440 ロボットプログラム生成エンジン、450 仮想空間、460 動作定義、461 順序欄、462 動作対象欄、463 機構種別欄、464 動作内容欄、470 装置設定、500 表示装置、600 サーバ装置、1104 IECプログラム、1106 ロボットプログラム、1108 実行順序管理プログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19