JP7000686B2 - 制御装置 - Google Patents

制御装置 Download PDF

Info

Publication number
JP7000686B2
JP7000686B2 JP2017024282A JP2017024282A JP7000686B2 JP 7000686 B2 JP7000686 B2 JP 7000686B2 JP 2017024282 A JP2017024282 A JP 2017024282A JP 2017024282 A JP2017024282 A JP 2017024282A JP 7000686 B2 JP7000686 B2 JP 7000686B2
Authority
JP
Japan
Prior art keywords
control
application
program
core
task
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.)
Active
Application number
JP2017024282A
Other languages
English (en)
Other versions
JP2018132829A (ja
Inventor
靖男 宗田
宏心 矢尾板
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
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 filed Critical Omron Corp
Priority to JP2017024282A priority Critical patent/JP7000686B2/ja
Priority to EP18751685.1A priority patent/EP3582036B9/en
Priority to US16/478,140 priority patent/US11061377B2/en
Priority to CN201880006581.6A priority patent/CN110192159B/zh
Priority to PCT/JP2018/001780 priority patent/WO2018147058A1/ja
Publication of JP2018132829A publication Critical patent/JP2018132829A/ja
Application granted granted Critical
Publication of JP7000686B2 publication Critical patent/JP7000686B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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
    • G05B19/056Programming the PLC
    • 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/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • 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/10Plc systems
    • G05B2219/11Plc I-O input output
    • G05B2219/1101Remote I-O
    • 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/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13004Programming the plc
    • 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/20Pc systems
    • G05B2219/22Pc multi processor system
    • G05B2219/2205Multicore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Programmable Controllers (AREA)

Description

本発明は、機械および設備等の動作を制御するために用いられる制御装置に関する。
従来、プログラマブルコントローラ(Programmable Logic Controller、以下「PLC」と略記)等の産業用制御装置について、情報化(すなわち、産業用制御装置が取得・生成した情報の外部装置での利用等)と高性能化とを両立させるための種々の試みが知られている。
例えば、下掲の特許文献1には、制御対象への高速かつ高精度な制御のために周期的に実行する複数のPLC機能の各々を複数のプロセッサの各々に割り当て、それら複数のPLC機能のうちの少なくとも2つを並列に実行するPLCが開示されている。
特表2013-506911号公報(2013年2月28日公開)
しかしながら、上述のような従来技術には、制御対象への高速かつ高精度な制御処理に対して、情報化のための処理のような、高速高精度が求められない処理および非周期的な処理が与える影響を抑制できないという問題がある。
すなわち、現在のPLCには、制御対象への高速かつ高精度な制御処理の実行に加えて、例えば、デバイスの「通電時間」、「作動回数」などの情報の保存、解析、表示といった、高速高精度の求められない処理および非周期的な処理の実行が求められている。したがって、上述のような種々の処理の実行を求められている現在のPLCについて、高速高精度かつ周期的な処理の実行を効率化するだけでは、高性能化および情報化を実現することはできない。
本発明の一態様は、高速かつ周期的な処理と、情報化のための処理等の非周期的な処理と、を実行可能な制御装置について、小型化と高性能化とを両立することを目的とする。
上記の課題を解決するために、本発明の一態様に係る制御装置は、複数の制御プログラムを所定の時間間隔で繰り返し実行することによって制御対象を制御する制御装置であって、マルチコアプロセッサと、前記複数の制御プログラムを格納したメモリと、を備え、前記マルチコアプロセッサは、アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーションのみが割り当てられるコアであるアプリケーション用コアを含んでいる。
前記の構成によれば、前記アプリケーション用コアには、アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション(制御対象に対する高速かつ高精度な制御を目的としないアプリケーション)のみが割り当てられる。すなわち、前記制御装置のマルチコアプロセッサにおいて、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」が割り当てられるコアと、「制御対象への高速かつ高精度な制御のためのプログラム(すなわち、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のあるプログラム)」が割り当てられるコアとは、異なる。
ここで、PLC等の制御装置には、制御対象に対する高速かつ高精度な制御だけでなく、前記制御装置が取得・生成した情報を外部装置で利用するための処理、いわゆる情報化のための処理の実行が求められるようになってきている。そして、そのような情報化のための種々のアプリケーションを、制御装置に搭載したいとの要望が高くなってきている。
しかしながら、従来の制御装置は、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション(例えば、情報化のためのアプリケーション)」の実行によってリソースが消費され、「制御対象への高速かつ高精度な制御のためのプログラム」の実行に影響が出る可能性があった。なお、リソースとは、PLC等の制御装置が前記プログラムおよび前記アプリケーションを実行するための計算資源であり、CPUリソースおよびメモリリソースを含む。CPUリソースは、例えば、前記プログラムおよび前記アプリケーションを実行するために使用可能なCPU帯域幅である。
従来の制御装置は、「制御対象への高速かつ高精度な制御のためのプログラム」への、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の影響を抑制しようとして、以下の対策を講じることがあった。すなわち、従来の制御装置は、十分なリソース量を確保することによって、前記プログラムへの、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の影響を抑制しようとした。そのため、従来の制御装置は、CPUコアおよびメモリ等を増やして装置として大型化したり、各々が所定の処理のみを実行する複数台の制御ユニットに分かれてしまったりすることがあった。
これに対し、本発明の一態様に係る前記制御装置は、「制御対象への高速かつ高精度な制御のためのプログラム」への、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の干渉を軽減させ、両者を前記マルチコアプロセッサにおいて効率的に実行することが可能となる。つまり、本発明の一態様に係る前記制御装置は、リソース量を増やすことによってではなく、リソースの効率的な利用によって、前記プログラムと前記アプリケーションとを実行することができる。本発明の一態様に係る前記制御装置は、装置として大型化させて十分なリソース量を確保する必要も、各々が所定の処理のみを実行する複数台の制御ユニットに分ける必要もなく、装置を小型化することが可能となる。
また、本発明の一態様に係る前記制御装置は、前記プログラムへの、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の干渉を軽減させ、両者を効率的に実行することができる。つまり、本発明の一態様に係る前記制御装置は、前記アプリケーションを適宜実行しつつ、前記アプリケーションから独立に、制御対象に対する制御に必要な前記プログラムを高速に実行することができるので、高性能化を実現することができる。
したがって、本発明の一態様に係る前記制御装置は、高速かつ周期的な処理と、情報化のための処理等の「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」とを実行可能な制御装置について、小型化と高性能化とを両立することができるとの効果を奏する。
また、本発明の一態様に係る前記制御装置は、利用シーンに合わせて、任意のタイミングで、すなわち、優先度によって定義された実行順序の制約を受けずに、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」を実行することができるという効果を奏する。
さらに、本発明の一態様に係る前記制御装置は、「制御対象への高速かつ高精度な制御のためのプログラム」と、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」との各々を、他方への影響を懸念することなく開発・バージョンアップすることが可能となるとの効果を奏する。これによって、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の開発・改良について、多様な主体の参加が可能となる。
本発明の一態様に係る制御装置の前記マルチコアプロセッサにおいて、アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するアプリケーションは、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するプログラムが割り当てられるコアである制御用コアに割り当てられていてもよい。
前記の構成によれば、前記マルチコアプロセッサにおいて、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するアプリケーションは、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するプログラムが割り当てられるコアである制御用コアに割り当てられる。
したがって、本発明の一態様に係る前記制御装置は、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するアプリケーションと、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するプログラムとを、前記制御用コアにおいて効率的に連動させて実行することができるとの効果を奏する。
前記アプリケーション用コアにおいて、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のない複数のアプリケーションの各々に割り当てるリソースの割合は、ユーザによって設定可能であってもよい。
前記の構成によれば、前記アプリケーション用コアにおいて、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のない複数のアプリケーションの各々に割り当てるリソースの割合は、ユーザによって設定可能である。言い換えれば、前記制御装置は、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のない複数のアプリケーショの各々について、前記アプリケーション用コアの使用割合(例えば、実行時間の比率、メモリ使用量の比率等)をユーザが設定することができる。ユーザは、前記制御装置に将来搭載する非制御アプリのために、前記アプリケーション用コアの全リソースのうち所定割合を空けておいてもよい。
したがって、本発明の一態様に係る前記制御装置は、ユーザが新たなアプリケーションを前記制御装置に搭載させて実行させたとしても、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のない複数のアプリケーションの各々の処理速度の低下を抑制することができるとの効果を奏する。
本発明の一態様に係る制御装置について、前記アプリケーション用コアに割り当てられるアプリケーションは、(1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理の少なくとも1つを実行するためのアプリケーションを含んでいてもよい。
前記の構成によれば、前記アプリケーション用コアに割り当てられるアプリケーションは、(1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理の少なくとも1つを実行するためのアプリケーションを含む。
ここで、現在、PLCなどの、複数の制御プログラムを所定の時間間隔で繰り返し実行することによって制御対象を制御する制御装置について、(1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理等を実行するための、情報系アプリケーション(情報化のためのアプリケーション)を搭載したいとの要望が高くなってきている。
したがって、本発明の一態様に係る前記制御装置は、高速かつ周期的な処理に加え、(1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理等を実行することのできる制御装置について、小型化と高性能化とを両立することができるとの効果を奏する。
本発明の一態様によれば、高速かつ周期的な処理と、情報化のための処理等の非周期的な処理とを実行可能な制御装置について、小型化と高性能化とを両立することができるとの効果を奏する。
本発明の実施形態1に係る制御装置のCPUユニットのハードウェア構成を示す図である。 本発明の実施形態1に係る制御装置を含む制御システムの概要を示す図である。 本発明の実施形態1に係る制御装置の実行すべきタスクの例を示す図である。 図1のCPUユニットにおける4つコアの各々に割り当てられている処理等の概要を示す図である。
〔実施形態1〕
以下、本発明の実施形態1について、図1から図4に基づいて詳細に説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。本発明の一態様に係るPLC(プログラマブル・ロジック・コントローラ、Programmable Logic Controller)10(制御装置)についての理解を容易にするため、先ず、PLC10を含む制御システム1の概要を、図2を用いて説明する。
(実施形態1の制御システムの概要)
図2は、制御システム1の概要を示す図である。制御システム1は、PLC10と、PLC10とフィールドネットワーク30を介して接続されるサーボドライバ40およびリモートIOターミナル60と、フィールド機器であるデバイス20と、を含む。また、PLC10には、接続ケーブル70などを介して、HMI81および外部サーバ82が接続される。
PLC10は、機械および設備などの制御対象を制御する制御装置であり、主たる演算処理を実行するCPUユニット100と、電源ユニット200と、1つ以上のIOユニット300と、特殊ユニット400とを含む。CPUユニット100と、1つ以上のIOユニット300の各々と、特殊ユニット400とは、PLCシステムバス500を介して、データを互いに遣り取りできるように構成される。
CPUユニット100は、制御対象の状態等に係る種々の処理を実行し、例えば、「出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御する」処理を実行する。CPUユニット100の詳細については、図1を参照して後述する。
電源ユニット200は、CPUユニット100、IOユニット300、および特殊ユニット400に、適切な電圧の電源を供給する。
IOユニット300は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット300は、センサなどの入力機器であるデバイス20(1)が何らかの対象物を検出している状態(オン)、および、何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット300は、リレー、アクチュエータといった出力機器であるデバイス20(2)に対して、活性化するための指令(オン)、および、不活性化するための指令(オフ)のいずれかを出力する。
特殊ユニット400は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット300ではサポートしない機能を有する。
デバイス20は、PLC10によって制御される入出力機器である。入力機器であるデバイス20(1)は、例えば、温度センサ、光センサなどの「検出器」、「スイッチ(押ボタンスイッチ、リミットスイッチ、圧力スイッチなど)」などである。出力機器であるデバイス20(2)は、例えば、「アクチュエータ」、「リレー」、「電磁弁」、「表示器」、「表示灯」などである。デバイス20(1)とデバイス20(2)とを区別する必要がない場合には、単に「デバイス20」と表記する。
フィールドネットワーク30は、CPUユニット100と遣り取りされる各種データを伝送する。フィールドネットワーク30としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)-III、Powerlink、SERCOS(登録商標)-III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。制御システム1では、典型的に、産業用イーサネット(登録商標)であるEtherCAT(登録商標)をフィールドネットワーク30として採用する場合の構成について例示する。
なお、PLC10は、CPUユニット100にIOユニット300の機能およびサーボドライバ40の機能を持たせることにより、そのような内蔵機能でまかなえる範囲については、IOユニット300およびサーボドライバ40などを介さずにCPUユニット100が直接制御対象を制御する構成でもよい。
サーボドライバ40は、フィールドネットワーク30を介してCPUユニット100と接続されるとともに、CPUユニット100からの指令値に従ってサーボモータ50を駆動する。より具体的には、サーボドライバ40は、PLC10から一定の時間間隔(周期)で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボドライバ40は、サーボモータ50の軸に接続されている位置センサ(ロータリーエンコーダ)およびトルクセンサといった検出器(デバイス20(1))から、位置、速度(典型的には、今回位置と前回位置との差から算出される)、トルクといったサーボモータ50の動作に係る実測値を取得する。そして、サーボドライバ40は、CPUユニット100からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボドライバ40は、実測値が目標値に近づくようにサーボモータ50を駆動するための電流を調整する。なお、サーボドライバ40は、サーボモータアンプと称されることもある。
なお、図2には、サーボモータ50とサーボドライバ40とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
リモートIOターミナル60は、基本的には、IOユニット300と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル60は、フィールドネットワーク30でのデータ伝送に係る処理を行うための通信カプラ61と、1つ以上のIOユニット62とを含む。通信カプラ61と、1つ以上のIOユニット62の各々とは、リモートIOターミナルバス63を介して、データを互いに遣り取りできるように構成される。
HMI81は、人間と機械とが情報をやり取りするための手段であり、具体的には、人間が機械を操作したり(機械に指示を与えたり)、機械が現在の状態・結果を人間に知らせたりする手段である。HMI81について、人間が機械に指示を与える手段は、例えば、スイッチ、ボタン、ハンドル、ダイヤル、ペダル、リモコン、マイク、キーボード、マウスなどを含む。また、機械が現在の状態・結果等に係る情報を人間に伝える手段は、例えば、液晶画面、メーター、ランプ、スピーカーなどを含む。
外部サーバ82は、PLC10から受信する情報を格納するサーバであり、また、PLC10から送信要求に応じて、格納している情報をPLC10に送信する。
なお、制御システム1においてPLC10が1台であることは必須ではなく、複数のPLC10の各々が、フィールドネットワーク30を介して、相互に通信可能に接続されていてもよい。次に、図1を参照して、CPUユニット100のハードウェア構成について説明する。
(CPUユニットのハードウェア構成)
図1は、本発明の実施の形態に係るCPUユニット100のハードウェア構成を示す図である。図2に例示する通り、CPUユニット100は、マイクロプロセッサ110と、不揮発性メモリ120と、チップセット130と、メインメモリ140と、通信コントローラ150と、システムバス制御回路160と、フィールドネットワーク制御回路170と、を含む。CPUユニット100は、さらに、不図示のUSBコネクタを含んでもよい。チップセット130と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
マイクロプロセッサ110およびチップセット130は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ110は、チップセット130から内部クロックに従って順次供給される命令コードを解釈して実行する。図1に例示するように、マイクロプロセッサ110は、第1コア111、第2コア112、第3コア113、および第4コア114を含んでいる。
チップセット130は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ110に必要な命令コードを生成する。さらに、チップセット130は、マイクロプロセッサ110での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
CPUユニット100は、記憶手段として、メインメモリ140および不揮発性メモリ120を備えている。メインメモリ140は、揮発性の記憶領域(RAM)であり、CPUユニット100へ電源投入後にマイクロプロセッサ110で実行されるべき各種プログラムを保持する。また、メインメモリ140は、マイクロプロセッサ110による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ140として、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等を用いることができる。
一方、不揮発性メモリ120は、IO制御などのシステムプログラム、ユーザプログラム、モーション演算プログラム、各種のアプリケーション、およびシステム設定パラメータといったデータを不揮発的に保持する。これらのプログラムおよびデータは、必要に応じて、マイクロプロセッサ110がアクセスできるようにメインメモリ140にコピーされる。このような不揮発性メモリ120は、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体、DVD-RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
通信コントローラ150は、出力データの送信および入力データの受信を実行し、典型的には、FPGAやASIC等のハードウェアで構成され、チップセット130を介して、メインメモリ140とのデータの送受信が可能に構成される。通信コントローラ150は、システムタイマ151と、DMA制御回路152と、システムバスコントローラ153と、フィールドネットワークコントローラ154と、バッファメモリ155と、を含んでいる。
なお以下の説明において、CPUユニット100からCPUユニット100以外のユニットに出力されるデータ、および、PLC10からPLC10以外の装置に出力されるデータを、「出力データ」とも称す。また、CPUユニット100以外のユニットからCPUユニット100に入力されるデータ、および、PLC10以外の装置からPLC10に入力されるデータを、「入力データ」とも称す。
システムタイマ151は、一定の時間間隔(周期)ごとに割り込み信号を発生してマイクロプロセッサ110に提供する。典型的には、ハードウェアの仕様によって、複数の異なる時間間隔でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)、BIOS(Basic Input Output System)などによって、任意の時間間隔で割り込み信号を発生するように設定することもできる。このシステムタイマ151が発生する割り込み信号を利用して、後述するような実行周期ごとの制御動作が実現される。
DMA制御回路152は、メインメモリ140からバッファメモリ155への出力データの転送、および、バッファメモリ155からメインメモリ140への入力データの転送を行う。
システムバスコントローラ153は、PLCシステムバス500を介したデータの遣り取りを制御し、典型的には、PLCシステムバス500における物理層およびデータリンク層の機能を提供する。すなわち、システムバスコントローラ153は、PLCシステムバス500に接続されるCPUユニット100以外のユニットと、CPUユニット100との間の送受信を制御する。
システムバスコントローラ153は、バッファメモリ155に格納されているデータ(出力データ)を、IOユニット300および特殊ユニット400にPLCシステムバス500を介して送信する処理を行なう。また、システムバスコントローラ153は、PLCシステムバス500を介してIOユニット300および特殊ユニット400から入力されるデータ(入力データ)を受信してバッファメモリ155に格納する処理を行う。
なお、CPUユニット100自体にIOユニット300およびサーボドライバ40の機能を持たせる場合は、システムバスコントローラ153による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてCPUユニット100の内部で行われる送信および受信となる。
フィールドネットワークコントローラ154は、フィールドネットワーク30を介したデータの遣り取りを制御し、典型的には、フィールドネットワーク30における物理層およびデータリンク層の機能を提供する。すなわち、フィールドネットワークコントローラ154は、用いられるフィールドネットワーク30の規格に従い、出力データの送信および入力データの受信を制御する。具体的には、フィールドネットワークコントローラ154は、フィールドネットワーク30に接続される他の装置との間で、バッファメモリ155の出力データを送信する処理、および、入力データを受信してバッファメモリ155に格納する処理を行う。
ここで、上述したように、本実施の形態においてはEtherCAT(登録商標)規格に従うフィールドネットワーク30が採用されるので、通常のイーサネット(登録商標)通信を行うためのハードウェアを含む、フィールドネットワークコントローラ154が用いられる。
EtherCAT(登録商標)規格では、通常のイーサネット(登録商標)規格に従う通信プロトコルを実現する一般的なイーサネット(登録商標)コントローラを利用できる。ただし、フィールドネットワーク30として採用される産業用イーサネット(登録商標)の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット(登録商標)コントローラが用いられる。また、産業用イーサネット(登録商標)以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
バッファメモリ155は、フィールドネットワーク30を介して他の装置などへ出力されるデータ、および、PLCシステムバス500を介してCPUユニット100以外のユニットへ出力されるデータ(出力データ)の送信バッファとして機能する。また、バッファメモリ155は、フィールドネットワーク30を介して他の装置などから入力されるデータ、および、PLCシステムバス500を介してCPUユニット100以外のユニットから入力されるデータ(入力データ)の受信バッファとして機能する。
マイクロプロセッサ110による演算処理によって作成された出力データは、原始的にはメインメモリ140に格納される。そして、特定の装置・ユニットへ転送されるべき出力データは、メインメモリ140から読み出されて、バッファメモリ155に一次的に保持される。また、他の装置・ユニットから転送された入力データは、バッファメモリ155に一次的に保持された後、メインメモリ140に移される。すなわち、バッファメモリ155は、メインメモリ140とのデータの通信に用いられるメモリ領域である。
なお前述の通り、CPUユニット100は、HMI81および外部サーバ82と接続するためのインターフェースとしてUSBコネクタ(通信ポート)を備えていてもよい。
(CPUユニットのソフトウェア構成)
PLC10は、機械および設備などの制御対象を制御するとともに、当該制御対象から取得した情報および自装置において生成した情報等の蓄積、分析、表示等を実行する。例えば、PLC10のCPUユニット100は、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御する。また例えば、PLC10のCPUユニット100は、PLC10が取得または自装置において生成した情報を、蓄積し、分析し、HMI81に表示させる。
ここで、PLC10のCPUユニット100は、種々のプログラムを「タスク」という実行単位で実行する。PLC10が「タスク」において実行可能な処理・プログラムは、「IO制御」、「制御プログラム」、および「システムサービス」の3つに分けることができる。なお、「システムサービス」は、PLC10の実行する処理・プログラムのうち「IO制御」および「制御プログラム」以外のものと捉えることができ、したがって、「システムサービス」は、「タスク」の必須の構成要素ではない。
ユーザは、不図示のPLCサポート装置を用いて、プログラムの実行単位であるタスクを設定することができる。具体的には、タスクの実行周期および実行タイミング、タスクで実行するプログラム(例えば、制御プログラム)、タスク内でのIO制御の実行要否等を設定・定義することができる。ユーザは、PLCサポート装置を用いて、1タスクあたり、例えば最大128のプログラムを割り当てることができてもよい。タスクの設定は、PLCサポート装置から例えば接続ケーブル70を介してCPUユニット100へ転送され、不揮発性メモリ120などに格納される。なお、前述の通り、「システムサービス」は、PLC10の実行する処理・プログラムのうち「IO制御」および「制御プログラム」以外のものと捉えることができるので、ユーザがタスク内での実行を指定しない「システムサービス」が、タスク中で実行されてもよい。
ユーザは、PLCサポート装置を用いて、複数のタスクの間に優先順位を設定することができる。例えばユーザは、PLCサポート装置を用いて、優先順位が互いに異なるプライマリ定周期タスクと、定周期タスクと、イベントタスクという3種類のタスクを設定できてもよい。プライマリ定周期タスクは、例えば、「IO制御、ユーザプログラム、モーション演算プログラム(、および、システムサービス)」を主な処理内容(実行内容)とする。定周期タスクは、例えば、「IO制御、ユーザプログラム(、および、システムサービス)」を主な処理内容とする。イベントタスクは、例えば、「ユーザプログラム(、および、システムサービス)」を主な処理内容とする。PLC10は、プライマリ定周期タスクを最優先で実行し、定周期タスクとイベントタスクとの間の優先関係はユーザが指定できてもよく、さらに、複数の定周期タスクの間に実行順位に係る優先度が設定されていてもよい。
なお、プライマリ定周期タスクと定周期タスクとを区別することはPLC10にとって必須ではなく、プライマリ定周期タスクと定周期タスクとを区別せずに、両者を「一定の時刻間隔で繰り返し実行すべきタスク(定周期で実行すべきタスク)」としてまとめてもよい。
次に、PLC10が「タスク」において実行する処理・プログラムである、「IO制御」、「制御プログラム」、「システムサービス」の概要を、この順で説明していく。
(IO制御)
「IO制御」は、入力データおよび出力データの入出力を制御する処理である。IO制御プログラムは、システムプログラムの1つであり、出力処理プログラムと入力処理プログラムとを含んでいる。
「出力処理プログラム」は、ユーザプログラム等の制御プログラムの実行によって生成された出力データを通信コントローラ150へ転送するのに適した形式に再配置する。システムバスコントローラ153またはフィールドネットワークコントローラ154が、マイクロプロセッサ110からの、送信を実行するための指示を必要とする場合は、出力処理プログラムがそのような指示を発行する。
「入力処理プログラム」は、システムバスコントローラ153およびフィールドネットワークコントローラ154の少なくとも一方によって受信された入力データを、制御プログラム(マイクロプロセッサ110)が使用するのに適した形式に再配置する。
「システムプログラム」は、PLC10に制御装置としての機能を提供するためのソフトウェア群であり、スケジューラプログラム、IO制御プログラム、シーケンス命令演算プログラム、モーション演算プログラム、システムサービスプログラムとを含む。
システムプログラムのうち、シーケンス命令演算プログラムおよびモーション演算プログラムは「制御プログラム」でもある。詳細は後述するが、「制御プログラム」であるユーザプログラムは、「制御プログラム」であるシーケンス命令演算プログラムおよびモーション演算プログラムと協働して、ユーザにおける制御目的を実現する。ユーザプログラムはさらに、アプリケーション(特に、制御系プリケーション)と協働して、ユーザにおける制御目的を実現することができる。すなわち、ユーザプログラムは、シーケンス命令演算プログラム、モーション演算プログラム、およびアプリケーションによって提供される命令、関数、機能モジュール等を利用することで、プログラムされた動作を実現する。
システムプログラムのうち、IO制御プログラム、シーケンス命令演算プログラム、モーション演算プログラム、およびシステムサービスプログラムについては後述するので、スケジューラプログラムの概要を説明しておく。
「スケジューラプログラム」は、出力処理プログラム、入力処理プログラム、および制御プログラムについて、各実行サイクル(タスク周期)での実行開始および実行中断後の実行再開を制御する。より具体的には、スケジューラプログラムは、ユーザプログラム、シーケンス命令演算プログラム、モーション演算プログラム、およびアプリケーションの実行を制御する。
例えば、CPUユニット100は、モーション演算プログラムに適した一定時間間隔の実行サイクル(制御サイクル)を処理全体(タスク全体)の共通サイクル(タスク周期)として採用する。そのため、1つの制御サイクル(タスク周期)内で、すべてのプログラムの実行を完了することは難しいので、実行すべきプログラムの優先度(優先順位)などに応じて、各制御サイクルにおいて実行を完了すべきプログラムと、複数の制御サイクルに亘って実行してもよいプログラムとが区分される。スケジューラプログラムは、これらの区分されたプログラムの実行順序などを管理する。より具体的には、スケジューラプログラムは、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
(制御プログラム)
「制御プログラム」は、「ユーザプログラム」、「モーション演算プログラム」、「シーケンス命令演算プログラム」、および、「アプリケーション(特に、制御系アプリケーション)」を含む。「制御プログラム」のうち、「モーション演算プログラム」および「シーケンス命令演算プログラム」は、前述の通り、システムプログラムでもある。
なお厳密には、「ユーザプログラム」には、制御対象に対する高速かつ高精度の制御のために定周期(例えば、数msといった高速周期)で実行されるユーザプログラ以外のユーザプログラムもある。例えば、非周期的に実行され、または低速周期で(例えば、数十msといった時間間隔で繰り返し)実行されるユーザプログラムもある。しかしながら、以下の説明において「ユーザプログラム」とは、特に断らない限り、「制御対象に対する高速かつ高精度の制御のために定周期(高速周期)で実行されるユーザプログラム」を指すものとする。
また、「アプリケーション」には、制御対象に対する高速かつ高精度の制御のために定周期(例えば、数msといった高速周期)で実行されるアプリケーション(制御系アプリケーション)と、それ以外のアプリケーションとがあり、詳細は後述する。
(ユーザプログラム)
「ユーザプログラム」は、ユーザの制御対象(例えば、対象のラインおよびプロセス)に応じて作成され、すなわち、制御システム1を用いて制御する制御対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。不図示のPLCサポート装置は、ラダーロジック(ラダー言語)などによって記述されたラダープログラム(ソースプログラム)をコンパイルすることにより、ユーザプログラムを生成する。PLCサポート装置で生成されたオブジェクトプログラム形式のユーザプログラムは、PLCサポート装置から例えば接続ケーブル70を介してCPUユニット100へ転送され、不揮発性メモリ120などに格納される。ラダーロジックは、論理回路を記述するための手法で、多くの産業用制御装置において採用されているプログラム言語である。ユーザプログラムは、典型的には、CPUユニット100のマイクロプロセッサ110で実行可能なオブジェクトプログラム形式で生成される。
制御対象に対する高速かつ高精度の制御のためのユーザプログラムは、例えば数msといった高速周期で、マイクロプロセッサ110によって繰り返し実行される。一方、制御対象に対する高速かつ高精度の制御を目的としないユーザプログラムは、例えば数十msといった低速周期で周期的に、または非周期的に(イベント的に)、マイクロプロセッサ110によって実行される。
(モーション演算プログラムおよびシーケンス命令演算プログラム)
「モーション演算プログラム」は、ユーザプログラムによる指示に従って実行され、サーボドライバ40およびパルスモータドライバなどのモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。CPUユニット100は、「モーション演算プログラム」を実行することにより、例えば、アクチュエータ等であるデバイス20(2)の操作変位および操作速度などを連続的に制御する(モーション制御)。
「シーケンス命令演算プログラム」は、ユーザプログラムで使用される所定のシーケンス命令が実行されるときに呼び出され、該命令の内容を実現するために実行されるプログラムである。CPUユニット100は、「シーケンス命令演算プログラム」を実行することにより、例えば、アクチュエータ等であるデバイス20(2)のON/OFFを制御する(シーケンス制御)。
(アプリケーション)
「アプリケーション」は、例えば、データベース接続、OPC-UA(OPC Unified Architecture)、AI(artificial intelligence、人工知能・機械学習)、CNC(computerized numerical control)、ロボット制御などのためのプログラムである。アプリケーションは、制御対象に対する高速かつ高精度の制御のための制御系アプリケーション(以下、「制御アプリ」と略記)と、制御アプリ以外のアプリケーション(以下、「非制御アプリ」と略記)と、を含む。
「制御アプリ」は、アプリケーションのうち、制御対象に対する高速かつ高精度の制御のためのアプリケーションであり、制御対象に対する高速かつ高精度の制御のためのユーザプログラムと同じ時間間隔で繰り返し実行されるアプリケーションである。制御アプリは、例えば、CNC(computerized numerical control)、ロボット制御などのためのアプリケーションである。ユーザプログラムは、これらの制御アプリを呼び出し、制御対象に対する高速かつ高精度の制御の実現に利用することができる。「制御アプリ」および「制御対象に対する高速かつ高精度の制御のためのユーザプログラム」は、例えば、所定の時間間隔(例えば、数ms)以下の実行間隔で繰り返し実行される。なお、AI(artificial intelligence、機械学習)は、用途によって、制御アプリまたは非制御アプリとして実行されるアプリケーションである。
「非制御アプリ」は、制御対象に対する高速かつ高精度の制御とは別の目的でPLC10に組み込まれるアプリケーションであり、制御対象に対して所定の時間間隔(例えば、数ms)以下の実行間隔で繰り返し実行する必要のないプログラムである。言い換えれば、「非制御アプリ」は、高速な制御演算には関係しない、例えば「通信処理およびバックアップ処理」等を記述するのに適したプログラムである。具体的には、「非制御アプリ」は、データベース接続、OPC-UA(OPC Unified Architecture)などのためのプログラムであり、「情報系アプリケーション」とも呼ばれる。「非制御アプリ」は、アプリケーションのうち、(1)非周期的に実行されるアプリケーション、または、(2)所定の時間間隔(周期的に実行されるユーザプログラムの実行周期)以上の時間間隔で繰り返し実行されるアプリケーションである。
PLC10は、「非制御アプリ」を実行することで、例えば、以下に示すような情報を、IO-Link等によってデバイス20から受信し、受信した情報をHMI81に表示させたり、外部サーバ82に送信したりする。すなわち、PLC10は、デバイス20の「製品形式」、「シリアルNo./ロットNo.」、「接続位置」、「コメント」、「電源電圧値」、「通電時間」、「作動回数」、「交換日」、「ON/OFF閾値」等の情報をデバイス20から受信し、受信した情報をHMI81に表示させたり、外部サーバ82に送信したりする。
(スケジュール管理についての注記)
なお、スケジューラプログラムは、「非制御アプリ」の実行スケジュールを、「制御対象に対する高速かつ高精度の制御を目的とするプログラム」の実行スケジュールから独立させ、両者を別々に管理してもよい。「制御対象に対する高速かつ高精度の制御を目的とするプログラム」とは、例えば、マイクロプロセッサ110が高速周期で実行する「ユーザプログラム、モーション演算プログラム、シーケンス命令演算プログラム、および、制御アプリ」である。つまり、PLC10は、「非制御アプリ(例えば、情報系アプリケーション)」のスケジューラと、「制御対象に対する高速かつ高精度の制御を目的とするプログラム」のスケジューラとを別々に備えてもよい。
(システムサービス)
「システムサービスプログラム」は、PLC10の実行する処理・プログラムのうち「IO制御」および「制御プログラム」以外の、PLC10の各種機能を実現するためのプログラム群をまとめて示したものである。システムサービスプログラムは、例えば、機械との通信、外部の機器からの要求からの処理、自己診断処理をマイクロプロセッサ110に実行させるプログラムである。また、外部の記憶媒体にメインメモリ140のデータを転送させる処理、外部の記憶媒体からデータを読み出す処理も、システムサービスプログラムに含まれる。さらに、CPUユニット100と不図示のPLCサポート装置との間の接続ケーブル70(USB)などを介した通信処理に関するプログラムも、システムサービスプログラムに含まれる。
これまでに説明してきた制御プログラムおよびスケジューラプログラムは、記憶手段であるメインメモリ140および不揮発性メモリ120に格納されている。CPUユニット100のマイクロプロセッサ110は、記憶手段に格納されたシステムプログラムおよび制御プログラムを適切なタイミングで読み出して実行する。
次に、これまで説明してきた様々なプログラム・処理が、どのようにタスクに設定されるかを、図3を用いて説明していく。例えば、ユーザがPLCサポート装置において、1つのタスクにシーケンス制御とモーション制御とを設定することにより、マイクロプロセッサ110は、シーケンス制御とモーション制御とを同じ時間間隔で繰り返し実行する。
(タスクとプログラムとの関係について)
図3は、PLC10の実行すべきタスクの例を示す図である。前述の通り、ユーザは、例えば不図示のPLCサポート装置を用いて、タスクの実行周期および実行タイミング、タスクで実行する制御プログラム、タスク中のIO制御の有無(そのタスクにおいてIO制御を実行するか否か)、優先順位等を設定することができる。また、「IO制御、ユーザプログラム、およびモーション演算プログラム」を含むタスクは、プライマリ定周期タスクとして、PLC10によって、「モーション演算プログラム」を含まないタスクである定周期タスクおよびイベントタスクに優先して実行される。
図3の(A)は、1msで周期的に実行されるタスクであって、IO制御と、ユーザプログラムと、を含み、モーション演算プログラムを含まないタスクである「定周期タスク」の例である。図3の(A)に例示する定周期タスクを実行するPLC10は、例えば、以下の処理を実行する。
すなわち、マイクロプロセッサ110がIO制御である入力処理プログラムを所定の時間間隔(スキャンタイム、図3の(A)に示す例では1ms)で繰り返し実行することにより、PLC10は、入力機器であるデバイス20(1)からの信号を前記所定の時間間隔で繰り返し受信する。マイクロプロセッサ110は、デバイス20(1)から前記所定の時間間隔で繰り返し取得する信号を用いて、ラダープログラムなどのユーザプログラムを前記所定の時間間隔で繰り返し実行し、出力機器であるデバイス20(2)への制御内容を前記所定の時間間隔で繰り返し決定する。マイクロプロセッサ110がIO制御である出力処理プログラムを前記所定の時間間隔で繰り返し実行することにより、PLC10は、決定した制御内容を前記所定の時間間隔で繰り返しデバイス20(2)に送信し、デバイス20(2)の状態を制御する。
なお、前述の通り、1msのタスク周期から、IO制御およびユーザプログラムの実行に要した時間を除いた時間において、マイクロプロセッサ110は「システムサービス」を実行してもよい。すなわち、システムサービスは、全てのタスク(プライマリ定周期タスク、定周期タスク、およびイベントタスク)の空き時間に実行される。
図3の(B)は、1msで周期的に実行されるタスクであって、IO制御と、ユーザプログラムと、モーション演算プログラムと、を含むタスクである「プライマリ定周期タスク」の例である。図3の(B)に例示するプライマリ定周期タスクには、IO制御、ユーザプログラム、およびモーション演算プログラムに加えて、制御アプリが割り当てられている。前述の通り、図3の(B)に例示するプライマリ定周期タスクは、図3の(A)に例示する定周期タスクよりも優先して実行され、高速かつ高速度で制御対象を制御することができるタスクである。
図3の(C)は、2msで周期的に実行されるタスクであって、図3の(A)と同様に、IO制御と、ユーザプログラムと、を含み、モーション演算プログラムを含まないタスク(定周期タスク)の例である。PLC10は、プライマリ定周期タスクを定周期タスクおよびイベントタスクに優先して実行するとともに、複数の定周期タスクの各々に対してユーザが設定した優先度(優先順位)に従って、複数の定周期タスクの各々を実行する。例えば、図3の(A)に例示する定周期タスクに、図3の(C)に例示する定周期タスクよりも高い優先度が設定されている場合、マイクロプロセッサ110は、図3の(A)の定周期タスクを実行した後に、図3の(C)の定周期タスクを実行する。なお、定周期タスクの実行周期(タスク周期)は、プライマリ定周期タスクの実行周期の整数倍が設定される。
図3の(D)は、4msで周期的に実行されるタスクであって、ユーザプログラムを含み、IO制御およびモーション演算プログラムを含まないタスク(定周期タスク)の例である。前述の通り、複数の定周期タスクの各々は、複数の定周期タスクの各々に対してユーザが設定した優先度(優先順位)に従って実行されるのが原則であり、また、IO制御を含まない定周期タスクは、原則として、IO制御を含む定周期タスクの後に実行される。すなわち、図3の(D)に例示する定周期タスクの優先度は、図3の(A)に例示する定周期タスクの優先度、および、図3の(C)に例示する定周期タスクの優先度よりも低い。
これまで説明してきた、図3の(A)~(C)のタスクは、1msまた2msといった高速な実行周期(タスク周期)が設定されていた。マイクロプロセッサ110は、図3の(A)~(C)のタスクを高速なタスク周期(高速周期)で繰り返し実行することによって、制御対象に対する高速かつ高精度な制御を実行する。
これに対し、マイクロプロセッサ110が実行するタスクの中には、「制御対象に対する高速かつ高精度な制御」を目的としないタスクもある。そのような「制御対象に対する高速かつ高精度な制御」を目的としないタスクは、マイクロプロセッサ110によって、例えば、非周期的に実行され、または、低速なタスク周期で周期的に実行される。
ここで、「低速なタスク周期」とは、「制御対象に対する高速かつ高精度な制御」を目的とするタスク(プライマリ定周期タスクまたは定周期タスク)のタスク周期(図3の(A)~(C)で示した例では、1msまたは2ms)に比べて長い実行周期を意味する。すなわち、「モーション演算プログラムに適した一定周期等の所定の時間間隔(時間間隔)」以上の周期(時間間隔)を、「低速なタスク周期(低速周期)」と呼ぶことがある。言い換えれば、所定の時間間隔(具体的には「制御対象に対する高速かつ高精度な制御」のために必要な実行周期)以上の時間間隔(周期)を「低速周期」と呼ぶことがある。
図3の(D)に示したような「周期的に実行されるタスクであって、ユーザプログラムを含み、IO制御およびモーション演算プログラムを含まない定周期タスク」は、低速周期で実行されてもよい。すなわち、図3の(D)には、「ユーザプログラムを含み、IO制御およびモーション演算プログラムを含まない定周期タスク」について、タスク周期(実行周期)を4msとする例を示した。しかしながら、「ユーザプログラムを含み、IO制御およびモーション演算プログラムを含まない定周期タスク」については、そのタスク周期として、例えば数十ms以上の周期を、つまり、低速周期を設定してもよい。
マイクロプロセッサ110は、図3の(A)~(D)に例示するような周期的に実行すべきタスク(プライマリ定周期タスクおよび定周期タスク)に加えて、非周期的に実行すべきタスク(イベントタスク)を実行する。以下、イベントタスクの例について、図3の(E)を用いて説明していく。
図3の(E)は、非周期的に実行されるタスク(イベントタスク)であって、ユーザプログラムのみが割り当てられているタスクである。イベントタスクは、「ユーザ命令等をPLC10が受け付ける」、「所定の変数の条件一致」といった所定の実行条件が成立した時にのみ実行される。
以上、図3の(A)~(E)を用いて説明してきたように、PLC10のマイクロプロセッサ110が実行するタスクは、以下の4種類に大別することができる。すなわち、(1)「定周期(特に、高速周期)で実行すべきタスクであって、IO制御あり、かつ、モーション制御あり」の「プライマリ定周期タスク」、(2)「定周期(特に、高速周期)で実行すべきタスクであって、IO制御あり、かつ、モーション制御なし」の定周期タスク、(3)「定周期(高速周期または低速周期)で実行すべきタスクであって、IO制御なし、かつ、モーション制御なし」の定周期タスク、および、(4)「非周期的に実行すべきタスクであって、IO制御なし、かつ、モーション制御なし」のイベントタスクに分類することができる。なお、(2)の定周期タスクの優先度は、(3)の定周期タスクの優先度よりも高い。
ただし、PLC10が実行するタスクを上記の4種類に大別することは必須ではなく、例えば、以下の2種類のタスクに大別してもよい。すなわち、「周期的に実行すべきタスク(図3の(A)から(D)に例示したプライマリ定周期タスクおよび定周期タスク)」と、「所定の条件が満たされた場合に実行すべきタスク(図3の(E)に例示したイベントタスク)」と、の2種類に大別してもよい。なお、PLC10の実行する「周期的に実行すべきタスク」および「所定の条件が満たされた場合に実行すべきタスク」はいずれも、制御対象に対する制御に関連するタスクであり、制御タスクと呼んでもよい。
アプリケーションのうち「制御アプリ」は、図3の(B)に例示したプライマリ定周期タスクのような、高速なタスク周期で実行されるタスクに、ユーザプログラムと共に割り当てられる。
これに対して、「非制御アプリ」は、タスクには割り当てられずにPLC10によって実行される。PLC10は、「非制御アプリ」を第4コア114(アプリケーション用コア)に割り当て、「非制御アプリ」をタスクに割り当てることなく直接実行する。一方、PLC10は、例えば、「タスク」に割り当てられている「IO制御」、「制御プログラム」、および「システムサービス」を第1コア111、第2コア112、および第3コア113に割り当て、「システムサービス」および「タスク」を実行する。
言い換えれば、PLC10のマイクロプロセッサ110において、「非制御アプリ」の実行主体であるアプリエンジンは、第4コア114に割り当てられている。また、「タスク(前述の通り、タスクには制御アプリが含まれ得る)」の実行主体であるコントローラエンジンは、第4コア114以外のCPUコアである第1コア111、第2コア112、および、第3コア113に割り当てられている。以下、その詳細を、図4を用いて説明していく。
(マルチコアプロセッサの各コアに割り当てられる処理・プログラムについて)
図4は、CPUユニット100のマイクロプロセッサ110における第1コア111、第2コア112、第3コア113、および第4コア114の各々に割り当てられている処理(プログラム)等の概要を示す図である。第1コア111、第2コア112、第3コア113、および第4コア114の各々に割り当てられるプログラムについて、最初に概要を説明しておけば以下の通りである。
すなわち、PLC10は、複数の制御プログラムを所定の時間間隔で繰り返し実行することによって制御対象を制御する制御装置であって、マイクロプロセッサ110(マルチコアプロセッサ)と、前記複数の制御プログラムを格納した不揮発性メモリ120(メモリ)と、を備え、マイクロプロセッサ110は、アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション(すなわち、非制御アプリ)のみが割り当てられるコアである第4コア114(アプリケーション用コア)を含んでいる。
前記の構成によれば、第4コア114には、アプリケーションのうち、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション(前記制御対象に対する高速かつ高精度な制御を目的としないアプリケーション)のみが割り当てられる。すなわち、PLC10のマイクロプロセッサ110において、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」が割り当てられる第4コア114と、「制御対象への高速かつ高精度な制御のためのプログラム等(例えば、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のあるプログラム等が割り当てられたタスク、および、システムサービス)」が割り当てられるコア(具体的には、第1コア111、第2コア112、および第3コア113)とは異なる。なお、前記「所定の時間間隔」とは、例えば数msである。
ここで、PLC等の制御装置には、制御対象に対する高速かつ高精度な制御だけでなく、前記制御装置が取得・生成した情報を外部装置で利用するための処理、いわゆる情報化のための処理の実行が求められるようになってきている。そして、そのような情報化のための種々のアプリケーションを、制御装置に搭載したいとの要望が高くなってきている。
しかしながら、従来の制御装置は、アプリケーション(例えば、情報化のためのアプリケーション)の実行によってリソースが消費され、「制御対象への高速かつ高精度な制御のためのプログラム」の実行に影響が出る可能性があった。
なお、リソースとは、PLC等の制御装置が前記プログラムおよび前記アプリケーションを実行するための計算資源であり、CPUリソースおよびメモリリソースを含む。CPUリソースは、例えば、前記プログラムおよび前記アプリケーションを実行するために使用可能なCPU帯域幅である。
従来の制御装置は、「制御対象への高速かつ高精度な制御のためのプログラム」への、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の影響を抑制しようとして、以下の対策を講じることがあった。すなわち、従来の制御装置は、十分なリソース量を確保することによって、前記プログラムへの、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の影響を抑制しようとした。そのため、従来の制御装置は、CPUコアおよびメモリ等を増やして装置として大型化したり、各々が所定の処理のみを実行する複数台の制御ユニットに分かれてしまったりすることがあった。
これに対し、PLC10は、「制御対象への高速かつ高精度な制御のためのプログラム」への、「アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の干渉を軽減させ、両者をマイクロプロセッサ110において効率的に実行することが可能となる。つまり、PLC10は、リソース量を増やすことによってではなく、リソースの効率的な利用によって、前記プログラムと被制御アプリとを実行することができる。PLC10は、装置として大型化させて十分なリソース量を確保する必要も、各々が所定の処理のみを実行する複数台の制御ユニットに分ける必要もなく、装置を小型化することが可能となる。
また、PLC10は、前記プログラムへの、非制御アプリの干渉を軽減させ、両者を効率的に実行することができる。つまり、PLC10は、非制御アプリを適宜実行しつつ、非制御アプリから独立に、制御対象に対する制御に必要な前記プログラムを高速に実行することができるので、高性能化を実現することができる。
したがって、PLC10は、高速かつ周期的な処理と、情報化のための処理等の「アプリケーションのうち、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」と、を実行することのできる制御装置について、小型化と高性能化とを両立することができるとの効果を奏する。
また、PLC10は、利用シーンに合わせて、任意のタイミングで、すなわち、優先度によって定義された実行順序の制約を受けずに、「アプリケーションのうち、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」を実行することができるという効果を奏する。
さらに、PLC10は、「制御対象への高速かつ高精度な制御のためのプログラム」と、「アプリケーションのうち、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」との各々を、他方への影響を懸念することなく開発・バージョンアップすることが可能となるとの効果を奏する。これによって、「アプリケーションのうち、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション」の開発・改良について、多様な主体の参加が可能となる。
PLC10は、第4コア114のみに割り当てる「非制御アプリ」と、「制御対象への高速かつ高精度な制御のためのプログラム(すなわち、第1コア111、第2コア112、および第3コア113に割り当てられるプログラム)」とを、別のスケジューラで管理してもよい。言い換えれば、PLC10は、「非制御アプリ」の実行を管理するスケジューラと、「タスク」の実行を管理するスケジューラと、を分離してもよい。
以下、図4を用いて、PLC10のマイクロプロセッサ110において、第1コア111、第2コア112、第3コア113、および第4コア114の各々に、どのような処理・プログラムが割り当てられているかを詳細に説明していく。
第1コア111、第2コア112、および第3コア113には、タスクが割り当てられ、つまり、タスクにおいて実行される「制御プログラム」、「IO制御」、および、「システムサービス」が割り当てられる。ここで、前述の通り、制御プログラムは、ユーザプログラム、モーション演算プログラム、シーケンス命令演算プログラム、および、制御アプリを含む。
第1コア111の全リソースの所定割合(図4に示す例では50%)には、「システムサービス」に係るプログラムが、例えば、接続ケーブル70を介した通信処理(すなわち、通信ポートを介した通信処理)に関するプログラムなどが、割り当てられる。
第2コア112および第3コア113には、タスクにおいて実行される「システムサービス」以外の処理・プログラムが、つまり、「制御プログラム」および「IO制御」が、割り当てられる。なお、前述の通り、「アプリケーション」のうち「制御アプリ」はタスクに割り当てられ、つまり、「制御アプリ」は、第2コア112および第3コア113に割り当てられる。
すなわち、PLC10のマイクロプロセッサ110において、制御アプリ(アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するアプリケーション)は、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するプログラムが割り当てられるコアである第2コア112および第3コア113(制御用コア)に割り当てられている。
前記の構成によれば、マイクロプロセッサ110において、制御アプリは、例えばユーザプログラムなどの、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するプログラムが割り当てられるコアである第2コア112および第3コア113に割り当てられる。
したがって、PLC10は、制御アプリと、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するプログラムとを、第2コア112および第3コア113において効率的に連動させて実行することができるとの効果を奏する。
つまり、PLC10のマイクロプロセッサ110において、「タスク」の実行主体であるコントローラエンジンは、第2コア112および第3コア113に割り当てられている。コントローラエンジンは、或るタスクに割り当てられた「制御アプリ」を、その或るタスクに割り当てられているユーザプログラム等の制御プログラムと連動させて効率的に実行する。
図4に示す例では、「タスク」において実行される「システムサービス」が第1コア111に割り当てられ、「タスク」において実行される「システムサービス」以外の処理・プログラムが第2コア112および第3コア113に割り当てられている。つまり、図4は、「タスク」において実行される「システムサービス」が割り当てられるコアと、「制御プログラム」および「IO制御」が割り当てられるコアとを分離する例を示している。
しかしながら、PLC10において、「システムサービス」が割り当てられるコアと、「制御プログラム」および「IO制御」が割り当てられるコアとを分離することは必須ではない。例えば、「タスク」において実行される「システムサービス」、「制御プログラム」、および「IO制御」が、「第1コア111、第2コア112、および第3コア113」に割り当てられてもよい。「タスク」が割り当てられる、言い換えれば、「タスク」において実行される「IO制御」、「制御プログラム」、および「システムサービス」が割り当てられる、「第1コア111、第2コア112、および第3コア113」を制御用コアと呼んでもよい。
第4コア114には、「アプリケーション」のうち、「非制御アプリ(例えば、情報系アプリケーション)」のみが割り当てられる。
ここで、PLCの第4コア114において、複数の非制御アプリの各々に割り当てるリソースの割合は、ユーザによって設定可能である。
前記の構成によれば、第4コア114において、複数の非制御アプリの各々に割り当てるリソースの割合は、ユーザによって設定可能である。言い換えれば、PLC10は、複数の非制御アプリの各々について、第4コア114の使用割合(例えば、実行時間の比率、メモリ使用量の比率等)をユーザが設定することができる。図4に示す例では、「非制御アプリ1」に第4コア114の全CPUリソースのうち20%が、「非制御アプリ2」に第4コア114の全CPUリソースのうち30%が、割り当てられている。また、ユーザは、PLC10に将来搭載する非制御アプリのために、第4コア114の全リソースのうち所定割合(図4に示す例では50%)を空けておいてもよい。
したがって、PLC10は、ユーザが新たなアプリケーションをPLC10に搭載させて実行させたとしても、複数の非制御アプリの各々の処理速度の低下を抑制することができるとの効果を奏する。
第4コア114に割り当てられるアプリケーションは、(1)データベースとの接続に係る処理、(2)HMI81等の外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部サーバ82等の外部のサーバに送信する処理の少なくとも1つを実行するためのアプリケーションを含んでいてもよい。
前記の構成によれば、第4コア114に割り当てられるアプリケーションは、(1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理の少なくとも1つを実行するためのアプリケーションを含む。
ここで、現在、PLCなどの、複数の制御プログラムを所定の時間間隔で繰り返し実行することによって制御対象を制御する制御装置について、(1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理等を実行するための、情報系アプリケーション(情報化のためのアプリケーション)を搭載したいとの要望が高くなってきている。
したがって、PLC10は、高速かつ周期的な処理に加え、(1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理等を実行することのできる制御装置について、小型化と高性能化とを両立することができるとの効果を奏する。
なおこれまで、PLC10が、第1コア111、第2コア112、第3コア113、および第4コア114という4つのCPUコアを含むマイクロプロセッサ110を備える例を説明してきた。しかしながら、PLC10のマイクロプロセッサ110が4つのCPUコアを含むことは必須ではなく、マイクロプロセッサ110は2つ以上のCPUコアを含んでいればよい。PLCは、2つ以上のCPUコアを含むマイクロプロセッサ110において、以下の2種類のプログラムが別々のCPUコアに割り当てられていればよい。すなわち、「アプリケーションのうち、制御対象に対する高速かつ高精度な制御を目的としないアプリケーション(制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーション)」と、「制御対象に対する高速かつ高精度な制御のためのプログラム(制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のあるプログラム)」とが、異なるCPUコアに割り当てられていればよい。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
10 PLC(制御装置)
110 マイクロプロセッサ(マルチコアプロセッサ)
120 不揮発性メモリ(メモリ)
111 第1コア(制御用コア)
112 第2コア(制御用コア)
113 第3コア(制御用コア)
114 第4コア(アプリケーション用コア)

Claims (3)

  1. 複数の制御プログラムを所定の時間間隔で繰り返し実行することによって制御対象を制御する制御装置であって、
    マルチコアプロセッサと、
    前記複数の制御プログラムを格納したメモリと、を備え、
    前記マルチコアプロセッサは、アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のないアプリケーションのみが割り当てられるコアであるアプリケーション用コアを含み、
    前記アプリケーション用コアにおいて、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行する必要のない複数のアプリケーションの各々、および、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するアプリケーションであって将来搭載するアプリケーションに割り当てるCPU帯域幅およびメモリ使用量の割合は、ユーザによって設定可能である
    ことを特徴とする制御装置。
  2. 前記マルチコアプロセッサにおいて、アプリケーションであって、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するアプリケーションは、前記制御対象に対して所定の時間間隔以下の実行間隔で繰り返し実行するプログラムが割り当てられるコアである制御用コアに割り当てられることを特徴とする請求項1に記載の制御装置。
  3. 前記アプリケーション用コアに割り当てられるアプリケーションは、
    (1)データベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)前記制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理の少なくとも1つを実行するためのアプリケーションを含むことを特徴とする請求項1または2に記載の制御装置。
JP2017024282A 2017-02-13 2017-02-13 制御装置 Active JP7000686B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2017024282A JP7000686B2 (ja) 2017-02-13 2017-02-13 制御装置
EP18751685.1A EP3582036B9 (en) 2017-02-13 2018-01-22 Control device
US16/478,140 US11061377B2 (en) 2017-02-13 2018-01-22 Control device
CN201880006581.6A CN110192159B (zh) 2017-02-13 2018-01-22 控制装置
PCT/JP2018/001780 WO2018147058A1 (ja) 2017-02-13 2018-01-22 制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017024282A JP7000686B2 (ja) 2017-02-13 2017-02-13 制御装置

Publications (2)

Publication Number Publication Date
JP2018132829A JP2018132829A (ja) 2018-08-23
JP7000686B2 true JP7000686B2 (ja) 2022-01-19

Family

ID=63107378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017024282A Active JP7000686B2 (ja) 2017-02-13 2017-02-13 制御装置

Country Status (5)

Country Link
US (1) US11061377B2 (ja)
EP (1) EP3582036B9 (ja)
JP (1) JP7000686B2 (ja)
CN (1) CN110192159B (ja)
WO (1) WO2018147058A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6988773B2 (ja) * 2018-11-15 2022-01-05 オムロン株式会社 制御システムおよび制御装置
JP7250651B2 (ja) * 2019-09-26 2023-04-03 日立建機株式会社 作業機械
JP7443740B2 (ja) 2019-12-12 2024-03-06 セイコーエプソン株式会社 ロボットシステムおよびロボットシステムの制御方法
US20220075349A1 (en) * 2020-09-08 2022-03-10 Delta Tau Data Systems, Inc. Method and apparatus for multi-core processor management in a motion control system
CN118140183A (zh) * 2022-10-03 2024-06-04 松下知识产权经营株式会社 处理器以及具备该处理器的控制***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016012221A (ja) 2014-06-27 2016-01-21 ファナック株式会社 加工プログラム指令内容に応じてcpu負荷を分散可能な数値制御装置
JP2016024605A (ja) 2014-07-18 2016-02-08 日本電信電話株式会社 分散処理方法、処理サーバ、および、プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04155405A (ja) * 1990-10-19 1992-05-28 Mitsubishi Electric Corp 制御装置
JPH04160408A (ja) * 1990-10-23 1992-06-03 Okuma Mach Works Ltd 数値制御装置
US8347044B2 (en) 2009-09-30 2013-01-01 General Electric Company Multi-processor based programmable logic controller and method for operating the same
DE102011105141A1 (de) 2011-06-09 2012-12-13 Dmg Electronics Gmbh Verfahren und system zur simulation eines arbeitsprozesses an einer werkzeugmaschine
US9292427B2 (en) * 2012-09-13 2016-03-22 International Business Machines Corporation Modifying memory space allocation for inactive tasks
JP6167532B2 (ja) * 2013-01-25 2017-07-26 オムロン株式会社 制御装置および制御装置の動作方法
EP2778915A1 (de) * 2013-03-13 2014-09-17 Siemens Aktiengesellschaft Verfahren zum Betrieb einer Industriesteuerung und Industriesteuerung
US20160091882A1 (en) * 2014-09-29 2016-03-31 Siemens Aktiengesellschaft System and method of multi-core based software execution for programmable logic controllers
JP6540166B2 (ja) * 2015-03-31 2019-07-10 オムロン株式会社 制御装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016012221A (ja) 2014-06-27 2016-01-21 ファナック株式会社 加工プログラム指令内容に応じてcpu負荷を分散可能な数値制御装置
JP2016024605A (ja) 2014-07-18 2016-02-08 日本電信電話株式会社 分散処理方法、処理サーバ、および、プログラム

Also Published As

Publication number Publication date
EP3582036B9 (en) 2023-08-23
US11061377B2 (en) 2021-07-13
EP3582036A4 (en) 2020-12-16
JP2018132829A (ja) 2018-08-23
WO2018147058A1 (ja) 2018-08-16
CN110192159B (zh) 2022-06-10
EP3582036B1 (en) 2023-07-12
US20190369587A1 (en) 2019-12-05
CN110192159A (zh) 2019-08-30
EP3582036A1 (en) 2019-12-18

Similar Documents

Publication Publication Date Title
JP7000686B2 (ja) 制御装置
US9618922B2 (en) CPU of PLC, system program for PLC, and recording medium storing system program for PLC
JP4807475B1 (ja) 演算ユニット、出力制御方法、およびプログラム
US10761884B2 (en) Control device for operating multiple types of programs in different execution formats
JP6540166B2 (ja) 制御装置
JP6626240B2 (ja) コントローラ
US8706262B2 (en) CPU unit of PLC, system program for PLC, and recording medium storing system program for PLC
EP2515189A1 (en) Plc cpu unit, system program for plc, and storage medium having system program for plc stored therein
US10877803B2 (en) Control apparatus, control method and non-transitory storage medium
JP6299064B2 (ja) 制御装置、制御方法、およびプログラム
JP2016194830A (ja) 制御装置
US9568905B2 (en) CPU of PLC, system program for PLC, and recording medium storing system program for PLC
JP2020061055A (ja) 制御システム、制御装置および制御方法
US11855907B2 (en) Robot control system and control method
JP2019159532A (ja) 制御装置および制御システム
JP2012194955A (ja) 支援装置、表示制御方法、およびプログラム
CN114503037A (zh) 用于柔性自动化工程程序的队列块

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200908

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210805

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210805

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210816

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210817

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211207

R150 Certificate of patent or registration of utility model

Ref document number: 7000686

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150