JP5921449B2 - コントローラ - Google Patents

コントローラ Download PDF

Info

Publication number
JP5921449B2
JP5921449B2 JP2013007329A JP2013007329A JP5921449B2 JP 5921449 B2 JP5921449 B2 JP 5921449B2 JP 2013007329 A JP2013007329 A JP 2013007329A JP 2013007329 A JP2013007329 A JP 2013007329A JP 5921449 B2 JP5921449 B2 JP 5921449B2
Authority
JP
Japan
Prior art keywords
controller
control program
control
processing
scenario
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
JP2013007329A
Other languages
English (en)
Other versions
JP2014137781A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2013007329A priority Critical patent/JP5921449B2/ja
Publication of JP2014137781A publication Critical patent/JP2014137781A/ja
Application granted granted Critical
Publication of JP5921449B2 publication Critical patent/JP5921449B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明は、機械装置を構成する周辺装置を複数のコントローラで制御するマルチコントローラシステムにおいて、制御プログラムをコントローラ上でシミュレーション実行して入出力処理を検証するコントローラに関するものである。
液晶製造装置や半導体製造装置といった大型の機械装置は、ワーク配給装置やワーク搬送装置などの種々の周辺装置と、周辺装置の動作を制御信号や指令値の入出力(I/O)処理によって制御するコントローラとを組み合わせて構成される。
I/O処理は、コントローラ上で実行する制御プログラムによって行われる。制御プログラムは、I/O処理を行うことによって制御信号のオン・オフ状態を確認し、周辺装置が動作停止中か動作中かといった周辺装置の状態を特定する。さらに、周辺装置の状態に基づいて、機械装置の工程の遷移を制御するためのI/O処理を行う。
大型の機械装置の場合、多数の周辺装置を備えているため、複数のコントローラを用いたマルチコントローラシステムとして機械装置を構成する。マルチコントローラシステムにおいて、複数のコントローラはそれぞれI/O処理を実行し、周辺装置の動作を制御することによって、機械装置全体の工程の遷移を制御する。
制御プログラムのI/O処理に不具合があると、周辺装置の誤動作やワークの破損を引き起こす原因となりうる。このため、制御プログラムのI/O処理に不具合が含まれていないことをI/O処理の検証によって確認し、不具合が発見された場合は制御プログラムを修正して周辺装置の誤動作やワークの破損が発生しないようにする。
特に、マルチコントローラシステムにおいて、複数のコントローラを跨いで次工程への遷移が行われる場合、制御プログラムは自コントローラの制御信号のオン・オフ状態を確認すると同時に、次工程への遷移に関係する他コントローラの制御信号のオン・オフ状態を確認し、次工程への遷移が可能な状態であるか否かを判定する必要がある。次工程への遷移が可能な状態であれば、周辺装置を動作させて次工程に遷移するように制御プログラムのI/O処理を実行する。
このように、複数のコントローラを跨いで次工程への遷移が行われる場合は、自コントローラと他コントローラの制御信号のオン・オフ状態を併せて確認し、制御プログラムが所望のI/O処理を行うことを検証する必要がある。
このような前提において、従来のI/O処理の検証手段の一例として、コントローラに付属されるコントローラの調整用ユーティリティプログラムをパソコンにインストールし、ユーティリティプログラムを用いて手動操作でコントローラのI/Oを強制的に書き換えて制御プログラムのI/O処理を検証する方法があった。
また、別の手段として、JTAGエミュレータのようなデバッグ用機器を用いて制御プログラムをデバッグ実行し、制御プログラムをブレークで強制停止させ、ステップ実行・変数ウオッチ・変数の値変更などを行って制御プログラムのI/O処理を検証する方法があった。
さらに、別の手段として、例えば特許文献1に示されているように、周辺装置に対するI/O処理をシミュレーション実行する検証方法も知られている。特許文献1では、ハードウェア記述言語に変換された制御プログラムと、ハードウェア記述言語で記述されたプログラマブルコントローラのモデルと、ハードウェア記述言語で記述された制御対象の装置のモデルと、ハードウェア記述言語で記述されたテスト用プログラムと、を用いて、制御プログラムが所望のI/O処理を行うことを検証する方法が開示されている。
特開平8−54907号公報
マルチコントローラシステムにおける制御プログラムのI/O処理の検証で不具合を発見した場合、すべてのコントローラの制御プログラムを一斉に強制停止させることが望ましい。この理由は、不具合が発生した自コントローラの制御プログラムのみを強制停止させ、他コントローラの制御プログラムの実行を継続させると、不具合発生時から他コントローラの制御信号のオン・オフ状態が変化してしまう可能性があるためである。特に、上述したような複数のコントローラを跨いで次工程への遷移が行われる場合は、不具合発生時の自コントローラと他コントローラの制御信号のオン・オフ状態を併せて確認し、不具合の原因を調査する。これを実現するために、すべてのコントローラの制御プログラムを一斉に強制停止させる必要がある。
このような前提において、上記従来のようなユーティリティプログラムを用いて手動操作でコントローラのI/Oを強制的に書き換えて制御プログラムのI/O処理を検証する方法では、例えば、ワークが所定の位置に置かれたことを検出する「ワーク検出センサ」の入力信号のオン・オフ状態を、ユーティリティプログラムを用いて手動操作で強制的に書き換える。この操作によって、機械装置にワークを投入することなく、工程間を流れるワークの動きをシミュレーションできる。一方、制御プログラムは、シミュレーションによって仮想的につくりだされたワークの動きに従ってI/O処理を実行し、機械装置全体の工程の遷移を制御する。
一般的に、ユーティリティプログラムは、コントローラとユーティリティプログラムとが1対1に通信するように実装されていることが多い。このため、マルチコントローラシステムにおいて、ユーティリティプログラムを用いた制御プログラムのI/O処理の検証方法では、コントローラと同数の複数のユーティリティプログラムを実行する必要がある。
さらには、制御プログラムのI/O処理に不具合が発見された場合は、直ちに制御プログラムを強制停止させて不具合の原因を調査し、不具合を解消する必要がある。
しかし、複数のコントローラで実行中の制御プログラムを強制停止させるためには、コントローラと対応する各々のユーティリティプログラムを操作して個別に制御プログラムを停止させることになる。このため、複数のユーティリティプログラムを同時に操作して複数のコントローラで実行中の制御プログラムを一斉に強制停止させることが困難である、という課題があった。
また、JTAGエミュレータのようなデバッグ用機器を用いて制御プログラムをデバッグ実行し、制御プログラムのI/O処理を検証する方法では、ブレーク停止・ステップ実行・変数ウオッチ・変数の値変更などのデバッグ操作を制御するための専用線を、デバッグ用機器と制御プログラムを実行するプロセッサとの間で接続する。この状態で、例えば、検証対象のI/O処理の直前で制御プログラムをブレークで強制停止させ、制御プログラムをステップ実行しながら制御信号と対応する変数をウオッチすることで、制御プログラムが所望のI/O処理を行うことを検証する。あるいは、上述したようなワーク検出センサの入力信号と対応する変数の値を変更し、ワーク検出センサの入力信号のシミュレーションを行うことで、制御プログラムが所望のI/O処理を行うこと検証する。制御プログラムのI/O処理に不具合が発見された場合は、デバッグ用機器を用いて複数のコントローラで実行中の制御プログラムを一斉に強制停止させて不具合の原因を調査し、不具合を解消する。
一般的に、コントローラは、機械装置の制御盤内に組み込まれていることが多い。また、プロセッサはコントローラの筐体内部に組み込まれていることが多い。すなわち、デバッグ用機器とプロセッサとの間を前述した専用線で接続するためには、一端をプロセッサと接続した専用線をコントローラの筐体外部に引き出して、さらに、機械装置の制御盤の外部に専用線を引き出してデバッグ用機器と接続する必要がある。このため、機械装置の構造(例えば制御盤の取付け位置)によって、この専用線を外部に引き出すことが困難な場合がある、という課題があった。
さらには、マルチコントローラシステムにおいて、1台のデバッグ用機器で複数のコントローラの制御プログラムに対してデバッグ操作を行うためには、デバッグ用機器と各々のコントローラのプロセッサとを専用線で接続する必要があり、このような接続手段を予め設けておく必要がある、という課題があった。
また、特許文献1では、単一のコントローラの制御プログラムが所望のI/O処理を行うことを検証するためのコントローラモデルによるシミュレーション手段、シミュレーション実行中に制御プログラムのI/O処理に不具合が発見された場合に制御プログラムを強制停止する手段、および単一のコントローラモデルによるシミュレーションを複数のコントローラモデルに拡張して実施する手段が開示されている。
しかしながら、特許文献1に記載の複数のコントローラモデルによるシミュレーションにおいて、制御プログラムのI/O処理に不具合が発見された場合に、複数のコントローラモデルで実行中のすべての制御プログラムを一斉に強制停止する手段を有していない。このため、上述したような複数のコントローラを跨いで次工程への遷移が行われる場合は、不具合発生時の自コントローラと他コントローラの制御信号のオン・オフ状態を併せて確認し、不具合の原因を調査することが困難である、という課題があった。
この発明は、上記のような問題点を解決するためになされたものであり、制御プログラムのシミュレーション実行時、制御プログラムのデバッグ操作用の専用線の接続や機械装置の外部への引き出しといった特別な手段を必要とせずに、所望のI/O処理が行われなかったことを検出したことを契機として複数のコントローラで実行中のすべての制御プログラムを一斉に強制停止することのできるコントローラを得ることを目的とする。
この発明に係るコントローラは、マルチコントローラ構成で、I/O処理によって周辺装置の動作を制御する制御プログラムのシミュレーションを実施するコントローラであって、周辺装置に対する制御信号のオン・オフまたは周辺装置の制御データの読み書きのうちの少なくともいずれかをI/O処理として実行するための制御プログラムを実行する制御プログラム実行部と、制御プログラム実行部によるI/O処理を中継すると共に、I/O処理がシミュレーション対象のI/O処理であった場合、I/O処理を行うデバイスアクセス制御部と、制御プログラムのI/O処理のシミュレーション実行と対応する応答処理をシミュレーション実行し、制御プログラムによるI/O処理が所望の動作を行っているかを判定し、所望の動作を行っていない場合は、制御プログラムの実行停止要求を行うためのシナリオプログラムを実行するシナリオプログラム実行部と、シナリオプログラム実行部から制御プログラムの実行停止要求を受けた場合は、自コントローラでシミュレーション実行中の制御プログラムを強制停止させると同時に、他コントローラに対して制御プログラムのリモート停止要求を通知し、かつ、リモート停止要求の通知を受けた場合は、自コントローラでシミュレーション実行中の制御プログラムのI/O処理を強制停止させる連係シミュレーション制御部とを備えたものである。
この発明のコントローラは、制御プログラムによるシミュレーションを実行中、I/O処理が所望の動作を行っているかを判定するためのシナリオプログラムを用い、I/O処理が所望の動作を行っていないと判定した場合は、連係シミュレーション制御部で自コントローラと他コントローラの制御プログラムの実行を停止させるようにしたので、制御プログラムのシミュレーション実行時、制御プログラムのデバッグ操作用の専用線の接続や機械装置の外部への引き出しといった特別な手段を必要とせずに、所望のI/O処理が行われなかったことを検出したことを契機として複数のコントローラで実行中のすべての制御プログラムを一斉に強制停止することができる。
この発明の実施の形態1によるコントローラを備えた連係シミュレーションシステムを示す構成図である。 この発明の実施の形態1によるコントローラの制御プログラムI/O処理を説明するためのフローチャートである。 この発明の実施の形態1によるコントローラのシナリオプログラム実行開始条件の判定処理を説明するためのフローチャートである。 この発明の実施の形態1によるコントローラの制御プログラムとシナリオプログラムのI/O処理の具体例を示すタイミングチャートである。 この発明の実施の形態1によるコントローラの制御プログラムに不具合が含まれる場合の具体例を示すタイミングチャートである。 この発明の実施の形態2によるコントローラを備えた連係シミュレーションシステムを示す構成図である。 この発明の実施の形態2によるコントローラの模擬デバイスパラメータ保持部のデータ例を示す説明図である。 この発明の実施の形態2によるコントローラのシナリオプログラム実行開始条件保持部のデータ例を示す説明図である。
実施の形態1.
図1は、この発明の実施の形態1によるコントローラを複数備えた連係シミュレーションシステムを示す構成図である。
図1に示す連係シミュレーションシステムは、複数個のコントローラ1が外部接続バス100によって相互に接続されることで構成されている。それぞれのコントローラ1は、制御プログラム実行部2、デバイスアクセスI/F3、外部接続バスI/F4、デバイスアクセス制御部5、実デバイスメモリ6、模擬デバイスメモリイメージ7、シナリオプログラム実行部8、入出力イベント制御部9、リモートデバイスアクセスI/F10、連係シミュレーション制御部11を備えている。
制御プログラム実行部2は、コントローラ1と周辺装置(図示せず)との間のI/O処理を制御する制御プログラム20をCPUで実行するプログラム実行部である。制御プログラム20は、プログラミング言語(例えば、C言語)を用いて作成される。また、制御プログラム20は、ユーザが所望の動作を得るために、制御プログラム20を1つ以上作成してコントローラ1で実行するようにしてもよい。デバイスアクセスI/F3は、I/O処理を実行するためのインタフェースを制御プログラム20に対して提供するためのもので、制御プログラム20を作成するために用いられるプログラミング言語から利用可能な方法(例えば、C言語プログラムの関数)を用いればよく、本発明ではその実施形態を問わない。外部接続バスI/F4は、コントローラ1を外部接続バス100に接続するためのインタフェースである。
デバイスアクセス制御部5は、制御プログラム実行部2によるデバイスアクセスI/F3を介したI/O処理要求及びシナリオプログラム実行部8によるリモートデバイスアクセスI/F10を介したI/O処理要求を受け付け、当該I/O処理要求がシミュレーション対象のI/Oであるかを判定し、当該I/O処理要求がシミュレーション対象のI/Oであった場合は模擬デバイスメモリイメージ7に対してI/O処理を実行し、一方、当該I/O処理要求がシミュレーション対象のI/Oではなかった場合は実デバイスメモリ6に対してI/O処理を実行する制御部である。
実デバイスメモリ6は、制御プログラム実行部2やシナリオプログラム実行部8からメモリ読み書き処理と同じアクセス手段でI/O処理を実行できるように、メモリアドレス空間の一部として構成されるメモリ領域である。さらに、コントローラ1と周辺装置との間で入出力する制御信号の1つが実デバイスメモリ6の特定の1ビットと対応させるようにメモリアドレス割当てを行い、同様にしてコントローラ1と周辺装置との間で入出力する制御データの1つが実デバイスメモリ6の固定長のデータ領域(例えば、8ビット、または16ビット、または32ビット、など)と対応させるようにメモリアドレス割当てを行う。つまり、制御信号は、実デバイスメモリ6に含まれるメモリアドレスと、当該メモリアドレスで指定されるメモリのビット番号との組合せによって一意に特定され、同様にして制御データは、実デバイスメモリ6に含まれるメモリアドレスを開始アドレスとする固定長のデータ領域によって一意に特定される。
模擬デバイスメモリイメージ7は、制御プログラム20のI/O処理をシミュレーションで動作検証するために、記憶装置上に構成されるシミュレーション専用のメモリ領域である。また、模擬デバイスメモリイメージ7は、メモリアドレス空間の一部として構成される方法(例えば、DRAMなどの主記憶装置)を用いればよく、本発明ではその実施形態を問わない。さらに、模擬デバイスメモリイメージ7は、実デバイスメモリ6と同様のメモリアドレス割当てを行う。つまり、シミュレーション対象の制御信号は、模擬デバイスメモリイメージ7に含まれるメモリアドレスと、当該メモリアドレスで指定されるメモリのビット番号との組合せによって一意に特定され、同様にして制御データは、模擬デバイスメモリイメージ7に含まれるメモリアドレスを開始アドレスとする固定長のデータ領域によって一意に特定される。
シナリオプログラム実行部8は、制御プログラム20のI/O処理のシミュレーション実行と対応する応答処理をシミュレーション実行するためのシナリオプログラム80をCPUで実行するプログラム実行部である。シナリオプログラム80は、制御プログラム20と同様にプログラミング言語を用いて作成される。また、シナリオプログラム80は、ユーザが所望のシミュレーション(制御プログラム20のI/O処理の動作検証)を実施するために、シナリオプログラム80を1つ以上作成してコントローラ1で実行してもよい。
入出力イベント制御部9は、シナリオプログラム実行部8による制御プログラム実行部2のI/O処理のシミュレーション実行と対応する応答処理をシミュレーション実行するために、シナリオプログラム80の実行開始条件が成立するか否かを判定するための制御部である。リモートデバイスアクセスI/F10は、I/O処理を実行するためのインタフェースをシナリオプログラム実行部8に対して提供するためのもので、シナリオプログラム80を作成するために用いられるプログラミング言語から利用可能な方法を用いればよく、本発明ではその実施形態を問わない。
連係シミュレーション制御部11は、シナリオプログラム実行部8からの制御プログラム20の実行停止要求を受けて自コントローラでシミュレーション実行中の制御プログラム20を強制停止させると同時に、外部接続バスI/F4で相互接続された他コントローラの連係シミュレーション制御部11に対して制御プログラムのリモート停止要求を通知し、一方、リモート停止要求の通知を他のコントローラから受けた場合は、自コントローラでシミュレーション実行中の制御プログラム20のI/O処理を強制停止させる制御部である。
なお、デバイスアクセス制御部5、入出力イベント制御部9、連係シミュレーション制御部11は、それぞれに対応するソフトウェアとこれを実行するためのCPUやメモリ等のハードウェアから実現されている。
次に、実施の形態1のコントローラの動作について説明する。
図2は、制御プログラム20のI/O処理を説明するためのフローチャートである。
制御プログラム実行部2による制御プログラム20の実行中にI/O処理要求が発生すると、デバイスアクセスI/F3を介してデバイスアクセス制御部5にI/O処理要求が通知される(ステップST1)。次に、デバイスアクセス制御部5が、このI/O処理要求がシミュレーション対象のI/Oであるかを判定し(ステップST2)、シミュレーション対象のI/Oであると判定された場合(ステップST2のYESの場合)は、デバイスアクセス制御部5が、目的I/Oと対応する模擬デバイスメモリイメージ7のメモリアドレスを取得する(ステップST3a)。一方、ステップST2において、シミュレーション対象のI/Oではないと判定された場合(ステップST2のNOの場合)は、デバイスアクセス制御部5が、目的I/Oと対応する実デバイスメモリ6のメモリアドレスを取得する(ステップST3b)。次に、ステップST3aまたはステップST3bで取得したメモリアドレスに対して、デバイスアクセス制御部5は、I/O処理を実行する(ステップST4)。要求されたI/O処理が書込み処理の場合(ステップST5のYESの場合)は、書込み処理を実行し(ステップST6a)、要求されたI/O処理が読出し処理の場合(ステップST5のNOの場合)は、読出し処理の実行結果を制御プログラム実行部2に渡す(ステップST6b)。
図3は、入出力イベント制御部9が実行するシナリオプログラム80の実行開始条件の判定処理、及び、シナリオプログラム実行部8が実行する制御プログラム20のI/O処理と対応する応答のシミュレーション処理を説明するためのフローチャートである。
まず、入出力イベント制御部9がリモートデバイスアクセス1/F10を介して実デバイスメモリ6と模擬デバイスメモリイメージ7の値を読み出す(ステップST11)。次に、ステップST11の読出し結果とシナリオプログラム80の実行開始条件とを比較し、シナリオプログラム80の実行開始条件が成立しているかを判定する(ステップST12)。シナリオプログラム80の実行開始条件が成立しなかった場合(ステップST12のNOの場合)は、実行開始条件の判定処理を終了する。
一方、実行開始条件が成立した場合(ステップST12のYESの場合)は、シナリオプログラム実行部8は、入出力イベント制御部9からの判定結果を受けて、実行開始条件が成立したシナリオプログラム80の実行を開始する(ステップST13)。シナリオプログラム実行部8は、制御プログラム20のI/O処理が所望の動作を行っているかを検査し(ステップST14)、所望の動作を行っていると判定された場合(ステップST14のYESの場合)は、シナリオプログラム80の実行を継続して応答のシミュレーション実行結果を模擬デバイスメモリイメージ7に書き込み(ステップST15)、応答のシミュレーション実行が完了した場合(ステップST16のYESの場合)はシナリオプログラム80の実行を終了し、応答のシミュレーション実行を継続する場合(ステップST16のNOの場合)はステップST14に戻って処理を継続する。一方、制御プログラム20のI/O処理が所望の動作を行っていないと判定された場合(ステップST14のNOの場合)は、シナリオプログラム実行部8が連係シミュレーション制御部11に対して制御プログラム20の停止要求を通知し(ステップST17)、さらにシナリオプログラム80の実行を停止する(ステップST18)。
また、図3に示した処理は、一定の周期で繰返し実行しても、制御プログラム20によって実行されるI/O処理のうち書込み処理の実行直後(図2のステップST6aの直後)に実行してもよい。
次に、この実施の形態1に係るコントローラにより、制御プログラム20のI/O処理が所望の動作を行っているかをシミュレーションで検証する具体例について説明する。
一般に、大型の機械装置は多数の周辺装置を複数のコントローラで制御されるように構成されているが、ここでは説明の便宜上、機械装置の構成として、外部接続バスで相互接続されている2基のコントローラ(コントローラaとコントローラb)、および3つの周辺装置(ワーク配給装置とワーク搬送装置とワーク加工装置)があって、ワーク配給装置とワーク搬送装置がコントローラaに接続され、ワーク加工装置がコントローラbに接続されているものとする。また、コントローラaでは制御プログラム20aがI/O処理を行ってワーク配給装置とワーク搬送装置の動作を制御し、コントローラbでは制御プログラム20bがI/O処理を行ってワーク加工装置の動作を制御するものとする。この制御プログラム20aと20bのI/O処理が所望の動作を行うかをシミュレーションで検証する。
そこで、制御プログラム20aのI/O処理と対応するワーク配給装置の応答をシミュレーション実行するシナリオプログラム80a1、制御プログラム20aのI/O処理と対応するワーク搬送装置の応答をシミュレーション実行するシナリオプログラム80a2、制御プログラム20bのI/O処理と対応するワーク加工装置の応答をシミュレーション実行するシナリオプログラム80bを作成し、コントローラaと、ワーク配給装置およびワーク搬送装置との間で入出力する制御信号と制御データをシミュレーション対象のI/Oとしてコントローラaに設定し、コントローラbと、ワーク加工装置との間で入出力する制御信号と制御データをシミュレーション対象のI/Oとしてコントローラbに設定してシミュレーションを開始する。
図4は、制御プログラム20a、20b、シナリオプログラム80a1、80a2、80bが実行するI/O処理のタイミングチャートである。
図4中の制御信号の出力Y0010は機械装置全体の始動信号、出力Y0018はワーク配給装置を駆動するための制御信号、出力Y0019はワーク搬送装置を駆動するための制御信号、出力Y0038はワーク加工装置を駆動するための制御信号、制御データD200はワーク加工装置の制御データであり、これらをシミュレーション対象のI/Oに設定し、制御プログラム20a、20bのI/O処理によって制御信号のオン・オフや制御データの更新を制御する。
また、図4中の制御信号の入力X0008はワーク配給装置のワーク検出信号、入力X0009はワーク配給完了を示すワーク搬送装置のワーク検出信号、入力X000Aはワーク加工装置に対するワーク投入位置にワークが搬送されたことを示すワーク搬送装置のワーク検出信号、入力X000Bはワーク加工装置のワーク投入完了信号、入力X000Fは機械装置全体の運転可能状態を示す信号であり、これらをシミュレーション対象のI/Oに設定し、シナリオプログラム80a1、80a2、80bのI/O処理によって制御信号のオン・オフを制御する。
さらに、図4のシナリオプログラム80a1の実行開始条件を「出力Y0010:オン」、80a2の実行開始条件を「入力X0008:オン、入力X000F:オン、かつ出力Y0018:オン」、80bの実行開始条件を「入力X000A:オン、かつ入力X000F:オン、かつ出力Y0019:オフ、かつ出力Y0038:オン、かつ制御データD200:ゼロより大きい」であるものとする。
以上の状態で、コントローラaで制御プログラム20aを、コントローラbで制御プログラム20bをシミュレーションにて実行開始する。
制御プログラム20aは、I/O処理を実行して出力Y0010をオンにするため、Y0010と対応するコントローラaの模擬デバイスメモリイメージ7のビット値を0から1に更新する。この時点でシナリオプログラム80a1の実行開始条件が成立するため、コントローラaの入出力イベント制御部9がシナリオプログラム80a1の実行を開始する。
シナリオプログラム80a1は、コントローラaおよびコントローラbの実デバイスメモリ6と模擬デバイスメモリイメージ7の制御信号のオン・オフや制御データの値(図4には示されていない制御信号や制御データも含めて)確認することで、制御プログラム20aと20bのI/O処理が所望の動作を行っているかを判定する。この判定の結果、所望の動作を行っていた場合、シナリオプログラム80a1は、図4に示すようにI/O処理を実行して入力X000Fをオンにするため、X000Fと対応するコントローラaの模擬デバイスメモリイメージ7のビット値を0から1に更新する。さらに、シナリオプログラム80a1は、図3に示した処理手順に従って制御プログラム20aのI/O処理が所望の動作を行っているかを判定する処理と、図4のタイムチャートに示すような応答のシミュレーション実行の結果をコントローラaの模擬デバイスメモリイメージ7に書き込む処理と、を繰返し実行する。
一方、制御プログラム20aは、シナリオプログラム80a1による応答のシミュレーション実行の結果(入力X000Fのオン)を受けて、次のI/O処理である出力Y0010のオフを実行する。さらに、シナリオプログラム80a1による応答のシミュレーション実行の結果(入力X0008のオン)を受けて、次のI/O処理である出力Y0018のオンを実行する。
このようにして、シナリオプログラム80による応答のシミュレーション実行の結果を利用して制御プログラム20のI/O処理をシミュレーション実行することにより、機械装置を実際には駆動させることなく制御プログラム20のI/O処理が所望の動作を行っているかをシミュレーションで検証することができる。
次に、制御プログラム20のI/O処理が所望の動作を行っていないことをシナリオプログラム80によって検出された場合に、すべてのコントローラ1上で実行中の制御プログラム20とシナリオプログラム80を一斉に強制停止する具体例を、上記と同じ機械装置の構成で説明する。
図5は、制御プログラム20aの誤りを示すためのタイミングチャートの抜粋図である。図4のタイミングチャートとの違いは、本来であれば制御信号の入力X000Aのオンを受けて制御信号の出力Y0019をオフにすべきところをオンにし続けている点にある。一方、制御プログラム20bは制御信号の入力X0008がオンになったにもかかわらず、制御信号の出力Y0019がオフになっていないため、ワーク加工装置を駆動するために制御データのD200に10を設定し、制御信号の出力Y0038をオンにするといったI/O処理が実行できず不具合となる。
この状態で、不具合が発生した制御プログラム20bのシミュレーション実行を停止させて不具合の原因を調査しても、制御信号の出力Y0019のオン・オフを制御しているのは制御プログラム20aであるため、制御プログラム20bだけを調査しても原因を特定できない。さらに、制御プログラム20aのシミュレーション実行を継続させてしまうと、不具合の原因となった制御信号の出力Y0019が別のタイミングでオフに変化してしまう可能性があり、不具合の原因の特定がさらに困難になる。
そこで、本実施の形態では、制御プログラム20aのI/O処理が所望の動作を行っていないことをシナリオプログラム80a2によって検出し、シナリオプログラム80a2を実行するシナリオプログラム実行部8がコントローラaの連係シミュレーション制御部11に対してプログラムの実行停止要求を通知し、シナリオプログラム80a1と80a2の実行を停止する。プログラムの実行停止要求を受けたコントローラaの連係シミュレーション制御部11は、コントローラaで実行中の制御プログラム20aを強制停止させて、さらに外部接続バスI/F4を介して相互接続されているコントローラbの連係シミュレーション制御部11に対してプログラムの停止要求を通知する。コントローラbの連係シミュレーション制御部11は、プログラムの停止要求の通知を受けて、コントローラbで実行中の制御プログラム20bとシナリオプログラム80bを強制停止させる。
このようにして、制御プログラム20のI/O処理が所望の動作を行っていないことを検出した時点で、すべてのコントローラ1上でシミュレーション実行中の制御プログラム20とシナリオプログラム80を一斉に強制停止させることで、不具合が発生した時点での制御信号のオン・オフの状態や周辺装置の制御データの値が模擬デバイスメモリイメージ7に保持されるため、不具合が発生した原因を効率よく調査できるのである。
ところで、連係シミュレーション制御部11によるプログラムの停止要求の通知手段は、外部接続バスI/F4および外部接続バス100を介して通知可能な手段(例えば、コマンド送信やメッセージ送信など)であれば、本発明ではその実現手段を問わない。
また、この実施の形態1では、2基のコントローラによる制御プログラムのI/O処理のシミュレーション方法について説明したが、コントローラまたは外部接続バス100のハードウェア上の制約の範囲内で1基以上のコントローラを外部接続バス100に接続して連係シミュレーションシステムを構成してもよい。
なお、上記実施の形態では、シナリオプログラム80の実行開始条件を、任意の制御信号のオフからオンへの遷移またはオンからオフへの遷移としたが、これ以外にも、例えば、任意の周辺装置の制御データの値が期待値と一致、期待値と不一致、期待値以上、期待値以下、期待値より大きい、期待値より小さい、といった論理演算結果を用いてもよく、また、任意の制御信号のオフからオンへの遷移またはオンからオフへの遷移と、上記の制御データの値と期待値との論理演算結果との論理積または論理和として定義してもよい。
以上説明したように、実施の形態1のコントローラによれば、マルチコントローラ構成で、I/O処理によって周辺装置の動作を制御する制御プログラムのシミュレーションを実施するコントローラであって、周辺装置に対する制御信号のオン・オフまたは周辺装置の制御データの読み書きのうちの少なくともいずれかをI/O処理として実行するための制御プログラムを実行する制御プログラム実行部と、制御プログラム実行部によるI/O処理を中継すると共に、I/O処理がシミュレーション対象のI/O処理であった場合、I/O処理を行うデバイスアクセス制御部と、制御プログラムのI/O処理のシミュレーション実行と対応する応答処理をシミュレーション実行し、制御プログラムによるI/O処理が所望の動作を行っているかを判定し、所望の動作を行っていない場合は、制御プログラムの実行停止要求を行うためのシナリオプログラムを実行するシナリオプログラム実行部と、シナリオプログラム実行部から制御プログラムの実行停止要求を受けた場合は、自コントローラでシミュレーション実行中の制御プログラムを強制停止させると同時に、他コントローラに対して制御プログラムのリモート停止要求を通知し、かつ、リモート停止要求の通知を受けた場合は、自コントローラでシミュレーション実行中の制御プログラムのI/O処理を強制停止させる連係シミュレーション制御部とを備えたので、マルチコントローラシステムにおいて、制御プログラムのデバッグ操作用の専用線の接続や機械装置の外部への引き出しといった特別な手段を必要とせずに、複数のコントローラ上で実行中の制御プログラムを停止させることができる。
また、実施の形態1のコントローラによれば、周辺装置に関するI/O処理のデータを格納する実デバイスメモリと、シミュレーション時のI/O処理のデータを格納する模擬デバイスメモリイメージと、制御プログラム実行部とデバイスアクセス制御部間のインタフェースであるデバイスアクセスI/Fと、デバイスアクセスI/Fと他のコントローラ間のインタフェースである外部接続バスI/Fとを備え、デバイスアクセス制御部は、制御プログラム実行部のI/O処理を中継して、実デバイスメモリ及び模擬デバイスメモリイメージにアクセスすると共に、制御プログラム実行部及びデバイスアクセス制御部は、デバイスアクセスI/Fと外部接続バスI/Fとを介して他のコントローラのI/O処理を実行するようにしたので、実運転用の制御プログラムとシミュレーション用の制御プログラムの2種類を用意する必要がなく、実運転用の制御プログラムのみでI/O処理をシミュレーションで検証することができ、かつ、他コントローラでシミュレーション実行中のI/O処理と連係させて自コントローラのI/O処理をシミュレーションで検証することができる。
また、実施の形態1のコントローラによれば、実デバイスメモリ及び模擬デバイスメモリイメージの値を参照して、シナリオプログラム実行部の開始条件を判定して、判定結果が開始であった場合はシナリオプログラム実行部におけるシナリオプログラムの実行を開始させる入出力イベント制御部と、デバイスアクセス制御部と外部接続バスI/Fとに接続され、シナリオプログラム実行部及び入出力イベント制御部が、実デバイスメモリからの読出要求または模擬デバイスメモリイメージの読み書き要求を中継するリモートデバイスI/Fを備え、シナリオプログラム実行部は、リモートデバイスI/Fを介して自コントローラの模擬デバイスメモリイメージの読み書き処理を実行すると共に、模擬デバイスメモリイメージの書込み処理を実行して制御プログラムのI/O処理と対応する応答をシミュレーションし、かつ、模擬デバイスメモリイメージの読出し処理を実行して制御プログラムのI/O処理が所望の動作を行っているかを検証するようにしたので、周辺装置がコントローラに接続されていない状態、あるいは周辺装置がコントローラに接続されていて周辺装置を実際に駆動させない状態で、制御プログラムによるI/O処理と対応する応答をシミュレーション実行し、制御プログラムのI/O処理が所望の動作を行っているかを検証することができる。
また、実施の形態1のコントローラによれば、シナリオプログラムの実行開始条件を、(ア)任意の制御信号のオフからオンへの遷移またはオンからオフへの遷移、(イ)任意の周辺装置の制御データの値と期待値との論理演算結果、(ウ)前記(ア)と前記(イ)との論理積または論理和、のいずれかとして定義するようにしたので、任意のI/O処理の結果に対応させたシナリオプログラムの実行開始条件を定義することができる。
また、実施の形態1のコントローラによれば、入出力イベント制御部は、制御プログラムのI/O処理が実行されたことをデバイスアクセス制御部から通知を受けた時点で、自コントローラのリモートデバイスアクセスI/Fとデバイスアクセス制御部とを介した自コントローラの実デバイスメモリと模擬デバイスメモリイメージの読出し処理、及び、自コントローラのリモートデバイスアクセスI/Fと外部接続バスI/Fと他コントローラのリモートデバイスアクセスI/Fと他コントローラのデバイスアクセス制御部とを介した他コントローラの実デバイスメモリと模擬デバイスメモリイメージの読出し処理を実行し、シナリオプログラム実行開始条件の判定処理を行うようにしたので、シナリオプログラムを自コントローラの制御プログラムのI/O処理に連動させて実行することができる。
実施の形態2.
図6は、この発明の実施の形態2におけるコントローラ1の基本構成を示す図である。図1に示した実施の形態1のコントローラ1との違いは、模擬デバイスパラメータ保持部12と、模擬デバイスパラメータ設定I/F13と、シナリオプログラム実行開始条件保持部14と、シナリオプログラム実行開始条件設定I/F15と、を含むようにコントローラ1が構成されている点であり、シミュレーション対象のI/Oの設定と、シミュレーションに用いるシナリオプログラム80の設定をコントローラ外部から容易に設定できるようになっている。
すなわち、模擬デバイスパラメータ保持部12は、シミュレーション対象のI/O処理のデータを模擬デバイスメモリイメージ7に割り付けるための模擬デバイスパラメータを保持するものであり、模擬デバイスパラメータ設定I/F13は、コントローラ1の外部から模擬デバイスパラメータ保持部12に対して模擬デバイスパラメータを設定するためのインタフェースである。また、シナリオプログラム実行開始条件保持部14は、シナリオプログラムの実行開始条件を保持するもので、シナリオプログラム実行開始条件設定I/F15は、コントローラ1の外部からシナリオプログラム実行開始条件保持部14に対して実行開始条件を設定するためのインタフェースである。
なお、コントローラ1におけるその他の構成については、実施の形態1と同様であるため、図1に示した構成と同一部分については同一符号を付してその説明を省略する。
図7は、模擬デバイスパラメータ保持部12に設定する模擬デバイスパラメータの設定例を示す図である。図7に示すように、シミュレーション対象のI/Oの名称と点数とを組にして保持する。デバイスアクセス制御部5は、模擬デバイスパラメータ保持部12に設定されたパラメータに従ってシミュレーション対象のI/Oを模擬デバイスメモリイメージ7に割り付ける。
図8は、シナリオプログラム実行開始条件保持部15に設定するシナリオプログラム実行条件の設定例を示す図である。図8に示すように、シナリオプログラム(関数)と、シナリオプログラム実行開始条件として指定するI/Oのリストを組みにして保持する。入出力イベント制御部9は、シナリオプログラム実行開始条件の判定時にシナリオプログラム実行開始条件保持部14を参照して、シナリオプログラム実行開始条件が成立したシナリオプログラム(関数)の実行を開始する。
以上説明したように、実施の形態2のコントローラによれば、シナリオプログラムの実行開始条件を保持するシナリオプログラム実行開始条件保持部と、コントローラの外部からシナリオプログラム実行開始条件保持部に対して実行開始条件を設定するためのシナリオプログラム実行開始条件設定I/Fとを備えたので、シナリオプログラム実行開始条件を容易に設定変更することができる。
また、実施の形態2のコントローラによれば、シミュレーション対象のI/O処理のデータを模擬デバイスメモリイメージに割り付けるための模擬デバイスパラメータを保持する模擬デバイスパラメータ保持部と、コントローラの外部から模擬デバイスパラメータ保持部に対して模擬デバイスパラメータを設定するための模擬デバイスパラメータ設定I/Fとを備えたので、シミュレーション対象のI/Oを容易に設定変更することができる。
実施の形態3.
この発明の実施の形態1におけるコントローラを用いた連係シミュレーションシステムにおいて、図3に示したシナリオプログラム実行開始条件の判定処理を、制御プログラム20によるI/O処理が実行された直後ではなく、任意の周期で反復実行されるようにしてもよく、これを実施の形態3として説明する。その他の構成は実施の形態1または実施の形態2と同様である。
一般に、機械装置を制御する制御プログラムは、I/O処理を周期実行して周辺装置の状態を確認し、状態ごとに次に実行するI/O処理を選択するように構成されている場合が多い。すなわち、I/Oが変化するタイミングは、制御プログラムの実行周期と同期しているのである。この点に着目して、実施の形態3では、制御プログラム20の実行周期に同期させて入出力イベント制御部9によるシナリオプログラム実行開始条件の判定処理を実行できるように、シナリオプログラム実行開始条件の判定処理の実行周期を任意に設定できるようにしたものである。
以上説明したように、実施の形態3のコントローラによれば、入出力イベント制御部によるシナリオプログラム実行開始条件の判定処理を任意の周期で反復実行するようにしたので、シナリオプログラム実行開始条件に設定されている制御信号や周辺装置の制御データの読出し処理を定周期に実行することができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組合せ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
1 コントローラ、2 制御プログラム実行部、20 制御プログラム、3 デバイスアクセスI/F、4 外部接続バスI/F、5 デバイスアクセス制御部、6 実デバイスメモリ、7 模擬デバイスメモリイメージ、8 シナリオプログラム実行部、80 シナリオプログラム、9 入出力イベント制御部、10 リモートデバイスアクセスI/F、11 連係シミュレーション制御部、12 模擬デバイスパラメータ保持部、13 模擬デバイスパラメータ設定I/F、14 シナリオプログラム実行開始条件保持部、15 シナリオプログラム実行開始条件設定I/F。

Claims (8)

  1. マルチコントローラ構成で、I/O処理によって周辺装置の動作を制御する制御プログラムのシミュレーションを実施するコントローラであって、
    前記周辺装置に対する制御信号のオン・オフまたは当該周辺装置の制御データの読み書きのうちの少なくともいずれかをI/O処理として実行するための前記制御プログラムを実行する制御プログラム実行部と、
    前記制御プログラム実行部によるI/O処理を中継すると共に、前記I/O処理がシミュレーション対象のI/O処理であった場合、当該I/O処理を行うデバイスアクセス制御部と、
    前記制御プログラムのI/O処理のシミュレーション実行と対応する応答処理をシミュレーション実行し、前記制御プログラムによるI/O処理が所望の動作を行っているかを判定し、所望の動作を行っていない場合は、当該制御プログラムの実行停止要求を行うためのシナリオプログラムを実行するシナリオプログラム実行部と、
    前記シナリオプログラム実行部から前記制御プログラムの実行停止要求を受けた場合は、自コントローラでシミュレーション実行中の前記制御プログラムを強制停止させると同時に、他コントローラに対して制御プログラムのリモート停止要求を通知し、かつ、当該リモート停止要求の通知を受けた場合は、自コントローラでシミュレーション実行中の前記制御プログラムのI/O処理を強制停止させる連係シミュレーション制御部とを備えたコントローラ。
  2. 周辺装置に関するI/O処理のデータを格納する実デバイスメモリと、
    シミュレーション時のI/O処理のデータを格納する模擬デバイスメモリイメージと、
    制御プログラム実行部とデバイスアクセス制御部間のインタフェースであるデバイスアクセスI/Fと、
    前記デバイスアクセスI/Fと他のコントローラ間のインタフェースである外部接続バスI/Fとを備え、
    前記デバイスアクセス制御部は、前記制御プログラム実行部のI/O処理を中継して、前記実デバイスメモリ及び前記模擬デバイスメモリイメージにアクセスすると共に、
    前記制御プログラム実行部及び前記デバイスアクセス制御部は、前記デバイスアクセスI/Fと前記外部接続バスI/Fとを介して他のコントローラのI/O処理を実行することを特徴とする請求項1記載のコントローラ。
  3. 実デバイスメモリ及び模擬デバイスメモリイメージの値を参照して、シナリオプログラム実行部の開始条件を判定して、判定結果が開始であった場合は前記シナリオプログラム実行部におけるシナリオプログラムの実行を開始させる入出力イベント制御部と、
    デバイスアクセス制御部と外部接続バスI/Fとに接続され、前記シナリオプログラム実行部及び前記入出力イベント制御部が、前記実デバイスメモリからの読出要求または前記模擬デバイスメモリイメージの読み書き要求を中継するリモートデバイスI/Fとを備え、
    前記シナリオプログラム実行部は、前記リモートデバイスI/Fを介して自コントローラの前記模擬デバイスメモリイメージの読み書き処理を実行すると共に、前記模擬デバイスメモリイメージの書込み処理を実行して前記制御プログラムのI/O処理と対応する応答をシミュレーションし、かつ、前記模擬デバイスメモリイメージの読出し処理を実行して前記制御プログラムのI/O処理が所望の動作を行っているかを検証することを特徴とする請求項2記載のコントローラ。
  4. シナリオプログラムの実行開始条件を、
    (ア)任意の制御信号のオフからオンへの遷移またはオンからオフへの遷移、
    (イ)任意の周辺装置の制御データの値と期待値との論理演算結果、
    (ウ)前記(ア)と前記(イ)との論理積または論理和、
    のいずれかとして定義することを特徴とする請求項3記載のコントローラ。
  5. シナリオプログラムの実行開始条件を保持するシナリオプログラム実行開始条件保持部と、
    コントローラの外部から前記シナリオプログラム実行開始条件保持部に対して前記実行開始条件を設定するためのシナリオプログラム実行開始条件設定I/Fとを備えたことを特徴とする請求項4記載のコントローラ。
  6. シミュレーション対象のI/O処理のデータを模擬デバイスメモリイメージに割り付けるための模擬デバイスパラメータを保持する模擬デバイスパラメータ保持部と、
    コントローラの外部から前記模擬デバイスパラメータ保持部に対して前記模擬デバイスパラメータを設定するための模擬デバイスパラメータ設定I/Fとを備えたことを特徴とする請求項2から請求項5のうちのいずれか1項記載のコントローラ。
  7. 入出力イベント制御部は、制御プログラムのI/O処理が実行されたことをデバイスアクセス制御部から通知を受けた時点で、自コントローラのリモートデバイスアクセスI/Fと前記デバイスアクセス制御部とを介した自コントローラの実デバイスメモリと模擬デバイスメモリイメージの読出し処理、及び、自コントローラの前記リモートデバイスアクセスI/Fと外部接続バスI/Fと他コントローラの前記リモートデバイスアクセスI/Fと他コントローラの前記デバイスアクセス制御部とを介した他コントローラの前記実デバイスメモリと前記模擬デバイスメモリイメージの読出し処理を実行し、シナリオプログラム実行開始条件の判定処理を行うことを特徴とする請求項3から請求項5のうちのいずれか1項記載のコントローラ。
  8. 入出力イベント制御部によるシナリオプログラム実行開始条件の判定処理を任意の周期で反復実行することを特徴とする請求項7記載のコントローラ。
JP2013007329A 2013-01-18 2013-01-18 コントローラ Active JP5921449B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013007329A JP5921449B2 (ja) 2013-01-18 2013-01-18 コントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013007329A JP5921449B2 (ja) 2013-01-18 2013-01-18 コントローラ

Publications (2)

Publication Number Publication Date
JP2014137781A JP2014137781A (ja) 2014-07-28
JP5921449B2 true JP5921449B2 (ja) 2016-05-24

Family

ID=51415227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013007329A Active JP5921449B2 (ja) 2013-01-18 2013-01-18 コントローラ

Country Status (1)

Country Link
JP (1) JP5921449B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3018912B2 (ja) * 1994-08-12 2000-03-13 横河電機株式会社 検証支援システム
JPH11219209A (ja) * 1998-02-04 1999-08-10 Fuji Electric Co Ltd 汎用plcのオフラインシミュレーション装置
JP2001075643A (ja) * 1999-09-09 2001-03-23 Hitachi Zosen Corp 制御プログラムのシミュレーション方法およびシミュレーション装置
JP2003162304A (ja) * 2001-11-27 2003-06-06 Mazda Motor Corp 設備制御のシミュレーション方法及びその装置

Also Published As

Publication number Publication date
JP2014137781A (ja) 2014-07-28

Similar Documents

Publication Publication Date Title
TWI602121B (zh) 更新伺服器映像檔的技術
US9317397B2 (en) Programmable logic controller (PLC) simulation system, PLC simulator, recording medium, and simulation method
JP2018097663A (ja) 制御システム、制御プログラムおよび制御方法
JP6481267B2 (ja) プログラマブル表示器
JP6433635B1 (ja) シミュレーション装置およびシミュレーション方法
JP2015176340A (ja) プログラマブルコントローラおよびプログラマブルコントローラによるデバイス制御方法
JP6175788B2 (ja) マイクロプログラムを更新可能な電子機器
JP4600601B1 (ja) デバッグ支援装置、デバッグ支援方法及びデバッグ支援プログラム
WO2018070041A1 (ja) シミュレーション装置
JP6362821B2 (ja) 制御装置、制御方法および命令セット
JP5921449B2 (ja) コントローラ
US9953293B2 (en) Method for controlling changes of replication directions in a multi-site disaster recovery environment for high available application
JP2016045712A (ja) プログラマブルロジックコントローラ
US11262727B2 (en) Integrated simulation system having improved operability
KR102434126B1 (ko) Plc 프로그램 처리 장치
JP2016024798A (ja) 冗長化コントローラシステム、その待機系コントローラ
JP5212508B2 (ja) デバッグ装置
JP2010033192A (ja) 情報処理装置装置、及びその制御方法、コンピュータプログラム、記憶媒体
JP2008165324A (ja) プログラム作成支援装置
JP2009276985A (ja) 半導体集積回路装置
CN109483552B (zh) 一种基板搬送机器人系统软硬件调试方法及设备
JP5951123B2 (ja) 制御装置
WO2024084602A1 (ja) シミュレーションプログラム、シミュレーション方法及びシミュレーション装置
WO2023119524A1 (ja) シミュレーションプログラム、シミュレーション方法及びシミュレーション装置
JP2009244952A (ja) モーションコントローラ、シミュレーション方法及びシミュレーションプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160412

R150 Certificate of patent or registration of utility model

Ref document number: 5921449

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

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