JP2021144586A - ロボット制御システムおよび制御方法 - Google Patents

ロボット制御システムおよび制御方法 Download PDF

Info

Publication number
JP2021144586A
JP2021144586A JP2020044122A JP2020044122A JP2021144586A JP 2021144586 A JP2021144586 A JP 2021144586A JP 2020044122 A JP2020044122 A JP 2020044122A JP 2020044122 A JP2020044122 A JP 2020044122A JP 2021144586 A JP2021144586 A JP 2021144586A
Authority
JP
Japan
Prior art keywords
robot
control device
setting information
control
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020044122A
Other languages
English (en)
Inventor
エスクデロ ディエゴ
Escudero-Rodrigo Diego
エスクデロ ディエゴ
カルラス フェラン
Carlas Ferran
カルラス フェラン
ヴィト ラファエレ
Vito Raffaele
ヴィト ラファエレ
ペナルヴェル アントニオ
Penalver Antonio
ペナルヴェル アントニオ
フォルナス ダビド
Fornas David
フォルナス ダビド
嘉英 田村
Yoshihide Tamura
嘉英 田村
拓 大谷
Hiroshi Otani
拓 大谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2020044122A priority Critical patent/JP2021144586A/ja
Priority to PCT/JP2020/047234 priority patent/WO2021181798A1/ja
Publication of JP2021144586A publication Critical patent/JP2021144586A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】1または複数のロボットを含む生産設備に適したロボット制御システムを提供する。【解決手段】ロボット制御システム1は、第1の制御装置100と、第1の制御装置とネットワーク接続され、ロボットを制御するための第2の制御装置250とを含む。第1の制御装置は、第2の制御装置が制御するロボットに関する設定情報2704を格納する記憶部と、ロボットプログラム1108を実行することで、第2の制御装置に与えるコマンドを順次生成するコマンド生成部152と、設定情報および順次生成されるコマンドを第2の制御装置へ送信する通信部50とを含む。第2の制御装置は、第1の制御装置からのコマンドに従って、第1の制御装置から予め送信された設定情報を参照して、ロボットの各軸を駆動するための指令値を順次生成する指令値生成部290を含む。【選択図】図1

Description

本技術は、ロボット制御システムおよび制御方法に関する。
従来より、FA(Factory Automation)分野においては、ロボットが様々なアプリケーションに用いられている。
一般的に、ロボットの制御には、所定のプログラミング言語で記述されたプログラムが用いられる。ロボットの制御をより簡素化する観点として、例えば、特開2018−196908号公報(特許文献1)は、ロボット言語を習得することなく、ロボットを使用した自動化設備を低コストで構築する構成を開示する。
特開2018−196908号公報
上述の先行技術文献に示される構成は、単に、ロボット言語により記述されたプログラムを作成するのではなく、ロボットコントローラに対するパラメータを入力することで、ロボットの動作を制御することで、構築コストを低減するものである。
しかしながら、実際の生産設備においては、複数のロボットが配置されることも多い。上述の先行技術文献に示される構成は、複数のロボットが配置される場合については、何ら想定していない。さらに、実際の生産設備は、ロボットだけではなく、様々な装置や機械が組み合わせられる。
本技術は、1または複数のロボットを含む生産設備に適したロボット制御システムを提供することを目的とする。
本技術のある実施の形態に係るロボット制御システムは、第1の制御装置と、第1の制御装置とネットワーク接続され、ロボットを制御するための第2の制御装置とを含む。第1の制御装置は、第2の制御装置が制御するロボットに関する設定情報を格納する記憶部と、ロボットプログラムを実行することで、第2の制御装置に与えるコマンドを順次生成するコマンド生成部と、設定情報および順次生成されるコマンドを第2の制御装置へ送信する通信部とを含む。第2の制御装置は、第1の制御装置からのコマンドに従って、第1の制御装置から予め送信された設定情報を参照して、ロボットの各軸を駆動するための指令値を順次生成する指令値生成部を含む。
この構成によれば、第2の制御装置が指令値を生成するのに必要な設定情報が第1の制御装置から提供されるので、第1の制御装置と第2の制御装置との連係したロボットの制御を確実に実現できる。
第1の制御装置は、予め定められた条件が満たされると、設定情報を第2の制御装置へ送信するようにしてもよい。この構成によれば、設定情報の送信が必要な場合に、設定情報を送信できる。
予め定められた条件は、第1の制御装置が起動したことを含んでいてもよい。この構成によれば、第1の制御装置が起動すると、設定情報を第2の制御装置へ確実に送信できる。
予め定められた条件は、第2の制御装置が第1の制御装置とネットワーク接続されることを含んでいてもよい。この構成によれば、第2の制御装置が第1の制御装置とネットワーク接続されると、設定情報を第2の制御装置へ確実に送信できる。
第1の制御装置は、第1の制御装置に接続された外部装置からの指令に従って、設定情報を第2の制御装置へ送信するようにしてもよい。この構成によれば、外部装置からの指令を受けると、設定情報を第2の制御装置へ確実に送信できる。
第1の制御装置は、第2の制御装置に予め設定情報が格納されていても、第1の制御装置の記憶部に格納されている設定情報を第2の制御装置へ送信するようにしてもよい。この構成によれば、第2の制御装置に予め格納されている設定情報の適否を評価することなく、適切な設定情報を第2の制御装置に提供できる。
第1の制御装置は、第2の制御装置に予め格納されている設定情報と第2の制御装置に格納されるべき設定情報との差分を、第2の制御装置へ送信するようにしてもよい。この構成によれば、第1の制御装置から第2の制御装置へ送信する情報のデータ量を低減できる。
ロボット制御システムは、第2の制御装置を複数含んでいてもよい。第1の制御装置の記憶部は、複数の第2の制御装置毎に設定情報を格納していてもよい。この構成によれば、複数の第2の制御装置がネットワーク接続されていても、第2の制御装置の各々に対して、適切な設定情報を提供できる。
本技術のある実施の形態に係る制御方法は、第1の制御装置と、第1の制御装置とネットワーク接続され、ロボットを制御するための第2の制御装置とを含むロボット制御システムに向けられる。制御方法は、第1の制御装置が、第2の制御装置が制御するロボットに関する設定情報を第2の制御装置へ送信するステップと、第1の制御装置が、ロボットプログラムを実行することで、第2の制御装置に与えるコマンドを順次生成するステップと、第1の制御装置が、設定情報および順次生成されるコマンドを第2の制御装置へ送信するステップと、第2の制御装置が、第1の制御装置からのコマンドに従って、設定情報を参照して、ロボットの各軸を駆動するための指令値を順次生成するステップとを含む。
本技術によれば、1または複数のロボットを含む生産設備に適したロボット制御システムを実現できる。
本実施の形態に係るロボット制御システムの概略を示す模式図である。 本実施の形態に係るロボット制御システムの構成例を示す模式図である。 本実施の形態に係るロボット制御システムを構成する制御装置のハードウェア構成例を示す模式図である。 本実施の形態に係るロボット制御システムを構成するロボットのハードウェア構成例を示す模式図である。 本実施の形態に係るロボット制御システムを構成するロボットの別のハードウェア構成例を示す模式図である。 本実施の形態に係るロボット制御システムを構成する操作ペンダントのハードウェア構成例を示す模式図である。 本実施の形態に係るロボット制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。 本実施の形態に係るロボット制御システムにおけるロボットの挙動を制御するための機能構成の一例を示す模式図である。 本実施の形態に係るロボット制御システムを構成する制御装置で実行されるIECプログラムおよびロボットプログラムの一例を示す図である。 本実施の形態に係るロボット制御システムを構成する制御装置におけるプログラムの実行例を示すタイムチャートである。 本実施の形態に係るロボット制御システムにおける初期状態でのデータ処理を概略する模式図である。 本実施の形態に係るロボット制御システムにおける運転状態でのデータ処理を概略する模式図である。 本実施の形態に係るロボット制御システムにおいて利用される設定情報の一例を示す図である。 本実施の形態に係るロボット制御システムにおいて利用される設定情報の別の一例を示す図である。 本実施の形態に係るロボット制御システムにおける送信条件の一例を示す図である。 本実施の形態に係るロボット制御システムにおける送信条件の別の一例を示す図である。 本実施の形態に係るロボット制御システムにおける送信条件のさらに別の一例を示す図である。 本実施の形態に係るロボット制御システムにおける設定情報の送信処理を示すシーケンス図である。 本実施の形態に係るロボット制御システムを構成する制御装置における動作中の処理手順を示すフローチャートである。 本実施の形態に係るロボット制御システムを構成するロボットコントローラにおける動作中の処理手順を示すフローチャートである。
本技術の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.適用例>
まず、本技術が適用される場面の一例について説明する。図1は、本実施の形態に係るロボット制御システム1の概略を示す模式図である。
図1を参照して、ロボット制御システム1は、制御装置100(第1の制御装置)と、制御装置100とフィールドネットワーク20を介してネットワーク接続され、ロボット200を制御するためのロボットコントローラ250(第2の制御装置)とを含む。なお、制御装置100には、複数のロボットコントローラ250が接続されてもよい。
以下の説明では、主としてロボット200を制御するロボット制御システム1の構成例を示すが、ロボット制御システム1の制御対象はロボット200に限られるものではない。例えば、制御装置100は、ロボット200に加えて、ロボット200を含む生産設備を構成する様々な装置や機械を制御することができる。さらに、制御装置100は、ロボット200の動作を監視するセーフティコントローラと連係してもよい。すなわち、本明細書において、「ロボット制御システム」との用語は、ロボットを制御する機能を有しているシステムという意味で用いられ、ロボット以外を制御することを排除するものではない。
制御装置100は、ロボットコントローラ250が制御するロボット200に関する設定情報2704を格納するストレージ110(記憶部)を有している。ストレージ110には、ロボットプログラム1108も格納されていてもよい。ロボットプログラム1108は、ロボットプログラム実行エンジン152(コマンド生成部)に与えられる。ロボットプログラム実行エンジン152は、ロボットプログラム1108を実行することで、ロボットコントローラ250に与えるコマンド158を順次生成する。
制御装置100は、設定情報2704および順次生成されるコマンド158をロボットコントローラ250へ送信する通信部50(後述する、フィールドネットワークコントローラ108、通信制御モジュール160、通信ドライバ162などで構成)を有している。
ロボットコントローラ250は、制御装置100からのコマンド158に従って、制御装置100から予め送信された設定情報2704を参照して、ロボットの各軸を駆動するための指令値を順次生成する指令値生成モジュール290(指令値生成部)を有している。
なお、ロボット200の軸は、関節(ジョイント)を構成することもあるので、以下の説明では、ロボット200の「軸または関節」とも称す。すなわち、本明細書において、ロボット200の「軸」との用語は、軸および関節を含む意味で用いられる。
本実施の形態に係るロボット制御システム1においては、制御装置100とロボットコントローラ250とが連係してロボット200の挙動を制御する。このような構成を採用するにあたって、制御装置100からコマンド158を送信する前に、コマンド158の送信先であるロボットコントローラ250に対して、ロボットコントローラ250が制御するロボット200に関する設定情報2704を送信する。これによって、制御装置100とロボットコントローラ250とが連係したロボット200の制御を確実に実現できる。
また、本実施の形態に係るロボット制御システム1に係る構成を採用することで、処理負荷を分散させることができる。その結果、制御装置100の処理能力が高くなくても、複数のロボット200の挙動を制御できる。また、ロボット200の挙動を制御するために要求される制御装置100のリソースを相対的に小さくできるので、制御装置100において、ロボット200の挙動に係る処理だけではなく、別の処理を実行させることができ、システムの拡張性を高めることができる。
<B.システム構成例>
次に、本実施の形態に係るロボット制御システム1の構成例について説明する。
図2は、本実施の形態に係るロボット制御システム1の構成例を示す模式図である。図2を参照して、本実施の形態に係るロボット制御システム1は、制御装置100と、フィールドネットワーク20を介して制御装置100と接続された、1または複数のロボット200を含む。
ロボット200の各々は、ロボットコントローラ250により挙動が制御される。ロボットコントローラ250は、制御装置100とネットワーク接続され、ロボット200を制御する。より具体的には、ロボットコントローラ250は、制御装置100からの指令(後述するコマンド158)に従って、ロボット200を制御するための指令値を出力する。ロボット200としては、アプリケーションに応じて任意に作成される1または複数の軸または関節を有するカスタムロボット200Aが用いられてもよい。さらに、ロボット200としては、水平多関節(スカラ)ロボット、垂直多関節ロボット、パラレルリンクロボット、直交ロボットなどの任意の汎用ロボット200Bが用いられてもよい。
フィールドネットワーク20には、I/Oユニット、セーフティI/Oユニット、セーフティコントローラなどの任意のデバイスが接続されてもよい。図2に示す構成例においては、フィールドネットワーク20には、ロボット200を操作するための操作ペンダント300が接続されている。
フィールドネットワーク20には、産業用ネットワーク用のプロトコルである、EtherCAT(登録商標)やEtherNet/IPなどを用いることができる。
制御装置100は、上位ネットワーク12を介して、サポート装置400と、表示装置500と、サーバ装置600とに接続されてもよい。上位ネットワーク12には、産業用ネットワーク用のプロトコルであるやEtherNet/IPなどを用いることができる。
<C.ハードウェア構成例>
次に、図2に示すロボット制御システム1を構成する主要装置のハードウェア構成例について説明する。
(c1:制御装置100)
図3は、本実施の形態に係るロボット制御システム1を構成する制御装置100のハードウェア構成例を示す模式図である。図3を参照して、制御装置100は、プロセッサ102と、メインメモリ104と、ストレージ110と、メモリカードインターフェイス112と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116と、USB(Universal Serial Bus)インターフェイスを提供するUSBコントローラ120とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
プロセッサ102は、制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラムを読み出して、メインメモリ104に展開して実行することで、制御対象に対する制御演算を実現する。
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102、および、制御対象に応じて作成されたIECプログラム1104などが格納される。IECプログラム1104は、シーケンス命令および/またはモーション命令を含み得る。
本明細書において、「IECプログラム」は、一般的なPLC(プログラマブルロジックコントローラ)で実行される処理を規定するプログラムという意味で用いられる。典型的には、IECプログラムは、国際電気標準会議(IEC:International Electrotechnical Commission)が定めるIEC61131−3で規定されるいずれかの言語で記述されるプログラムを意味する。但し、IECプログラムは、IEC61131−3で規定される言語以外のメーカ独自言語で記述されるプログラムを包含し得る。
ストレージ110には、ロボット200の挙動を制御するためのロボットプログラム1108および設定情報1106がさらに格納されてもよい。ロボットプログラム1108は、後述するように、所定のプログラミング言語(例えば、V+言語などのロボット制御用プログラミング言語やGコードなどのNC制御に係るプログラミング言語)で記述されてもよい。設定情報1106は、IECプログラム1104およびロボットプログラム1108の実行に係る各種設定値を含む。
ストレージ110には、ロボットコントローラ250で利用される設定情報の集合である設定情報群2701がさらに格納されていてもよい。設定情報群2701を構成する設定情報は、ロボットコントローラ250が制御するロボット200に関するものであり、ロボット200についての各種パラメータを含む。後述するように、制御装置100は、予め定められた条件が成立すると、設定情報群2701のうち対応する設定情報をロボットコントローラ250へ送信する。
メモリカードインターフェイス112は、着脱可能な記憶媒体の一例であるメモリカード114を受け付ける。メモリカードインターフェイス112は、メモリカード114に対して任意のデータの読み書きが可能になっている。
上位ネットワークコントローラ106は、上位ネットワークを介して、任意の情報処理装置(図2に示されるサポート装置400、表示装置500、サーバ装置600など)との間でデータを遣り取りする。
フィールドネットワークコントローラ108は、フィールドネットワーク20を介して、ロボット200などの任意のデバイスとの間でデータを遣り取りする。図2に示すシステム構成例において、フィールドネットワークコントローラ108は、フィールドネットワーク20の通信マスタとして機能してもよい。
ローカルバスコントローラ116は、ローカルバス122を介して、制御装置100を構成する任意の機能ユニット130との間でデータを遣り取りする。機能ユニット130は、例えば、アナログ信号の入力および/または出力を担当するアナログI/Oユニット、デジタル信号の入力および/または出力を担当するデジタルI/Oユニット、エンコーダなどからのパルスを受け付けるカウンタユニットなどからなる。
USBコントローラ120は、USB接続を介して、任意の情報処理装置との間でデータを遣り取りする。
制御装置100が提供するロボット200の制御に係る機能については、後述する。
(c2:ロボット200およびロボットコントローラ250)
図4は、本実施の形態に係るロボット制御システム1を構成するロボット200のハードウェア構成例を示す模式図である。図4には、ロボット200としてカスタムロボット200Aを採用した場合の構成例を示す。
図4を参照して、カスタムロボット200Aは、ロボットコントローラ250に接続されている。なお、カスタムロボット200Aとロボットコントローラ250とは、一体的に構成されてもよいし、別体として構成されてもよい。
カスタムロボット200Aは、軸または関節の数に応じたドライブ回路220と、ドライブ回路220により駆動されるモータ230とを含む。ドライブ回路220の各々は、コンバータ回路およびインバータ回路などを含み、ロボットコントローラ250からの指令値に従って指定された電圧・電流・位相の電力を生成して、モータ230へ供給する。
モータ230の各々は、カスタムロボット200Aを構成するアーム部210のいずれかの軸または関節と機械的に結合されており、モータ230の回転によって対応する軸または関節を駆動するアクチュエータである。
モータ230としては、駆動するアーム部210に応じた特性のモータを採用できる。例えば、モータ230として、誘導型モータ、同期型モータ、永久磁石型モータ、リラクタンスモータのいずれを採用してもよいし、回転型だけではなく、リニアモータを採用してもよい。駆動対象のモータ230に応じたドライブ回路220が採用される。
ロボットコントローラ250は、フィールドネットワークコントローラ252と、制御処理回路260とを含む。
フィールドネットワークコントローラ252は、フィールドネットワーク20を介して、主として、制御装置100との間でデータを遣り取りする。
制御処理回路260は、カスタムロボット200Aを駆動するために必要な演算処理を実行する。一例として、制御処理回路260は、プロセッサ262と、メインメモリ266と、ストレージ270と、インターフェイス回路268とを含む。
プロセッサ262は、カスタムロボット200Aを駆動するための制御演算を実行する。メインメモリ266は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ270は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
ストレージ270には、ロボット200を駆動するための制御を実現するためのロボットシステムプログラム2702、および、ロボットコントローラ250での処理に必要な設定パラメータ群を含む設定情報2704が格納される。
インターフェイス回路268は、それぞれのドライブ回路220に対して、それぞれ指令値を与える。インターフェイス回路268とドライブ回路220との間は、ハードワイヤーで電気的に接続されていてもよいし、データリンクで接続されていてもよい。
図5は、本実施の形態に係るロボット制御システム1を構成するロボット200の別のハードウェア構成例を示す模式図である。図5には、ロボット200として汎用ロボット200Bを採用した場合の構成例を示す。
図5を参照して、汎用ロボット200Bは、1または複数のモータおよびドライブ回路(図示しない)が組み込まれており、汎用ロボット200Bの目標軌道が指示されると、指示された目標軌道に応じて1または複数のモータを駆動する。
図4に示すカスタムロボット200Aを駆動する場合には、軸または関節に対応するドライブ回路220に対してそれぞれ指令値を与える必要があるのに対して、図5に示す汎用ロボット200Bを駆動する場合には、汎用ロボット200Bの目標軌道を指示するだけでよい。
ロボットコントローラ250が提供するロボット200の制御に係る機能については、後述する。
(c3:操作ペンダント300)
図6は、本実施の形態に係るロボット制御システム1を構成する操作ペンダント300のハードウェア構成例を示す模式図である。図6を参照して、操作ペンダント300は、フィールドネットワークコントローラ352と、制御処理回路360と、操作キー群380とを含む。
フィールドネットワークコントローラ352は、フィールドネットワーク20を介して、主として、制御装置100との間でデータを遣り取りする。
制御処理回路360は、プロセッサ362と、メインメモリ366と、ファームウェア370と、インターフェイス回路368とを含む。
プロセッサ362は、ファームウェア370を実行することで、操作ペンダント300に必要な処理を実現する。メインメモリ366は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。
インターフェイス回路368は、操作キー群380との間で信号を遣り取りする。
操作キー群380は、ユーザ操作を受け付ける入力装置である。操作キー群380は、入力状態を示すインジケータなどを含んでいてもよい。
(c4:サポート装置400)
図7は、本実施の形態に係るロボット制御システム1を構成するサポート装置400のハードウェア構成例を示す模式図である。サポート装置400は、一例として、汎用パソコンを用いて実現されてもよい。
図7を参照して、サポート装置400は、プロセッサ402と、メインメモリ404と、入力部406と、表示部408と、ストレージ410と、光学ドライブ412と、USBコントローラ420と、通信コントローラ422とを含む。これらのコンポーネントは、プロセッサバス418を介して接続されている。
プロセッサ402は、CPUやGPUなどで構成され、ストレージ410に格納されたプログラム(一例として、OS4102および開発プログラム4104)を読み出して、メインメモリ404に展開して実行することで、サポート装置400に必要な各種機能を実現する。
メインメモリ404は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ410は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
ストレージ410には、基本的な機能を実現するためのOS4102、および、開発環境を実現するための開発プログラム4104などが格納される。開発環境においては、制御装置100で実行されるプログラムの作成、プログラムのデバッグ、制御装置100の動作に係る設定、制御装置100に接続されるデバイスの動作に対する設定、フィールドネットワーク20に関する設定などが可能になっている。
入力部406は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部408は、ディスプレイや各種インジケータなどで構成され、プロセッサ402による処理結果などを表示する。
USBコントローラ420は、USB接続を介して、制御装置100などとの間のデータを遣り取りする。通信コントローラ422は、上位ネットワーク12を介して、任意の情報処理装置との間でデータを遣り取りする。
サポート装置400は、光学ドライブ412を有しており、コンピュータ読み取り可能なプログラムを非一過的に格納する記憶媒体414(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)から、その中に格納されたプログラムが読み取られてストレージ410などにインストールされる。
サポート装置400で実行される開発プログラム4104などは、コンピュータ読み取り可能な記憶媒体414を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置400が提供する機能は、OS4102が提供するモジュールの一部を利用する形で実現される場合もある。
なお、ロボット制御システム1の稼動中において、サポート装置400は、制御装置100から取り外されていてもよい。
(c5:表示装置500)
本実施の形態に係るロボット制御システム1を構成する表示装置500は、一例として、汎用パソコンを用いて実現されてもよい。表示装置500の基本的なハードウェア構成例は、図7に示すサポート装置400のハードウェア構成例と同様であるので、ここでは詳細な説明は行わない。
(c6:サーバ装置600)
本実施の形態に係るロボット制御システム1を構成するサーバ装置600は、一例として汎用パソコンを用いて実現されてもよい。サーバ装置600の基本的なハードウェア構成例は、図7に示すサポート装置400のハードウェア構成例と同様であるので、ここでは詳細な説明は行わない。
(c7:その他の形態)
図3〜図7には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。さらに、制御装置100にサポート装置400や表示装置500などの機能を統合した構成を採用してもよい。
<D.機能構成例>
ロボット200を制御するための機能構成の一例について説明する。
図8は、本実施の形態に係るロボット制御システム1におけるロボット200の挙動を制御するための機能構成の一例を示す模式図である。図8を参照して、制御装置100と1または複数のロボットコントローラ250との間で、ロボット200を制御するためのコマンド158などが遣り取りされる。
制御装置100は、IECプログラム実行エンジン150と、ロボットプログラム実行エンジン152と、通信制御モジュール160と、通信ドライバ162と、外部通信インターフェイス164とを含む。これらのエレメントは、典型的には、制御装置100のプロセッサ102がシステムプログラム1102を実行することで実現してもよい。
IECプログラム実行エンジン150は、IECプログラム1104を実行することで、ロボットコントローラ250に与える出力値を周期的に生成する。より具体的には、IECプログラム実行エンジン150は、IECプログラム1104を所定の制御周期毎にサイクリック実行する。制御装置100の制御周期としては、典型的には、数百μsec〜数100msec程度が想定される。IECプログラム実行エンジン150は、IECプログラム1104の実行に従って、内部コマンド(例えば、コマンド158の送信開始および送信停止など)をロボットプログラム実行エンジン152へ出力し、および/または、ロボットプログラム実行エンジン152から状態値(例えば、ロボットプログラム実行エンジン152が実行しているロボットプログラム1108の状態など)を取得する。
ロボットプログラム実行エンジン152は、ロボットプログラム1108を実行することで、ロボットコントローラ250に与えるコマンド158を順次生成する。順次生成されるコマンド158は、ロボット200の挙動を指示する。このように、ロボットプログラム実行エンジン152は、ロボットプログラム1108を逐次実行して、1または複数のロボットコントローラ250に対して、ロボット200を制御するためのコマンド158を送信する。より具体的には、ロボットプログラム実行エンジン152は、ロボットプログラム解釈モジュール154と、コマンド生成モジュール156とを含む。
ロボットプログラム解釈モジュール154は、ロボットプログラム1108を順次読み込んでパースし、パースにより得られた内部コマンドをコマンド生成モジュール156へ出力する。ロボットプログラム解釈モジュール154は、ロボットプログラム1108に含まれるプログラミング言語により記述されたロボット200の挙動に係る命令に加えて、信号の入出力、ファイルアクセスおよび通信に係る命令も解釈できる。
ロボットプログラム解釈モジュール154によるロボットプログラム1108の読み込み開始や停止などは、コマンド生成モジュール156により制御されてもよい。
コマンド生成モジュール156は、ロボットプログラム解釈モジュール154からの内部コマンドに従って、ロボットコントローラ250の各々に対するコマンド158を生成する。
コマンド生成モジュール156は、接続されている1または複数のロボットコントローラ250のホストとして機能する。より具体的には、コマンド生成モジュール156は、IECプログラム実行エンジン150との間で遣り取りされる内部コマンド、および/または、外部通信インターフェイス164を介してサポート装置400との間で遣り取りされる内部コマンドに応じて、ロボットプログラム解釈モジュール154でのロボットプログラム1108の実行の開始および停止を制御するとともに、ロボットコントローラ250に対するコマンド158の生成の開始および停止を制御する。
コマンド生成モジュール156は、ロボットコントローラ250から状態値およびエラーなどの情報を収集するようにしてもよい。
説明の便宜上、ロボットプログラム解釈モジュール154と、コマンド生成モジュール156とを分離した構成例を示すが、これらのモジュールを分離することなく、一体的に実装してもよい。
通信制御モジュール160および通信ドライバ162は、設定情報2704および順次生成されるコマンド158をロボットコントローラ250へ送信する通信部に相当する。通信制御モジュール160および通信ドライバ162は、IECプログラム実行エンジン150からの出力値およびロボットプログラム実行エンジン152からのコマンド158をロボットコントローラ250へ送信する。
通信制御モジュール160は、接続されている1または複数のロボットコントローラ250との間のデータの遣り取りを管理する。通信制御モジュール160は、接続されているロボットコントローラ250毎にデータ通信を管理する通信インスタンスを生成し、生成した通信インスタンスを用いてデータ通信を管理するようにしてもよい。
通信ドライバ162は、フィールドネットワークコントローラ108(図3参照)を利用して、接続されている1または複数のロボットコントローラ250との間でデータ通信を行う内部インターフェイスである。
ロボットコントローラ250の各々は、通信制御モジュール280と、通信ドライバ282と、ロボット駆動エンジン284と、信号出力ドライバ292とを含む。これらのエレメントは、典型的には、ロボットコントローラ250のプロセッサ262(制御処理回路260)がロボットシステムプログラム2702を実行することで実現してもよい。
通信制御モジュール280は、接続されている制御装置100との間のデータの遣り取りを管理する。通信制御モジュール280は、接続されている制御装置100との間でデータ通信を管理する通信インスタンスを生成し、生成した通信インスタンスを用いてデータ通信を管理するようにしてもよい。
通信ドライバ282は、フィールドネットワークコントローラ252(図4参照)を利用して、接続されている制御装置100との間でデータ通信を行う内部インターフェイスである。
ロボット駆動エンジン284は、制御装置100からのコマンド158に従って、制御装置100から予め送信された設定情報2704を参照して、ロボット200(含:カスタムロボット200Aおよび/または汎用ロボット200B)の各軸を駆動するための指令値を順次生成する。より具体的には、ロボット駆動エンジン284は、管理モジュール286と、目標軌道生成モジュール288と、指令値生成モジュール290とを含む。
管理モジュール286は、制御装置100からの出力値に従って処理を実行する処理実行部に相当する。より具体的には、管理モジュール286は、制御装置100からの出力値に従って、制御モードや、コマンド158から目標軌道の生成の開始/終了などを管理する。管理モジュール286は、制御装置100から提供される設定情報2704を保持していてもよい。
目標軌道生成モジュール288(目標軌道生成部)は、制御装置100からのコマンド158に従って、設定情報2704を参照しつつ、制御対象のロボット200(含:カスタムロボット200Aおよび/または汎用ロボット200B)の目標軌道を生成する。生成される目標軌道は、典型的には、ロボット200の先端部の時間毎の位置(時間に対する位置の変化)、および/または、ロボット200の先端部の時間毎の速度(時間に対する速度の変化)などを含む。
目標軌道生成モジュール288は、生成する目標軌道を指令値生成モジュール290へ出力してもよいし(典型的には、図4に示すカスタムロボット200Aを駆動する場合)、信号出力ドライバ292を介してロボット200へ直接出力してもよい(典型的には、図5に示す汎用ロボット200Bを駆動する場合)。
指令値生成モジュール290は、制御装置100からのコマンド158によって指示された挙動を実現するように、ロボット200の各軸を駆動するための指令値を順次生成する。より具体的には、指令値生成モジュール290は、目標軌道生成モジュール288により生成される目標軌道に従って、設定情報2704を参照しつつ、制御対象のロボット200を構成するそれぞれのモータ230に対する指令値を順次生成する。指令値生成モジュール290は、指令値を所定の制御周期毎または所定のイベント毎に更新してもよい。
指令値生成モジュール290は、制御対象のロボット200のキネマティクスに基づいて、目標軌道に沿ってロボット200を駆動するためのモータ230に与えるそれぞれの指令値を算出する。指令値生成モジュール290は、モータ230に与える指令値として、目標位置(時間に対する位置/角度の変化)、目標速度(時間に対する速度/角速度の変化)、目標加速度(時間に対する加速度/角加速度の変化)、および/または、目標加速度(時間に対する加加速度/角加加速度の変化)などを算出する。
ロボットコントローラ250の目標軌道生成モジュール288の制御周期としては、典型的には、制御装置100の制御周期と同程度の数百μsec〜数100msec程度が想定される。一方、ロボットコントローラ250の指令値生成モジュール290の制御周期は、目標軌道生成モジュール288の制御周期より高速である(例えば、数〜10数倍程度)ことが想定される。
説明の便宜上、目標軌道生成モジュール288と、指令値生成モジュール290とを分離した構成例を示すが、これらのモジュールを分離することなく、一体的に実装してもよい。
信号出力ドライバ292は、インターフェイス回路268(図4参照)を利用して、指令値および/または目標軌道を、接続されている1または複数のドライブ回路220および/またはロボット200へ出力するための内部インターフェイスである。
<E.制御装置100で実行される処理>
上述したように、ロボットプログラム1108は、ロボット200の挙動を制御するためのプログラムである。但し、ロボット200の挙動を制御するためには、例えば、ロボット200の動作を開始/停止するタイミング、ロボット200を動作させるための条件(例えば、前工程あるいは後工程にある設備との連係)、ロボット200に係るセーフティ条件などを制御する必要もある。
そこで、制御装置100においては、ロボットプログラム1108だけではなく、IECプログラム1104も並列的に実行できるようにしてもよい。IECプログラム1104は、ロボット200の動作に係る状態値を収集して、ロボット200の動作を開始/停止するタイミングを決定するロジックなどを含んでいてもよい。
図9は、本実施の形態に係るロボット制御システム1を構成する制御装置100で実行されるIECプログラム1104およびロボットプログラム1108の一例を示す図である。
図9(A)には、ラダー・ダイアグラム(LD言語)で記述されたIECプログラム1104の例を示す。図9(A)に示すIECプログラム1104の例は、制御対象のロボット200の電源を投入する処理、および、制御対象のロボット200のキャリブレーションを実行する処理に関する命令を含む。
なお、図9(A)に示すように、IECプログラム1104は、ファンクションブロックを要素として含んでいてもよい。さらに、IECプログラム1104は、ストラクチャード・テキスト(ST言語)で記述されたコードを含んでいてもよい。
図9(B)には、V+言語で記述されたロボットプログラム1108の例を示す。図9(B)に示すように、V+言語は、ロボット200の挙動を制御するための一種の高級言語である。
次に、制御装置100におけるIECプログラム1104およびロボットプログラム1108の並列実行について説明する。
図10は、本実施の形態に係るロボット制御システム1を構成する制御装置100におけるプログラムの実行例を示すタイムチャートである。図10に示すように、制御装置100においては、IECプログラム実行エンジン150ならびにロボットプログラム実行エンジン152(ロボットプログラム解釈モジュール154およびコマンド生成モジュール156)がそれぞれ処理を独立して実行する。
IECプログラム実行エンジン150は、IECプログラム1104を予め定められた制御周期T1毎にサイクリック実行(繰り返し実行)する。IECプログラム1104のサイクリック実行は、出力更新処理1502および入力更新処理1504を含む。
出力更新処理1502は、IECプログラム1104の実行により決定された出力値を、内部変数および/または対象のデバイスに反映する処理を含む。特に、フィールドネットワーク20を介して接続されているデバイスに対する出力値は、通信フレームに格納されてフィールドネットワーク20上に送出される。
入力更新処理1504は、IECプログラム1104の実行に必要な入力値(状態値)を、内部変数および/または対象のデバイスから取得する処理を含む。特に、フィールドネットワーク20を介して接続されているデバイスからの入力値は、フィールドネットワーク20上を伝搬する通信フレームから取得される。
通信制御モジュール160は、制御周期T1に同期して、フィールドネットワーク20上に通信フレームを送出するとともに、フィールドネットワーク20上を巡回して戻ってきた通信フレームを受信する。通信制御モジュール160は、IECプログラム実行エンジン150により生成された出力値、および/または、およびコマンド生成モジュール156により生成されたコマンド158を、通信フレームに格納するとともに、戻ってきた通信フレームに含まれる入力値(状態値)をIECプログラム実行エンジン150およびコマンド生成モジュール156が参照できるように保持する。
コマンド生成モジュール156は、ロボットプログラム解釈モジュール154からの内部コマンドに従ってコマンド158を生成する。典型的には、コマンド生成モジュール156がコマンド158を生成するタイミングは、IECプログラム実行エンジン150からの出力値によって決定される。図10に示す例では、IECプログラム実行エンジン150からの出力値に応答して、IECプログラム実行エンジン150がコマンド158を生成する例を示す。IECプログラム実行エンジン150によるコマンド158の生成は、IECプログラム実行エンジン150の出力更新処理1502のタイミングと同期させてもよい。
ロボットプログラム解釈モジュール154は、典型的には、制御周期T1とは独立して、ロボットプログラム1108を実行する。ロボットプログラム解釈モジュール154によるロボットプログラム1108の実行の開始/停止は、コマンド生成モジュール156により制御されてもよい。
図10に示すように、ロボットプログラム実行エンジン152は、ロボットプログラム1108を逐次実行する。IECプログラム実行エンジン150は、ロボットプログラム実行エンジン152によるロボットプログラム1108の実行とは独立して、IECプログラム1104をサイクリック実行する。
<F.制御装置100とロボットコントローラ250との間のデータの遣り取り>
次に、制御装置100とロボットコントローラ250との間のデータの遣り取りについて説明する。
図11は、本実施の形態に係るロボット制御システム1における初期状態でのデータ処理を概略する模式図である。
図11を参照して、制御装置100のロボットプログラム実行エンジン152には、ロボット200(ロボットコントローラ250)毎に予め用意された設定情報2704が入力される。ロボットプログラム実行エンジン152のコマンド生成モジュール156は、予め定められた条件が成立すると、ロボットコントローラ250の各々に対して、対応する設定情報2704を送信する。ロボットコントローラ250のロボット駆動エンジン284は、制御装置100から送信された設定情報2704を格納する。
ロボットコントローラ250に設定情報2704が格納されることで、ロボットコントローラ250はロボット200の制御が可能となる。ロボットコントローラ250がロボット200を制御する運転状態においては、制御装置100からロボットコントローラ250へコマンド158が送信される。
図12は、本実施の形態に係るロボット制御システム1における運転状態でのデータ処理を概略する模式図である。図12を参照して、制御装置100のロボットプログラム実行エンジン152には、所定のプログラミング言語で記述されたロボットプログラム1108が入力される。
例えば、同一の生産ラインに複数のロボット200が配置されており、それぞれのロボット200が異なる作業を行うような生産設備においては、ロボットプログラム実行エンジン152には、ロボット200毎に異なるロボットプログラム1108が入力される。また、複数の同一の生産ラインが並列して配置されるとともに、それぞれの生産ラインに同一の作業を行うロボット200が配置されているような生産設備においては、ロボットプログラム実行エンジン152には、共通のロボットプログラム1108が入力されてもよい。但し、生成されるコマンド158は、ロボットコントローラ250へそれぞれ独立して送信されてもよい。
また、ロボットプログラム実行エンジン152には、異なるプログラミング言語(例えば、V+言語およびGコード)で記述された複数のロボットプログラム1108が入力されてもよい。ロボットプログラム実行エンジン152は、異なるプログラミング言語で記述されたロボットプログラム1108が入力された場合であっても、共通のコマンド体系に従って記述されたコマンド158を生成できる。
このように、ロボットプログラム実行エンジン152は、複数のプログラミング言語を解釈可能に構成されてもよい。この場合、ロボットプログラム実行エンジン152は、プログラミング言語に依存することなく、予め定められたコマンド体系に従うコマンド158を生成するようにしてもよい。
ロボットプログラム実行エンジン152(ロボットプログラム解釈モジュール154)は、入力されたロボットプログラム1108を解釈して内部コマンドを生成する。さらに、ロボットプログラム実行エンジン152(コマンド生成モジュール156)は、生成した内部コマンドに従って、ロボット200の挙動を制御するためのコマンド158を生成する。
コマンド158は、接続されている1または複数のロボットコントローラ250に対してそれぞれ生成されてもよい。
生成されたコマンド158は、フィールドネットワーク20(図2参照)を介して、対応するロボットコントローラ250へ送信される。制御装置100が複数のロボットコントローラ250とネットワーク接続されている場合には、制御装置100の通信部50(フィールドネットワークコントローラ108、通信制御モジュール160、通信ドライバ162などで構成)は、複数のロボットコントローラ250へそれぞれコマンド158を送信する。
ロボットコントローラ250の目標軌道生成モジュール288は、制御装置100からのコマンド158に従って、目標軌道を生成する。生成される目標軌道は、そのまま汎用ロボット200Bへ出力されてもよい。
一方、ロボットコントローラ250の指令値生成モジュール290は、生成される目標軌道に従って、制御対象のロボット200を構成するそれぞれのモータ230に対する指令値を生成する。
なお、コマンド158を規定するコマンド体系としては、任意のものを採用できる。コマンド158の生成に係る処理を低減する観点からは、ロボットプログラム1108に記述される命令から容易に生成できるコマンド群を採用することが好ましい。
<G.設定情報の具体例>
次に、ロボットコントローラ250で参照される設定情報2704の具体例について説明する。
図13は、本実施の形態に係るロボット制御システム1において利用される設定情報2704の一例を示す図である。図13を参照して、ロボットコントローラ250で参照される設定情報2704は、そのロボットコントローラ250が制御するロボット200に関するパラメータを含む。
例えば、設定情報2704は、ロボット種別やロボット形式を示すロボットタイプ、各ロボットが有している軸数、各軸のパラメータ、各軸を駆動するサーバのパラメータ(回転数や減速比なども含む)などを含む。さらに、設定情報2704は、ロボット200の制限値((例えば、速度制限値、加速度制限値、ジャーク制限値など)を含んでいてもよい。
制御装置100に格納される設定情報群2701は、1または複数の設定情報2704からなる。制御装置100は、予め定められた条件が成立すると、対象のロボットコントローラ250に対して、設定情報群2701のうち対応する設定情報2704を送信する。このように、ロボット制御システム1が複数のロボットコントローラ250を有している場合には、制御装置100のストレージ110には、複数のロボットコントローラ250毎の設定情報2704からなる設定情報群2701が格納されている。
ロボットコントローラ250は、設定情報2704を参照して、目標軌道の生成、および/または、指令値の生成などを行う。
なお、図13に示すように、制御装置100に接続されるロボットコントローラ250のそれぞれに対応する設定情報2704を予め定め用意してもよいが、設定情報2704の内容が互いに類似しているような場合には、デフォルトの設定情報を用意した上で、そのデフォルトの設定情報に対する差分のみを送信するようにしてもよい。
図14は、本実施の形態に係るロボット制御システム1において利用される設定情報の別の一例を示す図である。図14に示すように、それぞれのロボットコントローラ250に対して、予めデフォルトの設定情報2704Aを格納しておく。その上で、各ロボットコントローラ250に応じた設定情報となるように、デフォルトの設定情報2704Aからの差分情報2704Bを送信するようにしてもよい。
ロボットコントローラ250は、デフォルトの設定情報2704Aに対して、差分情報2704Bを適用することで、制御対象のロボット200に応じた設定情報を生成および参照できる。
このように、制御装置100からロボットコントローラ250に対して、差分情報2704Bのみを送信するようにしてもよい。すなわち、制御装置100は、ロボットコントローラ250に予め格納されているデフォルトの設定情報2704Aとロボットコントローラ250に格納されるべき設定情報2704との差分である差分情報2704Bを、ロボットコントローラ250へ送信するようにしてもよい。なお、デフォルトの設定情報2704Aがロボットコントローラ250に格納されていないような場合には、制御装置100がデフォルトの設定情報2704Aをロボットコントローラ250へ送信するようにしてもよい。
<H.設定情報の送信条件>
上述したように、制御装置100は、予め定められた条件(以下、「送信条件」とも称す。)が満たされると、設定情報2704をロボットコントローラ250へ送信する。この制御装置100が設定情報2704を送信する際の送信条件の一例について説明する。
(h1:制御装置100の起動)
例えば、制御装置100が起動したことを送信条件とすることができる。すなわち、送信条件は、制御装置100が起動したことを含んでいてもよい。この場合、制御装置100は、システム起動直後の初期状態において、設定情報2704をロボットコントローラ250へ送信する。
図15は、本実施の形態に係るロボット制御システム1における送信条件の一例を示す図である。図15を参照して、制御装置100の電源が投入されてシステム起動したとする。併せて、ロボットコントローラ250についてもシステム起動する。なお、ロボットコントローラ250がシステム起動した直後は、レディ状態であるとする。
すると、制御装置100は、設定情報2704をロボットコントローラ250へ送信する。ロボットコントローラ250は、受信した設定情報2704を格納して、レディ状態から運転状態に遷移する。ロボットコントローラ250は、運転状態への遷移によって、ロボット200の制御が可能となる。
(h2:ネットワーク接続)
また、ロボット200(ロボットコントローラ250)がネットワーク接続されたことを送信条件とすることができる。すなわち、送信条件は、ロボットコントローラ250が制御装置100とネットワーク接続されることを含んでいてもよい。より具体的には、いずれかのロボットコントローラ250がフィールドネットワーク20に新たに接続あるいは再接続されると、それを契機として、制御装置100からロボットコントローラ250へ設定情報2704が送信される。
図16は、本実施の形態に係るロボット制御システム1における送信条件の別の一例を示す図である。図16を参照して、ロボット200(ロボットコントローラ250)がフィールドネットワーク20に接続され、ロボットコントローラ250がシステム起動したとする。なお、ロボットコントローラ250がシステム起動した直後は、レディ状態であるとする。
すると、制御装置100は、設定情報2704をロボットコントローラ250へ送信する。ロボットコントローラ250は、受信した設定情報2704を格納して、レディ状態から運転状態に遷移する。ロボットコントローラ250は、運転状態への遷移によって、ロボット200の制御が可能となる。
(h3:外部装置からの指示)
また、外部装置から制御装置100に対して指示が与えられたことを送信条件とすることができる。すなわち、制御装置100は、制御装置100に接続された外部装置からの指令に従って、設定情報2704をロボットコントローラ250へ送信してもよい。例えば、サポート装置400から制御装置100に対して明示的に指示が与えられると、その指示に従って、制御装置100は、ロボットコントローラ250へ設定情報2704を送信する。
図17は、本実施の形態に係るロボット制御システム1における送信条件のさらに別の一例を示す図である。図17を参照して、サポート装置400に対してユーザが操作を行うと、設定情報2704の送信指示が制御装置100に与えられる。なお、ロボットコントローラ250がシステム起動した直後は、レディ状態であるとする。
制御装置100は、サポート装置400からの送信指示に応答して、設定情報2704をロボットコントローラ250へ送信する。ロボットコントローラ250は、受信した設定情報2704を格納して、レディ状態から運転状態に遷移する。ロボットコントローラ250は、運転状態への遷移によって、ロボット200の制御が可能となる。
なお、サポート装置400から制御装置100へ送信指示が与えられるトリガーとしては、ユーザ操作であってもよいし、サポート装置400で実行されるアプリケーションなどであってもよい。例えば、サポート装置400からIECプログラム1104およびロボットプログラム1108が制御装置100へ転送された後、設定情報2704の送信指示も制御装置100に与えられてもよい。
(h4:制御装置100で実行されるアプリケーション)
また、制御装置100で実行されるIECプログラム1104などが送信条件を成立させるようにしてもよい。すなわち、制御装置100で実行されるアプリケーションが設定情報2704を送信するトリガーを発生させてもよい。
例えば、IECプログラム1104に設定情報2704の送信条件に相当するロジックを組み込んでおき、この組み込まれた送信条件が成立すると、設定情報2704を送信するようにしてもよい。この場合、任意の送信条件を規定できる。
(h5:既存の設定情報)
上述の設定情報2704を送信する処理においては、送信先のロボットコントローラ250に設定情報2704が既に格納されているか否かにかかわらず、設定情報2704を送信するようにしてもよい。すなわち、制御装置100は、ロボットコントローラ250に予め設定情報2704が格納されていても、制御装置100のストレージ110に格納されている設定情報2704をロボットコントローラ250へ送信するようにしてもよい。
一方で、送信先のロボットコントローラ250に正しい設定情報2704が格納されているか否かを判断し、正しい設定情報2704が格納されていない場合に限って、制御装置100からロボットコントローラ250へ設定情報2704を送信するようにしてもよい。この場合、制御装置100は、設定情報2704を送信すべきロボットコントローラ250から当該ロボットコントローラ250に格納されている設定情報2704の情報を取得し、設定情報2704が格納されていない場合、あるいは、格納されている設定情報2704が送信予定の設定情報2704とは異なっている場合には、設定情報2704を当該ロボットコントローラ250へ送信する。
このように、送信条件として、送信先のロボットコントローラ250に正しい設定情報2704が格納されていないことを含めてもよい。
(h6:その他)
上述した送信条件に限らず、任意の送信条件を採用できる。また、上述した送信条件のうち複数を任意に組み合わせて採用してもよい。さらに、ロボットコントローラ250毎に送信条件を異ならせてもよい。
<I.処理手順>
次に、本実施の形態に係るロボット制御システム1における処理手順について説明する。
(i1:設定情報2704の送信)
まず、設定情報2704の送信に係る処理について説明する。
図18は、本実施の形態に係るロボット制御システム1における設定情報2704の送信処理を示すシーケンス図である。図18に示す制御装置100の処理は、典型的には、制御装置100のプロセッサ102がシステムプログラム1102を実行することで実現される。また、図18に示すロボットコントローラ250の処理は、典型的には、プロセッサ262がロボットシステムプログラム2702を実行することで実現される。
図18を参照して、ロボットコントローラ250は、システム起動してレディ状態であるとする(シーケンスSQ200)。
制御装置100は、設定情報2704を送信する予め定められた条件(送信条件)が成立しているか否かを判断する(シーケンスSQ100)。送信条件が成立するか否かを判断するにあたって、制御装置100は、ロボットコントローラ250から必要な情報を取得してもよい。送信条件が成立していなければ(シーケンスSQ100においてNO)、以下の処理はスキップされる。
送信条件が成立していれば(シーケンスSQ100においてYES)、制御装置100は、送信対象のロボットコントローラ250を特定し(シーケンスSQ102)、特定したロボットコントローラ250に対応する設定情報2704を送信する(シーケンスSQ104)。そして、ロボットコントローラ250からの受信完了通知を待つ(シーケンスSQ106)。
ロボットコントローラ250は、制御装置100から設定情報2704を受信すると(シーケンスSQ202)、受信した設定情報2704を格納する(シーケンスSQ204)。そして、ロボットコントローラ250は、設定情報2704の受信が完了したことを制御装置100へ通知する(シーケンスSQ206)。そして、ロボットコントローラ250は、レディ状態から運転状態に遷移する(シーケンスSQ208)。
制御装置100は、ロボットコントローラ250からの受信完了通知を受信すると(シーケンスSQ106においてYES)、設定情報2704の送信処理を終了する。
(i2:動作中)
次に、上述したような設定情報2704の送信に係る処理が完了した後の動作中の処理について説明する。
図19は、本実施の形態に係るロボット制御システム1を構成する制御装置100における動作中の処理手順を示すフローチャートである。図19に示す各ステップは、典型的には、制御装置100のプロセッサ102がシステムプログラム1102を実行することで実現してもよい。図19に示すように、制御装置100においては、IECプログラム実行エンジン150による処理と、ロボットプログラム実行エンジン152(ロボットプログラム解釈モジュール154およびコマンド生成モジュール156)による処理とが並列して実行される。
IECプログラム実行エンジン150に係る処理として、制御装置100は、次の制御周期が到来したか否かを判断する(ステップS100)。次の制御周期が到来していなければ(ステップS100においてNO)、制御装置100は、次の制御周期の到来まで処理を待つ。
次の制御周期が到来していれば(ステップS100においてYES)、制御装置100は、前の制御周期におけるIECプログラム1104の実行により決定された出力値を出力する(ステップS102)。なお、出力値を出力する処理は、ロボットプログラム実行エンジン152へ出力値を出力する処理を含む。
続いて、制御装置100は、最新の入力値を取得し(ステップS104)、取得した最新の入力値を利用して、IECプログラム1104を実行することで、出力値を決定する(ステップS106)。そして、ステップS100以下の処理が繰り返される。
一方、ロボットプログラム実行エンジン152に係る処理として、制御装置100は、ロボットプログラム1108の読み込み開始条件が成立しているか否かを判断する(ステップS150)。ロボットプログラム1108の読み込み開始条件は、IECプログラム実行エンジン150からの出力値、ロボットコントローラ250からの入力値(例えば、ロボットコントローラ250が運転状態であること)、サポート装置400からの指示、その他の任意の情報を適宜組み合わせて規定されてもよい。
ロボットプログラム1108の読み込み開始条件が成立していなければ(ステップS150においてのNOの場合)、制御装置100は、ステップS152およびS154の処理をスキップする。
ロボットプログラム1108の読み込み開始条件が成立していれば(ステップS150においてのYESの場合)、制御装置100は、ロボットプログラム1108を実行することで、ロボットコントローラ250に与えるロボットの挙動を指示するコマンド158を生成するとともに、生成したコマンド158をロボットコントローラ250へ送信するステップ(ステップS152〜S160)。
より具体的には、制御装置100は、対象のロボットプログラム1108を順次読み込み(ステップS152)、読み込んだロボットプログラム1108をパースして、内部コマンドを生成する(ステップS154)。
制御装置100は、コマンド158の出力開始条件が成立しているか否かを判断する(ステップS156)。コマンド158の出力開始条件は、IECプログラム実行エンジン150からの出力値、ロボットコントローラ250からの入力値、サポート装置400からの指示、その他の任意の情報を適宜組み合わせて規定されてもよい。
制御装置100は、コマンド158の出力開始条件が成立していれば(ステップS156においてYESの場合)、制御装置100は、次の制御周期が到来したか否かを判断する(ステップS158)。次の制御周期が到来していなければ(ステップS158においてNO)、制御装置100は、次の制御周期の到来まで処理を待つ。
次の制御周期が到来していれば(ステップS158においてYES)、制御装置100は、予め生成されている内部コマンドに従ってコマンド158を生成して出力する(ステップS160)。
コマンド158の出力開始条件が成立していなければ(ステップS156においてNOの場合)、制御装置100は、ステップS158およびS160の処理をスキップする。
そして、ステップS150以下の処理が繰り返される。
図20は、本実施の形態に係るロボット制御システム1を構成するロボットコントローラ250における動作中の処理手順を示すフローチャートである。図20に示す各ステップは、ロボットコントローラ250のプロセッサ262(制御処理回路260)がロボットシステムプログラム2702を実行することで実現してもよい。
図20に示すように、ロボットコントローラ250においては、目標軌道生成モジュール288による処理と、指令値生成モジュール290による処理とが並列して実行される。図20に示す処理は、ロボットコントローラ250が運転状態である場合に実行される。すなわち、制御装置100からの設定情報2704が格納されている場合に限って実行される。
目標軌道生成モジュール288に係る処理として、ロボットコントローラ250は、制御装置100からコマンド158を受信したか否かを判断する(ステップS200)。制御装置100からコマンド158を受信していなければ(ステップS200においてNOの場合)、ロボットコントローラ250は、ステップS200の処理を繰り返す。
制御装置100からコマンド158を受信していれば(ステップS200においてYESの場合)、ロボットコントローラ250は、コマンド158のすべてを受信しているか否かを判断する(ステップS202)。コマンド158の一部のみを受信していれば(ステップS202においてNOの場合)、ロボットコントローラ250は、ステップS200以下の処理を繰り返す。
コマンド158のすべてを受信していれば(ステップS202においてYESの場合)、ロボットコントローラ250は、受信したコマンド158に従って、設定情報2704を参照しつつ、目標軌道を生成する(ステップS204)。そして、ステップS200以下の処理が繰り返される。
一方、指令値生成モジュール290に係る処理として、ロボットコントローラ250は、次の制御周期が到来したか否かを判断する(ステップS250)。次の制御周期が到来していなければ(ステップS250においてNO)、ロボットコントローラ250は、次の制御周期の到来まで処理を待つ。
次の制御周期が到来していれば(ステップS250においてYES)、ロボットコントローラ250は、予め定められた最新の入力値を通信フレーム40に格納して、制御装置100へ送信する(ステップS252)。そして、ロボットコントローラ250は、通信フレーム40を参照して、制御装置100から送信された最新の出力値を取得する(ステップS254)。そして、ロボットコントローラ250は、ロボット200に対する指令値の出力条件が成立しているか否かを判断する(ステップS256)。ロボット200に対する指令値の出力条件は、制御装置100から送信された最新の出力値、管理モジュール286が保持する状態値、ロボットコントローラ250で取得される状態値、その他の任意の情報を適宜組み合わせて規定されてもよい。
ロボット200に対する指令値の出力条件が成立していなければ(ステップS256においてNOの場合)、ロボットコントローラ250は、ステップS258およびS260の処理をスキップする。
ロボット200に対する指令値の出力条件が成立していれば(ステップS256においてYESの場合)、ロボットコントローラ250は、制御装置100からのコマンド158によって指示された挙動を実現するように、ロボット200の各軸を駆動するための指令値を順次生成する(ステップS258〜S260)。より具体的には、ロボットコントローラ250は、予め生成されている目標軌道に従って、設定情報2704を参照しつつ、制御対象のロボット200を構成するそれぞれのモータ230に対する指令値を生成する(ステップS258)。そして、ロボットコントローラ250は、生成したそれぞれの指令値を出力する(ステップS260)。
そして、ステップS250以下の処理が繰り返される。
<J.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
ロボット制御システム(1)であって、
第1の制御装置(100)と、
前記第1の制御装置とネットワーク接続され、ロボットを制御するための第2の制御装置(250)とを備え、
前記第1の制御装置は、
前記第2の制御装置が制御するロボット(200)に関する設定情報(2704)を格納する記憶部(110)と、
ロボットプログラム(1108)を実行することで、前記第2の制御装置に与えるコマンド(158)を順次生成するコマンド生成部(152)と、
前記設定情報および前記順次生成されるコマンドを前記第2の制御装置へ送信する通信部(50)とを備え、
前記第2の制御装置は、
前記第1の制御装置からのコマンドに従って、前記第1の制御装置から予め送信された設定情報を参照して、前記ロボットの各軸を駆動するための指令値を順次生成する指令値生成部(290)を備える、ロボット制御システム。
[構成2]
前記第1の制御装置は、予め定められた条件が満たされると、前記設定情報を前記第2の制御装置へ送信する、構成1に記載のロボット制御システム。
[構成3]
前記予め定められた条件は、前記第1の制御装置が起動したことを含む、構成2に記載のロボット制御システム。
[構成4]
前記予め定められた条件は、前記第2の制御装置が前記第1の制御装置とネットワーク接続されることを含む、構成2または3に記載のロボット制御システム。
[構成5]
前記第1の制御装置は、前記第1の制御装置に接続された外部装置(400)からの指令に従って、前記設定情報を前記第2の制御装置へ送信する、構成1〜4のいずれか1項に記載のロボット制御システム。
[構成6]
前記第1の制御装置は、前記第2の制御装置に予め設定情報が格納されていても、前記第1の制御装置の前記記憶部に格納されている設定情報を前記第2の制御装置へ送信する、構成1〜5のいずれか1項に記載のロボット制御システム。
[構成7]
前記第1の制御装置は、前記第2の制御装置に予め格納されている設定情報(2704A)と前記第2の制御装置に格納されるべき設定情報との差分(2704B)を、前記第2の制御装置へ送信する、構成1〜5のいずれか1項に記載のロボット制御システム。
[構成8]
前記ロボット制御システムは、前記第2の制御装置を複数備え、
前記第1の制御装置の前記記憶部は、複数の前記第2の制御装置毎に設定情報を格納している、構成1〜7のいずれか1項に記載のロボット制御システム。
[構成9]
第1の制御装置(100)と、前記第1の制御装置とネットワーク接続され、ロボット(200)を制御するための第2の制御装置(250)とを備えたロボット制御システム(1)における制御方法であって、
前記第1の制御装置が、前記第2の制御装置が制御するロボットに関する設定情報(2704)を前記第2の制御装置へ送信するステップ(SQ104)と、
前記第1の制御装置が、ロボットプログラム(1108)を実行することで、前記第2の制御装置に与えるコマンド(158)を順次生成するステップ(S160)と、
前記第1の制御装置が、前記設定情報および前記順次生成されるコマンドを前記第2の制御装置へ送信するステップ(S160)と、
前記第2の制御装置が、前記第1の制御装置からのコマンドに従って、前記設定情報を参照して、前記ロボットの各軸を駆動するための指令値を順次生成するステップ(S258,S260)とを備える、制御方法。
<K.利点>
本実施の形態に係るロボット制御システム1においては、制御装置100とロボットコントローラ250とが連係してロボット200の挙動を制御する。このような構成を採用するにあたって、制御装置100からコマンド158を送信する前に、コマンド158の送信先であるロボットコントローラ250に対して、ロボットコントローラ250が制御するロボット200に関する設定情報2704を送信する。これによって、制御装置100とロボットコントローラ250とが連係したロボット200の制御を確実に実現できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 ロボット制御システム、12 上位ネットワーク、20 フィールドネットワーク、40 通信フレーム、50 通信部、100 制御装置、102,262,362,402 プロセッサ、104,266,366,404 メインメモリ、106 上位ネットワークコントローラ、108,252,352 フィールドネットワークコントローラ、110,270,410 ストレージ、112 メモリカードインターフェイス、114 メモリカード、116 ローカルバスコントローラ、118,418 プロセッサバス、120,420 USBコントローラ、122 ローカルバス、130 機能ユニット、150 IECプログラム実行エンジン、152 ロボットプログラム実行エンジン、154 ロボットプログラム解釈モジュール、156 コマンド生成モジュール、158 コマンド、160,280 通信制御モジュール、162,282 通信ドライバ、164 外部通信インターフェイス、200 ロボット、200A カスタムロボット、200B 汎用ロボット、210 アーム部、220 ドライブ回路、230 モータ、250 ロボットコントローラ、260,360 制御処理回路、268,368 インターフェイス回路、284 ロボット駆動エンジン、286 管理モジュール、288 目標軌道生成モジュール、290 指令値生成モジュール、292 信号出力ドライバ、300 操作ペンダント、370 ファームウェア、380 操作キー群、400 サポート装置、406 入力部、408 表示部、412 光学ドライブ、414 記憶媒体、422 通信コントローラ、500 表示装置、600 サーバ装置、1102 システムプログラム、1104 IECプログラム、1106,2704,2704A 設定情報、1108 ロボットプログラム、1502 出力更新処理、1504 入力更新処理、2701 設定情報群、2702 ロボットシステムプログラム、2704B 差分情報、4104 開発プログラム、T1 制御周期。

Claims (9)

  1. ロボット制御システムであって、
    第1の制御装置と、
    前記第1の制御装置とネットワーク接続され、ロボットを制御するための第2の制御装置とを備え、
    前記第1の制御装置は、
    前記第2の制御装置が制御するロボットに関する設定情報を格納する記憶部と、
    ロボットプログラムを実行することで、前記第2の制御装置に与えるコマンドを順次生成するコマンド生成部と、
    前記設定情報および前記順次生成されるコマンドを前記第2の制御装置へ送信する通信部とを備え、
    前記第2の制御装置は、
    前記第1の制御装置からのコマンドに従って、前記第1の制御装置から予め送信された設定情報を参照して、前記ロボットの各軸を駆動するための指令値を順次生成する指令値生成部を備える、ロボット制御システム。
  2. 前記第1の制御装置は、予め定められた条件が満たされると、前記設定情報を前記第2の制御装置へ送信する、請求項1に記載のロボット制御システム。
  3. 前記予め定められた条件は、前記第1の制御装置が起動したことを含む、請求項2に記載のロボット制御システム。
  4. 前記予め定められた条件は、前記第2の制御装置が前記第1の制御装置とネットワーク接続されることを含む、請求項2または3に記載のロボット制御システム。
  5. 前記第1の制御装置は、前記第1の制御装置に接続された外部装置からの指令に従って、前記設定情報を前記第2の制御装置へ送信する、請求項1〜4のいずれか1項に記載のロボット制御システム。
  6. 前記第1の制御装置は、前記第2の制御装置に予め設定情報が格納されていても、前記第1の制御装置の前記記憶部に格納されている設定情報を前記第2の制御装置へ送信する、請求項1〜5のいずれか1項に記載のロボット制御システム。
  7. 前記第1の制御装置は、前記第2の制御装置に予め格納されている設定情報と前記第2の制御装置に格納されるべき設定情報との差分を、前記第2の制御装置へ送信する、請求項1〜5のいずれか1項に記載のロボット制御システム。
  8. 前記ロボット制御システムは、前記第2の制御装置を複数備え、
    前記第1の制御装置の前記記憶部は、複数の前記第2の制御装置毎に設定情報を格納している、請求項1〜7のいずれか1項に記載のロボット制御システム。
  9. 第1の制御装置と、前記第1の制御装置とネットワーク接続され、ロボットを制御するための第2の制御装置とを備えたロボット制御システムにおける制御方法であって、
    前記第1の制御装置が、前記第2の制御装置が制御するロボットに関する設定情報を前記第2の制御装置へ送信するステップと、
    前記第1の制御装置が、ロボットプログラムを実行することで、前記第2の制御装置に与えるコマンドを順次生成するステップと、
    前記第1の制御装置が、前記設定情報および前記順次生成されるコマンドを前記第2の制御装置へ送信するステップと、
    前記第2の制御装置が、前記第1の制御装置からのコマンドに従って、前記設定情報を参照して、前記ロボットの各軸を駆動するための指令値を順次生成するステップとを備える、制御方法。
JP2020044122A 2020-03-13 2020-03-13 ロボット制御システムおよび制御方法 Pending JP2021144586A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020044122A JP2021144586A (ja) 2020-03-13 2020-03-13 ロボット制御システムおよび制御方法
PCT/JP2020/047234 WO2021181798A1 (ja) 2020-03-13 2020-12-17 ロボット制御システムおよび制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020044122A JP2021144586A (ja) 2020-03-13 2020-03-13 ロボット制御システムおよび制御方法

Publications (1)

Publication Number Publication Date
JP2021144586A true JP2021144586A (ja) 2021-09-24

Family

ID=77671574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020044122A Pending JP2021144586A (ja) 2020-03-13 2020-03-13 ロボット制御システムおよび制御方法

Country Status (2)

Country Link
JP (1) JP2021144586A (ja)
WO (1) WO2021181798A1 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04279901A (ja) * 1991-03-07 1992-10-06 Hitachi Ltd 産業用ロボットの制御装置
JP3221502B2 (ja) * 1992-01-24 2001-10-22 日産自動車株式会社 ロボットの制御方法
JP2015186834A (ja) * 2014-03-27 2015-10-29 セイコーエプソン株式会社 ロボット制御装置、把持部制御装置、ロボット、把持部、ロボット制御方法、及びプログラム
JP6919404B2 (ja) * 2017-08-10 2021-08-18 オムロン株式会社 制御装置

Also Published As

Publication number Publication date
WO2021181798A1 (ja) 2021-09-16

Similar Documents

Publication Publication Date Title
US10606246B2 (en) Control device and control method with various command values in a shared memory providing access to various program execution and command value operation parts in each control cycle
WO2021181801A1 (ja) ロボット制御システムおよび制御方法
WO2021106467A1 (ja) 制御システム、制御装置および制御方法
US20190095246A1 (en) Support device and non-transitory storage medium
JP6900863B2 (ja) 制御装置、制御方法および制御プログラム
US10761513B2 (en) Information processing device, information processing method, and non-transitory computer-readable recording medium
JP7310465B2 (ja) 同期制御装置、同期制御システム、同期制御方法、及びシミュレーション装置
WO2021181799A1 (ja) ロボット制御システムおよび制御方法
WO2021181798A1 (ja) ロボット制御システムおよび制御方法
US20090150705A1 (en) Method and apparatus for operating cooperating, differing devices
WO2021181800A1 (ja) ロボット制御システムおよび制御方法
US11269313B2 (en) Controller and control system that stores data in current control cycle for output in next control cycle
WO2012124145A1 (ja) 演算ユニット、支援装置、支援プログラム、支援プログラムを格納した記憶媒体、および、支援装置における動作方法
JP7294078B2 (ja) 制御装置
JP2019053397A (ja) 制御装置および制御方法
WO2022162959A1 (ja) 制御システム、ロボットコントローラおよび制御方法
JP7375632B2 (ja) 制御システムおよびサポート装置
WO2022162958A1 (ja) 制御装置、プログラム実行方法およびプログラム
WO2021145124A1 (ja) 制御装置
JP7231073B2 (ja) 制御装置および制御システム
WO2022162960A1 (ja) プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法
JP2021114019A (ja) データ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240308