(57)【特許請求の範囲】
【請求項１】
複数のラダー回路を含むラダープログラムを解析し、前記ラダー回路の実行順、前記ラダー回路に入力される信号を示す参照信号、前記ラダー回路が出力する信号を示す更新信号を対応付けた実行順信号テーブルを作成するラダープログラム解析部と、
前記実行順信号テーブルに基づき、２つの前記ラダー回路の前記実行順、前記参照信号、前記更新信号を比較することにより、実行効率を改善可能な前記ラダー回路の有無を判定し、前記判定結果を表示するラダープログラム解析結果表示部と、を有する
ラダープログラム解析装置。
【請求項２】
前記ラダープログラム解析結果表示部は、実行効率を改善可能と判定された前記ラダー回路の表示形態を少なくとも変更することにより、前記判定結果を表示する
請求項１記載のラダープログラム解析装置。
【請求項３】
複数のラダー回路を含むラダープログラムを解析し、前記ラダー回路の実行順、前記ラダー回路に入力される信号を示す参照信号、前記ラダー回路が出力する信号を示す更新信号を対応付けた実行順信号テーブルを作成するラダープログラム解析部と、
前記実行順信号テーブルに基づき、複数の前記ラダー回路の前記実行順、前記参照信号、前記更新信号を比較することにより、前記ラダープログラムの実行効率を改善可能な前記ラダー回路の実行順序を決定するラダープログラム並び替え部と、を有する
ラダープログラム解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はラダープログラム解析装置に関し、特にラダープログラムの実行効率を向上させるための情報を提示可能なラダープログラム解析装置に関する。
【背景技術】
【０００２】
ラダープログラムは、予め作成されたラダー回路を順番に、また一定周期で繰り返し実行する。一般に、ラダープログラムの作成においては、信号の参照関係を考慮して、一度の実行でできるだけ効率よく信号状態が更新されるようにラダー回路の順序を決定する。
【０００３】
ラダープログラムの作成を効率化するための技術として、特許文献１には、予め部品化されたラダー回路を使ってラダープログラムを自動生成するプログラミング装置が記載されている。
【０００４】
特許文献２には、ラダーで使用する接点へ信号を出力する、テスト入力用のラダープログラムを自動的に生成することができるシミュレーション支援ツールが記載されている。
【０００５】
特許文献３には、タイミングチャートに基づいてラダープログラムを自動生成するプログラム編集装置が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０５−１８９０１２号公報
【特許文献２】特許第３６６６５０７号
【特許文献３】特許第４９２２６８４号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の文献はいずれも、ラダー回路の並び順に起因するラダープログラムの実行効率を改善するものではない。例えば、図１に示すラダープログラムでは、Ａの信号状態がＣへ出力されるまでの処理が、１回のプログラムの実行で完了する。一方、図２に示すラダープログラムでは、Ａの信号状態がＣへ出力されるまでに、２回のプログラムの実行が必要である。このとき、図１のラダープログラムのほうが、更新時間が短く実行効率が良いことになる。換言すれば、図２のラダープログラムのほうは、更新時間が長く実行効率が悪い。
【０００８】
意図的に更新時間が長くなるラダー回路を組む場合もあるが、ほとんどは実行効率がより良くなるようにラダープログラムは設計される。一般に、ラダープログラムが大きい場合や、サブプログラムなどを含みプログラムが構造化されている場合等には、信号の参照関係が分かりにくくなるため、ラダープログラムの実行効率を判断しにくい。すなわち、ラダー回路が実行効率の悪い順序で並んでいても、ユーザはそのことを容易に把握することができない。そのため、ユーザは、ラダープログラムを実行させ、ラダー回路が更新する信号をサンプリングし、意図したタイミングで信号が変化していることを確認するなどして、ラダー回路の並び順を改善できる箇所を手作業で見つける必要があった。
【０００９】
本発明は、このような問題点を解決するためになされたものであり、ラダープログラムの実行効率を向上させるための情報を提示可能なラダープログラム解析装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一実施の形態にかかるラダープログラム解析装置は、複数のラダー回路を含むラダープログラムを解析し、前記ラダー回路の実行順、前記ラダー回路に入力される信号を示す参照信号、前記ラダー回路が出力する信号を示す更新信号を対応付けた実行順信号テーブルを作成するラダープログラム解析部と、前記実行順信号テーブルに基づき、２つの前記ラダー回路の前記実行順、前記参照信号、前記更新信号を比較することにより、実行効率を改善可能な前記ラダー回路の有無を判定し、前記判定結果を表示するラダープログラム解析結果表示部と、を有することを特徴とする。
【００１１】
他の実施の形態にかかるラダープログラム解析装置は、前記ラダープログラム解析結果表示部は、実行効率を改善可能と判定された前記ラダー回路の表示形態を少なくとも変更することにより、前記判定結果を表示することを特徴とする。
【００１２】
他の実施の形態にかかるラダープログラム解析装置は、複数のラダー回路を含むラダープログラムを解析し、前記ラダー回路の実行順、前記ラダー回路に入力される信号を示す参照信号、前記ラダー回路が出力する信号を示す更新信号を対応付けた実行順信号テーブルを作成するラダープログラム解析部と、前記実行順信号テーブルに基づき、複数の前記ラダー回路の前記実行順、前記参照信号、前記更新信号を比較することにより、前記ラダープログラムの実行効率を改善可能な前記ラダー回路の実行順序を決定するラダープログラム並び替え部と、を有することを特徴とする。
【発明の効果】
【００１３】
本発明により、ラダープログラムの実行効率を向上させるための情報を提示可能なラダープログラム解析装置を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の課題を説明するための図である。
【図２】本発明の課題を説明するための図である。
【図３】ラダープログラムの例を示す図である。
【図４】実行順信号テーブル１２０の例を示す図である。
【図５】ラダープログラム解析結果表示部１３０の出力例を示す図である。
【図６】ラダープログラム解析結果表示部１３０の出力例を示す図である。
【図７】ラダープログラム解析結果表示部１３０の出力例を示す図である。
【図８】ラダープログラム並び替え部１４０の動作例を示す図である。
【図９】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１０】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１１】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１２】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１３】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１４】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１５】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１６】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１７】ラダープログラム並び替え部１４０の動作例を示す図である。
【図１８】ラダープログラム解析部１１０の実行順信号テーブル作成処理の例を示す図である。
【図１９Ａ】ラダープログラム解析結果表示部１３０のラダー図表示処理の例を示す図である。
【図１９Ｂ】ラダープログラム解析結果表示部１３０のラダー図表示処理の例を示す図である。
【図２０】ラダープログラム並び替え部１４０の並び替え処理の例を示す図である。
【図２１】ラダープログラム並び替え部１４０の更新されない参照信号を削除する処理の例を示す図である。
【図２２Ａ】ラダープログラム並び替え部１４０の実行順序テーブル作成処理の例を示す図である。
【図２２Ｂ】ラダープログラム並び替え部１４０の実行順序テーブル作成処理の例を示す図である。
【図２３Ａ】ラダープログラム並び替え部１４０の参照信号の削除処理の例を示す図である。
【図２３Ｂ】ラダープログラム並び替え部１４０の参照信号の削除処理の例を示す図である。
【図２４】本発明の実施の形態１にかかるラダープログラム解析装置１００の構成を示す図である。
【図２５】本発明の実施の形態２にかかるラダープログラム解析装置１００の構成を示す図である。
【発明を実施するための形態】
【００１５】
はじめに、本発明の概要について説明する。本発明は、ラダープログラムの実行効率を解析する手法に特徴を有するが、本発明の実施の形態では、その解析結果の２つの利用手法を併せて開示する。
【００１６】
まず、実施の形態１として、ラダープログラムを解析した結果を利用して、ラダープログラムの実行効率の悪い部分に関する情報をラダー図上に表示する手法を開示する。例えば、効率良く信号が処理される接点については青色で、効率の悪い接点については赤色で表示するなどである。
【００１７】
次に、実施の形態２として、任意の範囲のラダープログラムについて、効率の良い実行順序になるように自動的にラダー回路を並び替える手法を開示する。
【００１８】
＜実施の形態１＞
実施の形態１として、ラダープログラムの実行効率を解析し、少なくとも実行効率の悪い部分の情報をラダー図上に表示することができるラダープログラム解析装置１００について説明する。
【００１９】
図２４のブロック図を用いて、ラダープログラム解析装置１００の構成について説明する。ラダープログラム解析装置１００は、ラダープログラム解析部１１０、実行順信号テーブル１２０、ラダープログラム解析結果表示部１３０を含む。なお、ラダープログラム解析装置１００は、典型的には、中央処理装置、記憶装置及び入出力装置を備え、記憶装置に記憶されたプログラムを中央処理装置が実行することにより所定の機能を実現する情報処理装置である。
【００２０】
ラダープログラム解析部１１０は、ラダープログラムにおけるラダー回路の並び順を解析して実行順信号テーブル１２０を作成し、実行順信号テーブル１２０に基づいて実行効率を評価する処理を行う。
【００２１】
実行順信号テーブル１２０は、ラダープログラムが実行された時に、どのような順番でラダー回路が実行されてゆくかを示すテーブルである。実行順信号テーブル１２０は、典型的には、図示しない記憶装置上の記憶領域内に作成される。
【００２２】
図３に示すように、ラダープログラムは、一般に、複数のプログラム（メインプログラムと、メインプログラム又はサブプログラムから呼び出される１以上のサブプログラム）を含む。各プログラムは、ラダー回路からなるネットを１つ以上含む。各ネットには番号が付され、番号の昇順に順次実行される。
【００２３】
図４は、図３に示すラダープログラムを解析して作成された実行順信号テーブル１２０である。ラダープログラム解析部１１０は、ラダープログラムを先頭から終端まで、ラダー回路の実行順序に従って、各ネットを順次解析する。ラダープログラム解析部１１０は、各ネットの位置情報、参照信号、更新信号を実行順信号テーブル１２０に登録する。ここで、位置情報とは、そのネットが属するプログラム名及びネット位置を含む。但し、ラダープログラムが１つのプログラムで構成されている場合は、プログラム名を含まなくて良い。参照信号とは、そのネットで参照される信号の名称である。更新信号とは、そのネットで更新される信号の名称である。
【００２４】
ラダープログラム解析結果表示部１３０は、実行順信号テーブル１２０を参照して、ラダープログラムの最適化状況を判定し、ユーザに提示する処理を行う。典型的には、ラダープログラムのうち実行効率の悪い部分を抽出し、当該部分をラダー図上に表示する。
【００２５】
より具体的には、ラダープログラム解析結果表示部１３０は、ラダー図を画面上に表示する際、実行順信号テーブル１２０から、表示しようとしているラダー回路自身に関するエントリ（ａ）と、そのラダー回路上の接点を更新信号として含んでいるエントリ（ｂ）とを抽出する。図５に一例を示す。いまラダープログラム解析結果表示部１３０は、サブプログラムＰ２のネット１（Ｐ２−１）を描画しようとしている。描画に先立ち、ラダープログラム解析結果表示部１３０は、実行順信号テーブル１２０から、Ｐ２−１に相当するエントリ（ａ）を抽出する。ここでエントリ（ａ）は接点（すなわち参照信号）Ｙを含む。そこでラダープログラム解析結果表示部１３０は、実行順信号テーブル１２０から、更新信号としてＹを含むエントリ（ｂ）も抽出する。
【００２６】
次に、ラダープログラム解析結果表示部１３０は、エントリ（ａ）及びエントリ（ｂ）の実行順を比較する。そして、両エントリ実行順の大小関係を、ラダー回路の表示形態に反映する。ラダープログラム解析結果表示部１３０は、この表示形態の違いにより、ラダープログラムのうち実行効率の悪い部分をユーザに提示する。これにより、ユーザは、ラダー回路の実行順序が最適かどうかを容易に判断できる。
【００２７】
例えば、エントリ（ａ）の実行順  ＞  エントリ（ｂ）の実行順であれば、ラダー回路の順序は最適であり、実行効率は良い。このとき、ラダープログラム解析結果表示部１３０は、ラダー回路Ｐ２−１の接点Ｙを青色で表示できる。一方、エントリ（ａ）の実行順  ≦  エントリ（ｂ）の実行順であれば、ラダー回路の順序は最適でなく、実行効率も良いとはいえない。このとき、ラダープログラム解析結果表示部１３０は、ラダー回路Ｐ２−１の接点Ｙを赤色で表示できる。なお、実行効率の良し悪しは、種々の任意の方法で表現できる。例えば、接点そのものではなくその背景色により表現してもよい。或いは、接点の近傍に所定の記号、図形、メッセージ等を表示することにより表現してもよい。
【００２８】
図５乃至図７を用いて、ラダープログラム解析結果表示部１３０が行う表示の一例を示す。図５に示す例では、エントリ（ａ）の実行順  ＞  エントリ（ｂ）の実行順である。したがって、ラダープログラム解析結果表示部１３０は、ラダー回路Ｐ２−１のうち、接点Ｙを青色で表示する。一方、図６に示す例では、エントリ（ａ）の実行順  ≦  エントリ（ｂ）の実行順である。したがって、ラダープログラム解析結果表示部１３０は、ラダー回路Ｐ１−１のうち、接点Ｃを赤色で表示する。同様に、ラダープログラム解析結果表示部１３０は、メインプログラムのネット１の接点Ａを赤色で、メインプログラムのネット３の接点Ｄは青色で表示する。
【００２９】
続いて、図１８及び図１９を用いて、ラダープログラム解析装置１００の動作の一例について説明する。図１８は、ラダープログラム解析部１１０が、ラダープログラムの実行順番と信号の関係を示す実行順信号テーブル１２０を作成する処理（実行順信号テーブル作成処理）の例を示すフローチャートである。
【００３０】
Ｓ１０１：
ラダープログラム解析部１１０は、まず実行順信号テーブル１２０を初期化する。プログラムの実行順番を記録する変数「実行順番」に１を設定する。ラダープログラムの実行ネット位置を記憶する変数「実行ネット位置」にプログラムの先頭のネット番号を設定する。
【００３１】
Ｓ１０２：
ラダープログラム解析部１１０は、「実行ネット位置」に実行可能なネットがあるかどうか判断する。ネットが存在しない場合、処理を終了する。
【００３２】
Ｓ１０３：
ラダープログラム解析部１１０は、「実行ネット位置」にあたるラダー回路を１ネット取得する。ここで、取得したラダー回路がＣＡＬＬ命令やＲＥＴ命令およびそれらに類する命令の場合、次に実行されるネットは、ＣＡＬＬ命令では呼び出し先サブプログラムの先頭のネット、ＲＥＴ命令では対応するＣＡＬＬ命令の次のネットとなる。
【００３３】
Ｓ１０４：
ラダープログラム解析部１１０は、取得したラダー回路内に接点が含まれるかどうか判断する。含まれる場合はＳ１０５、含まれない場合はＳ１０７へ遷移する。
【００３４】
Ｓ１０５：
ラダープログラム解析部１１０は、ラダー回路が接点において読み出す信号を「参照信号」、書き込む信号を「更新信号」として取得する。また、現在の「実行順番」を「実行順」、「実行ネット位置」を「位置情報」とする。そして、実行順信号テーブル１２０に、「実行順」、「位置情報」、「参照信号」、「更新信号」をそれぞれ登録する。
【００３５】
Ｓ１０６：
ラダープログラム解析部１１０は、実行順信号テーブル１２０に次のエントリを登録するために、「実行順番」を１増やす。
【００３６】
Ｓ１０７：
ラダープログラム解析部１１０は、現在の「実行ネット位置」の次に実行されるネットの位置を、新たな「実行ネット位置」に設定する。このとき、Ｓ１０３の説明において述べたように、現在の「実行ネット位置」ＣＡＬＬ命令やＲＥＴ命令が存在する場合はこれらを考慮して次に実行されるネットを設定する。
【００３７】
以降、ラダープログラム解析部１１０は、「実行ネット位置」に実行可能なネットが存在しなくなるまで、順次「実行ネット位置」に存在するラダー回路を取得し、取得したラダー回路について「実行順」、「位置情報」、「参照信号」、「更新信号」を実行順信号テーブル１２０に設定してゆく。これにより、「実行順信号テーブル」が完成する。
【００３８】
図１９は、ラダープログラム解析結果表示部１３０が、各ラダー回路の実行効率の判定結果をラダー図上に反映する処理（ラダー図表示処理）を示すフローチャートである。
【００３９】
Ｓ２０１：
ラダープログラム解析結果表示部１３０は、まず画面に表示しようとするラダープログラムの開始位置（プログラム及びネット）を「表示位置情報」として記憶する。
【００４０】
Ｓ２０２：
ラダープログラム解析結果表示部１３０は、記憶した「表示位置情報」に相当する１ネット分のラダー図の表示データを作成する。
【００４１】
Ｓ２０３：
ラダープログラム解析結果表示部１３０は、上述の実行順信号テーブル作成処理により作成された実行順信号テーブル１２０を参照し、実行順信号テーブル１２０の「位置情報」が、記憶した「表示位置情報」と一致するエントリを抽出する。そして、当該エントリの「実行順」（ａ）を取得する。
【００４２】
Ｓ２０４乃至Ｓ２０６：
ラダープログラム解析結果表示部１３０は、Ｓ２０２において作成した１ネット分のラダー図に接点が含まれる場合、接点の「信号」を取得する。そして、実行順信号テーブル１２０を「実行順」が小さいエントリから最終エントリまでの順で検索し、取得した「信号」と同じ「更新信号」がないか検索する。
【００４３】
Ｓ２０７乃至Ｓ２０８：
ラダープログラム解析結果表示部１３０は、接点から取得した「信号」と「更新信号」とが一致するエントリを発見した場合、当該エントリの「実行順」（ｂ）を取得する。一方、一致しない場合はＳ２１２に遷移し、作成したラダー図の次の命令を取得する。
【００４４】
Ｓ２０９乃至Ｓ２１１：
ラダープログラム解析結果表示部１３０は、「実行順」（ａ）と「実行順」（ｂ）とを比較する。「実行順」（ａ）が大きい場合、接点の色の属性を青色へ変更する。その他の場合、接点の色の属性を赤色へ変更する。
【００４５】
Ｓ２１２乃至Ｓ２１３：
ラダープログラム解析結果表示部１３０は、ラダー図に含まれる次の命令を取得する。取得した命令が接点であれば、当該接点について、Ｓ２０６以降の処理を再び実行する。ラダープログラム解析結果表示部１３０は、１ネットの終端に至るまで、すなわちラダー図の終わりに至るまで同様の処理を繰り返すことにより、１ネットのラダー図の表示データを作成する。
【００４６】
Ｓ２１４：
ラダープログラム解析結果表示部１３０は、作成した１ネット分のラダー図の表示データを画面に表示する。
【００４７】
Ｓ２１５：
ラダープログラム解析結果表示部１３０は、ラダー図表示が画面終端まで達していない場合、「表示位置情報」を次のネットの情報で更新する。ラダープログラム解析結果表示部１３０は、次のネットについて、Ｓ２０２以降の処理を同様に実行する。これを画面終端に至るまで繰り返すことにより、ラダープログラム解析結果表示部１３０は、実行効率の判定結果がラダー図の接点の表示色へ反映された、一連のラダー図を表示することができる。
【００４８】
本実施の形態によれば、ラダープログラム解析部１１０がラダープログラムを解析して実行順信号テーブル１２０を作成し、ラダープログラム解析結果表示部１３０が実行順信号テーブル１２０に基づいて実行効率の判定結果を反映させたラダー図を表示する。これにより、ラダー図上に実行効率を改善可能な部分が明示されるので、ラダープログラムの最適化を検討する際の手がかりとなる。
【００４９】
＜実施の形態２＞
実施の形態２として、ラダープログラムの実行効率を解析し、実行効率が向上するようラダー回路を自動で並べ替えることができるラダープログラム解析装置１００について説明する。
【００５０】
図２５のブロック図を用いて、ラダープログラム解析装置１００の構成について説明する。ラダープログラム解析装置１００は、ラダープログラム解析部１１０、実行順信号テーブル１２０、ラダープログラム並べ替え部１４０を含む。
【００５１】
ラダープログラム解析部１１０、実行順信号テーブル１２０の構成は、実施の形態１と同様であるので説明を省略する。
【００５２】
ラダープログラム並び替え部１４０は、ラダープログラムのうち所定の範囲のネットの実行順序を自動的に並び替えて最適化する処理を行う。ラダープログラム並び替え部１４０は、実行順信号テーブル１２０と、各ネットが参照している信号の一覧から、任意の範囲のネットの実行順序を自動的に最適化する。ここで、所定の範囲とは、ユーザの選択等に基づいて決定されたラダープログラムの一部分であっても良く、あるいはラダープログラムの全体であっても良い。
【００５３】
ラダープログラム並び替え部１４０が実施するラダープログラムの並び替え作業は、各ラダー回路をノードとし、各信号の参照関係をエッジとした有向グラフに対して、全ノードを一列に並べた時にできるだけ多くのエッジの方向が同一方向になるよう、ノードの並び順を決める作業であり、これには同様の効果が得られるいくつかの異なるアルゴリズムが考えられる。ここではその中の一具体例を示すが、同様の効果が得られる他のアルゴリズムを用いて並び替えをしても構わない。
【００５４】
図８乃至図１７を用いて、ラダープログラム並び替え部１４０が行う処理についてより具体的に説明する。図８の左上図は、並び替えが行われる前のラダープログラム、左下図は当該ラダープログラムに対応する実行順信号テーブル１２０である。右上図は、ラダープログラム並び替え部１４０が並び替えを行った後のラダープログラムを示す。
【００５５】
（１）ラダープログラム並び替え部１４０は、まず、図８の実行順信号テーブル１２０から、所定の範囲内において更新されない「参照信号」を削除する。図９において破線で囲われた信号が、更新されない「参照信号」である。
【００５６】
（２）次に、ラダープログラム並び替え部１４０は、実行順信号テーブル１２０内で「参照信号」が空のネットを探し、そのネットの位置情報を「実行順序テーブル」へ追加する。図１０において破線で囲われた部分は、「参照信号」が空であることを示している。
【００５７】
（３）ラダープログラム並び替え部１４０は、「実行順序テーブル」へ加えたネットの「更新信号」と同じものを、「実行順信号テーブル」の「参照信号」からすべて削除する。図１１において破線で囲われた部分は、削除される「参照信号」である。
【００５８】
（４）ラダープログラム並び替え部１４０は、「実行順序テーブル」へ加えたネットを実行順信号テーブル１２０から削除する。図１２において破線で囲われた部分は、削除されるネットを示している。
【００５９】
（５）ラダープログラム並び替え部１４０は、実行順信号テーブル１２０が空になるまで（２）乃至（４）の動作を繰り返す。なお、（２）で該当ネットが見つからない場合は何らかの評価基準でネットを一つ選ぶことができる。図１３乃至図１７は、実行順信号テーブル１２０からネットが順次削除されていく様子を示している。
【００６０】
（６）ラダープログラム並び替え部１４０は、「実行順序テーブル」から、「実行順」に従って「位置情報」のネットを取得し、取得した順序でネットを並べて直す。これにより、実行順序が最適化されたラダープログラムが作成される。
【００６１】
続いて、図２０乃至図２３を用いて、ラダープログラム解析装置１００が所定の範囲のネットの実行順序を自動的に並び替えて最適化する場合の動作について説明する。図２０は、ラダープログラム並び替え部１４０が、ラダープログラムのうち所定の範囲内のラダー回路を１ネット単位で効率の良い実行順序へ自動的に並び替える処理（並び替え処理）を示すフローチャートである。
【００６２】
Ｓ３０１：
ラダープログラム解析部１１０が、「実行順信号テーブル作成処理」を実行し、「実行順序信号テーブル１２０を作成する。
【００６３】
Ｓ３０２：
ラダープログラム並び替え部１４０は、作成された実行順序信号テーブル１２０から、ラダープログラムのうち所定の範囲のネットのテーブル情報を抽出して、「実行順選択信号テーブル」を作成する。
【００６４】
Ｓ３０３：
ラダープログラム並び替え部１４０は、「更新されない参照信号を削除する処理」（後述）を実行して、「実行順選択信号テーブル」から、更新されない「参照信号」を削除する。
【００６５】
Ｓ３０４：
ラダープログラム並び替え部１４０は、「実行順序テーブル作成処理」（後述）を実行して、「実行順序テーブル」を作成する。
【００６６】
Ｓ３０５：
ラダープログラム並び替え部１４０は、作成された「実行順序テーブル」に従って、ラダー回路を新しい順序に並び替える。これにより、所定の範囲のラダープログラムが、効率の良い実行順序へ自動的に修正される。
【００６７】
図２１は、「実行順選択信号テーブル」内の「更新信号」に基づいて、書き込まれない「参照信号」をすべて削除する処理（更新されない参照信号を削除する処理）を示すフローチャートである。
【００６８】
Ｓ４０１：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」のエントリ位置を指す変数「インデックス」を用意し、「インデックス」に先頭エントリ位置を設定する。
【００６９】
Ｓ４０２：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックス」が指し示すエントリから、「位置情報」と「参照信号」を取得する。
【００７０】
Ｓ４０３：
ラダープログラム並び替え部１４０は、取得した「位置情報」が空の場合、「インデックス」を１増やす。「実行順選択信号テーブル」の終端を超えていなければ、新たな「インデックス」を用いてＳ４０２以降の処理を再び実行する。
【００７１】
Ｓ４０４：
ラダープログラム並び替え部１４０は、取得した「参照信号」が空の場合、「インデックス」を１増やす。「実行順選択信号テーブル」の終端を超えていなければ、新たな「インデックス」を用いてＳ４０２以降の処理を再び実行する。
【００７２】
Ｓ４０５：
ラダープログラム並び替え部１４０は、取得した「位置情報」と「参照信号」の両方が空でない場合、「参照信号」と同じ信号が「実行順選択信号テーブル」の「更新信号」内に存在しないか検索する。存在する場合、「実行順選択信号テーブル」の「参照信号」を削除する。
【００７３】
Ｓ４０６乃至Ｓ４０７：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックス」が指し示すエントリの「参照信号」の次の「参照信号」が存在する場合、次の「参照信号」についてＳ４０５以降の処理を再び実行する。すなわち、「実行順選択信号テーブル」の「参照信号」を削除する処理を繰り返す。
【００７４】
Ｓ４０８：
一方、次の「参照信号」が存在しない場合、ラダープログラム並び替え部１４０は、「インデックス」を１増やす。「インデックス」が終端を超えない限り、Ｓ４０２以降の処理を繰り返す。「インデックス」が終端を超えたとき処理を終了する。
【００７５】
図２２は、ラダープログラム並び替え部１４０が、「実行順選択信号テーブル」と「実行順序テーブル」とを利用して、ラダー回路の最適な実行順番を決める処理（実行順序テーブル作成処理）を示すフローチャートである。
【００７６】
Ｓ５０１：
ラダープログラム並び替え部１４０は、「実行順序テーブル」のエントリ位置を指す変数「インデックスＢ」を用意し、先頭エントリの位置を設定する。
【００７７】
Ｓ５０２：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」のエントリ位置を指す変数「インデックスＡ」に、先頭エントリの位置を設定する。
【００７８】
Ｓ５０３：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」から「実行順序テーブル」へ「位置情報」を追加した回数を記憶する変数「処理ネット数」、「位置情報」が追加できなかった回数を記憶する変数「未処理ネット数」、「位置情報」が追加できなかった「実行順選択信号テーブル」のインデックスを記憶する変数「未処理のインデックス」をそれぞれ初期化する。
【００７９】
Ｓ５０４：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックスＡ」が指し示すエントリから「位置情報」と「参照信号」を取得する。
【００８０】
Ｓ５０５：
ラダープログラム並び替え部１４０は、「位置情報」にデータが存在しない場合、「インデックスＡ」を１増やす。ここで「インデックスＡ」が終端を超えるか確認し、超えていない場合、新たな「インデックスＡ」を用いてＳ５０４以降の処理を再度実行する。
【００８１】
Ｓ５０６、Ｓ５０９：
ラダープログラム並び替え部１４０は、「位置情報」にデータが存在し、「参照信号」にデータがない場合、これを優先的に実行すべきラダー回路と判断する。ラダープログラム並び替え部１４０は、「インデックスＡ」から取得した「位置情報」を、「実行順序テーブル」の「インデックスＢ」が指し示すエントリへ追加する。
【００８２】
Ｓ５１０乃至Ｓ５１１：
ラダープログラム並び替え部１４０は、「処理ネット数」を１増やし、「実行順序テーブル」の「インデックスＢ」を１増やす。
【００８３】
Ｓ５１２：
ラダープログラム並び替え部１４０は、「参照信号の削除処理」（後述）により、「実行順選択信号テーブル」の「インデックスＡ」が指し示すエントリの「更新信号」を参照する「参照信号」をすべて検索し、削除する。
【００８４】
Ｓ５１３：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックスＡ」が指し示すエントリの「位置情報」と「更新信号」を削除する。
【００８５】
Ｓ５１４：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックスＡ」を１増やす。
【００８６】
Ｓ５１５：
ラダープログラム並び替え部１４０は、「インデックスＡ」が終端を超えていない場合、新たな「インデックスＡ」を用いてＳ５０４以降の処理を再度実行する。インデックスＡが「実行順選択信号テーブル」の終端を超える場合は、Ｓ５１６に遷移する。
【００８７】
Ｓ５０７乃至Ｓ５０８、Ｓ５１４乃至Ｓ５１５：
ラダープログラム並び替え部１４０は、「位置情報」にデータが存在し、「参照信号」にデータがある場合、「未処理ネット数」を１増やし、「実行順選択信号テーブル」の「インデックスＡ」を「未処理のインデックス」へ記憶する。また、「実行順選択信号テーブル」の「インデックスＡ」を１増やす。「インデックスＡ」が「実行順選択信号テーブル」の終端を超えるまで上記処理を繰り返す。
【００８８】
Ｓ５１６乃至Ｓ５１７：
ラダープログラム並び替え部１４０は、「インデックスＡ」が「実行順選択信号テーブル」の終端を超え、「未処理ネット数」が０以外、かつ「処理ネット数」が０以上の場合、「実行順選択信号テーブル」の「インデックスＡ」に先頭エントリの位置を設定するＳ５０２以降の処理を繰り返す。
【００８９】
「インデックスＡ」が「実行順選択信号テーブル」の終端を超え、「未処理ネット数」が０以外、かつ「処理ネット数」が０の場合、ラダープログラム並び替え部１４０は、記憶した「未処理のインデックス」から「実行順選択信号テーブル」の「インデックスＡ」を取得し、「インデックスＡ」が指し示すエントリの「参照信号」の数が一番少ない「インデックスＡ」を探し出して、「参照信号」を削除して、「実行順選択信号テーブル」の「インデックスＡ」に先頭エントリの位置を設定するＳ５０２以降の上記処理を繰り返す。
【００９０】
「インデックスＡ」が「実行順選択信号テーブル」の終端を超え、「未処理ネット数」が０の場合、ラダープログラム並び替え部１４０は処理を終了する。以上の処理により、「実行順序テーブル」の「位置情報」に、ラダー回路の最適化された実行順序が格納される。
【００９１】
図２３は、ラダープログラム並び替え部１４０が、「実行順選択信号テーブル」の「更新信号」を利用して、「更新信号」と一致する「参照信号」のすべてを削除する処理（参照信号の削除処理）を示すフローチャートである。
【００９２】
Ｓ６０１：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックス」が指し示すエントリから「更新信号」を取得する。
【００９３】
Ｓ６０２乃至Ｓ６０３：
ラダープログラム並び替え部１４０は、「更新信号」が取得できた場合、「実行順選択信号テーブル」のエントリ位置を指す「インデックス」に、先頭エントリの位置を設定する。
【００９４】
Ｓ６０４：
ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックス」が指し示す「エントリ」から「参照信号」を取得する。
【００９５】
Ｓ６０５乃至Ｓ６０６：
ラダープログラム並び替え部１４０は、Ｓ６０４において「参照信号」が取得できた場合、「参照信号」が「更新信号」に含まれているか確認する。
【００９６】
Ｓ６０７：
ラダープログラム並び替え部１４０は、「参照信号」が「更新信号」に含まれている場合、「実行順選択信号テーブル」の「インデックス」が指し示すエントリの「参照信号」を削除する。
【００９７】
Ｓ６０８、Ｓ６１０：
ラダープログラム並び替え部１４０は、次の「参照信号」がエントリに残っている場合、次の「参照信号」を取得し、新たな「参照信号」についてＳ６０５以降の処理を繰り返す。
【００９８】
Ｓ６０９：
次の「参照信号」がエントリにない場合、ラダープログラム並び替え部１４０は、「実行順選択信号テーブル」の「インデックス」を１増やす。
【００９９】
Ｓ６１１：
ラダープログラム並び替え部１４０は、「インデックス」が「実行順選択信号テーブル」の終端を超えない場合、「実行順選択信号テーブル」の「インデックス」が指し示すエントリから最初の「参照信号」を取得し（Ｓ６０４）、Ｓ６０５以降の処理を繰り返す。
ラダープログラム並び替え部１４０は、「インデックス」が「実行順選択信号テーブル」の終端を超えると、処理を終了する。
【０１００】
本実施の形態によれば、ラダープログラム解析部１１０が作成した実行順信号テーブル１２０に基づいて、ラダープログラム並び替え部１４０が、所定の範囲のラダープログラムに含まれるラダー回路を、効率よく実行できる順番に自動的に並び替える。これにより、ユーザはラダー回路を手作業で修正する必要がなくなる。
【０１０１】
なお、本発明は上述の種々の実施の形態に限られたものではなく、趣旨を逸脱しない範囲で、構成要素の置換、省略、付加、順序の入れ替え等の変更を施すことが可能である。
【符号の説明】
【０１０２】
１００  ラダープログラム解析装置
１１０  ラダープログラム解析部
１２０  実行順信号テーブル
１３０  ラダープログラム解析結果表示部
１４０  ラダープログラム並び替え部
【図１】
0006356726.tif 000002
【図２】
0006356726.tif 000003
【図３】
0006356726.tif 000004
【図４】
0006356726.tif 000005
【図５】
0006356726.tif 000006
【図６】
0006356726.tif 000007
【図７】
0006356726.tif 000008
【図８】
0006356726.tif 000009
【図９】
0006356726.tif 000010
【図１０】
0006356726.tif 000011
【図１１】
0006356726.tif 000012
【図１２】
0006356726.tif 000013
【図１３】
0006356726.tif 000014
【図１４】
0006356726.tif 000015
【図１５】
0006356726.tif 000016
【図１６】
0006356726.tif 000017
【図１７】
0006356726.tif 000018
【図１８】
0006356726.tif 000019
【図１９Ａ】
0006356726.tif 000020
【図１９Ｂ】
0006356726.tif 000021
【図２０】
0006356726.tif 000022
【図２１】
0006356726.tif 000023
【図２２Ａ】
0006356726.tif 000024
【図２２Ｂ】
0006356726.tif 000025
【図２３Ａ】
0006356726.tif 000026
【図２３Ｂ】
0006356726.tif 000027
【図２４】
0006356726.tif 000028
【図２５】
0006356726.tif 000029