JP6720993B2 - サポート装置およびサポートプログラム - Google Patents
サポート装置およびサポートプログラム Download PDFInfo
- Publication number
- JP6720993B2 JP6720993B2 JP2018040510A JP2018040510A JP6720993B2 JP 6720993 B2 JP6720993 B2 JP 6720993B2 JP 2018040510 A JP2018040510 A JP 2018040510A JP 2018040510 A JP2018040510 A JP 2018040510A JP 6720993 B2 JP6720993 B2 JP 6720993B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- argument
- code
- unit
- call
- 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Devices For Executing Special Programs (AREA)
Description
まず、図4を参照して、本発明が適用される場面の一例について説明する。図4は、本実施の形態に係るサポート装置200の適用場面の一例を示す模式図である。本実施の形態では、制御対象を制御する制御装置で実行されるユーザープログラム600の開発を支援するサポート装置200が提供される。ユーザープログラム600は、例えば制御対象を制御するための制御プログラムを含み得る。制御装置は、例えばPLC100を含み得る。
まず、本実施の形態に従うサポート装置200を適用可能なPLCシステム1の構成例について説明する。図1は、本実施の形態に従うサポート装置200を適用可能なPLCシステム1の構成例を示す模式図である。
次に、PLC100のハードウェア構成例について説明する。図2は、図1に示すPLCシステムを構成するPLC100のハードウェア構成例を示す模式図である。
次に、サポート装置200のハードウェア構成例について説明する。図3は、図1に示すPLCシステムを構成するサポート装置200のハードウェア構成例を示す模式図である。図3を参照して、サポート装置200は、典型的には、汎用のコンピュータで構成される。なお、PLC100が配置される製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。
再び図4を参照して、サポート装置200が提供するプログラム開発環境を説明する。
図5は、本発明の実施の形態に係るユーザープログラム600の一例を模式的に示す図である。図6は、従来のPOUを呼出す側の中間コードの一例を模式的に示す図である。図7は、従来の呼出される側(POU)の中間コードの一例を模式的に示す図である。図5を参照して、ユーザープログラム600はプログラムの開始を表すSTARTから終了を表すENDまでの範囲において記述される。ユーザープログラム600は、プログラム中で呼出されるPOU601の名前(識別子)と各引数の名前およびデータ型などの宣言部400と、POU601を呼出す側のプログラムbarを記述したPROGRAM部500を含む。以下では、POU601は名称が「foo」の関数と想定する。
本実施の形態に係るコード生成部271は、POU601に関連付けて構造体の一例である連想配列の作成を指示するための作成命令コードを生成する。本実施の形態では、この作成命令コードは「呼出毎連想配列」と「種類毎連想配列」の2つの方法により提供される。
まず、「呼出毎連想配列」の方法を説明する。
図8と図9は、本発明の実施の形態に係る呼出毎連想配列の方法に従い生成される中間コードの一例を模式的に示す図である。図8の中間コードは、POU(foo)を呼出す側である図5のプログラムbarから、呼出毎連想配列の方法に従い生成された中間コード510の一例を示す。
図10は、本発明の実施の形態に係る呼出毎連想配列の方法に従う呼出し側の中間コードの生成処理の一例を示すフローチャートである。図11は、図10の処理に用いられる一時領域800と連想配列900の内容の一例を模式的に示す図である。図10を参照して、POU601を呼出す側のユーザープログラム600の一例であるプログラムbarの中間コードを生成する処理を説明する。一時領域800と連想配列900は、例えばPLC100の記憶領域であって、典型的にはRAMなどの揮発性の記憶領域に相当する。
図12は、本発明の実施の形態に係る呼出毎連想配列の方法に従う呼出される側の中間コードの生成処理の一例を示すフローチャートである。図12を参照して、プログラムbarなどによりライブラリ113から呼出されるPOU601に関連した中間コードを生成する処理を説明する。
図13は、本発明の実施の形態に係る呼出毎連想配列の方法に従う呼出し側の中間コードの生成処理の他の例を示すフローチャートである。図14は、図13の処理に用いられる一時領域800と連想配列900の内容の一例を模式的に示す図である。図15は、本発明の実施の形態に係る呼出毎連想配列の方法に従う呼出される側の中間コードの生成処理の他の例を示すフローチャートである。
ユーザープログラム600において呼出されるPOU601の種類毎に連想配列の領域を確保する方法を説明する。図16は、本発明の実施の形態に係る「種類毎連想配列」の方法に従う中間コードの生成処理の一例を模式的に示すフローチャートである。
図18は、本発明の実施の形態に係る種類毎連想配列の方法に従い生成される中間コードの一例を模式的に示す図である。図18の中間コードは、POU(foo)を呼出す側である図5のプログラムbarから、コード生成部271による種類毎連想配列の方法に従い生成された中間コード518の一例を示す。
図19は、本発明の実施の形態に係る組込関数570の呼出しの書式と内容を模式的に示す図である。
本実施の形態に示した各フローチャートの処理を含むコンパイラ部263の処理を実行するためのサポートプログラムは、サポート装置200の記憶部(ROM204、RAM206、HDD208、記録媒体250など)に格納されている。CPU202は、記憶部からサポートプログラムを読出し、実行することにより、本実施の形態で説明したコード生成部271を含むコンパイラ部263を実現することが可能となる。
上記の実施の形態では、構造体コード生成部272は、呼出式550に引数が無い場合であっても、作成命令コード521、525を生成することができる。この場合、作成命令コード521、525は、仮引数名のアドレス901として終端(ターミネータ)データ(例えば、NULL)および対応の設定する値のアドレス902としてN/Aの値を有した関連付情報904のみを格納する連想配列900の作成を指示する命令コードを含む。設定コード生成部274は、このような終端データの関連付情報904のみを格納した連想配列900については予め定められた仕様に従う処理を実行させる命令コードを生成する。また、呼出されるPOU601の引数が0個であるときは、設定コード生成部274は、例えば、予め定められた仕様に従う処理を実行させる命令コードを生成する。
本実施の形態によれば、各PLC100のライブラリ113に格納されるPOU601の種類に依存せずに、異なるPLC100間で、ユーザープログラム600(すなわち実行可能形式コード(中間コード700))をコピーして利用することが可能となる、いわゆるユーザープログラム600のバイナリ互換性を確保することができる。
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
制御対象を制御する制御装置(100)で実行されるユーザープログラム(600)の開発を支援するサポート装置(200)であって、
前記ユーザープログラムを走査し、当該ユーザープログラムから当該ユーザープログラムを構成する呼出し可能な単位プログラム(601)を呼出すための呼出式(550)を検出する呼出検出部(270)と、
前記ユーザープログラムから前記制御装置で実行可能な形式のコード(700)を生成するコード生成部(271)と、を備え、
前記コード生成部は、
前記呼出式について、引数名と、当該引数に設定する値とを関連付けるための関連付情報(904)を格納する構造体(900)を作成するための作成命令コードを生成する構造体コード生成部(272)と、
前記呼出式を、前記構造体の識別子を用いて当該単位プログラムを呼出すための呼出命令コード(522,526)に変換する呼出コード生成部(273)と、
前記単位プログラムが1以上の引数が有する場合に、各引数について、前記構造体に当該引数の引数名に対応の前記関連付情報が格納されているときは、当該引数に前記関連付情報の前記値を設定し、前記関連付情報が格納されていないときは、当該引数に所定値を設定するための設定命令コードを生成する設定コード生成部(274)と、を含む、サポート装置。
[構成2]
前記構造体コード生成部は、
前記呼出検出部により前記単位プログラムの呼出式が検出される毎に、前記構造体を作成するための前記作成命令コードを生成する、構成1に記載のサポート装置。
[構成3]
前記構造体コード生成部は、
前記呼出検出部が検出する前記呼出式により呼出される前記単位プログラムの種類毎に、前記構造体を作成するための前記作成命令コードを生成する、構成1に記載のサポート装置。
[構成4]
前記関連付情報は、前記引数名を示す情報(901)と、前記値を示す情報(902,903)とを含み、
前記引数名を示す情報は、当該引数名が格納される記憶領域のアドレスを含み、
前記値を示す情報は、当該値が格納される記憶領域(800)のアドレスを含む、構成1から3のいずれか1に記載のサポート装置。
[構成5]
前記引数は、前記ユーザープログラムで用いられる変数を表し、
前記値を示す情報は、関連付けされる前記引数が表す変数の型に基づき、当該値が格納される記憶領域のアドレスまたは当該値の一方を含む、構成4に記載のサポート装置。
[構成6]
前記単位プログラムは、当該単位プログラムの各引数の設定内容を判定する関数を含む、構成1から5のいずれか1に記載のサポート装置。
[構成7]
前記呼出コード生成部は、前記構造体の識別子として、当該構造体が格納される領域のアドレスを用いて、前記呼出し式を前記呼出命令コード(522、526)に変換する、構成1から6のいずれか1に記載のサポート装置。
[構成8]
前記コード生成部は、
前記単位プログラムが引数を有しない場合に、予め定められた処理を実行させる命令コードを生成する、構成1から7のいずれか1に記載のサポート装置。
[構成9]
制御対象を制御する制御装置で実行されるユーザープログラムの開発を支援するサポート装置を実現するためのサポートプログラムであって、前記サポートプログラムは、コンピュータを、
前記ユーザープログラムを走査し、当該ユーザープログラムから当該ユーザープログラムを構成する呼出し可能な単位プログラムを呼出すための呼出式を検出する呼出検出部と、
前記ユーザープログラムから前記制御装置で実行可能な形式のコードを生成するコード生成部として機能させ、
前記コード生成部は、
前記呼出式について、引数名と、当該引数に設定する値とを関連付けるための関連付情報を格納する構造体を作成するための作成命令コードを生成する構造体コード生成部と、
前記呼出式を、前記構造体の識別子を用いて当該単位プログラムを呼出すための呼出命令コードに変換する呼出コード生成部と、
前記単位プログラムが1以上の引数が有する場合に、各引数について、前記構造体に当該引数の引数名に対応の前記関連付情報が格納されているときは、当該引数に前記関連付情報の前記値を設定し、前記関連付情報が格納されていないときは、当該引数に所定値を設定するための命令コードを生成する設定コード生成部と、を含む、サポートプログラム。
Claims (9)
- 制御対象を制御する制御装置で実行されるユーザープログラムの開発を支援するサポート装置であって、
前記ユーザープログラムを走査し、当該ユーザープログラムから当該ユーザープログラムを構成する呼出し可能な単位プログラムを呼出すための呼出式を検出する呼出し検出部と、
前記ユーザープログラムから前記制御装置で実行可能な形式のコードを生成するコード生成部と、を備え、
前記コード生成部は、
前記呼出式について、引数名と、当該引数に設定する値とを関連付けるための関連付情報を格納する構造体を作成するための作成命令コードを生成する構造体コード生成部と、
前記呼出式を、前記構造体の識別子を用いて当該単位プログラムを呼出すための呼出命令コードに変換する呼出コード生成部と、
前記単位プログラムが1以上の引数を有する場合に、各引数について、前記構造体に当該引数の引数名に対応の前記関連付情報が格納されているときは、当該引数に前記関連付情報の前記値を設定し、前記関連付情報が格納されていないときは、当該引数に所定値を設定するための設定命令コードを生成する設定コード生成部と、を含む、サポート装置。 - 前記構造体コード生成部は、
前記呼出し検出部により前記単位プログラムの呼出式が検出される毎に、前記構造体を作成するための前記作成命令コードを生成する、請求項1に記載のサポート装置。 - 前記構造体コード生成部は、
前記呼出し検出部が検出する前記呼出式により呼出される前記単位プログラムの種類毎に、前記構造体を作成するための前記作成命令コードを生成する、請求項1に記載のサポート装置。 - 前記関連付情報は、前記引数名を示す情報と、前記値を示す情報とを含み、
前記引数名を示す情報は、当該引数名が格納される記憶領域のアドレスを含み、
前記値を示す情報は、当該値が格納される記憶領域のアドレスを含む、請求項1から3のいずれか1項に記載のサポート装置。 - 前記引数は、前記ユーザープログラムで用いられる変数を表し、
前記値を示す情報は、関連付けされる前記引数が表す変数の型に基づき、当該値が格納される記憶領域のアドレスまたは当該値の一方を含む、請求項4に記載のサポート装置。 - 前記単位プログラムは、当該単位プログラムの各引数の設定内容を判定する関数を含む、請求項1から5のいずれか1項に記載のサポート装置。
- 前記呼出コード生成部は、前記構造体の識別子として、当該構造体が格納される領域のアドレスを用いて、前記呼出式を前記呼出命令コードに変換する、請求項1から6のいずれか1項に記載のサポート装置。
- 前記設定コード生成部は、
前記単位プログラムが引数を有しない場合に、予め定められた処理を実行させる命令コードを生成する処理命令コード生成部を含む、請求項1から7のいずれか1項に記載のサポート装置。 - 制御対象を制御する制御装置で実行されるユーザープログラムの開発を支援するサポート装置を実現するためのサポートプログラムであって、前記サポートプログラムは、コンピュータを、
前記ユーザープログラムを走査し、当該ユーザープログラムから当該ユーザープログラムを構成する呼出し可能な単位プログラムを呼出すための呼出式を検出する呼出し検出部と、
前記ユーザープログラムから前記制御装置で実行可能な形式のコードを生成するコード生成部として機能させ、
前記コード生成部は、
前記呼出式について、引数名と、当該引数に設定する値とを関連付けるための関連付情報を格納する構造体を作成するための作成命令コードを生成する構造体コード生成部と、
前記呼出式を、前記構造体の識別子を用いて当該単位プログラムを呼出すための呼出命令コードに変換する呼出コード生成部と、
前記単位プログラムが1以上の引数を有する場合に、各引数について、前記構造体に当該引数の引数名に対応の前記関連付情報が格納されているときは、当該引数に前記関連付情報の前記値を設定し、前記関連付情報が格納されていないときは、当該引数に所定値を設定するための命令コードを生成する設定コード生成部と、を含む、サポートプログラム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018040510A JP6720993B2 (ja) | 2018-03-07 | 2018-03-07 | サポート装置およびサポートプログラム |
US16/643,578 US11221828B2 (en) | 2018-03-07 | 2019-01-22 | Support device and support program |
CN201980004240.XA CN111095196B (zh) | 2018-03-07 | 2019-01-22 | 支持装置以及记录介质 |
PCT/JP2019/001782 WO2019171794A1 (ja) | 2018-03-07 | 2019-01-22 | サポート装置およびサポートプログラム |
EP19765033.6A EP3764219B1 (en) | 2018-03-07 | 2019-01-22 | Support device and support program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018040510A JP6720993B2 (ja) | 2018-03-07 | 2018-03-07 | サポート装置およびサポートプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019159361A JP2019159361A (ja) | 2019-09-19 |
JP6720993B2 true JP6720993B2 (ja) | 2020-07-08 |
Family
ID=67845988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018040510A Active JP6720993B2 (ja) | 2018-03-07 | 2018-03-07 | サポート装置およびサポートプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US11221828B2 (ja) |
EP (1) | EP3764219B1 (ja) |
JP (1) | JP6720993B2 (ja) |
CN (1) | CN111095196B (ja) |
WO (1) | WO2019171794A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10585647B2 (en) * | 2017-05-02 | 2020-03-10 | International Business Machines Corporation | Program optimization by converting code portions to directly reference internal data representations |
JP2022135170A (ja) * | 2021-03-04 | 2022-09-15 | オムロン株式会社 | 開発支援装置、開発支援装置の制御方法、情報処理プログラム、および記録媒体 |
JP7622483B2 (ja) | 2021-03-11 | 2025-01-28 | オムロン株式会社 | 開発支援装置、開発支援方法および開発支援プログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247067B1 (en) * | 1996-03-29 | 2001-06-12 | Sun Microsystems, Inc. | Transparently converting program calls between interfaces |
JP3726992B2 (ja) | 1998-02-17 | 2005-12-14 | 株式会社日立製作所 | 一括関数呼出化方法 |
JP2001331315A (ja) | 2000-05-24 | 2001-11-30 | Sony Corp | データ処理システム及び方法、並びに、記憶媒体 |
US7490320B2 (en) * | 2005-02-18 | 2009-02-10 | International Business Machines Corporation | Method and apparatus for transforming Java Native Interface function calls into simpler operations during just-in-time compilation |
JP5115160B2 (ja) * | 2007-11-27 | 2013-01-09 | 富士電機株式会社 | プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム |
JP4572259B1 (ja) * | 2009-04-27 | 2010-11-04 | 株式会社フォティーンフォティ技術研究所 | 情報機器、プログラム及び不正なプログラムコードの実行防止方法 |
WO2010134330A1 (ja) * | 2009-05-19 | 2010-11-25 | パナソニック株式会社 | 分岐予測装置、その分岐予測方法、コンパイラ、そのコンパイル方法及び分岐予測プログラム記録媒体 |
JP6491438B2 (ja) * | 2014-08-29 | 2019-03-27 | 株式会社日立社会情報サービス | マイグレーション支援装置 |
JP6812637B2 (ja) | 2016-01-20 | 2021-01-13 | 富士電機株式会社 | プログラマブルコントローラシステム、その開発支援装置、ターゲット装置 |
-
2018
- 2018-03-07 JP JP2018040510A patent/JP6720993B2/ja active Active
-
2019
- 2019-01-22 WO PCT/JP2019/001782 patent/WO2019171794A1/ja unknown
- 2019-01-22 CN CN201980004240.XA patent/CN111095196B/zh active Active
- 2019-01-22 US US16/643,578 patent/US11221828B2/en active Active
- 2019-01-22 EP EP19765033.6A patent/EP3764219B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3764219B1 (en) | 2024-10-23 |
EP3764219A1 (en) | 2021-01-13 |
JP2019159361A (ja) | 2019-09-19 |
EP3764219A4 (en) | 2021-12-01 |
CN111095196A (zh) | 2020-05-01 |
US11221828B2 (en) | 2022-01-11 |
CN111095196B (zh) | 2024-03-01 |
WO2019171794A1 (ja) | 2019-09-12 |
US20200201605A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5561800A (en) | Method and apparatus for incrementally linking modified routines into software | |
CN102402427B (zh) | 一种Java应用程序的更新方法及装置 | |
JPH10320214A (ja) | コンパイルシステム及びコンピュータプログラム製品 | |
JP6720993B2 (ja) | サポート装置およびサポートプログラム | |
JP5811088B2 (ja) | データ処理システム及びデータ処理方法 | |
CN115390846A (zh) | 编译构建方法、装置、电子设备和存储介质 | |
JP7172864B2 (ja) | サポート装置およびサポートプログラム | |
JP2009059351A (ja) | コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品 | |
CN110806891B (zh) | 嵌入式设备软件版本的生成方法及装置 | |
US11886839B2 (en) | Non-transitory computer-readable recording medium, function generation method, and information processing device | |
JP2016224559A (ja) | プログラム作成支援装置、制御方法およびプログラム | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
JP7001012B2 (ja) | サポート装置およびサポートプログラム | |
JP6455096B2 (ja) | コントロールシステム、その支援装置、プログラマブルコントロール装置 | |
TWI774469B (zh) | 程式編譯管理系統與其作業方法 | |
JP2009098963A (ja) | モジュール自動生成システム | |
CN116774988B (zh) | 解除框架包模式符号依赖的方法及装置 | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
CN114860253B (zh) | 一种编译方法、装置、计算机设备以及可读存储介质 | |
JP7234810B2 (ja) | サポート装置およびサポートプログラム | |
Hnat et al. | A modular and extensible macroprogramming compiler | |
JP5109808B2 (ja) | 追加実行可能情報生成装置、情報処理装置、及びプログラム | |
Manjikian | Dynamic RAM-based programs and tasks in the freescale MQX operating system | |
CN115878197A (zh) | 基于设备树的启动优化方法、系统、芯片、设备和介质 | |
CN117608562A (zh) | 一种可执行程序生成方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200306 |
|
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: 20200519 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200601 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6720993 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |