(57)【特許請求の範囲】
【請求項１】
あらかじめ予期されている変化点をマクロ記述として含む資産プログラム部品と、その資産プログラム部品に関する汎用性のあるマニュアルと、を関連づけて記憶するプログラム部品記憶手段と、
前記資産プログラム部品に基づいて特定のアプリケーション用プログラム部品を生成する際に与えるマクロ記述への入力パラメータと同じ入力パラメータを用いて前記汎用性のあるマニュアルを変形処理し、前記特定のアプリケーション用プログラム部品用の専用マニュアルを生成する変形処理手段と、
を備え、
前記汎用性のあるマニュアルは、マクロ記述が含まれており、前記変形処理手段は当該マクロ記述の部分をマクロ処理を実行して前記専用マニュアルを生成する機能を含むことを特徴とするプログラム部品の付属データ生成装置。
【請求項２】
前記プログラム部品記憶手段には、前記マニュアル以外の前記資産プログラムに関連する付属データも格納され、
前記変形処理手段は、前記資産プログラム部品に基づいて特定のアプリケーション用プログラム部品を生成する際に与えるマクロへの入力パラメータに基づき前記付属データを変形処理し、前記特定のアプリケーション用プログラム部品用の付属データを生成するものであることを特徴とする請求項１に記載のプログラム部品の付属データ生成装置。
【請求項３】
前記付属データは、前記特定のアプリケーション用プログラム部品に対する入力条件および期待出力を時系列に記載したテストシナリオと、前記特定のアプリケーション用プログラム部品に対して入力を与えたときのその特定のアプリケーション用プログラム部品が制御対象とする装置の振る舞いを定義した３Ｄモデルと、のうちの少なくとも一方を含むものであることを特徴とする請求項２に記載のプログラム部品の付属データ生成装置。
【請求項４】
前記資産プログラム部品の接続関係を示す関連図を表示装置に表示し、変形処理対象の資産プログラム部品を選択させる選択手段を備え、
その選択手段により選択された資産プログラム部品に関するデータを前記変形処理手段が変形処理するように構成したことを特徴とする請求項１から３のいずれか１項に記載のプログラム部品の付属データ生成装置。
【請求項５】
前記資産プログラム部品から特定のアプリケーション用プログラム部品を生成する手段を備え、
前記特定のアプリケーション用プログラム部品の生成と、前記変形処理手段による変形処理を同期して実行するように構成したことを特徴とする請求項１から４のいずれか１項に記載のプログラム部品の付属データ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機器制御プログラムを構成するプログラム部品に関連する付属データを生成するプログラム部品の付属データ生成装置に関するものである。
【背景技術】
【０００２】
工場に設置される検査装置や設備装置は、産業用制御装置が機器制御プログラムを実行することにより制御される。産業用制御装置の具体例は、プログラマブルコントローラである。工場の設備担当者や生産技術担当者などのプログラマブルコントローラユーザは、プログラマブルコントローラに任意の制御を実行させるために、プログラミングツールにてラダープログラムを予め作成する。そして、そのラダープログラムをプログラマブルコントローラに格納する。プログラマブルコントローラは、ラダープログラムをサイクリックに実行し、検査装置や設備装置を任意に制御する。最近では、プログラマブルコントローラの制御内容の一部が違っていても、既存のラダープログラムの一部を必要に応じて編集や修正等を施して、つまりラダープログラムを再利用して、プログラミング作業を効率化することが図られている。その際、プログラム部品管理ツールにて、再利用の対象となるプログラムをデータベース化することも図られている。
【０００３】
ラダープログラムの部品化・再利用化については、一般的にIEC61131規格で定義された”ファンクションブロック”の仕組みを用いて実現されている。ファンクションブロックにより、ラダープログラムと変数のカプセル化が実現され、ラダープログラムを部品として再利用することが可能になっている。変数は、例えばプログラマブルコントローラの制御対象である入出力接点などである。また、ラダープログラムの一部を必要に応じて編集や修正等を施す際に、そのプログラム上の複数箇所に現れる複合処理をそれぞれ簡単なマクロ演算部品の図形で置き換えることにより、図形表示されたプログラムについての一部編集や一部変更等の簡素化を図ることも知られている（特許文献１参照）。
【０００４】
また、近年、製品ラインアップの共通性と差異性とを分析し、効果的なソフトウェア資産の形成を目指す“プロダクトライン・ソフトウェア・エンジニアリング”（以下、ＰＬＳＥと省略）と呼ばれる手法が提唱されている。一方、ラダープログラムが用いられる機器制御システムの分野では、製品ラインナップを充実させてユーザのニーズに対応できるように、大部分は同一であるが部分的に差異のあるシステムを多数開発しているケースが多い。そこで、係るシステムを制御するためのラダープログラムの設計・開発に対しても、ＰＬＳＥ適用の有効性が期待される。
【０００５】
しかし、このような分析に基づくプログラム部品化を行う上で、ファンクションブロックによる方法では以下に示す問題を有する。すなわち、プログラマブルコントローラはラダープログラムの全回路をサイクリックにスキャン実行することによって動作する。従って、プログラムの規模の増大がそのままプログラマブルコントローラにおける１スキャンの実行時間性能の低下につながり、引いては制御対象である設備装置の制御応答時間の遅れにつながる。そのため実行性能の観点から、ラダープログラム部品は、制御対象のアプリケーションに応じて、不要な回路を極力含まないことが望まれる。
【０００６】
一方、複数のアプリケーションにおいて再利用できる汎用性のあるプログラム部品を作成するには、プログラム部品の内部構成や制御対象の振る舞いにある程度のバリエーションを持たせ、プログラミング時にオプション設定できるようにして、内部構成や振る舞いを少し変更させることができるようにプログラムを構築する必要がある。たとえば火災検出アルゴリズムのプログラム部品を考える場合、火災検出用のセンサの数や種類、自己診断機能の有無などの、アルゴリズムそのものは同一であっても、使用する具体的なアプリケーションにより複数のバリエーションやオプションを含むことが多い。このようなオプション選択も入力値としてプログラム部品を記述することで汎用性をもったプログラム部品を実装することはできる。しかしながらこの場合、あるシステムの実現には不要なラダー回路が部品（ファンクションブロック）中に存在することになりプログラムの実行性能が低下する。このため実行性能の制約に厳しい分野では、汎用性のあるプログラム部品を構成することが困難となっている。
【特許文献１】特開平６−２３０８０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ＰＬＳＥ手法では、戦略的な再利用部品をつくるため、プログラム部品にあらかじめ予期されている変化点を組み込んでおくことを提唱している。そこで、本発明者らは、その実現手段のひとつとして、プログラム部品のバリアビリティーポイント（変化点）を定義し、あらかじめラダープログラム中に、その一部を変形するためのマクロ記述を組み込み、与えるパラメータセットを変更してマクロ処理を実行することで、一部が変形したプログラム部品を生成する手法を提案した（特願２００５−２８８８５８号）。これにより、マクロ処理を実行して生成された最終的なラダープログラムは、不要なラダー回路は削除され、適用するアプリケーションに必要十分なラダー回路から構成されたものになり、プログラムの規模を可及的に縮小し実行時間性能の向上を図ることができるという作用効果を奏する。
【０００８】
しかしながら、変化点を含むプログラム部品の品質確保は変形部品毎にテストする必要がある。テストは、テスト対象のプログラム部品への入力条件および期待出力を時系列に記載したテストシナリオを用意し、当該プログラム部品をシミュレータにダウンロードし、シミュレータに実行させる。そして、テストシナリオに沿って順番に入力条件をシミュレータに与え、シミュレータの演算結果（出力）を取得しテストシナリオの期待出力と比較する。そして、比較した結果、全ての演算結果（出力）が期待出力と一致するか否かを判断し、一致する場合にはそのプログラム部品は合格となる。また、不一致の結果が存在するとプログラムに不具合があると判断され、正しく動作するように改めて編集処理をすることになる。このとき、変形部品に対応したテストシナリオを使用する必要があり、異なるテストシナリオを使用すると正しい判定が行えない。特に、変化点が組み込まれたプログラム部品の場合、１つのプログラム部品から複数の変形プログラム部品が生成され、異なる変形部品に対して同一のテストシナリオを用いることができる場合もあれば、異なるテストシナリオを用いなければならない場合もあり、その使い分けを適切に行なうことが煩雑であり、誤って不適切なテストシナリオを使用してしまうおそれもある。
【０００９】
また、通常、プログラム部品に対応するマニュアルが用意される。マニュアルとは、そのプログラム部品がどのような内部構成であって、どのような振る舞いをするかをユーザが認識できるような情報を含むものである。例えばその情報やユーザコメントを文字を含むテキストデータにて作成する。変化点が組み込まれたプログラム部品についてのマニュアルを作成する場合、ユーザが必要とするのは、当該プログラム部品から生成された各変形部品それぞれについて、過不足のない各変形部品用のマニュアルを用意するとともに、ユーザに対して変形部品とマニュアルの組み合わせを間違えることなく渡す必要があり、係る管理が煩雑である。
【００１０】
係る事態は、上記のテストシナリオやマニュアルに限ることはなく、変化点を含むプログラム部品に付属する各種のデータ・情報についても同様のことが言える。
【００１１】
この発明は、変化点を含むプログラム部品に付属・関連する情報（テストシナリオ，マニュアル等）の管理を確実に行なうことのできるプログラム部品の付属データ生成装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記した目的を達成するため、本発明に係るプログラム部品の付属データ生成装置は、あらかじめ予期されている変化点をマクロ記述として含む資産プログラム部品と、その資産プログラム部品に関する汎用性のあるマニュアルと、を関連づけて記憶するプログラム部品記憶手段と、前記資産プログラム部品に基づいて特定のアプリケーション用プログラム部品を生成する際に与えるマクロ記述への入力パラメータと同じ入力パラメータを用いて前記汎用性のあるマニュアルを変形処理し、前記特定のアプリケーション用プログラム部品用の専用マニュアルを生成する変形処理手段と、を備え、前記汎用性のあるマニュアルは、マクロ記述が含まれており、前記変形処理手段は当該マクロ記述の部分をマクロ処理を実行して前記専用マニュアルを生成する機能を含むように構成した。プログラム部品記憶手段は、実施の形態では、プログラム部品データベース７０に対応する。マニュアルを変形処理する変形処理手段は、実施の形態では、主としてマクロ・プロセッサ６３により実現されている。
【００１３】
マクロ記述が組み込まれた汎用性のある資産プログラム部品と、同じくマクロ記述が組み込まれたマニュアルとが関連付けて記憶保持されるとともに、マニュアルを変形処理する際には、前記資産プログラム部品に基づいて特定のアプリケーション用プログラム部品を生成する際に与えるマクロ記述への入力パラメータと同じ入力パラメータを用いるため、特定のアプリケーション用プログラム部品用の専用マニュアルを確実に生成することができる。そして、各特定のアプリケーション用プログラム部品用の専用マニュアルを予め別々に作成し、記憶するのではなく、記憶保持するマニュアルのファイルは、資産プログラム部品と同様に汎用性のある原本とも言うべきマニュアルを用意しておくだけでよく、必要に応じてそのマニュアルからユーザが使用する特定のアプリケーション用プログラム部品用の専用マニュアルを生成することができるので、マニュアルの管理も簡単に行える。
【００１４】
前記プログラム部品記憶手段には、前記マニュアル以外の前記資産プログラムに関連する付属データも格納され、前記変形処理手段は、前記資産プログラム部品に基づいて特定のアプリケーション用プログラム部品を生成する際に与えるマクロへの入力パラメータに基づき前記付属データを変形処理し、前記特定のアプリケーション用プログラム部品用の付属データを生成するものとすることができる。そして、前記付属データは、前記特定のアプリケーション用プログラム部品に対する入力条件および期待出力を時系列に記載した「テストシナリオ」と、前記特定のアプリケーション用プログラム部品に対して入力を与えたときのその特定のアプリケーション用プログラム部品が制御対象とする装置の振る舞いを定義した「３Ｄモデル」と、のうちの少なくとも一方を含むようにするとよい。上述した専用マニュアルの生成と同様に、変形処理手段により、特定のアプリケーション用プログラム部品に適した付属部品を簡単かつ確実に生成することができ、また、変形処理前は、資産プログラム部品と関連付けて記憶保持することができ、管理も容易に行える。「テストシナリオ」や「３Ｄモデル」を変形処理する変形処理手段は、実施の形態ではコンポーネント関連図エディタ６４により実現されている。
【００１５】
実施の形態では、マニュアルのように変化点を含む付属データに対してはマクロ・プロセッサ６３が変形処理をし、テストシナリオや３Ｄモデルのように変化点を組み込むのではなく、関連している複数のデータを記憶保持し、その中から適合するデータを選択することで生成するものについてはコンポーネント関連図エディタ６４が処理をするようにしている。
【００１６】
前記資産プログラム部品の接続関係を示す関連図を表示装置に表示し、変形処理対象の資産プログラム部品を選択させる選択手段を備え、その選択手段により選択された資産プログラム部品に関するデータ（マニュアルその他の付属データ）を前記変形処理手段が変形処理するように構成することができる。選択手段は、実施の形態では、コンポーネント関連図エディタ６４により実現されている。
【００１７】
前記資産プログラム部品から特定のアプリケーション用プログラム部品を生成する手段を備え、前記特定のアプリケーション用プログラム部品の生成と、前記変形処理手段による変形処理を同期して実行するように構成することができる。このようにすると、特定のアプリケーション用プログラム部品と、その専用の付属データ（専用マニュアル，テストシナリオ，３Ｄモデル等）とが同時に生成されるため、変化点を含むプログラム部品に付属・関連する情報（テストシナリオ，マニュアル等）の管理をより簡単かつ確実に行なうことができる。
【００１８】
前記資産プログラム部品は、たとえば、機器制御プログラムを構成するための汎用性のあるプログラム部品である。より具体的には、前記資産プログラム部品は、ラダープログラムにより構成され、前記変化点は、当該ラダープログラムの接点や回路を組み替えることを目的としたマクロ処理言語でマクロ記述されたものとすることができる。
【発明の効果】
【００１９】
本発明では、変化点を含むプログラム部品に付属・関連する情報（テストシナリオ，マニュアル等）の管理を確実に行なうことができる。
【発明を実施するための最良の形態】
【００２０】
本発明の実施の形態を説明するに先立ち、前提となる、あらかじめ予期する変化点をマクロ記述としてラダープログラムに組み込み、アプリケーションに応じて与えるパラメータセットを変更するとともにマクロ処理を実行し、その特定のアプリケーション用プログラム部品を生成する技術について説明する。
【００２１】
まず、再利用範囲を共通性の多い類似のアプリケーション群（プロダクトライン）に限定する。つまり、特定のプロダクトライン（製品系列）の範囲内だけでプログラム部品の再利用を考えるようにした。一例を示すと、携帯電話、ＣＤプレーヤ、半導体製造装置など一つの製品ドメインに限定し、再利用範囲は、その限定された１つの製品の品揃えやバージョンアップを想定した範囲とした。これは、従来のユーザプログラムの開発においては、例えば、ある製品或いはその製品を製造するための製造ラインの動作・制御を司るラダープログラムを開発する場合、その製品にのみ着目し、その製品のための製造ライン用の専用のラダープログラムを作成していた。一方、複数のアプリケーションにおいて再利用できる汎用性のあるプログラム部品を作成するに際し、ＰＬＳＥ手法による戦略的な再利用部品をつくるため部品にあらかじめ予期されている変化点を組み込むことが行なわれる。この場合に、想定する複数のアプリケーションの範囲をいたずらに広げるのではなく、上述したように、特定のプロダクトライン（製品系列）の範囲内だけでプログラム部品の再利用を考えることで、より適切な部品を作成することができる。
【００２２】
具体的には、対象となる製品のアプリケーション群（プロダクトライン）において共通性と差異性とを分析し、共通部分と差異部分とが一つのプログラム部品内に混在しないようにプログラム部品を設計する。図１は、製品の共通性と差異性とを分けた一例を説明する図である。同図（ａ）には、上述した従来の開発対象の製品Ａ（アプリケーション）のみを考慮して分析し、その製品用のプログラムを作成した例が示されている。ここでは、便宜上、４つのモジュール（ファンクションブロック）によりラダープログラムが構築されているとする。この状態において、その製品と同一シリーズ（バリエーション：品揃え）の製品が存在したり、その製品を基礎としたバージョンアップが行なわれたりすることがある。係る場合、そのバリエーションの製品Ａ１，Ａ２，……やバージョンアップされた製品Ａ′，Ａ″，……は、元となる製品Ａと共通することが多く、その製品Ａ１，Ａ′等のためのラダープログラムは、元となる製品Ａのラダープログラムの一部を編集・変更することで製造することができる場合が多々ある。ただし、通常では、製品Ａ用のラダープログラムを開発する場合には、製品Ａのみを考慮して作成するため、バージョンアップした次の製品Ａ′等や製品Ａのバリエーションの製品Ａ１等のためのラダープログラムを開発する場合、例えば、同図の変更箇所Ｘにて示されるように変更箇所が多岐にわたってしまう。
【００２３】
そのため、次の製品を作成するためにどこを変更すればよいのか分かりづらくなってしまう。また、それらの変更箇所Ｘは、モジュールＡ〜Ｄに組み込まれており、しかも、複数のモジュールにまたがって存在するものもあり、変更箇所のみを入れ替えて対応することが困難である。そのため、共通部分が多く、部分的な変更によって対応できるような場合においても、実際には、再度その製品に合わせたラダープログラムを作成する必要が生じてしまうことがある。
【００２４】
そこで、同図（ｂ）に示されるように、対象となる製品のみではなく、予め製品の品揃えに加えて将来のバージョンアップも含めて、共通性と差異性とを分析することによって、同図（ｃ）に示されるように、対象製品のバリエーションにおいて差異部分のみをまとめたモジュールＥを構成することが可能となる。そして、このように共通部分と差異部分とを明確に分けて部品設計を行うことにより、異なる製品バリエーション等を作成する際にはその差異部分に対応する別のモジュールＦと置き換えることにより容易に当該製品のバリエーションを作成することが可能となる。
【００２５】
図２には、一つのアプリケーションとしての検査装置が示されている。同図において点線で囲まれたように、検査装置はその機能や処理内容によって大まかに６つの部分に分けられる。
【００２６】
すなわち、この検査装置は、供給部１と、ロードアーム３と、インデックステーブル４と、検査ヘッド５と、アンロードアーム６と、排出部７と、を備えている。供給部１は、検査対象のワークWを貯留するホッパー１ａと、そのホッパー１ａの下方から１つずつ搬出されるワークＷを上昇移動させるエレベータ１ｂと、そのエレベータ１ｂで上昇移動されたワークＷを搬出する下方傾斜状のシューター１ｃとを備える。ワークＷは、シューター１ｃを滑り降りるように移動し、供給部１の先端に至る。この供給部１は、エレベータ１ｂを備えたエレベータ供給装置となっている。
【００２７】
ロードアーム３は、供給部１の先端に位置しているワークＷを掴むと共に旋回し、インデックステーブル４上の所定位置に置くロボットである。つまり、ロボットアーム３は、インデックステーブル４へのワーク搬入を行なうロボット輸送の一形態である。他には、３次元空間上を移動可能なロボットアームなど、各種の代替え品がある。
【００２８】
このインデックステーブル４が回転動作を行うことにより、ワークＷは検査位置へと移動し、検査ヘッド５が所定位置に降下し検査を行う。インデックステーブル４は更に回転し、ワークWを取り出し位置へと移動する。つまり、インデックステーブル４は、９０度ごとに回転・停止するように制御される。これにより、ロードアーム３により供給されワークＷは、９０度回転して検査位置に移動し、その後さらに９０度移動して排出位置に移動することになる。換言すると、インデックステーブル４は、４つの位置で位置決めがされるように動作する。
【００２９】
検査位置や排出位置などの所望に位置にワークを移動させる手段としては、インデックステーブル４に限ることはなく、たとえば、ベルトコンベアその他各種の手段がある。そして、ベルトコンベアを用いた場合には、ワークを検出するためのセンサを設け、そのセンサ位置にワークが来たときにベルトコンベアを停止することで位置決めできる。よって、センサの設置位置を調整することで任意の位置で位置決めをすることができる。
【００３０】
検査装置５は、たとえばカラーセンサなどを用いることで、形状と色情報を加味して良否判定を行なうことができる。これにより、より高精度な判定を行なうことができる。また、これに限ることはなく、形状を認識する画像センサを用い、簡易で短時間での良否判定を行なうようにすることもできる。
【００３１】
排出位置に移動したワークＷは、アンロードアーム１６によって掴まれてインデックステーブル１４から取り出され、排出部１７に送られる。そして、排出部１７は、検査結果に従い良品／不良品とを分別して排出する。
【００３２】
上述したように、図２に示すアプリケーション（検査装置）は、仕様の異なるバリエーションを構築することができる。図３は、上記の検査装置に対して、同様の検査機能を有するものの、一部の特性において仕様の異なるバリエーションからなるアプリケーションの一例を表形式にて示している。同図における検査装置Ａが、図２を用いて説明した検査装置の一例であり、検査装置Ｂとは、その検査装置Ａの特性を一部変更したバリエーションである。同図に示される検査装置Ａと検査装置Ｂとの特性を比較すると、ワークの搬入及び搬出に関しては双方ともロボット輸送を採用しているが、それ以外の特性においては差異が見られる。例えば、供給部において、検査装置Ａはエレベータ供給を採用しているが、検査装置Ｂは採用していない（供給部がない）。同様に、検査対象のワークを位置決めするために、検査装置Ａはインデックステーブルを用いているが、検査装置Ｂはベルトコンベアを採用している。同様に、ワークの停止位置についても、検査装置Ａは４ポジションによる位置決めを行っているが、検査装置Ｂではセンサによる位置決めを採用している。そして、検査を行う際に、検査装置Ａはカラーセンサを採用しているが、検査装置Ｂは画像センサを用いている。また、検査後のワークの排出については、検査装置Ａはロボットによる良品と不良品との分別を行っており、検査装置Ｂでは不良品のみを押し出す方法を採用している。
【００３３】
これらの検査装置Ａ並びに検査装置Ｂを特性によって共通部分と差異部分とに分けたコンポーネント関連図が、図４〜図６に示されている。「コンポーネント関連図」は、ユーザが選択する特性とは異なり、何をどのようにして作るかという視点で作成される部品図であり、ソフトウェア設計のクラス図に相当する。そして、分析結果を参考に、共通特性と、差異特性が一つの部品内に混在しないように部品を設計する。
【００３４】
図４のコンポーネント関連図には、検査装置におけるコンポーネントの全体図が示されている。同図にて示されるように、検査装置２０は、ワーク搬入部２１、位置決め部２２、検査部２３、及びワーク搬出部２４に区分されている。そして、ワーク搬入部２１は、さらに供給部２１ａとロードアーム２１ｂとが備えられている。そして、位置決め部２２にはインデックステーブル２２ａとベルトコンベア２２ｂが、検査部２３には検査方法２５が、そしてワーク搬出部２４にはアンロ―ドアーム２４ａと搬出部２４ｂとがそれぞれ備えられている。実際の装置（アプリケーション）における６つの部分との関係でいうと、供給部１と、ロードアーム３とでワーク搬入部２１が構成され、アンロードアーム６と、排出部７とでワーク搬出部２４が構成される。
【００３５】
図５は図４のコンポーネント関連図の一部に対応し、ワーク搬入部２１における検査装置Ａ並びに検査装置Ｂの共通性と差異性が示されている。同図に示すように、検査装置Ａは、ワーク搬入部２１として供給部（エレベータ供給）２１ａとロードアーム２１ｂが備えられているが、それに対して検査装置Ｂは供給部２１ａはなく、ロードアーム２１ｂのみ備えられている。すなわち、これらの検査装置においては、供給部２１ａが差異部分であり、ロードアーム２１ｂは共通部分となる。そして、このように製品バリエーションにおける差異部分となった供給部２１ａは、オプション部品として切り出しておく。
【００３６】
図６は図４のコンポーネント関連図の一部に対応し、位置決め部２２における検査装置Ａ並びに検査装置Ｂの共通性と差異性が示されている。同図にて示されるように、検査装置Ａは、位置決め部２２としてインデックステーブル２２ａを採用しているが、それに対して検査装置Ｂはベルトコンベア２２ｂを採用している。すなわち、これらの検査装置においては、インデックステーブル２２ａとベルトコンベア２２ｂとのいずれかを選択することとなる。そして、このような場合は、インデックステーブル２２ａとベルトコンベア２２ｂとを代替部品（代替コンポーネント）として切り出しておく。
【００３７】
このとき、ラダープログラムにて必要な回路を行単位で取り出すマクロ例としては、
！＄ＩＦ（condition）[
true statements
！][
false statements
！]
となる。ここで、conditionには、条件を記述する。ある特性が選択されているかどうかを条件とする場合は、
；＄feature=true
もしくは、
；＄feature=false
と記述する。このとき、feature（特性）には、特定の特性名を指定する。そして、truestatementsとfalse statementsには、取り出したい範囲の回路が入り、行コメントに記述された[]で囲む。
【００３８】
このようなマクロを使用した例が図７及び図８に示されている。図７には上述したワーク搬入部２１のファンクションブロックが示されており、オプションの扱いが示されている。同図にて示されるように、「エレベータ供給」が条件として記述されており、オプションとして選択されていることが示されている。
【００３９】
そして、図８には位置決め部２２のファンクションブロックが示されており、代替の扱いが示されている。同図にて示されるように、インデックステーブルとベルトコンベアが代替として記述されている。このように、アプリケーション毎の部品に生じる差異は部品の変形で対応する。尚、ここでは、ワーク搬入部２１におけるエレベータ供給と、位置決め部２２におけるインデックステーブルとベルトコンベアについて説明したが、他の差異についても同様に対応できることは言うまでもない。
【００４０】
図９及び図１０に、特性モデルの例が示されている。特性モデルとは、製品ラインアップを特性によって表現したモデルである。ここで「特性」は、機能、性能、デザインなどユーザが製品を選択する基準になる概念である。また、特性モデルは、装置を共通性と差異性に着目して分析した特性のモデルである。
【００４１】
これらの図にて示されるように、検査装置３０は、その特性によって供給３１，ワーク搬入３２，位置決め３３，検査３４，ワーク搬出３５，排出３６のコンポーネントに分けられる。そして、供給３１にはエレベータ供給がオプションコンポーネントとして備えられている。ここで、エレベータ供給に設けられている円３７ａは、この特性がオプションコンポーネントとして選択可能に設定されていることを示している。それに対して、ワーク搬入３２及びワーク搬出３５に設けられたロボット輸送３８及び４０は、オプションとしての特性ではないため、エレベータ供給３７における円３７ａのような表示はされていない。
【００４２】
また、位置決め３３には停止位置３９が設けられており、その停止位置は、その特性上さらに４ポジション３９ａとセンサによる位置決め３９ｂとが代替コンポーネントとして設けられている。同様に、検査３４にはカラーセンサ３４ａと画像センサ３４ｂが、そして排出３６には不良品のみ押し出し３６ａとロボットによる分別３６ｂとがそれぞれ代替整コンポーネントとして設定されている。
【００４３】
また、この特性モデルと、図４に示したコンポーネント関連図とを対比すると、特性モデル図の供給３１とワーク搬入３２とが、コンポーネント関連図のワーク搬入部２１に対応し、特性モデル図のワーク搬出３５と排出３６とが、コンポーネント関連図のワーク搬出部２４に対応する。このように、各図を作成する際の視点が異なることから、まとめ方が一部相違する。
【００４４】
図１１は、プログラム作成支援装置の一実施の形態が示されている。同図に示すように、この実施の形態においては、ドメイン分析支援ツール５０と、プログラム部品管理ツール６０と、プログラム部品データベース７０と、単体テストツール７１と、ＰＬＣシミュレータ７２、３Ｄシミュレータ７５とを備えている。なお、ドメイン分析支援ツール５０は、なくても良い。
【００４５】
ドメイン分析支援ツール５０内の特性モデルエディタ５１は、開発対象ドメインにおける製品ラインアップの共通性と差異性とを分析し、製品ラインアップを「特性」によって表現した分析モデルである特性モデル（製品の特性情報）５２を作成するものである。つまり、図９に示す特性モデルを作成するエディタである。この特性モデルを作成することによって、共通性と差異性（オプションの有無や、選択（代替え）可能な部品の有無等）が分析でき、図において表現できる。係る特性モデルが、プログラム部品管理ツール６０に与えられる。
【００４６】
プログラム部品管理ツール６０は、プロダクト・パラメータ・マネージャ６１と、コンポーネント・マネージャ６２と、マクロ・プロセッサ６３と、コンポーネント関連図エディタ６４と、コンポーネント・エディタ６５と、ワークメモリ６６とを備えている。  プロダクト・パラメータ・マネージャ６１は、ある設備装置や製品のアプリケーションを構築するのに必要なプログラム部品群と、そこに記述されるマクロへの入力パラメータセット（「プロダクト・パラメータ」と呼ぶ）６７を管理するものである。本実施の形態では、ドメイン分析支援ツール５０が作成した特性モデルと製品の特性情報を元に、プロダクト・パラメータを作成する機能も持っている。
【００４７】
つまり、差異性に基づいて変更可能な各種の組み合わせからなるアプリケーションを実現するために記述されるマクロへの入力パラメータセット（プロダクト・パラメータ）６７を作成する。上述した例では、検査装置Ａを実現するためのマクロの入力パラメータや、検査装置Ｂを実現するためのマクロへの入力パラメータを作成する。もちろん、選択・生成可能なアプリケーションは、検査装置Ａ，Ｂに限られるものではなく、他の部品の組み合わせからなる検査装置も生成可能なため、それらの検査装置を実現するためのマクロへの入力パラメータも作成する。
【００４８】
このマクロへの入力パラメータセット６７の作成であるが、製品の特性情報を認識しその差異性に基づいて選択可能な組み合わせを全て自動的に抽出することで、自動的に生成するようにすることができる。ただし、係る自動的に生成する方法によると、現実的でないアプリケーションも構築されるため、例えば、図９に示す特性モデル図を表示装置に表示すると共に、図示省略する入力装置をユーザが操作して、差異性の部分（選択可能な部分）について指定する（図１０中黒丸印）。プロダクト・パラメータ・マネージャ６１は、係る指定された組み合わせに基づいてマクロへの入力パラメータを生成する。これにより、ユーザが、入力装置を操作してアプリケーションを複数設定することで、マクロへの入力パラメータセット（プロダクト・パラメータ）６７が生成される。
【００４９】
プログラム部品データベース７０は、図１２に示すように、製品の特性情報と、資産プログラム情報とが格納されている。製品の特性情報は、ドメイン分析支援ツール５０で作成された特性モデルと、特性の組み合わせ（「マクロへの入力パラメータ」に対応）を規定する特性選択データ（マクロへの入力パラメータである）がある。資産プログラム部品情報は、各部品を構成するコンポーネントごとに登録される。これら各コンポーネントは、図４中符号２０から２５で示す個々のコンポーネントに対応し、「ａ」，「ｂ」などの付記号が付された符号は、変更箇所及び変更内容を示すためのマクロとして、上位のコンポーネント中に記述される。
【００５０】
各コンポーネントは、コンポーネントヘッダと、そのコンポーネントヘッダに関連付けられた資産プログラム部品（マクロ記述組み込み）と、その資産プログラム部品の付属データとから構成される。付属データとしては、マニュアル（マクロ記述組み込み）と、テストシナリオと、制御対象の３Ｄモデルとから構成される。
【００５１】
資産プログラム部品は、そのコンポーネントを実現するために基本となるラダープログラムである。この資産プログラム部品を元にして、一部を変更した新プログラム部品を作成する。資産プログラム部品のラダープログラムを変化したいところが存在する場合には、マクロ記述が組み込まれる。そして、１つのコンポーネントに対し、１つのファンクションブロックが構築される。なお、このマクロ記述が含まれている資産プログラム部品に対してマクロ処理を実行すると、不要な回路部分が削除されたり、コピー処理により追加されたりするなどの変形処理がなされ、特定のアプリケーション用プログラム部品が生成される。
【００５２】
マニュアルは、コンポーネントのリファレンスマニュアルである。前述したように、そのプログラム部品がどのような内部構成であって、どのような振る舞いをするかを認識できるような情報を含むものである。図示されているように文字データにて作成されている。資産プログラム部品にマクロ記述が含まれている場合、マクロ処理を実行することにより、異なる複数の特定のアプリケーション用プログラム部品が生成されるため、マニュアルも各特定のアプリケーション用プログラム部品に対応したものを用意する必要がある。本実施の形態では、資産プログラム部品の変化点に合わせて、マニュアルにも変化点に応じたマクロ記述を組み込むようにした。これにより、１つの資産プログラム部品（含むマクロ記述）に対して１つのファイルからなるマニュアル（含むマクロ記述）が用意される。このマクロ記述が含まれるマニュアルは、資産プログラム部品と同様にマクロ処理が実行されることにより、マクロ記述された変化点部分が適宜変形され、特定のアプリケーション用プログラム部品に適したマニュアルが生成される。一例を示すと、図１３（ａ）に示すようなマクロ記述が組み込まれたマニュアルに対し、「インデックステーブル」の特性が選択された場合、図１３（ｂ）に示すようにインデックステーブル用の部品リファレンスマニュアルが生成される。なお、マクロ記述の仕方並びにそれに基づくマクロ処理の実行は、資産プログラム部品に対するものと同様にしている。
【００５３】
テストシナリオは、プログラム部品への入力条件、および期待出力を時系列に記載したものである。作成されたユーザプログラムの検証時に使用する。テストシナリオは、１つの特定のアプリケーション用プログラム部品に対して、１または複数個用意される。また、異なる特定のアプリケーション用プログラム部品に対し、同一のテストシナリオを使用することもある。これは、特定のアプリケーション用プログラム部品が異なっていても、入力条件に対する出力の変化の時系列の関係が同じ場合があり、係る場合には、テストシナリオを共通使用する。
【００５４】
制御対象の３Ｄモデルは、資産プログラム部品ひいてはその資産プログラム部品により生成される特定のアプリケーション用プログラム部品が制御対象とする装置の３Ｄ形状や、その特定のアプリケーション用プログラム部品に対して入力を与えたときの振る舞いを定義したものである。例えば、所定の３Ｄモデルを３Ｄシミュレータ７５に実装するとともに、その３Ｄシミュレータ７５に対して３Ｄモデルにより定義された入力条件を順次与えることで制御対象とする装置の動作を３Ｄで表示することができる。
【００５５】
コンポーネントヘッダは、図１４に示すようなデータ構造からなる。図から明らかなように、上位から順に、コンポーネント名，実現している特性のリスト，インタフェース定義，関連コンポーネントリスト，プログラム種別，プログラム部品ファイル，テストシナリオリスト，３Ｄモデルリスト名，マニュアルファイル名並びにコメントから構築される。
【００５６】
「コンポーネント名」には、コンポーネント関連図エディタで表示されるそのコンポーネントの名称が記述される。このコンポーネント名は、対応するコンポーネントの１番上の欄に標記される。
【００５７】
「実現している特性のリスト」には、コンポーネントにより実現／実装されている特性のリストが記述される。特性の名前でもあり、コンポーネント関連図エディタで表示された場合に、そのコンポーネントの２番目の欄に標記される。また、特性モデル図（図９等）において、各それぞれの特性として標記される。
【００５８】
インタフェース定義と、関連コンポーネントリストは、外部との関連を定義する領域である。「インタフェース定義」には、他のコンポーネントが利用可能な入出力定義を記述する。具体的には、変数名およびデータ型、入出力の区別などが記述される。「関連コンポーネントリスト」には、そのコンポーネントが動作するために必要なコンポーネントを記載したリストが記述される。たとえば、図４において検査装置２０のコンポーネントには、ワーク搬入部２１，位置決め部２２，検査部２３，ワーク搬出部２４の各コンポーネントを特定する情報がリストとして記述される。これにより、各コンポーネントの接続関係がわかり、コンポーネント関連図も再現できる。
【００５９】
プログラム種別と、プログラム部品ファイルは、コンポーネント本体であり、「プログラム種別」には、プログラム部品が実装されている言語、または実行できるＰＬＣ機種の種別が記述され、「プログラム部品ファイル」には、上記プログラム種別により、実装されたプログラムのソースコードが記述される。
【００６０】
テストシナリオリストと３Ｄモデルリスト名は、制御対象情報であり、テストシナリオリスト名には上記プログラム部品への入力条件、および期待出力を時系列に記載したシナリオファイルを複数リストにしたものが記述される。このテストシナリオリストは、図１５（ａ）に示すように、シナリオＩＤと、テスト結果と、テストシナリオファイル名と、適合特性選択データ名とを関連付けたテーブルとなっている。ここで、シナリオＩＤは、テストシナリオをユニークに特定するための認識番号であり、テスト結果の欄は、そのテストシナリオに従って実行した結果（ＯＫ／ＮＧ）並びに未テスト状態（−）が格納される。テキストシナリオファイル名は、各テキストシナリオのファイル名が格納される。適合特性選択データ名は、対応するテキストシナリオを用いてテストを行なえる特性選択データのファイル名を格納する。すなわち、異なる特性選択データであっても、プログラム部品への入力条件、およびそれに対する期待出力の時系列データが等しいことがある。特に、アプリケーション群を構成する各アプリケーションは、バージョンアップであったり、製品の品揃えであったりして共通する部分も多数あるため、異なる特性選択データであっても同一のテストシナリオを用いることができることがある。また、１つの特性選択データに対し、複数のテストシナリオが用意されることももちろんある。
【００６１】
３Ｄモデルリスト名は、上述したプログラム部品が制御対象とする装置の３Ｄ形状、および入力を与えたときの振る舞いを定義した３Ｄモデルを複数リストにしたものが記述される。この３Ｄモデルリストは、図１５（ｂ）に示すように、ＩＤと、３Ｄモデルファイル名と、適合特性選択データ名とを関連付けたテーブルとなっている。ここで、ＩＤは、３Ｄモデルをユニークに特定するための認識番号である。３Ｄモデルファイル名は、３Ｄモデルのファイル名が格納される。適合特性選択データ名は、対応する３Ｄモデを用いて３Ｄのシミュレーションを行なえる特性選択データのファイル名を格納する。すなわち、異なる特性選択データであっても、３Ｄ形状や入力条件を与えたときの振る舞いが等しいことがある。特に、アプリケーション群を構成する各アプリケーションは、バージョンアップであったり、製品の品揃えであったりして共通する部分も多数あるため、異なる特性選択データであっても同一の３Ｄモデルを使用できる可能性がある。
【００６２】
「マニュアル」には、コンポーネントのリファレンスマニュアル（図１３（ａ）等参照）が格納される。変化点がある場合には、マクロ記述も組み込まれる。なお、このマニュアルの欄には、マニュアルのファイル名のみ記述し、別の記憶エリアにマニュアルファイルの実態を格納しても良い。
【００６３】
なお、「コメント」には、コンポーネントの内容を把握するためのコメントが記述される。このように、コンポーネントヘッダにより、そのコンポーネントに格納された資産プログラム部品並びにテストシナリオとのリンクが張られるとともに、他のコンポーネントとの関連づけが行なわれる。
【００６４】
単体テストツール７１は、ラダー部品に与える仮想入力と期待出力のペアをテストケースとして設定できる。設定した「仮想入力」をＰＬＣシミュレータ７２に与え、シミュレーションを実行し、その出力と期待出力を比較して、テストケースのＯＫ／ＮＧを判定する機能を持つ。その判定結果は、コンポーネント関連図エディタ６４，コンポーネント・マネージャ６２経由でプログラム部品データベース７０に格納される。
【００６５】
ＰＬＣシミュレータ７２はプログラマブルコントローラ（ＰＬＣ）をパソコン上で模擬実行するエミュレータである。ダウンロードされたラダープログラムを、単体テストツール７１から与えられる仮想的なＩ／Ｏ情報を元に実行する。また、３Ｄシミュレータ７５は、あたえられた３Ｄモデルに従って制御対象の装置の実際の動作を表示装置に３Ｄで再現する。
【００６６】
コンポーネント・マネージャ６２は、プログラム部品データベース７０にアクセスし、データの読み書きを行なう。一例を示すと、ラダープログラムの作成用の資産プログラム部品（マクロ付）が格納されているプログラム部品データベース７０から、プロダクト・パラメータ・マネージャ６１によって作成されたプロダクト・パラメータに従い、必要となる資産プログラム部品６８を取り出す機能を有する。また、プログラム部品データベース７０に格納されていない部品を新規作成したり、既存の資産プログラム部品に編集を加えた場合において、新たに作成された資産プログラム部品をプログラム部品データベース７０に格納する機能も有する。
【００６７】
マクロ・プロセッサ６３は、マクロ記述とプロダクト・パラメータに従い、ラダープログラムの変形を実行し、特定アプリケーション用のプログラム部品を生成する機能を有する。すなわち、アプリケーションの要求仕様(特性）と差異部分の関連づけを行なうもので、図１６に示すように、必要な資産プログラム部品を読み出し、資産プログラム部品中にマクロ記述が存在するものに対しては、マクロへの入力パラメータである特性選択データに基づいてマクロ処理を実行し、ラダープログラム中の不要な回路を削除したり、回路をコピーしたりするなどの処理を実行し、必要十分なラダー回路で記述された特定のアプリケーション用プログラム部品が生成される。マクロ処理は、あらかじめマクロ記述で定義した変化点を特性選択データを入力パラメータとして変形処理するもので、係る処理をマクロ・プロセッサ６３が実行する。
【００６８】
また、このマクロ・プロセッサ６３は、コンポーネント・マネージャ６２を介して取得したプログラム部品データベース７０に格納されたマニュアル（マクロ記述組み込み済み）に対してマクロ処理を実行し、特定アプリケーション用のマニュアルを新たに生成する機能を有する。すなわち、特定アプリケーション用に合致するように、資産プログラム部品に対応するマニュアルを元にして、その中の不要な文字列を削除したり、元から存在する文字列を別の文字列に置き換えたりする処理を実行して、新たなマニュアルを生成する。マニュアルに対するマクロ処理は、プログラム部品の変更と同様に、マクロ記述で予め定義した変化したい部分を変形処理するものである。
【００６９】
コンポーネント関連図エディタ６４は、コンポーネント間の関連を視覚的に表示した図であるコンポーネント関連図（図４参照）を表示装置のエディタ画面上に表示すると共に、そのコンポーネント関連図上で編集・テスト対象コンポーネントを特定し、コンポーネントの編集手段たるコンポーネント・エディタ６５や、テスト手段たる単体テストツール７１を起動する。さらに、本発明との関係で言うと、コンポーネント関連図エディタ６４は変形対象のコンポーネントを選択し、自己にて変形処理を行なったり、変形処理を実行する処理手段（マクロ・プロセッサ６３）を起動したりする。
【００７０】
コンポーネント関連図は、例えばプログラムデータベース７０に格納されたコンポーネントヘッダの関連コンポーネントリストなどを参照することで各コンポーネントの関係がわかるので、コンポーネント関連図を構築できる。換言すると、コンポーネント関連図が構築できるような情報を関連コンポーネントリストに登録する。また、特性モデルと同様に、コンポーネント関連図もプログラム部品データベース７０に登録しておき、それを読み出すようにしても良い。
【００７１】
また起動処理は、具体的には、図１７に示すように、表示装置に表示されたコンポーネント関連図エディタ６４のエディタ画面Ｗに表示されたコンポーネント関連図の中から、処理対象のコンポーネントを選択する。係る選択は、たとえばユーザがポインティングデバイスを操作し、エディタ画面Ｗ上のポインタを移動し、目的のコンポーネント（図では「ワーク搬入部」）の上に位置させた後、クリックする。すると、コンポーネント関連図エディタ６４は、そのクリックされた位置の座標位置からどのコンポーネントが指定・選択されたかを判断し、選択されたことを示す標記（図の例では、頂点並びに中間点に○を表示）をするとともに、処理内容（編集／単体テスト／変形）を選択する入力メニューリストＭＬを表示する。そして、入力メニューリストＭＬ中の「編集」が選択された場合には、編集手段たるコンポーネント・エディタ６５を起動し、入力メニューリストＭＬ中の「単体テスト」が選択された場合には、テスト手段たる単体テストツール７１を起動する。これらの処理もコンポーネント関連図エディタ６４が行なう。さらに、入力メニューリストＭＬ中の「変形」が選択された場合には、コンポーネント関連図エディタ６４自ら、或いは所定の処理手段を起動して図１８に示すフローチャートを実行する。
【００７２】
さらにコンポーネント関連図エディタ６４は、指定されたコンポーネントの資産プログラム部品（マクロ記述済み）６８を取得すると共に、そのコンポーネントを元とし（以下、親のコンポーネントと表現）、その元から派生したコンポーネント（以下、子のコンポーネントと表現）が有るか否かを判断する。つまり、図１７のコンポーネント関連図で下位側に接続されたコンポーネント（子）があるか否かを判断し、存在する場合には、その子のコンポーネントに対応する資産プログラム部品６８も読み出し、読み出した各資産プログラム部品を合成し、合成したプログラムをワークメモリ６６に格納する。図１７に示す例では、「ワーク搬入部」が選択されたため、その下位に繋がる「供給部」と「ロードアーム」の各コンポーネントが子のコンポーネントとなり、それぞれの資産プログラム部品も読み出され、合成される。ワークメモリ６６に合成された１つのプログラムを保存すると、コンポーネント関連図エディタ64はコンポーネント・エディタ６５を起動する。
【００７３】
起動されたコンポーネント・エディタ６５は、このワークメモリ６６に格納されたプログラム（合成済み）を読み出して編集処理をする。そして、コンポーネント・エディタ６５は、編集処理が終了したならば、編集後のプログラムをワークメモリ６６に保存する。この保存された編集後のプログラムは、コンポーネント関連図エディタ６４で読み出され、編集対象の資産プログラム部品（編集後）をコンポーネント・マネージャ６２を介してプログラム部品データベース７０の対応するコンポーネントのファイルに格納し、更新処理をする。
【００７４】
コンポーネント・エディタ６５は、コンポーネントの編集等を行なうものであり、本実施の形態ではマクロ記述を含んだラダープログラム部品の編集を行うものである。つまり、コンポーネント・エディタ６５の一形態として、ラダーエディタ（ラダープログラミングツール）がある。この実施の形態においては、マクロの編集機能と、ラダープログラムの編集機能とを併せ持っている。
【００７５】
ユーザがポインティングデバイスを操作してコンポーネントを指定すると共に、入力メニューリストＭＬ中の「単体テスト」が選択された場合、コンポーネント関連図エディタ６４は、指定されたコンポーネントを認識し、そのコンポーネントのコンポーネントヘッダをコンポーネント・マネージャ６２を介してプログラム部品データベース７０より取得し、単体テストをする特定アプリケーション用プログラム部品を生成するためのマクロへの入力パラメータ（特性選択データ）をマニュアルで指定するべく、そのリストを表示する。そして、ユーザから入力されたマクロへの入力パラメータ（特性選択データ）に基づき、マクロ・プロセッサ６３を起動して特定アプリケーション用プログラム部品を生成し、また、その特定アプリケーション用プログラム部品に対応するテストシナリオを生成し、それらを単体テストツール７１に渡す。なお、上記の特定アプリケーション用プログラム部品並びにテストシナリオの生成アルゴリズムについて、後述する。
【００７６】
単体ツール７１は、取得したプログラムファイルとテストシナリオに基づいてテストを実行する。すなわち、単体テストツール７１は、該当プログラムファイルをＰＬＣシミュレータ７２にダウンロードし、ＰＬＣシミュレータ７２の実行を開始させる。そして、単体テストツール７１は、テストシナリオを順番に実行、つまり、所定のタイミングで入力条件を変更し、この入力条件の変更に伴いＰＬＣシミュレータ７２が求めた出力が、テストシナリオの期待出力と一致するか否かを判断する。全ての出力が期待出力と一致する場合には、合格となり、不一致箇所が発生すると不合格となる。この結果は、コンポーネント関連図エディタ６３に渡され、コンポーネント・マネージャ６２経由でプログラム部品データベース７０のコンポーネントヘッダ（テストシナリオリスト名）のテスト結果の欄）に格納される。
【００７７】
次に、本発明の要部となるコンポーネントの変形処理機能を説明する。本実施の形態では、主としてコンポーネント関連図エディタ６４とマクロ・プロセッサ６３が、変形処理機能を実現する。入力メニューリストＭＬ中の「変形」が選択された場合、コンポーネント関連図エディタ６４は、指定されたコンポーネントを認識し、そのコンポーネントのコンポーネントヘッダをコンポーネント・マネージャ６２を介してプログラム部品データベース７０より取得する（Ｓ１）。次いで、該当コンポーネントの特性選択データを（ユーザに選択要求し）、プログラム部品データベース７０より取り出す（Ｓ２）。すなわち、コンポーネントヘッダに格納された「実現している特性のリスト」に基づき、当該コンポーネント（資産プログラム部品）が有している特性選択データ（特定アプリケーション用プログラム部品を生成するためのマクロへの入力パラメータ）を表示装置にリスト表示し、ユーザにマニュアルで指定させる。
【００７８】
次いで、資産プログラム部品のマクロ処理を実行する（Ｓ３）。すなわち、ユーザから指定された特性選択データに対応した特定アプリケーション用プログラム部品を生成する。続いて、資産プログラム部品に関連する付属データの変形処理を行なう。つまり、ユーザから指定された特性選択データに基づき、マニュアルのマクロ処理を実行し、コンポーネントのマニュアル（マクロ記述組み込み）に対してマクロ処理を実行し、処理ステップＳ３を実行して生成された特定アプリケーション用プログラム部品のための部品リファレンスマニュアルを作成する（Ｓ４）。
【００７９】
同様に、上記の特定アプリケーション用プログラム部品に対応したテストシナリオを取り出し（Ｓ５）、さらに、特定アプリケーション用プログラム部品に対応した３Ｄモデルの取り出しを行なう（Ｓ６）。
【００８０】
処理ステップＳ３の資産プログラム部品のマクロ処理は、具体的には、図１９に示すフローチャートを実行する。すなわち、マクロ・プロセッサ６３は、コンポーネント関連図エディタ６４から取得した情報（処理対象の資産プログラム部品及び特性選択データ（マクロへの入力パラメータ））に従い、以下に示す各処理ステップを実行する。まず資産プログラム部品を格納しているファイルをオープンし（Ｓ１１）、新しい特定アプリケーション用プログラム部品を格納するファイルを新規作成する（Ｓ１２）。
【００８１】
次いで、資産プログラム部品を先頭行から順にスキャンを実行し（Ｓ１３）、ファイルの終わりか否かを判断する（Ｓ１４）。ファイルの終わりでない場合（Ｓ１４でＮｏ）には、マクロ処理が行なわれているか否かを判断する（Ｓ１５）。マクロ処理が行なわれていなければ（Ｓ１５でＮｏ）、資産プログラム部品から特定アプリケーション用プログラム部品に、スキャンした現在の処理対象の行を単純コピーし（Ｓ１６）、処理ステップＳ１３に戻り資産プログラム部品の次の行のスキャンを実行する。
【００８２】
一方、スキャンした行にマクロ処理がある場合（Ｓ１５でＹｅｓ）、そのマクロ命令を取り出し（Ｓ１８）、その取り出されたマクロ命令の種類の判別が行われる（Ｓ１９）。このとき、同図においては、必要な回路を行単位で取り出す（Ｓ２０）、回路を行単位でコピーする（Ｓ２１）、及び命令をＡＮＤ接続でコピーする（Ｓ２２）の３つが記載されているが、これらはマクロ命令の一例に過ぎず、様々なマクロ命令の種類の判別を実行する。処理ステップＳ２０の行単位の取り出しは、換言すると、不要な回路がコピーされず、削除されることになる（図７，図８参照）。処理ステップＳ２１の必要な回路の行単位のコピーとは、資産プログラム部品中に記述された回路（基本回路）を複数並列に記述することで、たとえば、その基本回路が１つのロボットアームの動作を制御するものの場合、実際の制御対象の装置では、同一のロボットアームが複数個存在するような場合に用いる。また、処理ステップＳ２２の命令をＡＮＤ回路接続でコピーとは、たとえば資産プログラム部品中に記述された命令は、１つのセンサに対応する１つの接点で、特定アプリケーション用プログラム部品では、その接点を複数個ＡＮＤ接続した回路で記述するものがある。具体的には、その接点がＯＮすると動作が開始（ＯＦＦだと停止）するような場合、実際の制御対象の装置には、複数箇所にセンサを設置し、その複数のセンサの全てがＯＮを条件に動作し、１つのセンサでもＯＦＦになると動作を停止するような場合に用いる。
【００８３】
特定アプリケーション用プログラム部品ファイルに一連の処理を書き出した（Ｓ２３）後、処理ステップＳ１３に戻り資産プログラム部品の次の行のスキャンを実行する。そして、スキャンした結果、ファイルの終わりの場合には、処理ステップＳ１４の分岐判断がＹｅｓとなるので、資産プログラム部品ファイル、特定アプリケーション用プログラム部品ファイルをクローズし、処理を終える（Ｓ１７）。
【００８４】
また、上記の図１９を実行して実現される機能は、主として１つの資産プログラム部品からマクロ処理を実行して特性選択データにより規定される１つの特定アプリケーション用プログラム部品を生成するものである。指定したコンポーネントについて、関連する子のコンポーネントが存在する場合（図１７で「ワーク搬入部」が選択された場合、その子のコンポーネントとして「供給部」と「ロードアーム」が存在している）、たとえば、図２０に示すフローチャートを実行することで、子のコンポーネントまで考慮した１つのプログラム部品を生成することができる。
【００８５】
すなわち、まず該当コンポーネント、およびそれに関連する子のコンポーネントのリストを作成する（Ｓ５１）。このリストの作成は、コンポーネントヘッダの関連コンポーネントリストに基づいて作成できる。そして、上記リストに従い、「プログラム部品データベース７０」より、個々の「資産プログラム部品」のファイルを取り出す（Ｓ５２）。
【００８６】
その後、指定された該当特性選択データ（マクロへの入力パラメータ）を用いてマクロ・プロセッサ６３にてマクロ処理を行い、「資産プログラム部品」を「特定アプリケーション用プログラム部品」に変換する（Ｓ５３）。ここで、該当特性選択データは、指定されたコンポーネントはもちろんのこと、子のコンポーネントが存在する場合には、その子のコンポーネントについての特性選択データも含まれる。換言すると、Ｓ２におけるユーザの選択に伴い取り出された特性選択データは、子のコンポーネントについても指定され、取り出される。この処理ステップＳ５３のマクロ処理が、図１９に示すフローチャートを実行する。そして、個々の「特定アプリケーション用プログラム部品７３」のファイルを合成し、１つのプログラムファイルとする（Ｓ５４）。
【００８７】
このようにして、特定アプリケーション用プログラム部品に基づくそのコンポーネントについてのプログラムファイルが生成される。つまり、子のコンポーネントが存在しない場合には、特定アプリケーション用プログラム部品は元々指定された１つのコンポーネントから生成された１つの特定のアプリケーション用プログラム部品からなるプログラムファイルで構成されるが、子のコンポーネントが存在する場合には、各コンポーネントに基づく特定アプリケーション用プログラム部品を合成し、１つのプログラムファイルを生成する。このプログラムファイルに基づいて、上述した単体テストが実行される。
【００８８】
処理ステップＳ４のマニュアルのマクロ処理の具体的な処理アルゴリズムは、図２１に示すフローチャートを実行するようになっている。すなわち、マクロ・プロセッサ６３は、コンポーネント関連図エディタ６４から取得したコンポーネントヘッダで指定されたマニュアル（マクロ記述付き）の原本ファイルをオープンし（Ｓ３１）、新しい特定アプリケーション用のマニュアルファイルを新規作成する（Ｓ３２）。
【００８９】
次いで、原本マニュアルファイルを先頭から順にスキャン実行し（Ｓ３３）、ファイルの終わりか否かを判断する（Ｓ３４）。ファイルの終わりでない場合（Ｓ３４でＮｏ）には、マクロ処理が行なわれているか否かを判断する（Ｓ３５）。マクロ処理が行なわれていなければ（Ｓ３５でＮｏ）、原本マニュアルファイルから特定アプリケーション用のマニュアルフィルに、スキャンした現在の処理対象の行を単純コピーし（Ｓ３６）、処理ステップＳ３３に戻り原本マニュアルファイルの次の行のスキャンを実行する。
【００９０】
一方、スキャンした行にマクロ処理がある場合（Ｓ３５でＹｅｓ）、そのマクロ命令を取り出し（Ｓ３８）、その取り出されたマクロ命令の種類の判別が行われる（Ｓ３９）。このとき、同図においては、必要な文を行単位で取り出す（Ｓ４０）及び単語を置換する（Ｓ４１）の２つが記載されているが、これらはマクロ命令の一例に過ぎず、様々なマクロ命令の種類の判別を実行する。処理ステップＳ４０の行単位の取り出しは、換言すると、不要な文がコピーされず、削除されることになる（図１３参照）。処理ステップＳ４１の単語を置換とは、例えば、入力機器・出力機器の商品名・型番の置換や、設置数の数値の置換などがある。
【００９１】
特定アプリケーション用のマニュアルファイルに一連の処理を書き出した（Ｓ２３）後、処理ステップＳ３３に戻り原本マニュアルファイルの次の行のスキャンを実行する。そして、スキャンした結果、ファイルの終わりの場合には、処理ステップＳ１４の分岐判断がＹｅｓとなるので、原本マニュアルファイル、特定アプリケーション用のマニュアルファイルをクローズし、処理を終える（Ｓ３７）。このようにして生成された特定アプリケーション用マニュアル７４は、例えば表示装置に表示したり、所定の記憶装置に格納したり、プリントアウトするなどして利用される。
【００９２】
処理ステップＳ５の特定アプリケーション用プログラム部品に対応したテストシナリオの取り出し処理の具体的な処理アルゴリズムは、図２２に示すフローチャートを実行するようになっている。すなわち、コンポーネント関連図エディタ６４は、コンポーネント・マネージャ６２を介してプログラム部品データベース７０に格納された該当コンポーネントヘッダより、テストシナリオリストを取得する（Ｓ６１）。このとき、子のコンポーネントが存在する場合には、その子のコンポーネントに対するテストシナリオも取得するとよい。そして、取得したテストシナリオリストから、該当特性選択データと適合するテストシナリオ名を抽出する（Ｓ６２）。すなわち、図１５（ａ）に示すように、コンポーネントヘッダのテストシナリオリスト名の欄には、適合特性選択データ名が記述されているため、指定された特性選択データと一致するテストシナリオファイル名をすべて抽出し、取得することができる。
【００９３】
コンポーネント関連図エディタ６４は、抽出した「指定された特性選択データと一致するテストシナリオファイル名」を候補テストシナリオとして表示画面に表示し、ユーザに対して今回実行するテストシナリオの選択を促す（Ｓ６３）。そして、ユーザが選択したならば、その選択されたテストシナリオ名に対応するテストシナリオのファイルを取得する（Ｓ６４）。
【００９４】
なお、コンポーネント関連図エディタ６４は、上記の処理ステップＳ６３，Ｓ６４を実行して取得した該当するテストシナリオを単体テストツール７１に渡したり、所定の記憶手段に格納したりする。単体テストツール７１は、取得したテストシナリオと、マクロ・プロセッサ６３が生成した特定アプリケーション用プログラム部品に基づいて、ＰＬＣシミュレータ７２を操作しつつテストを実行する。
【００９５】
処理ステップＳ６の特定アプリケーション用プログラム部品に対応した３Ｄモデルの取り出し処理の具体的な処理アルゴリズムは、図２３に示すフローチャートを実行するようになっている。すなわち、コンポーネント関連図エディタ６４は、コンポーネント・マネージャ６２を介してプログラム部品データベース７０に格納された該当コンポーネントヘッダより、３Ｄモデルリストを取得する（Ｓ７１）。このとき、子のコンポーネントが存在する場合には、その子のコンポーネントに対する３Ｄモデルリストも取得するとよい。そして、取得した３Ｄモデルリストから、該当特性選択データと適合する３Ｄモデル名を抽出する（Ｓ７２）。すなわち、図１５（ｂ）に示すように、コンポーネントヘッダの３Ｄモデルリスト名の欄には、適合特性選択データ名が記述されているため、指定された特性選択データと一致する３Ｄモデル名をすべて抽出し、取得することができる。
【００９６】
コンポーネント関連図エディタ６４は、抽出した指定された特性選択データと一致する３Ｄモデル名を候補３Ｄモデルとして表示画面に表示し、ユーザに対して今回実行するシミュレーションで使用する３Ｄモデルの選択を促す（Ｓ７３）。そして、ユーザが選択したならば、その選択された３Ｄモデル名に対応する３Ｄモデルを取得する（Ｓ７４）。
【００９７】
なお、コンポーネント関連図エディタ６４は、上記の処理ステップＳ７３，Ｓ７４を実行して取得した該当する３Ｄモデルを単体テストツール７１に渡したり、所定の記憶手段に格納する。単体テストツール７１は、取得した３Ｄモデルに基づいて３Ｄシミュレータ７５を操作し、制御対象の装置の動作を３Ｄ表示させる。
【００９８】
なお、上述した実施の形態では、コンポーネントに関連づけて格納された資産プログラムと、その付属データの全てを一括して変形処理するようにしたが、本発明はこれに限ることはなく、資産プログラム部品とは別に、付属データのみを一括して全て変形処理するようにしても良いし、付属データの中の指定した一部のデータに対して変形処理するようにしても良い。この場合、例えば、図１７に示す入力メニューリストＭＬにて「変形」が選択された場合、変形対象の付属データを選択するメニュー画面を表示させ、ユーザから選択された付属データについてのみ上述した変形処理をすることで対応できる。
【図面の簡単な説明】
【００９９】
【図１】製品の共通性と差異性との分析を説明する図である。
【図２】アプリケーションの一形態である検査装置の構造を示す図である。
【図３】検査装置における特性のバリエーションを表形式で示した図である。
【図４】コンポーネントの全体構成図である。
【図５】オプションコンポーネントを説明する図である。
【図６】代替コンポーネントを説明する図である。
【図７】オプションコンポーネントを記述するファンクションブロックの一例を示す図である。
【図８】代替コンポーネントを記述するファンクションブロックの一例を示す図である。
【図９】特性モデルの全体図である。
【図１０】特性モデルにおいて、オプションコンポーネントと代替コンポーネントの選択状態を示す図である。
【図１１】本発明の一実施の形態を示す図である。
【図１２】プログラム部品データベースに格納される情報の一例を示す図である。
【図１３】プログラム部品データベース７０に格納される原本マニュアル（マクロ記述付）と、それに基づいて生成される特定のアプリケーション用プログラム部品に対応したマニュアルを示す図である。
【図１４】コンポーネントヘッダのデータ構造の一例を示す図である。
【図１５】コンポーネントヘッダのデータ構造の一例を示す図である。
【図１６】マクロ処理の作用・原理を説明する図である。
【図１７】コンポーネント関連図エディタにおける表示画面の一例を示す図である。
【図１８】変形処理機能の一例を示すフローチャートの一部である。
【図１９】図１８のＳ３の具体的な処理手順を示すフローチャートである。
【図２０】特定アプリケーション用プログラム部品の生成処理機能を示すフローチャートである。
【図２１】図１８のＳ４の具体的な処理手順を示すフローチャートである。
【図２２】図１８のＳ５の具体的な処理手順を示すフローチャートである。
【図２３】図１８のＳ６の具体的な処理手順を示すフローチャートである。
【符号の説明】
【０１００】
５０  ドメイン支援分析ツール
５１  特性モデルエディタ
５２  製品の特性情報
６０  プログラム部品管理ソフトウェア
６０  プログラム管理ツール
６１  プロダクト・パラメータ・マネージャ
６２  コンポーネント・マネージャ
６３  マクロ・プロセッサ
６４  コンポーネント関連図エディタ
６５  コンポーネント・エディタ
６６  ワークメモリ
６７  マクロへの入力パラメータ（特性選択データ）
６８  資産プログラム部品（マクロ記述済み）
７０  プログラム部品データベース
７１  単体テストツール
７２  ＰＬＣシミュレータ
７３  特定アプリケーション用プログラム部品
７５  ３Ｄシミュレータ
【図１】
0004609655.tif 000002
【図２】
0004609655.tif 000003
【図３】
0004609655.tif 000004
【図４】
0004609655.tif 000005
【図５】
0004609655.tif 000006
【図６】
0004609655.tif 000007
【図７】
0004609655.tif 000008
【図８】
0004609655.tif 000009
【図９】
0004609655.tif 000010
【図１０】
0004609655.tif 000011
【図１１】
0004609655.tif 000012
【図１２】
0004609655.tif 000013
【図１３】
0004609655.tif 000014
【図１４】
0004609655.tif 000015
【図１５】
0004609655.tif 000016
【図１６】
0004609655.tif 000017
【図１７】
0004609655.tif 000018
【図１８】
0004609655.tif 000019
【図１９】
0004609655.tif 000020
【図２０】
0004609655.tif 000021
【図２１】
0004609655.tif 000022
【図２２】
0004609655.tif 000023
【図２３】
0004609655.tif 000024