(57)【要約】  コントローラに格納される制御プログラムを開発支援するコンピュータ（１）であって、制御コマンド情報、変数名情報、及び、変数用レジスタ情報が相互に関連付けられて構築されたデータベース（ＤＢ）と、制御プログラム内の情報をユーザによる選択操作に基づき選択情報として取得する選択部（Ｐａ２）と、選択情報をデータベース（ＤＢ）に基づき情報の種類ごとに分析すると共に、変数の現在値を取得する分析部（Ｐａ３）と、分析された選択情報を情報の種類ごとに画面に表示すると共に、変数の現在値を画面に表示する表示部（Ｐａ１）とを有する。
2014064830.tif 000002
【特許請求の範囲】
【請求項１】
表示画面を有し、制御対象を制御するためのコントローラに接続され、所定のプログラム言語によって記述されて前記コントローラに格納される制御プログラムを開発支援する開発支援装置であって、
前記制御対象の動作制御又は演算処理を実行するための制御コマンド情報、前記動作制御又は演算処理に用いられる変数名情報、及び、該変数名に対応する変数の現在値が格納される変数用レジスタ情報が相互に関連付けられて構築されたデータベースと、
前記制御プログラム内の情報であって、前記制御コマンド情報、前記変数名情報、及び、前記変数用レジスタ情報のうち少なくとも１種類以上の情報を含む情報をユーザによる選択操作に基づき選択情報として取得する選択部と、
前記選択部により取得された前記選択情報を前記データベースに基づき情報の種類ごとに分析すると共に、前記変数名情報又は前記変数用レジスタ情報に基づき前記変数の現在値を取得する分析部と、
前記分析部によって分析された前記選択情報を前記情報の種類ごとに前記表示画面に表示すると共に、前記分析部によって取得された前記変数の現在値を前記表示画面に表示する表示部と、を有する、開発支援装置。
【請求項２】
前記選択部は、前記ユーザによる選択操作が同一の情報を所定時間以上継続して選択するものでない場合に、該情報を選択情報として取得しない、請求項１に記載の開発支援装置。
【請求項３】
前記所定のプログラム言語は、ラダー言語、及び、プログラム言語のうち少なくともいずれか一方である、請求項１又は請求項２に記載の開発支援装置。
【請求項４】
前記制御コマンド情報ごとに、該制御コマンドに関連するデータの配列を規定する規定リストである命令フォーマットを更に有し、
前記分析部は、
前記選択部により取得された前記選択情報を前記命令フォーマットに基づき情報の種類ごとに分析する、請求項１から請求項３のうちいずれか１項に記載の開発支援装置。
【請求項５】
前記分析部は、
前記選択部により取得された前記選択情報が前記制御コマンド情報を含む場合に、該制御コマンド情報がテキスト情報であるか否かを判別し、該選択情報がテキスト情報である場合に、該選択情報を前記制御プログラムの１行の記述ごとに前記選択情報を分析する、請求項４に記載の開発支援装置。
【請求項６】
前記制御プログラムがコンパイル処理済みであるか否かを判断する状態判断部、を更に有する請求項１から請求項５に記載の開発支援装置。
【請求項７】
前記状態判断部が、
前記制御プログラムが実行中であるか否かを更に判断する、請求項６に記載の開発支援装置。
【請求項８】
制御対象を制御するためのコントローラに接続されたコンピュータを、
所定のプログラム言語によって記述されて前記コントローラに格納される制御プログラム内の情報であって、前記制御コマンド情報、前記変数名情報、及び、前記変数用レジスタ情報のうち少なくとも１種類以上の情報をユーザによる選択操作に基づき選択情報として取得する選択部、
前記選択部により取得された前記選択情報を前記制御対象の動作制御又は演算処理を実行するための制御コマンド情報、前記動作制御又は演算処理に用いられる変数名情報、及び、該変数名に対応する変数の現在値が格納される変数用レジスタ情報が相互に関連付けられて構築されたデータベースに基づき情報の種類ごとに分析すると共に、前記変数名情報又は前記変数用レジスタ情報に基づき前記変数の現在値を取得する分析部、及び、
前記分析部によって分析された前記選択情報を前記情報の種類ごとに前記コンピュータの表示画面に表示すると共に、前記分析部によって取得された前記変数の現在値を前記表示画面に表示する表示部、として機能させる、開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発支援装置及び開発支援プログラムに関する。
【背景技術】
【０００２】
近年、一般産業用機械あるいは産業用ロボット等の各種装置には高性能化が求められてきた。これらの各種装置を対象とする制御対象を制御するコントローラには、入出力（Ｉ／Ｏ)制御を得意とするプログラマブルロジックコントローラ(以下、ＰＬＣという。)が一般的に用いられているが、一方で、サーボやインバータを用いて各種装置の複雑な動きを高速・高精度に制御するマシンコントローラ（モーションコントローラともいう）が用いられてきている。【０００３】
これらのコントローラはラダー言語やモーション言語等の制御プログラムを用いてモーションの制御を行う制御装置として共通なものであって、コントローラ内部の制御プログラムを書き換えたり、制御プログラムに対してデバッグ作業を行ったりするために、コントローラに開発支援装置が接続される。開発支援装置がＰＬＣに接続された例として、例えば特許文献１に記載のものがある。また、デバッグ作業において制御プログラム内の変数を監視するために画面に表示させる機能について、特許文献１，２に記載されている。【０００４】
制御プログラムとしてラダー言語を用いた場合（以下、ラダー言語を用いた制御プログラムラダープログラムという。）とモーション言語を用いた場合（以下、モーション言語を用いた制御プログラムモーションプログラムという。）とのいずれの場合でも、変数監視のためには、監視対象の変数を監視対象リストに登録する必要がある。監視対象リストに変数が登録されると、その変数が格納されているレジスタ内の値（変数値）が画面に表示され、変数値（変数の現在値）の監視が可能となる。【０００５】
従来は、監視対象の変数を登録するために、監視したい変数名を個別に監視対象リストに手入力していた。また、ラダープログラムにおいて変数に対応する素子（スイッチ、タイマ、ランプ等）を選択し、ドラッグ＆ドロップしたり、モーションプログラムにおいて変数に対応するテキストを選択し、ドラッグ＆ドロップしたりすることにより監視対象リストへの登録が行われていた。これらの選択は、例えば、マウスによる範囲指定等によって行われていた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２９３１３８号公報
【特許文献２】特開平１−２４４５４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のように、監視対象リストに監視対象の変数を登録する作業は面倒かつ不便であった。例えば、変数名を手入力によって監視対象リストに登録する際に、入力ミスがあると監視対象の変数の現在値を正しく表示することができなかった。また、変数を登録する作業において、変数の登録は、１個ずつ行う必要があり、不要になった変数についてもユーザの操作により削除する操作が必要であった。【０００８】
ラダープログラムは、コマンドや変数演算をテキスト形式で表現するＥＸＰＲＥＳＳＩＯＮ機能を有する場合がある。ここで、ＥＸＰＲＥＳＳＩＯＮ機能とは、一般にプログラミング言語のＣ言語のように、複数のコマンド（命令）を一括して（１回のコマンド（命令）内で）、記述可能なテキスト形式で記述できるコマンド（命令）のことを指す。このＥＸＰＲＥＳＳＩＯＮ機能では、ラダー言語で表現された電源線又はラング内にＥＸＰＲＥＳＳＩＯＮウィンドウが表示され、そのＥＸＰＲＥＳＳＩＯＮウィンドウ内にコマンドや変数演算がテキスト形式で表示される。【０００９】
ＥＸＰＲＥＳＳＩＯＮウィンドウ内の変数を監視対象リストに登録する場合、ＥＸＰＲＥＳＳＩＯＮウィンドウ内に記述された変数を目視により確認し、監視したい変数名を監視対象リスト内に手入力する必要があった。手入力の際に入力ミスが発生すると、変数の値が正しく表示されず、変数の現在値の監視ができないという問題があった。【００１０】
モーションプログラムにおいて、変数を監視対象リストに登録する場合も、変数に対応するテキストを手入力したり範囲指定したりする必要があった。したがって、手入力の際に入力ミスが発生した場合には、変数の値が正しく表示されず、変数の現在値の監視ができないという上記同様の問題があった。変数に対応するテキストを範囲指定する場合に、不必要な部分まで指定してしまったり、必要な部分の一部が指定から漏れてしまったりすることもあった。そうすると、上記同様に、変数の値が正しく表示されず、変数の現在値の監視ができないという問題があった。【００１１】
本発明は、上記の事情に鑑みてなされたもので、ユーザに煩雑な操作を強いることなく、簡単な操作によって変数値（現在値）の監視を実現することのできる開発支援装置及び開発支援プログラムを提供することを例示的課題とする。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、本発明の例示的側面としての開発支援装置は、表示画面を有し、制御対象を制御するためのコントローラに接続され、所定のプログラム言語によって記述されてコントローラに格納される制御プログラムを開発支援する開発支援装置であって、制御対象の動作制御又は演算処理を実行するための制御コマンド情報、動作制御又は演算処理に用いられる変数名情報、及び、変数名に対応する変数の現在値が格納される変数用レジスタ情報が相互に関連付けられて構築されたデータベースと、制御プログラム内の情報であって、制御コマンド情報、変数名情報、及び、変数用レジスタ情報のうち少なくとも１種類以上の情報を含む情報をユーザによる選択操作に基づき選択情報として取得する選択部と、選択部により取得された選択情報をデータベースに基づき情報の種類ごとに分析すると共に、変数名情報又は変数用レジスタ情報に基づき変数の現在値を取得する分析部と、分析部によって分析された選択情報を情報の種類ごとに表示画面に表示すると共に、分析部によって取得された変数の現在値を表示画面に表示する表示部と、を有する。【００１３】
選択部は、ユーザによる選択操作が同一の情報を所定時間以上継続して選択するものでない場合に、情報を選択情報として取得しなくてもよい。【００１４】
所定のプログラム言語は、ラダー言語、及び、プログラム言語のうち少なくともいずれか一方であってもよい。【００１５】
開発支援装置は、制御コマンド情報ごとに、制御コマンドに関連するデータの配列を規定する規定リストである命令フォーマットを更に有し、分析部は、選択部により取得された選択情報を命令フォーマットに基づき情報の種類ごとに分析してもよい。【００１６】
分析部は、選択部により取得された選択情報が制御コマンド情報を含む場合に、制御コマンド情報がテキスト情報であるか否かを判別し、選択情報がテキスト情報である場合に、選択情報を制御プログラムの１行の記述ごとに選択情報を分析してもよい。【００１７】
開発支援装置は、制御プログラムがコンパイル処理済みであるか否かを判断する状態判断部、を更に有してもよい。【００１８】
状態判断部が、制御プログラムが実行中であるか否かを更に判断してもよい。【００１９】
本発明の他の例示的側面としての開発支援プログラムは、制御対象を制御するためのコントローラに接続されたコンピュータを、所定のプログラム言語によって記述されてコントローラに格納される制御プログラム内の情報であって、制御コマンド情報、変数名情報、及び、変数用レジスタ情報のうち少なくとも１種類以上の情報をユーザによる選択操作に基づき選択情報として取得する選択部、選択部により取得された選択情報を制御対象の動作制御又は演算処理を実行するための制御コマンド情報、動作制御又は演算処理に用いられる変数名情報、及び、変数名に対応する変数の現在値が格納される変数用レジスタ情報が相互に関連付けられて構築されたデータベースに基づき情報の種類ごとに分析すると共に、変数名情報又は変数用レジスタ情報に基づき変数の現在値を取得する分析部、及び、分析部によって分析された選択情報を情報の種類ごとにコンピュータの表示画面に表示すると共に、分析部によって取得された変数の現在値を表示画面に表示する表示部、として機能させる。【００２０】
本発明の更なる目的又はその他の特徴は、以下添付図面を参照して説明される好ましい実施の形態によって明らかにされるであろう。
【発明の効果】
【００２１】
本発明によれば、ユーザに煩雑な操作を強いることなく、簡単な操作によって変数監視を実現することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態１に係るコンピュータがプログラマブルロジックコントローラ（ＰＬＣ）に接続された状態を示す概略構成図である。
【図２】図１に示すコンピュータの画面に、ラダープログラムを表示した状態を示す図である。
【図３】ラダープログラムが表示された画面上に監視対象リストとなるウォッチウィンドウが表示された状態を示す図である。
【図４】図１に示すコンピュータの内部構成の概略を示す構成図である。
【図５Ａ】実施形態１に係る開発支援プログラムによる変数値の表示プロセスを説明するためのフローチャートである。
【図５Ｂ】実施形態１に係る開発支援プログラムによる変数値の表示プロセスを説明するためのフローチャートである。
【図６】実施形態２に係るコンピュータの画面にモーションプログラムを表示した状態を示す図である。
【図７】モーションプログラムが表示された画面上に監視対象リストとなるウォッチウィンドウが表示された状態を示す図である。
【図８Ａ】実施形態２に係る開発支援プログラムによる変数値の表示プロセスを説明するためのフローチャートである。
【図８Ｂ】実施形態２に係る開発支援プログラムによる変数値の表示プロセスを説明するためのフローチャートである。
【発明を実施するための形態】
【００２３】
[実施形態１]
以下、本発明の実施形態１について図面を用いて説明する。図１は、本発明の実施形態１に係る開発支援装置としてのコンピュータ１がプログラマブルロジックコントローラ（ＰＬＣ）２に接続された状態を示す概略構成図である。図１において、符号３はサーボ制御装置、符号４はサーボモータである。
【００２４】
ＰＬＣ２は、内部に制御プログラムＰを格納している。その制御プログラムＰに基づいて、ＰＬＣ２からサーボ制御装置３に向けて制御指令が送出されるようになっている。サーボ制御装置３は、受信した制御指令に基づき、サーボモータ（制御対象）４の動作制御及び駆動を実行するようになっている。
【００２５】
制御プログラムＰは、ラダー言語によって記述されたラダープログラム又はモーション言語によって記述されたモーションプログラムによって構成されている。制御プログラムＰは、ラダー言語とモーション言語の両方によって記述される場合もある。例えば、メインプログラムがラダー言語によって記述され、そのメインプログラム内のサブプログラムがモーション言語によって記述される場合がある。
【００２６】
ここで、ラダープログラムとは、ラダー言語によって記述された制御用のプログラムであって、電源線又はラング内にスイッチ、タイマ、ランプ等で構成される論理演算素子を変数と共に配置しプログラム実行（スキャン）するものである。モーションプログラムとは、１又は複数行のテキストで構成されたモーション言語によって記述された制御用のプログラムであって、各行内に複数のコマンド、変数、演算式が記述可能であり、行ごとにプログラム実行するものである。実施形態１では、制御プログラムＰがラダー言語により記述されている場合を説明する。
【００２７】
制御プログラムＰは、コンピュータ１を用いて作成され、コンパイルされた後にＰＬＣ２内部に格納される。既にＰＬＣ２内部に格納された制御プログラムＰを編集する場合は、コンピュータ１とＰＬＣ２とが接続された状態で、まず、ＰＬＣ２内部から制御プログラムＰがコンピュータ１にロードされる。コンピュータ１上で編集作業が行われ、コンパイル処理が完了したら、再び制御プログラムＰがＰＬＣ２内部へとセーブ（格納）される。
【００２８】
図２は、コンピュータ１の画面（表示画面）１ａに、ラダープログラムＰ１を表示した状態を示す図である。ラダープログラムＰ１は、ラダー言語により記述された制御プログラムＰである。コンピュータ１によって制御プログラムＰを作成する場合、又はコンピュータ１に制御プログラムＰをロードして編集する場合に、画面１ａにラダープログラムＰ１が表示される。
【００２９】
図２において、符号１１は素子である。ラダープログラムＰ１の素子はコマンド（制御コマンド）であり、変数と関連付けられる。コマンドは、論理演算としてのスイッチ、タイマ、ランプ等を含んでいる。また、コマンドは、ＡＤＤ（加算処理）やＳＴＯＲＥ（格納処理）等の演算処理も含む。例えば、符号１１ａは素子としてのスイッチであり、符号１１ｂはスイッチ１１ａにおける変数であり、符号１１ｃは変数１１ｂが格納されるレジスタ（変数用レジスタ）である。符号１１ｄは素子としての格納処理であり、符号１１ｅは格納処理１１ｄにおける変数であり、１１ｆは変数１１ｅが格納される変数用レジスタである。
【００３０】
画面１ａには、ＥＸＰＲＥＳＳＩＯＮウィンドウ１２も表示されている。ＥＸＰＲＥＳＳＩＯＮウィンドウ１２は、ラダープログラムＰ１が有するＥＸＰＲＥＳＳＩＯＮ機能に基づき電源線又はラング上に表示される素子としてのウィンドウ枠である。ＥＸＰＲＥＳＳＩＯＮウィンドウ１２内にはテキストで記述されたコマンドや演算処理、変数等が表示されている。電源線又はラング上にＥＸＰＲＥＳＳＩＯＮウィンドウ１２を配置することにより、その内部にテキストで記述されたコマンドや演算処理等を実行させることができる。
【００３１】
図３は、ラダープログラムＰ１が表示された画面１ａ上に監視対象リストとなるウォッチウィンドウ１３が表示された状態を示す図である。このウォッチウィンドウ１３は、開発支援プログラムＰａの機能に基づき表示されている。
【００３２】
図４は、コンピュータ（開発支援装置）１の内部構成の概略を示す構成図である。コンピュータ１は、画面１ａを有する表示装置と接続されており、内部にコンピュータ１の主要部としてのＣＰＵ（演算処理装置）１ｂと記憶装置としてのメモリ１ｃとを有している。メモリ１ｃ内には、開発支援プログラムＰａが格納されている。開発支援プログラムＰａがコンピュータ１を開発支援装置として機能させるが、詳細は後述する。メモリ１ｃ内には、データベースＤＢも格納されている。
【００３３】
このデータベースＤＢは、ラダープログラムＰ１で用いるコマンド、変数名、変数用レジスタをデータとして有している。コマンドとして、スイッチ、タイマ、ランプ、ＳＩＮ関数、ＣＯＳ関数、ＳＴＯＲＥ（格納処理）、ＡＤＤ（加算処理）等を例示することができる。また、コマンドに対応する命令コードとして、スイッチ１１ａに対応する命令コード０ｘ００や格納処理（ＳＴＯＲＥ）１１ｄに対応する命令コード０ｘ０２等を例示することができる。変数名は、ユーザが決定しラダープログラムＰ１内で定義した変数の名称であって、本実施形態１では、例えば「ＱＡＺ」、［ＷＳＸ］、「Ｐｏｓ１」、「Ｐｏｓ２」等の変数名が使用される。変数用レジスタは、例えば、レジスタ種別（Ｉ／Ｏ／Ｍ／Ｃ／Ｄ・・・）とデータ型（Ｂ／Ｗ／Ｌ／Ｆ／Ｑ・・・）とアドレス（５桁の数字）とを有して「ＭＷ０００１０」「ＭＢ００００１」「ＤＷ０００００」のように構成されている。
【００３４】
開発支援プログラムＰａは、ＣＰＵ１ｂを表示部Ｐａ１、選択部Ｐａ２、分析部Ｐａ３として機能させ、ラダープログラムＰ１における変数監視を実現する。
【００３５】
表示部Ｐａ１は、コンピュータ１の画面１ａ上にウォッチウィンドウ１３を表示させる機能を有する。開発支援プログラムＰａが起動されると、表示部Ｐａ１が画面１ａ上にウォッチウィンドウ１３を表示させるようになっている。具体的には、開発支援プログラムＰａのアイコンをダブルクリックすることにより開発支援プログラムＰａが起動されてもよい。また、ラダープログラムＰ１の編集画面内に開発支援プログラムＰａ起動用のボタンが表示されており、そのボタンをクリックすると開発支援プログラムＰａが起動するようになっていてもよい。
【００３６】
表示部Ｐａ１は、選択部Ｐａ２によって選択され、分析部Ｐａ３によって分析された変数名、変数用レジスタ、コメント等の情報をウォッチウィンドウ１３内に表示する機能を有する。また、変数名又は変数用レジスタの情報に基づいて分析部Ｐａ３が取得した変数値（変数の現在値）をウォッチウィンドウ１３内に表示する機能を有する。ウォッチウィンドウ１３には、図４に示すように、変数欄１３ａ、変数値欄１３ｂ、コメント欄１３ｃが形成されている。表示部Ｐａ１は、分析部Ｐａ３によって分析された変数名情報を変数欄１３ａに、変数値の情報を変数値欄１３ｂに、コメント情報をコメント欄１３ｃに表示する。変数欄１３ａには、変数名に代えて、又は変数名と共に変数が格納されている変数用レジスタ情報が表示されてもよい。
【００３７】
表示部Ｐａ１は、選択部Ｐａ２によって選択された情報が短時間で更新された場合に、選択時間（その情報を選択している状態が継続している時間）の短い情報をウォッチウィンドウ１３内に表示しない。その機能の実現は、後述するように選択部Ｐａ２によって実現されていてもよいし、表示部Ｐａ１によって実現されていてもよい。
【００３８】
選択部Ｐａ２は、ユーザによって選択された情報を取得し、分析部Ｐａ３に送信する機能を有する。具体的には、開発支援プログラムＰａが起動された後に、ユーザがラダープログラムＰ１の編集画面上でキーボードやマウス等の入力手段によって情報を選択した場合に、その情報を取得して分析部Ｐａ３へと送信する。情報の選択は、例えば、ユーザがマウスによってスイッチ１１ａをクリックすることにより実行される。一般的には、選択されたスイッチ１１ａは、ハイライト表示される。
【００３９】
キーボードのカーソルキー「↑」「↓」「←」「→」を用いて選択位置を移動させることによっても、新たな情報の選択、すなわち取得情報の更新を行うことができる。例えば、図２において、スイッチ１１ａをマウスクリックすることによりスイッチ１１ａの情報を取得した後に、右カーソルキー「→」を１回押すことにより、スイッチ１１ｇが選択される。それにより、選択部Ｐａ２により取得される情報が、スイッチ１１ａに関する情報からスイッチ１１ｇに関する情報へと更新される。このとき、画面１ａ上でのハイライト位置も、スイッチ１１ａからスイッチ１１ｇへと移動する。
【００４０】
更にカーソルキー「→」をもう１回押すことにより、スイッチ１１ｈが選択される。選択部Ｐａ２により取得する情報が、スイッチ１１ｇに関する情報からスイッチ１１ｈに関する情報へと更新される。このとき、画面１ａ上でのハイライト位置も、スイッチ１１ａからスイッチ１１ｇへと移動する。
【００４１】
カーソルキー「→」を素早く２回押すことにより、素子の選択をスイッチ１１ａ→スイッチ１１ｇ→スイッチ１１ｈへと素早く移動させることができる。このとき、スイッチ１１ｇを短時間（例えば、２００ｍｓｅｃ未満）しか選択しなかった場合に、表示部Ｐａ１はスイッチ１１ｇに関する情報（変数名ＷＳＸや変数ＷＳＸの値、変数値が格納されている変数用レジスタ等の情報）をウォッチウィンドウ１３内に表示しない。この場合において、素子やテキスト等の情報を選択した状態が継続している時間（以下、選択時間という。）が所定時間未満である場合に、その情報を表示しない機能を選択部Ｐａ２が実現する。すなわち、スイッチ１１ｇに関する情報の選択時間が所定時間（２００ｍｓｅｃ）以上である場合にのみ、選択部Ｐａ２がスイッチ１１ｇの情報を分析部Ｐａ３へと送信し、その選択時間が所定時間（２００ｍｓｅｃ）未満である場合に、選択部Ｐａ２はスイッチ１１ｇの情報を分析部Ｐａ３へと送信しない。これを換言すると、選択部Ｐａ２は、情報の選択時間が所定時間以上である場合にその情報を選択し、情報の選択時間が所定時間未満である場合にその情報を選択しない、ことを意味している。
【００４２】
上記に示したように、情報の選択時間を設けることにより、ユーザが意図して選択していない場合（カーソルを移動している場合）は、表示部の描画の更新を実施しないで済む（変数名、変数用レジスタ、コメント、変数の現在値の取得処理を実施しないで済む）という理由があり、その他の機能への遅延を防ぎ、パフォーマンスの低下を防ぐことができる。
【００４３】
なお、情報の選択時間が所定時間未満である場合に、その情報をウォッチウィンドウ１３内に表示しない機能を表示部Ｐａ１が実現してもよい。例えば、選択部Ｐａ２から分析部Ｐａ３を介してスイッチ１１ｇの情報が表示部Ｐａ１に送られても、選択部Ｐａ２によるスイッチ１１ｇの選択時間が短時間（所定時間未満）である場合に、表示部Ｐａ１がスイッチ１１ｇの情報をウォッチウィンドウ１３内に表示しないように構成されていてもよい。画面１ａ上の空欄１４には、取得すべき情報が対応付けられていない。したがって、ユーザがマウスで空欄１４をクリックしても情報取得は行われない。
【００４４】
分析部Ｐａ３は、選択部Ｐａ２によって選択された情報（選択情報）を情報の種類ごとに分析する機能を有する。選択部Ｐａ２から受信した情報には、コマンド情報、変数名情報、変数用レジスタ情報及びコメント情報のうちの１つ又は複数が含まれている。これらの種類が混在した情報を選択部Ｐａ２から受け取り、分析部Ｐａ３は情報を分析して表示部Ｐａ１へと送る。
【００４５】
分析部Ｐａ３は、データベースＤＢに基づいて選択部Ｐａ２が選択した情報を分析する。データベースＤＢ内には、ラダープログラムＰ１で用いるコマンド、変数名、変数用レジスタがデータとして格納されている。分析部Ｐａ３は、選択部Ｐａ２が取得した情報とデータベースＤＢ内のデータとを照合し、取得情報をコマンド情報、変数名情報、変数用レジスタ情報に分析する。分析部Ｐａ３は、取得情報内の情報であって、データベースＤＢ内のいずれのデータとも整合しない部分、又はコメントを示すタグ情報が付加されている部分をコメント情報と分析する。分析された情報は、表示部Ｐａ１へと送信される。
【００４６】
なお、ユーザがＥＸＰＲＥＳＳＩＯＮウィンドウ１２を選択した場合には、選択部Ｐａ２からの情報はテキスト情報となる。このとき、分析部Ｐａ３は、選択部Ｐａ２から受け取った情報がテキスト情報であることを認識し、そのテキスト情報を分析してコマンド情報、変数名情報、変数用レジスタ情報、コメント情報に分析して表示部Ｐａ１へと送信する。
【００４７】
分析部Ｐａ３は、選択部Ｐａ２が取得した情報の中に変数用レジスタの情報が含まれる場合に、その変数用レジスタに格納されている値（変数値）を取得して表示部Ｐａ１へと送信する機能を有する。分析部Ｐａ３は、選択部Ｐａ２が取得した情報の中に変数名の情報が含まれ、その変数に対応する変数用レジスタの情報が含まれない場合に、その変数に対応する変数用レジスタ（すなわち、その変数の変数値が格納されているレジスタ）の情報とその変数用レジスタに格納された変数値を取得して表示部Ｐａ１へと送信する機能を有する。
【００４８】
次に、この開発支援プログラムＰａによる変数値の表示プロセスについて、図５Ａ及び図５Ｂのフローチャートに基づいて説明する。
【００４９】
ラダープログラムＰ１の編集中に、開発支援プログラムＰａを起動する（Ｓ１）。開発支援プログラムＰａの起動により、ウォッチウィンドウ１３が表示部Ｐａ１によって画面１ａ上に表示される（Ｓ２）。ユーザがマウス又はキーボードのカーソル操作によって画面１ａ上の選択位置が移動する（Ｓ３）。その選択位置での選択時間が所定時間（例えば、２００ｍｓｅｃ）以上か否かが判断され（Ｓ４）、所定時間以上の場合に、選択部Ｐａ２によりその選択位置の情報が選択される。そして、選択位置（例えば、スイッチ１１ａ）の情報が分析部Ｐａ３へと送られる。
【００５０】
分析部Ｐａ３は選択部Ｐａ２が選択した情報を分析する。選択した情報が素子のコマンドである場合には（Ｓ５）、分析部Ｐａ３は、そのコマンドに対応する命令コードを分析する（Ｓ６）。選択した情報がテキスト情報としてのコマンドである場合には（Ｓ７）、分析部Ｐａ３によりそのテキスト情報が１行ずつ分析される（Ｓ８）。そして、テキスト情報内で使用されているコマンドが分析され、命令フォーマットが取得される（Ｓ９）。
【００５１】
分析部Ｐａ３によって行われる、選択した情報が素子のコマンドであるか否かの判断や、テキスト情報の１行ずつの分析は、データベースＤＢ内のデータとの照合によって行われる。すなわち、分析部Ｐａ３は、選択した情報とデータベースＤＢ内の情報とを照合し、データベースＤＢ内のコマンドデータと整合した場合に、その選択情報がコマンドであると判断する。命令フォーマットは、命令（コマンド）に応じたデータ配列のフォーマットである。すなわち、コマンドごとに、そのコマンドに関連してどのようなデータ配列で、コマンド、変数名、変数用レジスタ、コメントが記述されているかを規定した規定リストである。
【００５２】
例えば、「ＭＬ０１００２＝ＳＩＮ（ＭＬ０１０００）」という演算式を例として説明する。コマンドがＳＩＮ関数である場合、命令フォーマットには、ＳＩＮに続くデータが変数名又は変数用レジスタであることが規定される。また、「＝」の前のデータは変数名又は変数用レジスタであることが規定される。データ内の「Ｍ」「Ｌ」に基づき、上記演算式の「＝」の前のデータもＳＩＮの後に続くデータも変数用レジスタであることが分析される。
【００５３】
選択した情報がテキスト情報としてのコマンドでない場合には（Ｓ７）、そのコマンドに対応する命令コードが分析され、命令フォーマットが取得される（Ｓ１０）。分析部Ｐａ３により、取得した命令フォーマット中の各要素が分析される（Ｓ１１）。すなわち、取得した命令フォーマット中の各要素が、コマンド、変数名、変数用レジスタ、コメントのいずれであるかが分析される。
【００５４】
分析部Ｐａ３により、命令フォーマット中の要素が変数名又は変数用レジスタであるか否かが判断される（Ｓ１２）。そして、要素が変数用レジスタである場合には（Ｓ１３）、その変数用レジスタ内に格納された変数値が取得される（Ｓ１５）。要素が変数名である場合には（Ｓ１３）、その変数名に対応する変数用レジスタの情報が取得され（Ｓ１４）、その変数用レジスタ内に格納された変数値が取得される（Ｓ１５）。
【００５５】
なお、変数名又は変数用レジスタであるか否かの判断と同様に、分析部Ｐａ３により、命令フォーマット中の要素がコメント又はコメント用レジスタであるか否かが判断されてもよい。この場合、要素がコメント用レジスタである場合には、そのコメント用レジスタ内に格納されたコメントが取得される。要素がコメントである場合には、そのコメントに対応するコメント用レジスタの情報が取得され、そのコメント用レジスタ内に格納されたコメントが取得される。要素がコメントであるか否かについては、コメント用タグが付加されているか否かに基いて判断してもよいし、データベースＤＢと照合してデータベースＤＢ内のいずれのデータとも整合しない場合にコメントであると判断してもよい。
【００５６】
分析部Ｐａ３により、分析した結果としてのコマンド情報、変数名情報、変数用レジスタ情報、変数値情報が表示部Ｐａ１へと送信される。表示部Ｐａ１は、ウォッチウィンドウ１３内に分析部Ｐａ３から受け取った変数名情報、変数用レジスタ情報、変数値情報、コメント情報を表示する（Ｓ１６）。このとき、表示部Ｐａ１は、変数欄１３ａ内に変数名情報又は変数用レジスタ情報を表示し、変数値欄１３ｂに変数値情報を表示し、コメント欄１３ｃにコメント情報を表示する。
【００５７】
[実施形態２]
以下、実施形態２に係る開発支援プログラムＰａ及びそれを格納する開発支援装置としてのコンピュータ１について説明する。この実施形態２において、実施形態１と同様の構成については同様の符号を付し、その説明を省略する。
【００５８】
実施形態２においては、制御プログラムＰがモーション言語によって記述されたモーションプログラムＰ２により構成されている。制御プログラムＰは、コンピュータ１を用いて作成され、コンパイル処理された後にＰＬＣ２内部に格納される。図６は、コンピュータ１の画面１ａにモーションプログラムＰ２を表示した状態を示す図である。コンピュータ１によって制御プログラムＰを作成する場合、又はコンピュータ１に制御プログラムＰをロードして編集する場合に、画面１ａにモーションプログラムＰ２が表示される。図７は、モーションプログラムＰ２が表示された画面１ａ上に監視対象リストとなるウォッチウィンドウ１３が表示された状態を示す図である。このウォッチウィンドウ１３は、開発支援プログラムＰａの機能に基づき表示されている。
【００５９】
図６において、符号２１は行番号であり、符号２２はモーションプログラムＰ２のソースコードである。ソースコード２２はテキストで１行ずつ記述されている。ソースコード２２は、テキスト情報としてのコマンド（制御コマンド）、変数名、変数用レジスタのうちの１つ又は複数を含む。実施形態２に係る開発支援プログラムＰａは、前述の図４に示すＣＰＵ１ｂを表示部Ｐａ１、選択部Ｐａ２、分析部Ｐａ３として機能させ、モーションプログラムＰ２における変数監視を実現する。
【００６０】
この実施形態２においては、選択部Ｐａ２により行ごとにソースコード２２が選択される。すなわち、ユーザがマウス又はカーソルキーにより行番号２１を選択すると、選択された行番号２１に対応するソースコード２２のテキスト情報が選択部Ｐａ２により選択される。ユーザがマウス又はカーソルキーによりソースコード２２の一部を選択した場合には、そのソースコード２２に対応する行番号２１のソースコード２２全体を選択部Ｐａ２が選択する。
【００６１】
この開発支援プログラムＰａは、ＣＰＵ１ｂを状態判断部Ｐａ４としても機能させる。状態判断部Ｐａ４は、モーションプログラムＰ２がコンパイル処理済みか否かを判断する機能を有する。更に、状態判断部Ｐａ４は、モーションプログラムＰ２が実行中であるか否かを判断する機能を有する。
【００６２】
モーションプログラムＰ２がコンパイル処理済みでない（すなわち、編集中である。）と状態判断部Ｐａ４が判断した場合は、分析部Ｐａ３は、選択部Ｐａ２によって選択されたソースコード２２のテキスト情報を１行ずつ分析する。モーションプログラムＰ２がコンパイル処理済みであって実行中でないと状態判断部Ｐａ４が判断した場合は、分析部Ｐａ３は、選択部Ｐａ２によって選択されたソースコード２２のテキスト情報をブロック単位で分析する。このとき、ブロックは複数行にわたる場合もある。モーションプログラムＰ２がコンパイル処理済みであって実行中であると状態判断部Ｐａ４が判断した場合は、分析部Ｐａ３は、モーションプログラムＰ２の実行中位置に対応するソースコード２２のテキスト情報と、選択部Ｐａ２によって選択されたソースコード２２のテキスト情報とをブロック単位で分析する。このとき、ブロックは複数行にわたる場合もある。
【００６３】
なお、ブロックとは、１行又は複数行にわたる一連のコマンドや演算式のひとまとまりを意味する。テキスト情報によるソースコード２２は、一連のコマンドや演算式が必ずしも１行中に記述されない場合がある。例えば、「ＭＬ０１０００＝ＳＩＮ（ＭＬ０１００２）＋ＭＬ０１００４」という演算式が途中で改行されて、１行目に「ＭＬ０１０００＝ＳＩＮ（ＭＬ０１００２）」、２行目に「＋ＭＬ０１００４」と記述される場合がある。このような場合に、テキスト情報の１行ずつの分析では、１行目が選択された場合は、変数用レジスタとして「ＭＬ０１０００」「ＭＬ０１００２」の２つのみが分析される。テキスト情報のブロック単位での分析では、前記のブロック単位中のいずれかの位置（すなわち、１行目のテキスト中のいずれかの位置又は２行目のテキスト中のいずれかの位置）をマウス操作又はカーソル操作により選択することで、２行分のテキスト情報（一連の演算式）を、変数用レジスタとして分析することができる。すなわち、ブロック単位での分析においては、ブロック単位中のいずれかの位置の選択により、「ＭＬ０１０００」「ＭＬ０１００２」「ＭＬ０１００４」のうすべてを分析することができる。
【００６４】
次に、この開発支援プログラムＰａによる変数値の表示プロセスについて、図８Ａ及び図８Ｂのフローチャートに基づいて説明する。
【００６５】
モーションプログラムＰ２の編集中又はコンパイル処理後に、開発支援プログラムＰａを起動する（Ｓ２１）。開発支援プログラムＰａの起動により、ウォッチウィンドウ１３が表示部Ｐａ１によって画面１ａ上に表示される（Ｓ２２）。ユーザがマウス又はキーボードのカーソル操作によって画面１ａ上の選択行が移動する（Ｓ２３）。その選択行での選択時間が所定時間（例えば、２００ｍｓｅｃ）以上か否かが判断され（Ｓ２４）、所定時間以上の場合に、選択部Ｐａ２によりその選択行における行番号２１のソースコード２２の情報が選択される。そして、そのソースコード２２のテキスト情報が分析部Ｐａ３へと送られる。分析部Ｐａ３は選択部Ｐａ２が選択した情報を分析する。
【００６６】
状態判断部Ｐａ４によりモーションプログラムＰ２がコンパイル処理済みでない（編集中である）と判断された場合は（Ｓ２５）、分析部Ｐａ３により、ソースコード２２のテキスト情報が１行ずつ分析される（Ｓ２６）。状態判断部Ｐａ４によりモーションプログラムＰ２がコンパイル処理済みであると判断され（Ｓ２５）、かつモーションプログラムＰ２が実行中でないと判断された場合は（Ｓ２７）、分析部Ｐａ３により、ソースコード２２のテキスト情報がブロック単位で分析される（Ｓ２８）。状態判断部Ｐａ４によりモーションプログラムＰ２がコンパイル処理済みであると判断され（Ｓ２５）、かつモーションプログラムＰ２が実行中であると判断された場合は（Ｓ２７）、分析部Ｐａ３により、モーションプログラムＰ２の実行中位置に対応するソースコード２２のテキスト情報と、選択部Ｐａ２によって選択されたソースコード２２のテキスト情報とがブロック単位で分析される（Ｓ２９）。
【００６７】
選択されたテキスト情報内で使用されているコマンドが分析部Ｐａ３により分析され、命令フォーマットが取得される（Ｓ３０）。分析部Ｐａ３により、取得した命令フォーマット中の各要素が分析される（Ｓ３１）。すなわち、取得した命令フォーマット中の各要素が、コマンド、変数名、変数用レジスタ、コメントのいずれであるかが分析される。
【００６８】
分析部Ｐａ３によって行われる、テキスト情報の１行ごとの分析やブロック単位での分析は、データベースＤＢ内のデータとの照合によって行われる。すなわち、分析部Ｐａ３は、選択した情報とデータベースＤＢ内の情報とを照合し、データベースＤＢ内のコマンドデータと整合した場合に、その選択情報がコマンドであると判断する。命令フォーマットについては上記実施形態１において説明したので、説明を省略する。
【００６９】
分析部Ｐａ３により、命令フォーマット中の要素が変数名又は変数用レジスタであるか否かが判断される（Ｓ３２）。そして、要素が変数用レジスタである場合には（Ｓ３３）、その変数用レジスタ内に格納された変数値が取得される（Ｓ３５）。要素が変数名である場合には（Ｓ３３）、その変数名に対応する変数用レジスタの情報が取得され（Ｓ３４）、その変数用レジスタ内に格納された変数値が取得される（Ｓ３５）。
【００７０】
なお、変数名又は変数用レジスタであるか否かの判断と同様に、分析部Ｐａ３により、命令フォーマット中の要素がコメント又はコメント用レジスタであるか否かが判断されてもよい。この場合、要素がコメント用レジスタである場合には、そのコメント用レジスタ内に格納されたコメントが取得される。要素がコメントである場合には、そのコメントに対応するコメント用レジスタの情報が取得され、そのコメント用レジスタ内に格納されたコメントが取得される。要素がコメントであるか否かについては、コメント用タグが付加されているか否かに基いて判断してもよいし、データベースＤＢと照合してデータベースＤＢ内のいずれのデータとも整合しない場合にコメントであると判断してもよい。
【００７１】
分析部Ｐａ３により、分析した結果としてのコマンド情報、変数名情報、変数用レジスタ情報、変数値情報が表示部Ｐａ１へと送信される。表示部Ｐａ１は、ウォッチウィンドウ１３内に分析部Ｐａ３から受け取った変数名情報、変数用レジスタ情報、変数値情報、コメント情報を表示する（Ｓ３６）。このとき、表示部Ｐａ１は、変数欄１３ａ内に変数名情報又は変数用レジスタ情報を表示し、変数値欄１３ｂに変数値情報を表示し、コメント欄１３ｃにコメント情報を表示する。
【００７２】
なお、本発明の実施形態では、開発支援装置としてのコンピュータがプログラマブルコントローラに接続された事例について説明したが、プログラマブルコントローラに替えて、マシンコントローラに接続されたものであっても構わない。以上、本発明の好ましい実施の形態を説明したが、本発明はこれらに限定されるものではなく、その要旨の範囲内で様々な変形や変更が可能である。
【符号の説明】
【００７３】
コンピュータ（開発支援装置）：１
画面：１ａ
ＣＰＵ：１ｂ
メモリ：１ｃ
プログラマブルロジックコントローラ（ＰＬＣ）：２
サーボ制御装置：３
サーボモータ（制御対象）：４
素子：１１
スイッチ：１１ａ，１１ｇ，１１ｈ
スイッチ１１ａにおける変数：１１ｂ
変数用レジスタ：１１ｃ
格納処理：１１ｄ
格納処理１１ｄにおける変数：１１ｅ
変数用レジスタ：１１ｆ
ＥＸＰＲＥＳＳＩＯＮウィンドウ：１２
ウォッチウィンドウ：１３
変数欄：１３ａ
変数値欄：１３ｂ
コメント欄：１３ｃ
空欄：１４
行番号：２１
ソースコード：２２
データベース：ＤＢ
制御プログラム：Ｐ
ラダープログラム：Ｐ１
モーションプログラム：Ｐ２
開発支援プログラム：Ｐａ
表示部：Ｐａ１
選択部：Ｐａ２
分析部：Ｐａ３
状態判断部：Ｐａ４
【図１】
2014064830.tif 000003
【図２】
2014064830.tif 000004
【図３】
2014064830.tif 000005
【図４】
2014064830.tif 000006
【図５Ａ】
2014064830.tif 000007
【図５Ｂ】
2014064830.tif 000008
【図６】
2014064830.tif 000009
【図７】
2014064830.tif 000010
【図８Ａ】
2014064830.tif 000011
【図８Ｂ】
2014064830.tif 000012
【手続補正書】
【提出日】平成28年6月28日(2016.6.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
表示画面を有し、制御対象を制御するためのコントローラに接続され、所定のプログラム言語によって記述されて前記コントローラに格納される制御プログラムを開発支援する開発支援装置であって、
前記制御対象の動作制御又は演算処理を実行するための制御コマンド情報、前記動作制御又は演算処理に用いられる変数名情報、及び、該変数名に対応する変数の現在値が格納される変数用レジスタ情報が相互に関連付けられて構築されたデータベースと、
前記制御プログラム内の情報であって、前記制御コマンド情報、前記変数名情報、及び、前記変数用レジスタ情報のうち少なくとも１種類以上の情報を含む情報をユーザによる選択操作に基づき選択情報として取得する選択部と、
前記選択部により取得された前記選択情報を前記データベースに基づき情報の種類ごとに分析すると共に、前記変数名情報又は前記変数用レジスタ情報に基づき前記変数の現在値を取得する分析部と、
前記分析部によって分析された前記選択情報を前記情報の種類ごとに前記表示画面に表示すると共に、前記分析部によって取得された前記変数の現在値を前記表示画面に表示する表示部と、を有し、
前記分析部は、
前記選択部により取得された前記選択情報が前記制御コマンド情報を含む場合に、該制御コマンド情報がテキスト情報であるか否かを判別し、該選択情報がテキスト情報である場合に、該選択情報を前記制御プログラムの１行の記述ごとに前記選択情報を分析する、開発支援装置。
【請求項２】
前記選択部は、前記ユーザによる選択操作が同一の情報を所定時間以上継続して選択するものでない場合に、該情報を選択情報として取得しない、請求項１に記載の開発支援装置。
【請求項３】
前記所定のプログラム言語は、ラダー言語、及び、プログラム言語のうち少なくともいずれか一方である、請求項１又は請求項２に記載の開発支援装置。
【請求項４】
前記制御コマンド情報ごとに、該制御コマンドに関連するデータの配列を規定する規定リストである命令フォーマットを更に有し、
前記分析部は、
前記選択部により取得された前記選択情報を前記命令フォーマットに基づき情報の種類ごとに分析する、請求項１から請求項３のうちいずれか１項に記載の開発支援装置。
【請求項５】
前記制御プログラムがコンパイル処理済みであるか否かを判断する状態判断部、を更に有する請求項１から請求項４に記載の開発支援装置。
【請求項６】
前記状態判断部が、
前記制御プログラムが実行中であるか否かを更に判断する、請求項５に記載の開発支援装置。
【請求項７】
制御対象を制御するためのコントローラに接続されたコンピュータを、
所定のプログラム言語によって記述されて前記コントローラに格納される制御プログラム内の情報であって、前記制御コマンド情報、前記変数名情報、及び、前記変数用レジスタ情報のうち少なくとも１種類以上の情報をユーザによる選択操作に基づき選択情報として取得する選択部、
前記選択部により取得された前記選択情報を前記制御対象の動作制御又は演算処理を実行するための制御コマンド情報、前記動作制御又は演算処理に用いられる変数名情報、及び、該変数名に対応する変数の現在値が格納される変数用レジスタ情報が相互に関連付けられて構築されたデータベースに基づき情報の種類ごとに分析すると共に、前記変数名情報又は前記変数用レジスタ情報に基づき前記変数の現在値を取得する分析部、及び、
前記分析部によって分析された前記選択情報を前記情報の種類ごとに前記コンピュータの表示画面に表示すると共に、前記分析部によって取得された前記変数の現在値を前記表示画面に表示する表示部、として機能させ、
前記分析部は、
前記選択部により取得された前記選択情報が前記制御コマンド情報を含む場合に、該制御コマンド情報がテキスト情報であるか否かを判別し、該選択情報がテキスト情報である場合に、該選択情報を前記制御プログラムの１行の記述ごとに前記選択情報を分析する、開発支援プログラム。
【国際調査報告】
2014064830.tif 000013
2014064830.tif 000014
2014064830.tif 000015
2014064830.tif 000016