(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプログラム要素を含み、各プログラム要素に対応する再利用パラメータの内容をユーザが設定することで、その設定内容に応じたプログラムを生成するプログラム部品（１０）と、
前記プログラム部品（１０）が保持されるプログラム部品保持部（１１）と、
前記プログラム部品（１０）を再利用してプログラムを編集するプログラム編集部（６）と
を備え、
前記プログラム部品（１０）は、
同一プログラム要素のＡＮＤ結合を示すＡＮＤ論理結合プログラム要素、及び、同一プログラム要素のＯＲ結合を示すＯＲ論理結合プログラム要素の少なくともいずれか１つを含み、
前記ＡＮＤ論理結合プログラム要素または前記ＯＲ論理結合プログラム要素の再利用パラメータにパラメータが列挙して設定されることで、当該パラメータの列挙数に応じた回数で前記ＡＮＤ結合または前記ＯＲ結合された同一プログラム要素を含むプログラムを生成する
ことを特徴とするプログラム作成支援装置。
【請求項２】
使用者が新たな前記プログラム部品を定義可能なプログラム部品定義部（１２）をさらに備え、
前記プログラム部品定義部（１２）にて、前記ＡＮＤ論理結合プログラム要素、及び、前記ＯＲ論理結合プログラム要素の少なくともいずれか１つを含む前記新たなプログラム部品が定義された場合に、
前記新たなプログラム部品に含まれる前記ＡＮＤ論理結合プログラム要素または前記ＯＲ論理結合プログラム要素の再利用パラメータにパラメータが列挙して設定されることで、当該パラメータの列挙数に応じた回数で前記ＡＮＤ結合または前記ＯＲ結合された同一プログラム要素を含むプログラムを生成することを特徴とする
請求項１記載のプログラム作成支援装置。
【請求項３】
前記プログラム部品保持部（１１）は、
プログラム部品（１０）の構成要素として使用でき、且つ、少なくとも１つのプログラム要素を含み、各プログラム要素に対応する再利用パラメータの内容をユーザが設定することで、その設定内容に応じたプログラムを生成するプログラム要素部品（１７）をさらに保持し、
前記プログラム要素部品（１７）は、
他のプログラム要素部品の構成要素としても使用可能であって、
前記プログラム部品（１０）または前記プログラム要素部品（１７）は、同一プログラム要素部品のＡＮＤ結合を示すＡＮＤ論理結合プログラム要素部品、及び、同一プログラム要素部品のＯＲ結合を示すＯＲ論理結合プログラム要素部品の少なくともいずれか１つを含み、
前記ＡＮＤ論理結合プログラム要素部品または前記ＯＲ論理結合プログラム要素部品の再利用パラメータにパラメータが列挙して設定されることで、当該パラメータの列挙数に応じた回数で前記ＡＮＤ結合または前記ＯＲ結合された同一プログラム要素部品を含むプログラムを生成する
請求項１記載のプログラム作成支援装置。
【請求項４】
使用者が新たな前記プログラム要素部品を定義可能なプログラム要素部品定義部（１５）と、
使用者がプログラム要素部品（１７）を用いて新たな前記プログラム部品（１０）を定義可能なプログラム部品定義部（１２）とをさらに備え、
前記プログラム要素部品定義部（１５）にて、前記ＡＮＤ論理結合プログラム要素部品、及び、前記ＯＲ論理結合プログラム要素部品の少なくともいずれか１つを含む前記新たなプログラム要素部品が定義された場合に、
前記新たなプログラム要素部品に含まれる前記ＡＮＤ論理結合プログラム要素部品または前記ＯＲ論理結合プログラム要素部品の再利用パラメータにパラメータが列挙して設定されることで、当該パラメータの列挙数に応じた回数で前記ＡＮＤ結合または前記ＯＲ結合された同一プログラム要素部品を含むプログラムを生成し、
前記プログラム部品定義部（１２）にて、前記ＡＮＤ論理結合プログラム要素、及び、前記ＯＲ論理結合プログラム要素の少なくともいずれか１つを含む前記新たなプログラム部品が定義された場合に、
前記新たなプログラム部品に含まれる前記ＡＮＤ論理結合プログラム要素または前記ＯＲ論理結合プログラム要素の再利用パラメータにパラメータが列挙して設定されることで、当該パラメータの列挙数に応じた回数で前記ＡＮＤ結合または前記ＯＲ結合された同一プログラム要素を含むプログラムを生成することを特徴とする
請求項３記載のプログラム作成支援装置。
【請求項５】
前記プログラム部品保持部（１１）は、
少なくとも１つのプログラム部品（１０）を含み、各プログラム部品の各プログラム要素に関連付けされた再利用パラメータの内容をユーザが設定することで、その設定内容に応じたプログラムを生成するプログラム階層部品（２１）をさらに保持し、
前記プログラム編集部（６）は、
前記プログラム階層部品（２１）を再利用してプログラムを編集することができ、
前記プログラム階層部品（２１）は、他のプログラム階層部品の構成要素としても使用可能であって、
再利用パラメータに複数のパラメータが列挙して設定されることで、各パラメータに応じた複数のプログラム部品が結合したプログラムを生成する
ことを特徴とする
請求項１から請求項３のいずれか記載のプログラム作成支援装置。
【請求項６】
使用者がプログラム部品（１０）を用いて新たな前記プログラム階層部品（２１）を定義可能なプログラム階層部品定義部（１９）をさらに備え、
前記新たなプログラム階層部品の再利用パラメータとして定義された複数のパラメータを、１つのパラメータと他のパラメータとに分けて前記プログラム部品の再利用パラメータに適用することを、当該１つのパラメータとするパラメータを変更するごとに行うことによってプログラムを生成する
請求項５記載のプログラム作成支援装置。
【請求項７】
前記プログラム編集部（６）は、
前記再利用パラメータの各々に設定されたパラメータに基づいて、編集後のプログラムに関する付属情報を生成する手段をさらに備える
請求項１から請求項３のいずれか記載のプログラム作成支援装置。
【請求項８】
前記プログラム編集部（６）は、
仕様記述ファイル（３０）に記述されている所定の仕様を、前記プログラム部品保持部（１１）に保持されているプログラム部品（１０）の前記再利用パラメータに適用しつつ、当該プログラム部品（１０）からプログラムを生成するプログラム生成部（３４）をさらに備える、
請求項１から請求項３のいずれか記載のプログラム作成支援装置。
【請求項９】
所定の仕様を設定する仕様設定部（３１）をさらに備え、
前記プログラム生成部（３４）は、
前記仕様設定部（３１）で設定された所定の仕様を、前記プログラム部品保持部（１１）に保持されているプログラム部品（１０）の前記再利用パラメータに適用しつつ、当該プログラム部品（１０）からプログラムを生成する、
請求項８記載のプログラム作成支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム作成支援装置に関し、特に、産業用コントローラやマイコンで実行される計測監視制御プログラムの作成支援装置に関する。
【背景技術】
【０００２】
従来より、各種設備の計測監視制御の目的で、プログラマブルコントローラ（Programmable Controller；ＰＣ）、モーションコントローラ（Motion Controller；ＭＣ）、数値制御装置コントローラ（Numerical Controller:ＮＣ）、検査装置コントローラ、表示器（Graphic Operation Terminal；ＧＯＴ）などの産業用コントローラが用いられている。産業用コントローラで実行される計測監視制御プログラムに用いられる言語としては、ラダーを代表例とするIEC61131-3規格に準拠した言語や、コントローラ専用の言語が挙げられる。また、産業用コントローラの代わりにマイコンを使用する場合の計測監視制御プログラムの言語としては、Ｃ言語やアセンブリ言語が挙げられる。【０００３】
以下、代表的にプログラマブルコントローラ（以下「ＰＣ」）を例に挙げて説明する。ＰＣは、計測監視制御プログラム（以下「プログラム」）を実行して、計測監視制御対象の状態を把握したり、動作を指示したりする。プログラムは、所定のプログラム作成支援装置（例えば、ラダー作成支援装置）を用いて作成され、主に変数、デバイス、数値を用いて記述される。【０００４】
ここで言うデバイスとは、ＰＣとそれが接続する計測監視制御対象との間の入出力を、ＰＣのメモリアドレスに割り付けたもの、および、ＰＣが内部的に使用するメモリアドレスを指している。例えば下記非特許文献１のプログラム作成支援装置（ラダー作成支援装置）に対応するＰＣでは、入力を割り付けたものをＸデバイス、出力を割り付けたものをＹデバイス、内部的に使用するビットデータ（内部リレー）をＭデバイス、内部的に使用するワードデータ（レジスタ）をＤデバイスやＲデバイス、というようにデータ種別によってデバイス文字が予め決められている。各デバイスのアドレスは、ＸデバイスやＹデバイスについては１６進表現、ＭデバイスやＤデバイスやＲデバイスについては１０進表現となっている。【０００５】
変数は、デバイスを指し示すものである。非特許文献１のプログラム作成支援装置に対応するＰＣでは、この変数は「ラベル」と呼ばれ、コンパイル時に特定のデバイスに割り付けられる。ラベルのデバイスへの割り付けは、プログラム作成者が直接指定する場合もあれば、コンパイル時に自動的に割り付けられる場合もある。ラベルとして使用できる文字は、デバイス文字など予め決められている文字以外の文字である。ラベルを用いてプログラムを記述した場合、プログラム自体の記述を変えずに、プログラム内のラベルに割り付けられるデバイスを変えることができる。【０００６】
ラダープログラムにおいて数値を記述する場合、各数値の先頭に１０進表現の記号Ｋあるいは１６進表現の記号Ｈを付すことになっている。例えば「Ｋ２５」は１０進表現の数値「２５」を表している。【０００７】
プログラム作成支援装置は、一般的にはパーソナルコンピュータ（以下「パソコン」）上で動作するソフトウェアツールとして提供され、ＰＣが設備の計測・監視・制御を行うためのプログラムの編集を支援する他、ＰＣをパソコンに接続して、パソコンで編集したプログラム（あるいはそれをコンパイルして得られた実行コード）をＰＣへ転送したり、設備の状態やプログラムの実行により変化する変数の値およびデバイスの値をモニタしたりする機能を有している。【０００８】
なお、プログラム作成支援装置が提供するプログラム編集機能やモニタ機能を搭載する表示器（ＧＯＴ）もある。これにより、ＰＣと常時接続状態にあるＧＯＴ上から、プログラムの編集や状態のモニタを行うことができる。【０００９】
計測監視制御対象である設備の仕様及びプログラムは、パソコン上で動作するソフトウェアツールを用いて記述されることにより電子的にデータ化されているが、仕様とプログラムとの間には電子データ的な相互関係がないことから、計測監視制御プログラムは、仕様に基づいて、プログラム作成支援装置を用いて人手により作成されている。そのため、仕様に記述された機能を過不足なく不具合なく動作させるプログラムの作成には多大な労力が必要であった。【００１０】
近年では、よく利用するプログラムをプログラムモジュール（Program Organization Unit；ＰＯＵ）として部品化し、設備の仕様に合致するＰＯＵを再利用しつつ、複数のＰＯＵからプログラムを構成することが可能なプログラム作成支援装置もある。プログラム言語がラダーであれば、ＰＯＵはサブルーチンや機能ブロック（Function Block；ＦＢ）に相当し、ストラクチャードテキスト（Structured Text；ＳＴ）やＣ言語であれば、ＰＯＵはサブルーチンや関数に相当する。【００１１】
さらに、複数のプログラム部品から成る任意のプログラムパターンに名前（マクロ名）を付けて登録しておき、プログラムの作成時にそれを呼び出して再利用（マクロ流用）できるマクロ機能を有するプログラム作成支援装置もある。このようにプログラム部品を再利用できるプログラム作成支援装置を用いることにより、プログラムの作成の労力は軽減される。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】「GX Developer Version 8 オペレーティングマニュアル」三菱電機株式会社、マニュアル番号SH-080356
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上記のように、プログラムの作成は、作成者すなわち人間が計測監視制御対象の仕様記述を理解した上で、手作業により行われる。近年のプログラム作成支援装置では、プログラム部品を再利用することにより、プログラムの作成労力はある程度軽減されるが、仕様に合致するようにプログラムを作成するためには、どのプログラム部品を選定し、それらをどのように組み合わせるかといった判断が難しく、さらにその労力を軽減することが望まれている。【００１４】
本発明は、計測監視制御プログラムの作成において、計測監視制御対象の使用に合致したプログラムを作成するためのプログラム部品の選定および組み合わせを行う労力を軽減し、プログラム作成効率の向上を図ることを目的とする。
【課題を解決するための手段】
【００１５】
本発明に係るプログラム作成支援装置は、少なくとも１つのプログラム要素を含み、各プログラム要素に対応する再利用パラメータの内容をユーザが設定することで、その設定内容に応じたプログラムを生成するプログラム部品と、前記プログラム部品が保持されるプログラム部品保持部と、前記プログラム部品を再利用してプログラムを編集するプログラム編集部とを備え、前記プログラム部品は、同一プログラム要素のＡＮＤ結合を示すＡＮＤ論理結合プログラム要素、及び、同一プログラム要素のＯＲ結合を示すＯＲ論理結合プログラム要素の少なくともいずれか１つを含み、前記ＡＮＤ論理結合プログラム要素または前記ＯＲ論理結合プログラム要素の再利用パラメータにパラメータが列挙して設定されることで、当該パラメータの列挙数に応じた回数で前記ＡＮＤ結合または前記ＯＲ結合された同一プログラム要素を含むプログラムを生成するものである。
【発明の効果】
【００１６】
本発明によれば、設備の計測監視制御に係る仕様に、より直接的に合致するようにプログラム部品を定義することが可能となり、仕様に合致するようにプログラムを作成するための、プログラム部品の選定と、それらプログラム部品の組み合わせに関する設計の労力を軽減し、仕様に記述された機能を過不足なく不具合なく動作するプログラムの作成の労力を大幅に軽減できる。【００１７】
この発明の目的、特徴、局面、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１に係るプログラム作成支援装置のハードウェア構成を示す図である。
【図２】実施の形態１に係るプログラム作成支援装置のソフトウェア構成を示す図である。
【図３】実施の形態１に係るプログラム作成支援装置のプログラム部品定義画面の一例を示す図である。
【図４】実施の形態１に係るプログラム部品に含まれる記号「＊」が付与された要素を説明するための図である。
【図５】実施の形態１に係るプログラム部品に含まれる記号「＋」が付与された要素を説明するための図である。
【図６】実施の形態１に係るプログラム部品の定義手順を示すフローチャートである。
【図７】実施の形態１に係る自己保持処理プログラム部品を再利用して生成される主軸正転処理プログラム（ラダーダイアグラム形式）を示す図である。
【図８】実施の形態１に係る自己保持処理プログラム部品を再利用して生成される主軸正転処理プログラム（インストラクションリスト形式）を示す図である。
【図９】実施の形態１に係るプログラム部品の定義手順の変更例を示すフローチャートである。
【図１０】実施の形態１に係るプログラム部品再利用画面の一例を示す図である。
【図１１】実施の形態１に係るプログラム部品を再利用するプログラムの生成方法を示すフローチャートである。
【図１２】実施の形態１に係るプログラム部品再利用画面の一例を示す図である。
【図１３】実施の形態１に係る自己保持処理プログラム部品を再利用して生成される主軸オリエンテーション処理プログラムを示す図である。
【図１４】実施の形態１に係るプログラム作成支援装置が生成するプログラムの付属情報ファイルの一例を示す図である。
【図１５】実施の形態１に係る付属情報ファイルの生成方法を示すフローチャートである。
【図１６】実施の形態２に係るプログラム作成支援装置のソフトウェア構成を示す図である。
【図１７】実施の形態２に係るプログラム要素部品定義画面の一例を示す図である。
【図１８】実施の形態２に係るプログラム部品定義画面の一例を示す図である。
【図１９】実施の形態２に係るプログラム部品再利用画面の一例を示す図である。
【図２０】実施の形態２に係るプログラム部品再利用画面に付随するプログラム要素部品再利用画面の一例を示す図である。
【図２１】実施の形態２に係るプログラム部品再利用画面に付随するプログラム要素部品再利用画面の一例を示す図である。
【図２２】実施の形態２に係るＭコード完了処理プログラム部品を再利用して生成されるプログラムを示す図である。
【図２３】実施の形態３に係るプログラム作成支援装置のソフトウェア構成を示す図である。
【図２４】実施の形態３に係るプログラム階層部品の定義手順を示すフローチャートである。
【図２５】実施の形態３に係るプログラム階層部品定義画面の一例を示す図である。
【図２６】実施の形態３に係るプログラム階層部品定義画面の一例を示す図である。
【図２７】実施の形態３に係るプログラム部品定義画面の一例を示す図である。
【図２８】実施の形態３に係る階層部品再利用画面の一例を示す図である。
【図２９】実施の形態３に係る排他的選択数値設定プログラム階層部品を再利用して生成される切削オーバライド設定スイッチプログラムを示す図である。
【図３０】切削オーバライド設定スイッチの一例を示す図である。
【図３１】実施の形態３に係るプログラム階層部品を再利用するプログラムの生成方法を示すフローチャートである。
【図３２】実施の形態１に係るプログラム部品再利用画面の一例を示す図である。
【図３３】実施の形態４に係る工作機械の構成を示すブロック図である。
【図３４】実施の形態４に係るプログラム作成支援装置のソフトウェア構成を示す図である。
【図３５】デバイスの仕様における設定を示す図である。
【図３６】操作盤の仕様における設定を示す図である。
【図３７】操作盤の仕様における設定を示す図である。
【図３８】操作盤の仕様における設定を示す図である。
【図３９】Ｍコードの仕様における設定を示す図である。
【図４０】実施の形態４に係るモード反転処理プログラム部品を示す図である。
【図４１】実施の形態４に係るＭコードデコード処理プログラム部品を示す図である。
【図４２】実施の形態４に係るＡＮＤ条件処理プログラム部品を示す図である。
【図４３】モード反転機能生成部により作成される操作盤処理プログラムを示す図である。
【図４４】モード反転機能生成部の属性を示す図である。
【図４５】モード反転機能生成部の動作を示すフローチャートである。
【図４６】モード反転機能生成部が取得するデバイスコメントを示す図である。
【図４７】運転モード選択機能生成部により作成される操作盤処理プログラムを示す図である。
【図４８】運転モード選択機能生成部の属性を示す図である。
【図４９】運転モード選択機能生成部の動作を示すフローチャートである。
【図５０】切削オーバライド機能生成部の属性を示す図である。
【図５１】切削オーバライド機能生成部の動作を示すフローチャートである。
【図５２】Ｍコード機能生成部により作成されるＭコード処理プログラムを示す図である。
【図５３】Ｍコード機能生成部の属性を示す図である。
【図５４】Ｍコード機能生成部の動作を示すフローチャートである。
【図５５】Ｍコード機能生成部がＭコードデコード処理プログラムを生成する動作を示すフローチャートである。
【図５６】Ｍコード機能生成部が機能処理プログラムを生成する動作を示すフローチャートである。
【図５７】Ｍコード機能生成部が機能処理プログラムを生成する動作を示すフローチャートである。
【図５８】Ｍコード機能生成部が機能処理プログラムを生成する動作を示すフローチャートである。
【図５９】Ｍコード機能生成部が完了処理プログラムを生成する動作を示すフローチャートである。
【図６０】プログラム編集部が生成するラダープログラムの一例を示す図である。
【図６１】プログラム編集部が生成するラダープログラムの一例を示す図である。
【発明を実施するための形態】
【００１９】
＜実施の形態１＞
実施の形態１では、プログラム部品を定義して再利用する計測監視制御プログラムの作成方法の一例として、ラダープログラムの作成方法について説明する。
【００２０】
図１は、実施の形態１に係るプログラム作成支援装置のハードウェア構成を示す図である。プログラム作成支援装置１は、マイクロプロセッサ２、表示部３、入力部４、保存部５から構成される。計測監視制御対象である設備の仕様記述および計測監視制御プログラム（以下「プログラム」）は、保存部５にファイルとして保持される。表示部３は、プログラム作成支援装置１の各種情報を表示することができる。例えばユーザが入力部４を用いて設備の仕様をプログラム作成支援装置１に入力する際には、その入力項目が表示部３に表示される。また後述する各種の操作画面は、この表示部３に表示される。マイクロプロセッサ２は、ユーザが入力して保存部５に保存されている設備の仕様に基づき、プログラムの生成処理を実行する。
【００２１】
図２は、プログラム作成支援装置１の機能ブロック構成（ソフトウェアブロック構成）を示した図である。図２に示す各機能ブロックは、マイクロプロセッサ２が実行するソフトウェアにより、図１に示した各ハードウェアが制御されることによって実現される。
【００２２】
プログラム作成支援装置１は、ユーザの操作（プログラム編集）に基づいてプログラムの編集を行うプログラム編集部６と、ユーザの操作（プログラム部品定義入力）に基づいて再利用可能なプログラム部品１０を定義するプログラム部品定義部１２と、プログラム部品定義部１２によって定義されたプログラム部品１０を格納するプログラム部品保持部１１とを備える。本発明においてプログラム部品１０は、再利用の際に設定される再利用パラメータ１４を含んでおり、プログラム部品１０はその設定内容に応じて様々な形態をとることができる（詳細は後述する）。
【００２３】
本実施の形態のプログラム編集部６は、編集後のプログラム８を出力する他、必要に応じてそれに関連する付属情報ファイル９（例えばデバイスの内容を説明するコメント等）も出力することができる。
【００２４】
なお、図２ではプログラム部品定義部１２がプログラム作成支援装置１に内蔵された構成を示したが、プログラム部品定義部１２は、プログラム作成支援装置１とは別の装置として規定されていてもよい。
【００２５】
以下、本実施の形態のプログラム作成支援装置１の動作、およびプログラム作成支援装置１を用いたプログラム作成方法について説明する。ここではプログラム作成支援装置１がラダープログラムを生成する例を示す。
【００２６】
図３は、ユーザがプログラム部品定義部１２を用いてプログラム部品１０を定義する際の操作画面表示（プログラム部品定義画面）の例である。ここではラダープログラムでよく使用される自己保持処理のプログラム部品を定義するときの例を示している。
【００２７】
図３に示すプログラム部品定義画面（ラダー部品定義画面）は、上から順に、ラダーダイアグラムの作成に使用するアイコンが表示されたアイコン表示領域と、それらのアイコンを操作してプログラム部品のラダーダイアグラムを編集するためのプログラム編集領域と、プログラム部品の再利用パラメータを定義するためのパラメータ定義領域と、作成したプログラム部品の名前を入力するためのプログラム部品名入力領域とが配設された構成となっている。
【００２８】
アイコン表示領域には、接点（ａ接点「-| |-」およびｂ接点「-|/|-」）、命令（「-[ ]-」）、コイル（「-( )-」）といった一般的なプログラム要素のアイコンに加え、それらに「＊」や「＋」の記号が付されたアイコンが設けられている。「＊」や「＋」の記号が付されたアイコンは、１以上のプログラム要素から成る集合体（コレクション）に対応するものであり、「＊」が付されたアイコンは、図４のようにプログラム要素がＡＮＤ結合したリレー列に対応し、「＋」が付されたアイコンは、図５のようにプログラム要素がＯＲ結合したリレー列に対応している。なお、ラダーダイアグラムでは、コイルはＡＮＤ結合しないので、「＊」が付与されたコイルのアイコンは無い。
【００２９】
プログラム編集領域は、上記の各種アイコンを操作してラダーダイアグラムを編集できる領域であり、従来のラダープログラム作成支援装置が備えるプログラム編集画面（ラダー編集画面）と同様の構成でよい。
【００３０】
パラメータ定義領域は、プログラム部品を再利用する際に設定すべき再利用パラメータを定義するための領域であり、プログラム部品の作成（定義）を行う際、ユーザにより所定の事項が入力される。
【００３１】
図６は、本実施の形態に係るプログラム部品の作成手順を示すフローチャートである。同図に基づき、プログラム部品の作成手順を説明する。ここでは図３のように、自己保持処理のプログラム部品を作成する場合を例示する。
【００３２】
まず、プログラム部品の各要素に付与する再利用パラメータを、当該プログラム部品の記述に用いる部品変数として定義する（Ｓ１１）。これは、ユーザがプログラム部品定義画面のパラメータ定義領域で再利用パラメータを設定することにより行われる。図３の例では、Ｎｏ．１の再利用パラメータとして部品変数ＶＢ１が定義され、Ｎｏ．２の再利用パラメータとして部品変数ＶＢ２が定義され、Ｎｏ．３の再利用パラメータとして部品変数ＶＢ３が定義されている。
【００３３】
なおプログラム部品の再利用パラメータとして、プログラムコメントとジャンプ用ラベル（プログラムポインタ）を用意してもよい。それらは各プログラム部品が必ず有する再利用パラメータとして規定されていてもよい。
【００３４】
再利用パラメータとしてのプログラムコメントには、プログラム部品を再利用してプログラムを生成する際に、生成されるプログラムに関するコメントの文字列が設定される。その用途としては、例えば、生成するプログラムの冒頭に、「開始」の文字列を先頭に付したプログラムコメントを記述し、同プログラムの末尾に、「終了」の文字列を先頭に付したプログラムコメントを記述するなどして、その間のプログラムの内容を示すことなどが挙げられる。ラダープログラムではプログラムコメントはステートメントとして扱われ、プログラムコメントとして「主軸正転」が設定された場合、生成したプログラムにおいて図７や図８のようにコメントが記述される。図７はラダーダイアグラム形式のプログラムであり、図８インストラクションリスト形式のプログラムである。
【００３５】
なお、プログラム部品に、プログラムコメントの再利用パラメータが定義されていたとしても、必要なければ文字列を設定しなくてもよい。その場合は、プログラムコメントを有さないプログラムが生成される。
【００３６】
再利用パラメータとしてのジャンプ用ラベル（プログラムポインタ）には、当該プログラム部品の再利用により生成されたプログラムに対し他のプログラムからのジャンプ（コール）処理が行われるときに、当該プログラムの位置を表すラベルが設定される。ラダープログラムの場合、プログラムポインタはデバイスの一種として扱われる。プログラムポインタとして「Ｐ３」が設置された場合、生成されたプログラムにおいて図７（ラダーダイアグラム形式）や図８（インストラクションリスト形式）のようにプログラムポインタが記述される。またプログラムポインタを有するプログラムの最後に、ジャンプ元に戻るためのリターン（ＲＥＴ）命令を付すようにしてもよい。
【００３７】
なお、プログラム部品にジャンプ用ラベルの再利用パラメータが設定されていたとしても、必要なければ何も設定しなくてよい。その場合は、ジャンプ用ラベルを有さないプログラムが生成される（ラダープログラムでは、プログラムポインタとＲＥＴ命令の無いプログラムが生成される）。
【００３８】
次に、プログラム編集領域にプログラム部品の構成を記述する（Ｓ１２）。ここではラダーダイアグラムの記述を行う。これはユーザが、プログラム部品定義画面のアイコンを操作することにより行われる。
【００３９】
通常のプログラム作成においては、接点等の各要素のパラメータとしてデバイスまたは変数（ラベル）を付与するが、プログラム部品の各要素に対しては、パラメータとしてデバイスまたは変数（ラベル）、あるいは再利用パラメータとして定義した部品変数を付与する。部品変数が付与された要素には、プログラム部品を再利用する際に、ユーザがそれに適用するデバイスまたは変数（ラベル）を指定する必要がある。デバイスまたは変数（ラベル）が付与された要素は、プログラム部品を再利用する際、そのデバイスまたは変数（ラベル）がそのまま適用される。
【００４０】
「＊」または「＋」が付された要素（コレクション）は、プログラム部品を再利用する際に設定するパラメータの数により、それに含まれる接点の数を指定できる。プログラム部品の作成段階では、コレクションに対してはデバイスまたは変数（ラベル）を付与せずに部品変数を１つ付与する。
【００４１】
自己保持処理のラダープログラムが有する自己保持用リレーは１つなので、自己保持用リレーには通常のａ接点とコイルが用いられる。一方、保持指令条件（ＯＮ条件）リレーや、保持キャンセル条件（ＯＦＦ条件）リレーは、さまざまな構造が考えられる。図３の例では、排他的選択処理やＭコード機能処理のプログラムの作成に再利用できる自己保持処理のプログラム部品を定義することを想定し、ＯＮ条件リレーおよびＯＦＦ条件リレーとして、１以上の接点がＡＮＤ結合したリレー列（「＊」が付された要素）を用いている。即ち、ＯＮ条件リレー列として「＊」が付されたａ接点を用い、ＯＦＦ条件リレー列として「＊」が付されたｂ接点を用いている。
【００４２】
またＯＮ条件リレー列にはＮｏ．１の再利用パラメータとして定義された部品変数ＶＢ１が付与され、ＯＦＦ条件リレー列にはＮｏ．２の再利用パラメータとして定義された部品変数ＶＢ２が付与され、自己保持用リレーにはＮｏ．３の再利用パラメータとして定義された部品変数ＶＢ３が付与されている。このことは、プログラム部品定義画面のプログラム編集領域の表示とパラメータ定義領域の表示との対応から判断できるが、ユーザは、その対応関係が一目で分かるようにパラメータ定義領域の「説明文」の欄に、図３の如く再利用パラメータが割り当てられた要素を説明するコメント（文字列）を入力することができる。
【００４３】
図３のように、パラメータ定義領域において、「＊」が付されたリレー列に付与されたＮｏ．１およびＮｏ．２の再利用パラメータの「列挙」の欄には「＊」の記号が表示される。また図３には示されていないが、「＋」が付されたリレー列に付与された再利用パラメータの「列挙」の欄には「＋」の記号が表示される。これによりその再利用パラメータがコレクションに付与されていることが明示される。なお自己保持用リレーは１つであるので、Ｎｏ．３の再利用パラメータの「列挙」の欄は空白となっている。
【００４４】
プログラム部品のラダーダイアグラムを記述した後、当該プログラム部品に名称を与える（Ｓ１３）。これは、ユーザがプログラム部品定義画面のプログラム部品名入力領域に文字列を入力することにより行われる。図３の例では、作成したプログラム部品に「自己保持処理」という名称を与えている。以上により、プログラム部品の作成が完了する。
【００４５】
なお、上の説明では、先に再利用パラメータの定義を行い（Ｓ１１）、その後それを用いてプログラム部品のプログラム（ラダーダイアグラム）を記述する（Ｓ１２）という手順であったが、その順番は逆でもよい。
【００４６】
即ち図９のフローチャートのように、先に未定義の変数を用いてプログラム部品のプログラム（ラダーダイアグラム）を記述し（Ｓ２１）、その後、記述したプログラムから未定義の変数を抽出して（Ｓ２２）、抽出した未定義の変数を再利用パラメータ（部品変数）として定義し（Ｓ２３）、プログラム部品の名称を付与する（Ｓ２４）といった手順でもよい。未定義の変数の抽出および再利用パラメータ（部品変数）としての定義づけは、ユーザがパラメータ定義領域に所定の事項を入力することによって行ってもよいし、プログラム部品定義部１２が未定義の変数を検索することによって行ってもよい。再利用パラメータと記述したプログラムで用いる部品変数との対応が矛盾しなければ、その方法は任意のものでよい。
【００４７】
次に、プログラム作成支援装置１にプログラムを自動生成させる手順を説明する。図１０は、プログラム作成支援装置１にプログラム部品を再利用してプログラムを自動生成させる際の操作画面表示（プログラム部品再利用画面）の一例を示している。同図では、図３のように定義された自己保持処理プログラム部品を再利用するケースを示している。
【００４８】
このプログラム部品再利用画面は、再利用するプログラム部品の名称が表示されるプログラム部品名表示領域と、再利用パラメータに適用するデバイスや変数（ラベル）などのパラメータを入力するためのパラメータ適用領域とを備えている。なお、プログラム部品再利用画面には、図３２の如く、選択されたプログラム部品の構造およびその各要素に付与された再利用パラメータのナンバー（Ｎｏ．）が表示されるプログラム表示領域を設けてもよい。その場合ユーザは、再利用しようとするプログラム部品の構造、並びに、各要素と再利用パラメータとの対応関係を容易に把握できるようになる。
【００４９】
プログラム部品名表示領域は、再利用するプログラム部品の名称を表示するだけでなく、既に定義済みの複数のプログラム部品から再利用するものを選択する選択メニューとしての機能を持っている。
【００５０】
プログラム部品再利用画面において、パラメータ適用領域に表示される再利用パラメータの「Ｎｏ．」、「列挙」、「説明文」の欄には、図３のプログラム部品定義画面のパラメータ定義領域で定義した内容が表示される。
【００５１】
ユーザは、パラメータ適用領域において、再利用パラメータに適用するパラメータを入力する。このとき「列挙」の欄に「＊」あるいは「＋」が表示されている再利用パラメータには、パラメータを２つ以上列挙して入力できる。また、再利用パラメータとしてのプログラムコメントには、生成するプログラムについてのコメント（文字列）を入力できる。
【００５２】
図１０の例では、プログラムコメントに「主軸正転」、ジャンプ用ラベルに「Ｐ３」、Ｎｏ．１の再利用パラメータ（ＶＢ１）に「Ｍ３」、Ｎｏ．２の再利用パラメータ（ＶＢ２）に「Ｍ４，Ｍ１９」、Ｎｏ．３の再利用パラメータ（ＶＢ３）に「Ｙ１８９８」を適用する例を示している。
【００５３】
この場合、プログラム作成支援装置１は、図３に示したラダーダイアグラムにおいてＯＮ条件リレー列ＶＢ１を１つのａ接点Ｍ３に置き換え、ＯＦＦ条件リレー列ＶＢ２をＡＮＤ結合した２つのｂ接点Ｍ４，Ｍ１９に置き換え、自己保持用リレーＶＢ３をリレーＶＢ３に置き換え、それにプログラムポインタＰ３、リターン命令（ＲＥＴ）、プログラムコメント「開始主軸正転」および「終了主軸正転」を付加して得られるラダープログラム、即ち図７に示したラダーダイアグラムを生成する。あるいは、それをインストラクションリスト形式で記述した図８に示したプログラムを生成するようにしてもよい（図７のラダーダイアグラムと、図８のインストラクションリストは等価である）。
【００５４】
プログラム作成支援装置１が行う、プログラム部品を再利用したプログラムの生成方法について説明する。図１１は、当該生成方法のフローチャートである。ここでは図７に示したラダープログラムを生成する場合を例に挙げる。
【００５５】
図１０の如く、ユーザによりプログラム部品再利用画面に必要な情報が入力され、プログラムの生成が命じられると、プログラム作成支援装置１は、まず再利用パラメータのプログラムコメントに文字列が設定されているか否かを調べる（Ｓ３１）。プログラムコメントに文字列が設定されていれば、その先頭に「開始」を付与したプログラムコメントを出力する（Ｓ３２）。図１０の場合、プログラムコメントに「主軸正転」の文字列が設定されているため、それに「開始」を付与した「開始主軸正転」がプログラムコメントとして出力される。
【００５６】
続いて、ジャンプ用ラベル（プログラムポインタ）の再利用パラメータとして何らかのラベルが設定されているかを調べ（Ｓ３３）、設定されていれば、それに応じたジャンプ用ラベルを出力する。図１０の場合、ラベルＰ３が設定されているため、「Ｐ３」がジャンプ用ラベルとして出力される。
【００５７】
次に、プログラム部品のプログラム構造の順に、プログラムを構成する要素を抽出し（Ｓ３５）、抽出された要素のそれぞれに対し、以下の処理が行われる。
【００５８】
まず、抽出された要素に再利用パラメータが定義されているか否かを確認する（Ｓ３６）。再利用パラメータが設定されていれば、当該要素が「＊」が付されたもの（ＡＮＤ列）かどうか調べ（Ｓ３７）、ＡＮＤ列であれば、図１０のパラメータ適用領域に列挙されたパラメータを適用した要素をＡＮＤ結合して出力する。
【００５９】
一方、再利用パラメータが設定された当該要素が「＋」が付されたもの（ＯＲ列）であれば（Ｓ３９）、再利用パラメータに列挙されたパラメータを適用した要素をＯＲ結合して出力する（Ｓ４０）。
【００６０】
再利用パラメータが設定された当該要素に「＊」も「＋」も付されていなければ、再利用パラメータに設定されたパラメータを適用した要素を出力する（Ｓ４１）。
【００６１】
また当該要素が、再利用パラメータが設定されていないもの、つまり部品変数ではなくデバイスや変数（ラベル）が付与されたものである場合には、そのデバイスや変数（ラベル）がそのまま出力される（Ｓ４２）。
【００６２】
以上の工程は、再利用するプログラム部品の全ての要素について行われる（Ｓ４３）。例えば、図３で定義したプログラム部品における１番目の要素は、ａ接点のＡＮＤ列「-| |-＊」であり、これにはＮｏ．１の再利用パラメータＶＢ１が定義されている。図１０の例では、Ｎｏ．１の再利用パラメータにＭ３のみが設定されており、この場合、１つのａ接点Ｍ３が出力される（Ｓ３８）。
【００６３】
２番目の要素は、１番目の要素（ＶＢ１）にＯＲ結合し、Ｎｏ．３の再利用パラメータＶＢ３が定義された、「＊」も「＋」も付されていないａ接点である。Ｎｏ．３の再利用パラメータにはＹ１８９８が設定されているため、先に出力されたａ接点Ｍ３にＯＲ結合する位置にａ接点Ｙ１８９８が出力される（Ｓ４１）。
【００６４】
３番目の要素は、１番目の要素（ＶＢ１）および２番目の要素（ＶＢ３）にＡＮＤ結合し、Ｎｏ．２の再利用パラメータＶＢ２が定義されたｂ接点のＡＮＤ列（-|/|-＊）である。Ｎｏ．２の再利用パラメータにはＭ４，Ｍ１９が列挙されているため、先に出力されたａ接点Ｍ３，Ｙ１８９８とＡＮＤ結合する位置に、ｂ接点Ｍ４，Ｍ１９をＡＮＤ結合させた要素が出力される（Ｓ３８）。
【００６５】
最後（第４番目）の要素は、３番目の要素（ＶＢ３）にＡＮＤ結合し、Ｎｏ．３の再利用パラメータＶＢ３が定義されたコイル（-( )-）である。Ｎｏ．３の再利用パラメータにはＹ１８９８が設定されているため、先に出力されたｂ接点Ｍ４，Ｍ１９にＡＮＤ結合する位置にコイルＹ１８９８が出力される（Ｓ４１）。
【００６６】
プログラム部品の全ての要素について以上の工程が完了すると（Ｓ４３）、もう一度再利用パラメータとしてのジャンプ用ラベル（プログラムポインタ）に、特定のラベルが設定されているかを確認し（Ｓ４４）、設定されていれば、ジャンプの呼び出し元へ戻るリターン命令を出力する（Ｓ４５）。図１０の例では、以上の第１〜第４番目の要素にＯＲ結合する位置に、リターン命令（-[RET]-）が出力される。
【００６７】
そして、もう一度再利用パラメータのプログラムコメントに文字列が設定されているか否かを確認し（Ｓ４６）、文字列が設定されていれば、その先頭に「終了」を付与したプログラムコメントを出力する（Ｓ４７）。図１０の場合、「主軸正転」に「終了」を付与した「終了主軸正転」がプログラムコメントとして出力される。
【００６８】
以上の工程により、プログラム部品定義画面（図３）で定義したプログラム部品の再利用パラメータに対し、プログラム部品再利用画面（図１０）で設定したパラメータを適用して得られるプログラム（図７のラダーダイアグラムまたは図８のインストラクションリスト）が自動的に作成される。
【００６９】
ここで図７のラダープログラムの動作について説明する。初期状態ではデバイスＭ３、Ｍ４、Ｍ１９、Ｙ１８９８は全てＯＦＦ状態である。自己保持の保持指令条件（ＯＮ条件）リレーであるａ接点Ｍ３がＯＮとなれば、ａ接点Ｙ１８９８がＯＮする。その後は、ａ接点Ｍ３がＯＦＦとなってもａ接点Ｙ１８９８のＯＮは保持される。ａ接点Ｙ１８９８のＯＮ状態は、保持キャンセル条件（ＯＦＦ条件）リレーであるｂ接点Ｍ４，Ｍ１９のいずれかがＯＮするまで継続される。ｂ接点Ｍ４，Ｍ１９のいずれかがＯＮするとａ接点Ｙ１８９８はＯＦＦに戻る（すなわち自己保持がキャンセルされる）。
【００７０】
本実施の形態のプログラム作成支援装置１は、プログラム部品再利用画面で設定する再利用パラメータの内容を変更することにより、１つのプログラム部品から様々な形態のプログラムを生成することができる。例えば、上記と同様に図３の如く定義した自己保持処理のプログラム部品を再利用する際、プログラム部品再利用画面で図１２のように再利用パラメータの内容を設定すれば、図１３に示すラダープログラムを生成することができる。
【００７１】
図１３のラダープログラムの動作について説明する。初期状態ではデバイスＭ１９、ＸＣ１８、Ｍ３、Ｍ４、Ｙ１８９Ｅは全てＯＦＦ状態である。ＯＮ条件リレーであるａ接点Ｍ１９，ＸＣ１８の両方がＯＮとなれば、ａ接点Ｙ１８９ＥがＯＮする。その後は、ａ接点Ｍ１９，ＸＣ１８がＯＦＦとなってもａ接点Ｙ１８９ＥのＯＮは保持される。ａ接点Ｙ１８９ＥのＯＮ状態は、ＯＦＦ条件リレーであるｂ接点Ｍ３，Ｍ４のいずれかがＯＮするまで継続される。ｂ接点Ｍ３，Ｍ４のいずれかがＯＮするとａ接点Ｙ１８９ＥはＯＦＦに戻る（すなわち自己保持がキャンセルされる）。
【００７２】
上記したように、プログラム作成支援装置１は、作成されたプログラム８と共に、それに関連する付属情報ファイル９を出力できる。付属情報ファイル９には、例えば、生成されたプログラムで再利用されたデバイスまたは変数（ラベル）（プログラム部品で再利用パラメータが定義されたデバイスまたは変数（ラベル））について、それらの内容を説明するコメントが記述される。
【００７３】
付属情報ファイルは、ユーザがプログラム作成支援装置１を操作して作成してもよいが、自動生成されるようにしてもよい。図１４は、生成されたプログラムで再利用されたデバイスまたは変数（ラベル）の内容を説明するコメントが記述された付属情報ファイルの自動作成方法を示すフローチャートである。
【００７４】
図１４に基づき、付属情報ファイルの自動作成方法を説明する。プログラム作成支援装置１は、プログラム部品を再利用してプログラムを生成すると、その中から再利用パラメータに適用されたパラメータ（図１０の例では「主軸正転」，Ｐ３，Ｍ３，Ｍ４，Ｍ１９，Ｙ１８９８）を順に抽出し（Ｓ５１）、当該パラメータがデバイスまたは変数（ラベル）かどうかを確認する（Ｓ５２）。当該パラメータがデバイス（Ｍ３，Ｍ４，Ｍ１９，Ｙ１８９８）または変数（ラベル）であれば、当該プログラム部品名と当該パラメータに対応する「説明文」の文字列を結合し、それを当該デバイスや変数（ラベル）のコメントとして出力する（Ｓ５３）。これらの工程は、再利用パラメータに適用されたパラメータの全てが抽出されるまで繰り返される（Ｓ５４）。以上の工程により付属情報ファイルが自動生成される。
【００７５】
例えば図１０のように再利用パラメータが設定された場合、プログラム作成支援装置１は、図７または図８のプログラムと共に、図１５のような付属情報ファイルを生成することができる。
【００７６】
本実施の形態に係るプログラム部品は、再利用する際に、再利用パラメータに複数のパラメータ（デバイスや変数（ラベル）、数値等）を列挙して適用することにより、複数の要素が所定の形態（ＡＮＤ結合やＯＲ結合）で生成されるプログラム要素（リレー列）を含むことを特徴としている。当該プログラム部品は、再利用パラメータに適用するパラメータの列挙数に応じて、様々な形態を取ることが可能である。つまり１つのプログラム要素から複数の形態のプログラムを生成することが可能である。そして本実施の形態のプログラム作成支援装置１は、そのようなプログラム部品を定義可能なプログラム部品定義部１２を備えることを特徴としている。
【００７７】
従来のプログラム作成支援装置では、異なる形態のプログラム、例えば図７のプログラムと図１３のプログラムを、同一のプログラム部品を用いて生成することができなかったが、本発明ではそれが可能となる。これにより、プログラム部品を応用可能な範囲が広くなり、計測監視制御対象である設備の仕様記述に、より直接的に合致するようにプログラム部品を定義することが可能となる。
【００７８】
よって、仕様記述に合致するプログラムを作成するための、プログラム部品の選定およびそれらの組み合わせに関する設計の労力を軽減し、仕様に記述された機能を過不足なく備えるプログラムの作成の労力を大幅に軽減できる。またプログラム部品を再利用して生成したプログラムの付属情報ファイルも自動生成することができ、この付属情報の存在によって、生成したプログラムの理解が容易となり、生成したプログラムの理解に係る労力が軽減される。
【００７９】
＜実施の形態２＞
実施の形態１では、単独でプログラム（プログラム部品ＰＯＵ）として成り立つ構造のプログラム部品について説明した。ここでは、単独ではプログラム（プログラム部品ＰＯＵ）として成立しないが、プログラム部品の要素と成り得るプログラム部品（以下「プログラム要素部品」）を用いる実施形態を示す。
【００８０】
例えば接点や命令、コイルは、それ以上分解できない最も基本となるプログラム要素部品と成り得る。接点、命令やコイルは、プログラムおよびプログラム部品の構成要素となり得るとともに、プログラム要素部品の構成要素でもある。同様に、プログラム要素部品も、プログラムおよびプログラム部品の構成要素にも、他のプログラム要素部品の構成要素にも成り得る。
【００８１】
以下、プログラム要素部品の定義方法と再利用方法について説明する。図１６は、実施の形態２に係るプログラム作成支援装置１の機能ブロック構成（ソフトウェアブロック構成）を示す図である。当該プログラム作成支援装置１は、実施の形態１（図２）の構成に対し、プログラム要素部品１７を定義するためのプログラム要素部品定義部１５をさらに備えている。定義されたプログラム要素部品１７は、プログラム部品保持部１１に保存される。プログラム要素部品１７は、それを再利用する際に設定される再利用パラメータ１８を有している。
【００８２】
なお図１６では、プログラム部品定義部１２およびプログラム要素部品定義部１５が、プログラム作成支援装置１に内蔵された構成を示したが、それらは外部装置であってもよい。
【００８３】
図１７は、ユーザがプログラム要素部品定義部１５を用いてプログラム要素部品１７を定義する際の、操作画面表示（プログラム要素部品定義画面）の一例を示す図である。ここでは、ラダーダイアグラム形式で記述されたプログラム要素部品（ＡＮＤ条件処理プログラム要素部品）を定義する場合の例を示している。
【００８４】
プログラム要素部品定義画面（ラダー要素部品定義画面）は、図３で示したプログラム部品定義画面（ラダー部品定義画面）に類似した構成を有している。即ち図１７のように、プログラム要素部品定義画面は、上から順に、ラダーダイアグラムの作成に使用するアイコンが表示されたアイコン表示領域と、それらのアイコンを操作してプログラム要素部品のラダーダイアグラムを編集するためのプログラム編集領域と、プログラム要素部品の再利用パラメータを定義するためのパラメータ定義領域と、作成したプログラム要素部品の名前を入力するためのプログラム要素部品名入力領域とが配設された構成となっている。
【００８５】
アイコン表示領域には、図３で示したプログラム部品定義画面が備えるアイコンに加え、プログラム要素部品（-□-）及びそれに「＊」あるいは「＋」が付されたアイコンが配置されている。「＊」の記号はＡＮＤ結合したプログラム要素部品の列を示し、「＋」の記号はＯＲ結合したプログラム要素部品の列を示している。
【００８６】
プログラム編集領域は、上記の各種アイコンを操作してラダーダイアグラムを編集できる領域であり、従来のラダープログラム作成支援装置が備えるプログラム編集画面（ラダー編集画面）と同様の構成でよい。但し、プログラム要素部品はそれだけでプログラムとして成立しないので、図３に示したプログラム編集領域とは異なり、左母線と右母線がなく、ラダーダイアグラムを構成する１つの要素の内部構造を編集するような形態となっている。
【００８７】
パラメータ定義領域は、プログラム要素部品を再利用する際に設定すべき再利用パラメータを定義するための領域であり、ユーザによって所定の事項が入力される。
【００８８】
プログラム要素部品の定義の手順は、図６または図９で示したプログラム部品の定義手順と同様であるので、ここでの説明は省略する。図１７には、プログラム要素部品を、「＊」が付与されたａ接点（ａ接点がＡＮＤ結合したリレー列）１つから成る構成とした例を示している。またそのａ接点のリレー列にはＮｏ．１の再利用パラメータとして定義された部品変数ＶＢ１が付与され、当該部品変数ＶＢ１には「ＡＮＤ条件リレー列」なる説明文が付されている。そして当該プログラム要素部品に対し、「ＡＮＤ条件処理」という名称が与えられている。
【００８９】
なお、プログラム要素部品定義画面において、プログラム要素部品のアイコン（「-□-」、「-□-＋」および「-□-＊」）を用いて他のプログラム要素部品を含むラダーダイアグラムを構成すれば、他のプログラム要素部品を再利用するプログラム要素部品を定義することもできる。
【００９０】
図１８は、本実施の形態に係るプログラム作成支援装置１のプログラム部品定義画面の例である。図３に示したものと同様に、上から順に、アイコン表示領域、プログラム編集領域、パラメータ定義領域、プログラム部品名入力領域が配設された構成となっている。
【００９１】
アイコン表示領域には、図３で示したプログラム部品定義画面が備えるアイコンに加え、プログラム要素部品（-□-）及びそれに「＊」あるいは「＋」が付されたアイコンが配置されている。ユーザは、このアイコンを操作することにより、プログラム要素部品を再利用したプログラム部品を作成することができる。
【００９２】
パラメータ定義領域は、プログラム部品の作成を行う際にユーザが所定の事項を入力する領域である。図３に示した欄に加え、プログラム要素部品を含むプログラム部品を定義する場合に、そのプログラム要素部品の種類を特定するための「要素部品種別」の欄が設けられている。ユーザは、プログラム要素部品を用いてプログラム部品を定義するとき、「要素部品種別」の欄を操作して、既に定義済みのプログラム要素部品の中から使用するものを選択して指定する。
【００９３】
図１８では、プログラム編集領域において、ＯＲ結合したプログラム要素部品の列（-□-＋）と、コイル（-( )-）とがＡＮＤ結合して成るプログラム部品が定義されている。そして、上記のプログラム要素部品の列に、Ｎｏ．１の再利用パラメータとして定義された部品変数ＶＥ１を付与し、且つ、パラメータ定義領域において、部品変数ＶＥ１のプログラム要素部品の種別として「ＡＮＤ条件処理」（つまり図１７で定義したプログラム要素部品）を指定している。またここではユーザにより、それに対して「ＯＲ条件（ＡＮＤ条件処理プログラム要素部品列）」という説明文が設定されている。
【００９４】
上記のコイルには、再利用パラメータとして定義された部品変数ではなく、Ｍコード完了を意味する出力デバイスであるＹＣ１Ｅを付与している。この場合、当該プログラム部品が再利用されるときは、常にデバイスＹＣ１Ｅが記述されることになる。なお、プログラム部品に用いるプログラム要素部品には、デバイスや変数（ラベル）を付与することは許されず、必ず再利用パラメータの部品変数を付与する必要がある。
【００９５】
図１８では、プログラム部品名入力領域を用いて、当該プログラム部品に対し「Ｍコード完了処理」なる名称を付与している。
【００９６】
プログラム部品の定義に用いたプログラム要素部品に対しては、プログラム要素部品の種別を列挙して指定することも可能である。この場合は、列挙された種別のうち、いかなるプログラム要素部品を再利用してもよいプログラム部品が定義される。
【００９７】
また、プログラム部品の定義に用いたプログラム要素部品（に付与した部品変数）に対し、プログラム要素部品の種別を指定しないことも可能である。この場合、プログラム要素部品の種別に制約がなく、いかなるプログラム要素部品を再利用してもよいプログラム部品が定義される。プログラム要素部品の種別が指定されていない部品変数であり、且つプログラム要素部品に付与されているものに対しては、プログラム部品を再利用する際、プログラム要素部品を適用する必要がある。また、プログラム要素部品の種別が指定されていない部品変数であり、接点や命令やコイルのアイコンに付与されているものに対しては、プログラム部品を再利用する際、実施の形態１のようにデバイスや変数（ラベル）を適用する必要がある。
【００９８】
次に、プログラム作成支援装置１に、プログラム要素部品を含むプログラム部品を用いてプログラムを自動生成させる手順を説明する。図１９は、プログラム作成支援装置１にプログラム部品を再利用してプログラムを自動生成させる際の操作画面表示（プログラム部品再利用画面）の一例を示している。同図では、図１８のように定義されたＭコード完了処理プログラム部品を再利用するケースを示している。
【００９９】
実施の形態２のプログラム部品再利用画面（図１９）は、実施の形態１のプログラム部品再利用画面（図１０）に対し、プログラム部品に含まれているプログラム要素部品の種別が表示される「要素部品種別」の欄と、「行追加」および「行削除」のボタンが追加されたものである。
【０１００】
図１８に示したＭコード完了処理プログラム部品には、種別が「ＡＮＤ条件処理」のプログラム要素部品が含まれているため、図１９の例ではＮｏ．１の再利用パラメータの「種別」の欄に「ＡＮＤ条件処理」が表示され、それに対応する説明文「ＯＲ条件（ＡＮＤ条件処理プログラム要素部品列）」が「説明文」の欄に表示される。
【０１０１】
なお、プログラム部品が、種別未指定のプログラム要素部品を含んでいる場合や、複数の種別が指定されたプログラム要素部品を含んでいる場合には、プログラム部品再利用画面（図１９）においてその種別を指定・選択がユーザにより行われる。
【０１０２】
プログラム要素部品には再利用される要素が複数含まれる場合があるため、図１９のような画面だけでは再利用パラメータの設定が困難である。そのため再利用するプログラム部品がプログラム要素部品を含む場合には、プログラム部品再利用画面においてプログラム要素部品の「再利用パラメータ」の欄には、当該プログラム要素部品の再利用パラメータを設定するための別画面を展開するためのボタン（以下「展開ボタン」）が表示される。ユーザは、この展開ボタンを押すことにより、プログラム要素部品についての再利用パラメータ設定を行う画面（プログラム要素部品再利用画面）を開くことができる。
【０１０３】
またプログラム部品がプログラム要素部品のコレクションを含み、その再利用パラメータに複数のパラメータを適用したい場合、１つのプログラム要素部品再利用画面ではその設定が困難である。そこでプログラム要素部品のコレクションを含んでいる場合には、図１９の如く、プログラム部品再利用画面に「行追加」「行削除」のボタンが表示される。行追加ボタンは、コレクションを構成するプログラム要素部品の数を増やすものであり、これを押すことにより、パラメータ適用領域において、プログラム要素部品の再利用パラメータを設定するための欄が１行増える（展開ボタンが１つ増える）。行削除ボタンを押すとそれを１行削除できる。
【０１０４】
図１９のプログラム部品再利用画面を参照すると、Ｍコード完了処理プログラム部品（図１８）は、ＡＮＤ条件処理プログラム要素部品がＯＲ結合するコレクション（「列挙」の欄に「＋」が表示される）を含んでおり、当該コレクションはＮｏ．１の再利用パラメータに対応付けされている。ユーザは、作成するプログラムにおいてＡＮＤ条件処理プログラム要素部品を複数個ＯＲ結合させたい場合は、行追加ボタンを押してパラメータ適用領域に行を追加する。図１９では、２つのＡＮＤ条件処理プログラム要素部品をＯＲ結合させる場合の例が示されている。
【０１０５】
ユーザはその後、各要素の再利用パラメータの設定を行うことになるが、プログラム要素部品に対する再利用パラメータの設定は次のように行われる。
【０１０６】
例えばＯＲ結合させる２つのＡＮＤ条件処理プログラム要素部品のうちの１つ目（「列挙」の欄に「１」が表示）の展開ボタンを押すと、図２０のようなプログラム要素部品再利用画面が開く。プログラム要素部品再利用画面の構成は、プログラム部品再利用画面（図１９）と同様である。ユーザは、この画面のパラメータ適用領域に設定するパラメータを入力する。図２０では、１つ目のＡＮＤ条件処理プログラム要素部品の再利用パラメータにデバイスＭ３を適用した例である。
【０１０７】
なお、再利用するプログラム要素部品が別のプログラム要素部品を有する場合は、「要素部品種別」の欄にその種別が表示される（種別が設定されていない、あるいは複数の種別が設定されている場合は、その欄を用いて所望の種別を選択する）。さらに「再利用パラメータ」の欄にも展開ボタンが表示され、それによって別のプログラム要素部品の再利用パラメータを設定できる。図２０では、ＡＮＤ条件処理プログラム要素部品はプログラム要素部品を含まないため、「要素部品種別」の欄は空欄であり、展開ボタンも表示されていない。
【０１０８】
またプログラム部品再利用画面において、２つ目のＡＮＤ条件処理プログラム要素部品（「列挙」の欄に「２」が表示）の展開ボタンを押すと、図２０と同様の図２１のようなプログラム要素部品再利用画面が開く。図２１では、１つ目のＡＮＤ条件処理プログラム要素部品の再利用パラメータにデバイスＭ３を適用した例である。図２１では、２つ目のＡＮＤ条件処理プログラム要素部品の再利用パラメータにデバイスＭ１９，Ｘ１８８Ｅを列挙して適用した例である。
【０１０９】
図１９、図２０および図２１のようにそれぞれの再利用パラメータを設定し、プログラム作成支援装置１にプログラムを生成させた結果を図２２に示す。この場合、Ｍコード完了処理プログラム部品（図１８）において、プログラム要素部品ＶＥ１の部分が、図２０で設定したＡＮＤ条件処理プログラム要素部品Ｍ３と、図２１で設定したＡＮＤ条件処理プログラム要素部品Ｍ１９，Ｘ１８８ＥとのＯＲ結合に置き換えられたプログラムが、プログラム作成支援装置１によって生成される。
【０１１０】
本実施の形態に係るプログラム部品は、再利用する際に、再利用パラメータに複数のパラメータ（デバイスや変数（ラベル）、数値等）を列挙して適用することにより、複数のプログラム要素部品が所定の形態（ＡＮＤ結合やＯＲ結合）で生成されるプログラム要素部品の列を含むことを特徴としている。当該プログラム部品では、プログラム要素部品に適用する再利用パラメータの数に応じて、再利用されるプログラム要素部品の個数が変わり、且つ、プログラム要素部品自体もそれに適用されるパラメータに応じて様々な形態を取ることが可能である。従って実施の形態２では、１つのプログラム要素から、実施の形態１よりもさらに多くの形態のプログラムを生成することが可能である。そして本実施の形態のプログラム作成支援装置１は、そのようなプログラム部品を定義可能なプログラム部品定義部１２を備えることを特徴としている。
【０１１１】
よって、仕様記述に合致するプログラムを作成するための、プログラム部品の選定およびそれらの組み合わせに関する設計の労力を軽減し、仕様に記述された機能を過不足なく備えるプログラムの作成の労力を大幅に軽減できる。またプログラム部品を再利用して生成したプログラムの付属情報ファイルも自動生成することができ、この付属情報の存在によって、生成したプログラムの理解が容易となり、生成したプログラムの理解に係る労力が軽減される。
【０１１２】
＜実施の形態３＞
実施の形態３では、特定のプログラム部品が複数個結合して成る、より大きなプログラム部品（以下「プログラム階層部品」）を用いる実施形態を示す。
【０１１３】
図２３は、実施の形態３に係るプログラム作成支援装置１の機能ブロック構成（ソフトウェアブロック構成）を示す図である。当該プログラム作成支援装置１は、実施の形態２（図１６）の構成に対し、プログラム階層部品２１を定義するためのプログラム階層部品定義部１９をさらに備えている。定義されたプログラム階層部品２１は、プログラム部品保持部１１に保存される。プログラム階層部品２１は、それを再利用する際に設定される再利用パラメータ２２を備えている。
【０１１４】
なお図２３では、プログラム部品定義部１２、プログラム要素部品定義部１５およびプログラム階層部品定義部１９が、プログラム作成支援装置１に内蔵された構成を示したが、それらは外部装置であってもよい。
【０１１５】
図２４は、プログラム階層部品１９の定義の手順を示すフローチャートである。また図２５および図２６は、プログラム階層部品定義部１９を用いてプログラム階層部品を定義する際の操作画面表示（プログラム階層部品定義画面）の例である。ここでは、ラダーダイアグラム形式で、排他的選択数値設定の処理を行うプログラム階層部品を定義する画面の例を示している。
【０１１６】
このプログラム階層部品定義画面（ラダー階層部品定義画面）は、上から順に、作成するプログラム階層部品に含ませるプログラム部品を設定するためのプログラム部品設定領域、プログラム階層部品の再利用パラメータを定義するためのパラメータ定義領域、およびプログラム階層部品の名称を入力するプログラム階層部品名入力領域が配設された構成となっている。プログラム部品設定領域はさらに、プログラム階層部品におけるプログラム部品の配列を設定するためのプログラム部品順序設定領域と、プログラム階層部品を構成する各プログラム部品の再利用パラメータに所定のパラメータを適用するためのパラメータ適用領域とから構成されている。
【０１１７】
以下、図３に示した自己保持処理プログラム部品と、図２７のように定義された数値設定処理プログラム部品とから構成される排他的選択数値設定プログラム階層部品を例に挙げて、プログラム階層部品の定義の手順を説明する。
【０１１８】
まず、プログラム階層部品を再利用する際に設定する再利用パラメータを、プログラム階層部品の記述に用いる部品変数として定義する（Ｓ６１）。図２５および図２６の例では、Ｎｏ．１の再利用パラメータとして、排他的選択数値設定プログラムの指令リレー（図２７において再利用パラメータとしての部品変数ＶＢ１が付与されたａ接点）に付与する部品変数ＶＢを定義している。またＮｏ．２の再利用パラメータとして、数値設定処理命令（ＭＯＶ）で設定する数値（図２７の変数ＶＫ２）に付与する部品変数ＶＫを定義し、Ｎｏ．３の再利用パラメータとして、内部ローカル変数（内部リレー）として部品変数ＶＭを設定し、Ｎｏ．４の再利用パラメータとして、数値の設定先レジスタ（図２７の変数ＶＤ３）に付与する部品変数ＶＤを、それぞれ定義している。
【０１１９】
ここで、パラメータ定義領域の「列挙」のチェックボックスは、当該再利用パラメータに対してパラメータを列挙して設定可能か否かを設定するものである。図２５および図２６の例において、チェック（「レ」）が入っているＮｏ．１〜３の再利用パラメータは、パラメータを列挙して設定可能なものとして定義されている。プログラム階層部品は、列挙されたパラメータの数だけ、所定のプログラム部品を再利用してプログラム生成を行うことになる。
【０１２０】
なお図２５および図２６のパラメータ定義領域に示すように、プログラム階層部品の再利用パラメータとして、プログラムコメントとプログラムポインタを用意してもよい。
【０１２１】
次に、プログラム部品順序設定領域を用いて、プログラム階層部品で再利用するプログラム部品およびその順番を選択する（Ｓ６２）。プログラム階層部品を用いてプログラムが生成される際、この工程で選択されたプログラム部品が選択された順番で再利用される。
【０１２２】
図２５および図２６の例では、プログラム部品順序設定領域の右側のボックスには定義済みのプログラム部品の一覧が表示されており、その一覧から１つを選択して選択ボタン（「<<」）を押すと、それが左側のボックス内のラダーダイアグラムに追加される。また左側のボックス（ラダーダイアグラム）に表示されているプログラム部品の１つを選択し、削除ボタンを押すと、ラダーダイアグラムからそのプログラム部品を削除することができる。さらに、左側のボックスに表示されているプログラム部品の１つを選択し、上下移動ボタン（矢印ボタン「↑」及び「↓」）を押すと、そのプログラム部品の順番を変更することができる。
【０１２３】
図２５および図２６では、プログラム部品の一覧の中から、まず自己保持処理プログラム部品を選択してラダーダイアグラムに追加し、さらに数値設定処理プログラム部品を選択して、ラダーダイアグラムの上記自己保持処理プログラム部品の次に追加した例を示している。この結果、自己保持処理プログラム部品および数値設定処理プログラム部品をこの順番で再利用したプログラムを生成可能なプログラム階層部品が定義される。また当該プログラム階層部品は、再利用パラメータにパラメータが列挙して設定されると、自己保持処理プログラム部品および数値設定処理プログラム部品を、その列挙されたパラメータの数だけ繰り返し再利用したプログラムを生成できる。
【０１２４】
次に、プログラム階層部品において再利用パラメータとして定義した部品変数を、当該プログラム階層部品に含まれるプログラム部品の再利用パラメータへと適用する（Ｓ６３）。図２５および図２６の例では、プログラム部品順序設定領域の左側ボックス（ラダーダイアグラム）内のプログラム部品を選択すれば、その下のパラメータ適用領域に、選択されたプログラム部品の再利用パラメータの一覧が表示される。
【０１２５】
図２５では、プログラム部品順序設定領域の左側ボックス内で自己保持処理プログラム部品を選択され、パラメータ適用領域にその再利用パラメータの一覧が表示されている。ここでは、自己保持処理プログラム部品のＮｏ．１の再利用パラメータ（図３のＶＢ１）に対し当該プログラム階層部品のＮｏ．１の再利用パラメータＶＢに記号「＠」を付したもの（ＶＢ＠）を適用し、自己保持処理プログラム部品のＮｏ．２の再利用パラメータ（図３のＶＢ２）に対し当該プログラム階層部品のＮｏ．１の再利用パラメータＶＢに記号「＠！」を付したもの（ＶＢ＠！）を適用し、自己保持処理プログラム部品のＮｏ．３の再利用パラメータ（図３のＶＢ３）に対し当該プログラム階層部品のＮｏ．３の再利用パラメータＶＭに記号「＠」を付したもの（ＶＭ＠）を適用している。
【０１２６】
図２６では、プログラム部品順序設定領域の左側ボックス内で数値設定処理プログラム部品を選択され、パラメータ適用領域にその再利用パラメータの一覧が表示されている。ここでは、数値設定処理プログラム部品のＮｏ．１の再利用パラメータ（図２７のＶＢ１）に対し当該プログラム階層部品のＮｏ．３の再利用パラメータＶＭに記号「＠」を付したもの（ＶＭ＠）を適用し、数値設定処理プログラム部品のＮｏ．２の再利用パラメータ（図２７のＶＫ２）に対し当該プログラム階層部品のＮｏ．２の再利用パラメータＶＫに記号「＠」を付したもの（ＶＫ＠）を適用し、数値設定処理プログラム部品のＮｏ．３の再利用パラメータ（図２７のＶＤ３）に対し当該プログラム階層部品のＮｏ．４の再利用パラメータＶＤを適用している。
【０１２７】
なお、記号「＠」は、プログラム階層部品内のプログラム部品が列挙されたパラメータの数だけ繰り返し再利用される際に、列挙されたパラメータを１つずつ順に適用することを示すものである。また記号「＠！」は、プログラム階層部品内のプログラム部品が列挙されたパラメータの数だけ繰り返し再利用される際に、記号「＠」に基づき適用されるパラメータ以外の全てのパラメータを列挙して適用することを示すものである。
【０１２８】
プログラム階層部品の再利用の際、再利用パラメータに列挙して適用されたパラメータの数だけ、当該プログラム階層部品に含まれるプログラム部品が繰り返し再利用される。例えば再利用パラメータＶＢに、３つのパラメータＸ１，Ｘ２，Ｘ３が列挙して適用されたとすると、再利用は３回行われる。その場合、１回目の再利用ではＶＢ＠に１番目のパラメータＸ１が適用され、ＶＢ＠！にはそれ以外のパラメータＸ２，Ｘ３が適用される。また２回目の再利用では、ＶＢ＠に２番目のパラメータＸ２が適用され、ＶＢ＠！にはそれ以外のパラメータＸ１，Ｘ３が適用される。そして３回目の再利用では、ＶＢ＠に３番目のパラメータＸ３が適用され、ＶＢ＠！にそれ以外のパラメータＸ１，Ｘ２が適用されることになる。
【０１２９】
最後に、プログラム階層部品名入力領域に作成したプログラム階層部品に名称を入力し（Ｓ６４）、保存することによって、プログラム階層部品の定義が完了する。
【０１３０】
なお、プログラム階層部品は、他のプログラム階層部品の構成要素と成ることもできる。既に定義して保存されているプログラム階層部品がある場合には、プログラム階層部品定義画面のプログラム部品順序設定領域の右側ボックスにそれが表示され、通常のプログラム部品と同様に選択可能である。これにより、他のプログラム階層部品を再利用するプログラム階層部品を定義することができる。
【０１３１】
図２８は、プログラム作成支援装置１にプログラム階層部品を再利用してプログラムを自動生成させる際の操作画面表示（プログラム階層部品再利用画面）の一例を示している。このプログラム階層部品再利用画面は、図１０とほぼ同様の構成であり、再利用するプログラム階層部品の名称が表示されるプログラム階層部品名表示領域と、再利用パラメータに適用するデバイスや変数（ラベル）などのパラメータを入力するためのパラメータ適用領域とを備えている。
【０１３２】
図２８では、図２４および図２５のように定義されたプログラム階層部品を再利用するケースを示している。パラメータ適用領域に表示される再利用パラメータの「Ｎｏ．」、「列挙」、「説明文」の欄には、図２４および図２５のプログラム階層部品定義画面のパラメータ定義領域で定義した内容が表示される。
【０１３３】
ユーザは、パラメータ適用領域において、再利用パラメータに適用するパラメータを入力する。このとき「列挙」の欄にチェック（「レ」）が表示されている再利用パラメータには、パラメータを２つ以上列挙して入力できる。但し、各再利用パラメータ（パラメータを列挙して適用可能なものに限る）に列挙して適用するパラメータの数は、全て同じにする必要がある。
【０１３４】
図２８の例では、プログラムコメントに「切削オーバライド設定スイッチ」、Ｎｏ．１の再利用パラメータ（ＶＢ）に「Ｘ２８５，Ｘ２８６，Ｘ２８７，Ｘ２８８」、Ｎｏ．２の再利用パラメータ（ＶＫ）に「２５，５０，７５，１００」、Ｎｏ．３の再利用パラメータ（ＶＭ）に「Ｍ４００２，Ｍ４００３，Ｍ４００４，Ｍ４００５」、Ｎｏ．３の再利用パラメータ（ＶＤ）に「Ｒ２５００」を適用する例を示している。この場合は、図２９のようなラダープログラムがプログラム作成支援装置１によって作成される。
【０１３５】
図２９のプログラムは、図３０のような切削オーバライドスイッチの設定結果を処理するプログラムである。設備の操作者は、設備の操作盤などに備えられた切削オーバライドスイッチによって、その設備が稼動する際の切削オーバライド値を２５％、５０％、７５％、１００％から選択する。切削オーバライドスイッチの出力は、設備の計測監視制御を行うために組み込まれたコントローラの各Ｘデバイス（Ｘ２８５，Ｘ２８６，Ｘ２８７，Ｘ２８８）に接続される。コントローラは、各ＸデバイスのＯＮ／ＯＦＦによって選択された切削オーバライド値を、コントローラ内部のＲレジスタ（Ｒ２５００）に格納する。
【０１３６】
以下、プログラム作成支援装置１が行う、プログラム部品を再利用したプログラムの生成方法について説明する。図３１は、当該生成方法のフローチャートである。ここでは図７に示したラダープログラムを生成する場合を例に挙げる。
【０１３７】
図２９の如く、ユーザによりプログラム階層部品再利用画面に必要な情報が入力され、プログラムの生成が命じられると、まずプログラム作成支援装置１は、パラメータを列挙して適用可能な再利用パラメータ（プログラム階層部品定義画面のパラメータ定義領域で「列挙」の欄にチェック（「レ」）が入っているもの）が複数あるか確認し、複数ある場合には、それらに適用されたパラメータの数が全て同じか否かを確認する（Ｓ７１）。数の異なるものがあれば、再利用パラメータの設定エラーを表示するなどして、プログラムを生成せずに終了する（Ｓ７２）。
【０１３８】
次に、再利用パラメータとしてのプログラムコメントおよびジャンプ用ラベル（プログラムポインタ）の設定内容に応じた処理を行う（Ｓ７３）。この処理は、図１１のステップＳ３１〜Ｓ３４と同じ処理である。
【０１３９】
以降、再利用パラメータに列挙して適用されたパラメータの数だけ、プログラム部品の再利用を行ってプログラムを生成する。まず再利用の回数をカウントするためのインデックスｉを１に設定する（Ｓ７４）。インデックスｉはプログラム部品の再利用が完了する毎に１つずつ増やされ、ｉの値がパラメータの列挙数を超えるまで、プログラム部品の再利用が繰り返される。
【０１４０】
プログラム部品の再利用は、プログラム階層部品のプログラム構造の順、即ちプログラム階層部品定義画面のプログラム部品順序設定領域で設定した順に行われる。プログラム作成支援装置１は、プログラム階層部品のプログラム構造の順にプログラム部品を抽出する（Ｓ７５）。
【０１４１】
続いて、抽出したプログラム部品の再利用パラメータを順に抽出し（Ｓ７６）、それに当該プログラム階層部品の再利用パラメータが適用されているかを確認する（Ｓ７７）。当該プログラム階層部品の再利用パラメータが適用されていれば、それに記号「＠」が付されているか（Ｓ７８）、記号「＠！」が付されているか（Ｓ８０）、あるいはそのどちらでもないかが判断される。
【０１４２】
プログラム部品の再利用パラメータに記号「＠」が付されていれば、それに対してプログラム階層部品のｉ番目の再利用パラメータを適用する（Ｓ７９）。プログラム部品の再利用パラメータに記号「＠！」が付されていれば、それに対してプログラム階層部品のｉ番目以外の全ての再利用パラメータを列挙して適用する（Ｓ８１）。どちらの記号も付されていなければ、プログラム部品の再利用パラメータに、プログラム階層部品の再利用パラメータを適用する（Ｓ８２）。
【０１４３】
なお、抽出したプログラム部品の再利用パラメータに、当該プログラム階層部品の再利用パラメータが適用されていない場合は（Ｓ７７においてＮｏ）、当該プログラム階層部品の再利用パラメータに適用されているデバイスや変数（ラベル）、数値をそのまま適用する（Ｓ８３）。
【０１４４】
プログラム部品の再利用パラメータに関する処理（Ｓ７６〜Ｓ８３）は、当該プログラム部品の全ての再利用パラメータに対して実行される（Ｓ８４）。全ての再利用パラメータに対する処理が完了すると（Ｓ８４においてＮｏ）、その処理結果に基づいて当該プログラム部品を再利用したプログラムが生成される（Ｓ８５）。このプログラム生成工程では、図１１に示したプログラムの生成方法と同様の処理が行われる。
【０１４５】
プログラム部品の抽出（Ｓ７５）からプログラム部品を再利用してのプログラム生成（Ｓ８５）までの処理は、プログラム階層部品内の全てのプログラム部品に対し、指定された順番で実行される（Ｓ８６）。それらの処理が全てのプログラム部品について完了すると（Ｓ８６においてＮｏ）インデックスｉがインクリメントされ（Ｓ８７）、インクリメント後のインデックスｉがプログラム階層部品の再利用パラメータに列挙されたパラメータの数を超えるまで、それらの処理が繰り返される（Ｓ８８）。
【０１４６】
最後に、再利用パラメータとしてのプログラムコメントおよびジャンプ用ラベル（プログラムポインタ）の設定内容に応じた処理を行う（Ｓ８９）。この処理は、図１１のステップＳ４４〜Ｓ４７と同じ処理である。
【０１４７】
以上説明したプログラム生成方法を、図２５および図２６のように定義したプログラム階層部品につき、図２８のように再利用パラメータを設定した場合を例にして、具体的に説明する。
【０１４８】
図２８の如く、ユーザによりプログラム階層部品再利用画面に必要な情報が入力され、プログラムの生成が命じられると、プログラム作成支援装置１は、「列挙」の欄にチェック（「レ」）が入ったＮｏ．１〜４の再利用パラメータに列挙されたパラメータの数を確認する（Ｓ７１）。ここではいずれも４つであるため、設定エラーとはならず、プログラムの作成が実行される。
【０１４９】
まず、再利用パラメータのプログラムコメントには「切削オーバライド設定スイッチ」が設定されているため、プログラム作成支援装置１は、それに「開始」を付与した「開始切削オーバライド設定スイッチ」をプログラムコメントとして出力する（Ｓ７３）。ジャンプ用ラベルは設定されていない。
【０１５０】
インデックスｉを１に設定した後、プログラム階層部品の構造順にプログラム部品を抽出する（Ｓ７５）。図２５および図２６で定義したように、当該プログラム階層部品の１番目のプログラム部品は、自己保持処理プログラム部品であるので、それが抽出される。そして抽出された自己保持処理プログラム部品について、再利用パラメータが順番に抽出される（Ｓ７６）。
【０１５１】
まず自己保持処理プログラム部品のＮｏ．１の再利用パラメータＶＢ１には、プログラム階層部品のＮｏ．１の再利用パラメータＶＢに記号「＠」が付されたものが適用されている。よって、それに列挙して設定されたデバイスＸ２８５，Ｘ２８６，Ｘ２８７，Ｘ２８８の第１番目（第ｉ番目）のＸ２８５が、自己保持処理プログラム部品のＮｏ．１の再利用パラメータＶＢ１に適用される（Ｓ７９）。
【０１５２】
自己保持処理プログラム部品のＮｏ．２の再利用パラメータＶＢ２には、プログラム階層部品のＮｏ．１の再利用パラメータＶＢに記号「＠！」が付されたものが適用されている。よって、それに列挙して設定されたデバイスＸ２８５，Ｘ２８６，Ｘ２８７，Ｘ２８８の第１番目（第ｉ番目）以外のＸ２８６，Ｘ２８７，Ｘ２８８が、自己保持処理プログラム部品のＮｏ．２の再利用パラメータＶＢ２に適用される（Ｓ８１）。
【０１５３】
自己保持処理プログラム部品のＮｏ．３の再利用パラメータＶＢ３には、プログラム階層部品のＮｏ．３の再利用パラメータＶＭに記号「＠」が付されたものが適用されている。よって、それに列挙して設定されたデバイスＭ４００２，Ｍ４００３，Ｍ４００４，Ｍ４００５の第１番目（第ｉ番目）のＭ４００２が、自己保持処理プログラム部品のＮｏ．３の再利用パラメータＶＢ３に適用される（Ｓ７９）。
【０１５４】
以上の再利用パラメータの適用結果に基づいて、自己保持処理プログラム部品を再利用して生成したプログラムが出力される（Ｓ８５）。
【０１５５】
自己保持処理プログラム部品を再利用してのプログラム生成が終わると、今度はプログラム階層部品の２番目のプログラム部品である数値設定処理プログラム部品が抽出される（Ｓ７５）。そして抽出された数値設定処理プログラム部品について、再利用パラメータが順番に抽出され（Ｓ７６）、上記と同様の処理が行われる。
【０１５６】
数値設定処理プログラム部品のＮｏ．１の再利用パラメータＶＢ１には、プログラム階層部品のＮｏ．３の再利用パラメータＶＭに記号「＠」が付されたものが適用されている。よって、それに列挙して設定されたデバイスＭ４００２，Ｍ４００３，Ｍ４００４，Ｍ４００５の第１番目（第ｉ番目）のＭ４００２が、数値設定処理プログラム部品のＮｏ．１の再利用パラメータＶＢ１に適用される（Ｓ７９）。
【０１５７】
数値設定処理プログラム部品のＮｏ．２の再利用パラメータＶＫ２には、プログラム階層部品のＮｏ．３の再利用パラメータＶＫに記号「＠」が付されたものが適用されている。よって、それに列挙して設定された数値２５，５０，７５，１００の第１番目（第ｉ番目）である２５（図２９では１０進表現「Ｋ２５」）が、数値設定処理プログラム部品のＮｏ．２の再利用パラメータＶＫ２に適用される（Ｓ７９）。
【０１５８】
数値設定処理プログラム部品のＮｏ．３の再利用パラメータＶＤ３には、プログラム階層部品のＮｏ．４の再利用パラメータＶＤが適用されている。これには記号「＠」も記号「＠！」も付されていないので、それに設定されたデバイスＲ２５００がそのまま数値設定処理プログラム部品のＮｏ．３の再利用パラメータＶＤ３に適用される（Ｓ８２）。
【０１５９】
以上の再利用パラメータの適用結果に基づいて、数値設定処理プログラム部品を再利用して生成したプログラムが出力される（Ｓ８５）。
【０１６０】
このように自己保持処理プログラム部品および数値設定処理プログラム部品を再利用してのプログラム生成が完了すると、インデックスｉがインクリメントされる（Ｓ８７）。図２８の例では、パラメータの列挙数は４つなので、インデックスｉ＝２、３、４について、上記と同様の手順により自己保持処理プログラム部品および数値設定処理プログラム部品を再利用してのプログラム生成が繰り返される。
【０１６１】
最後に、再利用パラメータとしてのプログラムコメントおよびジャンプ用ラベル（プログラムポインタ）の設定内容に応じた処理が行われる（Ｓ８９）。図２８の例では、設定されたプログラムコメント「切削オーバライド設定スイッチ」に「終了」を付与した「終了切削オーバライド設定スイッチ」がプログラムコメントとして出力される。またジャンプ用ラベルは設定されていないので、リターン命令は出力されない。
【０１６２】
以上のような手順により、図２９に示したプログラムが生成される。
【０１６３】
本実施の形態に係るプログラム階層部品は、再利用することにより、プログラム部品を複数組み合わせて構成されるプログラムを生成することが可能である。またその際、プログラム階層部品の再利用パラメータに複数のパラメータ（デバイスや変数（ラベル）、数値等）を列挙して適用することにより、それらプログラム部品を複数回再利用した構成のプログラムを生成可能である。当該プログラム階層部品は、再利用パラメータに適用するパラメータの列挙数に応じて、様々な形態を取ることが可能である。そして本実施の形態のプログラム作成支援装置１は、そのようなプログラム部品を定義可能なプログラム部品定義部１２を備えることを特徴としている。
【０１６４】
実施の形態１，２との組み合わせにより、実施の形態１，２よりもさらに多くの形態のプログラムを生成することが可能である。そして本実施の形態のプログラム作成支援装置１は、そのようなプログラム部品を定義可能なプログラム部品定義部１２を備えることを特徴としている。
【０１６５】
よって、仕様記述に合致するプログラムを作成するための、プログラム部品の選定およびそれらの組み合わせに関する設計の労力を軽減し、仕様に記述された機能を過不足なく備えるプログラムの作成の労力を大幅に軽減できる。またプログラム部品を再利用して生成したプログラムの付属情報ファイルも自動生成することができ、この付属情報の存在によって、生成したプログラムの理解が容易となり、生成したプログラムの理解に係る労力が軽減される。
【０１６６】
＜実施の形態４＞
本実施の形態４に係るプログラム作成支援装置１は、工作機械を制御するためのプログラムを生成する。以下においては、その一例として、プログラム作成支援装置１が、ラダープログラムを生成する場合を説明する。まず、プログラム作成支援装置１について説明する前に、プログラム作成支援装置１が生成するラダープログラムを用いる工作機械について説明する。
【０１６７】
図３３は、工作機械の構成を示すブロック図である。工作機械４６は、コンピュータ数値制御装置コントローラ（Computerized Numerical Controller：以下「ＣＮＣ」と記す）４７と、工作機械４６の工具及び加工物を回転及び移動させる主軸モータ５４及びサーボモータ５５と、工作機械４６を操作するための操作盤５６と、付帯設備５７とを備えている。なお、以下、図３３に示される、ＣＮＣ４７を備える工作機械４６を「ＣＮＣ工作機械４６」と呼ぶこともある。
【０１６８】
ＣＮＣ４７は、例えばＣＮＣ工作機械４６に組み込まれたコンピュータから構成されるものであり、モーション制御機能を有するモーション制御部５１と、シーケンス制御機能を有するシーケンス制御部５２とを備えている。このＣＮＣ４７には、ＣＮＣ工作機械４６における加工手順が記述された加工プログラム４８が記憶されており、ＣＮＣ４７は、当該加工プログラム４８を解釈して、主軸モータ５４及びサーボモータ５５を制御したり、付帯設備５７を制御したりする。
【０１６９】
具体的には、加工プログラム４８には、工具及び加工物の移動量及び移動速度を指令するＧコード４９が記述されており、ＣＮＣ４７のモーション制御部５１が、当該Ｇコード４９の指令（数値）に基づいて、主軸モータ５４及びサーボモータ５５の回転及び移動を制御する。これにより、ＣＮＣ４７を備える工作機械４６は、工具及び加工物を、所望の移動量及び移動速度で回転させたり移動させたりすることが可能となっている。
【０１７０】
また、加工プログラム４８には、付帯設備５７の制御を指令するＭコード５０が記述されており、ＣＮＣ４７のシーケンス制御部５２が、当該Ｍコード５０の指令に基づいて、付帯設備５７を制御する。このシーケンス制御部５２は、ＰＣと同等の機能を有することから、ＰＣと同等でかつＰＣとは別のハードウェアで実現されてもよいし、ＰＣのハードウェアで実現されてもよい。
【０１７１】
以上のようなＣＮＣ工作機械４６のラダープログラムの作成に関連する仕様は、例えば、非特許文献２に開示されている（非特許文献２：ＰＬＣプログラミング説明書IB-1500035、インターネット＜URL:http://wwwf2.mitsubishielectric.co.jp/melfansweb/index_j.htm＞）。
【０１７２】
さて、以上のようなＣＮＣ工作機械４６が正しく動作するためには、ＣＮＣ工作機械４６が、Ｍコード５０の指令どおりに付帯設備５７を制御させるためのラダープログラム５３（以下、「Ｍコード処理プログラム」）を有する必要があるとともに、操作盤５６を用いて工作機械４６を制御するためのラダープログラム５３（以下、「操作盤処理プログラム」）が有する必要がある。
【０１７３】
＜プログラム作成支援装置１の構成＞
本実施の形態に係るプログラム作成支援装置１は、操作盤５６の仕様、及び、Ｍコード５０の仕様から、ＣＮＣ工作機械４６において使用される操作盤処理プログラム、及び、Ｍコード処理プログラムを生成する。以下、本実施の形態に係るプログラム作成支援装置１について説明する。なお、操作盤処理プログラム及びＭコード処理プログラムを作成するプログラム作成支援装置は、ＰＣのラダープログラムを作成するためのプログラム作成支援装置と同等でそれとは別の装置であってもよいし、ＰＣのラダープログラムを作成するためのプログラム作成支援装置が適用されてもよい。また、一般にＣＮＣ工作機械４６は、操作盤５６において多数のスイッチを備えるとともに、Ｍコード５０を数十〜数百個を備えるが、以下においては、運転モード選択やオーバライドなどの典型的なスイッチや、Ｍ３、Ｍ４、Ｍ５、Ｍ３０などの代表的なＭコードを例にして説明する。
【０１７４】
本実施の形態に係るプログラム作成支援装置１のハードウェア構成は、図２に示されるブロック図と同じである。そのハードウェア構成を図２を用いて説明すると、ＣＮＣ工作機械４６に関する仕様のデータ及び計測監視制御プログラムに関するファイルが、保存部５に保持されている。そして、プログラム作成支援装置１は、入力すべき仕様を表示部３に表示し、入力部４においてユーザにより設定された仕様に従って、マイクロプロセッサ２がプログラム生成処理を実行する。
【０１７５】
図３４は、本実施の形態に係るプログラム作成支援装置１の機能ブロック構成（ソフトウェアブロック構成）を示す図である。当該プログラム作成支援装置１は、これまでの実施の形態で説明したプログラム編集部６及びプログラム部品保持部１１に対し、仕様設定部３１と、デバイス仕様保持部３２とをさらに備えている。なお、図を簡略化するため、図３４においては、プログラム部品定義部１２等の図示は省略されている。
【０１７６】
プログラム作成支援装置１には、外部（仕様入力２９）から、操作盤５６及びＭコード５０等の仕様が仕様入力２９として入力される。また、プログラム作成支援装置１は、操作盤５６及びＭコード等の仕様が記述された仕様記述ファイル３０と接続されており、操作盤５６及びＭコード等の仕様に関して仕様記述ファイル３０を読み書き可能となっている。
【０１７７】
仕様設定部３１は、仕様入力２９及び仕様記述ファイル３０から、操作盤５６及びＭコード５０の仕様を受けて、操作盤５６の仕様及びＭコード５０の仕様を設定する。本実施の形態では、仕様設定部３１は、操作盤５６の仕様を受けて操作盤５６の仕様を設定（記憶）する操作盤仕様設定部３１Ａと、Ｍコード５０の仕様を受けてＭコード５０の仕様を設定（記憶）するＭコード仕様設定部３１Ｂとを有している。仕様設定部３１は、設定された仕様（仕様データ）を、プログラム編集部６に出力したり、仕様記述ファイル３０に書き込まれるように出力したり込んだりする。
【０１７８】
プログラム部品保持部１１は、プログラム編集部６がプログラムを生成する際に使用する、ラダー部品などのプログラム部品１０を予め保持している。このプログラム部品１０は、実施の形態１〜３のいずれかにおいて定義されたものであってもよく、それら以外の従来の方式で定義されたものであってもよい。本実施の形態に係るプログラム部品保持部１１は、プログラム部品１０として、モード反転処理プログラム部品１０Ａ、自己保持処理プログラム部品１０Ｂ、数値設定処理プログラム部品１０Ｃ、Ｍコードデコード処理プログラム部品１０Ｄ、ＡＮＤ条件処理プログラム部品１０Ｅ、Ｍコード完了処理プログラム部品１０Ｆを保持している。
【０１７９】
図３５は、デバイス仕様保持部３２が保持している、モーション制御入出力に関するデバイスアドレスの仕様を示す図である。デバイス仕様保持部３２は、ＣＮＣ工作機械４６で使用されるラダープログラムに関連する仕様として、図３５に示されるようなデバイスの仕様を保持する。具体的には、デバイス仕様保持部３２は、どのようなモーション制御入出力であるかを特定する名称と、その入出力が割り付けられたデバイスアドレスとを関連付けたテーブルを保持している。以上のようなＣＮＣ工作機械４６のラダープログラムの作成に関するデバイスアドレスの仕様は、例えば、非特許文献３に開示されている（非特許文献３：ＰＬＣインターフェース説明書IB-1500000、インターネット＜URL:http://wwwf2.mitsubishielectric.co.jp/melfansweb/index_j.htm＞）。
【０１８０】
プログラム編集部６は、仕様設定部３１からの仕様を受け取ったり、仕様記述ファイル３０に保存された仕様を読み取ったりすることにより、操作盤５６及びＭコード５０の仕様を取得する。本実施の形態においては、このプログラム編集部６はプログラム生成部３４を備えている。このプログラム生成部３４は、仕様記述ファイル３０に記述されている操作盤５６及びＭコード５０の仕様のそれぞれ、及び、仕様設定部３１で設定された操作盤５６及びＭコード５０の仕様のそれぞれを、プログラム部品保持部１１に保持されているプログラム部品１０の再利用パラメータ２２に適用しつつ、当該プログラム部品１０からプログラムを作成する。なお、本実施の形態に係るプログラム生成部３４は、プログラム部品１０からプログラムを作成する際に、デバイス仕様保持部３２に保持されているデバイスの仕様を参照する。
【０１８１】
本実施の形態では、このプログラム生成部３４は、操作盤処理プログラム生成部３４１と、Ｍコード処理プログラム生成部３４２とを有しており、機能仕様ごとにプログラムを生成する手段を有している。次に、操作盤処理プログラム生成部３４１及びＭコード処理プログラム生成部３４２について説明する。
【０１８２】
操作盤処理プログラム生成部３４１は、仕様記述ファイル３０に記述されている操作盤５６の仕様、及び、仕様設定部３１で設定された操作盤５６の仕様を、プログラム部品保持部１１に保持されているプログラム部品１０の再利用パラメータ２２に適用しつつ、当該プログラム部品１０から上記操作盤処理プログラムを生成する。
【０１８３】
本実施の形態において、操作盤処理プログラム生成部３４１は、モード反転機能生成部３４１Ａ、運転モード選択機能生成部３４１Ｂ、及び、切削オーバライド機能生成部３４１Ｃ（以下、これらをまとめて「機能生成部３４１Ａ〜３４１Ｃ」と記すこともある）を備えており、機能生成部３４１Ａ〜３４１Ｃのそれぞれが、操作盤５６において互いに異なる制御を行うための操作盤処理プログラムを生成する。具体的には、モード反転機能生成部３４１Ａは、操作盤５６においてモード反転制御を行うための操作盤処理プログラムを生成し、運転モード選択機能生成部３４１Ｂは、操作盤５６において運転モード選択制御を行うための操作盤処理プログラムを生成し、切削オーバライド機能生成部３４１Ｃは、操作盤５６において切削オーバライド制御を行うための操作盤処理プログラムを生成する。
【０１８４】
Ｍコード処理プログラム生成部３４２は、仕様記述ファイル３０に記述されているＭコード５０の仕様、及び、仕様設定部３１で設定されたＭコード５０の仕様を、プログラム部品保持部１１に保持されているプログラム部品１０の再利用パラメータ２２に適用しつつ、当該プログラム部品１０から上記のＭコード処理プログラムを生成する。本実施の形態において、Ｍコード処理プログラム生成部３４２は、Ｍコード機能生成部３４２Ａを備えており、Ｍコード機能生成部３４２Ａが、Ｍコード処理プログラムを生成する。
【０１８５】
プログラム編集部６は、生成した操作盤処理プログラム及びＭコード処理プログラムを編集後のプログラム８として出力するとともに、必要に応じてそれに関連する付属情報ファイル９を出力する。例えば、編集後のプログラム８がラダープログラムである場合には、実施の形態１で説明したように、そのラダープログラムに用いる各デバイスの内容を説明するコメントを、付属情報ファイル９として出力する。
【０１８６】
＜操作盤仕様設定部３１Ａにおける仕様の設定＞
次に、仕様設定部３１の操作盤仕様設定部３１Ａによって操作盤５６の仕様が設定される例について説明する。
【０１８７】
図３６は、トグル型でないスイッチ、例えば、押しボタンスイッチが並んだ操作盤５６を有するＣＮＣ工作機械４６において、当該操作盤５６における各スイッチの仕様を設定するための画面（以下「操作盤仕様設定画面」）の一例を示す図である。この図３６に示される操作盤仕様設定画面上においては、複数のスイッチが行列状に並べられて表示されており、いずれか１つのスイッチが使用者によりマウスを用いてダブルクリック（選択）されると、当該スイッチに対応するスイッチ仕様設定画面が表示される。
【０１８８】
図３７は、図３６において「運転メモリ」と記されたスイッチが選択された場合に表示されるスイッチ仕様設定画面を示す図である。このスイッチ仕様設定画面では、図３６において選択された１つのスイッチに対して、スイッチ種別、スイッチ動作、スイッチ入力が設定される。ここで、図３６に示されるスイッチを画定する枠内に表示される文字列は、図３７に示される、スイッチ種別において設定された文字列の先頭部分と、スイッチ動作において設定された文字列とを組み合わせたものとしている。例えば、図３７に示されるように、スイッチ種別において「運転モード選択」が設定され、スイッチ動作において「メモリ」が設定されている場合には、「運転モード選択」という文字列の先頭部分「運転」と、「メモリ」とを組み合わせた「運転メモリ」が図３６に示されるようにスイッチの枠内に表示される。なお、図３６において、文字列が付与されていないスイッチ（図３６では右上のスイッチ）は、図３７において、スイッチ種別及びスイッチ動作が設定されていないことを示している。
【０１８９】
図３７に示されるスイッチ仕様設定画面における設定は、まず、スイッチ種別の設定が行われ、その後にスイッチ動作の設定が行われる。
【０１９０】
スイッチ種別という文字列の横には、ドロップダウンリストまたはコンボボックス（以下、「ドロップダウンリスト等」と記す）が設けられており、これに表示される一覧から所望のスイッチ種別がユーザにより１つ選択されることにより、スイッチ種別が設定される。ドロップダウンリスト等に表示される一覧には、ＣＮＣ工作機械４６の操作盤５６に必要なスイッチの種別が表示される。本実施の形態では、操作盤仕様設定部３１Ａは、操作盤処理プログラム生成部３４１が生成可能な操作盤処理プログラムの種別、つまり、操作盤処理プログラム生成部３４１が備える機能生成部３４１Ａ〜３４１Ｃの機能の名称（「モード反転」、「運転モード選択」、「切削オーバライド」）を上記一覧に表示する。そして、これらのうちの一つがスイッチ種別としてユーザにより設定されることになる。
【０１９１】
スイッチ動作という文字列の横には、ドロップダウンリスト等が設けられ、これに表示される一覧から所望のスイッチ動作が、スイッチ動作が設定される。具体的には、先に選択されたスイッチ種別に応じたスイッチ動作が一覧に表示され、そのうちの一つが設定される。これにより、操作盤処理プログラム生成部３４１が生成可能な操作盤処理プログラムに対して、スイッチ種別に応じたスイッチ動作が設定されることになる。
【０１９２】
本実施の形態では、スイッチ種別において「モード反転」が設定されると、スイッチ動作のドロップダウンリスト等には、モード反転のスイッチ動作として「シングルブロック」、「ドライラン」が表示され、これらのうちの一つが設定される。スイッチ種別において「運転モード選択」が設定されると、スイッチ動作のドロップダウンリスト等には、運転モード選択のスイッチ動作として「ジョグ」、「ハンドル」、「メモリ」が表示され、これらのうちの一つが設定される。スイッチ種別において「切削オーバライド」が設定されると、切削オーバライドが％値で表される場合には、スイッチ動作のドロップダウンリスト等には、切削オーバライドのスイッチ動作として「２５」、「５０」、「７５」、「１００」が表示され、これらのうちの一つが設定される。
【０１９３】
スイッチ入力という文字列の横のボックスには、そのスイッチに割り当てられるＰＣの入力デバイスが設定される。もし、各スイッチが特定の入力デバイスに割り当てられていることが予め決まっているのであれば、そのデバイスのアドレスを表示し、アドレス設定が省略できるようにしてもよい。
【０１９４】
図３８は、各スイッチの仕様を設定するための画面を、図３６及び図３７に示した表示形態とは別の表示形態で表示した図である。上述で説明したのと同様に、「モード反転」に対しては「シングルブロック」、「ドライラン」がスイッチ動作の欄にて設定され、「運転モード選択」に対しては「ジョグ」、「ハンドル」、「メモリ」がスイッチ動作の欄にて設定され、「切削オーバライド」に対しては「２５」、「５０」、「７５」、「１００」がスイッチ動作の欄にて表示されている。
【０１９５】
＜Ｍコード仕様設定部３１Ｂにおける仕様の設定＞
次に、仕様設定部３１のＭコード仕様設定部３１ＢによってＭコード５０の仕様が設定される例について説明する。
【０１９６】
図３９は、ＣＮＣ工作機械４６が備えるＭコード５０の機能仕様を設定するための画面の一例を示す図である。Ｍコードの欄にはＭコード番号が設定され、機能名の欄にはそのＭコード５０の簡単な説明が設定される。
【０１９７】
機能開始の欄には、「ブロック開始と同時」、「ブロック軸移動完了後」がドロップダウンリスト等により選択的に表示され、そのうちの１つが設定される。ここで、「ブロック開始と同時」は、そのＭコード５０が軸移動と同一ブロックで指令されている場合に、当該ブロックで指令された軸移動の開始と同時に当該Ｍコード５０の機能を実行開始することを意味する。「ブロック軸移動完了後」は、そのＭコード５０が軸移動と同一ブロックで指令されている場合に、当該ブロックで指令された軸移動の完了後に当該Ｍコード５０の機能を実行開始することを意味する。
【０１９８】
機能キャンセルの欄には、そのＭコード５０の機能が割り当てられたブロック内だけで有効である場合には何も設定されない。しかし、当該Ｍコード５０の機能が割り当てられたブロックを過ぎても、当該Ｍコード５０の機能を他のＭコード５０によってキャンセルまたは変更されるまで有効となるようにしたい場合には、機能キャンセルの欄に当該他のＭコード５０が列挙されて設定される。この機能キャンセルの欄には、Ｍコードの欄で設定されたＭコード番号と異なるＭコード番号が設定される。例えば、Ｍコードの欄で「Ｍ３」が設定された場合には、機能キャンセルの欄には、Ｍ３以外のＭコード番号が設定され、Ｍコードの欄で「Ｍ４」が設定された場合には、機能キャンセルの欄には、Ｍ４以外のＭコード番号が設定される。
【０１９９】
機能出力の欄には、そのＭコード５０の機能出力先である、出力デバイスであるＹデバイスや内部デバイスであるＭデバイスなどのデバイスのアドレスが設定される。当該Ｍコード５０において機能出力する必要が無い場合には、この欄には何も設定されない。
【０２００】
機能完了の欄には、そのＭコード５０の機能完了の条件となる、入力デバイスであるＸデバイスや内部デバイスであるＭデバイスなどのデバイスのアドレスが設定される。そのＭコード５０の機能出力と同時に機能完了する場合には、この欄には何も設定されない。
【０２０１】
次に、図３９に示された表の行ごとに設定された各Ｍコード５０についてそれぞれ具体的に説明する。
【０２０２】
Ｍ０３（Ｍ３）というＭコード５０は、主軸正転を行うＭコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にＭコード５０の機能（主軸正転）を開始する。主軸正転の機能は、逆転や停止が指令されるまで継続されるので、主軸逆転の機能を行うＭ４のＭコード５０、及び、主軸停止の機能を行うＭ５のＭコード５０が、Ｍ３のＭコード機能をキャンセルする他のＭコード５０として機能キャンセルの欄に設定されている。なお、図３９に示される仕様においては、主軸を正転させるための出力デバイスであるＹ１８９８が、機能出力先デバイスとして機能出力の欄に設定されている。また、主軸が所定の回転速度に到達すればＭ３の機能が完了するという仕様では、主軸が当該所定の回転速度に到達した場合に当該到達を示す入力デバイスであるＸ１８８Ｄが、機能完了条件デバイスとして機能完了の欄に設定される。
【０２０３】
Ｍ０４（Ｍ４）というＭコード５０は、主軸逆転を行うＭコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にＭコード５０の機能（主軸逆転）を開始する。主軸逆転の機能は、正転や停止が指令されるまで継続されるので、主軸正転の機能を行うＭ３のＭコード５０、及び、主軸停止の機能を行うＭ５のＭコード５０が、Ｍ４のＭコード機能をキャンセルする他のＭコード５０として機能キャンセルの欄に設定されている。なお、図３９に示される仕様においては、主軸を逆転させるための出力デバイスであるＹ１８９９が、機能出力先デバイスとして機能出力の欄に設定されている。また、主軸が所定の回転速度に到達すればＭ４の機能が完了するという仕様では、主軸が当該所定の回転速度に到達した場合に当該到達を示す入力デバイスであるＸ１８８Ｄが、機能完了条件デバイスとして機能完了の欄に設定される。
【０２０４】
Ｍ０５（Ｍ５）というＭコード５０は、主軸停止を行うＭコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にＭコード５０の機能（主軸停止）を開始する。主軸停止の機能は、他のＭコード機能をキャンセルするものであるが、他のＭコード５０からキャンセルされるものではないから、機能キャンセルの欄には何も設定されない。また、主軸停止の機能は動作を停止するものであるから、機能出力の欄にも何も設定されない。なお、この図においては、主軸の回転速度がゼロになった場合にそのことを示す入力デバイスであるＸ１８８Ｃが、機能完了条件デバイスとして機能完了の欄に設定されている。
【０２０５】
Ｍ３０は、エンドオブデータの処理を行なうＭコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にＭコード５０の機能（エンドオブデータの処理）を開始する。エンドオブデータの処理の機能は、ＣＮＣ工作機械４６をリセットするものである。したがって、エンドオブデータの処理の機能は、他のＭコード５０からキャンセルされるものではないので機能キャンセルは設定されない。なお、この図においては、ＣＮＣ工作機械４６をリセットするデバイスであるＹＣ１Ａが、機能出力先デバイスとして機能出力の欄に設定されている。Ｍ３０は、機能出力と同時に機能完了する。
【０２０６】
＜プログラム部品＞
次に、操作盤処理プログラム生成部３４１が操作盤処理プログラムをはじめとするプログラムを生成する際に再利用し、Ｍコード処理プログラム生成部３４２がＭコード処理プログラムをはじめとするプログラムを生成する際に再利用するプログラム部品１０について説明する。
【０２０７】
図３４に示したように、このプログラム部品１０として、モード反転処理プログラム部品１０Ａ、…、Ｍコード完了処理プログラム部品１０Ｆが、プログラム部品保持部１１において保持されている。このうち、自己保持処理プログラム部品１０Ｂ及びＭコード完了処理プログラム部品１０Ｆについては、実施の形態１及び実施の形態２において説明したので、これらの説明については省略する。以下、モード反転処理プログラム部品１０Ａ、数値設定処理プログラム部品１０Ｃ、Ｍコードデコード処理プログラム部品１０Ｄ、ＡＮＤ条件処理プログラム部品１０Ｅについて主に説明する。なお、数値設定処理プログラム部品１０Ｃについては実施の形態３で詳細に説明したので、ここでは簡単に説明する。
【０２０８】
図４０は、モード反転の機能を処理するプログラムを部品化したモード反転処理プログラム部品１０Ａを示す図である。図４０に示されるモード反転処理プログラム部品１０Ａの再利用パラメータにデバイスまたは変数（ラベル）が指定されるだけで、当該パラメータに基づいて、モード反転の機能を処理するプログラム（プログラム部品ＰＯＵ）が自動的に生成される。
【０２０９】
次に、図４０に示されるモード反転処理プログラム部品１０Ａの再利用パラメータにデバイス等が指定されたと仮定して、モード反転処理ラダープログラムの動作について説明する。初期状態では、ＶＢ１、ＶＢ２、ＶＢ３のいずれもＯＦＦ状態となっている。モード反転を指令するデバイスであるＶＢ１がＯＮされると、ＰＬＳ命令によりＰＣの１スキャン分だけＶＢ２がＯＮし、ＶＢ２のＯＮを受けてＶＢ３が反転、すなわちＯＮとなる。ＰＣの次のスキャンでＰＬＳ命令によりＶＢ２はＯＦＦされるが、ＶＢ３のＯＮは保持される。時間を空けてＶＢ１をＯＦＦしても、ＶＢ３のＯＮは保持される。さらに時間を空けてＶＢ１を再度ＯＮすると、ＰＬＳ命令によりＰＣの１スキャン分だけＶＢ２がＯＮし、ＶＢ２のＯＮを受けてＶＢ３が反転、すなわちＯＦＦとなる。ＰＣの次のスキャンでＰＬＳ命令によりＶＢ２はＯＦＦされるが、ＶＢ３のＯＦＦは保持される。時間を空けてＶＢ１をＯＦＦしても、ＶＢ３のＯＦＦは保持される。
【０２１０】
次に、図２７に示される数値設定処理プログラム部品１０Ｃの再利用パラメータにデバイス等が指定されたと仮定して、数値設定の機能を処理する数値設定処理ラダープログラムの動作について説明する。初期状態ではＶＢ１はＯＦＦ状態となっており、ＶＤ３に数値を設定する処理が行われないので、ＶＤ３の数値は初期値（すなわちゼロ）となっている。数値設定を指令するデバイスであるＶＢ１をＯＮすれば、ＭＯＶ命令によりＶＫ２に適用された数値が、ＶＤ３に設定される。時間を空けてＶＢ１をＯＦＦしても、ＶＤ３の数値は保持されるが、ラダープログラムの他の箇所でＶＤ３への数値設定が行われた場合にはその限りではない。他の箇所でＶＤ３への数値設定が行われても、ＶＤ３がＶＫ２の数値に保持されることを望む場合には、ＶＢ１を常にＯＮ状態に保持しておけばよい。
【０２１１】
図４１は、Ｍコード５０のデコードの機能を処理するプログラムを部品化したＭコードデコード処理プログラム部品１０Ｄを示す図である。図４１に示されるＭコードでコード処理プログラム部品１０Ｄの再利用パラメータにデバイスまたは変数（ラベル）が指定されるだけで、当該パラメータに基づいて、Ｍコード５０のデコードの機能を処理するプログラム（プログラム部品ＰＯＵ）が自動的に生成される。
【０２１２】
次に、図４１に示されるＭコードデコード処理プログラム部品１０Ｄの再利用パラメータにデバイス等が指定されたと仮定して、Ｍコードデコード処理ラダープログラムの動作について説明する。初期状態では、ＶＢ１、ＶＢ４はいずれもＯＦＦ状態となっている。ＶＢ１がＯＮとなり、かつ、ＶＤ２の値とＶＫ３の値が同じであれば、ＶＢ４がＯＮとなる。ＶＢ１がＯＦＦとなるか、または、ＶＤ２の値とＶＫ３の値とが異なれば、ＶＢ４がＯＦＦとなる。
【０２１３】
図４２は、ＡＮＤ条件を処理するプログラムを部品化したＡＮＤ条件処理プログラム部品１０Ｅを示す図である。図４２に示されるＡＮＤ条件処理プログラム部品１０Ｅの再利用パラメータにデバイスまたは変数（ラベル）が指定されるだけで、当該パラメータに基づいて、ＡＮＤ条件を処理するプログラム（プログラム部品ＰＯＵ）が自動定期に生成される。このＡＮＤ条件処理は、ラダーでは非常に一般的であり、よく使われるものであるので詳細な説明は省略する。
【０２１４】
＜操作盤処理プログラムの生成＞
次に、図３４に示された操作盤処理プログラム生成部３４１（モード反転機能生成部３４１Ａ等）が、図３５に示されたデバイスの仕様、及び、図３８に示された操作盤５６の仕様を、プログラム部品１０の再利用パラメータに適用しつつ、当該プログラム部品１０から操作盤処理プログラムを生成する動作について説明する。
【０２１５】
図４３は、モード反転機能生成部３４１Ａが生成した操作盤処理プログラムの一例を示す図である。以下では、モード反転機能生成部３４１Ａが、デバイスの仕様（図３５）、及び、「モード反転」に関する操作盤５６の仕様（図３８）を、図４０に示したモード反転処理プログラム部品１０Ａの再利用パラメータに適用して、当該モード反転処理プログラム部品１０Ａから、図４３に示されるモード反転制御を行うための操作盤処理プログラムを生成する動作について説明する。なお、以下、モード反転機能生成部３４１Ａが生成する、モード反転制御を行うための操作盤処理プログラムを、「モード反転スイッチ処理プログラム」と呼ぶこともある。
【０２１６】
図４４は、モード反転機能生成部３４１Ａの属性を示したものである。図４４に係るスイッチ種別及びスイッチ動作には、操作盤５６の仕様（図３８）のうちモード反転に関する内容が表示されている。ここでは、「モード反転」というスイッチ種別には、「シングルブロック」及び「ドライラン」というスイッチ動作が操作盤５６の仕様において設定されたことが表示されている。そして、図４４に係る使用部品には、モード反転機能生成部３４１Ａにより使用されるプログラム部品１０が、モード反転処理プログラム部品１０Ａであることが表示されている。
【０２１７】
図４５は、モード反転機能生成部３４１Ａがモード反転スイッチ処理プログラムを生成する際の動作を示すフローチャートである。以下、この動作を図４５に即して説明する。
【０２１８】
ステップＳ９１にて、モード反転機能生成部３４１Ａは、操作盤５６の仕様（図３８）でのスイッチ入力に設定されているデバイスアドレスを、図４０に示したモード反転処理プログラム部品１０Ａの再利用パラメータＮｏ．１（ここではＶＢ１）に適用する。例えば、モード反転機能生成部３４１Ａは、操作盤５６の仕様（図３８）から「モード反転」と設定された行を上から順に読み取る（ここでは１行目の「シングルブロック」を読み取る）。そして、モード反転機能生成部３４１Ａは、「シングルブロック」のスイッチ入力に設定されているデバイスアドレス（ここではＸ２８０）を、図４０に示したモード反転処理プログラム部品１０Ａの再利用パラメータＮｏ．１（ＶＢ１）に適用する。これにより、図４３に示されるモード反転スイッチ処理プログラムの１段目の左部分が生成される。
【０２１９】
ステップＳ９２にて、モード反転機能生成部３４１Ａは、操作盤５６の仕様やＭコード５０の仕様で設定されない内部のローカル的な１つのデバイスアドレス（すなわち、重複して使用されない任意のデバイスアドレス）を、図４０に示したモード反転処理プログラム部品１０Ａの再利用パラメータＮｏ．２（ここではＶＢ２）に適用する。例えば、モード反転機能生成部３４１Ａは、Ｍ４０００を、操作盤５６の仕様やＭコード５０の仕様で設定されないデバイスアドレスとして、図４０に示したモード反転処理プログラム部品１０Ａの再利用パラメータＮｏ．２（ＶＢ２）に適用する。なお、Ｍ４０００番台のデバイスアドレスは、操作盤５６の仕様やＭコード５０の仕様で設定されないデバイスアドレスであるものとする。このようなプログラム生成部３４が自動的に割り付けるデバイスアドレスは、デバイス仕様保持部３２に保持しておいて、デバイス仕様保持部３２を参照するようにしてもよい。これにより、図４３に示されるモード反転スイッチ処理プログラムの１段目の右部分、及び、２〜３段目の左部分が生成される。
【０２２０】
ステップＳ９３にて、モード反転機能生成部３４１Ａは、デバイスの仕様（図３５）から、操作盤５６の仕様（図３８）におけるスイッチ動作の欄の内容に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図４０に示したモード反転処理プログラム部品１０Ａの再利用パラメータＮｏ．３（ここではＶＢ３）に適用する。例えば、図３８に示される操作盤５６の仕様においては、スイッチ動作の欄に「シングルブロック」が設定されているから、モード反転機能生成部３４１Ａは、図３５に示されるデバイスの仕様から、「シングルブロック」に対応するデバイスアドレス（ここではＹＣ１２）を抽出し、ＹＣ１２を、図４０に示したモード反転処理プログラム部品１０Ａの再利用パラメータＮｏ．３（ＶＢ３）という再利用パラメータに適用する。これにより、図４３に示されるモード反転スイッチ処理プログラムの２段目の中央部分、右部分、及び、３段目の右部分が生成される。
【０２２１】
さて、以上のステップＳ９１〜Ｓ９３の説明では、モード反転機能生成部３４１Ａが、デバイスの仕様（図３５）及び操作盤５６の仕様（図３８）を、モード反転処理プログラム部品１０Ａの再利用パラメータＶＢ１〜ＶＢ３に適用する動作について説明した。本実施の形態に係るモード反転機能生成部３４１Ａは、この動作と並行して、同ステップＳ９１〜Ｓ９３においてデバイスコメントの出力も行う。
【０２２２】
具体的には、ステップＳ９１にて、モード反転機能生成部３４１Ａは、操作盤５６の仕様（図３８）のスイッチ種別の文字列とスイッチ動作の文字列とを合わせた文字列を、ステップＳ９１に係るデバイスアドレスのデバイスコメントとして付属情報ファイル９に出力する。同様に、ステップＳ９２にて、モード反転機能生成部３４１Ａは、操作盤５６の仕様のスイッチ種別の文字列とスイッチ動作の文字列とを合わせた文字列を、ステップＳ９２に係るデバイスアドレスのデバイスコメントとして付属情報ファイル９に出力する。ステップＳ９３にて、モード反転機能生成部３４１Ａは、デバイスの仕様（図３５）において、ステップＳ９３のデバイスアドレスに対応する名称の文字列を、当該デバイスアドレスのデバイスコメントとして付属情報ファイル９に出力する。これらにより得られたデバイスコメントの一覧を図４６に示す。
【０２２３】
以上のステップＳ９１〜Ｓ９３の後、ステップＳ９４にて、モード反転機能生成部３４１Ａは、図４０に示されるプログラムコメントが必要とされている場合には、スイッチ種別の文字列と、スイッチ動作の文字列とを組み合わせて得られる文字列を、当該プログラムコメントとして適用する。例えば、モード反転機能生成部３４１Ａは、スイッチ種別が「モード反転」という文字列、スイッチ動作が「シングルブロック」という文字列である場合には、「モード反転シングルブロック」という文字列をプログラムコメントとして作成し、ステップＳ９１〜Ｓ９３で作成したプログラムの前後に付与する。その結果、図４３においては、当該プログラムの前に「開始モード反転シングルブロック」という文字列が付与され、当該プログラムの後に「終了モード反転シングルブロック」という文字列が付与されている。
【０２２４】
ステップＳ９５にて、モード反転機能生成部３４１Ａは、図４０に示されるジャンプ用ラベルが必要とされている場合には、他のプログラムに使用されていないプログラムポインタを選定し、選定したプログラムポインタを当該ジャンプ用ラベルとして適用する。
【０２２５】
モード反転機能生成部３４１Ａは、以上のステップＳ９１〜Ｓ９５の動作を、操作盤５６の仕様（図３８）のうち「モード反転」に関する全てのスイッチ動作に対して行う。例えば、図３８に示される操作盤５６の仕様では、１行目の「シングルブロック」以外に、２行目の「ドライラン」がモード反転のスイッチ動作として設定されているから、「ドライラン」についてもステップＳ９１〜Ｓ９５の動作が行われる。これにより、図４３に示されるモード反転スイッチ処理プログラムの「開始モード反転ドライラン」から「終了モード反転ドライラン」までの部分が生成される。なお、図４３に示される例では、Ｍ４０００と重複しないＭ４００１というデバイスアドレスが、「ドライラン」において適用されている。
【０２２６】
ステップＳ９６にて、モード反転機能生成部３４１Ａは、以上のパラメータの適用がされたモード反転処理プログラム部品１０Ａを、モード反転スイッチ処理プログラムとする。これにより、図３８に示される操作盤５６の仕様からは、図４３に示されるモード反転スイッチ処理プログラムが生成される。
【０２２７】
図４７は、運転モード選択機能生成部３４１Ｂが生成した操作盤処理プログラムの一例を示す図である。次に、運転モード選択機能生成部３４１Ｂが、デバイスの仕様（図３５）、及び、「運転モード選択」に関する操作盤５６の仕様（図３８）を、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータに適用して、当該自己保持処理プログラム部品１０Ｂから、図４７に示される運転モード選択制御を行うための操作盤処理プログラムを生成する動作について説明する。なお、以下、運転モード選択機能生成部３４１Ｂが生成する、運転モード選択制御を行うための操作盤処理プログラムを、「運転モード選択スイッチ処理プログラム」と呼ぶこともある。また、運転モード選択機能生成部３４１Ｂは、運転モード選択スイッチ処理プログラムを生成する際に、モード反転機能生成部３４１Ａと同様に、デバイスコメント、プログラムコメント及びジャンプ用ラベルを設定するが、これについての説明及びその結果は省略する。
【０２２８】
図４８は、運転モード選択機能生成部３４１Ｂの属性を示したものである。図４８に係るスイッチ種別及びスイッチ動作には、操作盤５６の仕様（図３８）のうち運転モード選択に関する内容が表示されている。ここでは、「運転モード選択」というスイッチ種別には、「ジョグ」、「ハンドル」及び「メモリ」というスイッチ動作が操作盤５６の仕様において設定されたことが表示されている。そして、図４８に係る使用部品には、運転モード選択機能生成部３４１Ｂにより使用されるプログラム部品１０が、自己保持処理プログラム部品１０Ｂであることが表示されている。
【０２２９】
図４９は、運転モード選択機能生成部３４１Ｂが運転モード選択スイッチ処理プログラムを生成する際の動作を示すフローチャートである。以下、この動作を図４９に即して説明する。
【０２３０】
ステップＳ１０１にて、運転モード選択機能生成部３４１Ｂは、操作盤５６の仕様（図３８）でのスイッチ入力に設定されているデバイスアドレスを、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．１（ここではＶＢ１）に適用する。例えば、運転モード選択機能生成部３４１Ｂは、操作盤５６の仕様（図３８）から「運転モード選択」と設定された行を上から順に読み取る（ここでは３行目の「ジョグ」を読み取る）。そして、運転モード選択機能生成部３４１Ｂは、「ジョグ」のスイッチ入力に設定されているデバイスアドレス（ここではＸ２８２）を、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．１（ＶＢ１）に適用する。これにより、図４７に示される運転モード選択スイッチ処理プログラムの１段目の左部分が生成される。
【０２３１】
さて、「運転モード選択」というスイッチでは、１つのスイッチ動作が操作盤５６から指令されると、それまで指令されていた運転モードをキャンセルして、指令された１つのスイッチ動作の運転モードが行われる。例えば、スイッチ動作「ジョグ」が操作盤５６から指令されると、それまで指令されていた「ハンドル」及び「メモリ」の運転モードをキャンセルして、「ジョグ」の運転モードが行われる。スイッチ動作「ハンドル」が操作盤５６から指令されると、それまで指令されていた「ジョグ」及び「メモリ」の運転モードをキャンセルして、「ハンドル」の運転モードが行われる。スイッチ動作「メモリ」についてもこれらと同様に「メモリ」の運転モードが行われる。
【０２３２】
そこで、ステップＳ１０２にて、運転モード選択機能生成部３４１Ｂは、運転選択モードのスイッチ動作のうち、ステップＳ１０１に係るスイッチ動作以外のスイッチ動作に関し、スイッチ入力に設定されているデバイスアドレスを、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．２（ここではＶＢ２）に列挙して適用する。例えば、ステップＳ１０１に係るスイッチ動作が「ジョグ」である場合には、運転モード選択機能生成部３４１Ｂは、図３８において「ハンドル」及び「メモリ」に関し、スイッチ入力に設定されているデバイスアドレス（ここではＸ２８３及びＸ２８４）を、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．２（ＶＢ２）に列挙して適用する。これにより、図４７に示される運転モード選択スイッチ処理プログラムの１段目の中央部分が生成される。
【０２３３】
ステップＳ１０３にて、運転モード選択機能生成部３４１Ｂは、デバイスの仕様（図３５）から、操作盤５６の仕様（図３８）におけるスイッチ動作の欄の内容に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．３（ここではＶＢ３）に適用する。例えば、図３８に示される操作盤５６の仕様においては、スイッチ動作の欄に「ジョグ」が設定されているから、運転モード選択機能生成部３４１Ｂは、図３５に示されるデバイスの仕様から、「ジョグ」に対応するデバイスアドレス（ここではＹＣ００）を抽出し、ＹＣ００を、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．３（ＶＢ３）に適用する。これにより、図４７に示される運転モード選択スイッチ処理プログラムの１段目の右部分、及び、２段目が生成される。
【０２３４】
運転モード選択機能生成部３４１Ｂは、以上のステップＳ１０１〜Ｓ１０３の動作を、操作盤５６の仕様（図３８）のうち「運転モード選択」に関する全てのスイッチ動作に対して行う。例えば、図３８に示される操作盤５６の仕様では、３行目の「ジョグ」以外に、４行目の「ハンドル」及び５行目の「メモリ」が運転モード選択のスイッチ動作として設定されているから、「ハンドル」及び「メモリ」のそれぞれについてもステップＳ１０１〜Ｓ１０３の動作が行われる。これにより、図４７に示される運転モード選択スイッチ処理プログラムの３段目〜６段目が生成される。
【０２３５】
ステップＳ１０４にて、運転モード選択機能生成部３４１Ｂは、以上のパラメータの適用がされた自己保持処理プログラム部品１０Ｂを、運転モード選択スイッチ処理プログラムとする。これにより、図３８に示される操作盤５６の仕様からは、図４７に示される運転モード選択スイッチ処理プログラムが生成される。
【０２３６】
先に説明された図２９は、切削オーバライド機能生成部３４１Ｃが生成した操作盤処理プログラムの一例を示す図である。次に、切削オーバライド機能生成部３４１Ｃが、デバイスの仕様（図３５）、及び、「切削オーバライド」に関する操作盤５６の仕様（図３８）を、自己保持処理プログラム部品１０Ｂ（図３）及び数値設定処理プログラム部品１０Ｃ（図２７）の再利用パラメータに起用して、当該自己保持処理プログラム部品１０Ｂ及び数値設定処理プログラム部品１０Ｃから、図２９に示される切削オーバライド制御を行うための操作盤処理プログラムを生成する動作について説明する。なお、以下、切削オーバライド機能生成部３４１Ｃが生成する、切削オーバライド制御を行うための操作盤処理プログラムを、「オーバライドスイッチ処理プログラム」と呼ぶこともある。また、切削オーバライド機能生成部３４１Ｃは、オーバライドスイッチ処理プログラムを生成する際に、モード反転機能生成部３４１Ａと同様に、デバイスコメント、プログラムコメント及びジャンプ用ラベルを設定するが、これについての説明及びその結果は省略する。
【０２３７】
図５０は、切削オーバラード機能生成部３４１Ｃの属性を示したものである。図５０に係るスイッチ種別及びスイッチ動作には、操作盤５６の仕様（図３８）のうち切削オーバライドに関する内容が表示されている。ここでは、「切削オーバライド」というスイッチ種別には、「２５」、「５０」、「７５」及び「１００」というスイッチ動作が操作盤５６の仕様において設定されたことが表示されている。そして、図５０に係る使用部品には、切削オーバライド機能生成部３４１Ｃにより使用されるプログラム部品１０が、自己保持処理プログラム部品１０Ｂ及び数値設定処理プログラム部品１０Ｃであることが表示されている。
【０２３８】
図５１は、切削オーバライド機能生成部３４１Ｃが切削オーバライドスイッチ処理プログラムを生成する際の動作を示すフローチャートである。以下、この動作を図５１に即して説明する。
【０２３９】
切削オーバライド機能生成部３４１Ｃは、ステップＳ１１１〜Ｓ１１３において、図３に示した自己保持処理プログラム部品１０Ｂから、切削オーバライドスイッチ処理プログラムを生成する。
【０２４０】
ステップＳ１１１にて、切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様（図３８）でのスイッチ入力に設定されているデバイスアドレスを、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．１（ここではＶＢ１）に適用する。例えば、切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様（図３８）から「切削オーバライド」と設定された行を上から順に読み取る（ここでは６行目の「２５」を読み取る）。そして、切削オーバライド機能生成部３４１Ｃは、「２５」のスイッチ入力に設定されているデバイスアドレス（ここではＸ２８５）を、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．１（ＶＢ１）に適用する。これにより、図２９に示される切削オーバライドスイッチ処理プログラムの１段目の左部分が生成される。
【０２４１】
さて、「切削オーバライド」というスイッチでは、１つのスイッチ動作が操作盤５６から指令されると、それまで指令されていた運転モードをキャンセルして、指令された１つのスイッチ動作の運転モードが行われる。例えば、スイッチ動作「２５」が操作盤５６から指令されると、それまで指令されていた「５０」、「７５」及び「１００」の運転モードをキャンセルして、「２５」の運転モードが行われる。スイッチ動作「５０」が操作盤５６から指令されると、それまで指令されていた「２５」、「７５」及び「１００」の運転モードをキャンセルして、「５０」の運転モードが行われる。スイッチ動作「７５」及び「１００」についてもこれらと同様に「７５」及び「１００」の運転モードがそれぞれ行われる。
【０２４２】
そこで、ステップＳ１１２にて、切削オーバライド機能生成部３４１Ｃは、切削オーバライドのスイッチ動作のうち、ステップＳ１１１に係るスイッチ動作以外のスイッチ動作に関し、スイッチ入力に設定されているデバイスアドレスを、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．２（ここではＶＢ２）に列挙して適用する。例えば、ステップＳ１１１に係るスイッチ入力が「２５」である場合には、切削オーバライド機能生成部３４１Ｃは、図３８において「５０」、「７５」及び「１００」に関し、スイッチ入力に設定されているデバイスアドレス（ここではＸ２８６〜Ｘ２８８）を、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータ（ＶＢ２）に列挙して適用する。これにより、図２９に示される切削オーバライドスイッチ処理プログラムの１段目の中央部分が生成される。
【０２４３】
ステップＳ１１３にて、切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様やＭコード５０の仕様で設定されていない内部のローカル的な１つのデバイスアドレスを、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．３（ここではＶＢ３）に適用する。例えば、切削オーバライド機能生成部３４１Ｃは、Ｍ４００２を、操作盤５６の仕様やＭコード５０の仕様で設定されていないデバイスアドレスとして、図３に示した自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．３（ＶＢ３）に適用する。これにより、図２９に示される切削オーバライドスイッチ処理プログラムの１段目の右部分、及び、２段目が生成される。
【０２４４】
次に、切削オーバライド機能生成部３４１Ｃは、ステップＳ１１４〜Ｓ１１６において、図２７に示した数値設定処理プログラム部品１０Ｃから、切削オーバライドスイッチ処理プログラムを生成する。
【０２４５】
ステップＳ１１４にて、切削オーバライド機能生成部３４１Ｃは、ステップＳ１１３にて自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．３（ＶＢ３）に適用したデバイスアドレスを、図２７に示した数値設定処理プログラム部品１０Ｃの再利用パラメータＮｏ．１（ＶＢ１）に適用する。例えば、切削オーバライド機能生成部３４１Ｃは、自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．３（ＶＢ３）に適用したＭ４００２を、図２７に示した数値設定処理プログラム部品１０Ｃの再利用パラメータＮｏ．１（ＶＢ１）に適用する。これにより、自己保持処理プログラムの処理結果が数値設定処理プログラムで受けられる、図２９で示される切削オーバライドスイッチ処理プログラムの３段目の左部分が生成される。
【０２４６】
ステップＳ１１５にて、切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様（図３８）でのスイッチ動作に設定されている数値の前に、「Ｋ」を加えたデバイスアドレスを、図２７に示した数値設定処理プログラム部品１０Ｃの再利用パラメータＮｏ．２（ここではＶＫ２）に適用する。例えば、切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様（図３８）における「２５」というスイッチ動作に関し、Ｋ２５というデバイスアドレスを、図２７に示した数値設定処理プログラム部品１０Ｃの再利用パラメータＮｏ．２（ＶＫ２）に適用する。これにより、図２９に示される切削オーバライドスイッチ処理プログラムの３段目の右部分が生成される。
【０２４７】
ステップＳ１１６にて、切削オーバライド機能生成部３４１Ｃは、デバイスの仕様（図３５）から、操作盤５６の仕様（図３８）におけるスイッチ種別の欄の内容に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図２７に示した数値設定処理プログラム部品１０Ｃの再利用パラメータＮｏ．３（ここではＶＤ３）に適用する。例えば、図３８に示される操作盤５６の仕様においては、スイッチ種別の欄に「切削オーバライド」が設定されているから、切削オーバライド機能生成部３４１Ｃは、図３５に示されるデバイスの仕様から、「切削オーバライド」に対応するデバイスアドレス（ここではＲ２５００）を抽出し、Ｒ２５００を、図２７に示した数値設定処理プログラム部品１０Ｃの再利用パラメータＮｏ．３（ＶＤ３）に適用する。これにより、図２９に示される切削オーバライドスイッチ処理プログラムの３段目の右部分が生成される。
【０２４８】
切削オーバライド機能生成部３４１Ｃは、以上のステップＳ１１１〜Ｓ１１７の動作を、操作盤５６の仕様（図３８）のうち「切削オーバライド」に関する全てのスイッチ動作に対して行う。例えば、図３８に示される操作盤５６の仕様では、６行目の「２５」以外に、７行目の「５０」、８行目の「７５」及び９行目の「１００」がスイッチ動作として設定されているから、「５０」、「７５」及び「１００」のそれぞれについてもステップＳ１１１〜Ｓ１１６の動作が行われる。これにより、図２９に示される切削オーバライドスイッチ処理プログラムの４段目〜１２段目が生成される。
【０２４９】
ステップＳ１１７にて、切削オーバライド機能生成部３４１Ｃは、以上のパラメータの適用がされた自己保持処理プログラム部品１０Ｂ及び数値設定処理プログラム部品１０Ｃを合わせて、切削オーバライドスイッチ処理プログラムとする。これにより、図３８に示される操作盤５６の仕様からは、図２９に示される切削オーバライドスイッチ処理プログラムが生成される。
【０２５０】
以上、切削オーバライド機能生成部３４１Ｃが、切削オーバライドスイッチ処理プログラムを生成する動作について説明したが、これに限ったものではなく、切削オーバライド機能生成部３４１Ｃとして、実施の形態３で図２５を用いて説明された排他的選択数値設定の処理を行うプログラム階層部品を用いてもよい。この場合には、切削オーバライド機能生成部３４１Ｃは、デバイスの仕様（図３５）、及び、「切削オーバライド」と設定された操作盤５６の仕様（図３８）に基づいて、図２８に示した再利用パラメータの適用関係を生成する。
【０２５１】
具体的には、切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様（図３８）から、「切削オーバライド」というスイッチ種別が設定された６行目において、スイッチ入力に設定されているデバイスアドレス（Ｘ２８５）を、図２８に示されるようにプログラム階層部品のパラメータＮｏ．１に適用し、スイッチ動作に設定されている数値「２５」をプログラム階層部品のパラメータＮｏ．２に適用する。そして、切削オーバライド機能生成部３４１Ｃは、Ｍ４０００番台のデバイスアドレス（Ｍ４００２）を、プログラム階層部品のパラメータＮｏ．３に適用し、デバイスの仕様（図３５）からスイッチ種別「切削オーバライド」に対応するデバイスアドレス（Ｒ２５００）を抽出して、Ｒ２５００をプログラム階層部品のパラメータＮｏ．４に適用する。
【０２５２】
同様に、切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様（図３８）から、「切削オーバライド」というスイッチ種別が設定された７行目において、スイッチ入力に設定されているデバイスアドレス（Ｘ２８６）を、プログラム階層部品のパラメータＮｏ．１に適用し、スイッチ動作に設定されている数値「５０」をプログラム階層部品のパラメータＮｏ．２に適用する。そして、切削オーバライド機能生成部３４１Ｃは、Ｍ４０００番台のデバイスアドレス（Ｍ４００３）を、プログラム階層部品のパラメータＮｏ．３に適用する。切削オーバライド機能生成部３４１Ｃは、操作盤５６の仕様（図３８）の８行目及び９行目についても同様の処理を行うことにより、図２８に示した再利用パラメータの適用関係を生成する。それから、切削オーバライド機能生成部３４１Ｃは、実施の形態３で説明した動作と同じ動作を行うことにより、図２９に示した切削オーバライドスイッチ処理プログラムを生成してもよい。
【０２５３】
＜Ｍコード処理プログラムの生成＞
以上、図３４に示される操作盤処理プログラム生成部３４１が、操作盤処理プログラムを生成する動作について説明した。次に、図３４に示されるＭコード処理プログラム生成部３４２、つまり、Ｍコード機能生成部３４２Ａが、デバイスの仕様（図３５）、及び、図３９に示されるＭコード５０の仕様を、プログラム部品１０の再利用パラメータに適用しつつ、当該プログラム部品から、Ｍコード処理プログラムを生成する動作について説明する。
【０２５４】
図５２は、以下において、Ｍコード機能生成部３４２Ａが生成したＭコード処理プログラムの一例を示す図である。図５２に示されるＭコード処理プログラムは、Ｍコード５０のデコード処理プログラムＬＰＡと、Ｍコード５０の機能処理プログラムＬＰＢ，ＬＰＣ，ＬＰＤと、Ｍコード５０の完了処理プログラムＬＰＥとから構成されている。
【０２５５】
図５３は、Ｍコード機能生成部３４２Ａの属性を示したものである。図５３に係る使用部品には、Ｍコード機能生成部３４２Ａに使用されるプログラム部品１０が、Ｍコードデコード処理プログラム部品１０Ｄ、自己保持処理プログラム部品１０Ｂ、ＡＮＤ条件処理プログラム部品１０Ｅ、Ｍコード完了処理プログラム部品１０Ｆであることが表示されている。
【０２５６】
図５４は、Ｍコード機能生成部３４２Ａが、デコード処理プログラムを生成する動作を示すフローチャートである。以下、この動作を図５４に即して説明する。
【０２５７】
本実施の形態においては、ステップＳ１２１にて、Ｍコード機能生成部３４２Ａは、図４１に示したＭコードデコード処理プログラム部品１０Ｄを用いて、図５２に示されるＭコード５０のデコード処理プログラムＬＰＡを生成する。ステップＳ１２２にて、Ｍコード機能生成部３４２Ａは、図３に示した自己保持処理プログラム部品１０Ｂ、及び、図４２に示したＡＮＤ条件処理プログラム部品１０Ｅを用いて、図５２に示される各Ｍコード５０の機能処理プログラムＬＰＢ，ＬＰＣ，ＬＰＤを生成する。ステップＳ１２３にて、Ｍコード機能生成部３４２Ａは、図１８に示したＭコード完了処理プログラム部品１０Ｆを用いて、図５２に示されるＭコード５０の完了処理プログラムＬＰＥを生成する。ステップＳ１２４にて、Ｍコード機能生成部３４２Ａは、ステップＳ１２１〜Ｓ１２３で生成したプログラムを合わせて、図５２に示されるＭコード処理プログラムを生成する。
【０２５８】
以下、Ｍコード機能生成部３４２Ａが、Ｍコード５０のデコード処理プログラムＬＰＡ、機能処理プログラムＬＰＢ，ＬＰＣ，ＬＰＤ、及び、完了処理プログラムＬＰＥを生成する動作について詳細に説明する。まず、Ｍコード機能生成部３４２Ａが、Ｍコード５０のデコード処理プログラムＬＰＡを生成する動作について説明する。
【０２５９】
図５５は、Ｍコード機能生成部３４２Ａが、図４１に示したＭコードデコード処理プログラム部品１０Ｄを用いて、Ｍコード５０のデコード処理プログラムＬＰＡを生成する動作を示すフローチャートである。本実施の形態では、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）の各行の設定に対して、上から順に、図５５に示される各処理を行う。ここでは、まず、Ｍコード機能生成部３４２Ａが、Ｍコード５０の仕様（図３９）のＭ３の設定に対して処理を行うことにより、図５２に示されるデコード処理プログラムＬＰＡの１段目を生成する動作について説明する。
【０２６０】
ステップＳ１３１にて、Ｍコード機能生成部３４２Ａは、デバイスの仕様（図３５）から、Ｍコードストローブに対応するデバイスアドレス（ここではＸＣ６０）を抽出し、当該デバイスアドレスを、図４１に示したＭコードデコード処理プログラム部品１０Ｄの再利用パラメータＮｏ．１（ここではＶＢ１）に適用する。
【０２６１】
ステップＳ１３２にて、Ｍコード機能生成部３４２Ａは、デバイスの仕様（図３５）から、Ｍコードデータに対応するデバイスアドレス（ここではＲ５０４）を抽出し、当該デバイスアドレスを、図４１に示したＭコードデコード処理プログラム部品１０Ｄの再利用パラメータＮｏ．２（ここではＶＤ２）に適用する。
【０２６２】
ステップＳ１３３にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、Ｍコードの欄に設定されたＭコード番号（ここではＭ３）の数値（ここでは３）の前にＫを加えて文字列（Ｋ３）を生成し、当該文字列を、図４１に示したＭコードデコード処理プログラム部品１０Ｄの再利用パラメータＮｏ．３（ここではＶＫ３）に適用する。
【０２６３】
ステップＳ１３４にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、Ｍコードの欄に設定されたＭコード番号（ここではＭ３）を、そのままデバイスアドレスとして、図４１に示したＭコードデコード処理プログラム部品１０Ｄの再利用パラメータＮｏ．４（ここではＶＢ４）に適用する。
【０２６４】
以上の動作により、Ｍコード５０の仕様（図３９）のＭ３の設定に対して、図５２に示されるデコード処理プログラムＬＰＡの１段目が生成される。Ｍコード機能生成部３４２Ａは、以上のステップＳ１３１〜Ｓ１３４の動作を、Ｍコード５０の仕様（図３９）のＭ４の設定、Ｍ５の設定、…と設定がなくなるまで順に行う。これにより、図５２示されるデコード処理プログラムＬＰＡの２〜４段目が生成される。
【０２６５】
ステップＳ１３５にて、Ｍコード機能生成部３４２Ａは、以上のパラメータの適用がされたＭコードデコード処理プログラム部品１０Ｄを、デコード処理プログラムとする。これにより、図３９に示されるＭコード５０の仕様からは、図５２に示されたデコード処理プログラムＬＰＡが生成される。
【０２６６】
次に、Ｍコード機能生成部３４２Ａが、Ｍコード５０の機能処理プログラムＬＰＢ，ＬＰＣ，ＬＰＤを生成する動作について説明する。
【０２６７】
図５６は、Ｍコード機能生成部３４２Ａが、各Ｍコード５０の機能処理プログラムを生成する際の動作を示すフローチャートである。本実施の形態では、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）の各行の設定に対して、上から順に、図５６に示される処理を行う。
【０２６８】
ステップＳ１４１にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）での処理の対象としている行において、機能出力が設定されているかを判定する。Ｍコード機能生成部３４２Ａは、機能出力が設定さていると判定した場合には、ステップＳ１４２に進み、そうでない場合には、ステップＳ１４５に進む。例えば、図３９に示される設定においては、Ｍ３，Ｍ４，Ｍ３０の設定においては機能出力が設定されているからステップＳ１４２に進み、Ｍ５の設定においては機能出力が設定されていないからステップＳ１４５に進む。
【０２６９】
ステップＳ１４２にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）での処理の対象としている行において、機能キャンセルが設定されているかを判定する。Ｍコード機能生成部３４２Ａは、機能キャンセルが設定されていると判定した場合には、ステップＳ１４３に進み、そうでない場合には、ステップＳ１４４に進む。例えば、図３９のような設定においては、Ｍ３，Ｍ４の設定においては機能キャンセルが設定されているからステップＳ１４３に進み、Ｍ３０の設定においては機能キャンセルが設定されていないからステップＳ１４４に進む。
【０２７０】
ステップＳ１４３においては、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）において処理の対象としている行の設定と、自己保持処理プログラム部品１０Ｂとに基づいて、Ｍコード５０の機能処理プログラムを生成する。例えば、Ｍコード機能生成部３４２Ａは、図３９に示されたＭコード５０の仕様のＭ３，Ｍ４の設定と、図３に示された自己保持処理プログラム部品１０Ｂとに基づいて、図５２に示される機能処理プログラムＬＰＢ，ＬＰＣをそれぞれ生成する。このステップＳ１４３における動作については、後で詳細に説明する。その後、Ｍコード５０の仕様（図３９）において、現在処理の対象となっている行の下の設定を処理対象として、ステップＳ１４１に戻る。
【０２７１】
ステップＳ１４４においては、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）において処理の対象としている行の設定と、ＡＮＤ条件処理プログラム部品１０Ｅとに基づいて、Ｍコード５０の機能処理プログラムを生成する。例えば、Ｍコード機能生成部３４２Ａは、図３９に示されたＭコード５０の仕様のＭ３０の設定と、図４２に示されたＡＮＤ条件処理プログラム部品１０Ｅとに基づいて、図５２に示される機能処理プログラムＬＰＤを生成する。このステップＳ１４４における動作については、後で詳細に説明する。その後、Ｍコード５０の仕様（図３９）において、現在処理の対象となっている行の下の設定を処理対象として、ステップＳ１４１に戻る。
【０２７２】
ステップＳ１４５にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）において処理の対象としている行の設定に対しては、Ｍコード５０の機能処理プログラムを生成しない。例えば、図３９に示されたＭコード５０の仕様のＭ５の設定に対しては、Ｍコード５０の機能処理プログラムは生成されない。したがって、図５２に示されるように、Ｍコード５０の仕様のＭ３，Ｍ４の設定に対応する機能処理プログラムＬＰＢ，ＬＰＣの下には、Ｍコード５０の仕様のＭ３０の設定に対応する機能処理プログラムＬＰＤが生成されることになる。ステップＳ１４５の後、Ｍコード５０の仕様（図３９）において、現在処理の対象となっている行の下の設定を処理対象として、ステップＳ１４１に戻る。
【０２７３】
次に、上述のステップＳ１４３の動作について説明する。
【０２７４】
図５７は、上述のステップＳ１４３、つまり、処理の対象としている行に機能キャンセルが設定されている場合に、Ｍコード機能生成部３４２Ａが機能処理プログラムを生成する際の動作を示すフローチャートである。以下、Ｍコード５０の仕様（図３９）のＭ３の設定に基づいて、Ｍコード機能生成部３４２Ａが、図５２に示される機能処理プログラムＬＰＢを生成する動作を例にして説明する。
【０２７５】
まず、ステップＳ１５１にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、Ｍコードの欄に設定されたＭコード番号（ここではＭ３）を、そのままデバイスアドレスとして、図３に示された自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．１（ここではＶＢ１）に適用する。
【０２７６】
ステップＳ１５２にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）の機能開始の欄において、「ブロック軸移動完了後」が設定されているかを判定する。Ｍコード機能生成部３４２Ａは、「ブロック軸移動完了後」が設定されていると判定した場合にはステップＳ１５３に進み、そうでない場合にはステップＳ１５３を行わずにステップＳ１５４に進む。なお、図３９に示されるＭ３の設定では、機能開始の欄においてブロック軸移動完了後が設定されていないから、ステップＳ１５２の後、ステップＳ１５３が行われずに、ステップＳ１５４が行われることになる。
【０２７７】
ステップＳ１５３にて、Ｍコード機能生成部３４２Ａは、デバイスの仕様（図３５）から、移動指令完了に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図３に示された自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．１（ここではＶＢ１）に列挙して適用する。仮に、図３９に示されるＭ３の設定においてステップＳ１５３が行われると、Ｍコード機能生成部３４２Ａは、デバイスの仕様（図３５）から、移動指令完了に対応するＸＣ１８を抽出し、当該デバイスアドレスを、自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．１（ＶＢ１）に適用されたＭ３に直列的に追加することになる。
【０２７８】
ステップＳ１５４にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、機能キャンセルの欄に設定されたＭコード番号（ここではＭ４，Ｍ５）を、そのままデバイスアドレスとして、図３に示された自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．２（ここではＶＢ２）に適用する。
【０２７９】
ステップＳ１５５にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、機能出力に設定されたデバイスアドレス（ここではＹ１８９８）を、図３に示された自己保持処理プログラム部品１０Ｂの再利用パラメータＮｏ．３（ここではＶＢ３）に適用する。
【０２８０】
ステップＳ１５６にて、Ｍコード機能生成部３４２Ａは、以上のパラメータの適用がされた自己保持処理プログラム部品１０Ｂを、機能キャンセルがある機能処理プログラムとする。これにより、図３９に示されるＭコード５０の仕様のＭ３の設定に基づいて、図５２に示される機能処理プログラムＬＰＢが生成される。Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）のＭ４の設定にも同様の動作を行うことにより、図５２に示される機能処理プログラムＬＰＣが生成される。
【０２８１】
次に、上述のステップＳ１４４の動作について説明する。
【０２８２】
図５８は、上述のステップＳ１４４、つまり、処理の対象としている行に機能キャンセルが設定されていない場合に、Ｍコード機能生成部３４２Ａが機能処理プログラムを生成する際の動作を示すフローチャートである。以下、Ｍコード５０の仕様（図３９）のＭ３０の設定に基づいて、Ｍコード機能生成部３４２Ａが、図５２に示される機能処理プログラムＬＰＤを生成する動作について説明する。
【０２８３】
まず、ステップＳ１６１にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、Ｍコードの欄に設定されたＭコード番号（ここではＭ３０）を、そのままデバイスアドレスとして、図４２に示されたＡＮＤ条件処理プログラム部品１０Ｅの再利用パラメータＮｏ．１（ここではＶＢ１）に適用する。
【０２８４】
ステップＳ１６２にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）の機能開始の欄において、「ブロック軸移動完了後」が設定されているかを判定する。Ｍコード機能生成部３４２Ａは、「ブロック軸移動完了後」が設定されていると判定した場合にはステップＳ１６３に進み、そうでない場合にはステップＳ１６３を行わずにステップＳ１６４に進む。なお、図３９に示されるＭ３０の設定では、機能開始の欄においてブロック軸移動完了後が設定されているから、ステップＳ１６２の後にステップＳ１６３が行われてから、ステップＳ１６４が行われることになる。
【０２８５】
ステップＳ１６３にて、Ｍコード機能生成部３４２Ａは、デバイスの仕様（図３５）から、移動指令完了に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図４２に示されたＡＮＤ条件処理プログラム部品１０Ｅの再利用パラメータＮｏ．１（ここではＶＢ１）に列挙して適用する。図３９に示されるＭ３０の設定においてステップＳ１６３が行われると、Ｍコード機能生成部３４２Ａは、デバイスの仕様（図３５）から、移動指令完了に対応するＸＣ１８を抽出し、当該デバイスアドレスを、ＡＮＤ条件処理プログラム部品１０Ｅの再利用パラメータＮｏ．１（ここではＶＢ１）に適用されたＭ３０に直列的に追加することになる。
【０２８６】
ステップＳ１６４にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、機能出力に設定されたデバイスアドレス（ここではＹＣ１Ａ）を、図４２に示されたＡＮＤ条件処理プログラム部品１０Ｅの再利用パラメータＮｏ．２（ここではＶＢ２）に適用する。
【０２８７】
ステップＳ１６５にて、Ｍコード機能生成部３４２Ａは、以上のパラメータの適用がされたＡＮＤ条件処理プログラム部品１０Ｅを、機能キャンセルがない機能処理プログラムとする。これにより、図３９に示されるＭコード５０の仕様のＭ３０の設定に基づいて、図５２に示される機能処理プログラムＬＰＤが生成される。
【０２８８】
次に、Ｍコード機能生成部３４２Ａが、Ｍコード５０の完了処理プログラムＬＰＥを生成する動作について説明する。
【０２８９】
図５９は、Ｍコード機能生成部３４２Ａが、図１８に示したＭコード完了処理プログラム部品１０Ｆを用いて、Ｍコード５０の完了処理プログラムを生成する際の動作を示すフローチャートである。
【０２９０】
ステップＳ１７１にて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、Ｍコードの欄に設定された全てのＭコード番号（ここでは、Ｍ３，Ｍ４，Ｍ５，Ｍ３０）のそれぞれを、そのままデバイスアドレスとして、図１８に示したＭコード完了処理プログラム部品１０ＦのパラメータＮｏ．１に相当する、図１７に示したＡＮＤ条件処理要素部品のパラメータＮｏ．１に適用する。以下、このステップＳ１７１をステップＳ１７１ＡとステップＳ１７１Ｂに分けて詳細に説明する。
【０２９１】
ステップＳ１７１Ａにて、Ｍコード機能生成部３４２Ａは、Ｍコード５０の仕様（図３９）から、１行目のＭコードの欄に設定されたＭコード番号を、そのままデバイスアドレスとして、図１７に示したＡＮＤ条件処理要素部品の再利用パラメータＮｏ．１（ここではＶＢ１）に適用する。そして、ステップＳ１７１Ｂにて、Ｍコード機能生成部３４２Ａは、１行目の機能完了にデバイスアドレスが設定されている場合には、当該デバイスアドレスを、図１７に示したＡＮＤ条件処理要素部品の再利用パラメータＮｏ．１（ここではＶＢ１）に列挙して（直列的に追加して）適用し、ステップＳ１７１Ａに戻って２行目以降の設定についても１行目と同様の動作を行っていく。一方、ステップＳ１７１Ｂにて、Ｍコード機能生成部３４２Ａは、１行目の機能完了にデバイスアドレスが設定されていない場合には、そのまま、ステップＳ１７１Ａに戻って２行目以降の設定についても１行目と同様の動作を行っていく。
【０２９２】
例えば、図３９に示される１行目の設定では、Ｍコードの欄に設定されたＭコード番号はＭ３であるから、当該Ｍ３がＡＮＤ条件処理要素部品のＶＢ１に適用される。そして、同１行目の設定では、機能完了の欄にＸ１８８Ｄというデバイスアドレスが設定されているから、当該Ｘ１８８Ｄが、ＡＮＤ条件処理要素部品に適用されたＭ３に列挙されて（直列的に追加されて）適用される。これにより、図５２に示される完了処理プログラムＬＰＥの１段目の左部分（Ｍ３とＸ１８８Ｄ）が生成される。
【０２９３】
次に、図３９に示される２行目の設定では、Ｍコードの欄に設定されたＭコード番号はＭ４であるから、当該Ｍ４がＡＮＤ条件処理要素部品のＶＢ１に適用される。そして、同２行目の設定では、機能完了の欄にＸ１８８Ｄというデバイスアドレスが設定されているから、当該Ｘ１８８Ｄが、ＡＮＤ条件処理要素部品に適用されたＭ４に列挙されて（直列的に追加されて）適用される。そして、Ｍコード機能生成部３４２Ａは、こうして生成されたプログラムを、１行目の設定に基づいて得られたプログラム（Ｍ３とＸ１８８Ｄ）の下に並列的に追加する。これにより、図５２に示される完了処理プログラムＬＰＥの２段目（Ｍ４とＸ１８８Ｄ）が生成される。
【０２９４】
同様に、図３９に示される３行目の設定では、Ｍコードの欄に設定されたＭコード番号はＭ５であるから、当該Ｍ５がＡＮＤ条件処理要素部品のＶＢ１に適用される。そして、同３行目の設定では、機能完了の欄にＸ１８８Ｃというデバイスアドレスが設定されているから、当該Ｘ１８８Ｃが、ＡＮＤ条件処理要素部品に適用されたＭ５に列挙されて（直列的に追加されて）適用される。そして、Ｍコード機能生成部３４２Ａは、こうして生成されたプログラムを、２行目の設定に基づいて得られたプログラム（Ｍ４とＸ１８８Ｄ）の下に並列的に追加する。これにより、図５２に示される完了処理プログラムＬＰＥの３段目（Ｍ５とＸ１８８Ｃ）が生成される。
【０２９５】
同様に、図３９に示される４行目の設定では、Ｍコードの欄に設定されたＭコード番号はＭ３０であるから、当該Ｍ３０がＡＮＤ条件処理要素部品のＶＢ１に適用される。そして、同４行目の設定では、機能完了の欄にデバイスアドレスが設定されていないから、Ｍコード機能生成部３４２Ａは、当該Ｍ３０がＡＮＤ条件処理要素部品に適用されて得られるプログラムを、３行目の設定に基づいて得られたプログラム（Ｍ５とＸ１８８Ｃ）の下に追加する。これにより、図５２に示される完了処理プログラムＬＰＥの４段目（Ｍ３０）が生成される。
【０２９６】
ステップＳ１７２にて、Ｍコード機能生成部３４２Ａは、デバイスの仕様（図３５）から、Ｍコード完了に対応するデバイスアドレス（ここではＹＣ１Ｅ）を抽出し、当該デバイスアドレスを、図１８に示されたＭコード完了処理プログラム部品１０Ｆの再利用パラメータＮｏ．２（ここではＹＣ１Ｅ）を適用する。これにより、図５２に示される完了処理プログラムＬＰＥの１段目の右側が生成される。
【０２９７】
ステップＳ１７３にて、Ｍコード機能生成部３４２Ａは、以上のパラメータの適用がされたＭコード完了処理プログラム部品１０Ｆを、Ｍコード５０の完了処理プログラムとする。これにより、図３９に示されるＭコード５０の仕様からは、図５２に示される完了処理プログラムＬＰＥが生成される。
【０２９８】
＜まとめ＞
以上、操作盤処理プログラム生成部３４１が操作盤処理プログラムを生成する動作と、Ｍコード処理プログラム生成部３４２がＭコード処理プログラムを生成する動作について、それらプログラムがラダープログラムである場合を例にして説明した。プログラム編集部６は、操作盤処理プログラム生成部３４１が生成した操作盤処理プログラムと、Ｍコード処理プログラム生成部３４２が生成したＭコード処理プログラムとを合わせて、ＣＮＣ工作機械４６のプログラムとする。このとき、１本のプログラムとして生成してもよいし、プログラムを部品単位で分割して生成してもよい。
【０２９９】
部品単位で分割して生成する場合には、モード反転スイッチ処理、運転モード選択スイッチ処理、切削オーバライドスイッチ処理、Ｍコードデコード処理、Ｍコード機能処理、Ｍコード完了処理のようにプログラム生成を構成するプログラム部品単位で分割してもよいし（この場合６つの分割プログラムが生成される）、操作盤処理、Ｍコード処理のようにまとめてもよい（この場合２つの分割プログラムが生成される）。また、分割プログラムを同じファイルで生成してもよいし、分割プログラムごとに別ファイルに分けて生成してもよい。
【０３００】
プログラム編集部６で生成されるプログラムがラダープログラムの場合には、操作盤処理プログラムとＭコード処理プログラムと合わせてなるラダープログラムの最後にＥＮＤ処理命令を追記して、ＣＮＣ工作機械４６のラダープログラムとする。このとき、図６０に示されるように１本のラダープログラムとして生成してもよいし、図６１に示されるようにラダープログラムを部品単位で分割して生成してもよい。部品単位で分割して生成する場合には、モード反転スイッチ処理、運転モード選択スイッチ処理、切削オーバライドスイッチ処理、Ｍコードデコード処理、Ｍコード機能処理、Ｍコード完了処理のようにプログラム生成を構成するプログラム部品単位で分割してもよいし（この場合６つの分割ラダープログラムが生成される）、操作盤処理、Ｍコード処理のようにまとめてもよい（この場合２つの分割ラダープログラムが生成される）。なお、部品単位で分割する場合には、ラダープログラムの先頭に分割プログラムをコールするＣＡＬＬ命令からなるラダープログラムを生成する必要があり、また、分割プログラムの先頭にはジャンプ用ラベルであるプログラムポインタ、終端にはＲＥＴ命令を生成する必要があるが、これらを生成する場合についても、本実施の形態で説明した技術を用いることが可能である。また、分割ラダープログラムを同じファイルで生成してもよいし、分割ラダープログラムごとに別ファイルに分けて生成してもよい。
【０３０１】
ラダープログラム生成で使用したデバイスアドレスには、デバイスコメントを付与しておけば、ラダープログラムを確認するときに便利である。例えば、操作盤５６の場合、スイッチ入力に設定されたデバイスアドレスに対して、スイッチ種別で選択された文字列とスイッチ動作で選択／設定された文字列を結合してデバイスコメントとして生成するように、操作盤処理プログラム生成部３４１を構成すればよい。また、Ｍコード５０の場合、Ｍコード５０と同じデバイスアドレスに対しては、機能名に設定された文字列をデバイスコメントとして付与し、機能出力に設定されたデバイスには、機能名に設定された文字列と機能出力に設定された文字列を結合してデバイスコメントとして生成するようにＭコード処理プログラム生成部３４２を構成するなどすればよい。
【０３０２】
具体的な例では、図４５を用いて説明した、モード反転機能生成部３４１Ａがプログラム生成の過程でデバイスコメントを合わせて生成する手順の通りであり、この手順によって、図４３に示したデバイスコメントが生成される。
【０３０３】
以上のような本実施の形態に係るプログラム作成支援装置１によれば、仕様記述ファイル３０に記述されている仕様、及び、仕様設定部３１で設定された仕様を、プログラム部品１０の再利用時に適用すべきパラメータまたは列挙して適用すべきパラメータに適用しつつ、当該プログラム部品１０から、コントローラやマイコンで実行される計測監視制御プログラムを生成する。したがって、プログラムがほぼ自動的に生成されることから、当該仕様に記述された機能で過不足なく及び不具合なく動作するプログラムを作成することができるとともに、プログラム作成における労力を軽減することができる。
【０３０４】
この発明は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【０３０５】
１  プログラム作成支援装置、２  マイクロプロセッサ、３  表示部、４  入力部、５  保存部、６  プログラム編集部、８  編集後のプログラム、９  付属情報ファイル、１０  プログラム部品、１１  プログラム部品保持部、１２  プログラム部品定義部、１４  再利用パラメータ、１５  プログラム要素部品定義部、１７  プログラム要素部品、１８  再利用パラメータ、１９  プログラム階層部品定義部、２１  プログラム階層部品、２２  再利用パラメータ  ３０  仕様記述ファイル、３１  仕様設定部、３１Ａ  操作盤仕様設定部、３１Ｂ  Ｍコード仕様設定部、３２  デバイス仕様保持部、３４  プログラム生成部、３４１  操作盤処理プログラム生成部、３４２  Ｍコード処理プログラム生成部。
【図１】
0005506822.tif 000002
【図２】
0005506822.tif 000003
【図３】
0005506822.tif 000004
【図４】
0005506822.tif 000005
【図５】
0005506822.tif 000006
【図６】
0005506822.tif 000007
【図７】
0005506822.tif 000008
【図８】
0005506822.tif 000009
【図９】
0005506822.tif 000010
【図１０】
0005506822.tif 000011
【図１１】
0005506822.tif 000012
【図１２】
0005506822.tif 000013
【図１３】
0005506822.tif 000014
【図１４】
0005506822.tif 000015
【図１５】
0005506822.tif 000016
【図１６】
0005506822.tif 000017
【図１７】
0005506822.tif 000018
【図１８】
0005506822.tif 000019
【図１９】
0005506822.tif 000020
【図２０】
0005506822.tif 000021
【図２１】
0005506822.tif 000022
【図２２】
0005506822.tif 000023
【図２３】
0005506822.tif 000024
【図２４】
0005506822.tif 000025
【図２５】
0005506822.tif 000026
【図２６】
0005506822.tif 000027
【図２７】
0005506822.tif 000028
【図２８】
0005506822.tif 000029
【図２９】
0005506822.tif 000030
【図３０】
0005506822.tif 000031
【図３１】
0005506822.tif 000032
【図３２】
0005506822.tif 000033
【図３３】
0005506822.tif 000034
【図３４】
0005506822.tif 000035
【図３５】
0005506822.tif 000036
【図３６】
0005506822.tif 000037
【図３７】
0005506822.tif 000038
【図３８】
0005506822.tif 000039
【図３９】
0005506822.tif 000040
【図４０】
0005506822.tif 000041
【図４１】
0005506822.tif 000042
【図４２】
0005506822.tif 000043
【図４３】
0005506822.tif 000044
【図４４】
0005506822.tif 000045
【図４５】
0005506822.tif 000046
【図４６】
0005506822.tif 000047
【図４７】
0005506822.tif 000048
【図４８】
0005506822.tif 000049
【図４９】
0005506822.tif 000050
【図５０】
0005506822.tif 000051
【図５１】
0005506822.tif 000052
【図５２】
0005506822.tif 000053
【図５３】
0005506822.tif 000054
【図５４】
0005506822.tif 000055
【図５５】
0005506822.tif 000056
【図５６】
0005506822.tif 000057
【図５７】
0005506822.tif 000058
【図５８】
0005506822.tif 000059
【図５９】
0005506822.tif 000060
【図６０】
0005506822.tif 000061
【図６１】
0005506822.tif 000062