JP4877068B2 - ソフトウェア開発支援プログラム、ソフトウェア開発支援方法 - Google Patents

ソフトウェア開発支援プログラム、ソフトウェア開発支援方法 Download PDF

Info

Publication number
JP4877068B2
JP4877068B2 JP2007136039A JP2007136039A JP4877068B2 JP 4877068 B2 JP4877068 B2 JP 4877068B2 JP 2007136039 A JP2007136039 A JP 2007136039A JP 2007136039 A JP2007136039 A JP 2007136039A JP 4877068 B2 JP4877068 B2 JP 4877068B2
Authority
JP
Japan
Prior art keywords
variable
target
development support
software development
monitoring target
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
JP2007136039A
Other languages
English (en)
Other versions
JP2008293138A (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 JP2007136039A priority Critical patent/JP4877068B2/ja
Publication of JP2008293138A publication Critical patent/JP2008293138A/ja
Application granted granted Critical
Publication of JP4877068B2 publication Critical patent/JP4877068B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Programmable Controllers (AREA)

Description

本発明は、ソフトウェア開発支援技術に関し、ソフトウェアのデバッグ工程等に適用して有効な技術に関する。
ソフトウェア開発支援ツールのデバッグ機能の一つに、条件モニタという機能がある。この機能は、ある条件が成立した時点で、監視対象のアドレス値を保存しておき、任意のタイミングで、その値を表示する機能である。条件が成立してもプログラムを停止しないでデバッグする理由は、ターゲットマシンを停止できない状態が多いことに起因する。例えば、ターゲットマシンとしてプログラマブルロジックコントローラ(PLC)を用いた現場等である。
一方で、変数のモニタ機能においては、定期的にデータをターゲットマシンから獲得するため、必ずしも条件が成立した時点の値が表示されるわけでは無い。そのため、デバッグを実施する場合、プログラムの論理を確認するためには、ある特定の条件(以下、採取条件と記す)が成立した時点の値を保持する、いわゆる条件モニタ機能が必要とされる。
条件モニタ機能を実行する場合、採取条件と監視対象アドレスを予めターゲットマシンに設定する必要がある。プログラミングにおいてユーザが直接アドレスで記述していた場合、監視対象アドレスをアドレスの範囲で指定していた。
しかし、ソフトウェアの規模が大きくなり、開発効率を高めるため、ユーザのプログラミングがアドレスで指定する方法から変数で指定する方法に変わってきた。変数値等のデバッグ情報の可読性を高めて、開発効率を向上させるためである。
そのため、監視対象の指定方法も、アドレスから変数(変数名)で指定するようになってきた。変数のアドレスはソースコードから機械語オブジェクトに変換する際にコンパイラが決定する。そのため、監視対象としてアドレスで指定することは困難であり、ユーザは変数を一つずつ指定することになる。
監視対象のアドレス値を保持するためには、ターゲットマシンの側でそれらの値を保持する必要がある。しかしながら、ターゲットマシンのメモリ容量、アドレス内容の保存をするための処理時間等の制約により、保存できるアドレスの個数に上限があり、モニタ可能な変数全てを監視対象として登録できない。そのため、監視対象のアドレスの個数は上限以内で設定する必要がある。
このようにプログラミングがアドレス記述から変数名での記述になるとともに、ターゲットマシンのメモリ容量も増加し、使用可能なアドレスの個数も増加している。これに伴い、デバッグにおける、監視対象の変数の個数も増加している。
従って、ソースコードにおける数ある変数の中から、監視対象の変数を効率的に指定する技術が求められている。
特許文献1には、アプリケーションプログラムに記述されているラベル名と対応するアドレス値を格納したテーブルを実行可能ファイルに随伴させてプログラマブルロジックコントローラに書き込み、デバッグ時には、当該実行可能ファイルとテーブルを読み出して、アドレス値をラベル名で置換して表示することにより、デバッグ効率を向上させる技術が開示されている。
しかしながら、この特許文献1の場合には、上述のような多数の変数から監視対象の変数を効率的に指定するという技術的課題は認識されていない。
一方、特許文献2には、デバッグ割り込みの都度、利用者プログラム番号とステップ番号と変数の値をトレースバッファに格納し、このトレースバッファの値を読み出して表示する技術が開示されている。しかし、この特許文献2の場合にも、多数の変数から効率的に監視対象の変数の指定する、という上述の技術的課題の認識は見られない。
特開平11−338732号公報 特開平7−334211号公報
本発明の目的は、ソフトウェアのデバッグ等において、監視対象の変数を効率的に設定することが可能なソフトウェア開発支援技術を提供することにある。
本発明の他の目的は、ターゲットマシンに必要以上に大きなメモリ容量を必要とすることなく、効率的なデバッグを行うことが可能なソフトウェア開発支援技術を提供することにある。
本発明の第1の観点は、プログラマブルロジックコントローラ(PLC)からなるターゲットマシンに接続されるコンピュータをソフトウェア開発支援装置として機能させるソフトウェア開発支援プログラムであって、
ソースコードから、前記ターゲットマシンで実行されることにより前記プログラマブルロジックコントローラのラダープログラムと等価な機能を実現する機械語オブジェクト、
および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成する処理と、
前記ソースコードから前記変数を抽出し、監視対象の候補として登録する処理と、
前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録する処理と、
前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録する処理と、
前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定する処理と、
前記機械語オブジェクトおよび前記採取条件および前記監視対象として特定された前記アドレス情報を前記ターゲットマシンに転送することにより、当該ターゲットマシンにおいて、前記採取条件が成立したとき、前記監視対象として特定された前記アドレス情報に対応する前記変数の値のみを当該ターゲットマシン内のメモリに格納し、前記ソフトウェア開発支援装置からの転送要求に応答して転送する動作を可能にする処理と、
前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示する処理と、
を前記コンピュータに実行させるソフトウェア開発支援プログラムを提供する。
本発明の第2の観点は、第1の観点に記載のソフトウェア開発支援プログラムにおいて、
前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録する処理を前記コンピュータに実行させるソフトウェア開発支援プログラムを提供する。
本発明の第3の観点は、第1の観点または第2の観点のいずれかに記載のソフトウェア開発支援プログラムにおいて、
前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録するソフトウェア開発支援プログラムを提供する。
本発明の第4の観点は、第1の観点または第2の観点のいずれかに記載のソフトウェア
開発支援プログラムにおいて、
さらに、登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効/無効の設定を受け付ける処理を前記コンピュータに実行させるソフトウェア開発支援プログラムを提供する。
本発明の第5の観点は、プログラマブルロジックコントローラ(PLC)からなるターゲットマシンに接続されるソフトウェア開発支援装置におけるソフトウェア開発支援方法であって、
ソースコードから、前記ターゲットマシンで実行されることにより前記プログラマブルロジックコントローラのラダープログラムと等価な機能を実現する機械語オブジェクト、
および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成するステップと、
前記ソースコードから前記変数を抽出し、監視対象の候補として登録するステップと、
前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録するステップと、
前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録するステップと、
前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定するステップと、
前記機械語オブジェクトおよび前記採取条件および前記監視対象として特定された前記アドレス情報を前記ターゲットマシンに転送することにより、当該ターゲットマシンにおいて、前記採取条件が成立したとき、前記監視対象として特定された前記アドレス情報に対応する前記変数の値のみを当該ターゲットマシン内のメモリに格納し、前記ソフトウェア開発支援装置からの転送要求に応答して転送する動作を可能にするステップと、
前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示するステップと、
を含むソフトウェア開発支援方法を提供する。
本発明の第6の観点は、第5の観点に記載のソフトウェア開発支援方法において、
前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録するソフトウェア開発支援方法を提供する。
本発明の第7の観点は、第5の観点または第6の観点のいずれかに記載のソフトウェア開発支援方法において、
登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効/無効の設定を行うソフトウェア開発支援方法を提供する。
本発明の第8の観点は、第5の観点または第6の観点のいずれかに記載のソフトウェア開発支援方法において、
監視対象の前記変数の登録を自動的に行うステップでは、前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録するソフトウェア開発支援方法を提供する。
デバッグ時、監視対象変数の登録を手動で実施するのは、手間のかかる作業であり、本発明では、効率よく変数を登録できるように操作性を改善する。
ユーザがデバッグをする場合、複数のソースコードにまたがって採取条件を設定する。大抵ソースコードは、機能毎に記述されてあるため、ソースコード単位で、監視対象の変数を登録することになる。しかし、監視対象の変数の個数には、上限が存在するため、上限を超えた場合、監視対象の変数を減らす必要がある。監視対象の変数を1つずつ指定するのは、効率が悪いため、本発明では、必要に応じて、ソースコード単位で有効/無効の設定を変更できるようにする。
本発明は、コンピュータ上で動作する開発支援ツールに適用することができる。開発支援ツールは、プログラム編集機能、コンパイル機能、通信機能を有する。更に、各機能が利用するための情報を記録する機能を有する。
コンパイラ機能は、ユーザが作成した、ソースコードをコンパイルする時、変数を実際のターゲットマシン上で動作するアドレスに割り付ける。それらの情報を変数アドレス対応表として保存する。
条件モニタの採取条件を設定する時、ユーザは、プログラム編集機能上で、採取条件を設定する。その場合、プログラム編集機能で画面表示されている変数を抽出し、抽出した変数を監視対象変数の候補として開発支援ツールが登録する。
開発支援ツールは、候補として登録された変数を一覧としてユーザに表示する画面を有する。ユーザがソースコード上で採取条件を設定した前後の変数は、ユーザにとって、監視対象にする変数であることが多いためである。
監視対象の変数の個数には、上限がある。そのため、上限以内に監視対象変数の個数を収める必要がある。開発支援ツールでは、候補の変数を一覧で表示する画面を有し、その画面上で、候補の個々の変数に対して、監視対象として有効/無効の設定を実施できる機能を有する(例えば、変数名の前にチェックボックスを付け、有効/無効を設定する)。更に、ある単位毎に候補の変数を表示できるようにし(例えば、ソースコード単位で変数を表示する)、表示されている変数全てに対して有効/無効の設定を一括で実施できるようにする。
本発明によれば、ソフトウェアのデバッグ等において、監視対象の変数を効率的に設定することが可能なソフトウェア開発支援技術を提供することができる。
また、ターゲットマシンに必要以上に大きなメモリ容量を必要とすることなく、効率的なデバッグを行うことが可能なソフトウェア開発支援技術を提供することができる。
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図1は、本発明の一実施の形態であるソフトウェア開発支援方法を実施するソフトウェア開発支援装置の原理を示すブロック図、図2は、本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンの構成例を示す概念図である。
図2に例示されるように、本実施の形態のプログラマブルコントローラシステムは、ソフトウェア開発支援装置100と、ターゲットマシン200を含んでいる。
ソフトウェア開発支援装置100は、マイクロプロセッサ110、主記憶120、外部記憶装置130、キーボード141、ディスプレイ142、通信インタフェース150を含むコンピュータで構成されている。
主記憶120には、基本ソフトウェアとしてオペレーティングシステム160が実装され、マイクロプロセッサ110がこのオペレーティングシステム160を実行することで、ソフトウェア開発支援装置100の全体を制御する。
本実施の形態の場合、この主記憶120には、ソフトウェアとしての開発支援ツール170が実装されている。
そして、マイクロプロセッサ110が、この開発支援ツール170を実行することで、後述のような各種のソフトウェア開発支援処理を行う。
すなわち、本実施の形態の場合には、開発支援ツール170は、図1に例示されるようにモニタ機能171、ユーザインタフェース機能172、コンパイル機能173、条件モニタ機能174、通信機能175を備えている。
モニタ機能171は、後述のように通信機能175を利用しターゲットマシン200の値保持メモリ252からアドレス情報332に対応した変数値333の情報を読み出し、その値を表示する処理を行う。
ユーザインタフェース機能172は、ソースコード310の編集機能等を提供する。
コンパイル機能173は、ソースコード310から機械語オブジェクト320に変換する処理および変数−アドレス対応表330を生成する処理を行う。
条件モニタ機能174は、ユーザからの条件入力を受け付けて、採取条件情報350に格納する処理を行うとともに、後述のように監視対象の変数を監視対象変数情報340に自動的に格納する処理を行う。
通信機能175は、ターゲットマシン200との間の情報通信を行う。
図2に例示されるように外部記憶装置130は、ソースコード310、機械語オブジェクト320、変数−アドレス対応表330、監視対象変数情報340、採取条件情報350をファイルとして保持する。
キーボード141、ディスプレイ142は、ソフトウェア開発支援装置100を制御するためのユーザ入力や、ソースコード310の編集、デバッグ時の監視対象の変数の指定や採取条件の指定入力等に用いられる。
通信インタフェース150は、上述の通信機能175の制御下で、ターゲットマシン200とソフトウェア開発支援装置100との間の情報通信を実行する。
図3は、監視対象変数情報340の構成例を示す概念図である。監視対象変数情報340は、変数名341と、有効フラグ342からなる。
変数名341は、監視対象として選択された変数に付与された名称である。有効フラグ342は、選択済みの変数名341を、一時的に有効にしたり無効にしたりするためのフラグである。この有効フラグ342は、後述の監視対象変数一覧画面440の有効/無効チェックボックス443の操作によってON(有効)/OFF(無効)される。
図1に例示されるように、採取条件情報350は、監視対象の変数の変数値333の採取のトリガーを規定する採取条件350aが設定される。
図4は、変数−アドレス対応表330の構成例を示す概念図である。変数−アドレス対応表330は、変数名331とアドレス情報332からなる。
変数名331には上述の変数名341が設定される。アドレス情報332には、ターゲットマシン200におけるアドレスの位置を特定する“アドレス番地”等の情報が格納される。そこで、アドレス情報332は変数名331のアドレス番地に相当する。
一方、本実施の形態のターゲットマシン200は、たとえば、産業機器を制御するプログラマブルロジックコントローラからなる。図2に例示されるように、ターゲットマシン200は、汎用マイコン210、システムメモリ220、通信インタフェース230、不揮発メモリ240を含んでいる。
システムメモリ220には、汎用マイコン210が実行するソフトウェアやデータが格納される。
不揮発メモリ240には、ソフトウェア開発支援装置100から受信した機械語オブジェクト320が格納される。
通信インタフェース230は、汎用通信線231を介してソフトウェア開発支援装置100との情報通信を行う。なお、ソフトウェア開発支援装置100と、ターゲットマシン200との通信方法は汎用通信線231を介したものに限っておらず、例えば無線であっても、記憶媒体を介した方法であっても良い。
また、通信インタフェース230は、被制御機器通信線232を介して、プログラマブルロジックコントローラとして機能するターゲットマシン200(ユーザプログラム320A)の制御対象である図示しない産業機器等との間における情報通信を行う。
上述のシステムメモリ220には、不揮発メモリ240に格納された一つまたは複数の機械語オブジェクト320の組合せからなるユーザプログラム320Aが格納され、このユーザプログラム320Aを汎用マイコン210が実行することで、プログラマブルコントローラとしての所望の機能が実現される。
この場合、システムメモリ220には、ユーザプログラム320Aの実行を管理したり、ソフトウェア開発支援装置100と連携してユーザプログラム320Aのデバッグを実現するターゲット管理部250、条件判定部251等のプログラムが格納されている。
また、システムメモリ220には、ターゲット管理部250、条件判定部251が使用する値保持メモリ252、アドレス一覧メモリ253が格納されている。
アドレス一覧メモリ253には、後述のようにしてソフトウェア開発支援装置100のモニタ機能171から受信した監視対象の変数に対応する一つまたは複数のアドレス情報332と、対応する採取条件350aが格納される。
値保持メモリ252には、採取条件350aが成立した時に、アドレス一覧メモリ253に設定されたアドレス情報332に格納されている値(変数値333)が記録される。
以下、本実施の形態のソフトウェア開発支援装置100およびターゲットマシン200のデバッグ時の作用を説明する。
上記で説明したように、ソフトウェア開発支援装置100上で開発支援ツール170が動作する(図2参照)。
次に、図1に例示されるように、開発支援ツール170は、モニタ機能171、ユーザがソースコード310を記述するユーザインタフェース機能172と、ユーザが作成したソースコード310をターゲットマシン200上で動作する機械語オブジェクト320に変換するコンパイル機能173と、監視対象変数情報340、採取条件情報350を設定する条件モニタ機能174と、開発支援ツール170とターゲットマシン200間でデー
タを送受信する通信機能175を含んでいる。
モニタ機能171は、通信機能175を利用しターゲットマシン200の値保持メモリ252からアドレス情報332に対応した変数値333の情報を読み出し、その値を表示する。
ソースコード310は、開発支援ツール170のコンパイル機能173により、機械語オブジェクト320と変数−アドレス対応表330に変換される。
機械語オブジェクト320は、ターゲットマシン200上で動作する命令の集合体であり、一つまたは複数の機械語オブジェクト320が組み合わされてユーザプログラム320Aとしてターゲットマシン200上で動作する。
変数−アドレス対応表330は、ソースコード310上でユーザが記述した変数(変数名331)と、コンパイル機能173が割り付けたアドレス情報332との対応関係の情報である。
モニタ機能171は、ユーザインタフェース機能172の画面上にソースコードと変数の値を表示する。図5は、このとき、ソフトウェア開発支援装置100のディスプレイ142に表示されるモニタ画面410の一例を示す図である。
モニタ画面410は、ソースコード表示領域411、変数値表示領域412、シーケンスチャート表示領域413を含んでいる。
ソースコード表示領域411にはソースコード310が表示される。このソースコード310は、ユーザインタフェース機能172によってユーザが入力したものである。
変数値表示領域412には、ターゲットマシン200の値保持メモリ252から読み出された変数値333が、ソースコード表示領域411の変数と対応する行に表示される。
すなわち、変数の値(変数値333)は、コンパイル機能173が作成した変数−アドレス対応表330から変数のアドレス情報332を取り出し、ターゲットマシン200のターゲット管理部250に対して、通信機能175を経由して当該アドレス情報332を通知して値保持メモリ252から読み出すことで獲得する。獲得した変数値333は、モニタ機能171によりモニタ画面410の変数値表示領域412に表示する。
なお、本実施の形態の場合、モニタ画面410のシーケンスチャート表示領域413には、PLCでよくに用いられているラダープログラムに対応したシーケンスチャートが表示される。機械語オブジェクト320は、上述のラダープログラムと等価な機能をターゲットマシン200で実現するようにプログラムされている。
モニタ画面410のように、シーケンスチャート表示領域413とソースコード表示領域411とを同時に表示する事により、ユーザはシーケンスチャートとソースコード310とを対応付けて確認できる。
条件モニタ機能174は、ユーザがモニタ上から採取条件を入力する。図6は、この条件モニタ機能174の操作画面である採取条件設定画面430の例を示している。この採取条件設定画面430には、条件入力欄431、比較データ入力欄432等の入力欄が設けられている。これらの入力欄を用いてユーザから設定された採取条件は、採取条件情報350に保存する。図6の例では、変数の値が100になった時、当該変数の変数値333を採取して保存する採取条件が成立する。
図7に示されるように、ユーザがソースコード表示領域411のソースコード310上
で、対象となる変数(ここでは、cnt1)のダブルクリック等の動作を行うと、これを検知した条件モニタ機能174はより採取条件設定画面430(図6参照)を表示する。この時、ソースコード表示領域411のソースコード上に表示されている複数の変数を監視対象変数情報340に登録する。
すなわち、本実施の形態の場合には、一例として、条件モニタ機能174は、ソースコード表示領域411に表示中のソースコードの可視範囲に存在する変数や関数の一つをユーザがダブルクリック等の動作で選択したことを契機に、当該変数(関数)および/または可視範囲に存在する関数に含まれる変数のすべてを監視対象変数情報340に自動的に登録する。
なお、関数は一例であり、サブルーチン名、分岐先名等の任意の論理ブロック名でもよい。
図8は、監視対象変数一覧画面440の一例を示している。監視対象変数一覧画面440は、変数表示欄441、インスタンス表示欄442を含んでいる。ソースコード表示領域411のソースコード上には、変数としてcnt、cnt1が表示されているため(図7、参照)、監視対象の変数としてこれらを登録できる。変数の抽出技術には、既存の仕組みを利用する。例えば、コンパイル時に、ソースコードの位置と変数を関連付ける方法や、表示されているソースコード310を文法解析(パージング)し、変数名341の文字列を取り出す方法、等を用いる。
監視対象に登録できる変数には、上限があるため、条件モニタ機能174を実行する時、その上限を検査する。もし、上限を超えている場合は、図9に例示されるようなエラー警告メッセージ449等を監視対象変数一覧画面440に表示して、採取条件に基づいて変数の変数値333を採取する条件モニタを実施できないようにする。
上限以内の場合は、条件モニタを実行する。監視対象の変数を削除する方法としては、図10に例示される監視対象変数一覧画面440の画面上の変数一覧で削除対象の変数を選択し削除する。大抵は、ソースコード毎で監視対象変数が変わるため、図10の監視対象変数一覧画面440のように画面毎に変数の一覧を表示するようにし、変数全てを選択し削除できるようにする。
登録された変数を削除すると、再度登録するための煩雑な操作が必要となるので、操作性を向上させるため、一旦登録された各変数毎に有効/無効の状態を持つようにする。
例えば、図10に例示される監視対象変数一覧画面440では、画面の左端に各変数の表示位置に対応して有効/無効チェックボックス443を設け、この有効/無効チェックボックス443にチェックが付いている場合は有効であることを示し、外れている場合は無効であることを示す。全て削除ボタンの他に、全て有効ボタン444、全て無効ボタン445等のボタンを追加し、これらのボタンを押された場合、各変数の有効/無効の状態を変更する。すなわち、上述の監視対象変数情報340の有効フラグ342を設定する。有効フラグ342の状態が有効のものが監視対象の変数である。
開発支援ツール170は、監視対象の変数(変数名331)から変数−アドレス対応表330を用いて変数のアドレス情報332を獲得する。獲得したアドレス情報332と採取条件情報350を通信機能175でターゲットマシン200に送信する。
ターゲットマシン200は、それらの情報をアドレス一覧メモリ253に保持する。ターゲットマシン200は、機械語オブジェクト320(機械語オブジェクト320で構成されたユーザプログラム320A)の実行中に、条件判定部251によって条件成立の検査を実施する。条件が成立した時、アドレス一覧メモリ253に設定された監視対象の変
数のアドレス情報332から、ユーザプログラム320Aにおける監視対象のアドレスにある値(変数値333)を保存する。
モニタ機能171は、定期的にターゲットマシン200の状態を監視し、条件が成立した場合、値保持メモリ252に保存されているデータを読み出す。
モニタ機能171は、通常の表示(定期的にターゲットマシン200から読み出した値の表示)と条件が成立した場合の表示を区別するための情報を画面に表示する。例えば、図11に例示される条件成立時表示画面450の表示例のようにステータスバー451に条件が成立し、条件モニタが停止していることを示す文字列(メッセージ452)(この場合、“条件モニタ停止中”)を表示する。
条件モニタの場合、監視対象として登録した変数のアドレス以外の値は、不定になる。そのため、登録した以外の変数の値は、不定であることを画面上で表示する。例えば、監視対象に登録されている変数は変数値333を表示し、それ以外の変数は、図12に例示されるソースコード表示画面420のように、不定文字列414として“???”を表示する。
図13は、本実施の形態のソフトウェア開発支援装置100およびターゲットマシン200におけるデバッグ時の一連の連携動作を示す図である。
ソフトウェア開発支援装置100の側では、開発支援ツール170のユーザインタフェース機能172がユーザからの入力を受け付けることによりソースコード310の作成/編集を行う(ステップ601)。
次に、ユーザからの指示により、コンパイル機能173は、ソースコード310から機械語オブジェクト320および変数−アドレス対応表330の生成を行う(ステップ602)。
次に、条件モニタ機能174は、ユーザからの指示入力を受け付けて、採取条件情報350の設定、および当該設定に連動した監視対象の変数の候補の登録を行い、ユーザが候補から監視対象を選択しないときは、監視対象の候補を監視対象として全て選択する(ステップ603)。
そして、開発支援ツール170のモニタ機能171は、機械語オブジェクト320、および採取条件情報350、さらには監視対象の変数(変数名331)に対応したアドレス情報332(機械語オブジェクト320内のアドレス値)をターゲットマシン200に送る(ステップ604)。
ターゲットマシン200のターゲット管理部250は、ソフトウェア開発支援装置100から受信した機械語オブジェクト320を不揮発メモリ240に格納し、また採取条件情報350、アドレス情報332をアドレス一覧メモリ253に格納する(ステップ701)。
その後、ソフトウェア開発支援装置100の側からターゲットマシン200に対してデバッグのためのユーザプログラム320Aの実行指令が送信されると(ステップ605)、これを受けたターゲットマシン200のターゲット管理部250は、不揮発メモリ240に格納されている機械語オブジェクト320からユーザプログラム320Aを生成してシステムメモリ220にロードしてユーザプログラム320Aを起動する(ステップ702)。
そして、条件判定部251は、ユーザプログラム320Aの実行状態を監視しつつ、ア
ドレス一覧メモリ253に設定された採取条件情報350の採取条件が成立するか否かを判別し(ステップ703)、成立した場合には、アドレス一覧メモリ253に登録されているアドレス情報332に対応したユーザプログラム320Aのアドレスの値(変数値333)を採取して値保持メモリ252に格納する(ステップ704)。
一方、ソフトウェア開発支援装置100の開発支援ツール170は、ターゲットマシン200における採取条件情報350の成立の有無を定期的にターゲット管理部250に問い合わせて監視している(ステップ606)。
同様にターゲットマシン200のターゲット管理部250は、ソフトウェア開発支援装置100の側からの変数値333の転送指令(ステップ606)の有無を監視し(ステップ705)、当該転送指令が検出された場合には、値保持メモリ252に格納されているアドレス情報332と変数値333のペアの情報を、ソフトウェア開発支援装置100のモニタ機能171に転送する(ステップ706)。
そして、ソフトウェア開発支援装置100のモニタ機能171は、上述のステップ706でターゲットマシン200の側から送られてきたアドレス情報332と変数値333のペアの情報のうち、アドレス情報332に基づいて変数−アドレス対応表330を検索して対応する変数名331を特定し、図11に例示される条件成立時表示画面450をディスプレイ142に表示して、ソースコード表示領域411に表示されたソースコード310の対応する変数名331の表示行に対応する位置に変数値333を変数値表示領域412に出力する。
また、上述のように、条件成立時表示画面450のステータスバー451にはメッセージ452を出力して、定期的な表示と区別する。
ターゲットマシン200の側のターゲット管理部250は、ユーザプログラム320Aの実行完了を監視し(ステップ707)、終了した場合には、ソフトウェア開発支援装置100の開発支援ツール170に通知する(ステップ708)。
なお、上述の図13の例では、ターゲットマシン200におけるユーザプログラム320Aの開始に先立って、予め、アドレス情報332および採取条件350aをターゲットマシン200の側に転送してアドレス一覧メモリ253に設定してデバッグを行う例を示したが、これに限らず、ターゲットマシン200におけるユーザプログラム320Aの開始後に、随時、アドレス情報332および採取条件350aをターゲットマシン200に設定してデバッグを行うこともできる。
このような例を図14のフローチャートに示す。上述の図13と異なる点を示すと以下の通りである。
すなわち、この図14のフローチャートにおいては、ソフトウェア開発支援装置100からターゲットマシン200に対して、機械語オブジェクト320を送信して(ステップ604A)、実行指令を与えて、当該機械語オブジェクト320を含むユーザプログラム320Aの実行を開始(ステップ702)させた後に(ステップ605)、随時、キーボード141から採取条件350aの入力を受け付けて(ステップ603A)、対応するアドレス情報332とともにターゲットマシン200に送信して(ステップ604B)、アドレス一覧メモリ253に設定してデバッグを行う点が、上述の図13のフローチャートの場合と異なっている。
この図14のフローチャートの場合には、ターゲットマシン200におけるユーザプログラム320Aの実行中においても、採取条件350a等を可変させ、ユーザプログラム320Aの実行を中断せずにデバッグを継続できる利点がある。
以上説明したように、本実施の形態のソフトウェア開発支援装置100では、ターゲットマシン200で実行される機械語オブジェクト320(ユーザプログラム320A)のデバッグを、開発支援ツール170を用いて実施する時、たとえば、開発支援ツール170の条件モニタ機能174における採取条件情報350の設定に際してソースコード表示領域411に表示中のソースコード310の変数を、監視対象の変数として自動で登録する。
これにより、一つずつ手動で監視対象の変数を指定する場合に比較して、格段に開発支援ツール170の使い勝手が向上する。
更に、ソースコード310の量が多くなると、複数箇所でソースコード310の検証を実施する必要があり、検証するソースコード310の位置が変われば、監視対象の変数も変更する必要がある。従って、本実施の形態の開発支援ツール170のように自動で監視対象の変数を登録することによりユーザのデバッグ効率が向上する。
また、ソフトウェア開発支援装置100の開発支援ツール170から、監視対象の変数のアドレス情報332をターゲットマシン200に送ってアドレス一覧メモリ253に設定することにより、ターゲットマシン200では、ユーザプログラム320Aのデバッグに際して、アドレス一覧メモリ253に設定されたアドレス情報332に対応する変数値333のみを値保持メモリ252に格納するだけで済む。
これにより、ユーザプログラム320Aに含まれる多数の変数の値を網羅的にトレースメモリ等に記録する場合に比較して、値保持メモリ252やアドレス一覧メモリ253の容量を節約できる。
すなわち、ターゲットマシン200に必要以上に大きなメモリ容量を必要とすることなく、機械語オブジェクト320からなるユーザプログラム320Aの効率的なデバッグを行うことが可能となる。
なお、本発明は、上述の実施の形態に例示した構成に限らず、その趣旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
たとえば、上述の実施の形態では、ターゲットマシンの例としてプログラマブルロジックコントローラを挙げて説明したが、一般の情報処理装置や制御機器等に実装されるソフトウェアのデバッグに広く適用することができる。
本発明の一実施の形態であるソフトウェア開発支援方法を実施するソフトウェア開発支援装置の原理を示すブロック図である。 本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンの構成例を示す概念図である。 本発明の一実施の形態であるソフトウェア開発支援装置にて用いられる監視対象変数情報の構成例を示す概念図である。 本発明の一実施の形態であるソフトウェア開発支援装置にて用いられる変数−アドレス対応表の構成例を示す概念図である。 本発明の一実施の形態である開発支援ツールのモニタ画面の一例を示す図である。 本発明の一実施の形態である開発支援ツールの採取条件設定画面の一例を示す図である。 本発明の一実施の形態である開発支援ツールのソースコード表示画面の一例を示す図である。 本発明の一実施の形態である開発支援ツールの監視対象変数一覧画面の一例を示す図である。 本発明の一実施の形態である開発支援ツールのエラー発生時の監視対象変数一覧画面の一例を示す図である。 本発明の一実施の形態である開発支援ツールの監視対象変数一覧画面の一例を示す図である。 本発明の一実施の形態である開発支援ツールの条件成立時表示画面の一例を示す図である。 本発明の一実施の形態である開発支援ツールのソースコード表示画面の一例を示す図である。 本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンにおけるデバッグ時の連携動作の関係を示す図である。 本発明の一実施の形態であるソフトウェア開発支援装置およびターゲットマシンにおけるデバッグ時の連携動作の関係の変形例を示す図である。
符号の説明
100 ソフトウェア開発支援装置
110 マイクロプロセッサ
120 主記憶
130 外部記憶装置
141 キーボード
142 ディスプレイ
150 通信インタフェース
160 オペレーティングシステム
170 開発支援ツール
171 モニタ機能
172 ユーザインタフェース機能
173 コンパイル機能
174 条件モニタ機能
175 通信機能
200 ターゲットマシン
210 汎用マイコン
220 システムメモリ
230 通信インタフェース
231 汎用通信線
232 被制御機器通信線
240 不揮発メモリ
250 ターゲット管理部
251 条件判定部
252 値保持メモリ
253 アドレス一覧メモリ
310 ソースコード
320 機械語オブジェクト
320A ユーザプログラム
330 変数−アドレス対応表
331 変数名
332 アドレス情報
333 変数値
340 監視対象変数情報
341 変数名
342 有効フラグ
350 採取条件情報
350a 採取条件
410 モニタ画面
411 ソースコード表示領域
412 変数値表示領域
413 シーケンスチャート表示領域
414 不定文字列
420 ソースコード表示画面
430 採取条件設定画面
431 条件入力欄
432 比較データ入力欄
440 監視対象変数一覧画面
441 変数表示欄
442 インスタンス表示欄
443 有効/無効チェックボックス
444 全て有効ボタン
445 全て無効ボタン
449 エラー警告メッセージ
450 条件成立時表示画面
451 ステータスバー
452 メッセージ

Claims (8)

  1. プログラマブルロジックコントローラ(PLC)からなるターゲットマシンに接続されるコンピュータをソフトウェア開発支援装置として機能させるソフトウェア開発支援プログラムであって、
    ソースコードから、前記ターゲットマシンで実行されることにより前記プログラマブルロジックコントローラのラダープログラムと等価な機能を実現する機械語オブジェクト、
    および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成する処理と、
    前記ソースコードから前記変数を抽出し、監視対象の候補として登録する処理と、
    前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録する処理と、
    前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録する処理と、
    前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定する処理と、
    前記機械語オブジェクトおよび前記採取条件および前記監視対象として特定された前記アドレス情報を前記ターゲットマシンに転送することにより、当該ターゲットマシンにおいて、前記採取条件が成立したとき、前記監視対象として特定された前記アドレス情報に対応する前記変数の値のみを当該ターゲットマシン内のメモリに格納し、前記ソフトウェア開発支援装置からの転送要求に応答して転送する動作を可能にする処理と、
    前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示する処理と、
    を前記コンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
  2. 請求項1記載のソフトウェア開発支援プログラムにおいて、
    前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録する処理を前記コンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
  3. 請求項1または2のいずれかに記載のソフトウェア開発支援プログラムにおいて、
    前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録することを特徴とするソフトウェア開発支援プログラム。
  4. 請求項1または2のいずれかに記載のソフトウェア開発支援プログラムにおいて、
    さらに、登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効/無効の設定を受け付ける処理を前記コンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
  5. プログラマブルロジックコントローラ(PLC)からなるターゲットマシンに接続されるソフトウェア開発支援装置におけるソフトウェア開発支援方法であって、
    ソースコードから、前記ターゲットマシンで実行されることにより前記プログラマブルロジックコントローラのラダープログラムと等価な機能を実現する機械語オブジェクト、
    および前記ソースコードに定義された変数と当該変数の前記機械語オブジェクトにおけるアドレス情報との対応関係が記録された変数アドレス対応表を生成するステップと、
    前記ソースコードから前記変数を抽出し、監視対象の候補として登録するステップと、
    前記監視対象の候補から実際に監視する対象が選択されたとき、前記監視対象の候補を監視対象として登録するステップと、
    前記ターゲットマシンから前記監視対象の前記変数の値を採取するにあたって、そのトリガーとなる条件を採取条件として登録するステップと、
    前記変数アドレス対応表に基づき、前記監視対象となる前記アドレス情報を特定するステップと、
    前記機械語オブジェクトおよび前記採取条件および前記監視対象として特定された前記アドレス情報を前記ターゲットマシンに転送することにより、当該ターゲットマシンにおいて、前記採取条件が成立したとき、前記監視対象として特定された前記アドレス情報に対応する前記変数の値のみを当該ターゲットマシン内のメモリに格納し、前記ソフトウェア開発支援装置からの転送要求に応答して転送する動作を可能にするステップと、
    前記機械語オブジェクトが前記ターゲットマシンで実行されるときに、前記採取条件に基づいて採取される前記監視対象の値を前記ターゲットマシンから受信し、前記変数アドレス対応表に基づいて前記変数と対応づけて表示するステップと、
    を含むことを特徴とするソフトウェア開発支援方法。
  6. 請求項5記載のソフトウェア開発支援方法において、
    前記監視対象の候補から実際に監視する対象が指定されなかったとき、前記監視対象の候補全てを前記監視対象として登録することを特徴とするソフトウェア開発支援方法。
  7. 請求項5または6のいずれかに記載のソフトウェア開発支援方法において、
    登録された監視対象の前記変数に対して、ある単位毎に監視対象の有効/無効の設定を行うことを特徴とするソフトウェア開発支援方法。
  8. 請求項5または6のいずれかに記載のソフトウェア開発支援方法において、
    監視対象の前記変数の登録を自動的に行うステップでは、前記ソースコードに記述された関数に含まれる前記変数、または前記採取条件の登録時に前記ソースコードの表示画面上に表示されている前記変数、または予め一つ或いは複数の前記変数をグループ化し、該グループに含まれる前記変数を、前記監視対象の候補として登録することを特徴とするソフトウェア開発支援方法。
JP2007136039A 2007-05-22 2007-05-22 ソフトウェア開発支援プログラム、ソフトウェア開発支援方法 Active JP4877068B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007136039A JP4877068B2 (ja) 2007-05-22 2007-05-22 ソフトウェア開発支援プログラム、ソフトウェア開発支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007136039A JP4877068B2 (ja) 2007-05-22 2007-05-22 ソフトウェア開発支援プログラム、ソフトウェア開発支援方法

Publications (2)

Publication Number Publication Date
JP2008293138A JP2008293138A (ja) 2008-12-04
JP4877068B2 true JP4877068B2 (ja) 2012-02-15

Family

ID=40167818

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007136039A Active JP4877068B2 (ja) 2007-05-22 2007-05-22 ソフトウェア開発支援プログラム、ソフトウェア開発支援方法

Country Status (1)

Country Link
JP (1) JP4877068B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5253103B2 (ja) 2008-11-17 2013-07-31 日産自動車株式会社 車両用内装部品
JP5205305B2 (ja) * 2009-02-26 2013-06-05 株式会社日立製作所 プラント制御監視装置
KR20120072012A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 로봇 소프트웨어 컴포넌트의 데이터 변수 모니터링 방법 및 장치
JP2015176370A (ja) * 2014-03-14 2015-10-05 オムロン株式会社 制御システム、方法、プログラムおよび情報処理装置
JP6081018B1 (ja) 2015-04-23 2017-02-15 三菱電機株式会社 位置決め制御装置
JP2017142767A (ja) * 2016-02-09 2017-08-17 富士電機株式会社 コントローラシステム、変数連携支援装置
JP6399136B1 (ja) 2017-03-31 2018-10-03 オムロン株式会社 制御装置、制御プログラム、および制御システム
JP7173826B2 (ja) * 2018-10-23 2022-11-16 株式会社キーエンス プログラマブルロジックコントローラシステム、プログラム作成支援装置およびコンピュータプログラム
JP7273935B2 (ja) * 2018-10-23 2023-05-15 株式会社キーエンス 外部設定機器、ロギング設定方法およびプログラム
JP7212496B2 (ja) * 2018-10-23 2023-01-25 株式会社キーエンス プログラマブルロジックコントローラシステム、プログラム作成支援装置およびコンピュータプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2811804B2 (ja) * 1989-09-26 1998-10-15 富士通株式会社 変数出力範囲指定方式
JPH03144833A (ja) * 1989-10-31 1991-06-20 Yokogawa Electric Corp デバッグ・システム
JPH05274009A (ja) * 1992-03-27 1993-10-22 Keyence Corp プログラマブルコントロール装置用モニタ装置
US5896536A (en) * 1996-05-01 1999-04-20 International Business Machines Corp. Data triggered trace support for debugging object oriented programs
US6216237B1 (en) * 1998-06-19 2001-04-10 Lucent Technologies Inc. Distributed indirect software instrumentation
JP3987333B2 (ja) * 2001-12-06 2007-10-10 新日鉄ソリューションズ株式会社 性能測定装置、性能測定システム、記録媒体およびプログラム

Also Published As

Publication number Publication date
JP2008293138A (ja) 2008-12-04

Similar Documents

Publication Publication Date Title
JP4877068B2 (ja) ソフトウェア開発支援プログラム、ソフトウェア開発支援方法
KR101558832B1 (ko) 시퀀스 프로그램 디버그 지원 장치
WO2015136959A1 (ja) 制御システム、方法、プログラムおよび情報処理装置
JP4957017B2 (ja) 性能チューニング方法及び装置、プログラム及び記憶媒体
CN101251800B (zh) 图形用户界面生成方法及装置
JP2018045544A (ja) プログラム処理装置およびプログラム
JP4426492B2 (ja) プログラマブル・ターミナル・システム
US9811071B2 (en) System construction support apparatus
US8473903B2 (en) Code edit apparatus and recording medium
JP5800135B2 (ja) プログラマブルコントローラ
JP6442131B2 (ja) 制御システムおよび制御装置
JP5636783B2 (ja) プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP5425317B2 (ja) モーションsfcプログラム部品作成装置
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
JP5589670B2 (ja) デバッグ方法
CN110554966B (zh) 一种驱动调试方法、行为分析方法及驱动调试***
JP2021039568A (ja) 情報処理システム、プログラマブル表示器および情報処理装置
JP7331507B2 (ja) コントローラ、制御システム、および制御方法
JP2011216056A (ja) プログラマブルコントローラ及びその周辺装置
JP2006134099A (ja) 制御用表示装置、エディタ装置、プログラムおよび記録媒体
JP5621426B2 (ja) オプション情報解析システム、オプション情報解析方法及びプログラム
JP2021177272A (ja) デバッグ支援装置、デバッグ支援方法およびプログラム
JP2004139313A (ja) ソースコード表示システム及びプログラム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080919

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20080919

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080919

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100216

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111014

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

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