JP2016151973A - Management control system, development support device therefor, and management device - Google Patents
Management control system, development support device therefor, and management device Download PDFInfo
- Publication number
- JP2016151973A JP2016151973A JP2015030080A JP2015030080A JP2016151973A JP 2016151973 A JP2016151973 A JP 2016151973A JP 2015030080 A JP2015030080 A JP 2015030080A JP 2015030080 A JP2015030080 A JP 2015030080A JP 2016151973 A JP2016151973 A JP 2016151973A
- Authority
- JP
- Japan
- Prior art keywords
- machine language
- language object
- circuit
- source code
- control device
- 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.)
- Pending
Links
Landscapes
- Programmable Controllers (AREA)
Abstract
Description
本発明は、制御装置用プログラムの更新処理に関する。 The present invention relates to update processing for a control apparatus program.
PLCソフトウエア開発は、「ソースコードの編集→コンパイル→PLCへ転送→デバッグ」を繰り返し実施する。デバッグ作業中に、ソースコード上に不具合が存在すると、ソースコードを修正して、「修正版のコンパイル→PLCへ転送→デバッグ」を実施する。これは、PLC等のターゲットのプログラム修正(変更/更新)を、オンラインで行うものであり、オンライン更新等と呼ぶものである。 In the PLC software development, “edit source code → compile → transfer to PLC → debug” is repeatedly performed. If there is a defect in the source code during the debugging operation, the source code is corrected and "Compile the corrected version-> Transfer to PLC-> Debug" is executed. In this method, program correction (change / update) of a target such as a PLC is performed online, which is called online update or the like.
上記作業の大部分は、局部的な修正で対応可能であるが、一部の変更であってもそのソースコードファイル全体をコンパイルして転送していた。そのためコンパイル処理や転送に時間がかかり、ユーザのソフトウエア開発がスムーズに実施できない課題がある。 Most of the above work can be dealt with by local correction, but even for some changes, the entire source code file was compiled and transferred. Therefore, it takes time to compile and transfer, and there is a problem that user software development cannot be carried out smoothly.
また、例えば、特許文献1の従来技術が知られている。
特許文献1には、ソースコードを、まず、フロントエンドコンパイラによって中間コードに変換し、この中間コードをバックエンドコンパイラによって機械語オブジェクトに変換する従来技術が、開示されている。
For example, the prior art of Patent Document 1 is known.
Patent Document 1 discloses a conventional technique in which a source code is first converted into an intermediate code by a front end compiler, and this intermediate code is converted into a machine language object by a back end compiler.
特許文献1の発明では、フロントエンドコンパイラはソースコードと中間コードの対応情報である第1の対応表を、バックエンドコンパイラは中間コードと機械語オブジェクトの対応情報である第2の対応表を作成し、ソースコードの部分的な変更が生じた場合は第1、第2の対応表に基づいて該当部分の機械語オブジェクトを生成する。 In the invention of Patent Document 1, the front-end compiler creates a first correspondence table that is correspondence information between source code and intermediate code, and the back-end compiler creates a second correspondence table that is correspondence information between intermediate code and machine language object. When a partial change of the source code occurs, a machine language object of the corresponding part is generated based on the first and second correspondence tables.
これによって、プログラマブルコントローラのソフトウェア開発における、コーディング・コンパイル・転送・デバッグの一連の作業を繰り返す過程において、ソースコードの変更量に見合った機械語オブジェクトの転送を実施することにより作業者の待ち時間を短縮させ、デバッグ効率を向上させることができる。 In this way, in the process of repeating a series of operations of coding, compilation, transfer, and debugging in software development of a programmable controller, it is possible to reduce the waiting time of the worker by transferring the machine language object corresponding to the amount of change of the source code. It can be shortened and debugging efficiency can be improved.
デバッグ中の変更作業は、局部的な変更が大部分であるが、従来の方法では、変更後のソースコード全体をコンパイルして機械語オブジェクトを生成して、ターゲットに転送し更新していた。機械語オブジェクトの大部分は、変更前と変更後で同じであるにもかかわらず、全体をターゲットに転送して更新していた。 Most of the change work during debugging is a local change, but in the conventional method, the entire source code after the change is compiled to generate a machine language object, which is transferred to the target and updated. Most machine language objects were transferred and updated to the target, even though they were the same before and after the change.
本発明の課題は、変更箇所を含む一部だけをコンパイルして成る必要最低限の機械語オブジェクトを生成して、これをターゲットに送信してターゲットにおけるプログラムを更新させることで、オンライン更新に係る時間を短縮することができる制御コントロールシステム、その開発支援装置、制御装置等を提供することである。 An object of the present invention relates to online update by generating a minimum necessary machine language object formed by compiling only a part including a changed portion, and transmitting the generated object to the target to update the program in the target. It is to provide a control system, a development support device, a control device, etc. that can shorten the time.
本発明の制御コントロールシステムは、制御装置と、該制御装置用のプログラムのソースコードをコンパイルして機械語オブジェクトに変換する開発支援装置を有する制御コントロールシステムであって、下記の構成を有する。 The control control system of the present invention is a control control system having a control device and a development support device that compiles a source code of a program for the control device and converts it into a machine language object, and has the following configuration.
前記開発支援装置は、複数の回路から構成される前記ソースコードを該回路毎に機械語オブジェクトに変換して前記制御装置に送信すると共に、該各機械語オブジェクトの格納位置とサイズ情報を回路位置表に登録するコンパイル手段を有する。 The development support device converts the source code composed of a plurality of circuits into machine language objects for each circuit and transmits the machine language objects to the control device, and stores the storage location and size information of each machine language object in the circuit location Compile means for registering in the table.
前記制御装置は、前記送信されてくる機械語オブジェクトをプログラム記憶手段に記憶する。
そして、前記コンパイル手段は、前記ソースコードが修正版である場合、修正があった前記回路のみを機械語オブジェクトに変換して成る修正版の機械語オブジェクトを、前記制御装置に送信すると共に、該修正版の機械語オブジェクトのサイズと、前記回路位置表から得られた修正前の機械語オブジェクトの格納位置とサイズ情報とを、修正情報として前記制御装置に送信する。
The control device stores the transmitted machine language object in a program storage means.
When the source code is a corrected version, the compiling means transmits a corrected version of the machine language object obtained by converting only the corrected circuit into a machine language object, and The size of the corrected machine language object and the storage position and size information of the machine language object before correction obtained from the circuit position table are transmitted to the control device as correction information.
この場合、前記制御装置は、前記修正情報に基づいて、前記プログラム記憶手段に記憶されている既存の各機械語オブジェクトのなかで前記修正があった回路に対応する機械語オブジェクトを、前記修正版の機械語オブジェクトに置き替える。 In this case, based on the correction information, the control device converts the machine language object corresponding to the corrected circuit among the existing machine language objects stored in the program storage unit to the corrected version. Replace with the machine language object.
本発明の制御コントロールシステム、その開発支援装置、制御装置等によれば、変更箇所を含む一部だけをコンパイルして成る必要最低限の機械語オブジェクトを生成して、これをターゲットに送信してターゲットにおけるプログラムを更新させることで、オンライン更新に係る時間を短縮することができる。 According to the control control system of the present invention, its development support device, control device, etc., a minimum necessary machine language object formed by compiling only a part including a changed portion is generated and transmitted to the target. By updating the program on the target, it is possible to reduce the time required for online update.
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本例の制御コントロールシステムの構成図である。
本システムは、開発支援装置(ローダ)10、PLC(プログラマブルコントローラ)30などを有する。尚、ここでは、制御装置の一例としてPLCを示すが、この例に限らず、例えばDCS(分散制御システム;Distributed Control System)等であってもよい。本システムは、PLC、DCS等の制御装置のプログラムを、管理するものである。
Embodiments of the present invention will be described below with reference to the drawings.
FIG. 1 is a configuration diagram of the control system of this example.
This system includes a development support apparatus (loader) 10 and a PLC (programmable controller) 30. In addition, although PLC is shown here as an example of a control apparatus, not only this example but DCS (Distributed Control System) etc. may be sufficient, for example. This system manages programs of control devices such as PLC and DCS.
開発支援装置(ローダ)10は、まず、任意のPLC用プログラムのソースコード21をユーザに作成させるインターフェース機能部11(エディタ機能も含む)を有する。このインターフェース機能部11は、よく知られた既存の機能であり、ここでは特に説明しない。尚、上記PLC用プログラムは、PLC30で実行させる制御プログラム等である。 The development support apparatus (loader) 10 has an interface function unit 11 (including an editor function) that allows a user to create a source code 21 of an arbitrary PLC program. The interface function unit 11 is a well-known existing function, and is not particularly described here. The PLC program is a control program executed by the PLC 30.
開発支援装置(ローダ)10は、また、上記ユーザが作成したソースコード21を、ターゲット(PLC30)上で動作する機械語オブジェクト24に変換するコンパイラ機能部(フロントエンドコンパイラ13、バックエンドコンパイラ14)を有する。これは、一旦、中間言語22(中間コード)に変換した後に機械語オブジェクト24に変換するものである。中間コードについては、例えば上記特許文献1等に記載の既存のものであり、ここでは特に説明しない。 The development support apparatus (loader) 10 also converts a compiler function unit (a front-end compiler 13 and a back-end compiler 14) that converts the source code 21 created by the user into a machine language object 24 that operates on the target (PLC 30). Have In this case, once converted into the intermediate language 22 (intermediate code), it is converted into the machine language object 24. The intermediate code is an existing code described in, for example, the above-mentioned Patent Document 1, and is not particularly described here.
まず、フロントエンドコンパイラ13が、上記ソースコード21を解析して中間言語22に変換する。続いて、バックエンドコンパイラ14が、この中間言語22をPLC30で動作する機械語オブジェクト24に変換する。この様な中間言語22、機械語オブジェクト24への変換機能自体は、よく知られた既存機能であるので、ここでは特に説明しない。 First, the front end compiler 13 analyzes the source code 21 and converts it into an intermediate language 22. Subsequently, the back-end compiler 14 converts the intermediate language 22 into a machine language object 24 that operates on the PLC 30. Such a conversion function itself into the intermediate language 22 and the machine language object 24 is a well-known existing function and will not be particularly described here.
ここで、本例のコンパイラ機能部(フロントエンドコンパイラ13、バックエンドコンパイラ14)は、上記変換処理に伴って図示の変更情報管理表23、回路位置表25を生成する。これについては、後に具体例を参照して詳細に説明するものとする。 Here, the compiler function units (front-end compiler 13 and back-end compiler 14) of the present example generate the change information management table 23 and the circuit position table 25 shown in the figure along with the conversion processing. This will be described in detail later with reference to a specific example.
そして、開発支援装置(ローダ)10は、通信機能部12を有する。通信機能部12によって、不図示の通信線などを介して、例えばPLC30との通信を行うことができる。例えば、上記コンパイル処理によって生成された機械語オブジェクト24等を、通信機能部12によって、PLC30にダウンロードする。 The development support apparatus (loader) 10 includes a communication function unit 12. The communication function unit 12 can perform communication with, for example, the PLC 30 via a communication line (not shown). For example, the machine language object 24 or the like generated by the above compilation process is downloaded to the PLC 30 by the communication function unit 12.
PLC30は、その通信機能部31によって開発支援装置(ローダ)10と通信することができ、以って上記ダウンロードされる機械語オブジェクト24等を受信する。そして、受信した機械語オブジェクト24を図示の機械語オブジェクト41として自己の不図示のメモリ等の所定の記憶領域に記憶する。PLC30は、プログラム実行管理機能部32を有しており、プログラム実行管理機能部32が上記機械語オブジェクト41を実行することで、たとえば不図示の制御対象機器を制御する。 The PLC 30 can communicate with the development support apparatus (loader) 10 through the communication function unit 31 and receives the machine language object 24 and the like downloaded as described above. The received machine language object 24 is stored as a machine language object 41 in a predetermined storage area such as a memory (not shown). The PLC 30 includes a program execution management function unit 32, and the program execution management function unit 32 executes the machine language object 41 to control, for example, a control target device (not shown).
尚、開発支援装置10は、例えばパソコン等の汎用のコンピュータ上で実現されるものであり、ハードウェア的にはパソコン等の一般的な構成を有している。つまり、特に図示しないが、例えばCPU、ハードディスクやメモリ等の記憶装置等を有しており、更に図示の画面(ディスプレイ)15、入力装置16(キーボード、マウス等)を備えている。 The development support apparatus 10 is realized on a general-purpose computer such as a personal computer, and has a general configuration such as a personal computer in terms of hardware. That is, although not shown in particular, it has, for example, a CPU, a storage device such as a hard disk or a memory, and further includes a screen (display) 15 and an input device 16 (keyboard, mouse, etc.) shown in the drawing.
上記記憶装置には予め所定のアプリケーションプログラムが記憶されている。上記CPUが、このアプリケーションプログラムを実行することで、上記インタフェース機能部11、コンパイラ機能部(フロントエンドコンパイラ13、バックエンドコンパイラ14)、通信機能部12等の各種機能部が実現される。 A predetermined application program is stored in the storage device in advance. When the CPU executes the application program, various function units such as the interface function unit 11, compiler function units (front-end compiler 13 and back-end compiler 14), and communication function unit 12 are realized.
また、上記ソースコード21、中間言語22、変更情報管理表23、回路位置表25、機械語オブジェクト24等は、上記記憶装置に記憶される。
同様に、PLC30も、特に図示しないCPU/MPU等の演算プロセッサやメモリ等を有しており、メモリには予め所定のアプリケーションプログラムが記憶されている。演算プロセッサが、このアプリケーションプログラムを実行することで、通信機能部31やプログラム実行管理機能部32等の各種機能部が実現される。また、上記機械語オブジェクト41は、上記メモリ等に記憶される。
The source code 21, intermediate language 22, change information management table 23, circuit location table 25, machine language object 24, and the like are stored in the storage device.
Similarly, the PLC 30 also includes an arithmetic processor such as a CPU / MPU (not shown), a memory, and the like, and a predetermined application program is stored in the memory in advance. Various functional units such as the communication functional unit 31 and the program execution management functional unit 32 are realized by the arithmetic processor executing this application program. The machine language object 41 is stored in the memory or the like.
ここで、開発支援装置(ローダ)10は、コンパイル対象のソースコード21が、既存の任意のソースコードの更新版(バージョンアップなど)であった場合には、ソースコード21全体をコンパイルするのではなく、その一部だけをコンパイルしてなる機械語オブジェクト24を生成する。この様な機械語オブジェクト24を機械語オブジェクト24(一部)と記すものとする。また、これに伴って変更情報管理表23を生成する。そして、通信機能部12によって、これら機械語オブジェクト24(一部)と変更情報管理表23とを、PLC30にダウンロードする。 Here, the development support apparatus (loader) 10 does not compile the entire source code 21 when the source code 21 to be compiled is an updated version (such as version upgrade) of any existing source code. Instead, a machine language object 24 is generated by compiling only a part thereof. Such a machine language object 24 is referred to as a machine language object 24 (part). In accordance with this, the change information management table 23 is generated. Then, the machine function object 24 (part) and the change information management table 23 are downloaded to the PLC 30 by the communication function unit 12.
これらダウンロードデータを受信したPLC30は、変更情報管理表23に基づいて、上記メモリ等に記憶されている既存の機械語オブジェクト41の一部を、機械語オブジェクト24(一部)と入れ替える操作を行う。更に、既存の機械語オブジェクト41の別の一部の格納位置を変更する。このようにすることで、機械語オブジェクト41の更新を実現する。これによって、更新版の機械語オブジェクトへの変換処理負荷を軽減すると共に、生成される上記機械語オブジェクト24(一部)のデータ容量は少なくて済む。 The PLC 30 that has received the download data performs an operation of replacing a part of the existing machine language object 41 stored in the memory or the like with the machine language object 24 (part) based on the change information management table 23. . Furthermore, the storage position of another part of the existing machine language object 41 is changed. In this way, the machine language object 41 is updated. This reduces the load of the conversion process to the updated machine language object and reduces the data capacity of the generated machine language object 24 (part).
以下、上記開発支援装置(ローダ)10、PLC(プログラマブルコントローラ)30の処理機能について、具体例も用いて、更に詳細に説明する。
まず、図2に、ソースコード21の具体例を示す。
Hereinafter, the processing functions of the development support apparatus (loader) 10 and the PLC (programmable controller) 30 will be described in more detail using specific examples.
First, FIG. 2 shows a specific example of the source code 21.
図2に示すように、PLC用のプログラムは、あるまとまった命令の組み合わせ(回路)を、1つの単位として記述される。つまり、回路単位で記述される。例えば、図2の場合、プログラム言語はラダー言語であり、ラダー言語の場合、左母線から開始し右母線で終了する命令の集合が、1つの回路となる。図2に示す例のプログラムは。3つの回路から成ることになる。 As shown in FIG. 2, the PLC program is described with a set of instructions (circuit) as a unit. That is, it is described in units of circuits. For example, in the case of FIG. 2, the programming language is a ladder language, and in the case of a ladder language, a set of instructions starting from the left bus and ending at the right bus is one circuit. The example program shown in FIG. It consists of three circuits.
また、各回路に対して、ユニークな識別番号(回路管理番号)が割当てられる。図2に示す例では、上記3つの回路に対してそれぞれ、回路管理番号‘0001’、‘0002’、‘0003’が割当てられている。これは、例えば、上記インターフェース機能部11のエディタ機能が、各回路に対して任意の回路管理番号を自動的に割当てて、該回路管理番号により各回路を管理するものであるが、この例に限らない。 A unique identification number (circuit management number) is assigned to each circuit. In the example shown in FIG. 2, circuit management numbers ‘0001’, ‘0002’, and ‘0003’ are assigned to the three circuits. In this example, for example, the editor function of the interface function unit 11 automatically assigns an arbitrary circuit management number to each circuit and manages each circuit by the circuit management number. Not exclusively.
図3には、図2のソースコード21をフロントエンドコンパイラ13でコンパイルした結果(中間言語22;中間コード)を示す。
図示のように、例えば図2の回路管理番号=‘0001’の回路は、以下の中間コードに変換される。
FIG. 3 shows a result (intermediate language 22; intermediate code) obtained by compiling the source code 21 of FIG. 2 with the front-end compiler 13.
As shown in the figure, for example, the circuit with the circuit management number = “0001” in FIG. 2 is converted into the following intermediate code.
LD C001
AND C002
ST C003
上記中間コードが、更に、上記バックエンドコンパイラ14によって機械語オブジェクト24に変換される。ここでは一例として上記「LD C001」が機械語オブジェクト24に変換された例を、図4に示す。
LD C001
AND C002
ST C003
The intermediate code is further converted into a machine language object 24 by the back-end compiler 14. Here, as an example, FIG. 4 shows an example in which “LD C001” is converted into the machine language object 24.
図4に示すように、例えば、図3の中間言語の「LD C001」は、4つの機械語命令に変換される。この例の場合、仮に機械語1命令が4バイトであるとしたならば、機械語オブジェクトのサイズは、4×4=16バイトとなる。尚、機械語オブジェクトとは、PLC上で動作する機械語命令の集合である。機械語命令は、PLCが直接解釈/実行できる最小単位である。 As shown in FIG. 4, for example, the intermediate language “LD C001” in FIG. 3 is converted into four machine language instructions. In this example, if one instruction in the machine language is 4 bytes, the size of the machine language object is 4 × 4 = 16 bytes. The machine language object is a set of machine language instructions that operate on the PLC. A machine language instruction is the smallest unit that can be directly interpreted / executed by a PLC.
フロントエンドコンパイラ13、バックエンドコンパイラ14は、上記変換処理に伴って、上記回路位置表25を生成する。フロントエンドコンパイラ13、バックエンドコンパイラ14の処理フローチャートを図5、図7に示すと共に、これに伴う回路位置表25の生成例を、図6、図8に示す。尚、図6と図8(a)は生成途中の状態であり、図8(b)が回路位置表25を生成完了した状態を示す。 The front-end compiler 13 and the back-end compiler 14 generate the circuit position table 25 along with the conversion process. 5 and 7 show processing flowcharts of the front-end compiler 13 and the back-end compiler 14, and FIGS. 6 and 8 show examples of generation of the circuit position table 25 associated therewith. 6 and 8A show a state in the middle of generation, and FIG. 8B shows a state where the generation of the circuit position table 25 has been completed.
図5は、フロントエンドコンパイラ13の処理フローチャート図である。この処理に伴う回路位置表25の生成の様子を、図6(a)〜(c)に示す。
フロントエンドコンパイラ13は、ソースコード21を回路単位でコンパイルし、これに伴って図6(a)〜(c)に示すように回路位置表25にデータを登録していく。
FIG. 5 is a processing flowchart of the front-end compiler 13. FIGS. 6A to 6C show how the circuit position table 25 is generated in accordance with this processing.
The front-end compiler 13 compiles the source code 21 on a circuit basis, and registers data in the circuit position table 25 as shown in FIGS. 6A to 6C.
図5の処理において、まず、処理開始時には回路位置表25は、例えば図6(a)に示すように、何もデータは登録されていない状態である。回路位置表25のフォーマットは、図示のように、大別して、回路管理番号51、中間言語情報52、機械語オブジェクト情報53の各データ項目より成る。更に、中間言語情報52は、開始命令位置52a、終了命令位置52bの各データ項目から成る。機械語オブジェクト情報53は、開始位置53a、サイズ53bの各データ項目から成る。 In the process of FIG. 5, first, at the start of the process, the circuit position table 25 is in a state where no data is registered, as shown in FIG. 6A, for example. As shown in the figure, the format of the circuit position table 25 is roughly composed of data items of a circuit management number 51, intermediate language information 52, and machine language object information 53. Further, the intermediate language information 52 includes data items of a start instruction position 52a and an end instruction position 52b. The machine language object information 53 includes data items of a start position 53a and a size 53b.
図5の処理では、まず、上記図6(a)に示す状態の回路位置表25に対して、処理対象位置の初期位置を設定する(ステップS11)。これは、例えば、ポインタを先頭レコードに設定する。更に、任意の変数である中間命令開始位置αに、初期値‘1’を設定する(ステップS12)。 In the process of FIG. 5, first, the initial position of the processing target position is set for the circuit position table 25 in the state shown in FIG. 6A (step S11). For example, the pointer is set to the first record. Further, an initial value “1” is set at an intermediate instruction start position α which is an arbitrary variable (step S12).
そして、変換処理対象のソースコード21(本例ではラダー回路)における処理対象の回路の回路管理番号を、獲得するが(ステップS13)、獲得できなかった場合には(ステップS14,NO)、本処理が完了したものと見做して(ステップS22)本処理を終了する。最初は、処理対象が図2における一番上の回路であるので、その回路管理番号(=0001)を、獲得することになり、以ってステップS14の判定はYESとなり、ステップS15へ移行することになる。 Then, the circuit management number of the processing target circuit in the source code 21 (the ladder circuit in this example) to be converted is acquired (step S13), but if it cannot be acquired (step S14, NO), Assuming that the process has been completed (step S22), the present process is terminated. Initially, since the processing target is the top circuit in FIG. 2, the circuit management number (= 0001) is acquired, so that the determination in step S14 is YES, and the process proceeds to step S15. It will be.
尚、処理対象の回路は、順次更新されていき、全ての回路を処理対象とした後は、上記ステップS14の判定がNOとなることになる。
ステップS15の処理では、上記ステップS13で獲得した回路管理番号に対応する回路(ラダー命令の塊)を、ソースコード21から取得して、これを中間コードに変換する。最初は回路管理番号=‘0001’の回路を変換するので、その結果として得られる中間コードは、既に述べたことから以下の通りとなる。
Note that the processing target circuit is sequentially updated, and after all the circuits are processed, the determination in step S14 is NO.
In the process of step S15, a circuit (a ladder instruction block) corresponding to the circuit management number acquired in step S13 is acquired from the source code 21 and converted into an intermediate code. Initially, since the circuit with the circuit management number = '0001' is converted, the intermediate code obtained as a result is as follows because it has already been described.
LD C001
AND C002
ST C003
尚、上記の通り、この変換処理自体は、既存機能であり、ここでは特に説明しない。
LD C001
AND C002
ST C003
As described above, the conversion process itself is an existing function, and is not particularly described here.
但し、もし、中間コードへの変換に失敗した場合には(ステップS16、NO)、コンパイルエラーを表示して本処理を終了する(ステップS23)。中間コードへの変換に成功したならば(ステップS16,YES)、ステップS17へ移行する。 However, if the conversion to the intermediate code fails (step S16, NO), a compile error is displayed and the process is terminated (step S23). If the conversion to the intermediate code is successful (step S16, YES), the process proceeds to step S17.
ステップS17では、上記変換によって得られた中間コードの命令数をカウントする。上記具体例では命令数=‘3’となる。
続いて、回路位置表25における中間言語情報52の開始命令位置52aの欄に、現在の中間命令開始位置αの値を設定する(ステップS18)。最初は上記の通り中間命令開始位置αは初期値(=1)となっているので、開始命令位置52aには‘1’が設定される。
In step S17, the number of instructions in the intermediate code obtained by the conversion is counted. In the above specific example, the number of instructions = '3'.
Subsequently, the current value of the intermediate instruction start position α is set in the column of the start instruction position 52a of the intermediate language information 52 in the circuit position table 25 (step S18). Initially, as described above, the intermediate instruction start position α has an initial value (= 1), so that “1” is set in the start instruction position 52a.
続いて、「中間命令開始位置α+命令数−1」を算出して、この算出値を中間言語情報52の終了命令位置52bの欄に設定する(ステップS19)。ここでは、上記の通り、α=1、命令数=3であるので、「1+3−1」=3が算出されて、これが終了命令位置52bの欄に設定されることになる。 Subsequently, “intermediate instruction start position α + number of instructions−1” is calculated, and this calculated value is set in the column of the end instruction position 52b of the intermediate language information 52 (step S19). Here, as described above, since α = 1 and the number of instructions = 3, “1 + 3-1” = 3 is calculated and set in the column of the end instruction position 52b.
最初の処理対象に関する以上の処理によって、回路位置表25の内容は図6(b)に示す状態になる。
そして、回路位置表25における処理対象位置を、現在の次の位置とする(ステップS20)。ここでは、現在は先頭レコードであったので、次は2番目のレコードが処理対象位置となる。更に、中間命令開始位置αの値を、以下の式により更新する(ステップS21)。
With the above processing relating to the first processing target, the contents of the circuit position table 25 are in the state shown in FIG.
Then, the processing target position in the circuit position table 25 is set as the current next position (step S20). Here, since the current record is the first record, the second record is the processing target position next. Further, the value of the intermediate instruction start position α is updated by the following formula (step S21).
α=α+命令数
ここでは、上記のように、α=1、命令数=3であるので、新たなαは‘4’となる。
ステップS21では、更に、ソースコード21において次の処理対象の回路の回路管理番号を、獲得する。そして、ステップS14に戻る。
α = α + number of instructions Here, as described above, since α = 1 and the number of instructions = 3, the new α is “4”.
In step S21, the circuit management number of the next processing target circuit is further acquired in the source code 21. Then, the process returns to step S14.
これより、今度は、回路管理番号=‘0002’の回路を処理対象として、上記ステップS14〜S19の処理によって、中間コードへの変換と、これに伴う回路位置表25の2番目のレコードの中間言語情報52の登録が、行われることになる。 As a result, this time, the circuit with the circuit management number = '0002' is processed, and by the processing of steps S14 to S19, conversion to the intermediate code and the middle of the second record in the circuit position table 25 associated therewith are performed. Registration of the language information 52 is performed.
更に、その後、今度は、回路管理番号=‘0003’の回路を処理対象として、上記ステップS14〜S19の処理によって、中間コードへの変換と、これに伴う回路位置表25の3番目のレコードの中間言語情報52の登録が、行われることになる。 Further, this time, the circuit with the circuit management number = '0003' is processed, and the process of steps S14 to S19 is performed to convert to the intermediate code, and the third record of the circuit position table 25 associated therewith is converted. Registration of the intermediate language information 52 is performed.
これによって、回路位置表25は、図6(c)に示す状態となる。
以上の処理により、フロントエンドコンパイラ13は、任意の処理対象のソースコード21を中間言語に変換して例えば図3に示す内容の中間言語22を生成すると共に、これに伴って回路位置表25を途中まで(図6(c))生成する。つまり、機械語オブジェクト情報53は未だ登録されておらず、以って、回路位置表25は未完成の状態となっている。そして、以下に説明する図7の処理によって、回路位置表25は完成することになる。
As a result, the circuit position table 25 is in the state shown in FIG.
Through the above processing, the front-end compiler 13 converts the source code 21 to be processed arbitrarily into an intermediate language to generate, for example, the intermediate language 22 having the contents shown in FIG. Halfway (FIG. 6C) is generated. That is, the machine language object information 53 has not been registered yet, and thus the circuit position table 25 is in an incomplete state. Then, the circuit position table 25 is completed by the processing of FIG. 7 described below.
図7は、バックエンドコンパイラ14の処理フローチャート図である。
図7の処理では、まず、上記図6(c)に示す状態の回路位置表25に対して、処理対象位置の初期位置を設定する(ステップS31)。これは、例えば、ポインタを先頭レコードに設定する。更に、任意の変数である機械語オブジェクト開始位置βに、初期値‘0’を設定する(ステップS32)。
FIG. 7 is a processing flowchart of the back-end compiler 14.
In the processing of FIG. 7, first, the initial position of the processing target position is set for the circuit position table 25 in the state shown in FIG. 6C (step S31). For example, the pointer is set to the first record. Furthermore, an initial value “0” is set to the machine language object start position β, which is an arbitrary variable (step S32).
そして、回路位置表25から、現在の処理対象位置(処理対象レコード)における中間言語情報52を獲得するが(ステップS33)、獲得できなかった場合には(ステップS33,NO)、本処理は完了したものと見做して(ステップS41)本処理を終了する。一方、現在の処理対象位置(処理対象レコード)における中間言語情報52(開始命令位置52a、終了命令位置52b)を獲得したら(ステップS33,YES)、ステップS34に移行する。 Then, the intermediate language information 52 at the current processing target position (processing target record) is acquired from the circuit position table 25 (step S33). If the intermediate language information 52 cannot be acquired (step S33, NO), this processing is completed. This process is terminated (step S41). On the other hand, when the intermediate language information 52 (start command position 52a, end command position 52b) at the current processing target position (processing target record) is acquired (step S33, YES), the process proceeds to step S34.
ステップS34では、上記フロントエンドコンパイラ13によって生成されている中間言語22から、上記ステップS33で獲得した中間言語情報52に基づいて該当する中間コード群を獲得して、これを機械語オブジェクトに変換する。最初は、開始命令位置52a=‘1’、終了命令位置52b=‘3’であるので、図3に示す中間言語22における1行目〜3行目の中間コードが、該当する中間コード群であり、これらが獲得されて機械語オブジェクトに変換されることになる。つまり、下記の中間コード群が、獲得されて、機械語オブジェクトに変換されることになる。 In step S34, a corresponding intermediate code group is acquired from the intermediate language 22 generated by the front-end compiler 13 based on the intermediate language information 52 acquired in step S33, and converted into a machine language object. . Initially, since the start instruction position 52a = '1' and the end instruction position 52b = '3', the intermediate codes in the first to third lines in the intermediate language 22 shown in FIG. Yes, these are acquired and converted into machine language objects. That is, the following intermediate code group is acquired and converted into a machine language object.
LD C001
AND C002
ST C003
機械語オブジェクトへの変換に失敗した場合には(ステップS35,NO)、コンパイルエラーを表示して(ステップS42)、本処理を終了する。
LD C001
AND C002
ST C003
If the conversion to the machine language object has failed (step S35, NO), a compile error is displayed (step S42), and this process is terminated.
機械語オブジェクトへの変換に成功した場合には(ステップS35,YES)、まず、変換結果としての機械語オブジェクトのサイズを算出する(ステップS36)。ここでは、仮に、中間言語のLD命令が16バイトの機械語オブジェクトに変換され、AND命令が16バイトの機械語オブジェクトに変換され、ST命令が24バイトの機械語オブジェクトに変換されるものとする。この場合、上記具体例では、機械語オブジェクトのサイズ=16+16+24=56となる。 When the conversion into the machine language object is successful (step S35, YES), first, the size of the machine language object as the conversion result is calculated (step S36). Here, it is assumed that the LD instruction in the intermediate language is converted into a 16-byte machine language object, the AND instruction is converted into a 16-byte machine language object, and the ST instruction is converted into a 24-byte machine language object. . In this case, in the above specific example, the size of the machine language object = 16 + 16 + 24 = 56.
続いて、回路位置表25における現在の処理対象位置(処理対象レコード)の開始位置53aの欄に、現在の機械語オブジェクト開始位置βの値を設定する(ステップS37)。ここでは、β=初期値‘0’であるので、開始位置53aの欄には‘0’が設定されることになる。更に、回路位置表25における現在の処理対象位置(処理対象レコード)のサイズ53bの欄に、上記ステップS36の処理で得られたサイズを設定する(ステップS38)。ここでは、上記‘56’が、サイズ53bの欄に設定されることになる。 Subsequently, the value of the current machine language object start position β is set in the field of the start position 53a of the current process target position (process target record) in the circuit position table 25 (step S37). Here, since β = initial value “0”, “0” is set in the column of the start position 53a. Further, the size obtained by the process of step S36 is set in the column of the size 53b of the current process target position (process target record) in the circuit position table 25 (step S38). Here, “56” is set in the size 53b column.
以上で、最初の処理対象に係わる処理が完了することになり、回路位置表25は、図8(a)に示す状態となる。
続いて、回路位置表25における処理対象位置を、現在の次の位置とする(ステップS39)。ここでは、現在は先頭レコードであったので、次は2番目のレコードが処理対象位置となる。更に、機械語オブジェクト開始位置βの値を、以下の式により更新する(ステップS40)。
Thus, the processing related to the first processing target is completed, and the circuit position table 25 is in the state shown in FIG.
Subsequently, the processing target position in the circuit position table 25 is set as the current next position (step S39). Here, since the current record is the first record, the second record is the processing target position next. Further, the value of the machine language object start position β is updated by the following formula (step S40).
β=β+サイズ
ここでは、上記のように、β=0、サイズ=56であるので、新たなβの値は‘56’となる。
β = β + Size Here, as described above, since β = 0 and size = 56, the new value of β is “56”.
そして、ステップS33に戻る。
これより、今度は、回路位置表25の2番目のレコードの中間言語情報52(開始命令位置52a、終了命令位置52b)を用いて、ステップS33〜S38の処理によって、該当する中間コードを機械語オブジェクトに変換すると共に、これに伴う回路位置表25の2番目のレコードの機械語オブジェクト情報53の登録が、行われることになる。
Then, the process returns to step S33.
Thus, this time, the intermediate language information 52 (start instruction position 52a, end instruction position 52b) of the second record in the circuit position table 25 is used, and the corresponding intermediate code is converted into the machine language by the processing of steps S33 to S38. At the same time, the machine language object information 53 of the second record in the circuit position table 25 is registered.
更に、その後、今度は、回路位置表25の3番目のレコードの中間言語情報52(開始命令位置52a、終了命令位置52b)を用いて、ステップS33〜S38の処理によって、該当する中間コードを機械語オブジェクトに変換すると共に、これに伴う回路位置表25の3番目のレコードの機械語オブジェクト情報53の登録が、行われることになる。 Further, this time, the intermediate language information 52 (start instruction position 52a, end instruction position 52b) of the third record in the circuit position table 25 is used, and the corresponding intermediate code is converted into a machine by the processing in steps S33 to S38. In addition to the conversion to the word object, the machine language object information 53 of the third record of the circuit position table 25 is registered.
これによって、回路位置表25は、図8(b)に示す状態となる。つまり、回路位置表25が完成したことになる。
以上で、新規作成されたソースコード21に係わるコンパイル処理が完了して、機械語オブジェクト24と回路位置表25が生成されることになる。そして、生成された機械語オブジェクト24は、PLC30にダウンロードされることになる。尚、このときには変更情報管理表23は生成されない。後に、上記ソースコード21が更新(バージョンアップ等)されたときに、そのコンパイル処理に伴って変更情報管理表23が生成されて、PLC30にダウンロードされることになる。
As a result, the circuit position table 25 is in the state shown in FIG. That is, the circuit position table 25 is completed.
Thus, the compiling process relating to the newly created source code 21 is completed, and the machine language object 24 and the circuit location table 25 are generated. Then, the generated machine language object 24 is downloaded to the PLC 30. At this time, the change information management table 23 is not generated. Later, when the source code 21 is updated (version upgrade or the like), the change information management table 23 is generated along with the compilation process and downloaded to the PLC 30.
また、図9には、上記具体例について上述した処理により生成された中間言語22と機械語オブジェクト24の具体例を示すと共に、これら相互の関係を示す。
また、図9には、機械語オブジェクト24のPLC30側でのメモリ格納例を示す。すなわち、回路管理番号=‘0001’の回路単位に応じた機械語オブジェクトは、図示のアドレス‘0’〜‘55’の領域に格納される。回路管理番号=‘0002’の回路単位に応じた機械語オブジェクトは、図示のアドレス‘56’〜‘151’の領域に格納される。回路管理番号=‘0003’の回路単位に応じた機械語オブジェクトは、図示のアドレス‘152’〜‘304’の領域に格納される。
FIG. 9 shows a specific example of the intermediate language 22 and the machine language object 24 generated by the processing described above for the above specific example, and also shows the relationship between them.
FIG. 9 shows an example of memory storage of the machine language object 24 on the PLC 30 side. That is, the machine language object corresponding to the circuit unit of the circuit management number = “0001” is stored in the area of the addresses “0” to “55” illustrated. The machine language object corresponding to the circuit unit of the circuit management number = “0002” is stored in the areas of the addresses “56” to “151” shown in the figure. The machine language object corresponding to the circuit unit of the circuit management number = “0003” is stored in the areas of the addresses “152” to “304” shown in the figure.
尚、上記‘0’、‘55’、‘56’、‘151’等の各アドレスは、例えばPLC30のメモリにおける機械語オブジェクト格納領域の先頭からの相対アドレスであると見做しても構わない。なお、機械語オブジェクト格納領域は、予め決められている。 The addresses such as “0”, “55”, “56”, and “151” may be regarded as relative addresses from the beginning of the machine language object storage area in the memory of the PLC 30, for example. . The machine language object storage area is determined in advance.
その後、任意のときに、上記ソースコード21が変更(バージョンアップ等)されたものとする。尚、開発支援装置10のインターフェース機能部11の機能の1つである、ソースコード21を編集するエディタ機能によって、ユーザはソースコード21を編集する。エディタ機能によるソースコードの編集支援は、一般的な技術であり、ここでは特に説明しない。 Thereafter, it is assumed that the source code 21 is changed (upgraded or the like) at any time. Note that the user edits the source code 21 by an editor function for editing the source code 21, which is one of the functions of the interface function unit 11 of the development support apparatus 10. Support for editing source code by the editor function is a common technique, and is not particularly described here.
図10に、変更後のソースコード21の具体例を示す。
この例では、図2に示すソースコード21における管理番号=‘0002’の回路に対して、図示の接点(C014)が追加されるという修正が行われている。
FIG. 10 shows a specific example of the source code 21 after the change.
In this example, a modification is made in which the illustrated contact (C014) is added to the circuit of management number = '0002' in the source code 21 shown in FIG.
尚、図10は、変更後のソースコード21の表示例であり、管理番号‘0002’の表示位置に*が追加表示されている。これは、管理番号=‘0002’の回路に対して、修正が行われたことを示すものである。尚、開発支援装置10は、既存機能(エディタ機能)によって、どの回路に対して修正が行われたのかを認識することができる。これによって、上記*の表示も行えるものである。 FIG. 10 is a display example of the source code 21 after the change, and * is additionally displayed at the display position of the management number “0002”. This indicates that correction has been made to the circuit with the management number = “0002”. The development support apparatus 10 can recognize which circuit has been modified by the existing function (editor function). Thereby, the above * can also be displayed.
図11、図12に、処理対象のソースコード21が、更新版(バージョンアップ版など)である場合のコンパイル処理のフローチャート図を示す。尚、図11、図12は、1つの処理フローチャートを2つの図面に分けて示しているものである。よって、特に区別せずに図11等と記す場合もあるものとする。また、ここでは、フロントエンドコンパイラ13の処理と、バックエンドコンパイラ14の処理とを、特に区別せずに示すが、一例としては、ステップS57までの処理がフロントエンドコンパイラ13の処理であり、ステップS59以降の処理がバックエンドコンパイラ14の処理と見做しても構わない。 FIG. 11 and FIG. 12 are flowcharts of the compile processing when the source code 21 to be processed is an updated version (such as an upgraded version). 11 and 12 show one processing flowchart divided into two drawings. Therefore, it may be described as FIG. Here, the processing of the front-end compiler 13 and the processing of the back-end compiler 14 are shown without distinction, but as an example, the processing up to step S57 is the processing of the front-end compiler 13, and the step The processing after S59 may be regarded as the processing of the back-end compiler 14.
また、上記の通り、処理対象のソースコード21が修正ありか否かを認識できるので、何等かの修正がある場合には図11等の処理を行い、修正が無い場合には新規であると見做して上記図5、図7の処理を行う。 Further, as described above, since it is possible to recognize whether or not the source code 21 to be processed is corrected, the processing shown in FIG. 11 is performed when there is any correction, and it is new when there is no correction. As a matter of course, the processes shown in FIGS. 5 and 7 are performed.
図11等の処理では、まず、上記図8(b)に示す状態の回路位置表25に対して、処理対象位置の初期位置を設定する(ステップS51)。これは、例えば、ポインタを先頭レコードに設定する。更に、上記エディタ機能から、修正があった回路の回路管理番号(修正回路管理番号と呼ぶものとする)を獲得する(ステップS52)。 In the processing of FIG. 11 and the like, first, the initial position of the processing target position is set for the circuit position table 25 in the state shown in FIG. 8B (step S51). For example, the pointer is set to the first record. Further, a circuit management number (referred to as a corrected circuit management number) of the circuit that has been corrected is acquired from the editor function (step S52).
ここで、エディタ機能は、例えば、任意のソースコード21の編集作業が開始される際に、編集前の状態のソースコード21を別記憶領域に退避させておく。そして、編集された(修正された)ソースコード21を、退避されたソースコード21と照合して、不一致を検出する。例えば、回路単位で照合して、一致/不一致を判定する。これによって、不一致と判定された回路の回路管理番号を記憶しておく。上記ステップS52では、例えば、当該記憶されている回路管理番号を取得する。 Here, the editor function, for example, saves the source code 21 in an unedited state in another storage area when editing of the arbitrary source code 21 is started. Then, the edited (corrected) source code 21 is checked against the saved source code 21 to detect a mismatch. For example, matching / non-coincidence is determined by matching on a circuit basis. Thus, the circuit management number of the circuit determined to be inconsistent is stored. In step S52, for example, the stored circuit management number is acquired.
続いて、まず、上記処理対象位置(ポインタ位置)を、上記修正があった回路の回路管理番号に対応するレコードの位置まで移動させる為の処理として、図示のステップS53,S54,S55の処理を実行する。すなわち、現在の処理対象位置(ポインタ位置)における回路管理番号51を獲得して(ステップS53,YES)、これが上記修正回路管理番号と同じであるか否かを判定する(ステップS54)。両者が同一ではない場合には(ステップS54,NO)、上記ポインタ位置を次のレコードに移動させて(ステップS55)、ステップS53に戻る。この処理を、ステップS54の判定がYESとなるまで繰り返す。尚、次のレコードが無く、以って回路管理番号51を獲得出来なかった場合には(ステップS53,NO)、本処理を終了する(ステップS71)。 Subsequently, as processing for moving the processing target position (pointer position) to the position of the record corresponding to the circuit management number of the circuit that has been corrected, the processing of steps S53, S54, and S55 shown in the figure is performed. Run. That is, the circuit management number 51 at the current processing target position (pointer position) is acquired (step S53, YES), and it is determined whether or not this is the same as the correction circuit management number (step S54). If they are not the same (step S54, NO), the pointer position is moved to the next record (step S55), and the process returns to step S53. This process is repeated until the determination in step S54 becomes YES. If there is no next record and the circuit management number 51 cannot be acquired (step S53, NO), the process is terminated (step S71).
ステップS54の判定がYESとなったら、修正回路管理番号の回路(修正があった回路)のみを、中間言語に変換する(ステップS56)。何等かのエラーにより中間言語に変換できなかった場合には(ステップS57,NO)、コンパイルエラーを表示して(ステップS58)、本処理を終了する。 If the determination in step S54 is YES, only the circuit with the corrected circuit management number (the circuit that has been corrected) is converted into an intermediate language (step S56). If conversion to the intermediate language is not possible due to some error (step S57, NO), a compile error is displayed (step S58), and this process is terminated.
中間言語に変換できた場合には(ステップS57,YES)、この中間言語(中間コード)の命令数をカウントする(ステップS59)。上記図10の例の場合、修正があった回路管理番号=‘2’の回路が変換されるので、変換結果としての中間言語は例えば図13(a)において右側に示すものとなる。尚、図13(a)の左側には、比較の為に、修正前の回路管理番号=‘2’の回路の変換結果を示している。 If it can be converted into the intermediate language (step S57, YES), the number of instructions in the intermediate language (intermediate code) is counted (step S59). In the case of the example in FIG. 10, the circuit with the modified circuit management number = '2' is converted, so the intermediate language as the conversion result is, for example, as shown on the right side in FIG. The left side of FIG. 13A shows the conversion result of the circuit with the circuit management number before correction = “2” for comparison.
図13(a)の右側に示すように、変換結果の中間コードの命令数は6個であるので、ステップS59では命令数‘6’が得られることになる。
そして、現在の処理対象位置(ポインタ位置)のレコードの開始命令位置52aと終了命令位置52bとから、修正前の回路に応じた中間コードの命令数を、以下の式により算出する(ステップS60)。
As shown on the right side of FIG. 13A, since the number of instructions in the intermediate code of the conversion result is 6, the number of instructions “6” is obtained in step S59.
Then, from the start instruction position 52a and end instruction position 52b of the record at the current processing target position (pointer position), the number of instructions in the intermediate code corresponding to the circuit before correction is calculated by the following equation (step S60). .
命令数=終了命令位置52b−開始命令位置52a+1
図8(b)の例の場合、ポインタ位置は2番目のレコードになるので、命令数=8−4+1=5となる。
Number of instructions = end instruction position 52b−start instruction position 52a + 1
In the case of the example in FIG. 8B, the pointer position is the second record, so that the number of instructions = 8−4 + 1 = 5.
そして、上記ステップS56で得られた中間コードを、機械語オブジェクトに変換する(ステップS61)。但し、何等かのエラーにより変換できなかった場合には(ステップS61,NO)、コンパイルエラーを表示して(ステップS62)本処理を終了する。 Then, the intermediate code obtained in step S56 is converted into a machine language object (step S61). However, if conversion is not possible due to some error (step S61, NO), a compile error is displayed (step S62) and the process is terminated.
機械語オブジェクトに変換出来た場合には(ステップS61,YES)、まず、この機械語オブジェクトのサイズを算出する(ステップS63)。算出方法はステップS36と同様であり、図13(a)の右側に示す例の場合にはサイズ=112となる。そして、このサイズ算出値(‘112’)と、現在の処理対象位置(ポインタ位置)のレコードのサイズ53bとに基づいて、機械語オブジェクトに係わる変更前後のサイズの差分を、下記のように算出する(ステップS64)。 When the machine language object can be converted (step S61, YES), first, the size of the machine language object is calculated (step S63). The calculation method is the same as in step S36, and in the example shown on the right side of FIG. Based on this size calculation value ('112') and the size 53b of the record at the current processing target position (pointer position), the difference in size before and after the change related to the machine language object is calculated as follows. (Step S64).
機械語サイズ差分=サイズ算出値−サイズ53b
上記具体例の場合、サイズ算出値=112、サイズ53b=96であるので、
機械語サイズ差分=112−96=16
となる。尚、算出した機械語サイズ差分は、保持しておき、後述するステップS70の処理で使用する。
Machine language size difference = size calculation value−size 53b
In the case of the above specific example, since the size calculation value = 112 and the size 53b = 96,
Machine language size difference = 112−96 = 16
It becomes. The calculated machine language size difference is retained and used in the process of step S70 described later.
そして、変更情報管理表23にデータを登録すると共に、回路位置表25の変更を行う(ステップS65)。
図14に、上記具体例に応じた変更情報管理表23の具体例を示す。
Then, the data is registered in the change information management table 23, and the circuit position table 25 is changed (step S65).
FIG. 14 shows a specific example of the change information management table 23 corresponding to the above specific example.
まず、変更情報管理表23は、回路管理番号61、変更前62の開始位置62aとサイズ62b、変更後63のサイズ63aの各データ項目から成る。
ステップS65の処理では、上記ステップS52で獲得した上記修正回路管理番号を回路管理番号61の欄に設定し、上記ステップS64で獲得した上記ポインタ位置のサイズ53bを変更前62のサイズ62bの欄に設定し、上記ステップS63で算出したサイズを上記変更後63のサイズ63aの欄に設定する。更に、ポインタ位置のレコードの開始位置53aを取得して、これを上記変更前62の開始位置62aの欄に設定する。
First, the change information management table 23 includes data items of a circuit management number 61, a start position 62a and size 62b before change 62, and a size 63a after change 63.
In step S65, the modified circuit management number acquired in step S52 is set in the circuit management number 61 field, and the size 53b of the pointer position acquired in step S64 is stored in the size 62b field of 62 before change. The size calculated in step S63 is set in the size 63a column of the changed 63. Furthermore, the start position 53a of the record at the pointer position is acquired, and this is set in the column of the start position 62a before the change 62.
上記処理によって、変更情報管理表23は、図14に示すデータが格納された状態となる。
更に、回路位置表25において、現在のポインタ位置(本例では2番目のレコード)におけるサイズ53bを、上記変更後63のサイズ63aの値(112)に変更する。更に、上記ステップS59,S60で得た修正前後の中間言語の命令数から「命令数の差分=修正後の命令数−修正前の命令数」を求めて、この“命令数の差分”を現在のポインタ位置における終了命令位置52bの値に加算することで、終了命令位置52bの値を更新する。具体例では、命令数の差分=6−5=1となり、終了命令位置52bの値は8であるので、終了命令位置52bの値は‘9’(=8+1)に更新される。
By the above process, the change information management table 23 is in a state where the data shown in FIG. 14 is stored.
Further, in the circuit position table 25, the size 53b at the current pointer position (second record in this example) is changed to the value 63 of the 63 size 63a after the change. Further, “difference in the number of instructions = number of instructions after modification−number of instructions before modification” is obtained from the number of instructions in the intermediate language before and after the correction obtained in steps S59 and S60, and this “difference in the number of instructions” is currently The value of the end instruction position 52b is updated by adding to the value of the end instruction position 52b at the pointer position. In the specific example, since the difference in the number of instructions = 6-5 = 1 and the value of the end instruction position 52b is 8, the value of the end instruction position 52b is updated to “9” (= 8 + 1).
その後、ステップS66〜S70の処理を実行することで、回路位置表25における他の箇所の変更も行って、以って回路位置表25の変更が完了することになり(ステップS72)、本処理を終了する。 After that, by executing the processing of steps S66 to S70, other locations in the circuit location table 25 are also changed, thereby completing the change of the circuit location table 25 (step S72). Exit.
まず、処理対象位置(ポインタ位置)を、現在位置の次の位置へと移動させる(ステップS66)。本例では、このときのポインタ位置が2番目のレコードであるので、3番目のレコードに移動させることになる。 First, the processing target position (pointer position) is moved to the position next to the current position (step S66). In this example, since the pointer position at this time is the second record, it is moved to the third record.
そして、まず、現在のポインタ位置のレコードの回路管理番号51を獲得する(ステップS67)。但し、ポインタ位置のレコードのデータが無く、以って回路管理番号51を獲得できない場合には(ステップS67,NO)、本処理は完了したものと見做して(ステップS72)処理終了する。 First, the circuit management number 51 of the record at the current pointer position is acquired (step S67). However, if there is no record data at the pointer position and the circuit management number 51 cannot be obtained (NO in step S67), this process is regarded as completed (step S72) and the process ends.
回路管理番号51を獲得出来た場合には(ステップS67,YES)、まず、上記“命令数の差分”を現在のポインタ位置における開始命令位置52aの値に加算することで、開始命令位置52aの値を更新する(ステップS68)。上記のように具体例では“命令数の差分”=1であり、開始命令位置52aの値は9であるので、開始命令位置52aの値は‘10’(=9+1)に更新される。 When the circuit management number 51 can be acquired (step S67, YES), first, the “difference in the number of instructions” is added to the value of the start instruction position 52a at the current pointer position, so that the start instruction position 52a is obtained. The value is updated (step S68). As described above, in the specific example, “difference in the number of instructions” = 1 and the value of the start instruction position 52a is 9, so the value of the start instruction position 52a is updated to “10” (= 9 + 1).
続いて、上記“命令数の差分”を現在のポインタ位置における終了命令位置52bの値に加算することで、終了命令位置52bの値を更新する(ステップS69)。上記のように具体例では“命令数の差分”=1であり、終了命令位置52bの値は16であるので、終了命令位置52bの値は‘17’(=16+1)に更新される。 Subsequently, the value of the end instruction position 52b is updated by adding the “difference in the number of instructions” to the value of the end instruction position 52b at the current pointer position (step S69). As described above, in the specific example, “difference in the number of instructions” = 1 and the value of the end instruction position 52b is 16, so the value of the end instruction position 52b is updated to ‘17’ (= 16 + 1).
更に、上記ステップS64で求めた機械語サイズ差分を、現在のポインタ位置における開始位置53aの値に加算することで、開始位置53aの値を更新する(ステップS70)。上記具体例では機械語サイズ差分=16であり、開始位置53aの値は152であるので、152+16=168が、開始位置53aに設定されることになる。 Further, the value of the start position 53a is updated by adding the machine language size difference obtained in step S64 to the value of the start position 53a at the current pointer position (step S70). In the above specific example, since the machine language size difference = 16 and the value of the start position 53a is 152, 152 + 16 = 168 is set as the start position 53a.
そして、ステップS66に戻り、処理対象を次のレコードとするが、上記具体例では4番目のレコードはないので、ステップS67がNOとなり、処理終了となる。このとき、回路位置表25は、図13(b)に示す状態となっている。これは、回路位置表25の更新が完了したものと言える。 Then, the process returns to step S66, and the processing target is the next record. However, since there is no fourth record in the above specific example, step S67 is NO, and the process ends. At this time, the circuit position table 25 is in the state shown in FIG. It can be said that the update of the circuit position table 25 is completed.
以上で、更新版(バージョンアップ版など)に係わるコンパイル処理が完了することになり、コンパイル結果をPLC30にダウンロードするが、この場合にダウンロードするのは、上記生成された変更情報管理表23と、ステップS61で得られた機械語オブジェクトである。上記具体例では、ステップS61で得られる機械語オブジェクト、すなわち修正があった回路の機械語オブジェクトは、回路管理番号=‘2’の回路に係わる機械語オブジェクトであり、また、変更情報管理表23は図14に示す内容のものとなる。 Thus, the compilation process related to the updated version (version-up version or the like) is completed, and the compile result is downloaded to the PLC 30. In this case, the download is the change information management table 23 generated above, The machine language object obtained in step S61. In the above specific example, the machine language object obtained in step S61, that is, the machine language object of the circuit that has been corrected, is a machine language object related to the circuit of circuit management number = '2', and the change information management table 23 Is the content shown in FIG.
上記ダウンロード情報を受信したPLC30側の処理については、上記具体例を用いて、図15、図16、図17に示す。
PLC30側では、既存の機械語オブジェクト41が、例えば図15の左側に示すように、メモリ上の所定の記憶領域に記憶された状態である。そして、上記ダウンロード情報を不図示の一時記憶領域に一時的に記憶するものとする。また、本手法では、プログラム更新の為に、メモリ上に上記所定の記憶領域とは別の記憶領域を用意している。
The processing on the PLC 30 side that has received the download information is shown in FIGS. 15, 16, and 17 using the above specific example.
On the PLC 30 side, the existing machine language object 41 is stored in a predetermined storage area on the memory, for example, as shown on the left side of FIG. The download information is temporarily stored in a temporary storage area (not shown). In this method, a storage area different from the predetermined storage area is prepared on the memory for program update.
そして、上記ダウンロードされた変更情報管理表23を参照して、まず、既存の機械語オブジェクト41のうち、先頭から修正があった回路の機械語オブジェクトの直前までの部分を、上記別の記憶領域にコピーする。これは、変更情報管理表23の開始位置62aに基づいて、上記所定の記憶領域の先頭からアドレス“開始位置62a−1”までの領域の機械語オブジェクトを、上記別の記憶領域にコピーする。図示の例では、上記所定の記憶領域における先頭‘0’からアドレス‘55’までの領域に記憶されているプログラム、すなわち回路管理番号001の機械語オブジェクトのみが、上記別の記憶領域にコピーされることになる。 Then, referring to the downloaded change information management table 23, first, the portion of the existing machine language object 41 from the beginning to the immediately preceding machine language object of the circuit that has been corrected is stored in the separate storage area. To copy. This is based on the start position 62a of the change information management table 23, and copies the machine language object in the area from the top of the predetermined storage area to the address “start position 62a-1” to the other storage area. In the illustrated example, only the program stored in the area from the head “0” to the address “55” in the predetermined storage area, that is, the machine language object having the circuit management number 001 is copied to the other storage area. Will be.
続いて、図16に示すように、上記ダウンロードされた機械語オブジェクト(更新版の機械語オブジェクト)を、上記別の記憶領域において上記コピーした機械語オブジェクトの直後に、格納する。具体例では、上記回路管理番号001の機械語オブジェクトの直後に連結(マージ)する形で、上記ダウンロードされた回路管理番号002の更新版の機械語オブジェクトを、上記別の記憶領域に記憶する。これは、例えば、別の記憶領域における開始位置62a(本例では‘56’)のアドレス位置から、当該更新版の機械語オブジェクトを記憶させるものである。 Subsequently, as shown in FIG. 16, the downloaded machine language object (updated machine language object) is stored immediately after the copied machine language object in the other storage area. In a specific example, the updated machine language object with the downloaded circuit management number 002 is stored in the separate storage area in a form that is linked (merged) immediately after the machine language object with the circuit management number 001. For example, the machine language object of the updated version is stored from the address position of the start position 62a (in this example, “56”) in another storage area.
最後に、既存の機械語オブジェクト41の残りを、別の記憶領域にコピーするが、但し、更新があった回路の機械語オブジェクトはコピーしない。具体例では、回路管理番号002の既存の機械語オブジェクトは、コピーしないようにする必要がある。その為に、変更情報管理表23の開始位置62aとサイズ62bを用いて、上記所定の記憶領域における「開始位置62a+サイズ62b」のアドレス位置から最後までを、上記別の記憶領域にコピーする。この場合も、既に記憶されている回路管理番号002の更新版の機械語オブジェクトの直後に、連結(マージ)するようにして、格納する。これは、例えば、別の記憶領域における「開始位置62a+サイズ63a」(本例では‘56’+‘112’=‘168’)のアドレス位置から、上記既存の機械語オブジェクト41の残りを記憶させるものである。 Finally, the rest of the existing machine language object 41 is copied to another storage area, except that the machine language object of the circuit that has been updated is not copied. In a specific example, it is necessary not to copy the existing machine language object having the circuit management number 002. For this purpose, the start position 62a and the size 62b of the change information management table 23 are used to copy from the address position of “start position 62a + size 62b” to the end in the predetermined storage area to the other storage area. Also in this case, immediately after the updated machine language object having the circuit management number 002 stored, it is concatenated (merged) and stored. For example, the remaining machine language object 41 is stored from the address position of “start position 62a + size 63a” (in this example, “56” + “112” = “168”) in another storage area. Is.
以上の処理によって、PLC30側における機械語オブジェクト41の更新処理が完了することになる。尚、その後、上記所定の記憶領域における機械語オブジェクトを消去して、上記別の記憶領域に作成された機械語オブジェクト全体を、上記所定の記憶領域にコピーするようにしてもよい。これが更新版の上記機械語オブジェクト41となり、プログラム実行管理機能部32はこの更新版の上記機械語オブジェクト41を実行して制御を行うことになる。 With the above processing, the update processing of the machine language object 41 on the PLC 30 side is completed. Thereafter, the machine language object in the predetermined storage area may be erased, and the entire machine language object created in the other storage area may be copied to the predetermined storage area. This becomes an updated version of the machine language object 41, and the program execution management function unit 32 executes the updated version of the machine language object 41 to perform control.
尚、図示の56、152、168等の数値は、各記憶領域における先頭からの相対アドレスを意味する。また、ここでは、アドレスは1バイト単位であるものとする。
尚、上記説明は一例であり、この例に限らない。例えば、変更情報管理表23を生成することなく、回路位置表25をPLC30に送信するようにしてもよい。これは、例えば、回路位置表25を更新する毎に、そのときの更新前の回路位置表25と更新後の回路位置表25とを、PLC30に送信する。勿論、この方法を用いる場合には、回路位置表25を更新する際に、更新前の回路位置表25を退避領域等に一時的に保存しておく必要がある。上記一例の場合、図8(b)に示す回路位置表25、図13(b)に示す回路位置表25が、PLC30に送信されることになる。PLC30側では、前回受信した回路位置表25と今回受信した回路位置表25とを比較することで、変更点を検出することができ、これは上記変更情報管理表23と同様の情報である。
The numerical values such as 56, 152, and 168 shown in the figure mean relative addresses from the top in each storage area. Here, it is assumed that the address is in units of 1 byte.
The above description is an example, and the present invention is not limited to this example. For example, the circuit location table 25 may be transmitted to the PLC 30 without generating the change information management table 23. For example, every time the circuit position table 25 is updated, the circuit position table 25 before the update and the circuit position table 25 after the update are transmitted to the PLC 30. Of course, when this method is used, when the circuit position table 25 is updated, it is necessary to temporarily store the circuit position table 25 before update in a save area or the like. In the case of the above example, the circuit position table 25 shown in FIG. 8B and the circuit position table 25 shown in FIG. 13B are transmitted to the PLC 30. On the PLC 30 side, the change point can be detected by comparing the circuit position table 25 received last time with the circuit position table 25 received this time, which is the same information as the change information management table 23.
尚、上記記変更情報管理表23や回路位置表25を、まとめて修正情報と呼ぶものとする。
尚、上記図15〜図17等のようなPLC30側の処理は、上記プログラム実行管理機能部32が実行してもよいし、不図示の他の処理機能部(例えば、プログラム更新部等と呼ぶ)が実行するものであっても構わない。
Note that the change information management table 23 and the circuit position table 25 are collectively referred to as correction information.
The processing on the PLC 30 side as shown in FIGS. 15 to 17 and the like may be executed by the program execution management function unit 32, or other processing function unit (not shown) (for example, a program update unit or the like). ) May be executed.
また、尚、ソースコードを一旦中間コードに変換してから機械語オブジェクトに変換することは、一例であり、本手法の対象は必ずしもこの例に限らない。
上記のように、ソースコードの変更/更新作業では、局部的な変更が大部分であるが、従来では更新版のソースコード全部をコンパイルして機械語オブジェクトを生成していた、この機械語オブジェクトの大部分は、変更前と変更後で同じであるにも係わらず、上記生成とPLCへの転送を行っていた。この為、コンパイル処理負荷が掛かり、またデータ転送量も多かった。
In addition, it is only an example that the source code is once converted into an intermediate code and then converted into a machine language object, and the target of the present technique is not necessarily limited to this example.
As described above, source code changes / updates work mostly with local changes, but this machine language object has conventionally generated a machine language object by compiling the entire source code of the updated version. Most of the above were generated and transferred to the PLC even though they were the same before and after the change. For this reason, a compile processing load is applied, and a data transfer amount is large.
これに対して、上述した本手法では、回路単位での変更箇所だけの置き換えが可能になり、ソースコード変更に関連するユーザの作業時間の短縮化や処理負荷軽減を実現でき、ユーザのソフトウエア開発効率が向上する効果がある。 On the other hand, with this method described above, it is possible to replace only the changed part in the circuit unit, so that the user's work time and processing load related to the source code change can be reduced, and the user's software can be reduced. This has the effect of improving development efficiency.
ユーザが任意に作成するソースコードを開発支援装置のエディタ機能が回路単位で管理し、当該エディタ機能がユーザの変更した回路を記録する。そして、コンパイラ機能部が、上記変更した回路のみをコンパイルして機械語オブジェクトを生成し、更に上記変更情報管理表を生成して、当該生成した機械語オブジェクトと変更情報管理表をPLCにダウンロードする。PLCは、変更情報管理表等を用いて、受信した機械語オブジェクトを既存の機械語オブジェクトにマージすることにより、プログラムを更新する。 The editor function of the development support apparatus manages source code arbitrarily created by the user for each circuit, and the editor function records the circuit changed by the user. Then, the compiler function unit compiles only the changed circuit to generate a machine language object, further generates the change information management table, and downloads the generated machine language object and the change information management table to the PLC. . The PLC updates the program by merging the received machine language object with the existing machine language object using a change information management table or the like.
10 開発支援装置(ローダ)
11 インターフェース機能部
12 通信機能部
13 フロントエンドコンパイラ
14 バックエンドコンパイラ
21 ソースコード
22 中間言語
23 変更情報管理表
24 機械語オブジェクト
25 回路位置表
30 PLC
31 通信機能部
32 プログラム実行管理機能部
41 機械語オブジェクト
51 回路管理番号
52 中間言語情報
52a 開始命令位置
52b 終了命令位置
53 機械語オブジェクト情報
53開a 位置
53b サイズ
61 回路管理番号
62 変更前
62a 開始位置
62b サイズ
63 変更後
63a サイズ
10 Development support device (loader)
DESCRIPTION OF SYMBOLS 11 Interface function part 12 Communication function part 13 Front end compiler 14 Back end compiler 21 Source code 22 Intermediate language 23 Change information management table 24 Machine language object 25 Circuit location table 30 PLC
31 Communication function section 32 Program execution management function section 41 Machine language object 51 Circuit management number 52 Intermediate language information 52a Start instruction position 52b End instruction position 53 Machine language object information 53 Open a position 53b Size 61 Circuit management number 62 Before change 62a Start Position 62b Size 63 After change 63a Size
Claims (7)
前記開発支援装置は、
複数の回路から構成される前記ソースコードを該回路毎に機械語オブジェクトに変換して前記制御装置に送信すると共に、該各機械語オブジェクトの格納位置とサイズ情報を回路位置表に登録するコンパイル手段を有し、
前記制御装置は、前記送信されてくる機械語オブジェクトをプログラム記憶手段に記憶し、
前記コンパイル手段は、前記ソースコードが修正版である場合、修正があった前記回路のみを機械語オブジェクトに変換して成る修正版の機械語オブジェクトを、前記制御装置に送信すると共に、該修正版の機械語オブジェクトのサイズと、前記回路位置表から得られた修正前の機械語オブジェクトの格納位置とサイズ情報とを、修正情報として前記制御装置に送信し、
前記制御装置は、前記修正情報に基づいて、前記プログラム記憶手段に記憶されている既存の各機械語オブジェクトのなかで前記修正があった回路に対応する機械語オブジェクトを、前記修正版の機械語オブジェクトに置き替えることを特徴とする制御コントロールシステム。 A control system having a control device and a development support device that compiles a source code of a program for the control device and converts it into a machine language object,
The development support apparatus includes:
Compile means for converting the source code composed of a plurality of circuits into machine language objects for each circuit and transmitting the machine language objects to the control device, and registering the storage location and size information of each machine language object in a circuit location table Have
The control device stores the transmitted machine language object in a program storage means,
When the source code is a modified version, the compiling unit transmits a modified version of the machine language object obtained by converting only the corrected circuit into a machine language object, and the modified version. The machine language object size and the storage position and size information of the machine language object before correction obtained from the circuit position table are transmitted as correction information to the control device,
Based on the correction information, the control device converts a machine language object corresponding to the corrected circuit among the existing machine language objects stored in the program storage means to the machine language of the corrected version. Control and control system characterized by replacement with objects.
前記修正情報における前記修正前の機械語オブジェクトの格納位置に基づいて、前記プログラム記憶手段の先頭から該格納位置直前までの領域の機械語オブジェクトを、別記憶領域にコピーし、
該別領域における該コピーの直後に前記修正版の機械語オブジェクトを格納することを特徴とする請求項1記載の制御コントロールシステム。 The controller is
Based on the storage position of the machine language object before correction in the correction information, the machine language object in the area from the beginning of the program storage means to immediately before the storage position is copied to another storage area,
2. The control control system according to claim 1, wherein the machine language object of the modified version is stored immediately after the copying in the different area.
前記修正情報における前記修正前の機械語オブジェクトの格納位置とサイズに基づいて、前記プログラム記憶手段に記憶されている残りの既存の機械語オブジェクトを、前記別領域における修正版の機械語オブジェクトの直後にコピーすることで、機械語オブジェクトを更新することを特徴とする請求項2記載の制御コントロールシステム。 The controller is
Based on the storage position and size of the machine language object before modification in the modification information, the remaining existing machine language object stored in the program storage means is immediately after the machine language object of the modified version in the other area. The control control system according to claim 2, wherein the machine language object is updated by copying to the machine control object.
複数の回路から構成される前記ソースコードを、該回路毎に機械語オブジェクトに変換して前記制御装置に送信すると共に、該各機械語オブジェクトの格納位置とサイズ情報を回路位置表に登録するコンパイル手段を有し、
前記コンパイル手段は、前記ソースコードが修正版である場合、修正があった前記回路のみを機械語オブジェクトに変換して成る修正版の機械語オブジェクトを、前記制御装置に送信すると共に、該修正版の機械語オブジェクトのサイズと、前記回路位置表から得られた修正前の機械語オブジェクトの格納位置とサイズ情報とを、修正情報として前記制御装置に送信することを特徴とする制御コントロールシステムの開発支援装置。 A development support apparatus in a control system having a control apparatus and a development support apparatus that compiles a source code of a program for the control apparatus and converts it into a machine language object,
Compilation that converts the source code composed of a plurality of circuits into machine language objects for each circuit and transmits them to the control device, and registers the storage location and size information of each machine language object in a circuit location table Having means,
When the source code is a modified version, the compiling unit transmits a modified version of the machine language object obtained by converting only the corrected circuit into a machine language object, and the modified version. Development of a control control system, wherein the machine language object size and the storage position and size information of the machine language object before correction obtained from the circuit position table are transmitted as correction information to the control device. Support device.
前記開発支援装置から送信されてくる機械語オブジェクトをプログラム記憶手段に記憶し、
前記開発支援装置から修正版の機械語オブジェクトと修正情報が送信されてきた場合には、該修正情報に基づいて、前記プログラム記憶手段に記憶されている既存の各機械語オブジェクトのなかで修正部分に対応する機械語オブジェクトを、前記修正版の機械語オブジェクトに差し替えることを特徴とする制御コントロールシステムの制御装置。 A control device in a control system having a control device and a development support device that compiles a source code of a program for the control device and converts it into a machine language object,
Storing the machine language object transmitted from the development support apparatus in the program storage means;
When a corrected machine language object and correction information are transmitted from the development support apparatus, a corrected portion of each existing machine language object stored in the program storage means is based on the correction information. A control device for a control system, wherein a machine language object corresponding to is replaced with the modified machine language object.
該別領域における該コピーの直後に前記修正版の機械語オブジェクトを格納することを特徴とする請求項6記載の制御コントロールシステムの制御装置。
Based on the storage position of the machine language object before correction included in the correction information, the machine language object in the area from the beginning of the program storage means to immediately before the storage position is copied to another storage area,
7. The control device for a control system according to claim 6, wherein the machine language object of the modified version is stored immediately after the copying in the different area.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015030080A JP2016151973A (en) | 2015-02-18 | 2015-02-18 | Management control system, development support device therefor, and management device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015030080A JP2016151973A (en) | 2015-02-18 | 2015-02-18 | Management control system, development support device therefor, and management device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016151973A true JP2016151973A (en) | 2016-08-22 |
Family
ID=56696620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015030080A Pending JP2016151973A (en) | 2015-02-18 | 2015-02-18 | Management control system, development support device therefor, and management device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016151973A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7450565B2 (en) | 2021-02-02 | 2024-03-15 | 三菱電機株式会社 | Compilation method, development support device and control system |
-
2015
- 2015-02-18 JP JP2015030080A patent/JP2016151973A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7450565B2 (en) | 2021-02-02 | 2024-03-15 | 三菱電機株式会社 | Compilation method, development support device and control system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111142903B (en) | Configuration file interactive updating method and device based on file comparison | |
TWI566180B (en) | A system and method thereof for creating dynamically attachable and detachable binary files | |
CN106991100B (en) | Data import method and device | |
US8397055B2 (en) | Method and system for post-build modification of firmware binaries to support different hardware configurations | |
JP5900193B2 (en) | Update determination program and update determination apparatus | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
JP6205934B2 (en) | Programmable controller system, its support device, program | |
US20080046863A1 (en) | Method of re-using software attributes in graphical programs | |
JP2016151973A (en) | Management control system, development support device therefor, and management device | |
JP6541902B1 (en) | Program management system, programming support apparatus, program management method, and programming support program | |
TWI807824B (en) | Development system with automatic upgrade function and automatic upgrade method of development system | |
JP2011059918A (en) | Version management device and version management method | |
JP6702072B2 (en) | Control program, device, and method | |
JP2000284815A (en) | Program generating device | |
JP5205988B2 (en) | PLC global variable definition method | |
JP2010176594A (en) | Source code version management program and source code version managing method | |
JP6287093B2 (en) | Software development support apparatus, software development support method and program | |
JP2006309666A (en) | Program development support device, program operation comparison method and semiconductor integrated circuit production method | |
CN109019217B (en) | Elevator control software field debugging system | |
JP6744549B2 (en) | Development support device, development support method, and development support program | |
JP2012123664A (en) | Build execution support system, build execution support method, and build execution support program | |
JP2609820B2 (en) | Program management method | |
US6976247B1 (en) | Generating an executable file | |
JP5962350B2 (en) | Program, information processing apparatus and test method | |
US20240272901A1 (en) | Control device and address management method |