(57)【特許請求の範囲】
【請求項１】
ラダープログラムの階層単位である各回路ブロックを論理式で示すことによって前記ラダープログラムを論理的な階層構造で示したデータ構造表記で前記ラダープログラムを記憶しておく階層データ保持ステップと、
前記データ構造表記に基づいて、前記階層構造を階層単位毎に視覚的に識別できるようなデータ構造表記またはラダー図で、前記ラダープログラムを表示装置に表示させる表示処理ステップと、
をコンピュータに実行させることを特徴とするラダープログラム表示プログラム。
【請求項２】
前記表示処理ステップでは、前記階層構造を階層単位毎に異なる色で塗り分けて表示させることを特徴とする請求項１に記載のラダープログラム表示プログラム。
【請求項３】
ユーザから指定された階層単位を処理対象に設定する対象設定ステップをさらにコンピュータに実行させ、
前記表示処理ステップでは、設定された階層単位を設定されていない階層単位と識別できるように表示させることを特徴とする請求項１または２に記載のラダープログラム表示プログラム。
【請求項４】
ユーザから指定された階層単位を処理対象に設定する対象設定ステップと、
前記処理対象に設定された階層単位を前記ラダープログラム内で省略表示させる省略表示ステップと、
をさらにコンピュータに実行させることを特徴とする請求項１〜３のいずれか１つに記載のラダープログラム表示プログラム。
【請求項５】
ユーザから指定された階層単位を処理対象に設定する対象設定ステップと、
ユーザからの指示に従って、前記処理対象に設定された階層単位を用いたプログラム編集を行う編集ステップと、
をさらにコンピュータに実行させることを特徴とする請求項１〜３のいずれか１つに記載のラダープログラム表示プログラム。
【請求項６】
ユーザから指定された階層単位を処理対象に設定する対象設定ステップと、
前記処理対象に設定された階層単位に含まれる変数のみのモニタ値を、前記ラダープログラムを実行する処理ユニットから取得するモニタ値取得ステップと、
をさらにコンピュータに実行させ、
前記表示処理ステップでは、前記処理対象に設定された階層単位の実行状態を、前記モニタ値を用いてモニタ表示させることを特徴とする請求項１〜３のいずれか１つに記載のラダープログラム表示プログラム。
【請求項７】
前記表示処理ステップでは、前記階層単位が有している階層構造の深さを前記表示装置に表示させることを特徴とする請求項１〜３のいずれか１つに記載のラダープログラム表示プログラム。
【請求項８】
前記表示処理ステップでは、１つの階層単位内で同一の回路ブロックが複数ある場合に、前記同一の回路ブロックを強調表示させることを特徴とする請求項１に記載のラダープログラム表示プログラム。
【請求項９】
前記表示処理ステップは、前記データ構造表記に基づいて、前記ラダー図を生成するラダー図生成ステップを有していることを特徴とする請求項１〜８のいずれか１つに記載のラダープログラム表示プログラム。
【請求項１０】
ラダー図を入力する入力ステップと、
前記ラダー図の階層構造を解析して前記ラダー図に対応するデータ構造表記を生成する階層解析ステップと、
をさらにコンピュータに実行させ、
前記階層データ保持ステップでは、生成されたデータ構造表記を記憶しておくことを特徴とする請求項１〜９のいずれか１つに記載のラダープログラム表示プログラム。
【請求項１１】
ラダープログラムの階層単位である各回路ブロックを論理式で示すことによって前記ラダープログラムを論理的な階層構造で示したデータ構造表記で前記ラダープログラムを記憶しておく階層データ保持ステップと、
前記データ構造表記で、前記ラダープログラムを表示装置に表示させる表示処理ステップと、
ユーザから指定された階層単位を処理対象に設定する対象設定ステップと、
ユーザからの指示に従って、前記処理対象に設定された階層単位を用いたプログラム編集を前記データ構造表記のラダープログラムに対して行う編集ステップと、
をコンピュータに実行させることを特徴とするラダープログラム表示プログラム。
【請求項１２】
ラダープログラムの階層単位である各回路ブロックを論理式で示すことによって前記ラダープログラムを論理的な階層構造で示したデータ構造表記で前記ラダープログラムを記憶しておく階層データ保持部と、
前記データ構造表記に基づいて、前記階層構造を階層単位毎に視覚的に識別できるようなデータ構造表記またはラダー図で、前記ラダープログラムを表示装置に表示させる表示処理部と、
を備えることを特徴とするラダープログラム表示装置。
【請求項１３】
ラダープログラムの階層単位である各回路ブロックを論理式で示すことによって前記ラダープログラムを論理的な階層構造で示したデータ構造表記で前記ラダープログラムを記憶しておく階層データ保持部と、
前記データ構造表記で、前記ラダープログラムを表示装置に表示させる表示処理部と、
ユーザから指定された階層単位を処理対象に設定する対象設定部と、
ユーザからの指示に従って、前記処理対象に設定された階層単位を用いたプログラム編集を前記データ構造表記のラダープログラムに対して行う編集処理部と、
を備えることを特徴とするラダープログラム表示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ラダープログラムを回路表示するラダープログラム表示プログラムおよびラダープログラム表示装置に関する。
【背景技術】
【０００２】
ラダープログラムは、シーケンサが行う制御シーケンスを定めたプログラムであり、ラダー図の形式で記述されている。ラダー図では、回路図がはしご状に描かれており、両端の垂直な２つの母線（プラス母線とマイナス母線）が動力をシンボリックに表現している。そして、２つの母線の間を水平に結ぶ平行な線上にリレー回路の動力の流れが示される。このようなラダープログラムを表示または編集する際には、専用のラダープログラム表示編集装置が使用される。【０００３】
従来のラダープログラム表示編集装置は、画面上のラダープログラム表示領域に、ラダープログラムを構成する母線と、碁盤目状に補助線を引いた２次元グリッドとを表示している。そして、従来のラダープログラム表示編集装置は、２次元グリッド上のセルに、接点等の回路部品または接続線といったラダープログラムの構成要素（回路要素）を配置するようにして、ラダープログラムを表示している（例えば、特許文献１参照）。【０００４】
また、ラダープログラムを表示する際に、従来は現在選択中の箇所を示す枠線（カーソル）を背景色と異なる色で描くことによって、選択箇所の識別を行っていた（例えば、特許文献２参照）。【０００５】
ところで、ラダープログラムは、リレー回路を表現するものであり、直列・並列回路が階層的に入れ子構造（論理的階層構造）をなしたものである。このため、論理的階層構造をもつラダープログラムを編集する場合、現在選択中の箇所が全体の中でどの階層に位置するものなのかを把握する必要がある。【０００６】
また、一般的にラダープログラムが大規模になると複雑度が増すので、ラダープログラム全体の可読性が低下する。このため、意味を持った定型的な部分プログラム（例えば、個々の関数やブロックなど）を省略表示することで、プログラム全体の可読性を向上させる方法がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−０９２８０７号公報
【特許文献２】特開２０１１−０８６１１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記前者および後者の従来技術では、階層構造を把握することは困難であった。そのため、階層構造をもつラダープログラムの作成効率が低下するといった問題や、階層範囲の読み間違えが原因で、作成したラダープログラムに不具合が混入するなどの問題が発生していた。【０００９】
また、上記前者および後者の従来技術では、２次元グリッド上で回路表現するので、意味のある回路単位を自動的に認識できなかった。このため、ラダープログラム作成者が省略表示するプログラム単位を手動で指定する必要があり、手間がかかっていた。【００１０】
本発明は、上記に鑑みてなされたものであって、ラダープログラムの階層構造を容易に視認することができるようなプログラム表示を行うラダープログラム表示装置およびラダープログラム表示プログラムを得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、ラダープログラムの階層単位である各回路ブロックを論理式で示すことによって前記ラダープログラムを論理的な階層構造で示したデータ構造表記で前記ラダープログラムを記憶しておく階層データ保持ステップと、前記データ構造表記に基づいて、前記階層構造を階層単位毎に視覚的に識別できるようなデータ構造表記またはラダー図で、前記ラダープログラムを表示装置に表示させる表示処理ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ラダープログラムの階層構造を容易に視認することができるようなプログラム表示を行うことが可能になるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施の形態１に係るラダープログラム表示装置の構成を示す図である。
【図２】図２は、ラダープログラムのデータ構造表記を説明するための図である。
【図３】図３は、ラダー図の表示方法を説明するための図である。
【図４】図４は、階層単位の色分け表示処理を説明するための図である。
【図５】図５は、実施の形態２に係るラダープログラム表示装置の構成を示す図である。
【図６】図６は、選択範囲の省略表示処理を説明するための図である。
【図７】図７は、実施の形態３に係るラダープログラム表示装置の構成を示す図である。
【図８】図８は、ラダー図を階層単位毎に編集する処理を説明するための図である。
【図９】図９は、データ構造表記を階層単位毎に編集する処理を説明するための図である。
【図１０】図１０は、実施の形態４に係るラダープログラム表示装置の構成を示す図である。
【図１１】図１１は、階層単位のモニタ表示を説明するための図である。
【図１２】図１２は、実施の形態５に係るラダープログラム表示装置の構成を示す図である。
【図１３】図１３は、ラダープログラム表示装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本発明の実施の形態に係るラダープログラム表示装置およびラダープログラム表示プログラムを図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１５】
実施の形態１．
図１は、実施の形態１に係るラダープログラム表示装置の構成を示す図である。ラダープログラム表示装置１Ａは、ラダープログラムを表示する装置であり、例えば、ＰＣ（Personal  Computer）などである。本実施の形態のラダープログラム表示装置１Ａは、回路の論理的な階層構造を容易に視認できるよう、階層構造を視覚的に識別できる状態でラダープログラムを表示する。ラダープログラム表示装置１Ａは、例えば、階層毎に色分け表示することによって、各階層を視覚的に識別可能なようラダープログラムを表示する。ラダープログラム表示装置１Ａが表示するラダープログラムは、ＰＬＣ（Programmable  Logic  Controller）（シーケンサ）システムなどで用いられるプログラムである。
【００１６】
ラダープログラム表示装置１Ａは、エンジニアリングツール１０Ａと、プログラム入力部１１と、表示部３０とを備えている。プログラム入力部１１は、ラダープログラム作成装置などで作成されたラダープログラムを入力してエンジニアリングツール１０Ａに送る。本実施の形態では、ラダープログラム表示装置１Ａが、ラダープログラムのデータ構造表記を用いてラダー図の表示を行う。
【００１７】
データ構造表記は、ラダープログラム内の直列・並列回路の論理的な階層構造を、回路ブロック毎に論理的に記述したものである。換言すると、データ構造表記は、ラダープログラムの階層単位である各回路ブロックを論理式で示すことによってラダープログラムを論理的な階層構造で示したものである。具体的には、データ構造表記は、回路をand、orおよびnotのみを用いた２値論理の論理式だけで表現できるデータである。
【００１８】
エンジニアリングツール１０Ａは、ＰＬＣシステムなどで動作させるラダープログラムを表示するツールである。エンジニアリングツール１０Ａは、例えばＰＣ上のＳ／Ｗ（ソフトウェア）として実現できる。
【００１９】
エンジニアリングツール１０Ａは、階層データ保持部１２と、表示処理部１４Ａとを有している。階層データ保持部１２は、階層構造を表現したラダープログラム（データ構造表記）を記憶するメモリなどである。
【００２０】
表示処理部１４Ａは、階層データ保持部１２内のデータ構造表記を用いて、ラダープログラムを表示部３０にラダー表示させる。本実施の形態の表示処理部１４Ａは、各階層を視覚的に識別可能なようラダー表示させる。表示処理部１４Ａは、例えば、ラダープログラムを階層別に異なる色で塗り分けて表示させる。
【００２１】
つぎに、ラダープログラムの構造について説明する。ラダープログラムは、直列・並列回路の階層構造として表現することができる。本実施の形態では、ラダープログラムにおける階層構造の単位を階層単位と呼ぶ。階層単位は、意味を持った定型的な部分プログラム（個々の関数やブロックなど)である。
【００２２】
また、本実施の形態では、不可分なものとして扱われる基本素子（１つの接点、１つのコイルなど）を回路要素と呼ぶ。回路要素は、最小の階層単位である。また、階層単位は、１入力１出力である。例えば、階層単位または回路要素が直列接続されている場合、直列接続されている一連の階層単位または回路要素が１つの階層構造となる。
【００２３】
図２は、ラダープログラムのデータ構造表記を説明するための図である。ラダープログラムは、図２に示すようなラダー図Ｌ３またはデータ構造表記４として作成される。ラダー図Ｌ３とデータ構造表記４とは、同じラダープログラムを示すものであるので、ラダー図Ｌ３からデータ構造表記４を生成すること、データ構造表記４からラダー図Ｌ３からを生成することは、何れも可能である。
【００２４】
図２におけるラダー図Ｌ３およびデータ構造表記４の回路要素は、Ｘ１，Ｘ２，Ｘ３，Ｘ４（接点）およびＹ１０（コイル）である。そして、Ｘ１とＸ２は、直列回路を構成している。階層解析部１３は、Ｘ１とＸ２からなる直列回路を、（Ｘ１andＸ２)と表す。これは、階層単位である。また、（Ｘ１andＸ２)とＸ３は、並列回路を構成している。階層解析部１３は、（Ｘ１andＸ２)とＸ３からなる並列回路を、（（Ｘ１andＸ２)orＸ３）と表す。これも階層単位である。
【００２５】
このように、直列回路および並列回路を表示していくことによって、ラダー図Ｌ３は、以下のようなデータ構造表記（Ａ）で表現することができる。
（（（Ｘ１andＸ２）orＸ３）andＸ４andＹ１０）・・・（Ａ）
【００２６】
ここでのデータ構造表記（Ａ）が図２のデータ構造表記４である。本実施の形態では、階層データ保持部１２は、データ構造表記４を記憶しておく。表示処理部１４Ａは、階層データ保持部１２からデータ構造表記４を読み込んで、データ構造表記４に対応するラダー図を表示部３０に表示させる。
【００２７】
図３は、ラダー図の表示方法を説明するための図である。表示処理部１４Ａは、データ構造表記４に基づいて、並列回路、直列回路、および接続線を、以下の規則に従って表示部３０にラダー表示させる。
【００２８】
（規則１）直列回路ブロックは、横方向（左右方向）に階層単位を配置することで表す。
（規則２）並列回路ブロックは、縦方向（上下方向）に階層単位を配置することで表す。
（規則３）接続された階層単位が隣り合わない場合は、接続線を補うことによって接続関係を表す。
【００２９】
表示処理部１４Ａは、上記（規則１）〜（規則３）に従うことによって、ラダープログラムを２次元グリッド上のラダー図として表示部３０に表示させる。上記（規則１）〜（規則３）に従えば、表示処理部１４Ａは、以下のデータ構造表記（Ｂ）を、図３のように表示することができる。
（（（Ｘ１orＸ４）andＸ２andＸ３）or（Ｘ５andＸ６））・・・（Ｂ）
【００３０】
このとき、表示処理部１４Ａは、データ構造表記（Ｂ）の３つの括弧（）を内側から解析していくことによって、データ構造表記（Ｂ）のラダープログラムをラダー図として表示部３０に表示させる。具体的には、表示処理部１４Ａは、以下の処理を行う。
（処理１−１）  （Ｘ１orＸ４）の階層単位を、画面の左上位置で上下に並べることによって、（Ｘ１orＸ４）からなる並列回路ブロック５１を表示する。
（処理１−２）  andＸ２andＸ３の階層単位を、並列回路ブロック５１の右側に並べることによって、（（Ｘ１orＸ４）andＸ２andＸ３）からなる直列回路ブロック５２を表示する。
（処理１−３）  （Ｘ５andＸ６）の階層単位を、左右に並べることによって、直列回路ブロック５３を生成する。
（処理１−４）  （（Ｘ１orＸ４）andＸ２andＸ３）と（Ｘ５andＸ６）とを並列接続するため、Ｘ６の右側に接続線５４を補う。
【００３１】
本実施の形態の表示処理部１４Ａは、各階層を表示する際に、階層毎に色分けをする。換言すると、表示処理部１４Ａは、各階層単位で色を塗り分ける。ここで、階層単位の色分け表示処理について説明する。
【００３２】
図４は、階層単位の色分け表示処理を説明するための図である。ここでは、表示処理部１４Ａが、データ構造表記４を、ラダー図Ｌ５またはデータ構造表記４ａとして色分け表示させる場合について説明する。
【００３３】
まず、データ構造表記４を、ラダー図Ｌ５として色分け表示する場合について説明する。データ構造表記４は、回路単位（直列回路ブロック３１、並列回路ブロック３２、直列回路ブロック３３）を用いて構成されている。表示処理部１４Ａは、図３で説明した方法によって、データ構造表記４をラダー図Ｌ５として表示させる。
【００３４】
このとき、表示処理部１４Ａは、直列回路ブロック３１をラダー図Ｌ５の直列回路ブロック４１として表示部３０に表示させる。同様に、表示処理部１４Ａは、並列回路ブロック３２をラダー図Ｌ５の並列回路ブロック４２として表示させ、直列回路ブロック３３をラダー図Ｌ５の直列回路ブロック４３として表示させる。具体的には、表示処理部１４Ａは、以下の処理を行う。
（処理２−１）  （Ｘ１andＸ２）：直列回路の階層単位なので、画面の左上で左右に並べて表示する。
（処理２−２）  orＸ３：並列回路の階層単位なので、Ｘ３を直列回路ブロック４１の下に並べて表示する。
（処理２−３）  接続線：Ｘ３と（Ｘ１andＸ２）と接続するために、Ｘ３の右側に接続線を補う。
（処理２−４）  andＸ４andＹ１０：直列回路の階層単位なので、Ｘ４とＹ１０を並列回路ブロック４２の右側に並べて表示する。
なお、表示処理部１４Ａは、コイルを右端に寄せる表示処理を自動的に行っている。
【００３５】
さらに、表示処理部１４Ａは、ラダー図Ｌ５を階層単位毎に色分けする。表示処理部１４Ａは、例えば、第１の階層である直列回路ブロック４１を第１の色（黄色など）で塗る。また、表示処理部１４Ａは、第２の階層である並列回路ブロック４２（環状領域）を第２の色（緑色など）で塗る。さらに、表示処理部１４Ａは、第３の階層である直列回路ブロック４３（環状領域）を第３の色（水色など）で塗る。
【００３６】
つぎに、データ構造表記４を、データ構造表記４ａとして色分け表示する場合について説明する。表示処理部１４Ａは、例えば、第１の階層である直列回路ブロック３１を第１の色で塗り、第２の階層である並列回路ブロック３２（環状領域）を第２の色で塗る。さらに、表示処理部１４Ａは、第３の階層である直列回路ブロック３３（環状領域）を第３の色で塗る。
【００３７】
このように、表示処理部１４Ａは、階層単位の塗り分けを行う。このとき、表示処理部１４Ａは、階層単位とその上位の階層単位との間にマージン（隙間）を設けたうえで塗り分けてもよい。
【００３８】
具体的には、表示処理部１４Ａは、直列回路ブロック４１の境界線が、並列回路ブロック４２および直列回路ブロック４３と重ならないようにし、並列回路ブロック４２の境界線が、直列回路ブロック４３と重ならないようにしておく。換言すると、表示処理部１４Ａは、直列回路ブロック４１（下層側）が、並列回路ブロック４２（上層側）の内側に入り、並列回路ブロック４２（下層側）が直列回路ブロック４３（上層側）の内側に入るように各回路ブロックを配置する。
【００３９】
同様に、表示処理部１４Ａは、直列回路ブロック３１の境界線が、並列回路ブロック３２および直列回路ブロック３３と重ならないようにし、並列回路ブロック３２の境界線が、直列回路ブロック３３と重ならないようにしておく。換言すると、表示処理部１４Ａは、直列回路ブロック３１（下層側）が、並列回路ブロック３２（上層側）の内側に入り、並列回路ブロック３２（下層側）が直列回路ブロック３３（上層側）の内側に入るように各回路ブロックを表示させる。これにより、階層の深さを視覚的にわかりやすく表示できる。
【００４０】
なお、本実施の形態では、色分けされていない状態のデータ構造表記４を階層データ保持部１２に記憶させておく場合について説明したが、色分けされた状態のデータ構造表記４ａを階層データ保持部１２に記憶させておいてもよい。また、視覚的な識別表示は、色分け表示に限らない。例えば、色の濃淡、背景の模様、点滅表示、枠での囲み表示、網掛け表示などを用いて識別表示してもよい。
【００４１】
また、表示処理部１４Ａは、回路の階層構造の深さ（階層単位が有している階層構造の深さ）（何層目であるか）をラダープログラムの品質情報として表示部３０に表示させてもよい。階層構造の深さは、ラダープログラム内にある階層単位の階層位置を示すものである。表示処理部１４Ａは、階層構造の深さを求める階層単位に対し、この階層単位よりも外側の括弧数または内側の括弧数に基づいて階層構造の深さを導出する。表示処理部１４Ａは、導出した階層構造の深さを、全ての階層単位の近傍に表示させてもよいし、設定中の階層単位に対してのみ表示させてもよい。
【００４２】
また、表示処理部１４Ａは、１つの階層単位内で同一の回路ブロックが複数ある場合に、同一の回路ブロックを強調表示させてもよい。また、表示処理部１４Ａは、ラダープログラム内において同一の回路ブロックで構成された階層単位がある場合には、これらの階層単位を強調表示させてもよい。
【００４３】
このように、実施の形態１によれば、ラダープログラムを回路の論理的な階層単位で塗り分けているので、ラダー図の各構成要素が全体の中で何れの階層に位置するものなのかを容易に把握することが可能となる。換言すると、ラダープログラムの階層構造（階層範囲や階層間の深さ）を容易に視認することができるようなプログラム表示を行うことが可能になる。
【００４４】
したがって、本実施の形態のプログラム表示をラダープログラムの作成作業に適用する場合、現在選択中の箇所が全体の中で何れの階層に位置するものなのかを容易に把握することができる。このため、プログラム作成作業を効率化できる。また、階層単位で操作を行うことによって、論理的にまとまった単位での一括操作ができるので、プログラム作成作業をさらに効率化できる。また、階層範囲の読み間違えに起因するプログラムの不具合が混入することなどを避けることができるので、作成するプログラムの品質を向上できる。
【００４５】
実施の形態２．
つぎに、図５および図６を用いてこの発明の実施の形態２について説明する。実施の形態２では、階層単位を選択範囲として選択できる仕組みを導入する。これにより、階層単位ごとの省略表示を行う。
【００４６】
図５は、実施の形態２に係るラダープログラム表示装置の構成を示す図である。図５の各構成要素のうち図１に示す実施の形態１のラダープログラム表示装置１Ａと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００４７】
ラダープログラム表示装置１Ｂは、ラダープログラム表示装置１Ａの機能に加えて、指示入力部１７と、範囲選択部（対象設定部）１６とを備えている。また、ラダープログラム表示装置１Ｂは、エンジニアリングツール１０Ａの代わりに、エンジニアリングツール１０Ｂを備えている。そして、エンジニアリングツール１０Ｂが、エンジニアリングツール１０Ａの構成要素に加えて、範囲選択部１６を備えている。本実施の形態のエンジニアリングツール１０Ｂは、省略表示ツールとしての機能を有している。また、ラダープログラム表示装置１Ｂは、表示処理部１４Ａの代わりに表示処理部１４Ｂを備えている。
【００４８】
指示入力部１７は、範囲選択部１６に接続されている。指示入力部１７は、ユーザからの指示を入力し、範囲選択部１６に送る。ユーザからの指示は、操作対象（処理対象）となる階層単位を指定する指示（以下、階層指定指示という）または省略表示を行う指示（以下、省略表示指示という）である。
【００４９】
範囲選択部１６は、表示処理部１４Ｂに接続されている。範囲選択部１６は、操作対象となる範囲を階層単位毎に切り替える機能を有している。範囲選択部１６は、指示入力部１７を介して何れかの階層単位が指定されると（階層指定指示が入力されると）、指定された階層単位を選択範囲に設定する。範囲選択部１６は、設定した選択範囲（階層単位）を表示処理部１４Ｂに送る。また、範囲選択部１６は、省略表示指示が入力されると、設定中の選択範囲を省略表示する指示を表示処理部１４Ｂに送る。
【００５０】
本実施の形態の表示処理部１４Ｂは、表示処理部１４Ａと同様の機能と、範囲選択部１６からの指示に従って設定中の選択範囲を省略表示する機能とを有している。なお、表示処理部１４Ｂは、範囲選択部１６から設定中の選択範囲に関する情報が送られてきた場合に、設定中の選択範囲を識別可能なよう表示してもよい。例えば、表示処理部１４Ｂは、設定中の選択範囲を、設定中の選択範囲であることを示す色（他部とは異なる色）などに変更してもよい。
【００５１】
つぎに、選択範囲の省略表示処理について説明する。図６は、選択範囲の省略表示処理を説明するための図である。図６に示すラダー図Ｌ５ａは、図４に示したラダー図Ｌ５と同様のラダー図である。
【００５２】
このラダー図Ｌ５ａにおいて、ユーザが例えば並列回路ブロック４２を指定すると、並列回路ブロック４２を指定した階層指定指示が指示入力部１７に入力される。例えば、並列回路ブロック４２の何れかの位置であって直列回路ブロック４１以外の位置を、ユーザがマウスクリックすることによって、階層指定指示が指示入力部１７に入力される。換言すると、並列回路ブロック４２内の領域から直列回路ブロック４１の領域を除外した領域（矩形環状領域）のうちの何れかの位置が指定されることによって、並列回路ブロック４２を指定した階層指定指示が指示入力部１７に入力される。
【００５３】
なお、指示入力部１７は、例えば、接点Ｘ１の内側が指定された場合には、接点Ｘ１が指定されたものとして扱う。また、指示入力部１７は、直列回路ブロック４１内であって且つ接点Ｘ１，Ｘ２の外側が指定された場合には、直列回路ブロック４１（Ｘ１andＸ２）が指定されたものとして扱う。
【００５４】
この選択操作は、キー操作によって行うことも可能である。たとえば、Shift＋↑キーで選択範囲を上位の階層単位に移動させ、Shift＋↓キーで下位の階層単位に移動させてもよい。
【００５５】
指示入力部１７は、指定された階層指定指示を範囲選択部１６に送る。これにより、範囲選択部１６は、階層指定指示で指定された階層単位を選択範囲に設定する。範囲選択部１６は、例えば、並列回路ブロック４２が指定された場合には、並列回路ブロック４２の階層単位を選択範囲に設定し、直列回路ブロック４３が指定された場合には、直列回路ブロック４３の階層単位を選択範囲に設定する。
【００５６】
そして、範囲選択部１６は、設定した選択範囲を表示処理部１４Ｂに送る。これにより、表示処理部１４Ｂは、設定されている選択範囲を、設定されていない選択範囲と識別可能なように表示する。表示処理部１４Ｂは、設定されている選択範囲に色付けなどを行う。なお、表示処理部１４Ｂは、設定されている選択範囲を枠で囲んでもよいし、点滅表示させてもよい。
【００５７】
この後、ユーザが右クリックなどの操作を行うと、この操作に対応する指示が指示入力部１７および範囲選択部１６を介して表示処理部１４Ｂに送られる。これにより、表示処理部１４Ｂは、編集メニューを表示させる。編集メニューには、切り取り、コピー、貼り付け、省略表示などを設定しておく。
【００５８】
ユーザが選択範囲の省略表示を指定すると、この指定操作に対応する指示が指示入力部１７および範囲選択部１６を介して表示処理部１４Ｂに送られる。これにより、表示処理部１４Ｂは、設定中の階層単位を表示部３０に省略表示させる。
【００５９】
表示処理部１４Ｂは、例えば、回路単位（回路ブロック）を本来の構造が表示される領域より小さな領域で表示することによって、表示部３０に省略表示を行なわせる。また、表示処理部１４Ｂは、表示部３０に内部構造を省略表示させてもよい。また、表示処理部１４Ｂは、回路単位を、回路単位の役割または意味を表す文字列などで代替表示することによって、表示部３０に省略表示を行なわせてもよい。
【００６０】
図６では、表示処理部１４Ｂが、並列回路ブロック４２を、「並列回路Ａ」の文字列４４で表示部３０に代替表示させた場合のラダー図Ｌ５ｂを示している。このように、ラダー図Ｌ５ａがラダー図Ｌ５ｂのように省略表示されている。
【００６１】
なお、ラダー図Ｌ５ｂの省略表示をデータ構造表記４ａに反映させてもよい。図６では、表示処理部１４Ｂが、回路単位である並列回路ブロック３２を、「並列回路Ａ」の文字列３４で表示部３０に代替表示させた場合のデータ構造表記４ｂを示している。このように、データ構造表記４ａがデータ構造表記４ｂのように省略表示されている。
【００６２】
また、データ構造表記４ａを用いてデータ構造表記４ｂを生成してもよい。換言すると、ユーザがデータ構造表記４ａに省略表示指示を行うことによって、表示処理部１４Ｂが、データ構造表記４ａからデータ構造表記４ｂを生成してもよい。この場合、表示処理部１４Ｂは、ラダー図Ｌ５ｂを生成することなく、データ構造表記４ａから直接データ構造表記４ｂを生成する。
【００６３】
なお、本実施の形態では、階層単位毎に色分け表示する場合について説明したが、階層単位毎に色分け表示することなく、階層単位の省略表示を行ってもよい。また、表示処理部１４Ｂは、省略表示中のラダー図Ｌ５ｂまたはデータ構造表記４ｂを階層データ保持部１２に記憶させておいてもよい。
【００６４】
このように、実施の形態２によれば、操作対象となる範囲を階層単位毎に切り替えるので、ユーザは、従来の操作に比べて少ない手間で階層単位を指定または省略表示できるようになる。また、階層単位を容易に省略表示できるので、プログラム全体の可読性が向上する。
【００６５】
実施の形態３．
つぎに、図７および図８を用いてこの発明の実施の形態３について説明する。実施の形態３では、選択された階層単位を一括して削除、コピーまたは貼り付けなどの編集処理を行う仕組みを導入する。これにより、論理的にまとまった単位（階層単位）での一括編集を行う。
【００６６】
図７は、実施の形態３に係るラダープログラム表示装置の構成を示す図である。図７の各構成要素のうち図５に示す実施の形態２のラダープログラム表示装置１Ｂと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００６７】
ラダープログラム表示装置１Ｃは、ラダープログラム表示装置１Ｂの機能に加えて、編集処理部１８と、出力部１５とを備えている。また、ラダープログラム表示装置１Ｃは、エンジニアリングツール１０Ｂの代わりに、エンジニアリングツール１０Ｃを備えている。そして、エンジニアリングツール１０Ｃが、エンジニアリングツール１０Ｂの構成要素に加えて、編集処理部１８を備えている。本実施の形態のエンジニアリングツール１０Ｃは、表示編集ツールとしての機能を有している。
【００６８】
編集処理部１８は、指示入力部１７、範囲選択部１６および表示処理部１４Ｂに接続されている。編集処理部１８は、範囲選択部１６が設定している階層単位に対してユーザから編集操作が行われると、操作内容にしたがって階層データ保持部１２内のデータ構造表記４ａを変更する。
【００６９】
出力部１５は、階層データ保持部１２に接続されている。出力部１５は、階層データ保持部１２内のデータ構造表記を出力する指示があった場合に、階層データ保持部１２内のデータ構造表記を外部装置に出力する。
【００７０】
本実施の形態の指示入力部１７は、ユーザから編集指示に応じた操作が行われると、編集指示を編集処理部１８に送る。編集指示は、例えば、削除、コピー、貼り付けなどである。
【００７１】
つぎに、階層単位毎の編集処理について説明する。図８は、ラダー図を階層単位毎に編集する処理を説明するための図である。ここでは、ラダープログラム表示装置１Ｃが、ラダー図Ｌ５ａの一部（並列回路ブロック４２）を用いて、ラダー図Ｌ５ｃを生成する場合の処理について説明する。
【００７２】
範囲選択部１６は、階層指定指示で指定された階層単位（並列回路ブロック４２）を選択範囲に設定する。そして、範囲選択部１６は、設定した選択範囲を表示処理部１４Ｂに送る。これにより、表示処理部１４Ｂは、設定されている選択範囲を、設定されていない選択範囲と識別可能なように表示する。
【００７３】
さらに、範囲選択部１６は、設定中の階層単位を編集処理部１８に送る。この後、範囲選択部１６が設定している階層単位に対してユーザが指示入力部１７から編集操作（削除、コピー、貼り付けなど）を入力すると、編集処理部１８は、編集操作の内容に従って、設定中の階層単位を用いた編集処理を行う。具体的には、編集処理部１８は、階層単位のコピーまたは削除などを、表示中のラダー図に対して行う。なお、編集操作が貼り付けである場合には、編集操作として貼り付け位置が指定されるので、編集処理部１８は、指定された貼り付け位置に設定中の階層単位を貼り付ける。図８では、編集処理部１８が、並列回路ブロック４２をコピーして、ラダー図Ｌ５ｃに貼り付けた場合を示している。
【００７４】
この後、ラダープログラム表示装置１Ｃでは、ユーザからの指示に従った編集処理が繰り返される。ユーザから編集完了の指示が指示入力部１７に入力されると、この指示は編集処理部１８を介して表示処理部１４Ｂに送られる。これにより、表示処理部１４Ｂは、編集後のラダープログラムであるラダー図Ｌ５ｃを階層データ保持部１２に記憶させる。
【００７５】
図９は、データ構造表記を階層単位毎に編集する処理を説明するための図である。ここでは、ラダープログラム表示装置１Ｃが、データ構造表記４ａの一部を用いて、データ構造表記４ｃを生成する場合の処理について説明する。
【００７６】
範囲選択部１６は、階層指定指示で指定された階層単位（並列回路ブロック３２）を選択範囲に設定する。そして、範囲選択部１６は、設定した選択範囲を表示処理部１４Ｂに送る。これにより、表示処理部４Ｂは、設定されている選択範囲を、設定されていない選択範囲と識別可能なように表示する。
【００７７】
さらに、範囲選択部１６は、設定中の階層単位を編集処理部１８に送る。この後、範囲選択部１６が設定している階層単位に対してユーザが指示入力部１７から編集操作（削除、コピー、貼り付けなど）を入力すると、編集処理部１８は、編集操作の内容に従って、設定中の階層単位を用いた編集処理を行う。具体的には、編集処理部１８は、階層単位のコピーまたは削除などを、表示中のデータ構造表記に対して行う。なお、編集操作が貼り付けである場合には、編集操作として貼り付け位置が指定されるので、編集処理部１８は、指定された貼り付け位置に設定中の階層単位を貼り付ける。図９では、編集処理部１８が、並列回路ブロック３２をコピーして、データ構造表記４ｃに貼り付けた場合を示している。なお、編集処理部１８は、編集操作として、検索または置換などを実行してもよい。
【００７８】
この後、ラダープログラム表示装置１Ｃでは、ユーザからの指示に従った編集処理が繰り返される。ユーザから編集完了の指示が指示入力部１７に入力されると、この指示は編集処理部１８を介して表示処理部１４Ｂに送られる。これにより、表示処理部１４Ｂは、編集後のラダープログラムであるデータ構造表記４ｃを階層データ保持部１２に記憶させる。なお、本実施の形態では、階層単位毎に色分け表示する場合について説明したが、階層単位毎に色分け表示することなく、階層単位の編集処理を行ってもよい。
【００７９】
このように、実施の形態３によれば、論理的な階層単位を指定した選択範囲を用いて、編集の一括操作ができるので、論理的にまとまった単位での編集を容易に行うことができる。したがって、プログラム作成作業および編集作業を効率化できる。
【００８０】
実施の形態４．
つぎに、図１０および図１１を用いてこの発明の実施の形態４について説明する。実施の形態４では、選択された階層単位（部分回路）に含まれる変数のみの現在値をＣＰＵユニットから取得する仕組みを導入する。これにより、論理的にまとまった単位で個別に実行状態のモニタ表示を行う。
【００８１】
図１０は、実施の形態４に係るラダープログラム表示装置の構成を示す図である。図１０の各構成要素のうち図５に示す実施の形態２のラダープログラム表示装置１Ｂと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００８２】
ラダープログラム表示装置１Ｄは、ラダープログラム表示装置１Ｂの機能に加えて、モニタ値取得部１９を備えている。また、ラダープログラム表示装置１Ｄは、エンジニアリングツール１０Ｂの代わりに、エンジニアリングツール１０Ｄを備えている。そして、エンジニアリングツール１０Ｄが、エンジニアリングツール１０Ｂの構成要素に加えて、モニタ値取得部１９を備えている。エンジニアリングツール１０Ｄは、ＣＰＵユニット２０に接続されている。本実施の形態のエンジニアリングツール１０Ｄは、モニタツールとしての機能を有している。
【００８３】
モニタ値取得部１９は、表示処理部１４Ｂ、範囲選択部１６、指示入力部１７、ＣＰＵユニット２０に接続されている。モニタ値取得部１９は、ユーザから選択範囲をモニタ表示する指示を受け取ると、範囲選択部１６から設定中の階層単位を取得し、選択範囲内の変数一覧を作成する。また、モニタ値取得部１９は、実行中のＣＰＵユニット２０から、変数一覧の現在値を取得する。換言すると、モニタ値取得部１９は、設定中の階層単位に含まれる変数のみのモニタ値を、ＣＰＵユニット２０から取得する。さらに、モニタ値取得部１９は、表示処理部１４Ｂに対して、選択範囲を、取得した変数の現在値に従った状態で表示するよう指示（モニタ表示指示）する。
【００８４】
ＣＰＵユニット２０は、ラダープログラムを実行する処理ユニットであり、ラダープログラムに従って動作するＣＰＵを有したユニットである。ＣＰＵユニット２０は、ラダープログラムを実行すると、導通状態（実行状態）をモニタ値取得部１９に出力する。
【００８５】
本実施の形態の表示処理部１４Ｂは、モニタ値取得部１９からの指示に従って、階層単位で導通状態が分かるようにラダー図を表示部３０に表示させる。具体的には、表示処理部１４Ｂは、変数の現在値に従って、指定された階層単位内の回路および指定された階層単位自体が導通しているか否かがわかるようにラダー図を表示させる。表示処理部１４Ｂは、例えば、導通状態にある回路要素に他部とは異なる色（例えば、青色）を付すことによって回路要素の導通状態を表現する。また、表示処理部１４Ｂは、例えば、導通状態にある階層単位に他部とは異なる色（例えば、茶色）を付すことによって階層単位の導通状態を表現する。
【００８６】
従来技術のモニタ表示では、ラダープログラム全体を単位としてモニタ表示していた。このため、導通状態を取得・表示する変数の数が増えるに従って、性能劣化を起こすという問題があった。また、部分回路だけの状態に注目してモニタしたい場合、全体がモニタ表示状態になっていると、注目したい部分回路を見つけにくいなど視認性に課題があった。
【００８７】
本実施の形態では、ラダープログラム表示装置１Ｄが、階層単位で導通状態が分かるようにラダー図を表示する。また、ラダープログラム表示装置１Ｄが、導通状態にある回路要素および階層単位に色を付して表示する。
【００８８】
図１１は、階層単位のモニタ表示を説明するための図である。図１１では、並列回路ブロック４２の階層単位がユーザによって選択され、選択範囲のみがモニタ表示されている場合のラダー図を示している。
【００８９】
指示入力部１７へは、ユーザから選択された範囲（階層単位）のみをモニタ表示する指示（選択範囲モニタ指示）が入力される。指示入力部１７は、入力された選択範囲モニタ指示をモニタ値取得部１９に送る。
【００９０】
モニタ値取得部１９は、選択範囲モニタ指示を受け取ると、範囲選択部１６から設定中の階層単位を取得し、階層単位内（範囲内）の変数一覧を作成する。範囲選択部１６が、並列回路ブロック４２を選択範囲に設定している場合、モニタ値取得部１９は、変数一覧として［Ｘ１，Ｘ２，Ｘ３］を作成する。
【００９１】
そして、モニタ値取得部１９は、実行中のＣＰＵユニット２０から、変数一覧の現在値を取得する。モニタ値取得部１９は、例えば、［Ｘ１＝ＯＮ，Ｘ２＝ＯＮ，Ｘ３＝ＯＦＦ］などの現在値を取得する。モニタ値取得部１９は、設定中の選択範囲を、取得した変数の現在値に従った状態で表示するよう、表示処理部１４Ｂにモニタ表示指示を送る。
【００９２】
表示処理部１４Ｂは、モニタ表示指示を受け取ると、変数の現在値に従って何れの回路が導通状態にあるかを識別可能なよう表示部３０に回路表示させる。表示処理部１４Ｂは、例えば、導通状態にある回路要素（接点Ｘ１，Ｘ２）を色付きで表示する。また、表示処理部１４Ｂは、導通状態にある階層単位を網掛け表示する。
【００９３】
このように、実施の形態４によれば、論理的な回路の階層単位でモニタ表示対象を指定することができるので、階層単位毎に個別にモニタ表示できる。このため、導通状態を取得する変数の数を制限することができ、この結果、導通状態の表示・処理性能が向上する。また、注目したい階層単位だけを指定して導通状態をモニタできるので、モニタの視認性が向上する。したがって、ラダープログラムのデバッグ作業を効率化できる。
【００９４】
実施の形態５．
つぎに、図１２および図１３を用いてこの発明の実施の形態５について説明する。実施の形態５では、ラダープログラム表示装置にラダー図が入力された場合に、ラダー図を解析してデータ構造表記に変換する。
【００９５】
図１２は、実施の形態５に係るラダープログラム表示装置の構成を示す図である。図１２の各構成要素のうち図１に示す実施の形態１のラダープログラム表示装置１Ａと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００９６】
ラダープログラム表示装置１Ｅは、ラダープログラム表示装置１Ａの機能に加えて、階層解析部１３を備えている。また、ラダープログラム表示装置１Ｄは、エンジニアリングツール１０Ａの代わりに、エンジニアリングツール１０Ｅを備えている。そして、エンジニアリングツール１０Ｅが、エンジニアリングツール１０Ａの構成要素に加えて、階層解析部１３を備えている。本実施の形態のエンジニアリングツール１０Ｅは、モニタツールとしての機能を有している。
【００９７】
プログラム入力部１１は、ラダープログラム作成装置などで作成されたラダー図Ｌ３を入力して階層解析部１３に送る。階層解析部１３は、ラダー図Ｌ３内に配置されている直列・並列回路の階層構造を解析する。階層解析部１３は、解析結果に基づいて、ラダープログラムに階層構造を付与する。具体的には、階層解析部１３は、ラダー図Ｌ３に基づいて、データ構造表記４を生成する。階層解析部１３は、階層構造に関する情報を含んだデータ構造表記４を階層データ保持部１２に記憶させる。
【００９８】
表示処理部１４Ａは、階層データ保持部１２内のデータ構造表記４に基づいて、各階層単位が視覚的に識別可能なよう、ラダー図Ｌ５を表示する。表示処理部１４Ａは、実施の形態１と同様の処理によってラダー図Ｌ５を色分け表示する。
【００９９】
なお、本実施の形態では、データ構造表記４に基づいて、ラダー図Ｌ５を色分け表示する場合について説明したが、データ構造表記４およびラダー図Ｌ３に基づいて、ラダー図Ｌ５を色分け表示してもよい。この場合、階層データ保持部１２には、データ構造表記４およびラダー図Ｌ３を記憶させておく。
【０１００】
つぎに、ラダープログラム表示装置１Ａ〜１Ｅのハードウェア構成について説明する。図１３は、ラダープログラム表示装置のハードウェア構成を示す図である。図１３に示すラダープログラム表示装置１Ｘは、ラダープログラム表示装置１Ａ〜１Ｅの何れかである。
【０１０１】
ラダープログラム表示装置１Ｘは、ＣＰＵ（Central  Processing  Unit）９１、ＲＯＭ（Read  Only  Memory）９２、ＲＡＭ（Random  Access  Memory）９３、表示部３０、入力部９５を有している。ラダープログラム表示装置１Ｘでは、これらのＣＰＵ９１、ＲＯＭ９２、ＲＡＭ９３、表示部３０、入力部９５がバスラインＢを介して接続されている。
【０１０２】
ＣＰＵ９１は、コンピュータプログラムである階層表示プログラム９０を用いて、ラダープログラムを階層単位毎に色分け表示する。表示部３０は、液晶モニタなどの表示装置であり、ＣＰＵ９１からの指示に基づいて、ラダー図、データ構造表記などを色分け表示する。入力部９５は、マウスやキーボードを備えて構成され、ユーザから外部入力される指示情報、ラダープログラムなどを入力する。入力部９５へ入力された指示情報は、ＣＰＵ９１へ送られる。
【０１０３】
階層表示プログラム９０は、ＲＯＭ９２内に格納されており、バスラインＢを介してＲＡＭ９３へロードされる。ＣＰＵ９１はＲＡＭ９３内にロードされた階層表示プログラム９０を実行する。具体的には、ラダープログラム表示装置１Ｘでは、使用者による入力部９５からの指示入力に従って、ＣＰＵ９１がＲＯＭ９２内から階層表示プログラム９０を読み出してＲＡＭ９３内のプログラム格納領域に展開して各種処理を実行する。ＣＰＵ９１は、この各種処理に際して生じる各種データをＲＡＭ９３内に形成されるデータ格納領域に一時的に記憶させておく。
【０１０４】
ラダープログラム表示装置１Ｘで実行される階層表示プログラム９０は、階層データ保持部１２、表示処理部１４Ａ（表示処理部１４Ｂ）などを含むモジュール構成となっており、これらが主記憶装置上にロードされ、これらが主記憶装置上に生成される。
【０１０５】
このように、実施の形態５によれば、ラダー図Ｌ３からデータ構造表記４を生成するので、ラダープログラム表示装置１Ｅに入力されるラダープログラムがラダー図であっても、ラダー図を色分け表示することが可能となる。
【産業上の利用可能性】
【０１０６】
以上のように、本発明に係るラダープログラム表示装置およびラダープログラム表示プログラムは、ラダープログラムの回路表示に適している。
【符号の説明】
【０１０７】
１Ａ〜１Ｅ，１Ｘ  ラダープログラム表示装置、４，４ａ〜４ｃ  データ構造表記、１０Ａ〜１０Ｅ  エンジニアリングツール、１１  プログラム入力部、１２  階層データ保持部、１３  階層解析部、１４Ａ，１４Ｂ  表示処理部、１５  出力部、１６  範囲選択部、１７  指示入力部、１８  編集処理部、１９  モニタ値取得部、２０  ＣＰＵユニット、３０  表示部、３１，３３，４１，４３，５２，５３  直列回路ブロック、３２，４２，５１  並列回路ブロック、９０  階層表示プログラム、Ｌ３，Ｌ５，Ｌ５ａ〜Ｌ５ｃ  ラダー図。
【図１】
0005777838.tif 000002
【図２】
0005777838.tif 000003
【図３】
0005777838.tif 000004
【図４】
0005777838.tif 000005
【図５】
0005777838.tif 000006
【図６】
0005777838.tif 000007
【図７】
0005777838.tif 000008
【図８】
0005777838.tif 000009
【図９】
0005777838.tif 000010
【図１０】
0005777838.tif 000011
【図１１】
0005777838.tif 000012
【図１２】
0005777838.tif 000013
【図１３】
0005777838.tif 000014