JP4494361B2 - ラダープログラム最適化装置および最適化プログラム - Google Patents

ラダープログラム最適化装置および最適化プログラム Download PDF

Info

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
Application number
JP2006099161A
Other languages
English (en)
Other versions
JP2007272679A (ja
Inventor
英明 南出
賢一 佐々木
輝明 田中
保彦 千波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2006099161A priority Critical patent/JP4494361B2/ja
Publication of JP2007272679A publication Critical patent/JP2007272679A/ja
Application granted granted Critical
Publication of JP4494361B2 publication Critical patent/JP4494361B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

この発明は、例えばプログラマブルコントローラに使用されるラダープログラムの最適化を行うラダープログラム最適化装置および最適化プログラムに関するものである。
プログラマブルコントローラは、小規模な機械の制御から大規模な生産設備の制御まで幅広く用いられている。このプログラマブルコントローラには、各種センサやスイッチなどの入力機器と、モータや電磁弁などの出力機器が接続される。大規模な生産設備では、この入力機器と出力機器の数は膨大なものとなる。
プログラマブルコントローラは、入力機器と出力機器の接続をラダープログラムで表現する。このラダープログラムは、設計者がプログラム開発環境から入力するか、既にプログラマブルコントローラに書き込まれているラダープログラムの一部をモジュール化し、組み合わせて作成する。
新規にラダープログラムを作成する場合、小規模な機械を制御するラダープログラムは、プログラム開発環境を用いて初めからラダープログラムを作成することができる。しかし、大規模な生産設備では、入力機器や出力機器の数が膨大となり、またそれらの接続を表現するラダープログラムも複雑となるため、最初から入力する方法では効率が悪い。このような場合は、過去に作成したモジュール化されたラダープログラムを組み合わせることによって、プログラムを作成する。
ところが、モジュール化されたラダープログラムを組み合わせる方法では、プログラムの作成は効率化されるが、論理の重複や冗長なデータ転送が含まれてしまうため、プログラムサイズが大きいラダープログラムとなってしまう。
また、人が読みやすいラダープログラムには、論理の重複や冗長性が存在するためサイズが大きくなる。プログラムサイズを削減する目的で、プログラムの最適化を意識してプログラムを記述することもできる。しかし、最適化を意識せずにプログラムを作成した方が、短時間でプログラムの開発を行うことができる。また、論理的な冗長性を全く持たないプログラムは、実行効率は高いが処理内容の解読に時間を要し、デバッグやメンテナンス作業の効率が低下してしまう。このようにプログラムの開発やメンテナンスの効率化を優先すると、ラダープログラムのサイズは大きくなる。
更に、近年は機器の制御のみならず生産に関連するデータの処理もプログラマブルコントローラ上で行うようになっている。機器の制御に関するラダープログラムだけではなく、データ処理のためのラダープログラムが必要となるため、ラダープログラムのサイズが大型化している。
プログラムのサイズが大きくなれば、処理量の増加に伴い実行時間が長くなると共に、プログラムのサイズがプログラマブルコントローラのプログラム容量に収まらなくなるといった問題がある。プログラムの処理時間やプログラムのサイズを短縮する目的で、目視によってプログラムをチェックし、よりサイズが小さくなるプログラム記述への置き換えを進めることも可能である。しかし、何万行もあるプログラムの中から、最適化可能な部分を見つけ出し、元のプログラムと完全に等価な処理でサイズを削減した記述し直す作業は、多大な時間と労力を要してしまう。
このような問題を解決するため、自動的に論理の重複を取り除き、共通の処理をまとめることでラダープログラムを最適化する方法が提案されている。例えば、特許文献1には、重複する論理の統合、部分ブロック置換、サブルーチン化処理について示されている。
この中で部分ブロック置換は、ラダープログラムの共通部分を検出し、その部分ブロックの演算結果を1つの変数に代入し、以降のプログラムで共通部分が出現する箇所を、その変数に置き換える処理である。これにより、重複する処理を繰り返さないため、プログラムのサイズが小さくなり、処理時間も短縮することができる。
特開平9−198110号公報
このような従来の部分ブロック置換による最適化方法では、命令とデバイスの構成が全く同じ部分式を対象としているため、命令の構成が同じであるがデバイスが異なる場合に対応できない、という問題があった。ここでのデバイスとは、高級プログラミング言語の変数に相当するものである。
プログラマブルコントローラでは、同様の機器を複数接続し、それらに対して同じ入力信号による論理の組み合わせで出力信号を算出する場合がある。このような場合、全く同じ処理をほぼ同じデバイスの組み合わせによって記述し、出力先や入力元の一部のデバイスのみが異なるラダープログラムになる。従来の最適化方法では、命令とデバイスの構成が全く同じ部分式を対象としているため、このようなラダープログラムについては、最適化できないという問題点があった。
この発明は上記のような課題を解決するためになされたもので、作成後や編集後のラダープログラムを自動的に最適化することができ、かつ、最適化の範囲を拡大することのできるラダープログラム最適化装置および最適化プログラムを得ることを目的とする。
この発明に係るラダープログラム最適化装置は、ラダープログラム解析手段で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認するプログラム最適化手段を備えたものである。
この発明のラダープログラム最適化装置は、命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えるようにしたので、作成後や編集後のラダープログラムを自動的に最適化することができ、かつ、最適化の範囲を拡大することができる。
実施の形態1.
図1は、この発明の実施の形態1によるラダープログラム最適化装置の適用例を示す構成図である。
図1に示すプログラマブルコントローラ100は、CPU101やI/O102を備え、生産設備200を制御するためのものであり、ラダープログラムによってその動作が記述されている。CPU101は、I/O102を介して各種スイッチやセンサからの信号を受け取り、モータや電磁弁へ信号を出力することにより、生産設備の制御を行うためのプロセッサである。また、I/O102は、生産設備200との信号の入出力を行うためのインタフェースである。
ラダープログラム開発装置300は、プログラマブルコントローラ100で実行するラダープログラムの作成や編集を行い、プログラマブルコントローラ100に対して出力する機能を有するものである。また、プログラマブルコントローラ100からラダープログラムを取り出す機能も有しており、プログラマブルコントローラ100に格納されている既存のラダープログラムを取り出した後、編集を行い、再度プログラマブルコントローラ100に書き込むことが可能である。また、ラダープログラム開発装置300は、ラダープログラム最適化装置400との間で、ラダープログラムの受け渡しが可能である。
ラダープログラム最適化装置400は、本発明のラダープログラムの最適化方法が実際に動作する装置である。ラダープログラム最適化装置400は、ラダープログラム開発装置300からラダープログラムを受け取り、そのラダープログラムを最適化した後、再びプログラム開発装置に渡す機能を有している。尚、ラダープログラム開発装置300とラダープログラム最適化装置400とが物理的に一つの装置上で組み合わされている形態であってもよい。
次に、ラダープログラム最適化装置400の詳細について説明する。
図2は、実施の形態1のラダープログラム最適化装置の構成図である。
ラダープログラム最適化装置400は、図示のように、ラダープログラム解析手段401、プログラム最適化手段402、ラダープログラム生成手段403から構成される。
ラダープログラム解析手段401は、入力される最適化前ラダープログラム501を、例えば、インストラクション・リスト表現(以下IL)といった所定の表現に変換する機能を有する。プログラム最適化手段402は、ラダープログラム解析手段401で変換されたILプログラムに対して、最適化の処理を行う機能を有する。ここでの最適化には、論理的な冗長性を排除する論理条件の最適化、実行されることの無い命令を削除する無用命令の削除などの他に、本発明の最適化方法による最適化を含んでいる。
プログラム最適化手段402は、ラダープログラム解析手段401で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認する機能を有している。また、プログラム最適化手段402はプログラム置換判定手段404を有し、このプログラム置換判定手段404によって、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認する機能を実現している。
即ち、プログラム置換判定手段404は、プログラム最適化手段402によって検出された最適化可能な部分について、最適化候補プログラムへの置き換えの是非を判定する機能を有する。例えば、置き換え候補のプログラムについて、プログラムサイズが削減されているか、プログラムの置き換えによって問題が発生しないかを判定する。プログラムサイズが削減され、かつ問題が発生しない場合は、置き換えを認める判定を行う。一方、プログラムサイズが同じ場合や増加する場合、あるいは、プログラムサイズが削減されるが、置き換えによって問題が発生する場合は、プログラムの置き換えを認めない。
ラダープログラム生成手段403は、プログラム最適化手段402で最適化されたプログラムに基づいて、ラダープログラムを生成し、最適化後ラダープログラム502として出力する手段である。
このようなラダープログラム最適化装置400は、コンピュータによって実現され、ハードウェアとしては、図示しないCPU、ROM、RAM、表示装置、入力装置、ハードディスクを備え、また、各手段に対応したプログラムを有している。
例えば、CPUは、ROMやRAMを用い、ハードディスクに記憶された所定のプログラムを読み込んでそれぞれのプログラムを実行し、ラダープログラム解析手段401、プログラム最適化手段402、ラダープログラム生成手段403としての機能を実現する。また、CPUは、入力装置、表示装置と共に最適化するプログラムの選択手段として機能する。また、表示装置は、最適化前後のラダープログラムを表示する。更に、ハードディスクは、最適化前後のラダープログラムの記録手段としての機能を有している。
次に、実施の形態1の動作について説明する。
図3は、最適化前ラダープログラム501の説明図である。
図4は、最適化後ラダープログラム502の説明図である。
図5は、解析後のILプログラムの一部を示す説明図である。
ラダープログラム解析手段401は、図3に示す最適化前ラダープログラム501を入力し、図5に示すようなILプログラムに変換する。
次に、プログラム最適化手段402の動作について説明する。
回路ブロックとは、ラダープログラムの最小単位であり、入力要素と出力要素の一まとまりを指す。プログラム最適化手段402は、ILプログラムの中から、複数の回路ブロック間で共通する部分を検出する。プログラム最適化手段402は、命令の構成が同じでデバイス種類が同じ、かつデバイス番号が異なる箇所を検出し、インデックスデバイスによる表現に置き換える。ここで、命令の構成とは、命令の種類(LOAD命令、AND命令等)と、命令の並び(AND命令の後にOR命令、といった並び)を意味している。
また、デバイス名とは、例えば“X1”や“M100”といったデバイス種類とデバイス番号とから構成されたものを意味する。更に、デバイス種類とは、“X”、“Y”、”M”等の使用目的毎に分類が決められたデバイスのまとまりを指す。また、デバイス番号とは、“X1”、“Y10”、“M100”等、デバイスの種類を指す英文字の後に続く数字を指す。デバイスは、デバイス種類とデバイス番号によって、一意に決められる。
ここで、インデックスデバイスとは、デバイス番号を修飾するデバイスである。例えばインデックスデバイスは、“Zn”と表現される。ここでnは整数である。インデックスデバイスは、デバイス番号の後に続けて記述する。インデックスデバイスを用いたデバイスの表現の例としては、“X0Z1”が挙げられる。“Z1”デバイスの値が0(ゼロ)の場合は、“X0Z1”は、“X(0+0)”→“X0”デバイスを意味する。また、“Z1”デバイスの値が1の場合は、“X0Z1”は、“X(0+1)”→“X1”デバイスを意味する。このように、インデックスデバイスで修飾されたデバイスは、インデックスデバイスの値を変化させることによって、指し示すデバイスを切り換えることができる。
次に、図6のフローチャートを用いてプログラム最適化手段402の動作を詳細に説明する。
尚、図6に示す処理および後述する図7の処理はプログラム最適化手段402における図示しないプログラム最適化制御手段が行うものである。
先ず、ラダープログラムの先頭の回路ブロックの先頭の命令にカウンタAを、次の回路ブロックの先頭の命令にカウンタBを付加する(ステップST101)。次に、カウンタAが指す命令及びデバイスと、カウンタBが指す命令及びデバイスが同じであるかを判断する(ステップST102)。同じ場合は、プログラムの共通部分として、共通部分リストに登録する(ステップST103)。そして、カウンタA、カウンタBをそれぞれ次の命令を指すように進める(ステップST104)。ここで、カウンタAとカウンタBの指し示す命令及びデバイスが同じか否かを示す相違フラグをOFFに設定する(ステップST105)。
次に、カウンタAとカウンタBの指し示す命令及びデバイスが同じであるかを判定する(ステップST106)。同じ場合は、共通部分として、先の共通部分リストにその命令とデバイスを追加登録する(ステップST107)。そして、カウンタAまたは、カウンタBが回路ブロックの終端であれば、Aの処理に移る(ステップST108)。Aの処理は、プログラム置換判定手段404の処理であり、これについては後述する。カウンタAまたは、カウンタBが回路ブロックの終端でなければ、カウンタA及びカウンタBを1つ進め、それぞれ次の命令を指すように変更する(ステップST109)。そして、ステップST106に戻り、再びカウンタAとカウンタBの指す命令及びデバイスが同じであるかを判定する。
ステップST106において、カウンタAとカウンタBの指し示す内容が異なる場合は、相違フラグの状態を判定する(ステップST110)。相違フラグがOFFの場合は、ONにする(ステップST111)。次に、カウンタAとカウンタBの指し示す命令及びデバイスのうち、命令が同じ場合は、異なるデバイスを相違デバイスリストに登録する(ステップST112)。一方、ステップST110において、相違フラグがONの場合は、後述のプログラム置換判定手段404の処理に移行する。
また、ステップST102において、カウンタAとカウンタBが指し示す命令あるいはデバイスが異なる場合は、カウンタBを次の命令を指すように1つ進める(ステップST113)。ここで、カウンタBが回路ブロックの終端でなければ、ステップST102の処理に戻る(ステップST114)。カウンタBが回路ブロックの終端であれば、カウンタBを次の回路ブロックの先頭へ移す(ステップST115)。このとき、カウンタBが指す次の回路ブロックが存在するかを判定する(ステップST116)。次の回路ブロックが存在すれば、ステップST102へ戻る。次の回路ブロックが存在しなければ、カウンタAを次の回路ブロックの先頭へ、カウンタBをカウンタAの次の回路ブロックの先頭へ移動する(ステップST117)。そして、カウンタAが最後の回路ブロックであるかを判定し(ステップST118)、最後の回路ブロックである場合は、終了する。最後でなければステップST102に戻る。
図4に示す最適化後のプログラムで、“FOR”、“NEXT”で囲まれた部分は、“FOR”の引数で指定した回数だけ繰り返し実行される。また、“INC”は、引数で指定したデバイスの値を1つ加算する命令である。
プログラムの置き換えでは、“FOR”、“NEXT”、“INC”命令の追加が必要となり、必ずしも置き換えによってプログラムサイズが縮小されるとは限らない。そこで、プログラムの置き換えによってプログラムのサイズを削減する効果があるのか、また、プログラムを置き換えて等価な処理を実現できるかを判定するため、プログラム置換判定手段404でその判定を行う。
尚、この例では、“FOR”、“NEXT”を用いているが、ジャンプ命令とラベルの組み合わせによる表現に変換することも可能である。
図7は、プログラム最適化手段402における相違デバイスに対する処理を示すフローチャートである。
先ず、上述した図6のステップST112で登録した相違デバイスリストについて、デバイスの種類が同一であるかを判定する(ステップST301)。デバイスの種類が同じ場合は、デバイスの番号の差を算出する(ステップST302)。次に、この差に基づいて、インデックスデバイス表現を作成する(ステップST303)。インデックスデバイス表現とは、図4に示したデバイスの表現である。即ち、ステップST303では、異なるデバイス番号の部分をインデックスデバイスによる表現に置き換えると共に、共通するプログラムが格納される共通部分リストに基づいて、その部分をFOR〜NEXT文で囲みループすることによって、プログラムサイズを削減したプログラムを作成する。更に、このプログラムを最適化後のプログラム置換候補として登録する(ステップST304)。また、ステップST301において、相違デバイスのデバイス種類が異なる場合は、直ちに終了する。
尚、この例では、異なるデバイス番号のデバイスが1つの場合を示したが、デバイス番号が異なるデバイスが複数存在する場合は、それぞれ対応するデバイスについて相違デバイスリストを作成し、各々のデバイスに対してインデックスデバイスを設定することにより、同様にプログラムサイズを削減することができる。
また、これまでは、2つの回路ブロックを対象としていたが、最適化の範囲を3つの回路ブロック拡大する場合は、最初にこれまでの方法の通り、2つの回路ブロックについて、共通部分リストと相違デバイスリストを作成する。次に、その2つの回路ブロックに続く3つめの回路ブロックについて、共通部分リストと共通する命令の構成が存在するかを判定する。共通する命令の構成が存在し、その命令に付属するデバイスも同じであり、かつ相違デバイスリストに対応する位置のデバイスのみが異なり、更にそのデバイス番号の差が、以前の2つの回路ブロックの差と同一であれば、共通部分として扱う。デバイスの差が異なる場合は、共通部分として扱うことができないため、最適化は前の2つの回路ブロックに閉じて行う。
また、デバイス番号の変化が1ではない場合は、デバイス番号の差を算出し、その値だけループ処理の中でデバイスの値を加算あるいは減算する処理に置き換えることによって実現することができる。図4に示す最適化後の例では、デバイス番号が1つ異なるため、デバイスの値を1加算するINC命令を用いている。例えばデバイスの値が2増える場合は、ADD命令を用いる。
次に、プログラム置換判定手段404の動作について説明する。
図8は、プログラム置換判定手段404の動作を示すフローチャートである。
プログラム置換判定手段404は、プログラム最適化手段402におけるプログラム最適化制御手段の置換による効果を確認すると共に、置き換えの正当性を判定する。プログラム置換判定手段404は、先ず、図7のステップST304において置き換え候補として登録されたプログラムについて、置き換え前後のプログラムサイズを比較する(ステップST401)。置き換え後のプログラムサイズが小さいと判定される場合は(ステップST402)、処理の等価性をチェックする(ステップST403)。この処理の等価性とは、置き換えによってプログラムの演算結果が異なることがないかを判定する処理である。論理的な等価性と共に、入力信号のタイミングの変化に対する等価性を確認する。等価性に問題が無ければ(ステップST404)、置換許可をプログラム最適化制御手段に通知する(ステップST405)。ステップST402において、プログラムサイズが縮小されない、あるいは、ステップST404において等価性に問題があれば、プログラム最適化制御手段に対して置換不許可を通知する(ステップST406)。
次に、上記ステップST403における処理の等価性について説明する。
プログラムの置き換えによって問題が発生する場合の例として、割込みプログラムが挙げられる。割込みプログラムの実行とは、設定された割込み条件が満たされた時点で、実行中のプログラムを中断し、その割込み条件に対応付けられたプログラムを実行する機能である。対応する割込みプログラムの処理が完了すると、中断されたプログラムに戻りその位置から実行を再開する処理である。
割込みプログラムに起因する問題は、最適化するプログラムと割込みプログラムで同じデバイスを使用している場合に発生する。あるデバイスの値を繰り返し読み出して、論理演算を行い、別のデバイスに代入する処理があると仮定する。ここで、あるデバイスの値が繰り返し読み出される部分の処理について共通部分が存在するため、サイズを削減するためにその部分を共通部分式として括り出し、別のデバイスに置き換えるとする。この置き換えによって、共通部分の処理が1つのデバイスに集約されるため、同じ処理を繰り返す必要が無くなり、プログラムのサイズを削減できる。
しかし、共通部分の演算結果を集約したデバイスに対して値を書き込んだ後に、そのデバイスの値が割込みプログラムによって書き換えられると、演算結果を格納したデバイスの値が変化するため、問題が発生する。
このような条件のプログラムについて最適化によってプログラムを置換すると、割込みのタイミングによって最適化の前後でプログラムの動作が異なるものとなる。従って、このようなプログラムの置き換えは行うべきではない。このような観点に基づき、プログラム置換判定手段404は、こうした問題が発生するプログラムの変換を抑制する。
このようにして、プログラム最適化手段402およびプログラム置換判定手段404により、ILプログラムの最適化が行われると、ラダープログラム生成手段403は、最適化されたILプログラムから、ラダープログラムを生成する。
このように、実施の形態1では、プログラムの置き換えを行った後、この置き換え処理を判定するプログラム置換判定手段404を設けたので、プログラムの最適化を適切に行うことができる。また、インデックスデバイス表現を取り入れることによって、プログラムの最適化対象を拡大することができる。更に、プログラムの追加によってプログラムサイズがプログラマブルコントローラ100のプログラム容量を超えるような場合に、プログラムサイズの短縮に時間と労力かけずに短時間でプログラムをダウンロードし、実行できるという効果がある。また、等価な処理を行うより小さいプログラムに変換するため、同じプログラム容量を持つプログラマブルコントローラ100の中で、より多くの処理を実現することができる。
以上のように、実施の形態1のラダープログラム最適化装置によれば、ラダープログラムを解析するラダープログラム解析手段と、ラダープログラム解析手段で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、置き換えられたプログラムに対して、プログラムサイズが削減され、かつ置き換えの前後で処理の等価性が保たれているかを確認するプログラム最適化手段と、プログラム最適化手段で確認されたプログラムからラダープログラムを生成するラダープログラム生成手段とを備えたので、作成後や編集後のラダープログラムを自動的に最適化することができ、かつ、最適化の範囲を拡大することができる。
実施の形態2.
図9は、実施の形態2のラダープログラム解析手段401を示す構成図である。
実施の形態2のラダープログラム解析手段401は、デバイスソート手段405と論理最適化手段406を備えている。デバイスソート手段405は、デバイスの並びを変更する機能を有し、論理最適化手段406は、論理演算の最適化を行う機能を有している。
本発明によるプログラムサイズの削減は、命令の構成が同じでデバイス番号が異なる2つのプログラムを対象としている。このため、命令の順序が異なるプログラムであっても、等価な演算結果が保証される範囲内で命令の並びの変更が可能であれば、命令の並びを変更して構成を統一し、最適化の対象とする。この変換により、本発明によるプログラムサイズの削減対象を拡大することができる。このような変換をデバイスソート手段405と論理最適化手段406によって行う。
先ず、デバイスソート手段405の動作について説明する。
“AND”命令が連続する場合や、“OR”命令が連続する場合に、使用されているデバイスを、デバイス番号を元に、例えば昇順にソートしてプログラムの命令の並びを変更する。デバイスをソートする前のサンプルプログラムを図10に、ソート後のプログラムを図11に示す。
また、図12は、デバイスをソートする場合の動作を示すフローチャートである。
デバイスソート手段405は、先ず、ラダープログラム解析手段401中の図示しない変換手段で変換されたILを1行読み込む(ステップST501)。ここで、1行とは、命令とデバイスの組み合わせである。次にプログラムの終端であるかを判定する(ステップST502)。終端の場合は、処理を終了する。終端でなければ、読み込んだILプログラムの命令がAND命令であるかを判定する(ステップST503)。AND命令の場合は、後続のプログラムに対して、AND命令が連続する限り命令を読み出し、対応するデバイスを登録する(ステップST504)。後続する命令がAND命令でなくなった場合は、登録したデバイスを例えば昇順に並び換え、元のプログラムを変更する(ステップST505)。
また、ステップST503において、AND命令でない場合は、OR命令であるかを判定する(ステップST506)。ここで、後続する命令がOR命令の場合は、OR命令が連続する限り命令を読み出し、対応するデバイスを登録する(ステップST507)。後続する命令がOR命令でなくなった場合は、登録したデバイスを例えば昇順に並び替え、元のプログラムを変更する(ステップST508)。
更に、ステップST504〜ステップST505や、ステップST507〜ステップST508では、ANBやORBで接続される実行時にスタックを操作する上で、一まとまりとなる処理の単位でも、ソートを行う。このときのソートの基準の例としては、その一まとまりの中で最も小さいデバイス番号をそのまとまりの番号としてソートする方法がある。また、複数のデバイス種類が混在する場合は、先ずデバイス種類のアルファベット順に並べ、その後デバイス番号を基にソートする方法がある。
次に、論理最適化手段406の動作について説明する。
“AND”命令と“OR”命令の組み合わせで表現される場合、命令とその命令に対応するデバイスの順序を入れ替えることによって、等価な演算結果を生成するプログラムに変換することができる。特に、スタックの動作が最適となるように、命令と対応するデバイスの順序を入れ替えることにより、生成するラダープログラムのステップ数を削減することができる。この例を図13と図14に示す。
図13は、命令の順序を入れ替える前のラダープログラムである。このプログラムのサイズは、38ステップである。このラダープログラムでは、ANB命令が入る。このANB命令は、スタックのトップの要素とその次の要素の論理積をとる命令である。プログラムの命令の順序を入れ換えて、スタック操作の順番を変更することで、この命令の数を削減することができる。
図14は、論理の最適化によってANB命令を削減したラダープログラムである。命令の順序を入れ換えることによって、ステップ数を36ステップに削減している。
このように命令の数を削減する方針でプログラムの命令の順序を並べ替えることにより、プログラム中の命令の順序を揃えることができる。このため、そのままでは共通部分として認識できない複数の回路ブロックが、プログラムサイズの縮小を基準とした並べ替えによって、共通部分を認識できるようになる場合があり、最適化の対象を拡大できる。
なお、これらのプログラムの変更は、ラダープログラム解析手段401で行うこともできるし、プログラム最適化手段402で、プログラムの置き換えを行う前に実施することもできる。即ち、デバイスソート手段405および論理最適化手段406は、ラダープログラム解析手段401またはプログラム最適化手段402のいずれに設けてもよい。
以上のように、実施の形態2のラダープログラム最適化装置によれば、デバイスの並びの置き換えを行うデバイスソート手段を備え、プログラム最適化手段は、デバイスソート手段によってデバイスの並びが置き換えられたプログラムに対してデバイスの表現を置き換えるようにしたので、最適化処理の適用対象を拡大することができ、その結果、更にプログラムのサイズを削減することができる。
実施の形態3.
図15は、実施の形態3のプログラム最適化手段402aの構成図である。
実施の形態3のプログラム最適化手段402aは、デバイス変換手段407とプログラム置換判定手段404aとを備え、入力されるILプログラム503に対して最適化を行い、最適化後ILプログラム504を出力するものである。デバイス変換手段407は、プログラム中に現れるデバイスを、別のデバイスに置き換える手段である。このデバイスの置き換えでは、本発明による最適化方法が適用できるようにデバイスの名前を置き換える。即ち、デバイスの名前を構成するデバイス種類かデバイス番号のうち少なくとも一方を置き換える。また、プログラム置換判定手段404aは、デバイス変換手段407によってデバイスが置き換えられたプログラムに対して置換判定を行うものであり、置換判定そのものの処理は実施の形態1のプログラム置換判定手段404と同様である。
実施の形態1では、図7のステップST301およびステップST302において、デバイスの種類を判定し、そのデバイスの差分を算出している。この実施の形態3では、デバイス変換手段407により、デバイスの種類が異なる場合に、そのデバイスを置き換えることによって、デバイスの種類を統一し、本発明による最適化方法を適用する。更に3つ以上の複数の回路ブロックに対して、本発明による最適化方法を適用するように、デバイスの名前を置き換える。
デバイス名を置き換えるには、該当するデバイスについて、プログラム全体に渡って置き換える方法と、最適化する部分の前後のみ、デバイスを置き換える方法がある。プログラム全体に渡って置き換える方法では、プログラム全体に渡ってデバイスの名前を置き換えるため、プログラム全体としての動作が変わらないことが保証される範囲で置き換えを行わなければならない。従って、入力や出力信号に直接接続されているデバイスについては、このような置き換えの対象とすることはできない。直接入出力対象に影響しない入出力用のデバイスや、プログラマブルコントローラ100内部での計算に使用されるデバイスが対象となる。
一方、最適化する部分の前後のみデバイスを置き換える方法は、置き換えによって影響される範囲が限定されるため、入出力に影響するデバイスを扱うことができる。しかし、最適化箇所の前で最適化できるようにデバイスの値を最適化用のデバイスに代入する必要がある。また、最適化箇所において、そのデバイスに対して書き込み処理が存在し、そのデバイスの値が変化する可能性がある場合は、最適化箇所の後に、そのデバイスから元のデバイスへ値を代入する必要がある。このように、最適化する部分の前後のみデバイスを置き換える方法は、デバイスの値を移すための処理を追加する必要があるため、プログラムサイズは大きくなる。プログラムを置換する場合には、この追加分のプログラムサイズを考慮して置換判定を行う。
図16および図17は、デバイス変換前のラダープログラムおよびデバイス変換を行って最適化したラダープログラムを示す説明図である。
図16に示すプログラム例では、図3に示したラダープログラムとは異なり“X8”の部分が“X9”となっている。このため、図4に示したようなラダープログラムに最適化することができない。そこで、デバイス変換手段407によって、問題となる“X9”のデバイスを“X8”に置き換える。これらは、いずれもデバイス種類が“X”であるため、置き換えが可能である。
具体的には、図17の2行目に示すように置き換えを行う。これは、“X9”の値を“X8”に代入することを意味しており、このような置き換えを行うには次の二つの条件が必要となる。プログラム置換判定手段404aは、以下の条件を満たす場合にのみ置き換え可の判定結果を出力する。
(1)置き換えの追加によるプログラムサイズの増分を考慮しても最適化の効果があること
この例では、2行目の追加によって、2ステップ増える。但し、最適化前が39ステップであったのに対し、最適化後は、25+2=27ステップ(実施の形態1で説明したように、25ステップに最適化されるが、置き換え追加により2ステップ加算される)となり最適化の効果がある。
(2)置き換え先のデバイスがプログラム中の他の部分で使われていないこと
この例の場合、“X8”デバイスが、このプログラムの他の部分で使われていないことが必要である。
尚、この例ではXデバイスについて、デバイス番号だけを置き換えたが、XデバイスからMデバイスに置き換えるなど、必要に応じてデバイス種類を置き換えることも可能である。但し、置き換え先としてYデバイスは指定しない。即ち、Yデバイスは出力に利用するデバイスであり、プログラム中に使用していないからといって、あるYデバイス(例えばY10)を置き換え先に指定すると、そのYデバイスに対して値が代入され、外部に信号が出力されてしまうからである。
以上のように、実施の形態3のラダープログラム最適化装置によれば、デバイス種類かデバイス番号のうち少なくとも一方を置き換えるデバイス変換手段を備え、プログラム最適化手段は、デバイス変換手段によって、デバイス種類かデバイス番号のうち少なくとも一方を置き換えたプログラムに対してデバイスの表現を置き換えるようにしたので、更に最適化の対象を拡大し、結果としてプログラム全体の最適化効率をより改善することができる。
実施の形態4.
実施の形態4は、ループ化した後、共通部分をループ外へ括りだすようにしたものである。
図18は、実施の形態4におけるプログラム最適化手段402bの構成図である。
実施の形態4のプログラム最適化手段402bは、ループ外移動手段408、プログラム置換判定手段404bを備え、入力されるILプログラム503に対して最適化を行い、最適化後ILプログラム504aを出力するものである。ループ外移動手段408は、プログラム最適化手段402b内の図示しないプログラム最適化制御手段によってループ化される部分について、ループ処理に関係の無い部分をループ外に移動する手段である。また、プログラム置換判定手段404bは、ループ外移動手段408で処理されたプログラムに対して置換判定を行う手段であり、置換判定そのものの処理は実施の形態1のプログラム置換判定手段404と同様である。
図19は、共通部分をループ外へ移動する前のラダープログラムを示す説明図である。
この図において、破線枠510内の部分がループ中で毎回行われる処理であり、ループの外に出しても同じ演算結果が得られ、かつ処理時間が短縮できる。このため、ループ外移動手段408は、その部分の演算結果を他のデバイスに代入し、ループ内ではそのデバイスを参照するように変更する。
図20は、図19の共通部分をループ外へ移動した結果を示す説明図である。
図19に示すラダープログラムでは36ステップあるのに対して、図20に示すラダープログラムでは35ステップに削減されている。
ループ外への移動は、図6のステップST107によって抽出された、複数の回路ブロック間で共通する部分について行う。この共通部分の中で、ループを実行する度に変化する値を使用せず、ループに無関係な命令とデバイスの組み合わせを検出し、ループの外へ移動する。ループと命令及びデバイスとの関係は、ループ中でループ回数に依存するデバイスか否かを判断の基準とする。また、ループ回数に依存するデバイスの値に依存するデバイスもループに関係するデバイスとして、ループ外への移動対象から外す。
このようにループに無関係な処理をループ外へ移動することにより、プログラムのサイズを削減しつつ、プログラムの実行時間を短縮することが可能となる。
このように、実施の形態4では、同様の処理をループ化して統一しているため、可読性を向上することができる。また、変更する箇所が繰り返し記述されている演算の場合は、繰り返しと同数の箇所に対して変更する必要があるが、繰り返しをループ化することによって、変更箇所を一箇所にまとめることができ、メンテナンス性が向上するという効果がある。
以上のように、実施の形態4のラダープログラム最適化装置によれば、プログラム最適化手段は、デバイスの表現を置き換えることによってループ処理に置き換えたプログラムに対して、ループに無関係な処理をループ外に移動させるようにしたので、プログラムのサイズを削減しつつ、プログラムの実行時間を短縮することが可能となる。
また、本発明の最適化プログラムによれば、ラダープログラムに対して最適化処理を行うコンピュータを、実施の形態1から実施の形態4のうちいずれかのラダープログラム最適化装置として機能させるようにしたので、実施の形態1から実施の形態4のうちのいずれかの実施の形態の効果を奏するラダープログラム最適化装置をコンピュータ上に実現することができる。
この発明の実施の形態1によるラダープログラム最適化装置の適用例を示す構成図である。 この発明の実施の形態1によるラダープログラム最適化装置の構成図である。 この発明の実施の形態1によるラダープログラム最適化装置の最適化前ラダープログラムの説明図である。 この発明の実施の形態1によるラダープログラム最適化装置の最適化後ラダープログラムの説明図である。 この発明の実施の形態1によるラダープログラム最適化装置の解析後のILプログラムの説明図である。 この発明の実施の形態1によるラダープログラム最適化装置の動作を示すフローチャートである。 この発明の実施の形態1によるラダープログラム最適化装置の相違デバイスに対する処理を示すフローチャートである。 この発明の実施の形態1によるラダープログラム最適化装置のプログラム置換判定手段の動作を示すフローチャートである。 この発明の実施の形態2によるラダープログラム最適化装置のラダープログラム解析手段を示す構成図である。 この発明の実施の形態2におけるソート前のサンプルプログラムの説明図である。 この発明の実施の形態2におけるソート後のサンプルプログラムの説明図である。 この発明の実施の形態2におけるデバイスソート時の動作を示すフローチャートである。 この発明の実施の形態2における命令の順序を入れ替える前のラダープログラムの説明図である。 この発明の実施の形態2における命令の順序を入れ替えた後のラダープログラムの説明図である。 この発明の実施の形態3によるラダープログラム最適化装置のプログラム最適化手段を示す構成図である。 この発明の実施の形態3におけるデバイス変換前のラダープログラムを示す説明図である。 この発明の実施の形態3におけるデバイス変換後のラダープログラムを示す説明図である。 この発明の実施の形態4によるラダープログラム最適化装置のプログラム最適化手段を示す構成図である。 この発明の実施の形態4における共通部分をループ外へ移動する前のラダープログラムを示す説明図である。 この発明の実施の形態4における共通部分をループ外へ移動した後のラダープログラムを示す説明図である。
符号の説明
400 ラダープログラム最適化装置、401 ラダープログラム解析手段、402,402a,402b プログラム最適化手段、403 ラダープログラム生成手段、404,404a,404b プログラム置換判定手段、405 デバイスソート手段、406 論理最適化手段、407 デバイス変換手段、501 最適化前ラダープログラム、502 最適化後ラダープログラム、503 ILプログラム、504,504a 最適化後ILプログラム。

Claims (5)

  1. ラダープログラムを解析するラダープログラム解析手段と、
    前記ラダープログラム解析手段で解析されたプログラム中の命令の構成とデバイスの種類が等しく、かつ、デバイスの番号が異なる複数の回路ブロックに対して、デバイスの表現を置き換えることによって共通部分式として扱うと共に、当該置き換えられたプログラムに対して、プログラムサイズが削減され、かつ当該置き換えの前後で処理の等価性が保たれているかを確認するプログラム最適化手段と、
    前記プログラム最適化手段で確認されたプログラムからラダープログラムを生成するラダープログラム生成手段とを備えたラダープログラム最適化装置。
  2. デバイスの並びの置き換えを行うデバイスソート手段を備え、
    プログラム最適化手段は、前記デバイスソート手段によってデバイスの並びが置き換えられたプログラムに対してデバイスの表現を置き換えることを特徴とする請求項1記載のラダープログラム最適化装置。
  3. デバイス種類かデバイス番号のうち少なくとも一方を置き換えるデバイス変換手段を備え、
    プログラム最適化手段は、前記デバイス変換手段によって、デバイス種類かデバイス番号のうち少なくとも一方を置き換えたプログラムに対してデバイスの表現を置き換えることを特徴とする請求項1または請求項2記載のラダープログラム最適化装置
  4. プログラム最適化手段は、デバイスの表現を置き換えることによってループ処理に置き換えたプログラムに対して、当該ループに無関係な処理をループ外に移動させることを特徴とする請求項1から請求項3のうちのいずれか1項記載のラダープログラム最適化装置。
  5. ラダープログラムに対して最適化処理を行うコンピュータを、請求項1から請求項4のうちいずれか1項のラダープログラム最適化装置として機能させるための最適化プログラム。
JP2006099161A 2006-03-31 2006-03-31 ラダープログラム最適化装置および最適化プログラム Expired - Fee Related JP4494361B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107402563A (zh) * 2016-05-19 2017-11-28 发那科株式会社 梯形程序分析装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 ワンチップマイコンおよびワンチップマイコン基本プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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