(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024115839
(43)【公開日】2024-08-27
(54)【発明の名称】プログラム設計支援システム
(51)【国際特許分類】
G05B 19/05 20060101AFI20240820BHJP
G06F 8/51 20180101ALI20240820BHJP
【FI】
G05B19/05 A
G06F8/51
【審査請求】未請求
【請求項の数】2
【出願形態】OL
(21)【出願番号】P 2023021706
(22)【出願日】2023-02-15
(71)【出願人】
【識別番号】501137636
【氏名又は名称】株式会社TMEIC
(74)【代理人】
【識別番号】100108062
【弁理士】
【氏名又は名称】日向寺 雅彦
(74)【代理人】
【識別番号】100168332
【弁理士】
【氏名又は名称】小崎 純一
(74)【代理人】
【識別番号】100146592
【弁理士】
【氏名又は名称】市川 浩
(74)【代理人】
【氏名又は名称】内田 敬人
(72)【発明者】
【氏名】岡本 倫一
【テーマコード(参考)】
5B081
5H220
【Fターム(参考)】
5B081AA00
5H220AA01
5H220BB12
5H220CC06
5H220CX02
5H220DD04
5H220DD06
5H220JJ12
5H220JJ16
5H220JJ24
5H220JJ41
5H220JJ47
(57)【要約】
【課題】電子化データとして入手できないプログラムを自動的に変換するプログラム設計支援システムを提供する。
【解決手段】実施形態は、モニタに表示された文字情報を含む画像データを生成する撮像手段と、前記文字情報からテキストデータを認識する認識手段と、あらかじめ設定された変換前の第1プログラミング言語の定義にしたがって、前記テキストデータを1つ以上の第1プログラム文と解釈し、前記1つ以上の第1プログラム文ごとに、変換後の第2プログラミング言語の定義にしたがって、1つ以上の第2プログラミング言語のプログラム文に順次変換する変換手段と、を備える。前記第1プログラミング言語の定義は、1つ以上の文字からなる命令語および1つ以上の文字からなる変数情報を含む。前記1つ以上の文字からなる命令語は、前記第2プログラミング言語のファンクションブロックに関連付けられる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
モニタの表示を撮影し、前記モニタに表示された文字情報を含む画像データを生成する撮像手段と、
前記撮像手段から前記画像データを取得し、前記文字情報からテキストデータを認識する認識手段と、
あらかじめ設定された変換前の第1プログラミング言語の定義にしたがって、前記テキストデータを1つ以上の第1プログラム文と解釈し、前記1つ以上の第1プログラム文ごとに、変換後の第2プログラミング言語の定義にしたがって、1つ以上の第2プログラミング言語のプログラム文に順次変換する変換手段と、
を備え、
前記第1プログラミング言語の定義は、1つ以上の文字からなる命令語および1つ以上の文字からなる変数情報を含み、
前記1つ以上の文字からなる命令語は、前記第2プログラミング言語のファンクションブロックに関連付けられたプログラム設計支援システム。
【請求項2】
前記1つ以上の第1プログラム文は、2つ以上であり、さらにEND命令を含み、
前記変換手段は、END命令を前記第2プログラミング言語に対応させ、
前記変換手段は、前記2つ以上の第1プログラム文を、2つ以上の第2プログラム文に順次変換し、
2つ以上の第2プログラム文を順次接続する接続処理手段をさらに備え、
前記接続処理手段は、前記第2プログラミング言語のEND命令に対応する命令を検出することによって、処理を終了する請求項1記載のプログラム設計支援システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、プラント制御に用いられるプラント制御装置に実装されるプログラムの更新を支援するプログラム設計支援システムに関する。
【背景技術】
【0002】
鉄鋼プラント等で使用されているプログラマブルコントローラ(PLC)等のプラント制御装置を含む既設の制御システムにおいては、制御システムを構成する機器や装置等が老朽等した場合、新しい制御システムに更新することがある。
【0003】
既設のPLC等を更新する場合には、既設のPLC等に実装されているプログラムを新しいPLC等に移植する必要がある。この場合において、既設のPLC等と新しいPLC等とで使用できるプログラミング言語が異なることがある。そのような場合には、プログラミング言語を変換した後、新しい制御システムに対応したプログラムを設計する必要がある。
【0004】
プラントによっては、旧式の制御システムが導入されている場合も多く、既設のPLCやエンジニアリングツールによっては、実装されているプログラムのソースを読み出して、記憶媒体に保存することが困難な場合がある。
【0005】
このような場合には、プログラムのソースをモニタに表示して、表示された画像をカメラで撮影したり、プログラマが書き写したりした後に、それらを新しいプログラミング言語に手作業で変換することになる。
【0006】
新しい制御システムへの移行には、プログラムの規模が大きくなる場合もあり、上述の作業を効率化したいとの要望が強い。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、上記のような課題を解決するためになされたものであり、電子化データとして入手できないプログラムを自動的に変換するプログラム設計支援システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の実施形態は、モニタの表示を撮影し、前記モニタに表示された文字情報を含む画像データを生成する撮像手段と、前記撮像手段から前記画像データを取得し、前記文字情報からテキストデータを認識する認識手段と、あらかじめ設定された変換前の第1プログラミング言語の定義にしたがって、前記テキストデータを1つ以上の第1プログラム文と解釈し、前記1つ以上の第1プログラム文ごとに、変換後の第2プログラミング言語の定義にしたがって、1つ以上の第2プログラミング言語のプログラム文に順次変換する変換手段と、を備える。前記第1プログラミング言語の定義は、1つ以上の文字からなる命令語および1つ以上の文字からなる変数情報を含む。前記1つ以上の文字からなる命令語は、前記第2プログラミング言語のファンクションブロックに関連付けられる。
【発明の効果】
【0010】
実施形態によれば、電子化データとして入手できないプログラムを自動的に変換するプログラム設計支援システムが提供される。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係るプログラム設計支援システムを例示する模式的なブロック図である。
【
図2】
図2(a)~
図2(c)は、実施形態に係るプログラム設計支援システムの認識部の動作を説明するための模式図である。
【
図3】
図3(a)および
図3(b)は、実施形態に係るプログラム設計支援システムの動作を説明するための模式図である。
【
図4】実施形態に係るプログラム設計支援システムの接続処理部の動作を説明するための模式図である。
【
図5】実施形態に係るプログラム設計支援システムの全体の動作を説明するためのフローチャートの例である。
【発明を実施するための形態】
【0012】
以下、実施の形態について図面を参照しつつ説明する。
なお、図面は模式的または概念的なものであり、各部分の厚みと幅との関係、部分間の大きさの比率などは、必ずしも現実のものと同一とは限らない。また、同じ部分を表す場合であっても、図面により互いの寸法や比率が異なって表される場合もある。
なお、本願明細書と各図において、既出の図に関して前述したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
【0013】
図1は、実施形態に係るプログラム設計支援システムを例示する模式的なブロック図である。
図1に示すように、プログラム設計支援システム100は、撮像装置10と、プログラム設計支援装置20と、を備える。
【0014】
実施形態に係るプログラム設計支援システム100では、既設のPLCには、テキストベースの制御用のプログラムが実装されており、このプログラムは、ラダー図の接続情報を所定の文法ルールにしたがって表すように構成されている。変換後のプログラミング言語は、ファンクションブロック形式を採用し、たとえばラダー図を構成する要素に対応するファンクションブロックを配置して接続することによって、プログラムが構成される。変換後のプログラミング言語は、たとえばIEC 61131-3に対応した言語である。以下では、変換前のプログラムやプログラミング言語を「旧プログラム」、「旧プログラミング言語」といい、変換後のプログラムやプログラミング言語を「新プログラム」、「新プログラミング言語」ということがある。
【0015】
撮像装置10は、プログラム設計支援装置20に接続されている。撮像装置10は、モニタに表示させた旧プログラムのソースを撮影して、旧プログラムのソースの情報を含む画像データD1を生成する。撮像装置10は、生成された画像データD1をプログラム設計支援装置20に出力する。撮像装置10は、モニタ表示される旧プログラムのソースを撮影できれば、プログラム設計支援装置20に常時接続されている必要はなく、画像データD1を出力する場合にプログラム設計支援装置20に接続すればよい。また、撮像装置10は、着脱可能な記憶媒体を有しており、画像データD1を記憶した記憶媒体をプログラム設計支援装置20に接続してもよい。
【0016】
プログラム設計支援装置20は、認識部22と、変換部24と、接続処理部26と、データベース30と、を有する。
【0017】
認識部22は、撮像装置10に接続して、画像データD1を入力する。認識部22は、画像データD1を画像処理して、テキストデータD2を認識し、抽出する。画像データD1からテキストデータD2への変換には、たとえば、周知のOCR技術を用いたソフトウェア等を利用することができる。認識部22は、認識されたテキストデータD2を変換部24に出力する。
【0018】
変換部24は、テキストデータD2を入力して、新プログラミング言語に変換して、プログラム文D3を生成する。変換部24には、入力されたテキストデータD2に、あらかじめ設定された旧プログラミング言語の文法ルールを適用して、旧プログラムのプログラム文を解釈する。変換部24は、旧プログラムのプログラム文の解釈にしたがって、プログラム文ごとに、新プログラムのプログラム文D3を生成して、生成したプログラム文D3を接続処理部26に順次出力する。
【0019】
変換部24は、旧プログラミング言語の文法ルールでは、1つまたは複数のテキストの集合を、変数情報または命令語のいずれかであるものと認識する。また、変換部24は、旧プログラミング言語の文法ルールでは、変数情報および命令語の集合を1つのプログラム文として認識する。また、1つの命令語に1つ以上の変数情報が接続され(関連付けられ)1つの命令を構成し、1つのプログラム文には、1つ以上の命令を含むことができるものとする。新旧いずれのプログラミング言語においても、プログラムの終了を表す命令(END命令)が最後のプログラム文の次に配置されることによって、1つのプログラムが構成されるものとする。
【0020】
接続処理部26は、順次入力した新プログラミング言語のプログラム文D3を接続する。接続処理部26は、すべてのプログラム文D3を接続した場合には、新プログラムを出力データとして出力する。プログラム文を接続するとは、変換されたプログラム文を1つずつモニタ画面上に配置して相互に接続することをいう。新プログラミング言語の文法ルールでは、モニタ画面上に行方向(モニタ画面の上から下の方向)に配置されたファンクションブロック群は、1つのプログラムであるとされる。
【0021】
データベース30は、旧プログラミング言語の変数情報および命令語のそれぞれに対応するテキストデータを有する。データベース30は、ファンクションブロックデータを有する。ファンクションブロックデータは、旧プログラミング言語の命令語に関連付けられている。
【0022】
ファンクションブロックデータは、データごと、つまり命令語ごとに接続情報および位置情報を有する。ファンクションブロックデータの接続情報とは、変数情報との接続を表す情報である。たとえば、2入力ANDを表すファンクションブロックデータでは、接続情報として、2つの入力および1つの出力が設定される。ファンクションブロックデータの位置情報とは、モニタ画面上に配置したときの絶対位置(座標)に対する相対位置(座標)である。たとえば、1つの命令語に対応するファンクションブロックをモニタに配置した後、そのファンクションブロックに従属する別のファンクションブロックは、前に配置した座標にもとづいて、配置される座標が設定される。
【0023】
データベース30では、変換部24が旧プログラミング言語の命令語を選択することによって、対応するファンクションブロックが抽出される。
【0024】
認識部22および変換部24は、データベース30にアクセスして、旧プログラミング言語の命令語を認識し、新プログラミング言語に対応したファンクションブロックに変換する。
【0025】
実施形態に係るプログラム設計支援システム100の動作について、具体例にしたがって詳細に説明する。
図2(a)~
図2(c)は、実施形態に係るプログラム設計支援システムの認識部の動作を説明するための模式図である。
図2(a)には、既設の制御システムのモニタに表示された旧プログラムのソースの例が示されている。撮像装置10は、
図2(a)のような表示を撮影して、画像データD1を生成する。撮像装置10は、生成された
図2(a)のようなテキスト情報を含む画像データD1を認識部22に出力する。
【0026】
図2(b)に示すように、認識部22は、画像データD1からテキストデータD2を認識する。なお、この例では、4行のプログラム文が示されている。1行目から3行目のプログラム文は、ビットごとに実行されるビット論理演算命令にしたがう例である。4行目のプログラム文は、ワードごとに実行されるワード演算命令にしたがう例である。
【0027】
認識部22は、画像データD1をテキストデータD2に変換するにあたり、認識の困難な画像が存在する場合には、データベース30を参照する。また、認識部22には、変換部24と同様の旧プログラムの文法ルールが設定されており、テキストデータD2の認識に利用される。
【0028】
図2(c)には、データベース30に格納されているデータの例が示されている。この例では、データベース30は、命令語に関するデータベースDB1と変数情報に関するデータベースDB2とを含んでいる。認識部22は、判定困難な画像を検出した場合には、データベース30を参照して、テキストを認識する。
【0029】
図3(a)および
図3(b)は、実施形態に係るプログラム設計支援システムの変換部の動作を説明するための模式図である。
変換部24は、
図2(b)のテキストデータD2を読み込んで、
図3(a)に示すプログラム文D3に変換する。より詳細には、変換部24は、読み込まれたテキストデータD2からプログラム文D3を抽出する。プログラム文D3の抽出には、あらかじめ設定された旧プログラミング言語の文法ルールが適用される。この例では、以下の文法ルールにしたがって、1つのプログラム文が定義される。
【0030】
プログラム文:=“;”“変数情報”_“命令語”“変数情報”_…
【0031】
ここで、“”は、命令語、変数情報を区別するために表記したものであり、どの命令語も変数情報も、1文字以上のテキストからなっており、実際のプログラム文の定義には、クォーテーションマーク“”は含まれない。_(アンダーバー)は、テキスト1文字分のスペース(空白)を表している。“;”は、“;”直後の“テキスト”部分に書かれている変数を読み出す命令語である。本実施形態に係るプログラム設計支援システムにおいては、命令語“;”ごとに1つのプログラム文が定義される。1つ以上のプログラム文の集団に区切りを加える際に命令語“NOP_P**”あるいは“NOP_SN**”(**は数字でプログラム番号あるいはページ番号を表す)を使う。この命令語自体は「No-Operation」を略したものでありプログラムの内容に影響を与えない。しかし各プログラムの先頭に“NOP_P**”を使うことにより、一連の処理を表すプログラム文の集団が1つのプログラムとして定義される。最後尾のプログラムに対しては、プログラムの直後に“NOP_E”を使用することで、プログラム全体の末尾を示す。
【0032】
1つの命令語には、1つ以上の変数情報が設定され接続情報とされる。1つの命令語とその命令語に設定された1つ以上の変数情報は、1つの処理のまとまりであり、命令文と呼ぶ。1つのプログラム文は、1つ以上の命令文を含むことができる。
【0033】
変換部24は、プログラム文D3を抽出したのち、“テキスト”ごとにどの命令語であるのか、どの変数情報であるかを判断する。変換部24は、“テキスト”の判断にあたり、データベース30を参照する。
図2(b)の例では、変換部24は、1行目の“;”という命令語で始まるプログラム文の、“I180”、“M193”、“M2B”がビットアドレス情報(変数情報)であり、“AND”、“→”が命令語であると解釈する。変換部24は、2行目および3行目のプログラム文も同様に判断する。
【0034】
変換部24は、4行目の“;”で始まるプログラム文の“CW0”、“MW2612”、“MW2618”、“MW1270”がワードアドレス情報(変数情報)であり、“>”、“,”、“<”、“*”、“/”、“→”が命令語であると解釈する。
【0035】
変換部24は、プログラム文ごとに新プログラミング言語のプログラム文に変換する。
図3(a)は、
図2(b)の例の1行目のテキストデータに対応する新プログラミング言語のプログラム文である。変換部24は、あらかじめ設定された新プログラミング言語の文法ルールにしたがって、新プログラミング言語のプログラム文に変換する。
【0036】
ビット論理演算命令を含むプログラム文の場合には、“AND”は、論理積であり、“→”は、結果の出力先アドレスを表している。論理積の場合には、前後のビットアドレスを直列接続する。なお、論理和(OR)の場合には、論理和の記号の前後のビットアドレスを並列に接続する。また、否定(NOT)の場合には、変換部24の文法ルールでは、このように、命令語に接続情報が付随しているので、文法ルールにしたがって変換を実行することによって、ファンクションブロックが配置される。
【0037】
ワード演算命令を含むプログラム文の場合には、
図2(b)の1つのプログラム文の具体例を
図3(b)の各ファンクションブロックに対応させて説明すると以下のようになる。
【0038】
変換部24は、“;CW0”を読み込むと、先頭の“;”という命令語により、プログラム文の開始と解釈する。つまり、“;”という命令語により、変換部24は、変換後のプログラムにおける、変数を読み出す命令文F1の配置を開始する。なお、変換前のプログラムで、“;CW0”はメモリから変数を読み出しワードアキュムレータに格納するという命令文である。アキュムレータとは、演算時にデータを一時的に格納する記憶装置である。ワードデータはワードアキュムレータに格納され、ビットデータはビットアキュムレータに格納される。
図2に例示されている言語を使う制御機器では、このような一時記憶装置をアキュムレータと呼ぶことがある。
【0039】
変換部24は、“;”“CW0”の命令文を解釈し、“CW0”の値をROMから読み出す命令文F1を最初に配置する。なお、メモリから出力したデータは、PLCのハードウェア上、レジスタに格納される。レジスタもアキュムレータ同様、演算時にデータを一時的に格納する記憶装置である。
【0040】
変換部24は、“>MW2612”を読み込むと、“>MW2612”が、ワードアキュムレータに格納された変数情報“CW0”の値とあらかじめ設定された変数情報“MW2612”の値との大小比較を行い、“CW0”の値が“MW2612”の値よりも大きい場合には1(TRUE)を、それ以外の場合には0(FALSE)をビットアキュムレータに格納する命令文である。変換部24は、“>MW2612”を認識すると大小比較するためのファンクションブロックF2を配置し、下側の入力を“MW2612”に接続し、上側の入力をファンクションブロックF1の出力に接続する。ファンクションブロックF2は、上側の入力の変数の値が“MW2612”の値よりも大きい場合には、1(TRUE)を、それ以外の場合は0(FALSE)を出力する。
【0041】
変換部24は、“,_MW2612”を読み込む。“,”は、条件付きで変数を読み出す命令語である。命令語“,”は、入力された論理値(ビットアキュムレータの値)が1の場合に、設定された変数情報“MW2612”の値をワードアキュムレータに格納する。命令語“,”は、入力された論理値が0の場合には、既にワードアキュムレータに格納された変数情報の値を保持するため何も操作しない。 変換部24は、“,”を認識すると、前の演算で出力された値に応じて、設定された変数情報の値を出力するファンクションブロックF3を配置し、入力GにはファンクションブロックF2の出力と接続される。続いて“MW2612”を認識するとファンクションブロックF3の入力IN1に“MW2612”を接続され、“CW0”の値は入力IN0に接続される。ファンクションブロックF3は入力が1(TRUE)の場合は“MW2612”を、0(FALSE)の場合は“CW0”の値を出力する。
【0042】
変換部24は、“<_MW2618”を読み込む。“<_MW2618”は、ワードアキュムレータに格納された変数情報の値と、“MW2618”にあらかじめ設定された値との大小比較を行い、ワードアキュムレータに格納された値が“MW2618”よりも小さければ1(TRUE)を、それ以外の場合は0(FALSE)をビットアキュムレータに格納する命令文である。変換部24は、“<_MW2618”を認識すると大小比較するためのファンクションブロックF4を配置し、下側の入力を“MW2618”に接続し、上側の入力をファンクションブロックF3の出力に接続する。ファンクションブロックF4は、上側の入力の変数の値が“MW2618”の値よりも小さい場合には、1(TRUE)を、それ以外の場合は0(FALSE)を出力する。
【0043】
変換部24は、“,MW2618”を読み込む。この命令文は、上述した“,MW2612”と同様であり、ビットアキュムレータの値に応じて出力する値を設定する。変換部24は、“,”を認識すると、前の演算で出力された値に応じて、設定された変数情報の値を出力するファンクションブロックF5を配置し、自身の入力と前の演算の出力が接続される。続いて“MW2618”を認識するとファンクションブロックF5の入力IN1に“MW2618”を接続する。そのためファンクションブロックF4の出力は入力Gに接続され、ファンクションブロックF4の入力であるファンクションブロックF3の出力が入力IN0に接続される。ファンクションブロックF5は入力が1(TRUE)の場合は“MW2618”を、0(FALSE)の場合はファンクションブロックF3が出力した値を出力する。
【0044】
変換部24は、“*_K_15000”を読み込む。“*”は、乗算を表す命令語である。変換部24は、“*”を認識するとファンクションブロックF6とF7を配置し、ファンクションブロックF5の出力と接続する。“K 15000”を認識するとファンクションブロックF7の下側の入力に15000の数値が接続される。ここで“K”は、10進数を表す接頭語である。
【0045】
変換部24は、“*”を読み込むと、乗算の精度を保つため、まずInteger型からDouble Integer型に変換するファンクションブロックF6を配置し、ファンクションブロックF5の出力に接続する。次に、変換部24は、Double Integer型に変化したファンクションブロックF5の出力値に15000の値を乗じるファンクションブロックF7を配置し、ファンクションブロックF6の出力に接続する。
【0046】
変換部24は、“/_K_1000”を読み込む。変換部24は、“/” を読み込むと、除算の精度を保つため、まずInteger型からDouble Integer型に変換するファンクションブロックF6を配置する。ただし
図2(b)のように前の演算の出力がDouble Integer型の場合はそのまま、ファンクションブロックF7から出力された値を1000で除するファンクションブロックF8を配置し、ファンクションブロックF7の出力に接続する。変換部24は、ファンクションブロックF8で演算を実行して出力する。次に変換部24は、“->”を認識すると、Double Integer型からInteger型に変換するファンクションブロックF9を配置し、ファンクションブロックF8の出力に接続する。最後に“MW1270”を認識するとファンクションブロックF9の出力に接続する。
【0047】
このようにして、変換部24は、旧プログラミング言語のプログラム文を新プログラミング言語のプログラム文に変換して出力する。
【0048】
図4は、実施形態に係るプログラム設計支援システムの接続処理部の動作を説明するための模式図である。
上述したように、変換部
図24は、旧プログラミング言語のプログラム文ごとに新プログラミング言語のプログラム文に変換して、接続処理部26に順次出力する。接続処理部26は、入力されたプログラム文D3を順次接続処理を実行する。接続処理では、核プログラム文は、たとえば、各プログラム文の先頭のファンクションブロックの位置情報(座標情報)にもとづいて、配置される。1行目のプログラム文が配置されると、2行目のプログラム文は、その先頭を1行目のプログラム文に合わせて、1行のプログラム文の下に隣り合うように配置される。
【0049】
接続処理部26は、END命令を発見するまでプログラム文の接続処理を行い、END命令の発見によりすべての処理を終了する。
【0050】
図5は、実施形態に係るプログラム設計支援システムの全体の動作を説明するためのフローチャートの例である。
図5に示すように、実施形態に係るプログラム設計支援システム100は、たとえばコンピュータ装置の演算処理部の処理として実現することができる。プログラム設計支援システム100の動作は、演算処理部によって、
図5の各ステップを逐次実行することにより実現される。
【0051】
ステップS1において、演算処理部は、画像データD1から文字情報を取得し、テキストデータを生成する。
【0052】
ステップS2において、演算処理部は、テキストデータから変数情報および命令語を認識する。
【0053】
ステップS3において、演算処理部は、旧プログラミング言語のプログラム文を新プログラミング言語のプログラミング文に変換する。
【0054】
ステップS4において、演算処理部は、変換された新プログラミング言語のプログラミングを接続、配置する。
【0055】
ステップS5において、演算処理部は、読み込んだ新プログラミング言語のプログラム文にEND命令があるか否かを判定する。END命令を発見したときには、演算処理部は、処理を終了し、END命令を発見しない場合には、処理をステップS2に戻して、上述の処理を繰り返す。
【0056】
図5の各ステップの動作を
図1に示した各ブロックに対応させてもよいし、1台または複数台の演算処理装置で実行するようにしてもよい。
【0057】
実施形態に係るプログラム設計支援システム100の効果について説明する。
実施形態に係るプログラム設計支援システム100は、撮像装置10によって、旧プログラミング言語で作成されたプログラムで動作する制御システムから、プログラムのソースを取得することができる。そして、取得した画像データを変換してテキストデータを生成することができる。プログラム設計支援システム100では、データベース30にあらかじめ旧プログラムの文法ルールにしたがった命令語および変数情報を有しているので、テキストデータへの変換が困難な画像であっても、確実にテキストデータを生成することができる。
【0058】
実施形態に係るプログラム設計支援システム100のデータベース30には、旧プログラミング言語の各命令語に新プログラミング言語の文法ルールにしたがうファンクションブロックが関連付けられて記憶されている。そのため、プログラム設計支援システム100は、テキストデータに対応する新プログラミング言語のファンクションブロックを抽出することができる。
【0059】
実施形態に係るプログラム設計支援システム100の新プログラミング言語のファンクションブロックには、旧プログラミング言語のプログラム文の接続情報に対応した接続情報が設定されている。そのため、旧プログラムのプログラムを読み出すごとに、ファンクションブロックを抽出することにより、新プログラミング言語のプログラム文を構成することができる。
【0060】
実施形態に係るプログラム設計支援システム100の新プログラミング言語のファンクションブロックには、接続情報に対応した位置情報(座標情報)が設定されている。そのため、逐次抽出し、出力された新プログラミング言語のプログラム文を配置することができ、容易に新プログラミング言語のプログラムを構成することができる。
【0061】
このようにして、電子化データとして入手できないプログラムを自動的に変換するプログラム設計支援システムを実現することができる。
【0062】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他のさまざまな形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0063】
10…撮像装置、20…プログラム設計支援装置、22…認識部、24…変換部、26…接続処理部、30…データベース、100…プログラム設計支援システム