JP7638457B1 - プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム - Google Patents
プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム Download PDFInfo
- Publication number
- JP7638457B1 JP7638457B1 JP2024559716A JP2024559716A JP7638457B1 JP 7638457 B1 JP7638457 B1 JP 7638457B1 JP 2024559716 A JP2024559716 A JP 2024559716A JP 2024559716 A JP2024559716 A JP 2024559716A JP 7638457 B1 JP7638457 B1 JP 7638457B1
- Authority
- JP
- Japan
- Prior art keywords
- program
- fragment
- side effects
- side effect
- list
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3604—Analysis of software for verifying properties of programs
- G06F11/3608—Analysis of software for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Program-control systems
- G05B19/02—Program-control systems electric
- G05B19/04—Program control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
Abstract
Description
本開示は、ファクトリーオートメーション(FA)及びプロセスオートメーション(PA)の分野における制御プログラムの開発効率化に関するものである。
2022年時点ではモデルベース開発の適用範囲は一部に留まっており、生産設備の開発及び制御プログラムの開発に広く適用されているとは言えない。このため、市場にある生産設備全体では、モデルベース開発が未適用の開発資産(以下、既存開発資産と呼ぶ)の割合が大きい。近年の業務効率化のニーズを考慮すると、既存開発資産を、モデルベース開発を適用した開発資産(以下モデルベース開発資産と呼ぶ)に変換することで、以後のモデル改修とモデル流用開発に生かしていくことが好ましい。
特許文献1に開示された技術でも、制御プログラムから状態遷移図を導出することについては開示も示唆もされていない。
本開示が解決しようとする課題は、制御プログラムに生産設備の設計情報が添付されていることを前提とせず、既存の制御プログラムからモデルの構成単位となるプログラム断片を検出し、制御プログラムモデルを生成することである。
機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録するプログラム断片データベースと
制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成するプログラム解析部と、
前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索する類似検索部と
を備えた。
本実施形態では、制御プログラムは電気回路を模したグラフィカルなプログラミング言語であるラダーダイアグラムを用いて開発されるプログラムを前提として説明する。他にも4種類の言語がIEC(International Electrotechnical Commission)61131-3で標準化されており、本実施形態の対象はラダーダイアグラムに限らない。
ラダーダイアグラムの言語仕様はIEC61131-3及びその他の文献に譲るが、その概略は下記のとおりである。
・プログラム中の水平方向の線は接続線である。
・接続線の左側は条件文であり、右側は命令文である。条件文が成立すると、当該接続線上の命令文が実行される。
・接続線の統合によって並列に記載された条件文は、OR条件となる。すなわち、いずれか一つ以上の条件文が成立すると、命令文が実行される。
・接続線上で直列に記載された条件文は、AND条件となる。すなわち、全ての条件文が成立すると、命令文が実行される。
・接続線の分岐により並列に記載された命令文は、条件文の成立により全てが実行される。
なお、電気回路を模したラダーダイアグラムの本来の考え方に基づくと、並列な接続線どうしに順序関係はなく、各接続線の条件文及び命令文の実行タイミングは並列である。ただし、実際のコントローラでは、制御プログラムを有限数のプロセッサコアを用いて実行することから、あたかも上の接続線から下の接続線への順序があるように逐次実行されることが多い。こうした逐次実行順序の挙動によって制御の結果は変わる可能性があり、かつコントローラのメーカー又は機種によって挙動に差異がありうるが、こうした挙動の差異が実用上考慮されていることは少ない。
ブロック定義図(BDD:Block Definition Diagram)。
内部ブロック図(IBD:Internal Block Diagram)。
状態遷移図(STM:State Machine Diagram)。
図2は生産設備の構成関係を示す図である。生産ラインA(Production Line A)は、1つの搬送システム1(Transfer 1)、プレス機(Press)及び搬送システム2(Transfer 2)からなることを表している。さらに、搬送システム1は、ワーク検出器(Work Detector)、コンベヤ1(Conveyor 1)及びターンテーブル1(Turntable 1)の3つのサブシステムからなることを表している。プレス機及び搬送システム2も同様に階層構造で成り立っている。
図3は搬送システム1の内部構成と接続関係を示した図である。搬送システム1はコントローラサブシステム(Controller Subsystem)を中心に構成さる。図3では、検出センサ(Detection Sensor)が接続され、コントローラサブシステムは検出センサからの入力情報bDetectを制御に使用することが示されている。
図4は搬送システム1の動作の状態遷移を示した図である。搬送システム1は停止状態、コンベア搬送中及びターンテーブル回転中の3つの状態を持ち、停止状態にてワークを検出するとコンベア搬送中に遷移することが示されている。
本実施の形態が解決しようとしている課題は、制御プログラムに生産設備の設計情報が添付されていることを前提とせず、既存の制御プログラムをもとに制御プログラムモデルを生成することである。
(小課題1)制御プログラム中から制御プログラムモデルの構成単位となるプログラム断片を検出すること
制御プログラムは大規模なものでは数千行から数万行にも及び、その中には複数のサブシステムに対する制御処理が混在している場合が多い。制御プログラムは開発者に依存し自由度をもって実装できるため、制御プログラムが対象サブシステムごとにファイル又は連続行に整理されているとは限らない。制御プログラムを意味のある単位に整理せずして、モデルを生成することはできない。そこで、制御プログラムを、サブシステムに対応する意味のある単位であるブロックに分割することが1つ目の課題である。
プログラム断片はあくまで制御処理の内容を表したものであり、抽象度の高いブロック定義又は状態遷移を表したものではない。このため、プログラム断片から制御プログラムモデルを生成することが2つ目の課題である。モデルの生成にあたっては、同じ振る舞いをするプログラム断片が無数に記述できることを鑑みて、異なる記述のプログラム断片であっても振る舞いに応じてモデルが導出できるようにする必要がある。プログラム断片の記述が無数に考えられることについては、使用する変数の割り当て及び条件文の軽微な差異に限らず、構文レベルで異なるものも考えられるため、ワイルドカード検索及びその他の検索による単純な一致比較では振る舞いの同一性を確認できない。
本実施形態の実施形態を説明する。なお、本実施形態に記載の内容によって本開示の範囲を制約するものではない。
制御プログラムが制御する生産設備(以下制御対象という)は、機械機構又は電気回路(両者をまとめて機構要素と呼ぶ)の組合せである。
制御プログラムの一部分(断片)と制御プログラム全体とをまとめて制御プログラムと呼ぶ。
プログラム開発支援装置1は、設定用バス2によってコントローラ3と接続され、生産設備を制御するためのコントローラが実行するプログラム開発を行うための装置である。
設定用バス2は、シリアルバス、有線ネットワーク、又は、無線ネットワークである。設定用バス2は、コントローラ3へのプログラムの書き込みに使用され、不使用時は切り離すことが可能である。なお、設定用バス2は、プログラムの受け渡しに使用できる記憶媒体又は別の手段に代えてもよい。
コントローラ3は、生産設備を制御する。近接機器4とリモート機器5は、コントローラ3への情報の入力と出力を行うとともに、コントローラ3の指令に基づく動作を行う各種の機器である。
近接機器4は、バックプレーンバスを介してコントローラ3の近傍に設置される。
リモート機器5は、制御ネットワーク6を介してコントローラ3と接続される。
エンジニアリングワークステーション9では、バス95にCPU91、メモリ92、不揮発メモリ93及び設定ポート94が接続されている。
エンジニアリングワークステーション9は、プログラム開発支援ソフトウェアの実行に必要なリソースを備えたものであれば、形態を問わず用いることができる。
エンジニアリングワークステーション9は、デスクトップ型コンピュータ、ノートブック型コンピュータ、タブレット型コンピュータ、あるいは、クラウドで実行される仮想的なコンピュータでもよい。
エンジニアリングワークステーション9は、マルチプロセッサ、マルチコアプロセッサ、あるいは、GPU(Graphics Processing Unit)による並列計算アクセラレータ、又は、量子・疑似量子プロセッシング技術により処理の高速化が図られてもよい。
プログラミング部101は、IEC61131-3で標準化されたラダーダイアグラムをはじめとする5言語の全て又は一部でのプログラミングを可能とすることを基本としている。
プログラミング部101は、制御プログラムを記述可能であれば他の言語に対応していてもよい。
プログラムメモリ103は、プログラミング部101を用いて開発者が開発した制御プログラムを、作成編集過程で一時保存したり、あるいは作成後に永続的に保存したりするための記憶領域である。制御プログラムは、生産設備を制御する一連のプログラム全体を表し、一般的にはプロジェクトの呼称で記憶され保存管理される。
モデル抽出部104は、プログラムメモリ103に存在する制御プログラムを分析し、モデルを抽出する手段である。
モデル抽出部104により、制御プログラムに対応するモデルであるブロック定義図、内部ブロック図及び状態遷移図を生成する。
モデル抽出部104は本実施の形態の特徴を構成する要素であり、かつ複数の構成要素から構成されるため、詳細は別途説明する。
表示操作部102は、プログラム断片データベース1043及びモデルデータベース1046への登録手段でもある。
各部の働きの概略は次のとおりである。
プログラム解析部1041は、類似検索を行いやすくするため、制御プログラムPを、副作用を抽出した形態に変換する。
類似検索部1042は、プログラム解析部1041の出力とプログラム断片データベース1043を用いて、制御プログラムPの中からプログラム断片データベース1043に登録された機構要素と同等の副作用をもつプログラム断片を検索し、合致した検索結果の一覧を得る。
機構要素推定部1044は、検索結果の一覧をもとに、制御プログラムPがどの機構要素の組合せで成り立っているかを推定する。検索結果には制御プログラムに共存しえない機構要素の組合せも含まれうることから、機構要素推定部1044が共存しえない機構要素の組合せを排除する。
モデル構成部1045は、機構要素推定部1044が推定した機構要素に対応するモデルをモデルデータベース1046から検索し、これらの接続関係を推定することで制御プログラム全体のモデルを推定する。
また、プログラム開発支援方法は、プログラム開発支援プログラムを実行することにより行われる方法である。
プログラム開発支援プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。
プログラム開発支援プログラムは、プログラムプロダクト又はプログラムを記録したコンピュータ読み取り可能な不揮発性記録媒体として提供されてもよい。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045の一部あるいは全ての機能が、ファームウェアで実現されていてもよい。
プロセッサ901と電子回路の各々は、プロセッシングサーキットリとも呼ばれる。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045の機能は、プロセッシングサーキットリにより実現される。
また、以下に述べる各種リストと各種表と各種グラフは、リスト形式、表形式、又は、ファイル形式で、メモリ92(又は不揮発メモリ93)に記憶される。
制御対象によって細部の差異は考えられるものの、機構要素には定石が存在し、機構要素を類型化することができる。このため、同じ類型の機構要素を制御するための制御プログラムについても、類似した制御内容をもつことが期待できる。そこで、定石の機構要素を制御する制御プログラムの断片(プログラム断片F)を記録したプログラム断片データベース1043を設ける。制御プログラムにプログラム断片データベース1043に登録されたプログラム断片Fと類似する断片がある場合、そのプログラム断片Fを類似プログラム断片として検索する。
検索の際は、制御プログラムの実装には開発者による差異又は生産設備による差異を吸収しての類似検索を行うため、プログラム解析部1041及び類似検索部1042を設け、プログラム断片Fが及ぼす「副作用」に基づいた類似検索を行う。
副作用とはプログラミング分野における用語であり、プログラムがプログラム内外の変数などを変化させる影響のことである。具体的には、副作用とは、変数の値の変化又はポート番号の値の変化をいう。
ここでは、構文レベルで全く異なる制御プログラムであっても、実行の結果として及ぼされる変数の変化が同じであれば、副作用が一致するとみなす。使用する変数名及びポート番号は、開発者によって異なる変数名及び異なるポート番号が使われるため、変数及びポートの対応関係のみが一致していれば副作用が一致するとみなす。
(1)複数の副作用の同一性:制御プログラムにプログラム断片Fと同じ複数の副作用が含まれるか否か。
(2)複数の副作用の順序制約の同一性:制御プログラムにプログラム断片Fの複数の副作用と同じ順序制約をもつ複数の副作用が含まれるか否か。
・制御プログラムの処理順序の入れ替わり。
・制御プログラムが使用している命令の置き換わり。同じ副作用が別の命令で発生していてもよい。
・制御プログラムに副作用と無関係な処理の挿入があってもよい。
副作用に加えて複数の副作用の順序制約の情報を抽出する理由は、1回の基本処理サイクルでの実行結果が完全に保たれているか異なるかを区別するためである。制御プログラムの中には、複数の基本処理サイクルを経て副作用を達成するものも考えられる。
より具体的には、変数Aに対する副作用が先に発生し、変数Aの値の変化に応じて変数Bに対する副作用が発生するような制御プログラムの場合、変数Aに対する副作用が先に発生すれば、1回の基本処理サイクルの結果、変数A及び変数Bの両方に対する副作用が発生する。
後者の場合は、前者の1回の基本処理サイクルと同じ結果を2回の基本処理サイクルを経て得ることになる。こうしたケースでは、前者の場合と後者の場合で処理に要する時間が異なる。しかし、基本処理サイクルの時間は一般にミリ秒単位と小さいこと、及び、制御プログラムのデータの入出力は基本処理サイクルよりも長い周期で行われている場合があることから、処理に要する時間が異なっていても生産設備制御では等価な結果となることが多い。このように、必要な基本処理サイクルの数が異なるものの同じ副作用が得られるプログラム断片についても、差異を許容する余地を残すこととする。
モデルデータベース1046に、複数のプログラム断片Fと対応付けて複数のモデルを保存しておき、モデル構成部1045がモデルデータベース1046からモデルの抽出を行う。さらにモデル構成部1045は、制御プログラムから抽出された複数のモデルの接続関係を分析し、制御プログラム全体としてのモデルを構成する。
モデル構成部1045によって得られた結果は、表示操作部102によりユーザに表示する。また、プログラム設定保存部105が記憶部に保存することで、他の制御プログラム開発にモデルを流用することが可能である。なお、モデルの抽出過程においてモデルを一意に特定できない場合は、表示操作部102を介して複数選択肢からの特定ができてもよい。
以下にモデル抽出部104の各部について説明する。以下では、各部の動作の主体(主語)は、基本的に各段落の説明対象である。
プログラム断片データベース1043は、複数の定石の機構要素に対応する複数のプログラム断片Fを保存する。
プログラム断片データベース1043は、機構要素副作用表に記載された複数の機構要素識別子(機構要素通番)に対応させて複数のプログラム断片Fを保存している。
プログラム断片データベース1043は、図9に示す機構要素副作用表により、機構要素ごとの副作用リスト(以下、断片副作用リストという)と機構要素ごとの副作用依存関係グラフ(以下、断片副作用依存関係グラフという)を機構要素に対応付けて保存している。
定石の機構要素に対するプログラム断片Fは、開発者向けの制御プログラムの参考書籍で多数の種類が広く公開されており、これらをもとにあらかじめプログラム断片データベース1043を事前定義する方法が考えられる。また、一般的でない機構要素を扱う生産設備を開発する場合は、開発者の手によってプログラム断片データベース1043にプログラム断片Fを登録することも考えられる。
断片副作用リストと断片副作用依存関係グラフは、以下に述べるプログラム解析部1041に制御プログラムPの代わりにプログラム断片Fを入力することにより作成することができる。
プログラム解析部1041は、制御プログラムPを入力として、制御プログラムPの副作用順序制約情報(後述する制御プログラムPの正規化後の断片副作用リストと制御プログラムPのプログラム副作用依存関係グラフ)を生成する。例は別途説明する。
プログラム解析部1041の動作の流れを図11に示す。
プログラム解析部1041が解析する制御プログラムPは、あらかじめプログラムメモリ103に読み込まれているものとする。プログラムメモリ103には、図1の制御プログラムPをテキストに変換したプログラムリスト(図12に示すプログラムリスト)が格納されていることを前提とする。
プログラム解析部1041は、前処理として、制御プログラムPを文字列として取扱い可能で、一定の規則に従って記述を制約したプログラム列に正規化し、合わせて制御プログラム中の変数とポート番号とを実装非依存の代数に置き換える抽象化を行う。代数とは、制御プログラムPに実装された変数を置き換えた変数である。これらの処理の結果を正規化・抽象化後のプログラムと呼ぶ。
・1つの条件文には複合条件を含めないよう整理する。具体的には、複数条件のAND条件は、条件文を複数階層に組合せたものに整理する。また、複数条件のOR条件は、並列な複数の条件文に分ける。
・同じ条件で複数の副作用を伴う場合は、1つの変数又は出力ポートごとに1つの文となるように分ける。
・変数又は出力ポートは、もとの型と同じ型をもつ仮の変数に置き換える。型(type)とはプログラミングの一般的用語であり、データの意味付けを表す。具体的には、1ビットのデータ、16ビットの符号なし離散値、あるいは32ビットの符号あり浮動小数点数のような型がある。
・固定値(マジックナンバー)は、固定値を表す特有の変数にする。
プログラム解析部1041は、制御プログラムPの使用されている複数の変数をそれぞれ複数の代数に置き換え、置き換えの対応関係を示した変数抽象化表を作成する。
変数抽象化表の例を図13に示す。
「制御プログラムPの変数名」の列には、制御プログラム中に出現する複数の変数を出現順に重複なく列挙した。変数抽象化表に列挙する順には特に制限はない。
「型」の列には、列挙した変数の型を記載する。型はプログラミングの段階で変数ごとに決まっているものである。型は例で挙げたものを含め、下記のものがある。
・bit:1ビットのデータ。
・intN:符号ありNビット整数。Nは一般に8,16,32及び64がある。
・uintN:符号なしNビット整数。Nは一般に8,16,32及び64がある。
・timer:タイマ。設定した時間経過後に値が1となり、そうでないときは値が0となるような1ビットのデータである。
「抽象化後の変数名」は、制御プログラムPに出現した変数に対する代数の名前であり、重複なく割付けられればよい。ここでは、型によって決まるアルファベットの接頭語と、型ごとの変数の出現順を表す数字の接尾語を組合せた代数名を使用する。ここでは、bit型は接頭語m、タイマ型はt、符号あり16bit整数型はslを使用する。
プログラムリストに対し変数抽象化表を用いて変数から代数への置き換えを行う。また、RESETとADD等の命令は、数値の代入文に置き換える。
以上によって、図14に示す正規化・抽象化後のプログラムが得られる。
プログラム解析部1041は、副作用である変数の値の変化を整理するために、正規化・抽象化後のプログラムから、変化の対象となる代数を列挙した副作用対象代数を抽出する。すなわち、副作用対象代数は、制御プログラムPの実行により書き換えられる変数に対応する代数であり、参照のみされ制御プログラムPの実行により変更されない変数は含まれない。ただし、まれな条件下であっても変数が書き換え対象となっていれば、副作用対象代数に含まれる。
副作用対象代数の抽出例を図15に示す。
副作用対象代数表は、正規化・抽象化後のプログラムの命令文部分で値が代入されている変数全てを抽出したものである。参照されるのみの変数は副作用対象代数表に含めない。
プログラム解析部1041は、図15に示す副作用対象代数について、1回の基本処理サイクルの副作用すなわち条件ごとの変化結果を列挙する。
プログラム解析部1041は、副作用対象代数1つにつき、各条件に対する副作用が完結するように記述する。すなわち、正規化・抽象化後のプログラムは、制御プログラムPとしての処理流れを記述したものであったのに対し、本ステップ3では副作用対象代数ごとに整理した変化結果を記述する。
副作用については、副作用の条件又は副作用の出力値が制御プログラム中で固定的に定まらず、他の副作用の結果に依存する場合がある。こうした場合は、条件又は出力値を得るために必要な副作用も合わせて抽出する。一方で、副作用対象代数に対する副作用に影響しない変数等に対する副作用は、副作用として抽出する必要はない。
プログラム副作用リストには、以下が記載される。
通番:プログラム副作用につけられた通し番号。プログラム副作用の識別子。
変数:プログラム副作用により値が変更する変数。
プログラム副作用:制御プログラムPのプログラム副作用。
正規化・抽象化後のプログラムの行番号:制御プログラムPの副作用が記述されたプログラムリストの行番号。
プログラム解析部1041は、プログラム副作用リストに抽出した複数のプログラム副作用について、等価な副作用が得られるために順序依存関係を守る必要のあるものは直列、そうでないものは並列に整理する。これら順序依存関係を整理した複数のプログラム副作用は、一例として有向グラフ構造で表現できる。
図17に示すプログラム副作用依存関係表は、副作用対象代数に対する副作用が、どの代数を参照しているかを表す。具体的には、t1に対する副作用では、m1及びsl1を参照する。これらの依存関係を有向グラフに示したものが図18のプログラム副作用依存関係グラフである。プログラム副作用依存関係グラフは、図17に示す副作用対象代数をノードとしてその依存関係を矢印で表したものであり、副作用対象でない代数(m4,m5,sl1,sl3,sl5)はグラフから除いている。
プログラム副作用依存関係グラフは、制御プログラムPの副作用の等価性を保証するための副作用の順序制約関係を表した順序制約情報(以下、プログラム順序制約情報という)である。
プログラム解析部1041は、依存関係抽出後の副作用について、同義の条件が統一的な記述で表されるように、及び、同義の副作用が統一的な記述で表されるように、別途定めた正規化規則に従って正規化する。正規化規則の例を以下に示す。
・不等式は小なり「<」又は小なりイコール「≦」のみで表現し、さらに整数のみの不等式は小なり「<」のみを使って表す。具体的には、整数のみを用いた不等式2≧XはX<3と表現する。また、浮動小数点数の不等式3.6≧XはX≦3.6に置き換える。
・恒等式及び事前計算可能な式は、式の結果で置き換え、条件文は省略する。具体的には、下記の第1式は第2式に置き換える。
第1式:if(2>1)then(X=0)else(NOP)
第2式:X=0
・OUT、RESET、SET等の値を出力する命令は、代入文に置き換える。具体的には、RESET XはXを0にする命令分であるため、Xに0を代入するX=0に置き換える。
・不等号「!=」を用いた条件文は、等号を用いた条件文で置き換える。具体的には、下記の第1式は第2式に置き換える。
第1式:if(X!=1)then(Y=1)else(Z=1)
第2式:if(X==1)then(Z=1)else(Y=1)
正規化後の副作用の例を図19に示す。図19に示す正規化後のプログラム副作用リストでは、プログラム副作用リストのプログラム副作用を正規化した結果、t2に対する条件文が不等号なしで置き換えられている。また、sl4に対する条件文の不等号の方向が入れ替えられている。
プログラム解析部1041は、一つの制御プログラムPにつき、一つの正規化・抽象化後のプログラムと、一つの正規化後のプログラム副作用表を作成する。一つの正規化後のプログラム副作用表からは、一つの正規化後のプログラム副作用リストと一つのプログラム副作用依存関係グラフが参照されている。
プログラム断片データベース1043に登録した断片副作用リストと、断片副作用依存関係グラフは、プログラム解析部1041が、制御プログラムPの代わりにプログラム断片Fを解析することにより作成することができる。
具体的には、プログラム解析部1041はプログラム断片Fから以下を作成する。
プログラム断片Fをテキスト化したプログラムリスト。
プログラム断片Fの変数抽象化表。
プログラム断片Fの正規化・抽象化後のプログラム。
プログラム断片Fの副作用対象代数表。
プログラム断片Fの断片副作用リスト。
プログラム断片Fの断片副作用の断片副作用依存関係表。
プログラム断片Fの断片副作用依存関係グラフ。
プログラム断片Fの正規化後の断片副作用リスト。
プログラム断片Fの正規化後の断片副作用リストとプログラム断片Fの断片副作用依存関係グラフとを合わせて、断片副作用順序制約情報という。プログラム解析部1041は、複数のプログラム断片Fから複数の断片副作用順序制約情報を作成する。
類似検索部1042は、プログラムメモリ103の制御プログラムPの中に、プログラム断片データベース1043のプログラム断片Fと同等な副作用を持つ類似プログラム断片が含まれるか否かを検索する。
類似検索部1042は、プログラム解析部1041によって得られた副作用に関するプログラム副作用順序制約情報(正規化後のプログラム副作用リストとプログラム順序制約情報)と断片副作用順序制約情報(正規化後の断片副作用リストとプログラム断片Fの断片副作用依存関係グラフ)を用いて、類似検索を行う。
類似検索部1042の動作の流れを図21に示す。
類似検索部1042は、検索における合致条件の緩さを定義した検索オプションをメモリ92から読み取る。
検索オプションを使用する理由は、被検索対象の制御プログラムPが難解な制御ロジックで作成されており類似検索で十分に合致を判断されない場合に、類似検索部1042が合致と判断する範囲を広げることを想定している。
検索オプションは、プログラム開発支援装置の表示操作部102を用いて開発者の手によりメモリ92に設定されるか、あるいは、類似検索部1042が検索の結果に応じてメモリ92のオプション設定を変更してもよい。具体的には、検索の結果、合致した検索結果の数が多すぎるならば合致条件を厳しくする方向に検索オプションを設定し、逆に検索結果の数が少なすぎるならば逆の設定を行うことが考えられる。
・検索オプション1:副作用の順序制約の完全一致を必要とするか否か。
被検索対象の制御プログラムPが検索対象のプログラム断片Fの副作用を全て含むものの順序制約を満たさない場合、副作用どうしが1回の基本処理サイクルでは連鎖せず、複数の基本処理サイクルの実行後に同じ副作用が得られる場合がある。すなわち、副作用の順序制約を部分一致で検索することで、同じ副作用の得られる類似プログラム断片を数多く検索できる場合がある。
ここでは、検索オプション1は、副作用の順序制約の完全一致を必要とするという設定になっているものとする。
・検索オプション2:代数の型の差異を許容するか否か。
制御プログラムPでは、より値の範囲の広い型の変数を用いても同じ演算ができる。具体的には、16ビットの整数型の演算は、32ビットの整数型を用いても行うことができる。値の範囲の広い型の変数への型の差異を認めることで、同じ副作用の得られる類似プログラム断片を数多く検索できる場合がある。
ここでは、検索オプション2は、代数の型の差異を許容しないという設定になっているものとする。
類似検索部1042は、プログラム断片データベース1043の断片副作用リストに記載された複数のプログラム断片Fの各プログラム断片Fに対する複数の正規化後の断片副作用全てについて、プログラム副作用の中に合致するものがあるかを確認する。
類似検索部1042は、断片副作用リストの複数の正規化後の断片副作用全てがプログラム副作用リストに含まれている場合、その断片副作用リストに対応するプログラム断片Fを類似プログラム断片と判定する。
換言すれば、類似検索部1042は、プログラム断片データベース1043に登録された機構要素ごとに、機構要素の複数の副作用全てを制御プログラムPが満たすか否かを確認する。全ての副作用が満たされる場合、その機構要素は制御プログラムPの中に含まれると判断する。満たされない副作用がある場合、その機構要素は制御プログラムPの中に含まれないと判断する。
(a)副作用の条件分岐の構造と条件が同じであること、かつ、
(b)副作用の結果が同じであること、かつ、
(c)副作用に関わる代数に矛盾がないこと。
プログラム断片Fに対する複数の正規化後の断片副作用(検索対象副作用)が(1)であり、プログラム副作用(被検索対象副作用)が(2)~(5)であるとする。
これらの結果、(2)は、(1)に合致すると判断する。
これらの結果、(3)は、(1)に合致すると判断する。
類似検索部1042は、断片副作用リストの複数の正規化後の断片副作用全てがプログラム副作用リストのプログラム副作用に含まれており、かつ、副作用の依存関係が一致する断片副作用リストが1件でも存在すると判断すれば、ステップS14へ遷移する。そうでなければステップS16へ遷移する。すなわち、類似プログラム断片が1件でも存在すると判断すれば、ステップS14へ遷移し、そうでなければステップS16へ遷移する。
類似検索部1042は、断片副作用リストに対応するプログラム断片F(機構要素)についての合致の有無を検索結果表に記録する。
類似検索部1042は、断片副作用リストの複数の正規化後の断片副作用全てがプログラム副作用に含まれており、かつ、副作用の依存関係が一致する断片副作用リストに対応するプログラム断片F(機構要素)を制御プログラムPの中に含まれる類似プログラム断片と推定する。
類似検索部1042は、類似プログラム断片F(機構要素)について、正規化・抽象化後のプログラムの行との対応関係を検索結果対応表に記録する。
検索結果表と検索結果対応表の関係は、図23のようになっており、検索結果表から検索結果対応表が参照されている。
検索結果表の各行は、プログラム断片データベース1043に登録された機構要素副作用表に記述された機構要素に対応している。結果欄には、当該機構要素のプログラム断片Fが制御プログラムPの中に含まれるか否かの結果を示す。結果が「あり」の場合は、対応する検索結果対応表を特定するための検索結果対応表IDが記録される。
検索結果対応表の各行は、プログラム断片データベース1043の機構要素のプログラム断片Fの副作用に対応する。「正規化・抽象化後のプログラムの通番」には、制御プログラムP(正規化・抽象化後のプログラム)の当該副作用に合致すると判断された行番号が1つ以上記載されている。
類似検索部1042は、検索結果対応表で1つの副作用に対して正規化・抽象化後の制御プログラムPの該当行が複数ある場合は、どの行の組合せによって当該機構要素が実現されうるか副作用整合表を作成して確認する。
副作用整合表の例を図26に示す。
副作用整合表は、制御プログラムPの中に含まれると判断された機構要素に対応して1つ作成される。
副作用整合表の各行は、プログラム断片データベース1043の当該機構要素のプログラム断片Fの副作用に対応する。
類似検索部1042は、プログラム断片Fの複数の断片副作用とプログラムリストの一以上の行番号の各行番号とを1対1に対応させた一以上の行番号の組(行番号組)を作成する。
検索結果対応表のとおり、各副作用を実現する正規化・抽象化後のプログラムの行番号組は、8通りある。副作用整合表の各列には、これら8通りの全組を列挙した。
さらに、機構要素のプログラム断片Fの副作用に対応する正規化・抽象化後のプログラムの行番号が昇順になっていないものは、プログラム断片Fの副作用の順で制御プログラムPの副作用が実現されない可能性があるため、「?」を記入する。
最後に、正規化・抽象化後のプログラムの行番号の重複がなく、正規化・抽象化後のプログラムの行番号が昇順になっているものは「OK」を記入する。
類似検索部1042は、行番号組の複数の断片副作用全てが制御プログラムのプログラムリストの異なる行から得られたプログラム副作用に対応している行番号組がある場合に、整合性のある行番号組があるとする。換言すれば、類似検索部1042は、行番号組の行番号が全て異なっていれば、整合性のある行番号組とする。類似検索部1042は、整合性のある行番号組を一以上有する断片副作用リストに対応するプログラム断片Fを類似プログラム断片とする。
類似検索部1042は、以下の表を得て、処理を終了する。
・検索結果表
・検索結果対応表
・正規化・抽象化後のプログラムの行番号による副作用整合表
検索結果が合致なしと判断されたことをもって類似検索部1042の処理を終了する。合致なしと判断された場合は、検索オプションの変更により合致条件を緩く見直した後に本手順を再度実施する。あるいは検索オプションにこれ以上の緩和余地がなければ、制御プログラム中にモデル化可能な断片はないと判断する。
検索オプションの変更の具体例は以下のとおりである。
(1)検索オプション1の緩和
類似検索部1042は、副作用の順序制約の完全一致を必要としないものとして検索をする。すなわち、類似検索部1042は、副作用の順序制約を部分一致で検索する。部分一致で合致なしと判断された場合は、類似検索部1042は、検索オプション1をさらに緩和して副作用の順序制約を無視して検索する。
類似検索部1042は、代数の型の差異を許容して検索する。
類似検索部1042は、副作用の合致判断基準の(c)を検査する場合、型が一致していなくとも上位互換性がある型の違いがあっても副作用に関わる代数に矛盾がないとする。具体的には、16ビットの整数型の代数は、32ビットの整数型の代数でもよいと判断する。
機構要素推定部1044は、一つの制御プログラムP(被検索対象)に対する検索で得られた副作用整合表をもとに、当該制御プログラムPがどの機構要素の組合せを制御するものであるかを、複数ありうる機構要素の組合せの中から推定する。
(1)2つの機構要素が含まれる場合
類似検索部1042による一つの制御プログラムP(被検索対象)に対する検索の結果、2つの機構要素が含まれるとする検索結果表が得られたとする。1つ目の機構要素に対して得られた副作用整合表は図26であり、2つ目の機構要素に対して得られた副作用整合表は図27であるとする。このとき、2つの機構要素の両方が重複のない正規化・抽象化後の制御プログラムPの行に対応していれば、2つの機構要素は両立できる。
組合せを、{1つ目の副作用整合表の列、2つ目の副作用整合表の列}という記法で表す。これら組合せのリストを副作用組合せリストと呼ぶ。
判定が「OK」である組だけの場合、重複のない組合せを全て抽出すると、以下のような副作用組合せリストとなる。
{組1、組1}、{組1、組2}、{組1、組3}、{組1、組4}、
{組2、組2}、{組2、組4}。
{組2、組1}と{組2、組3}は、2つの機構要素がともに正規化・抽象化後のプログラムの42行目を必要とするため、両立しない。
判定が「NO」である組は除く場合、重複のない組合せを全て抽出すると、図28に示す副作用組合せリストのとおりとなる。
{組1、組1}、{組1、組2}、{組1、組3}、{組1、組4}、
{組2、組2}、{組2、組4}、
{組3、組1}、{組3、組2}、{組3、組3}、{組3、組4}、
{組4、組2}、{組4、組4}、
{組7、組1}、{組7、組2}、{組7、組3}、{組7、組4}、
{組8、組2}、{組8、組4}。
以下の組合せは、2つの機構要素がともに正規化・抽象化後のプログラムの42行目を必要とするため、両立しない。
{組2、組1}、{組2、組3}、
{組4、組1}、{組4、組3}、
{組8、組1}、{組8、組3}。
類似検索部1042による一つの制御プログラムP(被検索対象)に対する検索の結果、1つの機構要素だけが含まれるとされたとする。1つ目の機構要素に対して得られた副作用整合表は図26であるとする。組合せを、{1つ目の副作用整合表の列}という記法で表す。
{組1}、
{組2}。
検索オプションの設定が、副作用の順序制約の完全一致を必要としないとなっている場合、副作用組合せリストは以下のとおりである。
{組1}、
{組2}、
{組3}、
{組4}、
{組7}、
{組8}。
なお、上記(1)の2つの機構要素が含まれる場合でも、一方の機構要素に対して得られた副作用整合表の組が全て「NO」であれば、(2)の1つの機構要素が含まれる場合と同様の扱いとなり、他方の機構要素に対して得られた副作用整合表だけを用いて、副作用組合せリストを作成する。
類似検索部1042による一つの制御プログラムP(被検索対象)に対する検索の結果、3つ以上の機構要素が含まれていてもよい。3つ以上の機構要素が重複のない正規化・抽象化後の制御プログラムPの行に対応していれば、3以上の機構要素は両立できる。
3の機構要素が検索できた場合、副作用組合せリストは、{1つ目の副作用整合表の列、2つ目の副作用整合表の列、3つ目の副作用整合表の列}という記法になる。
副作用組合せリストに記載された組合せに対応する機構要素は、同時に実現可能な機構要素である。
機構要素推定部1044は、副作用組合せリストを出力する。
これまでの検索結果表、副作用組合せリスト、及び、正規化・抽象化後のプログラムのプログラムリストを組合せると、正規化・抽象化後のプログラムのプログラムリストのどの行によってどの機構要素を実現している可能性があるかという全ての組合せが分かる。
モデルデータベース1046は、プログラム断片データベース1043に登録されたプログラム断片Fに対応するモデルを機構要素モデルとして登録したものである。
モデルデータベース1046は、図29に示す構造となっている。
図30のモデルデータベース管理表から、機構要素識別子(機構要素通番)に対応したモデルを参照することができる。モデルは、本実施形態ではブロック定義図、内部ブロック図及び状態遷移図を想定するが、これらに限定されない。
モデルデータベース1046は、プログラム断片データベース1043と同様に事前定義するか、あるいは開発者が登録・編集・削除する手段を備えていてもよい。いずれのケースでも、登録するモデルの生成は人(プログラム開発支援装置の開発者)の手による生成が必要となる。しかし、あらかじめ複数のプログラム断片Fについてのモデルを考えればよいため、大規模な制御プログラム全体からモデルを生成することに比べモデル生成の複雑性は低い。また、モデルの内容は前述の書籍などに記載された機構要素の振る舞いをもとに定義できるため、モデル生成の実現は可能である。
モデル構成部1045は、副作用組合せリストの複数の組合せそれぞれについて、モデルデータベース1046から対応する機構要素モデルを取り出す。
モデル構成部1045は、機構要素モデルどうしのインタフェースの接続関係を示したうえで、下記の情報を付加して表示操作部102によりモニタに表示する。
・機構要素モデルのインタフェースに対応する制御プログラムPの変数・出力ポート名。
・機構要素モデルに対応する制御プログラムPの行番号。
モデル構成部1045は、モデルデータベース管理表を用いて、機構要素通番に対応する各種モデルを取り出す。
図31に、{組1、組1}の場合のモニタの表示例を示す。
モニタには、プッシャー機構タイプ2の状態遷移図とブロック定義図と内部ブロック図と、ターンテーブル機構タイプ2の状態遷移図とブロック定義図と内部ブロック図とが組み合わされて、状態遷移図とブロック定義図と内部ブロック図との制御プログラムモデルが表示される。
モデルデータベース1046の機構要素モデルは、副作用中に現れる代数と、モデルの入出力インタフェースを対応付けて記録している。これにより、機構要素モデルどうしのインタフェースが接続されていれば、それらの機構要素モデルを結線して接続関係を合わせて制御プログラムモデルとして表示する。
副作用組合せリストのどの組合せに基づいた表示をするかによって、機構要素、又は、モデルの接続関係が変化する可能性がある。副作用組合せリストの組合せの中には実際の生産設備のモデルを正しく表現するもの及びそうでないものも含まれる可能性がある。正しく表現されたモデルを選択するため、副作用組合せリスト中の組合せを開発者が選択する機能を表示操作部102にて提供し、モデル構成部1045は選択に応じてモデルを構成する。
モデル構成部1045は、機構要素モデルどうしの接続関係で情報不足又は不整合により特定ができなかった部分についても、表示操作部102にて不明の断片である旨をモニタに表示する。
モデル構成部1045は、断定できない情報は制御プログラムモデルにおいても空欄で示し、表示操作部102にてユーザによる事後入力を可能とする。
類似検索は、制御プログラムPが実行結果として外部の変数にどのような変化を与えるかを「副作用」として抽出し、その等価性を比較することで実現する。
プログラム断片Fとその機構要素モデルとを対応付けてデータベース化しておき、類似検索の結果をもとに対応する機構要素モデルを取り出して結合することで、制御プログラムPから制御プログラムモデルへの変換を行う。
以上により、制御プログラムPからの制御プログラムモデルの生成が可能である。
プログラム開発支援装置1は、プログラム解析部1041と類似検索部1042とを備える。
プログラム断片データベース1043は、機構要素に対応するプログラム断片Fに含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片Fに対応させて登録する。
プログラム断片データベース1043は、機構要素に対応するプログラム断片Fに含まれる複数の断片副作用の順序制約を複数の断片順序制約情報として複数のプログラム断片Fに対応させて登録する。
プログラム解析部1041は、複数のプログラム副作用の順序制約をプログラム順序制約情報として作成する。
プログラム解析部1041は、プログラム副作用リストに記載された複数のプログラム副作用の記述に対して、同義の条件を統一記述で表現するとともに同義の副作用を統一記述で表現することにより、プログラム副作用を正規化する。
(a)副作用の条件分岐の構造と条件が同じであること、かつ、
(b)副作用の結果が同じであること、かつ、
(c)副作用に関わる代数に矛盾がないこと
を用いて、断片副作用がプログラム副作用に合致することを判定する。
プログラム解析部1041は、制御プログラムが使用している変数と変数が参照している変数とをプログラム順序制約情報として作成する。
プログラム解析部1041は、変数と副作用と一以上の行番号とを対応させたリストをプログラム副作用リストとして作成する。
類似検索部1042は、プログラム断片Fの複数の断片副作用とプログラムリストの一以上の行番号の各行番号とを1対1に対応させた一以上の行番号組を作成する。
類似検索部1042は、一以上の行番号組の中に、複数の断片副作用全てが制御プログラムのプログラムリストの異なる行から得られたプログラム副作用に対応している行番号組がある場合に、整合性のある一つ以上の行番号組があるとして、断片副作用リストに対応するプログラム断片Fを類似プログラム断片とする。
機構要素推定部1044は、複数の断片副作用全てに対して制御プログラムの異なる行が対応している場合、複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する。
機構要素推定部1044は、副作用組合せリストの各組合せの複数の行番号組に記載された行が制御プログラムの異なる行に対応している場合、複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する。
モデルデータベース1046は、機構要素モデルとして、ブロック構成図と、内部ブロック図と、状態遷移図との少なくとものいずれかを含む。
プログラム開発支援装置は、制御プログラムを入力として、制御プログラムの制御対象を抽象表現した制御プログラムモデルを生成することを特徴とする。
プログラム開発支援装置は、類似検索において、オプションの設定により、プログラム断片Fと同じ副作用を全て含み、かつその順序制約が完全には一致しない断片を一致と判定することで、制御プログラムから複数の基本処理サイクルを経て同じ副作用が得られる断片を検索することが可能であることを特徴とする。
・制御プログラムを格納するプログラムメモリ103。
・制御プログラムから、その実行後の変数又はポートの値変化である副作用を抽出し、正規化・抽象化を行った正規化・抽象化後のプログラム副作用リストと、副作用の等価性を保証するための副作用の順序関係を表したプログラム順序制約情報を抽出するプログラム解析部1041。
・複数のプログラム断片Fと複数の正規化・抽象化後の副作用リストと複数の順序制約情報とを登録したプログラム断片データベース1043。
・制御プログラムの正規化・抽象化後の副作用リスト及び順序制約情報と、プログラム断片Fの正規化・抽象化後の副作用リスト及び順序制約情報を比較する類似検索部1042。
・制御プログラムが制御対象とする機械機構又は電気回路などの要素を推定する機構要素推定部1044。
・プログラム断片データベース1043に格納されたプログラム断片に対応するモデルを格納したモデルデータベース1046。
・制御プログラムが制御する機械機構又は電気回路などに対応する機構要素モデルをモデルデータベースから取得し、機構要素モデル同士のインタフェースの接続関係を特定することで制御プログラムモデルを構成するモデル構成部1045。
本実施形態によれば、定石のプログラム断片Fを格納したプログラム断片データベース1043と、制御プログラムPからその振る舞いを表す副作用とその順序制約とを抽出するプログラム解析部1041とを用い制御プログラムPからプログラム断片Fの振る舞いを類似検索する。このため、制御プログラムPが制御する機構要素を特定することができる。
また、順序制約の一致度合を選択可能とすることで、複数の基本処理サイクルを必要とするが同じ振る舞いをする制御プログラムの断片を類似検索可能にし、制御プログラムのモデル化を可能にする。
●変形例1:プログラム順序制約情報と断片順序制約情報
プログラム順序制約情報として、プログラム副作用依存関係グラフの代わりにプログラム副作用依存関係表を用いてもよい。
プログラム順序制約情報は、プログラム副作用の順序制約がわかればどのような表記でもよい。
断片順序制約情報として、断片副作用依存関係グラフの代わりに断片副作用依存関係表を用いてもよい。
断片順序制約情報は、断片副作用の順序制約がわかればどのような表記でもよい。
プログラム断片Fとして、制御プログラムPの一部をプログラム断片データベース1043に登録してもよい。
プログラム断片Fとして、制御プログラムPのプログラム断片Fと類似する断片をプログラム断片データベース1043に登録してもよい。
プログラム断片Fとして、プログラム解析部1041によってプログラム断片Fを解析して得られる断片副作用順序制約情報を保存してもよい。
プログラム断片データベース1043の断片副作用リストと断片副作用依存関係グラフは、プログラム解析部1041が作成しなくてもよく、他の手段又は人手により作成してもよい。
い。
断片副作用リストと断片副作用依存関係グラフは、プログラム解析部1041により作成したもの、他の手段により作成したもの又は人手により作成したものが混在してもよい。
プログラム断片Fの表、リスト、グラフの記述形式は制御プログラムPの表、リスト、グラフの記述形式と同じなくてもよく、両者が類似検索部1042により比較できる記述形式であればよい。具体的には、プログラム断片Fの断片副作用依存関係表と、制御プログラムのプログラム副作用依存関係グラフとを比較してもよい。
類似検索部1042は、プログラム断片Fに対する複数の断片副作用全てについてプログラム副作用に合致してはいないが大部分は合致しているものを検索してもよい。複数の断片副作用全てがプログラム断片Fに必須の副作用であるとは限らない場合があるかもしれないので、複数の断片副作用の多くがプログラム副作用に合致するものを検索してもよい。
具体的には、オプション設定により、100%合致、90%合致、80%合致というように、複数の断片副作用のプログラム副作用に対する合致の割合を設定すればよい。
Claims (13)
- 機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録するプログラム断片データベースと
制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成するプログラム解析部と、
前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索する類似検索部と
を備えたプログラム開発支援装置。 - プログラム断片データベースは、前記複数の断片副作用の順序制約を複数の断片順序制約情報として前記複数のプログラム断片に対応させて登録し、
プログラム解析部は、前記複数のプログラム副作用の順序制約をプログラム順序制約情報として作成し、
前記類似検索部は、前記プログラム順序制約情報の順序制約と、前記複数の断片順序制約情報の順序制約とを比較して、前記断片順序制約情報の順序制約が前記プログラム順序制約情報の順序制約に含まれる前記断片順序制約情報に対応するプログラム断片を類似プログラム断片とする請求項1に記載のプログラム開発支援装置。 - 前記類似検索部は、検索オプションの設定に基づいて、前記断片順序制約情報の順序制約が前記プログラム順序制約情報の順序制約とは完全には一致しないプログラム断片を、複数の基本処理サイクルを経て同じ副作用が得られる類似プログラム断片とする請求項2に記載のプログラム開発支援装置。
- 前記類似検索部が複数の類似プログラム断片を検索した場合に、前記複数の類似プログラム断片に含まれる前記複数の断片副作用全てに対して前記制御プログラムの異なる行が対応している複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する機構要素推定部を備えた請求項1に記載のプログラム開発支援装置。
- 前記複数のプログラム断片それぞれに対応する複数の機構要素モデルを格納するモデルデータベースと、
前記モデルデータベースから前記整合性のある機構要素の組合せに記載された前記複数のプログラム断片に対応する複数のモデルを取り出し前記複数のモデルを組合せて前記制御プログラムの制御プログラムモデルを構成するモデル構成部と
を備えた請求項4に記載のプログラム開発支援装置。 - 前記プログラム解析部は、
前記制御プログラムのプログラムリストの記述を制約する正規化と、前記制御プログラムのプログラムリストの変数を代数に置き換える抽象化とを行い、
前記プログラム解析部は、
前記プログラム副作用リストに記載された複数のプログラム副作用の記述に対して、同義の条件を統一記述で表現するとともに同義の副作用を統一記述で表現することにより、プログラム副作用を正規化する請求項1から5のいずれか1項に記載のプログラム開発支援装置。 - 前記類似検索部は、判断基準として、
(a)副作用の条件分岐の構造と条件が同じであること、かつ、
(b)副作用の結果が同じであること、かつ、
(c)副作用に関わる代数に矛盾がないこと
を用いて、断片副作用がプログラム副作用に合致することを判定する請求項1から5のいずれか1項に記載のプログラム開発支援装置。 - 前記プログラム断片データベースは、前記複数のプログラム断片それぞれが使用している変数と前記変数が参照している変数とを前記複数の断片順序制約情報として登録し、
前記プログラム解析部は、前記制御プログラムが使用している変数と前記変数が参照している変数とを前記プログラム順序制約情報として作成し、
前記類似検索部は、前記複数の断片順序制約情報それぞれに記載された順序制約が前記プログラム順序制約情報に記載された順序制約と一致する場合に、前記断片順序制約情報に対応するプログラム断片を類似プログラム断片とする請求項2に記載のプログラム開発支援装置。 - 前記プログラム解析部は、前記制御プログラムのプログラムリストの行ごとに、副作用により値が変更される変数と前記変数の値を変更する一以上の行番号とを検出し、前記変数と前記副作用と前記一以上の行番号とを対応させたリストを前記プログラム副作用リストとして作成し、
前記類似検索部は、前記プログラム断片の前記複数の断片副作用と前記プログラムリストの前記一以上の行番号の各行番号とを1対1に対応させた一以上の行番号組を作成し、前記一以上の行番号組の中に、前記複数の断片副作用全てが前記制御プログラムのプログラムリストの異なる行から得られたプログラム副作用に対応している行番号組がある場合に、整合性のある一つ以上の行番号組があるとして、前記断片副作用リストに対応するプログラム断片を前記類似プログラム断片とする請求項4に記載のプログラム開発支援装置。 - 前記機構要素推定部は、複数の類似プログラム断片の前記整合性のある一つ以上の行番号組の各行番号組を組合せた副作用組合せリストを作成し、前記副作用組合せリストの各組合せの複数の行番号組に記載された行が前記制御プログラムの異なる行が対応している場合、複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する請求項9に記載のプログラム開発支援装置。
- 前記モデルデータベースは、前記機構要素モデルとして、ブロック構成図と、内部ブロック図と、状態遷移図との少なくとものいずれかを含む請求項5に記載のプログラム開発支援装置。
- プログラム断片データベースに、機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録し、
プログラム解析部が、制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成し、
類似検索部が、前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索するプログラム開発支援方法。 - 機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録するプログラム断片データベースを有するコンピュータに、
制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成するプログラム解析処理と、
前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索する類似検索処理と
を実行させるプログラム開発支援プログラム。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2023/013688 WO2024202057A1 (ja) | 2023-03-31 | 2023-03-31 | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JPWO2024202057A1 JPWO2024202057A1 (ja) | 2024-10-03 |
| JP7638457B1 true JP7638457B1 (ja) | 2025-03-03 |
| JPWO2024202057A5 JPWO2024202057A5 (ja) | 2025-03-06 |
Family
ID=92904615
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2024559716A Active JP7638457B1 (ja) | 2023-03-31 | 2023-03-31 | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20250258753A1 (ja) |
| JP (1) | JP7638457B1 (ja) |
| CN (1) | CN120883182A (ja) |
| DE (1) | DE112023005670T5 (ja) |
| WO (1) | WO2024202057A1 (ja) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012164148A (ja) * | 2011-02-07 | 2012-08-30 | Ntt Data Corp | リバースエンジニアリング支援装置、リバースエンジニアリング支援方法及びそのプログラム |
| JP2012256178A (ja) * | 2011-06-08 | 2012-12-27 | Mitsubishi Electric Corp | 情報処理装置及び情報処理方法及びプログラム |
-
2023
- 2023-03-31 CN CN202380085260.0A patent/CN120883182A/zh active Pending
- 2023-03-31 DE DE112023005670.6T patent/DE112023005670T5/de active Pending
- 2023-03-31 JP JP2024559716A patent/JP7638457B1/ja active Active
- 2023-03-31 WO PCT/JP2023/013688 patent/WO2024202057A1/ja not_active Ceased
-
2025
- 2025-04-29 US US19/193,282 patent/US20250258753A1/en active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012164148A (ja) * | 2011-02-07 | 2012-08-30 | Ntt Data Corp | リバースエンジニアリング支援装置、リバースエンジニアリング支援方法及びそのプログラム |
| JP2012256178A (ja) * | 2011-06-08 | 2012-12-27 | Mitsubishi Electric Corp | 情報処理装置及び情報処理方法及びプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| DE112023005670T5 (de) | 2025-12-18 |
| CN120883182A (zh) | 2025-10-31 |
| JPWO2024202057A1 (ja) | 2024-10-03 |
| US20250258753A1 (en) | 2025-08-14 |
| WO2024202057A1 (ja) | 2024-10-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111796831B (zh) | 一种多芯片兼容的编译方法和装置 | |
| JP4195479B2 (ja) | インクリメンタル生成システム | |
| JP5297802B2 (ja) | グラフ型計算のためのメタデータ管理 | |
| JP5235663B2 (ja) | グラフ型計算のためのパラメータ管理 | |
| Wright et al. | Large-scale automated refactoring using ClangMR | |
| AU4098700A (en) | Circuit arrangement for measuring the resistances of a pressure-sensitive resistance mat | |
| US9047165B1 (en) | Multiversion model versioning system and method | |
| EP2417498A1 (en) | Method for automatically partitioning a part program into fundamental operations | |
| CN103914379B (zh) | 故障自动注入与故障检测的方法及其系统 | |
| Aagaard et al. | Formal verification of iterative algorithms in microprocessors | |
| US9298858B1 (en) | System and method for reducing models based on a criterion | |
| CN101162480A (zh) | 工程图自动识别与理解的方法 | |
| CN115391173B (zh) | 从Simulink-StateFlow模型到NuSMV模型的转换方法 | |
| CN114647401A (zh) | 适用于SysML、Simulink和AADL的分布式系统的模型验证方法 | |
| CN116880851A (zh) | 基于数据流依赖关系分析的模型间一致性分析方法、系统及应用 | |
| JP7638457B1 (ja) | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム | |
| AU760395B2 (en) | Program reproducing method and device, and medium on which program for program reproduction recording | |
| CN116185422B (zh) | 一种基于VsCode的CAA二次开发方法及系统 | |
| Oberlehner et al. | Exploring refactoring operations for iec 61499 | |
| JP6037976B2 (ja) | ソースコード生成装置 | |
| KR20240009751A (ko) | 라이브러리 이식을 통한 3차원 설계 모델 자동 상세화 방법 및 장치 | |
| CN116679974A (zh) | 一种多软件封装运行方法、计算机程序产品及终端设备 | |
| Lin et al. | A Platform-Independent Code Model for Operation and Information Technologies Convergences in Industrial Edge Applications | |
| JP2555760B2 (ja) | 移行資産難易度評価装置 | |
| Muctadir et al. | A Taxonomy of Change Types for Textual DSL Grammars. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20241008 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20241008 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20241008 |
|
| 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: 20250121 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20250218 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7638457 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |