(57)【要約】      （修正有）【課題】リアルタイムコンテキスト生成機能を含むマシンビジョンシステムプログラム編集環境を提供する。【解決手段】編集に現実的なコンテキストを生成するために、パートプログラムのすべての先行命令の実行を必要とせずに、前に保存されたデータを使用する代理データ動作が、特定の命令セットの実行に取って代わる。代理データは、パートプログラムに記録される動作の実際の実行中に保存し得る。実行の編集モードは、そのデータを代理と置換して、そのデータを生成するであろう動作を実行する。コンテキスト生成で大量の時間節約を達成し得、それにより、編集は動作コンテキスト内で行うことができ、動作コンテキストは略リアルタイムで正確性のために繰り返しリフレッシュし得る。これは、マシンビジョンシステムの固有のユーザインタフェースを使用して、比較的未熟なユーザによる都合のよいプログラム変更をサポートする。【選択図】図２Ａ
2013104877.tif 000002
【特許請求の範囲】
【請求項１】
撮像部と、１つ又は複数のワークピースを前記撮像部の視野（ＦＯＶ）内に保持するステージと、制御部と、ディスプレイと、ユーザインタフェースとを備えるマシンビジョン検査システムであって、前記マシンビジョン検査システムは、
実行の実行モードを使用して、前に作成されたパートプログラムを実行するように動作可能なように構成される実行モードと、
前記マシンビジョン検査システムの動作を制御すべくユーザ入力を受信し、被制御動作に対応する関連付けられたパートプログラム命令を記録して、パートプログラムを作成するように動作可能なように構成される学習モードであって、前記学習モードは、パートプログラム命令の編集可能なパートプログラム表現を含む編集ユーザインタフェースを含み、前記パートプログラム表現は命令表現を含む、学習モードと、
パートプログラムを編集するように動作可能なように構成される編集部であって、前記編集部は、実行の前記実行モードとは異なる実行の編集モードに従って、前に記録されたパートプログラム命令を実行するように動作可能な編集実行部を備える、編集部と、
をさらに備え、
前記学習モードは、各記録パートプログラム命令セットに関連付けられた各代理データを自動的に記録するようにさらに動作可能なように構成され、少なくともいくつかの各代理データは、前記関連付けられた各記録パートプログラム命令セットに対応する被制御動作の実際の実行から生じるデータを含み、
実行の前記編集モードは代理実行モードを含み、前記編集可能パートプログラム表現内で表現されたパートプログラム命令の前記代理実行モード中、パートプログラム命令のうちの少なくとも１つのセットに対して、各代理データが、そのパートプログラム命令セットに関連付けて前に記録されていた場合、そのパートプログラム命令セットのうちの少なくともいくつかのメンバは実行されず、それにより、それらに関連付けられた被制御動作は実際に実行されず、前記各代理データが、前記代理実行モードの続く動作で、実行されない関連付けられた被制御動作から生じるであろうデータの代理として使用される、マシンビジョン検査システム。
【請求項２】
パートプログラムを作成することは、前に記録されたパートプログラム命令を変更することを含む、請求項１に記載のマシンビジョン検査システム。
【請求項３】
前記少なくともいくつかの各代理データは、受信するユーザ入力に基づいて制御される被制御動作の実際の実行から生じるデータを含み、前記被制御動作は記録されて、前記関連付けられた各記録パートプログラム命令セットを提供する、請求項１に記載のマシンビジョン検査システム。
【請求項４】
実行の前記編集モードはリアル実行モードを含み、前記少なくともいくつかの各代理データは、前記リアル実行モードを使用して、前に記録され関連付けられた各パートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行から生じるデータを含む、請求項１に記載のマシンビジョン検査システム。
【請求項５】
前記マシンビジョン検査システムは、前記記録パートプログラム命令を編集可能パートプログラムファイルに保存するように動作可能なプログラム状態管理部を備え、前記記録パートプログラム命令が編集可能パートプログラムファイルとして保存される場合、前記編集可能パートプログラムファイル内の各記録パートプログラム命令セットに関連付けられた各代理データも保存される、請求項１に記載のマシンビジョン検査システム。
【請求項６】
前記マシンビジョン検査システムは、編集のために、保存された前記編集可能パートプログラムファイルをロードするように動作可能であり、前記マシンビジョン検査システムは、前記保存された編集可能パートプログラムファイルが編集のためにロードされる場合、前記関連付けられて保存された各代理データが、前記代理実行モードでの使用に自動的に提供されるように構成される、請求項５に記載のマシンビジョン検査システム。
【請求項７】
前記プログラム状態管理部は、実行の前記実行モードを使用して実行可能な保護されたパートプログラムファイルに前記記録パートプログラム命令を保存するようにさらに動作可能であり、実行の前記実行モード及び前記保護されたパートプログラムファイルのうちの少なくとも一方は、実行の前記実行モードの結果が、前記保護されたパートプログラムファイルに対応する、前に記録されたいかなる代理データによっても影響を受けないように構成される、請求項５に記載のマシンビジョン検査システム。
【請求項８】
前記学習モードは、各記録パートプログラム命令セット内に、各代理データがその各パートプログラム命令セットに関連付けて前に記録されたか否かの表示を記録するように構成され、
前記プログラム状態管理部は、前記記録パートプログラム命令を前記保護されたパートプログラムファイルに保存する前に、各代理データが、各パートプログラム命令セットに関連付けて前に記録されたか否かの表示を除去するように構成される、請求項７に記載のマシンビジョン検査システム。
【請求項９】
前記学習モードは、各記録パートプログラム命令セット内に、各代理データがその各パートプログラム命令セットに関連付けられて前に記録されたか否かの表示を記録するように構成される、請求項１に記載のマシンビジョン検査システム。
【請求項１０】
前記表示は、前記各記録パートプログラム命令セットの初期命令内に含まれる、請求項９に記載のマシンビジョン検査システム。
【請求項１１】
前記各記録パートプログラム命令セットは、マークアップ言語で書かれた命令を含む、請求項１０に記載のマシンビジョン検査システム。
【請求項１２】
前記各記録パートプログラム命令セットは、マークアップ言語で書かれた要素、親要素、コンテナ要素、及び子要素のうちの少なくとも１つを含む、請求項１０に記載のマシンビジョン検査システム。
【請求項１３】
前記各記録パートプログラム命令セットが親要素である場合、その親要素内のいかなる子要素も実行されない、請求項１２に記載のマシンビジョン検査システム。
【請求項１４】
前記表示は、前記各記録パートプログラム命令セット内に含まれる各代理データの存在を含む、請求項９に記載のマシンビジョン検査システム。
【請求項１５】
前記表示は、前記各記録パートプログラム命令セット内に含まれる各識別子を含み、前記各識別子は、前記マシンビジョン検査システムの代理データメモリ部内の対応する各代理データを示すために使用可能である、請求項９に記載のマシンビジョン検査システム。
【請求項１６】
前記編集部は、パートプログラムの編集に使用可能な編集コマンドを含み、前記編集実行部は、ユーザが前記編集ユーザインタフェースを使用して、前記パートプログラム表現内の示される標的位置にあるプログラムを編集する編集コマンドを入力する場合、実行の前記編集モードが、前記標的位置前の前記パートプログラム内の有効なコンテキストの開始位置で開始され、前記代理実行モードを使用して、前記パートプログラム命令の少なくとも一部分を実行し、前記標的位置において前記パートプログラムを編集する有効なコンテキストを確立するように構成される、請求項１に記載のマシンビジョン検査システム。
【請求項１７】
前記編集コマンドは、前記標的位置におけるパートプログラムを変更するコマンドであり、前記標的位置に配置された前記パートプログラム命令は、変更すべき、前に記録されたパートプログラム命令である、請求項１６に記載のマシンビジョン検査システム。
【請求項１８】
前記編集コマンドは、前記標的位置における前記パートプログラムに命令を挿入又は追加するコマンドであり、前記標的位置に配置される前記パートプログラム命令は、作成し、前記標的位置に挿入又は追加すべきパートプログラム命令である、請求項１６に記載のマシンビジョン検査システム。
【請求項１９】
前記標的位置に前記有効なコンテキストを確立することは、前記標的位置に配置されるパートプログラム命令に対応する制御動作を実行する適切な状態で、前記マシンビジョン検査システムのハードウェア状態を確立することを含む、請求項１６に記載のマシンビジョン検査システム。
【請求項２０】
前記パートプログラム内の前記有効なコンテキストの開始位置は、（ａ）前記パートプログラム命令の冒頭及び（ｂ）パートプログラム命令を構成する編集初期化ブロック後の次の命令のうちの１つを含む、請求項１９に記載のマシンビジョン検査システム。
【請求項２１】
前記学習モードは、前記有効なコンテキストが前記標的位置に確立される場合、学習モードユーザインタフェースが、ユーザにより操作可能であり、前記標的位置におけるパートプログラム命令を編集し、前記標的位置にパートプログラム命令を挿入できるようにする学習モードユーザインタフェース要素を表示するように構成されるように構成され、これらの学習モードユーザインタフェース要素は、ビデオツール選択要素を含む、請求項１６に記載のマシンビジョン検査システム。
【請求項２２】
前記学習モードは、前記有効なコンテキストが前記標的に確立される場合、前記学習モードユーザインタフェースが、前記パートプログラム命令表現内に示される前記標的位置の表示の近傍にコンテキスト状態インジケータを表示するように構成されるように構成される、請求項１６に記載のマシンビジョン検査システム。
【請求項２３】
前記学習モードは、実行の前記編集モードが前記代理実行モードを使用して、前記パートプログラム命令の少なくとも一部分を実行して、前記有効なコンテキストを確立する場合、前記コンテキスト状態インジケータの状態が、前記有効なコンテキストを確立すべく前記代理実行モードが使用されたことを特に示す状態に設定されるように構成される、請求項２２に記載のマシンビジョン検査システム。
【請求項２４】
前記コンテキスト状態インジケータは、前記編集可能パートプログラム表現の近傍に含まれる命令ポインタ上にある、請求項２３に記載のマシンビジョン検査システム。
【請求項２５】
実行の前記編集モードはリアル実行モードを含み、前記リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、前記編集ユーザインタフェースは、ユーザにより操作可能であり、前記リアル実行モードを使用して、標的位置における前記パートプログラムの編集に有効なコンテキストを確立するために十分なパートプログラム命令セットを実行するための制御を含む、請求項２３に記載のマシンビジョン検査システム。
【請求項２６】
前記学習モードは、実行の前記編集モードが、前記リアル実行モードを排他的に使用して、前記有効なコンテキストの確立に十分なパートプログラム命令を実行する場合、前記コンテキスト状態インジケータが、前記有効なコンテキストを確立すべく前記リアル実行モードが使用されたことを特に示す状態に設定されるように構成される、請求項２５に記載のマシンビジョン検査システム。
【請求項２７】
前記学習モードは、有効なコンテキストが前記標的位置に確立されなかった場合、前記コンテキスト状態インジケータの状態が、前記コンテキストが未知又は無効のうちの少なくとも一方であることを示すべく設定されるように構成される、請求項２６に記載のマシンビジョン検査システム。
【請求項２８】
デフォルトにより実行の前記編集モードは、前記有効なコンテキストの開始位置で自動的に開始される、請求項１６に記載のマシンビジョン検査システム。
【請求項２９】
デフォルトにより実行の前記編集モードは、前記代理実行モードを自動的に使用して、前記パートプログラム命令の少なくとも一部分を実行する、請求項１６に記載のマシンビジョン検査システム。
【請求項３０】
実行の前記編集モードはリアル実行モードを含み、前記リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、前記標的位置が前記編集可能パートプログラム表現内に表現される標的親要素内に表現される場合、前記代理実行モードは、前記標的親要素に対応するパートプログラム命令の開始位置において、前記リアル実行モードに切り替わることを含む、請求項１６に記載のマシンビジョン検査システム。
【請求項３１】
前記標的位置は、取得画像を解析するビデオツールに対応する動作を制御する命令を含み、前記標的親要素は、前記マシンビジョン検査システムの動作を制御して、前記取得画像の画像取得状況をセットアップする命令を含む、請求項３０に記載のマシンビジョン検査システム。
【請求項３２】
実行の前記編集モードはリアル実行モードを含み、前記リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、前記代理実行モードは、前記有効なコンテキストを確立するために物理的なシステム変更を無条件に必要とする命令の場合、前記パートプログラム命令のリアル実行モードに切り替わることを含む、請求項１６に記載のマシンビジョン検査システム。
【請求項３３】
実行の前記編集モードはリアル実行モードを含み、前記リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、前記代理実行モードは、前記パートプログラム命令セットに対してリアル実行モードに切り替わることを含み、前記パートプログラム命令セットは、実行モードの実行中に結果データを提供し、実行モードの実行中、前記対応する代理データは、関連付けられた被制御動作から生じるであろう結果データの代替として使用されるためにその時点で記録されない、請求項１６に記載のマシンビジョン検査システム。
【請求項３４】
実行の前記編集モードはリアル実行モードを含み、前記リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、前記代理実行モードは、前記撮像部に対する前記ステージの物理的な位置を変更する動作を制御する少なくともいくつかのパートプログラム命令で、前記リアル実行モードに切り替わることを含み、前記学習モードユーザインタフェースは、問い合わせボックスを含み、前記問い合わせボックスは、ユーザが前記ステージの物理的な位置の移動を含むリアル実行モード動作を、その移動を実際に実行する前に承認するか否かを尋ねる、請求項１６に記載のマシンビジョン検査システム。
【請求項３５】
実行の前記編集モードは、前記前に記録されたパートプログラム命令のうちの少なくとも１つが、編集コマンドを使用して変更パートプログラム命令を提供すべく変更され、前記変更パートプログラム命令が前記パートプログラムへの記録に許容される場合、前記関連付けられた制御動作が実際に実行され、前記関連付けられた代理データが生成され、保存されるように構成される、請求項１に記載のマシンビジョン検査システム。
【請求項３６】
前記代理データは、前記ステージに位置決めされた実際のワークピースのワークピース画像の解析から導出され、前記画像は、前記変更パートプログラム命令の変更及び記録に対応する期間中に取得される、請求項３５に記載のマシンビジョン検査システム。
【請求項３７】
前記パートプログラム命令セットは、画像取得動作と、実行された場合、その取得画像内で検出されたエッジに沿って配置された点のエッジ点位置を識別するエッジ検出動作を含むエッジ検出ビデオツールとを実行する命令を含み、前記代理データはエッジ点位置を含む、請求項１に記載のマシンビジョン検査システム。
【請求項３８】
前記代理実行モード中、少なくとも前記画像取得動作及び前記エッジ検出動作は実行されない、請求項３７に記載のマシンビジョン検査システム。
【請求項３９】
前記マシンビジョン検査システムは、実際のマシンビジョン検査システムのソフトウェアエミュレータであり、その実際のマシンビジョン検査システムの被制御ハードウェアをエミュレートし、それにより、前記実際のマシンビジョン検査システムで使用できないパートプログラム命令と、前記マシンビジョン検査システムの前記ユーザインタフェースを通してユーザにより入力される被制御動作とにより仮想動作をサポートする、請求項１に記載のマシンビジョン検査システム。
【請求項４０】
前記ワークピースは、前記実際のマシンビジョン検査システムのソフトウェアエミュレータと併せて動作する仮想ワークピースを提供するように構成されたワークピースデータを含む、請求項３９に記載のマシンビジョン検査システム。
【請求項４１】
前記学習モードは、前記パートプログラム命令の実行による結果を表示する結果ウィンドウを含む学習モードユーザインタフェースを含み、前記学習モードは、前記特定の結果が、パートプログラム命令の実行のために前記代理実行モードを使用することに基づく代理データ結果である場合、前記学習モードユーザインタフェースが、前記代理データ結果の近傍に結果状態インジケータを表示するように構成され、前記結果状態インジケータが、特定の結果が代理データに基づくことを示すべく設定されるように構成される、請求項１に記載のマシンビジョン検査システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してマシンビジョン検査システムに関し、より具体的にはそのようなシステムでパートプログラムを作成し編集する方法に関する。
【背景技術】
【０００２】
精密なマシンビジョン検査システム（又は略して「ビジョンシステム」）は、被検査物体の精密な寸法測定を取得し、様々な他の物体の要素を検査するために利用することができる。そのようなシステムは、コンピュータと、カメラ及び光学系と、複数の方向に移動可能であり、カメラが検査中のワークピースの要素をスキャンできるようにする精密ステージとを含み得る。市販されている例示的な１つの従来技術によるシステムは、Aurora,ILに所在のMitutoyo America Corporation (MAC)から入手可能なQUICK VISION（登録商標）シリーズのＰＣに基づくビジョンシステム及びQVPAK（登録商標）ソフトウェアである。QUICK VISION（登録商標）シリーズのビジョンシステム及びQVPAK（登録商標）ソフトウェアの機能及び動作は一般に、例えば、２００３年１月に公開されたQVPAK 3D CNC Vision Measuring Machine User's Guide及び１９９６年９月に公開されたQVPAK 3D CNC Vision Measuring Machine Operation Guideに説明されており、これらのそれぞれを参照により本明細書に援用する。この製品は、例えば、QV-302 Proモデルで例示されるように、顕微鏡型光学系を使用して、ワークピースの画像を様々な倍率で提供し、必要に応じてステージを動かして、任意の単一のビデオ画像の限界を超えてワークピース表面を横断することが可能である。単一のビデオ画像は通常、そのようなシステムの所望の倍率、測定分解能、及び物理的サイズ制限を考えると、観測中又は検査中のワークピースの一部のみしか包含しない。
【０００３】
マシンビジョン検査システムは一般に、自動ビデオ検査を利用する。米国特許第６，５４２，１８０号では、そのような自動ビデオ検査の様々な態様が教示されており、この特許は参照により本明細書に援用される。１８０号特許において教示されるように、自動ビデオ検査装置は一般に、プログラミング機能を有し、プログラミング機能により、自動検査イベントシーケンスをユーザが特定の各ワークピース構成に関して定義することができる。これは、例えば、テキストに基づくプログラミングにより、グラフィカルユーザインタフェースを用いてユーザが実行する検査動作シーケンスに対応するマシン制御命令シーケンスを記憶することで、検査イベントシーケンスを徐々に「学習」する記録モードを通して、又は両方の組み合わせを通して実施することができる。そのような記録モードは多くの場合、「学習モード」又は「トレーニングモード」と呼ばれる。検査イベントシーケンスが「学習モード」で定義されると、そのようなシーケンスを使用して、「実行モード」中にワークピースの画像を自動的に取得する（且つさらに解析又は検査する）ことができる。
【０００４】
ビデオツール（又は略して「ツール」）及び他のグラフィカルユーザインタフェース機能は、手動で使用して、手動での検査及び／又はマシン制御動作を達成し得る（「手動モード」で）。そのセットアップパラメータ及び動作も、学習モード中に記録して、自動検査プログラム又は「パートプログラム」を作成することができる。ビデオツールは、例えば、エッジ／境界検出ツール、オートフォーカスツール、形状又はパターン照合ツール、寸法測定ツール等を含み得る。他のグラフィカルユーザインタフェース機能は、データ解析に関連するダイアログボックス、ステップアンドリピートループプログラミング等を含み得る。例えば、そのようなツールは、上述したQUICK VISION（登録商標）シリーズのビジョンシステム及び関連付けられたQVPAK(登録商標）ソフトウェア等の市販の様々なマシンビジョン検査システムに日常的に使用されている。
【０００５】
特定の検査イベントシーケンス（すなわち、各画像を取得する方法及び各取得画像を解析／検査する方法）を含むマシン制御命令は一般に、特定のワークピース構成に固有の「パートプログラム」又は「ワークピースプログラム」に記憶される。例えば、パートプログラムは、ワークピースに対してカメラを位置決めする方法、照明レベル、倍率レベル等の各画像を取得する方法を定義する。さらに、パートプログラムは、例えば、エッジ／境界検出ビデオツール等の１つ又は複数のビデオツールを使用することにより、取得画像を解析／検査する方法を定義する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
マシンビジョン検査システムのパートプログラムの編集は、マシンツール又は組み立てロボット等のプログラムの編集よりも複雑な作業である。例えば、マシンビジョン検査システムのパートプログラムは後の部分を含み、後の部分は制御動作を含み、且つ／又は少なくとも部分的に、プログラムの前の部分の実行により決定される結果及び／又は検査動作にとって極めて重要な画像の提供に使用されているワークピースの特定のインスタンスに依存する画像依存測定結果を提供する。さらに、特定の画像に必要とされる照明及び／又は露出時間は、ワークピースの特定のインスタンスに依存し得る。さらに、ユーザが部分的に完成したパートプログラムを保存し、そのパートプログラムを後で思い出して、プログラミングを変更又は仕上げる場合、特定の種類の変更（例えば、環境の変化、ステージ上で非意図的に動いたパーツ等）がその間で発生したか否かは未知であり得る。そのような考慮事項により、いくつかのそのようなシステムでは、パートプログラムの命令を最初から、パートプログラム命令への任意の潜在的な追加の変更又は追加を含む箇所まですべて実際に実行して、変更及び／又は追加がそれらの動作の現実的な状況セットに基づいてプログラミングされていることを確かめることが標準的な習慣となっている。しかし、命令への変更又は追加に対して現実的な動作状況を提供するために、パートプログラムのすべての命令を実行することは、大きなパートプログラム（例えば、多数の画像取得及び要素検査を含むプログラム）には非実用的であり、大きなパートプログラムは特に、巨視的な物体（例えば、数十ｍｍ又は数百ｍｍに及ぶ物体）に顕微鏡検査（例えば、マイクロメートル分解能測定）を提供するマシンビジョン検査システムには特に一般的である。編集動作中に短時間で（例えば、準「リアルタイム」で）動作状況を容易に更新する編集環境が必要であり、精密なマシンビジョン検査システムのパートプログラムをより高速、効率的、直観的、柔軟且つロバストに作成し編集可能なことも必要である。
【課題を解決するための手段】
【０００７】
本概要は、詳細な説明においてさらに後述する選択された概念を簡易化された形態で紹介するために提供される。本概要は、特許請求される趣旨の主要な特徴を識別する意図はなく、特許請求される趣旨の範囲を判断する際の助けとして使用される意図もない。
【０００８】
上述した考慮事項によれば、マシンビジョン検査システムが、パートプログラムの編集時、準リアルタイムの更新を動作コンテキストに提供して、変更及び／又は追加がプログラムされたとき、現実的な動作状況セットが変更及び／又は追加の基本又はコンテキストとして利用可能なことを検証することが望ましい。これは特に、ユーザがマシンビジョン検査システムの状態及び／又は入力動作の提供時等に存在している画像の外観及び位置に基づいて、入力動作の詳細を直観的に選択するという点で、パートプログラムが、マシンビジョン検査システムのユーザによる実際の制御動作入力を記録することにより作成され編集される場合に重要である。したがって、ユーザは、まず、実行モード中の実行されたパートプログラムの前の命令の実行により提供される動作コンテキストとその位置での略同じ動作のコンテキストにシステムを確立せずには、パートプログラムの任意の位置でパートプログラムの有効で確実な変更を開始することができない。したがって、汎用マシンビジョン検査システム、特に実際のユーザにより制御される動作を記録して、パートプログラムを作成するシステム（例えば、単純なグラフィカルオブジェクト又はテキストに基づくプログラミングシステムとは対照的に）はいずれも、編集動作中、有効なパートプログラミング編集コンテキストを準リアルタイム且つ確実でロバストに提供する編集環境を提供してこなかった。
【０００９】
この望ましい編集環境をサポートするために、リアルタイムコンテキスト生成機能を含むマシンビジョンシステムプログラム編集環境が、本明細書に開示される。マシンビジョン検査システムは、撮像部と、１つ又は複数のワークピースを撮像部の視野（ＦＯＶ）内に保持するステージと、制御部と、ディスプレイと、ユーザインタフェースとを含む。
【００１０】
様々な実施形態では、マシンビジョン検査システムは、実行モードと、学習モードと、編集部とをさらに備える。実行モードは、実行の実行モードを使用して、前に作成されたパートプログラムを実行するように動作可能である。学習モードは、ユーザ入力を受信し、マシンビジョン検査システムの動作を制御し、被制御動作に対応するパートプログラム命令を記録して、パートプログラムを作成するように動作可能である。学習モードは、パートプログラム命令の編集可能なパートプログラム表現を含むユーザインタフェース上の編集も含み、パートプログラム表現は命令表現を含む。編集部は、パートプログラムを編集するように動作可能であり、実行の実行モードとは異なる実行の編集モードに従って前に記録されたパートプログラム命令を実行するように動作可能な編集実行部を含む。
【００１１】
様々な実施形態では、学習モードは、記録パートプログラム命令の各セットに関連付けられた各代理データを自動的に記録するようにさらに動作可能なように構成され、代理データのうちの少なくともいくつかは、関連付けられた記録命令セットに対応する実際の制御動作から生じるデータを含む。さらに、実行の編集モードは代理実行モードを含む。代理実行モード中、少なくとも１つのパートプログラム命令セットに関して、各代理データが前に、そのパートプログラム命令セットに関連付けて記録された場合、そのパートプログラム命令セットの少なくともいくつかのメンバは実行されない。換言すれば、対応する関連付けられた実際の制御動作は実行されず、各代理データが、代理実行モードの継続する動作で、実行されない実際の制御動作から生じるであろうデータの代わりとして使用される。
【００１２】
様々な実施形態では、パートプログラムの作成は、前に記録されたパートプログラム命令を変更することを含み得る。
【００１３】
様々な実施形態では、各代理データは、受信したユーザ入力に基づいて制御される被制御動作の実際の実行から生じるデータを含み得、それらの被制御動作は記録され、関連付けられた各記録パートプログラム命令セットを提供する。
【００１４】
様々な実施形態では、実行の編集モードは、実際の実行モードを含み、少なくともいくつかの各代理データは、実際の実行モードを使用して、前に記録された関連付けられた各記録パートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行から生じるデータを含む。
【００１５】
様々な実施形態では、マシンビジョン検査システムは、プログラム状態管理部を備え得、プログラム状態管理部は、記録パートプログラム命令を編集可能パートプログラムファイルに保存するように動作可能であり、記録パートプログラム命令が編集可能パートプログラムファイルとして保存される場合、編集可能パートプログラムファイル内の各記録パートプログラム命令セットに関連付けられた各代理データも保存される。いくつかの実施形態では、マシンビジョン検査システムは、編集のために保存された編集可能パートプログラムファイルをロードするように動作可能であり、マシンビジョン検査システムは、保存された編集可能パートプログラムファイルが編集のためにロードされる場合、関連付けられて保存された各代理データを自動的に、代理実行モードでの使用に提供するように構成される。一実施形態では、プログラム状態管理部は、記録パートプログラム命令を、実行の実行モードを使用して実行可能な保護されたパートプログラムファイルに保存するようにさらに動作可能であり、実行の実行モード及び保護されたパートプログラムファイルのうちの少なくとも一方は、実行の実行モードの結果が、保護されたパートプログラムファイルに対応する前に記録されたいかなる代理データによっても影響されないように構成される。いくつかの実施形態では、学習モードは、各記録パートプログラム命令セットに、各代理データが前に、各パートプログラム命令セットに関連付けて前に記録されたか否かの表示を記録するように構成され、プログラム状態管理部は、記録パートプログラム命令を保護されたパートプログラムファイルに保存する前に、各代理データが各パートプログラム命令セットに関連付けて前に記録されたか否かの表示を除去するように構成される。
【００１６】
様々な実施形態では、学習モードは、各記録パートプログラム命令セットに、各代理データが前に、その各パートプログラム命令セットに関連付けて記録されたか否かの表示を記録するように構成し得る。一実施形態では、表示は、各記録パートプログラム命令セットの初期命令に含まれる。一実施形態では、各記録パートプログラム命令セットは、マークアップ言語（例えば、ＸＭＬ又はその派生語）で書かれた命令を含み得る。様々な実施形態では、各記録パートプログラム命令セットは、マークアップ言語で書かれた要素、親要素、コンテナ要素、及び子要素のうちの少なくとも１つを含み得る。一実施形態では、表示は、各記録パートプログラム命令セット内に含まれる各代理データの存在を含み得る。一実施形態では、表示は、その各記録パートプログラム命令セット内に含まれる各識別子を含み得、各識別子は、マシンビジョン検査システムの代理データメモリ部内の対応する各代理データを示すために使用可能である。
【００１７】
様々な実施形態では、編集部は、パートプログラムの編集に使用可能な編集コマンドを備え、編集実行部は、ユーザが編集ユーザインタフェースを使用して、編集コマンドを入力し、パートプログラム表現内で示される標的位置においてプログラムを編集する場合、実行の編集モードが、標的位置前のパートプログラム内の有効なコンテキストの開始位置から開始し、代理実行モードを使用して、パートプログラム命令の少なくとも一部分を実行して、標的位置でのパートプログラムの編集に有効なコンテキストを確立するように構成される。
【００１８】
様々な実施形態では、編集コマンドは、標的位置においてパートプログラムを変更するコマンドであり得、標的位置に配置されたパートプログラム命令は、変更すべき前に記録されたパートプログラム命令であり得る。一実施形態では、編集コマンドは、標的位置でパートプログラムに命令を挿入又は追加するコマンドであり得、標的位置に配置されたパートプログラム命令は、作成され、標的位置に挿入又は追加されるべきパートプログラム命令であり得る。一実施形態では、標的位置での有効なコンテキストの確立は、標的位置に配置されたパートプログラム命令に対応する制御動作の実行のために適切な状態にマシンビジョン検査システムのハードウェア状態を確立することを含む。一実施形態では、パートプログラム内の有効なコンテキストの開始位置は、（ａ）パートプログラム命令の冒頭及び（ｂ）パートプログラム命令を含む前に実行された編集初期化ブロック後の次の命令のうちの１つを含む。そのような編集初期化ブロックは、本願と同時に出願され、参照により本明細書に援用された「マシンビジョンシステムのパートプログラム編集環境内で編集初期化ブロックを利用するシステム及び方法」（代理人整理番号ＭＥＩＰ１３７６７８）に開示されている。パートプログラムでの「有効なコンテキスト」開始位置の意味をさらに明確にするために、限定ではなく例として、これは、パートプログラムの実行が、その特定の位置で、マシンビジョン検査が、その特定の位置又は後の位置で次の制御動作及び／又は対応するパートプログラム命令を実行するのに適切な状態である状態で開始できることを意味する。限定ではなく例として、別の種類の有効なコンテキストの開始位置は、いくつかの場合では、前に記憶された完全なシステムソフトウェア及びハードウェア状態のセット又はパートプログラム命令内のその位置に対応する変数を含む実行可能なパートプログラム命令セットの直前であり得、次にそのパートプログラム命令セットを実行して、パートプログラム命令のその位置での動作的に等しいソフトウェア及びハードウェア状態を確立又は再確立することができる。別の種類の有効なコンテキストの開始位置は、いくつかの場合では、有効なコンテキスト開始位置から開始した後のパートプログラム命令を実際に実行する停止位置の直後であり得る。別の種類の有効なコンテキストの開始位置は、いくつかの場合では、本明細書に開示されるように、有効なコンテキストの開始位置から開始後、代理実行モードでパートプログラム命令を実行する停止位置の直後であり得る。
【００１９】
一実施形態では、学習モードは、編集実行モードが標的位置に有効なコンテキストを確立する場合、学習モードユーザインタフェースが、学習モードユーザインタフェース要素を表示するように構成され、学習モードユーザインタフェース要素は、ユーザにより動作可能であり、標的位置でのパートプログラム命令の編集及び挿入を行い、これらの学習モードユーザインタフェース要素はビデオツール選択要素を含む。一実施形態では、学習モードは、有効なコンテキストが標的位置に確立される場合、学習モードユーザインタフェースがコンテキスト状態インジケータを、パートプログラム表現内に示される標的位置の表示の近傍に表示するように構成され、コンテキスト状態インジケータは、有効なコンテキストが標的位置に確立されたことを示すべく設定される。一実施形態では、学習モードは、実行の編集モードが代理実行モードを使用して、パートプログラム命令の少なくとも一部分を実行して、有効なコンテキストを確立する場合、代理実行モードが有効なコンテキストの確立に使用されたことを特に示す状態に、コンテキスト状態インジケータの状態が設定されるように構成される。一実施形態では、コンテキスト状態インジケータは、編集可能パートプログラム表現の近傍に含まれる命令ポインタである。一実施形態では、実行の編集モードはリアル実行モードを含み、リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、編集ユーザインタフェースは、ユーザにより動作可能であり、リアル実行モードを使用して、標的位置でのパートプログラムの編集に有効なコンテキストを確立するのに十分なパートプログラム命令セットを実行するための制御を含む。一実施形態では、学習モードは、実行の編集モードが有効なコンテキストとの確立に十分なパートプログラム命令の実行のためにリアル実行モードを排他的に使用する場合、コンテキスト状態インジケータが、リアル実行モードが有効なコンテキストの確立に使用されたことを特に示す状態に設定されるように構成される。一実施形態では、学習モードは、有効なコンテキストが標的位置に確立されていなかった場合、コンテキスト状態インジケータの状態を、コンテキストが未知又は無効の少なくとも一方であることを示すべく設定されるように構成される。一実施形態では、デフォルトによる実行の編集モードは、有効なコンテキストの開始位置から自動的に開始する。一実施形態では、デフォルトによる実行の編集モードは、代理実行モードを自動的に使用して、パートプログラム命令の少なくとも一部分を実行する。一実施形態では、実行の編集モードはリアル実行モードを含み、リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、標的位置が、編集可能パートプログラム表現内に表される標的親要素内に表現される場合、代理実行モードは、標的親要素に対応するパートプログラム命令の開始位置でリアル実行モードに切り替わることを含む。一実施形態では、標的位置は、取得画像を解析するビデオツールに対応する動作を制御する命令を含み、標的親要素は、マシンビジョン検査システムの動作を制御して、取得画像に向けて画像取得状況をセットアップする命令を含む。一実施形態では、実行の編集モードはリアル実行モードを含み、リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、代理実行モードは、有効なコンテキストの確立に物理的なシステム変更を無条件で要求する命令のパートプログラム命令のリアル実行モードへの切り替えを含む。一実施形態では、実行の編集モードはリアル実行モードを含み、リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、代理実行モードは、実行モード実行中に結果データを提供するパートプログラム命令セットのリアル実行モードへの切り替えを含み、その場合、対応する代理データは現在、関連付けられた被制御動作から生じるであろう結果データの代わりとして使用するために記録されない。一実施形態では、実行の編集モードはリアル実行モードを含み、リアル実行モードは、前に記録されたパートプログラム命令セットの実行に基づいて制御される被制御動作の実際の実行を提供し、代理実行モードは、撮像部に対するステージの物理的な位置を変更する動作を制御する少なくともいくつかのパートプログラム命令の場合、リアル実行モードへの切り替えを含み、学習モードユーザインタフェースは、ユーザが、物理的な位置ステージの移動を含むリアル実行モード動作を、その移動を実際に実行する前に承認するか否かを尋ねる問い合わせボックスを含む。
【００２０】
様々な実施形態では、実行の編集モードは、前に記録されたパートプログラム命令のうちの少なくとも１つが、編集コマンドを使用して変更パートプログラム命令を提供すべく変更され、変更パートプログラム命令がパートプログラム内への記録に許容された場合、関連付けられた制御動作が実際に実行され、関連付けられた代理データが生成されて保存されるように構成される。一実施形態では、代理データは、ステージに位置決めされた実際のワークピースのワークピース画像の解析から導出され、画像は、変更パートプログラム命令の変更及び記録に対応する期間中に取得される。
【００２１】
様々な実施形態では、パートプログラム命令セットは、画像取得動作を実行する命令と、実行された場合にその取得画像内の検出エッジに沿って配置された点のエッジ点位置を識別するエッジ検出動作を含むエッジ検出ビデオツールとを含み、代理データはエッジ点位置を含む。一実施形態では、代理実行モード中、少なくとも画像取得動作及びエッジ検出動作は実行されない。
【００２２】
様々な実施形態では、マシンビジョン検査システムは、実際のマシンビジョン検査システムのエミュレータであるソフトウェアであり、このソフトウェアは、実際のマシンビジョン検査システムに対して使用可能なパートプログラム命令による、及びマシンビジョン検査システムのユーザインタフェースを通してユーザにより入力される被制御動作による仮想動作をサポートすべく、実際のマシンビジョン検査システムの被制御ハードウェアをエミュレートする。一実施形態では、ワークピースは、実際のマシンビジョン検査システムのソフトウェアエミュレータと併せて動作する仮想ワークピースを提供するように構成されたワークピースデータを含む。
【００２３】
いくつかの実施形態では、学習モードは、パートプログラム命令の実行による結果を表示する結果ウィンドウを含む学習モードユーザインタフェースを備え、学習モードは、特定の結果が、パートプログラム命令の実行のために代理実行モードを使用することに基づく代理データ結果である場合、学習モードユーザインタフェースが、代理データ結果を近似する結果状態インジケータを表示するように構成され、結果状態インジケータにより、それらの特定の結果が代理データに基づくことを示すべく設定されるように構成される。一実施形態では、結果ウィンドウの外観はおおよそ、本願と同時に出願された「同期ユーザインタフェース機能を含むマシンビジョンシステムプログラム編集環境」（代理人整理番号ＭＥＩＰ１３８２４４）という名称の特許出願に開示されるようなものであり得、これを参照により本明細書に援用する。様々な実施形態では、結果が代理データに基づき、結果ウィンドウに表示される都度、結果状態インジケータは、特定の色のテキスト、そのテキストに対する特定の色の強調表示等を用いて、その代理データに基づく結果を表現することを含む。
【００２４】
コンテキストに関して、編集環境に関連する「コンテキスト」又は動作コンテキストの意味をさらに明確にするために、限定ではなく例として、ユーザインタフェースでパートプログラミングが続けて編集中である場合、特定のパラメータを知り、その特定のパラメータを特定のパートプログラム内の編集位置で実施することが望ましい。例えば、ビデオツールの正確な閾値、サイズ、及び位置を設定するためには、正確なステージ位置、光レベル、倍率等の情報を含むビデオ画像を有することが必要である。一実施形態では、「ハードウェアコンテキスト」は、この種の情報を含むものとして定義し得る。さらに、シーケンスが、パートプログラムへの継続する編集にとって正確であるか否かを知るために、どの要素が測定されたか、座標系のどの部分が利用されているか等を含め、何がすでに行われたかを知ることが有用である。一実施形態では、「ソフトウェアコンテキスト」は、この種の情報を含むものとして定義し得る。上述され、本明細書に開示される様々な機能によれば、パートプログラムがまず記録される場合、正確なコンテキストを提供し得るとともに、後の実行モード中、すべての命令が順に実行された状況でも正確なコンテキストを提供し得ることが理解されよう。これは、パートプログラムによりすでに生成された任意の測定及び結果を示すことを含め、パートプログラムへの継続する編集に対して有効なコンテキストを提供する。
【００２５】
単純で時間効率的でロバストな編集環境をマシンビジョンパートプログラムに提供することは、単純なコンピュータプログラムを編集する適切な編集環境の提供よりもはるかに困難であり、その理由は、プログラム編集プロセス中に、潜在的に危険な移動及び機械的な衝突を明らかにし、考慮しなければならないからであることを理解されたい。さらに、単純で時間効率的でロバストな編集環境をマシンビジョンパートプログラムの編集に提供することは、組み立てロボットプログラム等（例えば、ロボットの幾何学的動き及びアクチュエータ等を制御するプログラム）の編集に適切な編集環境を提供するよりもはるかに困難であり、その理由は、固有のワークピースの幾何学的形状及び表面仕上げにより、プログラム編集プロセス中に、予測不可能なわずかな照明及び撮像の影響を明らかにし、考慮し、それにカスタマイズする必要があることによるものである。さらに、マシンビジョン検査システムは、ワークピース上の異なる位置で測定され検査される要素と、異なる時点で測定され検査される要素との関係を、パートプログラム全体に分散し得る各動作により特定する動作を実行する必要がある。したがって、比較的未熟なユーザがプログラム内の任意のポイントで開始する既存のパートプログラムを編集することができるロバストな編集環境の提供は、困難な作業である。本明細書の開示に基づいて、代理実行モード及び本明細書に開示される方法が、汎用マシンビジョン検査システムのパートプログラムに時間効率的でロバストな編集環境を提供する独自の、上述した問題（例えば、編集のためにコンテキストを確立する高速実行を提供する必要性）の組み合わせに対する解決への寄与に特に有用なものであることを理解されたい。
【００２６】
本発明の方法は、パートプログラムを編集する場合、継続する編集のために、パートプログラムのすべての先行命令を実行して、現実的なコンテキストを生成する必要がなく、前に保存されたデータを使用する代理データ動作が、特定の命令セットの実行に取って代わるという点で有利である。代理データは、パートプログラムに記録される動作の実際の実行中に保存し得る。本明細書に開示される実行の編集モードは、そのデータを、時間のかかる動作を通してそのデータを生成する動作を実行する代理として置換する。コンテキスト生成に大きな時間節約を達成し得、編集は動作コンテキスト内で行うことができ、動作コンテキストは略リアルタイムで正確性のために繰り返しリフレッシュし得る。これは、使用が難しいテキストベース又はグラフィカルオブジェクトに基づく編集環境ではなく、確実で現実的な動作コンテキストを経ずに、マシンビジョンシステムの固有のユーザインタフェースを使用して、比較的未熟なユーザによる都合のよいプログラム変更をサポートする。
【００２７】
本明細書に開示される代理実行モードが、様々な動作の実行が単なるシミュレーション（例えば、シミュレーションされたワークピース等を使用する）ではないという点で、様々な種類のプログラムの作成及び編集に使用される従来既知のシミュレーション方法と異なり、実際の実行の代わりに代理データを使用して実際に抑えられることに留意されたい。さらに、代理データは、様々な実施形態において、実際のワークピースに対する実際の検査動作から生じ得るため、殊の外現実的であり得る。これは、いくつかのマシンビジョン検査システムにとっては特に有利であり、さらには必要でありさえする。本明細書に開示される方法は、マシンビジョン検査システムに固有に必要とされ固有に適する特に高速で特に現実的且つ正確な編集環境を提供し得る。
【００２８】
上記態様及び本発明に付随する利点の多くは、添付図面と併せて解釈される場合、以下の詳細な説明を参照することにより、よりよく理解されるため、より容易に理解されよう。
【図面の簡単な説明】
【００２９】
【図１】汎用精密マシンビジョン検査システムの様々な典型的な構成要素を示す図である。
【図２Ａ】図１のシステムと同様のマシンビジョン検査システムの制御システム部と、ビジョン構成要素部とのブロック図であり、本発明による様々な実施形態で使用可能な機能を含む。
【図２Ｂ】図１のシステムと同様のマシンビジョン検査システムの制御システム部と、ビジョン構成要素部とのブロック図であり、本発明による様々な実施形態で使用可能な機能を含む。
【図３】複数の命令表現を有するパートプログラム表現を含む編集インタフェースの図である。
【図４】図３に対応するパートプログラムが実行されたワークピースの画像を含むユーザインタフェースの図である。
【図５Ａ】図３の命令表現のうちのいくつかに対応するパートプログラムのマークアップ言語コード命令の図である。
【図５Ｂ】図３の命令表現のうちのいくつかに対応するパートプログラムのマークアップ言語コード命令の図である。
【図６】図３のパートプログラム表現を含み、パートプログラムへの命令の挿入等の編集モードコマンド又は機能を実行するドロップダウンメニューをさらに含む編集インタフェースの図である。
【図７】図３のパートプログラム表現を含み、パートプログラム表現の末尾に挿入又は添付された追加のパートプログラム命令表現をさらに含む編集インタフェースの図である。
【図８】図７に対応するパートプログラムが実行されたワークピースの画像を含むユーザインタフェースの図である。
【図９】図７のパートプログラム表現を含み、パートプログラム内の命令の変更等の編集モードコマンド又は機能を実行するドロップダウンメニューと、ユーザがステージの対応する移動を承認するか否かを尋ねる問い合わせボックスとをさらに含む編集インタフェースの図である。
【図１０Ａ】「ボックスツール」ビデオツールが編集により変更された図８のユーザインタフェースの図である。
【図１０Ｂ】「ボックスツール」ビデオツールが編集により変更された図８のユーザインタフェースの図である。
【図１１Ａ】図１０Ａ及び図１０Ｂに示される変更に従って変更された代理データを含むマークアップ言語コード命令の図である。
【図１１Ｂ】図１０Ａ及び図１０Ｂに示される変更に従って変更された代理データを含むマークアップ言語コード命令の図である。
【図１２Ａ】リアルタイムコンテキスト生成機能を含むマシンビジョンシステムプログラム編集環境を提供するルーチンの一実施形態を示す流れ図である。
【図１２Ｂ】リアルタイムコンテキスト生成機能を含むマシンビジョンシステムプログラム編集環境を提供するルーチンの一実施形態を示す流れ図である。
【図１３】代理実行モードを実行して、パートプログラム命令表現、要素、又はノードにより示されるパートプログラム位置において有効編集コンテキストを提供するルーチンの一実施形態を示す流れ図である。
【発明を実施するための形態】
【００３０】
図１は、本明細書に記載の方法により使用可能な例示的な１つのマシンビジョン検査システム１０のブロック図である。マシンビジョン検査システム１０はビジョン測定機１２を含み、ビジョン測定機１２は、制御コンピュータシステム１４とデータ及び制御信号を交換するように動作可能に接続される。制御コンピュータシステム１４は、モニタ又はディスプレイ１６、プリンタ１８、ジョイスティック２２、キーボード２４、及びマウス２６とデータ及び制御信号を交換するようにさらに動作可能に接続される。モニタ又はディスプレイ１６は、マシンビジョン検査システム１０の動作の制御及び／又はプログラムに適したユーザインタフェースを表示し得る。
【００３１】
ビジョン測定機１２は、可動式ワークピースステージ３２と、光学撮像システム３４とを含み、光学撮像システム３４はズームレンズ又は交換式レンズを含み得る。ズームレンズ又は交換式レンズは一般に、光学撮像システム３４により提供される画像に様々な倍率を提供する。マシンビジョン検査システム１０は一般に、上述したQUICK VISION（登録商標）シリーズのビジョンシステム及びQVPAK（登録商標）ソフトウェア並びに同様の先端技術の市販されている精密マシンビジョン検査システムに類似する。マシンビジョン検査システム１０は、本願と同じ譲受人に譲渡された米国特許第７，４５４，０５３号及び同第７，３２４，６８２号並びに米国特許出願公開第２０１０／０１５８３４３号及び同第２０１１／０１０３６７９号にも記載されており、これらのそれぞれを参照により本明細書に援用する。
【００３２】
図２Ａ及び図２Ｂは、図１のマシンビジョン検査システムと同様のマシンビジョン検査システム１００の制御システム部１２０と、ビジョン構成要素部２００とのブロック図であり、本発明による様々な実施形態に使用可能な機能を含む。より詳細に後述するように、制御システム部１２０は、ビジョン構成要素部２００の制御に利用される。図２Ａに示されるように、ビジョン構成要素部２００は、光学アセンブリ２０５と、光源２２０、２３０、及び２４０と、中央透明部２１２を有するワークピースステージ２１０とを含む。ワークピースステージ２１０は、ワークピース２０を位置決めし得るステージ表面に略平行する平面内にあるＸ軸及びＹ軸に沿って制御可能に移動可能である。光学アセンブリ２０５は、カメラ系２６０と、交換式対物レンズ２５０とを含み、レンズ２８６及び２８８を有するタレットレンズアセンブリ２８０を含み得る。タレットレンズアセンブリに対する代替として、固定レンズ、又は手動で交換可能な倍率変更レンズ、又はズームレンズ構成等を含み得る。光学アセンブリ２０５は、さらに後述するように、制御可能なモータ２９４を使用することにより、Ｘ軸及びＹ軸に直交するＺ軸に沿って制御可能に移動可能である。
【００３３】
マシンビジョン検査システム１００を使用して撮像すべき複数のワークピース２０を保持したトレイ又は固定具は、ワークピースステージ２１０に配置される。ワークピースステージ２１０は、光学アセンブリ２０５と相対移動すべく制御し得、それにより、交換式対物レンズ２５０は、ワークピース２０上の位置間及び／又は複数のワークピース２０間で移動する。透過照明光２２０、落射照明光２３０、及び斜め照明光２４０のうちの１つ又は複数は、光源光２２２、２３２、又は２４２のそれぞれを発して、１つ又は複数のワークピース２０を照明する。光源光はワークピース光２５５として反射又は透過し、交換式対物レンズ２５０及びタレットレンズアセンブリ２８０を通過し、カメラ系２６０に集められる。カメラ系２６０により捕捉されたワークピース２０の画像は、信号線２６２上で制御システム部１２０に出力される。光源２２０、２３０、及び２４０は、信号線又はバス２２１、２３１、及び２４１のそれぞれを通して制御システム部１２０に接続し得る。画像の倍率を変更するには、制御システム部１２０は、信号線又はバス２８１を通して、軸２８４に沿ってタレットレンズアセンブリ２８０を回転させて、タレットレンズを選択し得る。
【００３４】
様々な例示的な実施形態では、光学アセンブリ２０５は、制御可能なモータ２９４を使用してワークピースステージ２１０に対して垂直なＺ軸方向に移動可能であり、制御可能なモータ２９４は、アクチュエータ、接続ケーブル等を駆動して、光学アセンブリ２０５をＺ軸に沿って移動させ、カメラ系２６０により捕捉されるワークピース２０の画像のフォーカスを変更する。本明細書で使用される場合、Ｚ軸という用語は、光学アセンブリ２０５により得られた画像のフォーカスに使用されることを意図される軸を指す。制御可能なモータ２９４は、使用される場合、信号線２９６を介して入出インタフェース１３０に接続される。
【００３５】
図２Ａに示されるように、様々な例示的な実施形態では、制御システム部１２０は、コントローラ１２５と、電源部１２８と、入出インタフェース１３０と、メモリ１４０と、ワークピースプログラム生成・実行器１５０と、レコーダ変換器１５５と、学習モード構成要素１５６と、実行モード構成要素１５７と、編集部１６０と、代理データマネージャ１８０と、プログラム状態マネージャ１８５と、ノードマネージャ１９０と、自動スクロールマネージャ１９５とを含む。これらの構成要素のそれぞれ並びに後述する追加の構成要素は、１つ又は複数のデータ／制御バス及び／又はアプリケーションプログラミングインタフェースにより、又は様々な要素間の直接接続により相互接続し得る。
【００３６】
入出力インタフェース１３０は、撮像制御インタフェース１３１と、移動制御インタフェース１３２と、照明制御インタフェース１３３と、レンズ制御インタフェース１３４とを含む。移動制御インタフェース１３２は、位置制御要素１３２ａと、速度／加速度制御要素１３２ｂとを含み得るが、そのような要素は統合且つ／又は区別不可能であってもよい。照明制御インタフェース１３３は、例えば、マシンビジョン検査システム１００の様々な対応する光源の選択、電力、オン／オフスイッチ、及び該当する場合にはストローブパルスタイミングを制御する。
【００３７】
メモリ１４０は、画像ファイルメモリ部１４１と、１つ又は複数のパートプログラム１４２ＰＰ等を含み得るワークピースプログラムメモリ部１４２と、ビデオツール部１４３と、代理データメモリ部１４４とを含む。ビデオツール部１４３は、ビデオツール部１４３ａと、他のビデオツール部とを含み、他のビデオツール部は、対応する各ビデオツールのＧＵＩ、画像処理動作等を決定する。多くの既知のビデオツールが、上述したQUICK VISION（登録商標）シリーズのビジョンシステム及び関連付けられたQVPAK（登録商標）ソフトウェア等の市販のマシンビジョン検査システムに含まれる。ビデオツール部１４３は関心領域（ＲＯＩ）生成器１４３ｘも含み、関心領域生成器１４３ｘは、ビデオツール部１４３に含まれる様々なビデオツールで動作可能な様々なＲＯＩを画定する自動、半自動、及び／又は手動の動作をサポートする。代理データメモリ部１４４は、代理データ１４４ＳＤを含む。より詳細に後述するように、本発明によれば、パートプログラムを編集する場合、継続する編集に必要なコンテキストを生成するために、パートプログラムのすべてのステップを実行する必要があるのではなく、前に保存されたデータを代理データとして使用して、特定のコンテキストをシミュレートすることができる。
【００３８】
一般に、メモリ部１４０は、ワークピース２０の取得画像が所望の画像要素を有するように、ワークピース２０の画像を捕捉又は取得するビジョンシステム構成要素部２００の動作に使用可能なデータを記憶し得る。メモリ部１４０は、検査結果データも記憶し得、取得画像に対して様々な検査動作及び測定動作を手動又は自動で実行して（例えば、部分的にビデオツールとして実施される）、入出力インタフェース１３０を通して結果を出力するようにマシンビジョン検査システム１００を動作させるために使用可能なデータをさらに記憶し得る。メモリ部１４０は、入出力インタフェース１３０を通して動作可能なユーザインタフェースを定義するデータを含むこともできる。
【００３９】
透過照明光２２０、落射照明光２３０、及び斜め照明光２４０のそれぞれの信号線又はバス２２１、２３１、及び２４１はすべて、入出力インタフェース１３０に接続される。カメラ系２６０からの信号線２６２及び制御可能なモータ２９４からの信号線２９６は、入出力インタフェース１３０に接続される。画像データの搬送に加えて、信号線２６２は、画像取得を開始する信号をコントローラ１２５から搬送し得る。
【００４０】
１つ又は複数のディスプレイ装置１３６（例えば、図１のディスプレイ１６）及び１つ又は複数の入力装置１３８（例えば、図１のジョイスティック２２、キーボード２４、及びマウス２６）も、入出力インタフェース１３０に接続することができる。ディスプレイ装置１３６及び入力装置１３８を使用して、ユーザインタフェースを表示することができ、ユーザインタフェースは、検査動作の実行及び／又はパートプログラムの変更に使用可能な様々なユーザインタフェース機能を含み、カメラ系２６０により捕捉された画像を表示し、且つ／又はビジョンシステム構成要素部２００を直接制御し得る。特に、本発明の様々な例示的な実施形態によれば、ディスプレイ装置１３６及び入力装置１３８を使用して、マシンビジョン検査システム１００でのパートプログラムの高速、効率的、直観的、且つ柔軟な編集を可能にするために使用可能な様々なユーザインタフェース機能を提示する。
【００４１】
ワークピース生成・実行器１５０、レコーダ変換器１５５、学習モード実行器１５６、実行モード実行器１５７、編集部１６０、代理データマネージャ１８０、プログラム状態マネージャ１８５、ノードマネージャ１９０、及び自動スクロールマネージャ１９５はすべて、一実施形態では、コントローラ１２５にリンクされた汎用マシンコントローラブロックＭＣの部分であるとみなされる。ワークピースプログラム生成・実行器１５０は、パートプログラムの作成及び実行を担当する。「ワークピースプログラム」及び「パートプログラム」という用語を本明細書では同義で使用し得ることが理解されよう。ワークピースプログラム生成・実行器１５０の動作によれば、様々な例示的な実施形態では、ユーザは、マシンビジョン検査システム１００を利用して、ワークピース２０のパートプログラムを作成することができ、ユーザは、ワークピースプログラミング言語を使用して明示的に命令を自動的、半自動的、又は手動でコーディングすることにより、且つ／又は学習モードでマシンビジョン検査システム１００を動作させて（例えば、学習モード部１５６により制御される）、命令を生成することにより、パートプログラム命令を生成して、所望の画像取得トレーニングシーケンスを提供する。例えば、トレーニングシーケンスは、ワークピース要素を視野（ＦＯＶ）内に位置決めすること、光レベルを設定すること、フォーカス又はオートフォーカスすること、画像を取得すること、及び画像に適用される検査トレーニングシーケンスを提供すること（例えば、ビデオツールを使用して）を含み得る。学習モードは、シーケンスを捕捉又は記録し、対応するパートプログラムステップ（すなわち、命令）に変換するように動作する。これらのパートプログラムステップは、パートプログラムが実行モードで実行される場合（例えば、実行モード部１５７により制御される）、マシンビジョン検査システムにトレーニングされた画像の取得を再生させ、検査動作に、パートプログラム作成時に使用されたワークピースに一致する１つ又は複数のワークピースを自動的に検査させる。
【００４２】
レコーダ変換器１５５は、マシン動作をパートプログラムコードに変換するために利用される。換言すれば、ユーザが動作（例えば、ワークピースの要素の測定に使用されるビデオツールの変更等）を実行する場合、基本命令が生成され、基本命令はマシン可読言語に変換され、逆変換を実行することもできる。より詳細に後述するように、本発明の特定の実施形態では、パートプログラム内の特定のマークアップ型言語命令を、ユーザインタフェース内の命令表現に変換することもできる。特定の一実施形態例では、マークアップ言語コードはＸＭＬ準拠コードであり得る。編集部１６０は、図２Ｂに関してより詳細に後述するように、パートプログラムの編集に関連する様々な動作及びユーザインタフェース機能を提供又はアクティブ化する。
【００４３】
代理データマネージャ１８０は代理データにリンクし、本発明によれば、代理データはパートプログラムに記録し得る。特定の実施態様では、代理データマネージャ１８０は、通常生成される出力から代理データを取得し、代理データをパートプログラムへの書き込みに提供することを担当する。プログラム状態マネージャ１８５は、一実施形態では、プログラムが保護されるか、又は保護されないかを管理する。一実施態様では、保護されないパートプログラムは、記憶された代理データを含み得、その一方で、保護されるパートプログラムは任意の代理データが除去されている。一実施形態例では、保護されるプログラムは、工場で実行モードで利用し得るような、編集プロセスが完了したプログラムである。一実施形態では、ユーザは、保護すべきパートプログラムを選択し得、その時点で、プログラム状態マネージャ１８５は、そのパートプログラムが実行時に過度の実行ステップを負担しないように、すべての代理データを自動的に除去する。プログラム状態マネージャ１８５は、代理データがパートプログラムに記憶されたままであるような、プログラムが保護されない場合も担当し、パートプログラムが編集部１６０により呼び出される場合、代理データは利用可能であると示される。
【００４４】
一実施形態では、ノードマネージャ１９０は、パートプログラム内のノードに割り当てられたノード番号の管理を担当する。一実施態様では、パートプログラムの表現内で、各命令表現にノード番号が割り当てられる。特定の実施態様では、親ノード及び子ノードがある組織的ツリー構造を利用し得る。特定の実施態様では、レコーダ変換器１５５により生成されるパートプログラム表現のあらゆるラインに、ノードマネージャ１９０によりノード番号が割り当てられる。自動スクロールマネージャ１９５は、ノードマネージャ１９０により割り当てられたノード番号を利用して、関連付けられたパートプログラム要素の関連する要素及び対応する編集機能を異なるウィンドウ内に同時に表示する。換言すれば、ユーザが、ワークピースのどの測定がパートプログラム内のどの命令表現及び符号化命令に関連するかを見たい場合、自動スクロールマネージャ１９５は、各ウィンドウを関連するノード番号に対応するパートプログラム表現及び／又は符号化命令内の関連するラインまで自動的にスクロールする。
【００４５】
関連する編集機能及び機能も、「同期ユーザインタフェース機能を含むマシンビジョンシステムプログラム編集環境」（代理人整理番号ＭＥＩＰ１３８２４４）、「マシンビジョンシステム内のパートプログラム編集環境に編集初期化ブロックを利用するシステム及び方法」（代理人整理番号ＭＥＩＰ１３７６７８）、及び「画像取得動作の連続ストリームが実行モード中に実行されるパートプログラムのマシンビジョンシステム編集環境」（代理人整理番号ＭＥＩＰ１３７９４４）という名称の特許出願に記載されており、これらのそれぞれは本願と同時に出願され、参照により援用される。
【００４６】
図２Ｂは、図２Ａの編集部１６０の追加の構成要素を示す。図２Ｂに示されるように、編集部１６０は、編集動作コントローラ１７４と、編集ユーザインタフェース部１７６と、エディタコマンド部１７７と、編集実行部１７８とを含む。編集動作コントローラ１７４は、編集機能の動作を制御し、編集ユーザインタフェース部１７６は、ユーザインタフェース機能を編集機能に提供する。編集ユーザインタフェース部１７６はプログラム命令表現ウィンドウ１７６ＰＩを含み、このウィンドウ１７６ＰＩは表現ユーザインタフェース機能１７６Ｒを含み、表現ユーザインタフェース機能１７６Ｒはノードユーザインタフェース機能１７６Ｎを含む。プログラム命令表現ウィンドウ１７６ＰＩは、図３に関してより詳細に後述するように、パートプログラム表現を提供する。一実施形態では、パートプログラム表現はツリー構造で提供し得る。表現ユーザインタフェース機能１７６Ｒは、コンテキストの状態及びコンテキストがどのように得られたか（例えば、コンテキストが代理データから生成されたか、それとも実際の実行により得られたか等）に応じて色を変更し得る挿入ポインタ等の機能を提供する。ノードユーザインタフェース機能１７６Ｎに関して、一実施形態では、これらはアイコン又はブロークンアイコン（broken icon）等の機能及び色強調表示を含み、ノードがアクティブであるか否か等を示し得る。
【００４７】
編集実行部１７８は、編集プロセス中の様々な実行モードを担当し、代理モード部１８０と、実際モード部１９１と、編集実行ユーザインタフェース機能部１９２とを含む。代理モード部１８０はノード解析器１８１を含み、ノード解析器１８１は代理データ動作１８１Ａと、マシン動作１８１Ｂとを含む。より詳細に後述するように、代理モード部１８０が代理実行モードを動作させる場合、本発明によれば、代理データを利用して、継続する編集動作のコンテキストを生成する。ノード解析器１８１は、一実施態様では、パートプログラムの実行が標的ノード（例えば、パートプログラム内の変更を行うべき箇所）に達したか否かを判断する。ノード解析器１８１は、関わるノードの種類に従って、実行されるのが代理データ動作１８１Ａであるか、それとも実際マシン動作１８１Ｂであるかを判断する。一般に、標的ノードに達すると、実際マシン動作が実行され、標的ノード前のパートプログラム命令では、代理データ動作を利用して、継続する編集動作に必要なコンテキストのうちの少なくともいくつかを生成し得る。代理データが見当たらない場合、必要なコンテキストを生成するために実際マシン動作を許可／実行するようにユーザを促し得る。一実施態様では、各ノードを解析して、代理データが存在するか否か、代理データ動作に正しい種類のノードであるか否かを含め、代理データ動作を適用可能か否か、又は代替として、実際マシン動作を利用する必要があるか否かを判断する。
【００４８】
実際モード部１９１は、より従来的に従来のマシンビジョンシステムにより実行される動作を含む。適切な場合、マシン動作１８１Ｂの実行のために、代理モード部１８０が実際モード部１９１を呼び出すこともできることが理解されよう。実際モード部１９１は、マシン動作１９１Ａと、データ動作１９１Ｂとを含む。マシン動作１９１Ａは、実際マシン動作を実行し（例えば、ビデオツール動作の一環としてステージを移動させ）、その一方で、データ動作１９１Ｂは一般にデータを出力する。編集実行ユーザインタフェース機能１９２は、ユーザインタフェース機能を編集機能の実行のために提供する（例えば、パートプログラムのどの部分が代理データを利用したか、又は実際の実行を通して実行されたか等を示す色分け等の、様々な実行動作の状態についての表示）。
【００４９】
エディタコマンド１７７は、実行セグメント１７７Ａと、変更部１７７Ｂと、挿入／添付部１７７Ｃとを含む。挿入／添付部１７７Ｃの動作については図６〜図８に関してより詳細に後述し、その一方で、変更部１７７Ｂの動作については図９〜図１１Ｂに関してより詳細に後述する。一般に、実行セグメント部１７７Ａは、パートプログラムの選択されたセグメントの実際の実行を行う。パートプログラムの選択されたセグメントを実行するために、選択されたセグメントまでの適切なコンテキストを確立しなければならないことが理解されよう。より詳細に後述するように、本発明によれば、代理データを利用することにより、適切なコンテキストを確立し得る。代理データが、パートプログラムの特定の部分に存在しない場合、セグメントを実行して、必要な代理データを生成し得る。従来のマシンビジョンシステムでは、選択されたセグメントまで繋がる適切なコンテキストの必要性により、パートプログラムの先行部分のすべてを実行せずにパートプログラムの分離されたセグメントを実行することが困難であったことが理解されよう。例えば、セグメントがステージの下降を必要とするが、システムがステージの現在のＸ−Ｙ−Ｚ位置を認識しなかった場合、未知の位置へのステージの下降は勧められるものではないことがある。したがって、従来の実施態様では、通常利用される技法では、中間にあるセグメントの実行を可能にするには、パートプログラム全体を最初から実行し、先行するすべての動作の実行には大量の時間が必要とされ得る。対照的に、本発明によれば、代理データを利用して、編集に適切なコンテキストを確立し得、又は最初からパートプログラム全体を実行する必要なく、パートプログラムのセグメントを実行し得る。
【００５０】
変更部１７７Ｂは、実行セグメント部１７７Ａの動作と特定の類似性を有する。一般に、パートプログラム内の命令表現が変更に選択される場合、代理モードを、変更すべき命令に先行するパートプログラムの部分に利用し得る。一実施形態では、変更コマンドが、パートプログラム内の命令表現に選択される場合、その命令表現のノードが標的ノードとして指定される。標的ノードに達すると、エディタは代理モードからリアル実行モードに切り替わり（例えば、実際モード部１９１により制御される）、ノードの第１の関連するパートプログラム命令を実行する。一実施形態では、変更に選択される命令が、子ノードに対応する場合、実際の実行は親ノードで開始されるように指定し得る。特定の一実施形態例では、ボックスツールに関連する子ノードを変更すべき場合、ボックスツールの画像取得のセットアップを含む親ノードは、実際の実行が開始されるべく設定されるノードであり得る。挿入／追加構成要素１７７Ｃに関して、挿入が子ノード間である場合、所望の挿入を実行するために、親ノードを実行する必要もあり得る。特定の実施態様では、追加動作は一般に、既存のパートプログラムの末尾で行われる挿入動作の特殊な場合であると見なし得ることが理解されよう。
【００５１】
図３は、複数の初期パートプログラム命令表現３５１〜３６４を有するパートプログラム３１０の表現を含む編集インタフェース３００の図である。編集インタフェース３００は、選択バー３２０等の様々な測定及び／又は動作選択バーも含む。パートプログラム表現３１０の特定の命令表現の動作については図４に関してより詳細に後述する。
【００５２】
図４は、図３に対応するパートプログラムが実行されたワークピース４１５を有する視野ウィンドウ４１０の画像を含むユーザインタフェース４００を示す図である。ユーザインタフェース４００は、選択バー４２０及び４４０、リアルタイムＸ−Ｙ−Ｚ（位置）座標ウィンドウ４３０、光制御ウィンドウ４５０、並びにビデオツールパラメータボックス４６０等の様々な測定及び／又は動作選択バーも含む。より詳細に後述するように、ワークピース４１５の様々な要素は、エッジ点集合ＰＴＸ、ＰＴＹ、ＰＴ３、及びＰＴ４、ラインＸＬＩＮＥ、ＹＬＩＮＥ、Ｌ３、及びＬ４、原点ＸＹＯＲＩＧＩＮ、並びに交点Ｉ２等の図３の関連するパートプログラム命令表現に従って特定される。
【００５３】
以下の説明では、図３の初期パートプログラム命令表現３５１〜３６４と、図４のワークピース４１５上の対応する要素との両方を参照する。一実施形態では、各命令表現３５１〜３６４にはノードが関連付けられ、ノード番号が割り当てられる。特定の実施態様では、ツリー構造が利用され、命令表現によっては親ノードが関連付けられるものもあれば、子ノードが関連付けられるものもある。例えば、子ノード命令表現３５１Ａ〜３５１Ｄ、３５３Ａ〜３５３Ｃ、３５４Ａ〜３５４Ｂ、３６１Ａ〜３６１Ｃ、及び３６２Ａ〜３６２Ｂのそれぞれには、親ノード命令表現３５１、３５３、３５４、３６１、及び３６２が関連付けられる。一実施形態では、編集インタフェース３００に表示される命令表現３５１〜３６４が、パートプログラムのマークアップ言語命令から導出されるアイコン及びラベルを含むことも理解されよう。一実施形態では、パートプログラムのマークアップ言語は、ＸＭＬ準拠コードを含み得る。したがって、命令表現３５１〜３６４は、図５Ａ及び図５Ｂに関してより詳細に後述するように、実行される関連付けられたコード命令を指す。
【００５４】
図３に示されるように、パートプログラム表現３１０は、命令表現３５１及び３５２で開始され、命令表現３５１及び３５２は、ユーザが手動で、おおまかな原点ＲＯＰ（図示せず）として動作するワークピース４１５上の位置を選択し、次に、原点を大まかな原点ＲＯＰに位置合わせすることを示す。より具体的には、命令表現３５１Ａ、３５１Ｂ、３５１Ｃ、及び３５１Ｄは、ユーザが手動ツールをセットアップして利用し、大まかな原点ＲＯＰを定義することを示し、命令表現３５２は、原点を大まかな原点ＲＯＰに位置合わせする。次に、命令表現３５３は、ボックスツールがＸＬＩＮＥの測定のために開かれることを示す。より具体的には、命令表現３５３Ａ及び３５３Ｂは、ユーザがボックスツールをセットアップして（例えば、ステージを指定された位置に移動させ、対応する画像を取得することを含む）利用し、エッジ点ＰＴＸを特定することを示す。ボックスツール及び他のエッジ検出ビデオツールの機能及び動作は、当分野で既知であり、前に援用した参照においてより詳細に説明されている。次に、命令表現３５３Ｃはボックスツールにより特定されたエッジ点ＰＴＸを利用して、ＸＬＩＮＥを定義する。同様に、命令表現３５４は、ボックスツールがラインＹＬＩＮＥを測定するために開かれることを示し、命令表現３５４Ａは、ユーザがボックスツールを利用してエッジ点ＰＴＹを特定することを示し、次に、命令表現３５４Ｂにより示されるように、エッジ点ＰＴＹを利用して、ラインＹＩＬＩＮＥが定義される。
【００５５】
次に、命令表現３５５は、交点ＸＹＯＲＩＧＩＮが、ラインＸＬＩＮＥとＹＬＩＮＥとの交点において特定されることを示す。次に、命令表現３５６は、マシンビジョンシステムが、原点を点ＸＹＯＲＩＧＩＮに位置合わせするよう命令されることを示す。次に、命令表現３５７は、マシンビジョンシステムが、ワークピース４１５のＸ軸をラインＸＬＩＮＥに位置合わせするよう命令されることを示す。図５Ａ及び図５Ｂに関してより詳細に後述するように、且つコメントライン３５８に示されるように、命令表現３５１〜３５７の動作は、追加の測定を実行するためのワークピース４１５の正確な位置及び向きを確立する。
【００５６】
次に、命令表現３６１は、ボックスツールがラインＬ３を測定するために開かれることを示す。より具体的には、命令表現３６１Ａ及び３６１Ｂは、ユーザがボックスツールをセットアップして（例えば、指定された位置までステージを移動させ、対応する画像を取得することを含む）利用し、エッジ点ＰＴ３を特定することを示し、次に、命令表現３６１Ｃに示されるように、エッジ点ＰＴ３を利用して、ラインＬ３が定義される。より詳細に後述するように、ラインＬ３の測定に利用されるボックスツール（すなわち、図４においてボックスツール４７０として示される）及び関連付けられた命令表現３６１及び３６１Ａ〜３６１Ｃは、図５Ａ及び図５Ｂ並びに図９〜図１１Ｂにおいて、代理データがどのようにして生成され、記憶され、変更されるかを示す例として利用される。
【００５７】
図３に戻ると、命令表現３６２は、ボックスツールがラインＬ４の測定のために開かれることを示し、命令表現３６２Ａは、ユーザがボックスツールを利用してエッジ点ＰＴ４を特定し、次に、命令表現３６２Ｂに示されるように、エッジ点ＰＴ４を利用してラインＬ４を定義する。命令表現３６３は、ユーザが選択された位置許容差を定義することを示し、命令表現３６４は、前に特定されたＬ３とＬ４とが交わる交点Ｉ２が特定されることを示す。
【００５８】
表現３１０に対応するパートプログラムが記憶され、終了した後、パートプログラムが編集に呼び出された場合、従来の実施態様では、パートプログラムへの継続した編集に有効なコンテキストを生成するために、パートプログラム全体を最初から実行する必要があった。従来の実施態様は、パートプログラムが編集のために呼び出される都度、命令全体を実行することにより、正確な結果及びパートプログラムを生成したが、すべての命令の実行には大量の時間がかかり得る（特に、ハードウェア対話の特定の時間のかかるプロセスを要する命令等）。より詳細に後述するように、本発明によれば、最初からパートプログラム全体を実行するのではなく、前に保存されたデータを代理データとして使用して、パートプログラムへの継続した編集に有効なコンテキストをシミュレートし得る。
【００５９】
換言すれば、一実施形態では、継続する編集がパートプログラムに対して行われており、ワークピース４１５の測定を行っている場合、特定のパラメータを知ることが有用である。例えば、ビデオツールの正確な閾値、サイズ、及び位置を知るには、正確なステージ位置、光レベル、倍率等の情報を含む正確なビデオ画像を有する必要がある。一実施形態では、そのような情報は「ハードウェアコンテキスト」の部分であると見なすことができる。さらに、パートプログラムへの継続する編集に対してシーケンスが正確であるか否かを知るために、どの要素が測定されたか、どの部分座標系が利用されているか等を含め、何がすでに行われたかを知ることが有用である。一実施形態では、この情報はソフトウェアコンテキストの一部分として見なすことができる。一実施形態では、コンテキストは一般に、固有のインタフェース制御要素がすべて、パートプログラムを変更する準備ができた状態にあるマシンビジョン検査システムのユーザインタフェースを確立することと見なされる。上述したように、正確なコンテキストは、すべてのパートプログラム命令（例えば、表現３５１〜３６４に対応する）が一般に順に実行されるという点で、パートプログラムが最初に記録されたとき、及び後の実行時でも提供される。上述したように、これは、パートプログラムによりすでに生成されたあらゆる測定及び結果の表示（例えば、ユーザインタフェース４００内にワークピース４１５に関して示されるように、ラインＸＬＩＮＥ、ＹＬＩＮＥ、Ｌ３、Ｌ４、並びに交点ＸＹＯＲＩＧＩＮ及びＩ２の表示）を含め、パートプログラムへの継続した編集に有効なコンテキストを提供する。
【００６０】
より詳細に後述するように、本発明によれば、パートプログラム編集時、必要なコンテキストを生成するために、パートプログラムのすべての命令表現を実行する必要はなく、前に保存されたデータを代理データとして使用することにより、特定のコンテキストをシミュレートすることができる。端的に言えば、パートプログラムの記録又はランタイム実行中、コンテキストの特定に必要なデータがパートプログラムと共に記録される。次に、保存されたデータを代理データとして利用して、特定の結果をシミュレートし、所望のコンテキストを生成し得る。したがって、特定の時間のかかる動作（例えば、ステージの移動、エッジの検出、フォーカス、照明変更、パターンマッチング等のハードウェア対話が必要な動作）の実行を回避することにより、大きな時間節約を達成し得る。後に代理データとして利用し得るデータの保存については、図５Ａ及び図５Ｂに関してより詳細に後述する。
【００６１】
図５Ａ及び図５Ｂは、図３のパートプログラム表現の命令表現のうちのいくつかに対応するマークアップ言語コード命令の図５００Ａ及び５００Ｂである。より具体的には、図５Ａ及び図５Ｂは、ラインＬ３を測定する図３の命令表現３６１及び３６１Ａ〜３６１Ｃに対応するＸＭＬ様コードでのパートプログラム命令を示す。一実施形態では、命令表現３６１及び３６１Ａ〜３６１Ｃが、図５Ａ及び図５ＢのＸＭＬ準拠コード命令から導出されるアイコン及びラベルを含むことが理解されよう。命令表現３６１及び３６１Ａ〜３６１Ｃはそれ自体は実行されないが、その代わり、実行される図５Ａ及び図５Ｂの関連付けられたコード命令を指す。
【００６２】
図５Ａ及び図５Ｂに示されるように、ＸＭＬ準拠コード命令は、ノードＩＤ番号５６１、５６１Ａ、５６１Ｂ、及び５６１Ｃを含み、一実施形態では、これらノードＩＤ番号は、図３の命令表現３６１、３６１Ａ、３６１Ｂ、及び３６１Ｃに対応し得る。ＸＭＬ準拠コード命令は、図４のユーザインタフェース４００のエリア４３０及び４６０に表示し得るような、画像位置の特定の位置情報５１０と、ボックスツールの特定のボックスツール位置情報５２０とも含む。図５Ｂに示されるように、データ５３０はパートプログラムと共に記憶され、後に、コンテキストをシミュレートする代理データとして利用し得る（例えば、図６〜図８に関してより詳細に後述されるように）。より具体的には、図３の命令表現３６１Ｂが、図４のボックスツール４７０が実行されて、エッジ点集合ＰＴ３を特定することを示す場合、ワークピースの部分座標系に対するエッジ点集合ＰＴ３の位置が、データ５３０としてＸＭＬ準拠コード命令に記憶される。図１１Ａ及び図１１Ｂに関してより詳細に後述するように、変更をパートプログラムに行うことができ、その結果、代理データ５３０が変更され得る。
【００６３】
図６は、図３のパートプログラム表現３１０を含み、パートプログラムへの命令挿入等の様々な編集モードコマンド又は機能を実行するドロップダウンメニュー６２０をさらに含む編集インタフェース６００の図である。図６に示されるように、ドロップダウンメニュー６２０は、挿入動作を実行する選択肢６２１と、変更動作を実行する選択肢６２２と、削除動作を実行する選択肢６２３と、実行選択動作を実行する選択肢６２４と、選択動作実行を行う選択肢６２５と、ブレイクダウン切り替え動作を実行する選択肢６２６と、編集初期化ブロックマーカ設定動作を実行する選択肢６２７と、編集初期化ブロックマーカ消去動作を実行する選択肢６２８と、ステップループ動作の推進を実行する選択肢６２９とを含む。一実施形態では、ドロップダウンメニュー６２０は、ユーザが特定の命令表現を選択した場合（例えば、図６の図では、ユーザは、マウスを使用してセレクタを命令表現３６４上に移動させ、次に、命令表現３６４上で右クリックすることにより、最後の命令表現３６４を選択した）に提供し得る。選択された命令表現（例えば、命令表現３６４）は、セレクタボックス（例えば、図６に示されるセレクタボックス６４０）、強調表示、又は他のインジケータ方法により示し得る。図７及び図８に関してより詳細に後述するように、ユーザが命令表現（例えば、命令表現３６４）を選択し、ドロップダウンメニュー６２０から編集動作（例えば、挿入動作の選択肢６２１）を選択すると、前に保存されたデータ（例えば、図５Ｂのデータ５３０）を代理データとして利用して、パートプログラムへの選択された編集に有効なコンテキストを確立し得る。編集動作をドロップダウンメニュー６２０から選択することに加えて、選択肢６２７を利用して、編集初期化ブロックを確立し得、これは、代理データを利用することによりシミュレートされるコンテキストの正確性の保証に役立つことができる。
【００６４】
上で参照により援用された、本願と同時に出願され、同一の譲受人に譲渡された「マシンビジョンシステムのパートプログラム編集環境内で編集初期化ブロックを利用するシステム及び方法」代理人整理番号ＭＥＩＰ１３７６７８という名称の出願に記載のように、ユーザは、命令表現のうちの１つ（例えば、命令表現３５７）を編集初期化ブロックマーカとして指定し得る。ユーザが、編集初期化ブロックマーカを用いて命令表現３５７を指定すると、これは、命令表現３５７までの先行するすべての命令表現（すなわち、命令表現３５１〜３５７）が、編集初期化ブロック６５０を構成する編集初期化命令表現であることを指定する。したがって、命令表現３５７は、編集初期化ステップである最後の初期パートプログラム命令表現であると決定される。一実施形態では、編集初期化インジケータを編集インタフェース６００に提供し得、編集インタフェース６００は、各命令表現３５１〜３５７が編集初期化ステップであることを示す。図６の特定の例としての図では、カラーバー６５５（クロスハッチで示される）が、命令表現３５１〜３５７の隣に提供されて、それらの命令表現が編集初期化ブロック６５０内にあることを示す。代替の実施形態では、他の編集初期化インジケータを利用して、編集初期化命令表現を示し得る（例えば、区切りポインタ、区切りマーカ、ステップの隣のバーではなく実際の命令表現の強調表示等）。一実施形態では、パートプログラムが保存される場合、どの命令表現が編集初期化命令表現であるかの表示も保存される。
【００６５】
編集初期化ブロック６５０に続き、したがって、編集初期化ブロックに含まれない残りの初期パートプログラム命令表現３６１〜３６４が、より詳細に後述するように、編集初期化ブロックの実行時と同じように実行されなくてもよいことが理解されよう。一実施形態では、命令表現３６１〜３６４は、残りの命令表現ブロック６６０内にあるものとして指定される。
【００６６】
より詳細に後述するように、一実施形態では、編集初期化ブロック６５０を利用して、パートプログラムの編集プロセス中に生じ得る状況の特定の変化に対処し得る。例えば、ユーザが、パートプログラムを保存した後、ワークステーションを去り、後に戻る場合、その間に、パートプログラムの編集に影響し得る特定の変更が生じ得る（例えば、一部分が非意図的にステージ上で動かされる等）。しかし、パートプログラムの前のすべての命令（特に、ハードウェア対話等の特定の時間のかかるプロセスを必要とする命令）を再実行するために必要とされ得る時間量により、ユーザは、代理データを使用してシミュレートされるコンテキストの正確性の保証に役立つ特定の命令のみを再実行することを望む場合もある。編集初期化ブロック６５０の編集初期化命令表現は初期パートプログラム命令を表し、初期パートプログラム命令は、その部分の部分座標系を再確立して、最後のパートプログラム命令が実行されてからステージ上のその部分のいかなる非意図的な移動も補償する。
【００６７】
図７は、図３のパートプログラム表現３１０を含み、追加の命令表現ブロック７７０をさらに含む編集インタフェース７００の図である。追加されたブロック７７０は、編集初期化ブロック６５０が実行された後、挿入動作６２１を使用してパートプログラムに挿入（又は追加）された追加パートプログラム命令表現７７１〜７７４を含む。挿入動作６２１の特定の態様については、図８に関してより詳細に説明する。
【００６８】
図８は、図７の対応するパートプログラム命令が実行されたワークピース４１５の画像を含むユーザインタフェース８００の図である。図８に示されるように、編集初期化ブロック６５０の実行は、ワークピース４１５上のラインＸＬＩＮＥ及びＹＬＩＮＥ並びに点ＸＹＯＲＩＧＩＮの位置を再確立した。より具体的には、対応する命令を実行し、ボックスツールを利用して、ワークピース４１５上のエッジ点ＰＴＸ及びＰＴＹの位置を再確立し、それから、ラインＸＬＩＮＥ及びＹＬＩＮＥ並びに点ＸＹＯＲＩＧＩＮの位置が再特定された。初期パートプログラム命令表現３５１〜３５７によれば、これらの要素の位置の正確な特定は、部分座標系を正確に再特定するために、ワークピース４１５の位置及び向きの正確性を保証する。換言すれば、ワークピースプログラム３１０が最後に保存されてから、ワークピース４１５が非意図的にステージ上で動かされた場合、編集初期化ブロック６５０の実行により、部分座標系を参照して代理データに基づいて生成されるシミュレートされた任意のコンテキストの正確性の保証に役立てるために、ワークピース４１５の正確な位置及び向きを再確立する。
【００６９】
対照的に、一実施形態では、残りの命令表現ブロック６６０内の初期パートプログラム命令表現３６１〜３６４は、編集初期化ステップではなく、同じように実行されない。その代わり、特定の実施態様では、保存された位置データ（例えば、図５Ｂのデータ５３０）を代理データとして利用して、点集合ＰＴ３’及びＰＴ４’の位置を特定し得る。換言すれば、点集合ＰＴ３’及びＰＴ４’の位置は、図４に示されるように（例えば、図５Ｂのデータ５３０として保存されるように）、パートプログラム命令表現３５１〜３６４の初期実行から特定される点の相対位置に基づいて提供し得る。換言すれば、図４での点ＰＴ３及びＰＴ４の相対位置は（例えば、点ＸＹＯＲＩＧＩＮを含む部分座標系を参照して）、パートプログラムが最初に実行され、保存されるときに保存される。その後、パートプログラム３１０が、編集のために呼び出され、編集初期化ブロック６５０が実行されて、図８に示されるように、点ＸＹＯＲＩＧＩＮの位置を再確立した場合、点ＰＴ３及びＰＴ４の位置も再確立するのではなく、点ＸＹＯＲＩＧＩＮへの前に保存された相対位置が代理データとして使用されて、点ＰＴ３’及びＰＴ４’の位置が特定される。
【００７０】
換言すれば、点ＰＴ３’及びＰＴ４’の位置は、すべてハードウェア対話及びエッジ検出を必要とし、実行に比較的長時間かかる表現３６１Ａ、３６１Ｂ、及び３６２Ａに関連付けられた命令の実行に基づかなくてもよい。一実施形態では、編集初期化ブロック内になく、一般に特定の指定の時間がかかる動作（例えばステージの移動、エッジの検出、フォーカス、照明変更、パターンマッチング等のハードウェア対話）を必要とする任意の命令は、実行されない。その代わり、提供されたであろう任意の結果データ（例えば、再特定されたエッジ点等）は、代理データ（例えば、点ＸＹＯＲＩＧＩＮに対する点ＰＴ３’及びＰＴ４’の位置）に基づく。上述したように、点ＸＹＯＲＩＧＩＮの正確な位置を含む部分座標系の向きは、編集初期化ブロック６５０の実行により再確立されており、使用される任意の関連する代理データの正確性の保証に役立つ。
【００７１】
特定の指定の時間がかかる動作を実行しないことにより、大きな時間節約を達成し得ることが理解されよう。これは、そのような動作が、特に、マシンビジョンシステムのコントローラによる計算の実行のみを必要とする動作と比較して、実行に比較的長い時間をとり得ることによる。図７の例では、この種のわずか少数のみのそのような命令表現（例えば、命令表現３６１Ａ、３６１Ｂ、及び３６２Ａ）が示されたが、より詳細なパートプログラムでは、この種のはるかに多数の命令表現を利用し得、それに対する時間節約が大きくなり得ることが理解されよう。
【００７２】
一実施形態では、表現３６１Ｃ及び３６２Ｂ（比較的時間のかかる動作を必要とせず、マシンビジョンシステムのコントローラの比較的高速の処理のみを必要とし、点ＰＴ３’及びＰＴ４’を利用して、ラインＬ３’及びＬ４’の位置を確立する）に関連付けられた命令を実行して、コンテキストを生成し得る。同様に、表現３６４（コントローラの比較的高速の処理のみを必要とする）に関連付けられた追加の命令も実行して、ラインＬ３’とＬ４’との交点Ｉ２’を含むコンテキストを特定し得る。表現３６１Ｃ、３６２Ｂ、及び３６４に関連付けられた命令により実行される計算がすべて、長い時間又はユーザからの入力を必要とせずに、代理データから特定される推定エッジ点ＰＴ３’及びＰＴ４’に対して比較的高速で実行可能な種類のものであることが理解されよう。したがって、残りの命令表現ブロック６６０内の初期パートプログラム命令表現３６１〜３６４に関連付けられた特定の命令を実行して、コンテキストを生成してもよい。
【００７３】
挿入動作６２１により追加された追加のパートプログラム命令表現７７１〜７７４に関して、それらの命令表現に関連付けられた特定の動作についても図８に関して説明する。命令表現３５１〜３６４と同様に、追加のパートプログラム命令表現７７１〜７７４はツリー構造に編成され、ツリー構造において、子ノード命令表現７７１Ａ〜７７１Ｃ及び７７２Ａ〜７７２Ｂのそれぞれには、親ノード命令表現７７１及び７７２が関連付けられる。図８に示されるように、命令表現７７１は、ボックスツールがラインＬ１の測定のために開かれることを示す。より具体的には、命令表現７７１Ａ及び７７１Ｂは、ユーザがボックスツールをセットアップして（例えば、ステージを所望の位置に移動させ、対応する画像を取得することを含む）利用し、エッジ点ＰＴ１を特定することを示し、次に、命令表現７１１Ｃに示されるように、エッジ点ＰＴ１を利用して、ラインＬ１を定義する。同様に、命令表現７７２は、ボックスツールがラインＬ２の測定のために開かれることを示し、命令表現７７２Ａは、ボックスツールを利用してエッジ点ＰＴ２を特定し、次に、命令表現７７２Ｂに示されるように、エッジ点ＰＴ２を利用して、ラインＬ２を定義する。
【００７４】
命令表現７７３は、交点Ｉ１がラインＬ１とＬ２との交点において特定されることを示す。命令表現７７４は、距離Ｄ１が、交点Ｉ１と命令表現３６４において特定された交点Ｉ２’との間で特定されることを示す。したがって、命令表現７７４が、交点Ｉ１と交点Ｉ２’との距離の新しい測定がいかに、代理データの利用から生成されるコンテキストに頼り得るかを示すことが理解されよう。より具体的には、上述したように、比較的高速に特定可能であり、編集初期化ブロック６５０の実行に基づいて正確性の妥当な保証を有するコンテキストであった交点Ｉ２’の位置を、交点Ｉ１までの新しい距離測定Ｄ１に利用することができた。
【００７５】
図９は、図７のパートプログラム表現を含み、パートプログラム内の命令を変更する等の編集モードコマンド又は機能を実行するドロップダウンメニュー６２０と、ステージの対応する移動をユーザが承認するか否かを尋ねる問い合わせボックス９２０とをさらに含む編集インタフェース９００の図である。ドロップダウンメニュー６２０が図６に関して上述したものと同様であることが理解されよう。図９に示されるように、ドロップダウンメニュー６２０は、命令表現のユーザ選択により提供されている（例えば、図９の図では、ユーザは、マウスを使用してセレクタを命令表現３６１Ｂ上に移動させ、命令表現３６１Ｂ上で右クリックすることにより命令表現３６１Ｂを選択した）。命令表現３６１Ｂは、セレクタボックス（例えば、図９に示されるセレクタボックス６４０）、強調表示、又は他のインジケータ方法により選択されたものとして示される。
【００７６】
ユーザが命令表現３６１Ｂを選択した後、結果として、ドロップダウンメニュー６２０が提供され、ユーザは変更動作６２２を選択した。より詳細に後述するように、ユーザが変更動作６２２を選択すると、ステージを移動させる必要があるか否かが判断される。その結果、システムが同期を行う必要があることを示すインジケータボックス９１０が提供され、ステージの対応する移動の承認をユーザに尋ねる問い合わせボックス９２０が提供される。
【００７７】
より詳細に後述するように、選択された命令表現（例えば、命令表現３６１Ｂ）は、標的ノードの指定に利用される。標的ノードに先行する命令表現のうちの特定の命令表現では、代理データを利用して、有効なコンテキストを決定し得る。標的ノードに達すると、リアル実行動作を開始することができ、リアル実行動作は、ステージを移動する必要がある等の特定の物理的な動作を実行する必要があり得る。
【００７８】
図１０Ａ及び図１０Ｂは、図９の命令表現３６１Ｂに対応するボックスツールのサイズ変更を示すユーザインタフェース１０００Ａ及び１０００Ｂの図である。図１０Ａのユーザインタフェース１０００Ａは、命令表現３６１Ｂに対応するボックスツール４７０の保存された構成を示す（すなわち、図５Ａ及び図５ＢのＸＭＬ準拠コードで指定され、図４に示されるような）。さらに、問い合わせボックス１０１５が「ボックスツール変更」動作に提供される。図１０Ｂのユーザインタフェース１０００Ｂに示されるように、ユーザは、変更ボックスツール４７０Ｘを生成する変更を行った。変更ボックスツール４７０Ｘは、異なるサイズのものであり、それに対応して、ラインＬ３Ｘ並びに交点Ｉ２Ｘ及び距離Ｄ１Ｘの異なる特定に繋がる異なるエッジ点集合ＰＴ３Ｘを特定する。ボックスツールの長さ（すなわち、高さ）が短くなったことにより、特定されたエッジ点集合ＰＴ３Ｘは、前に特定されたエッジ点集合ＰＴ３よりも小さい。より具体的には、エッジ点集合ＰＴ３Ｘは、３つのエッジ点を含んで示され、その一方で、前に特定されたエッジ点集合ＰＴ３は４つのエッジ点を含んだ。ボックスツールの長さ（すなわち、高さ）低減は、ユーザインタフェース１０００Ｂのエリア４６０の高さインジケータにも示され、図４のユーザインタフェース４００のエリア４６０に示される高さ０．５７４２８と比較して、高さ０．３２５３６を示す。より小さなエッジ点集合ＰＴ３Ｘを生じさせる変更は、図１１Ａ及び図１１Ｂに関してより詳細に後述するように、対応する代理データの変更生じさせる。
【００７９】
図１１Ａ及び図１１Ｂは、図１０Ａ及び図１０Ｂに示されるパートプログラムの変更に従って変更された代理データを含むマークアップ言語コード命令の図１１００Ａ及び１１００Ｂである。図１１Ａ及び図１１ＢのＸＭＬ準拠コード命令が、図５Ａ及び図５Ｂのものと同様であることが理解されよう。図１１Ａに示されるように、長さ（すなわち、高さ）の低減は、データ１１２０の部分として示され、高さは０．３２５３６に低減されて示される（すなわち、図５Ａに示される高さ０．５７４２８と比較して）。図１１Ｂに示されるように、データ１１３０は、検出された３つのみのエッジ点を含む（すなわち、図５Ｂの保存データ５３０に示される４つの検出エッジ点と比較して）。データ１１３０内の検出された３つのエッジ点の位置が、データ５３０内の検出された最初の３つのエッジ点の位置とわずかに異なることも理解されよう。特定の実施態様では、これは、リアル実行モードの実行中、パートプログラムが再実行される場合、返された測定データが実行毎にわずかに異なり得ることに起因する。
【００８０】
図１２Ａ及び図１２Ｂは、リアルタイムコンテキスト生成機能を含むマシンビジョンシステムプログラム編集環境を提供するルーチン１２００の一実施形態を示す流れ図である。図１２Ａに示されるように、ブロック１２１０において、実行モードが提供され、実行モードは、実行の実行モードを使用して、前に作成されたパートプログラムを実行するように動作可能なように構成される。ブロック１２２０において、学習モードが提供され、学習モードは、マシンビジョン検査システムの動作を制御すべくユーザ入力を受け取り、被制御動作に対応する関連付けられたパートプログラム命令を記録して、パートプログラムを作成するように動作可能なように構成される。さらに、学習モードは、パートプログラム命令の編集可能パートプログラム表現を含む編集ユーザインタフェースを含むようになされ、パートプログラム表現は命令表現を含む。ブロック１２３０において、編集部が提供され、編集部は、パートプログラムを編集するように動作可能なように構成される。さらに、編集部は、実行の実行モードとは異なる実行の編集モードに従って、前に記録されたパートプログラム命令を実行するように動作可能な編集実行部を備える。図１２Ｂに関してより詳細に後述するように、ブロック１２３０から、ルーチンはポイントＡに続く。
【００８１】
図１２Ｂに示されるように、ポイントＡから、ルーチンはブロック１２４０に続く。ブロック１２４０において、学習モードは、各記録パートプログラム命令セットに関連付けられた各代理データを自動的に記録するようにさらに動作可能なように構成される。さらに、少なくともいくつかの各代理データは、関連付けられた各記録パートプログラム命令セットに対応する被制御動作の実際の実行から生じるデータを含む。ブロック１２５０において、実行の編集モードは、代理実行モードを含むように構成され、編集可能パートプログラム表現で表現されるパートプログラム命令の代理実行モード中、パートプログラム命令の少なくとも１つのセットに対して、各代理データがそのパートプログラム命令セットに関連して前に記録されていた場合、そのパートプログラム命令セットのうちの少なくともいくつかのメンバは実行されず、それにより、それらに関連付けられた被制御動作は実際に実行されない。さらに、各代理データが、代理実行モードの続く動作で、実行されない関連付けられた被制御動作から生じるであろうデータの代替として使用される。
【００８２】
図１３は、代理実行モードを実行して、パートプログラム命令表現、要素、又はノードにより示されるパートプログラム位置において有効編集コンテキストを提供するルーチン１３００の一実施形態を示す流れ図である。ブロック１３１０において、代理実行モードが有効なコンテキストの位置で開始される。有効なコンテキストの位置の具体例として、図７及び図８の実施形態では、有効なコンテキストの位置は、編集初期化ブロック６５０が実行された直後の命令表現３６１である。換言すれば、実行されたばかりの編集初期化ブロック６５０により、生成されるコンテキストは有効であると分かっており、それにより、代理実行モードをその直後に開始し得る。編集初期化ブロック６５０が含まれない代替の実施形態では、有効なコンテキストの位置は、一実施態様例では、主にパートプログラムの冒頭に存在し得る。
【００８３】
ブロック１３２０において、ルーチンは現在ノードとして次のノードに続く。判断ブロック１３３０において、現在ノードが編集コマンドの標的ノードであるか否かが判断される。現在ノードが編集コマンドの標的ノードである場合、ルーチンはブロック１３４０に続き、ブロック１３４０において、リアル実行モードが現在ノードで開始され、その後、より詳細に後述するように、ルーチンは判断ブロック１３９５に続く。編集コマンドの標的ノードである現在ノードの具体例として、図９〜図１１Ｂの実施形態では、命令表現３６１Ｂが、変更コマンド６２２での編集に選択されたものである。しかし、命令表現３６１Ｂは、命令表現３６１の親ノードの子ノードとして指定されているため、リアル実行モードは、命令表現３６１に対応する親ノードで開始し得る。したがって、一実施態様では、標的ノードは、命令表現３６１に関連付けられた親ノードと見なすことができ、リアル実行モードを親ノードで開始し、それにより、命令表現３６１Ａに対応する命令に対する物理的なセットアップが実行されて、命令表現３６１Ｂでの編集に正確な物理コンテキストを提供し得る。
【００８４】
判断ブロック１３３０において、現在ノードが編集コマンドの標的ノードではないと判断される場合、ルーチンは判断ブロック１３５０に続き、判断ブロック１３５０において、現在ノードが物理的なシステム変更を無条件に必要とするか否かが判断される。例えば、ノードがステージを移動させて、ワークピースの新しい部分を撮像する場合（例えば、単純な「移動」コマンド等を介して）、いくつかの実施形態では、これは物理的なシステム変更を無条件に必要とし得る。同様に、特定の倍率変更も物理的なシステムの無条件な変更等である。しかし、いくつかの実施形態では、そのような変更が代理データにすでに関連付けられた親ノード内に埋め込まれ、続くノードが再び同様の物理的な変更を必要とする（例えば、移動又は倍率の変更のそれぞれ）場合、最終的に同様の後続命令が優先されるため、無条件に必要とされないことがあることが理解されよう。現在ノードが物理的なシステム変更を無条件に必要とするか否かを解析する様々な方法を、本開示の教示に基づいて当業者により決定し得る。いずれの場合でも、現在ノードが物理的なシステム変更を無条件で必要とする場合、ルーチンはブロック１３４０に続く。現在ノードが物理的なシステム変更を無条件には必要としない場合、ルーチンは判断ブロック１３６０に続く。
【００８５】
判断ブロック１３６０において、現在ノードが結果データを提供するか否かが判断される。現在ノードが結果データを提供する場合、より詳細に後述するように、ルーチンは判断ブロック１３８０に続く。現在ノードが結果データを提供しない場合、ルーチンはブロック１３７０に続き、ブロック１３７０において、ノードが代理実行モードで実行され、その後、より詳細に後述するように、ルーチンはブロック１３９５に続く。
【００８６】
判断ブロック１３８０において、現在ノードに代理データが存在するか否かが判断される。現在ノードに代理データが存在する場合、より詳細に後述するように、ルーチンはブロック１３９０に続く。現在ノードに代理データが存在しない場合、ルーチンはブロック１３４０に続く。
【００８７】
ブロック１３９０において、ノードは代理実行モードで実行される。代理実行モードでは、代理データが、現在ノードに対応するパートプログラム命令セットのうちの少なくともいくつかのメンバに関連付けられた制御動作の実行から生じるであろうデータに対する代替として使用され、パートプログラム命令セットのそれらのメンバはスキップされ、関連付けられた制御動作は実際に実行されない。具体例として、図７及び図８の実施形態では、代理データ（例えば、図５Ｂのデータ５３０）が、命令表現３６１、３６１Ａ、及び３６１Ｂに関連付けられた制御動作の実行から生じるであろうデータの代替として使用され、それにより、関連付けられた命令及び制御動作はスキップされ、実際に実行されない。同様に、代理データは、命令表現３６２及び３６２Ａに関連付けられた動作に関しても使用され、それにより、関連付けられた命令及び制御動作はスキップされ、実際に実行されない。対照的に、命令表現３６１Ｃ（すなわち、代理データエッジ点を利用してラインＬ３’を定義する）、命令表現３６２Ｂ（すなわち、代理データエッジ点を利用してラインＬ４’を定義する）、及び命令表現３６４（すなわち、ラインＬ３’とＬ４’との交点Ｉ２’を特定する）はすべて実行されて、関連付けられたコンテキストを生成する。換言すれば、ラインＬ３’及びＬ４’並びに交点Ｉ２’の生成は、図８のユーザインタフェース８００に示されるように、代理データをいかに利用して、パートプログラムへの続く編修のためのコンテキストを生成し得るかを明らかにする。
【００８８】
次に、ルーチンは判断ブロック１３９５に続き、判断ブロック１３９５において、代理実行モードで実行する別のノードがあるか否かが判断される。代理実行モードで実行する別のノードがある場合、ルーチンはブロック１３２０に戻り、ない場合、ルーチンは終了する。例えば、標的ノード並びに実行ブロック１３３０及び１３４０に達することにより、実行が判断ブロック１３９５に達した場合、時には、コンテキストはすでに、標的ノードでの編集又は標的ノード内での編集のために確立していることがあり得るため、代理実行モードで実行する別のノードがないであろう。
【００８９】
本発明の様々な好ましい例示的な実施形態を図示し説明したが、本発明の趣旨及び範囲から逸脱せずに、様々な変更を実施形態に行い得ることが理解されよう。
【符号の説明】
【００９０】
１０、１００  マシンビジョン検査システム
１２  ビジョン測定機
１４  制御コンピュータシステム
１６  ディスプレイ
１８  プリンタ
２０、４１５  ワークピース
２２  ジョイスティック
２４  キーボード
２６  マウス
３２、２１０  ステージ
３４  光学撮像システム
１４２ＰＰ  パートプログラム
１４４  代理データメモリ部
１６０  編集部
１７６  編集ユーザインタフェース部
１７８  編集実行部
５３０  代理データ
６５０  編集初期化ブロック
【図１】
2013104877.tif 000003
【図２Ａ】
2013104877.tif 000004
【図２Ｂ】
2013104877.tif 000005
【図３】
2013104877.tif 000006
【図４】
2013104877.tif 000007
【図５Ａ】
2013104877.tif 000008
【図５Ｂ】
2013104877.tif 000009
【図６】
2013104877.tif 000010
【図７】
2013104877.tif 000011
【図８】
2013104877.tif 000012
【図９】
2013104877.tif 000013
【図１０Ａ】
2013104877.tif 000014
【図１０Ｂ】
2013104877.tif 000015
【図１１Ａ】
2013104877.tif 000016
【図１１Ｂ】
2013104877.tif 000017
【図１２Ａ】
2013104877.tif 000018
【図１２Ｂ】
2013104877.tif 000019
【図１３】
2013104877.tif 000020
【外国語明細書】
2013104877000001.pdf