(57)【要約】【課題】同じ部分回路が繰り返し出現するラダー図プログラムを、可読性、およびデバッグ効率を向上させたラダー図プログラムに簡単に編集する。【解決手段】部分回路選択部２１は、ラダー図プログラムにおける複数の接点からなる部分回路を選択する。置換回路生成部２２は、選択された部分回路よりも個数の少ない接点からなる置換回路を生成する。補助回路生成部２３は、置換回路に、部分回路と同じ動作をさせる補助回路を生成する。プログラム編集部２４は、ラダー図プログラムに対して、このラダー図プログラムに出現している部分回路を置換回路に置き換える置換処理を行うとともに、補助回路をラダー図プログラムに挿入する補助回路挿入処理を行う。【選択図】図２
2020149168.tif 000002
【特許請求の範囲】
【請求項１】
ラダー図プログラムにおける複数の接点からなる部分回路を選択する部分回路選択部と、
前記部分回路選択部が選択した前記部分回路よりも少ない個数の接点からなる置換回路を生成する置換回路生成部と、
前記置換回路生成部が生成した前記置換回路に、前記部分回路選択部が選択した前記部分回路と同じ動作をさせる補助回路を生成する補助回路生成部と、
前記ラダー図プログラムに対して、このラダー図プログラムに出現している前記部分回路を、前記置換回路生成部が生成した前記置換回路に置き換える置換処理を行うとともに、前記補助回路生成部が生成した前記補助回路を前記ラダー図プログラムに挿入する補助回路挿入処理を行うプログラム編集部と、を備えたラダー図プログラム作成支援装置。
【請求項２】
前記部分回路選択部は、入力指定された複数の接点からなる回路を、前記部分回路として選択する、請求項１に記載のラダー図プログラム作成支援装置。
【請求項３】
前記部分回路選択部は、前記ラダー図プログラムにおいて、複数の接点からなり、且つ予め定めた回数を越えて出現している回路を、前記部分回路として抽出する、請求項１、または２に記載のラダー図プログラム作成支援装置。
【請求項４】
前記ラダー図プログラムにおいて、前記プログラム編集部が前記置換処理で置き換えた前記置換回路が選択されたとき、選択された前記置換回路に対応する前記補助回路を出力する補助回路出力部を備えている、請求項１〜３のいずれかに記載のラダー図プログラム作成支援装置。
【請求項５】
前記プログラム編集部は、前記置換処理において、前記部分回路選択部が選択した前記部分回路に属する接点のコイルを含むステップが前記ラダー図プログラムに出現していれば、このステップ以降に出現している前記部分回路を前記置換回路に置き換えるのを禁止する、請求項１〜４のいずれかに記載のラダー図プログラム作成支援装置。
【請求項６】
前記プログラム編集部は、前記補助回路挿入処理において、前記部分回路選択部が選択した前記部分回路に属する接点のコイルを含むステップが前記ラダー図プログラムに出現していれば、このステップと、このステップ以降において前記部分回路が最初に出現しているステップとの間に、前記補助回路生成部が生成した前記補助回路を挿入する、請求項１〜４のいずれかに記載のラダー図プログラム作成支援装置。
【請求項７】
前記プログラム編集部は、前記ラダー図プログラムに対して、前記置換回路に置き換えた前記部分回路に属する接点のコイルを含むステップが追加されたとき、この追加されたステップ以降に出現している前記置換回路を対応する前記部分回路に置き換える、請求項１〜６のいずれかに記載のラダー図プログラム作成支援装置。
【請求項８】
前記プログラム編集部は、前記ラダー図プログラムに対して、前記置換回路に置き換えた前記部分回路に属する接点のコイルを含むステップが追加されたとき、この追加されたステップの直後に、前記補助回路生成部が生成した前記補助回路を挿入する、請求項１〜６のいずれかに記載のラダー図プログラム作成支援装置。
【請求項９】
ラダー図プログラムにおける複数の接点からなる部分回路を選択する部分回路選択ステップと、
前記部分回路選択ステップで選択した前記部分回路よりも少ない個数の接点からなる置換回路を生成する置換回路生成ステップと、
前記置換回路生成ステップで生成した前記置換回路に、前記部分回路選択ステップで選択した前記部分回路と同じ動作をさせる補助回路を生成する補助回路生成ステップと、
前記ラダー図プログラムに対して、このラダー図プログラムに出現している前記部分回路を、前記置換回路生成ステップで生成した前記置換回路に置き換える置換処理を行うとともに、前記補助回路生成ステップで生成した前記補助回路を前記ラダー図プログラムに挿入する補助回路挿入処理を行うプログラム編集ステップと、をコンピュータで実行するラダー図プログラム作成支援方法。
【請求項１０】
ラダー図プログラムにおける複数の接点からなる部分回路を選択する部分回路選択ステップと、
前記部分回路選択ステップで選択した前記部分回路よりも少ない個数の接点からなる置換回路を生成する置換回路生成ステップと、
前記置換回路生成ステップで生成した前記置換回路に、前記部分回路選択ステップで選択した前記部分回路と同じ動作をさせる補助回路を生成する補助回路生成ステップと、
前記ラダー図プログラムに対して、このラダー図プログラムに出現している前記部分回路を、前記置換回路生成ステップで生成した前記置換回路に置き換える置換処理を行うとともに、前記補助回路生成ステップで生成した前記補助回路を前記ラダー図プログラムに挿入する補助回路挿入処理を行うプログラム編集ステップと、をコンピュータに実行させるラダー図プログラム作成支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＰＬＣ（プログラマブルコントローラ）等で実行させるラダー図プログラムの作成を支援する技術に関する。
【背景技術】
【０００２】
従来、ＰＬＣ（プログラマブルコントローラ）で実行させるラダー図プログラムは、パーソナルコンピュータ等の汎用コンピュータで作成し、ＰＬＣにアップロードしているケースが多い。汎用コンピュータには、ラダー図プログラムを作成する作成機能、ラダー図プログラムを編集する編集機能、ラダー図プログラムをＰＬＣへアップロードするアップロード機能、ラダー図プログラムをＰＬＣからダウンロードするダウンロード機能等を実行させるプログラムがインストールされている。
【０００３】
また、ラダー図プログラムの作成を支援する装置として、特許文献１に記載されたものがある。この特許文献１の装置は、ラダー図プログラムの一部をファンクションブロックプログラム（ＦＢプログラム）に変換する操作を簡単且つ迅速に行うことを目的としたものである。この装置は、オペレータがラダー図プログラム中のＦＢプログラムに変換したい領域を選択すると、この選択された領域をＦＢプログラムに変換するのに必要な変数定義用の案内画面を生成し表示する。また、この装置は、オペレータが案内画面の表示にしたがって定義した各変数の内容に基づき、選択された領域のＦＢプログラムを生成する。さらに、この装置は、案内画面において、各変数の変数種別を、選択された領域のラダー図プログラム中に含まれる各命令のオペランドと既知の情報とに基づいて求められた変数種別情報により定義する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−  ３３９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、同じ部分回路が繰り返し何度も出現するラダー図プログラムは、その規模が大きくなるとともに、煩雑なものになり、可読性、およびデバッグ効率を低下させる。ここで言う部分回路は、複数の接点で構成されるものである。また、接点は、論理的な意味を持つラダー図プログラムの最小単位である。
【０００６】
この発明の目的は、同じ部分回路が繰り返し出現するラダー図プログラムを、可読性、およびデバッグ効率を向上させたラダー図プログラムに簡単に編集する技術を提供することにある。
【課題を解決するための手段】
【０００７】
この発明のラダー図プログラム作成支援装置は、上記目的を達するために以下のように構成している。
【０００８】
部分回路選択部は、ラダー図プログラムにおける複数の接点からなる部分回路を選択する。置換回路生成部は、部分回路選択部が選択した部分回路よりも個数の少ない接点からなる置換回路を生成する。また、補助回路生成部は、置換回路生成部が生成した置換回路に、部分回路選択部が選択した部分回路と同じ動作をさせる補助回路を生成する。
【０００９】
そして、プログラム編集部は、ラダー図プログラムに対して、このラダー図プログラムに出現している部分回路を、置換回路生成部が生成した置換回路に置き換える置換処理を行うとともに、補助回路生成部が生成した補助回路をラダー図プログラムに挿入する補助回路挿入処理を行う。
【００１０】
したがって、複数の接点からなる部分回路を選択することで、この部分回路が、より接点が少ない置換回路に置き換えられる。また、補助回路をラダー図プログラムに挿入するので、置き換えた置換回路に、対応する部分回路と同じ動作をさせることができる。これにより、ラダー図プログラムの可読性、およびデバッグ効率を向上させることができる。
【００１１】
なお、部分回路選択部は、入力指定された複数の接点からなる回路を、部分回路として選択する構成にしてもよい。また、部分回路選択部は、ラダー図プログラムにおいて、複数の接点からなり、且つ予め定めた回数を越えて出現している回路を、部分回路として抽出する構成にしてもよい。この場合、部分回路選択部は、抽出した部分回路を表示する等して、オペレータに提示して置換回路に置き換える部分回路を選択させる構成にしてもよいし、抽出した部分回路を自動的に置換回路に置き換える部分回路として選択する構成にしてもよい。
【００１２】
また、ラダー図プログラムにおいて、プログラム編集部が置換処理で置き換えた置換回路が選択されたとき、選択された置換回路に対応する補助回路を出力する補助回路出力部を追加的に備える構成にしてもよい。このように構成すれば、オペレータは、置換回路に対応する補助回路、および部分回路の確認が容易に行える。
【００１３】
また、プログラム編集部は、置換処理において、部分回路選択部が選択した部分回路に属する接点のコイルを含むステップがラダー図プログラムに出現していれば、このステップ以降に出現している部分回路を置換回路に置き換えるのを禁止する構成にしてもよい。このように構成すれば、部分回路を置換回路に置き換えることにより、ラダー図プログラムにバグが生じるのを防止できる（部分回路と、この部分回路を置き換えた置換回路との動作状態が異なるのを防止できる。）。
【００１４】
また、プログラム編集部は、補助回路挿入処理において、部分回路選択部が選択した部分回路に属する接点のコイルを含むステップがラダー図プログラムに出現していれば、このステップと、このステップ以降において部分回路が最初に出現しているステップとの間に、補助回路生成部が生成した前記補助回路を挿入する構成にしてもよい。このように構成しても、部分回路を置換回路に置き換えることにより、ラダー図プログラムにバグが生じるのを防止できる。
【００１５】
また、プログラム編集部は、ラダー図プログラムに対して、置換回路に置き換えた部分回路に属する接点のコイルを含むステップが追加されたとき、この追加されたステップ以降に出現する置換回路を対応する部分回路に置き換える構成にしてもよい。このように構成すれば、オペレータは、部分回路を置換回路に置き換える編集を行ったラダー図プログラムであるかどうかを気にすることなく、このラダー図プログラムに対してステップを追加する編集作業が行える。
【００１６】
また、プログラム編集部は、ラダー図プログラムに対して、置換回路に置き換えた部分回路に属する接点のコイルを含むステップが追加されたとき、この追加されたステップの直後に、補助回路生成部が生成した補助回路を挿入する構成にしてもよい。このように構成しても、オペレータは、部分回路を置換回路に置き換える編集を行ったラダー図プログラムであるかどうかを気にすることなく、このラダー図プログラムに対してステップを追加する編集作業が行える。
【発明の効果】
【００１７】
この発明によれば、同じ部分回路が繰り返し出現するラダー図プログラムを、可読性、およびデバッグ効率を向上させたラダー図プログラムに簡単に編集できる。
【図面の簡単な説明】
【００１８】
【図１】ラダー図プログラム作成支援装置の主要部の構成を示すブロック図である。
【図２】制御部の機能構成を示すブロック図である。
【図３】ラダー図プログラムを示す図である。
【図４】ラダー図プログラム作成支援装置の動作を示すフローチャートである。
【図５】図５（Ａ）は、部分回路、図５（Ｂ）は、置換回路、図５（Ｃ）は、補助回路を示す図である。
【図６】編集したラダー図プログラムを示す図である。
【図７】別の例にかかるラダー図プログラムを示す図である。
【図８】別の例にかかるラダー図プログラム作成支援装置の動作を示すフローチャートである。
【図９】別の例にかかるラダー図プログラム作成支援装置が編集したラダー図プログラムを示す図である。
【図１０】別の例にかかるラダー図プログラム作成支援装置の動作を示すフローチャートである。
【図１１】別の例にかかるラダー図プログラム作成支援装置が編集したラダー図プログラムを示す図である。
【図１２】候補抽出処理を示すフローチャートである。
【図１３】候補抽出処理の処理結果の表示例を示す図である。
【図１４】図１４（Ａ）〜（Ｄ）は、同一であると判断する部分回路を説明する図である。
【図１５】表示部による表示画面例を示す図である。
【図１６】置換適正化処理を示すフローチャートである。
【図１７】別の例にかかる置換適正化処理を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、この発明の実施形態であるラダー図プログラム作成支援装置について説明する。
【００２０】
図１は、この例にかかるラダー図プログラム作成支援装置の主要部の構成を示すブロック図である。この例のラダー図プログラム作成支援装置１は、制御部２と、入力操作部３と、表示部４と、記憶部５と、入出力部６と、を備えている。このラダー図プログラム作成支援装置１は、ラダー図プログラムを作成する作成機能、ラダー図プログラムを編集する編集機能、ラダー図プログラムをＰＬＣへアップロードするアップロード機能、ラダー図プログラムをＰＬＣからダウンロードするダウンロード機能等を実行させるプログラムをインストールした汎用のコンピュータで実現できる。このコンピュータが、この発明にかかるラダー図プログラム作成支援方法を実行する。また、この発明にかかるラダー図プログラム作成支援プログラムは、このコンピュータにインストールされる。
【００２１】
制御部２は、ラダー図プログラム作成支援装置１本体各部の動作を制御する。
【００２２】
入力操作部３は、キーボードやマウス等の入力デバイスを有し、オペレータによる入力デバイスの操作に応じた入力を受け付ける。
【００２３】
表示部４は、表示器等の表示デバイスを有し、その時点で処理しているラダー図プログラムや、その時点におけるラダー図プログラム作成支援装置１本体の状態等を表示する。
【００２４】
記憶部５は、ハードディスクやメモリ等の記憶媒体を有し、ラダー図プログラム作成支援装置１本体の動作に必要なプログラム、データ、ラダー図プログラム等を記憶する。
【００２５】
入出力部６は、図示していないＰＬＣ（プログラマブルコントローラ）との間で、ラダー図プログラムの入出力（ラダー図プログラムのアップロードや、ダウンロード）等を行う。
【００２６】
図２は、制御部の機能構成を示すブロック図である。制御部２は、部分回路選択部２１と、置換回路生成部２２と、補助回路生成部２３と、プログラム編集部２４と、補助回路出力部２５とを備えている。図２に示すラダー図プログラム２０は、その時点で処理しているプログラムであり、制御部２において展開されている。
【００２７】
部分回路選択部２１は、その時点で処理しているラダー図プログラム２０における複数の接点からなる部分回路を選択する。すなわち、部分回路選択部２１が選択する部分回路は、複数の接点からなる。接点は、論理的な意味を持つラダー図プログラムの最小単位であり、変数である
置換回路生成部２２は、部分回路選択部２１が選択した部分回路よりも少ない接点からなる置換回路を生成する。置換回路は、単一の接点からなる回路であるのが好ましい。
【００２８】
補助回路生成部２３は、置換回路生成部２２が生成した置換回路に、部分回路選択部２１が選択した部分回路と同じ動作をさせる補助回路を生成する。
【００２９】
プログラム編集部２４は、ラダー図プログラム２０に対して、様々な編集処理を行う。例えば、プログラム編集部２４は、ラダー図プログラム２０に出現している部分回路を、置換回路に置き換える置換処理を行う。また、プログラム編集部２４は、補助回路生成部２３が生成した補助回路をラダー図プログラム２０の適当な場所に挿入する補助回路挿入処理を行う。補助回路挿入処理では、置換回路生成部２２が生成し、置換処理で置換した置換回路が、対応する部分回路と同じ動作になる場所に挿入する。
【００３０】
補助回路出力部２５は、選択された置換回路に対応する補助回路を出力する。補助回路出力部２５が出力した補助回路は、表示部４の表示器等において表示される。
【００３１】
以下、この例にかかるラダー図プログラム作成支援装置１の動作について説明する。
【００３２】
図３は、ラダー図プログラムを示す図である。図３では、ラダー図プログラム２０の一部（ｎ＋１ステップ〜ｎ＋３ステップまでの３ステップ）を示している。１つのステップが、ラダー回路である。すなわち、ラダー図プログラム２０は、１つ以上のラダー回路によって構成される。
【００３３】
また、図３に示すラダー図プログラム２０には、ｎ＋１ステップ、ｎ＋２ステップ、およびｎ＋３ステップの３つのラダー回路において、接点ａ、接点ｂ、および接点ｃが直列に接続された部分回路が出現している。部分回路は、ラダー回路を構成する一部の回路要素である（ラダー回路は、１つの部分回路で構成されない。）。接点ａは、変数ｖａｒ１であり、接点ｂは、変数ｖａｒ２であり、接点ｃは、変数ｖａｒ３である。また、図３に示すＦＢは、ファンクションブロックである。
【００３４】
図４は、この例のラダー図プログラム作成支援装置の動作を示すフローチャートである。ラダー図プログラム作成支援装置１では、図３に示すラダー図プログラム２０が表示部４の表示器に表示される。オペレータは、入力操作部３の入力デバイス（マウス等）を操作して、編集する部分回路を選択する。例えば、オペレータは、処理対象のラダー図プログラム２０（表示器に表示されているラダー図プログラム２０）に繰り返し何度も出現している部分回路を確認し、その部分回路を選択する。オペレータが選択する部分回路は、複数の接点からなる。言い換えれば、オペレータは、単一の接点を部分回路として選択することはできない。
【００３５】
部分回路選択部２１が、オペレータによる部分回路の選択を受け付けると（ｓ１）、置換回路生成部２２が、今回選択を受け付けた部分回路を置換する置換回路を生成する（ｓ２）。ここでは、オペレータは、接点ａ、接点ｂ、および接点ｃが直列に接続された回路を部分回路として選択した場合を例にする。ｓ２では、今回受け付けた部分回路に属する接点の個数（ここでは、接点ａ、接点ｂ、および接点ｃの３つ）よりも少ない個数の接点で構成される置換回路を生成する。例えば、部分回路が、複数の接点からなる回路であれば、置換回路を１つの接点Ａからなる回路にする。ここでは、接点Ａは、変数ｖａｒＡとする。ｓ２で生成する置換回路は、ｓ１で選択された部分回路と同じ動作をさせることができる回路である。
【００３６】
なお、置換回路は、２つ以上の接点で構成してもよい。但し、置換回路を構成する接点の個数は、部分回路を構成する接点の個数よりも少ないことが条件である。
【００３７】
補助回路生成部２３は、置換回路生成部２２がｓ２で生成した置換回路に、ｓ１で選択を受け付けた部分回路と同じ動作をさせるための補助回路を生成する（ｓ３）。例えば、補助回路生成部２３は、接点ａ、接点ｂ、および接点ｃが直列に接続された部分回路（図５（Ａ）参照）が選択され、且つ接点Ａ（図５（Ｂ）参照）が、この部分回路の置換回路として生成されている場合、図５（Ｃ）に示す補助回路を生成する。この補助回路は、図示するように、直列に接続された接点ａ、接点ｂ、接点ｃ、および接点ＡのコイルＡを直列に接続した回路である。補助回路は、ラダー図プログラム２０の１つのステップとして用いる。すなわち、補助回路は、ラダー回路である。
【００３８】
プログラム編集部２４は、処理対象のラダー図プログラム２０に対して、ｓ３で生成した補助回路を、ｓ１で選択を受け付けた部分回路の直前のステップに挿入する（ｓ４）。例えば、プログラム編集部２４は、図３に示すｎ＋１ステップのラダー回路に出現している、接点ａ、接点ｂ、および接点ｃが直列に接続された回路が部分回路として選択された場合、ｓ３で生成した補助回路を、処理対象のラダー図プログラム２０のｎステップに挿入する（実際には、挿入した補助回路が処理対象のラダー図プログラム２０におけるｎ＋１ステップのラダー回路になり、これ以降のラダー回路のステップ番号が１つずつカウントアップされる。）。
【００３９】
プログラム編集部２４は、処理対象のラダー図プログラム２０に対して、ｓ４で補助回路を挿入したステップ以降のステップを順番に検索し、ｓ１で選択を受け付けた部分回路が出現しているラダー回路（ステップ）を抽出すると（ｓ５）、ここで抽出したラダー回路に出現している部分回路を、ｓ２で生成した置換回路に置き換える（ｓ６）。プログラム編集部２４は、ｓ５、およびｓ６の処理を繰り返す。プログラム編集部２４は、ｓ１で選択を受け付けた部分回路が出現しているラダー回路を処理対象のラダー図プログラム２０から抽出できなければ（処理対象のラダー図プログラム２０の最後のステップであるラダー回路に対して、ｓ５、およびｓ６にかかる処理が完了すると）、本処理を終了する。
【００４０】
例えば、図３のラダー図プログラム２０では、プログラム編集部２４は、ステップｎ＋１、ｎ＋２、およびｎ＋３のラダー回路に出現している部分回路（接点ａ、接点ｂ、および接点ｃが直列に接続された回路）を、順番に置換回路（接点Ａ）に置き換える。図６は、図３に示したラダー図プログラム２０を、上述した処理によって編集したラダー図プログラム２０を示す図である。したがって、ラダー図プログラム２０は、複数の接点からなる部分回路を、より個数の少ない接点からなる置換回路に簡単に置き換えられる。これにより、ラダー図プログラム２０の可読性、およびデバッグ効率を向上させることができる。
【００４１】
次に、ラダー図プログラム作成支援装置の別の例について説明する。この別の例にかかるラダー図プログラム作成支援装置１のハードウェアは、上記した例と同じである。この別の例にかかるラダー図プログラム作成支援装置１は、図４に示した処理に換えて、後述する図８に示す処理を行う点で、上記の例と異なる。
【００４２】
図７は、ラダー図プログラムの別の例を示す図である。図７に示すラダー図プログラム２０は、図３に示したラダー図プログラムにｎ＋４ステップ、およびｎ＋５ステップを追加したものである。ｎ＋４ステップは、接点ａのコイルａを含むラダー回路である。また、ｎ＋５ステップは、ｎ＋１ステップ〜ｎ＋３ステップと同様に、接点ａ、接点ｂ、および接点ｃが直列に接続された部分回路が出現しているラダー回路である。
【００４３】
図８は、この別の例のラダー図プログラム作成支援装置の動作を示すフローチャートである。図８では、図４と同じ処理については、同じステップ番号（ｓ＃）を付している。この別の例にかかるラダー図プログラム作成支援装置１も、上記したｓ１〜ｓ５の処理を実行する。
【００４４】
プログラム編集部２４は、ｓ５において、ｓ１で選択を受け付けた部分回路が出現しているラダー回路を処理対象のラダー図プログラム２０から抽出すると、以下に示す処理を行う。
【００４５】
プログラム編集部２４は、処理対象のラダー図プログラム２０において、ｓ４で補助回路を挿入したステップと、今回ｓ５で抽出した部分回路が出現しているラダー回路との間に、この部分回路に属する接点のコイルを含むラダー回路（該当するラダー回路）があるかどうかを判定する（ｓ１０）。プログラム編集部２４は、該当するラダー回路が無ければ、今回抽出したラダー回路に出現している部分回路を、ｓ２で生成した置換回路に置き換える（ｓ６）。また、プログラム編集部２４は、ｓ１０で該当するラダー回路があると判定すると、今回抽出したラダー回路に出現している部分回路を、ｓ２で生成した置換回路に置き換えることなく、本処理を終了する。
【００４６】
例えば、図７のラダー図プログラム２０では、プログラム編集部２４は、ステップｎ＋１、ｎ＋２、およびｎ＋３のラダー回路に出現している部分回路（接点ａ、接点ｂ、および接点ｃが直列に接続された回路）を、置換回路（接点Ａ）に置き換えるが、ステップｎ＋４が今回選択を受け付けた部分回路に属する接点ａのコイルを含むラダー回路であるので、ステップｎ＋５のラダー回路に出現している部分回路については、置換回路（接点Ａ）に置き換えない。図９は、図７に示したラダー図プログラム２０を、上述した処理によって編集したラダー図プログラム２０を示す図である。したがって、ラダー図プログラム２０を図８に示した処理で編集しても、編集したラダー図プログラム（図９に示すラダー図プログラム）において、ステップｎ＋５でバグが生じることはない。
【００４７】
さらに、ラダー図プログラム作成支援装置の別の例について説明する。この別の例にかかるラダー図プログラム作成支援装置１のハードウェアは、上記した２つの例と同じである。この別の例にかかるラダー図プログラム作成支援装置１は、図４または図８に示した処理に換えて、図１０に示す処理を行う点で、上記の例と異なる。
【００４８】
図１０は、この別の例にかかるラダー図プログラム作成支援装置の動作を示すフローチャートである。図１０では、図４、または図８で示した処理と同じ処理については、同じステップ番号（ｓ＃）を付している。この別の例にかかるラダー図プログラム作成支援装置１においても、プログラム編集部２４が、上記したｓ１〜ｓ５の処理を実行する。また、プログラム編集部２４は、ｓ１０で、処理対象のラダー図プログラム２０において、ｓ４で補助回路を挿入したステップと、今回ｓ５で抽出した部分回路が出現しているラダー回路との間に、この部分回路に属する接点のコイルを含むラダー回路（該当するラダー回路）があるかどうかを判定する。プログラム編集部２４は、該当するラダー回路が無ければ、今回抽出したラダー回路に出現している部分回路を、ｓ２で生成した置換回路に置き換える（ｓ６）。また、プログラム編集部２４は、ｓ１０で該当するラダー回路があると判定すると、ｓ３で生成した補助回路を、今回ｓ５で抽出したラダー回路の直前のステップに挿入する（ｓ１１）。さらに、プログラム編集部２４は、ｓ５で今回抽出したラダー回路の部分回路をｓ２で生成した置換回路に置き換える（ｓ６）。プログラム編集部２４は、ｓ５、ｓ６、ｓ１０、およびｓ１１にかかる処理を繰り返す。プログラム編集部２４は、ｓ５において、ｓ１で選択を受け付けた部分回路が出現しているラダー回路を処理対象のラダー図プログラム２０から抽出できなければ、本処理を終了する。
【００４９】
なお、ｓ１１で補助回路を挿入する位置は、今回ｓ５で抽出したラダー回路の直前のステップに限らず、ｓ１で選択を受け付けた部分回路に属する接点のコイルを含むラダー回路にかかるステップと、今回ｓ５で抽出したラダー回路の直前のステップとの間であればどこに挿入してもよい。
【００５０】
この図１０に示す処理では、ラダー図プログラム２０に対して、ｓ１で選択を受け付けた全ての部分回路を、ｓ２で生成した置換回路に置換することができる。図１１は、図７に示したラダー図プログラムを、図１０に示した処理によって編集したラダー図プログラムを示す図である。したがって、ラダー図プログラム２０を図１０に示した処理で編集しても、編集したラダー図プログラム２０（図１１に示すラダー図プログラム２０）において、ステップｎ＋６（図３のステップｎ＋５に対応する。）でバグが生じることもない。
【００５１】
また、ラダー図プログラム作成支援装置１は、図１２に示す処理を部分回路選択部２１に実行させる構成にしてもよい。図１２は、処理対象のラダー図プログラムに対して、置換する部分回路の候補を抽出する候補抽出処理を示すフローチャートである。
【００５２】
部分回路選択部２１は、処理対象のラダー図プログラム２０に対して、予め定めている所定回数（例えば、５回）を越えて出現している部分回路を抽出する（ｓ２１）。ラダー図プログラム作成支援装置１は、部分回路選択部２１がｓ２１で抽出した部分回路をリスト化し、表示部４の表示器に表示する出力処理を行う（ｓ２２）。
【００５３】
図１３は、ｓ１２の出力処理で、表示器に表示される画面を示す図である。図１３に示すように、表示部４は、ｓ２１で抽出した部分回路と、その出現回数と、を対応付けて表示する。
【００５４】
また、ラダー図プログラム作成支援装置１は、オペレータが図１３に示す画面において、部分回路を選択する操作を行うと、上述した図４、図８、または図１１に示すいずれかの処理を実行する構成にしてもよい。また、ラダー図プログラム作成支援装置１は、出現回数が最も多い部分回路を自動的に選択し、上述した図４、図８、または図１１に示すいずれかの処理を実行する構成にしてもよい。
【００５５】
なお、上記のいずれの例において、ラダー図プログラム作成支援装置１は、接点の接続形態が一致していなくても、接点が同じで、且つ同じ動作をする回路を同一の部分回路であると判断する。
【００５６】
変数がｖａｒ１の接点ａ、変数がｖａｒ２の接点ｂ、および変数がｖａｒ３の接点ｃが直列に接続された部分回路を例にすると、ラダー図プログラム作成支援装置１は、図１４（Ａ）〜（Ｄ）に示す回路を、同一の部分回路であると判断する。図１４（Ａ）は、接点ａ、接点ｂ、および接点ｃをこの順番に直列に接続した回路である。図１４（Ｂ）は、接点ａ、接点ｃ、および接点ｂをこの順番に直列に接続した回路である。図１４（Ｃ）は、接点ｂ、接点ｃ、および接点ａをこの順番に直列に接続した回路である。図１４（Ｄ）は、接点ａ、接点ｃ、および接点ｂをこの順番に直列に接続し、且つ接点ｃと接点ｂとの間に変数がｖａｒＸの接点ｘを直列に挿入した回路である。
【００５７】
また、ラダー図プログラム作成支援装置１は、上述した図４、図８、または図１１に示すいずれかの処理で編集されたラダー図プログラムにおいて、置換されている置換回路が選択されたとき、選択された置換回路に対応する補助回路を表示部４の表示器に表示する（図１５参照）。図１５は、破線で示す円で囲んだ変数がｖａｒＡの接点Ａが選択されたときに、この選択された接点Ａに対応する補助回路を画面下（破線で示す矩形で囲んだ領域）に表示する例を示している。
【００５８】
また、ラダー図プログラム作成支援装置１は、図４、図８、または図１１に示すいずれかの処理で編集されたラダー図プログラムに対して、オペレータがステップ（ラダー回路）を追加する編集を行うと、図１６に示す置換適正化処理を行う。
【００５９】
プログラム編集部２４は、オペレータの操作によって追加されたステップのラダー回路が、図４、図８、または図１１に示すいずれかの処理で置換回路に置き換えた部分回路に属する接点のコイル（対象コイル）を含んでいるかどうかを判定する（ｓ３１）。プログラム編集部２４は、今回追加されたステップのラダー回路が、対象コイルを含んでいなければ、本処理を終了する。また、プログラム編集部２４は、今回追加されたステップのラダー回路が、対象コイルを含んでいれば、今回追加されたステップ以降に出現する各置換回路を、対応する部分回路に戻し（ｓ３２）、本処理を終了する。
【００６０】
したがって、図４、図８、または図１１に示すいずれかの処理で編集されたラダー図プログラムに対して、オペレータがステップを追加する編集を行っても、図４、図８、または図１１に示すいずれかの処理で部分回路を置換回路に置き換えたステップでバグが生じることがない。また、オペレータは、図４、図８、または図１１に示すいずれかの処理で編集されたラダー図プログラムであるかどうかを気にすることなく、ステップ（ラダー回路）を追加する編集作業が行える。
【００６１】
また、図１３に示した置換適正化処理は、図１７に示す処理としてもよい。図１７では、上記ｓ３２にかかる処理に換えて、今回追加されたステップ（ラダー回路）の直後に、対応する補助回路を挿入し（ｓ３３）、本処理を終了する。これにより、上記と同様の効果を奏する。
【符号の説明】
【００６２】
１…ラダー図プログラム作成支援装置
２…制御部
３…入力操作部
４…表示部
５…記憶部
６…入出力部
２０…ラダー図プログラム
２１…部分回路選択部
２２…置換回路生成部
２３…補助回路生成部
２４…プログラム編集部
２５…補助回路出力部
【図１】
2020149168.tif 000003
【図２】
2020149168.tif 000004
【図３】
2020149168.tif 000005
【図４】
2020149168.tif 000006
【図５】
2020149168.tif 000007
【図６】
2020149168.tif 000008
【図７】
2020149168.tif 000009
【図８】
2020149168.tif 000010
【図９】
2020149168.tif 000011
【図１０】
2020149168.tif 000012
【図１１】
2020149168.tif 000013
【図１２】
2020149168.tif 000014
【図１３】
2020149168.tif 000015
【図１４】
2020149168.tif 000016
【図１５】
2020149168.tif 000017
【図１６】
2020149168.tif 000018
【図１７】
2020149168.tif 000019