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

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

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

<>
  • 特許-制御装置 図1
  • 特許-制御装置 図2
  • 特許-制御装置 図3
  • 特許-制御装置 図4
  • 特許-制御装置 図5
  • 特許-制御装置 図6
  • 特許-制御装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-18
(45)【発行日】2024-03-27
(54)【発明の名称】制御装置
(51)【国際特許分類】
   G05B 19/042 20060101AFI20240319BHJP
   B25J 13/00 20060101ALI20240319BHJP
【FI】
G05B19/042
B25J13/00 Z
【請求項の数】 3
(21)【出願番号】P 2020005001
(22)【出願日】2020-01-16
(65)【公開番号】P2021114015
(43)【公開日】2021-08-05
【審査請求日】2022-11-07
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110002860
【氏名又は名称】弁理士法人秀和特許事務所
(72)【発明者】
【氏名】大谷 拓
(72)【発明者】
【氏名】松永 大介
【審査官】杉山 悟史
(56)【参考文献】
【文献】特開平10-207517(JP,A)
【文献】特開2012-194662(JP,A)
【文献】特開2019-36043(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04 ~ 19/05
B25J 1/00 ~ 21/02
(57)【特許請求の範囲】
【請求項1】
予め定められた制御周期毎に一又は複数のロボットを同期制御するための所定の指令値を演算可能に構成された処理部と、
前記所定の指令値を前記制御周期毎に出力する出力部と、
前記同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部と、
プログラムの実行により前記一又は複数のロボットが同期制御されているとき該一又は複数のロボットのうち一のロボットの出力信号を取得する取得部と、
前記一又は複数のロボットのうち前記一のロボットが前記同期制御から除外されたことを検知する検知部と、
を備え、
前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、前記所定の指令値を演算
前記生成部は、既に実行された同期制御において前記取得部により取得された前記一のロボットの出力信号を前記仮想ロボットの出力信号として生成し、
前記検知部により前記一のロボットの除外が検知されると、前記処理部は、前記仮想ロボットの出力信号を用いることで、該一のロボットが除外された状態で前記一又は複数のロボットを制御するための前記プログラムの実行を継続させ前記所定の指令値を演算する、
制御装置。
【請求項2】
予め定められた制御周期毎に一又は複数のロボットを同期制御するための所定の指令値を演算可能に構成された処理部と、
前記所定の指令値を前記制御周期毎に出力する出力部と、
前記同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部と、
を備え、
前記生成部は、前記一又は複数のロボットとは区別される前記仮想ロボットの出力信号を生成し、
前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、該仮想ロボットの動作と前記一又は複数のロボットのそれぞれの動作とが同期する形で、該
一又は複数のロボットを同期制御するための前記所定の指令値を演算
前記処理部は、逐次実行される所定の実行形式に従ったプログラムを実行してインタプリタにより該プログラムの少なくとも一部が解釈されて生成される中間コードに従って、前記制御周期毎に前記所定の指令値を演算可能に構成され、更に、前記制御周期毎に、実行毎に全体が実行される他の実行形式に従ったプログラムを実行して、他の制御対象を制御するための他の指令値を演算可能に構成され、
前記出力部は、前記一又は複数のロボット及び前記他の制御対象を同期制御するために、前記処理部により演算された前記所定の指令値を出力する、
制御装置。
【請求項3】
前記処理部は、逐次実行される所定の実行形式に従ったプログラムを実行してインタプリタにより該プログラムの少なくとも一部が解釈されて生成される中間コードに従って、前記制御周期毎に前記所定の指令値を演算可能に構成され、更に、前記制御周期毎に、実行毎に全体が実行される他の実行形式に従ったプログラムを実行して、他の制御対象を制御するための他の指令値を演算可能に構成され、
前記出力部は、前記一又は複数のロボット及び前記他の制御対象を同期制御するために、前記処理部により演算された前記所定の指令値を出力する、
請求項1に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のロボットを同期制御するための制御装置に関する。
【背景技術】
【0002】
様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。このような制御装置は、直接的に制御対象を制御するだけではなく、他の装置に制御指令を与えることで、間接的に制御対象を制御する場合もある。また、これまで複数の専用装置を用いて実現されていた制御システムを、より少ない数の制御装置に統合したいというニーズも生じている。例えば、特許文献1に示す技術では、PLCのCPUユニットにおいて、モーション演算プログラムおよびユーザプログラムが同期して実行される。
【0003】
また、特許文献2では、実行形式の異なる複数種類のプログラムに従う制御演算を単一の制御装置で実現する技術が開示されている。当該技術では、例えば、制御周期毎にプログラム全体が実行される形式のプログラムと、一部の解釈により生成される中間コードに従って逐次実行される形式のプログラムとに関して、それぞれの指令値演算を行い、制御周期毎に各指令値を併せて出力する構成が採用されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2012-194662号公報
【文献】特開2019-36043号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般に、複数のロボットを一台の制御装置で同期制御するためには、その制御装置に対象となる複数のロボットが電気的に接続され、各ロボットと制御装置との間に通信が可能となる状態で、その複数のロボットの同期制御に必要なプログラムが実行される。このようにすることで、当該プログラムの実行によって生じる、制御装置と各ロボットとの間の制御信号の授受が好適に行われる。仮に、このような制御形態において、複数のロボットのうち一のロボットが何らかの目的で(例えば、メンテナンスの目的等)除外されてしまうと、プログラムにおいて対象とされるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じるため、除外前のプログラムのままではその好適な実行が難しい。
【0006】
また、上記とは異なる状況においても、同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合がある。例えば、プログラムにおいて対象とされるロボットの数が、実際に制御装置に接続されるロボットの数よりも多くなる場合があり得る。
【0007】
本発明は、このような問題に鑑みてなされたものであり、ロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合であっても、ロボットの同期制御を好適に実現するための技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明においては、上記課題を解決するために、一又は複数のロボットの同期制御を行
う制御装置において、同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する構成を採用した。当該構成の採用により、ロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じていても、そのずれに起因する制御上の不都合を解消することができる。
【0009】
具体的に、本発明は、予め定められた制御周期毎に前記一又は複数のロボットを同期制御するための所定の指令値を演算可能に構成された処理部と、前記所定の指令値を前記制御周期毎に出力する出力部と、前記同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部と、を備える制御装置であって、前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、前記所定の指令値を演算する。
【0010】
上記の仮想ロボットは、実際のロボットではなく、上記制御装置によって行われる同期制御上で設定される、仮想的なロボットである。したがって、仮にロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合であっても、仮想ロボットを同期制御のための所定の指令値の演算処理に組み込むことでそのずれに起因する制御上の不都合を解消することができる。そこで、上記のように構成される制御装置では、仮想ロボットの出力信号を生成するように構成された生成部を採用することとした。
【0011】
より詳細な第1の形態として、上記の制御装置が、プログラムの実行により前記一又は複数のロボットが同期制御されているとき該一又は複数のロボットのうち一のロボットの出力信号を取得する取得部と、前記一又は複数のロボットのうち前記一のロボットが前記同期制御から除外されたことを検知する検知部と、を更に備える場合、前記生成部は、既に実行された同期制御において前記取得部により取得された前記一のロボットの出力信号を前記仮想ロボットの出力信号として生成し、前記検知部により前記一のロボットの除外が検知されると、前記処理部は、前記仮想ロボットの出力信号を用いることで、該一のロボットが除外された状態で前記一又は複数のロボットを制御するための前記プログラムの実行を継続させ前記所定の指令値を演算してもよい。
【0012】
上記のような形態において、同期制御の対象である一又は複数のロボットのうち一のロボットがその同期制御から除外されてしまうと、当該同期制御上の「対象物」が実在しなくなる。ここで言う「除外」とは、制御装置による制御対象でなくなることを意味し、その目的は不問である。「除外」には、例えば、制御装置との電気的な接続が遮断された状態や、ロボットそのものに障害が生じ稼働が出来なくなった状態等が含まれる。このような同期制御上の対象物の不在により、その実在を前提として算出される同期制御のための所定の指令値が出力部によって出力されたとしても同期制御が好適に行われなくなり、結果として制御上のエラーが生じ得る。したがって、ユーザは当該制御上のエラーを回避するために、同期制御のためのプログラムを修正せざるを得ず、その作業負荷は小さくはない。
【0013】
そこで、上述したように、検知部により一のロボットの同期制御からの除外が検知されると、処理部は、所定の指令値の演算のために、生成部により生成される仮想ロボットの出力信号を利用する。このとき、仮想ロボットの出力信号は、過去に実行された同期制御、すなわち、一のロボットが除外されていない状態で実行された同期制御において、取得部により取得された一のロボットの出力信号である。換言すれば、仮想ロボットは、除外された一のロボットと同一視できるロボットであり、したがって仮想ロボットの出力信号は一のロボットの出力信号と同一視できる。したがって、処理部が仮想ロボットの出力信号を利用することで、あたかも一のロボットが除外されていない状態を形成できるため、制御上のエラーが生じることなく同期制御のためのプログラムの実行が継続でき所定の指令値の演算が可能となる。この結果、プログラムを修正することなく、一のロボットに代
えて仮想ロボットを含めた一又は複数のロボットに対して同期制御を施すことが可能となり、ユーザの作業負荷が軽減される。また、仮想ロボットの出力信号は一のロボットの出力信号と同一視できるため、一のロボットに代えて仮想ロボットを含めた一又は複数のロボットに対して同期制御を施した場合でも、ロボットの個体差に影響されずに、すなわち一のロボットと仮想ロボットとの違いに影響されずに、同期制御が継続できる。このことは、一のロボットが除外された場合でも好適な同期制御の維持に資する。
【0014】
また、詳細な第2の形態として、上記の制御装置において、前記生成部は、前記一又は複数のロボットとは区別される前記仮想ロボットの出力信号を生成し、前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、該仮想ロボットの動作と前記一又は複数のロボットのそれぞれの動作とが同期する形で、該一又は複数のロボットを同期制御するための前記所定の指令値を演算してもよい。当該形態は、制御上のロボットの数が、実際に制御装置に接続されるロボットの数よりも多い場合に相当する。複数のロボットの同期制御を実現するために、仮想ロボットがその同期制御の基準となる。このように基準として仮想ロボットを制御上設定することで、同期制御のためのプログラム作成が容易となり得る。
【0015】
ここで、上述までの制御装置において、前記処理部は、逐次実行される所定の実行形式に従ったプログラムを実行してインタプリタにより該プログラムの少なくとも一部が解釈されて生成される中間コードに従って、前記制御周期毎に前記所定の指令値を演算可能に構成され、更に、前記制御周期毎に、実行毎に全体が実行される他の実行形式に従ったプログラムを実行して、他の制御対象を制御するための他の指令値を演算可能に構成され、前記出力部は、前記一又は複数のロボット及び前記他の制御対象を同期制御するために、前記処理部により演算された前記所定の指令値を出力してもよい。このように制御装置が、実行形式の種類が異なるプログラムを有することで、その異なる実行形式のプログラムが利用可能となり、ユーザは、ロボットや他の制御対象の制御に適したプログラムを適宜選択でき制御装置の利便性が高められる。
【発明の効果】
【0016】
ロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合であっても、ロボットの同期制御を好適に実現し得る。
【図面の簡単な説明】
【0017】
図1】統合コントローラを含む制御システムの概略構成を示す図である。
図2】統合コントローラの機能をイメージ化した機能ブロック図である。
図3】統合コントローラで制御周期に従って実行される処理の流れを示す図である。
図4】統合コントローラで実行されるロボット制御に関する第1のフローチャートである。
図5】統合コントローラで実行されるロボット制御に関する第2のフローチャートである。
図6】統合コントローラで実行されるロボット制御に関する第3のフローチャートである。
図7】ロボット間の同期制御を説明するための図である。
【発明を実施するための形態】
【0018】
<適用例>
実施形態に係る制御装置の適用例について、図1及び図2に基づいて説明する。図1は、当該制御装置100が適用される制御システム1の概略構成図であり、図2は、制御装
置100に形成される機能部をイメージ化した図である。
【0019】
制御装置100は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置100は、後述するような制御演算を実行する一種のコンピュータである。制御装置100は、フィールドネットワーク2を介して各種のフィールド機器と接続されてもよい。フィールド機器は、製造装置や生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報をやり取りする入出力装置などを含み、図1においては、フィールド機器として、ロボット210や、サーボドライバ220及びモータ222が例示されている。サーボドライバ220は、制御装置100からの指令値(例えば、位置指令や速度指令など)に従って、モータ222を駆動する。また、ロボット210としては、パラレルロボット、スカラロボット、多関節ロボットが例示できる。このように制御装置100は、ロボット210やサーボドライバ220及びモータ222を統合的に制御し得るように構成された制御装置であり、その詳細については後述する。図1に示すように、制御装置100は、複数のロボット210だけを制御対象としてもよく、ロボット210と、サーボドライバ220及びモータ222とを交えて制御対象としてもよい。
【0020】
制御装置100は、フィールドネットワーク2などを介して、1または複数のフィールド機器との間でデータをやり取りする。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、本願においては、「フィールドネットワーク」と総称する。制御装置100は、各種のフィールド機器において収集または生成されたデータ(以下、「入力データ」とも称す。)を収集する処理(入力処理)、フィールド機器に対する指令などのデータ(以下、「出力データ」とも称す。)を生成する処理(演算処理)、生成した出力データを対象のフィールド機器へ送信する処理(出力処理)等を行う。
【0021】
ここで、フィールドネットワーク2は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)等が知られている。そして、フィールドネットワーク2を介して、制御装置100とフィールド機器との間でやり取りされるデータは、数100μsecオーダ~数10msecオーダのごく短い周期で更新されることになる。なお、このようなやり取りされるデータの更新処理は、入出力リフレッシュ処理とも称される。
【0022】
また、制御装置100は、上位ネットワーク6を介して、他の装置にも接続されている。上位ネットワーク6には、一般的なネットワークプロトコルであるイーサネット(登録商標)やEtherNet/IP(登録商標)が採用されてもよい。より具体的には、上位ネットワーク6には、1または複数のサーバ装置10が接続されてもよい。サーバ装置10としては、データベースシステム、製造実行システム(MES:Manufacturing Execution System)などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これに限らず、情報系サービスを提供する装置を上位ネットワーク6に接続するようにしてもよい。
【0023】
ここで、図2に基づいて、制御装置100の構成について説明する。制御装置100は、上記の通り所定の制御演算を実行する一種のコンピュータであり、当該制御演算に必要なプロセッサやメモリを備えている。当該プロセッサは、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などで構成される。プロセッサとしては、複数のコアを有する構成を採用してもよいし、当該プロセッサを複数配置してもよい。当該メモリとしては、DRAM(Dynamic Random Acces
s Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置や、HD
D(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。そして、プロセッサは、メモリに格納された各種プログラムを読出して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。メモリには、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラム(IECプログラム51およびアプリケーションプログラム52)が格納される。
【0024】
なお、本願におけるIECプログラム51とは、実行毎に全体がスキャンされて、実行毎に1または複数の指令値が演算されるプログラムであり、典型的には、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規
格IEC61131-3に従って記述された1または複数の命令からなるプログラムを包含する。IECプログラム51には、シーケンス制御およびモーション制御の命令が含まれる。このようなIECプログラム51は、制御周期毎にすべてのプログラムが実行(スキャン)される実行形式に対応するものであり、即時性および高速性が要求される制御に好適である。一方で、本願におけるアプリケーションプログラム52は、ロボットを用いて特定の加工や動作を行うための制御プログラムであり、ロボットによる制御アプリケーションを実現するための1または複数の命令からなるプログラムを包含し、IECプログラム51とは区別される。ロボット制御に関するアプリケーションプログラム52は、一例として、ロボット言語を用いて記述され、1行ずつ逐次実行されるインタプリタ方式が採用される。なお、制御装置100は、IECプログラム51を用いてロボットを制御するように構成されても構わない。
【0025】
そして、図2に示すように、制御装置100は、制御アプリケーション処理部30と、IECプログラム処理部40と、上位ネットワークインターフェイス20と、下位ネットワークインターフェイス60と、を有する。下位ネットワークインターフェイス60は、IECプログラム処理部40および制御アプリケーション処理部30と、フィールドネットワーク2を介して接続されているフィールド機器との間のデータのやり取りを仲介する。上位ネットワークインターフェイス20は、IECプログラム処理部40および制御アプリケーション処理部30と、上位ネットワーク6を介して接続されているサーバ装置10との間のデータのやり取りを仲介する。例えば、制御装置100は、上位ネットワーク6を介して接続されているサーバ装置10から、生産の開始/終了といった指示を受ける。サーバ装置10は、制御アプリケーションを動作させるためのアプリケーションプログラムおよびレシピ情報(生産に適したパラメータなどの情報)などを制御装置100に送信することもある。
【0026】
IECプログラム処理部40は、予め定められた制御周期毎にIECプログラム51を実行(スキャン)して1または複数の指令値を演算する。すなわち、IECプログラム処理部40は、IECプログラム51に従って、制御周期毎に指令値を演算する。なお、本願では、モータ222を含んで構成される所定の装置を制御するためにIECプログラム51の実行が行われるものとする。そして、モーション処理部42は、IECプログラム51に含まれるモーション命令に従って、制御周期毎に指令値を演算する機能を提供する。すなわち、IECプログラム51に含まれるモーション命令は、複数の制御周期に亘る挙動を指示する命令(例えば、モータ222で構成される所定の装置の出力が何らかの軌道を描くための命令)を含む。このようなモーション命令が実行されると、実行されたモーション命令の指示内容に従って、モーション処理部42が制御周期毎に指令値を演算する。すなわち、モーション処理部42は、上記の所定の装置に対して制御周期毎に指令値を出力することで、モーション命令により指示された挙動を実現する。
【0027】
また、IECプログラム処理部40は、共有メモリ41を有している。共有メモリ41
には、IECプログラム処理部40による処理結果の一部または全部が共有メモリ41に格納され、制御アプリケーション処理部30は、IECプログラム処理部40の共有メモリ41に格納されたデータを参照することができる。また、制御アプリケーション処理部30からIECプログラム処理部40の共有メモリ41へのデータ書込みも可能であってもよく、このように制御アプリケーション処理部30から書込まれたデータは、モーション処理部42から参照可能とされる。
【0028】
次に、制御アプリケーション処理部30は、アプリケーションプログラム52およびレシピ情報などに基づいて、制御アプリケーションを制御するための指令値を演算する。なお、本願では、ロボット210を制御するためにアプリケーションプログラム52が制御アプリケーション処理部30によって実行されるものとする。制御アプリケーション処理部30は、IECプログラム処理部40による指令値の演算および出力と同期して、制御アプリケーション用の指令値を演算および出力する。すなわち、制御アプリケーション処理部30は、IECプログラム処理部40による演算処理と同期して、ロボット210を制御するための指令値の演算処理を実行する。なお、このIECプログラム処理部40と制御アプリケーション処理部30の同期処理については、後述する。IECプログラム処理部40による指令値の演算処理と同期した指令値の演算を実現するために、制御アプリケーション処理部30は、モーション処理部32と、バッファ33と、インタプリタ34、生成部35とを含む。
【0029】
インタプリタ34は、逐次アプリケーションプログラム52の少なくとも一部を解釈して中間コードを生成するとともに、生成した中間コードを格納するバッファ33を有する。本願における中間コードは、制御周期毎に指令値を演算するための命令を包含する概念であり、1または複数の命令、あるいは、1または複数の関数を含んでもよい。そして、モーション処理部32は、インタプリタ34が事前に生成しバッファ33に格納されている中間コードに従って、制御周期毎に指令値を演算する。一般的に、アプリケーションプログラム52に記述される命令(コード)は、逐次実行されるために、指令値の演算周期を保証できないが、本願開示では、このように中間コードを利用することで、モーション処理部32は、制御周期毎に指令値を演算できるようになる。中間コードにおいて記述される命令には、各制御アプリケーションに応じた座標系が用いられてもよい。
【0030】
ここで、制御アプリケーション処理部30によって駆動制御されるロボット210は一台に限られず、複数台のロボット210が制御され得る。そして、モーション処理部32は、その複数台のロボット210同士を同期制御することも可能である。その同期制御の詳細については、後述する。また、生成部35は、そのロボット210間の同期制御や、ロボット210とサーボドライバ220等との同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する機能部である。すなわち、生成部35は、実際にはロボットが実在していないにもかかわらず、制御装置100による同期制御のために仮想的にロボットの出力信号を生成する機能部である。
【0031】
<プログラムの同期実行>
制御装置100においては、IECプログラム51とアプリケーションプログラム52の同期実行が実現される。これらのプログラムが同期実行されることで、ロボット210とサーボドライバ220等とが同期制御されることになる。制御アプリケーション処理部30のインタプリタ34は、制御周期より長い周期、例えば、制御周期の2倍分の周期毎にアプリケーションプログラム52を逐次実行する。ただし、IECプログラム処理部40のモーション処理部42および制御アプリケーション処理部30のモーション処理部32は、いずれも同一の制御周期毎に指令値を演算する。したがって、制御装置100からの指令値の出力は、いずれも予め定められた制御周期で同期して行われる。このように、IECプログラム処理部40および制御アプリケーション処理部30は、アクチュエータ
の動きを連続的に制御するためのモーション処理部をそれぞれ有しており、これらのモーション処理部が同期して指令値を演算することで、IECプログラム51に従う制御およびアプリケーションプログラム52に従う制御の両方を制御周期と同期させて実行することができ、これによって制御周期単位での精密な制御が実現される。
【0032】
次に、制御装置100におけるIECプログラム51およびアプリケーションプログラム52の実行タイミングの詳細について、図3に基づいて説明する。図3は、制御装置100におけるプログラムの実行タイミングの一例を示す図である。なお、制御装置100においては、プロセッサのリソースを考慮して、優先度が高い高優先度タスク(図3中の上段の処理)と優先度が低い低優先度タスク(図3中の下段の処理)が設定されている。具体的には、下位ネットワークインターフェイス60、IECプログラム処理部40とそのモーション処理部42の実行、および制御アプリケーション処理部30のモーション処理部32の実行は、高優先度タスクとして設定され、制御アプリケーション処理部30のインタプリタ34の実行は低優先度タスクとして設定されている。
【0033】
すなわち、下位ネットワークインターフェイス60に関連する入出力リフレッシュ処理B60、IECプログラム51の実行処理B40、IECプログラム51に従ってモーション処理部42によって行われる指令値の演算処理B42、アプリケーションプログラム52に従ってモーション処理部32によって行われる指令値の演算処理B32は、高優先度タスクとして実行される。一方、アプリケーションプログラム52を逐次解釈する処理B34は、低優先度タスクとして実行される。
【0034】
ここで、高優先度タスクは、予め定められた制御周期T1毎に繰返し実行される。低優先度タスクは、各制御周期内で高優先度タスクが実行されていない期間に都度実行される。すなわち、制御周期毎に、高優先度タスクの実行時間が割当てられ、高優先度タスクの実行時間以外の時間において、低優先度タスクが実行される。
【0035】
まず、高優先度タスクについて説明すると、各制御周期が到来すると、入出力リフレッシュ処理B60が実行された後、IECプログラム処理部40によりIECプログラム51の全体が実行(スキャン)されて、シーケンス制御についての1または複数の指令値が演算される(実行処理B40)。併せて、モーション処理部42によりIECプログラム51に含まれるモーション命令に関するモーション処理が実行されて、モーション命令についての1または複数の指令値が演算される(実行処理B42)。さらに、制御アプリケーション処理部30のモーション処理部32により、バッファ33に格納されている中間コードに従ってロボット210の制御用のモーション指令が準備される(実行処理B32)。以下、同様の処理が制御周期毎に繰返される。なお、モーション処理部32がバッファ33から中間コードを読み出すタイミングは、各制御周期でなくともよい。これは、読み出された中間コードは、複数の制御周期T1にわたって指令値を演算できるだけの命令を含む場合、その複数の制御周期T1においては中間コードの読み出しを一度で行える。
【0036】
このように、ある制御周期における高優先度タスクの実行が完了すると、モータ222等に関するシーケンス制御についての指令値及びそのモーション制御についての指令値と、ロボット210に関する制御アプリケーションについての指令値のセットが用意される。これらの指令値は、基本的には、次の制御周期が到来すると、フィールド側に反映される。すなわち、IECプログラム処理部40および制御アプリケーション処理部30は、同一の制御周期で入力データに応じた指令値を演算するので、入力に同期した出力を実現できる。
【0037】
一方、低優先度タスクについては、制御アプリケーション処理部30のインタプリタ34は、アプリケーションプログラム52を逐次実行する。すなわち、インタプリタ34は
、アプリケーションプログラム52の読込みおよび解析を低優先度で実行する。インタプリタ34がアプリケーションプログラム52を解析処理して生成された中間コードは、バッファ33の容量を考慮しながら、逐次、バッファ33に格納される。バッファ33に格納された中間コードは、制御アプリケーション処理部30のモーション処理部32により順次参照されて、演算処理B32での指令値の生成に用いられる。このとき、インタプリタ34は、高優先度タスクの演算周期である制御周期の整数倍分の中間コードを事前に余分に生成しておくことで、モーション処理部32による処理に影響を与えることなく、制御アプリケーションに対する指令値を制御周期毎に演算できる。
【0038】
また、インタプリタ34は、予め定められた制御アプリケーション同期周期(制御周期の整数倍)が到来する前に、アプリケーションプログラム52の解釈を一時停止する。その一時停止したタイミングで、IECプログラム処理部40と制御アプリケーション処理部30との間でデータ同期を行うことで、双方に整合性をもつデータを共有する。このように、インタプリタ34は、同期周期毎に、IECプログラム処理部40との間で共有するデータを更新する。共有データの更新に併せて、フィールド側から取得される入力データおよび出力データについても更新(データ同期)するようにしてもよい。これにより、制御アプリケーション処理部30側でも、IECプログラム処理部40で取得されたデータを利用してロボット210の制御が可能となる。制御アプリケーション同期周期は、制御周期の整数倍に設定されれば、どのような長さであってもよい。制御アプリケーションにおいて要求される制御の精度などに応じて、適宜設定される。
【0039】
図1に示すように、制御装置100の制御対象として複数台のロボット210が制御装置100に接続されている場合、その複数台のロボット210間でも同期制御が可能とされる。例えば、制御装置100に3台のロボット210のみが接続されているときに、この3台のロボット210間で同期制御を行い得る。このときは、高優先度タスクとして、制御周期T1において入出力リフレッシュ処理B60が実行された後に、制御アプリケーション処理部30のモーション処理部32により、バッファ33に格納されている中間コードに従ってロボット210の制御用のモーション指令が演算される。当該中間コードは、複数台のロボット210を同期制御するためのコードとなっており、その結果、算出されたモーション指令も複数台のロボット210の同期制御を実現するものである。
【0040】
<第1の形態>
ここで、生成部35の第1の形態について説明する。ロボット210とサーボドライバ220等との間で同期制御を行っている場合(すなわち、IECプログラム51とアプリケーションプログラム52とが同期実行されている場合)、又は、ロボット210同士で同期制御を行っている場合(すなわち、アプリケーションプログラム52内において同期制御が行われている場合)において、何らかの目的のために、当該同期制御に含まれる一のロボット210がその同期制御から除外される場合がある。例えば、一のロボット210が、メンテナンス目的で制御装置100との接続が切られてしまう場合等が例示できる。このように一のロボット210が同期制御から除外されてしまうと、同期制御において実在する制御対象が存在しなくなるため、それまで実行されていたアプリケーションプログラム52や同期実行されていたIECプログラム51の実行を継続することが難しくなる。同期実行を継続させるためには、一のロボット210が除外されたことを各プログラムに反映させる修正を行う必要があり、ユーザの作業負荷が小さくない。
【0041】
そこで、このような場合でもユーザに特段の作業負荷を掛けずに済むように、図4図6の処理が行われる。なお、図4図6の処理は、ロボット210とサーボドライバ220等との間で同期制御を行っていた場合において、一のロボット210が同期制御から除外された場合に対応する処理を表している。図4は、上述した高優先度タスクの処理に関するフローチャートであり、図5は、上述した低優先度タスクの処理に関するフローチャ
ートである。また、図6は、一のロボット210の同期制御からの除外対応に関するフローチャートである。
【0042】
先ず、図4に基づいて、高優先度タスクの処理の流れについて説明する。制御周期T1が到来すると、下位ネットワークインターフェイス60が入出力リフレッシュ処理を実行する(S101の処理)。これによって、直前の制御周期T1において演算された指令値(B40、B42、B32等による指令値)がフィールド機器のアクチュエータ等へ出力されるとともに、フィールド機器からの入力データが取得される。続いて、S102において、今回の制御周期がデータ同期のタイミングと一致するか否かが判定される。そこで肯定判定されると、IECプログラム処理部40と制御アプリケーション処理部30との間でデータ同期が実行される(S103の処理)。またS102で否定判定されると、処理はS104へ進む。
【0043】
次に、S104では上記の実行処理B40が行われ、続いてS105では上記の実行処理B42が行われる。その後、S106で、ロボット210を制御するためのモーション指令の準備を行う、上記のロボット実行処理B32が行われる。ここで、ロボット実行処理B32において、同期制御から一のロボット210が除外されていない場合には、アプリケーションプログラム52がそのまま実行されることになる。一方で、同期制御から一のロボット210が除外されている場合には、後述する図6に示す除外対応処理によって、アプリケーションプログラム52に対して生成部35による処理が干渉する形で同期制御が行われることになる。
【0044】
図4に示す高優先度タスクの一連の処理により演算、準備された指令値は、次の制御周期T1が到来したときにフィールドへ出力される。そして、当該一連の処理の終了後であって次の制御周期T1が到来するまでの期間において、図5に示す低優先度タスクが実行されることになる。
【0045】
図5に基づいて、低優先度タスクの処理の流れについて説明する。低優先度タスクは、インタプリタ34によるアプリケーションプログラム52の解釈処理に関するものである。先ず、S201で、制御アプリケーション処理部30により、バッファ33に中間コードが残っているか否かが判定される。当該判定を行うのは、バッファ33の容量を超えた中間コードの生成を行わないようにするためである。S201で肯定判定されれば低優先度タスクは終了し、否定判定されれば処理はS202へ進む。S202では、インタプリタ34によって、アプリケーションプログラム52の一部が読み込まれる。例えば、アプリケーションプログラム52を構成するコードの一行分が読み込まれる。そして、S203では、インタプリタ34によって読込んだコードが解釈されて中間コードが生成される。生成された中間コードは、S204でバッファ33に格納される。なお、S202~S204の処理に関し、実行対象となるアプリケーションプログラムが存在しない場合にはこれらの処理は行われず、結果として、バッファ33には中間コードは格納されないことになる。このような一連の処理を有する低優先度タスクは、自身に対してプログラムの実行時間が割当てられている期間において繰返される。
【0046】
このように図4図5に示す一連の処理が行われることで、制御装置100において、図3に示す実行タイミングで、IECプログラム51およびアプリケーションプログラム52が実行されることになる。なお、図1に示すように制御装置100に複数台のロボット210だけが接続され、そのロボット210間で同期制御が行われる場合には、アプリケーションプログラム52のみが実行されることになる。高優先度タスク処理においてS104、S105が省略された状態で、同期制御のためのロボット実行処理B32が行われることになる。
【0047】
次に、図6に基づいて、一のロボット210の同期制御からの除外対応に関連する処理(除外対応処理)について説明する。当該除外対応処理は、高優先度タスクおよび低優先度タスクの一部として制御アプリケーション処理部30によって実行される。先ず、S301では、同期制御の対象から一のロボット210が除外されたことが検知された否かが判定される。それまでロボット210とサーボドライバ220等との間で同期制御を行っていた場合、又は、複数台のロボット210間で同期制御を行っていた場合において、そこに含まれていた一のロボット210が、制御的に制御装置100の制御対象ではない状態となることが「除外状態」として検知される。一例としては、一のロボット210と制御装置100との電気的な接続が保持されていない状態であれば、除外状態が検知されることになる。S301で否定判定されると処理はS302へ進み、肯定判定されるとS304へ進む。
【0048】
ここでS302へ進んだ場合について説明する。S302では、同期制御が行われているロボット210の出力の取得が済んでいるか否かが判定される。ここで言うロボット210の出力とは、アプリケーションプログラム52においてプログラム初めから終わりまでの全てが実行される期間において、同期制御のために必要なロボット210からの出力信号を意味する。一般に、ロボット210は複数の駆動関節を有しており、その各駆動関節を構成するアクチュエータの位置や速度等に関する信号が同期制御におけるフィードバック処理等に使用される場合には、当該信号が、そのロボット210の出力信号とされる。S302で否定判定されると、S303においてロボット210の出力信号が取得される。例えば、同期制御において複数台のロボット210が関与している場合には、各ロボット210の出力信号の取得が行われ、同期制御において一台のロボット210しか関与しない場合には、当該ロボット210の出力信号の取得が行われる。取得されたロボット210の出力信号は、制御アプリケーション処理部30が有する、不図示のメモリに格納される。なお、S302で肯定判定されると、除外対応処理を終了する。
【0049】
また、S301で肯定判定され処理がS304に進んだ場合について説明する。S304では、一のロボット210の除外が検知された場合、上述のS303の処理によって取得されたロボット210の出力信号のうち、同期制御から除外されたロボット210の出力信号が読み込まれる。当該出力信号の読込みは、生成部35によって行われる。
【0050】
続いて、生成部35は、高優先度タスクの進行に合わせて、S304で読み込んだ除外されたロボット210の出力、すなわち、以前には実際に同期制御されていたロボット210の出力を、仮想ロボットの出力としてロボット実行処理B32へ渡す。このことは、実際には同期制御から除外された一のロボット210に代わって、生成部35が、取得してある出力信号を用いてあたかも当該一のロボット210が存在するかのうように出力信号を生成する、すなわち仮想ロボットの出力を生成することを意味する。この結果、一のロボット210は実際には除外されているにもかかわらず、当該一のロボット210を含む当初の同期制御を実現するアプリケーションプログラム52は、特段に修正を加えることなく実行が継続されることになる。そして、モーション処理部32は、一のロボット210の除外前と同じように、同期制御を行うためのロボット210用のモーション指令の演算を継続することができる。
【0051】
また、上記のように生成部35は、実際に存在していた一のロボット210の出力信号を用いて仮想ロボットの出力信号を生成している。そのため、仮想ロボットの出力信号を用いてモーション処理部32がモーション指令の演算を行っても、一のロボット210が除外される前と比べても同程度の精度で同期制御を実現する指令演算が可能となる。
【0052】
<第2の形態>
次に、生成部35の第2の形態について、図7に基づいて説明する。図1に示すように
、ロボット210同士で同期制御を行っている場合(すなわち、アプリケーションプログラム52内において同期制御が行われている場合)において、生成部35は、その同期制御のための基準となる仮想ロボット210’の出力信号を生成することができる。ここで、図7に示すように、仮想ロボット210’とそれぞれの実際のロボット210が同期制御されると、結果として、実際のロボット210の全てが同期制御されることになる。このようにすることで、複数台のロボット210に亘る同期制御を、仮想ロボット210’と個別のロボット210との同期制御に落とし込むことができ、以て、同期制御を実現するためのアプリケーションプログラム52の作成負荷が軽減される。アプリケーションプログラム52は、複数台の実際のロボット210と仮想ロボット210’を含めたロボットを同期制御するためのプログラムとなる。
【0053】
<付記>
予め定められた制御周期毎に一又は複数のロボット(210)を同期制御するための所定の指令値を演算可能に構成された処理部(30)と、
前記所定の指令値を前記制御周期毎に出力する出力部(60)と、
前記同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部(35)と、
を備え、
前記処理部(30)は、前記生成部(35)により生成される前記仮想ロボットの出力信号を用いて、前記所定の指令値を演算する、
制御装置(100)。
【符号の説明】
【0054】
2: フィールドネットワーク
6: 上位ネットワーク
10: サーバ装置
30: 制御アプリケーション処理部
32: モーション処理部
35: 生成部
40: IECプログラム処理部
51: IECプログラム
52: アプリケーションプログラム
100: 制御装置
210: ロボット
210’: 仮想ロボット
220: サーボドライバ
222: モータ
図1
図2
図3
図4
図5
図6
図7