JP6989411B2 - 検索装置 - Google Patents

検索装置 Download PDF

Info

Publication number
JP6989411B2
JP6989411B2 JP2018026121A JP2018026121A JP6989411B2 JP 6989411 B2 JP6989411 B2 JP 6989411B2 JP 2018026121 A JP2018026121 A JP 2018026121A JP 2018026121 A JP2018026121 A JP 2018026121A JP 6989411 B2 JP6989411 B2 JP 6989411B2
Authority
JP
Japan
Prior art keywords
variable
array
variables
program
extraction unit
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
JP2018026121A
Other languages
English (en)
Other versions
JP2019144663A (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.)
Toshiba Corp
Toshiba Infrastructure Systems and Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Infrastructure Systems and Solutions 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 Toshiba Corp, Toshiba Infrastructure Systems and Solutions Corp filed Critical Toshiba Corp
Priority to JP2018026121A priority Critical patent/JP6989411B2/ja
Publication of JP2019144663A publication Critical patent/JP2019144663A/ja
Application granted granted Critical
Publication of JP6989411B2 publication Critical patent/JP6989411B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Description

本発明の実施形態は、検索装置に関する。
従来から、プラント制御システムにおいて、プラントを制御するためのアプリケーションプログラムが作成されると共に、試験及び調整された後、作成されたアプリケーションプログラムは、プラントを制御するコントローラに提供されていた。
アプリケーションプログラムの作成、更新を行う場合に、アプリケーションプログラムで使用されている変数が、自アプリケーションプログラム、又は他のアプリケーションプログラムで使用されているかを確認する必要がある。その際に、クロスリファレンス検索が利用される。
特開平11−327879号公報
しかしながら、従来技術においては変数名等でクロスリファレンス検索が行われることが多く、同一アドレスに名前が異なる変数が複数割り当てられている等が考慮されていない場合が多かった。このため、アプリケーションの作成、更新を行う際に、当該変数が影響する範囲を把握するための作業負荷が大きいという問題が生じていた。
実施形態の検索装置は、選択受付部と、第1の抽出部と、第2の抽出部と、表示制御部と、を備える。選択受付部は、プラントを制御するコントローラに出力する制御プログラムを作成するためのプログラムエディタで編集されたソースコードに含まれている第1の変数の選択を受け付ける。第1の抽出部は、ソースコードにおいて、複数の変数を配列としてまとめて処理するテーブル命令における、入力又は出力で用いられる配列に、第1の変数と同一のアドレスを参照する要素が含まれている場合に、当該入力又は出力に用いられている配列の先頭を示す、第2の変数を抽出する。第2の抽出部は、ソースコードで定義された変数のうち、第1の変数と同一のアドレスを参照する、第3の変数を抽出する。表示制御部は、第2の変数と、第3の変数と、を表示する。
図1は、実施形態のシステムをツリー形式で示した図である。 図2は、実施形態の階層ごとに定義されている変数を例示した図である。 図3は、実施形態のプログラム制御装置と、コントローラと、の構成をツリー形式で示した図である。 図4は、実施形態のプログラム表示部によって表示されるプログラムの編集画面を例示した図である。 図5は、実施形態の変数データベースのテーブル構成を例示した図である。 図6は、実施形態のソースコードデータベースのテーブル構成を例示した図である。 図7は、実施形態のテーブル命令データベースのテーブル構成を例示した図である。 図8は、実施形態のプログラム表示部が表示するコントロール変数の一覧画面を例示した図である。 図9は、メモリ領域における各変数の割り当て状態を例示した図である。 図10は、実施形態のプログラム表示部により表示された編集画面から、ソースコードに含まれている変数の選択を受け付ける画面例を示した図である。 図11は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。 図12は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。 図13は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。 図14は、実施形態のプログラム表示部によって表示されるプログラムの編集画面を例示した図である。 図15は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。 図16は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。 図17は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。 図18は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。 図19は、実施形態のプログラム制御装置におけるクロスリファレンス検索処理の手順を示すフローチャートである。 図20は、実施形態のプログラム表示部によって表示されるプログラムの編集画面を例示した図である。 図21は、実施形態の検索結果表示部により表示される検索結果画面例を示した図である。
以下に添付図面を参照し、本発明の検索装置に係る実施例を詳細に説明する。なお、以下に示す実施形態では、検索装置を、プログラム制御装置に適用した場合を示すこととするが、本発明はこれに制限するものではなく、変数を検索可能な装置であれば適用可能である。
図1は、本実施形態のシステム1をツリー形式で示した図である。図1に示されるように、本実施形態のシステム1は、複数のステーション100、101を備えている。
ステーション100は、コントローラ150、151の監視、操作用の端末であって、複数のコントローラ150、151と接続されている。なお、ステーション101は、ステーション100と同様の構成を備えているものとして、説明を省略する。
コントローラ150は、プログラム161、162を備え、プラントを制御する装置である。本実施形態のコントローラ150は、プログラム161、162に従ってプラント制御を行う。なお、コントローラ151は、プログラム163、164を備え、コントローラ150と同様の制御を行う。
プログラム161、162は、プラントを制御するためのプログラムとする。プログラム161は、ファンクション171、ファンクションブロック172を備えている。
本実施形態では、図1で示したように、階層構造となっている構成毎に変数の定義が可能となる。
図2は、本実施形態の階層ごとに定義されている変数を例示した図である。図2に示されるように、システム1は、ネットワーク251、261と、ステーション100、101と、を含んでいる。図2に示されるように、システム、ステーション、コントローラ、ローカルに従って、参照可能な範囲が定義されている。
図2に示されるように、ステーション100、101の間は、複数のネットワーク251、261で接続されているが、ネットワーク構成を制限するものではない。
ネットワーク251は、ネットワーク変数252が定義され、ネットワーク261には、ネットワーク変数262が定義されている。
ネットワーク変数252、262は、例えば、スキャン伝送方式のLAN上のスキャンデータとする。
ステーション100には、ステーション変数201と、I/O変数205と、が定義されていると共に、メインモジュール202、203、204と、I/Oモジュール206と、を備えている。なお、ステーション101は、ステーション100と同様の構成として説明を省略する。
ステーション変数201は、コントローラ間のデータの送受信に使用される。
I/O変数205は、プロセスI/O信号219や、I/Oデータ220の送受信に使用される。
メインモジュール202は、コンフィグレーション211と、タスク212と、を備え、コントローラ変数213が、定義されている。メインモジュール203は、コンフィグレーション214と、タスク215と、を備え、コントローラ変数216が、定義されている。
コンフィグレーション211、214は、メインユニットや、I/Oなどのハードウェア構成情報とする。
タスク212、215は、制御プログラムの実行スケジュール単位とする。タスク212は、ローカル変数217が定義され、タスク215は、ローカル変数218が定義されている。ローカル変数217、218は、タスク内でのみ参照できる変数とする。
コントローラ変数213、216は、コントローラ内の各種レジスタ、パラメータ、データとする。
メインモジュール(伝送モジュール)204は、ネットワーク251とデータの送受信を行うためのモジュールとする。メインモジュール(伝送モジュール)204は、ネットワーク変数252を用いることで、データの送受信を可能とする。
図2に示されるように、変数毎に、参照可能な範囲が定義されている。これら変数から、所望の変数を検索するためには、クロスリファレンス検索が用いられている。クロスリファレンス検索は、変数が、どこ(例えば、システム、ステーション、コントローラ、プログラム、及びファンクション等)で使用されているかを特定することができる。このようなクロスリファレンス検索では、変数名に基づいた検索が一般的である。
しかしながら、複数の異なる変数が、同一のアドレスを参照する場合も多い。このような場合に、変数名に基づいた検索では、当該異なる変数を関連する変数として検出するのは難しい。そこで、本実施形態においては、同一のアドレスに割り当てられた変数を検出するよう制御を行うこととした。
図3は、本実施形態のプログラム制御装置300と、コントローラ150と、の構成をツリー形式で示した図である。本実施形態のプログラム制御装置300と、コントローラ150と、は、ネットワーク251を介して接続されている。
コントローラ150は、通信部351と、メモリ部352と、で構成されている。
通信部351は、ネットワーク251を介して接続されているプログラム制御装置300とデータの送受信を制御する。
メモリ部352は、読み書き可能な記憶媒体とする。メモリ部352は、プログラム制御装置300から通信部351を介して受信した、プログラム情報361と、バイナリプログラム情報362と、を格納する。
プログラム情報361は、プログラム制御装置300から受信したプログラムに関する情報を記憶する。
バイナリプログラム情報362は、プログラム制御装置300から受信したバイナリプログラムを記憶する。
これにより、コントローラ150は、当該バイナリプログラム情報362に従って、プラント制御が可能となる。
プログラム制御装置300とは、制御プログラム編集部301と、データベース部302と、通信部303と、で構成されている。
通信部303は、ネットワーク251を介して接続されているコントローラ150とデータの送受信を制御する。本実施形態の通信部303は、プログラムコンパイラ312によってコンパイルされたプログラム(例えば、バイナリプログラム)を、コントローラ150に送信する。
制御プログラム編集部301は、プログラムエディタ311と、プログラムコンパイラ312とを備え、コントローラ150用の制御プログラム(例えば、プログラム161、162)を作成するためのツールとする。
プログラムコンパイラ312は、プログラムエディタ311で編集されたプログラムソースをコンパイルする。
プログラムエディタ311は、プログラム表示部321と、変数検索部322と、を備え、コントローラに出力する制御プログラムを作成するために、プログラムソースの編集を行う。
プログラム表示部321は、プログラムの編集画面を表示する。
図4は、プログラム表示部321によって表示されるプログラムの編集画面を例示した図である。図4に示される例では、“XV1”から10個の行列を“XV2”に移動させるテーブル移動(TMOV)401と、“XV5”に“XV4”の代入する演算402と、“XV5_B2”による判定結果が“XV5_B3”に格納されると共に“XV4_B2”による判定結果が“XV4_B3”に格納される演算403と、が示されている。図4で示された演算は、最も左に配置された演算から右方向の順に行われるが、演算の順番を制限するものではない。
図3に戻り、データベース部302は、変数データベース341と、ソースコードデータベース342と、テーブル命令データベース343と、を備えている。
変数データベース341は、プログラム制御装置300で作成された全てのプログラムソース用いられている変数毎に、当該変数によって参照されるアドレスに関する情報を記憶する。
図5は、本実施形態の変数データベース341のテーブル構成を例示した図である。図5に示されるように、変数データベース341は、ワード番号と、変数名と、データ型と、ビット番号と、ワードサイズと、配置数と、を対応付けている。
ワード番号は、当該変数が割り当てられているワード番号とする。本実施形態においてはワード単位でアドレスが割り当てられている。つまり、ワード番号を参照することで、当該変数がどのアドレスに割り当てられているか判断できる。これにより、ワード番号が同一の場合には、同一のアドレスに変数が割り当てられていることになる。なお、ワードのメモリサイズは、実施態様に応じて定められるものとする。
データ型は、当該変数に対して定義された型とする。本実施形態では、少なくとも“WORD型”と、“BOOL型”と、“WORD”型の配列(ARRAY[] OF WORD)と、“BOOL”型の配列(ARRAY[] OF BOOL)と、が定義可能とする。“WORD型”は、ワード単位で変数をメモリに割り当て、“BOOL型は、ビット単位で変数をメモリに割り当てる。
ビット番号は、変数に対して定義された型が“BOOL”型の場合に、ワード番号で示されたワードのうち、どのビットが、当該変数に割り当てられているかを識別する。
ワードサイズは、当該変数に割り当てられたワードのサイズを示している。なお、“BOOL”型の場合であっても、ワードサイズは“1”とする。
配列数は、“WORD”型の配列(ARRAY[] OF WORD)と、“BOOL”型の配列(ARRAY[] OF WORD)と、の場合に、当該配列に格納可能な要素の数とする。
図5の変数データベース341には全ての変数が格納される。例えば、コントローラ150のコントローラ変数が格納されてもよいし、ネットワーク変数、ローカル変数、I/O変数、ローカル変数が格納されてもよい。
ソースコードデータベース342は、プログラムエディタ311によって編集されたプログラムのソースコードをデータベースとして記憶する。
図6は、ソースコードデータベース342のテーブル構成を例示した図である。図6に示されるように、行と、列と、命令後番号と、ファンクション名と、変数名と、が対応付けられている。
行、及び列により、プログラムエディタの位置を特定している。そして、ファンクション名又は変数名は、行及び列によって特定された位置に対して設定されたファンクション又は変数を定義している。命令後番号は、従来と同様として説明を省略する。
テーブル命令データベース343は、プログラムエディタ311によって編集されたプログラムのソースコードに用いられているテーブル命令毎に、テーブル命令の入力及び出力で利用される変数に関する情報を記憶する。
図7は、テーブル命令データベース343のテーブル構成を例示した図である。図7に示されるように、ファンクション名と、行と、列と、接続されている変数名と、入力/出力と、転送数と、実際の転送数と、が対応付けられている。
ファンクション名は、テーブル命令を示すファンクション名とする。図7で示される例では、テーブル命令として、テーブル転送(TMOV)が設定されている例とする。
本実施形態においては、設定可能なテーブル命令を、テーブル転送(TMOV)に制限するものではない。テーブル命令としては、テーブル転送以外に、テーブル論理積、テーブル論理和、テーブル論理否定、テーブル排他的論理和、テーブル否定排他的論理和、テーブルマルチプレクサ、テーブル初期化を設定可能とする。
行、及び列により、テーブル命令が設定された位置を特定している。
接続されている変数名は、当該テーブル命令で利用されている変数を示している。
入力/出力は、接続されている変数名が入力又は出力で用いられているのかを示している。“0”の場合は入力で、“1”の場合は出力で用いられている。
転送数、実際の転送数は、当該テーブル命令で転送される変数の数を示している。
プログラム表示部321は、データベース部302を参照して、様々な情報を表示可能とする。
図8は、プログラム表示部321が表示するコントロール変数の一覧画面を例示した図である。図8に示される例では、コントロール変数の一覧を示しているが、本実施形態では、他の変数であっても同様に一覧表示を可能としている。図8に示される一覧では、変数毎に、データ型と、値と、ワード番号、ビット番号と、ワード長と、を対応付けて表示している。つまり、変数毎に、ワード番号及びビット番号を示しているため、変数毎に他の変数と同一アドレスを参照しているか否かを認識できる。
図9は、メモリ領域における各変数の割り当て状態を例示した図である。図9に示される例では、ワード番号で示されるアドレス毎に、当該アドレスに割り当てられた、WORD型の変数(ワード変数)と、BOOL型の変数(ブール変数)と、を示している。
図9に示される例では、例えばワード番号4、5、22、23、24等に示されるように、一つのワード番号に複数の変数が割り当てられていることが確認できる。
図3に戻り、変数検索部322は、上述したデータベース部302を参照して、変数のクロスリファレンス検索を行う。
変数検索部322は、選択受付部331と、アドレス抽出部332と、テーブル抽出部333と、クロスリファレンス検索部334と、検索結果表示部335と、を備えている。
選択受付部331は、プログラムエディタ311で編集された制御プログラムのソースコードに含まれている変数の選択を受け付ける。
テーブル抽出部333は、プログラム制御装置300で作成された制御プログラムのソースコードのうち、選択を受け付けた変数と同一スコープ内に設定されているテーブル命令における、入力又は出力で用いられる配列に、選択を受け付けた変数と同一のアドレスを参照する要素が含まれている場合に、当該入力又は出力に用いられている配列の先頭を示す、他の変数を抽出する。本実施形態のテーブル命令とは、複数の変数(要素)をまとめた配列の処理を行う命令とする。本実施形態のテーブル抽出部333は、テーブル命令データベースに基づいて、他の変数を抽出する。
アドレス抽出部332は、プログラム制御装置300で作成された制御プログラムのソースコードで定義された変数であって、選択を受け付けた変数と同一スコープの変数のうち、選択受付部331で選択を受け付けた変数と同一のアドレスを参照する、他の変数を抽出する。本実施形態においては、アドレス抽出部332は、変数データベース341に基づいて、選択を受け付けた変数の格納先を示したアドレスを参照する、他の変数を抽出する。本実施形態においては、型が同じ変数同士は以下の手法で抽出される。
“BOOL”型以外の場合には、参照するワードアドレスが同一の場合が抽出される。換言すれば、ワード番号が一致する変数が抽出される。“BOOL”型以外とは、基本データ型(例えば“WORD”型)の他に、配列や、構造体(ユーザが定義するデータ型)を含んでいる。
また、“BOOL”型の場合には、参照するビットアドレスが同一の場合が抽出される。換言すれば、ワード番号及びブール番号が一致する変数が抽出される。
また、本実施形態のアドレス抽出部332は、変数の型が異なるか否かにかかわらず、同一のアドレスを参照する変数であれば抽出する。型の異なる場合抽出手法は、以下に示す手法で行うことが考えられる。
“BOOL”型と“BOOL”型以外との場合、参照するワードアドレスが同一の場合が検出される。換言すれば、ワード番号が一致する変数が抽出される。
クロスリファレンス検索部334は、テーブル抽出部333により抽出された変数と、アドレス抽出部332により抽出された変数と、についてクロスリファレンス検索を行う。
クロスリファレンス検索部334によるクロスリファレンス検索は、従来の手法と同様に、複数のプログラムやファンクション等において、相互参照されている同一名の変数を検索するものとして、説明を省略する。
検索結果表示部335は、アドレス抽出部332により抽出された他の変数と、テーブル抽出部333により抽出された他の変数と、クロスリファレンス検索部334により検索された変数と、を表示する。次に、具体的な画面例に従って説明する。
図10は、プログラム表示部321により表示された編集画面から、ソースコードに含まれている変数の選択を受け付ける画面例を示した図である。
図10に示されるように、カーソル1001で変数“XV4”を指し示している状態で、左クリックがなされた場合に、変数“XV4”が選択状態1002となる。その後、プルダウンメニュー1003からクロスリファレンスリスト1004の選択を受け付けた場合に、選択受付部331は、変数“XV4”のクロスリファレンス検索を受け付けたこととなる。
テーブル抽出部333は、テーブル命令における、入力又は出力で用いられる配列に、選択を受け付けた変数“XV4”と同一のアドレスを参照する要素が含まれている場合に、テーブル命令データベース343及び変数データベース341に基づいて、当該配列の先頭を示す、他の変数を抽出する。
具体的には、テーブル抽出部333は、テーブル命令データベース343のレコード毎に、変数“XV4”と同一のアドレスを参照する要素を含む配列であるか否かを判断する。
図7に示されるテーブル命令データベース343の1行目においては、変数“XV1”から転送数“10”の場合、図5において、変数“XV1”のワード番号“1”から10個、換言すればワード番号“1”〜“10”が転送される。つまり、転送される配列には、変数“XV4”と同一アドレスであるワード番号“4”を参照する要素が含まれているため、テーブル抽出部333は、変数“XV1”を抽出する。
図7に示されるテーブル命令データベース343の2行目においては、変数“XV2”から転送数“10”の場合、図5において、変数“XV2”のワード番号“2”から10個、換言すればワード番号“2”〜“11”に転送される。つまり、転送先の配列には、変数“XV4”と同一アドレスであるワード番号“4”を参照する要素が含まれているため、テーブル抽出部333は、変数“XV2”を抽出する。
そして、アドレス抽出部332は、変数データベース341を参照して、選択受付部331で選択を受け付けた変数“XV4”と同一のワード番号と対応付けられた(換言すれば、当該変数と同一のアドレスを参照する)、他の変数を抽出する。本実施形態においては、アドレス抽出部332は、図5に示される変数データベース341を参照し、変数“XV4”とワード番号“4”が同一の変数“XV4_B2”、“XV4_B3”を抽出する。
そして、クロスリファレンス検索部334は、テーブル抽出部333により抽出された変数“XV1”、“XV2”と、アドレス抽出部332により抽出された変数“XV4_B2”、“XV4_B3”と、についてクロスリファレンス検索を行う。
図11は、検索結果表示部335により表示される検索結果画面例を示した図である。図11に示される例では、変数“XV4”のクロスリファレンス検索を受け付けた場合を示している。このため、アドレス抽出部332により抽出される変数“XV4_B2”、“XV4_B3”と、テーブル抽出部333により抽出される変数“XV1”、“XV2”と、が表示される。また、クロスリファレンス検索部334により検索された変数も表示されるが、図11では省略し、図12〜図18についても同様とする。また、表示された変数毎に、ステーション、コントローラ、タスクと、当該変数が設定された位置と、が表示される。これにより、変数毎の状況を認識できる。
次に、選択受付部331が、図4に示されるプログラムの編集画面において、変数“XV5_B2”の選択を受け付けた状態で、クロスリファレンス検索の選択を受け付けた場合について説明する。
テーブル抽出部333は、テーブル命令の入力又は出力で用いられる配列に、選択を受け付けた変数“XV5_B2”と同一のアドレスを参照する要素が含まれている場合に、テーブル命令データベース343及び変数データベース341に基づいて、当該配列の先頭を示す、他の変数を抽出する。
テーブル抽出部333は、テーブル命令データベース343のレコード毎に、変数“XV5_B2”と同一のアドレスを参照する要素を含む配列であるか否かを判断する。
図7に示されるテーブル命令データベース343の1行目においては、変数“XV1”から転送数“10”の場合、図5において、変数“XV1”のワード番号“1”から10個、換言すればワード番号“1”〜“10”が転送される。つまり、転送される配列には、変数“XV5_B2”と同一アドレスであるワード番号“5”を参照する要素が含まれているため、テーブル抽出部333は、変数“XV1”を抽出する。
図7に示されるテーブル命令データベース343の2行目においては、変数“XV2”から転送数“10”の場合、図5において、変数“XV2”のワード番号“2”から10個、換言すればワード番号“2”〜“11”に転送される。つまり、転送先の配列には、変数“XV5_B2”と同一アドレスであるワード番号“5”を参照する要素が含まれているため、テーブル抽出部333は、変数“XV2”を抽出する。
そして、アドレス抽出部332は、変数データベース341を参照して、選択受付部331で選択を受け付けた変数“XV5_B2”と同一のワード番号と対応付けられた(換言すれば、当該変数と同一のアドレスを参照する)、他の変数を抽出する。本実施形態においては、アドレス抽出部332は、図5に示される変数データベース341を参照し、変数“XV5_B2”とワード番号“5”が同一の変数“XV5”を抽出する。なお、“BOOL”型同士の場合は、ブール番号も一致する必要がある。このため、変数“XV5_B2”は、変数“XV5_B2”とワード番号“5”が一致するが、ブール番号が一致しないため抽出されない。
図12は、検索結果表示部335により表示される検索結果画面例を示した図である。図12に示される例では、変数“XV5_B2”のクロスリファレンス検索を受け付けた場合を示している。このため、アドレス抽出部332により抽出される変数“XV5”と、テーブル抽出部333により抽出される変数“XV1”、“XV2”と、が表示される。
次に、選択受付部331が、図4に示されるプログラムの編集画面において、変数“XV2”の選択を受け付けた状態で、クロスリファレンス検索を受け付けた場合について説明する。
テーブル抽出部333は、テーブル命令データベース343のレコード毎に、変数“XV2”と同一のアドレスを参照する要素を含む配列であるか否かを判断する。
図7に示されるテーブル命令データベース343の1行目においては、変数“XV1”から転送数“10”の場合、図5において、変数“XV1”のワード番号“1”から10個、換言すればワード番号“1”〜“10”が転送される。つまり、転送される配列には、変数“XV2”と同一アドレスであるワード番号“2”を参照する要素が含まれているため、テーブル抽出部333は、変数“XV1”を抽出する。
図7に示されるテーブル命令データベース343の2行目においては、“接続された変数名”が、変数“XV2”と一致している。
テーブル抽出部333は、テーブル命令データベース343の“接続された変数名”で示された、配列の先頭を示す変数が、選択を受け付けた変数名と一致している場合に、当該ソースコードのうち、当該配列に含まれている要素と同一のアドレスを参照する変数を全て抽出する。換言すれば、テーブル抽出部333は、当該ソースコードにおいて、変数“XV2”のワード番号“2”から10個、換言すればワード番号“2”〜“11”を参照する全ての変数を抽出する。抽出には、図5に示されるような変数データベース341を用いるが、図9を用いて説明する。
図9に示されるようなメモリ領域における各変数の割り当て状態において、テーブル移動(TMOV)401は、変数“XV1”からの配列901を、変数“XV2”からの配列902に移動させている。
そして、テーブル抽出部333は、変数“XV2”からの配列902(ワード番号“2”〜“11”)で示される範囲のうち、図4の編集画面に示されている、全ての変数“XV4”、“XV4_B2”、“XV4_B3”、“XV5”、“XV5_B2”、“XV5_B3”を抽出する。
アドレス抽出部332は、変数データベース341を参照して、選択受付部331で選択を受け付けた変数“XV2”と同一のワード番号と対応付けられた他の変数を抽出する。図5に示された変数データベース341においては、変数“XV2”と同一のワード番号の変数は存在しない。このため、アドレス抽出部332は、変数を抽出しない。
図13は、検索結果表示部335により表示される検索結果画面例を示した図である。図13に示される例では、変数“XV2”のクロスリファレンス検索を受け付けた場合を示している。このため、テーブル抽出部333により抽出される変数“XV1”、“XV4”、“XV4_B2”、“XV4_B3”、“XV5”、“XV5_B2”、“XV5_B3”と、が表示される。
図14は、プログラム表示部321によって表示されるプログラムの編集画面を例示した図である。図14に示される例では、変数“XV20_ARRAY[0]”から5個の行列を変数“XV20_ARRAY[2]”に移動させるテーブル移動(TMOV)1401と、変数“XV20_ARRAY[2]”を変数“XV20_ARRAY[4]”の代入する演算1402と、変数“XV23”を変数“XV24”に代入する演算1403と、変数“XV22_B_ARRAY[0]”による判定結果が変数“XV22_B_ARRAY[5]”に格納される演算1404と、が示されている。
次に、選択受付部331が、図14に示されるプログラムの編集画面において、変数“XV20_ARRAY[4]”1411の選択を受け付けた状態で、クロスリファレンス検索を受け付けた場合について説明する。
テーブル移動(TMOV)1401の入力では、変数“XV20_ARRAY[0]”から5ワード参照されている。変数“XV20_ARRAY[0]”から5ワードには、変数“XV20_ARRAY[4]”が含まれている。従って、テーブル抽出部333は、配列の先頭を示す変数“XV20_ARRAY[0]”を抽出する。
テーブル移動(TMOV)1401では、出力で変数“XV20_ARRAY[2]”から5ワード参照されている。変数“XV20_ARRAY[2]”から5ワードには、変数“XV20_ARRAY[4]”が含まれている。従って、テーブル抽出部333は、配列の先頭を示す変数“XV20_ARRAY[2]”を抽出する。
そして、アドレス抽出部332は、変数データベース341を参照して、選択受付部331で選択を受け付けた変数“XV20_ARRAY[4]”と同一のワード番号と対応付けられた、他の変数を抽出する。本実施形態においては、アドレス抽出部332は、図5に示される変数データベース341を参照し、変数“XV20_ARRAY[4]”とワード番号“24”が同一の変数“XV24”を抽出する。
図15は、検索結果表示部335により表示される検索結果画面例を示した図である。図15に示される例では、変数“XV20_ARRAY[4]”のクロスリファレンス検索を受け付けた場合を示している。このため、アドレス抽出部332により抽出される変数“XV24”と、テーブル抽出部333により抽出される変数“XV20_ARRAY[0]”、“XV20_ARRAY[2]”と、が表示される。
次に、選択受付部331が、図14に示されるプログラムの編集画面において、変数“XV22_B_ARRAY[0]”1412の選択を受け付けた状態で、クロスリファレンス検索を受け付けた場合について説明する。
テーブル抽出部333は、テーブル命令データベース343のレコード毎に、当該テーブル命令で変数“XV22_B_ARRAY[0]”が参照されているか否かを判断する。
テーブル移動(TMOV)1401の入力では、変数“XV20_ARRAY[0]”から5ワード参照されている。変数“XV20_ARRAY[0]”から5ワードには、変数“XV22_B_ARRAY[0]”が含まれている。従って、テーブル抽出部333は、配列の先頭を示す変数“XV20_ARRAY[0]”を抽出する。
テーブル移動(TMOV)1401の出力では、変数“XV20_ARRAY[2]”から5ワード参照されている。変数“XV20_ARRAY[2]”から5ワードには、変数“XV22_B_ARRAY[0]”が含まれている。従って、テーブル抽出部333は、配列の先頭を示す変数“XV20_ARRAY[2]”を抽出する。
そして、アドレス抽出部332は、変数データベース341を参照して、選択受付部331で選択を受け付けた変数“XV22_B_ARRAY[0]”と同一のワード番号と対応付けられた、他の変数を抽出する。本実施形態においては、アドレス抽出部332は、図5に示される変数データベース341を参照し、変数“XV22_B_ARRAY[0]”とワード番号“22”が同一の変数“XV20_ARRAY[2]”を抽出する。
図16は、検索結果表示部335により表示される検索結果画面例を示した図である。図16に示される例では、変数“XV22_B_ARRAY[0]”のクロスリファレンス検索を受け付けた場合を示している。このため、テーブル抽出部333により抽出される変数“XV20_ARRAY[0]”、“XV20_ARRAY[2]”と、アドレス抽出部332により抽出される変数“XV20_ARRAY[2]”と、が表示される。
上述したように、選択を受け付けた変数名と、テーブル命令の入力又は出力で用いられている、配列の先頭の変数と、が一致している場合には、プログラムソースに含まれる変数のうち、当該配列に含まれている要素と同一のアドレスを参照する変数を全て抽出する。しかしながら、1つのプログラムソースに、1つの変数が複数箇所で設定されている場合に、選択を受け付けた変数の箇所に応じて、検出結果を異ならせても良い。例えば、同一の変数名の選択を受け付けた場合であっても、テーブル命令の入力又は出力に用いられる配列の先頭の変数であるか否かに応じて、抽出結果を異ならせても良い。
例えば、図14に示されるプログラムの編集画面において、変数“XV20_ARRAY[2]”1413が選択された場合と、変数“XV20_ARRAY[2]”1414が選択された場合と、で抽出される変数を異ならせることが考えられる。
まずは、選択受付部331が、図14に示されるプログラムの編集画面において、変数“XV20_ARRAY[2]”1414の選択を受け付けた状態(テーブル命令の入力又は出力に用いられる配列の先頭の変数を選択していない場合)で、クロスリファレンス検索を受け付けた場合について説明する。
テーブル移動(TMOV)1401の入力では、変数“XV20_ARRAY[0]”から5ワード参照されている。“XV20_ARRAY[0]”から5ワードには、変数“XV20_ARRAY[2]”が含まれている。従って、テーブル抽出部333は、配列の先頭を示す変数“XV20_ARRAY[0]”を抽出する。
テーブル移動(TMOV)1401の出力では、変数“XV20_ARRAY[2]”から5ワード参照されている。“XV20_ARRAY[2]”から5ワードには、変数“XV20_ARRAY[2]”が含まれている。従って、テーブル抽出部333は、配列の先頭を示す変数“XV20_ARRAY[2]”を抽出する。
そして、アドレス抽出部332は、変数データベース341を参照して、選択受付部331で選択を受け付けた変数“XV20_ARRAY[2]”と同一のワード番号と対応付けられた、他の変数を抽出する。本実施形態においては、アドレス抽出部332は、図5に示される変数データベース341を参照し、変数“XV20_ARRAY[2]”とワード番号“22”が同一の変数“XV22_B_ARRAY[0]”、及び変数“XV22_B_ARRAY[5]”を抽出する。
図17は、検索結果表示部335により表示される検索結果画面例を示した図である。図17に示される例では、変数“XV20_ARRAY[2]”1414のクロスリファレンス検索を受け付けた場合を示している。このため、テーブル抽出部333により抽出される変数“XV20_ARRAY[0]”、及び変数“XV20_ARRAY[2]”と、アドレス抽出部332により抽出される変数“XV22_B_ARRAY[0]”、及び変数“XV22_B_ARRAY[5]”と、が表示される。
次に、選択受付部331が、図14に示されるプログラムの編集画面において、変数“XV20_ARRAY[2]”1413の選択を受け付けた状態(テーブル命令の入力又は出力に用いられる配列の先頭の変数を選択した場合)で、クロスリファレンス検索を受け付けた場合について説明する。
テーブル移動(TMOV)1401の入力では、変数“XV20_ARRAY[0]”から5ワード参照されている。変数“XV20_ARRAY[0]”から5ワードには、変数“XV20_ARRAY[2]”が含まれている。従って、テーブル抽出部333は、配列の先頭を示す変数“XV20_ARRAY[2]”を抽出する。
テーブル移動(TMOV)1401の出力では、選択を受け付けた変数“XV20_ARRAY[2]”1413が、配列の先頭の変数である。そこで、テーブル抽出部333は、ソースコードのうち、変数“XV20_ARRAY[2]”を先頭とした配列に含まれている要素と同一のアドレスを参照する変数を全て抽出する。換言すれば、テーブル抽出部333は、当該ソースコードにおいて、変数“XV20_ARRAY[2]”のワード番号“22”から5個、換言すればワード番号“22”〜“26”を参照する全ての変数を抽出する。抽出には、図5に示されるような変数データベース341を用いるが、図9を用いて説明する。
図9に示されるようなメモリ領域における各変数の割り当て状態において、テーブル移動(TMOV)1401は、変数“XV20_ARRAY[0]”からの配列911を、変数“XV20_ARRAY[2]”からの配列912に移動させている。
そして、テーブル抽出部333は、変数“XV20_ARRAY[2]”からの配列912で示される範囲のうち、図14のプログラムの編集画面に示されている、変数“XV20_ARRAY[4]”、“XV22_B_ARRAY[0]”、“XV22_B_ARRAY[5]”、“XV23”、及び“XV24”を抽出する。
そして、アドレス抽出部332は、変数データベース341を参照して、選択受付部331で選択を受け付けた変数“XV20_ARRAY[2]”と同一のワード番号と対応付けられた、他の変数を抽出する。本実施形態においては、アドレス抽出部332は、図5に示される変数データベース341を参照し、変数“XV20_ARRAY[2]”とワード番号“22”が同一の変数“XV22_B_ARRAY[0]”、及び“XV22_B_ARRAY[5]”を抽出する。
図18は、検索結果表示部335により表示される検索結果画面例を示した図である。図18に示される例では、変数“XV20_ARRAY[2]”1414のクロスリファレンス検索を受け付けた場合を示している。このため、テーブル抽出部333及びアドレス抽出部332により抽出される変数“XV20_ARRAY[0]”、“XV20_ARRAY[2]”、“XV20_ARRAY[4]”、“XV22_B_ARRAY[0]”、“XV22_B_ARRAY[5]”、“XV23”、及び“XV24”が表示される。
次に、本実施形態のプログラム制御装置300におけるクロスリファレンス検索処理について説明する。図19は、本実施形態のプログラム制御装置300における上述した処理の手順を示すフローチャートである。
まずは、選択受付部331が、プログラムの編集画面に表示されている変数の選択を受け付けた状態で、クロスリファレンス検索の選択を受け付ける(S1901)。
テーブル抽出部333は、選択を受け付けた変数が含まれているソースコードに設定されているテーブル命令における、入力又は出力で用いられる配列に、選択を受け付けた変数と同一のアドレスを参照する要素が含まれている場合に、当該入力又は出力に用いられている配列の先頭を示す、他の変数を抽出する(S1902)。また、テーブル命令の入力又は出力における、配列の先頭の変数が、選択を受け付けた変数の場合に、テーブル抽出部333は、ソースコードのうち、当該配列に含まれている要素と同一のアドレスを参照する変数を全て抽出する。
次に、アドレス抽出部332は、選択を受け付けた変数と同一スコープの変数のうち、選択を受け付けた変数と同一のアドレスを参照する、他の変数を抽出する(S1903)。
クロスリファレンス検索部334は、S1902で抽出された、配列の先頭を示す他の変数について、クロスリファレンス検索を行う(S1904)。
クロスリファレンス検索部334は、S1903で抽出された、同一のアドレスを参照する他の変数について、クロスリファレンス検索を行う(S1905)。
検索結果表示部335は、配列の先頭を示す他の変数、同一のアドレスを参照する他の変数、及びS1904及びS1905のクロスリファレンス検索で検出された変数を表示する(S1906)。
上述した処理手順により、選択を受け付けた変数に関連する他の変数が表示されるため、プログラムソースの開発負担を軽減できる。
図20は、プログラム表示部321によって表示されるプログラムの編集画面を例示した図である。図20に示される例では、変数“XV1”から10個の行列を変数“XV2”に移動させるテーブル移動(TMOV)2001と、変数“XV5”に変数“XV4”の代入する演算2002と、変数“XV5_B2”による判定結果が変数“XV5_B3”に格納されると共に変数“XV4_B2”による判定結果が変数“XV4_B3”に格納される演算2003と、変数“V1”を用いて所定の演算を行った結果変数“V2”を出力する演算2004と、を行うプログラムソース2000と、変数“INV”と変数“XV1”とを用いた演算結果として変数“OUTV”を出力する所定の演算2011を行うプログラムソース2010と、が示されている。
そして、選択受付部331は、変数“XV4”の選択を受け付けた状態2050で、クロスリファレンス検索の選択を受け付けたものとする。図20で示される例では、選択を受け付けた変数“XV4”がローカル変数の場合とする。
この場合、テーブル抽出部333は、同一スコープ内のテーブル移動(TMOV)から、変数“XV1”と変数“XV2”とを抽出する。そして、アドレス抽出部332は、変数“XV4”と同一スコープ内の変数のうち、変数“XV4”と同一のアドレスを参照する(ワード番号が一致する)、変数“XV_B2”、変数“XV_B3”を抽出する。
さらに、クロスリファレンス検索部334は、変数“XV1”と変数“XV2”についてクロスリファレンス検索を行うことで、プログラムソース2010の演算2011の入力に用いられている変数“XV1”を検出する。同様に、クロスリファレンス検索部334は、変数“XV_B2”、変数“XV_B3”についてクロスリファレンス検索を行うが、特に検出されなかったものとする。
図21は、検索結果表示部335により表示される検索結果画面例を示した図である。図21に示される例では、変数XVのクロスリファレンス検索を受け付けた場合を示している。このため、テーブル抽出部333により抽出される変数“XV1”、変数“XV2”、変数“XV20_ARRAY[2]”と、アドレス抽出部332により抽出される変数“XV4_B2”、変数“XV4_B3”に加えて、クロスリファレンス検索部334により検出された変数“XV1”(レコード2101)が表示される。
本実施形態のプログラム制御装置300は、アドレス抽出部332により変数を抽出することで、変数名が異なる場合であっても、選択を受け付けた変数と同一アドレスを参照する変数が抽出されるので、変数に関する変更を行う場合に影響を与える範囲を認識できるので、プログラムの作成、変更する際の負担を軽減できる。
また、本実施形態のプログラム制御装置300は、テーブル抽出部333により変数を抽出することで、テーブル命令の入力又は出力で用いられる変数の配列に、選択を受け付けた変数が含まれる場合に、当該入力又は出力で用いられる変数を抽出するので、変数に関する変更を行う場合に影響を与える範囲を認識できるので、プログラムの作成、変更する際の負担を軽減できる。
また、本実施形態のプログラム制御装置300は、アドレス抽出部332により抽出された変数と、テーブル抽出部333により抽出された変数と、を用いてクロスリファレンス検索を行うことで、同一スコープ内に限らず、他のスコープに影響を与える範囲を認識できるので、プログラムの作成、変更する際の負担を軽減できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…システム、100、101…ステーション、150、151…コントローラ、251、261…ネットワーク、300…プログラム制御装置、301…制御プログラム編集部、302…データベース部、303…通信部、311…プログラムエディタ、312…プログラムコンパイラ、321…プログラム表示部、322…変数検索部、331…選択受付部、332…アドレス抽出部、333…テーブル抽出部、334…クロスリファレンス検索部、335…検索結果表示部、341…変数データベース、342…ソースコードデータベース、343…テーブル命令データベース、351…通信部、352…メモリ部。

Claims (5)

  1. プラントを制御するコントローラに出力する制御プログラムを作成するためのプログラムエディタで編集されたソースコードに含まれている第1の変数の選択を受け付ける選択受付部と、
    前記ソースコードにおいて、複数の変数を配列としてまとめて処理するテーブル命令における、入力又は出力で用いられる配列に、前記第1の変数と同一のアドレスを参照する要素が含まれている場合に、当該入力又は出力に用いられている配列の先頭を示す、第2の変数を抽出する第1の抽出部と、
    前記ソースコードで定義された変数のうち、前記第1の変数と同一のアドレスを参照する、第3の変数を抽出する第2の抽出部と、
    前記第2の変数と、前記第3の変数と、を表示する表示制御部と、
    を備える検索装置。
  2. 前記ソースコードで用いられているテーブル命令毎に、当該テーブル命令の入力及び出力で利用される変数の配列に関する情報を記憶するテーブル命令データベースを、さらに備え、
    前記第1の抽出部は、前記テーブル命令データベースに基づいて、前記第2の変数を抽出する、
    請求項1に記載の検索装置。
  3. 前記ソースコードで用いられている変数毎に、当該変数によって参照されるアドレスに関する情報を記憶する変数データベースを、さらに備え、
    前記第2の抽出部は、前記変数データベースに基づいて、前記第3の変数を抽出する、
    請求項1又は2に記載の検索装置。
  4. 前記第1の抽出部は、さらに、前記ソースコードにおいて、前記テーブル命令のうち、入力又は出力に用いられている配列の先頭を示す変数が、前記第1の変数と一致している場合に、前記ソースコードのうち、前記配列に含まれている要素と同一のアドレスを参照する、第4の変数を抽出する、
    請求項1乃至3のいずれか一つに記載の検索装置。
  5. 前記第2の変数と、前記第3の変数と、に基づいて、複数のプログラムで相互参照されている変数を検索するクロスリファレンス検索部を、さらに備える、
    請求項1乃至4のいずれか一つに記載の検索装置。
JP2018026121A 2018-02-16 2018-02-16 検索装置 Active JP6989411B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018026121A JP6989411B2 (ja) 2018-02-16 2018-02-16 検索装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018026121A JP6989411B2 (ja) 2018-02-16 2018-02-16 検索装置

Publications (2)

Publication Number Publication Date
JP2019144663A JP2019144663A (ja) 2019-08-29
JP6989411B2 true JP6989411B2 (ja) 2022-01-05

Family

ID=67771188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018026121A Active JP6989411B2 (ja) 2018-02-16 2018-02-16 検索装置

Country Status (1)

Country Link
JP (1) JP6989411B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7322604B2 (ja) * 2019-09-04 2023-08-08 オムロン株式会社 プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11327879A (ja) * 1998-05-15 1999-11-30 Fujitsu Ltd 変数検索装置及び方法並びに変数検索プログラムを記録したコンピュータ読取り可能な記録媒体
JP2003241997A (ja) * 2002-02-20 2003-08-29 Denso Corp 割込命令チェック装置及び割込命令チェックプログラム
JP2005293371A (ja) * 2004-04-01 2005-10-20 Mitsubishi Electric Corp プログラム解析装置
JP2013254320A (ja) * 2012-06-06 2013-12-19 Nec Corp 実行トレース表示装置、実行トレース表示方法及び実行トレース表示プログラム

Also Published As

Publication number Publication date
JP2019144663A (ja) 2019-08-29

Similar Documents

Publication Publication Date Title
US10824810B2 (en) System and method for identifying correlated operator action events based on text analytics of operator actions
CN101295169B (zh) 使用储存在字符串标签中的名称来间接存取控制器数据的方法
US9128734B2 (en) Menu screen for an operation monitoring apparatus
US20170351723A1 (en) Managing data format of data received from devices in an internet of things network
US20150089415A1 (en) Method of processing big data, apparatus performing the same and storage media storing the same
US20160125037A1 (en) Information processing apparatus, information processing method, information processing program, and storage medium
JP2007249312A (ja) フィールド機器管理装置およびフィールド機器管理方法
CN109614325B (zh) 一种确定控件属性的方法及装置、电子设备和存储介质
JP7031627B2 (ja) 解析装置、解析方法、及び解析プログラム
US20190303517A1 (en) Simulation device
CN110888756A (zh) 一种诊断日志生成方法及装置
US20220292056A1 (en) Method and apparatus for modifying file name, and storage medium
JP6989411B2 (ja) 検索装置
US8700186B2 (en) Plant control system and program relocate method
JP2010238225A (ja) Plcのプログラミングにおける変数名の入力支援方法
KR20180004825A (ko) 디버그 장치, 디버그 방법 및 디버그 프로그램
JP4379687B2 (ja) シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品
CN105389394A (zh) 基于多个数据库集群的数据请求处理方法及装置
EP3032362B1 (en) Automatic generation of hardware configuration for an automation system
KR101704145B1 (ko) 이기종 데이터베이스를 지원하는 제어기 관리 스테이션 및 이를 포함하는 제어 시스템
US10691635B1 (en) Data translation system and method of use
CN114721736B (zh) 一种基于软plc的数据管理方法和系统
CN115987865A (zh) 一种路由代码生成方法、装置、矩阵检测方法及储存介质
KR101846140B1 (ko) 프로그램 진단 장치, 프로그램 진단 방법 및 프로그램 진단 프로그램
JP7235459B2 (ja) アプリ設定選択装置及び製造システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201106

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211028

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211202

R150 Certificate of patent or registration of utility model

Ref document number: 6989411

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150