本発明の実施の形態を説明するに先立ち、前提となる、あらかじめ予期する変化点をマクロ記述としてラダープログラムに組み込み、アプリケーションに応じて与えるパラメータセットを変更するとともにマクロ処理を実行し、その特定のアプリケーション用プログラム部品を生成する技術について説明する。
まず、再利用範囲を共通性の多い類似のアプリケーション群(プロダクトライン)に限定する。つまり、特定のプロダクトライン(製品系列)の範囲内だけでプログラム部品の再利用を考えるようにした。一例を示すと、携帯電話、CDプレーヤ、半導体製造装置など一つの製品ドメインに限定し、再利用範囲は、その限定された1つの製品の品揃えやバージョンアップを想定した範囲とした。これは、従来のユーザプログラムの開発においては、例えば、ある製品或いはその製品を製造するための製造ラインの動作・制御を司るラダープログラムを開発する場合、その製品にのみ着目し、その製品のための製造ライン用の専用のラダープログラムを作成していた。一方、複数のアプリケーションにおいて再利用できる汎用性のあるプログラム部品を作成するに際し、PLSE手法による戦略的な再利用部品をつくるため部品にあらかじめ予期されている変化点を組み込むことが行なわれる。この場合に、想定する複数のアプリケーションの範囲をいたずらに広げるのではなく、上述したように、特定のプロダクトライン(製品系列)の範囲内だけでプログラム部品の再利用を考えることで、より適切な部品を作成することができる。
具体的には、対象となる製品のアプリケーション群(プロダクトライン)において共通性と差異性とを分析し、共通部分と差異部分とが一つのプログラム部品内に混在しないようにプログラム部品を設計する。図1は、製品の共通性と差異性とを分けた一例を説明する図である。同図(a)には、上述した従来の開発対象の製品A(アプリケーション)のみを考慮して分析し、その製品用のプログラムを作成した例が示されている。ここでは、便宜上、4つのモジュール(ファンクションブロック)によりラダープログラムが構築されているとする。この状態において、その製品と同一シリーズ(バリエーション:品揃え)の製品が存在したり、その製品を基礎としたバージョンアップが行なわれたりすることがある。係る場合、そのバリエーションの製品A1,A2,……やバージョンアップされた製品A′,A″,……は、元となる製品Aと共通することが多く、その製品A1,A′等のためのラダープログラムは、元となる製品Aのラダープログラムの一部を編集・変更することで製造することができる場合が多々ある。ただし、通常では、製品A用のラダープログラムを開発する場合には、製品Aのみを考慮して作成するため、バージョンアップした次の製品A′等や製品Aのバリエーションの製品A1等のためのラダープログラムを開発する場合、例えば、同図の変更箇所Xにて示されるように変更箇所が多岐にわたってしまう。
そのため、次の製品を作成するためにどこを変更すればよいのか分かりづらくなってしまう。また、それらの変更箇所Xは、モジュールA〜Dに組み込まれており、しかも、複数のモジュールにまたがって存在するものもあり、変更箇所のみを入れ替えて対応することが困難である。そのため、共通部分が多く、部分的な変更によって対応できるような場合においても、実際には、再度その製品に合わせたラダープログラムを作成する必要が生じてしまうことがある。
そこで、同図(b)に示されるように、対象となる製品のみではなく、予め製品の品揃えに加えて将来のバージョンアップも含めて、共通性と差異性とを分析することによって、同図(c)に示されるように、対象製品のバリエーションにおいて差異部分のみをまとめたモジュールEを構成することが可能となる。そして、このように共通部分と差異部分とを明確に分けて部品設計を行うことにより、異なる製品バリエーション等を作成する際にはその差異部分に対応する別のモジュールFと置き換えることにより容易に当該製品のバリエーションを作成することが可能となる。
図2には、一つのアプリケーションとしての検査装置が示されている。同図において点線で囲まれたように、検査装置はその機能や処理内容によって大まかに6つの部分に分けられる。
すなわち、この検査装置は、供給部1と、ロードアーム3と、インデックステーブル4と、検査ヘッド5と、アンロードアーム6と、排出部7と、を備えている。供給部1は、検査対象のワークWを貯留するホッパー1aと、そのホッパー1aの下方から1つずつ搬出されるワークWを上昇移動させるエレベータ1bと、そのエレベータ1bで上昇移動されたワークWを搬出する下方傾斜状のシューター1cとを備える。ワークWは、シューター1cを滑り降りるように移動し、供給部1の先端に至る。この供給部1は、エレベータ1bを備えたエレベータ供給装置となっている。
ロードアーム3は、供給部1の先端に位置しているワークWを掴むと共に旋回し、インデックステーブル4上の所定位置に置くロボットである。つまり、ロボットアーム3は、インデックステーブル4へのワーク搬入を行なうロボット輸送の一形態である。他には、3次元空間上を移動可能なロボットアームなど、各種の代替え品がある。
このインデックステーブル4が回転動作を行うことにより、ワークWは検査位置へと移動し、検査ヘッド5が所定位置に降下し検査を行う。インデックステーブル4は更に回転し、ワークWを取り出し位置へと移動する。つまり、インデックステーブル4は、90度ごとに回転・停止するように制御される。これにより、ロードアーム3により供給されワークWは、90度回転して検査位置に移動し、その後さらに90度移動して排出位置に移動することになる。換言すると、インデックステーブル4は、4つの位置で位置決めがされるように動作する。
検査位置や排出位置などの所望に位置にワークを移動させる手段としては、インデックステーブル4に限ることはなく、たとえば、ベルトコンベアその他各種の手段がある。そして、ベルトコンベアを用いた場合には、ワークを検出するためのセンサを設け、そのセンサ位置にワークが来たときにベルトコンベアを停止することで位置決めできる。よって、センサの設置位置を調整することで任意の位置で位置決めをすることができる。
検査装置5は、たとえばカラーセンサなどを用いることで、形状と色情報を加味して良否判定を行なうことができる。これにより、より高精度な判定を行なうことができる。また、これに限ることはなく、形状を認識する画像センサを用い、簡易で短時間での良否判定を行なうようにすることもできる。
排出位置に移動したワークWは、アンロードアーム16によって掴まれてインデックステーブル14から取り出され、排出部17に送られる。そして、排出部17は、検査結果に従い良品/不良品とを分別して排出する。
上述したように、図2に示すアプリケーション(検査装置)は、仕様の異なるバリエーションを構築することができる。図3は、上記の検査装置に対して、同様の検査機能を有するものの、一部の特性において仕様の異なるバリエーションからなるアプリケーションの一例を表形式にて示している。同図における検査装置Aが、図2を用いて説明した検査装置の一例であり、検査装置Bとは、その検査装置Aの特性を一部変更したバリエーションである。同図に示される検査装置Aと検査装置Bとの特性を比較すると、ワークの搬入及び搬出に関しては双方ともロボット輸送を採用しているが、それ以外の特性においては差異が見られる。例えば、供給部において、検査装置Aはエレベータ供給を採用しているが、検査装置Bは採用していない(供給部がない)。同様に、検査対象のワークを位置決めするために、検査装置Aはインデックステーブルを用いているが、検査装置Bはベルトコンベアを採用している。同様に、ワークの停止位置についても、検査装置Aは4ポジションによる位置決めを行っているが、検査装置Bではセンサによる位置決めを採用している。そして、検査を行う際に、検査装置Aはカラーセンサを採用しているが、検査装置Bは画像センサを用いている。また、検査後のワークの排出については、検査装置Aはロボットによる良品と不良品との分別を行っており、検査装置Bでは不良品のみを押し出す方法を採用している。
これらの検査装置A並びに検査装置Bを特性によって共通部分と差異部分とに分けたコンポーネント関連図が、図4〜図6に示されている。「コンポーネント関連図」は、ユーザが選択する特性とは異なり、何をどのようにして作るかという視点で作成される部品図であり、ソフトウェア設計のクラス図に相当する。そして、分析結果を参考に、共通特性と、差異特性が一つの部品内に混在しないように部品を設計する。
図4のコンポーネント関連図には、検査装置におけるコンポーネントの全体図が示されている。同図にて示されるように、検査装置20は、ワーク搬入部21、位置決め部22、検査部23、及びワーク搬出部24に区分されている。そして、ワーク搬入部21は、さらに供給部21aとロードアーム21bとが備えられている。そして、位置決め部22にはインデックステーブル22aとベルトコンベア22bが、検査部23には検査方法25が、そしてワーク搬出部24にはアンロ―ドアーム24aと搬出部24bとがそれぞれ備えられている。実際の装置(アプリケーション)における6つの部分との関係でいうと、供給部1と、ロードアーム3とでワーク搬入部21が構成され、アンロードアーム6と、排出部7とでワーク搬出部24が構成される。
図5は図4のコンポーネント関連図の一部に対応し、ワーク搬入部21における検査装置A並びに検査装置Bの共通性と差異性が示されている。同図に示すように、検査装置Aは、ワーク搬入部21として供給部(エレベータ供給)21aとロードアーム21bが備えられているが、それに対して検査装置Bは供給部21aはなく、ロードアーム21bのみ備えられている。すなわち、これらの検査装置においては、供給部21aが差異部分であり、ロードアーム21bは共通部分となる。そして、このように製品バリエーションにおける差異部分となった供給部21aは、オプション部品として切り出しておく。
図6は図4のコンポーネント関連図の一部に対応し、位置決め部22における検査装置A並びに検査装置Bの共通性と差異性が示されている。同図にて示されるように、検査装置Aは、位置決め部22としてインデックステーブル22aを採用しているが、それに対して検査装置Bはベルトコンベア22bを採用している。すなわち、これらの検査装置においては、インデックステーブル22aとベルトコンベア22bとのいずれかを選択することとなる。そして、このような場合は、インデックステーブル22aとベルトコンベア22bとを代替部品(代替コンポーネント)として切り出しておく。
このとき、ラダープログラムにて必要な回路を行単位で取り出すマクロ例としては、
!$IF(condition)[
true statements
!][
false statements
!]
となる。ここで、conditionには、条件を記述する。ある特性が選択されているかどうかを条件とする場合は、
;$feature=true
もしくは、
;$feature=false
と記述する。このとき、feature(特性)には、特定の特性名を指定する。そして、truestatementsとfalse statementsには、取り出したい範囲の回路が入り、行コメントに記述された[]で囲む。
このようなマクロを使用した例が図7及び図8に示されている。図7には上述したワーク搬入部21のファンクションブロックが示されており、オプションの扱いが示されている。同図にて示されるように、「エレベータ供給」が条件として記述されており、オプションとして選択されていることが示されている。
そして、図8には位置決め部22のファンクションブロックが示されており、代替の扱いが示されている。同図にて示されるように、インデックステーブルとベルトコンベアが代替として記述されている。このように、アプリケーション毎の部品に生じる差異は部品の変形で対応する。尚、ここでは、ワーク搬入部21におけるエレベータ供給と、位置決め部22におけるインデックステーブルとベルトコンベアについて説明したが、他の差異についても同様に対応できることは言うまでもない。
図9及び図10に、特性モデルの例が示されている。特性モデルとは、製品ラインアップを特性によって表現したモデルである。ここで「特性」は、機能、性能、デザインなどユーザが製品を選択する基準になる概念である。また、特性モデルは、装置を共通性と差異性に着目して分析した特性のモデルである。
これらの図にて示されるように、検査装置30は、その特性によって供給31,ワーク搬入32,位置決め33,検査34,ワーク搬出35,排出36のコンポーネントに分けられる。そして、供給31にはエレベータ供給がオプションコンポーネントとして備えられている。ここで、エレベータ供給に設けられている円37aは、この特性がオプションコンポーネントとして選択可能に設定されていることを示している。それに対して、ワーク搬入32及びワーク搬出35に設けられたロボット輸送38及び40は、オプションとしての特性ではないため、エレベータ供給37における円37aのような表示はされていない。
また、位置決め33には停止位置39が設けられており、その停止位置は、その特性上さらに4ポジション39aとセンサによる位置決め39bとが代替コンポーネントとして設けられている。同様に、検査34にはカラーセンサ34aと画像センサ34bが、そして排出36には不良品のみ押し出し36aとロボットによる分別36bとがそれぞれ代替整コンポーネントとして設定されている。
また、この特性モデルと、図4に示したコンポーネント関連図とを対比すると、特性モデル図の供給31とワーク搬入32とが、コンポーネント関連図のワーク搬入部21に対応し、特性モデル図のワーク搬出35と排出36とが、コンポーネント関連図のワーク搬出部24に対応する。このように、各図を作成する際の視点が異なることから、まとめ方が一部相違する。
図11は、プログラム作成支援装置の一実施の形態が示されている。同図に示すように、この実施の形態においては、ドメイン分析支援ツール50と、プログラム部品管理ツール60と、プログラム部品データベース70と、単体テストツール71と、PLCシミュレータ72、3Dシミュレータ75とを備えている。なお、ドメイン分析支援ツール50は、なくても良い。
ドメイン分析支援ツール50内の特性モデルエディタ51は、開発対象ドメインにおける製品ラインアップの共通性と差異性とを分析し、製品ラインアップを「特性」によって表現した分析モデルである特性モデル(製品の特性情報)52を作成するものである。つまり、図9に示す特性モデルを作成するエディタである。この特性モデルを作成することによって、共通性と差異性(オプションの有無や、選択(代替え)可能な部品の有無等)が分析でき、図において表現できる。係る特性モデルが、プログラム部品管理ツール60に与えられる。
プログラム部品管理ツール60は、プロダクト・パラメータ・マネージャ61と、コンポーネント・マネージャ62と、マクロ・プロセッサ63と、コンポーネント関連図エディタ64と、コンポーネント・エディタ65と、ワークメモリ66とを備えている。 プロダクト・パラメータ・マネージャ61は、ある設備装置や製品のアプリケーションを構築するのに必要なプログラム部品群と、そこに記述されるマクロへの入力パラメータセット(「プロダクト・パラメータ」と呼ぶ)67を管理するものである。本実施の形態では、ドメイン分析支援ツール50が作成した特性モデルと製品の特性情報を元に、プロダクト・パラメータを作成する機能も持っている。
つまり、差異性に基づいて変更可能な各種の組み合わせからなるアプリケーションを実現するために記述されるマクロへの入力パラメータセット(プロダクト・パラメータ)67を作成する。上述した例では、検査装置Aを実現するためのマクロの入力パラメータや、検査装置Bを実現するためのマクロへの入力パラメータを作成する。もちろん、選択・生成可能なアプリケーションは、検査装置A,Bに限られるものではなく、他の部品の組み合わせからなる検査装置も生成可能なため、それらの検査装置を実現するためのマクロへの入力パラメータも作成する。
このマクロへの入力パラメータセット67の作成であるが、製品の特性情報を認識しその差異性に基づいて選択可能な組み合わせを全て自動的に抽出することで、自動的に生成するようにすることができる。ただし、係る自動的に生成する方法によると、現実的でないアプリケーションも構築されるため、例えば、図9に示す特性モデル図を表示装置に表示すると共に、図示省略する入力装置をユーザが操作して、差異性の部分(選択可能な部分)について指定する(図10中黒丸印)。プロダクト・パラメータ・マネージャ61は、係る指定された組み合わせに基づいてマクロへの入力パラメータを生成する。これにより、ユーザが、入力装置を操作してアプリケーションを複数設定することで、マクロへの入力パラメータセット(プロダクト・パラメータ)67が生成される。
プログラム部品データベース70は、図12に示すように、製品の特性情報と、資産プログラム情報とが格納されている。製品の特性情報は、ドメイン分析支援ツール50で作成された特性モデルと、特性の組み合わせ(「マクロへの入力パラメータ」に対応)を規定する特性選択データ(マクロへの入力パラメータである)がある。資産プログラム部品情報は、各部品を構成するコンポーネントごとに登録される。これら各コンポーネントは、図4中符号20から25で示す個々のコンポーネントに対応し、「a」,「b」などの付記号が付された符号は、変更箇所及び変更内容を示すためのマクロとして、上位のコンポーネント中に記述される。
各コンポーネントは、コンポーネントヘッダと、そのコンポーネントヘッダに関連付けられた資産プログラム部品(マクロ記述組み込み)と、その資産プログラム部品の付属データとから構成される。付属データとしては、マニュアル(マクロ記述組み込み)と、テストシナリオと、制御対象の3Dモデルとから構成される。
資産プログラム部品は、そのコンポーネントを実現するために基本となるラダープログラムである。この資産プログラム部品を元にして、一部を変更した新プログラム部品を作成する。資産プログラム部品のラダープログラムを変化したいところが存在する場合には、マクロ記述が組み込まれる。そして、1つのコンポーネントに対し、1つのファンクションブロックが構築される。なお、このマクロ記述が含まれている資産プログラム部品に対してマクロ処理を実行すると、不要な回路部分が削除されたり、コピー処理により追加されたりするなどの変形処理がなされ、特定のアプリケーション用プログラム部品が生成される。
マニュアルは、コンポーネントのリファレンスマニュアルである。前述したように、そのプログラム部品がどのような内部構成であって、どのような振る舞いをするかを認識できるような情報を含むものである。図示されているように文字データにて作成されている。資産プログラム部品にマクロ記述が含まれている場合、マクロ処理を実行することにより、異なる複数の特定のアプリケーション用プログラム部品が生成されるため、マニュアルも各特定のアプリケーション用プログラム部品に対応したものを用意する必要がある。本実施の形態では、資産プログラム部品の変化点に合わせて、マニュアルにも変化点に応じたマクロ記述を組み込むようにした。これにより、1つの資産プログラム部品(含むマクロ記述)に対して1つのファイルからなるマニュアル(含むマクロ記述)が用意される。このマクロ記述が含まれるマニュアルは、資産プログラム部品と同様にマクロ処理が実行されることにより、マクロ記述された変化点部分が適宜変形され、特定のアプリケーション用プログラム部品に適したマニュアルが生成される。一例を示すと、図13(a)に示すようなマクロ記述が組み込まれたマニュアルに対し、「インデックステーブル」の特性が選択された場合、図13(b)に示すようにインデックステーブル用の部品リファレンスマニュアルが生成される。なお、マクロ記述の仕方並びにそれに基づくマクロ処理の実行は、資産プログラム部品に対するものと同様にしている。
テストシナリオは、プログラム部品への入力条件、および期待出力を時系列に記載したものである。作成されたユーザプログラムの検証時に使用する。テストシナリオは、1つの特定のアプリケーション用プログラム部品に対して、1または複数個用意される。また、異なる特定のアプリケーション用プログラム部品に対し、同一のテストシナリオを使用することもある。これは、特定のアプリケーション用プログラム部品が異なっていても、入力条件に対する出力の変化の時系列の関係が同じ場合があり、係る場合には、テストシナリオを共通使用する。
制御対象の3Dモデルは、資産プログラム部品ひいてはその資産プログラム部品により生成される特定のアプリケーション用プログラム部品が制御対象とする装置の3D形状や、その特定のアプリケーション用プログラム部品に対して入力を与えたときの振る舞いを定義したものである。例えば、所定の3Dモデルを3Dシミュレータ75に実装するとともに、その3Dシミュレータ75に対して3Dモデルにより定義された入力条件を順次与えることで制御対象とする装置の動作を3Dで表示することができる。
コンポーネントヘッダは、図14に示すようなデータ構造からなる。図から明らかなように、上位から順に、コンポーネント名,実現している特性のリスト,インタフェース定義,関連コンポーネントリスト,プログラム種別,プログラム部品ファイル,テストシナリオリスト,3Dモデルリスト名,マニュアルファイル名並びにコメントから構築される。
「コンポーネント名」には、コンポーネント関連図エディタで表示されるそのコンポーネントの名称が記述される。このコンポーネント名は、対応するコンポーネントの1番上の欄に標記される。
「実現している特性のリスト」には、コンポーネントにより実現/実装されている特性のリストが記述される。特性の名前でもあり、コンポーネント関連図エディタで表示された場合に、そのコンポーネントの2番目の欄に標記される。また、特性モデル図(図9等)において、各それぞれの特性として標記される。
インタフェース定義と、関連コンポーネントリストは、外部との関連を定義する領域である。「インタフェース定義」には、他のコンポーネントが利用可能な入出力定義を記述する。具体的には、変数名およびデータ型、入出力の区別などが記述される。「関連コンポーネントリスト」には、そのコンポーネントが動作するために必要なコンポーネントを記載したリストが記述される。たとえば、図4において検査装置20のコンポーネントには、ワーク搬入部21,位置決め部22,検査部23,ワーク搬出部24の各コンポーネントを特定する情報がリストとして記述される。これにより、各コンポーネントの接続関係がわかり、コンポーネント関連図も再現できる。
プログラム種別と、プログラム部品ファイルは、コンポーネント本体であり、「プログラム種別」には、プログラム部品が実装されている言語、または実行できるPLC機種の種別が記述され、「プログラム部品ファイル」には、上記プログラム種別により、実装されたプログラムのソースコードが記述される。
テストシナリオリストと3Dモデルリスト名は、制御対象情報であり、テストシナリオリスト名には上記プログラム部品への入力条件、および期待出力を時系列に記載したシナリオファイルを複数リストにしたものが記述される。このテストシナリオリストは、図15(a)に示すように、シナリオIDと、テスト結果と、テストシナリオファイル名と、適合特性選択データ名とを関連付けたテーブルとなっている。ここで、シナリオIDは、テストシナリオをユニークに特定するための認識番号であり、テスト結果の欄は、そのテストシナリオに従って実行した結果(OK/NG)並びに未テスト状態(−)が格納される。テキストシナリオファイル名は、各テキストシナリオのファイル名が格納される。適合特性選択データ名は、対応するテキストシナリオを用いてテストを行なえる特性選択データのファイル名を格納する。すなわち、異なる特性選択データであっても、プログラム部品への入力条件、およびそれに対する期待出力の時系列データが等しいことがある。特に、アプリケーション群を構成する各アプリケーションは、バージョンアップであったり、製品の品揃えであったりして共通する部分も多数あるため、異なる特性選択データであっても同一のテストシナリオを用いることができることがある。また、1つの特性選択データに対し、複数のテストシナリオが用意されることももちろんある。
3Dモデルリスト名は、上述したプログラム部品が制御対象とする装置の3D形状、および入力を与えたときの振る舞いを定義した3Dモデルを複数リストにしたものが記述される。この3Dモデルリストは、図15(b)に示すように、IDと、3Dモデルファイル名と、適合特性選択データ名とを関連付けたテーブルとなっている。ここで、IDは、3Dモデルをユニークに特定するための認識番号である。3Dモデルファイル名は、3Dモデルのファイル名が格納される。適合特性選択データ名は、対応する3Dモデを用いて3Dのシミュレーションを行なえる特性選択データのファイル名を格納する。すなわち、異なる特性選択データであっても、3D形状や入力条件を与えたときの振る舞いが等しいことがある。特に、アプリケーション群を構成する各アプリケーションは、バージョンアップであったり、製品の品揃えであったりして共通する部分も多数あるため、異なる特性選択データであっても同一の3Dモデルを使用できる可能性がある。
「マニュアル」には、コンポーネントのリファレンスマニュアル(図13(a)等参照)が格納される。変化点がある場合には、マクロ記述も組み込まれる。なお、このマニュアルの欄には、マニュアルのファイル名のみ記述し、別の記憶エリアにマニュアルファイルの実態を格納しても良い。
なお、「コメント」には、コンポーネントの内容を把握するためのコメントが記述される。このように、コンポーネントヘッダにより、そのコンポーネントに格納された資産プログラム部品並びにテストシナリオとのリンクが張られるとともに、他のコンポーネントとの関連づけが行なわれる。
単体テストツール71は、ラダー部品に与える仮想入力と期待出力のペアをテストケースとして設定できる。設定した「仮想入力」をPLCシミュレータ72に与え、シミュレーションを実行し、その出力と期待出力を比較して、テストケースのOK/NGを判定する機能を持つ。その判定結果は、コンポーネント関連図エディタ64,コンポーネント・マネージャ62経由でプログラム部品データベース70に格納される。
PLCシミュレータ72はプログラマブルコントローラ(PLC)をパソコン上で模擬実行するエミュレータである。ダウンロードされたラダープログラムを、単体テストツール71から与えられる仮想的なI/O情報を元に実行する。また、3Dシミュレータ75は、あたえられた3Dモデルに従って制御対象の装置の実際の動作を表示装置に3Dで再現する。
コンポーネント・マネージャ62は、プログラム部品データベース70にアクセスし、データの読み書きを行なう。一例を示すと、ラダープログラムの作成用の資産プログラム部品(マクロ付)が格納されているプログラム部品データベース70から、プロダクト・パラメータ・マネージャ61によって作成されたプロダクト・パラメータに従い、必要となる資産プログラム部品68を取り出す機能を有する。また、プログラム部品データベース70に格納されていない部品を新規作成したり、既存の資産プログラム部品に編集を加えた場合において、新たに作成された資産プログラム部品をプログラム部品データベース70に格納する機能も有する。
マクロ・プロセッサ63は、マクロ記述とプロダクト・パラメータに従い、ラダープログラムの変形を実行し、特定アプリケーション用のプログラム部品を生成する機能を有する。すなわち、アプリケーションの要求仕様(特性)と差異部分の関連づけを行なうもので、図16に示すように、必要な資産プログラム部品を読み出し、資産プログラム部品中にマクロ記述が存在するものに対しては、マクロへの入力パラメータである特性選択データに基づいてマクロ処理を実行し、ラダープログラム中の不要な回路を削除したり、回路をコピーしたりするなどの処理を実行し、必要十分なラダー回路で記述された特定のアプリケーション用プログラム部品が生成される。マクロ処理は、あらかじめマクロ記述で定義した変化点を特性選択データを入力パラメータとして変形処理するもので、係る処理をマクロ・プロセッサ63が実行する。
また、このマクロ・プロセッサ63は、コンポーネント・マネージャ62を介して取得したプログラム部品データベース70に格納されたマニュアル(マクロ記述組み込み済み)に対してマクロ処理を実行し、特定アプリケーション用のマニュアルを新たに生成する機能を有する。すなわち、特定アプリケーション用に合致するように、資産プログラム部品に対応するマニュアルを元にして、その中の不要な文字列を削除したり、元から存在する文字列を別の文字列に置き換えたりする処理を実行して、新たなマニュアルを生成する。マニュアルに対するマクロ処理は、プログラム部品の変更と同様に、マクロ記述で予め定義した変化したい部分を変形処理するものである。
コンポーネント関連図エディタ64は、コンポーネント間の関連を視覚的に表示した図であるコンポーネント関連図(図4参照)を表示装置のエディタ画面上に表示すると共に、そのコンポーネント関連図上で編集・テスト対象コンポーネントを特定し、コンポーネントの編集手段たるコンポーネント・エディタ65や、テスト手段たる単体テストツール71を起動する。さらに、本発明との関係で言うと、コンポーネント関連図エディタ64は変形対象のコンポーネントを選択し、自己にて変形処理を行なったり、変形処理を実行する処理手段(マクロ・プロセッサ63)を起動したりする。
コンポーネント関連図は、例えばプログラムデータベース70に格納されたコンポーネントヘッダの関連コンポーネントリストなどを参照することで各コンポーネントの関係がわかるので、コンポーネント関連図を構築できる。換言すると、コンポーネント関連図が構築できるような情報を関連コンポーネントリストに登録する。また、特性モデルと同様に、コンポーネント関連図もプログラム部品データベース70に登録しておき、それを読み出すようにしても良い。
また起動処理は、具体的には、図17に示すように、表示装置に表示されたコンポーネント関連図エディタ64のエディタ画面Wに表示されたコンポーネント関連図の中から、処理対象のコンポーネントを選択する。係る選択は、たとえばユーザがポインティングデバイスを操作し、エディタ画面W上のポインタを移動し、目的のコンポーネント(図では「ワーク搬入部」)の上に位置させた後、クリックする。すると、コンポーネント関連図エディタ64は、そのクリックされた位置の座標位置からどのコンポーネントが指定・選択されたかを判断し、選択されたことを示す標記(図の例では、頂点並びに中間点に○を表示)をするとともに、処理内容(編集/単体テスト/変形)を選択する入力メニューリストMLを表示する。そして、入力メニューリストML中の「編集」が選択された場合には、編集手段たるコンポーネント・エディタ65を起動し、入力メニューリストML中の「単体テスト」が選択された場合には、テスト手段たる単体テストツール71を起動する。これらの処理もコンポーネント関連図エディタ64が行なう。さらに、入力メニューリストML中の「変形」が選択された場合には、コンポーネント関連図エディタ64自ら、或いは所定の処理手段を起動して図18に示すフローチャートを実行する。
さらにコンポーネント関連図エディタ64は、指定されたコンポーネントの資産プログラム部品(マクロ記述済み)68を取得すると共に、そのコンポーネントを元とし(以下、親のコンポーネントと表現)、その元から派生したコンポーネント(以下、子のコンポーネントと表現)が有るか否かを判断する。つまり、図17のコンポーネント関連図で下位側に接続されたコンポーネント(子)があるか否かを判断し、存在する場合には、その子のコンポーネントに対応する資産プログラム部品68も読み出し、読み出した各資産プログラム部品を合成し、合成したプログラムをワークメモリ66に格納する。図17に示す例では、「ワーク搬入部」が選択されたため、その下位に繋がる「供給部」と「ロードアーム」の各コンポーネントが子のコンポーネントとなり、それぞれの資産プログラム部品も読み出され、合成される。ワークメモリ66に合成された1つのプログラムを保存すると、コンポーネント関連図エディタ64はコンポーネント・エディタ65を起動する。
起動されたコンポーネント・エディタ65は、このワークメモリ66に格納されたプログラム(合成済み)を読み出して編集処理をする。そして、コンポーネント・エディタ65は、編集処理が終了したならば、編集後のプログラムをワークメモリ66に保存する。この保存された編集後のプログラムは、コンポーネント関連図エディタ64で読み出され、編集対象の資産プログラム部品(編集後)をコンポーネント・マネージャ62を介してプログラム部品データベース70の対応するコンポーネントのファイルに格納し、更新処理をする。
コンポーネント・エディタ65は、コンポーネントの編集等を行なうものであり、本実施の形態ではマクロ記述を含んだラダープログラム部品の編集を行うものである。つまり、コンポーネント・エディタ65の一形態として、ラダーエディタ(ラダープログラミングツール)がある。この実施の形態においては、マクロの編集機能と、ラダープログラムの編集機能とを併せ持っている。
ユーザがポインティングデバイスを操作してコンポーネントを指定すると共に、入力メニューリストML中の「単体テスト」が選択された場合、コンポーネント関連図エディタ64は、指定されたコンポーネントを認識し、そのコンポーネントのコンポーネントヘッダをコンポーネント・マネージャ62を介してプログラム部品データベース70より取得し、単体テストをする特定アプリケーション用プログラム部品を生成するためのマクロへの入力パラメータ(特性選択データ)をマニュアルで指定するべく、そのリストを表示する。そして、ユーザから入力されたマクロへの入力パラメータ(特性選択データ)に基づき、マクロ・プロセッサ63を起動して特定アプリケーション用プログラム部品を生成し、また、その特定アプリケーション用プログラム部品に対応するテストシナリオを生成し、それらを単体テストツール71に渡す。なお、上記の特定アプリケーション用プログラム部品並びにテストシナリオの生成アルゴリズムについて、後述する。
単体ツール71は、取得したプログラムファイルとテストシナリオに基づいてテストを実行する。すなわち、単体テストツール71は、該当プログラムファイルをPLCシミュレータ72にダウンロードし、PLCシミュレータ72の実行を開始させる。そして、単体テストツール71は、テストシナリオを順番に実行、つまり、所定のタイミングで入力条件を変更し、この入力条件の変更に伴いPLCシミュレータ72が求めた出力が、テストシナリオの期待出力と一致するか否かを判断する。全ての出力が期待出力と一致する場合には、合格となり、不一致箇所が発生すると不合格となる。この結果は、コンポーネント関連図エディタ63に渡され、コンポーネント・マネージャ62経由でプログラム部品データベース70のコンポーネントヘッダ(テストシナリオリスト名)のテスト結果の欄)に格納される。
次に、本発明の要部となるコンポーネントの変形処理機能を説明する。本実施の形態では、主としてコンポーネント関連図エディタ64とマクロ・プロセッサ63が、変形処理機能を実現する。入力メニューリストML中の「変形」が選択された場合、コンポーネント関連図エディタ64は、指定されたコンポーネントを認識し、そのコンポーネントのコンポーネントヘッダをコンポーネント・マネージャ62を介してプログラム部品データベース70より取得する(S1)。次いで、該当コンポーネントの特性選択データを(ユーザに選択要求し)、プログラム部品データベース70より取り出す(S2)。すなわち、コンポーネントヘッダに格納された「実現している特性のリスト」に基づき、当該コンポーネント(資産プログラム部品)が有している特性選択データ(特定アプリケーション用プログラム部品を生成するためのマクロへの入力パラメータ)を表示装置にリスト表示し、ユーザにマニュアルで指定させる。
次いで、資産プログラム部品のマクロ処理を実行する(S3)。すなわち、ユーザから指定された特性選択データに対応した特定アプリケーション用プログラム部品を生成する。続いて、資産プログラム部品に関連する付属データの変形処理を行なう。つまり、ユーザから指定された特性選択データに基づき、マニュアルのマクロ処理を実行し、コンポーネントのマニュアル(マクロ記述組み込み)に対してマクロ処理を実行し、処理ステップS3を実行して生成された特定アプリケーション用プログラム部品のための部品リファレンスマニュアルを作成する(S4)。
同様に、上記の特定アプリケーション用プログラム部品に対応したテストシナリオを取り出し(S5)、さらに、特定アプリケーション用プログラム部品に対応した3Dモデルの取り出しを行なう(S6)。
処理ステップS3の資産プログラム部品のマクロ処理は、具体的には、図19に示すフローチャートを実行する。すなわち、マクロ・プロセッサ63は、コンポーネント関連図エディタ64から取得した情報(処理対象の資産プログラム部品及び特性選択データ(マクロへの入力パラメータ))に従い、以下に示す各処理ステップを実行する。まず資産プログラム部品を格納しているファイルをオープンし(S11)、新しい特定アプリケーション用プログラム部品を格納するファイルを新規作成する(S12)。
次いで、資産プログラム部品を先頭行から順にスキャンを実行し(S13)、ファイルの終わりか否かを判断する(S14)。ファイルの終わりでない場合(S14でNo)には、マクロ処理が行なわれているか否かを判断する(S15)。マクロ処理が行なわれていなければ(S15でNo)、資産プログラム部品から特定アプリケーション用プログラム部品に、スキャンした現在の処理対象の行を単純コピーし(S16)、処理ステップS13に戻り資産プログラム部品の次の行のスキャンを実行する。
一方、スキャンした行にマクロ処理がある場合(S15でYes)、そのマクロ命令を取り出し(S18)、その取り出されたマクロ命令の種類の判別が行われる(S19)。このとき、同図においては、必要な回路を行単位で取り出す(S20)、回路を行単位でコピーする(S21)、及び命令をAND接続でコピーする(S22)の3つが記載されているが、これらはマクロ命令の一例に過ぎず、様々なマクロ命令の種類の判別を実行する。処理ステップS20の行単位の取り出しは、換言すると、不要な回路がコピーされず、削除されることになる(図7,図8参照)。処理ステップS21の必要な回路の行単位のコピーとは、資産プログラム部品中に記述された回路(基本回路)を複数並列に記述することで、たとえば、その基本回路が1つのロボットアームの動作を制御するものの場合、実際の制御対象の装置では、同一のロボットアームが複数個存在するような場合に用いる。また、処理ステップS22の命令をAND回路接続でコピーとは、たとえば資産プログラム部品中に記述された命令は、1つのセンサに対応する1つの接点で、特定アプリケーション用プログラム部品では、その接点を複数個AND接続した回路で記述するものがある。具体的には、その接点がONすると動作が開始(OFFだと停止)するような場合、実際の制御対象の装置には、複数箇所にセンサを設置し、その複数のセンサの全てがONを条件に動作し、1つのセンサでもOFFになると動作を停止するような場合に用いる。
特定アプリケーション用プログラム部品ファイルに一連の処理を書き出した(S23)後、処理ステップS13に戻り資産プログラム部品の次の行のスキャンを実行する。そして、スキャンした結果、ファイルの終わりの場合には、処理ステップS14の分岐判断がYesとなるので、資産プログラム部品ファイル、特定アプリケーション用プログラム部品ファイルをクローズし、処理を終える(S17)。
また、上記の図19を実行して実現される機能は、主として1つの資産プログラム部品からマクロ処理を実行して特性選択データにより規定される1つの特定アプリケーション用プログラム部品を生成するものである。指定したコンポーネントについて、関連する子のコンポーネントが存在する場合(図17で「ワーク搬入部」が選択された場合、その子のコンポーネントとして「供給部」と「ロードアーム」が存在している)、たとえば、図20に示すフローチャートを実行することで、子のコンポーネントまで考慮した1つのプログラム部品を生成することができる。
すなわち、まず該当コンポーネント、およびそれに関連する子のコンポーネントのリストを作成する(S51)。このリストの作成は、コンポーネントヘッダの関連コンポーネントリストに基づいて作成できる。そして、上記リストに従い、「プログラム部品データベース70」より、個々の「資産プログラム部品」のファイルを取り出す(S52)。
その後、指定された該当特性選択データ(マクロへの入力パラメータ)を用いてマクロ・プロセッサ63にてマクロ処理を行い、「資産プログラム部品」を「特定アプリケーション用プログラム部品」に変換する(S53)。ここで、該当特性選択データは、指定されたコンポーネントはもちろんのこと、子のコンポーネントが存在する場合には、その子のコンポーネントについての特性選択データも含まれる。換言すると、S2におけるユーザの選択に伴い取り出された特性選択データは、子のコンポーネントについても指定され、取り出される。この処理ステップS53のマクロ処理が、図19に示すフローチャートを実行する。そして、個々の「特定アプリケーション用プログラム部品73」のファイルを合成し、1つのプログラムファイルとする(S54)。
このようにして、特定アプリケーション用プログラム部品に基づくそのコンポーネントについてのプログラムファイルが生成される。つまり、子のコンポーネントが存在しない場合には、特定アプリケーション用プログラム部品は元々指定された1つのコンポーネントから生成された1つの特定のアプリケーション用プログラム部品からなるプログラムファイルで構成されるが、子のコンポーネントが存在する場合には、各コンポーネントに基づく特定アプリケーション用プログラム部品を合成し、1つのプログラムファイルを生成する。このプログラムファイルに基づいて、上述した単体テストが実行される。
処理ステップS4のマニュアルのマクロ処理の具体的な処理アルゴリズムは、図21に示すフローチャートを実行するようになっている。すなわち、マクロ・プロセッサ63は、コンポーネント関連図エディタ64から取得したコンポーネントヘッダで指定されたマニュアル(マクロ記述付き)の原本ファイルをオープンし(S31)、新しい特定アプリケーション用のマニュアルファイルを新規作成する(S32)。
次いで、原本マニュアルファイルを先頭から順にスキャン実行し(S33)、ファイルの終わりか否かを判断する(S34)。ファイルの終わりでない場合(S34でNo)には、マクロ処理が行なわれているか否かを判断する(S35)。マクロ処理が行なわれていなければ(S35でNo)、原本マニュアルファイルから特定アプリケーション用のマニュアルフィルに、スキャンした現在の処理対象の行を単純コピーし(S36)、処理ステップS33に戻り原本マニュアルファイルの次の行のスキャンを実行する。
一方、スキャンした行にマクロ処理がある場合(S35でYes)、そのマクロ命令を取り出し(S38)、その取り出されたマクロ命令の種類の判別が行われる(S39)。このとき、同図においては、必要な文を行単位で取り出す(S40)及び単語を置換する(S41)の2つが記載されているが、これらはマクロ命令の一例に過ぎず、様々なマクロ命令の種類の判別を実行する。処理ステップS40の行単位の取り出しは、換言すると、不要な文がコピーされず、削除されることになる(図13参照)。処理ステップS41の単語を置換とは、例えば、入力機器・出力機器の商品名・型番の置換や、設置数の数値の置換などがある。
特定アプリケーション用のマニュアルファイルに一連の処理を書き出した(S23)後、処理ステップS33に戻り原本マニュアルファイルの次の行のスキャンを実行する。そして、スキャンした結果、ファイルの終わりの場合には、処理ステップS14の分岐判断がYesとなるので、原本マニュアルファイル、特定アプリケーション用のマニュアルファイルをクローズし、処理を終える(S37)。このようにして生成された特定アプリケーション用マニュアル74は、例えば表示装置に表示したり、所定の記憶装置に格納したり、プリントアウトするなどして利用される。
処理ステップS5の特定アプリケーション用プログラム部品に対応したテストシナリオの取り出し処理の具体的な処理アルゴリズムは、図22に示すフローチャートを実行するようになっている。すなわち、コンポーネント関連図エディタ64は、コンポーネント・マネージャ62を介してプログラム部品データベース70に格納された該当コンポーネントヘッダより、テストシナリオリストを取得する(S61)。このとき、子のコンポーネントが存在する場合には、その子のコンポーネントに対するテストシナリオも取得するとよい。そして、取得したテストシナリオリストから、該当特性選択データと適合するテストシナリオ名を抽出する(S62)。すなわち、図15(a)に示すように、コンポーネントヘッダのテストシナリオリスト名の欄には、適合特性選択データ名が記述されているため、指定された特性選択データと一致するテストシナリオファイル名をすべて抽出し、取得することができる。
コンポーネント関連図エディタ64は、抽出した「指定された特性選択データと一致するテストシナリオファイル名」を候補テストシナリオとして表示画面に表示し、ユーザに対して今回実行するテストシナリオの選択を促す(S63)。そして、ユーザが選択したならば、その選択されたテストシナリオ名に対応するテストシナリオのファイルを取得する(S64)。
なお、コンポーネント関連図エディタ64は、上記の処理ステップS63,S64を実行して取得した該当するテストシナリオを単体テストツール71に渡したり、所定の記憶手段に格納したりする。単体テストツール71は、取得したテストシナリオと、マクロ・プロセッサ63が生成した特定アプリケーション用プログラム部品に基づいて、PLCシミュレータ72を操作しつつテストを実行する。
処理ステップS6の特定アプリケーション用プログラム部品に対応した3Dモデルの取り出し処理の具体的な処理アルゴリズムは、図23に示すフローチャートを実行するようになっている。すなわち、コンポーネント関連図エディタ64は、コンポーネント・マネージャ62を介してプログラム部品データベース70に格納された該当コンポーネントヘッダより、3Dモデルリストを取得する(S71)。このとき、子のコンポーネントが存在する場合には、その子のコンポーネントに対する3Dモデルリストも取得するとよい。そして、取得した3Dモデルリストから、該当特性選択データと適合する3Dモデル名を抽出する(S72)。すなわち、図15(b)に示すように、コンポーネントヘッダの3Dモデルリスト名の欄には、適合特性選択データ名が記述されているため、指定された特性選択データと一致する3Dモデル名をすべて抽出し、取得することができる。
コンポーネント関連図エディタ64は、抽出した指定された特性選択データと一致する3Dモデル名を候補3Dモデルとして表示画面に表示し、ユーザに対して今回実行するシミュレーションで使用する3Dモデルの選択を促す(S73)。そして、ユーザが選択したならば、その選択された3Dモデル名に対応する3Dモデルを取得する(S74)。
なお、コンポーネント関連図エディタ64は、上記の処理ステップS73,S74を実行して取得した該当する3Dモデルを単体テストツール71に渡したり、所定の記憶手段に格納する。単体テストツール71は、取得した3Dモデルに基づいて3Dシミュレータ75を操作し、制御対象の装置の動作を3D表示させる。
なお、上述した実施の形態では、コンポーネントに関連づけて格納された資産プログラムと、その付属データの全てを一括して変形処理するようにしたが、本発明はこれに限ることはなく、資産プログラム部品とは別に、付属データのみを一括して全て変形処理するようにしても良いし、付属データの中の指定した一部のデータに対して変形処理するようにしても良い。この場合、例えば、図17に示す入力メニューリストMLにて「変形」が選択された場合、変形対象の付属データを選択するメニュー画面を表示させ、ユーザから選択された付属データについてのみ上述した変形処理をすることで対応できる。