JP2022118310A - コンパイル方法、開発支援装置および制御システム - Google Patents
コンパイル方法、開発支援装置および制御システム Download PDFInfo
- Publication number
- JP2022118310A JP2022118310A JP2021014739A JP2021014739A JP2022118310A JP 2022118310 A JP2022118310 A JP 2022118310A JP 2021014739 A JP2021014739 A JP 2021014739A JP 2021014739 A JP2021014739 A JP 2021014739A JP 2022118310 A JP2022118310 A JP 2022118310A
- 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.)
- Granted
Links
- 238000011161 development Methods 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000006870 function Effects 0.000 claims abstract description 31
- 238000012986 modification Methods 0.000 claims abstract description 10
- 230000004048 modification Effects 0.000 claims abstract description 9
- 238000004891 communication Methods 0.000 claims description 10
- 238000004904 shortening Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 12
- 230000000052 comparative effect Effects 0.000 description 11
- 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
- 238000000605 extraction Methods 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012937 correction 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)
Abstract
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 true JP2022118310A (ja) | 2022-08-15 |
JP7450565B2 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) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001290656A (ja) | 2000-04-07 | 2001-10-19 | Hitachi Ltd | 差分コンパイル方式 |
US9442707B2 (en) | 2014-06-25 | 2016-09-13 | Microsoft Technology Licensing, Llc | Incremental whole program compilation of code |
JP2016151973A (ja) | 2015-02-18 | 2016-08-22 | 富士電機株式会社 | 制御コントロールシステム、その開発支援装置、制御装置 |
JP6812861B2 (ja) | 2017-03-14 | 2021-01-13 | オムロン株式会社 | プログラム作成装置およびプログラム |
-
2021
- 2021-02-02 JP JP2021014739A patent/JP7450565B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP7450565B2 (ja) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8453126B1 (en) | System and method for converting base SAS runtime macro language scripts to JAVA target language | |
CN110825384A (zh) | 一种基于llvm的st语言编译方法及编译系统和编译器 | |
JP4057938B2 (ja) | コンパイラ、コンパイル方法、及びプログラム開発ツール | |
US9405518B2 (en) | Leveraging legacy applications for use with modern applications | |
CN108197027A (zh) | 软件性能优化方法、可存储介质、计算机、计算机程序 | |
US20190012168A1 (en) | Program generating apparatus | |
CN110472411B (zh) | 一种内存溢出处理方法、装置、设备及可读存储介质 | |
JP2022118310A (ja) | コンパイル方法、開発支援装置および制御システム | |
JP2008165342A (ja) | ソースコード生成方法及び装置並びにプログラム | |
CN116594622A (zh) | 基于类型推导与数据流分析的Python程序编译方法及系统 | |
CN115390846A (zh) | 编译构建方法、装置、电子设备和存储介质 | |
JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
US7603661B2 (en) | Parse table generation method and system | |
JP2008204023A (ja) | プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法 | |
JP2007280214A (ja) | プログラマブルコントローラ | |
JP2016151973A (ja) | 制御コントロールシステム、その開発支援装置、制御装置 | |
JP2006079484A (ja) | システム移行に伴うソースプログラム変換プログラム | |
JP5908374B2 (ja) | コンパイラ評価装置、方法及びプログラム | |
WO2022190418A1 (ja) | 開発支援装置、開発支援方法および開発支援プログラム | |
JP6944838B6 (ja) | 変換装置および変換方法 | |
KR101658795B1 (ko) | 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법 | |
JP5181788B2 (ja) | ソースプログラムの言語変換装置、方法及びプログラム | |
JP2002312167A (ja) | 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法 | |
JP2008299763A (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 |