JP2016110459A - プログラマブル・ロジック・コントローラ及びプログラマブル・ロジック・コントローラの拡張ユニット、制御方法および制御プログラム - Google Patents

プログラマブル・ロジック・コントローラ及びプログラマブル・ロジック・コントローラの拡張ユニット、制御方法および制御プログラム Download PDF

Info

Publication number
JP2016110459A
JP2016110459A JP2014248403A JP2014248403A JP2016110459A JP 2016110459 A JP2016110459 A JP 2016110459A JP 2014248403 A JP2014248403 A JP 2014248403A JP 2014248403 A JP2014248403 A JP 2014248403A JP 2016110459 A JP2016110459 A JP 2016110459A
Authority
JP
Japan
Prior art keywords
data
unit
read
basic unit
buffering
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.)
Granted
Application number
JP2014248403A
Other languages
English (en)
Other versions
JP6470955B2 (ja
Inventor
中村 達也
Tatsuya Nakamura
達也 中村
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.)
Keyence Corp
Original Assignee
Keyence 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 Keyence Corp filed Critical Keyence Corp
Priority to JP2014248403A priority Critical patent/JP6470955B2/ja
Publication of JP2016110459A publication Critical patent/JP2016110459A/ja
Application granted granted Critical
Publication of JP6470955B2 publication Critical patent/JP6470955B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】拡張ユニットでバッファリングしたデータの読み取りのためのラダープログラムを簡素化する。
【解決手段】CPU10からバッファリング開始要求が拡張ユニット4に送信されると、データ収集制御部711は外部装置からデータを取得してFIFOバッファ712へのバッファリングを開始する。そしてバッファ割当領域相当のデータのバッファリングが完了すると、その旨をCPU10に通知する。CPU10はその通知をテストし、オンであれば共有メモリ713のバッファ割当領域からデータ読み出しを開始する。データ収集制御部711は、バッファしたデータをデータの出力を終えるまでバッファ割当領域に書き込み、それを繰り返す。
【選択図】図11

Description

本発明は、プログラマブル・ロジック・コントローラ及びプログラマブル・ロジック・コントローラの拡張ユニット、制御方法および制御プログラムに関する。
特許文献1が示すようにプログラマブル・ロジック・コントローラ(PLC)の基本ユニットには拡張ユニットが接続される。拡張ユニットの中には、外部機器等から収集したデータを交換バッファに格納し、基本ユニットにおける読み出し処理に応じて収集したデータを、共有メモリを介して基本ユニットに出力するものがある。
特開2014−052672号公報
しかしこの交換バッファ方式では、たとえば共有メモリのサイズの制約等により、収集したデータを所定サイズのページを単位として基本ユニットが読み取るため、ページの切り替えが必要となる。ページの切り替えは、基本ユニットが実行するユーザプログラムにより、読み取り対象のページ番号の指定を明示的にプログラムしておくことで実現されていた。また共有メモリにリングバッファを構成して、そこにデータを直接バッファリングする方式も提案されているが、この方式ではポインタの管理をユーザプログラムで行う必要があった。いずれにしても従来の方式はユーザプログラムの複雑化をもたらし、ユーザの設計負担を重くする。さらにプログラムの可読性を低下させて、プログラムの明快さを損なう。さらに同期処理をユーザプログラムのレベルで実行させると、それに伴う処理負荷も増大する。
本発明は上記従来例に鑑みて成されたもので、拡張ユニットによりバッファ管理を一元的に行うことで基本ユニットによるバッファの管理負担を軽減し、ひいてはプログラム設計の負担を軽減しつつ大量のデータの交換を行えるPLCを提供することを目的とする。さらに、プログラムの可読性を向上させること、また基本ユニットと拡張ユニットとの間のデータの交換を効率的に行わせることを目的とする。
上記目的を達成するために本発明は、たとえば、
ユーザプログラムを周期的に実行する基本ユニットと、該基本ユニットと外部機器とに接続される拡張ユニットとを有するプログラマブルコントローラであって、
前記拡張ユニットは、
前記外部機器と接続するためのインターフェースと、
前記インターフェースに入力される前記外部機器からの信号を、予め設定された周期でサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされたデータを順次記憶する記憶部と、
前記基本ユニットからの読み出し要求に応じて、前記記憶部に記憶されているデータを前記基本ユニットに出力するデータ収集制御手段と、を備え、
前記データ収集制御手段は、
前記読み出し要求に含まれる読み出し対象のデータ個数に基づいて、前記記憶部に記憶されている特定の先頭データから、記憶された順に該データ個数のデータを読み出して出力した後、
次回の前記読み出し要求に応じるために前記特定の先頭データとする対象を前記データ個数に応じて変更させることを特徴とする。
また他の側面によれば本発明は、たとえば、
ユーザプログラムを周期的に実行する基本ユニットと外部機器とに接続されるプログラマブルコントローラの拡張ユニットであって、
前記外部機器と接続するためのインターフェースと、
前記インターフェースに入力される前記外部機器からの信号を、予め設定された周期でサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされたデータを順次記憶する記憶部と、
前記基本ユニットからの読み出し要求に応じて、前記記憶部に記憶されているデータを前記基本ユニットに出力するデータ収集制御手段と、を備え、
前記データ収集制御手段は、
前記読み出し要求に含まれる読み出し対象のデータ個数に基づいて、前記記憶部に記憶されている特定の先頭データから、記憶された順に該データ個数のデータを読み出して出力した後、
次回の前記読み出し要求に応じるために前記特定の先頭データとする対象を前記データ個数に応じて変更させることを特徴とする。
本発明によれば、プログラム設計の負担を軽減しつつ大量のデータの交換を行える。さらに、プログラムの可読性を向上させる。また基本ユニットと拡張ユニットとの間のデータの交換を効率的に行わせることができる。
PLCシステムの一例を示す図 ユーザプログラムの一例を示す図 プログラム作成支援装置の一例を示す図 PLCの一例を示す図 スキャンタイムを説明するための図 ベースレス・ビルディングタイプのPLCの一例を示す図 基本ユニットおよび拡張ユニットそれぞれのCPUが実現する機能の一例を示す図 プログラム作成支援装置により実現される機能の一例を示す図 (A)プログラム作成支援装置により表示されるバッファリング設定のユーザインターフェースの一例を示す図、(B)プログラム作成支援装置により表示されるバッファリング設定のラダープログラムの一例を示す図 バッファリングされたデータを読み出すためのラダープログラムの一例を示す図 バッファリングしたデータを読み出す動作の一例を説明する模式図 共有メモリの構成の一例を示す図 基本ユニットによる、バファリングされたデータの読み出し手順の一例を示すフローチャート 拡張ユニットによる、バファリングおよび読み出し手順の一例を示すフローチャート バッファリングされたデータを読み出すためのラダープログラムの他の例を示す図 バッファリングしたデータを読み出す動作の他の例を説明する模式図およびそのラダープログラムの例を示す図 バッファリングしたデータを読み出す動作の更に他の例を説明する模式図 バッファリングされたデータのバックアップを伴う読み出し手順の一例を示すフローチャート バッファへデータを書き込む動作の一例を説明する模式図
[第1実施形態]
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
はじめにプログラマブル・ロジック・コントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
図1は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図1に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置1と、工場等に設置される各種制御装置を統括的に制御するためのPLC(プログラマブル・ロジック・コントローラ)2とを備えている。PLC2は、CPUが内蔵された基本ユニット3と1つないし複数の拡張ユニット4を備えている。基本ユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。基本ユニット3は基本ユニットと呼ばれることもある。あるいはCPUユニットと呼ぶこともある。
基本ユニット3には、表示部5及び操作部6が備えられている。表示部5には、基本ユニット3に取り付けられている各拡張ユニット4の動作状況などを表示することができ、表示部5の表示内容は、操作部6を操作することにより切り替えることができる。表示部5には、通常、PLC2内のデバイスの現在値(デバイス値)やPLC2内で生じたエラー情報などが表示される。なお、デバイスとは、デバイス値を格納するために設けられたメモリ上の領域を指す名称である。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報である。
拡張ユニット4は、PLC2の機能を拡張するために用意されており、基本ユニット3に対して側方から取り付けられる。1つ目の拡張ユニット4は、基本ユニット3に対して側方から直接的に取り付けられる。2つ目以降の拡張ユニット4は、既に取り付けられている拡張ユニット4に対して、側方から直列的に取り付けられる。たとえば、基本ユニット3の右側面と拡張ユニット4の左側面とが連結面になっている。同様に、1つ目の拡張ユニット4の右側面の形状等は基本ユニット3の右側面とほぼ同じであるため、1つ目の拡張ユニット4の右側面に2つ目の拡張ユニット4の左側面が連結される。このような連結方式は、数珠つなぎ方式とかデイジーチェーン方式と呼ばれてもよい。各連結面にはコネクタが設けられており、通信や電力供給を行うためのバスもコネクタを介して連結される。このようにして、基本ユニット3と複数の拡張ユニット4が直列的に取り付けられると、各拡張ユニット4内に備えられた配線(例:バス)を介して、各拡張ユニット4が基本ユニット3に対して通信可能に接続される。各拡張ユニット4には、その拡張ユニット4の機能に対応する被制御装置16(図4)が接続され、これにより、各被制御装置16が拡張ユニット4を介して基本ユニット3に接続される。被制御装置16には、センサなどの入力装置や、アクチュエータなどの出力装置が含まれる。また被制御装置16はPLCの外部にあることから外部装置と呼ぶこともある。
プログラム作成支援装置1は、たとえば、携帯可能ないわゆるノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部7及び操作部8が備えられている。PLC2を制御するためのユーザプログラムの一例であるラダープログラムは、プログラム作成支援装置1を用いて作成され、その作成されたラダープログラムは、プログラム作成支援装置1内でニモニックコードに変換される。そして、プログラム作成支援装置1を、USB(Universal Serial Bus)などの通信ケーブル9を介してPLC2の基本ユニット3に接続し、ニモニックコードに変換されたラダープログラムをプログラム作成支援装置1から基本ユニット3に送ると、そのラダープログラムが基本ユニット3内でマシンコードに変換され、基本ユニット3に備えられたメモリ内に記憶される。
なお、図1では示していないが、プログラム作成支援装置1の操作部8には、プログラム作成支援装置1に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置1は、USB以外の他の通信ケーブル9を介して、PLC2の基本ユニット3に対して着脱可能に接続されるような構成であってもよい。
図2は、ラダープログラムの作成時にプログラム作成支援装置1の表示部7に表示されるラダー図17の一例を示す図である。図2に示すように、PLC2を制御するためのラダープログラムは、プログラム作成支援装置1の表示部7にマトリックス状に表示される複数のセル18内に仮想デバイスのシンボル19を適宜配置して、視覚的なリレー回路を表すラダー図17を構築することにより作成される。
ラダー図17には、たとえば、10列×N行(Nは任意の自然数)のセル18が配置されている。そして、各行のセル18内に、図2に示す左側から右側に向かって、時系列的に仮想デバイスのシンボル19を適宜配置することにより、視覚的なリレー回路を作成することができる。作成されるリレー回路は、1行で表される直列的なリレー回路であってもよいし、複数行に並列的に表されたリレー回路を互いに結合することにより作成された、並列的なリレー回路であってもよい。
図2に示すリレー回路は、入力装置からの入力信号に基づいてオン/オフされる3つの仮想デバイス(以下、「入力デバイス」と呼ぶ。)のシンボル19a,19b,19cと、出力装置の動作を制御するためにオン/オフされる仮想デバイス(以下、「出力デバイス」と呼ぶ。)のシンボル19dとが適宜結合されることにより構成されている。
各入力デバイスのシンボル19a,19b,19cの上方に表示されている文字(「R0001」、「R0002」及び「R0003」)は、その入力デバイスのデバイス名(アドレス名)21を表している。各入力デバイスのシンボル19a,19b,19cの下方に表示されている文字(「フラグ1」、「フラグ2」及び「フラグ3」)は、その入力デバイスに対応付けられたデバイスコメント22を表している。出力デバイスのシンボル19dの上方に表示されている文字(「原点復帰」)は、その出力デバイスの機能を表す文字列からなるラベル23である。
図2に示す例では、デバイス名「R0001」及び「R0002」にそれぞれ対応する2つの入力デバイスのシンボル19a,19bが直列的に結合されることにより、AND回路が構成されている。また、これらの2つの入力デバイスのシンボル19a,19bからなるAND回路に対して、デバイス名「R0003」に対応する入力デバイスのシンボル19cが並列的に結合されることにより、OR回路が構成されている。すなわち、このリレー回路では、2つのシンボル19a,19bに対応する入力デバイスがいずれもオンした場合、又は、シンボル19cに対応する入力デバイスがオンした場合にのみ、シンボル19dに対応する出力デバイスがオンされるようになっている。
図3は、図1のプログラム作成支援装置1の電気的構成について説明するためのブロック図である。図3に示すように、プログラム作成支援装置1には、CPU24、表示部7、操作部8、記憶装置25及び通信部26が備えられている。表示部7、操作部8、記憶装置25及び通信部26は、それぞれCPU24に対して電気的に接続されている。記憶装置25は、少なくともRAMを含む構成であり、ラダープログラム記憶部25aと、編集ソフト記憶部25bとを備えている。
ユーザは、編集ソフト記憶部25bに記憶されている編集ソフトをCPU24に実行させて、操作部8を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成及び変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、ラダープログラム記憶部25aに記憶される。また、ユーザは、必要に応じてラダープログラム記憶部25aに記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部26は、通信ケーブル9を介してプログラム作成支援装置1を基本ユニット3に通信可能に接続するためのものである。
図4は、PLC2の電気的構成について説明するためのブロック図である。図4に示すように、基本ユニット3には、CPU10、表示部5、操作部6、記憶装置12及び通信部14が備えられている。表示部5、操作部6、記憶装置12、及び通信部14は、それぞれCPU10に電気的に接続されている。記憶装置12は、RAMやROM、メモリカードなどを含んでもよく、ラダープログラムなどが記憶される。記憶装置12には、プログラム作成支援装置1から入力されたラダープログラムやユーザデータが上書きして記憶される。また、記憶装置12には基本ユニット用の制御プログラムも格納されている。
図5は、本発明の実施の形態に係るプログラマブルコントローラの基本ユニット3でのスキャンタイムの構成を示す模式図である。図5が示すように1つのスキャンタイムTは、入出力のリフレッシュを行うためのユニット間通信201、プログラム実行202、END処理204により構成されている。ユニット間通信201で、基本ユニット3は、ラダープログラムを実行して得られた出力データを基本ユニット3内の記憶装置12から外部機器などに送信するとともに、受信データを含めた入力データを基本ユニット3内の記憶装置12に取り込む。プログラム実行202で、基本ユニット3は、更新された入力データを用いてプログラムを実行(演算)する。基本ユニット3はプログラムの実行によりデータを演算処理する。なお、END処理とは、プログラム作成支援装置1や基本ユニット3に接続された表示器(図示せず)等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。ただし、基本ユニット3が実行したラダープログラムの命令が例えば拡張ユニット4からのデータの入力(読み取り)或いは出力(書き込み)に係る命令であれば、プログラム実行202の中でユニット間通信を行うこともあり得る。
このように、プログラム作成支援装置1はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをPLC2に転送する。PLC2は、入出力リフレッシュ、ラダープログラムの実行およびEND処理を1サイクル(1スキャン)として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器(センサ等)からのタイミング信号に基づいて、各種出力機器(モータ等)を制御する。よって、PLC2は汎用のパーソナルコンピュータ(PC)とは全く異なる動きをする。
<連結構造>
図6(A)はPLC2を構成する基本ユニット3、拡張ユニット4およびエンドユニット11が連結される前の状態を示している。この例では、基本ユニット3の右方向に1つ以上の拡張ユニット4が連結される。最も右に位置する拡張ユニット4にはエンドユニット11が連結される。エンドユニット11は、最も右に位置する拡張ユニット4の右側面を保護するものであり、バスの終端機能を備えていてもよい。なお、拡張ユニット4の前面にはダイレクトアクセススイッチ27が設けられてもよい。ダイレクトアクセススイッチ27が操作されると、操作されたことを示す信号が通信バスを介して拡張ユニット4から基本ユニット3に伝達される。基本ユニット3は、この信号を受信することで、拡張ユニット4のダイレクトアクセススイッチ27が操作されたことを認識し、所定の処理(テスト結果の表示など)を実行する。
図6(B)はPLC2を構成する基本ユニット3、拡張ユニット4およびエンドユニット11が連結された状態を示している。このPLC2はベースレスのビルディングタイプであるため、ベースを使用せずに、基本ユニット3、拡張ユニット4およびエンドユニット11が連結される。工場において制御盤に設置しやすくするために、PLC2の背面にはDINレールなどの基準レール13が取り付けられるようになっている。なお、基本ユニット3および拡張ユニット4の連結状態を維持するためにロック機構が採用されてもよい。
本実施形態では、基本ユニット3と拡張ユニット4とをつなぐバスとしては、たとえばアドレスとデータ、制御信号を並列に構成したパラレルバスや、アドレスやデータを引数とするコマンド及びレスポンスをパケットとして送受信するシリアルバスなど、種々の構成を採用できる。
<PLCの機能>
図7は、基本ユニット3及び拡張ユニット4それぞれの機能の一例を示す機能ブロック図である。これらの機能ブロックは、たとえばそれぞれのユニットのCPUが制御プログラムを実行することで実現される。なお、各機能はASIC(特定用途集積回路)などの論理回路として実装されてもよい。記憶装置12は、設定データ105及びラダープログラム106を含むプロジェクトデータ104などを記憶している。プロジェクトデータ104は、プログラム作成支援装置1によって作成されて転送されてきたものであり、各拡張ユニットによるデータのバッファリングに関する設定を含む設定データ105と、ラダープログラム106とを含んでいる。プロジェクトデータ管理部700は、通信部14を介してプログラム作成支援装置1からプロジェクトデータ104を受信して記憶装置12に格納する。バッファリング設定部701は、プロジェクトデータ104に含まれた設定データのうち、バッファリングに関する設定値を、所定の格納場所にセットする。所定の格納場所とは、たとえば後述する共有メモリ713のバッファリング設定領域7131などである。メモリ制御部702は、たとえばラダープログラムの実行により共有メモリ713を含むメモリへのアクセスを制御する。ローカルメモリ703は、基本ユニット10により使用されるメモリであり、たとえば共有メモリ713から読み取られたデータの転送先であり、あるいは共有メモリ713に書き込まれるデータの転送元となる。バスインターフェース(I/F)704は、拡張ユニット4と接続するバスのインターフェースであり、バスの構成に応じた機能を有する。たとえばバスがシリアルバスであれば、シリアル−パラレル変換等を行う機能を有していてもよい。表示部5は、デバイスの状態を表示したり、あるいはユーザが操作部8を用いてデバイスへの値の設定を行うためのユーザインターフェース等を表示できる表示部である。表示部5および操作部8により行える設定には、バッファリング設定を含む。
なお、通信部14は、物理的に1つのユニットというわけではなく、ローカルエリアネットワーク用の通信回路や通信バスを介した通信を行う通信回路を含んでいる。もちろん、これらの複数の通信回路が1つのユニット(チップ)として実装されてもよい。
一方拡張ユニット4は、データ収集制御部711、バッファメモリ712、共有メモリ713、共有メモリ制御部714、バスI/F715を有する。データ収集制御部711は、被制御装置16等からの入力データをサンプリングして対応するバッファに格納する。トリガや周期、サンプル数については共有メモリ713の設定領域7131に格納されたバッファリング設定に従う。バッファメモリ712はFIFO(先入先出)構成を有するバッファであり、たとえばシフトレジスタやリングバッファ等により実現される。リングバッファ等、入力ポインタおよび出力ポインタが必要な構成では、ポインタはデータ収集制御部711により管理される。共有メモリ713は、基本ユニット3および拡張ユニット4の双方からアクセス可能なメモリであり、バッファリング設定などの設定データを格納するバッファリング設定領域7131と、基本ユニット3と拡張ユニット4との間のデータの交換のためのバッファ割当領域7132とを含む。共有メモリ制御部714は、共有メモリを制御する。バスI/F715は、基本ユニットおよび他の拡張ユニットと接続するためのバスのインターフェースである。
なお、データ収集制御部711は、外部機器からの入力データをサンプリングする機構を有しており、その機構をサンプリング手段と呼ぶこともできる。データ収集制御部711は、サンプリングしたデータをバッファメモリ712に順次格納することができる。またデータ収集制御部711は、基本ユニット3からの読み出し要求に応じてバッファメモリ712からのデータの基本ユニット3への出力、すなわち読み出しの制御を行うことができる。読み出しの際には、データ収集制御部711は、読み出し要求に含まれる読み出し対象のデータ個数に基づいて、バッファメモリ712に記憶されている特定の先頭データから、記憶された順に指定されたデータ個数のデータを読み出して出力する。その後、次回の前記読み出し要求に応じるためにバッファメモリ712に格納されたデータの先頭の位置を読み出されたデータ個数に応じてシフトさせる。すなわち、次回の前記読み出し要求に応じるために特定の先頭データとする対象を前記データ個数に応じて変更させる。これにより、次に読み出すべきデータが、バッファメモリ712の先頭データとなる。
このバッファメモリ712に格納された特定の先頭データの位置のシフトは、データに対する先頭の位置の相対的な操作であってよい。たとえば、バッファメモリ712としてシフトレジスタを採用した場合には、出力後に読み出されたデータをシフトレジスタから追い出すようにシフト動作を行い、読み出された値をシフトレジスタから追い出す。これにより、次に読み出すデータ、すなわちシフトレジスタから読み出しが済んでいないデータのうち、最も古く記憶されているデータをシフトレジスタの先頭データにする。またたとえば、バッファメモリ712がリングバッファであれば、データをシフトするまでもなく、先頭すなわち次の読み出し先を示すポインタをシフトして、バッファメモリ712から読み出しが済んでいないデータのうち、最も古いデータを次に読み出されるデータとする。この場合、データの物理的なシフトは行われないが、先頭を示すポインタを基準とすれば、この操作は論理的にはデータのシフトと同じ意味を持ち、特定の先頭データの位置がシフトされる効果を奏する。
バッファメモリ712への入力と出力とは互いに独立した操作であることから、データ収集制御部711は、バッファメモリ712への入力と出力とを非同期に実行する構成を有する。そこで、データ収集制御部711のうち、サンプリングを実行する部分をサンプリング手段、サンプリングされたデータのバッファリングを制御する部分をデータ入力制御手段あるいはバッファリング制御手段、バッファメモリ712からの出力(読み出し)を制御する部分をデータ出力制御手段などと呼ぶこともできる。これら3つの機能は、本実施形態ではデータ収集制御部711により実現されているが、それぞれ独立した機能ユニットにより実現することもできる。また任意の機能を組み合わせてひとつのユニットとして構成することもできる。たとえば、データ入力制御機能とデータ出力制御機能とをまとめてデータ収集制御手段と呼び、サンプリング機能をサンプリング手段として区別した構成をとることもできる。
拡張ユニット4の機能は、たとえばそのCPUがシステムプログラムを実行することで実現する。そのため拡張ユニット4は、CPUおよび記憶装置を備えている。記憶装置12は、ROMやRAMなどにより構成されており、共有メモリとローカルなメモリとを含む。なお、各機能はASIC(特定用途集積回路)などの論理回路として実装されてもよい。
<プログラム作成支援装置の機能>
図8は、プログラム作成支援装置のCPU24が制御プログラムを実行することで実現する機能の一例を示す図である。プログラム作成支援装置1の機能のうち、基本ユニット3や拡張ユニット4の配置に関するユニット構成情報(設定データ105など)の設定機能を少なくとも有した設定支援装置が提供されてもよい。ここでは、説明の便宜上、プログラム作成支援機能も含むプログラム作成支援装置1として設定データ105の設定支援装置について説明する。設定データ105には、各拡張ユニット4が、被制御装置16から入力される信号等をサンプリングし、デジタルデータとしてバッファリングするためのトリガやサンプリング周期等が含まれる。なお、ラダープログラムを作成して基本ユニット3に転送する支援装置と、設定データ105を作成して基本ユニット3に転送する支援装置とはそれぞれ別々に用意されてもよい。つまり、設定データ105の設定支援装置は、設定データ105の設定機能を有した支援装置であってもよいし、設定データ105の設定機能およびプログラム作成支援機能も含む支援装置であってもよい。なおラダープログラムを構成する個々の命令を本例ではラダー命令と呼ぶことがある。
図8において、バッファリング設定編集部101は、表示部7にバッファリング設定を入力するためのユーザインターフェースを表示し、ユーザが操作部8を通じて指定した設定値を受け付け、バッファリング設定を含む設定データ105を作成し、プロジェクトデータ作成部103に渡す。図9(A)に、拡張ユニットのチャネルごとのバッファリング設定のためのユーザインターフェースの例を示す。拡張ユニット4は、その目的に応じて被制御装置16から入力されるデータ等をサンプリングするが、複数種類のデータをサンプリングする場合、それぞれのデータの経路をチャネルと呼び、バッファリングしたデータもチャネルごとのID(チャネルIDまたはチャネル番号)により互いに区別する。したがって複数のチャネルを有する拡張ユニット4については、図9(A)による設定をチャネルごとに行うこととなる。
なお、図9(A)に示したユーザインターフェースの例において、設定可能な項目は上から順に以下の通りである。設定された値は、共有メモリ713の設定領域7131にセットされる。
(1)バッファリングを使用するか、すなわちバッファリングを行うか否かを示すバッファリング使用設定。
(2)バッファリング周期の指定方法(たとえばバッファリング設定編集部101によるか、それともラダープログラムによるか等)を設定するバッファリング周期指定。
(3)バッファリングを実行する周期であるバッファリング周期(サンプリング周期をいうこともできる)設定。
(4)バッファリングを開始するトリガ条件設定。
(5)トリガレベルの指定方法(たとえばバッファリング設定編集部101によるか、それともラダープログラムによるか等)を設定するトリガレベル指定、
(6)バッファリングを開始するために、指定されたトリガ条件が満たすべきトリガレベル設定。
(7)バッファリング点数の指定方法(たとえばバッファリング設定編集部101によるか、それともラダープログラムによるか等)を設定するバッファリング点数指定。
(8)バッファリング点数(サンプル数ということもできる)設定。
(9)トリガ条件がトリガレベルに達する前にサンプリングしておくべきデータ点数であるトリガ条件トリガ前データ点数設定。
プログラム作成部102は、表示部7にラダープログラムを作成するためのグラフィカルユーザインターフェース(GUI)を表示し、ユーザが操作部8を通じて入力したラダー図にしたがってラダープログラム106を作成し、プロジェクトデータ作成部103に渡す。プロジェクトデータ作成部103は、設定データ105とラダープログラム106とを含むプロジェクトデータ104を作成し、通信部26を介して基本ユニット3に転送する。
図9(B)は、プログラム作成部102によりラダープログラムでバッファリング設定を行う際のユーザインターフェースの例を示す。図9(B)の例では、チャネルの指定はされていないが、複数のチャネルがある場合には、さらにチャネルを指定する。この例では、共有メモリ713のアドレス0200〜0204がバッファリング設定のための設定領域であり、順にモード選択、バッファリング点数設定、バッファリング周期設定、トリガ条件設定、トリガ前バッファリング点数設定がセットされる。行番号(左欄)00003〜00007が、その設定のための書き込み(UWRIT)命令であり、ユニット番号1の拡張ユニットに対して。モードは連続モード、点数は5000点、周期は100μ秒、トリガ条件は入力端子、トリガ前バッファリング点数は0に設定されている。なおユニット番号とは、PLCにおいてユニットを固有に識別するための番号である。
このようにバッファリング設定は、ユーザインターフェースを介して管理者等が設定を行うこともできるし、ラダープログラムの一部として設定を行うこともできる。
<共有メモリ>
共有メモリ713の構成例を図12に示す。図12に示すように、共有メモリ713は、バスI/F715からは読み出しのみが可能で、拡張ユニット4では、たとえばそのCPUが読み書き可能なデータ入力領域と、バスI/F715からは読み書きが可能で、拡張ユニット4では読み出しのみが可能なデータ出力領域と、バスI/Fおよび拡張ユニット4がともに読み書き可能な双方向領域と、バッファメモリ712のデータ等を基本ユニットから読み取るためのバッファ割り当て領域とを含む。例えば、バッファリング設定領域7131は図12のデータ出力領域に、バッファ割当領域7132は図12のバッファ割当領域に割り当てられている。基本ユニット3から見た場合、データ入力領域は入力デバイス、データ出力領域は出力デバイスとして扱うことができる。共有メモリ713は主として図5に示したプログラム実行202の間に行われる通信であるダイレクト通信のために用いられる。バッファ割当領域7132は固定的であり、データ収集制御部711や、ユーザプログラム内でバッファ割当領域7132へアクセスする命令では、固定的に割り当てられたアドレスおよび領域サイズが用いられる。
<拡張ユニットからのデータ読み取り(ラダー命令)>
基本ユニット3は、ラダープログラムを実行することで拡張ユニット4が被制御装置16等から取得してバッファリングしたデータを、共有メモリ713を介して読み取ることができる。図10にそのラダープログラムの一例を示す。図中、#は10進数、$は16進数を示す。これは他の図においても同様である。ラダープログラムは、ラインの左側に実行条件となるデバイス等を記述し、右側に、条件が満たされた場合に実行される命令を記述する。ラダープログラムが実行され、デバイスがテストされた時点で実行条件が満たされていなければ、対応する命令はスキップされ実行されない。ひとつの条件に対して複数の命令を実行する場合には、それらの命令は実行順に線で結ばれて示される。なお以下では、拡張ユニット4ではチャネルは1つであるものとし、拡張ユニット4が有するチャネルが唯一の場合にはその指定を省くものとして説明する。
図10においてラダー命令1001は読み取り命令UREADであり、指定した拡張ユニットの指定した読み取り元アドレスから読み出した指定長のデータを、指定した宛先アドレスに移動する命令である。読取命令1001は、指定拡張ユニットが1、読み取り元アドレスが021A、宛先アドレスがレジスタR1000、データ長が1ワード、をパラメータとする命令である。この命令は、常時オンであるデバイスCR2002を条件としており、この命令は1スキャンで1回必ず実行される。もちろんCR2002は常時オンのデバイスの一例に過ぎない。そして、読み取り命令により、例えばデータ入力領域に含まれるアドレス021Aの1ワードのデータがレジスタR1000に複製される。また、R1004がオンであり、かつ変数Z1の値が10000でないことを実行条件として、命令1002および命令1003がこの順に実行される。アドレス021Aから所定長の領域は、データ収集制御部711が所定長(たとえばバッファ割当領域7132の長さ)のデータのバッファリングを完了したことを示すバッファリング完了通知等を書き込むための領域であり、命令1001の実行によってレジスタR1004にバッファリング完了通知が格納される。また変数Z1は例えば読み取り開始に先立ってその初期値が0に設定されている。したがって、指定した拡張ユニット1により、所定長のバッファリングが完了しており、かつ、変数Z1が10000でないなら、U_RDBF命令1002が実行される。U_RDBF命令1002は読み取り命令であり、拡張ユニット4の共有メモリ713からの読み出しのために使用される命令である。命令1002は、拡張ユニット番号1の共有メモリ713のバッファ割当領域7132のアドレスであるアドレス2000を読み取り元アドレスとし、そこから1000ワードのデータを宛先アドレスである(EM10000:Z1)に複製する命令である。アドレスEM10000:Z1は、ベースをEM10000、オフセットをZ1の値とするアドレス指定である。加算命令1003は、変数Z1に値1000を加算して変数Z1に格納する命令である。これにより宛先アドレスのオフセットである変数Z1に、読み取り指定長である1000が加算される。したがって命令1002、1003を繰り返すことで、バッファ割当領域7132のデータが、1回の読み取りにつき1000ワードずつEM10000を先頭アドレスとするメモリ領域に連続して格納される。アドレスEM10000:Z1は例えばローカルメモリ703に割り当てられる。なお図10は、プログラム作成支援装置1のユーザインターフェースに表示された命令の例であるが、基本ユニットに転送されたプログラムも論理的には図10に示した構成を有している。
さて、拡張ユニット4でバッファリングしたデータを基本ユニット3から読み取るために実行するラダープログラムは図10に示したようなものであるが、ただ繰り返しただけでは同じデータを読んでしまうため、1回の読み取り命令の実行が完了する都度、バッファ割当領域7132の内容を、次に読み取るべきデータで更新する必要がある。本実施形態では読み取りに付随する一連の動作として基本ユニット3及び拡張ユニット4によりバッファ割当領域7132の更新が行われる。
<拡張ユニットからのデータ読み取り(各ユニットの動作)>
図11は、基本ユニット3が共有メモリ713のバッファ割当領域7132からデータを読み出した際に行われるPLC2の動作例を示す模式図である。CPU10がたとえば、共有メモリ713の所定アドレスの領域に所定値を書き込むことでバッファリング開始要求、すなわちバファリング開始の指示を拡張ユニット4に与える。拡張ユニット4のデータ収集制御部711は例えば定期的に当該領域を参照し、バッファリング開始指示があれば、別途格納されたバッファリング設定を参照し、設定に従ってバッファリングを開始する。データ収集制御部711は、入力されるデータを時系列にバッファメモリ712に格納する。すなわちFIFOの末尾に新たなデータを格納していく。データ収集制御部711は、バッファリング設定で指定された量(たとえばサンプル数)のデータのバッファリングを完了するまでバッファリングを続ける。そしてバッファ割当領域7132相当の量のデータのバッファリングが完了すると、バッファリング完了通知を、共有メモリ713を介して基本ユニット3へと送る。
一方基本ユニット3のCPU10は、例えば図10に示すラダープログラムを実行する。その中で条件具備(すなわちバッファリング完了)をきっかけとするU_RDBF命令の実行により、まずバッファの読み取りを行うことを示す通知(あるいは要求)がCPU10により例えば共有メモリ713の所定の領域に書き込まれる。この領域を定期的に監視する拡張ユニット4のデータ収集制御部711は、バッファの読み取りを行うことを示す通知があると、バッファメモリ712からデータを出力し、バッファ割当領域7132へと書き込み、バッファの読み取りを行うことを示す通知をリセットする。そして、バッファメモリ712からバッファ割当領域7132へと、当該領域のサイズに相当するデータ量を格納し終えたなら、バッファメモリ712からのデータの出力を停止し、共有メモリ713に設けた移動完了通知をオンとする。ここでバッファメモリ712はFIFOであるので、出力したデータはバッファメモリ712から失われ、バッファの先頭は次に読みだすべきデータとなる。
一方、CPU10は、ラダー命令1001の実行によりバッファリング完了通知を読み、命令1002によりテストする。そして、バッファリング完了通知がオンとなり、変数Z1が所定値でない、すなわち読み取りが完了していないなら、読み取り命令1002を実行して、バッファ割当領域7132から読み取ったデータを指定したアドレスへと書き込む。バッファ割当領域7132からの読み取りが完了すると完了したことを通知する読み取り完了通知を共有メモリ713の所定の領域にセットする。データ収集制御部711はこの領域を例えば定期的にテストし、読み取り完了通知がセットされていれば続きのデータをバッファメモリ712からバッファ割当領域7132に出力し、読み取り完了通知をリセットする。
以上をバッファした全データを出力するまで繰り返し、バッファリングした全データを出力したなら処理は終了となる。なお本例では、読み出すべき全データ量は基本ユニットで実行するラダープログラムにより管理されているため、データ収集制御部711がバッファリングした全データを出力し終えた旨の通知は行わなくともよい。
以上がバッファリングしたデータを拡張ユニット4から基本ユニット3へ出力する動作となる。なお上記説明ではバッファ割当領域7132へは、基本ユニット3または拡張ユニット4のいずれか一方がアクセスするものとして説明したが、共有メモリ713としてデュアルポートメモリを採用したり、あるいは十分に広帯域のメモリを採用することで、読み取りと書き込みとを実質的に並列に行うこともできる。
<基本ユニットによる読み出し手順>
図13に、上述したバッファからの読み出し処理のためにCPU10により実行される処理手順を示す。図13において、まずバッファリング関連設定(すなわちバッファリング設定)を行う(S1301)。バッファリング設定は、図9で説明した要領で例えば管理者等が入力した設定値を、たとえば共有メモリ713のバッファリング設定領域7131に書き込むことで実現される。なおステップS1301はラダープログラムに含まれ、スキャンの中で実行されてもよいが、ラダープログラムの実行に先立って予め実行されてもよい。これに対してステップS1303以降はスキャンの中で実行される。すなわち、1回のスキャンにつき1回実行される。ステップS1303ではバッファリング設定に従ったバッファリングの開始要求を行う。次にステップS1305で読み出し数に相当するデータがバッファリングされたか判定する。読み出し数とは、たとえばバッファ割当領域7132のサイズ相当のデータ量である。この判定は、上述のようにデータ収集制御部711からのバッファリング完了通知をテストし、バッファリング完了通知がセットされていれば満たされたものと判定する。バッファリングが完了していなければS1305を繰り返す。ラダープログラムでは条件不備の命令はスキップされるので、この繰り返しは次のスキャンで行われることになる。
一方、バッファリングが完了していれば、ステップS1307において指定したアドレスすなわちバッファ割当領域7132からデータを読み取って指定したアドレスへと複製する。このあと、バッファリング完了通知はリセットしておく。ステップS1309でバッファリング対象の全データを取得したか(読み取ったか)判定する。この判定は、図10の命令1002の2番目の条件「#10000<>Z1」の判定に相当する。読み取っていればデータ取得は完了となる。これ以降は、ユーザプログラムに従って、再びステップS1301やS1303から処理を繰り返すか、あるいはそのまま何もしない、などとなる。ステップS1305〜ステップS1309は図10のラダー命令1002、1003に相当する。
<拡張ユニットによる読み出し手順>
図14は拡張ユニット4のデータ収集制御部711によるバッファリングおよびその読み出し時の手順を示す。図14(A)はバッファリング開始要求を基本ユニット3から受けた場合に実行する手順である。データ収集制御部711は、たとえば周期的に共有メモリ713に書き込まれるバッファリング開始要求をテストし、オンであれば図14(A)の手順を実行する。ステップS1401では、被制御装置14から入力される信号等をサンプリングし、A/D変換等必要な処理を施してFIFO構成を有するバッファメモリ712に時系列に格納する。ステップS1403で全てのデータのバッファリングが完了したか判定し、完了したなら、ステップS1409でバッファリングを停止し、バッファリングの完了を共有メモリ713に書き込むことなどで基本ユニット3に通知する。なお、この通知は、基本ユニット3の処理によっては行わなくともよい。なお、バッファリングの終了条件は、バッファリング設定を参照することで充足されているか否かを判定できる。またバッファリングのトリガ条件がバッファリング設定で与えられている場合には、トリガ条件を満たすデータがサンプリングされ、バッファリングされる。一方、全てのデータのバッファリングが完了していない場合には、ステップS1405で、読み出し領域分のバッファリングが完了したか判定する。読み出し領域とは、本実施形態ではバッファ割当領域7132に相当する。すなわちステップS1405では、バッファ割当領域7132のサイズに相当する量のデータがバッファリングされたか判定する。本実施形態では、バッファ割当領域7132は固定的に割り当てられているため、そのサイズもまた固定値である。読み出し領域分のバッファリングが完了していなければ、ステップS1401に戻ってバッファリングを行う。一方、読み出し領域分のバッファリングが完了していれば、ステップS1407で、共有メモリ713を介してそのバッファリング完了通知を基本ユニット3に通知する。この通知が図13のステップS1305でテストされる。なお図14(A)ではフローチャートの表現上の制約で、処理が逐次的に進むものとして説明しているが、ステップS1401、S1403、S1409の処理とは非同期に、ステップS1405、S1407を実行してもよい。また、読み出し領域について、本実施形態では、上述したようにバッファ割当領域7132に相当するとしているが、本発明はこれに限られない。例えば、バッファメモリ712のサイズ以下の所定データ量であれば、バッファ割当領域7132のサイズを超えていても構わない。更に、本実施形態では、バッファ割当領域7132のサイズに相当する量のデータがバッファリングされたか否かを判定しているが、例えば、バッファメモリ712内のデータ量が一定量以上になったか否かを判定してもよい。この点、従来のページ切替方式によるバッファリングの場合には、読み出すデータ量はページサイズ分(共有メモリのバッファ割り当て領域分)を読み出す必要があったが、FIFO方式によるバッファリングであれば、読出しデータ量とバッファ割り当て領域が同じである必要はない。FIFOからは読出し要求のあったデータ数(データ量)分のみが共有メモリ713に即時出力されることになる。
なおFIFOへの書き込みと読み出しとは互いに非同期に実行され得るので、バッファリングしたデータが読み出されることがないままバッファリングが進行してステップS1407を複数回繰り返し実行することもあり得る。そのため、ステップ1407におけるバッファリング完了通知は、バッファリングの完了に応じた読み取りが行われないまま重複して発行され、前のバッファリング完了通知がオーバーライドされてしまう可能性がある。そこで、ステップS1407では、バッファリング完了通知が既にセットされたままであるかテストし、セットされていなければセットするが、セットされた(すなわちオン)のままであれば、たとえば別途ローカルに設けた重複カウンタに1加算し、バッファリング完了通知をオーバーライドした回数をカウントする。また、ステップS1407でバッファリング完了通知をセットした場合には、当該重複カウンタ値が1以上であれば重複カウンタから1減算する。さらにステップS1409ではさらに、バッファリング完了通知をテストし、オフであればセットして重複カウンタの値から1減算する動作を重複カウンタの値が初期値に戻るまで繰り返し行う。たとえばこのように構成することで、書き込みと読み出しとが非同期であってもバッファリングした全データの読み取りを保証できる。なおこの説明は、バッファリングした全データをユーザプログラムで読み取ることを前提としており、バッファリング設定に含まれたバッファリングするデータ数と、ラダープログラムにより読み取るデータ数とを一致させる必要がある。
図14(B)は基本ユニット3によるバッファの読み出しが開始された際にデータ収集制御部711により実行される手順である。なお、ステップS1407における通知に応じて基本ユニット3は読み取りを開始するので、図14(A)のバッファリングと図14(B)の読み出しとは並列で実行されることもあり得る。図14(B)の実行のトリガは、たとえば基本ユニット3が、バッファ割当領域7132からの読み出しを開始する旨の通知を共有メモリ713にセットし、データ取集制御部711がその値をテストする構成であってもよいし、バスI/F715により信号をデコードし、実行する命令が読み出しであり、かつ対象データのアドレスがバッファ割当領域7132であれば、読み出しの実行と判断してデータ取集制御部711に通知して実行のトリガとしてもよい。拡張ユニット4でバッファリングされたデータの読み取り命令として例えばU_RDBFという専用の命令を用いれば、基本ユニット3は、実行する命令がバッファリングされたデータの読み取りであることを容易に知ることができるため、前者の方式の実装は容易である。
さて基本ユニット3による読み出しの開始を知ったデータ収集制御部711は、ステップS1411で、指定されたチャネルのバッファメモリ712の先頭からデータを出力し、出力したデータを転送して共有メモリ3の読み出し領域すなわちバッファ割当領域7132に出力順に格納する。チャネルがひとつの場合には、図10に例示したラダー命令1002のように、チャネル指定がなくともよい。チャネルの指定がある場合には、チャネルIDは共有メモリ713で基本ユニット3から拡張ユニット4へと引き渡せばよい。データの転送および格納が終了したなら、ステップS1413で、転送の完了すなわちバッファ割当領域7132からの読み出し準備が完了したことを基本ユニット3に通知する。この通知はラダー命令により明示的にテストされるのではなく、例えば図13のステップS1307の読み出しに際してまずテストされる。そして、完了していれば読み出しが実行される。また、バッファ割当領域7132へのバッファ712からの書き込みが、基本ユニット3からの読み出しを追い越さないことを保証する機構を設ければ、ステップS1413の転送完了の通知前に、基本ユニット3からの読み出しを開始し、読み出しと書き込みを並行して行ってもよい。
以上のように、バッファ割当領域7132に取り出すべきデータがあることと、取り出すべきデータがもはやないこととを、拡張ユニット4のデータ収集制御部711と基本ユニット3との間で互いに通知し合うことで、データ収集制御部711はバッファ割当領域7132へとバッファリングしたデータを順次移動し、基本ユニットに順次読み取らせることができる。したがって、この通知の方法は上記例に限るものではなく、拡張ユニット4と基本ユニット3とが情報を共有できる方法であればどのような構成や方法を採用してもよい。
そしてこの構成により、本実施形態のPLCにおいては、拡張ユニットのバッファ構造を考慮することなく、拡張ユニットでバッファリングされたデータを基本ユニットにより読み取るためのユーザプログラムを構築できる。このため、プログラム設計の負担が軽減され、大量のデータの読み出しを、込み入った制御のコーディングを行うことなく容易に実現できる。これは作業性や生産性の向上のみならず、ユーザプログラムの品質の向上につながる。さらに、共有メモリのバッファ割当領域の容量に相当するデータがバッファリングされる都度それを読み出すことから、バッファ割当領域のサイズを調整することで、1回のスキャンタイムに対するバッファの読み出し時間の影響を調整することができる。
また、拡張ユニットのバッファメモリとしてFIFOを採用しているため、バッファへの書き込みおよび読み出しのポインタ管理を拡張ユニット単独で行うことができ、ユーザプログラムによるポインタ管理が不要となり、プログラム設計が簡素化できる。
[本実施形態の変形例]
図15に、共有メモリ713を介してFIFOバッファからデータを読み取るためのラダープログラムの他の例を示す。図15(A)は、ユニットIDおよびチャネル番号を指定した読み取り命令U_FIFORの例である。指定するパラメータはユニットID、チャネル番号、読み取ったデータの格納先アドレス、データ数(データ長)である。読み取るべきアドレスは固定的に割り当てられているバッファ割当領域7132であるので、パラメータとして指定する必要はない。またデータ数についても、バッファ割当領域7132のサイズに応じて固定された値を用いるなら指定しなくともよい。実行の条件は左端に記載した読み出し量分のデータの「バッファ完了」すなわちバッファリング完了通知である。図15(B)は、チャネル番号の指定を省いたもので、先頭のチャネル番号を規定値として指定した図15(A)の命令を同じ意味を持つ。
図15(C)は、読み取り命令を5回繰り返してバッファリングされたデータを読み取る例を示す。図10の命令1002および命令1003は、1回のスキャンで1回実行され、それにより1000ワードのデータが読み取られる。これに対して図15(C)は、1回のスキャンで5つの読み取り命令が順次実行され、5000ワードのデータが読み取られる。図15(C)では、ラダー命令で明示的にテストされるのは最初の1回に読み出されるデータ(図15(C)の例では1000)のバッファリング完了であり、残りの4000のデータについては明示的にバッファリングの完了のテストは行っていない。そこで、たとえば図15(C)のU_FIFOR命令では、バッファ完了を、U_FIFOR命令を実行する過程でテストし、完了していればバッファ割当領域7132からデータを読み出すように構成する。こうすることで図15(C)の命令列により5000個のデータを時系列に読み出すことができる。また、バッファリング完了を、5つのU_FIFOR命令で読み出す総数すなわち5000のデータのバッファリングが完了したときに通知するように構成してもよい。
このようにすることで、チャネル番号の明示的な指定とデフォルトの適用による暗黙裡の指定とを両立できる。また、パラメータを減らすことでより簡潔なプログラム設計が可能となる。また、図15(C)のような記述をすることによって、共有メモリ713の割り当て領域サイズを超えるデータ量であっても、簡単に読み出しを行うことができるメリットがある。より具体的に説明すると、共有メモリ713のサイズは、バス通信のコマンドで指定できるアドレスサイズの影響を受けるので、PLCのインフラの制約を受けることになる。例えば、バスコマンドのアドレスがワードなら、0から65535までの領域にしかアクセスできないので、この領域の中でデータの受け渡しを行う必要がある。バッファデータの受け渡し以外にも、様々なデータを受け渡す必要があるため、例えばバッファデータ受け渡し用の空間は1000しかない、ということもあり得る。一方で、本実施形態のように、FIFO方式によるバッファリングであれば、このような制約を受けないため、例えば5000点分のデータを蓄えられるだけのメモリを用意することができる。この場合、一度に読み出すデータ量は1000(共有メモリのサイズ上限とする)であっても、命令を複数並べるだけで順次次のデータに切り替えることができるので、5000点のデータを1スキャン内で簡易に読み出すことができる。つまり、ユーザは、ラダープログラムに、読み出しポインタ操作の記述やページ切り替え操作の記述を書く必要がないため、プログラム設計のユーザ負担を軽減することができる。
なお上記説明ではバッファ割当領域7132のアドレスを固定値としたが、バッファ割当領域7132のアドレスをバッファリング設定の一部として共有メモリ713に設定して間接アドレシングとすることで、そのアドレスをより柔軟に変更することができる。
[変形例その2]
図16に、共有メモリ713を介した通信ではなく、割り込みによってバッファ完了の通知を行う構成例を示す。この構成では図16(A)に示すように、バッファ完了割り込み1501がデータ収集制御部711から出力され、バスI/F715に入力される。データ収集制御部711は、バッファ割当領域7132のサイズに相当する量のデータのバッファリングを完了する都度、完了通知を共有メモリ713に書き込む代わりに、バッファ完了割り込み1501を出力する。この割込はバスを介して基本ユニット3へと通知される。
図16(B)は、図16(A)の構成に対応したユーザプログラムの一例である。命令1601は、ユニット番号1の拡張ユニットからの要因16の割り込み、すなわちバッファ完了割り込みをトリガとして実行されるプログラムモジュールであることを示す。この割り込みをきっかけとして、命令1602、1603が実行される。これら命令は、条件としてバッファリングの完了が含まれていない点を除き、図10の命令1002,1003と同じものである。そして図16(B)の命令が実行されると、割り込み発生前のコンテキストに戻る。
以上のように、割り込みをバッファの読み出しのトリガとすることもできる。そのように構成することで、バッファ完了通知をテストする工程が不要となり、よりプログラム設計を簡素化できる。なお、バッファ完了割り込みを受信した基本ユニット3では、バッファ完了割り込みをキューイングしておき、先着順に例えば図16(B)のような読み出し処理を行うことで、すべてのバッファ完了割り込みに対応した読み出し処理をすることができる。
[第2実施形態]
第2の実施形態として、バックアップ機能の付いたバッファ読み出し処理について説明する。なお第1実施形態の基本例と共通する構成及び処理については説明を省略し、相違点について説明する。なお説明の便宜のために図18のフローチャートの対象となるコマンドはバッファ割当領域7132のデータの読み取りコマンドに限るものとする。その他のコマンドについては説明を省略する。また本実施形態では説明を省略するがデータ収集制御部711によるバッファの管理動作および基本ユニット3の動作については第1の実施形態と同様に実施される。
図17は本実施形態の拡張ユニット4の構成を示す機能ブロック図である。図11の拡張ユニット4と異なる点は、バスI/F715にバックアップメモリ1601が接続されている点にある。バッファメモリ7121はFIFOであるため、出力したデータはバッファから失われてしまい、読み出しの再試行ができない。その点を補うために、本実施形態の拡張ユニット4はバックアップメモリ1601を有しており、バッファ割当領域7132から読み出したデータはバックアップメモリ1601に複製され、再試行に備えている。読み出しの再試行が行われた際には、バックアップメモリ1601からデータが読み取られる。本実施形態のバックアップメモリ1601は、バッファ割当領域7132以上の容量を有している。またバックアップするデータは1回の読み出し相当のデータである。なお本実施形態では、バスには例えばパケットとしてコマンドおよびパラメータが送信され、各ユニットはそれを送受信するものとする。コマンドの解析および実行を行うためにバスI/F715はインテリジェントな構成であり、実質的に独立した処理ユニットおよびメモリを有する。コマンド、特に読み取りコマンドは図10等に示したラダー命令と同様のパラメータを有していてよい。具体的には、読み取り/書き込みの別などを示すコマンド、ユニットID、チャネル番号、対象アドレス、データ長などである。またコマンドのIDも含む。これはたとえば図10の左端に記載したラインのような場合などでよい。リトライのコマンドは、同一の命令の実行であることから元のコマンドIDと同一のコマンドIDを持つ。あるいはリトライであることを示すパラメータをもっていてもよい。
図18にバスI/F715による処理手順を示す。まずバスを介して信号入力があると、それが自ユニットに対するものであるか判定する(S1801)。コマンドにはパラメータとしてユニットIDが含まれているので、自ユニットのユニットIDとバス上のユニットIDとを照合して判定できる。
自ユニットへの通信であれば、ステップS1803以下を実行する。ステップS1803では、コマンドが前回応答済みのコマンドのリトライであるか判定する。これはたとえばコマンドのIDやリトライであることを示すインジケータなどをパラメータに含めることで実現できる。コマンドのIDを用いる場合には、前回実行したコマンドのIDを記憶しておき、それと照合してリトライのであるか否かを判定する。リトライでないならば、共有メモリ713のバッファ割当領域7132からデータを読み出して(S1811)、そのデータを基本ユニット3に応答する(S1807)。そして、バッファ割当領域7132から読み出したデータをバックアップメモリ1601に保存する(S1809)。
一方、読み取りのリトライである場合には、バックアップメモリ1601からデータを読み取って(S1805)、基本ユニット3へと応答する(S1807)。この場合にはステップS1809では何もする必要は無い。なおステップS1805では、パラメータで指定されているアドレスは無視されてバックアップメモリ1601が読み取りの対象となる。
以上の構成により、共有メモリから読み出した最新のデータをバックアップすることで、リトライに対応することができる。また、リトライの制御をバスI/Fユニットで行うことで、他の機能ブロックの動作に影響を及ぼすことなく図18に示したバックアップ及びリトライ手順を適用できる。
<他の構成例>
なおバックアップ及びリトライのためには他の構成であってもよい。たとえば、バックアップメモリ1601も基本ユニット3からアクセス可能に構成しておく。そして、基本ユニット3は読み取り命令の実行時に、それがリトライである場合には、当該命令の読み出し先のアドレスを、バッファ割当領域7132のアドレスからバックアップメモリのアドレスへと変更する。そして基本ユニット3は拡張ユニット4にアクセスする。メモリからのデータの読み出しは指定されたアドレスに従って実行する。ただし、バスI/Fユニット715またはデータ収集制御部711は、バッファ割当領域7132が読み取り先アドレスとして指定されている場合には、読み出したデータをバックアップメモリ1601に格納する。
以上の構成では、拡張ユニット4においてリトライであるか否かに応じた処理を行う必要がない。そのためパラレルバスなどの場合にも適用できる。ただしバックアップメモリのアドレスを基本ユニット3と拡張ユニット4とで共有する必要がある。
<書き込み命令への対応>
さて、上記実施形態すべてにおいては、データを拡張ユニット4から読み出す場合について説明した。しかしながら、これら実施形態の構成は基本ユニット3から拡張ユニット4へのデータの書き込みを行う場合にも有効である。図19に書き込みの場合の模式図を示す。構成要素については図11と同様である。
基本ユニット3において拡張ユニット4のバッファ割当領域7132を書き込み先アドレスとして指定した書き込み命令が実行されると、指定されたアドレスすなわちバッファ割当領域7132に指定されたデータが書き込まれる。書き込みはデータ収集制御部711に共有メモリ713を介して通知される。書き込みの通知を受けたデータ収集制御部711は、共有メモリ713の先頭から読み出されてバッファメモリ7121へとその末尾から入力される。そしてバッファメモリ7121の先頭からデータが取り出され、たとえば接続された被制御装置16へと出力される。もちろんバッファメモリ712へと書き込まれたデータは、拡張ユニット4により使用されて破棄されてもよいし、別途設けられたメモリに移動されてもよい。
そして書き込みの場合にも、そのラダープログラムはたとえば、図10のU_RDBFを書き込みのための命令に置き換えたものでよく、ページの切り替えやポインタの管理等をラダープログラムで行う必要は無い。上述した実施形態で説明したデータの読み取りの場合とデータの流れは逆となるが、バッファ割当領域7132に取り出すべきデータがあることと、取り出すべきデータがもはやないこととを、拡張ユニット4のデータ収集制御部711と基本ユニット3との間で通知し合うことで、データ収集制御部711はバッファ割当領域7132のデータを順次バッファリングすることができる。
<まとめ>
第1及び第2の実施形態によれば、PLC2は、ユーザプログラムを繰り返し実行する基本ユニット3と、基本ユニット3によって制御される1つ以上の拡張ユニット4とを有している。拡張ユニット4は、基本ユニット3と拡張ユニット4の双方からアクセス可能な共有記憶領域を含む第1の記憶部として、バッファ割当領域7132を含む共有メモリ713を有している。さらに拡張ユニットはFIFO記憶であるバッファメモリ712を第2の記憶部として有している。さらに拡張ユニット4は、被制御装置16である外部機器から取得したデータをバッファメモリ712に時系列に入力し、基本ユニット3からの読み出し要求に応じてバッファメモリ712に格納したデータをバッファ割当領域7132に出力するデータ収集制御部711を有する。これにより、拡張ユニット4が内部的にバッファを管理することで、バッファは基本ユニット3から遮蔽され、ユーザプログラムにより管理する必要がなくなって、プログラム設計が簡素化できる。
また図16で説明したように、データ収取制御部711からの読み出す量のバッファリングが完了した旨を、割り込みによって通知することもできる。これにより、共有メモリに書き込まれた通知を、ユーザプログラムによりテストすることなく、バッファリングの完了を基本ユニット3(すなわち実行されているユーザプログラム)では知ることができる。
また、図17で説明したように、バックアップメモリ1601を拡張ユニット4に更に備え、読み出しのリトライに対してはバックアップしたデータを読ませている。こうすることで、出力したデータが失われてしまうというFIFOの特徴を補い、読み出しのリトライを可能としている。
また図19のように、FIFOに構成したバッファメモリ712を用いて読み込みのみならずバッファへの書き込みもサポートする。書き込みにおいても読み出しと同様、バッファメモリの管理を拡張ユニット4が行うことで、ユーザプログラムの簡素化を実現することができる。

Claims (13)

  1. ユーザプログラムを周期的に実行する基本ユニットと、該基本ユニットと外部機器とに接続される拡張ユニットとを有するプログラマブルコントローラであって、
    前記拡張ユニットは、
    前記外部機器と接続するためのインターフェースと、
    前記インターフェースに入力される前記外部機器からの信号を、予め設定された周期でサンプリングするサンプリング手段と、
    前記サンプリング手段によりサンプリングされたデータを順次記憶する記憶部と、
    前記基本ユニットからの読み出し要求に応じて、前記記憶部に記憶されているデータを前記基本ユニットに出力するデータ収集制御手段と、を備え、
    前記データ収集制御手段は、
    前記読み出し要求に含まれる読み出し対象のデータ個数に基づいて、前記記憶部に記憶されている特定の先頭データから、記憶された順に該データ個数のデータを読み出して出力した後、
    次回の前記読み出し要求に応じるために前記特定の先頭データとする対象を前記データ個数に応じて変更させることを特徴とするプログラマブルコントローラ。
  2. 前記記憶部は、記憶されているデータの記憶位置をシフトさせるシフトレジスタを含み、
    前記データ収集制御手段は、前記シフトレジスタに最も古く記憶されているデータを、前記特定の先頭データにすることを特徴とする請求項1に記載のプログラマブルコントローラ。
  3. 前記記憶部は、終端の記憶位置と先端の記憶位置が連結されたリングバッファを含み、
    前記データ収集制御手段は、前記リングバッファにおいて次の読み出し先を示すポインタにて特定されるデータを、前記特定の先頭データにすることを特徴とする請求項1に記載のプログラマブルコントローラ。
  4. 前記基本ユニットと前記拡張ユニットの双方からアクセス可能な共有記憶領域を含む第1の記憶部と、前記記憶部である第2の記憶部とを有し、
    前記データ収集制御手段は、前記外部機器からサンプリングされたデータを前記第2の記憶部に順に記憶させ、前記基本ユニットからの読み出し要求に応じて、前記第2の記憶部に格納されたデータを前記第1の記憶部の前記共有記憶領域に記憶させることを特徴とする請求項1乃至3のいずれか一項に記載のプログラマブルコントローラ。
  5. 前記データ収集制御手段は、前記基本ユニットからのバッファリング要求に応じて前記外部機器からサンプリングしたデータを前記第2の記憶部に入力して格納することを特徴とする請求項4に記載のプログラマブルコントローラ。
  6. 前記データ収集制御手段は、前記基本ユニットからの前記バッファリング要求に応じた前記第2の記憶部へのデータの格納が完了すると、前記共有記憶領域に格納完了情報を格納し、
    前記基本ユニットは、前記ユーザプログラムを実行する中で前記格納完了情報を周期的に判定し、前記格納完了情報が格納されていれば、前記共有記憶領域からの読み出し要求を発行することを特徴とする請求項5に記載のプログラマブルコントローラ。
  7. 前記データ収集制御手段は、前記基本ユニットからのバッファリング要求に応じた前記第2の記録部へのデータの格納が完了すると前記基本ユニットに対して割り込み要求を出力する割り込み要求部を有し、
    前記基本ユニットは前記割り込み要求に応じて、前記共有記憶領域からの読み出し要求を発行することを特徴とする請求項5に記載のプログラマブルコントローラ。
  8. 前記基本ユニットは、前記ユーザプログラムに含まれた読み出し命令およびバッファリング命令それぞれの実行により、前記拡張ユニットに前記読み出し要求および前記バッファリング要求それぞれを発行することを特徴とする請求項5乃至7のいずれか一項に記載のプログラマブルコントローラ。
  9. 前記基本ユニットは、前記読み出し要求として、前記拡張ユニットの識別情報と前記共有記憶領域内のアドレスとデータ長とを指定し、
    前記識別情報で特定される前記拡張ユニットの前記データ収集制御手段は、前記第2の記憶部に格納されたデータを、指定された前記アドレスとデータ長とにより特定される記憶領域に出力することを特徴とする請求項4乃至8のいずれか一項に記載のプログラマブルコントローラ。
  10. 前記第2の記憶部および第3の記憶部を前記基本ユニットと接続するためのインターフェース部を更に有し、
    前記インターフェース部は、前記読み出し要求に応じて、前記読み出し要求が前回の読み出し要求のリトライでない場合には前記共有記憶領域からデータを読み出すとともに該データを複製して前記第3の記憶部に保存し、前記読み出し要求が前回の読み出し要求のリトライである場合には、前記第3の記憶部からデータを読み出すことを特徴とする請求項4乃至9のいずれか一項に記載のプログラマブルコントローラ。
  11. 前記第1の記憶部は、前記ユーザプログラムで設定される前記拡張ユニットによる動作のパラメータを記憶するデバイス領域をさらに含むことを特徴とする請求項4乃至10のいずれか一項に記載のプログラマブルコントローラ。
  12. 前記データ収集制御手段はさらに、前記基本ユニットからの書き込み要求に応じて前記基本ユニットからのデータを前記共有記憶領域に格納し、前記共有記憶領域に格納したデータを指定された順序で前記第2の記憶部に入力し、前記第2の記憶部に格納されたデータを前記外部装置に出力することを特徴とする請求項4乃至11のいずれか一項に記載のプログラマブルコントローラ。
  13. ユーザプログラムを周期的に実行する基本ユニットと外部機器とに接続されるプログラマブルコントローラの拡張ユニットであって、
    前記外部機器と接続するためのインターフェースと、
    前記インターフェースに入力される前記外部機器からの信号を、予め設定された周期でサンプリングするサンプリング手段と、
    前記サンプリング手段によりサンプリングされたデータを順次記憶する記憶部と、
    前記基本ユニットからの読み出し要求に応じて、前記記憶部に記憶されているデータを前記基本ユニットに出力するデータ収集制御手段とを備え、
    前記データ収集制御手段は、
    前記読み出し要求に含まれる読み出し対象のデータ個数に基づいて、前記記憶部に記憶されている特定の先頭データから、記憶された順に該データ個数のデータを読み出して出力した後、
    次回の前記読み出し要求に応じるために前記特定の先頭データとする対象を前記データ個数に応じて変更させることを特徴とするプログラマブルコントローラの拡張ユニット。
JP2014248403A 2014-12-08 2014-12-08 プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット Active JP6470955B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014248403A JP6470955B2 (ja) 2014-12-08 2014-12-08 プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014248403A JP6470955B2 (ja) 2014-12-08 2014-12-08 プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット

Publications (2)

Publication Number Publication Date
JP2016110459A true JP2016110459A (ja) 2016-06-20
JP6470955B2 JP6470955B2 (ja) 2019-02-13

Family

ID=56124488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014248403A Active JP6470955B2 (ja) 2014-12-08 2014-12-08 プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット

Country Status (1)

Country Link
JP (1) JP6470955B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10656615B2 (en) 2018-01-18 2020-05-19 Mitsubishi Electric Corporation PLC, network unit, CPU, and data transfer method
JP2020177713A (ja) * 2018-10-23 2020-10-29 株式会社キーエンス プログラマブルロジックコントローラ
WO2022059588A1 (ja) * 2020-09-16 2022-03-24 ファナック株式会社 Plc装置及び産業機械システム
WO2023276351A1 (ja) * 2021-07-02 2023-01-05 オムロン株式会社 制御装置、システムプログラムおよび方法
US11656596B2 (en) 2018-10-23 2023-05-23 Keyence Corporation Programmable logic controller and program creation supporting apparatus
JP7414532B2 (ja) 2020-01-07 2024-01-16 株式会社東芝 単位時間当たりのデータを作成するコントローラ、方法、およびプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0944212A (ja) * 1995-07-28 1997-02-14 Omron Corp シリアル・コミュニケーション・インタフェース
US20050203649A1 (en) * 2004-03-12 2005-09-15 David Martin System and method for providing an application with memory access methods
JP2008251052A (ja) * 2008-07-08 2008-10-16 Omron Corp I/oユニット及びプログラマブルコントローラシステム
JP2008251051A (ja) * 2008-07-07 2008-10-16 Okwave:Kk 管理サーバ
JP2014052672A (ja) * 2012-09-04 2014-03-20 Keyence Corp プログラマブルコントローラ、プログラム作成支援装置、プログラム及び基本ユニット
WO2014064846A1 (ja) * 2012-10-26 2014-05-01 三菱電機株式会社 アナログ変換装置およびプログラマブルコントローラシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0944212A (ja) * 1995-07-28 1997-02-14 Omron Corp シリアル・コミュニケーション・インタフェース
US20050203649A1 (en) * 2004-03-12 2005-09-15 David Martin System and method for providing an application with memory access methods
JP2008251051A (ja) * 2008-07-07 2008-10-16 Okwave:Kk 管理サーバ
JP2008251052A (ja) * 2008-07-08 2008-10-16 Omron Corp I/oユニット及びプログラマブルコントローラシステム
JP2014052672A (ja) * 2012-09-04 2014-03-20 Keyence Corp プログラマブルコントローラ、プログラム作成支援装置、プログラム及び基本ユニット
WO2014064846A1 (ja) * 2012-10-26 2014-05-01 三菱電機株式会社 アナログ変換装置およびプログラマブルコントローラシステム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10656615B2 (en) 2018-01-18 2020-05-19 Mitsubishi Electric Corporation PLC, network unit, CPU, and data transfer method
JP2020177713A (ja) * 2018-10-23 2020-10-29 株式会社キーエンス プログラマブルロジックコントローラ
US11656596B2 (en) 2018-10-23 2023-05-23 Keyence Corporation Programmable logic controller and program creation supporting apparatus
JP7405714B2 (ja) 2018-10-23 2023-12-26 株式会社キーエンス プログラマブルロジックコントローラ
JP7414532B2 (ja) 2020-01-07 2024-01-16 株式会社東芝 単位時間当たりのデータを作成するコントローラ、方法、およびプログラム
WO2022059588A1 (ja) * 2020-09-16 2022-03-24 ファナック株式会社 Plc装置及び産業機械システム
WO2023276351A1 (ja) * 2021-07-02 2023-01-05 オムロン株式会社 制御装置、システムプログラムおよび方法

Also Published As

Publication number Publication date
JP6470955B2 (ja) 2019-02-13

Similar Documents

Publication Publication Date Title
JP6470955B2 (ja) プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット
JP6626315B2 (ja) プログラマブル・ロジック・コントローラのモニタ装置及びプログラマブル・ロジック・コントローラ・システム
JP2938374B2 (ja) 順序シーケンス・プログラムの作成装置及び制御装置
US8938559B2 (en) Isochronous data transfer between memory-mapped domains of a memory-mapped fabric
TWI425415B (zh) 顯示系統及其顯示方法
JP6535459B2 (ja) プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
US4454577A (en) Linked data systems
KR860009351A (ko) 입출력 제어 시스템
JP4831793B2 (ja) データ制御装置
JP7320953B2 (ja) プログラマブルロジックコントローラ及びそのログデータ保存方法
JP2016110460A (ja) プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム
JPS582761A (ja) ユニツトのテスト方法
JP5987203B1 (ja) A/d変換装置、d/a変換装置、及びplc
JP6767896B2 (ja) プログラマブルロジックコントローラシステム、プログラマブルロジックコントローラ、通信テスト支援装置、通信テスト支援方法、及び通信テスト支援装置で実行することが可能なコンピュータプログラム
JP2013181833A (ja) 試験装置および試験モジュール
JP2016081301A (ja) プログラマブル・ロジック・コントローラ、システム、制御方法およびプログラム
CN109765850B (zh) 控制系统
WO2015181921A1 (ja) プログラマブル表示器及び作画ソフトウェア
JP2009252113A (ja) 情報処理装置、その制御方法及びコンピュータプログラム
JP6484015B2 (ja) プログラマブル・ロジック・コントローラおよびその制御方法
JP2003263339A (ja) デバック機能内蔵型マイクロコンピュータ
EP2562634A2 (en) Data copy processing system, storage device, and data copy processing method
CN104123010A (zh) 一种kvm设备通道记忆功能的处理方法
JPH05241619A (ja) プログラマブルコントローラのプログラミング装置
US11095379B2 (en) Data processing unit and information processing device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170831

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190121

R150 Certificate of patent or registration of utility model

Ref document number: 6470955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250