(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023168172
(43)【公開日】2023-11-24
(54)【発明の名称】検索装置
(51)【国際特許分類】
G05B 19/05 20060101AFI20231116BHJP
【FI】
G05B19/05 A
【審査請求】未請求
【請求項の数】3
【出願形態】書面
(21)【出願番号】P 2022089208
(22)【出願日】2022-05-13
(71)【出願人】
【識別番号】391017540
【氏名又は名称】東芝ITコントロールシステム株式会社
(72)【発明者】
【氏名】森 英知
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA04
5H220BB12
5H220CC06
5H220CX02
5H220JJ12
5H220JJ16
5H220JJ24
(57)【要約】
【課題】PLCのプログラムで演算処理によりメモリアドレスが指定された場合であっても当該メモリアドレスの実アドレスと使用箇所を抽出できる検索装置を提供する。
【解決手段】PLC1用のプログラム2をテキスト形式に変換したソースプログラム4と、命令語5aとオペランド5bとレジスタ5cに関する情報を格納したデータベース5と、データベース5を参照し、ソースプログラム4で使用されているインデックスレジスタ10を検出するインデックス検索手段7と、インデックスレジスタ10に対するインデックス修飾データ9を算出する算出手段8と、インデックスレジスタ10とインデックス修飾データ9の組み合わせをインデックスレジスタ情報5dとしてデータベース5に格納し、データベース5を参照して、ソースプログラム4で使用されているメモリを抽出するリファレンス検索機能と、その抽出結果を出力する出力手段11を備える検索装置。
【選択図】
図1
【特許請求の範囲】
【請求項1】
PLC用のプログラムをプログラムエディタにより変換されたテキスト形式のソースプログラムと、
前記ソースプログラムで使用される命令語とオペランドに関する情報と、レジスタに関する情報を格納したデータベースと、
前記データベースを参照し、前記ソースプログラムで使用されているインデックスレジスタを第1のインデックスレジスタ情報として検出するインデックス検索手段と、
前記インデックス検索手段により検出された前記第1のインデックスレジスタ情報に対するインデックス修飾データを算出する算出手段と、
前記第1のインデックスレジスタと前記インデックス修飾データの組み合わせを第2のインデックスレジスタ情報として前記データベースに格納し、
前記データベースを参照し、前記ソースプログラムで使用されている前記命令語に対応する前記オペランドと前記第2のインデックスレジスタ情報から前記プログラムで使用されているメモリを抽出するリファレンス検索機能と、
前記リファレンス検索機能で得られた抽出結果を前記プログラムに対するリファレンス検索結果として出力する出力手段と、
を備える検索装置。
【請求項2】
請求項1に記載の検索装置において、
前記データベースは、さらに、複数のPLC間を繋ぐ通信路の情報である伝送テーブル情報を有し、前記リファレンス検索結果を前記複数のPLCのプログラムで相互参照し、前記出力手段より前記リファレンス検索結果として出力する検索装置。
【請求項3】
請求項1または請求項2に記載の検索装置において、
前記リファレンス検索機能は、さらに、書き込み元を特定できないメモリを抽出し、前記出力手段より前記リファレンス検索結果として出力する検索装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、PLC(プログラマブルロジックコントローラ)のプログラムで使用されるメモリの検索装置に関する。
【背景技術】
【0002】
PLCのプログラムにおいて、メモリの使用状況を検索してリファレンス結果として出力することで、プログラム作成時の参考データとして利用することが広く行われている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
PLCのプログラムでは、データを大量に扱う場合にプログラム容量を抑えるためインデックス修飾と呼ばれる手法が用いられる。インデックス修飾とは、特定の命令語等によりメモリの実アドレスをポインタ指定するインデックスレジスタを使用した間接指定を用いたプログラム手法である。
【0005】
しかしながら、インデックスレジスタの対象アドレスはプログラムによる演算結果といった複合的な要素で修飾指定されるため、実際に使用されるメモリの実アドレスの検索が困難であるという問題がある。PLCのプログラムを作成するために用いられるプログラムエディタ(エンジニアリングツール)は、プログラム内で使用されているメモリの実アドレスを検索するリファレンス検索機能を有しているが、インデックスレジスタは検索の対象外となっており、プログラム作成・更新を行う際に使用されているメモリの使用状況をプログラム設計者が把握するための作業が負担となっている。
【0006】
本実施形態は、上記のような従来技術の問題点を解決するために提案されたものである。本実施形態の目的は、PLCのプログラムで演算処理によりメモリアドレスが指定された場合であっても当該メモリアドレスの実アドレスと使用箇所を抽出できる検索装置を提供することにある。
【課題を解決するための手段】
【0007】
前記目的を達成するため、請求項1記載の検索装置は、PLC(プログラマブルロジックコントローラ)用のプログラムをプログラムエディタ(エンジニアリングツール)により変換されたテキスト形式のソースプログラムと、前記ソースプログラムで使用される命令語とオペランドに関する情報と、レジスタに関する情報を格納したデータベースと、前記データベースを参照し、前記ソースプログラムで使用されているインデックスレジスタを第1のインデックスレジスタ情報として検出するインデックス検索手段と、前記インデックス検索手段により検出された前記第1のインデックスレジスタ情報に対するインデックス修飾データを算出する算出手段と、前記第1のインデックスレジスタと前記インデックス修飾データの組み合わせを第2のインデックスレジスタ情報として前記データベースに格納し、前記データベースを参照し、前記ソースプログラムで使用されている前記命令語に対応する前記オペランドと前記第2のインデックスレジスタ情報から前記プログラムで使用されているメモリを抽出するリファレンス検索機能と、前記リファレンス検索機能で得られた抽出結果を前記プログラムに対するリファレンス検索結果として出力する出力手段と、を備えることを特徴とする。
【0008】
前記目的を達成するため、請求項2記載の検索装置は、請求項1に記載の検索装置において、前記データベースは、さらに、複数のPLC間を繋ぐ通信路の情報である伝送テーブル情報を有し、前記リファレンス検索結果を前記複数のPLCのプログラムで相互参照し、前記出力手段より前記リファレンス検索結果として出力することを特徴とする。
【0009】
前記目的を達成するため、請求項3記載の検索装置は、請求項1または請求項2に記載の検索装置において、前記リファレンス検索機能は、さらに、書き込み元を特定できないメモリを抽出し、前記出力手段より前記リファレンス検索結果として出力することを特徴とする。
【図面の簡単な説明】
【0010】
【
図1】第1の実施形態の検索装置を示す機能ブロック図。
【
図3】第1の実施形態のインデックス修飾データを算出する機能を示すフロー図。
【
図4】第2の実施形態の検索装置を示す機能ブロック図。
【
図6】第3の実施形態の検索装置を示す機能ブロック図。
【発明を実施するための形態】
【0011】
(第1の実施形態)
PLC1はプログラマブルロジックコントローラと呼ばれ、例えば工場のポンプやバルブといった制御対象に対してオンオフ指令を与えたり、それぞれの状態を検出することができる汎用コントローラである。PLC1はその内部に有しているプログラム2により動作し、プログラム2はPLC1の専用のプログラムエディタ3により構築することができる。プログラムエディタ3は、様々な機能を有しており、そのうちの1つとしてプログラム2をテキスト形式化してソースプログラム4として出力することができる。
【0012】
プログラムエディタ3は、通常のコンピュータ上で動作することができる。ここで通常のコンピュータとは、CPU、記憶装置、インターフェース、等より成り、キーボードやマウス等の入力手段やCRT装置や液晶モニタ、プリンター、ファイル(メモリ)などの出力手段を備える。なお、本実施形態を含め、本願発明の検索装置もこの通常のコンピュータ上で動作するもので、前述の出力手段は
図1の出力手段11に相当する。
【0013】
本実施形態の検索装置は、テキスト形式化したソースプログラム4を対象として使用されているメモリの検出を行う、リファレンス検索機能6を有する。テキスト化されていれば対象とするプログラム2はラダー言語やST(ストラクチャードテキスト)言語などの種類は問わない。また、本実施形態の検索装置は通常のコンピュータ上で動作し、テキスト文字を判定要素としているので表計算ソフトウェア上のプログラムやC言語などの汎用言語による多様な開発環境にて構築可能なアプリケーションプログラムである。
【0014】
本実施形態の検索装置はデータベース5を有している。データベース5には、プログラム2で使用される命令語情報5a、オペランド情報5b、レジスタ情報5cが格納されており、さらに、インデックスレジスタ情報5d(第2のインデックスレジスタ情報)を登録することでメモリのリファレンス検索機能6を拡張する。検索機能フローを
図2に示すが、インデックスレジスタ情報5dはインデックス検索機能7にてソースプログラム4を先頭行から順に検索し、レジスタ情報5cと一致するインデックスレジスタ10(第1のインデックスレジスタ情報)を抽出した結果と同インデックスレジスタ10で使用されているインデックス修飾データ9を算出手段8により算出し紐づけした検索用情報である。
【0015】
PLC1は、インデックスレジスタ10とインデックス修飾データ9を組み合わせることにより、インデックスレジスタ10で指定したアドレスを柔軟に変化させ、大量データ処理に対応したメモリの指定を実現することができる。インデックス修飾データ9を算出する機能について
図3を用いて詳述すると、インデックス修飾データ9を生成する方法は様々な命令語の組合せによる演算や繰り返し動作処理も加えたプログラムで実現されるので、算出手段8によるインデックス修飾データ9の算出にはデータベース5の命令語情報5aやオペランド情報5bが有効であり、修飾データを算出するプログラムを遡って起点を抽出し、そこから算出手段の特定と修飾データを求める処理を実行することでインデックス修飾データ9が得られる。
【0016】
リファレンス検索機能6はデータベース5を参照してプログラム2で使用されているメモリを検出する。ソースプログラム4に対して先頭行から順に使用されている命令語を検索キーワードとして命令語情報5aと一致した内容に対して、オペランド情報5bとインデックスレジスタ情報5dを加えて解析することで対象メモリを抽出する。オペランドとは命令語の指定条件であり、命令語の構成要素のうち、定数や変数、更にプログラム中の個々の命令・処理の対象となるデータや、データの所在情報を示すのでメモリサイズの特定の主たる要素となる。
【0017】
リファレンス検索機能6によるプログラム2でのメモリの使用に関する検索結果は出力手段11で整列され、リファレンス結果12として一覧方式で出力される。
【0018】
本実施形態の検索装置ではテキスト化したソースプログラム4に対して、データベース5を参照することで使用されているメモリを特定して抽出することができる。また、命令語情報5aとオペランド情報5bはPLC1の機種に依存する内容なのでデータベース5への登録内容変更により同機種のバージョンアップを含めた環境変化に容易に対応することができる。
【0019】
更にインデックスレジスタ10と算出手段8により得られたインデックス修飾データ9を紐づけした(第2の)インデックスレジスタ情報5dを検索用データとして加えることにより、検索範囲(対象)が拡張される。インデックス修飾によりプログラム2で使用されるメモリはプログラム設計者がメモリ使用一覧表(図面)やプログラム2を調査した結果によりメモリの重複使用防止や割付対象の選定を実施していた為、リファレンス結果12として出力されることはプログラム設計者の負担軽減となる。
【0020】
(第2の実施形態)
第2の実施形態の検索装置について、構成を
図4にて、検索機能を
図5を参照して説明する。ここで、第1の実施形態と重複する箇所については説明を省略する。PLC1は制御対象の絶対量が多くなると他PLC13を加えた複数台のPLCを用いて制御対象を扱うことがあり、各々のPLC間を伝送ケーブルで接続し互いに必要なデータのやり取りを行うことがある。その場合、前述のデータベース5に、PLC間伝送(通信)に関する情報として、伝送対象となる他PLC13やアドレスをまとめた設定情報として伝送テーブル情報5eを兼ね備え、
図4に示すような伝送対象となる他PLC13のリファレンス結果12と合わせてリファレンス検索機能6を拡張する。
【0021】
複数PLC間の伝送に関するリファレンス確認は容易ではないが、他PLC13のリファレンス結果12を共有使用することでインデックスレジスタも対象としたメモリの使用を検索することができる。プログラム2でのメモリ重複使用、伝送信号の変更リスクを回避することでき、プログラム設計者の負担を軽減する。
【0022】
(第3の実施形態)
第3の実施形態の検索装置について、構成を
図6にて、検索機能を
図7を参照して説明する。ここで、第1,2の実施形態と重複する箇所については説明を省略する。本願発明の検索装置によりインデックスレジスタ情報5cを含むプログラムで使用されているメモリのリファレンス結果12が出力されるが、各検索実行時に書き込み元が特定できないメモリについて対象外レポート14として出力する機能も有する。
【0023】
命令語(オペランド)やインデックスレジスタおよび、修飾データに指定されるアドレスには、直接アドレス指定(絶対アドレス指定)、間接アドレス指定、インデックスアドレス指定(指標アドレス指定)、相対アドレス指定などの多様な形式があるが、メモリ内のデータからアドレス指定が生成される場合はプログラムを解析するだけでは特定できない場合がある。
【0024】
このような特定できないメモリについては一般的なリファレンス機能では出力対象外となる。リファレンス結果として出力されない状況だとプログラム設計者にとって知らないままの状態になる為、設計者の不安を拭えない。したがって、特定できていない内容をレポート出力することで設計者は特定できないメモリに対して、対象プログラムが特定できていれば調査、検出ができるので有効である。また、リファレンス不足によるメモリ使用のプログラムリスクを回避することできる。
【符号の説明】
【0025】
1・・・PLC(プログラマブルロジックコントローラ)
2・・・プログラム
3・・・プログラムエディタ
4・・・ソースプログラム(テキスト形式)
5・・・データベース
5a・・・命令語情報
5b・・・オペランド情報
5c・・・レジスタ情報
5d・・・インデックスレジスタ情報
5e・・・伝送テーブル情報
6・・・リファレンス検索機能
7・・・インデックス検索機能
8・・・修飾データの算出手段
9・・・インデックス修飾データ
10・・・インデックスレジスタ
11・・・出力手段
12・・・リファレンス結果
13・・・他PLC
14・・・対象外レポート