JP2007272679A - Ladder program optimization apparatus and optimization program - Google Patents
Ladder program optimization apparatus and optimization program Download PDFInfo
- Publication number
- JP2007272679A JP2007272679A JP2006099161A JP2006099161A JP2007272679A JP 2007272679 A JP2007272679 A JP 2007272679A JP 2006099161 A JP2006099161 A JP 2006099161A JP 2006099161 A JP2006099161 A JP 2006099161A JP 2007272679 A JP2007272679 A JP 2007272679A
- Authority
- JP
- Japan
- Prior art keywords
- program
- optimization
- ladder
- ladder program
- unit
- 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
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
Description
この発明は、例えばプログラマブルコントローラに使用されるラダープログラムの最適化を行うラダープログラム最適化装置および最適化プログラムに関するものである。 The present invention relates to a ladder program optimizing device and an optimizing program for optimizing a ladder program used for a programmable controller, for example.
プログラマブルコントローラは、小規模な機械の制御から大規模な生産設備の制御まで幅広く用いられている。このプログラマブルコントローラには、各種センサやスイッチなどの入力機器と、モータや電磁弁などの出力機器が接続される。大規模な生産設備では、この入力機器と出力機器の数は膨大なものとなる。 Programmable controllers are widely used from small-scale machine control to large-scale production facility control. The programmable controller is connected to input devices such as various sensors and switches and output devices such as motors and electromagnetic valves. In a large-scale production facility, the number of input devices and output devices is enormous.
プログラマブルコントローラは、入力機器と出力機器の接続をラダープログラムで表現する。このラダープログラムは、設計者がプログラム開発環境から入力するか、既にプログラマブルコントローラに書き込まれているラダープログラムの一部をモジュール化し、組み合わせて作成する。 The programmable controller expresses the connection between the input device and the output device with a ladder program. This ladder program is created by modularizing a part of the ladder program that is input from the program development environment by the designer or already written in the programmable controller.
新規にラダープログラムを作成する場合、小規模な機械を制御するラダープログラムは、プログラム開発環境を用いて初めからラダープログラムを作成することができる。しかし、大規模な生産設備では、入力機器や出力機器の数が膨大となり、またそれらの接続を表現するラダープログラムも複雑となるため、最初から入力する方法では効率が悪い。このような場合は、過去に作成したモジュール化されたラダープログラムを組み合わせることによって、プログラムを作成する。
ところが、モジュール化されたラダープログラムを組み合わせる方法では、プログラムの作成は効率化されるが、論理の重複や冗長なデータ転送が含まれてしまうため、プログラムサイズが大きいラダープログラムとなってしまう。
When a new ladder program is created, a ladder program for controlling a small machine can be created from the beginning using a program development environment. However, in a large-scale production facility, the number of input devices and output devices becomes enormous, and the ladder program that expresses these connections becomes complicated, so the method of inputting from the beginning is inefficient. In such a case, a program is created by combining modular ladder programs created in the past.
However, in the method of combining modularized ladder programs, the creation of the program is made more efficient, but since it includes logic duplication and redundant data transfer, it becomes a ladder program with a large program size.
また、人が読みやすいラダープログラムには、論理の重複や冗長性が存在するためサイズが大きくなる。プログラムサイズを削減する目的で、プログラムの最適化を意識してプログラムを記述することもできる。しかし、最適化を意識せずにプログラムを作成した方が、短時間でプログラムの開発を行うことができる。また、論理的な冗長性を全く持たないプログラムは、実行効率は高いが処理内容の解読に時間を要し、デバッグやメンテナンス作業の効率が低下してしまう。このようにプログラムの開発やメンテナンスの効率化を優先すると、ラダープログラムのサイズは大きくなる。 In addition, a ladder program that is easy to read by humans has a large size because of duplication of logic and redundancy. For the purpose of reducing the program size, it is also possible to write a program with awareness of program optimization. However, it is possible to develop a program in a shorter time by creating a program without being aware of optimization. In addition, a program having no logical redundancy has high execution efficiency, but it takes time to decode the processing contents, and the efficiency of debugging and maintenance work is reduced. Thus, if priority is given to the efficiency of program development and maintenance, the size of the ladder program increases.
更に、近年は機器の制御のみならず生産に関連するデータの処理もプログラマブルコントローラ上で行うようになっている。機器の制御に関するラダープログラムだけではなく、データ処理のためのラダープログラムが必要となるため、ラダープログラムのサイズが大型化している。 Furthermore, in recent years, not only the control of equipment but also the processing of data related to production are performed on the programmable controller. Since a ladder program for data processing is required in addition to a ladder program related to device control, the size of the ladder program is increased.
プログラムのサイズが大きくなれば、処理量の増加に伴い実行時間が長くなると共に、プログラムのサイズがプログラマブルコントローラのプログラム容量に収まらなくなるといった問題がある。プログラムの処理時間やプログラムのサイズを短縮する目的で、目視によってプログラムをチェックし、よりサイズが小さくなるプログラム記述への置き換えを進めることも可能である。しかし、何万行もあるプログラムの中から、最適化可能な部分を見つけ出し、元のプログラムと完全に等価な処理でサイズを削減した記述し直す作業は、多大な時間と労力を要してしまう。 As the program size increases, there is a problem that the execution time becomes longer as the processing amount increases and the program size does not fit in the program capacity of the programmable controller. For the purpose of shortening the program processing time and program size, it is possible to visually check the program and proceed with replacement with a smaller program description. However, it takes a lot of time and effort to find a part that can be optimized from a program with tens of thousands of lines, and to rewrite it by reducing the size by completely equivalent processing to the original program. .
このような問題を解決するため、自動的に論理の重複を取り除き、共通の処理をまとめることでラダープログラムを最適化する方法が提案されている。例えば、特許文献1には、重複する論理の統合、部分ブロック置換、サブルーチン化処理について示されている。
この中で部分ブロック置換は、ラダープログラムの共通部分を検出し、その部分ブロックの演算結果を1つの変数に代入し、以降のプログラムで共通部分が出現する箇所を、その変数に置き換える処理である。これにより、重複する処理を繰り返さないため、プログラムのサイズが小さくなり、処理時間も短縮することができる。
In order to solve such a problem, a method has been proposed in which a ladder program is optimized by automatically removing logic duplication and collecting common processes. For example,
Partial block replacement is a process of detecting a common part of a ladder program, substituting the calculation result of the partial block into one variable, and replacing the part where the common part appears in subsequent programs with that variable. . Thereby, since the overlapping process is not repeated, the size of the program is reduced and the processing time can be shortened.
このような従来の部分ブロック置換による最適化方法では、命令とデバイスの構成が全く同じ部分式を対象としているため、命令の構成が同じであるがデバイスが異なる場合に対応できない、という問題があった。ここでのデバイスとは、高級プログラミング言語の変数に相当するものである。 In this conventional optimization method using partial block replacement, since the instruction and device configuration are for the same subexpression, there is a problem that it cannot cope with the case where the instruction configuration is the same but the devices are different. It was. The device here corresponds to a variable in a high-level programming language.
プログラマブルコントローラでは、同様の機器を複数接続し、それらに対して同じ入力信号による論理の組み合わせで出力信号を算出する場合がある。このような場合、全く同じ処理をほぼ同じデバイスの組み合わせによって記述し、出力先や入力元の一部のデバイスのみが異なるラダープログラムになる。従来の最適化方法では、命令とデバイスの構成が全く同じ部分式を対象としているため、このようなラダープログラムについては、最適化できないという問題点があった。 In the programmable controller, there are cases where a plurality of similar devices are connected, and the output signal is calculated with a combination of logics based on the same input signal. In such a case, exactly the same processing is described by a combination of substantially the same devices, and only a part of the devices of the output destination and input source are different ladder programs. In the conventional optimization method, there is a problem that optimization cannot be performed for such a ladder program because the instruction and the device configuration are targeted for the same sub-expression.
この発明は上記のような課題を解決するためになされたもので、作成後や編集後のラダープログラムを自動的に最適化することができ、かつ、最適化の範囲を拡大することのできるラダープログラム最適化装置および最適化プログラムを得ることを目的とする。 The present invention has been made to solve the above-described problems. A ladder program that can automatically optimize a ladder program after creation or editing and that can expand the range of optimization. An object is to obtain a program optimization device and an optimization program.
この発明に係るラダープログラム最適化装置は、ラダープログラム解析手段で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認するプログラム最適化手段を備えたものである。 The ladder program optimizing apparatus according to the present invention provides a device representation for a plurality of circuit blocks having the same instruction configuration and device type in the program analyzed by the ladder program analyzing means and having different device numbers. A program optimization means that checks whether the program size is reduced and processing equivalency is maintained before and after replacement for the replaced program. It is.
この発明のラダープログラム最適化装置は、命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えるようにしたので、作成後や編集後のラダープログラムを自動的に最適化することができ、かつ、最適化の範囲を拡大することができる。 In the ladder program optimizing apparatus of the present invention, the device representation is replaced for a plurality of circuit blocks having the same instruction configuration and device type and different device numbers. The ladder program can be automatically optimized, and the range of optimization can be expanded.
実施の形態1.
図1は、この発明の実施の形態1によるラダープログラム最適化装置の適用例を示す構成図である。
図1に示すプログラマブルコントローラ100は、CPU101やI/O102を備え、生産設備200を制御するためのものであり、ラダープログラムによってその動作が記述されている。CPU101は、I/O102を介して各種スイッチやセンサからの信号を受け取り、モータや電磁弁へ信号を出力することにより、生産設備の制御を行うためのプロセッサである。また、I/O102は、生産設備200との信号の入出力を行うためのインタフェースである。
FIG. 1 is a block diagram showing an application example of a ladder program optimizing device according to
A
ラダープログラム開発装置300は、プログラマブルコントローラ100で実行するラダープログラムの作成や編集を行い、プログラマブルコントローラ100に対して出力する機能を有するものである。また、プログラマブルコントローラ100からラダープログラムを取り出す機能も有しており、プログラマブルコントローラ100に格納されている既存のラダープログラムを取り出した後、編集を行い、再度プログラマブルコントローラ100に書き込むことが可能である。また、ラダープログラム開発装置300は、ラダープログラム最適化装置400との間で、ラダープログラムの受け渡しが可能である。
The ladder
ラダープログラム最適化装置400は、本発明のラダープログラムの最適化方法が実際に動作する装置である。ラダープログラム最適化装置400は、ラダープログラム開発装置300からラダープログラムを受け取り、そのラダープログラムを最適化した後、再びプログラム開発装置に渡す機能を有している。尚、ラダープログラム開発装置300とラダープログラム最適化装置400とが物理的に一つの装置上で組み合わされている形態であってもよい。
The ladder
次に、ラダープログラム最適化装置400の詳細について説明する。
図2は、実施の形態1のラダープログラム最適化装置の構成図である。
ラダープログラム最適化装置400は、図示のように、ラダープログラム解析手段401、プログラム最適化手段402、ラダープログラム生成手段403から構成される。
Next, details of the ladder
FIG. 2 is a configuration diagram of the ladder program optimizing device according to the first embodiment.
As shown in the figure, the ladder
ラダープログラム解析手段401は、入力される最適化前ラダープログラム501を、例えば、インストラクション・リスト表現(以下IL)といった所定の表現に変換する機能を有する。プログラム最適化手段402は、ラダープログラム解析手段401で変換されたILプログラムに対して、最適化の処理を行う機能を有する。ここでの最適化には、論理的な冗長性を排除する論理条件の最適化、実行されることの無い命令を削除する無用命令の削除などの他に、本発明の最適化方法による最適化を含んでいる。
The ladder
プログラム最適化手段402は、ラダープログラム解析手段401で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認する機能を有している。また、プログラム最適化手段402はプログラム置換判定手段404を有し、このプログラム置換判定手段404によって、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認する機能を実現している。
The
即ち、プログラム置換判定手段404は、プログラム最適化手段402によって検出された最適化可能な部分について、最適化候補プログラムへの置き換えの是非を判定する機能を有する。例えば、置き換え候補のプログラムについて、プログラムサイズが削減されているか、プログラムの置き換えによって問題が発生しないかを判定する。プログラムサイズが削減され、かつ問題が発生しない場合は、置き換えを認める判定を行う。一方、プログラムサイズが同じ場合や増加する場合、あるいは、プログラムサイズが削減されるが、置き換えによって問題が発生する場合は、プログラムの置き換えを認めない。
That is, the program
ラダープログラム生成手段403は、プログラム最適化手段402で最適化されたプログラムに基づいて、ラダープログラムを生成し、最適化後ラダープログラム502として出力する手段である。
The ladder
このようなラダープログラム最適化装置400は、コンピュータによって実現され、ハードウェアとしては、図示しないCPU、ROM、RAM、表示装置、入力装置、ハードディスクを備え、また、各手段に対応したプログラムを有している。
Such a ladder
例えば、CPUは、ROMやRAMを用い、ハードディスクに記憶された所定のプログラムを読み込んでそれぞれのプログラムを実行し、ラダープログラム解析手段401、プログラム最適化手段402、ラダープログラム生成手段403としての機能を実現する。また、CPUは、入力装置、表示装置と共に最適化するプログラムの選択手段として機能する。また、表示装置は、最適化前後のラダープログラムを表示する。更に、ハードディスクは、最適化前後のラダープログラムの記録手段としての機能を有している。
For example, the CPU uses a ROM and a RAM, reads predetermined programs stored in the hard disk, executes the respective programs, and functions as a ladder
次に、実施の形態1の動作について説明する。
図3は、最適化前ラダープログラム501の説明図である。
図4は、最適化後ラダープログラム502の説明図である。
図5は、解析後のILプログラムの一部を示す説明図である。
ラダープログラム解析手段401は、図3に示す最適化前ラダープログラム501を入力し、図5に示すようなILプログラムに変換する。
Next, the operation of the first embodiment will be described.
FIG. 3 is an explanatory diagram of the
FIG. 4 is an explanatory diagram of the optimized
FIG. 5 is an explanatory diagram showing a part of the analyzed IL program.
The ladder
次に、プログラム最適化手段402の動作について説明する。
回路ブロックとは、ラダープログラムの最小単位であり、入力要素と出力要素の一まとまりを指す。プログラム最適化手段402は、ILプログラムの中から、複数の回路ブロック間で共通する部分を検出する。プログラム最適化手段402は、命令の構成が同じでデバイス種類が同じ、かつデバイス番号が異なる箇所を検出し、インデックスデバイスによる表現に置き換える。ここで、命令の構成とは、命令の種類(LOAD命令、AND命令等)と、命令の並び(AND命令の後にOR命令、といった並び)を意味している。
Next, the operation of the
A circuit block is a minimum unit of a ladder program and indicates a group of input elements and output elements. The
また、デバイス名とは、例えば“X1”や“M100”といったデバイス種類とデバイス番号とから構成されたものを意味する。更に、デバイス種類とは、“X”、“Y”、”M”等の使用目的毎に分類が決められたデバイスのまとまりを指す。また、デバイス番号とは、“X1”、“Y10”、“M100”等、デバイスの種類を指す英文字の後に続く数字を指す。デバイスは、デバイス種類とデバイス番号によって、一意に決められる。 The device name means a device name and device number such as “X1” and “M100”. Furthermore, the device type refers to a group of devices whose classification is determined for each purpose of use such as “X”, “Y”, “M”, and the like. The device number refers to a number following an alphabetic character indicating the type of device, such as “X1”, “Y10”, “M100”. A device is uniquely determined by a device type and a device number.
ここで、インデックスデバイスとは、デバイス番号を修飾するデバイスである。例えばインデックスデバイスは、“Zn”と表現される。ここでnは整数である。インデックスデバイスは、デバイス番号の後に続けて記述する。インデックスデバイスを用いたデバイスの表現の例としては、“X0Z1”が挙げられる。“Z1”デバイスの値が0(ゼロ)の場合は、“X0Z1”は、“X(0+0)”→“X0”デバイスを意味する。また、“Z1”デバイスの値が1の場合は、“X0Z1”は、“X(0+1)”→“X1”デバイスを意味する。このように、インデックスデバイスで修飾されたデバイスは、インデックスデバイスの値を変化させることによって、指し示すデバイスを切り換えることができる。 Here, the index device is a device that modifies the device number. For example, the index device is expressed as “Zn”. Here, n is an integer. The index device is described after the device number. “X0Z1” is an example of a device expression using an index device. When the value of the “Z1” device is 0 (zero), “X0Z1” means “X (0 + 0)” → “X0” device. When the value of the “Z1” device is 1, “X0Z1” means “X (0 + 1)” → “X1” device. In this way, a device that is qualified with an index device can switch the indicated device by changing the value of the index device.
次に、図6のフローチャートを用いてプログラム最適化手段402の動作を詳細に説明する。
尚、図6に示す処理および後述する図7の処理はプログラム最適化手段402における図示しないプログラム最適化制御手段が行うものである。
Next, the operation of the
The process shown in FIG. 6 and the process of FIG. 7 described later are performed by a program optimization control means (not shown) in the program optimization means 402.
先ず、ラダープログラムの先頭の回路ブロックの先頭の命令にカウンタAを、次の回路ブロックの先頭の命令にカウンタBを付加する(ステップST101)。次に、カウンタAが指す命令及びデバイスと、カウンタBが指す命令及びデバイスが同じであるかを判断する(ステップST102)。同じ場合は、プログラムの共通部分として、共通部分リストに登録する(ステップST103)。そして、カウンタA、カウンタBをそれぞれ次の命令を指すように進める(ステップST104)。ここで、カウンタAとカウンタBの指し示す命令及びデバイスが同じか否かを示す相違フラグをOFFに設定する(ステップST105)。 First, the counter A is added to the first instruction of the first circuit block of the ladder program, and the counter B is added to the first instruction of the next circuit block (step ST101). Next, it is determined whether the instruction and device indicated by the counter A are the same as the instruction and device indicated by the counter B (step ST102). If they are the same, they are registered in the common part list as common parts of the program (step ST103). Then, the counter A and the counter B are advanced so as to indicate the next instruction, respectively (step ST104). Here, the difference flag indicating whether or not the instruction and device indicated by the counter A and the counter B are the same is set to OFF (step ST105).
次に、カウンタAとカウンタBの指し示す命令及びデバイスが同じであるかを判定する(ステップST106)。同じ場合は、共通部分として、先の共通部分リストにその命令とデバイスを追加登録する(ステップST107)。そして、カウンタAまたは、カウンタBが回路ブロックの終端であれば、Aの処理に移る(ステップST108)。Aの処理は、プログラム置換判定手段404の処理であり、これについては後述する。カウンタAまたは、カウンタBが回路ブロックの終端でなければ、カウンタA及びカウンタBを1つ進め、それぞれ次の命令を指すように変更する(ステップST109)。そして、ステップST106に戻り、再びカウンタAとカウンタBの指す命令及びデバイスが同じであるかを判定する。
Next, it is determined whether the instruction and device indicated by the counter A and the counter B are the same (step ST106). If they are the same, the command and device are additionally registered in the previous common part list as common parts (step ST107). If the counter A or the counter B is at the end of the circuit block, the process proceeds to A (step ST108). The process A is a process of the program
ステップST106において、カウンタAとカウンタBの指し示す内容が異なる場合は、相違フラグの状態を判定する(ステップST110)。相違フラグがOFFの場合は、ONにする(ステップST111)。次に、カウンタAとカウンタBの指し示す命令及びデバイスのうち、命令が同じ場合は、異なるデバイスを相違デバイスリストに登録する(ステップST112)。一方、ステップST110において、相違フラグがONの場合は、後述のプログラム置換判定手段404の処理に移行する。
If the contents indicated by the counter A and the counter B are different in step ST106, the state of the difference flag is determined (step ST110). If the difference flag is OFF, it is turned ON (step ST111). Next, when the instructions and devices indicated by the counter A and the counter B are the same, different devices are registered in the different device list (step ST112). On the other hand, when the difference flag is ON in step ST110, the process proceeds to the process of the program
また、ステップST102において、カウンタAとカウンタBが指し示す命令あるいはデバイスが異なる場合は、カウンタBを次の命令を指すように1つ進める(ステップST113)。ここで、カウンタBが回路ブロックの終端でなければ、ステップST102の処理に戻る(ステップST114)。カウンタBが回路ブロックの終端であれば、カウンタBを次の回路ブロックの先頭へ移す(ステップST115)。このとき、カウンタBが指す次の回路ブロックが存在するかを判定する(ステップST116)。次の回路ブロックが存在すれば、ステップST102へ戻る。次の回路ブロックが存在しなければ、カウンタAを次の回路ブロックの先頭へ、カウンタBをカウンタAの次の回路ブロックの先頭へ移動する(ステップST117)。そして、カウンタAが最後の回路ブロックであるかを判定し(ステップST118)、最後の回路ブロックである場合は、終了する。最後でなければステップST102に戻る。 In step ST102, if the instructions or devices indicated by counter A and counter B are different, counter B is advanced by one so as to indicate the next instruction (step ST113). If the counter B is not the end of the circuit block, the process returns to step ST102 (step ST114). If the counter B is at the end of the circuit block, the counter B is moved to the head of the next circuit block (step ST115). At this time, it is determined whether there is a next circuit block indicated by the counter B (step ST116). If the next circuit block exists, the process returns to step ST102. If the next circuit block does not exist, the counter A is moved to the head of the next circuit block, and the counter B is moved to the head of the next circuit block of the counter A (step ST117). Then, it is determined whether the counter A is the last circuit block (step ST118), and if it is the last circuit block, the process ends. If it is not the last, it returns to step ST102.
図4に示す最適化後のプログラムで、“FOR”、“NEXT”で囲まれた部分は、“FOR”の引数で指定した回数だけ繰り返し実行される。また、“INC”は、引数で指定したデバイスの値を1つ加算する命令である。
プログラムの置き換えでは、“FOR”、“NEXT”、“INC”命令の追加が必要となり、必ずしも置き換えによってプログラムサイズが縮小されるとは限らない。そこで、プログラムの置き換えによってプログラムのサイズを削減する効果があるのか、また、プログラムを置き換えて等価な処理を実現できるかを判定するため、プログラム置換判定手段404でその判定を行う。
尚、この例では、“FOR”、“NEXT”を用いているが、ジャンプ命令とラベルの組み合わせによる表現に変換することも可能である。
In the optimized program shown in FIG. 4, the portion surrounded by “FOR” and “NEXT” is repeatedly executed as many times as specified by the argument of “FOR”. “INC” is an instruction for adding one device value specified by an argument.
Replacement of a program requires addition of “FOR”, “NEXT”, and “INC” instructions, and the replacement does not necessarily reduce the program size. Therefore, in order to determine whether the replacement of the program has the effect of reducing the size of the program and whether the replacement of the program can realize an equivalent process, the determination is performed by the program
In this example, “FOR” and “NEXT” are used, but it is also possible to convert the expression into a combination of a jump instruction and a label.
図7は、プログラム最適化手段402における相違デバイスに対する処理を示すフローチャートである。
先ず、上述した図6のステップST112で登録した相違デバイスリストについて、デバイスの種類が同一であるかを判定する(ステップST301)。デバイスの種類が同じ場合は、デバイスの番号の差を算出する(ステップST302)。次に、この差に基づいて、インデックスデバイス表現を作成する(ステップST303)。インデックスデバイス表現とは、図4に示したデバイスの表現である。即ち、ステップST303では、異なるデバイス番号の部分をインデックスデバイスによる表現に置き換えると共に、共通するプログラムが格納される共通部分リストに基づいて、その部分をFOR〜NEXT文で囲みループすることによって、プログラムサイズを削減したプログラムを作成する。更に、このプログラムを最適化後のプログラム置換候補として登録する(ステップST304)。また、ステップST301において、相違デバイスのデバイス種類が異なる場合は、直ちに終了する。
FIG. 7 is a flowchart showing processing for different devices in the
First, it is determined whether or not the device types of the different device lists registered in step ST112 of FIG. 6 are the same (step ST301). If the device types are the same, the difference between the device numbers is calculated (step ST302). Next, based on this difference, an index device expression is created (step ST303). The index device expression is an expression of the device shown in FIG. That is, in step ST303, the part of the different device number is replaced with the expression by the index device, and based on the common part list in which the common program is stored, the part is surrounded by a FOR-NEXT statement and looped, thereby the program size. Create a program with reduced Furthermore, this program is registered as an optimized program replacement candidate (step ST304). In step ST301, if the device types of the different devices are different, the process is immediately terminated.
尚、この例では、異なるデバイス番号のデバイスが1つの場合を示したが、デバイス番号が異なるデバイスが複数存在する場合は、それぞれ対応するデバイスについて相違デバイスリストを作成し、各々のデバイスに対してインデックスデバイスを設定することにより、同様にプログラムサイズを削減することができる。 In this example, the case where there is one device having a different device number is shown. However, when there are a plurality of devices having different device numbers, a different device list is created for each corresponding device. By setting an index device, the program size can be similarly reduced.
また、これまでは、2つの回路ブロックを対象としていたが、最適化の範囲を3つの回路ブロック拡大する場合は、最初にこれまでの方法の通り、2つの回路ブロックについて、共通部分リストと相違デバイスリストを作成する。次に、その2つの回路ブロックに続く3つめの回路ブロックについて、共通部分リストと共通する命令の構成が存在するかを判定する。共通する命令の構成が存在し、その命令に付属するデバイスも同じであり、かつ相違デバイスリストに対応する位置のデバイスのみが異なり、更にそのデバイス番号の差が、以前の2つの回路ブロックの差と同一であれば、共通部分として扱う。デバイスの差が異なる場合は、共通部分として扱うことができないため、最適化は前の2つの回路ブロックに閉じて行う。 In the past, two circuit blocks were targeted. However, when expanding the range of optimization to three circuit blocks, the two circuit blocks differ from the common part list first as described above. Create a device list. Next, for the third circuit block following the two circuit blocks, it is determined whether there is an instruction configuration common to the common part list. There is a common command configuration, the devices attached to the command are the same, and only the device at the position corresponding to the different device list is different, and the difference in the device number is the difference between the two previous circuit blocks. If it is the same, it is treated as a common part. When the difference between devices is different, it cannot be handled as a common part, and therefore optimization is performed by closing the previous two circuit blocks.
また、デバイス番号の変化が1ではない場合は、デバイス番号の差を算出し、その値だけループ処理の中でデバイスの値を加算あるいは減算する処理に置き換えることによって実現することができる。図4に示す最適化後の例では、デバイス番号が1つ異なるため、デバイスの値を1加算するINC命令を用いている。例えばデバイスの値が2増える場合は、ADD命令を用いる。 Further, when the change of the device number is not 1, it can be realized by calculating a difference between the device numbers and replacing the value with a process of adding or subtracting the value of the device in the loop process. In the example after optimization shown in FIG. 4, since the device number is different by one, an INC instruction that adds 1 to the device value is used. For example, when the device value increases by 2, an ADD instruction is used.
次に、プログラム置換判定手段404の動作について説明する。
図8は、プログラム置換判定手段404の動作を示すフローチャートである。
プログラム置換判定手段404は、プログラム最適化手段402におけるプログラム最適化制御手段の置換による効果を確認すると共に、置き換えの正当性を判定する。プログラム置換判定手段404は、先ず、図7のステップST304において置き換え候補として登録されたプログラムについて、置き換え前後のプログラムサイズを比較する(ステップST401)。置き換え後のプログラムサイズが小さいと判定される場合は(ステップST402)、処理の等価性をチェックする(ステップST403)。この処理の等価性とは、置き換えによってプログラムの演算結果が異なることがないかを判定する処理である。論理的な等価性と共に、入力信号のタイミングの変化に対する等価性を確認する。等価性に問題が無ければ(ステップST404)、置換許可をプログラム最適化制御手段に通知する(ステップST405)。ステップST402において、プログラムサイズが縮小されない、あるいは、ステップST404において等価性に問題があれば、プログラム最適化制御手段に対して置換不許可を通知する(ステップST406)。
Next, the operation of the program
FIG. 8 is a flowchart showing the operation of the program
The program
次に、上記ステップST403における処理の等価性について説明する。
プログラムの置き換えによって問題が発生する場合の例として、割込みプログラムが挙げられる。割込みプログラムの実行とは、設定された割込み条件が満たされた時点で、実行中のプログラムを中断し、その割込み条件に対応付けられたプログラムを実行する機能である。対応する割込みプログラムの処理が完了すると、中断されたプログラムに戻りその位置から実行を再開する処理である。
Next, the process equivalence in step ST403 will be described.
An example of a case where a problem occurs due to program replacement is an interrupt program. Execution of an interrupt program is a function of interrupting a program being executed and executing a program associated with the interrupt condition when a set interrupt condition is satisfied. When the processing of the corresponding interrupt program is completed, the processing returns to the interrupted program and resumes execution from that position.
割込みプログラムに起因する問題は、最適化するプログラムと割込みプログラムで同じデバイスを使用している場合に発生する。あるデバイスの値を繰り返し読み出して、論理演算を行い、別のデバイスに代入する処理があると仮定する。ここで、あるデバイスの値が繰り返し読み出される部分の処理について共通部分が存在するため、サイズを削減するためにその部分を共通部分式として括り出し、別のデバイスに置き換えるとする。この置き換えによって、共通部分の処理が1つのデバイスに集約されるため、同じ処理を繰り返す必要が無くなり、プログラムのサイズを削減できる。 Problems caused by the interrupt program occur when the same device is used for the program to be optimized and the interrupt program. Assume that there is a process of repeatedly reading a value of a certain device, performing a logical operation, and assigning it to another device. Here, since there is a common part in the process of the part where the value of a certain device is repeatedly read, it is assumed that the part is bundled as a common partial expression and replaced with another device in order to reduce the size. By this replacement, the processing of the common part is integrated into one device, so that it is not necessary to repeat the same processing, and the size of the program can be reduced.
しかし、共通部分の演算結果を集約したデバイスに対して値を書き込んだ後に、そのデバイスの値が割込みプログラムによって書き換えられると、演算結果を格納したデバイスの値が変化するため、問題が発生する。 However, when a value is written to a device in which the operation results of the common part are aggregated and then the value of the device is rewritten by the interrupt program, a problem occurs because the value of the device storing the operation result changes.
このような条件のプログラムについて最適化によってプログラムを置換すると、割込みのタイミングによって最適化の前後でプログラムの動作が異なるものとなる。従って、このようなプログラムの置き換えは行うべきではない。このような観点に基づき、プログラム置換判定手段404は、こうした問題が発生するプログラムの変換を抑制する。
If a program with such a condition is replaced by optimization, the operation of the program differs before and after optimization depending on the timing of interruption. Therefore, such a program replacement should not be performed. Based on such a viewpoint, the program
このようにして、プログラム最適化手段402およびプログラム置換判定手段404により、ILプログラムの最適化が行われると、ラダープログラム生成手段403は、最適化されたILプログラムから、ラダープログラムを生成する。
In this way, when the IL program is optimized by the
このように、実施の形態1では、プログラムの置き換えを行った後、この置き換え処理を判定するプログラム置換判定手段404を設けたので、プログラムの最適化を適切に行うことができる。また、インデックスデバイス表現を取り入れることによって、プログラムの最適化対象を拡大することができる。更に、プログラムの追加によってプログラムサイズがプログラマブルコントローラ100のプログラム容量を超えるような場合に、プログラムサイズの短縮に時間と労力かけずに短時間でプログラムをダウンロードし、実行できるという効果がある。また、等価な処理を行うより小さいプログラムに変換するため、同じプログラム容量を持つプログラマブルコントローラ100の中で、より多くの処理を実現することができる。
As described above, in the first embodiment, the program
以上のように、実施の形態1のラダープログラム最適化装置によれば、ラダープログラムを解析するラダープログラム解析手段と、ラダープログラム解析手段で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認するプログラム最適化手段と、プログラム最適化手段で確認されたプログラムからラダープログラムを生成するラダープログラム生成手段とを備えたので、作成後や編集後のラダープログラムを自動的に最適化することができ、かつ、最適化の範囲を拡大することができる。 As described above, according to the ladder program optimizing apparatus of the first embodiment, the ladder program analysis unit that analyzes the ladder program, the configuration of instructions in the program analyzed by the ladder program analysis unit, and the device type are equal. In addition, multiple circuit blocks with different device numbers are handled as common subexpressions by replacing the device representation, and the program size is reduced for the replaced program and processed before and after replacement. Program optimization means for confirming whether the equivalence is maintained, and ladder program generation means for generating a ladder program from the program confirmed by the program optimization means, the ladder program after creation or editing Can be automatically optimized and the scope of optimization It can be large.
実施の形態2.
図9は、実施の形態2のラダープログラム解析手段401を示す構成図である。
実施の形態2のラダープログラム解析手段401は、デバイスソート手段405と論理最適化手段406を備えている。デバイスソート手段405は、デバイスの並びを変更する機能を有し、論理最適化手段406は、論理演算の最適化を行う機能を有している。
Embodiment 2. FIG.
FIG. 9 is a block diagram showing the ladder program analysis means 401 of the second embodiment.
The ladder
本発明によるプログラムサイズの削減は、命令の構成が同じでデバイス番号が異なる2つのプログラムを対象としている。このため、命令の順序が異なるプログラムであっても、等価な演算結果が保証される範囲内で命令の並びの変更が可能であれば、命令の並びを変更して構成を統一し、最適化の対象とする。この変換により、本発明によるプログラムサイズの削減対象を拡大することができる。このような変換をデバイスソート手段405と論理最適化手段406によって行う。
The reduction in program size according to the present invention targets two programs having the same instruction configuration but different device numbers. For this reason, even if a program has a different instruction order, if the instruction order can be changed within a range that guarantees an equivalent operation result, the instruction order is changed to unify the configuration and optimize The target of. By this conversion, it is possible to expand the program size reduction object according to the present invention. Such conversion is performed by the
先ず、デバイスソート手段405の動作について説明する。
“AND”命令が連続する場合や、“OR”命令が連続する場合に、使用されているデバイスを、デバイス番号を元に、例えば昇順にソートしてプログラムの命令の並びを変更する。デバイスをソートする前のサンプルプログラムを図10に、ソート後のプログラムを図11に示す。
First, the operation of the
When “AND” instructions are consecutive or “OR” instructions are consecutive, the devices used are sorted, for example, in ascending order based on the device number, and the order of the instructions of the program is changed. FIG. 10 shows a sample program before sorting devices, and FIG. 11 shows a program after sorting.
また、図12は、デバイスをソートする場合の動作を示すフローチャートである。
デバイスソート手段405は、先ず、ラダープログラム解析手段401中の図示しない変換手段で変換されたILを1行読み込む(ステップST501)。ここで、1行とは、命令とデバイスの組み合わせである。次にプログラムの終端であるかを判定する(ステップST502)。終端の場合は、処理を終了する。終端でなければ、読み込んだILプログラムの命令がAND命令であるかを判定する(ステップST503)。AND命令の場合は、後続のプログラムに対して、AND命令が連続する限り命令を読み出し、対応するデバイスを登録する(ステップST504)。後続する命令がAND命令でなくなった場合は、登録したデバイスを例えば昇順に並び換え、元のプログラムを変更する(ステップST505)。
FIG. 12 is a flowchart showing the operation when devices are sorted.
The
また、ステップST503において、AND命令でない場合は、OR命令であるかを判定する(ステップST506)。ここで、後続する命令がOR命令の場合は、OR命令が連続する限り命令を読み出し、対応するデバイスを登録する(ステップST507)。後続する命令がOR命令でなくなった場合は、登録したデバイスを例えば昇順に並び替え、元のプログラムを変更する(ステップST508)。 If it is not an AND instruction in step ST503, it is determined whether it is an OR instruction (step ST506). If the subsequent instruction is an OR instruction, the instruction is read as long as the OR instruction continues, and the corresponding device is registered (step ST507). If the subsequent instruction is no longer an OR instruction, the registered devices are rearranged in ascending order, for example, and the original program is changed (step ST508).
更に、ステップST504〜ステップST505や、ステップST507〜ステップST508では、ANBやORBで接続される実行時にスタックを操作する上で、一まとまりとなる処理の単位でも、ソートを行う。このときのソートの基準の例としては、その一まとまりの中で最も小さいデバイス番号をそのまとまりの番号としてソートする方法がある。また、複数のデバイス種類が混在する場合は、先ずデバイス種類のアルファベット順に並べ、その後デバイス番号を基にソートする方法がある。 Further, in step ST504 to step ST505 and step ST507 to step ST508, sorting is performed even in a unit of processing that is a unit when operating the stack at the time of execution connected by ANB or ORB. As an example of sorting criteria at this time, there is a method of sorting the smallest device number in the set as the set number. When a plurality of device types coexist, there is a method in which the device types are first arranged in alphabetical order and then sorted based on device numbers.
次に、論理最適化手段406の動作について説明する。
“AND”命令と“OR”命令の組み合わせで表現される場合、命令とその命令に対応するデバイスの順序を入れ替えることによって、等価な演算結果を生成するプログラムに変換することができる。特に、スタックの動作が最適となるように、命令と対応するデバイスの順序を入れ替えることにより、生成するラダープログラムのステップ数を削減することができる。この例を図13と図14に示す。
Next, the operation of the
When expressed by a combination of an “AND” instruction and an “OR” instruction, it can be converted into a program that generates an equivalent operation result by switching the order of the instruction and the device corresponding to the instruction. In particular, the number of steps of the ladder program to be generated can be reduced by changing the order of the devices corresponding to the instructions so that the stack operation is optimized. Examples of this are shown in FIGS.
図13は、命令の順序を入れ替える前のラダープログラムである。このプログラムのサイズは、38ステップである。このラダープログラムでは、ANB命令が入る。このANB命令は、スタックのトップの要素とその次の要素の論理積をとる命令である。プログラムの命令の順序を入れ換えて、スタック操作の順番を変更することで、この命令の数を削減することができる。
図14は、論理の最適化によってANB命令を削減したラダープログラムである。命令の順序を入れ換えることによって、ステップ数を36ステップに削減している。
FIG. 13 shows a ladder program before the order of instructions is changed. The size of this program is 38 steps. In this ladder program, an ANB instruction is entered. This ANB instruction is an instruction that takes the logical product of the top element of the stack and the next element. By changing the order of the stack operations by changing the order of the instructions of the program, the number of instructions can be reduced.
FIG. 14 shows a ladder program in which ANB instructions are reduced by logic optimization. By changing the order of the instructions, the number of steps is reduced to 36 steps.
このように命令の数を削減する方針でプログラムの命令の順序を並べ替えることにより、プログラム中の命令の順序を揃えることができる。このため、そのままでは共通部分として認識できない複数の回路ブロックが、プログラムサイズの縮小を基準とした並べ替えによって、共通部分を認識できるようになる場合があり、最適化の対象を拡大できる。 By rearranging the order of the instructions of the program in such a way as to reduce the number of instructions, the order of the instructions in the program can be made uniform. For this reason, a plurality of circuit blocks that cannot be recognized as common parts as they are can be recognized by rearrangement based on the reduction of the program size, and the optimization target can be expanded.
なお、これらのプログラムの変更は、ラダープログラム解析手段401で行うこともできるし、プログラム最適化手段402で、プログラムの置き換えを行う前に実施することもできる。即ち、デバイスソート手段405および論理最適化手段406は、ラダープログラム解析手段401またはプログラム最適化手段402のいずれに設けてもよい。
These program changes can be performed by the ladder
以上のように、実施の形態2のラダープログラム最適化装置によれば、デバイスの並びの置き換えを行うデバイスソート手段を備え、プログラム最適化手段は、デバイスソート手段によってデバイスの並びが置き換えられたプログラムに対してデバイスの表現を置き換えるようにしたので、最適化処理の適用対象を拡大することができ、その結果、更にプログラムのサイズを削減することができる。 As described above, according to the ladder program optimizing apparatus of the second embodiment, the device sort unit for replacing the device sequence is provided, and the program optimization unit is a program in which the device sequence is replaced by the device sort unit. Since the device representation is replaced, the application target of the optimization process can be expanded, and as a result, the size of the program can be further reduced.
実施の形態3.
図15は、実施の形態3のプログラム最適化手段402aの構成図である。
実施の形態3のプログラム最適化手段402aは、デバイス変換手段407とプログラム置換判定手段404aとを備え、入力されるILプログラム503に対して最適化を行い、最適化後ILプログラム504を出力するものである。デバイス変換手段407は、プログラム中に現れるデバイスを、別のデバイスに置き換える手段である。このデバイスの置き換えでは、本発明による最適化方法が適用できるようにデバイスの名前を置き換える。即ち、デバイスの名前を構成するデバイス種類かデバイス番号のうち少なくとも一方を置き換える。また、プログラム置換判定手段404aは、デバイス変換手段407によってデバイスが置き換えられたプログラムに対して置換判定を行うものであり、置換判定そのものの処理は実施の形態1のプログラム置換判定手段404と同様である。
Embodiment 3 FIG.
FIG. 15 is a configuration diagram of the
The
実施の形態1では、図7のステップST301およびステップST302において、デバイスの種類を判定し、そのデバイスの差分を算出している。この実施の形態3では、デバイス変換手段407により、デバイスの種類が異なる場合に、そのデバイスを置き換えることによって、デバイスの種類を統一し、本発明による最適化方法を適用する。更に3つ以上の複数の回路ブロックに対して、本発明による最適化方法を適用するように、デバイスの名前を置き換える。
In the first embodiment, in step ST301 and step ST302 in FIG. 7, the device type is determined, and the difference between the devices is calculated. In the third embodiment, when the device type is different by the
デバイス名を置き換えるには、該当するデバイスについて、プログラム全体に渡って置き換える方法と、最適化する部分の前後のみ、デバイスを置き換える方法がある。プログラム全体に渡って置き換える方法では、プログラム全体に渡ってデバイスの名前を置き換えるため、プログラム全体としての動作が変わらないことが保証される範囲で置き換えを行わなければならない。従って、入力や出力信号に直接接続されているデバイスについては、このような置き換えの対象とすることはできない。直接入出力対象に影響しない入出力用のデバイスや、プログラマブルコントローラ100内部での計算に使用されるデバイスが対象となる。
To replace the device name, there are a method of replacing the corresponding device over the entire program, and a method of replacing the device only before and after the portion to be optimized. In the replacement method over the entire program, the device name is replaced over the entire program. Therefore, replacement must be performed within a range in which it is guaranteed that the operation of the entire program does not change. Therefore, a device directly connected to an input or output signal cannot be a target for such replacement. An input / output device that does not directly affect an input / output target or a device used for calculation in the
一方、最適化する部分の前後のみデバイスを置き換える方法は、置き換えによって影響される範囲が限定されるため、入出力に影響するデバイスを扱うことができる。しかし、最適化箇所の前で最適化できるようにデバイスの値を最適化用のデバイスに代入する必要がある。また、最適化箇所において、そのデバイスに対して書き込み処理が存在し、そのデバイスの値が変化する可能性がある場合は、最適化箇所の後に、そのデバイスから元のデバイスへ値を代入する必要がある。このように、最適化する部分の前後のみデバイスを置き換える方法は、デバイスの値を移すための処理を追加する必要があるため、プログラムサイズは大きくなる。プログラムを置換する場合には、この追加分のプログラムサイズを考慮して置換判定を行う。 On the other hand, the method of replacing a device only before and after the portion to be optimized limits the range affected by the replacement, and thus can handle devices that affect input / output. However, it is necessary to substitute the device value into the device for optimization so that optimization can be performed before the optimization point. In addition, if there is a write process for the device at the optimization location and the device value may change, it is necessary to substitute the value from the device to the original device after the optimization location. There is. As described above, in the method of replacing the device only before and after the portion to be optimized, it is necessary to add a process for transferring the value of the device, so that the program size becomes large. When replacing a program, replacement determination is performed in consideration of the additional program size.
図16および図17は、デバイス変換前のラダープログラムおよびデバイス変換を行って最適化したラダープログラムを示す説明図である。
図16に示すプログラム例では、図3に示したラダープログラムとは異なり“X8”の部分が“X9”となっている。このため、図4に示したようなラダープログラムに最適化することができない。そこで、デバイス変換手段407によって、問題となる“X9”のデバイスを“X8”に置き換える。これらは、いずれもデバイス種類が“X”であるため、置き換えが可能である。
16 and 17 are explanatory diagrams showing a ladder program before device conversion and a ladder program optimized by performing device conversion.
In the program example shown in FIG. 16, the portion “X8” is “X9”, unlike the ladder program shown in FIG. For this reason, it is not possible to optimize the ladder program as shown in FIG. Therefore, the
具体的には、図17の2行目に示すように置き換えを行う。これは、“X9”の値を“X8”に代入することを意味しており、このような置き換えを行うには次の二つの条件が必要となる。プログラム置換判定手段404aは、以下の条件を満たす場合にのみ置き換え可の判定結果を出力する。
Specifically, the replacement is performed as shown in the second line of FIG. This means that the value of “X9” is substituted for “X8”, and the following two conditions are necessary for such replacement. The program
(1)置き換えの追加によるプログラムサイズの増分を考慮しても最適化の効果があること
この例では、2行目の追加によって、2ステップ増える。但し、最適化前が39ステップであったのに対し、最適化後は、25+2=27ステップ(実施の形態1で説明したように、25ステップに最適化されるが、置き換え追加により2ステップ加算される)となり最適化の効果がある。
(2)置き換え先のデバイスがプログラム中の他の部分で使われていないこと
この例の場合、“X8”デバイスが、このプログラムの他の部分で使われていないことが必要である。
(1) The optimization effect can be obtained even when the increase in program size due to the addition of replacement is taken into account. In this example, the addition of the second row increases two steps. However, it was 39 steps before the optimization, but after the optimization, 25 + 2 = 27 steps (as described in the first embodiment, it is optimized to 25 steps. There is an optimization effect.
(2) The replacement device is not used in other parts of the program In this example, it is necessary that the “X8” device is not used in other parts of the program.
尚、この例ではXデバイスについて、デバイス番号だけを置き換えたが、XデバイスからMデバイスに置き換えるなど、必要に応じてデバイス種類を置き換えることも可能である。但し、置き換え先としてYデバイスは指定しない。即ち、Yデバイスは出力に利用するデバイスであり、プログラム中に使用していないからといって、あるYデバイス(例えばY10)を置き換え先に指定すると、そのYデバイスに対して値が代入され、外部に信号が出力されてしまうからである。 In this example, only the device number is replaced for the X device, but it is also possible to replace the device type as necessary, such as replacing the X device with the M device. However, the Y device is not specified as the replacement destination. That is, the Y device is a device used for output, and if a certain Y device (for example, Y10) is designated as the replacement destination just because it is not used in the program, a value is substituted for that Y device, This is because a signal is output to the outside.
以上のように、実施の形態3のラダープログラム最適化装置によれば、デバイス種類かデバイス番号のうち少なくとも一方を置き換えるデバイス変換手段を備え、プログラム最適化手段は、デバイス変換手段によって、デバイス種類かデバイス番号のうち少なくとも一方を置き換えたプログラムに対してデバイスの表現を置き換えるようにしたので、更に最適化の対象を拡大し、結果としてプログラム全体の最適化効率をより改善することができる。 As described above, according to the ladder program optimizing apparatus of the third embodiment, the device conversion unit that replaces at least one of the device type and the device number is provided, and the program optimization unit determines whether the device type is the device type. Since the device representation is replaced with the program in which at least one of the device numbers is replaced, the optimization target can be further expanded, and as a result, the optimization efficiency of the entire program can be further improved.
実施の形態4.
実施の形態4は、ループ化した後、共通部分をループ外へ括りだすようにしたものである。
図18は、実施の形態4におけるプログラム最適化手段402bの構成図である。
実施の形態4のプログラム最適化手段402bは、ループ外移動手段408、プログラム置換判定手段404bを備え、入力されるILプログラム503に対して最適化を行い、最適化後ILプログラム504aを出力するものである。ループ外移動手段408は、プログラム最適化手段402b内の図示しないプログラム最適化制御手段によってループ化される部分について、ループ処理に関係の無い部分をループ外に移動する手段である。また、プログラム置換判定手段404bは、ループ外移動手段408で処理されたプログラムに対して置換判定を行う手段であり、置換判定そのものの処理は実施の形態1のプログラム置換判定手段404と同様である。
Embodiment 4 FIG.
In the fourth embodiment, after the loop is formed, the common portion is bundled out of the loop.
FIG. 18 is a configuration diagram of the
The
図19は、共通部分をループ外へ移動する前のラダープログラムを示す説明図である。
この図において、破線枠510内の部分がループ中で毎回行われる処理であり、ループの外に出しても同じ演算結果が得られ、かつ処理時間が短縮できる。このため、ループ外移動手段408は、その部分の演算結果を他のデバイスに代入し、ループ内ではそのデバイスを参照するように変更する。
図20は、図19の共通部分をループ外へ移動した結果を示す説明図である。
図19に示すラダープログラムでは36ステップあるのに対して、図20に示すラダープログラムでは35ステップに削減されている。
FIG. 19 is an explanatory diagram showing a ladder program before moving the common part out of the loop.
In this figure, the portion within the
FIG. 20 is an explanatory diagram showing the result of moving the common part of FIG. 19 out of the loop.
The ladder program shown in FIG. 19 has 36 steps, whereas the ladder program shown in FIG. 20 reduces to 35 steps.
ループ外への移動は、図6のステップST107によって抽出された、複数の回路ブロック間で共通する部分について行う。この共通部分の中で、ループを実行する度に変化する値を使用せず、ループに無関係な命令とデバイスの組み合わせを検出し、ループの外へ移動する。ループと命令及びデバイスとの関係は、ループ中でループ回数に依存するデバイスか否かを判断の基準とする。また、ループ回数に依存するデバイスの値に依存するデバイスもループに関係するデバイスとして、ループ外への移動対象から外す。
このようにループに無関係な処理をループ外へ移動することにより、プログラムのサイズを削減しつつ、プログラムの実行時間を短縮することが可能となる。
The movement out of the loop is performed with respect to a portion common to a plurality of circuit blocks extracted in step ST107 in FIG. In this common part, a value that changes every time a loop is executed is not used, and a combination of an instruction and a device irrelevant to the loop is detected and moved out of the loop. The relationship between the loop, the instruction, and the device is determined based on whether the device depends on the number of loops in the loop. In addition, a device that depends on the value of a device that depends on the number of loops is also excluded from being moved out of the loop as a device related to the loop.
By moving processing irrelevant to the loop in this way, it is possible to reduce the program execution time while reducing the program size.
このように、実施の形態4では、同様の処理をループ化して統一しているため、可読性を向上することができる。また、変更する箇所が繰り返し記述されている演算の場合は、繰り返しと同数の箇所に対して変更する必要があるが、繰り返しをループ化することによって、変更箇所を一箇所にまとめることができ、メンテナンス性が向上するという効果がある。 As described above, in the fourth embodiment, the same processing is looped and unified, so that readability can be improved. In addition, in the case of an operation in which the part to be changed is described repeatedly, it is necessary to change the same number of parts as the number of repetitions, but by making the loop into a loop, the changed parts can be combined into one place, There is an effect that the maintainability is improved.
以上のように、実施の形態4のラダープログラム最適化装置によれば、プログラム最適化手段は、デバイスの表現を置き換えることによってループ処理に置き換えたプログラムに対して、ループに無関係な処理をループ外に移動させるようにしたので、プログラムのサイズを削減しつつ、プログラムの実行時間を短縮することが可能となる。 As described above, according to the ladder program optimizing apparatus of the fourth embodiment, the program optimizing unit performs processing irrelevant to the loop outside the loop with respect to the program replaced with the loop processing by replacing the device expression. Therefore, it is possible to reduce the program execution time while reducing the size of the program.
また、本発明の最適化プログラムによれば、ラダープログラムに対して最適化処理を行うコンピュータを、実施の形態1から実施の形態4のうちいずれかのラダープログラム最適化装置として機能させるようにしたので、実施の形態1から実施の形態4のうちのいずれかの実施の形態の効果を奏するラダープログラム最適化装置をコンピュータ上に実現することができる。 Further, according to the optimization program of the present invention, the computer that performs the optimization process on the ladder program is caused to function as any one of the ladder program optimization devices in the first to fourth embodiments. Therefore, the ladder program optimizing device that exhibits the effects of any one of the first to fourth embodiments can be realized on a computer.
400 ラダープログラム最適化装置、401 ラダープログラム解析手段、402,402a,402b プログラム最適化手段、403 ラダープログラム生成手段、404,404a,404b プログラム置換判定手段、405 デバイスソート手段、406 論理最適化手段、407 デバイス変換手段、501 最適化前ラダープログラム、502 最適化後ラダープログラム、503 ILプログラム、504,504a 最適化後ILプログラム。 400 ladder program optimization device, 401 ladder program analysis means, 402, 402a, 402b program optimization means, 403 ladder program generation means, 404, 404a, 404b program replacement judgment means, 405 device sort means, 406 logic optimization means, 407 Device conversion means, 501 ladder program before optimization, 502 ladder program after optimization, 503 IL program, 504, 504a IL program after optimization.
Claims (5)
前記ラダープログラム解析手段で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、当該置き換えられたプログラムに対して、プログラムサイズが削減され、かつ当該置き換えの前後で処理の等価性が保たれているかを確認するプログラム最適化手段と、
前記プログラム最適化手段で確認されたプログラムからラダープログラムを生成するラダープログラム生成手段とを備えたラダープログラム最適化装置。 Ladder program analysis means for analyzing the ladder program;
For a plurality of circuit blocks having the same instruction configuration and device type in the program analyzed by the ladder program analysis means and having different device numbers, treat them as common sub-expressions by replacing the device representation. A program optimizing means for confirming whether the program size is reduced for the replaced program and whether processing equivalence is maintained before and after the replacement;
A ladder program optimizing device comprising: ladder program generating means for generating a ladder program from a program confirmed by the program optimizing means.
プログラム最適化手段は、前記デバイスソート手段によってデバイスの並びが置き換えられたプログラムに対してデバイスの表現を置き換えることを特徴とする請求項1記載のラダープログラム最適化装置。 Device sort means to replace the device list,
2. The ladder program optimizing apparatus according to claim 1, wherein the program optimizing unit replaces the representation of the device with respect to the program in which the device arrangement is replaced by the device sort unit.
プログラム最適化手段は、前記デバイス変換手段によって、デバイス種類かデバイス番号のうち少なくとも一方を置き換えたプログラムに対してデバイスの表現を置き換えることを特徴とする請求項1または請求項2記載のラダープログラム最適化装置 Device conversion means for replacing at least one of the device type and device number,
3. The ladder program optimization according to claim 1, wherein the program optimization unit replaces the representation of the device with respect to the program in which at least one of the device type and the device number is replaced by the device conversion unit. Device
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006099161A JP4494361B2 (en) | 2006-03-31 | 2006-03-31 | Ladder program optimization device and optimization program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006099161A JP4494361B2 (en) | 2006-03-31 | 2006-03-31 | Ladder program optimization device and optimization program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007272679A true JP2007272679A (en) | 2007-10-18 |
JP4494361B2 JP4494361B2 (en) | 2010-06-30 |
Family
ID=38675407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006099161A Expired - Fee Related JP4494361B2 (en) | 2006-03-31 | 2006-03-31 | Ladder program optimization device and optimization program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4494361B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5951123B2 (en) * | 2014-07-14 | 2016-07-13 | 三菱電機株式会社 | Control device |
JP2017207962A (en) * | 2016-05-19 | 2017-11-24 | ファナック株式会社 | Ladder program analysis device |
WO2018042520A1 (en) * | 2016-08-30 | 2018-03-08 | 三菱電機株式会社 | Program editing device, program editing method and program editing program |
WO2019176451A1 (en) * | 2018-03-14 | 2019-09-19 | オムロン株式会社 | Ladder diagram program generation assistance device, ladder diagram program generation assistance method, and ladder diagram program generation assistance program |
WO2020184195A1 (en) * | 2019-03-12 | 2020-09-17 | オムロン株式会社 | Ladder diagram program creation assistance device, ladder diagram program creation assistance method, and ladder diagram program creation assistance program |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02148106A (en) * | 1988-11-29 | 1990-06-07 | Fanuc Ltd | Execution system for sequence program |
JPH07168719A (en) * | 1993-12-14 | 1995-07-04 | Matsushita Electric Ind Co Ltd | Redundant type removing device |
JPH09198110A (en) * | 1996-01-18 | 1997-07-31 | Nissan Motor Co Ltd | Optimization method for ladder sequence circuit |
JPH09212212A (en) * | 1996-02-01 | 1997-08-15 | Nissan Motor Co Ltd | Method for collating sequence circuit |
JP2001350650A (en) * | 2000-06-08 | 2001-12-21 | Ntt Comware Corp | Inspecting method and device for software program equivalency, and recording medium therefor |
JP2003167745A (en) * | 2001-12-04 | 2003-06-13 | Oki Electric Ind Co Ltd | Network optimization processing system |
JP2004185287A (en) * | 2002-12-03 | 2004-07-02 | I L C:Kk | One chip microcomputer, and one chip microcomputer basic program |
-
2006
- 2006-03-31 JP JP2006099161A patent/JP4494361B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02148106A (en) * | 1988-11-29 | 1990-06-07 | Fanuc Ltd | Execution system for sequence program |
JPH07168719A (en) * | 1993-12-14 | 1995-07-04 | Matsushita Electric Ind Co Ltd | Redundant type removing device |
JPH09198110A (en) * | 1996-01-18 | 1997-07-31 | Nissan Motor Co Ltd | Optimization method for ladder sequence circuit |
JPH09212212A (en) * | 1996-02-01 | 1997-08-15 | Nissan Motor Co Ltd | Method for collating sequence circuit |
JP2001350650A (en) * | 2000-06-08 | 2001-12-21 | Ntt Comware Corp | Inspecting method and device for software program equivalency, and recording medium therefor |
JP2003167745A (en) * | 2001-12-04 | 2003-06-13 | Oki Electric Ind Co Ltd | Network optimization processing system |
JP2004185287A (en) * | 2002-12-03 | 2004-07-02 | I L C:Kk | One chip microcomputer, and one chip microcomputer basic program |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5951123B2 (en) * | 2014-07-14 | 2016-07-13 | 三菱電機株式会社 | Control device |
JPWO2016009477A1 (en) * | 2014-07-14 | 2017-04-27 | 三菱電機株式会社 | Control device |
JP2017207962A (en) * | 2016-05-19 | 2017-11-24 | ファナック株式会社 | Ladder program analysis device |
US10565010B2 (en) | 2016-05-19 | 2020-02-18 | Fanuc Corporation | Ladder program analyzing device |
US10838764B2 (en) | 2016-05-19 | 2020-11-17 | Fanuc Corporation | Ladder program analyzing device |
WO2018042520A1 (en) * | 2016-08-30 | 2018-03-08 | 三菱電機株式会社 | Program editing device, program editing method and program editing program |
JPWO2018042520A1 (en) * | 2016-08-30 | 2018-12-06 | 三菱電機株式会社 | Program editing apparatus, program editing method, and program editing program |
WO2019176451A1 (en) * | 2018-03-14 | 2019-09-19 | オムロン株式会社 | Ladder diagram program generation assistance device, ladder diagram program generation assistance method, and ladder diagram program generation assistance program |
JP2019159893A (en) * | 2018-03-14 | 2019-09-19 | オムロン株式会社 | Ladder diagram program creation support device, ladder diagram program creation support method and ladder diagram program creation support program |
US11378928B2 (en) | 2018-03-14 | 2022-07-05 | Omron Corporation | Ladder diagram program generation assistance device, ladder diagram program generation assistance method, and recording medium |
WO2020184195A1 (en) * | 2019-03-12 | 2020-09-17 | オムロン株式会社 | Ladder diagram program creation assistance device, ladder diagram program creation assistance method, and ladder diagram program creation assistance program |
US11853025B2 (en) | 2019-03-12 | 2023-12-26 | Omron Corporation | Ladder diagram program creation assistance device, ladder diagram program creation assistance method, and non-transitory computer readable recording medium |
Also Published As
Publication number | Publication date |
---|---|
JP4494361B2 (en) | 2010-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100465895C (en) | Compiler, compilation method, and compilation program | |
JP4042604B2 (en) | Program parallelization apparatus, program parallelization method, and program parallelization program | |
US6243864B1 (en) | Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths | |
JP4494361B2 (en) | Ladder program optimization device and optimization program | |
JP2500079B2 (en) | Program optimization method and compiler system | |
JP2002099312A (en) | Programmable controller and control program development supporting device | |
US9658855B2 (en) | Compile method and compiler apparatus | |
JPH05342298A (en) | Simulation device | |
CN102099781A (en) | Branch predicting device, branch predicting method thereof, compiler, compiling method thereof, and medium for storing branch predicting program | |
US6813763B1 (en) | Program conversion device for increasing hit rate of branch prediction and method therefor | |
JP2015201119A (en) | Compilation program, compilation method, and compilation device | |
CN1523496A (en) | Method and system for stopping unnecessary processing conditional instructions of processor | |
Li et al. | Toward less hidden cost of code completion with acceptance and ranking models | |
CN117472388B (en) | Method, system and related equipment for optimizing program performance | |
CN103838616A (en) | Tree program branch based computer program immediate compiling method | |
JP6193151B2 (en) | Multi-branch decision syntax optimization processor | |
CN112114817A (en) | COBOL language-based data dictionary field information acquisition method and device | |
CN101351801A (en) | Method for reconstructing statement, and computer system having the function therefor | |
US20170039044A1 (en) | Compiling apparatus and compiling method | |
US20140344795A1 (en) | Computer-readable recording medium, compiling method, and information processing apparatus | |
CN114995832A (en) | Dynamic and static combined binary program translation method | |
EP0638862B1 (en) | Method and system for processing language | |
CN104239001A (en) | Operand generation in at least one processing pipeline | |
JP7506718B2 (en) | Processor and program for controlling pipeline processing based on jump instructions | |
TWI801836B (en) | Method for transforming and optimizing codes between different programing languages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071005 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080630 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081217 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100325 |
|
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: 20100330 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100407 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130416 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130416 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140416 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |