JP4877257B2 - プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム - Google Patents

プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム Download PDF

Info

Publication number
JP4877257B2
JP4877257B2 JP2008083871A JP2008083871A JP4877257B2 JP 4877257 B2 JP4877257 B2 JP 4877257B2 JP 2008083871 A JP2008083871 A JP 2008083871A JP 2008083871 A JP2008083871 A JP 2008083871A JP 4877257 B2 JP4877257 B2 JP 4877257B2
Authority
JP
Japan
Prior art keywords
function block
user
object code
programmable controller
embedded software
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
JP2008083871A
Other languages
English (en)
Other versions
JP2009237947A (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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2008083871A priority Critical patent/JP4877257B2/ja
Publication of JP2009237947A publication Critical patent/JP2009237947A/ja
Application granted granted Critical
Publication of JP4877257B2 publication Critical patent/JP4877257B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明は、プログラマブルコントローラ(以下、PLCと略す場合もある)のファンクションブロック(以下、FBと略す場合もある)に関し、特にユーザが作成したファンクションブロックのプログラマブルコントローラへのダウンロード方法に関する。
従来、プログラマブルコントローラはシーケンス命令実行を高速に行わせるための専用ハードウェア(大規模専用LSI:Large Scale Integrationなどに代表される)を備えるものが主流であった。これら専用ハードウェアにおいては、各コントローラのメーカーが提供する支援ツールによって、マシンコードを生成する必要があった。
しかし、「専用ハードウェアは高価である」、「専用のマシン語体系をもちシステムプログラム開発が比較的困難である」というデメリットも存在していた。
近年、パーソナルコンピュータ、携帯端末などの普及により、市販の汎用CPU(Central Processing Unit)の技術革新が進み、高速実行が可能なCPUを非常に安価に入手することが可能になってきた。そのため、汎用CPUを用いて専用LSIをエミュレートして実行しても、充分に所望の実行性能を得る事ができるようになった。
また、汎用であるためファームウェアの開発ツールも市場から調達できるようになってきたため、汎用CPUを使ったプログラマブルコントローラも作られるようになってきている。
このような汎用CPUをベースとしたプログラマブルコントローラにおいては、ユーザに提供するアプリケーション開発環境として以下の2つの選択肢が考えられるが、後者の方法が注目されている。
・従来から、プログラマブルコントローラで使用される言語(プログラマブルコントローラにおけるシーケンス命令は、ラダー図、テキスト記述言語などで代表される言語命令により構成されるが、本明細書中では特に断らない限り、プログラマブルコントローラにおける記述言語規格IEC61131−3を指すものとする)を従来の支援ツール上でプログラミングし、プログラマブルコントローラにダウンロードした後、実行する方法。
・プログラマブルコントローラに使用されている汎用CPUに対応した組み込みソフトウェア開発環境で汎用プログラム言語(C言語、マイコン対応アセンブラなど)を用いてプログラミングし、プログラマブルコントローラにダウンロードした後、実行する方法。
実際、近年では汎用CPUをベースとしながら従来の専用LSIを使用したものと全く同じ動作をするプログラマブルコントローラや、逆に従来の支援ツールを使用せずに組み込みソフトウェア開発環境でプログラミングを行うC言語コントローラなども発売されている。
このようなC言語コントローラにおいては、ユーザのプログラミング負荷を軽減するためにリアルタイム・オペレーティング・システム(以下、リアルタイムOSと呼ぶ)が搭載されている。リアルタイムOSでは、タスクと呼ばれる処理単位を複数並列に実行可能であり、タスク間の通信機能、タスクの生成及び起動などの実効制御の機能を備えている。タスクの時間管理をリアルタイムOSが行うので、ユーザはプログラミングする際にスケジューリングの負荷から開放される利点があげられる。
一方、汎用CPUを使用した従来型のプログラマブルコントローラにおいても、システムの管理や支援ツールとのインターフェースなど、システムファームウェアの部分はリアルタイムOSをベースとする組み込みソフトウェアとして構成されるのが一般的となっている。
いずれにせよ、プログラマブルコントローラとプログラマブルコントローラ支援装置からなるプログラマブルコントローラシステムとして効率の良いプログラミング環境(特に組み込みプログラムの扱い方)を提供するのが命題になっている。
コントローラと支援ツールとにおけるプログラムの組み込みに関する技術としては、例えば特許文献1に記載されている。ここでは、支援ツールにおいてタスク型プロジェクトならばコントローラのタスクとして動作させ、関数型プロジェクトならば他のタスクより関数としてコール可能な状態で保持する方法が示されている。
また、特許文献2には、ユーザが作成したソフト資産の必要な部分のみをプログラマブルコントローラのファンクションブロック化し利用する方法が示されている。
特開2006−178818号公報 特開2001−51704号公報
プログラマブルコントローラで使用される専用プログラミング言語は、シーケンス制御を記述するシーケンス図を効率よくプログラミングが可能であり、プログラマブルコントローラの使用現場における保守の容易性等の観点からも今後も需要がある言語である。
そこで、プログラマブルコントローラには汎用CPUを使用し、支援ツールでプログラミングした組み込みソフトウェアを用いる方法が主流となってきている。しかしながら、汎用CPUを使用したプログラマブルコントローラにおいては、以下のような問題点があった。
・実行コードが専用LSIのエミュレータ動作であるため、同じ動作のC言語アプリケーションなどと比べてコード効率が悪い。
・ラダー図等はシーケンス動作を記述するための言語であるため、数値演算やデータ処理などの記述が煩雑で難しい。
これらの問題点は、処理内容に応じて、プログラミング環境を使い分ける事により解決される。即ち、通常のシークエンス処理は従来の支援ツールでプログラミングし、複雑な処理や高速化したい処理に関しては組み込みアプリケーションとして組み込みソフトウェア開発環境でプログラミングを実施する。
ところで、プログラマブルコントローラのアプリケーションは、プログラマブルコントローラを効率よく扱うために、制御ネットワークに接続されている外部接続機器(例えば、入出力モジュール)をメモリとして扱うなど、プログラマブルコントローラシステム固有のメモリアドレス体系を保持している。そのため、メモリ管理においては、汎用CPUの物理アドレスに直接依存していない。また、プログラマブルコントローラのアプリケーションの実行時には、プログラマブルコントローラのタスクとして登録されており、これらは定周期やイベントなどの指定されたタイミングで起動されるが、プログラマブルコントローラのアプリケーション作成者は、それらのアプリケーションのタスクとシステムソフトを動かしているリアルタイムOSとの動作の関連を意識することが出来ない。
このことに起因し、以下の問題点が挙げられる。
・サブルーチンのような複数箇所から呼び出される組み込みソフトウェアの記述が出来ない(例えば、データ交換領域としてプログラマブルコントローラのアプリケーションメモリの固定番地を組み込みソフトウェア中で明示的に記述しようとすると、データ交換領域アドレスをそれぞれ個別に用意しなければならず、同じ処理にもかかわらず、別のプログラムになってしまう)。
・プログラマブルコントローラのアプリケーションと組み込みソフトウェアが非同期に動作するので、プログラマブルコントローラのアプリケーションからは、組み込みソフトウェアの処理や起動、完了のタイミングを把握出来ない。
このように、組み込みソフトウェアとプログラマブルコントローラのアプリケーションにおける「データ交換方法、及び起動方法」が問題になる。
特許文献1に記載のコントローラでは、ラダー言語内からC言語プログラムを呼び出す方法のみを記述しているが、コントローラのアプリケーションとC言語プログラム間とにおける具体的なデータ交換に関して実現手段が示されていない。
また、特許文献2に記載のプログラマブルコントローラでは、オブジェクト指向プログラミング言語により記述された部品であるクラスをライブラリとして登録し、これらを元にインスタンスを生成すること、及びインスタンス生成情報の管理について記述されているが、部品をライブラリとして登録する具体的な方法が示されていない(ラダープログラムへの記述方法のみ示されている)。
以上に示すように、組み込みソフトウェアとプログラマブルコントローラのアプリケーションとにおける「データ交換方法、及び起動方法」が問題になるが、従来の技術においては組み込みソフトウェアの起動方法に関しては一定の言及はあっても、データ交換方法が具体的に示されていないと言う未解決の課題がある。
本発明は、組み込みソフトウェアとプログラマブルコントローラのアプリケーションにおける「データ交換方法、及び起動方法」を充足するプログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステムを提供することを目的とする。
上記の課題を解決する手段として、本発明は以下のように構成する。
第1に、本発明のプログラマブルコントローラは、ユーザにより作成されたユーザファンクションブロックのオブジェクトコードと、ユーザにより作成された組み込みソフトウェアのファンクションブロックのオブジェクトコードとを、これらに付与されそれぞれを一意に特定するユーザファンクションブロック番号により管理するプログラマブルコントローラにおいて、前記ユーザファンクションブロックのオブジェクトコードと、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードと、前記ユーザファンクションブロック番号とを格納する記憶手段と、専用線、記憶媒体、或いは外部ネットワークを通じプログラマブルコントローラ支援装置との間でデータの交信を行う通信手段と、前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行する実行手段とを備え、前記記憶手段は、前記通信手段を通じて前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを受信したときには、該組み込みソフトウェアのファンクションブロックのオブジェクトコードを格納し、その後、前記通信手段を通じて前記ユーザファンクションブロックのオブジェクトコードを受信したときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、格納済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを格納し、前記実行手段は、前記記憶手段を通じて格納された前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行するように構成する。
第2に、前記プログラマブルコントローラにおいて、前記記憶手段は、前記ユーザファンクションブロック番号をテーブル構造として管理するように構成する。
第3に、前記プログラマブルコントローラにおいて、前記実行手段は、アプリケーション実行機能、システム管理機能、支援ツールインターフェース機能を具備し、リアルタイムオペレーティングシステムを用いた汎用マイコンを備えるように構成する。
第4に、本発明のプログラマブルコントローラ支援装置は、ユーザファンクションブロックを用いたプログラミング環境をユーザに提供し、作成されたプログラムを管理する管理手段と、前記プログラムをコンパイルしオブジェクトコードを生成するコンパイル手段と、前記プログラムの稼動対象とするプログラマブルコントローラに前記オブジェクトコードを送信する送信手段とを備え、前記管理手段は、ユーザにより作成されたユーザファンクションブロック及び/又は組み込みソフトウェアのファンクションブロックにそれぞれを一意に特定するユーザファンクションブロック番号を付与し、前記送信手段は、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを送信するときには、対応するユーザファンクションブロック番号を送信せず、その後、前記ユーザファンクションブロックのオブジェクトコードを送信するときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、送信済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを送信するように構成する。
第5に、本発明のプログラマブルコントローラシステムは、プログラマブルコントローラとプログラマブルコントローラ支援装置とを具備し、前記プログラマブルコントローラ支援装置は、ユーザファンクションブロックを用いたプログラミング環境をユーザに提供し、作成されたプログラムを管理する管理手段と、前記プログラムをコンパイルしオブジェクトコードを生成するコンパイル手段と、前記プログラムの稼動対象とするプログラマブルコントローラに前記オブジェクトコードを送信する送信手段と、を備え、前記管理手段は、ユーザにより作成されたユーザファンクションブロック及び/又は組み込みソフトウェアのファンクションブロックにそれぞれを一意に特定するユーザファンクションブロック番号を付与し、前記送信手段は、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを送信するときには、対応するユーザファンクションブロック番号を送信せず、その後、前記ユーザファンクションブロックのオブジェクトコードを送信するときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、送信済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを送信し、前記プログラマブルコントローラは、前記ユーザファンクションブロックのオブジェクトコードと、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードと、前記ユーザファンクションブロック番号とを格納する記憶手段と、専用線、記憶媒体、或いは外部ネットワークを通じプログラマブルコントローラ支援装置との間でデータの交信を行う通信手段と、前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行する実行手段とを備え、前記記憶手段は、前記通信手段を通じて前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを受信したときには、該組み込みソフトウェアのファンクションブロックのオブジェクトコードを格納し、その後、前記通信手段を通じて前記ユーザファンクションブロックのオブジェクトコードを受信したときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、格納済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを格納し、前記実行手段は、前記記憶手段を通じて格納された前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行するように構成する。
本発明により、ユーザが作成した組み込みソフトウェアをプログラマブルコントローラのアプリケーションから呼び出し可能になるので、組み込みソフトウェアやプログラマブルコントローラのアプリケーションそれぞれに適したプログラミング環境をユーザ自身で選択可能になり、実行プログラムの処理速度の向上及びユーザコーディング効率の向上という効果を奏する。また、実行プログラムにおいては、組み込みソフトウェアの起動タイミングが明確化され、データの入力・出力の同期がとられるので、データ交換の安全性が高まるという効果もある。
さらに、組み込みソフトウェアを作成できないプログラマブルコントローラのユーザでも、作成可能な環境から予めプログラマブルコントローラにダウンロードしておくことにより、ユーザファンクションブロックを呼び出すためのコードを記述するだけで組み込みソフトウェアの該当プログラムを利用できるという利点もある。
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
始めに、図1〜3を用い基本構成について説明する。次に、図4〜9を用いプログラマブルコントローラで使用するファンクションブロックの詳細について説明する。また、図10〜12を用い組み込みソフトウェアのファンクションブロック作製方法について説明する。最後に、図13〜15を用いダウンロード方法について説明する。
図1は、本発明で用いられるプログラマブルコントローラシステムの構成の一例を説明したものである。パソコン11は一般的なパソコンであり、このパソコン11にはプログラマブルコントローラを支援する図示しない支援ツールが格納されている。パソコン11と支援対象のプログラマブルコントローラ12は、ケーブル16で接続されている。また、プログラマブルコントローラ12〜14と制御対象となる入出力モジュール15は、制御用ネットワーク17で接続されている。制御用ネットワーク17の一例としては、出願人の製品であるMICREX-SXシリーズで使用しているSXバスなどがある。
パソコン11において、ファンクションブロック等を用いてプログラミングを行い、コンパイル後に実行ファイルをプログラマブルコントローラ12にケーブル16等を介してダウンロードする(このため、パソコン11はローダと呼ばれることもある)。
なお、ここではプログラマブルコントローラシステムの一例として、一台のパソコン11と複数のプログラマブルコントローラ12〜14、及び複数の入出力モジュール15とによる構成を示しているが、これは発明を限定するものではなく、それぞれ任意の台数によって構成されていても構わない。パソコン11の支援対象はプログラマブルコントローラ12〜14のいずれか1つ/全てであっても構わない。
また、パソコン11と支援対象のプログラマブルコントローラ12〜14とは、ケーブル16によって接続されているが、これに限ったものではなく、無線LANであっても良いし、任意の媒体を介して情報を遣り取りしても構わない。
図2は、本発明で用いられるプログラマブルコントローラのハード構成を説明したものである。プログラマブルコントローラ20は、システムプログラム及び/又はユーザプログラムを実行するCPU22を有し、CPU22は内部バス27を介してプログラム、命令、各種データ等を遣り取りする。ここで、システムプログラム及び/又はユーザプログラムを電源断時も保存しておくために、不揮発性の書き換えメモリとしてフラッシュメモリ24を有する。一般に、フラッシュメモリはSRAM等に比べ動作が低速である為、プログラムの保存に適していても、実行には向かない。そこで、フラッシュメモリ24からシステムプログラム及び/又はユーザプログラムを展開・実行するSRAMとして、プログラムメモリ25を有する。また、システムプログラム及び/又はユーザプログラムがリード/ライトする情報を管理・保存するメモリ領域(SRAM)として、データメモリ26も有する。
一方でプログラマブルコントローラ20には、大別して外部機器との通信機能を2つ有する。1つは、後述のプログラマブルコントローラ支援装置30からユーザの指示やプログラミング、実行ファイル等をCPU22と遣り取りするインターフェース機能であるドライバ/レシーバ21である。もう1つは入出力モジュール等の制御対象機器との通信を行う際に、専用線であるバスの調停等を行うバスコントローラ23である。
なお、フラッシュメモリ24、プログラムメモリ25、データメモリ26は、データ保存/管理の面や実行性の側面から複数のユニットに分けているが、十分な容量や速度性能および電源断時のデータ保証が可能なときは、例えば1つのメモリであっても構わない。
図3は、本発明で用いられるプログラマブルコントローラ支援装置のハード構成を説明したものである。プログラマブルコントローラ支援装置30は、ユーザが所望の制御プログラムを作成する為に入力を行う入力デバイス33と、この入力内容等を表示する表示デバイス34、所定のプログラムを記憶するための記憶装置35、接続線や外部ネットワーク等を介し対象のプログラマブルコントローラと通信する通信I/F32等を有する。CPU31は、内部バス36を介し、入力デバイス33より作成されたプログラムを必要に応じて記憶装置35に記憶し、また図示しない支援ツールのコンパイル機能により実行ファイルを作成し、これを通信I/F32を介して対象のプログラマブルコントローラに送信(ダウンロード)する。また、必要に応じて、後述のファンクションブロック番号も送信する。
ユーザは、プログラマブルコントローラ支援装置30における支援ツールを用いてプログラミングを行うことになるが、この際にファンクションブロックを使用することが多い。なお、記述言語規格IEC61131−3に規定されているファンクションブロックでは、処理コードと処理を行う際に使用するデータ(インスタンス)とが一体になった処理構造になっている。
図4は、ファンクションブロックの入出力概略の一例を説明したものである。図4(a)の例では、矩形部分で表示したファンクションブロック本体40に対し、左側に入力端子41、右側に出力端子42が配置されている。ここでは、ファンクションブロック本体40の上部中央に記載のCTUがファンクションブロック名称を、CU、R、PV、Q、CVは端子名称を表している。また、入力端子41、出力端子42に記載の情報(BOOL、INT)は端子のデータ型を表している。
同様に、図4(b)の例では、矩形部分で表示したファンクションブロック本体43に対し、左側に入力端子44、右側に出力端子45が配置されている。ここでは、ファンクションブロック本体43の上部中央に記載のUFBがファンクションブロック名称を、IN1、IN2、OUT1、OUT2は端子名称を表している。入力端子44、出力端子45に記載の情報(INT)は端子のデータ型を表している。
図5は、ファンクションブロックのインスタンスの構成の一例を説明したものである。図5(a)における最小の矩形は、ビット量を表す。CU、R、Qが1つの矩形から構成されているのは、データ型がBOOL(図4(a)参照)であることを表し、PV、CVが16個分の矩形から構成されているのは、データ型がINT(図4(a)参照)であることを表す。また、図5(a)における斜線の箇所は未使用領域であることを表す。同様に、図5(b)のIN1、IN2、OUT1、OUT2は、16個分の矩形から構成されており、データ型がINT(図4(b)参照)であることを表す。
なお、ここでは模式的な表示としているが、実際には連続した領域として、これらの単位でプログラマブルコントローラのデータメモリ26のアドレスが割り付けられ、インスタンス領域として管理される。図2において、実行時のファンクションブロックのプログラムコードはプログラムメモリ25に、インスタンスの情報はデータメモリ26に配置される。これらの情報を連携して実行することによりファンクションブロックは機能する。
ところで、ファンクションブロックは、その性質から大きく分けると2つに分類される。ここではこれらをそれぞれ、ユーザファンクションブロック(以降、ユーザFBと略す)とシステムファンクションブロック(以降、システムFBと略す)と呼ぶ。
ユーザFBは、ユーザがファンクションブロックの中身(処理自体)も含めてプログラミングするもので、プログラマブルコントローラ支援装置でユーザFB自体もコンパイルされた後、プログラマブルコントローラにダウンロードされる。
一方でシステムFBは、プログラマブルコントローラのメーカが提供するファンクションブロックである。その為、予めその機能がプログラマブルコントローラ本体のシステムプログラムに含まれており、ユーザはプログラマブルコントローラのアプリケーション内でそのシステムFBを呼び出すコードを記述するだけで、その機能を使用する事ができる。
また、システムFBではプログラマブルコントローラで使用されるマイコンや専用LSIに最適な設計がメーカによりなされているが、ユーザはこれらのシステムFBに手を加えることは出来ず、参照することのみ許されているのが一般的である。
なお、組み込みソフトウェアによるファンクションブロックはユーザFBとなる。
図6は、ユーザFBをプログラマブルコントローラのアプリケーションから呼び出した場合のプログラムの一例を説明したものである。ここでは、PG0というプログラムから図4(b)のファンクションブロックUFBを呼び出している。インスタンス60は、PG0においてUFBのインスタンスであることを表している。同一のファンクションブロックでも、インスタント名が異なれば処理も異なる。このため、インスタント名ごとに対応する対象データ領域を有し、ここではインスタンス名としてUFB_1となっている。
変数61はPG0内で定義されるが、インスタンス60の入力値として受け渡す。同様に、変数62はPG0内で定義されるが、インスタンス60の実行結果である出力値を受け渡される。
図7は、PG0の擬似的なプログラムコードを説明したものである。コード71、76はプログラムの開始、終了を示すタグであり、実質上、無処理のコードになる。コード72は図6の変数61と対応している。コード上では、A、UFB_1.IN1のような表記となっているが、実際にはこれらの変数(或いはインスタンス領域)には、プログラマブルコントローラのデータメモリのアドレスが割り付けられている。ここで、UFB_1はインスタンス領域の先頭アドレス、UFB_1.IN1はその構成要素である変数IN1のアドレスが割り付けられている。UFB_1.IN2についても同様である。ここでは、A、B入力値として、UFB_1はインスタンス領域のUFB_1.IN1、UFB_1.IN2に格納する。コード73はPUSH命令であり、インスタンス領域のアドレスをスタック等に保存しておく命令である。コード74はCAL命令であり、ファンクションブロックUFBのプログラムコードを呼び出す(実際のコードでは、UFBと対応するファンクションブロック番号がセットされており、このファンクションブロック番号はプログラマブルコントローラとプログラマブルコントローラ支援装置とにおいて整合が取れている)。コード75は、図6の変数62と対応している。コード74で呼び出されたファンクションブロックUFBの処理の終了後に、実行結果を出力値として、UFB_1はインスタンス領域のUFB_1.OUT1、UFB_1.OUT2から値を取り出し、C、Dに格納する。
図8は、ユーザFBテーブルの一例を説明したもである。プログラムメモリ上に、ユーザFBのオブジェクトコードがn個格納されている。各ユーザFBのオブジェクトコードには、これらを一意に特定するユーザFB番号が割り振られている。これはプログラマブルコントローラ側で、ユーザFB番号で指定されたユーザFBを速やかに呼び出せるようにするものである。ここでは、これらのユーザFB番号を管理する方法としてユーザFBテーブルを用いる。
ユーザFBテーブルは、ユーザFB番号及びユーザFBのオブジェクトコードの格納先アドレスの一覧で構成される。図8の例では、ユーザFBテーブルはデータメモリに格納されており、各矢印はユーザFBテーブルの各ユーザFB番号を指定すればプログラムメモリ内の各オブジェクトコードの開始アドレスを特定できることを示している。
なお、アドレスの指定方法は、オブジェクトコードの格納先の開始番地を用いるのが一般的であるが、開始番地・終了番地・オブジェクトコードを格納するアドレス長を指定しても構わない。アドレスの情報は、プログラムメモリ内のアドレスを絶対番地として登録しても構わないし、相対アドレスであっても構わない。
また、ユーザFBテーブルの構成自体を構造的にして、例えばユーザFBテーブルの頭から4バイト目にはユーザFB番号1のアドレスを、8バイト目にはユーザFB番号2のアドレス、・・・、4nバイト目にはユーザFB番号nのアドレスを格納し、単なるアドレスの羅列で構成しても構わない。
ここでは、一例として、ユーザFBがn個あるものとして、実際にn個格納されているものを想定しているが、管理するユーザFBの個数はデータメモリやプログラムメモリ等の容量が許容すればn個に固定せずとも構わなく、未使用な番号があっても良いし、ユーザFBが連番である必要は無い。但し、実際に実行するユーザFBに関して用意するのがメモリ資源やレンスポンスの面から好ましい。
いずれにせよ、ユーザFB番号が分かれば、実行すべきプログラムメモリ内のユーザFBのオブジェクトコードのアドレスも一意に決まる。
図9は、プログラマブルコントローラ側におけるユーザFBの処理の一例を概略フローチャートで説明したものである。ここではプログラマブルコントローラのアプリケーションの処理の1つとして、PG0(図6参照)が実行されたとき、PG0におけるユーザFB(UFB)がどのように処理されるかについて、その概略を示す。
PG0の実行中において、プログラマブルコントローラに予め実装されているCAL処理が呼び出される(ステップS91)。また、ステップS91の前処理として、ユーザFB(UFB)のインスタンス(UFB_1)のアドレスはデータメモリ上にスタックされ、インスタント領域に格納されている。CAL処理では、始めにユーザFB(UFB)処理後の戻りアドレスを保存する(ステップS92)。その上で、スタックに格納されているインスタンス領域のアドレスを取り出し(ステップS93)、呼び出そうとしているユーザFB(UFB)のユーザFB番号をユーザFBテーブル(図8参照)から検索し、アドレス情報を取り出す(ステップS94)。インスタンス領域のアドレスをパラメータにセットしてユーザFB(UFB)の処理にジャンプする(ステップS95)。ユーザFB(UFB)の処理終了後、ステップS92で保存しておいた戻りアドレスにジャンプした後、PG0の処理を継続する。
ここまでは、本発明の構成と基本的な処理について説明した。以降は、組み込みソフトウェアにおけるユーザFB(以降、組み込みソフトウェアFBと呼ぶ)の作成方法(図10〜図12参照)や、ユーザFBのPLCへの展開処理(図13〜図15)に関する具体的な所作について説明する。
図10は、作成対象のPOU(Program Organization Unit)を選択する画面を説明したものであり、この画面は図3のプログラマブルコントローラ支援装置30における図示しない支援ツールにおけるユーザインターフェースの一例である。
このメニュー画面では、従来のプログラム、ファンクションブロック、ファンクションに加えて、組み込みソフトウェアFBの作成を支援することを示している。
図11は、組み込みソフトウェアFBの編集画面の一例を説明したものである。ここでは、ファンクションブロックの名称と、各変数の変数名、データ型、種類を入力する。ファンクションブロック名称は、入力規則に制限は無いが、既に登録済みの名称と重複しないようにする。変数名も入力規則に制限は無いが、同一ファンクションブロック内で重複しないようにする。データ型は、変数の型であるINT型、BOOL型等を指定可能で、ファンクションブロックのインスタンスの構成(図5参照)にも反映される。種類は、INPUT、OUTPUTのいずれかであり、変数がファンクションブロックの入力側、出力側のいずれかであるかを指定することになる。
図12は、組み込みソフトウェアFBの雛形の一例を説明したものである。図11で設定した変数を用い、C言語を用いた組み込みソフトウェアの雛形を作成する例を示す。コード121は、構造体の記述方式であり、ファンクションブロックにおいてはインスタンスに相当する。コード122は、構造体からの変数受け渡しと、実際の処理を記入する箇所であり、特に、/* 以下に処理を記入する */の箇所以降に演算式や制御内容をユーザがC言語で記載する。なお、ここでは説明の関係で図11で変数等の情報を入力してから図12で雛形を作成する例を示したが、図11の情報より、コード121やコード122の変数などの該当部分を自動的に反映しても構わないし、コード121、122をユーザが直接入力しても構わない。作成したコードを、組み込みソフトウェアの開発環境にてコンパイルし、オブジェクトファイル(組み込みソフトウェアFBのオブジェクトコード)を生成する。
図13は、組み込みソフトウェアFBのダウンロード方法を説明したものであり、図14は、図13におけるダウンロード後のファイル展開処理をフローチャートで説明したものである。
図13における矢印は、プログラマブルコントローラ支援装置からプログラマブルコントローラにダウンロードされるファイルを示している。なお、プログラマブルコントローラからプログラマブルコントローラ支援装置へのレスポンスについては省略し、特に図示しない。
始めに、組み込みソフトェアの作成機能のあるプログラマブルコントローラ支援装置にて、ユーザは組み込みソフトウェアFBを作成する。その後、コンパイル処理136により組み込みソフトェアFBのオブジェクトコード134が生成される。生成された組み込みソフトェアFBのオブジェクトコード134を、動作対象のプログラマブルコントローラに送信する。
次に、組み込みソフトェアの作成機能の無いプログラマブルコントローラ支援装置にて、ユーザは組み込みソフトェアFBを利用したプログラムを作成する。その後、コンパイル処理135によりプロジェクトファイル130が生成される。このプロジェクトファイル130をプログラマブルコントローラに送信する。ここで、プロジェクトファイル130とは、ユーザの作成したプログラムを一つのアプリケーションとして管理する単位で、PLC定義ファイル群131、PLC POU群132、組み込みソフトウェアのユーザFB番号133から構成される。
PLC定義ファイル群131とは、PLCのシステムの動作を設定した一連の情報で、例えばPLCに接続されている機器の構成情報や、その制御信号の種類等の情報を含んでいる。
PLC POU群132とは、ユーザの作成したプログラムを構成する要素全てで、ファンクションやファンクションブロックなどの実行コード等から構成される。PLC POU群132には、ユーザFBのユーザFB番号も含まれる。
組み込みソフトウェアのユーザFB番号133は、コンパイル136のより生成された組み込みソフトウェアFBのオブジェクトコード134のユーザFB番号であり、PLC POU群132における各ユーザFBのユーザFB番号とは重ならない番号としてユニークな設定となっている。
ところで、ユーザFB番号はユーザFBコードに対して固定的には定まらない。これは、コンパイルにおいては最適化等も行われ、また、ユーザFBが追加・削除などされる等の要因による。そこで、ユーザFBは同じでも、プロジェクトファイル130をコンパイルするごとに異なったユーザFB番号体系を生成することもある。即ちユーザFB自体を修正していなくても、デバッグを実施しコンパイルするごとにダウンロードする必要が生じる。これは、組み込みソフトェアのユーザFB番号においても同様である。
なお、図面の矢印ではPLC定義ファイル群131、PLC POU群132、組み込みソフトウェアのユーザFB番号133の順にダウンロードされているように描画したが、実際にはプロジェクトファイル130のアーカイブとして送信後にプログラマブルコントローラ内で展開しても構わなく、プロジェクトファイル130内でのダウンロードの順番に制限は無い。また、ここでは説明の為、プログラマブルコントローラ支援装置を複数の例を示したが、同手順を一台のプログラマブルコントローラ支援装置で実行しても構わない。
次にダウンロード後のファイルの展開処理について説明する。後述の図15で示すように、プログラマブルコントローラにダウンロードされた組み込みソフトウェアFBのオブジェクトコード134はプログラムメモリの任意の固定番地に展開される(ステップS141)。次にダウンロードされたPLC定義ファイル群133より、PLCの動作に必要なPLCシステム定義を構築する(ステップS142)。同じくダウンロードされたPLC POU群134がプログラムメモリに展開済みが確認する(ステップS143)。展開されていない場合、オブジェクトコードをプログラムメモリにコピーし(ステップS144)、コピーしたオブジェクトコードに対応するユーザFB番号をユーザFBテーブルに反映する(ステップS145)。全てのPOUが展開された後、組み込みソフトウェアのユーザFB番号135をユーザFBテーブルに反映する(ステップS146)。
図15は、組み込みソフトウェアFBのダウンロード及び展開の概略を説明したものである。例えば、組み込みソフトウェアFBのオブジェクトコードはプログラムメモリの200番地に展開された後、組み込みソフトウェアのユーザFB番号として“m”がダウンロードされた場合、ユーザFBテーブル150のm番目として“200番地”が登録される。他のユーザFBに関しても同様に、ユーザFBテーブル150の1番目として“10番地”、ユーザFBテーブル150のn番目として“900番地”が登録(更新)される。
以上のように構成する事により、ユーザファンクションブロックの呼び出すためのコードを記述するだけでユーザが作成した組み込みソフトウェアをプログラマブルコントローラのアプリケーションから呼び出し可能になる。なお、ここではよく使われる組み込みソフトェアの例としてユーザFBについて説明したが、ユーザファンクションやユーザプログラム等のPOUについても同様なテーブル管理により実現可能である。また、ダウンロードの際に、オブジェクトコード以外のコードとして、ソースコードや中間コード等の情報をプログラマブルコントローラのメモリに展開しても構わない。
本発明におけるプログラマブルコントローラシステムの構成の一例を示す説明図 本発明におけるプログラマブルコントローラのハード構成を示す説明図 本発明におけるプログラマブルコントローラ支援装置の概略ハード構成を示す説明図 ファンクションブロックの入出力概略の一例示す説明図 ファンクションブロックのインスタンスの構成の一例を示す説明図 ユーザFBを呼び出したプログラムの一例を示す説明図 図6で示すプログラム(PG0)の擬似的なプログラムコードを示す説明図 ユーザFBテーブルの一例を示す説明図 ユーザFBの処理の一例を示す概略フローチャート 支援ツールのPOU選択画面を示す説明図 組み込みソフトウェアFBの編集画面の一例を示した説明図 組み込みソフトウェアFBの雛形の一例を示した説明図 組み込みスフトウェアFBのダウンロード方法を示した説明図 図13におけるダウンロード後のファイル展開処理のフローチャート 組み込みソフトウェアFBのダウンロード及び展開の概略を示した説明図
符号の説明
11…パソコン
12、13、14、20…プログラマブルコントローラ
15…入出力モジュール
16…ケーブル
17…制御用ネットワーク
21…ドライバ/レシーバ
22…CPU
23…バスコントローラ
24…フラッシュメモリ
25…プログラムメモリ
26…データメモリ
27…内部バス
30…プログラマブルコントローラ支援装置
31…CPU
32…通信I/F
33…入力デバイス
34…表示デバイス
35…記憶装置
36…内部バス
40、43…ファンクションブロック本体
41、44…入力端子
42、45…出力端子
60…インスタンス
61、62…変数
71、72、73、74、75、76、121、122…コード
130…プロジェクトファイル
131…PLC定義ファイル群
132…PLC POU群
133…組み込みソフトウェアFBのユーザFB番号
134…組み込みソフトウェアFBのオブジェクトコード
150…ユーザFBテーブル

Claims (5)

  1. ユーザにより作成されたユーザファンクションブロックのオブジェクトコードと、ユーザにより作成された組み込みソフトウェアのファンクションブロックのオブジェクトコードとを、これらに付与されそれぞれを一意に特定するユーザファンクションブロック番号により管理するプログラマブルコントローラにおいて、
    前記ユーザファンクションブロックのオブジェクトコードと、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードと、前記ユーザファンクションブロック番号とを格納する記憶手段と、
    専用線、記憶媒体、或いは外部ネットワークを通じプログラマブルコントローラ支援装置との間でデータの交信を行う通信手段と、
    前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行する実行手段とを備え、
    前記記憶手段は、前記通信手段を通じて前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを受信したときには、該組み込みソフトウェアのファンクションブロックのオブジェクトコードを格納し、その後、前記通信手段を通じて前記ユーザファンクションブロックのオブジェクトコードを受信したときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、格納済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを格納し、
    前記実行手段は、前記記憶手段を通じて格納された前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行することを特徴とするプログラマブルコントローラ。
  2. 請求項1に記載のプログラマブルコントローラにおいて、
    前記記憶手段は、前記ユーザファンクションブロック番号をテーブル構造として管理することを特徴とするプログラマブルコントローラ。
  3. 請求項1または2に記載のプログラマブルコントローラにおいて、
    前記実行手段は、アプリケーション実行機能、システム管理機能、支援ツールインターフェース機能を具備し、リアルタイムオペレーティングシステムを用いた汎用マイコンにより実現されることを特徴とするプログラマブルコントローラ。
  4. ユーザファンクションブロックを用いたプログラミング環境をユーザに提供し、作成されたプログラムを管理する管理手段と、
    前記プログラムをコンパイルしオブジェクトコードを生成するコンパイル手段と、
    前記プログラムの稼動対象とするプログラマブルコントローラに前記オブジェクトコードを送信する送信手段と、を備え、
    前記管理手段は、ユーザにより作成されたユーザファンクションブロック及び/又は組み込みソフトウェアのファンクションブロックにそれぞれを一意に特定するユーザファンクションブロック番号を付与し、
    前記送信手段は、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを送信するときには、対応するユーザファンクションブロック番号を送信せず、その後、前記ユーザファンクションブロックのオブジェクトコードを送信するときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、送信済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを送信することを特徴とするプログラマブルコントローラ支援装置。
  5. プログラマブルコントローラとプログラマブルコントローラ支援装置とを具備するプログラマブルコントローラシステムにおいて、
    前記プログラマブルコントローラ支援装置は、
    ユーザファンクションブロックを用いたプログラミング環境をユーザに提供し、作成されたプログラムを管理する管理手段と、
    前記プログラムをコンパイルしオブジェクトコードを生成するコンパイル手段と、
    前記プログラムの稼動対象とするプログラマブルコントローラに前記オブジェクトコードを送信する送信手段と、を備え、
    前記管理手段は、ユーザにより作成されたユーザファンクションブロック及び/又は組み込みソフトウェアのファンクションブロックにそれぞれを一意に特定するユーザファンクションブロック番号を付与し、
    前記送信手段は、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを送信するときには、対応するユーザファンクションブロック番号を送信せず、その後、前記ユーザファンクションブロックのオブジェクトコードを送信するときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、送信済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを送信し、
    前記プログラマブルコントローラは、
    前記ユーザファンクションブロックのオブジェクトコードと、前記組み込みソフトウェアのファンクションブロックのオブジェクトコードと、前記ユーザファンクションブロック番号とを格納する記憶手段と、
    専用線、記憶媒体、或いは外部ネットワークを通じプログラマブルコントローラ支援装置との間でデータの交信を行う通信手段と、
    前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行する実行手段とを備え、
    前記記憶手段は、前記通信手段を通じて前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを受信したときには、該組み込みソフトウェアのファンクションブロックのオブジェクトコードを格納し、その後、前記通信手段を通じて前記ユーザファンクションブロックのオブジェクトコードを受信したときには、該ユーザファンクションブロックのオブジェクトコードと、該ユーザファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号と、格納済みの前記組み込みソフトウェアのファンクションブロックのオブジェクトコードに対応する前記ユーザファンクションブロック番号とを格納し、
    前記実行手段は、前記記憶手段を通じて格納された前記ユーザファンクションブロックのオブジェクトコード及び/又は前記組み込みソフトウェアのファンクションブロックのオブジェクトコードを解釈し実行することを特徴とするプログラマブルコントローラシステム。
JP2008083871A 2008-03-27 2008-03-27 プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム Active JP4877257B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008083871A JP4877257B2 (ja) 2008-03-27 2008-03-27 プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008083871A JP4877257B2 (ja) 2008-03-27 2008-03-27 プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム

Publications (2)

Publication Number Publication Date
JP2009237947A JP2009237947A (ja) 2009-10-15
JP4877257B2 true JP4877257B2 (ja) 2012-02-15

Family

ID=41251808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008083871A Active JP4877257B2 (ja) 2008-03-27 2008-03-27 プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム

Country Status (1)

Country Link
JP (1) JP4877257B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844099B (zh) * 2016-09-18 2020-01-10 南京南瑞继保电气有限公司 一种基于元数据模型的功能块图在线调试方法
JP7351109B2 (ja) * 2019-06-21 2023-09-27 富士電機株式会社 表示制御装置及び表示制御プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3829905B2 (ja) * 1999-08-06 2006-10-04 オムロン株式会社 プログラマブル・コントローラ
JP2002189507A (ja) * 2000-12-19 2002-07-05 Omron Corp コントローラ
JP2005326909A (ja) * 2004-05-12 2005-11-24 Mitsubishi Electric Corp プラントエンジニアリングシステム
JP2006178818A (ja) * 2004-12-24 2006-07-06 Yaskawa Electric Corp モーションコントローラとエンジニアリングツール並びにc言語実行システム
JP4821717B2 (ja) * 2007-06-29 2011-11-24 富士電機株式会社 プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム

Also Published As

Publication number Publication date
JP2009237947A (ja) 2009-10-15

Similar Documents

Publication Publication Date Title
CN103814333B (zh) 用于对可编程控制装置编程和配置的方法和设备
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP4821717B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP6292096B2 (ja) プログラマブルコントローラシステム、その支援装置
JP7172864B2 (ja) サポート装置およびサポートプログラム
JP4366575B2 (ja) ツール
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
JP7085305B2 (ja) コントロールシステム及びコントロール方法
KR101447846B1 (ko) 모션 sfc 프로그램 부품 작성 장치
JP2004280299A (ja) コントローラ、開発装置及びシステム
JP2005301520A (ja) プログラミングシステム
CN110806891A (zh) 嵌入式设备软件版本的生成方法及装置
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
JP5177082B2 (ja) 開発支援装置,プログラム
JP5205988B2 (ja) Plcのグローバル変数定義方式
CN114365048B (zh) 数控装置
CN112272820B (zh) 支持装置以及支持程序的记录介质
JP6115063B2 (ja) プログラマブルコントローラの周辺装置
JP2009245194A (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP7234810B2 (ja) サポート装置およびサポートプログラム
JP2008003841A (ja) ビルド処理方法、ビルド処理装置、及びプログラム
JP6295914B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
JP7241982B1 (ja) 画像生成プログラム、画像生成装置、プログラマブルコントローラシステム及び画像生成方法
JP7417462B2 (ja) パッケージ生成装置、パッケージ管理システム及びパッケージ生成方法

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20101015

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111026

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111101

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

R150 Certificate of patent or registration of utility model

Ref document number: 4877257

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

Year of fee payment: 3

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

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