特許第5753232号(P5753232)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エルエス産電株式会社の特許一覧

特許5753232プログラミング言語の誤り検出装置及び誤り検出方法
<>
  • 特許5753232-プログラミング言語の誤り検出装置及び誤り検出方法 図000002
  • 特許5753232-プログラミング言語の誤り検出装置及び誤り検出方法 図000003
  • 特許5753232-プログラミング言語の誤り検出装置及び誤り検出方法 図000004
  • 特許5753232-プログラミング言語の誤り検出装置及び誤り検出方法 図000005
  • 特許5753232-プログラミング言語の誤り検出装置及び誤り検出方法 図000006
  • 特許5753232-プログラミング言語の誤り検出装置及び誤り検出方法 図000007
  • 特許5753232-プログラミング言語の誤り検出装置及び誤り検出方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5753232
(24)【登録日】2015年5月29日
(45)【発行日】2015年7月22日
(54)【発明の名称】プログラミング言語の誤り検出装置及び誤り検出方法
(51)【国際特許分類】
   G05B 19/05 20060101AFI20150702BHJP
【FI】
   G05B19/05 A
【請求項の数】8
【全頁数】11
(21)【出願番号】特願2013-173527(P2013-173527)
(22)【出願日】2013年8月23日
(65)【公開番号】特開2014-41617(P2014-41617A)
(43)【公開日】2014年3月6日
【審査請求日】2013年9月2日
(31)【優先権主張番号】10-2012-0092136
(32)【優先日】2012年8月23日
(33)【優先権主張国】KR
(73)【特許権者】
【識別番号】593121379
【氏名又は名称】エルエス産電株式会社
【氏名又は名称原語表記】LSIS CO.,LTD.
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100165191
【弁理士】
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100151459
【弁理士】
【氏名又は名称】中村 健一
(72)【発明者】
【氏名】リ サン フン
【審査官】 谷治 和文
(56)【参考文献】
【文献】 特開昭62−089134(JP,A)
【文献】 特開2008−282363(JP,A)
【文献】 特開平02−032425(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
G05B 23/02
(57)【特許請求の範囲】
【請求項1】
PLC自動化システムのプログラミング言語誤り検出装置であって、
プログラミング言語を用いてプログラムを作成するプログラム作成部と、
前記作成されたプログラムを文字列に変換するロジック変換部と、
前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して文字列に対する同一ロジックを検出するハッシュコード計算部と、
前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列(LCS)を計算し、計算されたLCSをLCSアルゴリズムに適用して文字列に対する類似ロジックを検出するLCS計算部と、を有し、
前記ハッシュコード計算部で計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記LCS計算部で計算された前記LCSと設定された文字列の類似度閾値とを比較して、前記LCSが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックであると判断する判断部をさらに有することを特徴とするプログラミング言語誤り検出装置。
【請求項2】
前記文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果を報告する報告部をさらに有することを特徴とする請求項に記載のプログラミング言語誤り検出装置。
【請求項3】
前記類似ロジックが検出されなかった、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する閾値入力部をさらに有することを特徴とする、請求項に記載のプログラミング言語誤り検出装置。
【請求項4】
前記同一ロジックの正確な検出及び判断のために、前記プログラミング言語の変数に関する情報を除去する変数フィルタリング部をさらに有することを特徴とする、請求項1に記載のプログラミング言語誤り検出装置。
【請求項5】
PLC自動化システムのプログラミング言語誤り検出方法であって、
プログラミング言語を用いてプログラムを作成し、前記作成されたプログラムを文字列に変換する段階と、
前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して文字列に対する同一ロジックを検出する段階と、
前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列(LCS)を計算し、計算されたLCSをLCSアルゴリズムに適用して文字列に対する類似ロジックを検出する段階と、を有し、
前記計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記計算された前記LCSと設定された文字列の類似度閾値とを比較して、前記LCSが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックであると判断する段階をさらに有することを特徴とするプログラミング言語誤り検出方法。
【請求項6】
前記文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果をユーザに報告する段階をさらに有することを特徴とする請求項に記載のプログラミング言語誤り検出方法。
【請求項7】
前記類似ロジックが検出されなかった、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する段階をさらに有することを特徴とする請求項に記載のプログラミング言語誤り検出方法。
【請求項8】
前記同一ロジックの正確な検出及び判断のために、前記プログラミング言語の変数に関する情報を除去する段階をさらに有することを特徴とする請求項に記載のプログラミング言語誤り検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラミング言語の誤り検出装置及び誤り検出方法に関し、より詳細にはIEC61131−3プログラミング言語の誤りを検出する装置及びその方法に関するものである。
【背景技術】
【0002】
一般に、多様で分散化されたプログラマブルロジックコントローラ(Programmable Logic Controller;PLC)プログラミング言語に起因して、ユーザがPLCを制御するのに誤りを犯しやすく、各々のPLCプログラミング言語の使用に係る物的、人的資源の無駄の問題があった。これを解決するために、国際電気標準会議(International Electrotechnical Commission;IEC)は、国際規格のプログラミング言語であるIEC61131−3標準を規定して、従来のPLCプログラミング言語を統合して標準化した。
【0003】
図1は、一般的なPLC自動化システムのプログラム環境の構成図である。
【0004】
図1を参照すると、プログラマブルロジックコントローラ(Programmable Logic Controller;PLC)自動化システムのプログラムは、国際電気標準会議(International Electrotechnical Commission;IEC)61131−3プログラミング環境を提供してプログラムを作成するプログラム作成部11と、前記作成されたプログラムを制御部にダウンロードするプログラムダウンロード部12と、ダウンロードしたプログラムを検証するプログラム検証部13と、を有する。
【0005】
自動化システムのプログラム制御部は、一つまたは複数の同じロジックや類似のロジックを繰り返し用いてPLC自動化システムを制御する場合が多い。しかし、PLC自動化システムに用いられるIEC61131−3プログラミング言語と上位レベルプログラミング言語であるC/C++言語とを比較すると、プログラム作成時にロジックを繰り返し使用するためのテンプレート(Template)などの要素の不足に起因して、同一または類似のロジックが繰り返し用いられる場合、ロジック変更時同一または類似のロジックを一つずつ探し出して変更しなければならないという問題点がある。
【0006】
特に、同一コンポーネント(Component)が一つまたは複数用いられる場合のロジック変更は、同一コンポーネントを用いるすべての場合に同一に適用されなければならない。万一、一つのコンポーネントでもロジック変更が抜けた場合には、自動化システム全体に対する信頼性が低下するという問題が発生する。
【0007】
同一または類似のロジックは、自動化システムの開発段階だけでなく、試運転及びメンテナンス/修理段階に至るまで厳重に管理されなければならないが、従来の自動化システムのプログラム環境では、同一または類似のロジックを探し出す機能は提供されない。
【発明の概要】
【発明が解決しようとする課題】
【0008】
従って、本発明は、前記従来技術に係る問題点を解決するためのものであって、本発明の目的は、自動化システムのプログラム上で同一または類似のロジックを検出して、ユーザに報告するプログラミング言語誤り検出装置及びその方法を提供することである。
【0009】
また、本発明の他の目的は、プログラムを検証するとき、誤りが発生したロジックと同一または類似のロジックを速くかつ簡単に検出でき、誤りが発生しやすいロジックをユーザが予め認知できるようにしたプログラミング言語誤り検出装置及びその方法を提供することである。
【課題を解決するための手段】
【0010】
前記目的を達成するための本発明に係るPLC自動化システムのプログラミング言語誤り検出装置の一側面によると、プログラミング言語を用いてプログラムを作成するプログラム作成部と、前記作成されたプログラムを文字列に変換するロジック変換部と、前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して文字列に対する同一ロジックを検出するハッシュコード計算部と、前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列(LCS)を計算し、計算されたLCSをLCSアルゴリズムに適用して文字列に対する類似ロジックを検出するLCS計算部と、を有する。
【0011】
前記プログラミング言語誤り装置は、前記ハッシュコード計算部で計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記LCS計算部で計算された前記LCSと設定された文字列の類似度閾値とを比較して、前記LCSが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックであると判断する判断部をさらに有してもよい。
【0012】
前記ハッシュコード計算部、前記LCS計算部、または判断部での文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果を報告する報告部をさらに有してもよい。
【0013】
前記類似ロジックが検出されなかったか、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する閾値入力部をさらに有してもよい。
【0014】
前記同一ロジックの正確な検出及び判断のために、前記プログラミング言語の変数に関する情報を除去する変数フィルタリング部をさらに有してもよい。
【0015】
一方、本発明に係るPLC自動化システムのプログラミング言語誤り検出方法の一側面によると、プログラミング言語を用いてプログラムを作成し、前記作成されたプログラムを文字列に変換する段階と、前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して、文字列に対する同一ロジックを検出する段階と、前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列(LCS)を計算し、計算されたLCSをLCSアルゴリズムに適用して文字列に対する類似ロジックを検出する段階と、を有する。
【0016】
前記プログラミング言語誤り検出方法は、前記計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記計算された前記LCSと設定された文字列の類似度閾値とを比較して、前記LCSが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックと判断する段階をさらに有してもよい。
【0017】
前記プログラミング言語誤り検出方法は、前記文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果をユーザに報告する段階をさらに有してもよい。
【0018】
尚、前記類似ロジックが検出されなかったか、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する段階をさらに有してもよい。
【0019】
一方、前記同一ロジックの正確な検出及び判断のために、プログラミング言語の変数に関する情報を除去する段階をさらに有してもよい。
【発明の効果】
【0020】
本発明に係るプログラミング言語誤り検出装置及びその方法は、ユーザが、自動化システムプログラムが用いる同一または類似のロジックを予め認知して、自動化システムの試運転及びメンテナンス段階で発生しやすい潜在的なロジックの誤りを防止することができるようにすることによって、自動化システムの信頼性を向上させることができる効果を持つことになる。
【図面の簡単な説明】
【0021】
図1】一般的なPLC自動化システムのプログラム環境の構成図である。
図2】本発明の第1実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
図3】本発明の第2実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
図4図3に図示された変数フィルタリング部でプログラミング言語の変数をフィルタリングする動作に関する一例を示した図である。
図5】本発明に係るプログラミング言語誤り検出装置でユーザが文字列の類似度閾値を設定する一例を示した図である。
図6】本発明の第3実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
図7】本発明の第4実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
【発明を実施するための形態】
【0022】
本発明は、多様な変更を加えることができ、種々の実施形態を持つことができるが、特定の実施形態を図面に例示し、詳細に説明する。しかし、これは本発明を特定の実施形態に限定しようとするものではなく、本発明の思想及び技術範囲に含まれるすべての変更、均等物または代替物を含むものと理解されなければならない。
【0023】
以下、プログラミング言語の例として、IEC61131−3言語を挙げて説明するが、IEC61131−3以外のプログラミング言語でも、本発明が適用できることは本発明が属する技術分野で通常の知識を持った者には自明であろう。
【0024】
以下、添付図面を参照して本発明に係る好ましい実施形態を詳細に説明する。図面上で同一符号は同じ要素を指し示す。
【0025】
図2は、本発明の第1実施形態に係るプログラム言語誤り検出装置のブロック構成を示した図である。
【0026】
図2を参照すると、本発明のプログラミング言語誤り検出装置は、プログラム作成部21、ロジック変換部22、ハッシュコード(Hash Code)計算部24、最長共通部分列(Longest Common Subsequence;LCS)計算部25及びロジック報告部27を有してもよい。
【0027】
先に、ユーザは、前記プログラム作成部21を介してIEC61131−3プログラミング言語を用いたプログラムをプログラミングする。
【0028】
IEC61131−3プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部22は、前記プログラム作成部21を介してユーザがプログラミングしたIEC61131−3プログラミング言語を文字列形態に変換する。
【0029】
ハッシュコード計算部24は、前記ロジック変換部22で文字列形態に変換したIEC61131−3プログラミング言語をIEC61131−3プログラミング言語の最小単位(ラング(rung))ごとに区分する。ハッシュコード計算部24は、区分した各々のラングのハッシュコード(Hash Code)を計算した後、各々のハッシュコードを比較して同一ロジックを検出する。
【0030】
LCS計算部25は、IEC61131−3プログラミング言語の最小単位(ラング)ごとに、最長共通部分列(Longest Common Subsequence;LCS)を計算した後、各々のラング間の類似度を判断するために、LCSアルゴリズムを用いて類似ロジックを検出する。ここで、LCSアルゴリズムは、共通の部分文字列中、長さが最も長いものを出力し、これについては、本発明が属する技術分野で通常の知識を有する者には自明であるため、詳細な説明は省略する。
【0031】
ロジック報告部27は、ハッシュコードとLCSを用いて、探し出した同一または類似のロジックに関する結果をユーザに報告する。即ち、ロジック報告部27は、同じハッシュコードを持つロジックは同一ロジックと報告し、LCSが、ユーザが予め設定した文字列の類似度閾値より大きい場合、類似ロジックと報告する。
【0032】
ユーザが予め設定した文字列に関する類似度閾値については、図5を参照して詳細に説明する。
【0033】
図3は、本発明の第2実施形態に係るプログラミング言語誤り検出装置のブロック構成を示した図であり、図3図2とは異なって、変数フィルタリング部23をさらに有する。
【0034】
図3を参照すると、本発明に係るプログラミング言語誤り検出装置は、プログラム作成部21、ロジック変換部22、変数フィルタリング部23、ハッシュコード計算部24、LCS計算部25及びロジック報告部27を有してもよい。
【0035】
先に、ユーザは、プログラム作成部21を介して、IEC61131−3プログラミング言語を用いたプログラムをプログラミングする。
【0036】
IEC61131−3プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部22は、ユーザが前記プログラム作成部21を利用してプログラミングしたIEC61131−3プログラミング言語を文字列形態に変換する。
【0037】
変数フィルタリング部23は、ユーザの選択によりプログラムで用いている変数情報を除去するもので、ユーザが入力した変数の違いによって、ラング間の類似度が低くなることを防止するために、変数フィルタリング部23で変数に関する影響を最小化するようにユーザが選択できる。
【0038】
即ち、変数フィルタリング部23を利用する場合、ユーザが入力した変数情報とは無関係に類似のユーザプログラムを検出することができ、変数フィルタリング部23が変数に関する影響を最小化する過程については図4を参照して詳細に説明する。
【0039】
ハッシュコード計算部24は、前記ロジック変換部22で文字列形態に変換されたIEC61131−3プログラミング言語をIEC61131−3プログラミング言語の最小単位(ラング)ごとに区分し、区分された各々のラングのハッシュコード(Hash Code)を計算した後、各々のハッシュコードを比較して同一ロジックを検出する。
【0040】
LCS計算部25は、IEC61131−3プログラミング言語の最小単位(ラング)ごとに、LCSを計算した後、各々のラング間の類似度を判断するために、LCSアルゴリズムを用いて類似ロジックを検出する。
【0041】
ロジック報告部27は、ハッシュコードとLCSを用いて、探し出した同一または類似のロジックに関する結果をユーザに報告する。即ち、ロジック報告部27は、同じハッシュコードを持つロジックは、同一ロジックと報告し、前記LCSが、ユーザが予め設定した文字列の類似度閾値より大きい場合、類似ロジックと報告する。
【0042】
図4は、図3に図示された変数フィルタリング部23でプログラミング言語の変数をフィルタリングする過程を説明するための一例示図である。
【0043】
図4を参照すると、同じキャパシタ(コンデンサ)をグラフィック形態で図示しており、同じキャパシタを各々変数A、A1、a及びa1で表現している。即ち、同じキャパシタを四種類の変数で表現している。
【0044】
従って、四つの同じキャパシタ及び各々の変数を文字(列)に変換すると、キャパシタは同じ文字(列)に変換されるが、変数は各々他の文字(列)に変換されて、同一ロジックで検出されることができるロジックが類似ロジックとして検出される問題が発生する。
【0045】
従って、変数フィルタリング部23が変数情報を除去することによって、同一ロジックを正確に探し出すことができる。
【0046】
図5は、本発明に係るプログラミング言語誤り検出装置でユーザが文字列の類似度閾値を設定する一例を示した図である。
【0047】
図5を参照すると、例えば、類似度を比較する文字列が各々abcde及びabcfgだとすると、各々の文字列を構成するabが同一で、残りの文字が異なる場合(L1)を類似していると設定するか、または、abcが同一で、残りの文字が異なる場合(L2)を類似していると設定することができる。即ち、ユーザは、文字列の類似度閾値を、前記のように比較する文字列のうち2つの文字が同じ場合か、または、3つの文字が同じ場合を閾値として設定することができる。
【0048】
仮に、ユーザが設定した文字列の類似度閾値によって、ユーザの望む類似ロジックが検出されなかったり、あまりにも多くのロジックが検出されたりする場合には、ユーザは、文字列の類似度の閾値を変更して、ユーザの望む類似ロジックを探し出すことができる。
【0049】
文字列の類似度閾値の設定は、これに限定されることなく、閾値が他の方式で設定できることは自明である。
【0050】
図6は、本発明の第3実施形態に係るプログラミング言語誤り検出装置のブロック構成を示した図である。
【0051】
図6を参照すると、本発明に係るプログラミング言語誤り検出装置は、プログラム作成部21、ロジック変換部22、ハッシュコード計算部24、LCS計算部25、結果判断部26、ロジック報告部27及び閾値入力部28を有してもよい。
【0052】
先に、ユーザは、プログラム作成部21を介してIEC61131−3プログラミング言語を用いたプログラムを作成する。
【0053】
IEC61131−3プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部22は、ユーザが前記プログラム作成部21を介してプログラミングしたIEC61131−3プログラミング言語を文字列形態に変換する。
【0054】
ハッシュコード計算部24は、前記ロジック変換部22を介して文字列形態に変換されたIEC61131−3プログラミング言語をIEC61131−3プログラミング言語の最小単位(ラング)ごとに区分し、区分された各々のラングのハッシュコード(Hash Code)を計算する。
【0055】
LCS計算部25は、前記ロジック変換部22で文字列形態に変換されたIEC61131−3プログラミング言語をIEC61131−3プログラミング言語の最小単位(ラング)ごとに区分した後、区分された単位ごとにLCSを計算する。
【0056】
結果判断部26は、各々のラングのハッシュコードを比較して同一ロジックか否かを判断し、各々のラングのLCSと閾値入力部28を介して設定された文字列の類似度閾値とを比較して類似ロジックか否かを判断する。即ち、同じハッシュコードを持つロジックは、同一ロジックと判断し、LCSが、ユーザが閾値入力部28を介して予め設定した類似度閾値より大きい場合は、類似ロジックと判断する。
【0057】
ロジック報告部27は、前記結果判断部26で探し出した同一または類似のロジックに関する判断結果をユーザに報告する。
【0058】
しかし、類似ロジックが検出されない場合、または、あまりにも多くの類似ロジックが検出された場合、ユーザは、閾値入力部28を介して、文字列の類似度閾値を変更することが可能で、結果判断部26は、変更された文字列の類似度閾値及びLCSアルゴリズムを用いて、IEC61131−3プログラミング言語の最小単位(ラング)ごとに類似ロジックを検出する。類似ロジックが検出された場合には、ロジック報告部27が、検出された類似ロジックをユーザに報告する。
【0059】
類似ロジックが検出されなかったり、あまりにも多くの類似ロジックが検出されたりした場合、ユーザは、再度閾値入力部28を介して、文字列の類似度閾値を変更することができる。即ち、ユーザが文字列の類似度閾値を変更することを繰り返すことによって、自身が望む類似ロジックを検出することができる。
【0060】
図7は、本発明の第4実施形態に係るプログラミング言語誤り検出装置のブロック構成を示した図であり、図7は、図6とは異なって、変数フィルタリング部23をさらに有する。
【0061】
図7を参照すると、本発明に係るプログラミング言語誤り検出装置は、プログラム作成部21、ロジック変換部22、変数フィルタリング部23、ハッシュコード計算部24、LCS計算部25、結果判断部26、ロジック報告部27及び閾値入力部28を有してもよい。
【0062】
先に、ユーザは、プログラム作成部21を介してIEC61131−3プログラミング言語を用いたプログラムをプログラミングする。
【0063】
IEC61131−3プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部22は、ユーザがプログラミングしたIEC61131−3プログラミング言語を文字列形態に変換する。
【0064】
変数フィルタリング部23は、ユーザの選択によりプログラムで用いている変数情報を除去し、ユーザが入力した変数の違いによって、ラング間の類似度が低くなることを防止する。そして、変数フィルタリング部23は、変数に対する影響を最小化するようにユーザが選択できるため、ユーザが入力した変数情報に影響を受けることなく、類似のユーザプログラムを検出することができる。
【0065】
ハッシュコード計算部24は、前記ロジック変換部22で文字列形態に変換されたIEC61131−3プログラミング言語をIEC61131−3プログラミング言語の最小単位(ラング)ごとに区分した後、区分された各々のラングのハッシュコード(Hash Code)を計算する。
【0066】
LCS計算部25は、前記ロジック変換部22で文字列形態に変換されたIEC61131−3プログラミング言語をIEC61131−3プログラミング言語の最小単位(ラング)ごとに区分して単位ごとにLCSを計算する。
【0067】
結果判断部26は、各々のラングのハッシュコードを比較して同一ロジックか否かを判断し、各々のラングのLCSと閾値入力部28を介してユーザが入力した文字列の類似度閾値とを比較して、類似ロジックか否かを判断する。即ち、同じハッシュコードを持つロジックは、同一ロジックと判断し、LCSが、ユーザが予め設定した類似度の閾値より大きい場合は、類似ロジックと判断する。
【0068】
ロジック報告部27は、前記結果判断部26で探し出した同一または類似のロジックの判断結果をユーザに報告する。
【0069】
しかし、類似ロジックが検出されない場合、または、あまりにも多くの類似ロジックが検出された場合、ユーザは、閾値入力部28を介して、文字列の類似度閾値を変更することが可能で、結果判断部26は、変更された文字列の類似度閾値及びLCSアルゴリズムを用いて、IEC61131−3プログラミング言語の最小単位(ラング)ごとに類似ロジックを検出する。類似ロジックが検出された場合には、ロジック報告部27が、検出された類似ロジックをユーザに報告する。
【0070】
類似ロジックが検出されなかったり、あまりにも多くの類似ロジックが検出されたりした場合、ユーザは、再度閾値入力部28を介して、文字列の類似度閾値を変更することができる。即ち、ユーザが文字列の類似度閾値を変更することを繰り返すことによって、自身が望む類似ロジックを検出することができる。
【0071】
以上、本発明に係る実施形態が説明されたが、これらは例示的なものに過ぎず、当該分野で通常の知識を有する者ならば、これらから多様な変形及び均等な範囲の実施形態が可能である点を理解するであろう。従って、本発明の真の技術的保護範囲は、特許請求範囲によって定めるべきである。
【符号の説明】
【0072】
21 プログラム作成部
22 ロジック変換部
23 変数フィルタリング部
24 ハッシュコード計算部
25 LCS計算部
26 結果判断部
27 ロジック報告部
28 閾値入力部
図1
図2
図3
図4
図5
図6
図7