JP4366575B2 - ツール - Google Patents

ツール Download PDF

Info

Publication number
JP4366575B2
JP4366575B2 JP2003376262A JP2003376262A JP4366575B2 JP 4366575 B2 JP4366575 B2 JP 4366575B2 JP 2003376262 A JP2003376262 A JP 2003376262A JP 2003376262 A JP2003376262 A JP 2003376262A JP 4366575 B2 JP4366575 B2 JP 4366575B2
Authority
JP
Japan
Prior art keywords
file
address
program
stored
input
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.)
Expired - Fee Related
Application number
JP2003376262A
Other languages
English (en)
Other versions
JP2005141435A (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 JP2003376262A priority Critical patent/JP4366575B2/ja
Publication of JP2005141435A publication Critical patent/JP2005141435A/ja
Application granted granted Critical
Publication of JP4366575B2 publication Critical patent/JP4366575B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

この発明は、ツールに関するものであり、より具体的には、C言語などのコンパイル方式の言語で記述されたプログラムを実行可能なプログラマブルコントローラに対し、各種の情報を設定するためのツールに関する。
ファクトリーオートメーション(FA)の制御装置として、プログラマブルコントローラ(PLC)が用いられている。このPLCは、複数のユニットから構成される。すなわち、電源供給源の電源ユニット,PLC全体の制御を統率するCPUユニット,FAの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット,アクチュエータなどに制御出力を出す出力ユニット,通信ネットワークに接続するための通信ユニットなどの各種のユニットを適宜組み合わせて構成される。
PLCのCPUユニットにおける制御は、入力ユニットで入力した信号をCPUユニットのI/Oメモリに取り込み(INリフレッシュ)、予め登録されたユーザプログラム記述言語(例えばラダー言語)で組まれたユーザプログラムに基づき論理演算をし(演算実行)、その演算実行結果をI/Oメモリに書き込んで出力ユニットに送り出し(OUTリフレッシュ)、その後、いわゆる周辺処理を行うということをサイクリックに繰り返し処理するようになる。そして、上記したユーザプログラムは、CPUユニットのユーザメモリに格納される。
ところで、PLCの一般的な使われ方としては、複数のINデータの論理演算をし、その演算結果によってOUTデータを出力し、被制御装置を制御するような使われ方がある。この場合のユーザプログラムは、ラダー言語を用いることが多い。その理由は、ラダー言語によるプログラミングは、入力機器の接点のON/OFF状態と出力機器へのOUT信号の状態との論理関係を表しやすく、目視でわかりやすいためである。
しかし、最近ではPLCの制御内容も単なる論理演算だけでなく、関数演算や数式演算,アナログ情報を扱う処理をすることもある。このような比較的高度な演算や処理をする場合のプログラミング言語としてC言語を使用することがある。そこで、PLCの中に、ラダープログラムを実行するCPUと、C言語を実行するCPUとの両方を持たせたものがある。このようなPLCでは、C言語などのコンパイル方式の言語でプログラムを記述して演算処理可能となっている。そのようなPLCにおいては、プログラムは、外部のプログラミング開発環境(プログラミングツール)で作成したのち、コンパイル→アセンブル→リンクの工程を経てオブジェクトコードに変換し、その変換されたオブジェクトコードをPLCのCPUユニットにダウンロードして、CPUユニット内に記憶される。そのプログラムはCPUユニット内にて実行される。
そして、現在実行中のプログラムを変更すべくメモリ内容を書き換えるには、通常、以下のような手順を実行する。すなわち、(1)まずジャンパーピンやディップスイッチ等のモード切替手段によって、PLCをプログラム転送モードに変更する。(2)次いで、オブジェクトコードのダウンロードを実行する。これにより、PLCが持つプログラムを格納するメモリに、オブジェクトコードが格納される。(3)ダウンロードが完了したらならば、PLCをプログラム実行モードに変更した後、立ち上げ直す。
なお、ラダープログラムをブロックごとに作成するとともに、各ブロックごとにファイル名を付してファイル・プログラム格納手段に格納し、ファイル・プログラム指定手段により、複数のブロックに対し、ファイル名および実行順位を指定し、そのファイル・プログラム指定手段により指定されたファイル・プログラムは、その実行順位に従って前記ファイル・プログラム格納手段から読み出して実行するようにしたものがある(特許文献1)。
特開平6−175708
しかしながら、PLCにおける動作モードの決定は、電源ON時に決定されることが多いため、プログラムのダウンロードを行うに際し、PLCの再起動が必要となる場合があった。
従って、C言語で記述された制御プログラムの内容を、コントローラの稼働中に安全に入れ換えることができなかった。つまり、たとえ制御プログラムの実行内容を部分的に入れ替えたり、パラメータ等の設定を変更したい場合でも、一旦電源をOFFにし、PLCの再起動をしなければならず、その作業が煩雑である。
そこで、本出願人は、C言語等のコンパイル方式の言語で記述されたプログラムに対応するプログラマブルコントローラ用機器において、メモリに記録されたプログラム自体を修正・再コンパイルすることなくプログラムによる制御内容,参照メモリエリアの変更などを行うことができるようにしたPLC用機器を考えた。
係るPLC用機器としては、例えば、C言語などのコンパイル方式の言語で記述されたプログラムを実行可能なものであり、ワークメモリ中に、係るプログラムを構成する複数のアプリケーションプログラムを格納するプログラムエリアと、そのプログラムエリアに格納された複数のアプリケーションプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックを格納するデータエリアを備える。さらに、前記タスク管理ブロックは、各タスクで実行するアプリケーションプログラムを指定するアドレス情報を含むとともに、そのアドレス情報を外部から書き換え可能にすることにより実現できる。
ところで、係る構成からなるPLC用機器を容易に構成するためには、複数のアプリケーションプログラムをプログラムエリア中の所定アドレスに格納したり、タスク管理ブロックに格納するアドレス情報を外部から書き換える作業を行う必要があり、ユーザがかかる作業を行うためには、当該作業を容易に実現することのできるツールの開発が必要不可欠となる。
この発明は、プログラマブルコントローラ上で実行されるC言語等のコンパイル方式のプログラムの動作シーケンス,動作状態,入出パラメータに関する情報を設定ファイル(コンフィグレーションファイル)により設定・変更することを容易に行えるツールを提供することを目的とする。
この発明によるツールは、C言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムが使用する入出力パラメータ(変数)が格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスを備えたタスク管理ブロックを格納するデータエリアとを備えたプログラマブルコントローラ用のツールであって、前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルを記憶保持し、前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムが使用・参照するメモリエリアを設定・変更するデータ転送手段を備え、前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されるようにした。
ここで、プログラマブルコントローラ用のツールは、プログラマブルコントローラに関するツールの意味であり、プログラマブルコントローラそのものはもちろんこのと、プログラマブルコントローラを構成するユニット用のツールでも良い。
係る構成にすると、プログラムを実行する際に使用する入出力パラメータ(変数)の指定を、コンフィグレーションファイルで記述することにより、マップファイル作成手段,初期値ファイル作成手段並びにデータ転送手段を実行することにより、プログラマブルコントローラのタスク管理ブロックに、格納先アドレスを登録すること並びに変数データマッピングブロックの所定エリア(格納先アドレスに基づいて決定)に実アドレスを登録したり、プログラムが参照する実際のデータ(初期値)を実アドレスで指定される記憶エリアに登録することが簡単に行える。さらに、プログラムの実行により参照するデータエリアを変更したり、参照するデータを変更する場合には、コンフィグレーションファイルの該当箇所を変更し、マップファイル作成手段により新たなマップファイルを作成し、データ転送手段でプログラマブルコントローラのタスク管理ブロックに登録する格納先アドレス及びまたは変数データマッピングブロックに登録する実アドレスを変更することにより、再コンパイルことなく変更することができ、初期値ファイル作成手段により新たな初期値ファイルを作成し、データ転送手段でプログラマブルコントローラの実アドレスで指定される記憶エリアに登録するデータ(初期値)を変更することができる。
さらに別の解決手段によれば、C言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムエリアに格納された複数のプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックと、前記プログラムが使用する入出力パラメータ(変数)が格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、を格納するデータエリアを備え、前記タスク管理ブロックには、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスも格納されるようにしたプログラマブルコントローラ用のツールであって、前記プログラムの実行順(タスクID)並びに前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルと、前記プログラムを格納する前記プログラムエリアのアドレス情報を含むシンボルファイルと、前記プログラムのオブジェクトファイルを記憶保持し、前記コンフィグレーションファイルに基づく情報と、前記シンボルファイルに格納されたアドレス情報に基づいて、前記タスク管理ブロックに登録する使用するプログラムのアドレス情報並びに前記プログラムの実行順を含む動作ファイルを作成する動作ファイル作成手段と、前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、前記動作ファイルと、前記オブジェクトファイルと、前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムの動作を設定・変更するデータ転送手段を備え、前記動作ファイル作成手段が作成する動作ファイルを構成する前記アドレス情報並びに前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されるようにすることである。このようにすると、上記した2つの発明を総合的に実行できる。
上記した各発明を前提とし、さらに、前記プログラムに基づく情報からそのプログラムで使用される入出力パラメータを抽出する入出力パラメータ抽出手段を備え、その入出力パラメータ抽出手段にて抽出された入出力パラメータを用いて前記コンフィグレーションファイルの一部を構成するようにするとよい。このようにすると、入出力パラメータの抽出漏れが無くなる。
また、前記コンフィグレーションファイルを構成する各データの入力を受け、当該コンフィグレーションファイルを作成するデータ設定手段を備えるとよい。さらにまた、前記コンフィグレーションファイルのアドレスは、プログラマブルコントローラのメモリアドレスで記述され、前記メモリアドレスを絶対アドレス変換手段にて前記絶対アドレスに変換した中間ファイルを作成し、前記各作成手段は、前記コンフィグレーションファイルに基づいて生成された前記中間ファイルに基づいて所定のファイルを作成するように構成するとよい。このようにすると、ユーザは、人間にとって理解しやすいプログラマブルコントローラのメモリアドレス(DM等)を用いてコンフィグレーションファイルを作成することができるので、作業性が向上する。
本発明では、C言語等のコンパイル方式のプログラムで記述されたプログラムソースを修正しなくても、係るプログラムの動作シーケンス(実降順等)や、入出力パラメータ(変数)の指定を、コンフィグレーションファイルで変更することにより、タスク管理テーブル及びまたは変数データマッピングブロックを変更することができ、それに伴い、実行するプログラムの動作条件やシステムそのものを組替えることができる。
まず、本発明に係るツールの実施の形態を説明するに先立ち、そのツールにより設定するPLCの構成の一例を説明する。図1に示すように、PLC1は、例えば、CPUユニット10や、拡張CPUユニット20等を備えて構成される。もちろん、図示省略するが、通信ユニット,I/Oユニット,マスタユニット,電源ユニットなど、その他のユニットも存在する。
CPUユニット10は、図示省略するシステムROMに格納されたシステムプログラムにしたがって、CPU11が所定の処理をサイクリックに実行するものである。ここで所定の処理とは、共通処理,演算処理,サイクルタイム算出処理,I/Oリフレッシュ処理,周辺サービス処理がある。演算処理は、プログラムメモリ12に格納されたユーザプログラムを順次実行するもので、その演算実行時に、適宜IOメモリ13にアクセスし、IOデータを読み書きしたり、パラメータを取得する。そして、I/Oリフレッシュ処理では、IOメモリ13に対して、IOデータの更新処理を行う。CPU11は、バスコントローラ14を介してIOメモリ13にアクセスしたり、拡張CPUユニット20にアクセスしたりできるようになっている。なお、このCPU11で実行されるユーザプログラムは、従来と同様にラダー言語で作成されている。
一方、拡張CPUユニット20は、高級言語(例えばC言語)で作成されたプログラムを実行可能なユニットであって、係るC言語のプログラムを保持するフラッシュメモリ21と、プログラム稼働用のワークメモリ22を備えている。この拡張CPUユニット20の形態は、CPUユニット10とは別体のユニットで、CPUユニット10とPLCバス(内部バス)を介して、他のユニット(通信ユニット,I/Oユニットなど)と同様にユニット接続されている。なお、拡張CPUユニット20の別の形態として、CPUユニット10内に挿入して内蔵できるような増設基板タイプであってもよい。また別の形態として、CPUユニット10に対する増設ユニットタイプでもよい。増設基板タイプや増設ユニットタイプの場合の接続バスは、他のユニットがつながるPLCバスとは別のバスで、CPUユニット10自体の内部バスでもよい(この場合もバスも回線は別でもPLCバスには経由接続できるようになっている)。要するに、CPU11とバスを介してつながれ、拡張CPUとしてCPU11とは別途に独自に動作するもので、CPUユニット10のIOメモリ13に対してアクセスする機能を持っていれば形態はなんでもよい。
フラッシュメモリ21は、不揮発性のフラッシュメモリから構成され、ワークメモリ22は高速に実行させる必要から、揮発性のRAMから構成される。そして、プログラムを実行するための初めの準備として、電源投入時または手動によるリセット操作時など起動するときに、フラッシュメモリ21に格納されたプログラムを、ワークメモリ22にコピーをする。そしてそのワークメモリ22に記憶保持されたプログラムを読み出し、そのプログラムに基づいてCPU23が所定のアルゴリズムを実行するようになる。
また、拡張CPUユニット20は、専用バスを介してメインのCPUユニット10と連携されている。具体的には、バスコントローラ14とアドレスデコーダ25の間でデータの送受を行うことにより、CPUユニット10がアドレスデコーダ25経由で各種のメモリにアクセスしたり、CPU23に所定の命令を与えたりする。また、拡張CPUユニット20からのイベント等も、アドレスデコーダ25からバスコントローラ14経由でCPUユニット10(CPU11)に伝えられる。イベントというのは、例えばメインCPUユニット10の処理中の周辺処理において、拡張CPUユニット20に対して行われるメッセージ通信である。イベントメッセージ通信によって、拡張CPUユニット20は、メインCPUユニット10との間で読み出し要求コマンドを受けてそのレスポンスを渡したり、書き込みコマンド(書き込みデータ)を受け取ってワークメモリ22に格納したりする。
ところで、ワークメモリ22に格納されるプログラムのコンテキスト(C言語のプログラムをコンパイルした後のコード配置)は、図2に示すようになっている。すなわち、プログラムコードエリアPと、定数エリアCと、データエリアDとBBSエリアBと、スタックエリアStackを備えている。プログラムコードエリアPには、プログラムのロジックが格納される。また、定数エリアCには、const宣言されたデータが格納される。このデータはプログラムの実行に伴って変化しない定数である。データエリアDには、const宣言されていないデータ、つまり変数が格納される。この変数データは、プログラムの実行時にとりこむINデータや、プログラム実行途中に生じるデータ、プログラムの実行結果によるOUTデータを含んでいる。もちろんデータエリアDに格納するデータには、メインCPUユニット10が入力機器から取り込んだINデータや、メインCPUユニット10にてプログラム実行された結果のOUTデータ、つまりはメインCPUユニット10のIOメモリ13のデータを含んでいても良い。なお、データエリアDの初期値はブートローダにより任意のデータ値に設定される。BBSエリアBは、初期化されていない変数が格納される領域であり、起動時にはゼロクリアされる。このBBSエリアBの変数データは、拡張CPUユニット20におけるプログラムの実行時にとりこむINデータや、プログラム実行途中に生じるデータ、プログラムの実行結果によるOUTデータを含んでいてもよい。もちろんメインCPUユニット10のIOメモリ13のデータが含まれていても良い。
なお、変数データには、アプリケーションプログラムで利用されるいわゆるパラメータも含まれている。パラメータの例を挙げると、プログラム実行のループ数や、温度に関する制御における気温や湿度など、PID制御をする際のP,I,Dそれぞれのパラメータがある。
さらに、スタックエリアStackには、スタックが格納されて、プログラム同士のリンクするときに使われる。具体的にはサブルーチン処理をするときのプログラム呼び出し先情報や、サブルーチン処理後の戻り情報などが格納される。そして、プログラムコードおよび変数は、プログラムのリンク時に図2に示す各エリアに配置される。
さらに具体的には、図3に示すように、プログラムコードエリアPに格納されるプログラムは、データエリアDに格納されたタスク管理ブロックTCBを参照し、登録されているタスクを呼び出すタスクマネージャ部TMと、特定の機能を実施するためのユーザアプリ部UAとを備えている。ユーザアプリ部UAには、複数のユーザアプリケーションプログラム(図の例では、ユーザアプリAとB)が格納される。ユーザアプリ部UAは、開始アドレスから所定領域分のアドレスまでにわたって、連続的にプログラムコードエリアPに格納されている。
タスク管理ブロックTCBは、データエリアに格納され、実行するタスクを特定するとともに、その実行順も決定するものである。タスクマネージャ部TMは、タスク管理ブロックTCBに記録された順番に従って、順次タスクを実行する。
ここで、タスク管理ブロックTCBは、図4に示すようなデータ構造を採っている。すなわち、先頭から順に、そのタスクを特定するためのユニークな番号となるタスクIDを格納する「Task_id」と、次に実行するタスクIDを格納してリンクを張るための「forward」と、前に実行されたタスクIDを格納する「backward」と、このタスクが活性状態なのか非活性状態なのかを特定する動作ステータスフラグを格納する「state」と、タスクレベル(実行頻度)を格納する「level」と、プログラムコードの先頭アドレス(モジュールシンボル)を格納する「pProgram」と、変数エリアアドレス定義の先頭アドレス(格納先アドレス)を格納する「pData」などを関連付けたテーブル構造となっている。
ここで、「pProgram」に格納される先頭アドレスは、プログラムコードエリアPのユーザアプリ部UAに記録された所望のユーザアプリケーションプログラムの先頭アドレスである。つまり、タスクマネージャ部TMは、このタスク管理ブロックTCBにアクセスし、決められたタスクの順番に従って、順次ユーザアプリケーションを呼び出して実行することになる。
図4のタスク管理ブロックTCBのテーブルの例では、Task_id=0(タスク0)をまず実行する。そして、Task_id=0のテーブル行にあるfoward数値は「1」なので、その次に実行されるタスクは、Task_id=1(タスク1)である。Task_id=1のテーブル行にはfoward数値が「2」と設定されているので、タスク1の実行の次にはタスク2が実行される。
また、「pData」に格納される変数アドレスは、データエリアDに格納された変数データマッピングブロックVMBのアクセス先を登録する。この変数データマッピングブロックVMBは、図5に示すように、変数名を格納する「dname」と、その変数の実体を示すアドレス「pAddr」を関連付けたテーブルからなる。このアドレスは、変数名に対応する具体的なデータが格納されたBSSエリアB中の所望のアドレスが格納される。
つまり、タスク管理ブロックTCB中の各タスクの「pData」には、この変数データマッピングブロックVMBの参照先アドレスが登録され、タスク実行時に実際に使用・参照するデータは、変数データマッピングブロックVMBの「pAddr」に格納されたアドレスで規定されるBBSエリア内のデータとなる。
そして、本実施の形態では、タスク管理ブロックTCB並びに変数データマッピングブロックVMBを、外部からアクセス可能なデータエリアDの固定アドレスに配置することによって、外部のプログラミングツールからのテーブル操作が容易に行える。その結果、ツール等を用いてCPUユニット経由でデータエリアのタスク管理ブロックTCBと変数データマッピングブロックVMBを編集するだけで、動作するプログラムや参照するメモリを変更することができる。より具体的には、タスク管理ブロックTCB中の「pProgram」,「pData」や、変数データマッピングブロックVMBの「pAddr」のアドレスを変更することになる。
例えば、図4のタスク管理ブロックTCBのテーブル中のあるタスク(Task_id=2)の「pProgram」にユーザアプリAの先頭アドレスの数値が設定されているとした場合は、図3の実線で示されるように、タスク管理ブロックTCBで記述された同じタスク(Task_id=2)はユーザアプリAに対応している。そこで、図4のタスク管理ブロックTCBのテーブル中の同じタスク(Task_id=2)の「pProgram」の先頭アドレスをユーザアプリBの先頭アドレスに書き換えたとする。そうすると、以降でその同じタスクを実行する際には、図3の点線に示されるようにユーザアプリBを実行するようになる。
また、例えば、図4のタスク管理ブロックTCBのテーブル中のあるタスク(Task_id=2)の「pData」に、変数a,bを参照する変数データマッピングブロックVMBのアドレスの数値を格納しているとした場合は、図3中の実線で示すように、タスク管理ブロックTCBで記述された同じタスク(Task_id=2)は変数a,bを参照するようになっている。そこで、図4のタスク管理ブロックTCBのテーブル中の同じタスク(Task_id=2)の「pData」を変数c,dを参照するようにアドレスを書き換えることにより、以降のそのタスクを実行する際に使用される変数は、図3の点線に示されるようにc,dと変わる。つまり、参照する変数データのアドレスがBBSエリアのアドレスa,bからc、dに切り変わる。
さらに、参照する変数の変更は、上記したようにタスク管理ブロックTCBの「pData」を変更する方法に限ることはなく、変数データマッピングブロックVMBの「pAdder」を書き換える(現在の変数a,bを変数c,dのアドレスに変更)ことによっても対応することができる。
なお、変数データには、前述したようにアプリケーションプログラムで利用されるいわゆるパラメータが含まれている。例えばプログラム実行のループ数をパラメータだとすると、ループ数を変えることでループ回数が変わるので、プログラム自体を変えなくても制御内容を変えることができる。他に例えば、温度に関する制御であれば、気温や湿度がパラメータとなり、具体的な例では晴れの日と雨の日とでパラメータを変えたり、季節やその日の温度・湿度でパラメータを変えることが実際に行われている。このパラメータ変更だけをすることで、プログラム変更せずに、最適な温度制御ができることもある。他にもPID制御をする際のパラメータP,I,Dそれぞれを変えることで、プログラムのロジックは変更せずに、制御内容もしくは動作内容が変わる。
また、タスク管理ブロックTCBと変数データマッピングブロックVMBとは、それぞれ独立して、別々にその参照先アドレスを書き換えることができる。
従って、本実施の形態では、プログラムを稼動中に、変数データマッピングブロックVMBの参照先アドレスはそのまま変更せずに、タスク管理ブロックTCBの参照先アドレスを書き換えることで、PLCを停止・再起動することなくアプリケーションプログラムを入れ替えることにより、システム全体として制御内容を大きく変更することができる。
また、プログラムを稼動中に、タスク管理ブロックTCBは変更せずに、変数データマッピングブロックVMBの参照先アドレスを書き換えることで、PLCを停止・再起動することなく、プログラム実行に使用するパラメータ変数を変更できる。よって、アプリケーションプログラムのロジックはそのまま変更しないけれども、システム全体としての異なる制御動作をすることができる。これはパラメータが変われば自ずと制御動作も変わるからである。
もちろん、プログラムを稼動中に、タスク管理ブロックTCB及び変数データマッピングブロックVMBの両方の参照先アドレスを書き換えることで、PLCを停止・再起動することなく、プログラム及びパラメータ変数の両方を入れ替えることができ、システム全体としての動作を大きく変更することができる。
また、上記した実施の形態では、データエリアDに変数データマッピングブロックVMBを設け、変数へのアクセスはこの変数データマッピングブロックVMBを介して行うようにしたが、本発明はこれに限ることはなく、タスク管理ブロックTCBが直接BBSエリアの変数のアドレスを管理し、そのアドレスを変更することにより、再コンパイルすることなしに参照する変数を切り替えるようにすることもできる。
ところで、上記したユーザアプリやプログラム実行時に参照するパラメータを切り替える機能を備えたPLC1に対し、当該ユーザアプリやパラメータを格納したり、切り替えるための情報を設定したりする処理は、ツール30を用いて行なう。このツール30の内部構造の一例としては、図6に示すようになっている。すなわち、図6は、本発明に係るツールの好適な一実施の形態を示している。
この実施の形態では、ツール30は、データ設定部31と、データ変換部32と、Cプログラム変換部33と、データ転送部34を備えている。データ設定部31は、ユーザーインターフェースとして専用の設定ツールでもあり、コンフィグレーションファイルF1への読み書きを行うものである。ここでコンフィグレーションファイルは、図7に示すようなデータフォーマットからなる。すなわち、「部品種別」は、モジュール名または構造体の定義名である。同一のタスクIDであれば、部品種別も同じになる。「部品名」は、各部品ごとに付され、PulseWaveといったユニークな部品名が設定され、格納先アドレスと1対1で対応する。部品種別が同一でも格納先アドレスはユニークとなる(部品名は異なる)。「変数ID」は、構造体内の変数名に1対1で対応する順序を示す番号であり、変数ID=0の変数に割り当てられている格納先アドレスが先頭アドレスとなる。「変数名」は、構造体のメンバ名である。「型」はint、floatなどで定義されるC変数型である。「要素数(配列)」は、複数要素数を指定した場合に配列の定義となる。「変数エリア名」は、PLCの変数エリア名(エリアオフセットとセット)。具体的には、PLC1側のメモリアドレスとなるDM,E0〜ECが設定可能となる。「エリアオフアセット」(実アドレス)は、実際に必要な値(例えば、「制御値」)を格納しているアドレスを格納する。エリアオフアセット(2chごとであるため「0,2,4,……」)は、変数エリア名とセットで使用され、実際のデータが格納される実アドレス(DM 0など)が構成される。「初期値」は、エリアオフセットに初期設定しておく値である。「格納先エリア名」は、エリアオフセットが格納される変数エリア名であり、EM0などの変数データマッピングブロックVMBの記憶エリアを特定するための情報の1つである。「格納先アドレス」はエリアオフセットが格納されているアドレスである。エリアオフアセット(1つのアドレスが2chごとに割り付けられているため「0,2,4,……」)は、格納先エリア名とセットで使用され、その2つの情報に基づき変数データマッピングブロックVMBの記憶エリアが特定される。「コメント」は変数名の説明などの各種コメントである。さらに、「動作ステータス」はモジュールの動作ステータス、つまり、動作させるか、停止させるか等を区別するための情報を格納する。
ここで、アドレス割付の仕組みを説明する。すなわち、図3に示したデータエリアDにタスク管理ブロックTCBと変数データマッピングブロックVMBを設け、タスク管理ブロックTCBから変数へのアクセスはこの変数データマッピングブロックVMBを介して行うようにしている。この仕組みを図8に示す具体例に基づいて説明する。
例えば、変数データマッピングブロックVMBのアドレスE0_1000[ch]にD0000を表すアドレスが格納されており、データエリアDにおけるアドレスD0000には実際の値(例えば、出力値=1234)が格納されている。これにより、タスク管理ブロックTCBの所定領域にE0_1000をセットしておくと、そのタスクIDを実行し、変数のアクセス先がE0−1000であることを知ると、変数データマッピングブロックのE0_1000にアクセスし、D0000を取得する。これにより、データエリアDのアドレスD0000をアクセスし、具体的なデータ1234を取得することができる。
そして、変数データマッピングブロックVMBのE0−1000に格納するデータを「D0000」から「D0100」にアドレスの割付を変更した場合、D0000は変更されるが、そのアドレスの格納先E0_1000は変わらない。プログラム内では変数データマッピングブロックVMBのアドレスE0_1000に格納されている値(実アドレス)を変数にリンクさせているのでE0_1000に格納されている値を変更することで割付の変更が行える。
また、格納先アドレスは、図9に示すように、変数グループの先頭アドレスをユーザが決定し、1番目以降についてはそこから2chごとに連続して自動的に割り振る。これは、データ設定部31が行う。そして、割付アドレスに格納されている値が、アプリケーションで使用する変数にマッピングされる。
そして、データ設定部31は、コンフィグレーションファイルF1にプログラム内モジュールごとの入出力パラメータのアドレス割付,初期値割付および、モジュールシンボルの割付,動作設定を行う。設定された内容はコンフィグレーションファイル(CSV形式,市販のテキストエディタでの編集可能)として保存される。
Cプログラム変換部33は、コンパイラ(含むリンカー)の機能を有するもので、C言語で作成されたプログラムをコンパイルして生成されたオブジェクトファイルF4を作成するとともに、所定の必要な部品を取り込み、コンピューター(PLC1のCPU)に正しく命令を与えるための正しい位置にセットするリンクを行い、シンボルファイル(部品種別+Cプログラム(モジュール)の格納アドレス)F3等を作成する。そして、係る機能は、ツール30を構成するパソコンに市販のコンパイラをインストールすることにより実現できる。また、このCプログラム変換部33ではヘッダファイルF2も生成される。
データ変換部32は、コンフィグレーションファイルF1とヘッダファイルF2に基づいて、PLC1のタスク管理ブロックTCBその他に格納するデータを作成するものである。まず、入出力パラメータ抽出部32aが、対象モジュール(各ユーザアプリに対応するCプログラム)で使用しているヘッダファイルから自動的に入出力パラメータを抽出し、コンフィグレーションファイルF1を作成する。
すなわち、ヘッダファイルF2の一例を示すと、図10のようになっている。そこで、入出力パラメータ抽出部32aはヘッダファイルF2内の“IFDATA_○○○”で定義された構造体名を検索してコンフィグレーションファイルF1へ変換を行う。図示の例では最初に#defineの記述を読出し、その後、構造体名を検索する。そして、変数の基本データ型であるintやfloat等の記述を抽出する。これにより、図10の場合、入出力パラメータ(変数)として、PVやSVが抽出される。
このように自動的に入出力パラメータを抽出し、設定することにより、入出力パラメータの設定ミスを生じる可能性を可及的に抑制できる。なお、ヘッダファイルが存在しない場合でも、上記したようにデータ設定部31から手動でパラメータの新規作成・編集はできる。
絶対アドレス変換部32bは、コンフィグレーションファイルF1を取得し、そのファイルから変数エリア名とオフセットで表現されたデータをモジュール(C言語のプログラム)で扱う絶対アドレスに変換を行い、中間ファイルを作成する。つまり、Cプログラムでは、「DM100」などのPLC(ラダープログラム)取り扱うアドレスは理解できないので、Cプログラムが理解できる絶対アドレスに変換する。例えば、「DM100」を「00220C8」に変換するようになり、係る変換は、対応テーブルを用意し、係る対応テーブルを参照して実行することができる。従って、絶対アドレス変換部32bにより作成された中間ファイルF5は、コンフィグレーションファイルF1中のアドレスに関する項目が、Cプログラムが取り扱い可能な絶対アドレスに書き換えられたファイルとなる。
動作ファイル作成部32cは、シンボルファイルF3と中間ファイルF5から、対象モジュールの動作ファイルF6を作成するものである。動作ファイルF6のデータ構造は、図11に示すようになり、1列目:タスクID(動作順序定義),2列目:モジュールシンボル,3列目:格納先アドレス(絶対アドレス記述),4列目:動作ステータス(動作状態定義)となり、タスクIDの番号順に各行が構成される。動作ステータスは、STOPは0,RUNが1,STEPが2となる。
タスクIDは、コンフィグレーションファイルF1つまり中間ファイルF5における各タスクの並び順にしたがって付与されるもので、先頭から順番に0,1,2,……と設定される。モジュールシンボルは、そのモジュール(ユーザアプリ)をプログラムコードエリアPに格納する際の先頭アドレスであり、シンボルファイルから取得する。格納先アドレスは、変数データマッピングブロックVMBのアドレス(図8に示すE0_であり、そのタスクIDのプログラム実行中に参照するデータのアドレスとしてタスク管理ブロックTCBに格納されるアドレスであり、中間ファイルF5から取得する。さらに、動作ステータスは、中間ファイルF5の該当する項目欄から取得する。このように、2つのファイルF5,F3から対応する項目のデータを抽出し、所望の順に並び付けることにより、動作ファイルF6が作成できる。
マップファイル作成部32dは、中間ファイルF5から、入出力パラメータの実アドレスと実アドレスを格納する格納先アドレスを抽出してマップファイルF7を作成するものである。この部分を定義することによって、プログラム(ユーザアプリ)内の入出力パラメータとPLCのI/Oをリンクすることができる。
具体的には、このマップファイルF7のファイルフォーマットは、図12に示すように、各入出力パラメータ(変数)ごとに作成され、1列目:格納先アドレス(絶対アドレス記述),2列目:実アドレス(絶対アドレス記述)と2つのデータが関連づけられた構造となっている。図示の例では、1行目は、変数データマッピングブロックVMBのアドレス00230000(EM0 0ch)に002200C8(DM 100ch)を格納することを意味し、2行目は、00230004(EM0 2ch)に002200CC(DM 102ch)を格納することを意味する。
初期値ファイル作成部32eは、プログラムのスタート時、各モジュール(ユーザアプリ)の入出力パラメータの初期値として必要となる値が設定される初期値ファイルF8を作成する物で、中間ファイルF5から、初期値と初期値を格納する絶対アドレスを抽出して作成される。この初期値ファイルF8に基づき、BBSエリアの所定アドレス(実アドレス)に、初期値が格納される。
そして、初期値ファイルF8のファイルフォーマットは、例えば図13に示すように、1列目:実アドレス(絶対アドレス記述),2列目:初期値の2つのデータが関連づけられた構造となっている。図示の例では、1行目は、BBSエリアのアドレス002200C8(DM 100ch)に00003F00(0.5)を格納することを意味し、2行目は同002200CC(DM 102ch)に00000000(0)を格納することを意味する。
データ転送部34は、図14に示すように、データ変換部32が作成した動作ファイルF6,マップファイルF7,初期値ファイルF8と、Cプログラム変換部33が作成したオブジェクトファイル(実行プログラム)F4をPLC1に送信するものである。
すなわち、動作ファイルF6のモジュールシンボル(アドレス)に基づきオブジェクトファイルF4に格納されたモジュール(ユーザアプリA,B)をプログラムコードエリアPの所定アドレスに格納する。また、動作ファイルF6のモジュールシンボルで規定されるユーザアプリの先頭アドレスをタスク管理ブックTCBの所定位置(pProgram)に格納する。
また、マップファイルF7等に基づき、タスク管理ブロックTCBのpDataに格納先アドレスを格納するとともに、変数データマッピングブロックVMBの所定領域(上記pDataに格納された格納先アドレス)に、実際のデータが格納される実アドレスを格納する。
さらに、初期値ファイルF8の実アドレスに対応するBBSエリアの記憶エリアに初期値を格納する。これにより、PLC1のシステム領域にタスク管理ブロックTCBの動作情報がセットされてモジュール(ユーザアプリ)の動作を設定することができ、さらに、データエリアDに格納されたタスク管理ブロックTCBのpProgram,pData並びに変数データマッピングブロックに格納される値を買えることにより、実行するユーザアプリや、参照する変数データを切り替えることが可能となる。さらに、タスクIDを書き換えることにより(タスクIDの順番で実行する場合)、ユーザアプリの実行順番を変更することができる。そして、係る変更は、ユーザがデータ設定部31にてコンフィグレーションファイルF1を書き換える(アドレスの変更)ことにより、以後、データ変換部32により所定のファイル郡を生成するとともに、それをデータ転送部35にてPLC1に転送することにより、プログラムの再コンパイルをすることなく簡単に行える。
本発明が適用対象となるPLCの一例を示すブロック図である。 ワークメモリ22に格納(コピー・展開)されるプログラムのコンテキストの一例を示す図である。 PLCの機能を説明する図である。 タスク管理ブロックの一例を示す図である。 変数データマッピングブロックVMBを示す図である。 本発明に係るツールの好適な一実施の形態を示すブロック図である。 コンフィグレーションファイルのファイルフォーマットの一例を示す図である。 アドレス割付の仕組みを説明するための図である。 格納先アドレスと実アドレスの一例を示す図である。 ヘッダファイルの一例を示す図である。 動作ファイルのファイルフォーマットの一例を示す図である。 マップファイルのファイルフォーマットの一例を示す図である。 初期値ファイルのファイルフォーマットの一例を示す図である。 データ転送部の機能を説明する図である。
符号の説明
1 PLC
10 CPUユニット
11 CPU
12 プログラムメモリ
13 IOメモリ
14 バスコントローラ
20 拡張CPUユニット
21 フラッシュメモリ
22 ワークメモリ
23 CPU
25 アドレスデコーダ
30 ツール
31 データ設定部
32 データ変換部
32a 入出力パラメータ抽出部
32b 絶対アドレス変換部
32c 動作ファイル作成部
32d マップファイル作成部
32e 初期値ファイル作成部
33 Cプログラム変換部
34 データ転送部

Claims (5)

  1. C言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、
    ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムが使用する入出力パラメータが格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスを備えたタスク管理ブロックを格納するデータエリアとを備えたプログラマブルコントローラ用のツールであって、
    前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルを記憶保持し、
    前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、
    前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、
    前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムが使用・参照するメモリエリアを設定・変更するデータ転送手段を備え、
    前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されていることを特徴とするツール。
  2. C言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、
    ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムエリアに格納された複数のプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックと、前記プログラムが使用する入出力パラメータ(変数)が格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、を格納するデータエリアを備え、
    前記タスク管理ブロックには、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスも格納されるようにしたプログラマブルコントローラ用のツールであって、
    前記プログラムの実行順並びに前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルと、前記プログラムを格納する前記プログラムエリアのアドレス情報を含むシンボルファイルと、前記プログラムのオブジェクトファイルを記憶保持し、
    前記コンフィグレーションファイルに基づく情報と、前記シンボルファイルに格納されたアドレス情報に基づいて、前記タスク管理ブロックに登録する使用するプログラムのアドレス情報並びに前記プログラムの実行順を含む動作ファイルを作成する動作ファイル作成手段と、
    前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、
    前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、
    前記動作ファイルと、前記オブジェクトファイルと、前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムの動作を設定・変更するデータ転送手段を備え、
    前記動作ファイル作成手段が作成する動作ファイルを構成する前記アドレス情報並びに前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されていることを特徴とするツール。
  3. 前記プログラムに基づく情報からそのプログラムで使用される入出力パラメータを抽出する入出力パラメータ抽出手段を備え、
    その入出力パラメータ抽出手段にて抽出された入出力パラメータを用いて前記コンフィグレーションファイルの一部を構成するようにしたことを特徴とする請求項1または2に記載のツール。
  4. 前記コンフィグレーションファイルを構成する各データの入力を受け、当該コンフィグレーションファイルを作成するデータ設定手段を備えたことを特徴とする請求項1から3のいずれか1項に記載のツール。
  5. 前記コンフィグレーションファイルのアドレスは、プログラマブルコントローラのメモリアドレスで記述され、
    前記メモリアドレスを絶対アドレス変換手段にて前記絶対アドレスに変換した中間ファイルを作成し、
    前記各作成手段は、前記コンフィグレーションファイルに基づいて生成された前記中間ファイルに基づいて所定のファイルを作成するようにしてなることを特徴とする請求項1から4のいずれか1項に記載のツール。
JP2003376262A 2003-11-05 2003-11-05 ツール Expired - Fee Related JP4366575B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003376262A JP4366575B2 (ja) 2003-11-05 2003-11-05 ツール

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003376262A JP4366575B2 (ja) 2003-11-05 2003-11-05 ツール

Publications (2)

Publication Number Publication Date
JP2005141435A JP2005141435A (ja) 2005-06-02
JP4366575B2 true JP4366575B2 (ja) 2009-11-18

Family

ID=34687386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003376262A Expired - Fee Related JP4366575B2 (ja) 2003-11-05 2003-11-05 ツール

Country Status (1)

Country Link
JP (1) JP4366575B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4757589B2 (ja) * 2005-09-27 2011-08-24 住友重機械工業株式会社 組込み制御方法、管理装置、組込み制御装置、及び組込み制御システム
CN101395547A (zh) * 2006-03-07 2009-03-25 株式会社安川电机 编程装置以及自动的数据结构识别方法
JP5482016B2 (ja) * 2009-08-20 2014-04-23 横河電機株式会社 プログラマブルコントローラ
JP5589670B2 (ja) * 2010-08-19 2014-09-17 富士電機株式会社 デバッグ方法
US8832670B2 (en) 2011-07-01 2014-09-09 Mitsubishi Electric Corporation Programmable controller and programming tool for communication with legacy equipment
KR102063966B1 (ko) 2015-10-21 2020-01-09 엘에스산전 주식회사 Plc 명령어 컴파일 최적화 방법
CN113360142B (zh) * 2021-06-24 2023-07-07 广东工贸职业技术学院 一种数控内嵌plc中间文件的设计与编译方法
CN113625661B (zh) * 2021-07-29 2023-07-04 广东工贸职业技术学院 一种数控内嵌plc中间文件转化指令表的设计方法
CN113625652B (zh) * 2021-07-29 2023-04-25 广东工贸职业技术学院 一种数控内嵌plc中间文件处理及译码执行方法

Also Published As

Publication number Publication date
JP2005141435A (ja) 2005-06-02

Similar Documents

Publication Publication Date Title
CN103814333B (zh) 用于对可编程控制装置编程和配置的方法和设备
US10977014B2 (en) Web-based programming environment for embedded devices
US7110837B2 (en) Control system and method for on-line editing of user program
US6826432B2 (en) Process for programming an automation application
JP2009146229A (ja) プログラマブルコントローラシステム
JP4366575B2 (ja) ツール
CN106062649A (zh) 控制装置及控制系统
CN111052010B (zh) 控制系统、开发辅助装置和存储介质
JP2016539444A (ja) 自動化システムを構成するための処理装置および方法
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
JP2019211823A (ja) サポート装置およびサポートプログラム
JP4821717B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP2006059308A (ja) 汎用化されリアルタイム可能な情報処理装置
JP4247664B2 (ja) プログラマブルコントローラ用機器
CN104850015A (zh) 一种软件封装方法及一种汽车电子控制器
JP6765172B2 (ja) データ転送のための産業用制御システムおよび方法
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
CN112272820B (zh) 支持装置以及支持程序的记录介质
US20130006397A1 (en) Programmable controller and programming tool for communication with legacy equipment
JP2006318197A (ja) コントローラ支援装置、プログラム
KR102231963B1 (ko) 피엘씨 변수의 메모리 할당 방법
Ebenhofer et al. Generic and reconfigurable IEC 61499 function blocks for advanced platform independent engineering
US10768597B2 (en) Method and controller for flexible process control

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090312

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4366575

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120904

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130904

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees