図1は、本発明の実施の形態における部品実装システムの外観図である。
本実施の形態における部品実装システム1000は、部品実装機100と、部品実装機100を制御する制御装置200とを備えている。なお、図1では、制御装置200を部品実装機100とは別体として図示しているが、部品実装機100内に制御装置200を設けてもよい。
部品実装機100は、上流から基板(回路基板)20を受け取り、その基板20に対して部品を実装し、その部品が実装された基板20を下流側に送り出す。なお、部品実装機100によって部品が実装された基板20を、以下、実装基板という。
具体的には、部品実装機100は、複数種の部品を供給する2つの部品供給部115a、115bと、基板20を部品実装機100の内部に搬入する搬入口130とを備える。部品実装機100は、搬入口130から搬入された基板20を、所定位置で停止させる。そして、部品実装機100は、部品供給部115a、115bから供給される部品を順次取り出し、所定位置で停止している基板20に対して、取り出した部品を実装する。
また、部品実装機100は、部品供給部115a、115bから供給された部品、当該部品を実装する前の基板20、及び基板20に実装された後の部品の状態等を、撮像装置等を用いて認識する。
制御装置200は、部品実装機100による部品の実装条件などを決定して、その実装条件に沿って実装が行われるように部品実装機100を制御する。
図2は、部品実装機100の内部の主要な機械的構成を示す構成図である。
部品実装機100は、基板20に対して部品を実装する2つの実装ユニット110a、110bと、基板20を搬送するための一対の基板搬送レール122a、122bと、一対のビーム駆動ロボット140とを備えている。2つの実装ユニット110a、110bは、協調して基板搬送レール122a、122b上にある基板20に対して部品を実装する。
実装ユニット110a及び実装ユニット110bは、それぞれ同様の構成を有している。つまり、実装ユニット110aは、部品供給部115a、部品検査部116a、ヘッド112a、及びビーム121aを備えている。同様に、実装ユニット110bは、部品供給部115b、部品検査部116b、ヘッド112b、及びビーム121bを備えている。
ここで、実装ユニット110aの詳細な構成について説明する。なお、実装ユニット110bの詳細な構成については、実装ユニット110aと同様であるため省略する。
部品供給部115aは、部品テープを収納する複数の部品カセット(フィーダ)114の配列からなる。また、部品供給部115aの各部品カセット114は、基板20の搬送方向(X軸方向)に沿って配列している。なお、部品テープとは、例えば、同一部品種の複数の部品がテープ(キャリアテープ)上に並べられたものであり、リール等に巻かれた状態で供給される。また、部品テープに並べられる(収納される)部品は、例えばチップ部品であって、具体的には0402チップ部品や1005チップ部品などである。
ヘッド112aは、例えばマルチ装着ヘッドと呼ばれるヘッドであって、複数の吸着ノズル(以下、単にノズルという)を備えることができる。例えば、部品供給部115aから10個の部品を吸着して基板20に装着することができる。このようなヘッド112aは、軸状に構成されたビーム121aに対してスライド自在に取り付けられている。ヘッド112aは、例えば、モータなどのアクチュエータの駆動により、ビーム121aに沿って移動する。また、ヘッド112aには、部品を実装する前の基板20の状態、及び基板20に実装された後の部品の状態等を検査する部品検査部116a、116bが設けられている。
ビーム121aは、基板20の搬送方向(X軸方向)と垂直な方向(Y軸方向)に沿って互いに平行に配置された一対のビーム駆動ロボット140上に、Y軸方向にスライド自在に取り付けられている。したがって、ビーム121aは、例えばモータなどのアクチュエータの駆動により、一対のビーム駆動ロボット140上をY軸方向に沿って移動する。すなわち、ヘッド112aは、ビーム駆動ロボット140およびビーム121aによってX軸方向およびY軸方向に移動する。
基板搬送レール122a、122bは、それぞれX軸方向に対して平行となるように配置されている。ここで、基板搬送レール122aは、部品供給部115a側に寄せて固定されている。一方、基板搬送レール122bは、搬送される基板20のサイズ(幅)に応じてY軸方向に移動する。部品実装機100の搬入口130から搬入された基板20は、一対の基板搬送レール122a、122b上に沿って搬送されてストッパーなどにより所定位置で停止される。
部品検査部116aは、ヘッド112aに吸着された部品の形状や吸着状態を2次元又は3次元的に検査するために用いられる。また、部品検査部116aは、部品供給部115aにおけるX軸方向に沿った中央付近に配置されている。
このように構成された部品実装機100において、ヘッド112aは、部品供給部115aから供給される部品を吸着して基板20上に移動し、吸着している部品をその基板20の各実装点に装着し、部品供給部115a上に移動するという一連の動作を繰り返し実行する。ヘッド112bも同様に、部品供給部115bから供給される部品を吸着して基板20上に移動し、吸着している部品をその基板20の各実装点に装着し、部品供給部115b上に移動するという一連の動作を繰り返し実行する。
このように実行される一連の動作、または1回あたりの一連の動作でヘッドに吸着される部品群を、以下、タスクという。また、実装点とは、基板20上の部品が実装されるべき位置である。
ヘッド112aによる1つのタスクの例を具体的に説明する。まず、ヘッド112aは、X軸方向およびY軸方向に移動しながら、部品供給部115aの各部品カセット114から供給される1タスク分の部品を吸着する。その後、ヘッド112aは、部品検査部116a上を一定速度で移動する、或いは一時停止することにより、吸着している部品を部品検査部116aに撮像させ、基板20の実装領域上に入る前のポイントである突入ポイントに到達する。そして、ヘッド112aは、その突入ポイントから所定のタイミングで移動を開始して基板20の実装領域上に入る。なお、突入ポイントは複数点あってもよい。
なお、実装領域とは、基板20の実装点が存在する領域であって、基板20の一部の領域や全ての領域であってもよい。実装領域上に入ったヘッド112aは、X軸方向およびY軸方向に移動しながら、吸着している部品をそれぞれ各実装点に装着する。1タスク分の全ての部品の装着が完了すると、ヘッド112aは、基板20の実装領域上から出て部品供給部115a上に移動する。
一方、ヘッド112bも上述のヘッド112aの動作と同様の動作を行うが、ヘッド112a、112bは、それぞれが干渉することがないように、つまり、それぞれが同時に基板20の実装領域上の干渉する領域に入ることがないように、互いに協調して動作する。
図3は、ヘッド112aと部品カセット114との位置関係を示す模式図である。
上述のように、ヘッド112aには、例えば最大10個のノズルnzをX軸方向に配列させて取り付けることが可能である。10個のノズルnzが取り付けられたヘッド112aは、例えば、最大10個の部品カセット114のそれぞれから部品を順次、或いは同時に(1回の上下動作で)吸着することができる。同様に、ヘッド112bも例えば最大10個のノズルnzを取り付けることができる。なお、本発明では、ヘッド112a、112bに取り付けられるノズルnzの数は10個以外でもよく、X軸方向に沿うノズルnzの列を、Y軸方向に複数列取り付けてもよい。
図4は、部品を収めた部品テープ及びリールの例を示す図である。
チップ形電子部品などの部品423dは、図4に示すキャリアテープ424に保持されている。キャリアテープ424には、一定間隔で連続的に形成された複数の収納凹部424aが設けられている。部品は、この収納凹部424aに収納されている。さらに、キャリアテープ424の上面(部品を取り出す側)には、カバーテープ425が貼付けられている。カバーテープ425が貼り付けられたキャリアテープ424は、リール426に所定の数量分だけ巻回されたテーピング形態でユーザに供給される。このようなキャリアテープ424およびカバーテープ425によって部品テープが構成される。なお、部品テープの構成は、図4に示す構成以外の他の構成であってもよい。
本実施の形態における部品実装機100では、上述のようにヘッド112a、112bがそれぞれ同時に基板20の実装領域上の干渉する領域に入ることがないように互いに強調して動作する。その結果、この部品実装機100は、いわゆる交互打ちと非交互打ちとを実行する。交互打ちとは、ヘッド112aによる1タスク分の部品の装着と、ヘッド112bによる1タスク分の部品の装着とが交互に行われる動作である。一方、非交互打ちとは、ヘッド112aまたはヘッド112bによる1タスク分の部品の装着が繰り返し連続して同じヘッドで行われる動作である。
図5は、本実施の形態における部品実装機100の制御系の機能構成を示すブロック図である。
本実施の形態における部品実装機100は、入力部151、表示部152、ヘッド制御部153、制御部154、通信部155、および格納部156を備えている。
入力部151は、例えばキーボードやマウスなどで構成されており、オペレータ(ユーザ)からの操作を受け付けて、その操作結果をヘッド制御部153や制御部154などに通知する。
表示部152は、例えば液晶ディスプレイなどで構成されており、ヘッド制御部153などの動作状態を表示したり、格納部156などに格納されているデータを表示したりする。
制御部154は、入力部151に受け付けられた操作や、通信部155で受信されたデータに応じて、部品検査部116a、116b、表示部152、及びヘッド制御部153などを制御する。また、制御部154は、基板20を搬送するためのモータなどを制御して、基板20を適切な位置に搬送する。
通信部155は、制御装置200と通信する。例えば、通信部155は、基板20の各実装点に関する情報などを示すNCデータ156aと、各部品に関する情報を示す部品ライブラリ156bと、部品カセット114の配列や部品の実装順序などの実装条件を示す実装条件データ156cとを制御装置200から取得して、それらを格納部156に格納する。なお、図5では、制御装置200と制御部154とを別体として構成する例を示しているが、制御装置200を制御部154内に設けて、部品実装機100の制御系内の構成としてもよい。また、制御装置200、ヘッド制御部153、及び制御部154をまとめて制御部として構成するものであってもよい。
格納部156は、通信部155により取得されたNCデータ156a、部品ライブラリ156b、及び実装条件データ156c等を格納している。
図6は、NCデータ156aの一例を示す図である。
NCデータ156aは、基板20において装着の対象となる全ての部品の実装点に関する情報を示す。1つの実装点piは、部品種ci、X座標xi、Y座標yi、制御データφi、および実装角度θiからなる。ここで、部品種は、部品ライブラリ156bにおける部品名に相当する(図7参照)。X座標およびY座標は実装点の座標である。制御データφiは、その部品の装着に関する制約情報、例えば、使用可能なノズルnzのタイプや、ヘッド112a,112bの最高移動加速度等を示す。実装角度θiは、部品種ciの部品を吸着したノズルnzが回転すべき角度を示す。
図7は、部品ライブラリ156bの一例を示す図である。
部品ライブラリ156bは、部品実装機100が扱うことができる全ての部品種のそれぞれについての固有の情報を集めたライブラリである。この部品ライブラリ156bは、図7に示すように、部品種(部品名)ごとの部品サイズ(幅、奥行き、厚さ等)、その部品種におけるタクト、および制約情報などからなる。
なお、この部品ライブラリ156bの示すタクトは、一定条件下において部品を基板20に装着するのに要する部品種固有の時間である。制約情報は、例えば、使用可能なノズルnzのタイプ(SXや、SAなど)、部品検査部116a、116bによる認識方式(反射など)、及びヘッド112a、112bの最高加速度比などである。また、図7には、参考として、各部品種の部品の外観も併せて示されている。部品ライブラリ156bには、その他に、部品の色や形状などの情報が含まれていてもよい。
図8は、実装条件データ156cの一例を示す図である。
実装条件データ156cは、部品供給部115a、115bにおける部品カセット114の配列(部品配列)、及びヘッド112a、112bのそれぞれのタスクごとの実装順序などを示す。例えば、実装条件データ156cは、部品配列として、部品供給部115aのX軸方向の一方からA1番目に部品種c1があり、A2番目に部品種c2があることを示す。同様に、部品供給部115bのX軸方向の一方からB1番目に部品種c1があり、B2番目に部品種c2があることを示す。
また、実装条件データ156cは、ヘッド112aの実装順序として、部品種c1〜c4の部品を含むタスク番号Ta1のタスクが実行され、次に、部品種c9〜c12の部品を含むタスク番号Ta2のタスクが実行され、さらにその後、部品種c17〜c20の部品を含むタスク番号Ta3のタスクが実行されることを示す。同様に、実装条件データ156cは、ヘッド112bの実装順序として、部品種c5〜c8の部品を含むタスク番号Tb1のタスクが実行され、次に、部品種c13〜c16の部品を含むタスク番号Tb2のタスクが実行され、さらにその後、部品種c21〜c24の部品を含むタスク番号Tb3のタスクが実行されることを示す。なお、実装条件データ156cは、タスクに含まれる部品ごとに、その部品の実装点も示している。
ヘッド制御部153は、格納部156に格納されているデータに基づいてモータなどを制御することにより、ヘッド112a、112bを移動させたり、そのヘッド112a、112bに部品を吸着させたり、部品を吸着したヘッド112a,112bを部品検査部116a、116bに移動させたり、部品を基板20上の実装点に装着させたりする。そして、ヘッド制御部153の動作は、後述する開発支援方法によって開発された制御プログラムによって制御される。
例えば、ヘッド制御部153は、上述の実装条件データ156cを読み出し、ヘッド112a、112bが実装すべきタスクをタスク番号に従って特定するとともに、そのタスクの部品が供給される場所を部品配列に基づいて特定する。そして、ヘッド制御部153は、特定した場所にヘッド112a、112bを移動させ、それらのヘッド112a、112bに部品を吸着させて、その部品に対応する実装点に装着させる。
また、ヘッド制御部153は、ヘッド112aを他方のヘッド112bの動きに応じて制御する。同様に、ヘッド112bを他方のヘッド112aの動きに応じて制御する。つまり、ヘッド制御部153は、制御対象となるヘッド(以下、対象ヘッドという)を、他方のヘッド(以下、相手ヘッドという)の動きに応じて制御する。
ヘッド制御部153は、相手ヘッドが基板20の実装領域上にあるときに、対象ヘッドが突入ポイントに到達すると、対象ヘッドを突入ポイントに待機させておく。そして、相手ヘッドが実装領域上の互いのヘッドが干渉する領域である干渉領域から出ると、対象ヘッドを実装領域上に突入させる。また、ヘッド制御部153は、相手ヘッドが基板20の実装領域上にないときに、対象ヘッドが突入ポイントに到達すると、基本的に、その対象ヘッドを突入ポイントで待機させることなく実装領域上に突入させる。
但し、本実施の形態におけるヘッド制御部153は、対象ヘッドが突入ポイントに到達したタイミングでその対象ヘッドを基板20の実装領域上に突入させることによって、非交互打ちが実行されそうな場合には、その非交互打ちを避けて強制的に交互打ちを実行させるべきか否かを判別する。非交互打ちを避けるべきと判別すると、ヘッド制御部153は、相手ヘッドが実装領域上になくても、相手ヘッドが実装領域上に入って1タスク分の部品を装着してその実装領域上から出るまで、対象ヘッドを突入ポイントに待機させておく。その結果、強制的な交互打ちが実現される。
なお、交互打ちとは、上述のように、基板20へのヘッド112aによる1タスク分の部品の装着と、ヘッド112bによる1タスク分の部品の装着とが交互に行われる動作であって、例えば、「ヘッド112a→ヘッド112b→ヘッド112a→ヘッド112b→・・・」の順で基板20への部品の装着が行われる動作である。また、非交互打ちとは、上述のように、ヘッド112aまたはヘッド112bによる1タスク分の部品の装着が繰り返し連続して行われる動作であって、例えば、「ヘッド112a→ヘッド112b→ヘッド112b→ヘッド112a→・・・」の順で同じヘッドによる部品の装着が連続して行われる動作である。
次に、上記構成のヘッド制御部153の動作を制御するためのプログラムの開発を支援する開発支援方法について説明する。なお、本発明の開発支援方法は、典型的には、コンピュータが実行するプログラム(開発支援プログラム)の形態で提供される。
図9は、本実施の形態に係る開発支援プログラムを実行するコンピュータ10のハードウェア構成を示す図である。コンピュータ10は、図9に示されるように、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、入力部14と、表示部15とを主に備える。
CPU11は、ROM12又はRAM13に記憶されているプログラムを実行する。ROM12は、例えば、コンピュータ10の起動時に必要となるプログラム(BIOS等)を記憶している。RAM13は、例えば、各種プログラムを記憶すると共に、CPU11による演算結果の一時記憶領域等としても利用される。本実施の形態に係る開発支援プログラムもRAM13に記憶されている。
なお、RAM13の具体的な構成は特に限定されないが、例えば、DRAM(Dynamic random access memory)、SDRAM(Synchronous dynamic random access memory)、フラッシュメモリ、又は強誘電体メモリ等のデータを記録可能な手段であればどのようなものを利用しても構わない。
入力部14は、ユーザからの入力を受け付けるインタフェースであって、例えば、キーボードやマウス等である。表示部15は、各種情報をユーザに表示するディスプレイである。ディスプレイの具体的な構成は特に限定されないが、例えば、液晶ディスプレイ、プラズマディスプレイ、又は有機EL(Electro Luminescence)ディスプレイ等を採用することができる。
本実施の形態に係る開発支援プログラムは、部品実装機100の駆動部(この例ではヘッド112a、112b)の動作を制御するためのプログラム(以下、「制御プログラム」)の開発を支援するものである。
図10及び図11を参照して、本実施の形態に係る開発支援プログラムによって生成されるプログラムの例を説明する。図10は、状態遷移表の例を示す図である。図11は、生成されたソースコードの一例を示す図である。但し、図11では、以降の説明で取り上げられる部分を中心に記述し、それ以外の部分の記述を省略している。
まず、図10に示されるような状態遷移表がユーザによって設計される。具体的には、開発支援プログラムは、入力画面を表示部15に表示し、ユーザからの入力を入力部14を介して受け付ける。
なお、状態遷移表とは、例えば、図10に示されるように、行及び列で構成されるマトリクス状の表である。この状態遷移表の第1行(一番上の行)には、例えば、ヘッド112a、112b等の状態が定義される。また、第1列には、制御プログラムの外部で実行される処理の結果として生じるイベントが定義される。なお、第1列に状態を定義し、第1行にイベントを定義してもよい。さらに、第1行及び第1列以外の各セルには、状態及びイベントの組み合わせに対して、ヘッド112a、112bが実行する動作及びヘッド112a、112bの次の状態が定義される。
ここで、「制御プログラムの外部で実行される処理の結果として生じるイベント」とは、例えば、上位システムからの通信コマンドの結果として生じるイベント、GUI(Graphical User Interface)又は操作スイッチ等のユーザ操作の結果として生じるイベント、駆動部(この例では、ヘッド112a、112b)の動作の結果として生じるイベント、制御プログラムの外部で実行される処理の結果として生じるイベントを擬似的に発生させるプログラムを制御プログラムの内部に予め組み込んでおき、当該プログラムを実行することにより生じるイベント等が該当する。
なお、ヘッド112a、112bの状態とは、例えば図10に示されるように、「停止中」、「部品フィーダ移動中」、「部品吸着中」、「部品吸着認識位置移動中」、「部品認識中」、「部品実装位置移動中」、「部品実装中」、及び「エラー発生中」等である。また、制御プログラムの外部で実行される処理の結果として生じるイベントとは、例えば図12に示されるように、「部品吸着開始」、「部品フィーダ位置移動完了」、「部品吸着完了」、「部品吸着認識位置移動完了」、「部品認識完了」、「部品実装位置移動完了」、「部品実装完了」、「エラー」、及び「エラー復帰」等である。
さらに、状態及びイベントに対応するヘッド112a、112bが実行する動作及びヘッド112a、112bの次の状態とは、第1行の任意のセルから下向きに、第1列の任意のセルから右向きに移動した交点のセルに定義される。
例えば、第1行の「部品フィーダ位置移動中」及び第1列の「部品フィーダ位置移動完了」に対応する動作は「部品吸着()」であり、次の状態は「部品吸着中」である(図10の「(イベントID,状態ID)=(1,1)」のセル)。すなわち、この状態遷移表では、ヘッド112a、112bの状態が「部品フィーダ位置移動中」で、且つ「部品フィーダ位置移動完了」イベントが発生すると、ヘッド112a、112bは、部品吸着処理を実行する。そして、部品吸着処理の結果として、ヘッド112a、112bの状態が「部品吸着中」に遷移する。なお、ヘッド112a、112bは、上述の交互打ち又は非交互打ちが選択されている場合は、状態及びイベントのタイミングはヘッド112a、112b間で異なる。
次に、開発支援プログラムは、図10に示される状態遷移表から対象モジュールの図11に示されるようなソースコードを生成する。さらに、開発支援プログラムは、生成されたソースコードをコンパイルして、対象モジュールのオブジェクト(以下、「部品実装処理オブジェクト」)を生成する。
なお、図11において、大域変数(グローバル変数)のstateは、ヘッド112a、112bの状態を特定する状態ID(0〜7)を設定する変数である。また、大域変数(グローバル変数)のeventは、イベントを特定するイベントID(0〜8)を設定する変数である。また、大域変数(グローバル変数)のcntは、1タスクで実装する部品の個数を設定する変数である。さらに、ローカル変数のresultは、例えば、部品実装処理StmCall()内で呼び出される外部関数の戻り値等を設定する変数である。
また、図11において、部品フィーダ移動()は、ヘッド112a、112bを部品供給部(部品フィーダ)115a、115bの所定位置に移動させるための外部関数である。部品吸着()は、ヘッド112a、112bに部品フィーダ上の実装部品を吸着させるための外部関数である。部品吸着認識()は、ヘッド112a、112bに吸着されている部品の状態を部品検査部116a、116bに検査させるための外部関数である。ログ出力()は、指定されたログファイルにログを出力させるための外部関数である。また、例えば、停止()、エラー内容表示()、原点復帰()等は、部品実装処理でエラーが発生した場合の処理を行なう外部関数である。
さらに、図11において、開発支援プログラムによって生成された制御プログラムは、ヘッド112a,112bの状態が遷移する毎に、外部関数であるログ出力()を呼び出している。すなわち、制御プログラムは、ヘッド112a、112bの状態が遷移する毎に、ヘッド112a、112bの動作結果等を示すログをログファイルに出力する。ログファイルは、ユーザによって任意に指定される。
さらに、開発支援プログラムは、自らが生成した制御プログラムが出力するログに基づいてテストシナリオを作成し、作成したテストシナリオに沿って制御プログラムをテスト実行する機能を有する。図12〜図16を参照して、開発支援プログラムの動作を説明する。図12は、開発支援プログラムの動作を示すフローチャートである。
まず、開発支援プログラムは、自らが生成した制御プログラムが出力したログファイルからログを取得する(S11)。本実施の形態に係るログには、例えば、ログ出力直前に実行される処理時において、状態遷移表上の駆動部(この例では、ヘッド112a、112b)の状態と、駆動部としてのヘッド112a、112bの動作の結果(後述の「結果(正常終了、又は異常終了)」に相当)と、ヘッド112a、112bの次の状態を特定する情報(後述の「状態ID」に相当)と、各状態におけるヘッド112a、112bの動作時間(後述の「処理時間」に相当)が記述されている。
具体的には、制御プログラムをヘッド制御部153に組み込み、部品実装機100のヘッド112a、112bを動作させる。これにより、制御プログラムは、ユーザが指定したログファイルに、ヘッド112a、112bの状態毎のログを出力する。図13は、ログファイルに書き込まれたログの一例を示す図である。
制御プログラムが出力するログの内容は特に限定されないが、例えば、図13に示されるように、「ログNo」、「ログ出力時刻」、「状態ID」、「イベントID」、「処理」、「結果」、「処理時間」、及び「消費電力量」等を出力すればよい。
ログNoは、ログファイル内で各ログを識別するための情報(識別子)である。ログ出力時刻は、当該ログを出力した時刻である。状態IDは、ログ出力時におけるヘッド112a、112bの動作によって状態遷移した遷移先の状態を特定する状態情報である。イベントIDは、ログ出力の直前に発生したイベントを示す情報である。処理は、ログ出力の直前に実行した処理の内容を示す情報であり、この例では呼び出した外部関数名である。結果(駆動部の動作の結果)は、呼び出した外部関数の処理が正常終了(OK)したか、異常終了(NG)したかを示す。
処理時間は、呼び出した外部関数による処理に要した時間を示す。すなわち、部品実装処理()が外部関数をcallしてから、当該外部関数が戻り値を返すまでの時間(制御が呼び出し元の関数に戻るまでの時間)を示す。なお、図13の例では、処理時間を明示しているが、これに限ることなく、例えば、連続する2つのログの「ログ出力時刻」を減算して得られる結果を、処理時間(動作時間)とみなしてもよい。
次に、図12を参照して、開発支援プログラムは、ステップS11で取得したログを用いて、テストシナリオを設計する(S12)。なお、ステップS12では、ヘッド112a、112bの状態を、ログに記述されている順に遷移させるようなテストシナリオが作成される。また、このテストシナリオは、制御プログラムのテスト実行時に、ヘッド112a、112bの各動作に対応する制御プログラムの各命令が、ログに記述された動作時間(処理時間)に合わせて実行されるように作成される。
このテストシナリオは、大域変数の設定値と、大域変数の設定値に対応する外部関数の処理時間及び戻り値とを組み合わせたものである。具体的には、図14のテストシーケンスNo.1は、大域変数cntに「3」が設定されている時に呼び出された各外部関数は、左側欄の処理時間(0.5sec)をかけて処理を実行し、右側欄の外部関数の戻り値として「0」を返すことを示している。
次に、開発支援プログラムは、ステップS12で作成されたテストシナリオに沿って、部品実装処理オブジェクトをテスト実行する(S13)。図11、図14、及び図15を参照して、部品実装処理オブジェクトをテスト実行する処理を説明する。
まず、図14に示されるように、部品実装処理オブジェクトが呼び出される時の大域変数cntの初期値に「3」が設定される。
次に、外部関数である部品フィーダ位置移動()が呼び出されると、開発支援プログラムは、大域変数cnt=3に対応する外部関数の戻り値「0」を図14のテストシナリオから取得し、処理時間の0.5(sec)後に変数resultに設定する(S21)。同様に、開発支援プログラムは、外部関数である部品吸着()及び部品吸着認識()を呼び出し、それぞれ所定の処理時間経過後に、変数resultに外部関数の戻り値として「0」を設定する(S22、S23)。
なお、テスト実行時における処理時間は、外部関数が呼び出されてから外部関数の戻り値が返されるまでの遅延時間として使用される。すなわち、開発支援プログラムは、外部関数を呼び出してから処理時間だけ遅延させて戻り値を返す。
次に、1つ目の実装部品の実装が完了、すなわち、状態が「部品実装中」で、且つ「部品実装完了」イベントが発生すると、大域変数cntの値がデクリメントされる(S24)。次に、この時点では大域変数cnt=2(S24でNo)なので、ステップS21〜ステップS24の処理をさらに2回繰り返す。そして、大域変数cnt=0(S24でYes)になると、ヘッド112a、112bを原点に復帰させ(S25)、部品実装処理オブジェクトのテスト実行が終了する。
このように、部品実装処理オブジェクトのテスト実行時に、部品実装機100が出力したログに基づいて作成されたテストシナリオに定義された値を各変数に設定することにより、当該部品実装処理オブジェクトが、ヘッド制御部153に組み込まれて実際にヘッド112a、112bを動作させた状況を再現することができる。
また、本実施の形態に係る開発支援プログラムは、状態遷移表からソースコードを生成し、ソースコードからオブジェクトを生成し、部品実装機100に組み込まれたオブジェクトが出力したログからテストシナリオを作成し、このテストシナリオに沿って再度オブジェクトのテストを行なうことができる。すなわち、1つのツール上で、開発からテストまでを連携して行なうことが可能となる。
なお、開発支援プログラムは、部品実装処理オブジェクトのテスト実行時に、図16に示される表示画面をコンピュータ10の表示部15に表示させる。図16は、テスト実行時における表示部の表示例を示す図である。
図16の表示画面は、処理概要表示領域Aと、状態遷移表表示領域Bと、H/Wシミュレータ表示領域Cと、3次元図面表示領域Dとに区分されている。処理概要表示領域Aには、部品実装機100における処理の概要(レーン毎の稼働率、装着点数等)が表示される。状態遷移表表示領域Bには、当該部品実装オブジェクトの状態遷移表が表示される。H/Wシミュレータ表示領域Cには、センサ等のハードウェアから制御プログラムに出力される信号を切替えるためのボタンが表示される。3次元図面表示領域Dには、3D−CAD等で作成された部品実装機100の3次元図面が表示される。
そして、開発支援プログラムは、部品実装処理オブジェクトの各命令がテスト実行される度に、状態遷移表表示領域Bに表示されている状態遷移表上に、当該命令に対応する状態遷移表上の現在位置(この例では、(4)のセル)と、当該現在位置に至るまでの状態遷移表上の軌跡(この例では、(1)〜(3)のセル)とを表示する。
現在位置及び軌跡の表示例は特に限定されないが、例えば、現在位置に相当するセル及び軌跡上のセルの背景色を変更、又はハイライト表示する等、状態遷移表上に表示してもよい。または、状態遷移表とは別項目として表示してもよい。例えば、現在位置の表示例として、部品吸着認識()のセルがハイライト(網掛け)表示される(図16の「(イベントID,状態ID)=(3,3)」のID位置を参照)と共に、状態遷移表の下に「現在位置:3,3)」と表示されてもよい。また、現在位置に至るまでの軌跡の表示例として、部品フィーダ一移動()、部品吸着()、部品吸着認識位置移動()の各セルがハイライト(現在位置と異なる網掛け)表示されると共に、状態遷移表の下に、現在のID位置に至るまでの軌跡を表す表示として、「(イベントID,状態ID)」の履歴が「現在位置に至るまでの軌跡:(0,0)→(1,1)→(2,2)」と表示されてもよい。
また、状態遷移表上の軌跡としては、ログ出力直前に実行される処理時の状態遷移表における駆動部の状態、及びログ出力時における駆動部の動作によって状態遷移した遷移先の状態等の状態遷移前後の2つの状態を表示してもよい。これにより、ログ出力時の状態遷移前後の状態遷移の軌跡を明確にすることができる。
すなわち、図16の状態遷移表表示領域Bを見たユーザは、(1)〜(3)のセルに対応する状態を経て、現在(4)のセルに対応する処理をテスト実行していることを、一目で把握することができる。これは、各処理が正常終了している場合にも有効であるが、処理が異常終了した場合の原因特定に特に有効である。
また、開発支援プログラムは、部品実装処理オブジェクトのテスト実行と連動して、3次元図面表示領域Dに表示されている部品実装機100のヘッド112a、112bを、テスト実行される部品実装処理オブジェクトの命令に対応する動作をしているように移動させる。
具体的には、開発支援プログラムは、外部関数である部品フィーダ位置移動()を呼び出すのに合わせて、3次元図面表示領域D上のヘッド112a、112bを初期位置から部品フィーダの位置まで、処理時間0.5(sec)かけて移動させる。そして、3次元図面表示領域D上のヘッド112a、112bが部品フィーダの位置に達したタイミング、すなわち、部品フィーダ位置移動()を呼び出してから処理時間0.5(sec)が経過したタイミングで、テストシナリオに定義されている戻り値「0」を、変数resultに設定する。
ここで、現実のヘッド112a、112bは、初期位置から部品フィーダの位置まで等速で移動するわけではなく、初期位置で停止している状態から加速し、途中の一定時間だけ等速で移動し、その後減速して部品フィーダの位置で停止する。そこで、開発支援プログラムは、ヘッド112a、112bを駆動させるモータの加減速曲線に従って、3次元図面表示領域D上のヘッド112a、112bを、加減速しながら移動させる。
これにより、3次元図面表示領域D上のヘッド112a、112bの動きは、部品実装機100に搭載されている現実のヘッド112a、112bの動きに極めて近くなる。その結果、例えば、2つのヘッド112a、112b同士が衝突するといったような、複数の駆動部間の動作や駆動部単体での動作における微妙なタイミングで生じるトラブルをコンピュータ上で再現させることが可能となる。
なお、上記の実施の形態においては、駆動部としてヘッド112a、112bの例を説明したが、これに限ることなく、部品実装機100の他の駆動部にも適用することができる。
また、上記の実施の形態においては、実装基板製造装置として部品実装機100の例を説明したが、これに限ることなく、本発明は、印刷機や印刷検査機等の実装基板の製造に用いられるあらゆる装置に適用することができる。
(その他の実施形態)
コンピュータ10は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、コンピュータ10は、その機能を達成する。
ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。なお、各装置は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムには限らず、これらの一部から構成されているコンピュータシステムであってもよい。
上記のコンピュータ10を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されていてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。また、上記のコンピュータ10を構成する構成要素の各部は、個別に1チップ化されていてもよいし、一部又は全てを含むように1チップ化されてもよい。また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
本発明は、上記に示す方法であってもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであってもよいし、コンピュータプログラムからなるデジタル信号であってもよい。また、本発明は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものであってもよい。また、これらの記録媒体に記録されているデジタル信号であってもよい。また、本発明は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものであってもよい。また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するものであってもよい。また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、またはプログラムまたはデジタル信号をネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施してもよい。
以上、図面を参照してこの発明の実施形態を説明したが、この発明は、図示した実施形態のものに限定されない。図示した実施形態に対して、この発明と同一の範囲内において、あるいは均等の範囲内において、種々の修正や変形を加えることが可能である。