JP7450565B2 - コンパイル方法、開発支援装置および制御システム - Google Patents
コンパイル方法、開発支援装置および制御システム Download PDFInfo
- Publication number
- JP7450565B2 JP7450565B2 JP2021014739A JP2021014739A JP7450565B2 JP 7450565 B2 JP7450565 B2 JP 7450565B2 JP 2021014739 A JP2021014739 A JP 2021014739A JP 2021014739 A JP2021014739 A JP 2021014739A JP 7450565 B2 JP7450565 B2 JP 7450565B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- directed graph
- nodes
- modified
- edges
- 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
- 238000000034 method Methods 0.000 title claims description 21
- 238000011161 development Methods 0.000 title claims description 19
- 230000006870 function Effects 0.000 claims description 28
- 238000007726 management method Methods 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 238000004148 unit process Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 230000000052 comparative effect Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Programmable Controllers (AREA)
Description
ソースコードの入力言語から、ノードとエッジからなる複数のグループに分類された有向グラフを中間言語として生成し、ソースコードを修正するとき、修正前のソースコードの有向グラフと修正後のソースコードの有向グラフを、ノードおよびエッジごとに比較し、修正されたノードおよびエッジのいずれかを含むグループをコンパイルするコンパイル方法。
<制御システムの構成>
図1は、本実施の形態に係る制御システムの構成図である。本システムは、開発支援装置10、計装機器を制御する制御装置30などを有する。開発支援装置10は、制御装置30用の制御プログラムのソースコード21をユーザに作成させるインターフェース機能部11を有する。制御装置30は、例えばPLC(プログラマブルコントローラ)、DCS(Distributed Control System:分散制御システム)などであってもよい。
図4に具体的なソースコードとソースコードから生成した中間言語の例を示す。ソースコードはST(Structured Text)言語を例に説明するがこれに限るものではない。また、中間言語は簡易化した表現としている。図1に示されたインターフェース機能部11から、図4の版1に示されたソースコードがコンパイラ機能部13に入力され、1回目のコンパイルが行われる。コンパイラ機能部13のフロントエンドコンパイラ13aにより、ソースコードから、ノードとエッジで構成される有向グラフの中間言語を生成する(図4の版1の中間言語を参照)。生成された中間言語22の有向グラフは、図1の差分情報管理部14に記憶される。
図6(a)は、代入文の例である。テキスト形式で差分比較をした比較例2では、差分として「B:=C;」を検出する。テキストの差分比較に掛かる時間は無視できるものとする。これらの差分に相当するグループは、グループ1~3の3グループであるので、合計30ステップ掛かる。
図7(a)は、四則演算の例である。テキスト形式で差分比較をした比較例3では、差分として、「D:=(A-B)/C;」を検出する。テキストの差分比較に掛かる時間は無視できるものとする。これらの差分に相当するグループは、グループ1~7の7グループであるので、合計70ステップ掛かる。
図8(a)は、FOR文の例である。テキスト形式で差分比較をした比較例4では、差分として、「A:=0;」「FOR I:=(4 TO 8 DO)」「A:A+I-3;」「END_FOR;」を検出する。テキストの差分比較に掛かる時間は無視できるものとする。これらの差分に相当するグループは、グループ4~14の11グループであるので、合計110ステップ掛かる。
図9(a)は、WHILE文の例である。テキスト形式で差分比較をした比較例5では、差分として、「A:=5;」「WHILE A<10 DO)」「A:A+I;」「END_WHILE」を検出する。テキストの差分比較に掛かる時間は無視できるものとする。これらの差分に相当するグループは、グループ4~12の9グループであるので、合計90ステップ掛かる。
実施の形態1で使用した有向グラフによる動作ロジックを、コンパイルだけではなく、図1に示す制御装置30への転送処理にも適用する。この場合、制御装置30内のプログラム実行管理機能部32が動作ロジックを有向グラフの構造で認識出来ることを前提とする。
実施の形態1で適用した有向グラフによるロジック差分比較法を、ロジックの等価性確認に適用することもできる。例えば、旧機種の制御装置から新機種の制御装置へソースコードを移植する場合、移植に伴い、変更部分の機械語を書き換える必要があるが、ソースコードの入力言語の文法あるいはデータ構造には変化があるが、ロジックには変化が無い場合がある。このように、機種変更または言語変更の際のロジックの変化の有無の分析をコンパイルを行う際の1つのステップに組み入れてもよい。
実施の形態3で適用したロジック等価性を応用して、あるロジックを変更したときに、他のロジックへどのように影響するかの確認を、プログラムを実際に実行しない、静的解析に適用する。図13は、IF文の「YES」の場合の処理と「NO」の場合の処理を入れ替えた例である。有向グラフによる中間言語の差分は、IF文の接続先のみである。従って、影響を確認する場合にはIF文の接続先が変わった点を起点とし、静的解析を開始すれば良いので、全体のロジックを確認する必要がなく、解析時間を短縮可能である。
従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも1つの構成要素を変形する場合、追加する場合または省略する場合、さらには、少なくとも1つの構成要素を抽出し、他の実施の形態の構成要素と組み合わせる場合が含まれるものとする。
Claims (5)
- ソースコードから、ノードとエッジからなる複数のグループに分類された有向グラフを中間言語として生成し、前記ソースコードを修正するとき、修正前のソースコードの有向グラフと修正後のソースコードの有向グラフを、前記ノードおよび前記エッジごとに比較し、修正された前記ノードおよび前記エッジのいずれかを含む前記グループをコンパイルするコンパイル方法。
- 第1のソースコードから、ノードとエッジからなる複数のグループに分類された第1の有向グラフを生成し、第2のソースコードから、ノードとエッジからなる複数のグループに分類された第2の有向グラフを生成し、前記第1の有向グラフと前記第2の有向グラフとをノードおよびエッジごとに比較し、比較した全てのノードとエッジが一致した場合に、前記第1のソースコードと前記第2のソースコードに等価性があると判断するステップを有するコンパイル方法。
- ソースコードを入力するためのインターフェース機能部、前記ソースコードを、ノードとエッジからなる複数のグループに分類された有向グラフを生成するコンパイラ機能部、前記有向グラフを記憶する差分情報管理部を備え、前記コンパイラ機能部は、修正されたソースコードが入力された場合、前記修正されたソースコードの修正有向グラフを生成するとともに、前記差分情報管理部に記憶された修正前の有向グラフと前記修正有向グラフとをノードおよびエッジごとに比較することにより、修正されたノードおよびエッジのいずれかを含むグループをコンパイルして機械語を生成することを特徴とする開発支援装置。
- 請求項3の開発支援装置と前記開発支援装置と通信で接続される制御装置とを備え、前記開発支援装置でコンパイルされたソースコードの修正部分の機械語を前記制御装置に送信することを特徴とする制御システム。
- 請求項3の開発支援装置と前記開発支援装置と通信で接続される制御装置とを備え、前記制御装置は、中間言語としての有向グラフの構造を認識可能なプログラム実行管理機能部を有し、前記開発支援装置から送信される修正されたノードおよびエッジのいずれかを含む有向グラフのグループの情報を前記プログラム実行管理機能部で処理することを特徴とする制御システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021014739A JP7450565B2 (ja) | 2021-02-02 | 2021-02-02 | コンパイル方法、開発支援装置および制御システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021014739A JP7450565B2 (ja) | 2021-02-02 | 2021-02-02 | コンパイル方法、開発支援装置および制御システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022118310A JP2022118310A (ja) | 2022-08-15 |
JP7450565B2 true JP7450565B2 (ja) | 2024-03-15 |
Family
ID=82839975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021014739A Active JP7450565B2 (ja) | 2021-02-02 | 2021-02-02 | コンパイル方法、開発支援装置および制御システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7450565B2 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001290656A (ja) | 2000-04-07 | 2001-10-19 | Hitachi Ltd | 差分コンパイル方式 |
JP2016151973A (ja) | 2015-02-18 | 2016-08-22 | 富士電機株式会社 | 制御コントロールシステム、その開発支援装置、制御装置 |
CN106462434A (zh) | 2014-06-25 | 2017-02-22 | 微软技术许可有限责任公司 | 整个程序代码的增量式编译 |
JP2018151936A (ja) | 2017-03-14 | 2018-09-27 | オムロン株式会社 | プログラム作成装置およびプログラム |
-
2021
- 2021-02-02 JP JP2021014739A patent/JP7450565B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001290656A (ja) | 2000-04-07 | 2001-10-19 | Hitachi Ltd | 差分コンパイル方式 |
CN106462434A (zh) | 2014-06-25 | 2017-02-22 | 微软技术许可有限责任公司 | 整个程序代码的增量式编译 |
JP2016151973A (ja) | 2015-02-18 | 2016-08-22 | 富士電機株式会社 | 制御コントロールシステム、その開発支援装置、制御装置 |
JP2018151936A (ja) | 2017-03-14 | 2018-09-27 | オムロン株式会社 | プログラム作成装置およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2022118310A (ja) | 2022-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254776B (zh) | 多语言代码编译方法及编译器 | |
CN110825384A (zh) | 一种基于llvm的st语言编译方法及编译***和编译器 | |
JPH0561683A (ja) | オブジエクトに基づく情報処理システム及びソフトウエア保守システム | |
JP2004295398A (ja) | コンパイラ、コンパイル方法、及びプログラム開発ツール | |
US11656592B2 (en) | Analysis device, analysis method, and recording medium | |
US20170177313A1 (en) | Method for compiling a source code | |
US20190012168A1 (en) | Program generating apparatus | |
JP7450565B2 (ja) | コンパイル方法、開発支援装置および制御システム | |
JP5405684B1 (ja) | ソースプログラムのプログラミング言語変換装置 | |
CN110472411B (zh) | 一种内存溢出处理方法、装置、设备及可读存储介质 | |
CN114691151A (zh) | 一种基于深度学习的优化代码反编译方法和*** | |
CN113448851A (zh) | 一种rust编程语言编译器的自动化测试方法及*** | |
Moyen et al. | Loop quasi-invariant chunk motion by peeling with statement composition | |
JP5908374B2 (ja) | コンパイラ評価装置、方法及びプログラム | |
KR101658795B1 (ko) | 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법 | |
JP2016151973A (ja) | 制御コントロールシステム、その開発支援装置、制御装置 | |
Kats et al. | Interactive disambiguation of meta programs with concrete object syntax | |
CN109814869B (zh) | 应用于机器人的解析方法、***及计算机可读存储介质 | |
WO2022190418A1 (ja) | 開発支援装置、開発支援方法および開発支援プログラム | |
WO2021161428A1 (ja) | プログラム生成装置、プログラム生成方法及びプログラム | |
JP2002312167A (ja) | 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法 | |
EP4369187A1 (en) | Method and system for implementing a virtual assistant for automatic configuration of engineering objects | |
JP5181788B2 (ja) | ソースプログラムの言語変換装置、方法及びプログラム | |
JP6944838B6 (ja) | 変換装置および変換方法 | |
JP2007133622A (ja) | エンジニアリングツール及びプログラム変換方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230119 |
|
TRDD | Decision of grant or rejection written | ||
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240131 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240305 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7450565 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |