JP2022043871A - 制御装置、制御システムおよびプログラム - Google Patents

制御装置、制御システムおよびプログラム Download PDF

Info

Publication number
JP2022043871A
JP2022043871A JP2020149365A JP2020149365A JP2022043871A JP 2022043871 A JP2022043871 A JP 2022043871A JP 2020149365 A JP2020149365 A JP 2020149365A JP 2020149365 A JP2020149365 A JP 2020149365A JP 2022043871 A JP2022043871 A JP 2022043871A
Authority
JP
Japan
Prior art keywords
engine
robot
control
program
control device
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
JP2020149365A
Other languages
English (en)
Inventor
慎太郎 岩村
Shintaro Iwamura
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 JP2020149365A priority Critical patent/JP2022043871A/ja
Priority to EP21863866.6A priority patent/EP4209314A1/en
Priority to CN202180056383.2A priority patent/CN116056842A/zh
Priority to PCT/JP2021/008668 priority patent/WO2022049805A1/ja
Priority to US18/041,498 priority patent/US20230341835A1/en
Publication of JP2022043871A publication Critical patent/JP2022043871A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4155Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by programme execution, i.e. part programme or machine function execution, e.g. selection of a programme
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/1605Simulation of manipulator lay-out, design, modelling of manipulator
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/41885Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by modeling, simulation of the manufacturing system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/32Operator till task planning
    • G05B2219/32357Simulation of material handling, flexible conveyor system fcs
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/50Machine tool, machine tool null till machine tool work handling
    • G05B2219/50391Robot

Landscapes

  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Robotics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Manufacturing & Machinery (AREA)
  • Mechanical Engineering (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Numerical Control (AREA)
  • Programmable Controllers (AREA)
  • Manipulator (AREA)

Abstract

【課題】複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することが可能な構成を提供する。【解決手段】制御対象を制御するための制御装置は、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンと、ユーザ設定に従って構築される、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールとを含む。【選択図】図1

Description

本発明は、制御対象を制御するための制御装置、制御対象を制御するための制御システム、および当該制御装置を実現するためのプログラムに関する。
FA(Factory Automation)分野においては、視覚センサにより対象物を検出し、その検出結果に基づいてモータやロボットなどを制御するシステムが実現されている。
例えば、特開2019-215635号公報(特許文献1)は、対象物を高精度に位置決めできる制御システムを開示する。この制御システムは、PLC(プログラマブルロジックコントローラ)などにより構成されるモーションコントローラと視覚センサとから構成される。
特開2019-215635号公報
上述の先行技術文献においては、モーションコントローラと視覚センサとは互いに独立した構成となっており、両者は、任意のインターフェイスを介してデータをやり取りする。複数の装置がインターフェイスを介してデータをやり取りする構成を採用した場合には、伝送遅延などが相対的に大きく、高速な制御の実現を阻害する可能性がある。
本発明は、このような従来構成に対して、複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することが可能な構成を提供することを目的とする。
本発明のある実施の形態によれば、制御対象を制御するための制御装置が提供される。制御装置は、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンと、ユーザ設定に従って構築される、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールとを含む。
この構成によれば、制御対象が存在しないような場合でも、模擬モジュールを適用することで、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンの処理を確認および検証できる。これによって、制御装置で実行されるプログラム開発を容易化できる。
また、この構成によれば、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンを任意に組み合わせた処理によって制御対象を制御できる。
制御装置は、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンの処理結果に基づいて、制御対象の状態を仮想空間で視覚化するビジュアライザをさらに含んでいてもよい。この構成によれば、制御対象の一部または全部が存在しない場合であっても、制御対象の状態を確認できる。
模擬モジュールは、ビジュアライザによって視覚化された仮想空間における衝突検知の結果を利用して実現されてもよい。この構成によれば、仮想空間に再現された状態を利用して、任意の制御対象を模擬できる。
模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータを用いて実現されてもよい。この構成によれば、エミュレータを採用することで、任意の装置または設備の挙動を模擬できる。
模擬モジュールは、制御対象に含まれる物体の物理的な動作を模擬するシミュレータを用いて実現されてもよい。この構成によれば、シミュレータを用いることで、制御対象に含まれる物体の物理的な動作を反映した模擬モジュールを提供できる。
制御装置は、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンのいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイスと、仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する模擬モジュールを構築する構築手段とをさらに含む。この構成によれば、ユーザは、制御装置に関連付けるデバイスを任意に選択できる。
PLCエンジンは、ロボットを駆動する1または複数のモータを制御するモーション制御命令をサイクリック実行し、ロボットコントロールエンジンは、ロボットプログラムに従って、ロボットを制御するための命令を順次生成するようにしてもよい。この構成によれば、ロボットコントロールエンジンが制御するロボットに加えて、別の制御方式のロボットも制御できる。
制御装置は、共通のハードウェアリソースを管理するハイパーバイザをさらに含んでいてもよい。ハイパーバイザは、リアルタイムOSおよび汎用OSの実行環境を提供してもよい。PLCエンジンは、リアルタイムOS上で実行されてもよい。ロボットコントロールエンジンおよび画像処理エンジンは、汎用OSで実行されてもよい。この構成によれば、共通のハードウェアリソースを利用して、複数種類の処理を組み合わせて実現できる。
本発明の別の実施の形態によれば、制御対象を制御するための制御システムが提供される。制御システムは、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンとを含む制御装置と、ユーザ設定に従って、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールを構築するとともに、当該構築した模擬モジュールを制御装置へ提供するサポート装置とを含む。
本発明のさらに別の実施の形態によれば、制御対象を制御するための制御装置を実現するためのプログラムが提供される。プログラムはコンピュータを、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンと、ユーザ設定に従って構築される、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールとして機能させる。
本発明によれば、複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することが可能な構成を提供できる。
本実施の形態に係る制御装置の適用例を示す模式図である。 本実施の形態に係る制御システムの構成例を示す模式図である。 本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成する制御装置に実現されるソフトウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成する制御装置に実現されるソフトウェア構成の要部を示す模式図である。 本実施の形態に従う制御システムの制御対象の一例を示す模式図である。 図7に示すコンベアシステムにおける処理手順を示すフローチャートである。 図7に示すコンベアシステムにおける処理を実現するための制御装置に実現されるソフトウェア構成例を示す模式図である。 本実施の形態に係る制御システムに実装されるビジュアライザのより詳細な構成を示す模式図である。 本実施の形態に係る制御システムに実装されるビジュアライザが提供する再現画像の一例を示す模式図である。 図7に示すコンベアシステムが実在しない場合であっても制御装置における処理を実行するためのソフトウェア構成例を示す模式図である。 図12に示すビジュアライザによる衝突検出を行うための仮想オブジェクトの設定例を示す模式図である。 図7に示すコンベアシステムにおいて産業用ロボットが配置されていない状態でユーザプログラムを実行する場合を説明するための図である。 図14に示す状態を実現するためのソフトウェア構成例を示す模式図である。 本実施の形態に従う制御システムにおいて提供されるユーザプログラムに係る設定画面の一例を示す図である。 本実施の形態に従う制御システムにおけるユーザプログラムの開発処理の概略処理を示すフローチャートである。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。本実施の形態に係る制御装置は、様々な処理ロジックを組み合わせて様々なデバイスを制御できる。
図1は、本実施の形態に係る制御装置100の適用例を示す模式図である。図1を参照して、制御装置100は、任意の制御対象4を制御する。
本明細書において、「制御対象」は、何らかの物を生産等するための装置や設備に限らず、制御装置100に対して任意の情報を提供する任意の装置、および、制御装置100からの指令が出力される先の任意の装置を含む。すなわち、「制御対象」は、制御装置100における制御演算に関連する任意の装置を含み得る。
図1(A)に示すように、制御装置100は、PLCエンジン136と、ロボットコントロールエンジン1420と、画像処理エンジン1422とを含む。
PLCエンジン136は、PLCとしての典型的な機能を提供するモジュールであり、シーケンス命令を含むプログラムをサイクリック実行する。
ロボットコントロールエンジン1420は、ロボットコントローラとしての機能を提供するモジュールであり、ロボットを制御するための処理を実行する。
画像処理エンジン1422は、画像処理装置としての機能を提供するモジュールであり、カメラからの画像に対して画像処理を実行する。
PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422は、データを交換可能になっている。
図1(A)には、制御装置100が現実の制御対象4を制御している状態を示す。PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422は、必要に応じてデータを交換しつつ、制御対象4を制御する。
このように、本実施の形態に従う制御装置100は、複数種類の制御機能を有しており、制御をより簡単な構成で実現できる。
なお、制御装置100が制御する設備や機械を構築中の段階においては、制御対象4の一部がまだ用意できないような状態も存在し得る。このような場合であっても、本実施の形態に従う制御装置100は、模擬モジュール148を利用することで、現実の制御対象が存在しているのと同様の状態で、処理を実行することができる。
図1(B)には、制御対象4の一部に代えて、模擬モジュール148を実装した構成例を示す。模擬モジュール148は、制御対象4と、ロボットと、カメラとのうち少なくとも一部を模擬する。模擬モジュール148は、ユーザ設定に従って任意に構築される。模擬モジュール148が模擬する対象は、いずれであってもよい。
このような模擬モジュール148を任意に実装することで、制御対象4のすべてが利用できなくても、制御装置100で実行されるプログラムの挙動などを確認できる。このような機能によって、制御装置100で実行されるプログラムの開発を容易化できる。
<B.制御システムの構成例>
図2は、本実施の形態に係る制御システム1の構成例を示す模式図である。図2を参照して、本実施の形態に係る制御システム1の構成例について説明する。
制御システム1は、1つの制御装置で様々なデバイスを制御する統合型のシステムである。より具体的には、制御システム1は、統合的な制御を実現するための制御装置100を含む。制御装置100は、制御対象を制御するための装置であり、典型的には、汎用的なアーキテクチャに従うハードウェア(例えば、産業用パソコン)を用いて実現される。
制御システム1は、制御装置100と産業用のネットワークであるフィールドネットワーク14を介して接続される1または複数のデバイスをさらに含む。フィールドネットワーク14のプロトコルの一例として、EtherCAT(登録商標)を採用してもよい。
図2に示す制御システム1は、デバイスの一例として、カスタムロボット550を構成するサーボドライバ500と、産業用ロボット650を制御するためのロボットコントローラ600と、安全コントローラ700と、IOユニット800とを含む。
安全コントローラ700には、ライトカーテンなどの安全デバイス750が電気的に接続されており、IOユニット800には、任意のセンサおよび/または任意のアクチュエータが電気的に接続されている。
制御装置100は、上位ネットワーク12を介して、サポート装置200と、表示装置300と、サーバ装置400と接続されている。上位ネットワーク12は、ネットワークハブ10を用いて分岐したトポロジーを実現してもよい。上位ネットワーク12のプロトコルの一例として、EtherNet/IPなどの産業用のイーサネット(登録商標)を採用してもよい。
制御装置100は、画像処理用のカメラ20と接続されている。後述するように、制御装置100は、カメラ20により撮像された画像を処理する機能を有していてもよい。
このように、本実施の形態によれば、1つの制御装置100で様々なデバイスを制御する統合型の制御システム1を提供できる。
<C.ハードウェア構成例>
次に、本実施の形態に係る制御システム1を構成する各装置のハードウェア構成の一例について説明する。
(c1:制御装置100)
図3は、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示す模式図である。図3を参照して、制御装置100は、プロセッサ102と、メインメモリ104と、入力部106と、表示部108と、ストレージ110と、通信コントローラ112,114と、光学ドライブ116と、メモリカードインターフェイス120と、USBコントローラ124とを含む。これらのコンポーネントは、プロセッサバス128を介して接続されている。
プロセッサ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)などの不揮発性記憶装置などで構成される。
入力部106は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。
表示部108は、ディスプレイや各種インジケータなどで構成され、プロセッサ102からの処理結果などを出力する。
ストレージ110には、基本的な機能を実現するためのOS(Operating System)1102と、PLCエンジンプログラム1104と、アプリケーションエンジンプログラム1106と、ユーザプログラム1108と、プログラム実行設定1110とが格納される。OS1102は、後述するような仮想環境を実現するためのハイパーバイザ、RTOS(Real Time Operating System)、および汎用OSを含んでいてもよい。PLCエンジンプログラム1104は、PLCに相当する実行環境を提供する。アプリケーションエンジンプログラム1106は、任意のアプリケーションプログラムを実行するための環境を提供する。
OS1102、PLCエンジンプログラム1104およびアプリケーションエンジンプログラム1106は、制御装置100を実現するための主たるプログラムに相当する。
ユーザプログラム1108は、ロボット制御や視覚センサに係る処理を実現するためのアプリケーションプログラムと、シーケンス命令および/またはモーション制御命令を含むPLCプログラムとを含んでいてもよい。PLCプログラムは、IEC61131-3準拠した形式で記述されてもよく、そのため、以下では、PLCエンジンで実行されるプログラムを「IECプログラム」とも称する。なお、本明細書において、「IECプログラム」は、IEC61131-3準拠しない形式で記述されたプログラムも含み得る。
プログラム実行設定1110は、ユーザプログラム1108を実行するための環境などを規定する設定値を含む。後述するように、プログラム実行設定1110は、制御対象の一部または全部を模擬する模擬モジュール148の有効化/無効化ならびに各エンジンとの接続関係などを規定する。
通信コントローラ112,114は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。図2に制御システム1においては、通信コントローラ112は、上位ネットワーク12を介したデータ通信を担当し、通信コントローラ114は、フィールドネットワーク14を介したデータ通信を担当する。
光学ドライブ116は、コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体118(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)から任意のデータを読み取り、および、任意のデータを記憶媒体118に書き込むことができる。
メモリカードインターフェイス120は、着脱可能な記憶媒体の一例であるメモリカード122を受け付ける。メモリカードインターフェイス120は、メモリカード122から任意のデータを読み取り、および、任意のデータをメモリカード122に書き込むことができる。
USBコントローラ124は、USB接続を介して、任意の情報処理装置との間でデータをやり取りする。
(c2:サポート装置200)
図4は、本実施の形態に係る制御システム1を構成するサポート装置200のハードウェア構成例を示す模式図である。図4を参照して、サポート装置200は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。
サポート装置200は、制御システム1に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な統合開発環境を提供する。統合開発環境においては、制御装置100、表示装置300、サーボドライバ500、ロボットコントローラ600、安全コントローラ700などに向けられた設定、プログラムの作成、およびデバッグなどが可能になっている。
図4を参照して、サポート装置200は、プロセッサ202と、メインメモリ204と、入力部206と、表示部208と、ストレージ210と、通信コントローラ212と、光学ドライブ216と、USBコントローラ224とを含む。これらのコンポーネントは、プロセッサバス228を介して接続されている。
プロセッサ202は、CPUやGPUなどで構成され、ストレージ210に格納されたプログラム(一例として、OS2102および開発プログラム2104)を読出して、メインメモリ204に展開して実行することで、後述するような各種処理を実現する。
メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ210は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
ストレージ210には、基本的な機能を実現するためのOS2102、および、統合開発環境を実現するための開発プログラム2104などが格納される。
開発プログラム2104は、プロセッサ202により実行されることで、統合開発環境を提供する。開発プログラム2104は、選択された仮想のデバイスに対応する模擬モジュール148を構築する構築モジュール2105を含む。模擬モジュール148の構築に係る処理については、後述する。
入力部206は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。
表示部208は、ディスプレイや各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。
通信コントローラ212は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。図2に制御システム1においては、通信コントローラ212は、上位ネットワーク12を介したデータ通信を担当する。
光学ドライブ216は、コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体218(例えば、DVDなどの光学記憶媒体)から任意のデータを読み取り、および、任意のデータを記憶媒体218に書き込むことができる。
USBコントローラ224は、USB接続を介して、任意の情報処理装置との間のデータをやり取りする。
コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体218から、その中に格納されたプログラムが読み取られてストレージ210などにインストールされてもよい。あるいは、サポート装置200で実行される各種プログラムは、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置200が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
なお、制御システム1の稼動中において、サポート装置200は、制御装置100から取り外されていてもよい。
(c3:表示装置300)
本実施の形態に係る制御システム1を構成する表示装置300は、HMI(Human Machine Interface)やPT(Programmable Terminal)とも称され、制御装置100が保持する情報を参照して監視操作画面を提供するとともに、ユーザ操作に対応する指示を制御装置100へ送出する。
表示装置300は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。基本的なハードウェア構成例は、図4に示すサポート装置200のハードウェア構成例と同様であるので、ここでは詳細な説明は行わない。
(c4:サーバ装置400)
本実施の形態に係る制御システム1を構成するサーバ装置400は、例えば、ファイルサーバ、製造実行システム(MES:Manufacturing Execution System)、生産管理システムなどとして機能する。
サーバ装置400は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。基本的なハードウェア構成例は、図4に示すサポート装置200のハードウェア構成例と同様であるので、ここでは詳細な説明は行わない。
(c5:サーボドライバ500)
本実施の形態に係る制御システム1を構成するサーボドライバ500は、電気的に接続されたサーボモータ530を駆動する。サーボモータ530の各々は、カスタムロボット550の移動機構と機械的に連結されている。サーボドライバ500は、モータドライバの一例であり、サーボドライバ500とは異なるモータドライバを採用してもよい。同様に、サーボモータ530は、モータの一例であり、サーボモータ530とは異なるモータ(例えば、誘導型モータやリニアモータなど)を採用してもよい。モータドライバとしては、駆動対象のモータに応じた構成を採用できる。
(c6:ロボットコントローラ600)
本実施の形態に係る制御システム1を構成するロボットコントローラ600は、制御装置100からの指令に従って、産業用ロボット650を駆動する。産業用ロボット650は、例えば、垂直多関節ロボット、水平多関節(スカラ)ロボット、パラレルリンクロボット、直交ロボットなどの任意の汎用ロボットが用いられてもよい。
(c7:安全コントローラ700)
本実施の形態に係る制御システム1を構成する安全コントローラ700は、安全制御を実行する。安全コントローラ700は、典型的には、安全制御に係る制御演算を実行する処理ユニット、安全デバイス750と電気的に接続される1または複数の安全拡張ユニットとを含む。
(c8:IOユニット800)
本実施の形態に係る制御システム1を構成するIOユニット800は、任意のセンサからの信号を受け付けるとともに、任意のアクチュエータへ指令を出力する。すなわち、IOユニット800は、任意のIOデバイスと電気的に接続される。
(c9:その他の形態)
上述のデバイスは、1または複数のプロセッサがプログラムを実行することで必要な機能を提供する実装形態を採用してもよいし、必要な機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いた実装形態を採用してもよい。
<D.ソフトウェア構成例>
次に、本実施の形態に係る制御システム1を構成する制御装置100に実現されるソフトウェア構成例について説明する。
図5は、本実施の形態に係る制御システム1を構成する制御装置100に実現されるソフトウェア構成例を示す模式図である。図5を参照して、制御装置100は、共通のハードウェアリソース130を複数のシステムで共有可能な仮想環境を提供する。
より具体的には、制御装置100においては、共通のハードウェアリソース130を管理するハイパーバイザ132と、RTOS134と、PLCエンジン136と、IECプログラム138と、汎用OS140と、アプリケーションエンジン142と、アプリケーションプログラム144とが実現されている。
ハイパーバイザ132は、RTOS134および汎用OS140の実行環境を提供する。なお、ハイパーバイザ132、RTOS134および汎用OS140は、OS1102(図3)に含まれるコードが実行されることで実現される。
PLCエンジン136は、PLCエンジンプログラム1104(図3)に含まれるコードが実行されることで実現される。PLCエンジン136は、RTOS134上で実行される。
アプリケーションエンジン142は、アプリケーションエンジンプログラム1106(図3)に含まれるコードが実行されることで実現される。アプリケーションエンジン142は、汎用OS140上で実行される。
IECプログラム138およびアプリケーションプログラム144は、ユーザプログラム1108(図3)に含まれていてもよい。
制御装置100のPLCエンジン136は、所定の制御周期でIECプログラム138をサイクリック実行できる環境を提供する。併せて、制御装置100のアプリケーションエンジン142は、汎用OSで実行可能な任意のアプリケーションプログラム144を実行できる環境を提供する。
このように、制御装置100においては、PLCが提供する機能と、汎用パソコンが提供する機能との両方が実現される。
図6は、本実施の形態に係る制御システム1を構成する制御装置100に実現されるソフトウェア構成の要部を示す模式図である。図6を参照して、制御装置100のハイパーバイザ132は、スケジューラ1320および変数マネジャ1322を提供する。スケジューラ1320は、制御装置100における各プログラムの実行タイミングなどを管理する。変数マネジャ1322は、制御装置100で実行されるそれぞれのプログラムが参照可能な変数を保持および更新する。変数マネジャ1322が管理する変数の値は、通信コントローラ114を介して対応するデバイスへ送信され、変数マネジャ1322が管理する変数の値は、通信コントローラ114を介してデバイスから受信した値で更新される。
PLCエンジン136は、変数マネジャ1322が管理する変数の値を参照して、IECプログラム138に含まれるシーケンス命令1382をサイクリック実行する。シーケンス命令1382の実行により算出された変数の値は、変数マネジャ1322に反映される。
また、PLCエンジン136は、変数マネジャ1322が管理する変数の値を参照して、IECプログラム138に含まれるモーション制御命令1384をサイクリック実行する。モーション制御命令1384の実行により算出された変数の値は、変数マネジャ1322に反映される。モーション制御命令1384は、典型的には、カスタムロボット550を構成するサーボドライバ500(図2参照)を制御するための1または複数の命令を含む。モーション制御命令1384は、カスタムロボット550を駆動する1または複数のモータを制御するものであり、サイクリック実行される。
一方、アプリケーションエンジン142は、例えば、ロボットコントロールエンジン1420と、画像処理エンジン1422と、エミュレータ1424と、物理シミュレータ1426と、ビジュアライザ1428とを含む。これらのプログラムは、コンピューティングリソースに応じて適宜実行される。
ロボットコントロールエンジン1420は、アプリケーションプログラム144に含まれるロボットプログラム1442を解釈して、産業用ロボット650(図2参照)を制御するための命令を順次生成する。ロボットプログラム1442は、V+言語などのロボット制御専用プログラミング言語やGコードなどのNC制御に係るプログラミング言語などで記述されてもよい。このように、ロボットコントロールエンジン1420は、ロボットプログラム1442に従って、産業用ロボット650を制御するための命令を順次生成する。
画像処理エンジン1422は、画像処理設定1444に従って、カメラ20により撮像された画像に対して画像処理を実行する。画像処理エンジン1422による画像処理の結果は、変数マネジャ1322に反映される。画像処理エンジン1422で実行される画像処理は、例えば、キズ検査、物体検出、物体認識、文字認識などを含む。
エミュレータ1424は、制御装置100が制御する制御対象(装置や設備など)の挙動を模擬する。エミュレータ1424は、変数マネジャ1322が管理する変数の値を参照して、予め定義されたモデルに沿った結果を出力する。
物理シミュレータ1426は、制御装置100が制御する制御対象に含まれる物体の物理的な動作を模擬する。物理シミュレータ1426は、変数マネジャ1322が管理する変数の値を参照して、予め定義された物理モデルに沿った結果を出力する。
なお、エミュレータ1424および物理シミュレータ1426を必ずしも区別しなくてもよい。
ビジュアライザ1428は、制御装置100が制御する制御対象(装置や設備など)の状態を仮想空間で視覚化する。ビジュアライザ1428は、PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422の処理結果に基づいて、制御対象の状態を仮想空間で視覚化する。より具体的には、ビジュアライザ1428は、変数マネジャ1322が管理する変数の値を参照して、予め定義されたモデルおよび設定に沿って、各時点の状態を反映した視覚化に必要なデータを生成する。
後述するように、本実施の形態に従う制御システム1は、現実の制御対象を制御することができるとともに、制御対象の一部または全部が実在しない場合でも、制御システム1全体の処理を実行することができる。
<E.処理例>
次に、本実施の形態に従う制御システム1における処理例について説明する。
図7は、本実施の形態に従う制御システム1の制御対象の一例を示す模式図である。図7を参照して、制御システム1の制御対象として、ワーク8がコンベア6により順次搬送されるコンベアシステム2を想定する。
コンベア6の上流側に配置されたカスタムロボット550がワーク8をコンベア6上にプレイスする。コンベア6により下流側に搬送されたワーク8は、カメラ20により撮像された画像に基づいてトラッキングされる。ワーク8のトラッキング結果に基づいて、産業用ロボット650がワーク8をピックする。産業用ロボット650がワーク8をピックする範囲(ピック範囲)は、予め定められている。ピック範囲の下流側には、ピックされなかったワーク8を検出するための光電センサ30が設けられている。
図7に示すコンベアシステム2において、コンベア6は任意の速度で回転できる。コンベア6にはエンコーダ32が設けられており、エンコーダ32から出力されるパルス数(あるいは、パルス数から算出される回転速度)は、制御装置100に入力される。コンベア6にはコンベア座標系が定義されている。コンベア6上のワーク8の位置は、コンベア座標系で管理される。
カスタムロボット550は、コンベア6の回転速度に同期して移動することで、ワーク8をコンベア6上にプレイスする際に速度差が生じないようになっている。同様に、産業用ロボット650は、コンベア6の回転速度に同期して移動することで、ワーク8をコンベア6上からピックする際に速度差が生じないようになっている。
カメラ20にはカメラ座標系が定義されている。カメラ座標系は、カメラ20により撮像された画像内に現れるワーク8の位置を管理するために用いられる。
なお、カスタムロボット550および産業用ロボット650のそれぞれも独自の座標系を有していてもよい。
コンベアシステム2の全体に対して、ワールド座標系が定義されており、ワールド座標系とコンベア座標系との間、および、ワールド座標系とカメラ座標系との間は、位置を相互に変換するための変換マトリックスが予め用意される。
図8は、図7に示すコンベアシステム2における処理手順を示すフローチャートである。図8を参照して、図7に示すコンベアシステム2に対する制御は、典型的には、制御装置100のPLCエンジン136と、ロボットコントロールエンジン1420と、画像処理エンジン1422とのそれぞれで実行される処理により実現される。
PLCエンジン136は、入出力リフレッシュ処理を実行する(ステップS100)。入出力リフレッシュ処理は、直前の制御周期において算出された指令値をデバイスへ出力する処理と、デバイスから入力データを取得する処理を含む。入力データは、コンベア6の回転速度、カスタムロボット550を構成する各サーボモータ530の状態値(位置、速度、加速度など)、産業用ロボット650の現在位置などを含む。
PLCエンジン136は、コンベア6の回転速度またはエンコーダ32のパルス数に基づいて、コンベア6上の各ワーク8の現在位置を管理するトラッキングデータベースを更新する(ステップS102)。トラッキングデータベースは、各制御周期におけるコンベア6上の各ワーク8の現在位置を含む。PLCエンジン136は、コンベア6の回転速度と制御周期の長さとに基づいて、ワーク8の移動距離(直前の制御周期からの差分)を算出し、トラッキングデータベースに含まれる各ワーク8の現在位置を算出した移動距離だけオフセットする。
PLCエンジン136は、画像処理エンジン1422へ撮像トリガを前回送信してから所定の時間が経過したか否かを判断する(ステップS104)。画像処理エンジン1422へ撮像トリガを前回送信してから所定の時間が経過していれば(ステップS104においてYESの場合)、PLCエンジン136は、画像処理エンジン1422へ撮像トリガを送信する(ステップS106)。
画像処理エンジン1422へ撮像トリガを前回送信してから所定の時間が経過していなければ(ステップS104においてNOの場合)、ステップS106の処理はスキップされる。
ステップS104およびステップS106の処理は、カメラ20によるコンベア6上の撮像範囲を撮像するタイミングを決定する処理に相当する。カメラ20により撮像された複数の画像に同一のワーク8が被写体として重複して含まれないように、撮像するタイミングが制御される。
PLCエンジン136は、カメラ20により撮像された画像に基づいて認識されたワーク8の位置を画像処理エンジン1422から受信したか否かを判断する(ステップS108)。カメラ20により撮像された画像に基づいて認識されたワーク8の位置を画像処理エンジン1422から受信すれば(ステップS108においてYESの場合)、PLCエンジン136は、画像処理エンジン1422から受信したワーク8の位置をトラッキングデータベースに追加する(ステップS110)。
カメラ20により撮像された画像に基づいて認識されたワーク8の位置を画像処理エンジン1422から受信していなければ(ステップS108においてNOの場合)、ステップS110の処理はスキップされる。
光電センサ30によりワーク8が検出されたことを示す信号が入力されたか否かを判断する(ステップS112)。光電センサ30によりワーク8が検出されたことを示す信号が入力されると(ステップS112においてYESの場合)、PLCエンジン136は、トラッキングデータベースから対応するワーク8の位置を削除する(ステップS114)。
光電センサ30によりワーク8が検出されたことを示す信号が入力されなければ(ステップS112においてNOの場合)、ステップS114の処理はスキップされる。
PLCエンジン136は、トラッキングデータベースを参照して、ワーク8をコンベア6上にプレイスする条件(プレイス条件)が成立したか否かを判断する(ステップS116)。プレイス条件が成立すれば(ステップS116においてYESの場合)、PLCエンジン136は、カスタムロボット550の動作フラグをオンにセットする(ステップS118)。
プレイス条件が成立していなければ(ステップS116においてNOの場合)、ステップS118の処理はスキップされる。
PLCエンジン136は、トラッキングデータベースを参照して、コンベア6上からワーク8をピックする条件(ピック条件)が成立したか否かを判断する(ステップS120)。ピック条件が成立すれば(ステップS120においてYESの場合)、PLCエンジン136は、ピック対象のワーク8の位置の情報を含む制御指令をロボットコントロールエンジン1420へ送信する(ステップS122)。そして、PLCエンジン136は、トラッキングデータベースからピック対象のワーク8の位置を削除する(ステップS124)。
ピック条件が成立していなければ(ステップS120においてNOの場合)、ステップS122およびS124の処理はスキップされる。
なお、ステップS102~S124の処理は、主として、IECプログラム138に含まれるシーケンス命令1382に記述される。
続いて、PLCエンジン136は、カスタムロボット550の動作フラグがオンにセットされているか否かを判断する(ステップS150)。カスタムロボット550の動作フラグがオンにセットされていれば(ステップS150においてYESの場合)、PLCエンジン136は、IECプログラム138に含まれるモーション制御命令1384に従って、各サーボモータ530の状態値に基づいて、カスタムロボット550を構成する各サーボモータ530を駆動するための指令値を算出する(ステップS152)。
PLCエンジン136は、IECプログラム138に含まれるモーション制御命令1384の実行が完了したか否かを判断する(ステップS154)。IECプログラム138に含まれるモーション制御命令1384の実行が完了すれば(ステップS154においてYESの場合)、PLCエンジン136は、動作フラグをオフにセットする(ステップS156)。
IECプログラム138に含まれるモーション制御命令1384の実行が完了していなければ(ステップS154においてNOの場合)、ステップS156の処理はスキップされる。
カスタムロボット550の動作フラグがオンされていなければ(ステップS150においてNOの場合)、ステップS152~S156の処理はスキップされる。
なお、ステップS150~S156の処理は、主として、IECプログラム138に含まれるモーション制御命令1384に記述される。
画像処理エンジン1422は、PLCエンジン136から撮像トリガを受信したか否かを判断する(ステップS200)。PLCエンジン136から撮像トリガを受信していなければ(ステップS200においてNOの場合)、ステップS200の処理が繰り返される。
PLCエンジン136から撮像トリガを受信すれば(ステップS200においてYESの場合)、画像処理エンジン1422は、カメラ20により撮像された画像を取得し(ステップS202)、取得した画像に含まれるワーク8の位置を認識する(ステップS204)。認識したワーク8の位置は、カメラ座標系により規定される位置となる。
画像処理エンジン1422は、認識したワーク8の位置をワールド座標系の位置に変換し(ステップS206)、変換したワーク8の位置をPLCエンジン136へ出力する(ステップS208)。そして、ステップS200以下の処理が繰り返される。
ロボットコントロールエンジン1420は、PLCエンジン136から新たな制御指令を受信したか否かを判断する(ステップS300)。PLCエンジン136から新たな制御指令を受信していなければ(ステップS300においてNOの場合)、ステップS300の処理が繰り返される。
PLCエンジン136から新たな制御指令を受信すれば(ステップS300においてYESの場合)、ロボットコントロールエンジン1420は、受信した制御指令に従って、ロボットプログラム1442のうち対象の部分を解釈して、産業用ロボット650を制御するための命令を順次生成を開始する(ステップS302)。そして、ロボットコントロールエンジン1420は、順次生成する命令をロボットコントローラ600へ送信する(ステップS304)。
ロボットコントロールエンジン1420は、ロボットコントローラ600から産業用ロボット650の現在位置を取得する(ステップS306)。取得した産業用ロボット650の現在位置は、カメラ座標系により規定される位置となる。ロボットコントロールエンジン1420は、取得した産業用ロボット650の現在位置をワールド座標系の位置に変換し(ステップS308)、変換した産業用ロボット650の現在位置をPLCエンジン136へ出力する(ステップS310)。
ロボットコントロールエンジン1420は、産業用ロボット650を制御するための命令の生成が継続しているか否かを判断する(ステップS312)。産業用ロボット650を制御するための命令の生成が継続していれば(ステップS312においてYESの場合)、ステップS304以下の処理を繰り返す。
産業用ロボット650を制御するための命令の生成が継続していなければ(ステップS312においてNOの場合)、ステップS300以下の処理が繰り返される。
図9は、図7に示すコンベアシステム2における処理を実現するための制御装置100に実現されるソフトウェア構成例を示す模式図である。図9を参照して、PLCエンジン136と、ロボットコントロールエンジン1420と、画像処理エンジン1422とが互いにデータをやり取りするとともに、それぞれのエンジンが制御対象との間でデータあるいは信号をやり取りする。
より具体的には、PLCエンジン136は、コンベアシステム2に含まれるエンコーダ32から回転速度などの信号を取得するとともに、光電センサ30からワーク8を検出する信号を取得する。また、PLCエンジン136は、サーボドライバ500に対して指令値を与えるとともに、サーボドライバ500から状態値を取得する。
さらに、PLCエンジン136は、ロボットコントロールエンジン1420に対して、制御指令を与えるとともに、ロボットコントロールエンジン1420から産業用ロボット650の現在位置を取得する。また、PLCエンジン136は、画像処理エンジン1422に対して、撮像トリガを与えるとともに、画像処理エンジン1422から画像処理エンジン1422により検出されたワーク8の位置を取得する。
ロボットコントロールエンジン1420は、ロボットコントローラ600に対して、産業用ロボット650を制御するための命令を与えるとともに、ロボットコントローラ600から産業用ロボット650の現在位置を取得する。
画像処理エンジン1422は、カメラ20により撮像された画像を取得する。なお、画像処理エンジン1422からカメラ20に対して撮像指令を与えるようにしてもよい。
図9に示すように、制御装置100に含まれるPLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422は、現実の制御対象との間でデータあるいは信号をやり取りすることで、コンベアシステム2を制御する。
<F.ビジュアライザ>
次に、本実施の形態に従う制御システム1に実装されるビジュアライザ1428について説明する。ビジュアライザ1428は、制御装置100が制御する制御対象(装置や設備など)の状態を仮想空間で視覚化する。
図10は、本実施の形態に係る制御システム1に実装されるビジュアライザ1428のより詳細な構成を示す模式図である。図10を参照して、ビジュアライザ1428は、変数マネジャ1322が管理する変数の値を参照して、制御対象を仮想空間で再現した再現画像1430を生成する。再現画像1430は、動画像であってもよいし、静止画像であってもよい。
より具体的には、ビジュアライザ1428は、コンベア6を模擬するコンベアモデル14281と、カスタムロボット550を模擬するカスタムロボットモデル14282と、産業用ロボット650を模擬する産業用ロボットモデル14283と、オブジェクトライブラリ14284とを含む。
オブジェクトライブラリ14284は、再現画像1430を合成するための画像データなどを含む。
図11は、本実施の形態に係る制御システム1に実装されるビジュアライザ1428が提供する再現画像1430の一例を示す模式図である。図11に示すような再現画像1430を制御装置100の表示部108などに表示できる。
ユーザは、表示された再現画像1430を見ながら、ユーザプログラム1108の動作確認や不具合発見などを行うことができる。
現実に制御対象が存在する場合には、ビジュアライザ1428が提供する再現画像1430は、現実の制御対象の挙動をそのまま反映したものとなる。一方、制御対象の全部または一部が現実に存在しなくても、制御装置100の各エンジンが処理を実行するとともに、その処理結果に基づいてビジュアライザ1428があたかも現実の制御対象が存在するような再現画像1430を提供することもできる。
本実施の形態に従う制御システム1では、制御対象の一部または全部が存在しなくても、あたかも現実の制御対象が存在するかのように、ユーザプログラム1108の動作を確認できる。以下、制御装置100が提供するユーザプログラムをフレキシブルに開発できる機能について説明する。
<G.フレキシブルな開発を行うための環境>
本実施の形態に従う制御システム1においては、制御対象の一部または全部を自在に模擬する機構(模擬モジュール)が用意される。
図12は、図7に示すコンベアシステム2が実在しない場合であっても制御装置100における処理を実行するためのソフトウェア構成例を示す模式図である。以下では、図9と図12とを比較しつつ説明する。
図9に示す制御装置100との間でデータあるいは信号をやり取りする制御対象は、制御装置100に実装されるエミュレータ1424、物理シミュレータ1426およびビジュアライザ1428の少なくとも1つにより模擬される。すなわち、模擬モジュールは、エミュレータ1424、物理シミュレータ1426およびビジュアライザ1428の少なくとも1つにより実現されてもよい。このような制御対象の模擬によって、制御対象が実在する場合と同様に、制御装置100においてユーザプログラム1108を実行できる。
(g1:エンコーダ32)
コンベアシステム2のエンコーダ32は、エミュレータ1424にコンベア設定14241を設定することで模擬できる。エミュレータ1424は、コンベア設定14241に従って、エンコーダ32からの回転速度を模擬した情報をPLCエンジン136に提供する。
このように、エンコーダ32についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現される。
(g2:光電センサ30)
コンベアシステム2の光電センサ30は、ビジュアライザ1428に衝突検出設定14285を設定することで模擬できる。ビジュアライザ1428は、衝突検出設定14285に従って、仮想空間において光電センサ30の検出範囲に対応付けて設定された仮想オブジェクトとワーク8との衝突検知を行うことで、ワーク8が検出されたことを示す信号をPLCエンジン136に提供する。衝突検知は、オブジェクト同士の距離の近さに基づいて、当該オブジェクト同士が衝突しているか否かを判断する処理である。
図13は、図12に示すビジュアライザ1428による衝突検出を行うための仮想オブジェクトの設定例を示す模式図である。図13を参照して、仮想空間において光電センサ30の検出範囲に対応付けて仮想オブジェクト14286が設定される。コンベア6上のワーク8の位置は、PLCエンジン136が管理するトラッキングデータベースに応じて更新される。ビジュアライザ1428は、いずれかのワーク8が仮想オブジェクト14286と衝突したか否かを判断し、ワーク8が仮想オブジェクト14286と衝突したと判断すると、光電センサ30によるワーク8の検出を示す信号を生成する。
このように、光電センサ30についての模擬モジュールは、ビジュアライザ1428によって視覚化された仮想空間における衝突検知の結果を利用して実現される。
(g3:カスタムロボット550)
コンベアシステム2のカスタムロボット550は、エミュレータ1424にサーボドライバモデル14242を設定するとともに、物理シミュレータ1426にカスタムロボットモデル14261を設定することで模擬できる。
サーボドライバモデル14242は、サーボドライバ500の応答特性などを反映したパラメータを含む。エミュレータ1424は、サーボドライバモデル14242に従って、PLCエンジン136からの指令値に応じてサーボドライバの状態値を算出し、算出した状態値をPLCエンジン136に提供する。
カスタムロボットモデル14261は、サーボモータ530およびカスタムロボット550のキネマティクスなどを反映したパラメータを含む。物理シミュレータ1426は、カスタムロボットモデル14261に従って、エミュレータ1424により算出される状態値に応じてカスタムロボットモデル14261の状態値および現在位置などを算出する。
なお、図12には、サーボドライバ500およびサーボモータ530を含むカスタムロボット550を、エミュレータ1424および物理シミュレータ1426により模擬する構成例を示すが、単一のエミュレータ1424を用いて模擬するようにしてもよい。
このように、カスタムロボット550についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現されるとともに、制御対象に含まれる物体の物理的な動作を模擬する物理シミュレータ1426を用いて実現される。
(g4:産業用ロボット650)
コンベアシステム2の産業用ロボット650は、エミュレータ1424にロボットコントローラモデル14243を設定するとともに、物理シミュレータ1426に産業用ロボットモデル14262を設定することで模擬できる。
ロボットコントローラモデル14243は、ロボットコントローラ600の応答特性などを反映したパラメータを含む。エミュレータ1424は、ロボットコントローラモデル14243に従って、ロボットコントロールエンジン1420からの命令に応じて、産業用ロボット650を駆動するための内部命令を生成する。エミュレータ1424は、物理シミュレータ1426により算出される産業用ロボット650の現在位置などをロボットコントロールエンジン1420に提供する。
産業用ロボットモデル14262は、産業用ロボット650の応答特性およびキネマティクスなどを反映したパラメータを含む。物理シミュレータ1426は、産業用ロボットモデル14262に従って、エミュレータ1424により算出される内部命令に応じて産業用ロボット650の速度、加速度、現在位置などを算出する。
なお、図12には、ロボットコントローラ600および産業用ロボット650を、エミュレータ1424および物理シミュレータ1426により模擬する構成例を示すが、単一のエミュレータ1424を用いて模擬するようにしてもよい。
このように、産業用ロボット650についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現されるとともに、制御対象に含まれる物体の物理的な動作を模擬する物理シミュレータ1426を用いて実現される。
(g5:カメラ20)
コンベアシステム2のカメラ20は、エミュレータ1424に模擬画像群14244を設定することで模擬できる。模擬画像群14244は、予め定められたワーク8のプレイスパターンに対応する1または複数の画像からなる。エミュレータ1424は、画像処理エンジン1422を介して提供される撮像トリガに応じて、模擬画像群14244に含まれる画像を画像処理エンジン1422に順次提供する。
コンベアシステム2上にワーク8が順次プレイスされた搬送される状態を仮想空間で模擬するとともに、カメラ20に対応する位置に配置された仮想カメラを用いて仮想的な撮像を行うことで、模擬画像群14244を生成してもよい。
このように、カメラ20についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現される。
さらに、模擬画像群14244を用意することなく、ビジュアライザ1428が提供する仮想空間に仮想カメラを設定して、仮想カメラにより仮想的に撮像されることで生成される画像を画像処理エンジン1422に順次提供してもよい。すなわち、エミュレータ1424および模擬画像群14244を用いるのではなく、ビジュアライザ1428に仮想カメラを設定することで、コンベアシステム2のカメラ20を模擬してもよい。
上述の説明においては、制御対象のすべてを模擬した状態で制御装置100においてユーザプログラム1108を実行する場合を例示したが、これに限らず、制御対象の任意の一部を模擬するようにしてもよい。
図14は、図7に示すコンベアシステム2において産業用ロボット650が配置されていない状態でユーザプログラムを実行する場合を説明するための図である。図14(A)には、図7に示すコンベアシステム2において産業用ロボット650がまだ配置されていない状態を示す。図14(A)に示すような状態であっても、上述したような産業用ロボット650を模擬する仕組みを有効化することで、産業用ロボット650が現実に存在しなくても、図14(B)に示すような再現画像1430を表示できる。
ユーザは、図14(B)に示すような再現画像1430を見ながら、ユーザプログラム1108の動作確認や不具合発見などを行うことができる。
図15は、図14に示す状態を実現するためのソフトウェア構成例を示す模式図である。図15に示す制御装置100においては、ロボットコントローラ600および産業用ロボット650を模擬する、エミュレータ1424(ロボットコントローラモデル14243が設定されている)および物理シミュレータ1426(産業用ロボットモデル14262が設定されている)が有効化される。このようなロボットコントローラ600および産業用ロボット650を模擬する模擬モジュール(エミュレータ1424および物理シミュレータ1426を用いて実現される)によって、制御装置100(PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422)は、現実にコンベアシステム2が存在する場合と同様に、ユーザプログラム1108を実行できる。
なお、図14および図15に示すソフトウェア構成例は一例であり、制御装置100が制御する制御対象の任意の一部または全部を模擬する模擬モジュールを有効化することができる。
上述したような環境を提供することで、ユーザは、ユーザプログラム1108をフレキシブルに開発できる。
<H.制御装置100/サポート装置200における設定>
制御装置100で実行されるユーザプログラム1108、および、ユーザプログラム1108を実行するための環境などを規定するプログラム実行設定1110は、ユーザが統合開発環境上で作成する。統合開発環境は、サポート装置200が開発プログラム2104(図4参照)を実行することで実現されてもよい。但し、制御装置100が開発プログラム2104を実行することで、制御装置100が統合開発環境を提供するようにしてもよい。
本実施の形態に従う制御装置100においては、制御対象の任意の一部を模擬して処理を実行することもできる。プログラム実行設定1110(図4参照)は、このような制御対象の任意の一部を模擬するか否かの設定を含む。
図16は、本実施の形態に従う制御システム1において提供されるユーザプログラム1108に係る設定画面の一例を示す図である。図16に示される設定画面250において、ユーザプログラム1108に関連付けられる制御対象のデバイスを選択および設定できる。
制御対象のデバイスは、現実のデバイスに加えて、仮想のデバイス(現実のデバイスを模擬したもの)を含む。
より具体的には、設定画面250は、ユーザプログラム1108に関連付けられるデバイスを登録するデバイス登録フィールド252と、各デバイスのプロパティを登録するデバイスプロパティフィールド254とを含む。
ユーザがデバイス登録フィールド252をクリックすると、デバイスを選択するためのデバイス選択画面260が表示される。デバイス選択画面260は、現実のデバイスの一覧262と、仮想のデバイスの一覧264とを含む。
ユーザは、デバイス選択画面260において、現実のデバイスおよび仮想のデバイスのいずれについても任意に選択ができる。ユーザによる選択結果は、プログラム実行設定1110に反映される。そして、制御装置100で実行されるユーザプログラム1108は、選択されたデバイスに関連付けられる。
このように、サポート装置200(あるいは、制御装置100)は、PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422のいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイスの一例として、図16に示すような設定画面250を提供する。
図17は、本実施の形態に従う制御システム1におけるユーザプログラム1108の開発処理の概略処理を示すフローチャートである。図17に示す各ステップは、典型的には、サポート装置200のプロセッサ202が開発プログラム2104を実行することで実現される。
図17を参照して、サポート装置200は、ユーザによる操作に従って、ユーザプログラム1108のソースコードを生成する(ステップS400)。
サポート装置200は、ユーザによる操作に従って、ユーザプログラム1108に関連付けられるデバイスの選択を受け付ける(ステップS402)。サポート装置200は、選択されたデバイスの種類を判断する(ステップS404)。選択されたデバイスが現実のデバイスであれば(ステップS404において「現実のデバイス」の場合)、サポート装置200は、選択されたデバイスのネットワークアドレスなどの特定情報とユーザプログラム1108とを関連付ける(ステップS406)。
選択されたデバイスが仮想のデバイスであれば(ステップS404において「仮想のデバイス」の場合)、サポート装置200は、選択された仮想のデバイスに対応する模擬モジュールを構築する(ステップS408)。より具体的には、サポート装置200は、エミュレータ1424、物理シミュレータ1426およびビジュアライザ1428のうち1または複数に対して、選択されたデバイスの設定を反映することで、選択されたデバイスを模擬する模擬モジュールを構築する。続いて、サポート装置200は、構築した仮想のデバイスに対応する模擬モジュールとユーザプログラム1108とを関連付ける(ステップS410)。
このように、サポート装置200(あるいは、制御装置100)は、仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する模擬モジュールを構築する。すなわち、サポート装置200(あるいは、制御装置100)は、ユーザ設定に従って、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールを構築することができる。
サポート装置200は、デバイスの選択が終了したか否かを判断する(ステップS412)。デバイスの選択が終了していなければ(ステップS412においてNOの場合)、ステップS402以下の処理が繰り返される。
一方、デバイスの選択が終了していれば(ステップS412においてYESの場合)、サポート装置200は、ユーザプログラム1108のソースコードから実行形式のプログラムを生成し(ステップS414)、デバイスの選択結果を反映したプログラム実行設定1110を生成する(ステップS416)。
最終的に、サポート装置200は、生成したユーザプログラム1108(実行形式)およびプログラム実行設定1110を制御装置100へ転送する(ステップS416)。そして処理は終了する。このように、サポート装置200が構築した模擬モジュールを制御装置100へ提供するようにしてもよい。
<I.変形例>
上述の説明においては、制御装置100とサポート装置200とが分離した構成例を示すが、サポート装置200が提供する機能の一部または全部を制御装置100に組み入れてもよい。この場合、ユーザは、制御装置100が提供する統合開発環境を利用することで、ユーザプログラム1108を開発することができる。
<J.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
制御対象(4)を制御するための制御装置(100)であって、
シーケンス命令(1382)を含むプログラムをサイクリック実行するPLCエンジン(136)と、
ロボット(600,650)を制御するためのロボットコントロールエンジン(1420)と、
カメラ(20)からの画像に対して画像処理を実行する画像処理エンジン(1422)と、
ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュール(148)とを備える、制御装置。
[構成2]
前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンの処理結果に基づいて、前記制御対象の状態を仮想空間で視覚化するビジュアライザ(1428)をさらに備える、構成1に記載の制御装置。
[構成3]
前記模擬モジュールは、前記ビジュアライザによって視覚化された仮想空間における衝突検知の結果を利用して実現される、構成2に記載の制御装置。
[構成4]
前記模擬モジュールは、前記制御対象に含まれる装置または設備の挙動を模擬するエミュレータ(1424)を用いて実現される、構成1~3のいずれか1項に記載の制御装置。
[構成5]
前記模擬モジュールは、前記制御対象に含まれる物体の物理的な動作を模擬するシミュレータ(1426)を用いて実現される、構成1~4のいずれか1項に記載の制御装置。
[構成6]
前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンのいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイス(250)と、
前記仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する前記模擬モジュールを構築する構築手段(2105)とをさらに備える、構成1~5のいずれか1項に記載の制御装置。
[構成7]
前記PLCエンジンは、ロボット(550)を駆動する1または複数のモータ(530)を制御するモーション制御命令(1384)をサイクリック実行し、
前記ロボットコントロールエンジンは、ロボットプログラムに従って、ロボットを制御するための命令を順次生成する、構成1~6のいずれか1項に記載の制御装置。
[構成8]
共通のハードウェアリソース(130)を管理するハイパーバイザ(132)をさらに備え、
前記ハイパーバイザは、リアルタイムOS(134)および汎用OS(140)の実行環境を提供し、
前記PLCエンジンは、前記リアルタイムOS上で実行され、
前記ロボットコントロールエンジンおよび前記画像処理エンジンは、前記汎用OSで実行される、構成1~7のいずれか1項に記載の制御装置。
[構成9]
制御対象(4)を制御するための制御システム(1)であって、
シーケンス命令(1382)を含むプログラムをサイクリック実行するPLCエンジン(136)と、ロボット(600,650)を制御するためのロボットコントロールエンジン(1420)と、カメラ(20)からの画像に対して画像処理を実行する画像処理エンジン(1422)とを含む制御装置(100)と、
ユーザ設定に従って、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュール(148)を構築するとともに、当該構築した模擬モジュールを前記制御装置へ提供するサポート装置(200)とを備える、制御システム。
[構成10]
制御対象(4)を制御するための制御装置(100)を実現するためのプログラム(1102,1104,1106)であって、前記プログラムはコンピュータ(100)を、
シーケンス命令(1382)を含むプログラムをサイクリック実行するPLCエンジン(136)と、
ロボットを制御するためのロボットコントロールエンジン(1420)と、
カメラからの画像に対して画像処理を実行する画像処理エンジン(1422)と、
ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュール(148)として機能させる、プログラム。
<K.利点>
本実施の形態に係る制御システム1によれば、複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 コンベアシステム、4 制御対象、6 コンベア、8 ワーク、10 ネットワークハブ、12 上位ネットワーク、14 フィールドネットワーク、20 カメラ、30 光電センサ、32 エンコーダ、100 制御装置、102,202 プロセッサ、104,204 メインメモリ、106,206 入力部、108,208 表示部、110,210 ストレージ、112,114,212 通信コントローラ、116,216 光学ドライブ、118,218 記憶媒体、120 メモリカードインターフェイス、122 メモリカード、124,224 USBコントローラ、128,228 プロセッサバス、130 ハードウェアリソース、132 ハイパーバイザ、134 RTOS、136 PLCエンジン、138 IECプログラム、140 汎用OS、142 アプリケーションエンジン、144 アプリケーションプログラム、148 模擬モジュール、200 サポート装置、250 設定画面、252 デバイス登録フィールド、254 デバイスプロパティフィールド、260 デバイス選択画面、262 現実のデバイスの一覧、264 仮想のデバイスの一覧、300 表示装置、400 サーバ装置、500 サーボドライバ、530 サーボモータ、550 カスタムロボット、600 ロボットコントローラ、650 産業用ロボット、700 安全コントローラ、750 安全デバイス、800 IOユニット、1102 OS、1104 プログラム、1106 アプリケーションエンジンプログラム、1108 ユーザプログラム、1110 プログラム実行設定、1320 スケジューラ、1322 変数マネジャ、1382 シーケンス命令、1384 モーション制御命令、1420 ロボットコントロールエンジン、1422 画像処理エンジン、1424 エミュレータ、1426 物理シミュレータ、1428 ビジュアライザ、1430 再現画像、1442 ロボットプログラム、1444 画像処理設定、2104 開発プログラム、2105 構築モジュール、14241 コンベア設定、14242 サーボドライバモデル、14243 ロボットコントローラモデル、14244 模擬画像群、14261,14282 カスタムロボットモデル、14262,14283 産業用ロボットモデル、14281 コンベアモデル、14284 オブジェクトライブラリ、14285 衝突検出設定、14286 仮想オブジェクト。

Claims (10)

  1. 制御対象を制御するための制御装置であって、
    シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、
    ロボットを制御するためのロボットコントロールエンジンと、
    カメラからの画像に対して画像処理を実行する画像処理エンジンと、
    ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュールとを備える、制御装置。
  2. 前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンの処理結果に基づいて、前記制御対象の状態を仮想空間で視覚化するビジュアライザをさらに備える、請求項1に記載の制御装置。
  3. 前記模擬モジュールは、前記ビジュアライザによって視覚化された仮想空間における衝突検知の結果を利用して実現される、請求項2に記載の制御装置。
  4. 前記模擬モジュールは、前記制御対象に含まれる装置または設備の挙動を模擬するエミュレータを用いて実現される、請求項1~3のいずれか1項に記載の制御装置。
  5. 前記模擬モジュールは、前記制御対象に含まれる物体の物理的な動作を模擬するシミュレータを用いて実現される、請求項1~4のいずれか1項に記載の制御装置。
  6. 前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンのいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイスと、
    前記仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する前記模擬モジュールを構築する構築手段とをさらに備える、請求項1~5のいずれか1項に記載の制御装置。
  7. 前記PLCエンジンは、ロボットを駆動する1または複数のモータを制御するモーション制御命令をサイクリック実行し、
    前記ロボットコントロールエンジンは、ロボットプログラムに従って、ロボットを制御するための命令を順次生成する、請求項1~6のいずれか1項に記載の制御装置。
  8. 共通のハードウェアリソースを管理するハイパーバイザをさらに備え、
    前記ハイパーバイザは、リアルタイムOSおよび汎用OSの実行環境を提供し、
    前記PLCエンジンは、前記リアルタイムOS上で実行され、
    前記ロボットコントロールエンジンおよび前記画像処理エンジンは、前記汎用OSで実行される、請求項1~7のいずれか1項に記載の制御装置。
  9. 制御対象を制御するための制御システムであって、
    シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンとを含む制御装置と、
    ユーザ設定に従って、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュールを構築するとともに、当該構築した模擬モジュールを前記制御装置へ提供するサポート装置とを備える、制御システム。
  10. 制御対象を制御するための制御装置を実現するためのプログラムであって、前記プログラムはコンピュータを、
    シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、
    ロボットを制御するためのロボットコントロールエンジンと、
    カメラからの画像に対して画像処理を実行する画像処理エンジンと、
    ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュールとして機能させる、プログラム。
JP2020149365A 2020-09-04 2020-09-04 制御装置、制御システムおよびプログラム Pending JP2022043871A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2020149365A JP2022043871A (ja) 2020-09-04 2020-09-04 制御装置、制御システムおよびプログラム
EP21863866.6A EP4209314A1 (en) 2020-09-04 2021-03-05 Control device, control system, and program
CN202180056383.2A CN116056842A (zh) 2020-09-04 2021-03-05 控制装置、控制***以及程序
PCT/JP2021/008668 WO2022049805A1 (ja) 2020-09-04 2021-03-05 制御装置、制御システムおよびプログラム
US18/041,498 US20230341835A1 (en) 2020-09-04 2021-03-05 Control device, control system, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020149365A JP2022043871A (ja) 2020-09-04 2020-09-04 制御装置、制御システムおよびプログラム

Publications (1)

Publication Number Publication Date
JP2022043871A true JP2022043871A (ja) 2022-03-16

Family

ID=80490858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020149365A Pending JP2022043871A (ja) 2020-09-04 2020-09-04 制御装置、制御システムおよびプログラム

Country Status (5)

Country Link
US (1) US20230341835A1 (ja)
EP (1) EP4209314A1 (ja)
JP (1) JP2022043871A (ja)
CN (1) CN116056842A (ja)
WO (1) WO2022049805A1 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3579551B2 (ja) * 1996-10-31 2004-10-20 三菱電機株式会社 生産システム
US8694296B2 (en) * 2010-10-22 2014-04-08 Agile Planet, Inc. Method and apparatus for integrated simulation
JP6052372B2 (ja) * 2015-11-12 2016-12-27 オムロン株式会社 シミュレーション装置、シミュレーション方法、および、シミュレーションプログラム
JP6458713B2 (ja) * 2015-11-18 2019-01-30 オムロン株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
JP6444957B2 (ja) * 2016-10-27 2018-12-26 ファナック株式会社 ロボットシステムの動作のシミュレーションを行うシミュレーション装置、シミュレーション方法、およびコンピュータプログラムを記録する記録媒体
JP7078895B2 (ja) 2018-06-11 2022-06-01 オムロン株式会社 制御システム、制御装置、画像処理装置およびプログラム
JP7124509B2 (ja) * 2018-07-19 2022-08-24 オムロン株式会社 シミュレーション装置、シミュレーションプログラムおよびシミュレーション方法

Also Published As

Publication number Publication date
EP4209314A1 (en) 2023-07-12
WO2022049805A1 (ja) 2022-03-10
US20230341835A1 (en) 2023-10-26
CN116056842A (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
JP6950347B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP6965798B2 (ja) 制御システムおよび制御方法
EP1310844B1 (en) Simulation device
EP3171236A1 (en) Simulator, simulation method, and simulation program
EP3441831B1 (en) Information processing device, information processing method, and information processing program
US10814486B2 (en) Information processing device, information processing method, and non-transitory computer-readable recording medium
US20230153486A1 (en) Method and device for simulation
JP2019061523A (ja) 情報処理装置、情報処理方法およびプログラム
EP3467603B1 (en) Information processing device, information processing method, and information processing program
WO2019202934A1 (ja) 情報処理システム、情報処理方法、および情報処理プログラム
CN112698632B (zh) 一种全自动化生产线数字孪生***、方法及设备
WO2021181801A1 (ja) ロボット制御システムおよび制御方法
WO2022049805A1 (ja) 制御装置、制御システムおよびプログラム
JP2003236784A (ja) ロボット教示方法およびロボット教示装置
WO2021181800A1 (ja) ロボット制御システムおよび制御方法
WO2022162960A1 (ja) プログラム生成装置、プログラム生成プログラムおよびプログラム生成方法
JP3325397B2 (ja) プログラマブルコントローラで実行されるプログラムのシミュレーションシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240327

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240611