JP7638457B1 - プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム - Google Patents

プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム Download PDF

Info

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
Application number
JP2024559716A
Other languages
English (en)
Other versions
JPWO2024202057A5 (ja
JPWO2024202057A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2024202057A1 publication Critical patent/JPWO2024202057A1/ja
Application granted granted Critical
Publication of JP7638457B1 publication Critical patent/JP7638457B1/ja
Publication of JPWO2024202057A5 publication Critical patent/JPWO2024202057A5/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3608Analysis of software for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Program-control systems
    • G05B19/02Program-control systems electric
    • G05B19/04Program control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse 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

プログラム開発支援装置(1)は、機構要素に対応するプログラム断片(F)に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片(F)に対応させて登録するプログラム断片データベース(1043)と、制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成するプログラム解析部(1041)と、前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片(F)を類似プログラム断片として検索する類似検索部(1042)とを備えた。

Description

本開示は、プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラムに関するものである。
本開示は、ファクトリーオートメーション(FA)及びプロセスオートメーション(PA)の分野における制御プログラムの開発効率化に関するものである。
工作機械及び生産ライン(以下、まとめて生産設備と呼ぶ)は、PLC(Programable Logic Controller)を用いて制御されることが多い。制御の内容は生産設備により様々であるため、生産設備に応じて工作機械メーカー又はシステムインテグレータ(以下、まとめて生産設備メーカーとよぶ)が制御プログラムを作成する。
制御プログラムの開発を効率化するため、モデルベース開発の適用が一部で広まっている。
2022年時点ではモデルベース開発の適用範囲は一部に留まっており、生産設備の開発及び制御プログラムの開発に広く適用されているとは言えない。このため、市場にある生産設備全体では、モデルベース開発が未適用の開発資産(以下、既存開発資産と呼ぶ)の割合が大きい。近年の業務効率化のニーズを考慮すると、既存開発資産を、モデルベース開発を適用した開発資産(以下モデルベース開発資産と呼ぶ)に変換することで、以後のモデル改修とモデル流用開発に生かしていくことが好ましい。
既存開発資産である制御プログラムをモデルベース開発資産に変換できれば有用である。しかし、人手による変換作業は多大な工数を要し、また、人手によらず変換を行う技術は知られていない。
制御プログラムからモデルを復元するには、当該制御プログラムが生成されるに至った開発者の意図を復元する必要がある。ところが、技術者の代替わりによって情報が失われている場合が多く、かつ分析の手がかりとなる制御プログラム中の補足情報(ラベル、コメント)又は設計資料が十分でない場合も多い。
このため、結果として、人手では投入工数に見合った効果が得られないと判断される場合が多い。また、開発者の意図を復元する必要があり、制御プログラムからのモデルの導出は決定論的に解決できる問題ではないため、ソフトウェアで変換を行う技術も知られていない。
特開2001-306108号公報
特許文献1では、モデルの1種である状態遷移図を制御プログラムと関連付けて保存することを特徴とする制御プログラムの作成方法及が開示されている。状態遷移図は、あらかじめユーザが画面上で作成・編集する必要があり、特許文献1では、状態遷移図から制御プログラムを生成することが言及されている。一方、状態遷移図以外のモデルについては言及がない。
特許文献1に開示された技術でも、制御プログラムから状態遷移図を導出することについては開示も示唆もされていない。
本開示が解決しようとする課題は、制御プログラムに生産設備の設計情報が添付されていることを前提とせず、既存の制御プログラムからモデルの構成単位となるプログラム断片を検出し、制御プログラムモデルを生成することである。
本開示に係るプログラム開発支援装置は、
機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録するプログラム断片データベースと
制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成するプログラム解析部と、
前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索する類似検索部と
を備えた。
本開示では、類似検索部が既存の制御プログラムとプログラム断片との副作用を比較することにより、既存の制御プログラムからモデルの構成単位となるプログラム断片を検出することができる。
制御プログラムの例を示す図。 ブロック定義図の例を示す図。 内部ブロック図の例を示す図。 状態遷移図の例を示す図。 システム構成を示す図。 エンジニアリングワークステーション9の構成を示す図。 プログラム開発支援装置1の構成を示す図。 モデル抽出部104の構成を示す図。 機構要素副作用表を示す図。 プログラム断片データベース1043の構造を示す図。 プログラム解析部1041の動作を示すフローチャート。 プログラム解析部1041によるテキスト化したプログラムリストの例を示す図。 プログラム解析部1041による変数抽象化表の例を示す図。 プログラム解析部1041による正規化・抽象化後のプログラムの例を示す図。 プログラム解析部1041による副作用対象代数の例を示す図。 プログラム解析部1041によるプログラム副作用リストの例を示す図。 プログラム解析部1041によるプログラム副作用のプログラム副作用依存関係の例を示す図。 プログラム解析部1041によるプログラム副作用のプログラム依存関係グラフを示す図。 プログラム解析部1041によるプログラム正規化後の副作用リストの例を示す図。 プログラム解析部1041による情報の関係を示す図。 類似検索部1042の動作を示すフローチャート。 類似検索部1042の副作用検索の判定例を示す図。 類似検索部1042の検索結果のデータ構造を示す図。 類似検索部1042による検索結果表の例を示す図。 類似検索部1042による検索結果対応表の例を示す図。 類似検索部1042による副作用整合表の例を示す図。 類似検索部1042による副作用整合表の別例を示す図。 機構要素推定部1044による副作用組合せリストを示す図。 モデルデータベースの構造を示す図。 モデルデータベース管理表を示す図。 モデル構成部1045によるモニタ画面を示す図。 モデル構成部1045によるモニタ画面を示す図。
以下、本開示の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
本実施形態では、制御プログラムは電気回路を模したグラフィカルなプログラミング言語であるラダーダイアグラムを用いて開発されるプログラムを前提として説明する。他にも4種類の言語がIEC(International Electrotechnical Commission)61131-3で標準化されており、本実施形態の対象はラダーダイアグラムに限らない。
ラダーダイアグラムで作成された制御プログラムの例を図1に示す。
ラダーダイアグラムの言語仕様はIEC61131-3及びその他の文献に譲るが、その概略は下記のとおりである。
・プログラム中の水平方向の線は接続線である。
・接続線の左側は条件文であり、右側は命令文である。条件文が成立すると、当該接続線上の命令文が実行される。
・接続線の統合によって並列に記載された条件文は、OR条件となる。すなわち、いずれか一つ以上の条件文が成立すると、命令文が実行される。
・接続線上で直列に記載された条件文は、AND条件となる。すなわち、全ての条件文が成立すると、命令文が実行される。
・接続線の分岐により並列に記載された命令文は、条件文の成立により全てが実行される。
作成された制御プログラムは、コントローラで実行される。制御プログラムは定周期実行又はイベントドリブンの契機で、あらかじめ決めた時間制約内に実行されるよう実装される。典型的には、制御プログラムは、設定された基本処理サイクルと呼ばれる時間で繰り返して定周期実行される。
なお、電気回路を模したラダーダイアグラムの本来の考え方に基づくと、並列な接続線どうしに順序関係はなく、各接続線の条件文及び命令文の実行タイミングは並列である。ただし、実際のコントローラでは、制御プログラムを有限数のプロセッサコアを用いて実行することから、あたかも上の接続線から下の接続線への順序があるように逐次実行されることが多い。こうした逐次実行順序の挙動によって制御の結果は変わる可能性があり、かつコントローラのメーカー又は機種によって挙動に差異がありうるが、こうした挙動の差異が実用上考慮されていることは少ない。
モデルベース開発では、生産設備を設計段階でSysML(Systems Modeling Language)又は他の抽象的なモデルで記述し、そのモデルをもとに機械設備又は電気設備の自動設計及び制御プログラムの自動生成ができ効率化を図れる。生産設備をモデルで記述することで、その改修及び流用開発も効率化できる。SysMLでは複数の種類のモデルが定義されているが、制御プログラムの自動生成に有効なモデルとしては、以下の3種類がある。これらのモデルについて以下で簡単に例を示し説明する。
ブロック定義図(BDD:Block Definition Diagram)。
内部ブロック図(IBD:Internal Block Diagram)。
状態遷移図(STM:State Machine Diagram)。
・ブロック定義図の例を図2に示す。
図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に示す。
図3は搬送システム1の内部構成と接続関係を示した図である。搬送システム1はコントローラサブシステム(Controller Subsystem)を中心に構成さる。図3では、検出センサ(Detection Sensor)が接続され、コントローラサブシステムは検出センサからの入力情報bDetectを制御に使用することが示されている。
・状態遷移図の例を図4に示す。
図4は搬送システム1の動作の状態遷移を示した図である。搬送システム1は停止状態、コンベア搬送中及びターンテーブル回転中の3つの状態を持ち、停止状態にてワークを検出するとコンベア搬送中に遷移することが示されている。
***実施の形態が解決しようとしている課題***
本実施の形態が解決しようとしている課題は、制御プログラムに生産設備の設計情報が添付されていることを前提とせず、既存の制御プログラムをもとに制御プログラムモデルを生成することである。
本実施の形態が解決しようとしている課題を細分化すると下記の2つになる。
(小課題1)制御プログラム中から制御プログラムモデルの構成単位となるプログラム断片を検出すること
制御プログラムは大規模なものでは数千行から数万行にも及び、その中には複数のサブシステムに対する制御処理が混在している場合が多い。制御プログラムは開発者に依存し自由度をもって実装できるため、制御プログラムが対象サブシステムごとにファイル又は連続行に整理されているとは限らない。制御プログラムを意味のある単位に整理せずして、モデルを生成することはできない。そこで、制御プログラムを、サブシステムに対応する意味のある単位であるブロックに分割することが1つ目の課題である。
(小課題2)プログラム断片から制御プログラムモデルを生成すること
プログラム断片はあくまで制御処理の内容を表したものであり、抽象度の高いブロック定義又は状態遷移を表したものではない。このため、プログラム断片から制御プログラムモデルを生成することが2つ目の課題である。モデルの生成にあたっては、同じ振る舞いをするプログラム断片が無数に記述できることを鑑みて、異なる記述のプログラム断片であっても振る舞いに応じてモデルが導出できるようにする必要がある。プログラム断片の記述が無数に考えられることについては、使用する変数の割り当て及び条件文の軽微な差異に限らず、構文レベルで異なるものも考えられるため、ワイルドカード検索及びその他の検索による単純な一致比較では振る舞いの同一性を確認できない。
***実施の形態の構成の説明***
本実施形態の実施形態を説明する。なお、本実施形態に記載の内容によって本開示の範囲を制約するものではない。
制御プログラムが制御する生産設備(以下制御対象という)は、機械機構又は電気回路(両者をまとめて機構要素と呼ぶ)の組合せである。
制御プログラムの一部分(断片)と制御プログラム全体とをまとめて制御プログラムと呼ぶ。
本実施形態のプログラム開発支援装置1は、図5のようなシステム構成で使用される。
プログラム開発支援装置1は、設定用バス2によってコントローラ3と接続され、生産設備を制御するためのコントローラが実行するプログラム開発を行うための装置である。
設定用バス2は、シリアルバス、有線ネットワーク、又は、無線ネットワークである。設定用バス2は、コントローラ3へのプログラムの書き込みに使用され、不使用時は切り離すことが可能である。なお、設定用バス2は、プログラムの受け渡しに使用できる記憶媒体又は別の手段に代えてもよい。
コントローラ3は、生産設備を制御する。近接機器4とリモート機器5は、コントローラ3への情報の入力と出力を行うとともに、コントローラ3の指令に基づく動作を行う各種の機器である。
近接機器4は、バックプレーンバスを介してコントローラ3の近傍に設置される。
リモート機器5は、制御ネットワーク6を介してコントローラ3と接続される。
プログラム開発支援装置1は、図6に示す構成のエンジニアリングワークステーション9で、プログラム開発支援ソフトウェアを実行するものである。エンジニアリングワークステーション9は、一般的なコンピュータである。
エンジニアリングワークステーション9では、バス95にCPU91、メモリ92、不揮発メモリ93及び設定ポート94が接続されている。
エンジニアリングワークステーション9は、プログラム開発支援ソフトウェアの実行に必要なリソースを備えたものであれば、形態を問わず用いることができる。
エンジニアリングワークステーション9は、デスクトップ型コンピュータ、ノートブック型コンピュータ、タブレット型コンピュータ、あるいは、クラウドで実行される仮想的なコンピュータでもよい。
エンジニアリングワークステーション9は、マルチプロセッサ、マルチコアプロセッサ、あるいは、GPU(Graphics Processing Unit)による並列計算アクセラレータ、又は、量子・疑似量子プロセッシング技術により処理の高速化が図られてもよい。
前述したプログラム開発支援ソフトウェアの実行によって実現されるプログラム開発支援装置1の構成は図7のとおりである。
プログラミング部101は、開発者が制御プログラムを作成あるいは編集する手段を提供するものであり、プログラムエディタ又はその他のエディタで実現される。
プログラミング部101は、IEC61131-3で標準化されたラダーダイアグラムをはじめとする5言語の全て又は一部でのプログラミングを可能とすることを基本としている。
プログラミング部101は、制御プログラムを記述可能であれば他の言語に対応していてもよい。
プログラムメモリ103は、プログラミング部101を用いて開発者が開発した制御プログラムを、作成編集過程で一時保存したり、あるいは作成後に永続的に保存したりするための記憶領域である。制御プログラムは、生産設備を制御する一連のプログラム全体を表し、一般的にはプロジェクトの呼称で記憶され保存管理される。
プログラム設定保存部105は、プログラムをプログラムメモリ103に永続的に保存する。あるいは、プログラム設定保存部105は、設定ポート94を介してコントローラ3に書き込む機能を提供する。
モデル抽出部104は、プログラムメモリ103に存在する制御プログラムを分析し、モデルを抽出する手段である。
モデル抽出部104により、制御プログラムに対応するモデルであるブロック定義図、内部ブロック図及び状態遷移図を生成する。
モデル抽出部104は本実施の形態の特徴を構成する要素であり、かつ複数の構成要素から構成されるため、詳細は別途説明する。
表示操作部102は、モデル抽出に関する過程・結果の表示と操作とをモニタとキーボードとマウスにより開発者に提供する手段である。
表示操作部102は、プログラム断片データベース1043及びモデルデータベース1046への登録手段でもある。
モデル抽出部104の内部構成を図8に示す。
各部の働きの概略は次のとおりである。
プログラム解析部1041は、類似検索を行いやすくするため、制御プログラムPを、副作用を抽出した形態に変換する。
類似検索部1042は、プログラム解析部1041の出力とプログラム断片データベース1043を用いて、制御プログラムPの中からプログラム断片データベース1043に登録された機構要素と同等の副作用をもつプログラム断片を検索し、合致した検索結果の一覧を得る。
機構要素推定部1044は、検索結果の一覧をもとに、制御プログラムPがどの機構要素の組合せで成り立っているかを推定する。検索結果には制御プログラムに共存しえない機構要素の組合せも含まれうることから、機構要素推定部1044が共存しえない機構要素の組合せを排除する。
モデル構成部1045は、機構要素推定部1044が推定した機構要素に対応するモデルをモデルデータベース1046から検索し、これらの接続関係を推定することで制御プログラム全体のモデルを推定する。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045は、の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてもよい。
また、プログラム開発支援方法は、プログラム開発支援プログラムを実行することにより行われる方法である。
プログラム開発支援プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。
プログラム開発支援プログラムは、プログラムプロダクト又はプログラムを記録したコンピュータ読み取り可能な不揮発性記録媒体として提供されてもよい。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045の機能は、1つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045の一部あるいは全ての機能が、ファームウェアで実現されていてもよい。
プロセッサ901と電子回路の各々は、プロセッシングサーキットリとも呼ばれる。
プログラム解析部1041、類似検索部1042、機構要素推定部1044、及び、モデル構成部1045の機能は、プロセッシングサーキットリにより実現される。
プログラム断片データベース1043と、モデルデータベース1046とは、不揮発メモリ93(又はメモリ92)に記憶されている。
また、以下に述べる各種リストと各種表と各種グラフは、リスト形式、表形式、又は、ファイル形式で、メモリ92(又は不揮発メモリ93)に記憶される。
●類似検索●
制御対象によって細部の差異は考えられるものの、機構要素には定石が存在し、機構要素を類型化することができる。このため、同じ類型の機構要素を制御するための制御プログラムについても、類似した制御内容をもつことが期待できる。そこで、定石の機構要素を制御する制御プログラムの断片(プログラム断片F)を記録したプログラム断片データベース1043を設ける。制御プログラムにプログラム断片データベース1043に登録されたプログラム断片Fと類似する断片がある場合、そのプログラム断片Fを類似プログラム断片として検索する。
検索の際は、制御プログラムの実装には開発者による差異又は生産設備による差異を吸収しての類似検索を行うため、プログラム解析部1041及び類似検索部1042を設け、プログラム断片Fが及ぼす「副作用」に基づいた類似検索を行う。
●副作用と順序制約●
副作用とはプログラミング分野における用語であり、プログラムがプログラム内外の変数などを変化させる影響のことである。具体的には、副作用とは、変数の値の変化又はポート番号の値の変化をいう。
ここでは、構文レベルで全く異なる制御プログラムであっても、実行の結果として及ぼされる変数の変化が同じであれば、副作用が一致するとみなす。使用する変数名及びポート番号は、開発者によって異なる変数名及び異なるポート番号が使われるため、変数及びポートの対応関係のみが一致していれば副作用が一致するとみなす。
類似検索部1042は、被検索対象である制御プログラムに、検索対象であるプログラム断片Fと類似する断片があるか以下の観点で検索を行う。
(1)複数の副作用の同一性:制御プログラムにプログラム断片Fと同じ複数の副作用が含まれるか否か。
(2)複数の副作用の順序制約の同一性:制御プログラムにプログラム断片Fの複数の副作用と同じ順序制約をもつ複数の副作用が含まれるか否か。
類似検索部1042は、順序制約を満たす範囲であれば、制御プログラムに対して下記のような差異を許容してプログラム断片の検索を行う。
・制御プログラムの処理順序の入れ替わり。
・制御プログラムが使用している命令の置き換わり。同じ副作用が別の命令で発生していてもよい。
・制御プログラムに副作用と無関係な処理の挿入があってもよい。
副作用は、制御プログラムの基本処理サイクルの実行前と実行後における変数又は出力ポートの値変化を表すデータとして構造化し定義する。副作用は、データXを0から1に変化させるといった、結果が確定的なものに限らない。このため、条件によってデータの変化の仕方が変わる副作用、あるいは、変化が定数ではなく式で表される副作用も定義可能なデータ構造を採用する。
副作用に加えて複数の副作用の順序制約の情報を抽出する理由は、1回の基本処理サイクルでの実行結果が完全に保たれているか異なるかを区別するためである。制御プログラムの中には、複数の基本処理サイクルを経て副作用を達成するものも考えられる。
具体的には、1回の基本処理サイクルのみで副作用が得られるようにプログラミングしうる処理内容を、1回目の基本処理サイクルでは内部の変数のみ操作し2回目の基本処理サイクルでは内部変数の条件成立をもって外部変数に結果が出力されるように制御プログラムがプログラミングされているといった場合が考えられる。
より具体的には、変数Aに対する副作用が先に発生し、変数Aの値の変化に応じて変数Bに対する副作用が発生するような制御プログラムの場合、変数Aに対する副作用が先に発生すれば、1回の基本処理サイクルの結果、変数A及び変数Bの両方に対する副作用が発生する。
一方、副作用の順序が逆で、変数Aの値の変化に応じて変数Bに対する副作用が先に発生し、変数Aに対する副作用が発生するような制御プログラムの場合、1回目の基本処理サイクルで変数Aに対する副作用のみが発生し、2回目の基本処理サイクルで変数Bに対する副作用が発生することになる。
後者の場合は、前者の1回の基本処理サイクルと同じ結果を2回の基本処理サイクルを経て得ることになる。こうしたケースでは、前者の場合と後者の場合で処理に要する時間が異なる。しかし、基本処理サイクルの時間は一般にミリ秒単位と小さいこと、及び、制御プログラムのデータの入出力は基本処理サイクルよりも長い周期で行われている場合があることから、処理に要する時間が異なっていても生産設備制御では等価な結果となることが多い。このように、必要な基本処理サイクルの数が異なるものの同じ副作用が得られるプログラム断片についても、差異を許容する余地を残すこととする。
●モデル構成●
モデルデータベース1046に、複数のプログラム断片Fと対応付けて複数のモデルを保存しておき、モデル構成部1045がモデルデータベース1046からモデルの抽出を行う。さらにモデル構成部1045は、制御プログラムから抽出された複数のモデルの接続関係を分析し、制御プログラム全体としてのモデルを構成する。
モデル構成部1045によって得られた結果は、表示操作部102によりユーザに表示する。また、プログラム設定保存部105が記憶部に保存することで、他の制御プログラム開発にモデルを流用することが可能である。なお、モデルの抽出過程においてモデルを一意に特定できない場合は、表示操作部102を介して複数選択肢からの特定ができてもよい。
***モデル抽出部104の動作の説明***
以下にモデル抽出部104の各部について説明する。以下では、各部の動作の主体(主語)は、基本的に各段落の説明対象である。
●プログラム断片データベース1043●
プログラム断片データベース1043は、複数の定石の機構要素に対応する複数のプログラム断片Fを保存する。
プログラム断片データベース1043は、機構要素副作用表に記載された複数の機構要素識別子(機構要素通番)に対応させて複数のプログラム断片Fを保存している。
プログラム断片データベース1043は、図9に示す機構要素副作用表により、機構要素ごとの副作用リスト(以下、断片副作用リストという)と機構要素ごとの副作用依存関係グラフ(以下、断片副作用依存関係グラフという)を機構要素に対応付けて保存している。
プログラム断片データベース1043は、図10に示すように、機構要素ごとのプログラム断片Fと断片副作用リストと断片副作用依存関係グラフを保存している。
定石の機構要素に対するプログラム断片Fは、開発者向けの制御プログラムの参考書籍で多数の種類が広く公開されており、これらをもとにあらかじめプログラム断片データベース1043を事前定義する方法が考えられる。また、一般的でない機構要素を扱う生産設備を開発する場合は、開発者の手によってプログラム断片データベース1043にプログラム断片Fを登録することも考えられる。
断片副作用リストと断片副作用依存関係グラフは、以下に述べるプログラム解析部1041に制御プログラムPの代わりにプログラム断片Fを入力することにより作成することができる。
●プログラム解析部1041●
プログラム解析部1041は、制御プログラムPを入力として、制御プログラムPの副作用順序制約情報(後述する制御プログラムPの正規化後の断片副作用リストと制御プログラムPのプログラム副作用依存関係グラフ)を生成する。例は別途説明する。
プログラム解析部1041の動作の流れを図11に示す。
プログラム解析部1041が解析する制御プログラムPは、あらかじめプログラムメモリ103に読み込まれているものとする。プログラムメモリ103には、図1の制御プログラムPをテキストに変換したプログラムリスト(図12に示すプログラムリスト)が格納されていることを前提とする。
●ステップS1:制御プログラムPの正規化・抽象化
プログラム解析部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を使用する。
正規化・抽象化後のプログラムの例を図14に示す。
プログラムリストに対し変数抽象化表を用いて変数から代数への置き換えを行う。また、RESETとADD等の命令は、数値の代入文に置き換える。
以上によって、図14に示す正規化・抽象化後のプログラムが得られる。
●ステップS2:副作用対象代数の抽出
プログラム解析部1041は、副作用である変数の値の変化を整理するために、正規化・抽象化後のプログラムから、変化の対象となる代数を列挙した副作用対象代数を抽出する。すなわち、副作用対象代数は、制御プログラムPの実行により書き換えられる変数に対応する代数であり、参照のみされ制御プログラムPの実行により変更されない変数は含まれない。ただし、まれな条件下であっても変数が書き換え対象となっていれば、副作用対象代数に含まれる。
副作用対象代数の抽出例を図15に示す。
副作用対象代数表は、正規化・抽象化後のプログラムの命令文部分で値が代入されている変数全てを抽出したものである。参照されるのみの変数は副作用対象代数表に含めない。
●ステップS3:副作用の抽出
プログラム解析部1041は、図15に示す副作用対象代数について、1回の基本処理サイクルの副作用すなわち条件ごとの変化結果を列挙する。
プログラム解析部1041は、副作用対象代数1つにつき、各条件に対する副作用が完結するように記述する。すなわち、正規化・抽象化後のプログラムは、制御プログラムPとしての処理流れを記述したものであったのに対し、本ステップ3では副作用対象代数ごとに整理した変化結果を記述する。
副作用については、副作用の条件又は副作用の出力値が制御プログラム中で固定的に定まらず、他の副作用の結果に依存する場合がある。こうした場合は、条件又は出力値を得るために必要な副作用も合わせて抽出する。一方で、副作用対象代数に対する副作用に影響しない変数等に対する副作用は、副作用として抽出する必要はない。
副作用の抽出例を図16に示す。図16のプログラム副作用リストは、複数の副作用対象代数それぞれに起こる値の変化を集約したものである。わかりやすさのため、「対応する正規化・抽象化後のプログラムの行番号」の列には、副作用が記述された制御プログラムPの行番号(プログラムリストの行番号)を記入した。
プログラム副作用リストには、以下が記載される。
通番:プログラム副作用につけられた通し番号。プログラム副作用の識別子。
変数:プログラム副作用により値が変更する変数。
プログラム副作用:制御プログラムPのプログラム副作用。
正規化・抽象化後のプログラムの行番号:制御プログラムPの副作用が記述されたプログラムリストの行番号。
●ステップS4:副作用の副作用依存関係抽出
プログラム解析部1041は、プログラム副作用リストに抽出した複数のプログラム副作用について、等価な副作用が得られるために順序依存関係を守る必要のあるものは直列、そうでないものは並列に整理する。これら順序依存関係を整理した複数のプログラム副作用は、一例として有向グラフ構造で表現できる。
複数のプログラム副作用の順序依存関係を表で示したものを図17に示す。
図17に示すプログラム副作用依存関係表は、副作用対象代数に対する副作用が、どの代数を参照しているかを表す。具体的には、t1に対する副作用では、m1及びsl1を参照する。これらの依存関係を有向グラフに示したものが図18のプログラム副作用依存関係グラフである。プログラム副作用依存関係グラフは、図17に示す副作用対象代数をノードとしてその依存関係を矢印で表したものであり、副作用対象でない代数(m4,m5,sl1,sl3,sl5)はグラフから除いている。
プログラム副作用依存関係グラフは、制御プログラムPの副作用の等価性を保証するための副作用の順序制約関係を表した順序制約情報(以下、プログラム順序制約情報という)である。
●ステップS5:副作用の正規化
プログラム解析部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で得られる情報を整理すると図20のとおりである。
プログラム解析部1041は、一つの制御プログラムPにつき、一つの正規化・抽象化後のプログラムと、一つの正規化後のプログラム副作用表を作成する。一つの正規化後のプログラム副作用表からは、一つの正規化後のプログラム副作用リストと一つのプログラム副作用依存関係グラフが参照されている。
制御プログラムPの正規化後の断片副作用リストと制御プログラムPのプログラム副作用依存関係グラフとを合わせて、プログラム副作用順序制約情報という。
●プログラム断片データベース1043の断片副作用リストと断片副作用依存関係グラフ
プログラム断片データベース1043に登録した断片副作用リストと、断片副作用依存関係グラフは、プログラム解析部1041が、制御プログラムPの代わりにプログラム断片Fを解析することにより作成することができる。
具体的には、プログラム解析部1041はプログラム断片Fから以下を作成する。
プログラム断片Fをテキスト化したプログラムリスト。
プログラム断片Fの変数抽象化表。
プログラム断片Fの正規化・抽象化後のプログラム。
プログラム断片Fの副作用対象代数表。
プログラム断片Fの断片副作用リスト。
プログラム断片Fの断片副作用の断片副作用依存関係表。
プログラム断片Fの断片副作用依存関係グラフ。
プログラム断片Fの正規化後の断片副作用リスト。
これらプログラム断片Fの表、リスト、グラフの記述形式は、制御プログラムPの表、リスト、グラフの記述形式と同じである。具体的には、断片副作用リストとプログラム副作用リストとの記述形式は同じである。また、断片副作用依存関係グラフとプログラム副作用依存関係グラフとの記述形式は同じである。
プログラム断片Fの正規化後の断片副作用リストとプログラム断片Fの断片副作用依存関係グラフとを合わせて、断片副作用順序制約情報という。プログラム解析部1041は、複数のプログラム断片Fから複数の断片副作用順序制約情報を作成する。
●類似検索部1042●
類似検索部1042は、プログラムメモリ103の制御プログラムPの中に、プログラム断片データベース1043のプログラム断片Fと同等な副作用を持つ類似プログラム断片が含まれるか否かを検索する。
類似検索部1042は、開発者が作成した被検索対象の制御プログラムPと、プログラム断片データベース1043に登録された検索対象のプログラム断片Fとを入力する。
類似検索部1042は、プログラム解析部1041によって得られた副作用に関するプログラム副作用順序制約情報(正規化後のプログラム副作用リストとプログラム順序制約情報)と断片副作用順序制約情報(正規化後の断片副作用リストとプログラム断片Fの断片副作用依存関係グラフ)を用いて、類似検索を行う。
類似検索部1042の動作の流れを図21に示す。
●ステップS11:検索オプションの読み取り
類似検索部1042は、検索における合致条件の緩さを定義した検索オプションをメモリ92から読み取る。
検索オプションを使用する理由は、被検索対象の制御プログラムPが難解な制御ロジックで作成されており類似検索で十分に合致を判断されない場合に、類似検索部1042が合致と判断する範囲を広げることを想定している。
検索オプションは、プログラム開発支援装置の表示操作部102を用いて開発者の手によりメモリ92に設定されるか、あるいは、類似検索部1042が検索の結果に応じてメモリ92のオプション設定を変更してもよい。具体的には、検索の結果、合致した検索結果の数が多すぎるならば合致条件を厳しくする方向に検索オプションを設定し、逆に検索結果の数が少なすぎるならば逆の設定を行うことが考えられる。
検索オプションには、下記が考えられる。
・検索オプション1:副作用の順序制約の完全一致を必要とするか否か。
被検索対象の制御プログラムPが検索対象のプログラム断片Fの副作用を全て含むものの順序制約を満たさない場合、副作用どうしが1回の基本処理サイクルでは連鎖せず、複数の基本処理サイクルの実行後に同じ副作用が得られる場合がある。すなわち、副作用の順序制約を部分一致で検索することで、同じ副作用の得られる類似プログラム断片を数多く検索できる場合がある。
ここでは、検索オプション1は、副作用の順序制約の完全一致を必要とするという設定になっているものとする。
・検索オプション2:代数の型の差異を許容するか否か。
制御プログラムPでは、より値の範囲の広い型の変数を用いても同じ演算ができる。具体的には、16ビットの整数型の演算は、32ビットの整数型を用いても行うことができる。値の範囲の広い型の変数への型の差異を認めることで、同じ副作用の得られる類似プログラム断片を数多く検索できる場合がある。
ここでは、検索オプション2は、代数の型の差異を許容しないという設定になっているものとする。
●ステップS12:断片副作用によりプログラム副作用を検索
類似検索部1042は、プログラム断片データベース1043の断片副作用リストに記載された複数のプログラム断片Fの各プログラム断片Fに対する複数の正規化後の断片副作用全てについて、プログラム副作用の中に合致するものがあるかを確認する。
類似検索部1042は、断片副作用リストの複数の正規化後の断片副作用全てがプログラム副作用リストに含まれている場合、その断片副作用リストに対応するプログラム断片Fを類似プログラム断片と判定する。
換言すれば、類似検索部1042は、プログラム断片データベース1043に登録された機構要素ごとに、機構要素の複数の副作用全てを制御プログラムPが満たすか否かを確認する。全ての副作用が満たされる場合、その機構要素は制御プログラムPの中に含まれると判断する。満たされない副作用がある場合、その機構要素は制御プログラムPの中に含まれないと判断する。
ステップS12の段階では、合致する副作用の有無のみを考え、合致した複数の副作用が互いに整合するかという点は考慮しない。合致した複数の副作用が互いに整合するかという点は、機構要素推定部1044が判断する。
副作用の合致判断基準は次のとおりである。
(a)副作用の条件分岐の構造と条件が同じであること、かつ、
(b)副作用の結果が同じであること、かつ、
(c)副作用に関わる代数に矛盾がないこと。
合致の判断の例を図22に示す。
プログラム断片Fに対する複数の正規化後の断片副作用(検索対象副作用)が(1)であり、プログラム副作用(被検索対象副作用)が(2)~(5)であるとする。
(2)は、(1)と代数が異なるものの、(2)のm1とm4、m3とm5をそれぞれ入れ替えると、条件分岐の構造と条件が(1)と同じ条件になるため、上記(a)を満足する。sl1とsl2を入れ替えると同じ副作用sl2+=1が生じるため、副作用の結果が同じであり上記(b)を満足する。(1)のsl1と(3)のsl2は型が同じであり代数に矛盾がなく上記(c)を満足する。
これらの結果、(2)は、(1)に合致すると判断する。
(3)は、分岐文の記載順が(1)と異なるが、m1とm5、m3とm4をそれぞれ入れ替えると、条件分岐の構造と条件が(1)と同じ構造と条件になるため、上記(a)を満足する。同じ副作用sl2+=1が生じるため、副作用の結果が同じであり上記(b)を満足する。(1)のsl2と(3)のsl2は型が同じであり代数に矛盾がなく上記(c)を満足する。
これらの結果、(3)は、(1)に合致すると判断する。
(4)は、いかに変数を入れ替えても、副作用の代数sl2が(1)の代数m4と型が異なり代数が矛盾するため、上記(c)に反し、(4)は、(1)に不一致と判断する。
(5)は、sl1に対する副作用の結果(sl1=0)が(1)のsl2に対する副作用の結果(sl2+=1)と異なることから、上記(b)に反し、(5)は、(1)に不一致と判断する。
次に、類似検索部1042は、プログラム副作用に断片副作用全てが合致するプログラム断片Fに対して断片副作用の順序依存関係がプログラム副作用の順序依存関係を満足するか判定する。具体的には、プログラム順序制約情報(プログラム順序依存関係グラフ)と断片順序制約情報(断片順序依存関係グラフ)を比較して、副作用対象代数の依存関係が一致するか検査する。副作用対象代数の依存関係が一致すれば、類似検索部1042は、プログラム副作用と断片副作用との等価性があると判断する。
●ステップS13:プログラム副作用に合致する断片副作用がある
類似検索部1042は、断片副作用リストの複数の正規化後の断片副作用全てがプログラム副作用リストのプログラム副作用に含まれており、かつ、副作用の依存関係が一致する断片副作用リストが1件でも存在すると判断すれば、ステップS14へ遷移する。そうでなければステップS16へ遷移する。すなわち、類似プログラム断片が1件でも存在すると判断すれば、ステップS14へ遷移し、そうでなければステップS16へ遷移する。
●ステップS14:結果を記録
類似検索部1042は、断片副作用リストに対応するプログラム断片F(機構要素)についての合致の有無を検索結果表に記録する。
類似検索部1042は、断片副作用リストの複数の正規化後の断片副作用全てがプログラム副作用に含まれており、かつ、副作用の依存関係が一致する断片副作用リストに対応するプログラム断片F(機構要素)を制御プログラムPの中に含まれる類似プログラム断片と推定する。
類似検索部1042は、類似プログラム断片F(機構要素)について、正規化・抽象化後のプログラムの行との対応関係を検索結果対応表に記録する。
検索結果表と検索結果対応表の関係は、図23のようになっており、検索結果表から検索結果対応表が参照されている。
検索結果表の例を図24に示す。
検索結果表の各行は、プログラム断片データベース1043に登録された機構要素副作用表に記述された機構要素に対応している。結果欄には、当該機構要素のプログラム断片Fが制御プログラムPの中に含まれるか否かの結果を示す。結果が「あり」の場合は、対応する検索結果対応表を特定するための検索結果対応表IDが記録される。
検索結果対応表の一例を図25に示す。
検索結果対応表の各行は、プログラム断片データベース1043の機構要素のプログラム断片Fの副作用に対応する。「正規化・抽象化後のプログラムの通番」には、制御プログラムP(正規化・抽象化後のプログラム)の当該副作用に合致すると判断された行番号が1つ以上記載されている。
●ステップS15:機構要素ごとの副作用の整合性を確認
類似検索部1042は、検索結果対応表で1つの副作用に対して正規化・抽象化後の制御プログラムPの該当行が複数ある場合は、どの行の組合せによって当該機構要素が実現されうるか副作用整合表を作成して確認する。
副作用整合表の例を図26に示す。
副作用整合表は、制御プログラムPの中に含まれると判断された機構要素に対応して1つ作成される。
副作用整合表の各行は、プログラム断片データベース1043の当該機構要素のプログラム断片Fの副作用に対応する。
類似検索部1042は、プログラム断片Fの複数の断片副作用とプログラムリストの一以上の行番号の各行番号とを1対1に対応させた一以上の行番号の組(行番号組)を作成する。
検索結果対応表のとおり、各副作用を実現する正規化・抽象化後のプログラムの行番号組は、8通りある。副作用整合表の各列には、これら8通りの全組を列挙した。
8通りの組のうち、正規化・抽象化後のプログラムの行番号に重複のある組は、当該副作用を実現するための処理が制御プログラム中に含まれていないことを表すため、不整合として判定欄に「NO」を記載する。
さらに、機構要素のプログラム断片Fの副作用に対応する正規化・抽象化後のプログラムの行番号が昇順になっていないものは、プログラム断片Fの副作用の順で制御プログラムPの副作用が実現されない可能性があるため、「?」を記入する。
最後に、正規化・抽象化後のプログラムの行番号の重複がなく、正規化・抽象化後のプログラムの行番号が昇順になっているものは「OK」を記入する。
類似検索部1042は、行番号組の複数の断片副作用全てが制御プログラムのプログラムリストの異なる行から得られたプログラム副作用に対応している行番号組がある場合に、整合性のある行番号組があるとする。換言すれば、類似検索部1042は、行番号組の行番号が全て異なっていれば、整合性のある行番号組とする。類似検索部1042は、整合性のある行番号組を一以上有する断片副作用リストに対応するプログラム断片Fを類似プログラム断片とする。
ステップS15の段階では、検索オプションの設定に沿うように、副作用の順序制約が完全一致する組に「OK」が付され、副作用の順序制約が完全には一致しない組に「?」が付されたことになる。
類似検索部1042は、以下の表を得て、処理を終了する。
・検索結果表
・検索結果対応表
・正規化・抽象化後のプログラムの行番号による副作用整合表
●ステップS16:合致なし
検索結果が合致なしと判断されたことをもって類似検索部1042の処理を終了する。合致なしと判断された場合は、検索オプションの変更により合致条件を緩く見直した後に本手順を再度実施する。あるいは検索オプションにこれ以上の緩和余地がなければ、制御プログラム中にモデル化可能な断片はないと判断する。
検索オプションの変更の具体例は以下のとおりである。
(1)検索オプション1の緩和
類似検索部1042は、副作用の順序制約の完全一致を必要としないものとして検索をする。すなわち、類似検索部1042は、副作用の順序制約を部分一致で検索する。部分一致で合致なしと判断された場合は、類似検索部1042は、検索オプション1をさらに緩和して副作用の順序制約を無視して検索する。
(2)検索オプション2の緩和
類似検索部1042は、代数の型の差異を許容して検索する。
類似検索部1042は、副作用の合致判断基準の(c)を検査する場合、型が一致していなくとも上位互換性がある型の違いがあっても副作用に関わる代数に矛盾がないとする。具体的には、16ビットの整数型の代数は、32ビットの整数型の代数でもよいと判断する。
●機構要素推定部1044●
機構要素推定部1044は、一つの制御プログラムP(被検索対象)に対する検索で得られた副作用整合表をもとに、当該制御プログラムPがどの機構要素の組合せを制御するものであるかを、複数ありうる機構要素の組合せの中から推定する。
例を示す。
(1)2つの機構要素が含まれる場合
類似検索部1042による一つの制御プログラムP(被検索対象)に対する検索の結果、2つの機構要素が含まれるとする検索結果表が得られたとする。1つ目の機構要素に対して得られた副作用整合表は図26であり、2つ目の機構要素に対して得られた副作用整合表は図27であるとする。このとき、2つの機構要素の両方が重複のない正規化・抽象化後の制御プログラムPの行に対応していれば、2つの機構要素は両立できる。
検索オプションの設定が、副作用の順序制約の完全一致を必要とするとなっている場合、副作用整合表の判定が「NO」と「?」である組は除き判定が「OK」の組を用いて、2つの副作用整合表から各1列を取り出した全組合せを生成し、行番号に重複のない組合せを全て抽出する。
組合せを、{1つ目の副作用整合表の列、2つ目の副作用整合表の列}という記法で表す。これら組合せのリストを副作用組合せリストと呼ぶ。
判定が「OK」である組だけの場合、重複のない組合せを全て抽出すると、以下のような副作用組合せリストとなる。
{組1、組1}、{組1、組2}、{組1、組3}、{組1、組4}、
{組2、組2}、{組2、組4}。
{組2、組1}と{組2、組3}は、2つの機構要素がともに正規化・抽象化後のプログラムの42行目を必要とするため、両立しない。
検索オプションの設定が、副作用の順序制約の完全一致を必要としないとなっている場合、副作用整合表の判定が「NO」である列は除き、2つの副作用整合表から各1列を取り出した全組合せを生成し、行番号に重複のない組合せを全て抽出する。
判定が「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}。
(2)1つの機構要素が含まれる場合
類似検索部1042による一つの制御プログラムP(被検索対象)に対する検索の結果、1つの機構要素だけが含まれるとされたとする。1つ目の機構要素に対して得られた副作用整合表は図26であるとする。組合せを、{1つ目の副作用整合表の列}という記法で表す。
検索オプションの設定が、副作用の順序制約の完全一致を必要とするとなっている場合、副作用組合せリストは以下のとおりである。
{組1}、
{組2}。
検索オプションの設定が、副作用の順序制約の完全一致を必要としないとなっている場合、副作用組合せリストは以下のとおりである。
{組1}、
{組2}、
{組3}、
{組4}、
{組7}、
{組8}。
なお、上記(1)の2つの機構要素が含まれる場合でも、一方の機構要素に対して得られた副作用整合表の組が全て「NO」であれば、(2)の1つの機構要素が含まれる場合と同様の扱いとなり、他方の機構要素に対して得られた副作用整合表だけを用いて、副作用組合せリストを作成する。
(3)3つ以上の機構要素が含まれる場合
類似検索部1042による一つの制御プログラムP(被検索対象)に対する検索の結果、3つ以上の機構要素が含まれていてもよい。3つ以上の機構要素が重複のない正規化・抽象化後の制御プログラムPの行に対応していれば、3以上の機構要素は両立できる。
3の機構要素が検索できた場合、副作用組合せリストは、{1つ目の副作用整合表の列、2つ目の副作用整合表の列、3つ目の副作用整合表の列}という記法になる。
このように、副作用組合せリストは、各行に一つ以上の行番号組を記載したリストである。
副作用組合せリストに記載された組合せに対応する機構要素は、同時に実現可能な機構要素である。
機構要素推定部1044は、副作用組合せリストを出力する。
これまでの検索結果表、副作用組合せリスト、及び、正規化・抽象化後のプログラムのプログラムリストを組合せると、正規化・抽象化後のプログラムのプログラムリストのどの行によってどの機構要素を実現している可能性があるかという全ての組合せが分かる。
なお、正規化・抽象化後のプログラムの全ての行が網羅的に機構要素と対応していると判定されるとは限らず、プログラム断片データベース1043に登録されていない機構要素の制御のための行、機構要素の制御の周辺処理の行又はその他の処理の行が、対応付けられず残る可能性がある。
●モデルデータベース1046●
モデルデータベース1046は、プログラム断片データベース1043に登録されたプログラム断片Fに対応するモデルを機構要素モデルとして登録したものである。
モデルデータベース1046は、図29に示す構造となっている。
図30のモデルデータベース管理表から、機構要素識別子(機構要素通番)に対応したモデルを参照することができる。モデルは、本実施形態ではブロック定義図、内部ブロック図及び状態遷移図を想定するが、これらに限定されない。
モデルデータベース1046は、プログラム断片データベース1043と同様に事前定義するか、あるいは開発者が登録・編集・削除する手段を備えていてもよい。いずれのケースでも、登録するモデルの生成は人(プログラム開発支援装置の開発者)の手による生成が必要となる。しかし、あらかじめ複数のプログラム断片Fについてのモデルを考えればよいため、大規模な制御プログラム全体からモデルを生成することに比べモデル生成の複雑性は低い。また、モデルの内容は前述の書籍などに記載された機構要素の振る舞いをもとに定義できるため、モデル生成の実現は可能である。
●モデル構成部1045●
モデル構成部1045は、副作用組合せリストの複数の組合せそれぞれについて、モデルデータベース1046から対応する機構要素モデルを取り出す。
モデル構成部1045は、機構要素モデルどうしのインタフェースの接続関係を示したうえで、下記の情報を付加して表示操作部102によりモニタに表示する。
・機構要素モデルのインタフェースに対応する制御プログラムPの変数・出力ポート名。
・機構要素モデルに対応する制御プログラムPの行番号。
基本的にはモデル構成部1045が検索結果表で結果ありとなった機構要素全てを取り出すことが期待されるが、副作用組合せリストにより、全ての機構要素を同時には実現できないことも起こりうる。その場合、モデル構成部1045は、副作用組合せリストの組合せに記載された同時に実現可能な機構要素のみに絞って機構要素モデルを取り出す。
モデル構成部1045は、機構要素モデルの取り出しのために、副作用組合せリストから副作用整合表、検索結果対応表、及び、検索結果表を参照し、機構要素通番を特定する。
モデル構成部1045は、モデルデータベース管理表を用いて、機構要素通番に対応する各種モデルを取り出す。
図31に、{組1、組1}の場合のモニタの表示例を示す。
モニタには、プッシャー機構タイプ2の状態遷移図とブロック定義図と内部ブロック図と、ターンテーブル機構タイプ2の状態遷移図とブロック定義図と内部ブロック図とが組み合わされて、状態遷移図とブロック定義図と内部ブロック図との制御プログラムモデルが表示される。
複数の機構要素の接続関係の特定は、ブロック定義図及び内部ブロック図について行う。
モデルデータベース1046の機構要素モデルは、副作用中に現れる代数と、モデルの入出力インタフェースを対応付けて記録している。これにより、機構要素モデルどうしのインタフェースが接続されていれば、それらの機構要素モデルを結線して接続関係を合わせて制御プログラムモデルとして表示する。
副作用組合せリストのどの組合せに基づいた表示をするかによって、機構要素、又は、モデルの接続関係が変化する可能性がある。副作用組合せリストの組合せの中には実際の生産設備のモデルを正しく表現するもの及びそうでないものも含まれる可能性がある。正しく表現されたモデルを選択するため、副作用組合せリスト中の組合せを開発者が選択する機能を表示操作部102にて提供し、モデル構成部1045は選択に応じてモデルを構成する。
モデル構成部1045は、図32のとおり、制御プログラムモデルの構成に使われなかった制御プログラムPの中の断片については、別途開発者が解釈する余地を残すため、制御プログラムモデルに未反映の断片として表示操作部102にてモニタに表示する。
モデル構成部1045は、機構要素モデルどうしの接続関係で情報不足又は不整合により特定ができなかった部分についても、表示操作部102にて不明の断片である旨をモニタに表示する。
モデル構成部1045は、断定できない情報は制御プログラムモデルにおいても空欄で示し、表示操作部102にてユーザによる事後入力を可能とする。
以上のように、実施の形態1では、機構要素ごとの定石の制御プログラムをプログラム断片Fとしてデータベース化し、制御プログラムPからプログラム断片Fに類似する断片の検索を行うことでデータベースからプログラム断片Fを検出する。
類似検索は、制御プログラムPが実行結果として外部の変数にどのような変化を与えるかを「副作用」として抽出し、その等価性を比較することで実現する。
プログラム断片Fとその機構要素モデルとを対応付けてデータベース化しておき、類似検索の結果をもとに対応する機構要素モデルを取り出して結合することで、制御プログラムPから制御プログラムモデルへの変換を行う。
以上により、制御プログラムPからの制御プログラムモデルの生成が可能である。
***実施の形態1のまとめ***
プログラム開発支援装置1は、プログラム解析部1041と類似検索部1042とを備える。
プログラム断片データベース1043は、機構要素に対応するプログラム断片Fに含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片Fに対応させて登録する。
プログラム断片データベース1043は、機構要素に対応するプログラム断片Fに含まれる複数の断片副作用の順序制約を複数の断片順序制約情報として複数のプログラム断片Fに対応させて登録する。
プログラム解析部1041は、制御プログラムを解析して、制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成する。
プログラム解析部1041は、複数のプログラム副作用の順序制約をプログラム順序制約情報として作成する。
類似検索部1042は、プログラム副作用リストに記載された複数のプログラム副作用と、複数の断片副作用リストに記載された複数の断片副作用とを比較して、複数の断片副作用が複数のプログラム副作用に含まれる断片副作用リストに対応するプログラム断片Fを類似プログラム断片として検索する。
類似検索部1042は、プログラム順序制約情報の順序制約と、複数の断片順序制約情報の順序制約とを比較して、断片順序制約情報の順序制約がプログラム順序制約情報の順序制約に含まれる断片順序制約情報に対応するプログラム断片Fを類似プログラム断片とする。
類似検索部1042は、検索オプションの設定に基づいて、検索されたプログラム断片Fの中で、断片順序制約情報の順序制約がプログラム順序制約情報の順序制約とは完全には一致しないプログラム断片Fを、複数の基本処理サイクルを経て同じ副作用が得られる類似プログラム断片とする。
プログラム解析部1041は、制御プログラムのプログラムリストの記述を制約する正規化と、制御プログラムのプログラムリストの変数を代数に置き換える抽象化とを行い、
プログラム解析部1041は、プログラム副作用リストに記載された複数のプログラム副作用の記述に対して、同義の条件を統一記述で表現するとともに同義の副作用を統一記述で表現することにより、プログラム副作用を正規化する。
類似検索部は、判断基準として、
(a)副作用の条件分岐の構造と条件が同じであること、かつ、
(b)副作用の結果が同じであること、かつ、
(c)副作用に関わる代数に矛盾がないこと
を用いて、断片副作用がプログラム副作用に合致することを判定する。
プログラム断片データベース1043は、複数のプログラム断片Fそれぞれが使用している変数と変数が参照している変数とを複数の断片順序制約情報として登録する。
プログラム解析部1041は、制御プログラムが使用している変数と変数が参照している変数とをプログラム順序制約情報として作成する。
類似検索部1042は、複数の断片順序制約情報それぞれに記載された順序制約がプログラム順序制約情報に記載された順序制約と一致する場合に、断片順序制約情報に対応するプログラム断片Fを類似プログラム断片とする。
プログラム解析部1041は、制御プログラムのプログラムリストの行ごとに、副作用により値が変更される変数と変数の値を変更する一以上の行番号とを検出する。
プログラム解析部1041は、変数と副作用と一以上の行番号とを対応させたリストをプログラム副作用リストとして作成する。
類似検索部1042は、プログラム断片Fの複数の断片副作用とプログラムリストの一以上の行番号の各行番号とを1対1に対応させた一以上の行番号組を作成する。
類似検索部1042は、一以上の行番号組の中に、複数の断片副作用全てが制御プログラムのプログラムリストの異なる行から得られたプログラム副作用に対応している行番号組がある場合に、整合性のある一つ以上の行番号組があるとして、断片副作用リストに対応するプログラム断片Fを類似プログラム断片とする。
プログラム開発支援装置1は、機構要素推定部1044とモデルデータベース1046とモデル構成部1045とを備える。
機構要素推定部1044は、類似検索部1042が複数の類似プログラム断片を検索した場合に、複数の類似プログラム断片に含まれる複数の断片副作用全てに対して制御プログラムの異なる行が対応しているか判定する。
機構要素推定部1044は、複数の断片副作用全てに対して制御プログラムの異なる行が対応している場合、複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する。
機構要素推定部1044は、類似検索部1042が検索した複数の類似プログラム断片の整合性のある一つ以上の行番号組の各行番号組を組合せた副作用組合せリストを作成する。
機構要素推定部1044は、副作用組合せリストの各組合せの複数の行番号組に記載された行が制御プログラムの異なる行に対応している場合、複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する。
モデルデータベース1046は、複数のプログラム断片Fそれぞれに対応する複数の機構要素モデルを格納する。
モデルデータベース1046は、機構要素モデルとして、ブロック構成図と、内部ブロック図と、状態遷移図との少なくとものいずれかを含む。
モデル構成部1045は、モデルデータベース1046から整合性のある機構要素の組合せに記載された複数のプログラム断片Fに対応する複数のモデルを取り出し複数のモデルを組合せて制御プログラムの制御プログラムモデルを構成する。
プログラム解析部1041は、複数のプログラム断片それぞれから複数の断片副作用リストを作成した処理と同じ処理を用いて、制御プログラムからプログラム副作用リストを作成する。
プログラム解析部1041は、複数のプログラム断片それぞれから複数の断片順序制約情報を作成した処理と同じ処理を用いて、制御プログラムからプログラム順序制約情報を作成する。
プログラム開発支援装置は、制御プログラムから、その実行後の変数又はポートへの結果が等価となるプログラム断片Fを検索し表示することを特徴とする。
プログラム開発支援装置は、制御プログラムを入力として、制御プログラムの制御対象を抽象表現した制御プログラムモデルを生成することを特徴とする。
プログラム開発支援装置は、類似検索において、オプションの設定により、プログラム断片Fと同じ副作用を全て含み、かつその順序制約が完全には一致しない断片を一致と判定することで、制御プログラムから複数の基本処理サイクルを経て同じ副作用が得られる断片を検索することが可能であることを特徴とする。
プログラム開発支援装置は、以下を有する。
・制御プログラムを格納するプログラムメモリ103。
・制御プログラムから、その実行後の変数又はポートの値変化である副作用を抽出し、正規化・抽象化を行った正規化・抽象化後のプログラム副作用リストと、副作用の等価性を保証するための副作用の順序関係を表したプログラム順序制約情報を抽出するプログラム解析部1041。
・複数のプログラム断片Fと複数の正規化・抽象化後の副作用リストと複数の順序制約情報とを登録したプログラム断片データベース1043。
・制御プログラムの正規化・抽象化後の副作用リスト及び順序制約情報と、プログラム断片Fの正規化・抽象化後の副作用リスト及び順序制約情報を比較する類似検索部1042。
・制御プログラムが制御対象とする機械機構又は電気回路などの要素を推定する機構要素推定部1044。
・プログラム断片データベース1043に格納されたプログラム断片に対応するモデルを格納したモデルデータベース1046。
・制御プログラムが制御する機械機構又は電気回路などに対応する機構要素モデルをモデルデータベースから取得し、機構要素モデル同士のインタフェースの接続関係を特定することで制御プログラムモデルを構成するモデル構成部1045。
***実施の形態1の効果の説明***
本実施形態によれば、定石のプログラム断片Fを格納したプログラム断片データベース1043と、制御プログラムPからその振る舞いを表す副作用とその順序制約とを抽出するプログラム解析部1041とを用い制御プログラムPからプログラム断片Fの振る舞いを類似検索する。このため、制御プログラムPが制御する機構要素を特定することができる。
また、順序制約の一致度合を選択可能とすることで、複数の基本処理サイクルを必要とするが同じ振る舞いをする制御プログラムの断片を類似検索可能にし、制御プログラムのモデル化を可能にする。
本実施形態によれば、生産設備の制御プログラムPをもとに、モデルベース開発で用いられる制御プログラムモデルを導出することができる。その際、共通の規約に基づいて実装されておらず構文等が不統一な制御プログラムPであっても、振る舞いに基づいて制御プログラムモデルを導出できる。
本実施形態により、既存の制御プログラムPの開発資産を活用したモデルベース開発の実施が容易となる。モデルベース開発を実施できれば、既存資産を高い抽象度でとらえなおすことで類似開発に流用可能となり、開発工数の削減及び不具合混入の防止を通じて、制御プログラム開発を効率化できる。
また、本実施形態の副次的な効果として、モデルベース開発の適用を行わない場合においても、制御プログラムPの流用開発を効率化できることが挙げられる。前述のとおり、開発者とは異なる第三者が制御プログラムPの流用開発を行う場合、開発者当人に比べて流用対象の制御プログラムPの構造又は設計思想の理解が十分でないため、変更すべき箇所及び変更が与える影響の見極めが難しい。これに対し、制御プログラムPを制御プログラムモデルに変換できれば、構造と設計思想についてトップダウンでの理解が進むため、流用開発を効率化できる。
加えて、本実施形態の機能の一部を使用することで、制御プログラム中の類似したプログラム断片F(いわゆるコードクローン)を見つけることも可能である。これにより、制御プログラムに頻出する処理のライブラリ化ができリファクタリングの機能も実現できる。
***実施の形態1の他の構成の説明***
●変形例1:プログラム順序制約情報と断片順序制約情報
プログラム順序制約情報として、プログラム副作用依存関係グラフの代わりにプログラム副作用依存関係表を用いてもよい。
プログラム順序制約情報は、プログラム副作用の順序制約がわかればどのような表記でもよい。
断片順序制約情報として、断片副作用依存関係グラフの代わりに断片副作用依存関係表を用いてもよい。
断片順序制約情報は、断片副作用の順序制約がわかればどのような表記でもよい。
●変形例2:プログラム断片F
プログラム断片Fとして、制御プログラムPの一部をプログラム断片データベース1043に登録してもよい。
プログラム断片Fとして、制御プログラムPのプログラム断片Fと類似する断片をプログラム断片データベース1043に登録してもよい。
プログラム断片Fとして、プログラム解析部1041によってプログラム断片Fを解析して得られる断片副作用順序制約情報を保存してもよい。
●変形例3:断片副作用リストと断片副作用依存関係グラフの作成
プログラム断片データベース1043の断片副作用リストと断片副作用依存関係グラフは、プログラム解析部1041が作成しなくてもよく、他の手段又は人手により作成してもよい。
い。
断片副作用リストと断片副作用依存関係グラフは、プログラム解析部1041により作成したもの、他の手段により作成したもの又は人手により作成したものが混在してもよい。
●変形例4:断片副作用リストと断片副作用依存関係グラフの記述形式
プログラム断片Fの表、リスト、グラフの記述形式は制御プログラムPの表、リスト、グラフの記述形式と同じなくてもよく、両者が類似検索部1042により比較できる記述形式であればよい。具体的には、プログラム断片Fの断片副作用依存関係表と、制御プログラムのプログラム副作用依存関係グラフとを比較してもよい。
●変形例5:
類似検索部1042は、プログラム断片Fに対する複数の断片副作用全てについてプログラム副作用に合致してはいないが大部分は合致しているものを検索してもよい。複数の断片副作用全てがプログラム断片Fに必須の副作用であるとは限らない場合があるかもしれないので、複数の断片副作用の多くがプログラム副作用に合致するものを検索してもよい。
具体的には、オプション設定により、100%合致、90%合致、80%合致というように、複数の断片副作用のプログラム副作用に対する合致の割合を設定すればよい。
1 プログラム開発支援装置、2 設定用バス、3 コントローラ、4 近接機器、5 リモート機器、6 制御ネットワーク、9 エンジニアリングワークステーション、91 CPU、92 メモリ、93 不揮発メモリ、94 設定ポート、95 バス、101 プログラミング部、102 表示操作部、103 プログラムメモリ、104 モデル抽出部、105 プログラム設定保存部、1041 プログラム解析部、1042 類似検索部、1043 プログラム断片データベース、1044 機構要素推定部、1045 モデル構成部、1046 モデルデータベース、F プログラム断片、P 制御プログラム。

Claims (13)

  1. 機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録するプログラム断片データベースと
    制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成するプログラム解析部と、
    前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索する類似検索部と
    を備えたプログラム開発支援装置。
  2. プログラム断片データベースは、前記複数の断片副作用の順序制約を複数の断片順序制約情報として前記複数のプログラム断片に対応させて登録し、
    プログラム解析部は、前記複数のプログラム副作用の順序制約をプログラム順序制約情報として作成し、
    前記類似検索部は、前記プログラム順序制約情報の順序制約と、前記複数の断片順序制約情報の順序制約とを比較して、前記断片順序制約情報の順序制約が前記プログラム順序制約情報の順序制約に含まれる前記断片順序制約情報に対応するプログラム断片を類似プログラム断片とする請求項1に記載のプログラム開発支援装置。
  3. 前記類似検索部は、検索オプションの設定に基づいて、前記断片順序制約情報の順序制約が前記プログラム順序制約情報の順序制約とは完全には一致しないプログラム断片を、複数の基本処理サイクルを経て同じ副作用が得られる類似プログラム断片とする請求項2に記載のプログラム開発支援装置。
  4. 前記類似検索部が複数の類似プログラム断片を検索した場合に、前記複数の類似プログラム断片に含まれる前記複数の断片副作用全てに対して前記制御プログラムの異なる行が対応している複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する機構要素推定部を備えた請求項1に記載のプログラム開発支援装置。
  5. 前記複数のプログラム断片それぞれに対応する複数の機構要素モデルを格納するモデルデータベースと、
    前記モデルデータベースから前記整合性のある機構要素の組合せに記載された前記複数のプログラム断片に対応する複数のモデルを取り出し前記複数のモデルを組合せて前記制御プログラムの制御プログラムモデルを構成するモデル構成部と
    を備えた請求項4に記載のプログラム開発支援装置。
  6. 前記プログラム解析部は、
    前記制御プログラムのプログラムリストの記述を制約する正規化と、前記制御プログラムのプログラムリストの変数を代数に置き換える抽象化とを行い、
    前記プログラム解析部は、
    前記プログラム副作用リストに記載された複数のプログラム副作用の記述に対して、同義の条件を統一記述で表現するとともに同義の副作用を統一記述で表現することにより、プログラム副作用を正規化する請求項1から5のいずれか1項に記載のプログラム開発支援装置。
  7. 前記類似検索部は、判断基準として、
    (a)副作用の条件分岐の構造と条件が同じであること、かつ、
    (b)副作用の結果が同じであること、かつ、
    (c)副作用に関わる代数に矛盾がないこと
    を用いて、断片副作用がプログラム副作用に合致することを判定する請求項1からのいずれか1項に記載のプログラム開発支援装置。
  8. 前記プログラム断片データベースは、前記複数のプログラム断片それぞれが使用している変数と前記変数が参照している変数とを前記複数の断片順序制約情報として登録し、
    前記プログラム解析部は、前記制御プログラムが使用している変数と前記変数が参照している変数とを前記プログラム順序制約情報として作成し、
    前記類似検索部は、前記複数の断片順序制約情報それぞれに記載された順序制約が前記プログラム順序制約情報に記載された順序制約と一致する場合に、前記断片順序制約情報に対応するプログラム断片を類似プログラム断片とする請求項2に記載のプログラム開発支援装置。
  9. 前記プログラム解析部は、前記制御プログラムのプログラムリストの行ごとに、副作用により値が変更される変数と前記変数の値を変更する一以上の行番号とを検出し、前記変数と前記副作用と前記一以上の行番号とを対応させたリストを前記プログラム副作用リストとして作成し、
    前記類似検索部は、前記プログラム断片の前記複数の断片副作用と前記プログラムリストの前記一以上の行番号の各行番号とを1対1に対応させた一以上の行番号組を作成し、前記一以上の行番号組の中に、前記複数の断片副作用全てが前記制御プログラムのプログラムリストの異なる行から得られたプログラム副作用に対応している行番号組がある場合に、整合性のある一つ以上の行番号組があるとして、前記断片副作用リストに対応するプログラム断片を前記類似プログラム断片とする請求項4に記載のプログラム開発支援装置。
  10. 前記機構要素推定部は、複数の類似プログラム断片の前記整合性のある一つ以上の行番号組の各行番号組を組合せた副作用組合せリストを作成し、前記副作用組合せリストの各組合せの複数の行番号組に記載された行が前記制御プログラムの異なる行が対応している場合、複数の類似プログラム断片に対応している機構要素の組合せを、整合性のある機構要素の組合せとして推定する請求項9に記載のプログラム開発支援装置。
  11. 前記モデルデータベースは、前記機構要素モデルとして、ブロック構成図と、内部ブロック図と、状態遷移図との少なくとものいずれかを含む請求項5に記載のプログラム開発支援装置。
  12. プログラム断片データベースに、機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録し、
    プログラム解析部が、制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成し、
    類似検索部が、前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索するプログラム開発支援方法。
  13. 機構要素に対応するプログラム断片に含まれる複数の副作用を複数の断片副作用として記載した複数の断片副作用リストを複数のプログラム断片に対応させて登録するプログラム断片データベースを有するコンピュータに、
    制御プログラムを解析して、前記制御プログラムに含まれる複数の副作用を複数のプログラム副作用として記載したプログラム副作用リストを作成するプログラム解析処理と、
    前記プログラム副作用リストに記載された前記複数のプログラム副作用と、前記複数の断片副作用リストに記載された前記複数の断片副作用とを比較して、前記複数の断片副作用が前記複数のプログラム副作用に含まれる前記断片副作用リストに対応するプログラム断片を類似プログラム断片として検索する類似検索処理と
    を実行させるプログラム開発支援プログラム。
JP2024559716A 2023-03-31 2023-03-31 プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラム Active JP7638457B1 (ja)

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)

* Cited by examiner, † Cited by third party
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 情報処理装置及び情報処理方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
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