(57)【要約】【課題】出力結果と実際の入力信号との関係性とが分かりやすい開発環境を提供する。【解決手段】サポート装置は、ラダープログラム内の演算結果に基づいてオン／オフされる中間接点を含む論理回路について、中間接点を外部からの入力信号に基づいてオン／オフする実接点を組み合わせた回路に組み替えることで、中間接点を含む論理回路から中間接点を含まない論理回路に展開する。【選択図】図１
2020024594.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置において実行されるラダープログラムの作成を支援するサポート装置であって、
前記ラダープログラムを、複数種類の要素を組み合わせた論理回路により表示するプログラム表示手段と、
前記ラダープログラム内の演算結果を示す第１の種類の接点を含む論理回路について、当該第１の種類の接点を含む論理回路に含まれる全ての当該第１の種類の接点を、該第１の種類の接点が示す演算結果を得るための論理演算を外部から入力された信号を示す第２の種類の接点を組み合わせた論理回路に展開する展開手段とを備える、サポート装置。
【請求項２】
前記ラダープログラムの実行結果を受けて、当該ラダープログラムを示す論理回路の導通状態を出力する出力部をさらに備える、請求項１に記載のサポート装置。
【請求項３】
前記プログラム表示手段は、前記展開手段によって得られた前記第２の種類の接点を組み合わせた論理回路について、導通状態の接点と、当該導通状態の接点に接続された非導通状態の接点とを表示し、当該導通状態の接点に接続された非導通状態の接点から出力結果を示すコイルまでの間に位置する要素を表示しない、請求項２に記載のサポート装置。
【請求項４】
前記展開手段は、前記第１の種類の接点が偽の演算結果を受けて導通状態となるｂ接点である場合に、当該第１の種類の接点を、当該第１の種類の接点が受ける演算の論理表現を反転した演算を示す論理回路に換えることで、当該第１の種類の接点が示す演算結果を得るための論理演算を前記第２の種類の接点を組み合わせた論理回路に展開する、請求項１〜請求項３のうちいずれか１項に記載のサポート装置。
【請求項５】
前記展開手段によって得られた前記第２の種類の接点を組み合わせた論理回路から矛盾する接点の組み合わせを抽出し、当該矛盾する接点の組み合わせからなる回路を削除する最適化手段をさらに備える、請求項１〜請求項４のうちいずれか１項に記載のサポート装置。
【請求項６】
前記展開手段によって得られた前記第２の種類の接点を組み合わせた論理回路から冗長な接点の組み合わせを抽出し、当該冗長な接点の組み合わせに含まれる接点を削除する最適化手段をさらに備える、請求項１〜請求項４のうちいずれか１項に記載のサポート装置。
【請求項７】
前記展開手段によって得られた前記第１の種類の接点を組み合わせた論理回路を保存する処理を行う保存処理手段をさらに備える、請求項１〜請求項６のうちいずれか１項に記載のサポート装置。
【請求項８】
制御対象を制御する制御装置で実行されるラダープログラムの開発を支援するサポートプログラムであって、
前記サポートプログラムはコンピュータに、
前記ラダープログラムを、前記ラダープログラム内の演算結果を示す第１の種類の接点を含む複数種類の要素を組み合わせた論理回路により表示するステップと、
前記第１の種類の接点を含む論理回路について、当該第１の種類の接点を含む論理回路に含まれる全ての当該第１の種類の接点を、当該第１の種類の接点が示す演算結果を得るための論理演算を外部から入力された信号を示す第２の種類の接点を組み合わせた論理回路に展開するステップとを実行させる、サポートプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御対象を制御する制御装置において実行される制御プログラムの作成を支援するサポート装置およびそれを実現するためのサポートプログラムに関する。
【背景技術】
【０００２】
様々な製造現場において、ＰＬＣ（Programmable Logic Controller）などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などに応じて設計されたユーザプログラムが実行される。このようなユーザプログラムは、制御装置とは別に用意された開発環境にて作成される。開発環境を提供するとともに、制御装置に対してユーザプログラムをアップロードし、あるいは、制御装置に対してユーザプログラムをダウンロードする機能を提供する装置は、サポート装置とも称される。制御装置で実行されるユーザプログラムは、例えばＩＥＣ６１１３１−３等で規定されるラダー言語により、ラダーロジック回路（論理回路）またはラダーロジック回路の組み合わせにより表される演算の命令コードで記述される「ラダープログラム」を含む。
【０００３】
ラダープログラムは、ラダー図により表現される。ラダー図は、接点およびコイル等の組み合わせで表現される論理回路が梯子状に描かれた構成を有している。コイルは、接点を組み合わせた論理演算の結果の出力先を示す。また、一の論理回路が他の論理回路の結果を受け、さらに、他の論理回路が、また別の他の論理回路の結果を受けるような階層的な表現でラダー図は描かれることもある。このような場合、一の論理回路が多階層的に表現されるため、作成した論理回路が動作しない原因を特定しにくいという課題があった。
【０００４】
例えば、特開２０１６−１７０６６２号公報（特許文献１）は、論理回路であるラダー回路が動作しない原因を容易に見つけることを目的として、確認対象のラダー回路より前に位置する直近の分岐回路を検索し、検索した分岐回路の種類に基づいてラダープログラム内から表示対象とすべき分岐回路を抽出して表示する装置を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１７０６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示の装置は、抽出した各分岐回路を別々に表示するのであって、一本の繋がった論理回路とはならないため、一の論理回路の出力結果を得るための論理演算の全体像が分かりにくく、言い換えると、出力結果と実際の入力信号との関係性とが分かりにくいという課題が残る。
【０００７】
本開示の一つの目的は、出力結果と実際の入力信号との関係性とが分かりやすい開発環境を提供することである。
【課題を解決するための手段】
【０００８】
本開示の一例によれば、制御対象を制御する制御装置において実行されるラダープログラムの作成を支援するサポート装置が提供される。サポート装置は、ラダープログラムを、複数種類の要素を組み合わせた論理回路により表示するプログラム表示手段と、ラダープログラム内の演算結果を示す第１の種類の接点を含む論理回路について、第１の種類の接点を含む論理回路に含まれる全ての第１の種類の接点を、第１の種類の接点が示す演算結果を得るための論理演算を外部から入力された信号を示す第２の種類の接点を組み合わせた論理回路に展開する展開手段とを含む。
【０００９】
この開示によれば、第１の種類の接点を含む論理回路を第２の種類の接点の組み合わせで表すことができるため、論理回路の出力結果と、実際に外部から入力される信号との関係とを分かりやすく表示することができる。
【００１０】
上述の開示において、サポート装置は、ラダープログラムの実行結果を受けて、ラダープログラムを示す論理回路の導通状態を出力する出力部をさらに含んでもよい。
【００１１】
この開示によれば、論理回路の導通状態から、ラダープログラムが機能していない原因を容易に特定できる。特に、論理回路が第２の種類の接点だけで表すことができるため、ラダープログラムが機能していない直接の原因をさらに容易に特定することができる。
【００１２】
上述の開示において、プログラム表示手段は、展開手段によって得られた第２の種類の接点を組み合わせた論理回路について、導通状態の接点と、導通状態の接点に接続された非導通状態の接点とを表示し、導通状態の接点に接続された非導通状態の接点から出力結果を示すコイルまでの間に位置する要素を表示しないようにしてもよい。
【００１３】
この開示によれば、ラダープログラムが機能していない原因を特定する上で必要な箇所のみ表示し、不要な箇所を表示しないようにすることで、表示する情報量が減り、ラダープログラムが機能していない原因をさらに容易に特定することができる。
【００１４】
上述の開示において、展開手段は、第１の種類の接点が偽の演算結果を受けて導通状態となるｂ接点である場合に、第１の種類の接点を、第１の種類の接点が受ける演算の論理表現を反転した演算を示す論理回路に換えることで、第１の種類の接点が示す演算結果を得るための論理演算を第２の種類の接点を組み合わせた論理回路に展開してもよい。
【００１５】
この開示によれば、展開が難しい論理回路についても展開をすることができ、展開することのできるラダープログラムの種類が増え、汎用性が高まる。
【００１６】
上述の開示において、サポート装置は、展開手段によって得られた第２の種類の接点を組み合わせた論理回路から矛盾する接点の組み合わせを抽出し、矛盾する接点の組み合わせからなる回路を削除する最適化手段をさら含んでもよい。
【００１７】
この開示によれば、論理回路全体を簡潔に表すことができる。その結果、論理回路全体の流れがより分かり易くなり、ラダープログラムが機能していない原因をさらに容易に特定することができる。
【００１８】
上述の開示において、サポート装置は、展開手段によって得られた第２の種類の接点を組み合わせた論理回路から冗長な接点の組み合わせを抽出し、冗長な接点の組み合わせに含まれる接点を削除する最適化手段をさら含んでもよい。
【００１９】
この開示によれば、論理回路全体を簡潔に表すことができる。その結果、論理回路全体の流れがより分かり易くなり、ラダープログラムが機能していない原因をさらに容易に特定することができる。
【００２０】
上述の開示において、サポート装置は、展開手段によって得られた第２の種類の接点を組み合わせた論理回路を保存する処理を行う保存処理手段をさらに含んでもよい。
【００２１】
この開示によれば、展開手段によって得られた第２の種類の接点を組み合わせた論理回路が示すラダープログラムは、展開手段によって展開する前の論理回路が示すラダープログラムに比べて、第１の種類の接点のような中間変数を含まない分、データのサイズが小さい。このようなデータのサイズが小さくなったラダープログラムを保存しておくことで、データのサイズが小さくなったラダープログラムを利用することができ、制御装置のメモリの使用量を減らすことができる。
【００２２】
本開示の別の一例によれば、制御対象を制御する制御装置で実行されるラダープログラムの開発を支援するサポートプログラムが提供される。サポートプログラムはコンピュータに、ラダープログラムを、ラダープログラム内の演算結果を示す第１の種類の接点を含む複数種類の要素を組み合わせた論理回路により表示するステップと、第１の種類の接点を含む論理回路について、第１の種類の接点を含む論理回路に含まれる全ての第１の種類の接点を、第１の種類の接点が示す演算結果を得るための論理演算を外部から入力された信号を示す第２の種類の接点を組み合わせた論理回路に展開するステップとを実行させる。
【００２３】
この開示によれば、第１の種類の接点を含む論理回路を第２の種類の接点の組み合わせで表すことができるため、論理回路の出力結果と、実際に外部から入力される信号との関係とを分かりやすく表示することができる。
【発明の効果】
【００２４】
本開示の一例によれば、出力結果と実際の入力信号との関係性とが分かりやすい開発環境を提供できる。
【図面の簡単な説明】
【００２５】
【図１】本実施の形態に係るサポート装置の適用場面を模式的に示す図である。
【図２】サポート装置を適用可能な制御システムの構成例を示す模式図である。
【図３】サポート装置のハードウェア構成例を示す模式図である。
【図４】ラダー図の一例である。
【図５】展開の概要を示す図である。
【図６】ラダープログラムの実行結果が反映されたラダー図である。
【図７】ラダープログラムの実行結果が反映されたラダー図である。
【図８】回路の最適化について説明するための図である。
【図９】省略表示の一例である。
【図１０】表示処理のフローチャートである。
【図１１】実接点探索処理のフローチャートである。
【図１２】回路変更処理のフローチャートである。
【図１３】論理表現の反転を説明するための図である。
【図１４】サポート装置のソフトウェア構成を示す模式図である。
【発明を実施するための形態】
【００２６】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２７】
§１  適用例
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係るサポート装置２００の適用場面を模式的に示す図である。サポート装置２００は、たとえば、制御対象を制御するＰＬＣ（プログラマブルコントローラ）などの制御装置で実行される制御プログラムを開発する環境を提供する。
【００２８】
ＰＬＣなどの制御装置で実行される制御プログラムは、通常、国際規格ＩＥＣ６１１３１−３においてＰＬＣアプリケーションのプログラミング言語として規定された、ラダーダイアグラム（ＬＤ：Ladder Diagram）、ファンクションブロックダイアグラム（ＦＢＤ：Function Block Diagram）、シーケンシャルファンクションチャート（ＳＦＣ：Sequential Function Chart）、インストラクションリスト（ＩＬ：Instruction List）、ストラクチャードテキスト（ＳＴ：Structured Text）の５種類のプログラミング言語で記述される。本発明においては、制御装置で実行される制御プログラムのうち、ラダーダイアグラムで記述されたラダープログラムを対象とする。
【００２９】
サポート装置２００は、ラダーダイアグラムで記述されたラダープログラムを、複数種類の回路要素を組み合わせた論理回路により表示するプログラム表示手段２６０ａと、ラダープログラム内の演算結果を示す中間接点５４４を含む論理回路を、中間接点５４４を含まない論理回路に展開する展開手段２６２ａとを備える。
【００３０】
複数種類の回路要素には、外部からの入力信号に基づいてオン／オフする接点５４２，５４４と、回路内の演算結果を出力するコイル５６０とを含む。なお、回路要素は、所定の処理を一まとめにしたファンクションブロックを含んでもよい。
【００３１】
接点は、外部から入力される信号に基づいてオン／オフされる実接点５４２と、ラダープログラム内の演算結果に基づいてオン／オフされる中間接点５４４とを含む。
【００３２】
展開手段２６２ａは、中間接点５４４を含む論理回路を、中間接点５４４を含まない論理回路に展開する。具体的には、展開手段２６２ａは、中間接点５４４を、実接点５４２を組み合わせた回路に組み替えることで、中間接点５４４を含む論理回路から中間接点５４４を含まない論理回路に展開する。中間接点５４４は、ラダープログラム内の演算結果を示すものであるから、演算を実接点５４２の組み合わせにより表現することができる。
【００３３】
図１に示す例では、展開手段２６２ａは、中間接点５４４である接点（Ｌ）と接点（Ｍ）とを含む論理回路５２０ａを展開する。接点（Ｌ）は、コイル（Ｌ）の結果を示す。コイル（Ｌ）は、実接点５４２である接点（ｈ）と接点（ｉ）とを組み合わせた論理回路の結果を受ける。よって、接点（Ｌ）を接点（ｈ）と接点（ｉ）とを組み合わせた論理回路で表現することができる。また、同様に、接点（Ｍ）は、コイル（Ｍ）の結果を示す。コイル（Ｍ）は、実接点５４２である接点（ｊ）と接点（ｋ）とを組み合わせた論理回路の結果を受ける。よって、接点（Ｍ）を接点（ｊ）と接点（ｋ）とを組み合わせた論理回路で表現することができる。その結果、論理回路５２０ａは、中間接点５４４を含まない実接点５４２である接点（ｈ），接点（ｉ），接点（ｋ），および接点（ｊ）を組み合わせた論理回路５２０ｂに展開される。
【００３４】
なお、接点（ｈ），接点（ｉ），接点（ｋ），および接点（ｊ）のうちのいずれかの接点が中間接点５４４である場合には、さらにその中間接点５４４を展開し、中間接点５４４を含まない論理回路となるまで、展開が繰り返される。
【００３５】
このように、中間接点５４４を含む論理回路５２０ａが、中間接点５４４を含まない実接点５４２で表した論理回路５２０ｂに展開されることで、コイル（Ｎ）が出力する結果が、外部から入力されるいずれの信号に依存するのかが分かり易い。すなわち、出力結果と実際の入力信号との関係を分かりやすくすることができる。
【００３６】
§２  具体例
以下、本発明の具体例として、本実施の形態に係るサポート装置２００のより詳細な構成および処理について説明する。
【００３７】
＜Ａ．制御システム１の全体構成例＞
図２は、サポート装置２００を適用可能な制御システム１の構成例を示す模式図である。図２を参照して、制御システム１は、複数のＰＬＣ１００−１，１００−２，１００−３，１００−４，…（以下、「ＰＬＣ１００」とも総称する。）を含んでいる。ＰＬＣ１００の各々は、リレー，センサ等のフィールド機器である制御対象を制御する制御装置の一例である。サポート装置２００は、ＰＬＣ１００に接続可能であり、ＰＬＣ１００の制御プログラムの開発を支援する環境を提供する。制御システム１は、１台のＰＬＣ１００を含む構成であってもよい。以下では、説明を簡単にするために、１台のＰＬＣ１００を対象にした開発環境を説明する。
【００３８】
ＰＬＣ１００は、典型的には、制御プログラムを含む各種プログラムを実行する主体であるＣＰＵユニット１０と、ＣＰＵユニット１０などへ電力を供給する電源ユニット１２と、フィールドからの信号を遣り取りするＩ／Ｏ（Input/Output）ユニット１４とを含む。Ｉ／Ｏユニット１４は、ＣＰＵユニット１０とシステムバス１１を介して接続されている。
【００３９】
サポート装置２００が提供する開発支援環境は、制御プログラムのエディタ（編集）、デバッカ、シミュレータおよびこれらの出力情報をディスプレイ等のモニタに出力するためのモニタ機能等を有し得る。サポート装置２００は、さらに、運転中のＰＬＣ１００の状態値を取得し、ディスプレイ等のモニタに出力する機能なども備える。
【００４０】
光学記録媒体８に格納されたアプリケーションプログラムであるサポートプログラムがサポート装置２００にインストールされることで、上述したような開発支援環境のための各種機能が実現される。光学記録媒体８に代えて、外部のサーバ装置などからネットワークを介して、サポートプログラムをダウンロードするようにしてもよい。サポート装置２００は、一例として、接続ケーブルを介してＰＬＣ１００のＣＰＵユニット１０と接続される。サポート装置２００は、典型的には、パーソナルコンピュータで実現される。
【００４１】
＜Ｂ．サポート装置２００のハードウェア構成例＞
図３は、サポート装置２００のハードウェア構成例を示す模式図である。サポート装置２００は、典型的には、汎用のコンピュータで構成される。なお、ＰＬＣ１００が配置される製造現場における保守性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【００４２】
サポート装置２００は、記憶部２０１と、オペレーティングシステム（ＯＳ）を含む各種プログラムを実行するＣＰＵ２０２とを備える。記憶部２０１は、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）２０４と、ＣＰＵ２０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ２０６と、ＣＰＵ２０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）２０８とを含む。
【００４３】
サポート装置２００は、さらに、サポート装置２００に指示を入力するためにユーザが操作するキーボード２１０およびマウス２１２を含む操作部２０３、および情報をユーザに提示するためのディスプレイ２１４を含む。サポート装置２００は、ＰＬＣ１００（ＣＰＵユニット１０）などと通信するための通信インターフェイス２１８を含む。通信インターフェイス２１８は、ＰＬＣ１００が備えるＵＳＢインターフェイスと通信するためにＵＳＢ通信モジュールを含み得る。
【００４４】
サポート装置２００は、光学記録媒体８からそれに格納されている開発支援環境を提供するためのサポートプログラムを読み取るための光学記録媒体読取装置２１６を含む。
【００４５】
図３には、ＣＰＵ２０２等のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００４６】
＜Ｃ．ラダープログラムの表示方法＞
サポート装置２００は、ディスプレイ２１４を介して、ＰＬＣで実行されるユーザプログラムをユーザに提示可能である。ユーザプログラムは、ＰＬＣ１００で実行される制御プログラムの一種であり、制御対象に応じて作成されるプログラムである。ユーザプログラムは、国際規格ＩＥＣ６１１３１−３等で規定されるラダーダイアグラム（ＬＤ：Ladder Diagram）、ファンクションブロックダイアグラム（ＦＢＤ：Function Block Diagram）、シーケンシャルファンクションチャート（ＳＦＣ：Sequential Function Chart）、インストラクションリスト（ＩＬ：Instruction List）、ストラクチャードテキスト（ＳＴ：Structured Text）の５種類のプログラム言語のうちのいずれかの言語により記述される。
【００４７】
本実施の形態のユーザプログラムは、ラダー言語により記述された、ラダーロジック回路（論理回路）またはラダーロジック回路の組み合わせにより表される演算の命令コードで記述される「ラダープログラム」である。
【００４８】
ラダープログラムは、入力側母線５１２と出力側母線５１４との間に回路要素と接続線とを用いた論理回路（以下、単に「回路」ともいう）を梯子状に描いたラダー図５１０により表現される。図４は、ラダー図の一例である。
【００４９】
回路要素は、入力信号に基づいてオン／オフされる接点５４０とオン／オフを出力するコイル５６０とを含む。以下では、オンしている状態を導通状態ともいい、オフしている状態を非導通状態ともいう。ラダー図５１０は、接点５４０およびコイル５６０といった回路要素を互いに接続線５８０で繋ぐことで描かれる。また、一の回路は、接点５４０を組み合わせて表現される論理演算を示す部分と、論理演算の結果を出力する出力部分とからなり、コイル５６０は出力部分に相当する。なお、回路要素は、所定の処理を一まとめにしたファンクションブロックを含み得る。
【００５０】
接点５４０は、外部から入力される信号に基づいてオン／オフされる接点（以下、「実接点５４２」ともいう）と、ラダープログラム内の演算結果に基づいてオン／オフされる接点（以下、「中間接点５４４」ともいう）とを含む。
【００５１】
図４に示す例では、ラダー図５１０は、実接点５４２として、センサ１〜センサ５からの信号を受けてオン／オフされる接点（センサ１）〜接点（センサ５）を含み、中間接点５４４として、コイル（Ａ）〜コイル（Ｃ）の出力結果を受けてオン／オフされる接点（Ａ）〜接点（Ｃ）を含む。なお、図４においては、便宜上、一部符号を省略している。また、図４においては、便宜上、一部回路を省略しており、「…」は回路を省略していることを示している。
【００５２】
図４に示すラダープログラムは、５つの論理回路を含むラダー図５１０で表される。具体的には、ラダープログラムは、第１回路５２１、第２回路５２２、第３回路５２３、第４回路５２４および第５回路５２５を含むラダー図５１０で表される。
【００５３】
コイル（Ａ）は、第１演算５１の演算結果を示す。また、接点（Ａ）は、コイル（Ａ）の出力結果を受けてオン／オフされる。すなわち、接点（Ａ）は、コイル（Ａ）の出力結果を示しているともいえ、言い換えると、接点（Ａ）は、第１演算５１の結果を示しているともいえる。
【００５４】
コイル（Ｂ）は、中間接点５４４である接点（Ａ）と、実接点５４２である接点（センサ３）との組み合わせからなる第２演算５２の結果を示す。第２演算５２は、第１演算５１の結果を引用して実行される。
【００５５】
コイル（Ｃ）は、中間接点５４４である接点（Ｂ）と、実接点５４２である接点（センサ４）との組み合わせからなる第３演算５３の結果を示す。第３演算５３は、第２演算５２の結果を引用して実行される。また、第２演算５２は、第１演算５１の結果を引用して実行される。
【００５６】
コイル（Ｄ）は、中間接点５４４である接点（Ｃ）と、実接点５４２である接点（センサ５）との組み合わせからなる第４演算５４の結果を示す。第４演算５４は、第３演算５３の結果を引用して実行される。また、第３演算５３は、第２演算５２の結果を引用して実行される。また、第２演算５２は、第１演算５１の結果を引用して実行される。
【００５７】
サポート装置２００は、演算結果を示す中間接点５４４を含む回路を、中間接点５４４を含まない形式で表現することができる。中間接点５４４を含む回路を、中間接点５４４を含まない形式で表現することを、「展開」ともいう。図５は、展開の概要を示す図である。なお、図５のラダー図５１０が示すラダープログラムは、図４のラダー図５１０が示すラダープログラムと等しい。また、図５においては、便宜上、中間接点５４４を太線で示している。
【００５８】
回路の展開は、中間接点５４４またはコイル５６０が選択された状態で所定の操作が受け付けられたときに、選択された中間接点５４４が受ける演算を示す回路または選択されたコイル５６０を含む回路に対して行われる。図５に示す例では、図４に示すコイル（Ｄ）が選択された状態で所定の操作が受け付けられ、第５回路５２５が中間接点５４４を含まない形式に展開される。
【００５９】
入力側母線５１２から出力側母線５１４に向かって、順に第５回路５２５は展開される。具体的には、第５回路５２５の左端に位置する中間接点５４４である接点（Ｃ）から順に展開する。接点（Ｃ）は第３演算５３の結果を示しているため、第３演算５３に置き換えることができる。
【００６０】
第３演算５３に置き換わった後も、第３演算５３は中間接点５４４である接点（Ｂ）を含むため、中間接点５４４が残る。そこで、次に、中間接点５４４である接点（Ｂ）が展開される。接点（Ｂ）は第２演算５２の結果を示しているため、第２演算５２に置き換えることができる。
【００６１】
第２演算５２に置き換わった後も、第２演算５２は中間接点５４４である接点（Ａ）を含むため、中間接点５４４が残る。そこで、次に、中間接点５４４である接点（Ａ）が展開される。接点（Ａ）は第１演算５１の結果を示しているため、第１演算５１に置き換えることができる。
【００６２】
第１演算５１に置き換わると、第５回路５２５は全て実接点５４２で表されることとなる。このように、中間接点５４４を含む回路を、中間接点５４４を含まない実接点５４２に展開することで、中間接点５４４を含む回路の出力結果と、外部から入力される信号との関係が分かり易い回路を得られる。
【００６３】
＜Ｄ．実行結果の表示方法＞
図６および図７は、ラダープログラムの実行結果が反映されたラダー図である。実行結果は、ＰＬＣ１００がラダープログラムを実行した結果と、サポート装置２００内で実行されたシミュレーション結果とを含む。図６および図７において、実行結果の出力を太線で表す、いわゆるパワーフロー表示で示されている。また、図６および図７に示すラダー図５１０には、共通の実行結果が反映されている。図７においては、図６に示す回路Ｘを展開したものとする。また、図６においては、便宜上、一部回路を省略しており、「…」は回路を省略していることを示している。また、接点の上部に記載された信号のうち、「Ｉ」から始まる信号は外部からの信号を示し、「Ｑ」から始まる信号はラダープログラム内の論理演算の結果を示すものとする。
【００６４】
図６に示すラダー図５１０においては、接点（Ｑ２）および接点（Ｑ３）が導通状態となっていないこと（非導通状態であること）を把握することができるが、接点（Ｑ２）および接点（Ｑ３）がなぜ導通状態になっていないのかは、接点（Ｑ２）および接点（Ｑ３）が受ける信号を出力するコイルを含む回路に遡る必要がある。
【００６５】
これに対して、図７に示すように、回路Ｘを実接点５４２だけで表すように展開することで、回路Ｘの実行が途中で止まってしまっている原因を容易に特定することができる。特に、回路Ｘを構成する要素が一繋がりで表現されているため、回路を追いやすい。その結果、回路が途中で止まってしまっている原因も要素を順に追っていくことで容易に特定することができる。
【００６６】
＜Ｅ．回路の最適化＞
サポート装置２００は、回路を展開したときに、実接点５４２を組み合わせた論理回路から冗長な接点の組み合わせや、矛盾した接点の組み合わせを削除することができる。図８は、回路の最適化について説明するための図である。
【００６７】
矛盾した接点の組み合わせとは、共通する信号を受ける互いに異なる種類の接点同士が直列に接続されている場合をいう。互いに異なる種類の接点とは、具体的には、入力信号がオンのときに導通するａ接点と、入力信号がオフのときに導通するｂ接点とである。
【００６８】
たとえば、回路Ｘ内の論理演算Ｘ１が示す回路には、Ｉ０２からの信号がオンで導通する接点Ｘ１ａと、Ｉ０２からの信号がオフで導通する接点Ｘ１ｂとが直列に接続された箇所を含む。すなわち、Ｉ０２からの信号がオンのときには接点Ｘ１ａが導通するものの、接点Ｘ１ｂは導通しないため、論理演算Ｘ１を含む回路が導通することはない。そのため、論理演算Ｘ１を示す部分の回路は、回路Ｘの結果には影響を与えないため、論理演算Ｘ１を示す部分の回路を回路Ｘから削除できる。
【００６９】
冗長な接点の組み合わせとは、共通する信号を受ける互いに共通する種類の接点同士が直列に接続されている場合や、共通する信号を受ける互いに異なる種類の接点同士が並列に接続されている場合をいう。
【００７０】
たとえば、回路Ｘ内の論理演算Ｘ２が示す回路には、Ｉ０４からの信号がオンで導通する接点Ｘ２ａと、Ｉ０４からの信号がオンで導通する接点Ｘ２ｂとが直列に接続された箇所を含む。すなわち、接点Ｘ２ａと接点Ｘ２ｂとのうち、いずれか一方の接点を削除しても、回路Ｘの結果には影響を与えないため、接点Ｘ２ａと接点Ｘ２ｂとのうち、いずれか一方を削除できる。
【００７１】
また、回路Ｘ内の論理演算Ｘ３が示す回路には、Ｉ０９からの信号がオンで導通する接点Ｘ３ａと、Ｉ０９からの信号がオフで導通する接点Ｘ３ｂとが互いに並列に接続されている。すなわち、Ｉ０９からの信号がオンのときには接点Ｘ３ａが導通し、Ｉ０９からの信号がオフのときには接点Ｘ３ｂは導通するため、並列に接続された回路は実質的に意味を成していない。すなわち、接点Ｘ３ａと接点Ｘ３ｂとを削除しても、回路Ｘの結果には影響を与えないため、接点Ｘ３ａと接点Ｘ３ｂとを削除できる。
【００７２】
図８の下方に示すラダー図は、結果に影響のない回路や接点を削除して最適化した後のラダープログラムである。図８に示すように、結果に影響のない回路や接点を削除することで、ラダープログラム全体を簡潔に表すことができる。また、簡潔に表されることにより、処理全体の流れがより分かり易くなり、また、処理が実行されない場合に原因を特定し易くなる。
【００７３】
＜Ｆ．表示の省略＞
図５，図７，および図８に示すように、回路を展開した場合、横に長い表示となってしまい、ディスプレイ２１４の表示領域に収まらない虞がある。サポート装置２００は、展開した回路について、その回路の一部を省略して表示することができる。図９は、省略表示の一例である。
【００７４】
具体的には、導通状態の接点と、導通状態の接点に接続された非導通状態の接点である接点（Ｉ１９）と接点（Ｉ１３）と、コイル（Ｑ５）とを表示する一方、接点（Ｉ１９）とコイル（Ｑ５）との間、および接点（Ｉ１３）とコイル（Ｑ５）との間の要素を省略する。
【００７５】
コイル（Ｑ５）が駆動しない原因を特定する場合、回路の入力側から順に探索する。そのため、コイル（Ｑ５）が駆動しない原因を特定する場合、まずは、接点（Ｉ１９）および接点（Ｉ１３）について調べられる。すなわち、接点（Ｉ１９）より出力側に位置する接点および、接点（Ｉ１３）より出力側に位置する接点については表示されなくとも、原因を特定するにあたっては影響がない。
【００７６】
このように、必要な箇所のみ表示し、不要な箇所を表示しないようにすることで、表示する情報量が減り、ラダープログラムが機能していない原因をさらに容易に特定することができる。また、展開することによって、ラダー図５１０の横幅を狭くすることができ、その結果、ラダー図５１０全体をディスプレイ２１４に表示させ易くすることができる。
【００７７】
＜Ｇ．表示処理＞
図１０は、表示処理のフローチャートである。ＣＰＵ２０２は、光学記録媒体８に格納されて提供されるサポートプログラムに含まれる命令コードを読み出して表示処理を実行し、ディスプレイ２１４にラダー図５１０を表示する。なお、図１０に示す表示処理においては、ＰＬＣ１００において実行されているラダープログラムの実行結果を表示するものとして説明する。
【００７８】
ステップＳ１において、ＣＰＵ２０２は、ラダー表示指示を検出したか否かを判定する。ラダー表示指示とは、ラダー図５１０をディスプレイ２１４に表示するための指示であって、ラダー図５１０を表示する直接的な指示と、ラダープログラムの実行結果を表示する指示とを含む。
【００７９】
ラダー表示指示を検出していない場合（ステップＳ１においてＮＯ）、ＣＰＵ２０２は表示処理を終了する。ラダー表示指示を検出している場合（ステップＳ１においてＹＥＳ）、ＣＰＵ２０２は、ステップＳ２に処理を切り替える。
【００８０】
ステップＳ２において、ＣＰＵ２０２は、ラダープログラムを読み出す。ラダープログラムは、ＰＬＣ１００のＣＰＵユニット１０が備えるフラッシュメモリ等の記憶部に記憶されている。ＣＰＵ２０２は、通信インターフェイス２１８を介してＣＰＵユニット１０の記憶部からラダープログラムを読み出す。なお、サポート装置２００内で実行されたシミュレーション結果を表示したり、編集対象のラダープログラムを表示したりする場合、ＣＰＵ２０２は、記憶部２０１からラダープログラムを読み出す。なお、ラダープログラムの実行結果を、ラダー図５１０とともに表示する場合、ステップＳ２において、ＣＰＵ２０２は、ラダープログラムの実行結果も読み出す。
【００８１】
ステップＳ３において、ＣＰＵ２０２は、読み出したラダープログラムを示すラダー図と、実行結果とをディスプレイ２１４に表示する。ＣＰＵ２０２は、ステップＳ３の処理を実行することで、図４および図６に示すように、回路が展開される前の態様のラダー図５１０をディスプレイ２１４に表示する。
【００８２】
ステップＳ４において、ＣＰＵ２０２は、中間接点５４４またはコイル５６０が選択されたか否かを判定する。選択されていないと判定した場合（ステップＳ４においてＮＯ）、ＣＰＵ２０２は、表示処理を終了する。選択されていると判定した場合（ステップＳ４においてＹＥＳ）、ＣＰＵ２０２は、処理をステップＳ５に切り替える。
【００８３】
ステップＳ５において、ＣＰＵ２０２は、展開指示を検出したか否かを判定する。展開指示は、予め定められた操作であって、ユーザによって設定される操作や、プログラムの提供者によって予め定められている操作であってもよい。
【００８４】
展開指示を検出していないと判定した場合（ステップＳ５においてＮＯ）、ＣＰＵ２０２は、表示処理を終了する。展開指示を検出したと判定した場合（ステップＳ５においてＹＥＳ）、ＣＰＵ２０２は、処理をステップＳ６に切り替える。
【００８５】
ステップＳ６において、ＣＰＵ２０２は、実接点探索処理を行う。ＣＰＵ２０２は、実接点探索処理を実行することで、選択された中間接点５４４が受ける演算を示す回路または選択されたコイルを含む回路を、中間接点５４４を含まない形式で表現するために実接点５４２を探索し、展開したラダープログラムが記憶部２０１に格納する。
【００８６】
ステップＳ７において、ＣＰＵ２０２は、記憶部２０１に格納されたラダープログラムを表示して処理を終了する。すなわち、ステップＳ７においては、図５または図７に示したような展開した回路が表示される。なお、表示方法は、展開する前の回路が表示されているウィンドウとは別のウィンドウに展開された回路を表示してもよく、また、展開する前の回路の表示を、展開後の回路の表示に更新してもよい。
【００８７】
＜Ｈ．実接点探索処理＞
図１１は、実接点探索処理のフローチャートである。実接点探索処理は、選択された中間接点またはコイルが示す回路を、中間接点５４４を含まない回路に展開するための処理である。
【００８８】
ステップＳ６０２において、ＣＰＵ２０２は、コイルが選択されたか否かを判定する。より具体的には、ＣＰＵ２０２は、ステップＳ４においてコイルが選択されたのか否かを判定する。コイルが選択されていないと判定した場合（ステップＳ６０２においてＮＯ）、すなわち、中間接点５４４が選択された場合、ＣＰＵ２０２は、ステップＳ６０４において、選択された中間接点５４４が示すコイルを参照して、ステップＳ６０６に進む。
【００８９】
コイルが選択されていると判定した場合（ステップＳ６０２においてＹＥＳ）、ＣＰＵ２０２は、処理をステップＳ６０６に切り替える。
【００９０】
ステップＳ６０６において、ＣＰＵ２０２は、コイルが含まれる回路を記憶部２０１に格納する。
【００９１】
ステップＳ６０８において、ＣＰＵ２０２は、記憶部２０１に格納された回路に含まれる接点（Ｎ）を抽出する。なお、ステップＳ６０８において抽出した接点の数をｎ個とする。
【００９２】
ステップＳ６１０において、ＣＰＵ２０２は、接点（Ｎ）が全て実接点５４２であるか否かを判定する。全てが実接点５４２である場合（ステップＳ６１０においてＹＥＳ）、処理を終了し、表示処理に戻る。実接点５４２以外の接点を含む場合（ステップＳ６１０においてＮＯ）、すなわち、中間接点５４４を含む場合、ＣＰＵ２０２は、処理をステップＳ６１２に切り替える。
【００９３】
ステップＳ６１２において、ＣＰＵ２０２は、ｍ＝１を代入する。ステップＳ６１２における処理では、複数の接点（Ｎ）のうちの一の接点（Ｎ）が選択される。ｍ＝１が代入されることで、１番目の接点（Ｎ）が選択される。
【００９４】
ステップＳ６１４において、ＣＰＵ２０２は、接点（Ｎ）は実接点５４２であるか否かを判定する。接点（Ｎ）が実接点５４２はない場合（ステップＳ６１４においてＮＯ）、すなわち、接点（Ｎ）が中間接点５４４である場合、ＣＰＵ２０２は、ステップＳ６１６を実行した後、ステップＳ６１８に進む。接点（Ｎ）が実接点５４２である場合（ステップＳ６１４においてＹＥＳ）、ＣＰＵ２０２は、ステップＳ６１６を実行することなく、ステップＳ６１８に進む。
【００９５】
ステップＳ６１６において、ＣＰＵ２０２は、回路変更処理を行う。回路変更処理においては、接点（Ｎ）に換えて、接点（Ｎ）に対応するコイルを含む回路の論理演算を組み込んだ回路が記憶部２０１に格納される。
【００９６】
ステップＳ６１８において、ＣＰＵ２０２は、ｍを１加算する。すなわち、ステップＳ６１８において、着目する接点（Ｎ）が変更される。
【００９７】
ステップＳ６２０において、ＣＰＵ２０２は、ｍがｎ以下であるか否かを判定する。ｍがｎを超えていると判断されるまで、ＣＰＵ２０２は、ステップＳ６１４〜ステップＳ６１８の処理を繰り返す。ｍがｎを超えているということは、ステップＳ６０８において抽出された全ての接点（Ｎ）に対して、その接点（Ｎ）が実接点５４２であるか、あるいは、中間接点５４４であるかが判定され、中間接点５４４である場合には、中間接点５４４に換えて接点（Ｎ）に対応するコイルを含む回路が組み込まれ回路が記憶部２０１に格納されたことを意味する。
【００９８】
ｍがｎを超えていると判断された場合（ステップＳ６２０おいてＹＥＳ）、ＣＰＵ２０２は、ステップＳ６０８に進む。
【００９９】
ステップＳ６０８において、ＣＰＵ２０２は、再度接点（Ｎ）を抽出する。すなわち、ステップＳ６１６の回路変更処理により、記憶部２０１に格納された回路が変更されるため、ＣＰＵ２０２は、変更された回路に対して、ステップＳ６０８〜ステップＳ６２０の処理を行い、ステップＳ６１０において、接点（Ｎ）が全て実接点５４２であると判定するまでステップＳ６０８〜ステップＳ６２０の処理を繰り返す。
【０１００】
これにより、選択された中間接点に対応するコイルまたは選択されたコイルを含む回路が、中間接点５４４を含まない形式に展開される。
【０１０１】
＜Ｉ．回路変更処理＞
図１２は、回路変更処理のフローチャートである。回路変更処理は、接点（Ｎ）に対応するコイルを含む回路の論理演算を、接点（Ｎ）に換えて回路に組み込むための処理である。
【０１０２】
ステップＳ７０２において、ＣＰＵ２０２は、接点（Ｎ）が示すコイルを含む回路（Ｄ）を生成する。
【０１０３】
ステップＳ７０４において、ＣＰＵ２０２は、接点（Ｎ）がａ接点であるか否かを判定する。すなわち、接点（Ｎ）は、回路（Ｄ）が導通したときにオンするａ接点であるのか、あるいは、回路（Ｄ）が導通しないときにオンするｂ接点であるのかが判定される。
【０１０４】
接点（Ｎ）がａ接点であると判定された場合（ステップＳ７０４においてＹＥＳ）、ＣＰＵ２０２は、処理をステップＳ７０６に切り替える。
【０１０５】
ステップＳ７０６において、ＣＰＵ２０２は、記憶部２０１に格納された回路の接点（Ｎ）を、回路（Ｄ）のうちのコイルを含まない接点の組み合わせに変更して処理を終了する。
【０１０６】
接点（Ｎ）がａ接点ではないと判定された場合（ステップＳ７０４においてＮＯ）、すなわち、接点（Ｎ）がｂ接点であると判定された場合、ＣＰＵ２０２は、処理をステップＳ７０８に切り替える。
【０１０７】
ステップＳ７０８において、回路（Ｄ）のコイルが受ける論理演算が示す論理表現を反転した回路（Ｅ）を生成する。
【０１０８】
ステップＳ７１０において、ＣＰＵ２０２は、記憶部２０１に格納された回路の接点（Ｎ）を回路（Ｅ）に変更して処理を終了する。
【０１０９】
なお、接点（Ｎ）がｂ接点であるということは、接点（Ｎ）が示す回路（Ｄ）が非導通である場合に接点（Ｎ）がオンする。すなわち、回路（Ｄ）が示す論理表現を反転した回路（Ｅ）が導通する場合に接点（Ｎ）がオンするため、接点（Ｎ）がｂ接点である場合には、接点（Ｎ）を回路（Ｅ）に置き換えることで、処理内容を変更することなく展開することができる。
【０１１０】
ここで、図１３を参照して、ステップＳ７０８において実行される論理表現の反転について説明する。図１３は、論理表現の反転を説明するための図である。
【０１１１】
たとえば、図１３に示す接点（ｆ）が、対象となる接点（Ｎ）であるとする。接点（ｆ）はｂ接点であるから、接点（ｆ）がその結果を受ける回路（Ｄ）の論理表現を反転した回路（Ｅ）を生成する。
【０１１２】
回路（Ｅ）とは、回路（Ｄ）が導通するときに非導通となる回路であって、図１３に示すように、ド・モルガンの法則に従って展開されることで生成される。
【０１１３】
ここで、ｂ接点のように、対応するコイルが受ける論理演算の結果が偽のときにオンとなる接点については、ｂ接点の代わりに、ｂ接点に対応するコイルが受ける論理演算が示す回路を直接組み込むことができない。接点に対応するコイルが受ける論理演算が示す回路を直接組み込むことができないような接点を含む、展開の難しい論理回路についても展開をすることができ、展開することのできるラダープログラムの種類が増え、汎用性が高まる。
【０１１４】
＜Ｊ．サポート装置のソフトウェア構成＞
図１４を参照して、サポート装置２００が備えるソフトウェア構成について説明する。図１４は、サポート装置２００のソフトウェア構成を示す模式図である。図１４に示すソフトウェアに含まれる命令コードは、適切なタイミングで読出され、サポート装置２００のＣＰＵ２０２へ提供されて実行される。また、図１４に示すソフトウェアは、光学記録媒体８に格納されて提供されるサポートプログラムに含まれる。
【０１１５】
図１４を参照して、サポート装置２００には、ＯＳ２４０およびプログラミングアプリケーション２５０が実装される。サポート装置２００ではＯＳ２４０が実行され、プログラミングアプリケーション２５０を実行可能な環境が提供される。本実施の形態に係るサポート装置２００を実現するためのサポートプログラムは、少なくともプログラミングアプリケーション２５０を含む。
【０１１６】
プログラミングアプリケーション２５０は、エディタ２５２と、コンパイラ２５４と、デバッガ２５６と、シミュレータ２５８と、ＧＵＩ（Graphical User Interface）モジュール２６０と、展開モジュール２６２と、結果出力モジュール２６４と、最適化モジュール２６６と、データ格納部２７０とを含む。プログラミングアプリケーション２５０に含まれるそれぞれのモジュールは、典型的には、光学記録媒体８にサポートプログラムとして格納された状態で流通して、サポート装置２００にインストールされる。
【０１１７】
エディタ２５２は、実行可能プログラム（ソースプログラム）を作成するための入力および編集といった機能を提供する。より具体的には、エディタ２５２は、ユーザがキーボード２１０やマウス２１２を操作してラダープログラム２７４のソースプログラムを作成する機能に加えて、作成したラダープログラム２７４の保存機能および編集機能を提供する。エディタ２５２は、作成したラダープログラム２７４をデータ格納部２７０に格納する。
【０１１８】
コンパイラ２５４は、ラダープログラム２７４のソースプログラムをコンパイルして、ＣＰＵユニット１０で実行可能（オブジェクト）プログラム形式の実行可能プログラムを生成する機能を提供する。
【０１１９】
デバッガ２５６は、実行可能プログラム（ソースプログラム）に対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。すなわち、デバッガ２５６が提供する機能は、ラダープログラム２７４の実行結果を取得する機能を含む。
【０１２０】
シミュレータ２５８は、サポート装置２００内にＰＬＣ１のＣＰＵユニット１０でのプログラムの実行をシミュレーションする環境を構築する。
【０１２１】
ＧＵＩモジュール２６０は、ラダープログラムをラダー図５１０として表示する機能を提供する。すなわち、前述したラダー図５１０は、ＧＵＩモジュール２６０によって提供される。ＧＵＩモジュール２６０は、操作部２０３が受け付けた操作、並びに、ラダープログラム２７４、プログラムの実行に必要な変数設定２７２およびオブジェクトに係るオブジェクト情報２７８に基づいてラダー図５１０を提供する。また、ＧＵＩモジュール２６０は、操作部２０３が受け付けた操作に応じて生成された展開後のラダープログラム２７６をラダー図５１０としてディスプレイ２１４に表示する。すなわち、ＧＵＩモジュール２６０は、本願発明のプログラム表示手段の機能を提供する。
【０１２２】
展開モジュール２６２は、操作部２０３が受け付けた操作に基づいて、中間接点５４４を含む回路を、中間接点５４４を含まない形式に展開する機能を提供する。また、展開モジュール２６２は、展開後のラダープログラム２７６をデータ格納部２７０に格納する機能を提供する。すなわち、展開モジュール２６２は、本願発明の展開手段の機能および、保存処理手段の機能を提供する。展開後のラダープログラム２７６は、中間接点５４４のような中間変数を含まないプログラムとなるため、展開前のラダープログラム２７６に比べてデータのサイズが小さくなる。このような展開後のラダープログラム２７６を保存しておくことで展開後のラダープログラム２７６をＰＬＣ１００にダウンロードすることができる。その結果、ＰＬＣ１００のメモリの使用量を減らすことができる。
【０１２３】
結果出力モジュール２６４は、ラダープログラムの実行結果を受けて、論理回路の導通状態を出力する機能を提供する。すなわち、結果出力モジュール２６４は、本願発明の出力手段の機能を提供する。具体的には、結果出力モジュール２６４は、シミュレータ２５８によって実行されたプログラムの実行結果や、デバッガ２５６によって得られたプログラムの実行結果を受けて、論理回路の導通状態を生成し、ＧＵＩモジュール２６０によって表示されている論理回路に生成した導通状態を反映する。これにより、図６〜図９に示したパワーフロー表示が行なわれる。
【０１２４】
最適化モジュール２６６は、展開後のラダープログラム２７６から、矛盾した箇所、または冗長な箇所を削除する機能を提供する。すなわち、最適化モジュール２６６は、本願発明の最適化手段の機能を提供する。最適化モジュール２６６は、たとえば、展開後のラダープログラム２７６が表示された状態で操作部２０３が受け付けた操作に基づいて矛盾した箇所、または冗長な箇所を探索して削除してもよい。また、展開モジュール２６２によって、中間接点５４４を含む回路が中間接点５４４を含まない形式に展開されるときに、矛盾した箇所、または冗長な箇所を探索して削除するようにしてもよい。最適化モジュール２６６は、矛盾した箇所、または冗長な箇所を削除した後のラダープログラムをデータ格納部２７０に別途格納してもよく、また、展開後のラダープログラム２７６として保存してもよい。このように、最適化モジュール２６６が、矛盾した箇所、または冗長な箇所を削除した後のラダープログラムを保存しておくことで、簡潔になったラダープログラムをＰＬＣ１００にダウンロードすることができる。その結果、ＰＬＣ１００のメモリの使用量を減らすことができ、また、処理を高速化することができる。
【０１２５】
データ格納部２７０には、ラダープログラム２７４、変数設定２７２、展開後のラダープログラム２７６、およびオブジェクト情報２７８が格納されている。
【０１２６】
§３  付記
上述したような本実施の形態および変形例は、以下のような技術思想を含む。
【０１２７】
＜構成１＞
制御対象を制御する制御装置において実行されるラダープログラムの作成を支援するサポート装置（２００）であって、
前記ラダープログラムを、複数種類の要素を組み合わせた論理回路（５２１，５２２，５２３，５２４，５２５，Ｘ）により表示するプログラム表示手段（２６０，２６０ａ）と、
前記ラダープログラム内の演算結果を示す第１の種類の接点（５４４）を含む論理回路（５２０ａ）について、当該第１の種類の接点を含む論理回路に含まれる全ての当該第１の種類の接点を、当該第１の種類の接点が示す演算結果を得るための論理演算を外部から入力された信号を示す第２の種類の接点（５４２）を組み合わせた論理回路（５２０ｂ）に展開する展開手段（２６２，２６２ａ）とを備える、サポート装置。
【０１２８】
＜構成２＞
前記ラダープログラムの実行結果を受けて、当該ラダープログラムを示す論理回路の導通状態を出力する出力部（２６４）をさらに備える、構成１に記載のサポート装置。
【０１２９】
＜構成３＞
前記プログラム表示手段は、前記展開手段によって得られた前記第２の種類の接点を組み合わせた論理回路について、導通状態の接点と、当該導通状態の接点に接続された非導通状態の接点（接点（Ｉ１７），接点（Ｉ１３））とを表示し、当該導通状態の接点に接続された非導通状態の接点から出力結果を示すコイルまでの間に位置する要素を表示しない、構成２に記載のサポート装置。
【０１３０】
＜構成４＞
前記展開手段は、前記第１の種類の接点が偽の演算結果を受けて導通状態となるｂ接点である場合に、当該第１の種類の接点を、当該第１の種類の接点が受ける演算の論理表現を反転した演算を示す論理回路（回路（Ｅ））に換えることで、当該第１の種類の接点が示す演算結果を得るための論理演算を前記第２の種類の接点を組み合わせた論理回路に展開する、構成１〜構成３のうちいずれか１に記載のサポート装置。
【０１３１】
＜構成５＞
前記展開手段によって得られた前記第２の種類の接点を組み合わせた論理回路から矛盾する接点の組み合わせ（Ｘ１）を抽出し、当該矛盾する接点の組み合わせからなる回路を削除する最適化手段（２６６）をさらに備える、構成１〜構成４のうちいずれか１に記載のサポート装置。
【０１３２】
＜構成６＞
前記展開手段によって得られた前記第２の種類の接点を組み合わせた論理回路から冗長な接点の組み合わせ（Ｘ２，Ｘ３）を抽出し、当該冗長な接点の組み合わせに含まれる接点を削除する最適化手段（２６６）をさらに備える、構成１〜構成４のうちいずれか１に記載のサポート装置。
【０１３３】
＜構成７＞
前記展開手段によって得られた前記第１の種類の接点を組み合わせた論理回路を保存する処理を行う保存処理手段（２６２）をさらに備える、構成１〜構成６のうちいずれか１に記載のサポート装置。
【０１３４】
＜構成８＞
制御対象を制御する制御装置で実行されるラダープログラムの開発を支援するサポートプログラム（２５０）であって、
前記サポートプログラムはコンピュータに、
前記ラダープログラムを、前記ラダープログラム内の演算結果を示す第１の種類の接点を含む複数種類の要素を組み合わせた論理回路により表示するステップ（Ｓ３）と、
前記第１の種類の接点を含む論理回路について、当該第１の種類の接点を含む論理回路に含まれる全ての当該第１の種類の接点を、当該第１の種類の接点が示す演算結果を得るための論理演算を外部から入力された信号を示す第２の種類の接点を組み合わせた論理回路に展開するステップ（Ｓ６）とを実行させる、サポートプログラム。
【０１３５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組み合わせても、実施することが意図される。
【符号の説明】
【０１３６】
１  制御システム、８  光学記録媒体、１０  ＣＰＵユニット、１１  システムバス、１４  Ｉ／Ｏユニット、１２  電源ユニット、１００  ＰＬＣ、２００  サポート装置、２０１  記憶部、２０２  ＣＰＵ、２０３  操作部、２０６  ＲＡＭ、２１０  キーボード、２１２  マウス、２１４  ディスプレイ、２１６  光学記録媒体読取装置、２１８  通信インターフェイス、２５０  プログラミングアプリケーション、２５２  エディタ、２５４  コンパイラ、２５６  デバッガ、２５８  シミュレータ、２６０  ＧＵＩモジュール、２６０ａ  プログラム表示手段、２６２  展開モジュール、２６２ａ  展開手段、２６４  結果出力モジュール、２６６  最適化モジュール、２７０  データ格納部、２７２  変数設定、２７４  ラダープログラム、２７６  展開後のラダープログラム、２７８  オブジェクト情報、５１０  ラダー図、５１２  入力側母線、５１４  出力側母線、５２０ａ，５２０ｂ  論理回路、５４０  接点、５４２  実接点、５４４  中間接点、５６０  コイル、５８０  接続線。
【図１】
2020024594.tif 000003
【図２】
2020024594.tif 000004
【図３】
2020024594.tif 000005
【図４】
2020024594.tif 000006
【図５】
2020024594.tif 000007
【図６】
2020024594.tif 000008
【図７】
2020024594.tif 000009
【図８】
2020024594.tif 000010
【図９】
2020024594.tif 000011
【図１０】
2020024594.tif 000012
【図１１】
2020024594.tif 000013
【図１２】
2020024594.tif 000014
【図１３】
2020024594.tif 000015
【図１４】
2020024594.tif 000016