(57)【要約】      （修正有）【課題】マシンビジョンシステムプログラム編集環境を提供する。【解決手段】複数の異なるユーザインタフェースウィンドウ内での関連する機能の同期された選択及び／又は識別を含むマシンビジョンシステムプログラム編集環境が提供される。特に、ウィンドウのうちの１つは、パートプログラム表現が、ユーザによる編集のために表示される編集ウィンドウである。一実施形態では、ユーザは、編集ウィンドウではないウィンドウ（例えば、結果ウィンドウ又はグラフィカルワークピース検査要素表示ウィンドウ）内で関心のあるデータ又は別の要素を選択し得、関連付けられたパートプログラム命令表現が、編集ウィンドウ内で自動的に強調表示され、且つ／又は選択される。逆に、パートプログラム命令表現は、ユーザにより編集ウィンドウ内で選択することができ、別のウィンドウ内の関連付けられた結果又は要素が自動的に強調表示され、且つ／又は選択される。【選択図】図２
2013117953.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(登録商標）ソフトウェア等の市販の様々なマシンビジョン検査システムに日常的に使用されている。
【０００６】
特定の検査イベントシーケンス（すなわち、各画像を取得する方法及び各取得画像を解析／検査する方法）を含むマシン制御命令は一般に、特定のワークピース構成に固有の「パートプログラム」又は「ワークピースプログラム」に記憶される。例えば、パートプログラムは、ワークピースに対してカメラを位置決めする方法、照明レベル、倍率レベル等の各画像を取得する方法を定義する。さらに、パートプログラムは、例えば、エッジ／境界検出ビデオツール等の１つ又は複数のビデオツールを使用することにより、取得画像を解析／検査する方法を定義する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
マシンビジョン検査システムのパートプログラムの編集は、マシンツール又は組み立てロボット等のプログラムの編集よりも複雑な作業である。例えば、マシンビジョン検査システムのパートプログラムは後の部分を含み、後の部分は制御動作を含み、且つ／又は少なくとも部分的に、プログラムの前の部分の実行により決定される結果及び／又は検査動作にとって極めて重要な画像の提供に使用されているワークピースの特定のインスタンスに依存する画像依存測定結果を提供する。さらに、そのようなシステムの学習モードユーザインタフェース（パートプログラムの作成及び編集に使用される）は特に複雑であり得、ユーザがプログラミング動作の原因及び結果を適宜評価して、高品質のパートプログラムを作成するために、リアルタイム画像ウィンドウ、ビデオツールバー表示、パートプログラム表現ウィンドウ、結果出力ウィンドウ（略して結果ウィンドウ）、検査要素グラフィカル表示ウィンドウ、位置ウィンドウ、照明ウィンドウ、及び測定ツール表示を同時に表示する必要がある。そのような編集環境では、パートプログラム命令に関連付けられたすべての影響の位置を単に認識することが困難であり得る。ユーザが部分的に完成されたパートプログラムを保存し、後にそのパートプログラムを呼び出して、プログラミングを変更又は仕上げる場合、ユーザが、パートプログラム命令間及び様々なウィンドウに反映される関連付けられた影響間の適切な関連を認識することは、さらに困難であり得る。マシンビジョン検査システムでのユーザインタフェースのナビゲーション、プログラム品質の高速評価、並びに全体的なパートプログラムの作成効率及び編集効率を強化することができる編集環境が必要である。
【課題を解決するための手段】
【０００８】
概要
本概要は、詳細な説明においてさらに後述する選択された概念を簡易化された形態で紹介するために提供される。本概要は、特許請求される趣旨の主要な特徴を識別する意図はなく、特許請求される趣旨の範囲を判断する際の助けとして使用される意図もない。
【０００９】
上述した考慮事項に対処するために、マシンビジョン検査システムが、編集ウィンドウ内に表されるパートプログラム命令と、ユーザインタフェースの他のウィンドウ内に表示される関連する動作コンテキスト及び／又は結果との関係を示すことにより、マシンビジョン検査システムでのユーザインタフェースのナビゲーション、プログラム品質の高速評価、並びに全体的なパートプログラムの作成効率及び編集効率を強化することができる機能を含む編集環境を提供することが望ましい。そのような編集環境では、ユーザは、結果内の様々なパートプログラム命令間の原因と結果の関係をより容易に認識することができ、さらには、関心があり、異なるウィンドウに表示されている結果を選択することにより、ユーザインタフェースの所望の部分及び／又は編集ウィンドウ内の所望の特定のパートプログラム命令にナビゲートされ得る。これは、ユーザが、マシンビジョン検査システムの結果として生じる状態並びに／或いは制御動作及び／又はパートプログラム命令に関連付けられた測定結果に基づいて、制御動作及び／又はパートプログラム命令の詳細を直観的に選択し、評価し、且つ／又は承認するという点で、パートプログラムがマシンビジョン検査システムのユーザにより入力される実際の制御動作を記録することにより作成され、編集される場合に特に重要である。
【００１０】
往々にして、パートプログラミング命令のロバスト性の問題又は欠如の兆候は、結果ウィンドウ内の予期されない、又は「許容差外れ」の結果により、又はグラフィカル表示ウィンドウ等内にあるが、パートプログラム命令自体に含まれない誤配置された測定要素により示される。しかし、欠陥のあるパートプログラミング命令を、理解でき、確実に編集又は補足することができるように見ることができるのは、編集ウィンドウのみである。さらに、往々にして、編集ウィンドウは混み合ったユーザインタフェース内で限られたサイズを有し、パートプログラムは非常に多数の命令及び／又は対応する命令表現を有し得るため、そのような表示結果に関連付けられた欠陥のあるパートプログラミング命令は、編集ウィンドウでは不可視であることがある。したがって、汎用マシンビジョン検査システム、特に、実際のユーザにより制御される動作を記録して、パートプログラムを作成する（例えば、単純なグラフィカルオブジェクト又はテキストに基づくプログラミングシステムとは対照的に）システムは、編集動作中、編集ウィンドウ内のパートプログラム命令表現と、ユーザインタフェースの他のウィンドウに表示される関連する動作コンテキスト及び／又は結果との関係を確実に、ロバストに、且つ都合よく示す編集環境を提供してこなかった。
【００１１】
この望ましい編集環境をサポートするために、複数の異なるユーザインタフェースウィンドウ内の関連する機能の同期された選択及び／又は識別を提供する方法を含むマシンビジョンシステムプログラム編集環境が、本明細書に開示される。特に、ウィンドウのうちの１つは、編集ウィンドウとも呼ばれるパートプログラム表現ウィンドウであり、このウィンドウでは、パートプログラム命令表現が、ユーザによる編集のために表示される。一実施形態では、ユーザは、編集ウィンドウではないウィンドウ（例えば、結果ウィンドウ又はグラフィカルワークピース検査要素表示ウィンドウ）内の関心のあるデータ又は別の要素を選択し得、関連付けられたパートプログラム命令表現が自動的に、編集ウィンドウ内に表示され、且つ／又は強調表示され、且つ／又は選択され、それにより、編集コマンドを、自動的に強調表示又は選択されたパートプログラム命令表現で都合よく実施し得る。逆に、いくつかの実施形態では、ユーザがパートプログラム命令表現を編集ウィンドウ内で選択し得、別のウィンドウ内の関連付けられた結果又は要素を自動的に強調表示し、且つ／又は評価に選択し得る。
【００１２】
本明細書に開示される特徴と組み合わせて使用し得る関連する編集機能及び動作は、２０１１年１１月１５日に出願された「Machine Vision System Program Editing Environment Including Real Time Context Generation Features」という名称の米国特許出願第１３／２９７，２３２号（以下、「２３２号出願」）、２０１１年１１月１５日に出願された「System and Method Utilizing An Editing Initialization Block In A Part Program Editing Environment In A Machine Vision System」という名称の米国特許出願第１３／２９７，１８２号（以下、「１８２号出願」）、及び２０１１年１１月１５日に出願された「Machine Vision System Editing Environment For A Part Program In Which A Continuous Stream Of Image Acquisition Operations Are Performed During A Run Mode」という名称の米国特許出願第１３／２９７，２２０号（以下、「２２０号出願」）という特許出願にも記載されている。本明細書に開示される特徴は、２３２号出願に開示されるコンテキスト生成機能と組み合わせて使用される場合、特に有用である。これは、ユーザが、本明細書に開示される方法により到達したパートプログラム内の任意の位置で編集する場合、そのときのマシン構成又は「コンテキスト」が未知であり得るため、すなわち、仮に最初からそのパートプログラム内のその任意の位置までパートプログラムが実行された場合に予期されるマシン構成に対して、特定の種類の変更が行われた（例えば、一部分がステージ上で移動する等）場合に未知であり得るためである。その位置で予期される動作コンテキスト（例えば、マシン構成等）を確立せずに、その「任意の」位置でのパートプログラムの編集を続けると、予測できない結果が生じ、且つ／又はマシンの破壊さえも生じるおそれがある。そのような問題により、いくつかのそのようなシステムでは、最初から、パートプログラム命令への任意の潜在的な追加の変更又は追加を含むそれ以下までのパートプログラムのすべての命令を実際に実行して、変更及び／又は追加が現実的な動作状況（すなわち、予期されるコンテキスト）セットに基づいてプログラミングされていることを確認することが常識であった。しかし、パートプログラムのすべての命令を実行して、命令に対する変更又は追加に現実的な動作状況を提供することは、大きなパートプログラム（例えば、多数の画像取得及び／又は要素検査を含むパートプログラム）では非現実的であり、大きなパートプログラムは、顕微鏡的物体（例えば、１ミリメートルの１／１０又は１／１００の物体）の顕微鏡検査（例えば、ミクロン分解能測定）を提供するマシンビジョン検査システムでは特に一般的である。このため、パートプログラム内の任意の位置へのジャンプは（例えば、本明細書に開示される方法による）、従来技術によるマシンビジョン検査システムでは特に有用ではなかったため、あまり必要とは感じられていなかった。しかし、２３２号出願には、編集動作中、パートプログラム内の任意の位置で、準リアルタイムで有効なパートプログラミング編集コンテキストを確実且つロバストに提供する編集環境を提供する方法が開示されており、この方法は、本明細書に開示される方法に関連付けられる有用性及び時間節約を大幅に増大させる。
【００１３】
したがって、さらに後述する本発明のいくつかの実施形態及び２３２号出願では、マシンビジョン検査システムは、実行モード、学習モード、及び編集部をさらに備える。実行モードは、実行の実行モードを使用して、前に作成されたパートプログラムを実行すべく動作可能である。学習モード（記録モードと呼ばれることもある）は、ユーザ入力を受信して、マシンビジョン検査システムの動作を制御し、被制御動作に対応するパートプログラム命令を記録して、パートプログラムを作成すべく動作可能である。学習モードは、編集ウィンドウを含む編集ユーザインタフェースも含み、編集ウィンドウは、パートプログラム命令の編集可能なパートプログラム表現を含み、パートプログラム表現は命令表現を含む。編集部は、パートプログラムを編集すべく動作可能であり、実行の実行モードとは異なる実行の編集モードに従って、前に記録されたパートプログラム命令を実行すべく動作可能な編集実行部を含む。
【００１４】
様々な実施形態では、学習モードは、記録パートプログラム命令の各セットに関連付けられた各代理データを自動的に記録すべくさらに動作可能なように構成され、代理データのうちの少なくともいくつかは、関連付けられた記録命令セットに対応する実際の制御動作から生じるデータを含む。さらに、実行の編集モードは代理実行モードを含む。代理実行モード中、少なくとも１つのパートプログラム命令セットに関して、各代理データが前に、そのパートプログラム命令セットに関連付けて記録された場合、そのパートプログラム命令セットの少なくともいくつかのメンバは実行されない。換言すれば、対応する関連付けられた実際の制御動作は実行されず、各代理データが、代理実行モードの継続する動作で、実行されない実際の制御動作から生じるであろうデータの代わりとして使用される。
【００１５】
様々な実施形態では、学習モードは、各記録パートプログラム命令セットに、各代理データが前に、その各パートプログラム命令セットに関連付けて記録されたか否かの表示を記録するように構成し得る。一実施形態では、表示は、各記録パートプログラム命令セットの初期命令に含まれる。一実施形態では、各記録パートプログラム命令セットは、マークアップ言語（例えば、ＸＭＬ又はその派生語）で書かれた命令を含み得る。様々な実施形態では、各記録パートプログラム命令セットは、マークアップ言語で書かれた要素、親要素、コンテナ要素、及び子要素のうちの少なくとも１つを含み得る。少なくとも一実施形態では、表示は、各記録パートプログラム命令セット内に含まれる各代理データの存在を含み得る。少なくとも一実施形態では、表示は、その各記録パートプログラム命令セット内に含まれる各識別子を含み得、各識別子は、マシンビジョン検査システムの代理データメモリ部内の対応する各代理データを示すために使用可能である。
【００１６】
様々な実施形態では、編集部は、パートプログラムの編集に使用可能な編集コマンドを含み、編集実行部は、ユーザが編集ユーザインタフェースを使用して、編集コマンドを入力し、編集ウィンドウ及び／又はパートプログラム表現内に示される標的位置（例えば、本明細書に開示される方法により到達した任意のパートプログラム位置）にあるプログラムを編集する場合、実行の編集モードが、標的位置前のパートプログラム内の有効なコンテキスト開始位置で開始され、代理実行モードをパートプログラム命令の少なくとも一部分の実行に使用して、標的位置でのパートプログラムの編集に有効なコンテキスト確立するように構成される。
【００１７】
本明細書に開示され、上で概説したシステム及び方法の提供及び使用に関連付けられた追加の特徴は、本願に開示される様々な図面、説明、及び特許請求の範囲に基づいて、特に、参照される文献と併せて解釈される場合、当業者により理解され、参照される文献では、同様に図示され、説明され、且つ／又は参照される要素を相互参照によりさらに理解することができる。
【００１８】
上記態様及び本発明に付随する利点の多くは、添付図面と併せて解釈される場合、以下の詳細な説明を参照することにより、よりよく理解されるため、より容易に理解されよう。
【図面の簡単な説明】
【００１９】
【図１】汎用精密マシンビジョン検査システムの様々な典型的な構成要素を示す図である。
【図２】図１のシステムと同様のマシンビジョン検査システムの制御システム部と、ビジョン構成要素部とのブロック図であり、本発明による様々な実施形態で使用可能な機能を含む。
【図３】本明細書に開示されるウィンドウ間自動スクロール動作の実施に使用し得る通信ルーチン及び／又は動作の機能概略表現である。
【図４】編集ユーザインタフェース及び結果ウィンドウを含むユーザインタフェースの図である。
【図５】図４のユーザインタフェースの動作を示す図である。
【図６】図４のユーザインタフェースの動作を示す図である。
【図７】図４のユーザインタフェースの動作を示す図である。
【図８】図４〜図７の命令表現のうちのいくつかに対応するパートプログラムのマークアップ言語コード命令を示す図である。
【図９】マシンビジョンシステムプログラム編集環境を提供するルーチンの一実施形態を示す流れ図である。
【図１０】図９のルーチンの部分に対する代替であるルーチンを示す流れ図である。
【図１１】図１０のルーチンの部分の一実施形態を示す流れ図である。
【図１２】図１０のルーチンの別の部分の一実施形態を示す流れ図である。
【図１３】プログラム編集環境を動作させる追加のルーチン及び／又は代替のルーチンの一実施形態を示す流れ図である。
【図１４】図２の編集部１６０の追加の構成要素を示すブロック図である。
【図１５】複数の命令表現を有するパートプログラム表現を含む編集インタフェースの図である。
【図１６】図１５に対応するパートプログラムが実行されたワークピースの画像を含むユーザインタフェースの図である。
【図１７Ａ】図１５の命令表現のうちのいくつかに対応するパートプログラムのマークアップ言語コード命令の図である。
【図１７Ｂ】図１５の命令表現のうちのいくつかに対応するパートプログラムのマークアップ言語コード命令の図である。
【図１８Ａ】リアルタイムコンテキスト生成機能を含むマシンビジョンシステムパートプログラム編集環境を提供するルーチンの一実施形態を示す流れ図である。
【図１８Ｂ】リアルタイムコンテキスト生成機能を含むマシンビジョンシステムパートプログラム編集環境を提供するルーチンの一実施形態を示す流れ図である。
【図１９】代理実行モードを実行して、パートプログラム命令表現、要素、又はノードにより示されるパートプログラム位置での有効な編集コンテキストを提供するルーチンの一実施形態を示す流れ図である。
【発明を実施するための形態】
【００２０】
説明
図１は、本明細書に記載の方法により使用可能な例示的な１つのマシンビジョン検査システム１０のブロック図である。マシンビジョン検査システム１０はビジョン測定機１２を含み、ビジョン測定機１２は、制御コンピュータシステム１４とデータ及び制御信号を交換すべく動作可能に接続される。制御コンピュータシステム１４は、モニタ又はディスプレイ１６、プリンタ１８、ジョイスティック２２、キーボード２４、及びマウス２６などとデータ及び制御信号を交換すべくさらに動作可能に接続される。モニタ又はディスプレイ１６は、マシンビジョン検査システム１０の動作の制御及び／又はプログラムに適したユーザインタフェースを表示し得る。
【００２１】
ビジョン測定機１２は、可動式ワークピースステージ３２と、光学撮像システム３４とを含み、光学撮像システム３４はズームレンズ又は交換式レンズを含み得る。ズームレンズ又は交換式レンズは一般に、光学撮像システム３４により提供される画像に様々な倍率を提供する。マシンビジョン検査システム１０は一般に、上述したQUICK VISION（登録商標）シリーズのビジョンシステム及びQVPAK（登録商標）ソフトウェア並びに同様の先端技術の市販されている精密マシンビジョン検査システムに類似する。好適なマシンビジョン検査システム１０は、本願と同じ譲受人に譲渡された米国特許第７，４５４，０５３号及び同第７，３２４，６８２号並びに２００８年１２月２３日に出願された米国仮特許出願公開第１２／３４３，３８３号及び２００９年１１月２９日に出願された米国仮特許出願公開第１２／６０８，９４３号にも記載されている。
【００２２】
図２は、図１のマシンビジョン検査システムと同様のマシンビジョン検査システム１００の制御システム部１２０と、ビジョン構成要素部２００とのブロック図であり、本発明による様々な実施形態に使用可能な機能を含む。より詳細に後述するように、制御システム部１２０は、ビジョン構成要素部２００の制御に利用される。図２に示されるように、ビジョン構成要素部２００は、光学アセンブリ２０５と、光源２２０、２３０、及び２４０と、中央透明部２１２を有するワークピースステージ２１０とを含む。ワークピースステージ２１０は、ワークピース２０を位置決めし得るステージ表面に略平行する平面内にあるＸ軸及びＹ軸に沿って制御可能に移動可能である。光学アセンブリ２０５は、カメラ系２６０と、交換式対物レンズ２５０とを含み、レンズ２８６及び２８８を有するタレットレンズアセンブリ２８０を含み得る。タレットレンズアセンブリに対する代替として、固定レンズ、又は手動で交換可能な倍率変更レンズ、又はズームレンズ構成等を含み得る。光学アセンブリ２０５は、さらに後述するように、制御可能なモータ２９４を使用することにより、Ｘ軸及びＹ軸に略直交するＺ軸に沿って制御可能に移動可能である。
【００２３】
マシンビジョン検査システム１００を使用して撮像すべき複数のワークピース２０を保持したトレイ又は固定具は、ワークピースステージ２１０に配置される。ワークピースステージ２１０は、光学アセンブリ２０５と相対移動すべく制御し得、それにより、交換式対物レンズ２５０は、ワークピース２０上の位置間及び／又は複数のワークピース２０間で移動する。透過照明光２２０、落射照明光２３０、及び斜め照明光２４０のうちの１つ又は複数は、光源光２２２、２３２、又は２４２のそれぞれを発して、１つ又は複数のワークピース２０を照明する。光源光はワークピース光２５５として反射又は透過し、交換式対物レンズ２５０及びタレットレンズアセンブリ２８０を通過し、カメラ系２６０に集められる。カメラ系２６０により捕捉されたワークピース２０の画像は、信号線２６２上で制御システム部１２０に出力される。光源２２０、２３０、及び２４０は、信号線又はバス２２１、２３１、及び２４１のそれぞれを通して制御システム部１２０に接続し得る。画像の倍率を変更するには、制御システム部１２０は、信号線又はバス２８１を通して、軸２８４に沿ってタレットレンズアセンブリ２８０を回転させて、タレットレンズを選択し得る。
【００２４】
様々な例示的な実施形態では、光学アセンブリ２０５は、制御可能なモータ２９４を使用してワークピースステージ２１０に対して垂直なＺ軸方向に移動可能であり、制御可能なモータ２９４は、アクチュエータ、接続ケーブル等を駆動して、光学アセンブリ２０５をＺ軸に沿って移動させ、カメラ系２６０により捕捉されるワークピース２０の画像のフォーカスを変更する。本明細書で使用される場合、Ｚ軸という用語は、光学アセンブリ２０５により得られた画像のフォーカスに使用されることを意図される軸を指す。制御可能なモータ２９４は、使用される場合、信号線２９６を介して入出インタフェース１３０に接続される。
【００２５】
図２に示されるように、様々な例示的な実施形態では、制御システム部１２０は、コントローラ１２５と、電源部１２８と、入出インタフェース１３０と、メモリ１４０と、ワークピースプログラム生成・実行器１５０と、レコーダ／変換器１５５と、学習モード部１５６と、実行モード部１５７と、編集部１６０と、代理データマネージャ１８０と、プログラム状態マネージャ１８５と、ノードマネージャ１９０と、ウィンドウ間自動スクロール部１９５と、結果ウィンドウ部１９６と、を含む。これらの構成要素のそれぞれ並びに後述する追加の構成要素は、１つ若しくは複数のデータ／制御バス及び／又はアプリケーションプログラミングインタフェースにより、或いは様々な要素間の直接接続により相互接続し得る。
【００２６】
入出力インタフェース１３０は、撮像制御インタフェース１３１と、移動制御インタフェース１３２と、照明制御インタフェース１３３と、レンズ制御インタフェース１３４とを含む。移動制御インタフェース１３２は、位置制御要素１３２ａと、速度／加速度制御要素１３２ｂとを含み得るが、そのような要素は統合且つ／又は区別不可能であってもよい。照明制御インタフェース１３３は、例えば、マシンビジョン検査システム１００の様々な対応する光源の選択、電力、オン／オフスイッチ、及び該当する場合にはストローブパルスタイミングを制御する。
【００２７】
メモリ１４０は、画像ファイルメモリ部１４１と、１つ又は複数のパートプログラム１４２ＰＰ等を含み得るワークピースプログラムメモリ部１４２と、ビデオツール部１４３とを含む。ビデオツール部１４３は、ビデオツール部１４３ａと、他のビデオツール部とを含み、他のビデオツール部は、対応する各ビデオツールのＧＵＩ、画像処理動作等を決定する。多くの既知のビデオツールが、上述したQUICK VISION（登録商標）シリーズのビジョンシステム及び関連付けられたQVPAK（登録商標）ソフトウェア等の市販のマシンビジョン検査システムに含まれる。ビデオツール部１４３は関心領域（ＲＯＩ）生成器１４３ｘも含み、関心領域生成器１４３ｘは、ビデオツール部１４３に含まれる様々なビデオツールで動作可能な様々なＲＯＩを画定する自動、半自動、及び／又は手動の動作をサポートする。
【００２８】
一般に、メモリ部１４０は、ワークピース２０の取得画像が所望の画像要素を有するように、ワークピース２０の画像を捕捉又は取得するビジョンシステム構成要素部２００の動作に使用可能なデータを記憶し得る。メモリ部１４０は、検査結果データも記憶し得、取得画像に対して様々な検査動作及び測定動作を手動又は自動で実行して（例えば、部分的にビデオツールとして実施される）、入出力インタフェース１３０を通して結果を出力すべくマシンビジョン検査システム１００を動作させるために使用可能なデータをさらに記憶し得る。メモリ部１４０は、入出力インタフェース１３０を通して動作可能なユーザインタフェースを定義するデータを含むこともできる。図１４〜図１９を参照してより詳細に後述するように、一実施形態では、パートプログラム編集時、編集の継続に必要なコンテキストを生成するために、パートプログラムのすべてのステップを実行する必要がなく、前に保存されたデータを代理データとして使用して、特定のコンテキストをシミュレートすることができる。メモリ部１４０は、そのような代理データを記憶することもできる。
【００２９】
透過照明光２２０、落射照明光２３０、及び斜め照明光２４０のそれぞれの信号線又はバス２２１、２３１、及び２４１はすべて、入出力インタフェース１３０に接続される。カメラ系２６０からの信号線２６２及び制御可能なモータ２９４からの信号線２９６は、入出力インタフェース１３０に接続される。画像データの搬送に加えて、信号線２６２は、画像取得を開始する信号をコントローラ１２５から搬送し得る。
【００３０】
１つ又は複数のディスプレイ装置１３６（例えば、図１のディスプレイ１６）及び１つ又は複数の入力装置１３８（例えば、図１のジョイスティック２２、キーボード２４、及びマウス２６）も、入出力インタフェース１３０に接続することができる。ディスプレイ装置１３６及び入力装置１３８を使用して、ユーザインタフェースを表示することができ、ユーザインタフェースは、検査動作の実行及び／又はパートプログラムの変更に使用可能な様々なユーザインタフェース機能を含み、カメラ系２６０により捕捉された画像を表示し、且つ／又はビジョンシステム構成要素部２００を直接制御し得る。特に、本発明の様々な例示的な実施形態によれば、ディスプレイ装置１３６及び入力装置１３８を使用して、マシンビジョン検査システム１００でのパートプログラムの高速、効率的、直観的、且つ柔軟な編集を可能にするために使用可能な様々なユーザインタフェース機能を提示する。
【００３１】
ワークピースプログラム生成・実行器１５０、レコーダ／変換器１５５、学習モード部１５６、実行モード部１５７、編集部１６０、代理データマネージャ１８０、プログラム状態マネージャ１８５、ノードマネージャ１９０、及びウィンドウ間自動スクロール部１９５はすべて、一実施形態では、コントローラ１２５にリンクされた汎用マシンコントローラブロックＭＣの部分であるとみなされる。さらに、クライアントウィンドウ部１９７をコントローラ１２５にリンクし得る。クライアントウィンドウは、いくつかの実施形態では、制御システム部１２０の外部にあると見なされるが、制御システム部１２０と通信して、相互動作し得る。ワークピースプログラム生成・実行器１５０は、パートプログラムの作成及び実行を担当する。「ワークピースプログラム」及び「パートプログラム」という用語を本明細書では同義で使用し得ることが理解されよう。
【００３２】
ワークピースプログラム生成・実行器１５０の動作によれば、様々な例示的な実施形態では、ユーザは、マシンビジョン検査システム１００を利用して、ワークピース２０のパートプログラムを作成する場合、ワークピースプログラミング言語を使用して明示的に命令を自動的、半自動的、又は手動でコーディングすることにより、且つ／又は学習モードでマシンビジョン検査システム１００を動作させて（例えば、学習モード部１５６により制御される）、所望の画像取得トレーニングシーケンスを提供することで命令を生成することにより、パートプログラム命令を生成する。例えば、トレーニングシーケンスは、ワークピース要素を視野（ＦＯＶ）内に位置決めすること、光レベルを設定すること、フォーカス又はオートフォーカスすること、画像を取得すること、及び画像に適用される検査トレーニングシーケンスを提供すること（例えば、ビデオツールを使用して）を含み得る。学習モードは、シーケンスを捕捉又は記録し、対応するパートプログラムステップ（すなわち、命令）に変換すべく動作する。これらのパートプログラムステップは、パートプログラムが実行モードで実行される場合（例えば、実行モード部１５７により制御される）、マシンビジョン検査システムにトレーニングされた画像の取得を再生させ、検査動作に、パートプログラム作成時に使用されたワークピースに一致する１つ又は複数のワークピースを自動的に検査させる。
【００３３】
レコーダ／変換器１５５は、マシン動作をパートプログラムコードに変換するために利用される。換言すれば、ユーザが動作（例えば、ワークピースの要素の測定に使用されるビデオツールの変更等）を実行する場合、命令が生成され、命令はマシン可読言語に変換され、逆変換を実行することもできる。より詳細に後述するように、本明細書に開示される特定の実施形態では、パートプログラム内の特定の命令を、ユーザインタフェース内の命令表現に変換することもできる。いくつかの実施形態では、パートプログラム命令は、マークアップ型言語コードで書くことができる。特定の一実施形態例では、マークアップ言語コードはＭＩＭＬコードであり得る。編集部１６０は、より詳細に後述するように、パートプログラム表現ウィンドウを含み得る編集ユーザインタフェース部１６０ｕｉ内のパートプログラムの編集に関連する様々な動作及びユーザインタフェース機能を提供又はアクティブ化する。
【００３４】
代理データマネージャ１８０は、本発明のすべての実施形態を実施するために、存在する必要はない。しかし、代理データマネージャ１８０は、いくつかの実施形態では、本発明と組み合わせて使用し得る。簡単に言えば、代理データマネージャ１８０は代理データにリンクし、代理データは、本発明によれば、パートプログラムに記録し得る。特定の実施形態では、代理データマネージャ１８０は、通常生成される出力から代理データを取得し、代理データをパートプログラムへの書き込みに提供することを担当する。代理データマネージャ１８０についてはより詳細に後述する。
【００３５】
プログラム状態マネージャ１８５は、一実施形態では、プログラムが保護されるか、又は保護されないかを管理する。一実施態様では、保護されないパートプログラムは、記憶された代理データを含み得、その一方で、保護されるパートプログラムは任意の代理データが除去されている。一実施形態例では、保護されるプログラムは、工場で実行モードで利用し得るような、編集プロセスが完了したプログラムである。一実施形態では、ユーザは、保護すべきパートプログラムを選択し得、その時点で、プログラム状態マネージャ１８５は、そのパートプログラムが実行時に過度の実行ステップを負担しないように、すべての代理データを自動的に除去する。プログラム状態マネージャ１８５は、代理データがパートプログラムに記憶されたままであるような、プログラムが保護されない場合も担当し、パートプログラムが編集部１６０により呼び出される場合、代理データは利用可能であると示される。
【００３６】
一実施形態では、ノードマネージャ１９０は、パートプログラム内のノードに割り当てられたノード番号の管理を担当する。一実施態様では、パートプログラムの表現内で、各命令表現にノード番号が割り当てられる。特定の実施態様では、親ノード及び子ノードがある組織的ツリー構造を利用し得る。特定の実施態様では、レコーダ／変換器１５５により生成されるパートプログラム表現のあらゆるラインに、ノードマネージャ１９０によりノード番号又は一意保証識別子等が割り当てられる。より詳細に後述するように、いくつかの実施形態では、ウィンドウ間自動スクロール部１９５は、ノードマネージャ１９０により割り当てられたノード番号を利用して、関連付けられたパートプログラム要素の関連する要素及び対応する編集機能を異なるウィンドウ内に同時に表示し得る。換言すれば、ユーザが、ワークピースのどの測定がパートプログラム内のどの命令表現及び符号化命令に関連するかを見たい場合、ウィンドウ間自動スクロール部１９５は、関連するノード番号に対応するパートプログラム表現内の関連するライン及び／又は符号化命令内まで、各ウィンドウを自動的にスクロールする。
【００３７】
結果ウィンドウ部１９６は、結果ウィンドウユーザインタフェース１９６ｕｉ内でマシンビジョンシステム検査動作により実行される測定の結果の表示を含む、パートプログラムの編集に関連する様々な動作及びユーザインタフェースを提供又はアクティブ化する。しかし、より一般的には、結果ウィンドウ部１９６及び／又は結果ウィンドウユーザインタフェース１９６ｕｉは、本開示の他の箇所に記載される様々な特徴及び属性並びに拡張を含み得、本開示に図示、記載、且つ／又は参照されるウィンドウ間自動スクロール部の機能又は属性に基づいて、当業者には明らかな、代替形態である。
【００３８】
クライアントウィンドウ部１９７は、クライアントウィンドウユーザインタフェース１９７ｕｉ内でマシンビジョンシステム検査動作により実行される測定に関連する機能の表示を含むパートプログラムの編集に関する様々な動作及びユーザインタフェース機能を提供又はアクティブ化する。しかし、より一般的には、クライアントウィンドウ部１９７及び／又はクライアントウィンドウユーザインタフェース１９７ｕｉは、本明細書の他の箇所開示される様々な機能及び属性を備え得るとともに、本開示に図示、記載、且つ／又は参照されるウィンドウ間自動スクロール部の機能又は属性に基づいて当業者には明らかな拡張及び代替形態を備え得る。クライアントウィンドウは、本発明のいくつかの実施形態では、存在する必要がない。クライアントウィンドウには、マシンビジョン検査システムの基本動作には必須ではないが、強化機能又は使用し易さを提供し得るプログラム又はルーチンと関連づけられることもある。図４〜図７に示されるグラフィックビューウィンドウにより表されるグラフィックビューウィンドウ部は、クライアントウィンドウ部１９７の一例である。図３に示されるように、クライアントウィンドウは、結果ウィンドウに関して本明細書に開示されるものと略同様であるウィンドウ間自動スクロールユーザインタフェース機能及び属性を有し得る。
【００３９】
さらに図２に関して、図２の多くの特徴は、先に参照された米国出願において同様に図示、記載、且つ／又は参照される要素である、それらの同様又は略同様の対応要素の説明に基づいて理解し得る。より詳細に後述する編集部１６０及び／又は編集ＵＩ部１６０ｕｉは、参照された文献に記載される類似機能と同様又は同一の多くの機能を有し得る。ウィンドウ間自動スクロール部１９５は、本明細書に開示される様々な機能及び属性を備え得るとともに、本開示に図示、記載、且つ／又は参照されるウィンドウ間自動スクロール部の機能又は属性に基づいて当業者には明らかな拡張及び代替形態を備え得る。さらに、ウィンドウ間自動スクロール部１９５は代替として、自動スクロールマネージャと呼ぶこともでき、参照された文献に記載の自動スクロールマネージャに関連して記載される機能と同様のいくつかの機能を有し得る。
【００４０】
編集部１６０、ウィンドウ間自動スクロール部１９５、ノードマネージャ１９０、及びいくつかの実施形態では、代理データマネージャ１８０が互いに協働して、本明細書に開示される様々な機能を提供して、マシンビジョン検査システムのパートプログラム編集環境を強化することが理解されよう。いくつかの実施形態では、これらの様々な部分は代替として、互いの部分であるか、又は結合され、且つ／又は区別不可能なように構成してもよい。したがって、図２に示されるこれらの部分の構成が単なる例示であり、限定ではないことが理解されよう。
【００４１】
図３は、ウィンドウ間自動スクロール部１９５（例えば、図２に示されるウィンドウ間自動スクロール部１９５）により実施されて、本明細書に開示されるウィンドウ間自動スクロール機能を提供し得る通信ルーチン及び／又は動作の一実施形態の機能概略表現３００である。図３は、ウィンドウ間自動スクロール部１９５、プログラム表現ウィンドウ部１７６ｐｉ、結果ウィンドウ部１９６、及びクライアントウィンドウ部１９７を概略的に示す。「ウィンドウ部」が、表示されたユーザインタフェースウィンドウを示すとともに、動作を提供する関連付けられた機能及び基本ルーチンも示し得ることを理解されたい。ウィンドウ部は、本明細書では単にウィンドウと呼ぶこともある。プログラム表現ウィンドウ部１７６ｐｉは、本明細書及び／又は参照された文献では、プログラム命令表現ウィンドウ又は編集ウィンドウと呼ばれることもある。
【００４２】
図３に示される実施形態では、ウィンドウ間自動スクロール部１９５は、プログラム表現ウィンドウ選択イベント通知ＳＥ及びプログラム表現ウィンドウ自動スクロール通知ＡＳを通して、プログラム表現ウィンドウ部１７６ｐｉと対話する。ウィンドウ間自動スクロール部１９５は、結果ウィンドウ選択イベント通知ＳＥ及び結果ウィンドウ自動スクロール通知ＡＳを通して、クライアントウィンドウ部１９７と対話する。ウィンドウ間自動スクロール部１９５は、クライアントウィンドウ選択イベント通知ＳＥ及びクライアントウィンドウ自動スクロール通知ＡＳを通して、クライアントウィンドウ部１９７と対話する。様々な選択イベント通知ＳＥは独立して始動する。すなわち、別のウィンドウ内に関連付けられた要素を有し得るタイプの要素の選択のホストであるいかなるウィンドウも、選択イベントにより始動したそのウィンドウのルーチン又は動作に基づいて、選択に応答して選択イベント通知ＳＥを発行し得る。
【００４３】
例えば、選択イベントは、ユーザがプログラム表現ウィンドウ内の命令表現を選択すること、又は結果ウィンドウ内の結果を選択すること、又はクライアントウィンドウ内のグラフィカル要素を選択することであり得る。選択は、ユーザインタフェース入力装置と、ユーザインタフェース内での要素のマウスクリック等の既知の要素選択方法とを使用することにより達成し得る。対照的に、様々な実施形態では、各該当ウィンドウへの自動スクロール通知ＡＳは、任意の選択イベント通知に応答して始動し、一般に、すべての該当ウィンドウに送信される（しかし、現在の選択イベント通知を作成したウィンドウに自動スクロール通知を送信する必要はない）。
【００４４】
自動スクロール通知ＡＳは、選択イベント通知ＳＥにより始動するインター自動スクロール部のルーチン又は動作に基づく。自動スクロール通知ＡＳの受信に応答して、ウィンドウは、より詳細に後述するように、選択始動イベント通知ＳＥを発行したウィンドウ内で選択された特定の要素に関連付けられた特徴又は要素を、そのウィンドウに表示し、且つ／又は強調表示する。本明細書に開示されるシステム及び方法の新規性の一態様は、マシンビジョンシステムパートプログラミング及び編集環境の提供に関連して本明細書に開示される様々な属性及び機能の組み合わせにある。そのような組み合わせは、本明細書に開示される関連パートプログラミングユーザインタフェース機能を提供するために、マシンビジョン検査システムの特定の動作複雑性及びプログラミング複雑性に関連して、以前には意図も達成もされていなかった。
【００４５】
一実施形態では、図３は、ＸＭＬ準拠言語（例えば、ウェブページ間の通知に使用される）を使用して実施されることがある既知の「発行者−購読者（publisher-subscriber）」方法を使用して実施し得る。様々な実施形態では、発行者−購買者方法は、本明細書に開示される機能をサポートするリストに基づく方法、又はブロードキャストに基づく方法、又はコンテンツに基づく方法等の方法を利用することにより実施し得る。マシンビジョン検査システムでは、発行者及び購買者は一般に、同じ処理空間に配置され、「発行者」は「購買者」ウィンドウの識別子を知ることが可能である。そのような場合に当てはまり、参照される米国特許第８，０２８，０８５号（「０８５号特許」）には、本明細書に開示される機能をサポートするように構成し得る低遅延（low latency）方法が記載されている。
【００４６】
様々な実施形態では、学習モード中、パートプログラム命令が作成され、且つ／又は記録される際、様々なウィンドウ内の関連付けられた、又は対応する機能を確立し得る。例えば、一実施形態では、対応する各機能に、関連付けを確立し記録する手段として、各ウィンドウ部内で同じ「識別子」を割り当てるか、又は同じ「識別子」で記し得る。そのような実施形態では、選択イベント通知ＳＥは、選択された要素の識別子を含み得、その識別子は自動スクロール通知ＡＳを通して渡すことができ、それにより、受信側ウィンドウは、より詳細に後述するように、その識別子に基づいて関連付けられた特徴又は要素まで自動的にスクロール（例えば、表示し、且つ／又は強調表示）し得る。
【００４７】
図４は、本明細書に開示される原理に従って構成し動作することができる複数のウィンドウを含む編集環境の一実施形態を含む学習モードユーザインタフェース４００の図である。編集環境は、パートプログラム表現ウィンドウ４２０（様々な実施形態では、編集ウィンドウ４２０として使用し得、そのように呼ばれ得る）内に示されるパートプログラム命令表現（例えば、「ボックスツール」を使用して「ＬＩＮＥ−１」と命名された「測定ライン」等）と、結果ウィンドウ４３０内に示されるパートプログラム命令からの測定結果（例えば、測定結果座標Ｘ＝１２８．１７５０４０９）と、グラフィックビュークライアントウィンドウ４４０内でＣＡＤモデルに重ねられて示される様々な関連測定要素の表現（例えば、ライン４４１、ライン４４２、及び両矢印で示されるライン間の距離４４３）とを含む。このユーザインタフェース４００は、参照された文献に記載される対応する要素を有し、その様々な実施形態は、参照内の説明に基づいてさらに理解し得る。一般に言えば、ウィンドウ４３０及び４００内で生成される特徴又は要素は、パートプログラム表現ウィンドウ４２０内に示される命令表現に対応する記録パートプログラム命令の学習モード実行により生成される。図４に示される状態では、いずれの要素もユーザにより選択されていない。
【００４８】
ユーザインタフェース４００は、ツールバー４５０、ツールバー４６０、ステージ位置表示４７０、及び視野表示４８０も含む。ツールバー４５０は、ユーザインタフェース４００の上部に水平に配置された様々なユーザツール（例えば、測定ビデオツール）を備える。ツールバー４６０は、ユーザインタフェースの右側部分に垂直に配置されるユーザツール（例えば、位置合わせツール及び拡大ツール）を備える。ステージ位置表示４７０は、ステージ３２の位置を示すＸ、Ｙ、及びＺ座標を表示する。視野表示４８０は、カメラ２６０により撮像されるマシンビジョン検査システム１００の視野を表示するとともに、参照として、ユーザにより定義され記録される際に、ボックスツール命令表現４２２Ａに対応するボックスツール関心領域が現れるであろう位置を破線輪郭で概略的に表示する。
【００４９】
パートプログラム表現ウィンドウ４２０内に示されるパートプログラム命令表現は、親ノード命令表現４２１、４２２、及び４２３を含む。親ノード命令表現４２１は、子ノード命令表現４２１Ａ及び４２１Ｂを含む。親ノード命令表現４２１は、ＬＩＮＥ−１として表されるライン要素４４１を測定するために、ボックスツールが開かれることを示し、命令表現４２１Ａは、ユーザがボックスツールを利用して、ＬＩＮＥ−１のエッジ点を特定することを示し、次に、命令表現４２１Ｂにより示されるようにエッジ点を利用して、ＬＩＮＥ−１を定義する。親ノード命令表現４２２は、子ノード命令表現４２２Ａ及び４２２Ｂを含む。親ノード命令表現４２２は、ＬＩＮＥ−２として表されるライン要素４４２を測定するために、ボックスツールが開かれることを示し、命令表現４２２Ａは、ユーザがボックスツールを利用して、ＬＩＮＥ−２のエッジ点を特定することを示し、次に、命令表現４２２Ｂにより示されるようにエッジ点を利用して、ＬＩＮＥ−２を定義する。命令表現４２３は、「ＤＩＳＴ」として表される距離４４３が、ＬＩＮＥ−１とＬＩＮＥ−２との間で特定されることを示す。結果ウィンドウ４３０は、命令表現４２１、４２２、及び４２３のそれぞれに対応する測定結果４３１、４３２、及び４３３を表示する。
【００５０】
図５は、本明細書に開示される原理に従った、一実施形態の一態様による図４のユーザインタフェースの動作を示す図である。簡単に言えば、パートプログラム命令表現４２２Ｂは、パートプログラム表現ウィンドウ４２０内で強調表示され、関連するライン測定結果ＬＩＮＥ−２が結果ウィンドウ４３０内で強調表示され、関連するライン要素４４１がクライアントウィンドウ４４０内で強調表示される。様々な実施形態では、ユーザが、ウィンドウの１つ内のこれらの要素のうちの任意の１つを選択した場合、その他の対応する要素も、有利には、その他のウィンドウ内で強調表示されるか、又はその他の方法でマークされる（例えば、図示のように）。
【００５１】
図３を参照して図示され説明される方法を使用して、ウィンドウ間に必要な通知を提供し得、各ウィンドウは、対応する強調表示及び／又はマークを提供するルーチン又は動作を含み得る。これは、上述した利点を提供する。一実施形態では、結果ウィンドウ４３０又はクライアントウィンドウ４４０内の要素の選択は、関連付けられた選択イベント通知を受信すると（例えば、図３を参照して説明するように）、パートプログラム表現ウィンドウへの制御の移動及び／又はそのウィンドウ内の対応するパートプログラム命令表現の選択に繋がり、それにより、編集動作が即座に容易になる。
【００５２】
図６は、本明細書に開示される原理に従った、一実施形態の別の態様による図４のユーザインタフェースの動作を示す第２の図である。図６は、様々なウィンドウ内の対応する要素の関係の同様の例を示す。簡単に言えば、パートプログラム命令表現４２３（ライン間の距離測定）が選択され、したがって、パートプログラム表現ウィンドウ４２０内で強調表示され、関連する距離測定結果ＤＩＳＴが、結果ウィンドウ４３０内で強調表示され、関連する距離４４３が、クライアントウィンドウ４４０内で強調表示される。いくつかの実施形態では、パートプログラム命令表現４２３の実行は（例えば、ビデオツールのトレーニング又は動作結果の確認等のため）、強調表示し得る限り、対応する命令を、他の該当ウィンドウ内の対応する要素と共に「選択された」状態に維持し得る。
【００５３】
図７は、本明細書に開示される原理に従った、一実施形態の別の態様による図４のユーザインタフェースの動作を示す第３の図である。図７は、クライアントウィンドウ４４０内の機能の選択により、パートプログラム表現ウィンドウ４２０（すなわち、編集ウィンドウ）内の対応する要素がマークされるが、上述した実施形態とは対照的に、結果ウィンドウ４３０に影響しない例を示す。もちろん、いくつかの実施形態では、結果ウィンドウ４３０内の要素の選択も同様の挙動を有し得る。すなわち、編集ウィンドウ４２０には影響し得るが、所望の場合、クライアントウィンドウ４４０は影響を受け得ない）。すべてのウィンドウには同時に影響しないそのような実施形態は、いくつかの特定のウィンドウ型又はプログラミング状況で利点を有し得る。より具体的には、図７に示される実施形態では、パートプログラム命令表現４２１Ｂは、関連するライン測定結果ＬＩＮＥ−１が結果ウィンドウ４３０内で選択され（いくつかの実施形態では、且つ強調表示され）る場合、パートプログラム表現ウィンドウ４２０内で強調表示されるが、関連する距離４４３はそのときに、クライアントウィンドウ４４０内で強調表示されない。
【００５４】
図５〜図７に関して、任意のウィンドウが、選択イベント通知のときに「視野外」である要素（例えば、大きなパートプログラム、又はワークピースＣＡＤ画像等の場合）を含み得ることを理解されたい。ユーザは、選択前に任意のウィンドウのコンテンツを個々にスクロールし得、そのとき、他のウィンドウのコンテンツを調整する必要はない。次に、様々な実施形態では、選択イベント通知時、任意のウィンドウ内の対応する要素がそのとき、表示エリアにない場合、そのウィンドウのルーチン又は動作は、コンテンツを、選択イベント通知に対応する要素まで自動的にジャンプ又はスクロールさせる。すなわち、１つのウィンドウ内のユーザにより選択された要素に関連する、別のウィンドウ内の要素が、各ウィンドウで可視ではない場合、学習モードユーザインタフェースは、ユーザにより選択された要素に関連する要素が各ウィンドウで可視になるまで、各ウィンドウ内の表示を自動的に「スクロール」するように構成し得る。「スクロール」又は「自動スクロール」という用語が本明細書において使用されるが、これらの用語が便宜上使用されるだけであり、限定ではないことも理解されたい。より一般的には、選択された要素に対応する要素は、単に所望のコンテンツを有するウィンドウの再生等を含め、任意の都合のよい、且つ／又は既知の方法により、各ウィンドウで可視にし得る。
【００５５】
図８は、図４〜図７の命令表現のうちのいくつかに対応し得る、パートプログラムのマークアップ言語コード命令を含む図８００である。特に、図８は、自動的に定義される識別子の実施態様を示し、この識別子は、いくつかの実施形態では、上述し、図９〜図１３のうちのいくつか又はすべてに関連してさらに後述されるユーザインタフェースの同期「自動スクロール」機能を実施するために使用し得る。特に、図８は、ＸＭＬ準拠コード言語を含む特定の実施態様を示し、パートプログラム命令が記録される際、ＬＩＮＥ−２の測定に対応する「ノードＩＤ」値８０５又は識別子８０５が自動的に生成され、パートプログラム命令に挿入される。
【００５６】
図８に示されるように、ＬＩＮＥ−２の終わりに関連付けられた点は、データ８１０の部分として示される。一実施形態では、ウィンドウ間自動スクロール部はノードＩＤを使用して、命令の実行に基づいて、パートプログラム表現ウィンドウ、及び／又は結果生成結果ウィンドウ、及び／又はクライアントウィンドウに表示される関連付けられたパートプログラム命令及び対応する命令表現に割り当て得る。したがって、様々なウィンドウ内の関連する機能は、ウィンドウ間自動スクロール部で関連付けられることになる。
【００５７】
或いは、結果ウィンドウ、及び／又はクライアントウィンドウ、及び／又はパートプログラム表現ウィンドウ（すなわち、編集ウィンドウ）は、表示要素を生成するときに、各自の要素識別子を生成し、この情報をウィンドウ間自動スクロール部に渡し得、ウィンドウ間自動スクロール部は、記憶された識別子の関連付け表等内の様々な識別子の関連付けを形成し得る。いくつかの実施形態では、パートプログラム命令表現内のパートプログラム命令をマシンビジョン検査システム制御ソフトウェアの単一のアプリケーション又はサブルーチン内で処理し得、それにより、パートプログラム命令又は対応するパートプログラム命令表現を、これらの要素の両方に関連してウィンドウ間自動スクロール部が使用可能な単一の識別子により表し得ることを理解されたい。
【００５８】
図９〜図１３について簡単に後述する。図９〜図１３の様々な実施態様に関連付けられた様々な機能及び属性は、本明細書に含まれる様々な機能及び開示に鑑みて図９〜図１３を解釈することにより、並びに参照された文献に含まれる説明及び開示を考慮することにより実現し得る。
【００５９】
図９は、上述し、さらに後述する原理に従って動作するマシンビジョンシステムプログラム編集環境を提供するルーチン９００の一実施形態を示すブロック図である。
【００６０】
図９に示されるように、ブロック９１０において、ユーザ入力を受信して、マシンビジョン検査システムの動作を制御し、被制御動作に対応する関連付けられたパートプログラム命令を記録して、パートプログラムを作成すべく動作可能なように構成された学習モードが提供され、学習モードは学習モードユーザインタフェースを含み、学習モードユーザインタフェースは編集ユーザインタフェース部を含み、編集ユーザインタフェース部は、編集ウィンドウ内のパートプログラム命令の編集可能なパートプログラム表現を含み、パートプログラム表現は命令表現を含み、結果ウィンドウが提供され、結果ウィンドウは、マシンビジョン検査システムの被制御動作により提供される結果を含む各結果を受信して表示する。
【００６１】
ブロック９２０において、結果ウィンドウ内の各第１の結果セットを決定して表示する動作を含む、マシンビジョン検査システムの各第１の被制御動作セットを提供するユーザ入力を受信した場合、動作を自動的に提供すべく動作可能なように学習モードが構成され、動作は、
・結果ウィンドウ内の各第１の結果セットを決定して表示する動作を含む各第１の被制御動作セットに対応する各第１のパートプログラム命令セットを記録すること、
・結果ウィンドウ内に各第１の結果セットを表示すること、及び
・結果ウィンドウ内の各第１の結果セットを決定して表示する動作を含む各第１のパートプログラム命令セットに対応する各第１の命令表現セットを定義して表示すること
を含む。
【００６２】
少なくとも１つの実施形態又は実施態様では、ルーチンは、ブロック９３０において説明されるルーチン部分に続くか、又は別の実施形態若しくは実施態様では、図１０において説明されるルーチン部分に対応する代替ブロックＡに続く。
【００６３】
実施態様のブロック９３０に示されるように、ウィンドウ間自動スクロール動作セットに従って、結果ウィンドウ及びパートプログラム表現ウィンドウ（編集ウィンドウ）を動作させるユーザインタフェース動作を提供するように、学習モードは構成され、ユーザが結果ウィンドウ内の各第１の結果セットのメンバを選択した場合、ウィンドウ間自動スクロール動作が開始され、ウィンドウ間自動スクロール動作は、各第１の命令表現セットの少なくとも１つの命令表現がパートプログラム表現ウィンドウで可視であり、各第１の命令表現セットの少なくとも１つの命令表現が、インジケータにより編集ウィンドウ内でマークされ、編集ウィンドウ内で、結果ウィンドウ内でユーザにより選択された各第１の結果に対応する少なくとも１つの命令表現を示すように、編集ウィンドウ内の命令表現を調整することを含む。
【００６４】
図１０は、同様又は同一の機能を提供する特定の実施態様を含む、図９のブロック９３０の代替であるルーチン部分９００Ａを示す流れ図である。ルーチン部分９００Ａがブロック９３０に代えて使用される場合、図９に示されるブロック９２０及び／又はブロック９２５の後、ブロック９２８において、学習モードは、結果ウィンドウ内の各第１の結果セットの少なくとも１つのメンバと、
ａ）各第１のパートプログラム命令セット及び
ｂ）各第１の命令表現セット
のうちの少なくとも一方の対応するメンバとのウィンドウ間自動スクロール関連付けを定義して記録するように構成される。
【００６５】
上述したように、対応するメンバには、実行されると、結果ウィンドウ内の各第１の結果セットを生成するパートプログラム命令が関連付けられる。次に、ブロック９３０’において、学習モードは、ウィンドウ間自動スクロール関連付けに基づいて、ウィンドウ間自動スクロール動作セットに従って結果ウィンドウ及び編集ウィンドウを動作させるユーザインタフェース動作を提供するように構成され、ユーザが結果ウィンドウ内の各第１の結果セットのメンバを選択した場合、ウィンドウ間自動スクロール動作が開始され、ウィンドウ間自動スクロール動作は、各第１の命令表現セットの少なくとも１つの命令表現がパートプログラム表現ウィンドウ内で可視であり、各第１の命令表現セットの少なくとも１つの命令表現が、インジケータにより編集ウィンドウ内でマークされて、結果ウィンドウ内でユーザにより選択された各第１の結果に対応する、編集ウィンドウ内の少なくとも１つの命令表現を示すように、編集ウィンドウ内の命令表現を調整することを含む。ウィンドウ間自動スクロール動作は、ウィンドウ間自動スクロール関連付けに基づく。ウィンドウ間自動スクロール関連付けは、上述且つ／又は後述するように確立し得る。
【００６６】
図１１は、図１０のルーチンの部分の一実施形態を示す流れ図９２８’である。特に、図１１は、該当するウィンドウ内の対応する要素を識別するために使用し得るように、ウィンドウ間自動スクロール関連付けを定義し記録するために使用可能な動作の一実施形態を示す。
【００６７】
ブロック９２８’Ａにおいて、結果ウィンドウ内の各第１の結果セットの少なくとも１つのメンバに関連付けて、少なくとも各第１の結果識別子を自動的に定義して記録し、各第１の結果識別子は、各第１の結果セットの少なくとも１つのメンバに対して一意である。
【００６８】
ブロック９２８’Ｂにおいて、以下のうちの少なくとも１つが自動的に定義され記録される。
ａ）少なくとも各第１のパートプログラム命令識別子が少なくとも１つのメンバに対して一意である、各第１の記録パートプログラム命令セットの少なくとも１つのメンバに関連付けて、少なくとも各第１のパートプログラム命令識別子及び
ｂ）少なくとも各第１の命令表現識別子が少なくとも１つのメンバに対して一意である、編集ウィンドウ内の各第１のパートプログラム命令表現セットの少なくとも１つのメンバに関連付けて、少なくとも各第１の命令表現識別子。
【００６９】
ブロック９２８’Ｃにおいて、少なくとも各第１の結果識別子と、以下のうちの少なくとも一方との関連付けを自動的に定義して記録する。
ａ）少なくとも各第１のパートプログラム命令識別子及び
ｂ）少なくとも各第１の命令表現識別子。
【００７０】
換言すれば、図１０のブロック９２８を参照して上述した原理に従い、定義され記録される関連付けは、結果ウィンドウ内の特定の結果セットの識別子と、実行されると、結果ウィンドウ内の各第１の結果セットを生成する対応するパートプログラム命令セットの識別子との関連付けである。一実施形態では、識別子は、図８を参照して上述したように実施し得る。
【００７１】
上述したように、結果ウィンドウ、及び／又はクライアントウィンドウ、及び／又はパートプログラム表現ウィンドウ（すなわち、編集ウィンドウ）は、表示要素を生成するときに、各自の要素識別子を生成し、この情報をウィンドウ間自動スクロール部に渡し得、ウィンドウ間自動スクロール部は、記憶された識別子の関連付け表等内の様々な識別子の関連付けを形成し得る。いくつかの実施形態では、パートプログラム命令表現内のパートプログラム命令をマシンビジョン検査システム制御ソフトウェアの単一のアプリケーション又はサブルーチン内で処理し得、それにより、パートプログラム命令又は対応するパートプログラム命令表現を、これらの要素のいずれかに関連してウィンドウ間自動スクロール部が使用可能な単一の識別子により表し得ることを理解されたい。したがって、いくつかの実施形態では、結果が関連付けられた識別子と、対応するパートプログラム命令が関連付けられた識別子とは、同じ識別子であってもよく、ブロック９２８’Ｃを参照して上述した関連付け動作は、単に同じ識別子を使用して、様々なウィンドウ内の対応する要素を識別することにより達成される。
【００７２】
図１２は、図９及び／又は図１０のルーチンの部分の一実施形態を示す流れ図１２００である。特に、図１２は、ブロック９３０及び／又は９３０’の動作を実施するために使用可能な動作の一実施形態を示す。
【００７３】
判断ブロック１２１０において、各結果が（例えば、ユーザがユーザインタフェースを通して結果を選択することにより）結果ウィンドウで選択されたか否かが判断される。各結果が結果ウィンドウ内で選択されていない場合、ルーチンはブロック１２２０に続き、ブロック１２２０において、結果ウィンドウが選択イベントに関して監視され、ルーチンは判断ブロック１２１０に戻る。各結果が結果ウィンドウ内で選択されている場合、ルーチンはブロック１２３０に続く。
【００７４】
ブロック１２３０において、選択された各結果に関連付けられた対応する各結果識別子が識別される。
【００７５】
ブロック１２４０において、各結果識別子に関連付けられた各パートプログラム命令（ＰＰＩ）及び／又は各ＰＰＩ識別子が識別される。一実施形態では、これは、各結果識別子に関連付けられた各パートプログラム命令表現識別子を識別し、次に、各パートプログラム命令表現の土台をなすパートプログラム命令（ＰＰＩ）を識別する中間ステップを通して達成し得る。
【００７６】
判断ブロック１２５０において、各結果識別子に関連付けられた各ＰＰＩ及び／又はＰＰＩ識別子に対応する命令表現が、パートプログラム表現ウィンドウ内で可視であるか否かが判断される。各結果識別子に関連付けられた各ＰＰＩ及び／又はＰＰＩ識別子に対応する命令表現が、パートプログラム表現ウィンドウ内で可視である場合、ルーチンはブロック１２７０に続く。各結果識別子に関連付けられた各ＰＰＩ及び／又はＰＰＩ識別子に対応する命令表現が、パートプログラム表現ウィンドウ内で可視ではない場合、ルーチンはブロック１２６０に続く。
【００７７】
ブロック１２６０において、各結果識別子に関連付けられた各ＰＰＩ及び／又はＰＰＩ識別子に対応する少なくとも１つの命令表現が、パートプログラム表現ウィンドウ内で可視であるように、パートプログラム表現ウィンドウ内の命令表現が調整される。
【００７８】
ブロック１２７０において、ユーザインタフェース内で各ＰＰＩ及び／又はＰＰＩ識別子に対応する命令表現がインジケータでマークされて、結果ウィンドウ内でユーザにより選択された各結果に対応する、編集ウィンドウ内の少なくとも１つの命令表現を示す。
【００７９】
図１３は、プログラム編集環境を動作させる追加のルーチン及び／又は代替のルーチンの一実施形態を示す。特に、図１３は、編集ウィンドウ内の選択イベントが、結果ウィンドウ内の対応する結果の識別を始動させる動作の一実施形態を示す。
【００８０】
判断ブロック１３１０において、パートプログラム命令（ＰＰＩ）表現が、パートプログラム表現ウィンドウ内で選択されたか否かが判断される。ＰＰＩ表現がパートプログラム表現ウィンドウ内で選択された場合、ルーチンはブロック１３２０に続き、ブロック１３２０において、選択イベントに関してパートプログラム表現ウィンドウが監視され、ルーチンは判断ブロック１３１０に戻る。ＰＰＩ表現が編集ウィンドウで選択された場合、ルーチンはブロック１３３０に続く。
【００８１】
ブロック１３３０において、選択された各ＰＰＩ表現に関連付けられた各パートプログラム命令及び／又は各ＰＰＩ識別子が識別される。
【００８２】
ブロック１３４０において、各ＰＰＩ及び／又は各ＰＰＩ識別子に関連付けられた対応する各結果識別子が識別される。
【００８３】
判断ブロック１３５０において、対応する各結果識別子により識別される結果が結果ウィンドウ内で可視であるか否かが判断される。対応する各結果識別子により識別される結果が結果ウィンドウ内で可視である場合、ルーチンはブロック１３７０に続く。対応する各結果識別子により識別される結果が結果ウィンドウ内で可視ではない場合、ルーチンはブロック１３６０に続く。
【００８４】
ブロック１３６０において、対応する各結果識別子により識別される結果が結果ウィンドウ内で可視であるように、結果ウィンドウ内で結果が調整される。
【００８５】
ブロック１３７０において、ユーザインタフェースでその結果をインジケータにマークして、パートプログラム表現ウィンドウ内でユーザにより選択される各ＰＰＩ表現に対応する、結果ウィンドウ内の少なくとも１つの結果を示す。
【００８６】
図４〜図８は、カメラ２６０により撮像されるマシンビジョン検査システム１００の視野を表示するとともに、参照のために、ユーザにより定義され、記録される際、ボックスツール関心領域（例えば、ボックスツール命令表現４２２Ａに対応するボックスツール４８２及びボックスツール命令表現４２１Ａに対応するボックスツール４８１）が現れる位置を破線の輪郭で概略的に表示する視野表示４８０を示す。いくつかの実施形態では、視野表示４８０が、本明細書に上述された様式と同様にして、パートプログラム表現ウィンドウ（及び／又は他のウィンドウ）内で選択又は強調表示された要素に対応する要素を表示するように同期されたウィンドウとして挙動し得ることを理解されたい。すなわち、パートプログラム命令表現（例えば、ボックスツール命令表現）が編集ウィンドウ内で選択された場合、視野表示４８０は、その命令の定義に最初に使用された対応するワークピース要素を表示し得る。
【００８７】
いくつかの実施形態では、表示画像は、呼び出された保存画像であり得る。前に参照された２３２号出願には、学習モードでのパートプログラム命令の実行後、「代理データ」が保存される編集部動作が開示されている。そのような代理データは、対応するパートプログラム命令表現（例えば、ボックスツール命令表現）が編集ウィンドウ内で選択される場合（すなわち、その画像内のワークピース要素が最初に、その命令の定義に使用された場合）、視野表示４８０内に表示し得るように保存されたワークピース画像を含み得る。或いは、代理データは、物理的な位置、レンズ構成、及び照明等を特定して、命令を最初に定義する場合に使用される画像取得状況及び画像の実際の複製を加速化する手段を提供し得る。２３２号出願に記載のように、この手順は、そのワークピース要素の新しい画像を取得するために、実際のビジョンマシン構成要素の調整が必要な場合とは対照的に、かなりの時間を節約するとともに、衝突の危険性を回避し得る。より一般的には、２３２号出願に記載される編集部動作は、有利には、本明細書に開示される様々な実施形態と組み合わせて使用して、本明細書に記載される自動スクロール動作が実行された後、適切な場合、代理データ実行により、又は実際モード実行により、又は両方の組み合わせにより、適切なプログラム編集コンテキストを提供し得る。したがって、２３２号出願の部分が、容易な参照及び理解のために、図１４〜図１９と共に以下に含まれる。２３２号出願及び他の参照された文献から、さらなる理解を得ることができる。
【００８８】
図１４は、図２の編集部１６０の追加の構成要素を示すブロック図である。図１４に示されるように、編集部１６０は、編集動作コントローラ１７４と、編集ユーザインタフェース部１７６と、エディタコマンド部１７７と、編集実行部１７８とを含む。編集動作コントローラ１７４は、編集機能の動作を制御し、編集ユーザインタフェース部１７６は、ユーザインタフェース機能を編集機能に提供する。編集ユーザインタフェース部１７６はプログラム表現ウィンドウ部１７６ｐｉを含み、このウィンドウ部１７６ｐｉは表現ユーザインタフェース機能１７６ｒを含み、表現ユーザインタフェース機能１７６ｒはノードユーザインタフェース機能１７６ｎを含む。プログラム表現ウィンドウ部１７６ｐｉは、図１５に関してより詳細に後述するように、パートプログラム命令表現を含むパートプログラム表現を提供する。一実施形態では、パートプログラム表現はツリー構造で提供し得る。表現ユーザインタフェース機能１７６Ｒは、コンテキストの状態及びコンテキストがどのように得られたか（例えば、コンテキストが代理データから生成されたか、それとも実際の実行により得られたか等）に応じて色を変更し得る挿入ポインタ等の機能を提供する。ノードユーザインタフェース機能１７６Ｎに関して、一実施形態では、これらはアイコン又はブロークンアイコン（broken icon）等の機能及び色強調表示を含み、ノードがアクティブであるか否か等を示し得る。
【００８９】
編集実行部１７８は、編集プロセス中の様々な実行モードを担当し、代理モード部１８０と、実際モード部１９１と、編集実行ユーザインタフェース機能部１９２とを含む。代理モード部１８０はノード解析器１８１を含み、ノード解析器１８１は代理データ動作１８１Ａと、マシン動作１８１Ｂとを含む。より詳細に後述するように、代理モード部１８０が代理実行モードを動作させる場合、本発明によれば、代理データを利用して、継続する編集動作のコンテキストを生成する。ノード解析器１８１は、一実施態様では、パートプログラムの実行が標的ノード（例えば、パートプログラム内の変更を行うべき箇所）に達したか否かを判断する。ノード解析器１８１は、関わるノードの種類に従って、実行されるのが代理データ動作１８１Ａであるか、それとも実際マシン動作１８１Ｂであるかを判断する。一般に、標的ノードに達すると、実際マシン動作が実行され、標的ノード前のパートプログラム命令では、代理データ動作を利用して、継続する編集動作に必要なコンテキストのうちの少なくともいくつかを生成し得る。代理データが見当たらない場合、必要なコンテキストを生成するために実際マシン動作を許可／実行するようにユーザを促し得る。一実施態様では、各ノードを解析して、代理データが存在するか否か、代理データ動作に正しい種類のノードであるか否かを含め、代理データ動作を適用可能か否か、代替として、実際マシン動作を利用する必要があるか否かを判断する。
【００９０】
実際モード部１９１は、より従来的に従来のマシンビジョンシステムにより実行される動作を含む。適切な場合、マシン動作１８１Ｂの実行のために、代理モード部１８０が実際モード部１９１を呼び出すこともできることが理解されよう。実際モード部１９１は、マシン動作１９１Ａと、データ動作１９１Ｂとを含む。マシン動作１９１Ａは、実際マシン動作を実行し（例えば、ビデオツール動作の一環としてステージを移動させ）、その一方で、データ動作１９１Ｂは一般にデータを出力する。編集実行ユーザインタフェース機能１９２は、ユーザインタフェース機能を編集機能の実行のために提供する（例えば、パートプログラムのどの部分が代理データを利用したか、又は実際の実行を通して実行されたか等を示す色分け等の、様々な実行動作の状態についての表示）。
【００９１】
エディタコマンド１７７は、２３２号出願に詳述される実行セグメント部１７７Ａと、変更部１７７Ｂと、挿入／添付部１７７Ｃとを含む。一般に、実行セグメント部１７７Ａは、パートプログラムの選択されたセグメントの実際の実行を行う。パートプログラムの選択されたセグメントを実行するために、選択されたセグメントまでの適切なコンテキストを確立しなければならないことが理解されよう。より詳細に後述するように、本発明によれば、代理データを利用することにより、適切なコンテキストを確立し得る。代理データが、パートプログラムの特定の部分に存在しない場合、セグメントを実行して、必要な代理データを生成し得る。従来のマシンビジョンシステムでは、選択されたセグメントまで繋がる適切なコンテキストの必要性により、パートプログラムの先行部分のすべてを実行せずにパートプログラムの分離されたセグメントを実行することが困難であったことが理解されよう。例えば、セグメントがステージの下降を必要とするが、システムがステージの現在のＸ−Ｙ−Ｚ位置を認識しなかった場合、未知の位置へのステージの下降は勧められるものではないことがある。したがって、従来の実施態様では、通常利用される技法では、中間にあるセグメントの実行を可能にするには、パートプログラム全体を最初から実行し、先行するすべての動作の実行には大量の時間が必要とされ得る。対照的に、本発明によれば、代理データを利用して、編集に適切なコンテキストを確立し得、又は最初からパートプログラム全体を実行する必要なく、パートプログラムのセグメントを実行し得る。
【００９２】
変更部１７７Ｂは、実行セグメント部１７７Ａの動作と特定の類似性を有する。一般に、パートプログラム内の命令表現が変更に選択される場合、代理モードを、変更すべき命令に先行するパートプログラムの部分に利用し得る。一実施形態では、変更コマンドが、パートプログラム内の命令表現に選択される場合、その命令表現のノードが標的ノードとして指定される。標的ノードに達すると、エディタは代理モードからリアル実行モードに切り替わり（例えば、実際モード部１９１により制御される）、ノードの第１の関連するパートプログラム命令を実行する。一実施形態では、変更に選択される命令が、子ノードに対応する場合、実際の実行は親ノードで開始されるように指定し得る。特定の一実施形態例では、ボックスツールに関連する子ノードを変更すべき場合、ボックスツールの画像取得のセットアップを含む親ノードは、実際の実行が開始されるべく設定されるノードであり得る。挿入／追加構成要素１７７Ｃに関して、挿入が子ノード間である場合、所望の挿入を実行するために、親ノードを実行する必要もあり得る。特定の実施態様では、追加動作は一般に、既存のパートプログラムの末尾で行われる挿入動作の特殊な場合であると見なし得ることが理解されよう。
【００９３】
図１５は、複数の初期パートプログラム命令表現１５５１〜１５６４を有するパートプログラム１５１０の表現を含む編集インタフェース１５００の図である。編集インタフェース１５００は、選択バー１５２０等の様々な測定及び／又は動作選択バーも含む。パートプログラム表現１５１０の特定の命令表現の動作については図１６に関してより詳細に後述する。
【００９４】
図１６は、図１５に対応するパートプログラムが実行されたワークピース１６１５を有する視野ウィンドウ１６１０の画像を含むユーザインタフェース１６００を示す図である。ユーザインタフェース１６００は、選択バー１６２０及び１６４０、リアルタイムＸ−Ｙ−Ｚ（位置）座標ウィンドウ１６３０、光制御ウィンドウ１６５０、並びにビデオツールパラメータボックス１６６０等の様々な測定及び／又は動作選択バーも含む。より詳細に後述するように、ワークピース１６１５の様々な要素は、エッジ点集合ＰＴＸ、ＰＴＹ、ＰＴ３、及びＰＴ４、ラインＸＬＩＮＥ、ＹＬＩＮＥ、Ｌ３、及びＬ４、原点ＸＹＯＲＩＧＩＮ、並びに交点Ｉ２等の図１５の関連するパートプログラム命令表現に従って特定される。
【００９５】
以下の説明では、図１５の初期パートプログラム命令表現３５１〜３６４と、図１６のワークピース１６１５上の対応する要素との両方を参照する。一実施形態では、各命令表現３５１〜３６４にはノードが関連付けられ、ノード番号又は識別子が割り当てられる。特定の実施態様では、ツリー構造が利用され、命令表現によっては親ノードが関連付けられるものもあれば、子ノードが関連付けられるものもある。例えば、子ノード命令表現１５５１Ａ〜１５５１Ｄ、１５５３Ａ〜１５５３Ｃ、１５５４Ａ〜１５５４Ｂ、１５６１Ａ〜１５６１Ｃ、及び１５６２Ａ〜１５６２Ｂのそれぞれには、親ノード命令表現１５５１、１５５３、１５５４、１５６１、及び１５６２が関連付けられる。一実施形態では、編集インタフェース１５００に表示される命令表現１５５１〜１５６４が、パートプログラムのマークアップ言語命令から導出されるアイコン及びラベルを含むことも理解されよう。一実施形態では、パートプログラムのマークアップ言語は、ＸＭＬ準拠コードを含み得る。したがって、命令表現１５５１〜１５６４は、図１７Ａ及び図１７Ｂに関してより詳細に後述するように、実行される関連付けられたコード命令を指す。
【００９６】
図１５に示されるように、パートプログラム表現１５１０は、命令表現１５５１及び１５５２で開始され、命令表現１５５１及び１５５２は、ユーザが手動で、大まかな原点ＲＯＰ（図示せず）として動作するワークピース１６１５上の位置を選択し、次に、原点を大まかな原点ＲＯＰに位置合わせすることを示す。より具体的には、命令表現１５５１Ａ、１５５１Ｂ、１５５１Ｃ、及び１５５１Ｄは、ユーザが手動ツールをセットアップして利用し、大まかな原点ＲＯＰを定義することを示し、命令表現１５５２は、原点を大まかな原点ＲＯＰに位置合わせする。次に、命令表現１５５３は、ボックスツールがラインＸＬＩＮＥの測定のために開かれることを示す。より具体的には、命令表現１５５３Ａ及び１５５３Ｂは、ユーザがボックスツールをセットアップして（例えば、ステージを指定された位置に移動させ、対応する画像を取得することを含む）利用し、エッジ点ＰＴＸを特定することを示す。ボックスツール及び他のエッジ検出ビデオツールの機能及び動作は、当分野で既知であり、前に参照された文献においてより詳細に説明されている。次に、命令表現１５５３Ｃはボックスツールにより特定されたエッジ点ＰＴＸを利用して、ラインＸＬＩＮＥを定義する。同様に、命令表現１５５４は、ボックスツールがラインＹＬＩＮＥを測定するために開かれることを示し、命令表現１５５４Ａは、ユーザがボックスツールを利用してエッジ点ＰＴＹを特定することを示し、次に、命令表現１５５４Ｂにより示されるように、エッジ点ＰＴＹを利用して、ラインＹＩＬＩＮＥが定義される。
【００９７】
次に、命令表現１５５５は、交点ＸＹＯＲＩＧＩＮが、ラインＸＬＩＮＥとＹＬＩＮＥとの交点において特定されることを示す。次に、命令表現１５５６は、マシンビジョンシステムが、原点を点ＸＹＯＲＩＧＩＮに位置合わせするよう命令されることを示す。次に、命令表現１５５７は、マシンビジョンシステムが、ワークピース１６１５のＸ軸をラインＸＬＩＮＥに位置合わせするよう命令されることを示す。図５Ａ及び図５Ｂに関してより詳細に後述するように、且つコメントライン１５５８に示されるように、命令表現１５５１〜１５５７の動作は、追加の測定を実行するためのワークピース１６１５の正確な位置及び向きを確立する。
【００９８】
次に、命令表現１５６１は、ボックスツールがラインＬ３を測定するために開かれることを示す。より具体的には、命令表現１５６１Ａ及び１５６１Ｂは、ユーザがボックスツールをセットアップして（例えば、指定された位置までステージを移動させ、対応する画像を取得することを含む）利用し、エッジ点ＰＴ３を特定することを示し、次に、命令表現１５６１Ｃに示されるように、エッジ点ＰＴ３を利用して、ラインＬ３が定義される。より詳細に後述するように、ラインＬ３の測定に利用されるボックスツール（すなわち、図１６においてボックスツール１６７０として示される）及び関連付けられた命令表現１５６１及び１５６１Ａ〜１５６１Ｃは、図１７Ａ及び図１７Ｂ並びに図９〜図１１Ｂにおいて、代理データがどのようにして生成され、記憶され、変更されるかを示す例として利用される。
【００９９】
図１５に戻ると、命令表現１５６２は、ボックスツールがラインＬ４の測定のために開かれることを示し、命令表現１５６２Ａは、ユーザがボックスツールを利用してエッジ点ＰＴ４を特定し、次に、命令表現１５６２Ｂに示されるように、エッジ点ＰＴ４を利用してラインＬ４を定義する。命令表現１５６３は、ユーザが選択された位置許容差を定義することを示し、命令表現１５６４は、前に特定されたＬ３とＬ４とが交わる交点Ｉ２が特定されることを示す。
【０１００】
表現１５１０に対応するパートプログラムが記憶され、終了した後、パートプログラムが編集に呼び出された場合、従来の実施態様では、パートプログラムへの継続した編集に有効なコンテキストを生成するために、パートプログラム全体を最初から実行する必要があった。従来の実施態様は、パートプログラムが編集のために呼び出される都度、命令全体を実行することにより、正確な結果及びパートプログラムを生成したが、すべての命令の実行には大量の時間がかかり得る（特に、ハードウェア対話の特定の時間のかかるプロセスを要する命令等）。より詳細に後述するように、本発明によれば、最初からパートプログラム全体を実行するのではなく、前に保存されたデータを代理データとして使用して、パートプログラムへの継続した編集に有効なコンテキストをシミュレートし得る。
【０１０１】
換言すれば、一実施形態では、継続する編集がパートプログラムに対して行われており、ワークピース１６１５の測定を行っている場合、特定のパラメータを知ることが有用である。例えば、ビデオツールの正確な閾値、サイズ、及び位置を知るには、正確なステージ位置、光レベル、倍率等の情報を含む正確なビデオ画像を有する必要がある。一実施形態では、そのような情報は「ハードウェアコンテキスト」の部分であると見なすことができる。さらに、パートプログラムへの継続する編集に対してシーケンスが正確であるか否かを知るために、どの要素が測定されたか、どの部分座標系が利用されているか等を含め、何がすでに行われたかを知ることが有用である。一実施形態では、この情報はソフトウェアコンテキストの部分として見なすことができる。一実施形態では、コンテキストは一般に、固有のインタフェース制御要素がすべて、パートプログラムを変更する準備ができた状態にあるマシンビジョン検査システムのユーザインタフェースを確立することと見なされる。上述したように、正確なコンテキストは、すべてのパートプログラム命令（例えば、表現１５５１〜１５６４に対応する）が一般に順に実行されるという点で、パートプログラムが最初に記録されたとき、及び後の実行時でも提供される。上述したように、これは、パートプログラムによりすでに生成されたあらゆる測定及び結果の表示（例えば、ユーザインタフェース１６００内にワークピース４１５に関して示されるように、ラインＸＬＩＮＥ、ＹＬＩＮＥ、Ｌ３、Ｌ４、並びに交点ＸＹＯＲＩＧＩＮ及びＩ２の表示）を含め、パートプログラムへの継続した編集に有効なコンテキストを提供する。
【０１０２】
より詳細に後述するように、パートプログラム編集時、必要なコンテキストを生成するために、パートプログラムのすべての命令表現を実行する必要はなく、前に保存されたデータを代理データとして使用することにより、特定のコンテキストをシミュレートすることができる。簡単に言えば、パートプログラムの記録又はランタイム実行中、コンテキストの特定に必要なデータがパートプログラムと共に記憶される。次に、保存されたデータを代理データとして利用して、特定の結果をシミュレートし、所望のコンテキストを生成し得る。したがって、特定の時間のかかる動作（例えば、ステージの移動、エッジの検出、フォーカス、照明変更、パターンマッチング等のハードウェア対話が必要な動作）の実行を回避することにより、大きな時間節約を達成し得る。後に代理データとして利用し得るデータの保存については、図１７Ａ及び図１７Ｂに関してより詳細に後述する。
【０１０３】
図１７Ａ及び図１７Ｂは、図１５の命令表現のうちのいくつかに対応するパートプログラムのマークアップ言語コード命令の図である。図１７Ａ及び図１７Ｂは、図１５のパートプログラム表現の命令表現のうちのいくつかに対応するマークアップ言語コード命令の図１７００Ａ及び図１７００Ｂである。より具体的には、図１７Ａ及び図１７Ｂは、ラインＬ３を測定する図１５の命令表現１５６１及び１５６１Ａ〜１５６１Ｃに対応するＸＭＬ準拠コードでのパートプログラム命令を示す。一実施形態では、命令表現１５６１及び１５６１Ａ〜１５６１Ｃが、図１７Ａ及び図１７ＢのＸＭＬ準拠コード命令から導出されるアイコン及びラベルを含むことが理解されよう。命令表現１５６１及び１５６１Ａ〜１５６１Ｃはそれ自体は実行されないが、その代わり、実行される図１７Ａ及び図１７Ｂの関連付けられたコード命令を指す。
【０１０４】
図１７Ａ及び図１７Ｂに示されるように、ＸＭＬ準拠コード命令は、ノードＩＤ番号１７６１、１７６１Ａ、１７６１Ｂ、及び１７６１Ｃを含み、一実施形態では、これらノードＩＤ番号は、図１５の命令表現１５６１、１５６１Ａ、１５６１Ｂ、及び１５６１Ｃに対応し得る。ＸＭＬ準拠コード命令は、図１６のユーザインタフェース１６００のエリア１６３０及び１６６０に表示し得るような、画像位置の特定の位置情報１７１０と、ボックスツールの特定のボックスツール位置情報１７２０とも含む。図１７Ｂに示されるように、データ１７３０はパートプログラムと共に記憶され、後に、コンテキストをシミュレートする代理データとして利用し得る。より具体的には、図１５の命令表現１５６１Ｂが、図１６のボックスツール１６７０が実行されて、エッジ点集合ＰＴ３を特定することを示す場合、ワークピースの部分座標系に対するエッジ点集合ＰＴ３の位置が、データ１７３０としてＸＭＬ準拠コード命令で記憶される。パートプログラムに変更を行うことができ、これにより、代理データ１７３０も変更され得る。
【０１０５】
図１８Ａ及び図１８Ｂは、リアルタイムコンテキスト生成機能を含むマシンビジョンシステムプログラム編集環境を提供するルーチン１８００の一実施形態を示す流れ図である。図１８Ａに示されるように、ブロック１８１０において、実行モードが提供され、実行モードは、実行の実行モードを使用して、前に作成されたパートプログラムを実行するように動作可能なように構成される。ブロック１８２０において、学習モードが提供され、学習モードは、マシンビジョン検査システムの動作を制御すべくユーザ入力を受け取り、被制御動作に対応する関連付けられたパートプログラム命令を記録して、パートプログラムを作成するように動作可能なように構成される。さらに、学習モードは、パートプログラム命令の編集可能パートプログラム表現を含む編集ユーザインタフェースを含むようになされ、パートプログラム表現は命令表現を含む。ブロック１８３０において、編集部が提供され、編集部は、パートプログラムを編集するように動作可能なように構成される。さらに、編集部は、実行の実行モードとは異なる実行の編集モードに従って、前に記録されたパートプログラム命令を実行するように動作可能な編集実行部を備える。図１８Ｂに関してより詳細に後述するように、ブロック１８３０から、ルーチンはポイントＡに続く。
【０１０６】
図１８Ｂに示されるように、ポイントＡから、ルーチンはブロック１８４０に続く。ブロック１８４０において、学習モードは、各記録パートプログラム命令セットに関連付けられた各代理データを自動的に記録するようにさらに動作可能なように構成される。さらに、少なくともいくつかの各代理データは、関連付けられた各記録パートプログラム命令セットに対応する被制御動作の実際の実行から生じるデータを含む。
【０１０７】
ブロック１８５０において、実行の編集モードは、代理実行モードを含むように構成され、編集可能パートプログラム表現で表現されるパートプログラム命令の代理実行モード中、パートプログラム命令の少なくとも１つのセットに対して、各代理データがそのパートプログラム命令セットに関連して前に記録されていた場合、そのパートプログラム命令セットのうちの少なくともいくつかのメンバは実行されず、それにより、それらに関連付けられた被制御動作は実際に実行されない。さらに、各代理データが、代理実行モードの続く動作で、実行されない関連付けられた被制御動作から生じるであろうデータの代替として使用される。
【０１０８】
図１９は、代理実行モードを実行して、パートプログラム命令表現、要素、又はノードにより示されるパートプログラム位置において有効編集コンテキストを提供するルーチン１９００の一実施形態を示す流れ図である。ブロック１９１０において、代理実行モードが有効なコンテキスト位置で開始される。
【０１０９】
ブロック１９２０において、ルーチンは現在ノードとして次のノードに続く。判断ブロック１９３０において、現在ノードが編集コマンドの標的ノードであるか否かが判断される。現在ノードが編集コマンドの標的ノードである場合、ルーチンはブロック１９４０に続き、ブロック１９４０において、リアル実行モードが現在ノードで開始され、その後、より詳細に後述するように、ルーチンは判断ブロック１９９５に続く。しかし、一実施態様では、標的ノードは、命令表現が関連付けられた親ノードであるとみなすことができ、実際の実行モードを親ノードで開始し得、それにより、命令表現に対応する測定の物理的なセットアップが実行されて、命令表現の編集に正確な物理的コンテキストが提供される。
【０１１０】
判断ブロック１９３０において、現在ノードが編集コマンドの標的ノードではないと判断される場合、ルーチンは判断ブロック１９５０に続き、判断ブロック１９５０において、現在ノードが物理的なシステム変更を無条件に必要とするか否かが判断される。例えば、ノードがステージを移動させて、ワークピースの新しい部分を撮像する場合（例えば、単純な「移動」コマンド等を介して）、いくつかの実施形態では、これは物理的なシステム変更を無条件に必要とし得る。同様に、特定の倍率変更も物理的なシステムの無条件な変更であり、以下同様である。しかし、いくつかの実施形態では、そのような変更が代理データにすでに関連付けられた親ノード内に埋め込まれ、続くノードが再び同様の物理的な変更を必要とする（例えば、移動又は倍率の変更のそれぞれ）場合、最終的に同様の後続命令が優先されるため、無条件に必要とされないことがあることが理解されよう。現在ノードが物理的なシステム変更を無条件に必要とするか否かを解析する様々な方法を、本開示の教示に基づいて当業者により決定し得る。いずれの場合でも、現在ノードが物理的なシステム変更を無条件で必要とする場合、ルーチンはブロック１９４０に続く。現在ノードが物理的なシステム変更を無条件には必要としない場合、ルーチンは判断ブロック１９６０に続く。
【０１１１】
判断ブロック１９６０において、現在ノードが結果データを提供するか否かが判断される。現在ノードが結果データを提供する場合、より詳細に後述するように、ルーチンは判断ブロック１９８０に続く。現在ノードが結果データを提供しない場合、ルーチンはブロック１９７０に続き、ブロック１９７０において、ノードが代理実行モードで実行され、その後、より詳細に後述するように、ルーチンはブロック１９９５に続く。
【０１１２】
判断ブロック１９８０において、現在ノードに代理データが存在するか否かが判断される。現在ノードに代理データが存在する場合、より詳細に後述するように、ルーチンはブロック１９９０に続く。現在ノードに代理データが存在しない場合、ルーチンはブロック１９４０に続く。
【０１１３】
ブロック１９９０において、ノードは代理実行モードで実行される。代理実行モードでは、代理データが、現在ノードに対応するパートプログラム命令セットのうちの少なくともいくつかのメンバに関連付けられた制御動作の実行から生じるであろうデータに対する代替として使用され、パートプログラム命令セットのそれらのメンバはスキップされ、関連付けられた制御動作は実際に実行されない。
【０１１４】
次に、ルーチンは判断ブロック１９９５に続き、判断ブロック１９９５において、代理実行モードで実行する別のノードがあるか否かが判断される。代理実行モードで実行する別のノードがある場合、ルーチンはブロック１９２０に戻り、ない場合、ルーチンは終了する。例えば、標的ノード並びに実行ブロック１９３０及び１９４０に達することにより、実行が判断ブロック１９９５に達した場合、時には、コンテキストはすでに、標的ノードでの編集又は標的ノード内での編集のために確立していることがあり得るため、代理実行モードで実行する別のノードがないであろう。
【０１１５】
本発明の様々な好ましい例示的な実施形態を図示し説明したが、本発明の趣旨及び範囲から逸脱せずに、様々な変更を実施形態に行い得ることが理解されよう。
【図１】
2013117953.tif 000003
【図２】
2013117953.tif 000004
【図３】
2013117953.tif 000005
【図４】
2013117953.tif 000006
【図５】
2013117953.tif 000007
【図６】
2013117953.tif 000008
【図７】
2013117953.tif 000009
【図８】
2013117953.tif 000010
【図９】
2013117953.tif 000011
【図１０】
2013117953.tif 000012
【図１１】
2013117953.tif 000013
【図１２】
2013117953.tif 000014
【図１３】
2013117953.tif 000015
【図１４】
2013117953.tif 000016
【図１５】
2013117953.tif 000017
【図１６】
2013117953.tif 000018
【図１７Ａ】
2013117953.tif 000019
【図１７Ｂ】
2013117953.tif 000020
【図１８Ａ】
2013117953.tif 000021
【図１８Ｂ】
2013117953.tif 000022
【図１９】
2013117953.tif 000023
【外国語明細書】
2013117953000001.pdf