(57)【要約】【課題】シーケンスプログラムとＮＣプログラムとを含むプログラム全体を容易に把握する。【解決手段】ツール（１０）は、同期させて実行されるべきシーケンスプログラムとＮＣプログラムとを編集可能に一画面中に表示する表示制御部（１２０）を備えている。【選択図】図１
2018194898.tif 000002
【特許請求の範囲】
【請求項１】
産業用制御装置で実行されるユーザプログラムの作成を支援する支援装置であって、
同期させて実行されるべきシーケンスプログラムとＮＣプログラムとに係るユーザのプログラミング操作を受け付ける受付部と、
前記受付部により受け付けられた前記プログラミング操作に従って、前記ユーザプログラムとして、前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する表示制御部と、を備えることを特徴とする支援装置。
【請求項２】
前記表示制御部によって表示された前記ユーザプログラムをビルドする際に、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムを退避させ、（Ｂ）前記ユーザプログラム中の、退避した前記ＮＣプログラムがあった位置に、退避した前記ＮＣプログラムを呼び出すファンクションブロックであって、退避した前記ＮＣプログラムに対応する識別子を付与したファンクションブロックを、挿入するプログラム処理部をさらに備えることを特徴とする請求項１に記載の支援装置。
【請求項３】
前記表示制御部は、前記シーケンスプログラムから前記ＮＣプログラムを区別するための情報を付した前記ＮＣプログラムを、前記シーケンスプログラムと共に、編集可能に一画面中に表示することを特徴とする請求項１または２に記載の支援装置。
【請求項４】
前記表示制御部は、ラダーダイアグラムおよびファンクションブロックダイアグラムの少なくとも一方でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムを編集可能な領域を表示することを特徴とする請求項１から３のいずれか１項に記載の支援装置。
【請求項５】
前記表示制御部は、ストラクチャードテキストでプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムの開始および終了を示すプラグマを表示し、表示した前記開始および前記終了を示すプラグマの間に前記ＮＣプログラムを編集可能に表示することを特徴とする請求項１から４のいずれか１項に記載の支援装置。
【請求項６】
前記表示制御部は、シーケンシャルファンクションチャートでプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムであることを示す属性を付したアクションであって、前記ＮＣプログラムを含むアクションを、編集可能に表示することを特徴とする請求項１から５のいずれか１項に記載の支援装置。
【請求項７】
前記シーケンスプログラムと前記ＮＣプログラムとを、前記シーケンスプログラムと前記ＮＣプログラムとを同期させて実行する１台の産業用制御装置に転送するプログラム転送部をさらに備えることを特徴とする請求項１から６のいずれか１項に記載の支援装置。
【請求項８】
前記表示制御部は、前記ユーザプログラム中の前記ＮＣプログラムを一覧表示することを特徴とする請求項１から７のいずれか１項に記載の支援装置。
【請求項９】
前記表示制御部は、前記ユーザプログラム中の前記ＮＣプログラムを、前記ユーザプログラムを編集可能に表示した画面とは異なる画面に、編集可能に拡大表示することを特徴とする請求項１から８のいずれか１項に記載の支援装置。
【請求項１０】
前記表示制御部は、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムのプログラム名および内容の少なくとも一方と、（Ｂ）前記ユーザプログラムまたは前記シーケンスプログラムのプログラム名、および、前記ＮＣプログラムを呼び出すＦＢの識別情報の少なくとも一方と、を対応付けて表示することを特徴とする請求項１から９のいずれか１項に記載の支援装置。
【請求項１１】
産業用制御装置で実行されるユーザプログラムの作成を支援する支援装置の制御方法であって、
同期させて実行されるべきシーケンスプログラムとＮＣプログラムとに係るユーザのプログラミング操作を受け付ける受付ステップと、
前記受付ステップにて受け付けた前記プログラミング操作に従って、前記ユーザプログラムとして、前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する表示制御ステップと、を含むことを特徴とする制御方法。
【請求項１２】
請求項１から１０のいずれか１項に記載の支援装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項１３】
請求項１２に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、産業用制御装置で実行されるユーザプログラムの作成を支援する支援装置等に関する。
【背景技術】
【０００２】
従来、プログラマブルコントローラ（Programmable Logic Controller、以下「ＰＬＣ」と略記する）等の産業用制御装置を使用した制御システムの開発を支援するための開発支援装置が知られている。例えば、下掲の特許文献１には、ＰＬＣ（Programmable Logic Controller）などのシーケンス制御装置において実行されるシーケンスプログラムと、数値制御装置において実行されるＮＣ（Numerical Control、数値制御）プログラムと、を効率的にプログラミングするための発明が開示されている。
【０００３】
図１９は、特許文献１の発明等を含む、従来の開発システム９の全体概要を示す図である。図１９に示すように、従来の開発システム９は、ＰＬＣ等のシーケンス制御装置であるＩＥＣコントローラ９２０と、数値制御装置であるＮＣコントローラ９３０と、ＦＡ（Factory Automation）開発環境を提供するツール９００と、を含んでいる。ＩＥＣコントローラ９２０は、ＩＥＣプログラム（すなわち、シーケンスプログラム）を実行してシーケンス制御を行なうシーケンス制御エンジン９２１を備えている。ＮＣコントローラ９３０は、ＮＣプログラムを実行して数値制御を行なう数値制御エンジン９３１を備えている。言い換えれば、従来の開発システム９において、ＩＥＣプログラムとＮＣプログラムとは各々、別々のコントローラによって、すなわち、ＩＥＣコントローラ９２０およびＮＣコントローラ９３０によって、実行される。なお、ＩＥＣプログラムとは、ＩＥＣ（International Electrotechnical Commission）６１１３１‐３に準拠したシーケンスプログラムを指す。
【０００４】
ツール９００は、ＩＥＣコントローラ９２０において実行されるＩＥＣプログラムの作成編集、コンパイル、および、転送ための機能部として、ＩＥＣプログラムエディタ９０１と、ＩＥＣプログラム処理部９０３と、ＩＥＣプログラム転送部９０４と、を含む。ＩＥＣプログラムエディタ９０１は、ソースコードとしてのＩＥＣプログラム９０２をユーザが作成・編集するための機能を提供する。ＩＥＣプログラム処理部９０３は、ユーザが作成・編集したＩＥＣプログラム９０２をコンパイルする。ＩＥＣプログラム転送部９０４は、ＩＥＣプログラム処理部９０３によってコンパイルされたＩＥＣプログラム９０２をＩＥＣコントローラ９２０に転送する。
【０００５】
また、ツール９００は、ＮＣコントローラ９３０において実行されるＮＣプログラムの作成編集、コンパイル、および、転送のための機能部として、ＮＣプログラムエディタ９１１と、ＮＣプログラム処理部９１３と、ＮＣプログラム転送部９１４と、を含む。ＮＣプログラムエディタ９１１は、ソースコードとしてのＮＣプログラム９１２をユーザが作成・編集するための機能を提供する。ＮＣプログラム処理部９１３は、ユーザが作成・編集したＮＣプログラム９１２をコンパイルする。ＮＣプログラム転送部９１４は、ＮＣプログラム処理部９１３によってコンパイルされたＮＣプログラム９１２をＮＣコントローラ９３０に転送する。
【０００６】
図１９に示すように、ツール９００において、ＩＥＣプログラム９０２およびＮＣプログラム９１２をユーザが作成・編集するための機能は、各々、ＩＥＣプログラムエディタ９０１とＮＣプログラムエディタ９１１とに分かれている。言い換えれば、ＩＥＣプログラム９０２およびＮＣプログラム９１２は、各々、別々のエディタで作成・編集され、つまり、ＩＥＣプログラムエディタ９０１およびＮＣプログラムエディタ９１１で作成・編集される。ツール９００において、ＩＥＣプログラム９０２およびＮＣプログラム９１２は、各々、別々のコントローラに、つまり、ＩＥＣコントローラ９２０およびＮＣコントローラ９３０に、転送される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−９９１１７号公報（２０００年４月７日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図１９に示すように、従来の開発システム９におけるツール９００は、ＩＥＣプログラム９０２およびＮＣプログラム９１２をユーザが作成・編集するための機能は、各々、ＩＥＣプログラムエディタ９０１とＮＣプログラムエディタ９１１とに分かれている。
【０００９】
したがって、上述のような従来技術は、同期させて実行されるべきシーケンスプログラム（ＩＥＣプログラム）とＮＣプログラムとをユーザが同じ画面で同時に確認することができないという問題がある。言い換えれば、上述のような従来技術は、シーケンスプログラムとＮＣプログラムとを含む全てのプログラム（ユーザプログラム）をユーザが見通すことが困難であり、ユーザのプログラミング効率が低下するという問題がある。
【００１０】
本発明の一態様は、ユーザが、シーケンスプログラムとＮＣプログラムとを含むユーザプログラムの全体を容易に把握することができ、ユーザのプログラミング効率を向上させることの可能なプログラム開発環境等を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明の一態様に係る支援装置は、産業用制御装置で実行されるユーザプログラムの作成を支援する支援装置であって、同期させて実行されるべきシーケンスプログラムとＮＣプログラムとに係るユーザのプログラミング操作を受け付ける受付部と、前記受付部により受け付けられた前記プログラミング操作に従って、前記ユーザプログラムとして、前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する表示制御部と、を備えることを特徴としている。
【００１２】
前記の構成によれば、前記支援装置は、同期させて実行されるべき前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する。
【００１３】
したがって、前記支援装置は、ユーザが、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムの全体を容易に把握することを可能とし、ユーザのプログラミング効率を向上させることができるという効果を奏する。ユーザは、前記支援装置を用いて、前記シーケンスプログラムと前記ＮＣプログラムとを一画面中で作成・編集することができ、つまり、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムを効率的にプログラミングすることができる。
【００１４】
本発明に係る支援装置は、前記表示制御部によって表示された前記ユーザプログラムをビルドする際に、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムを退避させ、（Ｂ）前記ユーザプログラム中の、退避した前記ＮＣプログラムがあった位置に、退避した前記ＮＣプログラムを呼び出すファンクションブロックであって、退避した前記ＮＣプログラムに対応する識別子を付与したファンクションブロックを、挿入するプログラム処理部をさらに備えてもよい。
【００１５】
前記の構成によれば、前記支援装置は、同期させて実行されるべき前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムをビルドする際に、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムを退避させ、（Ｂ）前記ユーザプログラム中の、退避した前記ＮＣプログラムがあった位置に、退避した前記ＮＣプログラムを呼び出すファンクションブロックであって、退避した前記ＮＣプログラムに対応する識別子を付与したファンクションブロックを、挿入する。つまり、退避した前記ＮＣプログラムを呼び出す前記ファンクションブロックが挿入された後の前記ユーザプログラムは、前記ＮＣプログラムを含んでおらず、前記シーケンスプログラムのみより成る。
【００１６】
そのため、前記支援装置は、「シーケンスプログラムのみを処理可能な従来までのエディタ」に、「退避した前記ＮＣプログラムを呼び出す前記ファンクションブロックが挿入された後の前記ユーザプログラム」を処理させることができる。言い換えれば、前記支援装置は、「退避した前記ＮＣプログラムを呼び出す前記ファンクションブロックが挿入された後の前記ユーザプログラム」に対する処理に、前記従来までのエディタの備える構成を利用することができる。
【００１７】
そのため、前記支援装置は、「シーケンスプログラムのみを処理可能な従来までのエディタ」の構成を利用して、「前記ＮＣプログラムを退避し、代わりに、前記ＮＣプログラムを呼び出す前記ＦＢを挿入した前記ユーザプログラム」を処理することができる。言い換えれば、前記支援装置は、「前記ＮＣプログラムを退避し、代わりに、前記ＮＣプログラムを呼び出す前記ＦＢを挿入した前記ユーザプログラム」に対する処理に、前記従来までのエディタの備える構成を利用することができる。例えば、前記支援装置は、前記従来までの構成を利用して、「前記ＮＣプログラムを退避し、代わりに、前記ＮＣプログラムを呼び出す前記ＦＢを挿入した前記ユーザプログラム」のビルド、および、ビルドしたプログラムの前記産業用制御装置への転送等の処理を実行することができる。
【００１８】
したがって、前記支援装置は、「シーケンスプログラムのみを処理可能な従来までのエディタ」の構成を利用することができ、前記支援装置を実現するためのコストを抑制することができるという効果を奏する。
【００１９】
また、前記支援装置は、「ＮＣプログラムのみを処理可能な従来までのエディタ」の構成を利用して、「前記ユーザプログラムから退避させた前記ＮＣプログラム」を処理することができる。言い換えれば、前記支援装置は、「前記ユーザプログラム中から退避させた前記ＮＣプログラム」に対する処理に、前記従来までのエディタの備える構成を利用することができる。例えば、前記支援装置は、前記従来までの構成を利用して、「前記ユーザプログラム中から退避させた前記ＮＣプログラム」のビルド、および、ビルドしたプログラムの前記産業用制御装置への転送等の処理を実行することができる。
【００２０】
したがって、前記支援装置は、「ＮＣプログラムのみを処理可能な従来までのエディタ」の構成を利用することができ、前記支援装置を実現するためのコストを抑制することができるという効果を奏する。
【００２１】
本発明に係る支援装置において、前記表示制御部は、前記シーケンスプログラムから前記ＮＣプログラムを区別するための情報を付した前記ＮＣプログラムを、前記シーケンスプログラムと共に、編集可能に一画面中に表示してもよい。
【００２２】
前記の構成によれば、前記支援装置は、前記シーケンスプログラムから前記ＮＣプログラムを区別するための情報を付した前記ＮＣプログラムを、前記シーケンスプログラムと共に、編集可能に一画面中に表示する。
【００２３】
したがって、前記支援装置は、ユーザが、「前記一画面において編集可能に表示されている前記ユーザプログラムから、前記シーケンスプログラムと前記ＮＣプログラムとを容易に判別する」ことを可能にするとの効果を奏する。
【００２４】
また、前記の構成によれば、前記支援装置は、「前記ＮＣプログラムを前記シーケンスプログラムから区別するための情報」に基づいて、前記ユーザプログラムについて、前記シーケンスプログラムと前記ＮＣプログラムとを容易に判別することができるという効果を奏する。
【００２５】
本発明に係る支援装置において、前記表示制御部は、ラダーダイアグラムおよびファンクションブロックダイアグラムの少なくとも一方でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムを編集可能な領域を表示してもよい。
【００２６】
前記の構成によれば、前記支援装置は、前記ラダーダイアグラム（ＬＤ）および前記ファンクションブロックダイアグラム（ＦＢＤ）の少なくとも一方でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムを編集可能な領域を表示する。
【００２７】
ここで、前記ＬＤおよび前記ＦＢＤは、各々、前記シーケンスプログラムのために一般的に利用されているプログラミング言語であり、ユーザにとって使い慣れたプログラミング言語である。
【００２８】
したがって、前記支援装置は、前記ＬＤおよび前記ＦＢＤで前記シーケンスプログラムをプログラミングしつつ、前記シーケンスプログラム中に前記ＮＣプログラムをプログラミングすることのできる環境をユーザに提供することができるとの効果を奏する。
【００２９】
本発明に係る支援装置において、前記表示制御部は、ストラクチャードテキストでプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムの開始および終了を示すプラグマを表示し、表示した前記開始および前記終了を示すプラグマの間に前記ＮＣプログラムを編集可能に表示してもよい。
【００３０】
前記の構成によれば、前記支援装置は、前記ストラクチャードテキスト（ＳＴ）でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムの開始および終了を示すプラグマを表示し、表示した前記開始および前記終了を示すプラグマの間に前記ＮＣプログラムを編集可能に表示する。
【００３１】
ここで、前記ＳＴは、前記シーケンスプログラムのために一般的に利用されているプログラミング言語であり、ユーザにとって使い慣れたプログラミング言語である。
【００３２】
したがって、前記支援装置は、前記ＳＴで前記シーケンスプログラムをプログラミングしつつ、前記シーケンスプログラム中に前記ＮＣプログラムをプログラミングすることのできる環境をユーザに提供することができるとの効果を奏する。
【００３３】
本発明に係る支援装置において、前記表示制御部は、シーケンシャルファンクションチャートでプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムであることを示す属性を付したアクションであって、前記ＮＣプログラムを含むアクションを、編集可能に表示してもよい。
【００３４】
前記の構成によれば、前記支援装置は、前記シーケンシャルファンクションチャート（ＳＦＣ）でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムであることを示す属性を付したアクションであって、前記ＮＣプログラムを含むアクションを、編集可能に表示する。
【００３５】
ここで、前記ＳＦＣは、前記シーケンスプログラムのために一般的に利用されているプログラミング言語であり、ユーザにとって使い慣れたプログラミング言語である。
【００３６】
したがって、前記支援装置は、前記ＳＦＣで前記シーケンスプログラムをプログラミングしつつ、前記シーケンスプログラム中に前記ＮＣプログラムをプログラミングすることのできる環境をユーザに提供することができるとの効果を奏する。
【００３７】
本発明に係る支援装置は、前記シーケンスプログラムと前記ＮＣプログラムとを、前記シーケンスプログラムと前記ＮＣプログラムとを同期させて実行する１台の産業用制御装置に転送するプログラム転送部をさらに備えてもよい。
【００３８】
前記の構成によれば、前記支援装置は、前記シーケンスプログラムと前記ＮＣプログラムとを、前記シーケンスプログラムと前記ＮＣプログラムとを同期させて実行する１台の産業用制御装置に転送する。
【００３９】
したがって、前記支援装置は、自装置を用いてユーザによりプログラミングされた前記シーケンスプログラムと前記ＮＣプログラムとを前記１台の産業用制御装置により、同期させて実行させることができるという効果を奏する。
【００４０】
本発明に係る支援装置において、前記表示制御部は、前記ユーザプログラム中の前記ＮＣプログラムを一覧表示してもよい。
【００４１】
前記の構成によれば、前記支援装置は、前記ユーザプログラム中の前記ＮＣプログラムを一覧表示する。
【００４２】
したがって、前記支援装置は、例えば、１つの前記ユーザプログラム中に複数の前記ＮＣプログラムが散在している場合であっても、前記ユーザプログラム中に散在する複数の前記ＮＣプログラムを一覧表示し可読性を向上させることができるという効果を奏する。
【００４３】
本発明に係る支援装置において、前記表示制御部は、前記ユーザプログラム中の前記ＮＣプログラムを、前記ユーザプログラムを編集可能に表示した画面とは異なる画面に、編集可能に拡大表示してもよい。
【００４４】
前記の構成によれば、前記支援装置は、前記ユーザプログラム中の前記ＮＣプログラムを、前記ユーザプログラムを編集可能に表示した画面とは異なる画面に、編集可能に拡大表示する。つまり、前記支援装置は、前記ユーザプログラム中でプログラミング中の前記ＮＣプログラムを別のエディタビューで拡大表示することができる。
【００４５】
したがって、前記支援装置は、前記ＮＣプログラムの可読性が低下するのを防ぎ、前記ＮＣプログラムをユーザが効率的にプログラミングすることのできる環境を提供することができるという効果を奏する。
【００４６】
本発明に係る支援装置において、前記表示制御部は、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムのプログラム名および内容の少なくとも一方と、（Ｂ）前記ユーザプログラムまたは前記シーケンスプログラムのプログラム名、および、前記ＮＣプログラムを呼び出すＦＢの識別情報の少なくとも一方と、を対応付けて表示してもよい。
【００４７】
前記の構成によれば、前記支援装置は、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムのプログラム名および内容の少なくとも一方と、（Ｂ）前記ユーザプログラムまたは前記シーケンスプログラムのプログラム名、および、前記ＮＣプログラムを呼び出すファンクションブロックの識別情報の少なくとも一方と、を対応付けて表示する。
【００４８】
したがって、前記支援装置は、例えば、複数の前記ユーザプログラムの各々に、複数の前記ＮＣプログラムが散在している場合であっても、複数の前記ＮＣプログラムの各々が存在している前記ユーザプログラムまたは前記シーケンスプログラムをユーザが容易に確認することを可能とするという効果を奏する。
【００４９】
上記の課題を解決するために、本発明に係る制御方法は、産業用制御装置で実行されるユーザプログラムの作成を支援する支援装置の制御方法であって、同期させて実行されるべきシーケンスプログラムとＮＣプログラムとに係るユーザのプログラミング操作を受け付ける受付ステップと、前記受付ステップにて受け付けた前記プログラミング操作に従って、前記ユーザプログラムとして、前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する表示制御ステップと、を含むことを特徴としている。
【００５０】
前記の方法によれば、前記制御方法は、同期させて実行されるべき前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する。
【００５１】
したがって、前記制御方法は、ユーザが、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムの全体を容易に把握することを可能とし、ユーザのプログラミング効率を向上させることができるという効果を奏する。ユーザは、前記制御方法を実行するエディタ（プログラミング支援装置）を用いて、前記シーケンスプログラムと前記ＮＣプログラムとを一画面中で作成・編集することができる。つまり、ユーザは、前記制御方法を実行するエディタを用いて、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムを効率的にプログラミングすることができる。
【発明の効果】
【００５２】
本発明の一態様によれば、ユーザが、シーケンスプログラムとＮＣプログラムとを含むユーザプログラムの全体を容易に把握することができ、ユーザのプログラミング効率を向上させることができるとの効果を奏する。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施形態１に係るツールの要部構成等を示すブロック図である。
【図２】図１のツールを含む開発システムの全体概要を示す図である。
【図３】図１のツールにおいて、ユーザプログラムを構成する要素のデータ構造の一例を示す図面である。
【図４】対応管理情報、置き替え元のＮＣプログラム、および、置き替え先のＦＢ（ＮＣ呼出）の一例を示す図である。
【図５】ＬＤプログラムまたはＦＢＤプログラム中でＮＣプログラムを作成・編集する例を示す図である。
【図６】ＳＴプログラム中でＮＣプログラムを作成・編集する例を示す図である。
【図７】ＳＦＣプログラム中でＮＣプログラムを作成・編集する例を示す図である。
【図８】ＮＣプログラムを含むＬＤプログラムに対して図１のツールが実行する処理の概要を示すフロー図である。
【図９】ＮＣプログラムを含むＳＴプログラムに対して図１のツールが実行する処理の概要を示すフロー図である。
【図１０】ＮＣプログラムを含むＳＦＣプログラムに対して図１のツールが実行する処理の概要を示すフロー図である。
【図１１】図８〜１０に示した処理の後に図１のツールが実行する処理の概要を示すフロー図である。
【図１２】ユーザプログラム中のＮＣプログラムを「ＦＢ（ＮＣ呼出）」に置き換える一例を示す図である。
【図１３】図１のツールの備える「ＮＣプログラム一覧表示機能」の概要を説明するための図である。
【図１４】「ＮＣプログラム一覧表示機能」を実行する図１のツールの処理の一例を示すフロー図である。
【図１５】図１のツールの備える「ＮＣプログラム拡大表示機能」の概要を説明するための図である。
【図１６】「ＮＣプログラム拡大表示機能」を実行する図１のツールの処理の一例を示すフロー図である。
【図１７】図１のツールの備える「ＩＥＣ-ＮＣプログラムテーブル表示機能」の概要を説明するための図である。
【図１８】「ＩＥＣ-ＮＣプログラムテーブル表示機能」を実行する図１のツールの処理の一例を示すフロー図である。
【図１９】従来の開発システムの全体概要を示す図である。
【発明を実施するための形態】
【００５４】
〔実施形態１〕
以下、本発明の実施形態１について、図１から図１８に基づいて詳細に説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。本発明の一態様に係るツール１０に係る理解を容易にするため、先ず、ツール１０を含む開発システム１の概要を、図２を用いて説明する。
【００５５】
ツール１０は、ユーザが制御目的（たとえば、対象のラインおよびプロセス）に応じてコントローラ２０に実行させる制御プログラムとしてのユーザプログラムをプログラミングするための環境を提供するプログラミング支援装置である。ツール１０は、エディタ、プログラミングエディタと呼ばれることもある。ツール１０の提供するプログラミング支援環境においてユーザがプログラミングするユーザプログラムは、シーケンスプログラムとＮＣ（Numeral Control、数値制御）プログラムとを含んでいる。
【００５６】
なお、以下では、ツール１０の提供するプログラミング支援環境において、ユーザがシーケンスプログラム中にＮＣプログラムを組み込む例を説明する。すなわち、以下に説明するユーザプログラムは、シーケンスプログラム中にＮＣプログラムがプログラミングされたユーザプログラムである。
【００５７】
しかしながら、ユーザは、ツール１０を利用することによって、ＮＣプログラム中にシーケンスプログラムを組み込むこともできる。すなわち、ツール１０は、シーケンスプログラムとＮＣプログラムとを一画面中に編集可能に表示すればよい。ツール１０は、シーケンスプログラムを編集するための画面内にＮＣプログラムを編集するための領域を設けてもよいし、ＮＣプログラムを編集するための画面内にシーケンスプログラムを編集するための領域を設けてもよい。ツール１０は、シーケンスプログラムを編集するための画面内にＮＣプログラムを編集するための領域を設けることにより、主としてシーケンスプログラムをプログラミングするユーザにとって利用しやすい開発環境を提供することができる。また、ツール１０は、ＮＣプログラムを編集するための画面内にシーケンスプログラムを編集するための領域を設けることにより、主としてＮＣプログラムをプログラミングするユーザにとって利用しやすい開発環境を提供することができる。
【００５８】
以下の説明において、「シーケンスプログラム」は、例えば、ＩＥＣ（International Electrotechnical Commission）６１１３１‐３に準拠したシーケンスプログラムであり、「ＩＥＣプログラム」と称することがある。また、「ＮＣプログラム」は、ＮＣ工作機械といった数値制御装置等により実行され、「ＣＮＣ（Computer Numerical Control）プログラム」、「数値制御加工プログラム」、「数値制御プログラム」、または「加工プログラム」と称することがある。
【００５９】
（開発システムの概要）
図２は、ツール１０を含む開発システム１の全体概要を示す図である。図２に例示する開発システム１は、数値制御およびシーケンス制御のための総合開発環境を提供するツール１０と、ツール１０を利用して作成・編集されたプログラムを実行して数値制御およびシーケンス制御を同期させて実行するコントローラ２０と、を含む。
【００６０】
コントローラ２０は、シーケンスプログラムとＮＣプログラムとを同期させて実行することのできる制御装置であり、シーケンス制御エンジン２１と、数値制御エンジン２２と、を備えている。言い換えれば、シーケンス制御エンジン２１がシーケンスプログラムを実行して行なうシーケンス制御と、数値制御エンジン２２がＮＣプログラムを実行して行なう数値制御と、が１台のコントローラ２０において統合されている。
【００６１】
図１９に例示したように、従来の開発システム９において、ＩＥＣプログラムとＮＣプログラムとは各々、別々のコントローラによって実行されていた。つまり、図１９に示す従来の開発システム９においては、ＩＥＣプログラムとＮＣプログラムとは、各々、別々のコントローラにおいて実行され、そのため、別々のツール上で処理されていた。ＩＥＣプログラムとＮＣプログラムとの開発環境を統合するためには、ＩＥＣプログラムとＮＣプログラムとを実行するコントローラの統合が先に必要となる。
【００６２】
これに対して、図２に例示する開発システム１において、シーケンスプログラムおよびＮＣプログラムは、コントローラ２０の内部で相互に連携したシーケンス制御エンジン２１および数値制御エンジン２２により実行される。
【００６３】
ツール１０は、コントローラ２０で実行されるユーザプログラムおよび設定情報を生成する。言い換えれば、ツール１０は、コントローラ２０の開発環境を提供する装置であり、ユーザが、制御目的（たとえば、対象のラインおよびプロセス）に応じてユーザプログラムを作成する（作成・編集する）ための環境を提供する装置である。ユーザは、ツール１０の提供する開発環境（プログラミングツール）を用いて、コントローラ２０で実行させる制御プログラム（ユーザプログラム）のプログラムコードを作成する。ツール１０は、コントローラ２０で実行させる制御プログラムをユーザが作成・編集するのを支援するため、デバック機能およびシミュレーション機能を有していてもよい。ツール１０は、コントローラ２０の運転状態、および各種データの値などを監視してもよく、さらに、コントローラ２０のシミュレータであってもよい。すなわち、ツール１０は、コントローラ２０のプログラミング、コンフィグレーション（構成設定）、デバッグ、メンテナンス、モニタリング機能の他、３Ｄモーションシミュレーションにも対応した統合開発環境を提供する装置であってもよい。
【００６４】
ツール１０は、例えば、不図示のＤＶＤ−ＲＯＭ等に格納されたプログラム（実行処理プログラム）を実行するパーソナルコンピュータによって、前記の機能を実現する。また、ツール１０は、前記ＤＶＤ−ＲＯＭに格納されたプログラムと同様のプログラムを上位のホストコンピュータなどからネットワークを通じてダウンロードして該プログラムを実行するパーソナルコンピュータによって、前記の機能を実現するように構成してもよい。
【００６５】
図２に示すように、ツール１０は、シーケンスプログラムとＮＣプログラムとを含むユーザプログラムを、ユーザが作成・編集することの可能な開発環境を提供する。ツール１０は、例えば、シーケンスプログラムのための編集画面内に、ＮＣプログラムをプログラミングすることの可能な領域を設ける。ツール１０は、ユーザにより作成、編集されたシーケンスプログラムとＮＣプログラムとをコンパイルしてコントローラ２０に転送する。
【００６６】
従来、図１９に示すように、従来の開発システム９においては、ＩＥＣプログラム９０２およびＮＣプログラム９１２は、各々、ＩＥＣプログラムエディタ９０１とＮＣプログラムエディタ９１１とで開発され、つまり、作成・編集されていた。従来の開発システム９のツール９００においては、ＩＥＣプログラム９０２およびＮＣプログラム９１２の各々の呼び出しは明示的にはされず、システム設定上で行われていた。つまり、ツール９００において、ＩＥＣプログラム９０２をプログラミングするための画面と、ＮＣプログラム９１２をプログラミングするための画面と、は別々の画面であり、両方のプログラムを同じ画面でプログラミングすることはできなかった。そのため、ユーザ（＝開発者）は、ＩＥＣプログラムエディタ９０１とＮＣプログラムエディタ９１１とを含むユーザプログラムを一度に見通すことができないという問題があった。
【００６７】
図２に例示する開発システム１において、ツール１０は、例えば、「ユーザが、シーケンスプログラム内にＮＣプログラムを埋め込んでプログラミングを行なう」ことのできる環境を提供する。言い換えれば、ツール１０は、シーケンスプログラムとＮＣプログラムとを統合してプログラミングすることのできる環境を提供する。ツール１０の提供するプログラミング環境において、ユーザは、シーケンスプログラムのプログラミングと、ＮＣプログラムのプログラミングと、を同一の画面で行なうことができる。
【００６８】
したがって、ツール１０によって、ユーザは、複数の画面を行き来することなく、シーケンスプログラムとＮＣプログラムとをプログラミングすることができ、また、シーケンスプログラムとＮＣプログラムとの間のつながりを容易に把握することができる。また、ツール１０によって、ユーザは、シーケンスプログラムとＮＣプログラムとのプログラミングを行なうときに、ＧＵＩ操作等のプログラミング以外のユーザ操作を行なう必要がなく、プログラミングに集中することができるため、開発効率の向上につながる。
【００６９】
（ツールの概要）
これまで、開発システム１、および、開発システム１に含まれる装置（ツール１０およびコントローラ２０）の概要について、図２を用いて説明を行ってきた。次に、開発システム１に含まれるツール１０について、その構成および処理の内容等を、図１等を用いて説明していく。図１を参照してツール１０の詳細について説明する前に、ツール１０についての理解を容易にするため、ツール１０の概要について以下のように整理しておく。
【００７０】
ツール１０（支援装置）は、コントローラ２０（産業用制御装置）で実行されるユーザプログラムの作成を支援する支援装置であって、同期させて実行されるべきシーケンスプログラムとＮＣプログラムとに係るユーザのプログラミング操作を受け付ける操作受付部１１０（受付部）と、操作受付部１１０により受け付けられた前記プログラミング操作に従って、前記ユーザプログラムとして、前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する表示制御部１２０と、を備えている。
【００７１】
前記の構成によれば、ツール１０は、同期させて実行されるべき前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する。具体的には、ツール１０は、表示装置４０に、同期させて実行されるべき前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示させる。
【００７２】
したがって、ツール１０は、ユーザが、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムの全体を容易に把握することを可能とし、ユーザのプログラミング効率を向上させることができるという効果を奏する。ユーザは、ツール１０を用いて、前記シーケンスプログラムと前記ＮＣプログラムとを一画面中で作成・編集することができ、つまり、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムを効率的にプログラミングすることができる。
【００７３】
ツール１０は、表示制御部１２０によって表示された前記ユーザプログラムをビルドする際に、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムを退避させ、（Ｂ）前記ユーザプログラム中の、退避した前記ＮＣプログラムがあった位置に、退避した前記ＮＣプログラムを呼び出すファンクションブロック（ＦＢ）であって、退避した前記ＮＣプログラムに対応する識別子を付与したＦＢを、挿入するプログラム処理部１３０をさらに備えてもよい。
【００７４】
前記の構成によれば、ツール１０は、同期させて実行されるべき前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムをビルドする際に、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムを退避させ、（Ｂ）前記ユーザプログラム中の、退避した前記ＮＣプログラムがあった位置に、退避した前記ＮＣプログラムを呼び出すＦＢであって、退避した前記ＮＣプログラムに対応する識別子を付与したＦＢを、挿入する。つまり、退避した前記ＮＣプログラムを呼び出す前記ＦＢが挿入された後の前記ユーザプログラムは、前記ＮＣプログラムを含んでおらず、前記シーケンスプログラムのみより成る。
【００７５】
そのため、ツール１０は、「シーケンスプログラムのみを処理可能な従来までのエディタ」の構成を利用して、「前記ＮＣプログラムを退避し、代わりに、前記ＮＣプログラムを呼び出す前記ＦＢを挿入した前記ユーザプログラム」を処理することができる。言い換えれば、ツール１０は、「前記ＮＣプログラムを退避し、代わりに、前記ＮＣプログラムを呼び出す前記ＦＢを挿入した前記ユーザプログラム」に対する処理に、前記従来までのエディタの備える構成を利用することができる。例えば、ツール１０は、前記従来までの構成を利用して、「前記ＮＣプログラムを退避し、代わりに、前記ＮＣプログラムを呼び出す前記ＦＢを挿入した前記ユーザプログラム」のビルド、および、ビルドしたプログラムの前記産業用制御装置への転送等の処理を実行することができる。
【００７６】
したがって、ツール１０は、「シーケンスプログラムのみを処理可能な従来までのエディタ」の構成を利用することができ、ツール１０を実現するためのコストを抑制することができるという効果を奏する。
【００７７】
また、ツール１０は、「ＮＣプログラムのみを処理可能な従来までのエディタ」の構成を利用して、「前記ユーザプログラムから退避させた前記ＮＣプログラム」を処理することができる。言い換えれば、ツール１０は、「前記ユーザプログラム中から退避させた前記ＮＣプログラム」に対する処理に、前記従来までのエディタの備える構成を利用することができる。例えば、ツール１０は、前記従来までの構成を利用して、「前記ユーザプログラム中から退避させた前記ＮＣプログラム」のビルド、および、ビルドしたプログラムの前記産業用制御装置への転送等の処理を実行することができる。
【００７８】
したがって、ツール１０は、「ＮＣプログラムのみを処理可能な従来までのエディタ」の構成を利用することができ、ツール１０を実現するためのコストを抑制することができるという効果を奏する。
【００７９】
なお、ツール１０は、前記ユーザプログラム中の前記ＮＣプログラムについて、前記ＮＣプログラムを特定可能な識別子を付与して、前記ＮＣプログラムを前記ユーザプログラム中から退避させる。ツール１０は、前記ユーザプログラム中の前記ＮＣプログラムの各々について、各々の前記ＮＣプログラムを特定可能な識別子を付与することにより、各々の前記ＮＣプログラムを識別し、管理する。ツール１０は、前記ユーザプログラムにおいてユーザが各々の前記ＮＣプログラムを特定するための情報として各々の前記ＮＣプログラムの先頭に付加する「プログラム番号」を、各々の前記ＮＣプログラムを特定可能な識別子として利用することができる。
【００８０】
ツール１０は、前記ユーザプログラム中の前記ＮＣプログラムの各々を呼び出すＦＢ（以下、「ＦＢ（ＮＣ呼出）」ともいう）の各々について、各々のＦＢ（ＮＣ呼出）を特定可能な識別子を付与することにより、各々の前記ＦＢ（ＮＣ呼出）を識別し、管理する。
【００８１】
詳細は、図４の（Ａ）を用いて後述するが、ツール１０は、ユーザプログラム中の各々のＮＣプログラムを特定可能な識別子を付与したＮＣプログラムと、各々のＦＢ（ＮＣ呼出）を特定可能な識別子を付与したＦＢ（ＮＣ呼出）とを対応付けて管理する。
【００８２】
ツール１０において、表示制御部１２０は、前記シーケンスプログラムから前記ＮＣプログラムを区別するための情報を付した前記ＮＣプログラムを、前記シーケンスプログラムと共に、編集可能に一画面中に表示してもよい。
【００８３】
前記の構成によれば、ツール１０は、前記シーケンスプログラムから前記ＮＣプログラムを区別するための情報を付した前記ＮＣプログラムを、前記シーケンスプログラムと共に、編集可能に一画面中に表示する。
【００８４】
したがって、ツール１０は、ユーザが、「前記一画面において編集可能に表示されている前記ユーザプログラムから、前記シーケンスプログラムと前記ＮＣプログラムとを容易に判別する」ことを可能にするとの効果を奏する。
【００８５】
また、前記の構成によれば、ツール１０は、「前記ＮＣプログラムを前記シーケンスプログラムから区別するための情報」に基づいて、前記ユーザプログラムについて、前記シーケンスプログラムと前記ＮＣプログラムとを容易に判別することができるという効果を奏する。
【００８６】
ツール１０において、表示制御部１２０は、ラダーダイアグラムおよびファンクションブロックダイアグラムの少なくとも一方でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムを編集可能な領域であるＮＣボックスを表示してもよい。
【００８７】
前記の構成によれば、ツール１０は、前記ラダーダイアグラム（ＬＤ）および前記ファンクションブロック（ＦＢＤ）の少なくとも一方でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムを編集可能な領域であるＮＣボックスを表示する。
【００８８】
ここで、前記ＬＤおよび前記ＦＢＤは、各々、前記シーケンスプログラムのために一般的に利用されているプログラミング言語であり、ユーザにとって使い慣れたプログラミング言語である。
【００８９】
したがって、ツール１０は、前記ＬＤおよび前記ＦＢＤで前記シーケンスプログラムをプログラミングしつつ、前記シーケンスプログラム中に前記ＮＣプログラムをプログラミングすることのできる環境をユーザに提供することができるとの効果を奏する。
【００９０】
ツール１０において、表示制御部１２０は、ストラクチャードテキストでプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムの開始および終了を示すプラグマを表示し、表示した前記開始および前記終了を示すプラグマの間に前記ＮＣプログラムを編集可能に表示してもよい。
【００９１】
前記の構成によれば、ツール１０は、前記ストラクチャードテキスト（ＳＴ）でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムの開始および終了を示すプラグマを表示し、表示した前記開始および前記終了を示すプラグマの間に前記ＮＣプログラムを編集可能に表示する。
【００９２】
ここで、前記ＳＴは、前記シーケンスプログラムのために一般的に利用されているプログラミング言語であり、ユーザにとって使い慣れたプログラミング言語である。
【００９３】
したがって、ツール１０は、前記ＳＴで前記シーケンスプログラムをプログラミングしつつ、前記シーケンスプログラム中に前記ＮＣプログラムをプログラミングすることのできる環境をユーザに提供することができるとの効果を奏する。
【００９４】
ツール１０において、表示制御部１２０は、シーケンシャルファンクションチャートでプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムであることを示す属性を付したアクションであって、前記ＮＣプログラムを含むアクションを、編集可能に表示してもよい。
【００９５】
前記の構成によれば、ツール１０は、前記シーケンシャルファンクションチャート（ＳＦＣ）でプログラミングされた前記シーケンスプログラム中に、前記ＮＣプログラムであることを示す属性を付したアクションであって、前記ＮＣプログラムを含むアクションを、編集可能に表示する。
【００９６】
ここで、前記ＳＦＣは、前記シーケンスプログラムのために一般的に利用されているプログラミング言語であり、ユーザにとって使い慣れたプログラミング言語である。
【００９７】
したがって、ツール１０は、前記ＳＦＣで前記シーケンスプログラムをプログラミングしつつ、前記シーケンスプログラム中に前記ＮＣプログラムをプログラミングすることのできる環境をユーザに提供することができるとの効果を奏する。
【００９８】
ツール１０は、前記シーケンスプログラムと前記ＮＣプログラムとを、前記シーケンスプログラムと前記ＮＣプログラムとを同期させて実行するコントローラ２０（１台の産業用制御装置）に転送するプログラム転送部１４０をさらに備えてもよい。
【００９９】
前記の構成によれば、ツール１０は、前記シーケンスプログラムと前記ＮＣプログラムとを、前記シーケンスプログラムと前記ＮＣプログラムとを同期させて実行するコントローラ２０に転送する。
【０１００】
したがって、ツール１０は、自装置を用いてユーザによりプログラミングされた前記シーケンスプログラムと前記ＮＣプログラムとをコントローラ２０により、同期させて実行させることができるという効果を奏する。
【０１０１】
これまでに概要を説明してきたツール１０について、次に、ツール１０の構成の詳細等を、図１を用いて説明する。
【０１０２】
（ツールの詳細）
図１は、ツール１０の要部構成等を示すブロック図である。図１に例示するように、ツール１０は、入力装置３０の受け付けたユーザ操作を、入力装置３０から取得する。そして、ツール１０は、取得したユーザ操作に応じた情報を、言い換えれば、取得したユーザ操作に対応する画像を、表示装置４０に表示させる。
【０１０３】
入力装置３０は、ツール１０に対するユーザ操作（例えば、プログラミングのための入力操作等）を受け付け、受け付けたユーザ操作をツール１０に出力する。入力装置３０は、例えば、キーボード、マウス等であり、入力装置３０が受け付けたユーザ操作は、ツール１０（具体的には、操作受付部１１０）においてユーザからの命令として受け付けられる。表示装置４０は、ツール１０（具体的には、表示制御部１２０）の制御に従って画像を表示するディスプレイである。
【０１０４】
図１に示すツール１０は、制御部１００および記憶部２００を含む構成である。なお、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成（例えば、不図示の外部装置等と通信するためのインターフェースなどの構成）は、説明およびブロック図から省略している。ただし、実施の実情に則して、ツール１０は、当該省略された構成を備えてもよい。
【０１０５】
（制御部）
制御部１００は、ツール１０の機能を統括して制御するものである。図示の制御部１００には、機能ブロックとして、操作受付部１１０、表示制御部１２０、プログラム処理部１３０、および、プログラム転送部１４０が含まれている。
【０１０６】
操作受付部１１０は、入力装置３０が受け付けたユーザ操作を、ユーザからの命令として、入力装置３０から取得する。操作受付部１１０は、取得したユーザ操作を、その内容に応じて、表示制御部１２０およびプログラム処理部１３０の少なくとも一方に、ユーザからの命令として通知する。
【０１０７】
表示制御部１２０は、表示装置４０に表示させる情報（つまり、画像）を制御する。表示制御部１２０は、例えば、「コントローラ２０により実行される、シーケンスプログラムおよびＮＣプログラム」を含むユーザプログラムを作成・編集するための画面である「編集画面」を表示装置４０に表示させる。つまり、表示制御部１２０は、ユーザがユーザプログラムをプログラミング（作成・編集）するのをサポートするエディタ機能を実現する。表示制御部１２０は、エディタ切替部１２１、シーケンスプログラムエディタ部１２２、および、ＮＣプログラムエディタ部１２３を含んでいる。表示制御部１２０は、編集画面においてユーザによって作成・編集された「コントローラ２０により実行される、シーケンスプログラムおよびＮＣプログラムを含むユーザプログラム」を、記憶部２００に、ユーザプログラム２０１として格納してもよい。
【０１０８】
シーケンスプログラムエディタ部１２２は、シーケンスプログラムをユーザがプログラミングするための画像を表示装置４０に表示させる。シーケンスプログラムエディタ部１２２は、例えば、シーケンスプログラムをユーザがプログラミングするための画面である「シーケンスプログラム編集画面」を表示装置４０に表示させる。
【０１０９】
また、シーケンスプログラムエディタ部１２２は、ＮＣプログラム編集画面中に、シーケンスプログラムをユーザがプログラミングするための領域である「シーケンスプログラム編集領域」を表示させる。「ＮＣプログラム編集画面」とは、ＮＣプログラムエディタ部１２３が表示装置４０に表示させる画面であって、「ＮＣプログラムをユーザがプログラミングする」ための画面である。
【０１１０】
すなわち、シーケンスプログラムエディタ部１２２は、シーケンスプログラムをユーザが作成・編集するための環境を提供するエディタである。シーケンスプログラムエディタ部１２２は、例えば、ＩＥＣ（International Electrotechnical Commission）６１１３１‐３に準拠したシーケンスプログラムをユーザが作成・編集するための環境を提供する。具体的には、シーケンスプログラムエディタ部１２２は、ユーザが以下のプログラミング言語でシーケンスプログラムを作成・編集するための環境を提供する。すなわち、シーケンスプログラムエディタ部１２２は、ラダーダイアグラム（ＬＤ、Ladder Diagram）、ファンクションブロックダイアグラム（ＦＢＤ、Function Block Diagram）、ストラクチャードテキスト（ＳＴ、Structured Text）、シーケンシャルファンクションチャート（ＳＦＣ、Sequential Function Chart）等でプログラミングするための環境を提供する。シーケンスプログラムエディタ部１２２は、ユーザがシーケンスプログラムをＩＬ（Instruction List）で作成・編集するための環境を提供してもよい。シーケンスプログラムエディタ部１２２は、複数のプログラミング言語が混在したシーケンスプログラムを作成・編集するための環境を提供できてもよい。
【０１１１】
シーケンスプログラムエディタ部１２２は、例えば、ユーザがシーケンスプログラムを、主としてＬＤで作成・編集するためのＬＤ編集画面を表示装置４０に表示させる。シーケンスプログラムエディタ部１２２は、例えば、ユーザがシーケンスプログラムを、主としてＦＢＤで作成・編集するためのＦＢＤ編集画面を表示装置４０に表示させる。シーケンスプログラムエディタ部１２２は、例えば、ユーザがシーケンスプログラムを、主としてＳＴで作成・編集するためのＳＴ編集画面を表示装置４０に表示させる。シーケンスプログラムエディタ部１２２は、例えば、ユーザがシーケンスプログラムを、主としてＳＦＣで作成・編集するためのＳＦＣ編集画面を表示装置４０に表示させる。すなわち、シーケンスプログラムエディタ部１２２は、従来から一般的な、ＬＤエディタ、ＦＢＤエディタ、ＳＴエディタ、および、ＳＦＣエディタの機能を備えている。
【０１１２】
なお、ＬＤ編集画面、ＦＢＤ編集画面、ＳＴ編集画面、および、ＳＦＣ編集画面の各々において、ユーザは、ＬＤ、ＦＢＤ、ＳＴ、および、ＳＦＣ以外のプログラミング言語でシーケンスプログラムを作成・編集することも可能である。例えば、ユーザは、ＬＤ編集画面において、ＬＤ、ＦＢＤ、および、ＳＴが混在したシーケンスプログラムを作成・編集することができる。ＩＥＣ６１１３１‐３で規定された複数のプログラミング言語にはそれぞれ長所・短所があり、ユーザは、ツール１０を利用することにより、それら複数のプログラミング言語を、適材適所で使い分けることができる。したがって、ユーザは、ツール１０を利用することにより、プログラミング時間（コーディング時間）の短縮を実現し、プログラミングしたプログラムの可読性を向上させることができる。
【０１１３】
ＮＣプログラムエディタ部１２３は、ＮＣプログラムをユーザがプログラミングするための画像を表示装置４０に表示させる。ＮＣプログラムエディタ部１２３は、例えば、ＮＣプログラムをユーザがプログラミングするための画面である「ＮＣプログラム編集画面」を表示装置４０に表示させる。
【０１１４】
また、ＮＣプログラムエディタ部１２３は、シーケンスプログラム編集画面中に、ＮＣプログラムをユーザがプログラミングする（編集・描画する）ための領域である「ＮＣプログラム編集領域」を表示させる。「シーケンスプログラム編集画面」とは、シーケンスプログラムエディタ部１２２が表示装置４０に表示させる画面であって、「シーケンスプログラムをユーザがプログラミングする」ための画面である。
【０１１５】
すなわち、ＮＣプログラムエディタ部１２３は、ＮＣプログラムをユーザが作成・編集するための環境を提供するエディタであり、例えば、ユーザがＧコード、Ｍコード等を用いてＮＣプログラムを作成・編集するための環境を提供するエディタである。
【０１１６】
エディタ切替部１２１は、操作受付部１１０が受け付けたユーザ操作に応じてユーザのプログラミングを処理するエディタを切り替え、つまり、シーケンスプログラムエディタ部１２２またはＮＣプログラムエディタ部１２３にユーザのプログラミングを処理させる。具体的には、エディタ切替部１２１は、以下の（Ａ）〜（Ｄ）を実行する。
【０１１７】
（Ａ）エディタ切替部１２１は、シーケンスプログラム編集画面において「ＮＣプログラム編集領域を設ける」ユーザ操作を操作受付部１１０が受け付けると、ＮＣプログラムエディタ部１２３に、以下の処理を実行させる。すなわち、シーケンスプログラム編集画面の表示中に「ＮＣプログラム編集領域を設ける」ユーザ操作があると、エディタ切替部１２１は、ＮＣプログラムエディタ部１２３に、ＮＣプログラム編集領域をシーケンスプログラム編集画面中に表示させる。
【０１１８】
（Ａ−１）エディタ切替部１２１は、ＬＤ編集画面において「ＮＣプログラム編集領域を設ける」ユーザ操作があると、ＮＣプログラムエディタ部１２３に、ＬＤ編集画面中の「ＮＣプログラム編集領域」として、「ＮＣボックス」を表示させる。具体的には、エディタ切替部１２１は、「主にＬＤでプログラミングされているシーケンスプログラム（ＬＤプログラム）」内に、「ＮＣプログラム」を編集、描画するための領域（ＮＣプログラム編集領域）である「ＮＣボックス」を表示させる。
【０１１９】
（Ａ−２）エディタ切替部１２１は、ＦＢＤ編集画面において「ＮＣプログラム編集領域を設ける」ユーザ操作があると、ＮＣプログラムエディタ部１２３に、ＦＢＤ編集画面中の「ＮＣプログラム編集領域」として、「ＮＣボックス」を表示させる。具体的には、エディタ切替部１２１は、「主にＦＢＤでプログラミングされているシーケンスプログラム（ＦＢＤプログラム）」内に、「ＮＣボックス」を表示させる。
【０１２０】
（Ａ−３）エディタ切替部１２１は、ＳＴ編集画面において「ＮＣプログラム」の開始および終了を示すプラグマを記載するユーザ操作があると、ＮＣプログラムエディタ部１２３に、そのプラグマにより囲まれた領域を「ＮＣプログラム編集領域」として表示させる。
【０１２１】
（Ａ−４）エディタ切替部１２１は、ＳＦＣ編集画面において或る「アクション」の属性として「ＮＣプログラム」を選択するユーザ操作があると、ＮＣプログラムエディタ部１２３に、その或るアクション内の領域を「ＮＣプログラム編集領域」として表示させる。
【０１２２】
（Ｂ）エディタ切替部１２１は、ＮＣプログラム編集画面において「シーケンスプログラム編集領域を設ける」ユーザ操作を操作受付部１１０が受け付けると、シーケンスプログラムエディタ部１２２に、以下の処理を実行させる。すなわち、ＮＣプログラム編集画面の表示中に「シーケンスプログラム編集領域を設ける」ユーザ操作があると、エディタ切替部１２１は、シーケンスプログラムエディタ部１２２に、シーケンスプログラム編集領域をＮＣプログラム編集画面中に表示させる。
【０１２３】
（Ｃ）エディタ切替部１２１は、「シーケンスプログラム編集画面」中の「ＮＣプログラム編集領域」に対するユーザ操作を操作受付部１１０が受け付けると、ＮＣプログラムエディタ部１２３に、そのユーザ操作に対応する情報を表示させる。言い換えれば、エディタ切替部１２１は、「ＮＣプログラム編集領域」に対するユーザ操作を、「ＮＣプログラムのプログラミング」として、ＮＣプログラムエディタ部１２３に処理させる。
【０１２４】
（Ｄ）エディタ切替部１２１は、「ＮＣプログラム編集画面」中の「シーケンスプログラム編集領域」に対するユーザ操作を操作受付部１１０が受け付けると、シーケンスプログラムエディタ部１２２に、そのユーザ操作に対応する情報を表示させる。言い換えれば、エディタ切替部１２１は、「シーケンスプログラム編集領域」に対するユーザ操作を、「シーケンスプログラムのプログラミング」として、シーケンスプログラムエディタ部１２２に処理させる。
【０１２５】
以上の説明を整理すれば、表示制御部１２０は、ＬＤ編集画面、ＦＢＤ編集画面、ＳＴ編集画面、および、ＳＦＣ編集画面の各々を表示装置４０に表示させるとともに、各画面中に、ＮＣプログラム編集領域を表示させる。すなわち、表示制御部１２０は、表示装置４０に、シーケンスプログラム編集画面を表示させ、さらに、表示させたシーケンスプログラムの編集画面中に、ＮＣプログラムをプログラミングすることの可能なＮＣプログラム編集領域を表示させる。
【０１２６】
具体的には、（Ｉ）表示制御部１２０は、ＬＤ編集画面において、シーケンスプログラム中に、ＮＣプログラム編集領域として、「ＮＣボックス」を、表示装置４０に表示させる。（ＩＩ）表示制御部１２０は、ＦＢＤ編集画面において、シーケンスプログラム中に、ＮＣプログラム編集領域として、「ＮＣボックス」を、表示装置４０に表示させる。（ＩＩＩ）表示制御部１２０は、ＳＴ編集画面において、シーケンスプログラム中に記載された「ＮＣプログラムの開始および終了を示すプラグマ」に囲まれた領域を、ＮＣプログラム編集領域として、表示装置４０に表示させる。（ＩＶ）表示制御部１２０は、ＳＦＣ編集画面において、属性として「ＮＣプログラム」が選択された「アクション」内を、ＮＣプログラム編集領域として、表示装置４０に表示させる。
【０１２７】
プログラム処理部１３０は、表示制御部１２０により提供される編集画面で作成されたユーザプログラム（ソースプログラム）をコンパイルして、オブジェクトプログラム形式のユーザプログラムを作成するコンパイラである。プログラム処理部１３０は、プログラム分離部１３１、プログラム置換部１３２、シーケンスプログラム処理部１３３、および、ＮＣプログラム処理部１３４を含んでいる。
【０１２８】
プログラム分離部１３１は、「シーケンスプログラムおよびＮＣプログラム」を含むユーザプログラムから、シーケンスプログラムおよびＮＣプログラムの各々を分離する。プログラム分離部１３１は、例えば、ＮＣプログラムを含むシーケンスプログラムから、ＮＣプログラムを取り出して、取り出したＮＣプログラムを保持する（退避させる）。
【０１２９】
具体的には、（Ａ）プログラム分離部１３１は、ＬＤ編集画面におけるシーケンスプログラム（ユーザプログラム）について、そのシーケンスプログラム中の「ＮＣボックス」内にプログラミングされたプログラムを、ＮＣプログラムとして取り出す。プログラム分離部１３１は、取り出したプログラムを、記憶部２００にＮＣプログラム２０４として格納する。
【０１３０】
（Ｂ）プログラム分離部１３１は、ＦＢＤ編集画面におけるシーケンスプログラム（ユーザプログラム）について、そのシーケンスプログラム中の「ＮＣボックス」内にプログラミングされたプログラムを、ＮＣプログラムとして取り出す。プログラム分離部１３１は、取り出したプログラムを、記憶部２００にＮＣプログラム２０４として格納する。
【０１３１】
（Ｃ）プログラム分離部１３１は、ＳＴ編集画面におけるシーケンスプログラム（ユーザプログラム）について、そのシーケンスプログラム中の「ＮＣプログラムの開始および終了を示すプラグマ」に囲まれた領域内にプログラミングされたプログラムを、ＮＣプログラムとして取り出す。プログラム分離部１３１は、取り出したプログラムを、記憶部２００にＮＣプログラム２０４として格納する。
【０１３２】
（Ｄ）プログラム分離部１３１は、ＳＦＣ編集画面におけるシーケンスプログラム（ユーザプログラム）について、そのシーケンスプログラム中の、属性が「ＮＣプログラム」である「アクション」内にプログラミングされたプログラムを、ＮＣプログラムとして取り出す。プログラム分離部１３１は、取り出したプログラムを、記憶部２００にＮＣプログラム２０４として格納する。
【０１３３】
なお、プログラム分離部１３１は、例えば、シーケンスプログラムを含むＮＣプログラムから、シーケンスプログラムを取り出して、取り出したシーケンスプログラムを保持してもよい（退避させてもよい）。
【０１３４】
プログラム置換部１３２は、ＮＣプログラムを取り出されたシーケンスプログラム（ユーザプログラム）について、取り出されたＮＣプログラムのあった位置に、取り出されたＮＣプログラムを呼び出すＦＢを、以下の識別情報（番号、ＩＤ）を付与して、挿入する。すなわち、プログラム置換部１３２は、対応管理情報２０２を参照して空き番号（任意のＮＣプログラムに対応付けられていない番号）を取得し、取得した空き番号を、取り出されたＮＣプログラムを呼び出すＦＢに付与して、前記シーケンスプログラムに挿入する。つまり、プログラム置換部１３２は、シーケンスプログラム（ユーザプログラム）中の、取り出されたＮＣプログラムのあった位置に、取り出されたＮＣプログラムを呼び出すＦＢであって、取り出されたＮＣプログラムに対応する識別子を付与したＦＢを挿入する。プログラム置換部１３２は、例えば、ＮＣプログラムを含むシーケンスプログラム（ユーザプログラム）をビルドする際に、そのシーケンスプログラムに含まれているＮＣプログラムを、「そのＮＣプログラムを呼び出すシーケンスプログラム」に置き替える。
【０１３５】
なお、以下の説明においては、「対応するＮＣプログラムを呼び出すＦＢ」を「ＦＢ（ＮＣ呼出）」と呼ぶことがある。例えば、プログラム置換部１３２は、或るシーケンスプログラム中の「ＩＤ＝０１」であるＮＣプログラムを「ＩＤ（番号）＝０１」である「ＦＢ（ＮＣ呼出）」に置き替える。また、プログラム置換部１３２は、その或るシーケンスプログラム中の「ＩＤ＝０２」であるＮＣプログラムを「ＩＤ（番号）＝０２」である「ＦＢ（ＮＣ呼出）」に置き替える。「ＩＤ＝０１」である「ＦＢ（ＮＣ呼出）」は「ＩＤ＝０１」であるＮＣプログラムを呼び出すＦＢであり、「ＩＤ＝０２」である「ＦＢ（ＮＣ呼出）」は「ＩＤ＝０２」であるＮＣプログラムを呼び出すＦＢである。
【０１３６】
プログラム置換部１３２は、「或るＮＣプログラム」を、その「或るＮＣプログラム」を呼び出す「ＦＢ（ＮＣ呼出）」に置換すると、その「ＦＢ（ＮＣ呼出）」に割り当てた番号（ＩＤ）と共に、対応管理情報２０２として記憶部２００に格納する。上述の例に即して言えば、プログラム置換部１３２は、「ＩＤ＝０１」であるＮＣプログラムと、「ＩＤ（番号）＝０１」である「ＦＢ（ＮＣ呼出）」と、を対応付けた情報を、対応管理情報２０２として記憶部２００に格納する。また、プログラム置換部１３２は、「ＩＤ＝０２」であるＮＣプログラムと「ＩＤ（番号）＝０２」である「ＦＢ（ＮＣ呼出）」とを対応付けた情報を、対応管理情報２０２として記憶部２００に格納する。
【０１３７】
シーケンスプログラム処理部１３３は、シーケンスプログラムのコンパイラであり、コメントなど「シーケンスプログラム」の実行に不要な情報を除去して、オブジェクトプログラム形式のシーケンスプログラムを生成する。具体的には、シーケンスプログラム処理部１３３は、ＮＣプログラムが取り出され、取り出されたＮＣプログラムを呼び出すＦＢであって、取り出されたＮＣプログラムに対応する識別子を付与したＦＢが挿入されたシーケンスプログラムをコンパイルする。
【０１３８】
ＮＣプログラム処理部１３４は、ＮＣプログラムのコンパイラであり、オブジェクトプログラム形式のＮＣプログラムを生成する。具体的には、ＮＣプログラム処理部１３４は、プログラム分離部１３１によってシーケンスプログラム（ユーザプログラム）から取り出されたＮＣプログラムから、コメントなど「ＮＣプログラム」の実行に不要な情報を除去してコンパイルする。
【０１３９】
プログラム転送部１４０は、プログラム処理部１３０によって生成されたオブジェクトプログラム形式のユーザプログラムを、コントローラ２０に転送する機能部であり、シーケンスプログラム転送部１４１およびＮＣプログラム転送部１４２を含んでいる。シーケンスプログラム転送部１４１は、シーケンスプログラム処理部１３３によって生成されたオブジェクトプログラム形式のシーケンスプログラムを、コントローラ２０に転送する。ＮＣプログラム転送部１４２は、ＮＣプログラム処理部１３４によって生成されたオブジェクトプログラム形式のＮＣプログラムを、コントローラ２０に転送する。
【０１４０】
上述した制御部１００の各機能ブロックは、例えば、ＣＰＵ（central processing unit）などが、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置（記憶部２００）に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。
【０１４１】
（記憶部）
記憶部２００は、ツール１０が使用する各種データを格納している。すなわち、記憶部２００は、ツール１０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）各種機能を実行するためのアプリケーションプログラム、および（４）該アプリケーションプログラムを実行するときに読み出す各種データを格納している。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。また、記憶部２００は、ユーザプログラム２０１、対応管理情報２０２、シーケンスプログラム２０３、ＮＣプログラム２０４、および、ＩＥＣ−ＮＣプログラムテーブル２０５を格納する。
【０１４２】
ユーザプログラム２０１は、表示制御部１２０が表示装置４０に表示させる編集画面においてユーザによって作成・編集された、「コントローラ２０により実行される、シーケンスプログラムおよびＮＣプログラム」を含むユーザプログラムである。
【０１４３】
対応管理情報２０２は、プログラム置換部１３２によって置き替えられる、置き替え元の「ＮＣプログラム」と、置き替え先の「ＦＢ（ＮＣ呼出）」と、を対応付けて管理する情報である。例えば、対応管理情報２０２は、置き替え元の「ＮＣプログラム」の識別情報（ＩＤ）およびプログラムの内容と、置き替え先の「ＦＢ（ＮＣ呼出）」の識別情報（ＩＤ、番号）およびプログラムの内容と、を対応付けている。対応管理情報２０２の詳細については、図４の（Ａ）を用いて後述する。
【０１４４】
シーケンスプログラム２０３は、ＮＣプログラムを含むシーケンスプログラム（ユーザプログラム）について、プログラム置換部１３２によってＮＣプログラムが「ＦＢ（ＮＣ呼出）」に置き替えられたシーケンスプログラムである。
【０１４５】
ＮＣプログラム２０４は、ＮＣプログラムを含むシーケンスプログラム（ユーザプログラム）からプログラム分離部１３１によって取り出されたＮＣプログラムである。言い換えれば、ＮＣプログラム２０４は、プログラム置換部１３２によって「ＦＢ（ＮＣ呼出）」に対応付けられたＮＣプログラムである。
【０１４６】
ＩＥＣ−ＮＣプログラムテーブル２０５は、ＮＣプログラムを含むシーケンスプログラム（ユーザプログラム）について、そのシーケンスプログラムの名称等の識別情報と、そのＮＣプログラムの識別情報および内容の少なくとも一方と、を対応付けた情報である。ＩＥＣ−ＮＣプログラムテーブル２０５の詳細については、図１７等を用いて後述する。
【０１４７】
（ユーザプログラムを構成する要素のデータ構造）
図３は、ツール１０において、ユーザプログラムを構成する要素（部品。例えば、命令語等）のデータ構造の一例を示す図面である。図３に例示するように、ＬＤプログラムを構成する要素は、「ＩＥＣ部品：ｉｄ１」と、「ＮＣボックス：ｉｄ２」とを含む。「ＩＥＣ部品：ｉｄ１」は、「変数：ｉｄ１−１」、「ＬＤ／ＯＵＴ等：ｉｄ１−１」、「ＦＢ／Ｆｕｎｃｔｉｏｎ等：ｉｄ１−２」、および、「ＳＴボックス：ｉｄ１−３」を含んでいる。ここで、「ＳＴボックス：ｉｄ１−３」は、ＬＤプログラム中に記載することのできる、ＳＴプログラムを指す。「ＮＣボックス：ｉｄ２」は、属性として「プログラム番号」を含む。
【０１４８】
ＳＴプログラムを構成する要素は、「キーワード：ｉｄ１」を含む。「キーワード：ｉｄ１」は、「変数：ｉｄ１−１」、「ＦＢ／Ｆｕｎｃｔｉｏｎ等：ｉｄ１−２」、および、「プラグマ：ｉｄ１−３」を含んでいる。
【０１４９】
ＳＦＣプログラムを構成する要素は、「キーワード：ｉｄ１」を含む。「キーワード：ｉｄ１」は、「変数：ｉｄ１−１」、「アクション：ｉｄ１−２」、および、「トランジション：ｉｄ１−３」を含む。ユーザは「アクション：ｉｄ１−２」の「属性」を選択することができ、アクション内にシーケンスプログラムを記載するアクションの属性は「０」（ＩＥＣ：０）とし、アクション内にＮＣプログラムを記載するアクションの属性を「１」（ＮＣ：１）とする。
【０１５０】
図４は、「プログラム置換部１３２によって参照される対応管理情報２０２」、プログラム置換部１３２によって置き替えられる、置き替え元の「ＮＣプログラム」、および、置き替え先の「ＦＢ（ＮＣ呼出）」の一例を示す図である。
【０１５１】
図４の（Ａ）は、対応管理情報２０２のデータ構造の一例を示す図である。前述の通り、対応管理情報２０２は、「シーケンスプログラム中にプログラミングされたＮＣプログラム（ＮＣ部品。つまり、シーケンスプログラムの構成（部品）としてのＮＣプログラム）」と、「ＦＢ（ＮＣ呼出）」と、を対応付けた情報である。プログラム置換部１３２は、ＮＣ部品と「ＦＢ（ＮＣ呼出）」とを置き替えるときに、対応管理情報２０２を参照して、置き替える「ＦＢ（ＮＣ呼出）」に空き番号を付与し、その番号を、その「ＦＢ（ＮＣ呼出）」のＩＤとする。
【０１５２】
図４の（Ａ）に示す例では、「ＦＢ（ＮＣ呼出）」のＩＤ（図中の「ＮＣプログラム番号」）について、「０」および「２」は使用されている（「使用・未使用＝１」）。つまり、「ＩＤ＝０」の「ＦＢ（ＮＣ呼出）」、および、「ＩＤ＝２」の「ＦＢ（ＮＣ呼出）」には、何らかのＮＣ部品（ＮＣプログラム）が対応付けられている。例えば、「ＩＤ＝０」の「ＦＢ（ＮＣ呼出）」は「ＩＤ＝０」のＮＣプログラムを呼び出すＦＢであり、「ＩＤ＝２」の「ＦＢ（ＮＣ呼出）」は「ＩＤ＝２」のＮＣプログラムを呼び出すＦＢである。
【０１５３】
これに対して、「ＦＢ（ＮＣ呼出）」の「ＮＣプログラム番号」について、「１」は未使用である（「使用・未使用＝０」）。したがって、プログラム置換部１３２は、或るＮＣ部品（例えば、「ＩＤ＝１」のＮＣプログラム）について、その或るＮＣ部品を呼び出す「ＦＢ（ＮＣ呼出）」のＩＤ（＝「ＮＣプログラム番号」）を、「１」としてもよい。
【０１５４】
例えば、後述する図６には、「プログラム番号（ユーザがユーザプログラム中の各々のＮＣプログラムを特定するためにＮＣプログラムに付加する情報）」として「１００」が付加されたＮＣプログラムが例示されている。図６に例示するユーザプログラム中のＮＣプログラムについて、プログラム置換部１３２は、対応管理情報２０２を参照して「１００」が未使用であることを確認すると、以下の処理を実行する。すなわち、このＮＣプログラムの先頭に付加されている「プログラム番号（ＮＣプログラム番号）」である「１００」を、プログラム置換部１３２は、このＮＣプログラムを呼び出す「ＦＢ（ＮＣ呼出）」のＩＤ（＝「ＮＣプログラム番号」）とする。すなわち、プログラム置換部１３２は、対応管理情報２０２を参照して、或るＮＣプログラムを呼び出すＦＢ（ＮＣ呼出）のＩＤを、その或るＮＣプログラムのプログラム番号としてもよい。また、プログラム分離部１３１は、このＮＣプログラムについて、「ＩＤ（ＮＣプログラム番号）＝１００」を付与して、ユーザプログラムから退避させてもよい。
【０１５５】
ツール１０は、ユーザプログラム中のＮＣプログラムの各々を、例えば「プログラム番号」により識別する。また、ツール１０は、それらのＮＣプログラムの各々を呼び出すＦＢ（ＮＣ呼出）の各々について、それらのＦＢ（ＮＣ呼出）の各々に対して付与するＩＤにより識別する。ツール１０は、ユーザプログラム中のＮＣプログラムの各々のプログラム番号と、ＮＣプログラムの各々を呼び出すＦＢ（ＮＣ呼出）の各々のＩＤとを対応付けた情報（例えば、対応管理情報２０２等）を管理している。
【０１５６】
図４の（Ｂ）は、プログラム置換部１３２によって置き替えられる、置き替え元の「ＮＣプログラム」の一例を示している。図４の（Ｂ）に例示する「置き替え元Ｇコード」は、プログラム置換部１３２によって、図４の（Ｃ）に例示する「ＦＢ（ＮＣ呼出）」に置き換えられる。なお、以下の説明においては、プログラム置換部１３２によって「ＦＢ（ＮＣ呼出）」に置き換えられる、「シーケンスプログラム中にプログラミングされたＮＣプログラム」を、「ＮＣ部品」とも称する。
【０１５７】
図４の（Ｃ）は、ＬＤプログラム、ＦＢＤプログラム、ＳＴプログラム、および、ＳＦＣプログラムの各々について、プログラム置換部１３２が、ＮＣ部品を、どのようなＦＢに、つまり、どのようなシーケンスプログラムに、置き替えるのかの例を示す図である。
【０１５８】
「置き替え先ＦＢ（ＮＣ呼出）」の「ＬＤ」には、ＮＣ部品を含む、ＬＤプログラムおよびＦＢＤプログラムにおいて、そのＮＣ部品を呼び出す「ＦＢ（ＮＣ呼出）」の例が、つまり、そのＮＣ部品を呼び出すシーケンスプログラムの例が、示されている。
【０１５９】
「置き替え先ＦＢ（ＮＣ呼出）」の「ＳＴ」には、ＮＣ部品を含むＳＴプログラムにおいて、そのＮＣ部品を呼び出す「ＦＢ（ＮＣ呼出）」の例が、つまり、そのＮＣ部品を呼び出すシーケンスプログラムの例が、示されている。
【０１６０】
「置き替え先ＦＢ（ＮＣ呼出）」の「ＳＦＣ」には、「上記２つの言語のいずれか」が示されている。つまり、ＮＣ部品を含むＳＦＣプログラムにおいては、そのＮＣ部品を呼び出す「ＦＢ（ＮＣ呼出）」は、「ＬＤ」または「ＳＴ」で示した「ＦＢ（ＮＣ呼出）」と同様である。
【０１６１】
図５は、ＬＤプログラム（またはＦＢＤプログラム）中でＮＣプログラムを作成・編集する例を示す図である。表示制御部１２０は、ＬＤ編集画面（またはＦＢＤ編集画面）において、シーケンスプログラム中に、ＮＣプログラムを作成・編集な領域である「ＮＣボックス」（点線で囲んだ領域Ａｒ３０４（０１））を表示装置４０に表示させる。図５において、領域Ａｒ３０４（０１）は、Ｇコード、Ｍコード等でＮＣプログラムをプログラミング可能な領域である「ＮＣボックス」を示している。
【０１６２】
図６は、ＳＴプログラム中でＮＣプログラムを作成・編集する例を示す図である。表示制御部１２０は、ＳＴ編集画面において、シーケンスプログラム中にプログラミングされた「ＮＣプログラムの開始および終了を示すプラグマ」に囲まれた領域（点線で囲んだ領域Ａｒ３０４（０２））を、ＮＣプログラム編集領域として表示装置４０に表示させる。
【０１６３】
図６には、「ＮＣプログラムの開始および終了を示すプラグマ」が、「＃」で始まる特定のキーワードである例が示されている。すなわち、図６に示す例においては、「ＮＣプログラムの開始を示すプラグマ」は、「＃」の後にＮＣプログラムの識別情報（ＮＣプログラム番号）を記載したものであり、「ＮＣプログラムの終了を示すプラグマ」は、「＃ＥＮＤ＿ＮＣ＿ＰＲＯＧ」である。表示制御部１２０は、識別情報が「ＮＣ＿ＰＲＯＧ  １００」であるＮＣプログラムをＧコード、Ｍコード等でプログラミング可能なＮＣプログラム編集領域を、「＃ＮＣ＿ＰＲＯＧ  １００」と「＃ＥＮＤ＿ＮＣ＿ＰＲＯＧ」との間に表示させる。
【０１６４】
図７は、ＳＦＣプログラム中でＮＣプログラムを作成・編集する例を示す図である。表示制御部１２０は、ＳＦＣ編集画面において、シーケンスプログラム中の、「属性として『ＮＣプログラム』が選択された『アクション』」（点線で囲んだ領域Ａｒ３０４（０３））内を、ＮＣプログラム編集領域として、表示装置４０に表示させる。図７において、領域Ａｒ３０４（０３）は、Ｇコード、Ｍコード等でＮＣプログラムをプログラミング可能な「アクション」を示している。
【０１６５】
（ツールの実行する処理）
これまで説明してきたように、ツール１０の実行する制御方法は、コントローラ２０（産業用制御装置）で実行されるユーザプログラムの作成を支援する支援装置の制御方法であって、同期させて実行されるべきシーケンスプログラムとＮＣプログラムとに係るユーザのプログラミング操作を受け付ける受付ステップと、前記受付ステップにて受け付けた前記プログラミング操作に従って、前記ユーザプログラムとして、前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する表示制御ステップと、を含んでいる。
【０１６６】
前記の方法によれば、前記制御方法は、同期させて実行されるべき前記シーケンスプログラムと前記ＮＣプログラムとを編集可能に一画面中に表示する。
【０１６７】
したがって、前記制御方法は、ユーザが、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムの全体を容易に把握することを可能とし、ユーザのプログラミング効率を向上させることができるという効果を奏する。ユーザは、前記制御方法を実行するエディタ（プログラミング支援装置）であるツール１０を用いて、前記シーケンスプログラムと前記ＮＣプログラムとを一画面中で作成・編集することができる。つまり、ユーザは、ツール１０を用いて、前記シーケンスプログラムと前記ＮＣプログラムとを含む前記ユーザプログラムを効率的にプログラミングすることができる。
【０１６８】
つまり、表示制御部１２０は、「コントローラ２０により実行される、シーケンスプログラムおよびＮＣプログラム」を含むユーザプログラムをユーザがプログラミングするための画面である「編集画面」を表示装置４０に表示させる。操作受付部１１０は、「コントローラ２０により同期されて実行されるべきシーケンスプログラムおよびＮＣプログラム」に係るユーザのプログラミング操作を受け付ける。
【０１６９】
以下、ＬＤ編集画面、ＦＢＤ編集画面、ＳＴ編集画面、および、ＳＦＣ編集画面において、ユーザによりＮＣプログラムを含んで作成・編集されたシーケンスプログラム（ユーザプログラム）についてツール１０が実行する処理を図８〜１１を参照して説明する。
【０１７０】
（ＬＤプログラム）
図８は、ＬＤ編集画面において作成・編集された「ＮＣプログラムを含む、ＬＤプログラム（ユーザプログラム）」についてツール１０が実行する処理の概要を示すフロー図である。図８において、先ずプログラム処理部１３０（特に、プログラム分離部１３１）は、ＬＤでプログラミングされたプログラム（ＬＤプログラム）をパースし（Ｓ１１０）、ＬＤプログラム内にＮＣボックスがあるかを判定する（Ｓ１２０）。
【０１７１】
「ＬＤプログラム内にＮＣボックスがある」と判定すると（Ｓ１２０でＹｅｓ）、プログラム分離部１３１は以下の処理を実行する。すなわち、プログラム分離部１３１は、ＮＣボックス内のＮＣプログラムを保持（退避）し（Ｓ１３０）、例えば、ＬＤプログラム中の「ＮＣボックス」内にプログラミングされたＮＣプログラムを記憶部２００にＮＣプログラム２０４として格納する。そして、プログラム処理部１３０（特に、プログラム置換部１３２）は、ＬＤプログラム内のＮＣボックスを、そのＮＣボックスに対応する番号（ＩＤ）を付与した「ＦＢ（ＮＣ呼出）」に入れ替える（Ｓ１４０）。
【０１７２】
プログラム処理部１３０（特に、シーケンスプログラム処理部１３３）は、ＬＤプログラム（ＮＣボックスが、そのＮＣボックスに対応する番号を付与された「ＦＢ（ＮＣ呼出）」に入れ替えられたＬＤプログラム）をコンパイルする（Ｓ１５０）。
【０１７３】
プログラム分離部１３１が「ＬＤプログラム内にＮＣボックスがない」と判定すると（Ｓ１２０でＮｏ）、プログラム処理部１３０（特に、シーケンスプログラム処理部１３３）は、（ＮＣボックスを含まない）ＬＤプログラムをコンパイルする（Ｓ１５０）。
【０１７４】
プログラム分離部１３１が保持（退避）したＮＣプログラムをＮＣプログラム処理部１３４に渡して、図１１に示すＳ４１０へと処理が遷移する（Ｓ１６０）。なお、ＮＣプログラム処理部１３４は、ＮＣプログラムをプログラム分離部１３１から取得する代わりに、記憶部２００に格納されたＮＣプログラム２０４を取得してもよい。また、シーケンスプログラム処理部１３３は、コンパイルしたＬＤプログラム（シーケンスプログラム）を、シーケンスプログラム転送部１４１に渡す（Ｓ１７０）。
【０１７５】
なお、ＦＢＤ編集画面において作成・編集された「ＮＣボックス（つまり、ＮＣプログラム）を含む、ＦＢＤプログラム（ユーザプログラム）」についても、ツール１０は、図８に示したのと同様の処理を実行する。
【０１７６】
（ＳＴプログラム）
図９は、ＳＴ編集画面において作成・編集された「ＮＣプログラムを含む、ＳＴプログラム（ユーザプログラム）」についてツール１０が実行する処理の概要を示すフロー図である。図８において、先ずプログラム処理部１３０（特に、プログラム分離部１３１）は、ＳＴでプログラミングされたプログラム（ＳＴプログラム）をパースし（Ｓ２１０）、ＳＴプログラム内にＮＣプログラム用のプラグマがあるかを判定する（Ｓ２２０）。
【０１７７】
「ＳＴプログラム内にＮＣプログラム用のプラグマがある」と判定すると（Ｓ２２０でＹｅｓ）、プログラム分離部１３１は、ＮＣプログラム用のプラグマを検索し、検索したプラグマに囲まれたＮＣプログラムを保持（退避）する（Ｓ２３０）。プログラム分離部１３１は、例えば、ＳＴプログラム中のＮＣプログラム用のプラグマに囲まれている領域にプログラミングされたＮＣプログラムを、記憶部２００にＮＣプログラム２０４として格納する。
【０１７８】
プログラム処理部１３０（特に、プログラム置換部１３２）は、ＳＴプログラム中のＮＣプログラムを、そのＮＣプログラムに対応する番号を付与した「ＦＢ（ＮＣ呼出）」に入れ替える（Ｓ２４０）。より正確には、プログラム処理部１３０は、ＳＴプログラム中のＮＣプログラム用のプラグマ、および、そのプラグマに囲まれている領域にプログラミングされたＮＣプログラムを、そのＮＣプログラムに対応する番号を付与した「ＦＢ（ＮＣ呼出）」に入れ替える。
【０１７９】
プログラム処理部１３０（特に、シーケンスプログラム処理部１３３）は、ＳＴプログラムをコンパイルする（Ｓ２５０）。プログラム処理部１３０は、「ＮＣプログラム用のプラグマ、および、そのプラグマに囲まれている領域にプログラミングされたＮＣプログラムが、そのＮＣプログラムに対応する番号を付与された『ＦＢ（ＮＣ呼出）』に入れ替えられたＳＴプログラム」をコンパイルする。
【０１８０】
プログラム分離部１３１が「ＳＴプログラム内にＮＣプログラム用のプラグマがない」と判定すると（Ｓ２２０でＮｏ）、プログラム処理部１３０（特に、シーケンスプログラム処理部１３３）は、ＳＴプログラムをコンパイルする（Ｓ２５０）。プログラム処理部１３０は、ＮＣプログラム用のプラグマが記載されていないＳＴプログラムをコンパイルする。
【０１８１】
プログラム分離部１３１が保持（退避）したＮＣプログラムをＮＣプログラム処理部１３４に渡して、図１１に示すＳ４１０へと処理が遷移する（Ｓ２６０）。なお、ＮＣプログラム処理部１３４は、ＮＣプログラムをプログラム分離部１３１から取得する代わりに、記憶部２００に格納されたＮＣプログラム２０４を取得してもよい。また、シーケンスプログラム処理部１３３は、コンパイルしたＳＴプログラム（シーケンスプログラム）を、シーケンスプログラム転送部１４１に渡す（Ｓ２７０）。
【０１８２】
（ＳＦＣプログラム）
図１０は、ＳＦＣ編集画面において作成・編集された「ＮＣプログラムを含む、ＳＦＣプログラム（ユーザプログラム）」についてツール１０が実行する処理の概要を示すフロー図である。図１０において、先ずプログラム処理部１３０（特に、プログラム分離部１３１）は、ＳＦＣでプログラミングされたプログラム（ＳＦＣプログラム）をパース（Ｓ３１０）し、属性がＮＣであるアクションがあるかを判定する（Ｓ３２０）。
【０１８３】
「属性がＮＣであるアクションがある」と判定すると（Ｓ３２０でＹｅｓ）、プログラム分離部１３１は、属性がＮＣであるアクション内のＮＣプログラムを保持する（退避する）（Ｓ３３０）。プログラム分離部１３１は、例えば、ＳＦＣプログラム中の「属性がＮＣであるアクション」内にプログラミングされたＮＣプログラムを記憶部２００にＮＣプログラム２０４として格納する。そして、プログラム処理部１３０（特に、プログラム置換部１３２）は、「属性がＮＣであるアクション」内のＮＣプログラムを、そのＮＣプログラムに対応する番号を付与した「ＦＢ（ＮＣ呼出）」に入れ替える（Ｓ３４０）。
【０１８４】
プログラム処理部１３０（特に、シーケンスプログラム処理部１３３）は、ＳＦＣプログラムをコンパイルする（Ｓ３５０）。プログラム処理部１３０は、「『属性がＮＣであるアクション』内のＮＣプログラムが、そのＮＣプログラムに対応する番号を付与された『ＦＢ（ＮＣ呼出）』に入れ替えられたＳＦＣプログラム」をコンパイルする（Ｓ１５０）。
【０１８５】
プログラム分離部１３１が「属性がＮＣであるアクションはない」と判定すると（Ｓ３２０でＮｏ）、プログラム処理部１３０（特に、シーケンスプログラム処理部１３３）は、ＳＦＣプログラムをコンパイルする（Ｓ３５０）。プログラム処理部１３０は、「属性がＮＣであるアクション」を含まないＳＦＣプログラムをコンパイルする。
【０１８６】
プログラム分離部１３１が保持（退避）したＮＣプログラムをＮＣプログラム処理部１３４に渡して、図１１に示すＳ４１０へと処理が遷移する（Ｓ３６０）。なお、ＮＣプログラム処理部１３４は、ＮＣプログラムをプログラム分離部１３１から取得する代わりに、記憶部２００に格納されたＮＣプログラム２０４を取得してもよい。また、シーケンスプログラム処理部１３３は、コンパイルしたＳＦＣプログラム（シーケンスプログラム）を、シーケンスプログラム転送部１４１に渡す（Ｓ３７０）。
【０１８７】
図１１は、図８〜１０に示した処理の後にツール１０が実行する処理の概要を示すフロー図である。ＮＣプログラム処理部１３４は、プログラム分離部１３１からＮＣプログラムを受け取ると（Ｓ４１０）、受け取った「ＮＣプログラム」を加工し、例えば、コメントの削除などを実行した後、コンパイルする（Ｓ４２０）。ＮＣプログラム処理部１３４は、加工した「ＮＣプログラム」を、つまり、コンパイルした「ＮＣプログラム」を、ＮＣプログラム転送部１４２に渡す（Ｓ４３０）。なお、ツール１０の実行する以降の転送処理は、一般的なコントローラへの転送処理に準ずるため、詳細は略記する。
【０１８８】
（置き換えの具体例）
図１２は、プログラム置換部１３２が、シーケンスプログラム（ユーザプログラム）中のＮＣプログラム（ＮＣ部品）を、そのＮＣプログラムを呼び出す「ＦＢ（ＮＣ呼出）」に置き換える一例を示す図である。具体的には、図１２の紙面上段には、図６に例示したのと同様の、ＮＣ部品を含むユーザプログラム（シーケンスプログラム）が示されている。図１２の紙面上段において、「ＮＣプログラムの開始を示すプラグマ」である「＃ＮＣ＿ＰＲＯＧ  １００」と、「ＮＣプログラムの終了を示すプラグマ」である「＃ＥＮＤ＿ＮＣ＿ＰＲＯＧ」と、に囲まれた領域Ａｒ３０４（０２）が、ＮＣプログラム編集領域である。図１２の紙面下段には、図４の（Ｃ）において、「置き替え先ＦＢ（ＮＣ呼出）」の「ＳＴ」の段に例示したのと同様の、「ＦＢ（ＮＣ呼出）（０２）」の例が示されている。
【０１８９】
プログラム置換部１３２は、図１２の紙面上段に示すＮＣプログラム編集領域（点線で囲んだ領域Ａｒ３０４（０２））を、図１２の紙面下段に示す「ＦＢ（ＮＣ呼出）（０２）」に置き換える。「ＦＢ（ＮＣ呼出）（０２）」は、領域Ａｒ３０４（０２）に記載されているＮＣプログラム（ＮＣ部品）を呼び出すＦＢであって、領域Ａｒ３０４（０２）に記載されているＮＣプログラムのみに対応付けられたＩＤ（番号）を付与されたＦＢである。
【０１９０】
図１２には、ＳＴプログラム中のＮＣ部品を、図４の（Ｃ）における「置き替え先ＦＢ（ＮＣ呼出）」の「ＳＴ」の段に例示したのと同様の「ＦＢ（ＮＣ呼出）」であって、そのＮＣ部品を呼び出す「ＦＢ（ＮＣ呼出）」に置き換える例を示した。プログラム置換部１３２は、ＬＤプログラム、ＦＢＤプログラム、および、ＳＦＣプログラム中のＮＣ部品についても、図４の（Ｃ）における「置き替え先ＦＢ（ＮＣ呼出）」に例示したのと同様の「ＦＢ（ＮＣ呼出）」であって、そのＮＣ部品を呼び出す「ＦＢ（ＮＣ呼出）」に置き換える。
【０１９１】
（ＮＣプログラム一覧表示機能）
図１３は、ツール１０の備える「ＮＣプログラム一覧表示機能」の概要を説明するための図である。シーケンスプログラム（ユーザプログラム）中に複数のＮＣプログラムを散在させて記載した場合、ユーザは、その複数のＮＣプログラムを一覧で確認したいことがあり得る。ツール１０は、「ＮＣプログラム一覧表示機能」を備え、表示制御部１２０（特に、ＮＣプログラム処理部１３４）は、シーケンスプログラム中に存在する複数のＮＣプログラムのみを、図１３に例示するように別のビューで一覧表示する。ツール１０は、シーケンスプログラム中に存在する複数のＮＣプログラムを一覧表示することにより、「どのＮＣプログラムが動作するのか」について、一覧可読性が低下することを防ぐ。
【０１９２】
図１４は、「ＮＣプログラム一覧表示機能」を実行するツール１０の処理の一例を示すフロー図である。図１４に例示するように、操作受付部１１０がメニュー等において「ＮＣプログラム一覧表示」を選択するユーザ操作を受け付けると（Ｓ５１０）、表示制御部１２０（特に、プログラム分離部１３１）は、以下の処理を実行する。
【０１９３】
例えば、ＬＤ編集画面において「ＮＣプログラム一覧表示」を選択するユーザ操作があると、プログラム分離部１３１は、そのＬＤ編集画面に表示中のユーザプログラムを検索し、全てのＮＣボックス内のＮＣプログラムのデータを抽出する（Ｓ５２０）。すなわち、「ＮＣプログラム一覧表示」を選択するユーザ操作があると、プログラム分離部１３１は、編集画面で編集可能に表示されているユーザプログラム（シーケンスプログラム）中の全てのＮＣプログラムを抽出する。なお、プログラム分離部１３１は、任意のユーザプログラムについて「ＮＣプログラム一覧表示」を選択するユーザ操作があると、そのユーザプログラム中の全てのＮＣプログラムを抽出してもよい。
【０１９４】
プログラム分離部１３１は、抽出したＮＣプログラムのデータをクリップボードにコピーし、または、テンポラリファイルを作成し（Ｓ５３０）、ＮＣプログラムエディタ部１２３に、クリップボードのデータ、または、テンポラリファイルのデータを渡す（Ｓ５４０）。ＮＣプログラムエディタ部１２３は、別のビューで、プログラム分離部１３１が抽出した全てのＮＣプログラムの一覧を表示し（Ｓ５５０）し、つまり、クリップボードのデータ、または、テンポラリファイルのデータを一覧表示する。
【０１９５】
図１３および図１４を用いて説明してきたように、ツール１０において、表示制御部１２０は、前記ユーザプログラム中の前記ＮＣプログラムを一覧表示してもよい。
【０１９６】
前記の構成によれば、ツール１０は、前記ユーザプログラム中の前記ＮＣプログラムを一覧表示する。具体的には、ツール１０は、表示装置４０に、前記ユーザプログラム中の前記ＮＣプログラムを一覧表示させる。
【０１９７】
したがって、ツール１０は、例えば、１つの前記ユーザプログラム中に複数の前記ＮＣプログラムが散在している場合であっても、前記ユーザプログラム中に散在する複数の前記ＮＣプログラムを一覧表示し可読性を向上させることができるという効果を奏する。
【０１９８】
（ＮＣプログラム拡大表示機能）
図１５は、ツール１０の備える「ＮＣプログラム拡大表示機能」の概要を説明するための図である。編集画面において、ユーザプログラム（シーケンスプログラム）中にＮＣプログラムをプログラミングするための「ＮＣプログラム編集領域」は大きく表示することができないため、ユーザの可読性は必ずしも好くない。そこで、ツール１０は、ＮＣボックス等の「ＮＣプログラム編集領域」でプログラミング中のＮＣプログラムについて「ＮＣプログラム拡大表示（ＮＣボックス単独表示）」を選択するユーザ操作を受け付けると、そのＮＣプログラムを別のエディタで拡大表示する。ツール１０は、「ＮＣプログラム編集領域」でプログラミング中のＮＣプログラムについて、別エディタで編集可能に表示することにより、可読性が低下するのを防ぐ。
【０１９９】
図１６は、「ＮＣプログラム拡大表示機能」を実行するツール１０の処理の一例を示すフロー図である。図１６に例示するように、操作受付部１１０は、例えば、ＬＤ編集画面において、任意のＮＣボックスを選択して「ＮＣボックス単独表示（ＮＣプログラム拡大表示）」を指示するユーザ操作を受け付ける（Ｓ６１０）。言い換えれば、操作受付部１１０は、別ビューで編集可能に拡大表示すべきＮＣプログラムを選択するユーザ操作を受け付ける。
【０２００】
表示制御部１２０（特に、プログラム分離部１３１）は、選択されたＮＣボックス等の「ＮＣプログラム編集領域」内のＮＣプログラムのデータを、クリップボードにコピーし、または、テンポラリファイルを作成する（Ｓ６２０）。プログラム分離部１３１は、ＮＣプログラムエディタ部１２３に、作成した「クリップボードのデータ、または、テンポラリファイルのデータ」を渡す（Ｓ６３０）。ＮＣプログラムエディタ部１２３は、プログラム分離部１３１から取得したＮＣプログラムを、別ビューで、編集可能に拡大表示する（Ｓ６４０）。
【０２０１】
図１５および図１６を用いて説明してきたように、ツール１０において、表示制御部１２０は、前記ユーザプログラム中の前記ＮＣプログラムを、前記ユーザプログラムを編集可能に表示した画面とは異なる画面に、編集可能に拡大表示してもよい。
【０２０２】
前記の構成によれば、ツール１０は、前記ユーザプログラム中の前記ＮＣプログラムを、前記ユーザプログラムを編集可能に表示した画面とは異なる画面に、編集可能に拡大表示する。つまり、ツール１０は、前記ユーザプログラム中でプログラミング中の前記ＮＣプログラムを別のエディタビューで拡大表示することができる。具体的には、ツール１０は、表示装置４０に、前記ユーザプログラム中でプログラミング中の前記ＮＣプログラムを別のエディタビューで拡大表示させる。
【０２０３】
したがって、ツール１０は、前記ＮＣプログラムの可読性が低下するのを防ぎ、前記ＮＣプログラムをユーザが効率的にプログラミングすることのできる環境を提供することができるという効果を奏する。
【０２０４】
（ＩＥＣ-ＮＣプログラムテーブル表示機能）
図１７は、ツール１０の備える「ＩＥＣ-ＮＣプログラムテーブル表示機能」の概要を説明するための図である。「ＩＥＣ-ＮＣプログラムテーブル表示機能」は、ＮＣプログラムと、そのＮＣプログラムを呼び出す「ＦＢ（ＮＣ呼出）」と、そのＮＣプログラムを含むユーザプログラム（シーケンスプログラム）と、を対応付けて表示する機能である。
【０２０５】
「ＩＥＣ-ＮＣプログラムテーブル表示機能」は、例えば、任意のＮＣプログラムについて、そのＮＣプログラムのＩＤ（プログラム番号）、プログラム名、内容に加えて、そのＮＣプログラムを呼び出す「ＦＢ（ＮＣ呼出）」のＩＤ等を表示する機能である。「ＩＥＣ-ＮＣプログラムテーブル表示機能」は、ＮＣプログラムと、そのＮＣプログラムを呼び出す「ＦＢ（ＮＣ呼出）」と、を対応付けた情報を一覧表示する。
【０２０６】
ユーザは、ＩＥＣ-ＮＣプログラムテーブルを確認することにより、ユーザプログラム（シーケンスプログラム）内のＦＢ（特に、「ＦＢ（ＮＣ呼出）」）と、そのＦＢに対応するＮＣプログラムとの関係を確認することができる。したがって、ユーザは、「どのＮＣプログラムが、どのユーザプログラムで利用されているか」を容易に把握することが可能となる。
【０２０７】
また、「ＩＥＣ-ＮＣプログラムテーブル表示機能」は、任意のＮＣプログラムについて、そのＮＣプログラムを含むシーケンスプログラム（ユーザプログラム）のＩＤ（プログラム番号）、プログラム名等を表示する機能である。
【０２０８】
図１７の紙面右側上段に例示したＩＥＣ-ＮＣプログラムテーブルの１行目には、「プログラム名（ＮＣプログラム名）＝ＮＣ  Ｐｒｏｇｒａｍ１」であるＮＣプログラムについて、以下の情報が表示されている。すなわち、「プログラム名＝ＮＣ  Ｐｒｏｇｒａｍ１」であるＮＣプログラムについて、「内容（ＮＣプログラム内容）」が「G01 X00 Y100、M30」であることが示されている。また、「プログラム名＝ＮＣ  Ｐｒｏｇｒａｍ１」であるＮＣプログラムは、「プログラム名（ＩＥＣプログラム名）＝ローダ処理」であるユーザプログラム（シーケンスプログラム）中に記載されていることが示されている。
【０２０９】
図１７の紙面右側上段に例示したＩＥＣ-ＮＣプログラムテーブルの２行目には、「プログラム名（ＮＣプログラム名）＝ＮＣ  Ｐｒｏｇｒａｍ２」であるＮＣプログラムについて、以下の情報が表示されている。すなわち、「プログラム名＝ＮＣ  Ｐｒｏｇｒａｍ２」であるＮＣプログラムについて、「内容（ＮＣプログラム内容）」が「G01 X10 Y20、M30」であることが示されている。また、「プログラム名＝ＮＣ  Ｐｒｏｇｒａｍ２」であるＮＣプログラムは、「プログラム名（ＩＥＣプログラム名）＝加工機械開始」であるユーザプログラム（シーケンスプログラム）中に記載されていることが示されている。
【０２１０】
図１７の紙面右側上段に例示したＩＥＣ-ＮＣプログラムテーブルの３行目には、「プログラム名（ＮＣプログラム名）＝ＮＣ  Ｐｒｏｇｒａｍ３」であるＮＣプログラムについて、以下の情報が表示されている。すなわち、「プログラム名＝ＮＣ  Ｐｒｏｇｒａｍ３」であるＮＣプログラムについて、「内容（ＮＣプログラム内容）」が「G02 X0 Y-10、M30」であることが示されている。また、「プログラム名＝ＮＣ  Ｐｒｏｇｒａｍ３」であるＮＣプログラムは、「プログラム名（ＩＥＣプログラム名）＝加工機械開始」であるユーザプログラム（シーケンスプログラム）中に記載されていることが示されている。
【０２１１】
したがって、図１７の紙面右側上段に例示したＩＥＣ-ＮＣプログラムテーブルを確認したユーザは、任意のＮＣプログラムについて、「どのユーザプログラムで利用されているか」を容易に把握することができる。また、ユーザは、図１７の紙面右側上段に例示したＩＥＣ-ＮＣプログラムテーブルの２行目および３行目を確認して、「プログラム名＝加工機械開始」であるユーザプログラム中に含まれている全てのＮＣプログラムを把握することができる。
【０２１２】
なお、図１７の紙面左側下段に例示するように、１つのＮＣプログラム（ＮＣ部品）を複数の異なるユーザプログラム（シーケンスプログラム）で利用することもできる。言い換えれば、同じ１つのＮＣプログラム（ＮＣ部品）を呼び出す「ＦＢ（ＮＣ呼出）」を、つまり、ＩＤが同じ「ＦＢ（ＮＣ呼出）」を、複数の異なるユーザプログラム（シーケンスプログラム）で利用することもできる。
【０２１３】
１つのユーザプログラム（シーケンスプログラム）中に複数のＮＣプログラムが散在すると一覧可読性が下がるが、ユーザは、ＩＥＣ-ＮＣプログラムテーブルを利用して、そのユーザプログラム中の全てのＮＣプログラムの一覧を確認することができる。ツール１０は、ＮＣプログラムとそのＮＣプログラムを利用するユーザプログラム（シーケンスプログラム）との関係を一覧表示し、例えば、１つ以上のＮＣプログラムの各々について、そのＮＣプログラムが埋め込まれたユーザプログラムと対応付けて表示する。また、ツール１０は、ＮＣプログラムとそのＮＣプログラムを呼び出すＦＢとの関係を一覧表示し、例えば、１つ以上のＮＣプログラムの各々について、そのＮＣプログラムを呼び出すＦＢと対応付けて表示する。ツール１０は、１つ以上のＮＣプログラムの各々について、「そのＮＣプログラムを呼び出すＦＢ」および「そのＦＢの記載されているユーザプログラムのＩＤ等」と対応付けて表示してもよい。さらに、ツール１０は、ＩＥＣ-ＮＣプログラムテーブルにおいて任意のＮＣプログラムを選択するユーザ操作を受け付けると、そのＮＣプログラムの編集画面を別ビューで表示する。
【０２１４】
図１８は、「ＩＥＣ-ＮＣプログラムテーブル表示機能」を実行するツール１０の処理の一例を示すフロー図である。図１８に例示するように、操作受付部１１０がメニュー等において「ＩＥＣ-ＮＣプログラムテーブル表示」を選択するユーザ操作を受け付けると（Ｓ７１０）、表示制御部１２０（特に、プログラム分離部１３１）は、以下の処理を実行する。すなわち、プログラム分離部１３１は、記憶部２００に格納されているユーザプログラム２０１を検索して、ユーザプログラム名と、ＮＣボックス等の「ＮＣプログラム編集領域」内のＮＣプログラムのデータとを対応付けたＩＥＣ−ＮＣプログラムテーブル２０５を生成する（Ｓ７２０）。
【０２１５】
プログラム分離部１３１は、生成したＩＥＣ−ＮＣプログラムテーブル２０５を、表示制御部１２０（例えば、ＮＣプログラムエディタ部１２３）に渡す（Ｓ７３０）。プログラム分離部１３１からＩＥＣ−ＮＣプログラムテーブル２０５を取得した表示制御部１２０は、取得したＩＥＣ−ＮＣプログラムテーブル２０５を、表示装置４０に表示させる（Ｓ７４０）。
【０２１６】
図１７および図１８を用いて説明してきたように、ツール１０において、表示制御部１２０は、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムのプログラム名および内容の少なくとも一方と、（Ｂ）前記ユーザプログラムまたは前記シーケンスプログラムのプログラム名、および、前記ＮＣプログラムを呼び出すＦＢの識別情報の少なくとも一方と、を対応付けて表示してもよい。
【０２１７】
前記の構成によれば、ツール１０は、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムのプログラム名および内容の少なくとも一方と、（Ｂ）前記ユーザプログラムまたは前記シーケンスプログラムのプログラム名、および、前記ＮＣプログラムを呼び出すＦＢの識別情報の少なくとも一方と、を対応付けて表示する。具体的には、ツール１０は、表示装置４０に、（Ａ）前記ユーザプログラム中の前記ＮＣプログラムのプログラム名および内容の少なくとも一方と、（Ｂ）前記ユーザプログラムまたは前記シーケンスプログラムのプログラム名、および、前記ＮＣプログラムを呼び出すＦＢの識別情報の少なくとも一方と、を対応付けて表示させる。
【０２１８】
したがって、ツール１０は、例えば、複数の前記ユーザプログラムの各々に、複数の前記ＮＣプログラムが散在している場合であっても、複数の前記ＮＣプログラムの各々が存在している前記ユーザプログラムまたは前記シーケンスプログラムをユーザが容易に確認することを可能とするという効果を奏する。
【０２１９】
〔ソフトウェアによる実現例〕
ツール１０の制御ブロック（特に、操作受付部１１０、表示制御部１２０、プログラム処理部１３０、および、プログラム転送部１４０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【０２２０】
後者の場合、ツール１０は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０２２１】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０２２２】
１０  ツール（支援装置）
２０  コントローラ（産業用制御装置）
１１０  操作受付部（受付部）
１２０  表示制御部
１３０  プログラム処理部
１４０  プログラム転送部
【図１】
2018194898.tif 000003
【図２】
2018194898.tif 000004
【図３】
2018194898.tif 000005
【図４】
2018194898.tif 000006
【図５】
2018194898.tif 000007
【図６】
2018194898.tif 000008
【図７】
2018194898.tif 000009
【図８】
2018194898.tif 000010
【図９】
2018194898.tif 000011
【図１０】
2018194898.tif 000012
【図１１】
2018194898.tif 000013
【図１２】
2018194898.tif 000014
【図１３】
2018194898.tif 000015
【図１４】
2018194898.tif 000016
【図１５】
2018194898.tif 000017
【図１６】
2018194898.tif 000018
【図１７】
2018194898.tif 000019
【図１８】
2018194898.tif 000020
【図１９】
2018194898.tif 000021