JP4993208B2 - 産業用コントローラ用機器 - Google Patents

産業用コントローラ用機器 Download PDF

Info

Publication number
JP4993208B2
JP4993208B2 JP2008021333A JP2008021333A JP4993208B2 JP 4993208 B2 JP4993208 B2 JP 4993208B2 JP 2008021333 A JP2008021333 A JP 2008021333A JP 2008021333 A JP2008021333 A JP 2008021333A JP 4993208 B2 JP4993208 B2 JP 4993208B2
Authority
JP
Japan
Prior art keywords
interlock
state
mpu
instruction
area
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
JP2008021333A
Other languages
English (en)
Other versions
JP2009181443A (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 JP2008021333A priority Critical patent/JP4993208B2/ja
Publication of JP2009181443A publication Critical patent/JP2009181443A/ja
Application granted granted Critical
Publication of JP4993208B2 publication Critical patent/JP4993208B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

この発明は、PLCやPAC等の産業用コントローラ並びにその産業用コントローラを構成するCPUユニット等の産業用コントローラ用機器に関するものである。
FA(Factory Automation)におけるネットワークシステムは、生産設備内の入力機器及び出力機器の制御を司る1または複数のPLC(Programmable Logic Controller)と、そのPLCにより動作が制御される機器とが、制御系のネットワークに接続される。それらPLCと機器は、その制御系のネットワークを介してサイクリックに通信を行なうことで、INデータ及びOUTデータ(以下I/Oデータという)の送受を行ない、生産設備を制御する。
また、最近では、次世代の産業用コントローラとして、PAC(Programmable Automation Controller)と称されるコントローラが開発されている。このPACは、パーソナルコンピュータが持つ高速性や高機能や機能拡張性に加え、PLCが持つ高精度や耐久性を備えている。そのPACもPLCと同様に、ネットワークを介して生産設備の機器と通信を行なうことで、I/Oデータの送受を行ない、生産設備を制御する。
上記のPLCやPAC等の産業用コントローラは、複数のユニットを連結して構成されるタイプのものがある。そのユニットの1つである産業用コントローラの制御を統括するCPUユニットは、ラダー言語等で作製されたユーザプログラムを実行する。このCPUユニットは例えば、INデータである入力機器のON信号またはOFF信号を入力し、入力したON/OFF情報をユーザプログラムによって論理演算し、演算結果であるOUTデータを出力機器へ出力する。その出力が出力機器に対する動作指示となって出力機器が動作することにより、生産設備を制御する。このユーザプログラムの実行命令の一つとして、インターロックがある。このインターロックは、INデータの対象のひとつとなる所定の接点がOFFになった場合、インターロック領域の対象となるOUTデータとなる所定の接点はOFFに固定されるものである。
国際公開番号WO97/23812
従来のインターロックは、通常、専用のハードウェア、例えばASICチップ等により実現されるため、ASICのゲート数の観点からインターロックへの処理対応の柔軟性が低かった。例えばインターロック領域のプログラム中にファンクションブロックが存在する場合、ファンクションブロックのプログラムは実行されないように固定されていた。そのため、ファンクションブロックを呼び出してプログラムを実行し、内部の接点をON/OFF動作させたい等の要求があっても、対応できない場合があった。もちろん、インターロック領域内にあるOUT接点はOFFにするのがインターロックの本来の機能であるので、ファンクションブロックを実行したとして最終的な出力接点はOFFになることもあり、インターロック中は、ファンクションブロックも実行させないで良い(実行させたくない)という考えも当然あるが、実行させたい場合もある。しかし、従来の専用ハードウェアによるインターロックの実行では、インターロック領域内に存在するファンクションブロックの実行/非実行に対するユーザの要求に対応できない。
この発明は、ユーザプログラム中のインターロックに柔軟に対応ができ、対象プログラムの特徴にあわせたインターロックアルゴリズムの変更が可能な産業用コントローラ用機器を提供することを目的とする。
従来のインターロックは専用ハードウェアで実現されており、コンパイル型のプログラムを前提としていなかった。本発明ではソフトウェアによるインターロックを実現することにより、柔軟なファンクションブロックその他のPOUを含むユーザプログラムの設計が可能となる。例えば、ファンクションブロック(FB)等のPOUに対してインターロック有効か無効かの選択をユーザが個々に行なうことで、そのPOUが存在するインターロック領域がインターロック状態であっても、POU内の命令を実行したり、非実行としたりすることができる。具体的には、下記のよう構成する。
(1)本発明に係る産業用コントローラ用機器は、複数の命令語から構成されるプログラム構成単位であるPOUを含むユーザプログラムを演算実行する演算部と、
インターロック状態の時、POU内の命令を実行するか否かを特定するインターロック時動作情報を格納する記憶部と、を備える。そして、ユーザプログラムは、対となるインターロック開始命令とインターロック終了命令が記述された場合、その両命令で囲んだ区間がインターロック領域となり、インターロック開始命令に対応する入力がインターロック状態を示す値の場合、インターロック領域をインターロック状態となるようにする。演算部は、ユーザプログラム中のOUT命令を実行するに際し、そのOUT命令が含まれるインターロック領域がインターロック状態か否かを判断し、インターロック状態の場合には設定されたインターロック処理を実行する機能と、インターロック状態のインターロック領域内に存在するPOUを実行するに際し、記憶部のインターロック時動作情報を確認し、その確認結果に基づきそのPOU内の命令の実行/非実行をする機能と、を備えるようにした。
産業用コントローラ用機器は、実施形態のCPUユニット2単体でも良いし、それを含むPACのように産業用コントローラ自体も含む概念である。産業用コントローラの場合、実施形態のように複数のユニットを連結して構成されるものはもちろん、必要な機能が1つの筐体に組み込まれた一体型のものも含む。
POUは、“Program Organization Unit”の略であり、プログラム構成単位とも称される。このPOUは複数の命令語から構成されるプログラム管理上の最小単位で、プログラム,ファンクション,ファンクションブロックと呼ばれるものである。このPOU単位でプログラム再利用ができる。
演算部は、実施形態ではMPU21に対応する。そのインターロック領域がインターロック状態か否かは、実施形態では、“isInterLock”の値を参照することでわかる。このように、インターロック状態/通常状態を識別する識別情報を適宜設定・更新するようにすると、演算部は、OUT命令を実行するに際し、対応する識別情報を参照するだけで、通常処理をするかインターロック処理をするかを認識できる。インターロック時動作情報は、実施形態では、インターロック時動作フラグに対応する。
本発明によれば、OUT命令を実行するに際し、その都度、インターロック状態か否かを確認し、インターロック状態の場合にはそれに応じた処理(出力OFFや命令非実行等)を行ない、通常状態であれば通常の演算処理をする。これにより、ソフトウェアによるインターロックを実現することができる。そして、インターロック時動作情報を適宜に設定することにより、インターロック状態のインターロック領域中に存在するPOUを実行させたり、従来通り実行させないようにしたりすることが個別に設定可能となる。特に、POUがファンクションブロックのように内部変数を持つものの場合、インターロック状態であってもプログラムを実行させることで内部変数の更新を行なうことができるので好ましい。
(2)ユーザプログラムは、インターロック開始命令とインターロック終了命令とで囲んだインターロック領域内に別のインターロック開始命令とインターロック終了命令とを配置するインターロック領域のネストが許容され、インターロック開始命令に対応する入力が、インターロック状態か通常状態かを示す状態判定用フラグを格納するデータ領域を備え、演算部は、入れ子状態のインターロック領域については、その入れ子状態のインターロック領域に対応する状態判定用フラグと、そのインターロック領域を含むように設定される他のインターロック領域に対応する状態判定用フラグフラグのうち、少なくとも1つがインターロック状態を示す場合、その入れ子状態のインターロック領域はインターロック状態として処理をするようにするとよい。これにより、インターロックのネストを実現できる。
(3)POU中に、対となるインターロック開始命令とインターロック終了命令が記述され、演算部は、そのPOU中でもインターロック状態か否かにより対応する処理を実行するようにするとよい。
本発明は、産業用コントローラ用機器において、ユーザプログラム中のインターロックについて個々に柔軟に対応ができ、対象プログラムの特徴にあわせたインターロックアルゴリズムの設定や変更が可能となる。
図1は、本発明が適用される産業用コントローラの一種であるプログラマブルオートメーションコントローラ(Programmable Automation Controller、略してPAC)1の一形態を示している。このPAC1は、各種の機能を実現するための複数のユニットを連結して構成され、各ユニットは内部バスにて接続される。この複数のユニットは、少なくとも1つのCPUユニット2を有する。更に、本実施形態では、PAC1は、電源ユニット3,モータユニット4,カウンタユニット5,画像ユニット6,通信ユニット7,I/Oユニット8を備えている。もちろん、PAC1を構成するユニットは、上記のものに限ることはなく、実行したい制御等に応じて必要なユニットを適宜取捨選択して構成する。例えば、PACは、「CPUユニット+モータユニット+カウンタユニット」,「CPUユニット+I/Oユニット」という組合せの構成も有効である。なお、本実施形態では、PAC1を例にして説明するが、PLCについても同様に適用できる。
CPUユニット2やその他のユニットに対して事前に各種の詳細設定を行なう。その場合、図示するように、ユーザは、CPUユニット2にパソコンを接続するとともに、そのパソコンにインストールされたアプリケーションプログラムである設定ツールプログラムを起動し、その設定ツールプログラムを用いて、制御プログラム(ユーザプログラムとも呼ぶ)の作成または編集をしてCPUユニットに記憶したり、ユニット間通信に関する設定をしたり、各種ユニットを動作するための各種の詳細設定をする。CPUユニット2は、基本的には入力ユニットや通信ユニットを経由してINデータを取り込む処理(INリフレッシュ処理)、取り込んだINデータに基づいて制御プログラムを演算実行する処理(ユーザプログラム実行処理)、出力ユニット等へOUTデータを出力する処理(OUTリフレッシュ)を行なう。電源ユニット3は、商用電力・交流電圧を各ユニットに応じた直流電圧に変換し、連結された各ユニットに電力を供給する。なお、各ユニットに対して直接直流電圧を供給することで、電源ユニットを接続しない構成とすることでもよい。モータユニット4は、1台以上のサーボドライブ(サーボモータとその制御装置)を接続でき、そのサーボモータの制御を行う。カウンタユニット5は、1台以上のロータリーエンコーダを接続し、エンコーダからのパルス信号を取り込んで回転量や対象物体の移動量などを計測する。画像ユニット6は、1台以上のカメラを接続し、カメラからの画像について所望の画像処理を行なって撮像対象の物体の移動量や部品個数などを計測する。通信ユニット7は、ネットワークに接続された他の産業用コントローラとデータの送受を行なう。I/Oユニット8は、設備装置内のセンサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニットや、設備装置側の制御対象となるアクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット等である。入力機能と出力機能とを併せ持つ入出力ユニットも含まれる。
これらの各ユニットは、ユニットの側面に設けられたコネクタ同士を接続することで、電気的に接続される。この接続により、各ユニット同士は内部バス(パラレル通信)や高速シリアル通信線等を用いて接続され、ユニット間でのデータの送受が行なわれる。
図2は、CPUユニット2の内部構成を示している。CPUユニット2は、MPU21と、周辺コントローラ22と、メモリ23と、通信インタフェース24と、を備えている。MPU21は、パーソナルコンピュータ等にも実装される高性能なもので、所定の演算処理を実行する。このMPU21は、実行周期ごとに分けた複数のタスクを、定周期間隔でスキャンし動作する。すなわち、MPU21が実行すべきタスクは、たとえば1ms周期で実行すべきタスクもあれば、2ms周期で実行すべきタスクもある。もちろん、それ以外にも、4ms,8ms,……というような様々な周期のタスクが存在することがある。そこで、MPU21は、マルチタスク処理により実行すべき周期のタスクを演算処理する。なお、各タスクは、例えば、ラダー言語などで書かれたユーザプログラムを実行するものである。従来のPLCの場合、上記の各タスクごとの実行周期という概念はなく、それら各タスクに対応するプログラムをまとめて記述した一連の制御プログラムを先頭から順に実行し、更に、IOリフレッシュや周辺処理を含む1つのサイクル処理をサイクリックに繰返し実行するようにしていたが、本実施形態のPAC1は、上記のようにマルチタスク処理(時分割処理)を行なう点で相違する。なお、それぞれのマルチタスク処理についてINリフレッシュ処理及びOUTリフレッシュとは同期しなくてもよいし、同期させてもよい。また、PACは、必ずしもマルチタスク処理をするものではなく、従来のようにサイクリックに処理をするものでも良い。
周辺コントローラ22は、チップセットとも称されるもので、メモリ23やインタフェース24とMPU21との間を取り持ち、調停やタイミング調整を行なう。これにより、MPU21は、演算に注力することができる。メモリ23は、例えばMPU21が演算処理をする際にワークメモリとして使用される。通信インタフェース24は、設定用のツール装置を構成するパーソナルコンピュータと接続を図るためのインタフェースである。なお、図示省略するが、他のスレーブ(ユニット)と通信をするための通信インタフェースも備える。このスレーブとしての通信ユニットは、PAC1の内部に実装される通信媒体(内部バス,高速シリアル通信線)を介して通信をする。
本実施形態では、ファンクションブロック(Function Block:FB)によるプログラムの記述を許容しているので、メモリ23上に各ファンクションブロックのインスタンス格納用のデータ領域であるFBインスタンス格納用領域23aを設けている。図3(a)に示すように、メモリ23に設定されるFBインスタンス格納用領域23aは、ファンクションのインスタンスごとに独立して必要な情報を確保するものであり、主に3つの領域から構成される。すなわち、インターロック時にファンクションブロック呼び出しを行なうか否かを指定するフラグ(インターロック時動作フラグ)と、ファンクションブロックインスタンスが保持する各データを格納するデータ領域と、ファンクションブロック実行時の処理を指すポインタである。このポインタは図3(a)中の「手続き」に該当する。ポインタの情報は、メモリ23に格納されているFB定義(ファンクションブロック定義)の具体的な実行時処理を特定するための情報を格納する場所となる。つまり、このポインタで指されるのが、ファンクションブロック定義であり、具体的な実行時処理のプログラム(図5参照)が格納された領域となる。
補足すると、概念的にファンクションブロックは型と実体とから構成されている。型とはデータ型と手続きを表しており、実体の雛型となるものである、実体とは、雛型から生成されるものである。これに対応するようにファンクションブロックは、メモリ領域にFB定義とFBインスタンス領域として格納される。そしてファンクションブロックのインスタンスごとに独立して必要な情報をFBインスタンス領域に確保し、同一のファンクションブロックのインスタンスに共通している情報をFB定義に確保することになる。FBインスタンス領域の代表例としてデータが、FB定義の代表例として手続きがある。手続きがFB定義に確保されるためにファンクションブロック実行時の処理を指すポインタはFB定義を表すことになる。
MPU21は、ファンクションブロック呼出時にインターロック時動作フラグを確認し、ONならばインターロック中にファンクションブロック呼出を行ない、ファンクションブロックのプログラムを実行する。OFFならばインターロック中はファンクションブロック呼び出しを行わず、ファンクションブロックのプログラムを非実行とする。
更に、本実施形態では、ネストのあるインターロック実現のため、メモリ23上に状態判定用フラグを格納するためのデータ領域23bを設けている。図3(b)に示すように、本実施形態ではデータ領域23bを8bit分確保しており、各bitがインターロックのネストの1段に対応している。あるインターロック領域がインターロック状態の場合には、対応するbit(状態判定用フラグ)が0になり、あるインターロック領域がインターロック状態でない通常状態の場合には、対応するbit(状態判定用フラグ)が1になるように制御する。これにより、少なくとも1つのbitに0の状態判定用フラグが存在していればインターロック状態であり、全てのbitが1の状態判定用フラグならば、通常状態であることがわかる。
次に、CPUユニット2が演算実行するネスト構造のインターロックについて、具体的なラダー図で記述されたユーザプログラムを用いて説明する。図4は、インターロック命令を用いたラダー図を示している。図において、“MILH”が、インターロック開始命令であり、“MILC”が、インターロック終了命令である。また、同一のインターロック番号(図では、“0”,“1”)により、対となるインターロック開始命令とインターロック終了命令が特定される。そして、この対となるインターロック開始命令からインターロック終了命令までの間が、インターロック領域となり、インターロック中は、そのインターロック領域中に存在する出力接点(図では“MILH 0”〜“MILC 0”にはさまれた“0002.00”,“H00.00”はOFF(0)となり、SET命令,CNT命令等のOUT系の命令は実行されない。インターロックは、インターロック開始命令に関連付けられる入力接点(図では、“W000.00”,“W000.01”)がOFFの時にインターロックされる。
また、本実施形態では、対となるMILHからMILCまでの区間であるインターロック領域中に、別の対となるMILH,MILCを入れ子状態に配置したネストを許容する。図示の例では、“MILH 0”〜“MILC 0”のインターロック領域中に、“MILH 1”〜“MILC 1”のインターロック領域が配置されたネスト構造となっている。
このプログラムによれば、MILH 0 0100.00の入力接点W000.00、MILH 1 0100.01の入力接点W000.01が共にONの時、インターロック領域の命令はインターロックされずに全て通常通り実行される。
また、MILH 0 0100.00の入力接点W000.00がOFFの時には、MILH 0 からMILC 0までのインターロック領域の出力がインターロックされる。つまり、入れ子となる“MILH 1”,“MILC 1”は、その外側の“MILH 0”,“MILC 0”がインターロックされている場合には、インターロック開始命令“MILH 1”の入力接点W000.01の値に関わらず、MILH 1 0100.01からMILC 1までの領域の出力もインターロックされる。よって、インターロック中のため、MPU21は、出力接点である0002.00、H00.00接点をOFFにし、SET 0002.03並びにCNT 1 #0010命令は、前サイクル時の値のままする(保持する)。
一方、MILH 0 0100.00の入力接点W000.00がONで、MILH 1 0100.01の入力接点W000.01がOFFの場合、“MILH 0”のインターロック開始命令ではインターロックがされず、“MILH 1”のインターロック開始命令でインターロックとなる。従って、MILH 0 0100.00からMILH 1 0100.01の領域は通常通り実行され、MPU21は出力接点0002.00に入力接点0000.01の値(ON/OFF)を書き込む。そして、MILH 1 0100.01からMILC 1までのインターロック領域の出力がインターロックされるので、MPU21は、その領域内のH00.00接点をOFF、SET 0002.03を前サイクルの値のままとする。また、MILC 1からMILC 0の領域は通常通り実行され、MPU21は、2つの入力接点(0000.04,0000.05)に基づきCNT命令を実行する。
そして、本実施形態では、インターロック状態であるか否かの判断をし、インターロック状態の場合にはインターロック中の処理をするのを、専用のハードウェアではなく、ソフトウェアにより処理するようにしている。これにより、ユーザプログラム中のインターロックに柔軟に対応ができ、対象プログラムの特徴にあわせたインターロックアルゴリズムの変更に対応できるようになる。
MPU21は、出力接点や、各種の命令等、少なくともインターロック状態か否かで処理が異なる箇所において、当該処理を実行するに先立ち、インターロック状態か通常状態かを判断し、その状態に応じた処理を実行するようにする。具体的には、図4に示すプログラムの場合、MPU21は、以下の処理を実行する。
(1)MPU21は、1bitの値であるW000.00を読み込み、読み込んだ値をパワーフローと呼ぶデータ格納領域(Power Flow、以下PFと表記する)に書き込む。次にMPU21はMILH 0 0100.00命令を実行する。すなわち、MPU21は、PFが0ならばインターロック状態となり、PFが1ならば通常状態を継続するように決定する。
(2)MPU21は0000.01を読み込み、値をPFに書き込む。次にMPU21はOUT 0002.00命令を実行する。すなわち、MPU21はインターロック状態ならば0002.00をOFFとし、通常状態ならば0002.00にPFの値を書き込む。
(3)MPU21はW000.01を読み込み、PFに書き込む。次にMPU21はMILH 1 0100.01命令を実行する。つまりMPU21はPFが0ならばインターロック状態となり、PFが1ならば通常状態を継続する。
(4)MPU21は0000.02を読み込み、PFに書き込む。MPU21はOUT H00.00命令を実行する。つまり、MPU21はインターロック状態ならばH00.00をOFFとし、通常状態ならばH00.00にPFの値を書き込む。
(5)MPU21は0000.03を読み込み、PFに書き込む。MPU21はインターロック状態ならばSET 0002.03命令を実行せず、前の値のままとし、通常状態ならばSET 0002.03命令を実行し、PFがONならば0002.03をONとする。
(6)MPU21はMILC 1命令、つまりインターロック終了命令を実行する。このインターロック終了命令の具体的な処理アルゴリズムについては、後述する。
(7)MPU21は0000.04を読み込み、PFに書き込む。MPU21はPFをスタックにプッシュし、0000.05を読み込み、PFに書き込む。そして、MPU21はCNT 1 #0010命令を実行する。
(8)MPU21はインターロック終了命令であるMILC 0命令を実行する。
図5は、ネスト構造のインターロック命令を用いたラダー図の別の例を示している。このプログラムは、図4と比較し、ファンクションブロック1を含む点で相違する。また、図6は、このファンクションブロック1のプログラムの一例を示している。ファンクションブロック(Function Block、FB)は、ファンクションブロックの実体であるインスタンスごとにデータを所持する機能部品である。このようにファンクションブロックが存在する場合でも、インターロック開始命令の入力接点であるW000.00,W000.01のON/OFFの状態に応じて、図4の場合と同様に、全領域において各命令を通常通り実行する通常状態となったり、MILH 0 0100.00からMILC 0までの領域がインターロック状態となったり、MILH 1 0100.01からMILC 1までの領域のみがインターロック状態となったり、柔軟に対応できるようになっている。
そして、この図5に示すプログラムの場合、MPU21は、上述の(5)の処理が、下記の(5)′の処理を実行するように機能する。
(5)′MPU21は、0000.03を読み込み、PFに書き込む。MPU21はFB EN命令、ENO命令を呼び出す。そして、図6に示したファンクションブロックの場合、MPU21はENを読み込み、PFに書き込む。次にMPU21はOUT isRun命令を実行する。つまり、MPU21はインターロック状態ならばisRunをOFFとし、通常状態ならばisRunにPFの値を書き込む。ここで、isRunはファンクションブロック内で定義されたBOOL型の局所変数である。また、図6から明らかなように、本実施形態のファンクションブロックは、その内部プログラムにおいてもインターロック開始命令のMILHと、インターロック終了命令のMILCの使用が許可されており、インターロック開始命令のMILH numILと対となる入力接点ENの値により、ファンクションブロックの内部プログラムの所定領域が、インターロック状態になったり、通常状態になったりする。
MPU21はMILH numIL isIL命令を実行する。MPU21はPFが0ならばMILH numILからインターロック状態となり、PFが1ならば通常状態を継続する。
MPU21は、常時ONフラグであるP_Onを読み込み、PFに書き込む。MPU21はOUT ENO命令を実行する。MPU21はインターロック状態ならばENOをOFFとし、通常状態ならばENOにPFの値を書き込む。そして、MPU21はMILC numIL命令を実行する。これにより、ファンクションブロックの内部プログラムの実行が完了する。
次いで、MPU21は出力接点H00.01に対する処理を実行するに際し、インターロック状態か否かを判断し、インターロック状態ならばH00.01をOFFとし、通常状態ならばH00.01にPFの値を書き込む。
図7は、PAC1(CPUユニット2のMPU21)におけるサイクル処理の概略のフローチャートを示しており、図8は、1つのタスク並びに周辺サービスについての処理の詳細なフローチャートを示している。
まず、システムの電源がONされたとき、MPU21は、電源ON時処理を行う(S1)。この電源ON時処理は、ハードメモリ並びにシステムワークの初期化,実装されているユニットの認識,メモリカードからの電源ON時自動転送処理,実装ユニットと登録I/Oテーブルの照合,I/Oメモリエリアのクリア,強制セット/リセット解除などの各種の処理がある。この処理は、従来からあるPLCの場合と同様である。
次いで、MPU21は、登録されているタスクの数だけスレッドを生成し、適切なスケジューリングに従って生成したスレッドを実行する。各タスクは、たとえば実行周期ごとに分けた複数のタスクとすることができる。そして、MPU21は、それぞれを定周期間隔でスキャンし動作する。
各スレッドにおいて、MPU21は、最初に共通処理を行なう(S2)。すなわち、図8に示すように、MPU21は、バッテリ異常チェック,メモリカード着脱チェック,ディップスイッチ監視,I/Oバスチェック,ユーザプログラムのメモリチェック等を行なう(S2a)。そして、MPU21は、そのチェック結果が正常であるか否かを判断し(S2b)、正常な場合には、共通処理を終了し、入力ユニットとのデータ交換を行うINリフレッシュを行なう(S3)。また、チェック結果が異常の場合、MPU21は、対応する異常リレーをセットする(S2c)。これに伴い、異常を知らせるLEDが点灯・点滅したり、アラームが鳴ったりする。MPU21は、以上の種類が運転継続可能なものか否かを判断する(S2d)。継続可能な場合(S2dはYes)には、共通処理を終了し、INリフレッシュを行なう(S3)。なお、運転を停止する異常の場合(S2dはNo)、MPU21は、INリフレッシュ並びにそれに続く演算処理を行なわずにOUTリフレッシュを行なう(S5)
INリフレッシュの実行後、MPU21は、演算処理を行なう(S4)。すなわち、MPU21は、ユーザプログラムをプログラムの先頭から順に実行し(S4a)、ユーザプログラムが終了したか否かを判断し(S4b)、終了していなければユーザプログラムの実行へ処理を戻す。この処理ステップS4a,S4bを繰り返し実行することにより、MPU21は、ユーザプログラムを最終行まで実行する。そして、ユーザプログラムが終了していれば(S4bはYes)、MPU21は、サイクルタイム算出処理を行なう(S4c)。つまり、実行周期である次のサイクルタイムまでの時間を算出し、設定する。そして、MPU21は、設定されたサイクルタイムになるまで停止する(S4d)。
設定されたサイクルタイムに到達した時、MPU21は、出力ユニットとのデータ交換を行うOUTリフレッシュを実行する(S5)。その後MPU21は、処理ステップS2の共通処理の実行へ戻る。
MPU21は、上記の処理ステップS2からS5を、各タスクごとに並列処理により繰り返し実行する。また、MPU21は、演算実行を行なう上記のタスクに加えて、周辺サービスのみを行うタスクを一つ生成し、スケジューリングに従い実行する。すなわち、MPU21は、共通処理(詳細は、処理ステップS2a〜S2c)実行後(S2′)、周辺サービスを実行する(S7)処理を繰り返し実行する。周辺サービスは、例えば、イベント発生時のみ実行されるものや、高機能I/Oユニットとのイベントサービスや、CPU高機能ユニットとのイベントサービスや、RS−232Cポートサービスや、通信ポートサービス等がある。
ここで、演算処理(S4)、特に、ユーザプログラムの実行(S4b)について、図5,図6に示したプログラムを実行する場合のMPU21の処理・機能を説明する。図9,図10に示すように、MPU21は入力接点のW000.00を読み込み、その読み込んだ値(0/1)をPFに書き込む(S11)。
次にMPU21は、インターロック開始命令(MILH 0 0100.00)を実行する(S12)。このインターロック開始命令の実行処理は、具体的には、図11に示すフローチャートを実行する。ここで、図11に示す“MILH n isInterLock”の第一オペランドである“n”は、インターロック番号をあらわす。図3(b)に示すデータ領域23bを用いた場合、nは0以上8未満となる。nは、具体的な数値で記述される場合もあれば、変数で記述される場合もある。第二オペランド(isInterLock)はインターロック中であることを示すBOOL型の変数をあらわす。インターロック中isInterLockは0となり、通常状態では1となる。そして、nやisInterLockは、具体的な数値で記述される場合もあれば、変数で記述される場合もある。また、インターロック開始命令を示すシンボルの3段(MILH/番号/アドレス)との関係でいうと、“n”は中段の番号に対応し、“isInterLock”は下段のアドレスに対応する。つまり、インターロック開始命令で指定される当該アドレスに、isInterLockの値が書き込まれる。そして、インターロック開始命令(MILH命令)の一般的な処理は、以下の通りである。
まず、MPU21はデータ領域23bのnbitにPFの値を書き込む(S41)。処理ステップS12の場合、符号nは“0”であるので、データ領域23bの0bitの位置に、読み込んだPF(0/1)の値を書き込む。
次いで、MPU21は、データ領域23bの8bit分が全て1であるかを確認する(S42)。いずれか1つのbitでも0がある場合には、この分岐判断はNoとなり、インターロック状態にあることになる。データ領域23bが全て1ならば、通常状態となり(S42はYes)、MPU21aは、isInterLockに1を書き込み、MILH命令実行を終了する(S43)。つまり、処理ステップS12の場合、アドレス“0100.00”の領域に1を書き込む。一方、データ領域23bの8bit中に1つでも0が存在する場合(S42はNo)、インターロック状態であることになり、MPU21aは、isInterLockに0を書き込み、MILH命令実行を終了する(S44)。つまり、処理ステップS12の場合、アドレス“0100.00”の領域に0を書き込む。
上記のようにしてインターロック開始命令(MILH 1 0100.00)の実行が完了したならば、MPU21は、0000.01を読み込み、PFに書き込む(S13)。次にMPU21は、OUT2.00命令を実行する。つまり、MPU21は、現在インターロック状態か否かを確認し(S14)、インターロック状態ならば2.00を0とし(S16)、通常状態ならば2.00にPFを書き込む(S15)。インターロック状態か否かは、isInterLockであるアドレス“0100.00”の領域に格納された値(1/0)に基づき判断できる。
次にMPU21はW000.01を読み込み、PFに書き込む(S17)。そして、MPU21は、インターロック開始命令(MILH 1 0100.01)を実行する(S18)。すなわち、MPU21は、図11に示すフローチャートを実行する。具体的には、MPU21は、データ領域23bの1bitにPFの値(入力接点のW000.01の値)を書き込む(S41)。次いで、MPU21は、データ領域23bの8bitが全て1であるかを確認する(S42)。いずれか1つのbitでも0がある場合には、この分岐判断はNoとなり、インターロック状態にあることになる。データ領域23bが全て1ならば、通常状態となり(S42はYes)、MPU21aは、isInterLock(0100.01)に1を書き込み、MILH命令実行を終了する(S43)。一方、データ領域23bの8bit中に1つでも0が存在する場合(S42はNo)、インターロック状態であることになり、MPU21aは、isInterLock(0100.01)に0を書き込み、MILH命令実行を終了する(S44)。
このインターロック開始命令(MILH 1 0100.01)は、ネスト構造の入れ子であり、インターロック開始命令(MILH 1 0100.01)からインターロック終了命令(MILC 1)までのインターロック領域では、図5で説明したとおり、対となる入力接点W000.01がOFFの場合には、インターロック状態となる。そして、入力接点W000.01がONの場合でも、入力接点W000.00がOFFでインターロック開始命令(MILH 1 0100.00)にてすでにインターロック状態となっている場合には、インターロック開始命令(MILH 1 0100.01)からインターロック終了命令(MILC 1)までのインターロック領域はインターロック状態となる。このことは、データ領域23bの各bitに格納する状態判定用フラグを適宜に書き換えることで対応できる。すなわち、W000.01が0(OFF)の場合には、PFに0が書き込まれるので、データ領域23bの1bit(n=1)の領域に0が書き込まれる。従って、少なくとも1bitの部分が0となるので、処理ステップS42の分岐判断はNoとなり、isInterLock(0100.01)に0が書き込まれるので、インターロック状態となる。一方、W000.01が1(ON)の場合には、PFに1が書き込まれるので、データ領域23bの1bit(n=1)の領域に1が書き込まれる。このとき、W000.00が0(OFF)の場合には、処理ステップS12の実行に伴いデータ領域23bの0bit(n=0)の領域に0が書き込まれている。従って、1bitの領域の値の如何に関わらず、処理ステップS42の分岐判断はNoとなり、isInterLock(0100.01)に0が書き込まれるので、インターロック状態となる。なお、W000.01,W000.01が共に1(ON)の場合には、データ領域23bの0bitと1bitの領域は1が書き込まれ、他の領域は、初期値として1が書き込まれたままであるので、データ領域23bの全てのbitが1となり処理ステップS42の分岐判断はYesとなって通常状態となる。
上記のようにしてインターロック開始命令(MILH 1 0100.01)の実行が完了したならば、MPU21は、0.02を読み込み、PFに書き込む(S19)。次にMPU21は、OUT H0.00命令を実行する。つまり、MPU21は、現在インターロック状態か否かを確認し(S20)、インターロック状態ならばH0.00を0とし(S22)、通常状態ならばH0.00にPFを書き込む(S21)。インターロック状態か否かは、isInterLockであるアドレス“0100.01”の領域に格納された値(1/0)に基づき判断できる。
次にMPU21は0000.03を読み込み、PFに書き込む(S23)。そして、MPU21は、ファンクションブロック呼び出しを行う(S24)。このファンクションブロック呼び出し処理は、具体的には、図13〜図15に示すフローチャートを実行する。
MPU21は、データ領域23bを参照し、全て1であるかを確認する(S51)。そして、MPU21は、0が1つでも存在していれば、インターロック状態と判断し、全て1の場合は通常状態と判断する。
通常状態の場合、MPU21は、PFの値(0000.03の値)を調べる(S52)。そして、PFが0の場合、ファンクションブロック呼出処理を終了する。また、PFが1の場合、MPU21は、ファンクションブロックの入力値をセットし(S53)、ファンクションブロック(FB)を実行する(S54)。このファンクションブロックの実行処理は、具体的には、図14,図15に示すフローチャートを実行する。
すなわち、MPU21は、ファンクションブロックのプログラムを先頭から順に実行し(S61)、プログラムが終了したか否かを判断し(S62)、終了していなければファンクションブロックのプログラムの実行へ処理を戻す。この処理ステップS61,S62を繰り返し実行することにより、MPU21は、ファンクションブロックのプログラムを最終行まで実行する。そして、プログラムが終了すればファンクションブロック実行処理を終了する。
ファンクションブロックのプログラムの実行(S61)について、図6に示したプログラムを実行する場合のMPU21の処理・機能を説明する。図15に示すように、MPU21は、ENを読み込み、PFに書き込む(S71)。次にMPU21は、isRunへの書き込み処理を行なう。isRunはOUT系であるので、書き込み処理を行なうに先立ちインターロック状態であるか否かを確認し(S72)、インターロック状態であればisRunに0を書き込み(S74)、通常状態であればisRunにPFを書き込む(S75)。処理ステップ54のファンクションブロック実行処理では、S51の分岐判断により通常状態であることがわかっているので、MPU21は、isRunにPFの値を書き込む。
次にMPU21は、インターロック開始命令(MILH numIL isIL)を実行する(S75)。すなわち、MPU21は、図11に示すフローチャートを実行する。具体的には、MPU21は、データ領域23bの所定のbit(numILで特定される数値に該当するbit)にPFの値(入力接点のENの値)を書き込む(S41)。なお、numILは、ファンクションブロックの内部変数であり、ここでは、2から7のいずれかの数値となる。次いで、MPU21は、データ領域23bの8bitが全て1であるかを確認する(S42)。いずれか1つのbitでも0がある場合には、この分岐判断はNoとなり、インターロック状態にあることになる。データ領域23bが全て1ならば、通常状態となり(S42はYes)、MPU21aは、isInterLock(isILで特定されるアドレス)に1を書き込み、MILH命令実行を終了する(S43)。一方、データ領域23bの8bit中に1つでも0が存在する場合(S42はNo)、インターロック状態であることになり、MPU21aは、isInterLock(isIL)に0を書き込み、MILH命令実行を終了する(S44)。
上記のようにしてインターロック開始命令(MILH numIL isIL)の実行が完了したならば、次にMPU21はP_Onを読み込み、PFに書き込む(S76)。次に、MPU21は、ファンクションブロックの出力であるENOへの書き込みを行なう。この書き込みに先立ち、MPU21は、現在インターロック状態か否かを確認し(S77)、インターロック状態であればENOに0を書き込み(S79)、通常状態であればENOにPFを書き込む(S78)。次にMPU21は、インターロック終了命令(MILC numIL)を実行し、ファンクションブロック実行処理を終了する(S80)。
このインターロック終了命令の実行処理は、具体的には、図12に示すフローチャートを実行する。ここで、図12に示す“MILC n”の第一オペランドである“n”は、インターロック番号をあらわす。対となるインターロック開始命令と同じインターロック番号が記述される。このMILC n命令は、MILH n 第二オペランド で始まったインターロック領域を終了することを示すのに用いる命令である。そして、インターロック終了命令(MILC命令)の一般的な処理は、以下の通りである。
まずMPU21は、データ領域23bのnbitに1を書き込む(S45)。そして、MPU21は、データ領域23bが全て1であるかを確認する(S46)。データ領域23bが全て1ならば、通常状態となり(S46はYes)、MPU21aは、isInterLockに1を書き込み、MILC命令実行を終了する(S47)。つまり、処理ステップS80の場合、アドレス“isIL”の領域に1を書き込む。一方、データ領域23bの8bit中に1つでも0が存在する場合(S46はNo)、isInterLockに0を書き込み、インターロック状態を継続した状態でMILC命令実行を終了する(S48)。つまり、処理ステップS80の場合、アドレス“isIL”の領域に0を書き込む。なお、処理ステップ54の場合、ファンクションブロック1が存在するインターロック領域(MILH1〜MILC1)は通常状態となっているので、S45の処理ステップの実行により、データ領域23bは全てのbitが1となり、通常状態となる。
上記のようにしてインターロック終了命令(MILC numIL)の実行が完了したならば、図13の処理ステップS54の処理が完了するので、MPU21は、ファンクションブロック(FB)の出力値をセットし、ファンクションブロック呼出処理を終了する。
一方、データ領域のいずれか1つでも0があり、インターロック状態の場合(S51でNo)、MPU21は、FBインスタンス領域23にアクセスし、該当するファンクションブロックインスタンスの“インターロック時動作フラグ”を確認する(S56)。そして、そのフラグがON(インターロック時FB実行が有効であることを示す)の場合、MPU21は、通常状態と同様にファンクションブロック(FB)の入力値をセットし(S57)、ファンクションブロックを実行し(S58)、ファンクションブロック(FB)の出力値をセットし(S59)、ファンクションブロック呼出処理を終了する。これら処理ステップS57,S58,S59は、それぞれ、S53,S54,S55と同様である。
一方、“インターロック時動作フラグ”がOFF(インターロック時FB実行が無効であることを示す)の場合、そのままファンクションブロック呼出処理を終了する。このようにすることで、インターロック状態にあるファンクションブロックであっても、ファンクションブロックのプログラムを実行したり、実行させなかったりすることができる。しかも、各ファンクションブロックインスタンスごとに、インターロック時動作フラグを設定するので、インターロック領域内にあるファンクションブロックに対し、個々に演算実行をさせたり、させなかったりすることができる。
上記の処理により、ファンクションブロック呼び出し処理(S24)が完了したならば、図10の処理ステップS25に戻り、MPU21は、OUT H00.01命令を実行する。つまり、MPU21は、インターロック状態か否かを確認する(S25)。この確認は、“0100.01”にアクセスし、書き込まれている値(1/0)に基づいて行なえる。そして、MPU21は、インターロック状態ならばH00.01を0とし(S27)、通常状態ならばH00.01にPFを書き込む(S26)。次にMPU21は、インターロック終了命令(MILC 1)を実行する(S29)。つまり、MPU21は、図12に示すフローチャートを実行する。
次にMPU21は、0000.04を読み込み、PFに書き込む(S30)。次いで、MPU21は、PFをスタックに積み、0000.05を読み込み、PFに書き込む(S31,S32)。そして、MPU21は、PF並びにスタックに積まれた0000.04や0000.05の値に基づいてCNT 1 #10命令を実行する(S33)。そして、MPU21は、インターロック終了命令(MILC 0)を実行する(S34)。つまり、MPU21は、図12に示すフローチャートを実行する。この終了命令を実行することで、データ領域23bの全てのbitが1に戻る。そして、これにより演算処理は、終了する。
なお、上述した実施形態では、プログラム中に入出力変数と内部変数を持つブロックである“ファンクションブロック”を含む例について説明したが、本発明は、ファンクションブロックに限ることはなく、例えば、PLC,PAC等の産業用コントローラにおける演算の組み合わせを拡張したブロックで内部変数を持たない“ファンクション”でもよいし、I/Oやグローバル変数を含むメインプログラムである“プログラム”でもよい。このように、“ファンクションブロック”,“ファンクション”,“プログラム”等のPOU(Program Organization Unit)について適用できる。すなわち、ブロック等の適当な集合に対し、インターロック時に実行するか(呼び出しを行なうか)否かを指定するフラグ(インターロック時動作フラグ)を関連付けて記憶保持させ、演算実行時に、インターロック中のインターロック領域内に係るPOUが存在する場合、当該フラグを参照し、そのPOUの演算を実行したり、実行させなかったりすることができる。
PACの一例を示す図である。 CPUユニットの内部構造の一例を示す図である。 メモリの内部構造の一例を示す図である。 インターロックを説明するためのプログラムの一例を示す図である。 インターロックを説明するためのファンクションブロックを含むプログラムの一例を示す図である。 ファンクションブロックのプログラムの一例を示す図である。 MPUの機能を示すフローチャートである。 MPUの機能を示すフローチャートである。 MPUの機能(ユーザプログラム実行機能)を示すフローチャート(その1)である。 MPUの機能(ユーザプログラム実行機能)を示すフローチャート(その2)である。 MPUの機能(インターロック開始命令実行機能)を示すフローチャートである。 MPUの機能(インターロック終了命令実行機能)を示すフローチャートである。 MPUの機能(ファンクションブロック呼出命令実行機能)を示すフローチャートである。 MPUの機能(ファンクションブロック実行機能)を示すフローチャートである。 MPUの機能(ファンクションブロック実行機能)を示すフローチャートである。
符号の説明
1 PAC
2 CPUユニット
21 MPU(制御部)
23 メモリ(記憶部)
23a FBインスタンス格納用領域
23b データ領域

Claims (3)

  1. 複数の命令語から構成されるプログラム構成単位であるPOUを含むユーザプログラムを演算実行する演算部と、
    インターロック状態の時、前記POU内の命令を実行するか否かを特定するインターロック時動作情報を格納する記憶部と、
    を備え、
    前記ユーザプログラムは、対となるインターロック開始命令とインターロック終了命令が記述された場合、その両命令で囲んだ区間がインターロック領域となり、前記インターロック開始命令に対応する入力がインターロック状態を示す値の場合、前記インターロック領域をインターロック状態となるようにし、
    前記演算部は、
    前記ユーザプログラム中のOUT命令を実行するに際し、そのOUT命令が含まれるインターロック領域がインターロック状態か否かを判断し、インターロック状態の場合には設定されたインターロック処理を実行する機能と、
    インターロック状態のインターロック領域内に存在する前記POUを実行するに際し、前記記憶部のインターロック時動作情報を確認し、その確認結果に基づきそのPOU内の命令の実行/非実行をする機能と、
    を備えたことを特徴とする産業用コントローラ用機器。
  2. 前記ユーザプログラムは、インターロック開始命令とインターロック終了命令とで囲んだインターロック領域内に別のインターロック開始命令とインターロック終了命令とを配置するインターロック領域のネストが許容され、
    前記インターロック開始命令に対応する入力が、インターロック状態か通常状態かを示す状態判定用フラグを格納するデータ領域を備え、
    前記演算部は、入れ子状態のインターロック領域については、前記データ領域の、その入れ子状態のインターロック領域に対応する状態判定用フラグと、そのインターロック領域を含むように設定される他のインターロック領域に対応する状態判定用フラグとのうち、少なくとも1つがインターロック状態を示す場合、その入れ子状態のインターロック領域はインターロック状態として処理をすることを特徴とする請求項1に記載の産業用コントローラ用機器。
  3. 前記POU中に、対となるインターロック開始命令とインターロック終了命令が記述され、前記演算部は、そのPOU中でもインターロック状態か否かにより対応する処理を実行することを特徴とする請求項1または2に記載の産業用コントローラ用機器。
JP2008021333A 2008-01-31 2008-01-31 産業用コントローラ用機器 Active JP4993208B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008021333A JP4993208B2 (ja) 2008-01-31 2008-01-31 産業用コントローラ用機器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008021333A JP4993208B2 (ja) 2008-01-31 2008-01-31 産業用コントローラ用機器

Publications (2)

Publication Number Publication Date
JP2009181443A JP2009181443A (ja) 2009-08-13
JP4993208B2 true JP4993208B2 (ja) 2012-08-08

Family

ID=41035360

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008021333A Active JP4993208B2 (ja) 2008-01-31 2008-01-31 産業用コントローラ用機器

Country Status (1)

Country Link
JP (1) JP4993208B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5747584B2 (ja) 2011-03-15 2015-07-15 オムロン株式会社 制御装置およびシステムプログラム
US9377769B2 (en) 2011-03-15 2016-06-28 Omron Corporation Control apparatus for updating a user program while processing is being performed and recording medium
JP5218585B2 (ja) * 2011-03-15 2013-06-26 オムロン株式会社 制御装置およびシステムプログラム
JP5796311B2 (ja) 2011-03-15 2015-10-21 オムロン株式会社 制御装置およびシステムプログラム
KR101821068B1 (ko) 2013-06-25 2018-01-22 미쓰비시덴키 가부시키가이샤 프로그래머블 컨트롤러
JP6859922B2 (ja) 2017-10-24 2021-04-14 オムロン株式会社 制御装置、制御装置の制御方法、情報処理プログラム、および記録媒体

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11143504A (ja) * 1997-11-07 1999-05-28 Denso Corp プログラマブルコントローラ
JP4366605B2 (ja) * 2005-09-16 2009-11-18 オムロン株式会社 開発支援装置およびプログラムならびに処理方法
JP2008059421A (ja) * 2006-09-01 2008-03-13 Yokogawa Electric Corp シーケンスプログラム編集支援装置

Also Published As

Publication number Publication date
JP2009181443A (ja) 2009-08-13

Similar Documents

Publication Publication Date Title
JP4993208B2 (ja) 産業用コントローラ用機器
EP3256915B1 (en) Extending a programmable logic controller with apps
CN107924171B (zh) 从装置、从装置的控制方法以及记录介质
EP2682830B9 (en) Control device and system program, and recording medium
WO2017154273A1 (ja) マスタースレーブ制御システム、マスタースレーブ制御システムの制御方法、情報処理プログラム、および記録媒体
EP2525266A1 (en) Control device, system program, and storage medium
US9377769B2 (en) Control apparatus for updating a user program while processing is being performed and recording medium
JP2017167596A (ja) スレーブ装置、スレーブ装置の制御方法、情報処理プログラム、および記録媒体
JP3754369B2 (ja) 自動化装置および更新方法
JP7000686B2 (ja) 制御装置
CN111095138B (zh) 控制装置、控制装置的控制方法、信息处理程序及记录介质
JP4941365B2 (ja) 産業用コントローラ
US20130081054A1 (en) Method for Enabling Sequential, Non-Blocking Processing of Statements in Concurrent Tasks in a Control Device
JPH09128255A (ja) プログラマブル論理制御器
JP5344868B2 (ja) 中間装置を介して制御装置と周辺要素との間でメッセージを伝達するための方法
CN116909678A (zh) 一种容器化plc的实现方法及系统、管理服务器
JP5365875B2 (ja) 産業用コントローラ
JP2010079355A (ja) 複数plc間の協調制御システム
US20220402121A1 (en) Control and monitoring of a machine arrangement
US20210405606A1 (en) Production system, host control device, control device, communication method, and program
JP2017068663A (ja) プログラマブルコントローラ
JP2007304678A (ja) 制御システム及び制御装置群の更新方法
JP6645223B2 (ja) 制御システム、および制御装置
JP5088566B2 (ja) 割込機能を備えたplc
JP2007128413A (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111212

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: 20120412

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120425

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4993208

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250