JP4494361B2 - ラダープログラム最適化装置および最適化プログラム - Google Patents
ラダープログラム最適化装置および最適化プログラム Download PDFInfo
- Publication number
- JP4494361B2 JP4494361B2 JP2006099161A JP2006099161A JP4494361B2 JP 4494361 B2 JP4494361 B2 JP 4494361B2 JP 2006099161 A JP2006099161 A JP 2006099161A JP 2006099161 A JP2006099161 A JP 2006099161A JP 4494361 B2 JP4494361 B2 JP 4494361B2
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Programmable Controllers (AREA)
Description
ところが、モジュール化されたラダープログラムを組み合わせる方法では、プログラムの作成は効率化されるが、論理の重複や冗長なデータ転送が含まれてしまうため、プログラムサイズが大きいラダープログラムとなってしまう。
この中で部分ブロック置換は、ラダープログラムの共通部分を検出し、その部分ブロックの演算結果を1つの変数に代入し、以降のプログラムで共通部分が出現する箇所を、その変数に置き換える処理である。これにより、重複する処理を繰り返さないため、プログラムのサイズが小さくなり、処理時間も短縮することができる。
図1は、この発明の実施の形態1によるラダープログラム最適化装置の適用例を示す構成図である。
図1に示すプログラマブルコントローラ100は、CPU101やI/O102を備え、生産設備200を制御するためのものであり、ラダープログラムによってその動作が記述されている。CPU101は、I/O102を介して各種スイッチやセンサからの信号を受け取り、モータや電磁弁へ信号を出力することにより、生産設備の制御を行うためのプロセッサである。また、I/O102は、生産設備200との信号の入出力を行うためのインタフェースである。
図2は、実施の形態1のラダープログラム最適化装置の構成図である。
ラダープログラム最適化装置400は、図示のように、ラダープログラム解析手段401、プログラム最適化手段402、ラダープログラム生成手段403から構成される。
図3は、最適化前ラダープログラム501の説明図である。
図4は、最適化後ラダープログラム502の説明図である。
図5は、解析後のILプログラムの一部を示す説明図である。
ラダープログラム解析手段401は、図3に示す最適化前ラダープログラム501を入力し、図5に示すようなILプログラムに変換する。
回路ブロックとは、ラダープログラムの最小単位であり、入力要素と出力要素の一まとまりを指す。プログラム最適化手段402は、ILプログラムの中から、複数の回路ブロック間で共通する部分を検出する。プログラム最適化手段402は、命令の構成が同じでデバイス種類が同じ、かつデバイス番号が異なる箇所を検出し、インデックスデバイスによる表現に置き換える。ここで、命令の構成とは、命令の種類(LOAD命令、AND命令等)と、命令の並び(AND命令の後にOR命令、といった並び)を意味している。
尚、図6に示す処理および後述する図7の処理はプログラム最適化手段402における図示しないプログラム最適化制御手段が行うものである。
プログラムの置き換えでは、“FOR”、“NEXT”、“INC”命令の追加が必要となり、必ずしも置き換えによってプログラムサイズが縮小されるとは限らない。そこで、プログラムの置き換えによってプログラムのサイズを削減する効果があるのか、また、プログラムを置き換えて等価な処理を実現できるかを判定するため、プログラム置換判定手段404でその判定を行う。
尚、この例では、“FOR”、“NEXT”を用いているが、ジャンプ命令とラベルの組み合わせによる表現に変換することも可能である。
先ず、上述した図6のステップST112で登録した相違デバイスリストについて、デバイスの種類が同一であるかを判定する(ステップST301)。デバイスの種類が同じ場合は、デバイスの番号の差を算出する(ステップST302)。次に、この差に基づいて、インデックスデバイス表現を作成する(ステップST303)。インデックスデバイス表現とは、図4に示したデバイスの表現である。即ち、ステップST303では、異なるデバイス番号の部分をインデックスデバイスによる表現に置き換えると共に、共通するプログラムが格納される共通部分リストに基づいて、その部分をFOR〜NEXT文で囲みループすることによって、プログラムサイズを削減したプログラムを作成する。更に、このプログラムを最適化後のプログラム置換候補として登録する(ステップST304)。また、ステップST301において、相違デバイスのデバイス種類が異なる場合は、直ちに終了する。
図8は、プログラム置換判定手段404の動作を示すフローチャートである。
プログラム置換判定手段404は、プログラム最適化手段402におけるプログラム最適化制御手段の置換による効果を確認すると共に、置き換えの正当性を判定する。プログラム置換判定手段404は、先ず、図7のステップST304において置き換え候補として登録されたプログラムについて、置き換え前後のプログラムサイズを比較する(ステップST401)。置き換え後のプログラムサイズが小さいと判定される場合は(ステップST402)、処理の等価性をチェックする(ステップST403)。この処理の等価性とは、置き換えによってプログラムの演算結果が異なることがないかを判定する処理である。論理的な等価性と共に、入力信号のタイミングの変化に対する等価性を確認する。等価性に問題が無ければ(ステップST404)、置換許可をプログラム最適化制御手段に通知する(ステップST405)。ステップST402において、プログラムサイズが縮小されない、あるいは、ステップST404において等価性に問題があれば、プログラム最適化制御手段に対して置換不許可を通知する(ステップST406)。
プログラムの置き換えによって問題が発生する場合の例として、割込みプログラムが挙げられる。割込みプログラムの実行とは、設定された割込み条件が満たされた時点で、実行中のプログラムを中断し、その割込み条件に対応付けられたプログラムを実行する機能である。対応する割込みプログラムの処理が完了すると、中断されたプログラムに戻りその位置から実行を再開する処理である。
図9は、実施の形態2のラダープログラム解析手段401を示す構成図である。
実施の形態2のラダープログラム解析手段401は、デバイスソート手段405と論理最適化手段406を備えている。デバイスソート手段405は、デバイスの並びを変更する機能を有し、論理最適化手段406は、論理演算の最適化を行う機能を有している。
“AND”命令が連続する場合や、“OR”命令が連続する場合に、使用されているデバイスを、デバイス番号を元に、例えば昇順にソートしてプログラムの命令の並びを変更する。デバイスをソートする前のサンプルプログラムを図10に、ソート後のプログラムを図11に示す。
デバイスソート手段405は、先ず、ラダープログラム解析手段401中の図示しない変換手段で変換されたILを1行読み込む(ステップST501)。ここで、1行とは、命令とデバイスの組み合わせである。次にプログラムの終端であるかを判定する(ステップST502)。終端の場合は、処理を終了する。終端でなければ、読み込んだILプログラムの命令がAND命令であるかを判定する(ステップST503)。AND命令の場合は、後続のプログラムに対して、AND命令が連続する限り命令を読み出し、対応するデバイスを登録する(ステップST504)。後続する命令がAND命令でなくなった場合は、登録したデバイスを例えば昇順に並び換え、元のプログラムを変更する(ステップST505)。
“AND”命令と“OR”命令の組み合わせで表現される場合、命令とその命令に対応するデバイスの順序を入れ替えることによって、等価な演算結果を生成するプログラムに変換することができる。特に、スタックの動作が最適となるように、命令と対応するデバイスの順序を入れ替えることにより、生成するラダープログラムのステップ数を削減することができる。この例を図13と図14に示す。
図14は、論理の最適化によってANB命令を削減したラダープログラムである。命令の順序を入れ換えることによって、ステップ数を36ステップに削減している。
図15は、実施の形態3のプログラム最適化手段402aの構成図である。
実施の形態3のプログラム最適化手段402aは、デバイス変換手段407とプログラム置換判定手段404aとを備え、入力されるILプログラム503に対して最適化を行い、最適化後ILプログラム504を出力するものである。デバイス変換手段407は、プログラム中に現れるデバイスを、別のデバイスに置き換える手段である。このデバイスの置き換えでは、本発明による最適化方法が適用できるようにデバイスの名前を置き換える。即ち、デバイスの名前を構成するデバイス種類かデバイス番号のうち少なくとも一方を置き換える。また、プログラム置換判定手段404aは、デバイス変換手段407によってデバイスが置き換えられたプログラムに対して置換判定を行うものであり、置換判定そのものの処理は実施の形態1のプログラム置換判定手段404と同様である。
図16に示すプログラム例では、図3に示したラダープログラムとは異なり“X8”の部分が“X9”となっている。このため、図4に示したようなラダープログラムに最適化することができない。そこで、デバイス変換手段407によって、問題となる“X9”のデバイスを“X8”に置き換える。これらは、いずれもデバイス種類が“X”であるため、置き換えが可能である。
この例では、2行目の追加によって、2ステップ増える。但し、最適化前が39ステップであったのに対し、最適化後は、25+2=27ステップ(実施の形態1で説明したように、25ステップに最適化されるが、置き換え追加により2ステップ加算される)となり最適化の効果がある。
(2)置き換え先のデバイスがプログラム中の他の部分で使われていないこと
この例の場合、“X8”デバイスが、このプログラムの他の部分で使われていないことが必要である。
実施の形態4は、ループ化した後、共通部分をループ外へ括りだすようにしたものである。
図18は、実施の形態4におけるプログラム最適化手段402bの構成図である。
実施の形態4のプログラム最適化手段402bは、ループ外移動手段408、プログラム置換判定手段404bを備え、入力されるILプログラム503に対して最適化を行い、最適化後ILプログラム504aを出力するものである。ループ外移動手段408は、プログラム最適化手段402b内の図示しないプログラム最適化制御手段によってループ化される部分について、ループ処理に関係の無い部分をループ外に移動する手段である。また、プログラム置換判定手段404bは、ループ外移動手段408で処理されたプログラムに対して置換判定を行う手段であり、置換判定そのものの処理は実施の形態1のプログラム置換判定手段404と同様である。
この図において、破線枠510内の部分がループ中で毎回行われる処理であり、ループの外に出しても同じ演算結果が得られ、かつ処理時間が短縮できる。このため、ループ外移動手段408は、その部分の演算結果を他のデバイスに代入し、ループ内ではそのデバイスを参照するように変更する。
図20は、図19の共通部分をループ外へ移動した結果を示す説明図である。
図19に示すラダープログラムでは36ステップあるのに対して、図20に示すラダープログラムでは35ステップに削減されている。
このようにループに無関係な処理をループ外へ移動することにより、プログラムのサイズを削減しつつ、プログラムの実行時間を短縮することが可能となる。
Claims (5)
- ラダープログラムを解析するラダープログラム解析手段と、
前記ラダープログラム解析手段で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、当該置き換えられたプログラムに対して、プログラムサイズが削減され、かつ当該置き換えの前後で処理の等価性が保たれているかを確認するプログラム最適化手段と、
前記プログラム最適化手段で確認されたプログラムからラダープログラムを生成するラダープログラム生成手段とを備えたラダープログラム最適化装置。 - デバイスの並びの置き換えを行うデバイスソート手段を備え、
プログラム最適化手段は、前記デバイスソート手段によってデバイスの並びが置き換えられたプログラムに対してデバイスの表現を置き換えることを特徴とする請求項1記載のラダープログラム最適化装置。 - デバイス種類かデバイス番号のうち少なくとも一方を置き換えるデバイス変換手段を備え、
プログラム最適化手段は、前記デバイス変換手段によって、デバイス種類かデバイス番号のうち少なくとも一方を置き換えたプログラムに対してデバイスの表現を置き換えることを特徴とする請求項1または請求項2記載のラダープログラム最適化装置 - プログラム最適化手段は、デバイスの表現を置き換えることによってループ処理に置き換えたプログラムに対して、当該ループに無関係な処理をループ外に移動させることを特徴とする請求項1から請求項3のうちのいずれか1項記載のラダープログラム最適化装置。
- ラダープログラムに対して最適化処理を行うコンピュータを、請求項1から請求項4のうちいずれか1項のラダープログラム最適化装置として機能させるための最適化プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006099161A JP4494361B2 (ja) | 2006-03-31 | 2006-03-31 | ラダープログラム最適化装置および最適化プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006099161A JP4494361B2 (ja) | 2006-03-31 | 2006-03-31 | ラダープログラム最適化装置および最適化プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007272679A JP2007272679A (ja) | 2007-10-18 |
JP4494361B2 true JP4494361B2 (ja) | 2010-06-30 |
Family
ID=38675407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006099161A Expired - Fee Related JP4494361B2 (ja) | 2006-03-31 | 2006-03-31 | ラダープログラム最適化装置および最適化プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4494361B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402563A (zh) * | 2016-05-19 | 2017-11-28 | 发那科株式会社 | 梯形程序分析装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016009477A1 (ja) * | 2014-07-14 | 2016-01-21 | 三菱電機株式会社 | 制御装置 |
US10990073B2 (en) * | 2016-08-30 | 2021-04-27 | Mitsubishi Electric Corporation | Program editing device, program editing method, and computer readable medium |
JP6988597B2 (ja) * | 2018-03-14 | 2022-01-05 | オムロン株式会社 | ラダー図プログラム作成支援装置、ラダー図プログラム作成支援方法、およびラダー図プログラム作成支援プログラム |
JP7423895B2 (ja) | 2019-03-12 | 2024-01-30 | オムロン株式会社 | ラダー図プログラム作成支援装置、ラダー図プログラム作成支援方法、およびラダー図プログラム作成支援プログラム |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02148106A (ja) * | 1988-11-29 | 1990-06-07 | Fanuc Ltd | シーケンスプログラムの実行方式 |
JPH07168719A (ja) * | 1993-12-14 | 1995-07-04 | Matsushita Electric Ind Co Ltd | 冗長式除去装置 |
JPH09198110A (ja) * | 1996-01-18 | 1997-07-31 | Nissan Motor Co Ltd | ラダーシーケンス回路の最適化方法 |
JPH09212212A (ja) * | 1996-02-01 | 1997-08-15 | Nissan Motor Co Ltd | シーケンス回路の照合方法 |
JP2001350650A (ja) * | 2000-06-08 | 2001-12-21 | Ntt Comware Corp | ソフトウェアプログラム同等性検証方法及びソフトウェアプログラム同等性検証装置並びにその記録媒体 |
JP2003167745A (ja) * | 2001-12-04 | 2003-06-13 | Oki Electric Ind Co Ltd | ネットワーク最適化処理システム |
JP2004185287A (ja) * | 2002-12-03 | 2004-07-02 | I L C:Kk | ワンチップマイコンおよびワンチップマイコン基本プログラム |
-
2006
- 2006-03-31 JP JP2006099161A patent/JP4494361B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02148106A (ja) * | 1988-11-29 | 1990-06-07 | Fanuc Ltd | シーケンスプログラムの実行方式 |
JPH07168719A (ja) * | 1993-12-14 | 1995-07-04 | Matsushita Electric Ind Co Ltd | 冗長式除去装置 |
JPH09198110A (ja) * | 1996-01-18 | 1997-07-31 | Nissan Motor Co Ltd | ラダーシーケンス回路の最適化方法 |
JPH09212212A (ja) * | 1996-02-01 | 1997-08-15 | Nissan Motor Co Ltd | シーケンス回路の照合方法 |
JP2001350650A (ja) * | 2000-06-08 | 2001-12-21 | Ntt Comware Corp | ソフトウェアプログラム同等性検証方法及びソフトウェアプログラム同等性検証装置並びにその記録媒体 |
JP2003167745A (ja) * | 2001-12-04 | 2003-06-13 | Oki Electric Ind Co Ltd | ネットワーク最適化処理システム |
JP2004185287A (ja) * | 2002-12-03 | 2004-07-02 | I L C:Kk | ワンチップマイコンおよびワンチップマイコン基本プログラム |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402563A (zh) * | 2016-05-19 | 2017-11-28 | 发那科株式会社 | 梯形程序分析装置 |
CN107402563B (zh) * | 2016-05-19 | 2019-08-13 | 发那科株式会社 | 梯形程序分析装置 |
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 |
Also Published As
Publication number | Publication date |
---|---|
JP2007272679A (ja) | 2007-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100465895C (zh) | 编译器、编译方法 | |
JP4494361B2 (ja) | ラダープログラム最適化装置および最適化プログラム | |
JP2500079B2 (ja) | プログラムの最適化方法及びコンパイラ・システム | |
JP2004302706A (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
JPH05342298A (ja) | シミュレーション装置 | |
US9658855B2 (en) | Compile method and compiler apparatus | |
JPH1139167A (ja) | 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ | |
KR20020039686A (ko) | 코드 생성의 모드 변경 방법 | |
CN108139908A (zh) | 移动前缀指令 | |
US6813763B1 (en) | Program conversion device for increasing hit rate of branch prediction and method therefor | |
JP7077909B2 (ja) | デッドコード解析プログラム、デッドコード解析方法及びデッドコード解析装置 | |
CN103838616A (zh) | 基于树型程序分支的计算机程序即时编译方法 | |
US20140344795A1 (en) | Computer-readable recording medium, compiling method, and information processing apparatus | |
EP2063355A1 (en) | Branch prediction method | |
RU2206119C2 (ru) | Способ получения объектного кода | |
EP0638862B1 (en) | Method and system for processing language | |
JPWO2017204139A1 (ja) | データ処理装置、データ処理方法、およびプログラム記録媒体 | |
US20170039044A1 (en) | Compiling apparatus and compiling method | |
CN117472388B (zh) | 一种优化程序性能的方法、系统及相关设备 | |
JP4563669B2 (ja) | 命令模擬装置 | |
TWI801836B (zh) | 將程式碼於不同程式語言間進行轉換及優化的方法 | |
WO2024029174A1 (ja) | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体 | |
JPH0235349B2 (ja) | Ruupunaihairetsushoribekutorukashorihoshiki | |
WO2021144894A1 (ja) | 情報処理装置、情報処理方法、および、コンピュータ読み取り可能な記録媒体 | |
JP4779908B2 (ja) | 回路設計支援システム、回路設計支援方法及びプログラム |
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 or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130416 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130416 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event 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 |