(57)【要約】      （修正有）【課題】マシンビジョン検査システムにおけるステップ・アンド・リピート動作命令編集のためのシステム、ＧＵＩおよび方法を提供する。【解決手段】この方法は以下：ａ）定義されたステップ・アンド・リピート・プログラミング要素を変換してステップ・アンド・リピート要素の反復動作ブロックの独立に編集可能な実質的な複製を含むＮ個の独立編集可能なコードブロックを生成することであって、コードブロックのそれぞれは、ステップ・アンド・リピート位置に対応するそれぞれの位置において実行されること、ｂ）コードブロックを編集ＧＵＩに表示すること、およびｃ）編集可能な要素としての定義されたステップ・アンド・リピート・プログラミング要素を削除することを含む。定義されたステップ・アンド・リピート・プログラミング要素は、編集ＧＵＩに表示され、変換動作は、ステップ・アンド・リピート変換コマンドをユーザが起動することにより開始される。【選択図】図２Ａ
2014219415.tif 000002
【特許請求の範囲】
【請求項１】
撮像部、１つまたは複数のワークピースを前記撮像部の視野中に保持するステージ、制御部、およびグラフィカル・ユーザ・インタフェース（ＧＵＩ）を含むマシンビジョン検査システムであって、
実行モードでの実行に従って、以前に作成されたパートプログラムを実行してワークピースの自動撮像および／または検査動作を実行することができるように構成される実行モードと、
パートプログラムを作成するために、前記マシンビジョン検査システムの動作を制御するユーザ入力を受け取り、かつ、当該制御動作に対応する関連パートプログラム命令を記録することができるように構成される学習モードと、
前記学習モードにおいてパートプログラム命令を編集することができる編集部であって、前記ＧＵＩに表示可能な編集インタフェース部を含む編集部と、
前記学習モードにおいてパートプログラム中にステップ・アンド・リピート・プログラミング要素を生成及び定義することができるように構成されるステップ・アンド・リピート・ループ・ジェネレータであって、前記マシンビジョン検査システムにおいてワークピース要素の配列中に定義されたＮ個の位置においてＮ回実行される検査命令の反復動作ブロックを定義するステップ・アンド・リピート・プログラミング要素を生成及び定義するステップ・アンド・リピート・ループ・ジェネレータと、
定義されたステップ・アンド・リピート・プログラミング要素を対象とするステップ・アンド・リピート変換動作を行うことができるように構成されるステップ・アンド・リピート・ループ・コンバータと、を備え、
前記ステップ・アンド・リピート変換動作は、
定義された前記ステップ・アンド・リピート・プログラミング要素の前記反復動作ブロック中に定義された前記検査命令を自動的に複製してＮ個の独立編集可能なコードブロックを作成することであって、各前記独立編集可能なコードブロックは、前記反復動作ブロック中に定義された前記検査命令の独立に編集可能な実質的な複製を含み、前記Ｎ個の位置のうちの当該前記独立編集可能なコードブロックが対応する１つの位置においてそれぞれ実行されることと、
前記Ｎ個の独立編集可能なコードブロックの表現を前記ＧＵＩに表示された前記編集インタフェース部に自動的に作成することであって、前記Ｎ個の独立編集可能なコードブロックの表現のそれぞれは、前記反復動作ブロックのその複製されたインスタンスに含まれる動作の編集可能表現を含むことと、
前記ＧＵＩに表示された前記編集インタフェース部において編集可能要素として定義された前記ステップ・アンド・リピート・プログラミング要素を削除することと
を含む
マシンビジョン検査システム。
【請求項２】
前記Ｎ個の独立編集可能コードブロックを作成することは、各独立編集可能コードブロックについて、当該独立編集可能コードブロックを実行する位置をそれぞれ決定する独立編集可能命令を生成することを含む請求項１に記載のシステム。
【請求項３】
前記Ｎ個の独立編集可能コードブロックは、マークアップ言語で書かれたマシン実行可能コード命令および前記ＧＵＩ上に表示され、かつ、それらの対応するコード命令に関連する編集可能命令表現を含む請求項１に記載のシステム。
【請求項４】
前記ＧＵＩに表示できるステップ・アンド・リピート変換コマンドをさらに含み、前記ステップ・アンド・リピート変換コマンドは、前記ステップ・アンド・リピート・ループ・コンバータを起動し、前記定義されたステップ・アンド・リピート・プログラミング要素を対象とする前記ステップ・アンド・リピート変換動作を行うためにユーザにより選択できる請求項１に記載のシステム。
【請求項５】
コンピュータにロードされて前記コンピュータがステップ・アンド・リピート・プログラミング要素中に定義される検査命令の反復動作ブロックのＮ個の独立編集可能インスタンスを生成する方法を実行することを可能にするように構成されるコンピュータ実行可能命令を含むコンピュータ読み取り媒体であって、前記反復動作ブロックはマシンビジョン検査システムにおいてワークピース要素の配列中のＮ個の位置においてＮ回実行されるものとし、Ｎは１より大きい整数とし、前記マシンビジョン検査システムは、撮像部、１つまたは複数のワークピースを前記撮像部の視野中に保持するステージ、制御部、およびグラフィカル・ユーザ・インタフェース（ＧＵＩ）を含んでおり
実行される前記方法は、
前記ＧＵＩの編集インタフェース部に定義された前記ステップ・アンド・リピート・プログラミング要素の表現を表示するステップと、
前記編集インタフェース部を動作させて、定義された前記ステップ・アンド・リピート・プログラミング要素を対象とする変換コマンドを実行するステップと、を含み、、
前記変換コマンドは、
前記ステップ・アンド・リピート・プログラミング要素中に定義された前記反復動作ブロック中に定義された前記検査命令を自動的に複製してＮ個の独立編集可能なコードブロックを作成することであって、各独立編集可能なコードブロックは、前記反復動作ブロック中に定義された前記検査命令の独立に編集可能な実質的な複製を含み、前記Ｎ個の位置のうちの当該独立編集可能なコードブロックが対応する１つの位置においてそれぞれ実行されること、
前記Ｎ個の独立編集可能なコードブロックの表現を前記ＧＵＩの前記編集インタフェース部に自動的に作成することであって、前記Ｎ個の独立編集可能なコードブロックの表現のそれぞれは、前記反復動作ブロックのその複製インスタンスに含まれる前記検査命令の編集可能な表現を含むこと、および
前記ＧＵＩの前記編集インタフェース部において編集可能要素としての定義された前記ステップ・アンド・リピート・プログラミング要素を削除することを含む動作を含むステップとを含む、
コンピュータ読み取り媒体。
【請求項６】
編集可能要素としての定義された前記ステップ・アンド・リピート・プログラミング要素を削除することは、定義された前記ステップ・アンド・リピート・プログラミング要素の表示された前記表現を前記編集インタフェース部から除去することを含む請求項５に記載の媒体。
【請求項７】
前記Ｎ個の独立編集可能なコードブロックを生成することは、各独立編集可能コードブロックについて、当該独立編集可能コードブロックを実行する位置をそれぞれ決定する独立編集可能な命令を生成することを含む請求項５に記載の媒体。
【請求項８】
前記独立編集可能なコードブロックの少なくとも１つについて、当該独立編集可能コードブロックを実行する位置を決定する前記独立編集可能な命令が運動制御命令を含む請求項７に記載の媒体。
【請求項９】
前記方法は、定義された前記ステップ・アンド・リピート・プログラミング要素をａ）前記ＧＵＩを動作させて前記ステップ・アンド・リピート・プログラミング要素を生成し、かつ、その反復動作ブロックおよび前記Ｎ個の位置を定義するそのパラメータを定義すること、およびｂ）定義された前記ステップ・アンド・リピート・プログラミング要素を含む以前に作成されたパートプログラムを開き、以前に作成された前記パートプログラムの表現を前記ＧＵＩの前記編集インタフェース部に表示すること、
のいずれか一つにより提供するステップをさらに含む請求項５に記載の媒体。
【請求項１０】
前記方法は、前記独立編集可能なコードブロックの１つを編集するユーザ編集入力を前記ＧＵＩ経由で与えること、およびその結果の独立編集可能コードブロックを編集された状態でパートプログラム中に記録することをさらに含む請求項５に記載の媒体。
【請求項１１】
前記ユーザ編集入力は、前記独立編集可能なコードブロックのうちの前記１つのブロック中において、命令の追加、命令の削除、および命令の変更の１つまたは複数を含む請求項１０に記載の媒体。
【請求項１２】
前記ユーザ編集入力は、前記独立編集可能なコードブロックのうちの前記１つのブロックの削除を含む請求項１０に記載の媒体。
【請求項１３】
前記独立編集可能なコードブロックのうちの前記１つを編集する前記ユーザ編集入力は、その他の前記独立編集可能なコードブロックに影響を及ぼさない請求項１０に記載の媒体。
【請求項１４】
前記編集インタフェース部を動作させて、定義された前記ステップ・アンド・リピート・プログラミング要素を対象とする前記変換コマンドを実行するステップは、
前記ＧＵＩの前記編集インタフェース部において、定義された前記ステップ・アンド・リピート・プログラミング要素の前記表現を選択すること、
前記ＧＵＩを動作させて、選択された前記表現に対応する複数の編集コマンドを含むメニューを表示すること、および
表示された前記メニューから前記変換コマンドを選択すること
を含む請求項５に記載の媒体。
【請求項１５】
前記Ｎ個の独立編集可能なコードブロックを生成することは、前記独立編集可能なコードブロックのそれぞれについて少なくとも１つの固有ノード識別子および固有コードブロック名を生成することを含む請求項５に記載の媒体。
【請求項１６】
前記Ｎ個の独立編集可能なコードブロックは、マークアップ言語で書かれたマシン実行可能コード命令および前記ＧＵＩ上に表示され、かつ、対応するコード命令に関連する編集可能命令表現を含む請求項５に記載の媒体。
【請求項１７】
前記Ｎ個の独立編集可能なコードブロックの表現のそれぞれは、ノード、親ノード、子ノードの少なくとも１つを含む請求項５に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはマシンビジョン検査システムに関し、より具体的には、かかるシステムのためにプログラムされるステップ・アンド・リピート動作をより多用途の編集可能な形態に変換するためにコンピュータ読み取り可能媒体中に具現化されるシステム、ＧＵＩおよび方法に関する。
【背景技術】
【０００２】
精密マシンビジョン検査システム（または略して「ビジョンシステム」）は、検査対象物の正確な寸法測定値を得るため、および種々のその他の物体特性を検査するために利用できる。かかるシステムは、コンピュータ、カメラ、光学系、および複数の方向に移動して検査対象のワークピースの要素をカメラで走査可能にするワークステージを含むことができる。商業的に入手できる先行技術システムの１つの例は、イリノイ州Aurora,に所在するMitutoyo America Corporation（ＭＡＣ）から入手できるQUICK VISION（登録商標）シリーズのＰＣ利用ビジョンシステムおよびQVPAK（登録商標）ソフトウェアである。QUICK VISION（登録商標）シリーズのビジョンシステムおよびQVPAK（登録商標）ソフトウェアの機能および操作は、たとえば、２００３年１月に発行されたQVPAK 3D CNC Vision Measuring Machine User's Guideおよび１９９６年９月に発行されたQVPAK 3D CNC Vision Measuring Machine Operation Guideにおいて説明されている。このシリーズの製品により、たとえば、顕微鏡型光学システムを使用して様々な倍率のワークピースの画像を提供し、また、必要に応じてステージを移動させて、単一のビデオ画像の撮影範囲を超えてワークピースの表面をスキャンすることが可能である。単一のビデオ画像は、一般的に、かかるシステムの希望倍率、測定解像度、および物理的サイズに限界があり、観察または検査対象のワークピースの一部を取り込むのみである。
【０００３】
マシンビジョン検査システムは、一般的に自動ビデオ検査を利用する。米国特許第６，５４２，１８０号（‘１８０特許）は、かかる自動ビデオ検査の種々の特徴を教示している。‘１８０特許において教示されているように、自動ビデオ検査計測装置は、一般的に、それぞれ特定のワークピース構成について自動検査イベントシーケンスのユーザによる定義を可能にするプログラミング機能を持っている。これは、たとえばテキスト・ベースのプログラミングにより、またはグラフィカル・ユーザ・インタフェース（ＧＵＩ）を用いてユーザにより行われる一連の検査作業に対応する一連の機械制御命令を記憶することにより検査イベントシーケンスを次々に「学習する」記録モードを通じて、または両方の方法の組み合わせにより実現することができる。かかる記録モードは、しばしば、「学習モード」または「訓練モード」といわれる。検査イベントシーケンスが「学習モード」において定義された後、かかるシーケンスを使用して「実行モード」中にワークピースの画像を自動的に取得すること（かつ、続いて解析または検査すること）ができる。
【０００４】
具体的な検査イベントシーケンス（すなわち、各画像を取得する方法および取得した各画像を解析／検査する方法）を含む機械制御命令は、一般的に、特定のワークピース構成に固有の「パートプログラム」または「ワークピース・プログラム」として記憶される。たとえば、パートプログラムは、カメラをワークピースに対して位置決めする方法、照明レベル、倍率レベル等の各画像を取得する方法を定義する。さらに、パートプログラムは、たとえば、エッジ／境界検出ビデオツールのような１つまたは複数のビデオツールを使用することにより、取得した画像を解析／検査する方法を定義する。
【０００５】
検査および／またはその他の機械制御操作のために、ビデオツール（略して「ツール」）およびその他のＧＵＩ機能を手作業により設定することができる。種々のビデオツールにより行われる測定／解析動作を包含する自動検査プログラム、または「パートプログラム」を作成するために、ビデオツールの設定パラメータおよび動作も学習モード中に記録することができる。ビデオツールは、たとえば、エッジ／境界検出ツール、オートフォーカスツール、形状またはパターン照合ツール、寸法測定ツール等を含み得る。その他のＧＵＩ機能は、データ解析、ステップ・アンド・リピート・ループ・プログラミング（たとえば、米国特許第８，２７１，８９５号（‘８９５特許）において開示されているような）等に関するダイアログ・ボックスを含み得る。たとえば、このようなツールおよびＧＵＩ機能は、前述したQUICK VISION（登録商標）シリーズのビジョンシステムおよび関連QVPAK（登録商標）ソフトウェア等の商業的に入手できる種々のマシンビジョン検査システムにおいて通常使用されている。
【０００６】
ステップ・アンド・リピート・プログラミングのために現在利用できる機能およびＧＵＩ制御手段は、限られている。以下、簡単に説明するが、マシンビジョン検査システムの場合、ステップ・アンド・リピート・プログラミングは、アレイ状に配置されたワークピース要素（たとえば一定間隔の格子位置に配置されたワークピース要素）中のＮ個の位置でＮ回反復実行される撮像／解析動作のプログラミングを含む。たとえば、ワークピースにアレイ配置された丸穴が８個出現することになっている場合、ステップ・アンド・リピート・プログラミングは、８組の命令群を個々に定義する必要なしに、この穴を撮像／解析する１ブロックの命令をユーザが定義することを可能とし、次にそれが８回実行される。しかし、配列中の要素のそれぞれを撮像／解析するためにワークステージをシフトしつつ、１組の命令群が複数回実行されるべき場合、現段階では、比較的不慣れのユーザ（基礎となっているパートプログラム言語におけるテキスト・ベースのコンピュータ・プログラミングに熟練していないユーザ）にとって、これらの要素の特定の１つに関して命令を編集または調整する使い勝手の良い方法がない。
【０００７】
本発明は、コンピュータ読み取り可能媒体中に具体化されるシステム、ＧＵＩおよび方法の提供を目指している。これらは、精密マシンビジョン検査システムのパートプログラムにおいて、ステップ・アンド・リピート動作命令を、多用途で編集可能な形態への、直感的で柔軟かつ強固な変換を可能にする。
【発明の概要】
【課題を解決するための手段】
【０００８】
この概要の目的は、詳細な説明においてさらに詳しく説明されるコンセプトの選択を単純化された形態で紹介することである。この概要は、請求される主題の重要な特徴を示すことも、請求される主題の範囲を決定する一助として用いることも意図していない。
【０００９】
種々の実施形態において、学習モードでパートプログラムを作成することができ、かつ以前に作成したパートプログラムを、実行モードで実行することができるマシンビジョン検査システムを提供する。このシステムは、撮像部、１つまたは複数のワークピースを撮像部の視野中に保持するステージ、制御部、およびグラフィカル・ユーザ・インタフェース（ＧＵＩ）を含む。このシステムは、さらに、学習モードでパートプログラムを編集するために動作可能な編集部を含む。この編集部は、ＧＵＩに表示される編集インタフェース部を含んでいる。このシステムは、さらに、パートプログラムのステップ・アンド・リピート・プログラミング要素を学習モードで作成及び定義するために動作できるように構成されるステップ・アンド・リピート・ループ・ジェネレータを含む。ステップ・アンド・リピート・ループ・ジェネレータは、ワークピースの要素の配列中に定義されたＮ個の位置においてＮ回実行される検査命令の反復動作ブロックを定義する。このシステムは、さらに、学習モードにおいて、定義されたステップ・アンド・リピート・プログラミング要素を対象とするステップ・アンド・リピート変換動作を行うことができるように構成されるステップ・アンド・リピート・ループ・コンバータを含む。この変換動作は、以下を含む：ａ）定義されたステップ・アンド・リピート・プログラミング要素の反復動作ブロックにおいて定義された検査命令を自動的に複製してＮ個の独立編集可能コードブロックを作成すること。これらのブロックのそれぞれは、反復動作ブロックにおいて定義された検査命令の独立編集可能な実質的な複製を含み、Ｎ個の位置のうちの当該独立編集可能なコードブロックが対応する１つの位置においてそれぞれ実行されることとなる。ｂ）ＧＵＩの編集インタフェース部においてＮ個の独立編集可能コードブロックの表現を自動的に作成すること。このＮ個の独立編集可能なコードブロックの表現のそれぞれは、反復動作ブロックのその複製されたインスタンスに含まれている動作の編集可能表現を含んでいる。ｃ）ＧＵＩに表示された編集インタフェース部において編集可能要素として定義されたステップ・アンド・リピート・プログラミング要素を削除すること。本明細書において使用される場合、実質的な複製という表現は、検査命令またはその表現の全詳細の文字通りまたは正確な複製を必ずしも意味しない（一部の実施形態においては、そのような場合もあるが）。それは、むしろ、反復動作ブロックの本質的または基本的動作を複製する命令機能の複製を少なくとも意味する。
【００１０】
種々の実施形態において、Ｎ個の独立編集可能コードブロックの作成は、各独立編集可能コードブロックについて、当該独立編集可能コードブロックを実行する位置をそれぞれ決定する独立編集可能命令の作成を含む。
【００１１】
独立編集可能コードブロックは、マークアップ言語（たとえば、ＨＴＭＬ、ＸＭＬまたはそれから派生されたもの）で書かれたマシン実行可能コード命令およびＧＵＩ（たとえば編集部）に表示される関連編集可能命令表現を含み得る。本出願において使用されるコードブロックという用語は、記述または文脈により別段の指示がない限り、これらの関連する特徴の両方を含み得る。種々の実施形態において、Ｎ個の独立編集可能コードブロックの作成は、各独立編集可能コードブロックについて、当該コードブロックに関する少なくとも１つの固有の識別子（たとえば、固有のコードブロック名またはノード番号等）を作成することを含む。本出願において言及されるその他の種類の命令および命令表現に共通して、かかる固有識別子は、種々の実施形態において、動作、および／またはユーザインタフェース・ウィンドウ同期動作、および／またはコードおよび表現の関連づけを設定する一定のコンテキストをサポートするために割り当て、かつ、使用することができる。一実施形態では、２０１１年１１月１５日に提出された「Machine Vision System Program Editing Environment Including Real Time Context Generation Features」と題する同時係属・同時譲渡米国特許出願第１３／２９７，２３２号（‘２３２出願）および／または２０１２年１１月１３日に提出された「Machine Vision System Program Editing Environment Including Synchronized User Interface Features」と題する同時係属・同時譲渡米国特許出願第１３／６７６，０６１号（‘０６１出願）において記述されているように、このような関連づけおよび機能を実現することができる。
【００１２】
種々の実施形態において、独立編集可能コードブロック（たとえば、命令表現および／またはコード命令）のそれぞれは、１つまたは複数の子ノード等を有する１つまたは複数の親ノード等を含むツリー構造に配置することができる。ＧＵＩ上の命令表現を編集するユーザ入力は、当該命令表現のいずれかの追加、削除および変更の１つまたは複数を含むことができる。一部の実施形態では、ノードの一部はビデオツールに対応し、これらのツールのそれぞれは、形状測定動作または撮像（たとえば、自動焦点）動作、または画像処理動作等のような個別動作を対象とする命令の部分集合を含む。種々の実施形態において、独立編集可能コードブロックのそれぞれに、固有のノード名、変数名、および／またはコードブロック名を割り当てることができる。一部の実施形態または状況における名称は、当該ノードまたはコードブロックが編集されたとき、変更可能である。
【００１３】
種々の実施形態において、コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体を利用する。これらの命令は、ステップ・アンド・リピート・プログラミング要素において定義される検査動作の反復動作ブロックのＮ個の独立編集可能なインスタンスを作成する方法のコンピュータによる実行を可能とするためにコンピュータにロードされるように構成される。この場合、反復動作ブロックは、マシンビジョン検査システムにおいてワークピース要素の配列中のＮ個の位置においてＮ回実行されることになる。Ｎは、１より大きい整数である。このマシンビジョン検査システムは、撮像部、１つまたは複数のワークピースを撮像部の視野中に保持するステージ、制御部、およびグラフィカル・ユーザ・インタフェース（ＧＵＩ）を含む。実行される方法は、定義されたステップ・アンド・リピート・プログラミング要素の表現をＧＵＩの編集インタフェース部に表示すること、および編集インタフェース部を動作させて定義されたステップ・アンド・リピート・プログラミング要素を対象とする変換コマンドを実行することを含み得る。この変換コマンドは、以下を含む動作を含むことおよび／または実行することができる：ａ）定義されたステップ・アンド・リピート・プログラミング要素の反復動作ブロックにおいて定義された検査命令を自動的に複製することによりＮ個の独立編集可能なコードブロックを作成すること。これらの独立編集可能なコードブロックのそれぞれは、反復動作ブロックにおいて定義された検査命令の独立編集可能な実質的な複製を含み、Ｎ個の位置のうちの当該独立編集可能なコードブロックが対応する１つの位置においてそれぞれ実行される。ｂ）ＧＵＩの編集インタフェース部においてＮ個の独立編集可能なコードブロックの表現を自動的に表示すること。このＮ個の独立編集可能なコードブロックの表現のそれぞれは、反復動作ブロックの複製インスタンスに含まれている検査命令の編集可能表現を含んでいる。およびｃ）ＧＵＩの編集インタフェース部において編集可能要素としての定義されたステップ・アンド・リピート・プログラミング要素を削除すること。一部の実施形態では、編集可能要素としての定義されたステップ・アンド・リピート・プログラミング要素を削除することは、定義されたステップ・アンド・リピート・プログラミング要素の表示されている表現を編集インタフェース部から除去することを含む。
【００１４】
種々の実施形態において、Ｎ個の独立編集可能なコードブロックの作成は、各独立編集可能なコードブロックについて、当該独立編集可能コードブロックが実行する位置を決定する独立編集可能な命令の作成を含む。それぞれの位置を決定する独立編集可能な命令は、運動制御命令を含み得る。
【００１５】
一部の実施形態では、編集インタフェース部を動作させて変換コマンドを実行することは、ＧＵＩの編集インタフェース部において、定義されたステップ・アンド・リピート・プログラミング要素の表現を選択すること、ＧＵＩを動作させて選択された表現に対応する複数の編集コマンドを含むメニューを表示させること、および表示されたメニューから変換コマンドを選択することを含む。
【００１６】
一部の実施形態またはインスタンスでは、実行される方法は、さらに、以下のいずれかにより、定義されたステップ・アンド・リピート・プログラミング要素を与えることを含み得る：ａ）ＧＵＩを動作させてステップ・アンド・リピート・プログラミング要素を作成し、かつ、その反復動作ブロックおよびＮ個の位置を定義するそのパラメータを定義すること、およびｂ）前もって作成されているパーツプログラミング（定義されたステップ・アンド・リピート・プログラミング要素を含む）を開き、以前に作成された部品プログラムの表現をＧＵＩの編集インタフェース部に表示すること。
【００１７】
種々の実施形態またはインスタンスにおいて、実行される方法は、さらに、ＧＵＩ経由でユーザ編集入力（たとえば命令を追加すること、命令を抹消すること、および命令を変更すること）を与えて独立編集可能なコードブロックの１つを編集すること、およびその結果の独立編集可能なコードブロックを編集された状態でパートプログラムに記録することを含み得る。この編集入力は、必要な場合、独立編集可能コードブロックの１つを消去することができる。独立編集可能コードブロックの編集は、その他の独立編集可能コードブロックに影響を及ぼさない。
【００１８】
一部の実施形態において、Ｎ個の独立編集可能なコードブロックの作成は、各独立編集可能なコードブロックについて、当該コードブロックに関する少なくとも１つの固有の識別子（たとえば、固有のコードブロック名またはノード番号等）を作成することを含む。以下においてさらに詳しく説明するように、かかる固有識別子は、一部の実施形態において、動作、および／またはユーザインタフェース・ウィンドウ同期動作、および／またはコードおよび表現の関連づけを設定する一定のコンテキストをサポートするために使用することができる。
【図面の簡単な説明】
【００１９】
【図１】汎用精密マシンビジョン検査システムの種々の典型的構成要素を示す図である。
【図２Ａ】図１のシステムと同様なマシンビジョン検査システムの制御システム部およびビジョン構成要素部のブロック・ダイアグラムであり、この発明による種々の実施形態において使用できるモジュールおよび機能を含んでいる。
【図２Ｂ】図１のシステムと同様なマシンビジョン検査システムの制御システム部およびビジョン構成要素部のブロック・ダイアグラムであり、この発明による種々の実施形態において使用できるモジュールおよび機能を含んでいる。
【図３Ａ】編集インタフェース、すなわちＧＵＩの図であり、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｂ】編集インタフェース、すなわちＧＵＩの図であり、命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素の表現およびステップ・アンド・リピート変換動作（これは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを含むコードブロックにより置き換える）の一実施形態の表現のほか、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｃ】編集インタフェース、すなわちＧＵＩの図であり、命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素の表現およびステップ・アンド・リピート変換動作（これは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを含むコードブロックにより置き換える）の一実施形態の表現のほか、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｄ】編集インタフェース、すなわちＧＵＩの図であり、命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素の表現およびステップ・アンド・リピート変換動作（これは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを含むコードブロックにより置き換える）の一実施形態の表現のほか、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｅ】編集インタフェース、すなわちＧＵＩの図であり、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｆ】編集インタフェース、すなわちＧＵＩの図であり、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｇ】編集インタフェース、すなわちＧＵＩの図であり、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｈ】編集インタフェース、すなわちＧＵＩの図であり、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図３Ｉ】編集インタフェース、すなわちＧＵＩの図であり、独立編集可能インスタンスの編集においてユーザを支援するために構成された種々のウィンドウ、メニューおよびツールバーを含んでいる。
【図４Ａ】ユーザインタフェースの図であり、図３Ａ−３Ｉに対応するステップ・アンド・リピート・プログラミング要素の反復動作ブロック命令およびその他のパラメータを定義するために使用されるワークピースの画像を含んでいる。
【図４Ｂ】ユーザインタフェースの図であり、図３Ａ−３Ｉに対応するステップ・アンド・リピート・プログラミング要素の反復動作ブロック命令およびその他のパラメータを定義するために使用されるワークピースの画像を含んでいる。
【図４Ｃ】ユーザインタフェースの図であり、図３Ａ−３Ｉに対応するステップ・アンド・リピート・プログラミング要素の反復動作ブロック命令およびその他のパラメータを定義するために使用されるワークピースの画像を含んでいる。
【図４Ｄ】ユーザインタフェースの図であり、図３Ａ−３Ｉに対応するステップ・アンド・リピート・プログラミング要素の反復動作ブロック命令およびその他のパラメータを定義するために使用されるワークピースの画像を含んでいる。
【図４Ｅ】ユーザインタフェースの図であり、図３Ａ−３Ｉに対応するステップ・アンド・リピート・プログラミング要素の反復動作ブロック命令およびその他のパラメータを定義するために使用されるワークピースの画像を含んでいる。
【図４Ｆ】ユーザインタフェースの図であり、図３Ａ−３Ｉに対応するステップ・アンド・リピート・プログラミング要素の反復動作ブロック命令およびその他のパラメータを定義するために使用されるワークピースの画像を含んでいる。
【図５Ａ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｂ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｃ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｄ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｅ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｆ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｇ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｈ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｉ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図５Ｊ】図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関する動作に関連してユーザインタフェースに追加的および選択的に表示され得る種々のウィンドウの図である。
【図６Ａ−１】マークアップ言語で書かれたコード命令の図である。これらは、ステップ・アンド・リピート変換動作（それは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを与えるコード命令ブロックにより置き換える）の一実施形態における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応している。
【図６Ａ−２】マークアップ言語で書かれたコード命令の図である。これらは、ステップ・アンド・リピート変換動作（それは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを与えるコード命令ブロックにより置き換える）の一実施形態における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応している。
【図６Ｂ】マークアップ言語で書かれたコード命令の図である。これらは、ステップ・アンド・リピート変換動作（それは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを与えるコード命令ブロックにより置き換える）の一実施形態における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応している。
【図６Ｃ−１】マークアップ言語で書かれたコード命令の図である。これらは、ステップ・アンド・リピート変換動作（それは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを与えるコード命令ブロックにより置き換える）の一実施形態における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応している。
【図６Ｃ−２】マークアップ言語で書かれたコード命令の図である。これらは、ステップ・アンド・リピート変換動作（それは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを与えるコード命令ブロックにより置き換える）の一実施形態における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応している。
【図６Ｄ−１】マークアップ言語で書かれたコード命令の図である。これらは、ステップ・アンド・リピート変換動作（それは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを与えるコード命令ブロックにより置き換える）の一実施形態における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応している。
【図６Ｄ−２】マークアップ言語で書かれたコード命令の図である。これらは、ステップ・アンド・リピート変換動作（それは、本明細書において開示される原理に従って、ステップ・アンド・リピート要素を、その反復動作ブロックの独立編集可能インスタンスを与えるコード命令ブロックにより置き換える）の一実施形態における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応している。
【図７】本明細書において開示される原理に従って、定義されたステップ・アンド・リピート・プログラミング要素を変換してステップ・アンド・リピート・プログラミング要素の反復動作ブロックにおいて定義された検査命令の独立編集可能な実質的な複製を含む独立編集可能コードブロックを作成するルーチンの一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
詳細な説明
図１は、本発明の種々の実施形態において利用できる１つの典型的マシンビジョン検査システム１０のブロック・ダイアグラムである。マシンビジョン検査システム１０は、画像測定機１２を含み、画像測定機１２は制御コンピュータシステム１４、ジョイスティック２２とデータおよび制御信号を交換するように接続されている。制御コンピュータシステム１４は、さらに、モニタすなわちディスプレイ１６、プリンタ１８、キーボード２４、およびマウス２６とデータおよび制御信号を交換するように接続されている。モニタまたはディスプレイ１６は、本発明の種々の実施形態に従ってステップ・アンド・リピート命令を作成・編集するためのＧＵＩ等の、マシンビジョン検査システム１０の動作の制御および／またはプログラミングに適するユーザインタフェースを表示することができる。
【００２１】
画像測定機１２は、可動ワークピースステージ３２と、ズームレンズまたは交換可能レンズを含み得る光学撮像システム３４とを含んでいる。ズームレンズまたは交換可能レンズは、一般的に、光学撮像システム３４による画像に種々の倍率を与える。マシンビジョン検査システム１０は、一般的に、上述したQUICK VISION（登録商標）シリーズのビジョンシステムとQVPAK（登録商標）ソフトウェアおよび同様な市販されている最新の精密マシンビジョン検査システムに匹敵する。マシンビジョン検査システム１０は、米国特許第７，４５４，０５３号、同第７，３２４，６８２号、同第８，１１１，９３８号および同第８，１１１，９０５号においても記述されている。
【００２２】
図２Ａおよび２Ｂは、図１のマシンビジョン検査システム１０と同様なマシンビジョン検査システム１００の制御システム部１２０およびビジョン構成要素部２００のブロック・ダイアグラムであり、制御システム部１２０は、本発明による種々の実施形態において利用できる機能を含んでいる。制御システム部１２０は、ビジョン構成要素部２００を制御するために利用される。図２Ａに示されているように、ビジョン構成要素部２００は、光学アセンブリ部２０５と、光源２２０、２３０および２４０と、中央透明部２１２とを有するワークピースステージ２１０を含んでいる。ワークピースステージ２１０は、ワークピース２０が置かれるステージの表面にほぼ平行な平面に存在するＸ軸およびＹ軸に沿って移動制御可能である。光学アセンブリ部２０５は、カメラシステム２６０と、交換可能対物レンズ２５０とを含み、かつ、レンズ２８６および２８８を有するターレット・レンズ・アセンブリ２８０を含み得る。ターレット・レンズ・アセンブリの代わりに、固定または手動交換可能な倍率可変レンズ、またはズームレンズ構成等を含めることもできる。光学アセンブリ部２０５は、制御可能モータ２９４を使用することにより、Ｘ軸およびＹ軸にほぼ垂直なＺ軸に沿って制御の下に移動可能である。
【００２３】
マシンビジョン検査システム１００を使用して撮像されるワークピース２０、または複数のワークピース２０を保持するトレイまたは固定具は、ワークピースステージ２１０の上に置かれる。ワークピースステージ２１０は、光学アセンブリ部２０５に対して相対移動するように制御され、それにより交換可能対物レンズ２５０がワークピース２０上の位置の間および／または複数のワークピース２０の間を移動できる。透過照明光２２０、落射照明光２３０、および斜め照明光２４０のうちの１つ以上が、それぞれ、光源光２２２、２３２、または２４２を発してワークピース２０を照らすことができる。光源光は、ワークピース光２５５として反射または透過し、交換可能対物レンズ２５０およびターレット・レンズ・アセンブリ２８０を経て、カメラシステム２６０に集光される。カメラシステム２６０により捕捉されたワークピース２０の画像は、信号ライン２６２を介して制御システム部１２０に出力される。光源２２０、２３０、および２４０は、それぞれ、信号ラインまたはバス２２１、２３１、および２４１を介して制御システム部１２０に接続され得る。画像倍率を変更するために、制御システム部１２０は、信号ラインまたはバス２８１を介してターレット・レンズ・アセンブリ２８０を軸２８４に沿って回転させてターレット・レンズを選択することができる。
【００２４】
種々の例示的実施形態において、光学アセンブリ部２０５は、アクチュエータを駆動する制御可能モータ２９４、接続ケーブル等を使用することによりワークピースステージ２１０に対して垂直Ｚ軸方向に移動可能であり、それにより光学アセンブリ部２０５をＺ軸に沿って移動してカメラシステム２６０により捕捉されるワークピース２０の画像の焦点を変更することができる。本出願において使用する場合、Ｚ軸という用語は、光学アセンブリ部２０５により得られる画像の焦点合わせのために使用することを意図している軸を指す。制御可能モータ２９４は、信号ライン２９６を介して入出力インタフェース１３０に接続して使用される。
【００２５】
図２Ａに示されているように、種々の例示的実施形態において、制御システム部１２０は、コントローラ１２５、電源部１２８、入出力インタフェース１３０、メモリ部１４０、ワークピース・プログラム（パートプログラム）ジェネレータ・エグゼキュータ１５０、レコーダトランスレータ１５５、学習モードエグゼキュータ１５６、実行モードエグゼキュータ１５７、編集部１６０、代理データマネージャ１８０、プログラム・ステータス・マネージャ１８５、ノードマネージャ１９０、自動スクロールマネージャ１９５、およびステップ・アンド・リピート・ループ・ジェネレータ１７２およびステップ・アンド・リピート・ループ・コンバータ１７３を含んでいる。これらの構成要素のそれぞれは、以下において記述する追加構成要素とともに、１本または複数本のデータ／制御バスおよび／またはアプリケーション・プログラミング・インタフェース、または種々の要素間の直接接続により相互接続され得る。当業者にとって明らかであるように、これらの構成要素のいずれも、各実装形態に応じて、相互に併合すること、多数のサブコンポーネントから構成すること、またはそれらのそれぞれのサブコンポーネントを相互に併合することが可能である。
【００２６】
入出力インタフェース１３０は、撮像制御インタフェース１３１、運動制御インタフェース１３２、照明制御インタフェース１３３、およびレンズ制御インタフェース１３４を含む。運動制御インタフェース１３２は、位置制御要素１３２ａ、および速度／加速度制御要素１３２ｂを含み得るが、かかる要素は併合可能であり、および／または区別不能である。照明制御インタフェース１３３は、マシンビジョン検査システム１００の種々の対応する光源について、たとえば、選択、電力（明暗度）、オン／オフ切り替え、およびストロボ・パルス・タイミング（該当する場合）を制御する。
【００２７】
メモリ部１４０は、画像ファイル・メモリ部１４１、１つまたは複数のパートプログラム１４２ＰＰまたは同様のプログラムを含み得るワークピース・プログラム・メモリ部１４２、ビデオツール部１４３、および例示実施形態における、代理データ１４４ＳＤを含み得る代理データ・メモリ部１４４を含む。ビデオツール部１４３は、エッジ／境界検出ツール、オートフォーカスツール、形状またはパターン照合ツールおよび寸法計測ツール等の種々のビデオツール（まとめて１４３ａ）を含む。これらは、それぞれ、特定の機能を行うために定義されるＧＵＩおよび画像処理動作を含んでいる。上述したQUICK VISION（登録商標）シリーズのビジョンシステムや関連QVPAK（登録商標）ソフトウェアのような市販マシンビジョン検査システムには、多数の既知のビデオツールが含まれている。ビデオツール部１４３は、ビデオツール部１４３中に含まれる種々のビデオツールにおいて動作可能な、種々の関心領域（ＲＯＩ）を定義する自動、半自動および／または手動動作をサポートするＲＯＩジェネレータ１４３ｘも含んでいる。
【００２８】
代理データ・メモリ部１４４は、代理データ１４４ＳＤを含んでいる。一部の実施形態では、パートプログラムを編集する際、プログラム中の一定の位置において編集を継続するために必要なコンテキストを作成するときにパートプログラムのステップのすべてを最初から実行するのではなく、必要なコンテキスト（ハードウェア設定とソフトウェアのパラメータおよび値の両方に関する）を、‘２３２出願において記述されているように、代理データとして以前に保存されたデータを使用してシミュレートすることができる。
【００２９】
一般的に、メモリ部１４０は、所望の画像特性を有するワークピース２０の画像が補足または取得されるようにビジョンシステム構成要素部２００を動作させるために利用可能なデータを格納する。メモリ部１４０は検査結果データも格納でき、また、さらにマシンビジョン検査システム１００を動作させて取得された画像について、手動または自動で種々の検査および測定動作（たとえば、一部、ビデオツールとして実現される）を行うため、および入出力インタフェース１３０を介して測定結果を出力するために利用可能なデータも格納できる。メモリ部１４０は、入出力インタフェース１３０経由で動作可能なユーザインタフェースを定義するデータも含み得る。
【００３０】
透過照明光２２０、落射照明光２３０、および斜め照明光２４０の信号ラインまたはバス２２１、２３１および２４１は、それぞれ、すべて入出力インタフェース１３０に接続されている。カメラシステム２６０からの信号ライン２６２および制御可能モータ２９４からの信号ライン２９６は、入出力インタフェース１３０に接続されている。信号ライン２６２は、画像データを伝達するほか、画像取得を開始するコントローラ１２５からの信号も伝達し得る。
【００３１】
１つまたは複数の表示装置１３６（たとえば、図１のディスプレイ１６）および１つまたは複数の入力装置１３８（たとえば、図１のジョイスティック２２、キーボード２４、およびマウス２６）も入出力インタフェース１３０に接続され得る。表示装置１３６および入力装置１３８は、検査動作の実行、ステップ・アンド・リピート命令を含むパートプログラムの作成および／または変更、カメラシステム２６０により捕捉された画像の観察、および／またはビジョンシステム構成要素部２００の直接制御を行うために使用可能な種々のユーザインタフェース機能を含み得るユーザインタフェースを表示するために使用することができる。特に、本発明の種々の例示実施形態に従って、表示装置１３６および入力装置１３８は、マシンビジョン検査システム１００のためのパートプログラムにおいて、ステップ・アンド・リピート命令の効率的、直感的、弾力的で迅速かつ強固な編集を可能にするために使用できる種々のユーザインタフェース機能を与えるために使用される。
【００３２】
ワークピース・ジェネレータ／エグゼキュータ１５０、レコーダトランスレータ１５５、学習モードエグゼキュータ１５６、実行モードエグゼキュータ１５７、編集部１６０、代理データマネージャ１８０、プログラム・ステータス・マネージャ１８５、ノードマネージャ１９０、自動スクロールマネージャ１９５、ステップ・アンド・リピート・ループ・ジェネレータ１７２およびステップ・アンド・リピート・ループ・コンバータ１７３は、一実施形態では、すべて、コントローラ１２５に結合されるジェネラル・マシン・コントローラ・ブロックＭＣの一部とみなすことができる。ワークピース・プログラム・ジェネレータ／エグゼキュータ１５０は、パートプログラムの作成および実行を受け持つ。当然のことながら、「ワークピース・プログラム」および「パートプログラム」という用語は、本出願では、どちらを使っても変わりはない。ワークピース・ジェネレータ／エグゼキュータ１５０の動作に基づいて、ユーザは、マシンビジョン検査システム１００を利用して、ワークピース・プログラム言語により自動的、半自動的または手動的に命令を明示的にコーディングすることにより、および／またはマシンビジョン検査システム１００を、所望画像取得訓練シーケンスを与える学習モード（たとえば、学習モードエグゼキュータ１５６の制御による）で動作させて命令を生成することにより、ワークピース２０のためのパートプログラムを作成する。たとえば、訓練シーケンスは、視野（ＦＯＶ）中にワークピース要素を位置付けること、照明レベルを設定すること、焦点を合わせることまたはオートフォーカス設定、画像を取得すること、および画像に適用される検査訓練シーケンスを与えること（たとえばビデオツールを使用すること）を含み得る。この学習モードは、「学習された」動作シーケンスが記録され、かつ、対応するパート・プログラム・ステップ（すなわち命令）に変換されるように動作する。これらのパート・プログラム・ステップは、そのパートプログラムが実行モードで実行されるとき（たとえば、実行モードエグゼキュータ１５７の制御により）、マシンビジョン検査システム１００に、当該訓練における画像取得および検査の動作を再現させ、それによりあるワークピースがパートプログラム作成時に使用されたワークピースと一致するかを自動的に検査する。
【００３３】
レコーダトランスレータ１５５は、マシンの動作をパートプログラム・コードに変換するために利用される。換言すると、ユーザが操作（たとえば、ワークピース上の要素を測定するために使用されるビデオツールを手動により変更する操作）を行う場合、パートプログラムを形成するためにマシン読み取り可能言語に変換される基本命令が作成され、かつ、逆変換も行われ得る。以下においてさらに詳しく述べるように、本発明の種々の実施形態においては、編集可能な命令表現が編集ＧＵＩ上に表示され、かつ、その命令表現が、たとえばマークアップ型言語で書かれたマシン読み取り可能コード命令を示す。レコーダトランスレータ１５５は、編集可能命令とそれに対応するコード命令間の変換を行い得る。図２Ｂを参照して以下においてさらに詳しく述べるように、編集部１６０は、パートプログラムの編集に関する種々の動作およびユーザインタフェース機能を準備または起動する。
【００３４】
一部の実施形態では、代理データマネージャ１８０は、パートプログラムに記録され得る代理データとリンクする。ある実装形態では、代理データマネージャ１８０は、代理データが通常、生成される出力から代理データを取得すること、およびパートプログラムに書き込まれる代理データを提供することを受け持つ。プログラム・ステータス・マネージャ１８５は、一実施形態では、プログラムが保護されるか否か管理する。１つの例示実施形態では、保護されるプログラムは、その編集プロセスがすでに完了し、工場において実行モードで利用できるプログラムである。ある実装形態では、保護されないパートプログラムは、編集目的のための正しいコンテキストを生成する際に使用される格納代理データを含むことができる。プログラム・ステータス・マネージャ１８５は、パートプログラムが保護されていない場合に代理データがパートプログラム中に記録されたままとなるようにすること、また、パートプログラムが編集部１６０により呼び戻されたときに代理データが利用可能であることを表示することも受け持つ。
【００３５】
ある実施形態では、ノードマネージャ１９０は、パートプログラム中のノードに割り当てられたノード番号の管理を受け持つ。ある実装形態では、パートプログラムの表現内において、命令表現のそれぞれにノード番号が割り当てられる。ある実装形態では、親ノードおよび子ノードを含む組織的ツリー構造を利用することができる。ある実装形態では、レコーダトランスレータ１５５により生成されるパートプログラム表現の各行にノードマネージャ１９０によりノード番号が割り当てられる。自動スクロールマネージャ１９５は、ノードマネージャ１９０により割り当てられたノード番号を利用して関連パートプログラム要素の関連要素および対応する編集機能を異なるウィンドウに同時に表示する。たとえば、ワークピースのどの測定がパートプログラム中のどの命令表現および／または命令コードに関連しているかユーザが知ることを可能にするために、自動スクロールマネージャ１９５は、それぞれのウィンドウ中で関連ノード番号に対応するパートプログラム表現および／またはコード化命令中の関連行まで自動的にスクロールすることができる。
【００３６】
ステップ・アンド・リピート・ループ・ジェネレータ１７２は、ステップ・アンド・リピート・プログラミング要素命令の作成およびＮ個の関連検査位置等（これらは、ワークピース・プログラムの一部を形成することができる）の定義を受け持つ。一実施形態では、ステップ・アンド・リピート・ループ・ジェネレータ１７２は、‘８９５特許において開示された機能を使用して実現することができる。以下においてさらに詳しく述べるように、ステップ・アンド・リピート・ループ・コンバータ１７３は、定義されたステップ・アンド・リピート・ループ・プログラミング要素を複数の独立に編集可能なコードブロックに変換すること、および／または置換することを受け持つ。これらのブロックのそれぞれは、ステップ・アンド・リピート・プログラミング要素の反復動作ブロックにおいて定義された検査命令の、独立に編集可能である実質的な複製を含んでいる。この独立に編集可能なコードブロックのそれぞれは、ステップ・アンド・リピート要素において定義されたＮ個の検査位置の１つに対応するそれぞれの位置で実行される。コンバータ１７３は、ＧＵＩの編集インタフェース部中に、独立編集可能コードブロックの編集可能表現を与えることも、また、編集インタフェース部中の編集要素としてのステップ・アンド・リピート・プログラミング要素を除去することもできる。その目的のために、ステップ・アンド・リピート・ループ・ジェネレータ１７２およびステップ・アンド・リピート・ループ・コンバータ１７３は、ワークピース・プログラム・ジェネレータ／エグゼキュータ１５０、レコーダトランスレータ１５５、編集部１６０、代理データマネージャ１８０、プログラム・ステータス・マネージャ１８５、および自動スクロールマネージャ１９５により与えられる機能、動作およびユーザインタフェース機能にアクセスし、利用することができる。ステップ・アンド・リピート・ループ・ジェネレータ１７２およびコンバータ１７３について、他の構成も可能である。たとえば、ある実装形態では、ステップ・アンド・リピート・ループ・ジェネレータ１７２およびコンバータ１７３および１つまたは複数のワークピース・プログラム・ジェネレータ／エグゼキュータ１５０、レコーダトランスレータ１５５、編集部１６０、代理データマネージャ１８０、プログラム・ステータス・マネージャ１８５、および自動スクロールマネージャ１９５は、併合可能および／または区別不能であってもよい。一般的に、本発明は、本出願において開示されているユーザインタフェース機能および関連プログラミングおよびその他の動作を与えるためにマシンビジョン検査システム１００と協力して動作できる既知または将来開発される形態で実現可能である。
【００３７】
図２Ｂは、図２Ａの編集部１６０の追加構成要素を示す。図２Ｂに示されているように、編集部１６０は、編集動作コントローラ１７４、編集ユーザインタフェース部１７６、エディタコマンド部１７７および編集実行部１７８を含んでいる。編集動作コントローラ１７４は、編集機能のための動作を制御する。編集ユーザインタフェース部１７６は、編集機能のためのユーザインタフェース機能を与える。編集ユーザインタフェース部１７６は、プログラム命令表示ウィンドウ１７６ｐｉを含んでいる。このウィンドウは、表示ユーザインタフェース機能１７６ｒを含んでいる。この機能は、ノード・ユーザ・インタフェース機能１７６ｎを含んでいる。プログラム命令表示ウィンドウ１７６ｐｉは、図３Ａ〜３Ｉに関して以下においてさらに詳しく説明するように、ステップ・アンド・リピート命令、ステップ・アンド・リピート・コンバータ１７３により生成される命令等の編集可能表現を含むパートプログラム表現を与える。一実施形態では、それぞれ１つ以上の子ノードを含んだ親ノードを含むツリー構造内に、ステップ・アンド・リピート命令およびステップ・アンド・リピート・コンバータ１７３により生成される命令のグラフィック表現を与えることができる。表示ユーザインタフェース機能１７６ｒは、ユーザが複数の編集オプションから選択するための種々のプルダウンメニュー、およびステップ・アンド・リピート・ループ中の命令および／またはステップ・アンド・リピート・ループ・ジェネレータ・コンバータ１７３により生成される命令等を含む種々の命令を作成・編集するためにユーザが選択し、オープンすることができる種々のビデオツールを含むツールバー等の機能を与える。ノード・ユーザ・インタフェース機能１７６ｎは、一実施形態では、‘２３２出願において開示されているように、ある命令または命令ブロックに対応するノードが編集中であるか、または編集された等の場合にそれを表示するアイコンおよびカラー強調表示のような機能を含み得る。
【００３８】
種々の実施形態において、編集実行部１７８は、学習モードにおける編集プロセス中の種々の編集実行モードを受け持つ。それは、実行モードでの実行とは異なる編集モードでの実行を含む。一般的に、実行モードでの実行は、パートプログラムを最初から実行してワークピースの撮像から得た実際のデータを取得し、かつ、処理する（たとえば、検査し、かつ、解析する）。他方、種々の実施形態における編集モードでの実行は、実際のデータの少なくとも一部を以前に記録された「代理データ」により置き換え、それにより、実際のデータを取得するためにパートプログラムの最初から開始しなければならない場合とは対照的に、代理データを使用してパートプログラムの所望の点から実行開始することを可能にする。すなわち、種々の実施形態における編集モードでの実行は、パートプログラムの任意の部分を編集するために必要な正しいコンテキストを効率的に生成することができる。マシンビジョン検査システムのパートプログラムの編集は、マシン・ツールまたは組立ロボット等のプログラムの編集より複雑な作業であることに注意するべきである。たとえば、マシンビジョン検査システムのパートプログラムは、動作を制御し、および／または画像依存測定結果を与える事後（後続）部分を含んでいる。それは、プログラムの以前の部分の実行により達成／取得された結果および／または解析されるために撮像されるワークピースの特定の実体に少なくとも部分的に依存する。ビジョンシステムは、一般的に、複雑に相互作用して撮像／解析動作を行う、種々の機械的、電気的および光学的要素から構成されていることにも注意しなければならない。したがって、ステップ・アンド・リピート命令を含むパートプログラムのどの部分の編集も、現実の一連の条件に基づく正しいコンテキストにおいて、すなわち、編集される部分についてビジョンシステムの種々のハードウェア要素、ソフトウェア要素およびパラメータを（現実のデータに基づいて）適切に設定した状態において行わなければならない。パートプログラムを編集するための正しいコンテキストを実現する標準的なやり方は、ビジョンシステムにパートプログラムの命令のすべてを、その始めから、および／または編集される命令の部分を含むまで、実際に実行させることである。それは、時間のかかる、むだの多い、そして大きいパートプログラムの場合には非現実的な作業である。編集されるべきパートプログラムの特定のノードの正しいコンテキストを作成することができるビジョンシステム編集環境を「代理データ」に基づいて与える解決方法の一つが、‘２３２出願により開示されている。
【００３９】
一部の実施形態では、編集実行部１７８は、代理モード部１８０、実モード部１９１、および編集実行ユーザインタフェース機能部１９２を含んでいる。代理モード部１８０は、代理データ動作１８１ａおよびマシン動作１８１ｂを含むノードアナライザ１８１を含んでいる。代理モード部１８０が代理実行モードを動作させると、編集動作を継続するためのコンテキストを生成するために代理データが利用される。一実装形態におけるノードアナライザ１８１は、パートプログラム実行が目標ノード（たとえば、変更を行うべきパートプログラム中の箇所）に到達したか否か決定する。ノードアナライザ１８１は、含まれているノードの種類に応じて代理データ動作１８１ａと実際マシン動作１８１ｂのいずれが行われるか決定する。一般に、目標ノードに到達した後は、実際にマシン動作が行われるが、目標ノードより前のパートプログラム命令については、編集動作を継続するために必要なコンテキストの少なくとも一部を作成するために代理データ動作を利用することができる。代理データが見当たらない場合、ユーザは、必要なコンテキストを生成する実際のマシン動作の許容／実行を促される。ある実装形態では、各ノードを解析して代理データの実行が適用できるか否か（代理データが実在するか否かを含めて）、それが代理データの動作のための正しい種類のノードであるか否か、実際のマシン動作の利用を必要とするか否か等を決定する。たとえば、パートプログラムの一部のノードは、代理データにより代替できない実際のデータを取得するために、ワークピースステージ、撮像部等の実際の運動等といった、実際のマシン動作を要求することができる。
【００４０】
実モード部１９１は、以前のマシンビジョンシステムにより伝統的に行われている動作を含んでいる。当然のことながら、実モード部１９１は、必要に応じて、マシン動作１８１ｂを行うために代理モード部１８０からも呼び出すことができる。実モード部１９１は、マシン動作１９１ａおよびデータ動作１９１ｂを含んでいる。マシン動作１９１ａが実際のマシン動作（たとえば、ビデオツール動作の一部としてステージを動かすこと）を行うのに対し、データ動作１９１ｂは一般的にデータを出力する。編集実行ユーザインタフェース機能１９２は、編集機能の実行のためのユーザインタフェース機能を与える（たとえば、パートプログラムのどの部分が利用可能代理データを有しているか、または実際の実行により実行されたか等を表示するカラー・コードのような種々の実行動作の状態に関する表示）。種々の実施形態において、このような機能は、‘２３２出願において開示されているように実現することができる。
【００４１】
エディタコマンド１７７は、実行セグメント部１７７ａ、変更部１７７ｂ、挿入／添付部１７７ｃ、およびステップ・アンド・リピート・ループ変換コマンド１７７ｄを含んでいる。ステップ・アンド・リピート・ループ変換コマンド１７７ｄは、ステップ・アンド・リピート・ループ・コンバータ１７３の動作、および／または種々のステップ・アンド・リピート・ループ変換動作および本出願において開示・請求する方法を起動することができる。前述したように、種々の実施形態において、ステップ・アンド・リピート・ループ・コンバータ１７３は、編集動作コントローラ１７４、編集ＵＩ部１７６、編集実行部１７８およびエディタコマンド１７７を含む編集部１６０により与えられる作用および機能のいずれにもアクセスし、使用することができる。変更部１７７ｂおよび挿入／添付部１７７ｃの動作については、図３Ａ〜３Ｉを参照しつつ以下においてさらに詳しく説明する。
【００４２】
一般に、実行セグメント部１７７ａは、パートプログラムの選択セグメントの実際の実行を行う。当然のことながら、パートプログラムの選択セグメントを実行するために、選択されたセグメントまで適切なコンテキストを確立しなければならない。適切なコンテキストは、代理データを利用することにより確立することができる。
【００４３】
変更部１７７ｂは、実行セグメント部１７７ａの動作との一定の類似性を有している。一般に、パートプログラム中の命令表現が変更される（編集される）ために選択された場合、パートプログラムの当該変更される命令よりも前にある部分について、代理モードを利用して編集目的のために正しいコンテキストを作成することができる。一実施形態では、パートプログラム中の１つの命令表現のために変更コマンドが選択されたとき、その命令表現のノードが目標ノードとして指定される。目標ノードに到達した後、エディタは、代理モードから実際実行モードに切り換えて（たとえば、実モード部１９１により制御されて）、目標ノードの第１関連パートプログラム命令を実行する。
【００４４】
以下の数パラグラフにおいて、図３Ａ〜３Ｉ、図４Ａ〜４Ｆ、図５Ａ〜５Ｊおよび図６Ａ〜６Ｄをその順番通りではなく、交互にしばしば参照する。これは、連続性のために一貫した種類の要素を有するグループ構成の図の配置（たとえば、あるグループにおける主として種々の種類のＧＵＩ要素、別のグループにおけるコード命令の例）に対し、説明の配置は、種々の種類の要素間（たとえば、ＧＵＩ入力とその結果の命令変更の間）の機能的および／または逐次的関係に従っているためである。特に、図３Ａ〜３Ｉは、命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素の表現および本出願において開示される原理ならびに独立編集可能なインスタンスを編集するユーザを支援するために構成される種々のウィンドウ、メニューおよびツールバーに従って、ステップ・アンド・リピート要素をその反復動作ブロックの独立編集可能インスタンスを含むコードブロックにより置き換える一実施形態のステップ・アンド・リピート変換動作の表現を含む編集インタフェースすなわちＧＵＩの図である。図４Ａ〜４Ｆは、図３Ａ〜３Ｉに対応するステップ・アンド・リピート・プログラミング要素の反復動作ブロック命令およびその他のパラメータを定義するために使用されるワークピースの画像を含むユーザインタフェースの図である。図５Ａ〜５Ｊは、図３Ａ〜３Ｉおよび／または図４Ａ〜４Ｆに示された動作に関連する動作に関連してユーザインタフェース上に追加的かつ選択的に表示され得る種々のウィンドウの図である。図６Ａ〜６Ｄは、本出願において開示される原理に従ってステップ・アンド・リピート要素をコード命令ブロック（これらのブロックは、その反復動作ブロックの独立編集可能インスタンスを与える）により置き換える一実施形態のステップ・アンド・リピート変換動作における命令の反復動作ブロックを含むステップ・アンド・リピート・プログラミング要素に対応するマークアップ言語で書かれるコード命令の図である。
【００４５】
図３Ａは、複数の初期パートプログラム命令表現３５１〜３５３を有するパートプログラム３１０の表現を含む編集インタフェース３００の図である。これらの表現は、表示装置１３６（たとえば、図１のディスプレイ１６）上に表示され得る。編集インタフェース３００は、マシンビジョン検査システムのためのステップ・アンド・リピート命令を含むパートプログラムのユーザによる生成および編集を可能にする。編集インタフェース３００は、選択バー３２０のような種々の測定バーおよび／または動作選択バーも含んでいる。パートプログラム表現３１０の命令表現３５１〜３５３の動作について図４Ａを追加参照しつつ、以下において説明する。
【００４６】
図４Ａは、表示装置１３６上にも表示される画像インタフェース４００を示す図であり、図３Ａのパートプログラムの実行対象となり得るワークピース４１５の（ビデオ）画像を表示する視野ウィンドウ４１０を含んでいる。このマシンビジョンシステムは、一部の実装形態では多数の別々のワークピースについて、別の実装形態においては単一のワークピース中の多数のワークピース要素（表面に画定される多数の穴のような）についてパートプログラムを実行する。したがって、「ワークピース」および「ワ―クピースの要素」という用語は、本出願においては、一定の文脈では、互換使用される。画像インタフェース４００は、選択バー４２０と４４０、および関連図座標系におけるワークピースステージ２１０上で撮像／解析されるワークピースのＸ―Ｙ−Ｚ位置を示すリアルタイムＸ−Ｙ−Ｚ（位置）座標ウィンドウ４３０等の種々の測定および／または動作選択バーも含んでいる。この座標系は、測定のための基準を与える。それは、一般的にワークピース座標系（たとえば、矩形ワークピースの１つの隅を原点として使用する）またはワークピースステージの線形目盛りにより定義される機械座標系である。画像インタフェース４００は、さらに照明光制御ウィンドウ４５０を含んでいる。
【００４７】
図３Ａにおいて示した例に戻る。パートプログラム表現３１０は、表面に画定される穴のようなほぼ円形のワークピース要素４１５の要素を決定するために設定される。一実施形態では、パートプログラム命令表現３５１〜３５３のそれぞれは、ノードに関連付けられ、かつ、ノード番号を割り当てられる（たとえば、‘２３２出願および／または‘０６１出願において開示されているように）。ある実装形態では、ツリー構造を利用する。その場合、命令表現の一部は、親ノードに関連付けられ、また、一部は子ノードに関連付けられる。たとえば、子ノード命令表現３５１ＡおよびＢ、３５２Ａおよび３５３Ａは、それぞれ、それらの親ノード命令表現３５１、３５２および３５３に関連付けられる。本出願において使用される場合、編集インタフェース３００上に表示されるプログラム命令表現のそれぞれは、互換的に「ノード」と呼ばれることがある。また当然のことながら、一実施形態では、編集インタフェース３００上に表示される命令表現３５１〜３５３は、パートプログラムのマークアップ言語命令（コード命令）から導かれるアイコンおよびラベルを含んでいる。一部の実施形態では、パートプログラムのマークアップ言語は、カスタマイズされたマークアップ言語コード等のＸＭＬのようなコードを含み得る。したがって、命令表現３５１〜３５３は、マシン実行可能な関連コード命令に関する関連付けを「正確に示す」か、またはそれを有する。これについては、以下において図６Ａ〜６Ｄを参照してより詳しく説明する。
【００４８】
図３Ａに示したように、“Prologue”ノード３５１は、実行モードにおいてパートプログラムを実行するために必要なプロセスを表している。そのプロセスは、一般的に、学習モードに入ったときに生成される。“Set Lights”ノード３５１Ａは、どの種類の照明をどの照度レベルで使用するか定義する。それは、ユーザにより、照明光制御ウィンドウ４５０（図４Ａ）に含まれているスライディング・バーを使用して容易に設定・調整できる。図示した例では、“Stage”照明を２７％の照度レベルで使用する。“Move Stage”ノード３５１Ｂは、ワークピースを保持するステージの位置を定義する。この位置は、種々の実装形態に従ってユーザにより手動により設定される。図３Ａでは、後続する２つの“Measure Circle”ノード３５２、３５３が動作して図４Ａのほぼ円形のワークピース要素４１５に座標系を整列させることによりワークピース座標系を設定する。具体的には、“Measure Circle Circle-1”ノード３５２は円Circle-1を定義し、“Align Origin to Circle-1”ノード３５２ＡはCircle-1の中心に座標系の原点を設定する。Measure Circle Circle-2”ノード３５３は円Circle-2を定義し、“Align X Axis to Circle-2”ノード３５３Ａは、座標系のＸ軸をＺ軸の周りにCircle-2の中心方向まで回転させる。命令表現３５１〜３５３の動作は、したがって追加測定を行うために関連座標系におけるワークピース４１５の正しい位置および向きを確立する。
【００４９】
図４Ｂを参照すると、ユーザは、本発明の実施形態に従って種々のＧＵＩ機能を使用することによりステップ・アンド・リピート命令を定義することができる。具体的には、ユーザがセレクタ（たとえばカーソル）を“Program”オプション４１１の上に置くと、“Step and Repeat”オプション４１３を含むプルダウンメニュー４１２が現れる。“Step and Repeat”オプション４１３のユーザ選択により、“Array”オプション４１６を含む別のプルダウンメニュー４１４が表示される。ユーザは、“Array”オプション４１６を選択して検査動作の反復動作ブロックを含むステップ・アンド・リピート・プログラム要素の命令の定義を開始することができる。この場合、この反復動作ブロックは、ワークピース要素の配列中のＮ個の定義された位置でＮ回行われることになる。
【００５０】
図５Ａを参照すると、図示されている実施形態では、上述した“Array”オプション４１６のユーザ選択後、“Array Step and Repeat”ウィンドウ５００が表示画面上に現れ、ユーザに対し配列の全体構成および構造の定義を促す。一部の実施形態では、ユーザは、配列の名前をネームボックス５０１に入れることができる。図示の例では、ユーザは、この中にすでに“MyLoop”を入力してある。ユーザは、さらに１つの軸（たとえばＸ軸）に沿って行うべき反復回数を第１反復ボックス５０２Ａ中で定義し、かつ、同じ軸沿いの反復間の間隔距離を“ＤＸ”ボックス５０２Ｂ中で定義する。同様に、ユーザは、さらに別の軸（たとえばＹ軸）に沿って行うべき反復回数を第２反復ボックス５０３Ａ中で定義し、かつ、その軸沿いの反復間の間隔距離を“ＤＹ”ボックス５０３Ｂ中で定義する。図示された例では、ユーザは、それぞれ、［１，１］、［１，２］、［１，３］および［２，１］、［２，２］、［２，３］の番号が付されている６個のアイコン５１０により図示されているように、ステップ・アンド・リピート命令の基本セットがＸ軸に沿って１．５８７５の間隔をおいて２回行われること、およびＹ軸に沿って１．５８７５の間隔をおいて３回行われることを定義している。“Array Step and Repeat”ウィンドウ５００は、ユーザに対しステップ・アンド・リピート命令の基本セットを各軸に沿って単一のワークピース５０４について要素ごとに反復するのか、または複数のワークピース５０５についてワークピースごとに反復するのか定義するよう促すこともできる。ウィンドウ５００は、さらにユーザがスキップされるべき配列のメンバ（要素）を“Skipped Steps”ボックス５０６中で指定することを可能にすることもできる。たとえば、ステップ・アンド・リピート命令の基本セットを５カ所［１，１］、［１，２］、［１，３］および［２，１］、［２，２］において５回実行するが、位置［２，３］では行わないことをユーザが希望する場合、すなわちユーザが位置［２，３］のスキップを希望する場合、ユーザは、［２，３］を“Skipped Steps”ボックス５０６に入れることができる。その結果、ステップ・アンド・リピート命令の基本セットは、位置［２，３］では行われない。すなわち、位置［２，３］はスキップされる。ユーザが配列の位置の定義を終了する場合、ユーザは、ＯＫボタン５０７を選択して定義した位置を保存する。
【００５１】
図３Ｂを参照すると、ユーザは、次に前記図５Ａで定義されたＮ個のワークピースまたはワークピース要素の配列についてＮ回反復実行される反復動作ブロックを定義することができる。具体的には、編集インタフェース３００において、ビデオツールバー３３０が適当な位置に現れ得る。これは、種々の測定／検査動作を定義するためにユーザが選択・利用することができる点ツール３３０Ａ、ボックスツール３３０Ｂ、および円ツール３３０Ｃのようなビデオツールを表す種々のアイコンを含んでいる。一部の実施形態では、ツールバー３３０は、上述した図５Ａに示した配列の定義のユーザ完了後に出現し得る。その他の実施形態では、ユーザは、ツールバー３３０が編集インタフェース３００において表示されるよう明示的に要求することができる。要するに、点ツール３３０Ａは、ある点のＸ−Ｙ−Ｚ座標を決定するために使用されるように構成される。ボックスツール３３０Ｂは、ラインを定義する（たとえばフィッティング処理により）ために使用できる点ならびに当該ラインがＸ軸、Ｙ軸、Ｚ軸およびＸ−Ｙ平面との間にそれぞれ形成する角度および当該ラインの直線性を決定するように構成される。円ツール３３０Ｃは、円を定義する（たとえば最適動作により）ために使用できる点（円の中心のＸ−Ｙ−Ｚ座標を含む）ならびに、その円の直径、半径および真円度（丸さ）を決定するように構成される。点ツール３３０Ａ、ボックスツール３３０Ｂおよび円ツール３３０Ｃは、すべて、形状を定義／測定するエッジ点を識別するように構成されるエッジ検出ツールである。これらおよびその他のビデオツールの機能および動作は、先行技術において既知であり、また、これまでに包含された引用文献においてより詳しく説明されている。
【００５２】
図示されている例では、ユーザは、すでに円ツール３３０Ｃを選択し、それを視野ウィンドウ４１０においてワークピース４１５の画像に適用している（図４Ｃ参照）。それは、編集インタフェース３００における親ノード“Array Step and Repeat Loop MyLoop”３５４の子ノードとしての“Measure Circle Circle-5 [ , ]”ノード３５５を生成させる。（“Measure Circle Circle-5”において、決定される円の識別子として５が使用されている。）一実施形態では、“Measure Circle Circle-5 [ , ]”ノード３５５は、３個の子ノード、すなわち“Set Up For Measurement”ノード３５５Ａ、“Circle Tool”ノード３５５Ｂおよび“Define Circle”ノード３５５Ｃを自動的に含む。“Set Up For Measurement”ノード３５５Ａは、照明設定およびステージ設定等の円ツールを実行するために必要な（すなわち円を測定するために）設定を定義・表現する。“Circle Tool”ノード３５５Ｂは、円ビデオツール３３０Ｃを表現し、かつ、円を測定するために構成される命令を含んでいる。“Define Circle”ノード３５５Ｃは、測定される“Circle-5”を定義し、それにより“Measure Circle Circle-5 [ , ]”命令表現３５５の動作を決定する。
【００５３】
ビデオツールバー３３０からの円ツール３３０Ｃの選択は、“Measure Circle”ウィンドウ３３２を作成するコマンドまたは円測定ツールとともに使用することもできる。このウィンドウは、円測定動作の定義に関連して利用できるオプションをユーザに与える。たとえば、ユーザが“Run”オプション３３２Ａを選択し、それにより学習モードにおいて編集モードでの実行を用いて“Measure Circle Circle-5 [ , ]”命令表現３５５を実行する場合、ビジョンシステムは、位置［１，１］の第１ワークピース要素から始まる測定動作を行うことができる。
【００５４】
図４Ｃは、上述“Run”オプション３３２Ａを選択した結果を示している。座標ウィンドウ４３０中のＹ位置は、図４Ｂのウィンドウ４３０では、０．００２４１ｍｍであったのに対し、ここでは１．５８６８９ｍｍになり、１．５８４４９ｍｍだけのＹ軸沿いのステージの運動を指示していることに留意されたい。視野ウィンドウ４１０は、１８個のエッジ点４１６がワークピース要素４１５のエッジに沿って検出され、それによりワークピース要素４１５が円として決定されることを示している。これは、３３２Ｂにおいて“18 Points Entered”を指示している図３Ｂの“Measure Circle”ウィンドウ３３２にも反映されている。図５Ｂは、位置［１，１］におけるワークピース要素４１５の測定結果を示している。一実施形態では、測定結果の少なくとも一部が“Measure Circle Circle-5 [ , ]”命令表現に関連する代理データとしてＸＭＬのようなコード命令またはＸＭＬフォーマット化データ構造中に保存される。これは、後に呼び戻されて使用され、プログラム全体を実行する必要なしにパートプログラムの編集を続けるために必要なコンテキストを生成することができる。
【００５５】
図３Ｃを参照すると、ユーザは、さらに、図５Ａにおいて定義されるＮ個のワークピースまたはワークピース要素の配列についてＮ回実行されるライン測定動作を反復動作ブロックに追加することができる。具体的には、編集インタフェース３００において、ビデオツールバー３３０が利用できるが、これからユーザはボックスツール３３０Ｂを１回、点ツール３３０Ａを２回選択し、それらを視野ウィンドウ４１０においてワークピース４１５の画像に適用することができる（図４Ｄ参照）。ボックスツール３３０Ｂ（ラインを測定するように設計されている）のユーザ選択は、編集インタフェース３００における親ノード“Array Step and Repeat Loop MyLoop”ノード３５４のもう１つの子ノードとしての“Measure Line Line-3 [ , ]”ノード３５６を作成させる。（“Measure Line Line-3”において、３は、決定されるべきラインの識別子として使用されている。）“Measure Line Line-3 [ , ]”ノード３５６は、４つの子ノード、すなわちBox Tool”ノード３５６Ａ、第１“Point Tool”３５６Ｂ、第２“Point Tool”３５６Ｃおよび“Define Line”ノード３５６Ｄを含んでいる。一実施形態では、“Box Tool”ノード３５６Ａおよび“Define Line”ノード３５６Ｄは、“Measure Line Line-3 [ ,]”ノード３５６の下の子ノードの最小組み合わせとして自動的に含まれるが、２つの“Point Tool”は、ユーザにより手動的に追加される。“Box Tool”ノード３５６Ａは、ボックス・ビデオ・ツール３３０Ｂを表す。それは、ラインを測定するように構成される命令を含むコマンドまたはライン測定ツールとともに使用することができる。２つの“Point Tool”ノード３５６Ｂ、３５６Ｃは、それぞれ、点ビデオツール３３０Ａを表し、かつ、点を決定するように構成される命令を含んでいる。“Define Line”ノード３５６Ｄは、１つのボックスツール３３０Ｂおよび２つの点ツール３３０Ａの組み合わせにより測定される“Line-3”を定義し、それにより“Measure Line Line-3 [ , ]”ノード３５６の動作を決定する。“Measure Line Line-3 [ , ]”ノード３５６の生成は、“Measure Line”ウィンドウ３３３も生成し得る。それはユーザにライン測定動作の定義に関連して利用できるオプションを提供する。たとえば、ユーザが“Run”オプション３３３Ａを選択することで、学習モードにおいて編集モードでの実行を用いて“Measure Line Line-3 [ , ]”命令表現を実行した場合、ビジョンシステムは、位置［１，１］のワークピース要素を測定してラインを決定する。
【００５６】
図４Ｄは、上述の“Run”オプション３３３Ａを選択した結果を示している。視野ウィンドウ４１０は、１個のボックスツール３３０Ｂおよび２個の点ツール３３０Ａに基づいて合計６個のエッジ点４１６がほぼ円形のワークピース要素４１５のエッジに沿って検出され、それによりワークピース要素４１５上のラインが決定されることを示している。これは、３３３Ｂにおいて“6 Points Entered”を示している図３Ｃの“Measure Line”ウィンドウ３３３にも反映されている。図５Ｃは、位置［１，１］におけるワークピース要素４１５のライン測定結果を示している。一実施形態では、測定結果の少なくとも一部がボックスツールおよび／または関連“Measure Line Line-3 [ , ]”命令表現に関連する代理データとしてＸＭＬのようなコード命令またはデータ構造中に保存される。これは、後に呼び戻されて使用され、プログラム全体を実行する必要なしにパートプログラムの編集を続けるための正しいコンテキストを生成することができる。
【００５７】
上で定義されたArray Step and Repeat Loop MyLoop３５４が完全に実行されたとき、円およびラインの測定結果が図５Ａにおいて定義された２×３配列中の６つのワークピース要素のそれぞれについて得られる。図５Ｄは、測定結果の一例を示している。この例では、位置［２，２］および［２，３］の測定結果のみ“Measurement Results”ウィンドウ５１２中に示されているが、他の位置［１，１］、［１，２］、［１，３］、［２，１］の測定結果もウィンドウ５１２をスクロールアップすることによりアクセスできる。
【００５８】
ワークピース要素の配列中のＮ個の位置においてＮ回実行されるべき検査動作の反復動作ブロックの生成（すなわち、図示例中の“Array Step and Repeat Loop MyLoop”ノード３５４）は、これで完了する。
【００５９】
ここで図３Ｄを参照すると、本発明の種々の実施形態に従って、ユーザは、定義されたステップ・アンド・リピート・ループ・プログラミング要素を変換してＮ個の独立編集可能コードブロックを作成することができる。これらのブロックのそれぞれは、その反復動作ブロックにおいて定義された検査命令の、独立に編集可能な実質的な複製を含んでおり、また、これらの独立編集可能コードブロックのそれぞれは、Ｎ個の定義された位置の１つに対応するそれぞれの位置において実行されることになる。一実施形態では、定義されたステップ・アンド・リピート・プログラミング要素の表現がＧＵＩの編集インタフェース部に表示されたとき、ユーザは、その表現を選択するか（たとえば、カーソルを編集インタフェース３００上の“Array Step and Repeat Loop MyLoop”ノード３５４の上に置くことにより）、および／または選択された表現上で右クリックすることができる。これにより、“Unroll Step Loop”コマンドオプション３６０Ａのような、選択された表現向けの種々のオプション／選択を含むメニューウィンドウ３６０が現れる。このコマンドオプションは、本出願において開示される種々の動作を含む変換コマンドの１つの実施形態である。ユーザが“Unroll Step Loop”コマンドオプション３６０Ａを選択し、かつ／または実行すると、制御システム部１２０（図２Ａ参照）のステップ・アンド・リピート・ループ・コンバータ１７３が当該コマンドの動作を実行する。この動作は、選択されたステップ・アンド・リピート・プログラミング要素の反復動作ブロックにおいて定義された検査命令を自動的に複製してＮ個の独立編集コードブロックを生成する。これらのブロックのそれぞれは、反復動作ブロックにおいて定義された検査命令の、独立に編集可能な実質的な複製を含み、また、独立編集可能コードブロックのそれぞれは、Ｎ個の定義された位置の１つに対応するそれぞれの位置において実行されることになる。種々の実施形態において、ステップ・アンド・リピート・ループ・コンバータ１７３は、当該コマンドの以下の動作も実行する。それは、ＧＵＩの編集インタフェース部にＮ個の独立編集可能コードブロックの表現を自動的に提示する動作である。これらのＮ個のコードブロック表現のそれぞれは、反復動作ブロックのその複製されたインスタンス中に含まれている検査命令の編集可能な表現を含んでいる。種々の実施形態において、ステップ・アンド・リピート・ループ・コンバータ１７３は、当該コマンドの以下の動作も実行する。それは、パートプログラム中の要素およびＧＵＩの編集インタフェース部における編集可能な要素としての定義されたテップアンドリピート・プログラミング要素を除去する動作である。一部の実施形態では、これは、ステップ・アンド・リピート・プログラミング要素およびその関連命令が完全に抹消された状態でパートプログラムが保存されるまで、編集可能要素としてのステップ・アンド・リピート・プログラミング要素の動作を停止すること、および／またはその動作停止を所定の色、カーソルの状態、または取り消し線等により表示することを含み得る。その他の実施形態では、ステップ・アンド・リピート・プログラミング要素（たとえば、編集インタフェース３���０上の“Array Step and Repeat Loop MyLoop”ノード３５４中に含まれている命令表現）をその関連下層コードとともに直ちに消去することができる。
【００６０】
当然のことながら、コンパイラ等において実行される既知のステップ・アンド・リピート「展開（unroll）」動作（それは、マシンによるコードの実行を加速するためにステップ・アンド・リピート・ループを明示的にコード化されているループ繰り返しに展開する）と対照的に、本出願において開示されるステップ・アンド・リピート・ループ変換コマンドの動作は、比較的不慣れなユーザの選択によりＧＵＩ上で利用することができる（たとえば、個々の位置における動作の編集、追加、置換または削除を目的として）。既知の「展開」動作と対照的に、本出願において開示される変換コマンド動作は、ステップ・アンド・リピート・プログラミング要素を完全に除去し、かつ、よりフレキシブルな命令グループに自動的に置き換えることができる。それは、ユーザが、元のステップ・アンド・リピート・ループ要素中では個別にアクセスできなかった検査対象の特定の１つまたは複数の要素に関する命令に対し編集的調整を行うことを可能にする。
【００６１】
図３Ｅは、６つのブロックに含まれている独立編集可能命令群の６つのインスタンス３５４．１〜３５４．６に変換された、および／またはそれにより置き換えられた“Array Step and Repeat Loop MyLoop ３５４”を表示する編集インタフェース３００を示している。これらのインスタンスは、上述の図５Ａにおいて定義された位置［１，１］、［１，２］、［１，３］および［２，１］、［２，２］、［２，３］に対応するそれぞれの位置における６つのワークピース要素について実行されることになる。図３Ｅには、スペースの制約から、インスタンス３５４．１、３５４．２、３５４．３および３５４．５のみ示されているが、実際の実装では、ユーザは、スクロールバー３２２を使って編集インタフェース３００をスクロールアップおよびダウンすることによりありとあらゆるインスタンスを容易に閲覧し、かつ、それらにアクセスできる。各インスタンスは、ステップ・アンド・リピート命令表現の基本セットからなる別々の独立編集可能インスタンスであることに留意されたい。換言すると、各インスタンス３５４．１〜３５４．６は、最初に定義された“Array Step and Repeat Loop MyLoop”３５４の反復動作ブロックとしての、３つの子ノードを含む“Measure Circle Circle-5”ノードおよび４つの子ノードを含む“Measure Line Line-3”ノードの実質的な複製を含んでいる。しかし、各インスタンスには、固有の１つまたは複数の名前が与えられ、また、各インスタンスを独立に識別可能、編集可能かつ管理可能とするために（たとえば、本出願の別の箇所において説明される種々のコンテキスト、同期機能および表示機能に従って）、その他の表現および／またはコード・サポート要素を必要に応じて追加することができる。その結果、種々の例示的実施形態によれば、いずれかのインスタンスに加えられた変更または編集は、変更または編集されない他のインスタンスに影響を及ぼすことも変更することもない。具体的には、図示された実施形態において、ステップ・アンド・リピート命令の基本セットの第１のインスタンスに“Measure Circle Circle-5-1-1”および“Measure Line Line-3-1-1”という名前が与えられ、インスタンス３５４．１が図５Ａの位置［１，１］に位置付けられているワークピースについて行われるべきことを一意に示す。同様に、命令の基本セットの第２のインスタンスに“Measure Circle Circle-5-1-2”および“Measure Line Line-3-1-2”という名前が与えられ、インスタンス３５４．２が図５Ａの位置［１，２］に位置付けられているワークピースについて行われるべきことを一意に示す。以下同様である。
【００６２】
再び図３Ｅを参照すると、ユーザが複数の独立編集可能命令セットのうちの１つのインスタンスの編集を希望する場合、ユーザは、カーソルをそのインスタンスの表現の上に置く（かつ、一部の実施形態では次に「右クリック」する）。これによりドロップダウンメニュー３２４が一定の編集モード・コマンドまたは機能を実行するための編集インタフェース３００に現れる。他の実施形態では、前記の代わりに、ＧＵＩに常に表示されているツールバーまたはタブに関連するメニュー選択によりドロップダウン・コマンドにアクセスすることができる。この実施形態では、図示例中のドロップダウンメニュー３２４は、次のようなオプションを含んでいる。すなわち、削除３２４Ａ、選択されたインスタンスにそれ自身の内部ステップ・アンド・リピート命令を包含させるステップ・ループ昇格３２４Ｂ、コピー３２４Ｃ、カット３２４Ｄ、選択されたインスタンスに対応するコードを実際のデータおよび／または代理データを使用して実行する実行選択３２４Ｅ、ステップ・アンド・リピート命令を含むパートプログラムに対応するコードを選択されたインスタンス（の前）まで実際のデータおよび／または代理データを使用して実行する選択実行３２４Ｆ、選択されたインスタンスの初期設定ブロック・マーカーを消去する初期セットアップ・ブロック・マーカー消去３２４Ｇ。
【００６３】
一実施形態では、ユーザがたとえばマウスを使用してセレクタ（カーソル）を命令表現の上に移動することにより、および／またはその上で右クリックすることにより一定の命令表現を選択したとき、ドロップダウンメニュー３２４が現れる。編集のために選択された命令表現（たとえば命令表現３５４．５Ｓ）は、図３Ｅに示すようにセレクタ・ボックスにより、または強調表示方法により、またはその他の指示方法により示され得る。一部の実施形態では、ユーザが１つの命令表現または多数の命令表現のいずれを選択するかに応じて、ドロップダウンメニュー３２４は、カスタマイズすることができる。図３Ｅの例では、ユーザが３つの（３行の）命令表現３５４．５Ｓを選択したので、ドロップダウンメニュー３２４は、多数の命令表現にただちに適用できる種々の編集モード・コマンドまたは機能を含んでいる。他方、単一の命令表現が選択された場合、「挿入」（選択された命令表現の上に新しい命令表現を挿入する）または選択された命令表現を変更する「変更」のような単一の命令表現に適用できる種々の編集モード・コマンドまたは機能を含む別のタイプのドロップダウンメニューが現れ得る。
【００６４】
引き続き図３Ｅを参照すると、ユーザがドロップダウンメニュー３２４から「削除」オプション３２４Ａを選んだ場合、図３Ｆに示すように、親ノード“Measure Line Line-3-2-2”の下の１つのボックスツールおよび２つのポイントツールから構成される命令表現３５４．５Ｓの削除が行われる。具体的には、図３Ｆは、親モード“Measure Line Line-3-2-2”３５４．５Ｐを示している。それは、いまや空であり、最後の行の“Define Line”子ノードを含むのみである。したがって、この時点において、位置［２，２］におけるワークピース要素に適用される命令の独立編集可能インスタンス３５４．５は、編集インタフェース３００中に表示されている残りのインスタンス３５４．３、３５４．４および３５４．６のいずれよりも短くなっている。図３Ｅの場合と同様に、４つの独立編集可能インスタンス３５４．３、３５４．４、３５４．５および３５４．６のみ示されているが、ユーザは、編集インタフェース３００のスクロール・バー３２２を使用することにより６つのインスタンスのすべてを容易に閲覧し、かつ、それらにアクセスすることができる。
【００６５】
図３Ｆを参照すると、この時点において、ユーザは、たとえば空ノード“Measure Line Line-3-2-2”３５４．５Ｐの上にカーソルを置くことにより（かつ、その上で右クリックすることにより）それを選択することができる。これによりドロップダウンメニュー３２４が現れ、ユーザは、再びそれから「削除」オプション３２４Ａを選択して図３Ｇに示すように１つの残存子ノード“Delete Line”を含むノード３５４．５Ｐを削除することができる。具体的には、図３Ｇは、位置［２，２］のワークピース要素について実行されるべきインスタンス３５４．５が“Measure Circle Circle-5-2-2”命令表現のみから構成されており、かつ、“Measure Line Line-3-2-2”命令表現が完全に消去されたことを示している。一実施形態では、親ノードが選択され、かつ、消去された場合、その親ノードに依存するすべての子ノードおよび孫ノードも消去されるが、子ノードが選択され、消去された場合には、上述図３Ｅ〜３Ｇで示した例の場合のように、その親ノードは残存し、自動的には消去されない。
【００６６】
図３Ｇを参照する。ユーザは、編集インタフェース３００中に示されているステップ・アンド・リピート命令の基本セットのインスタンスの個別編集を続けている。この時点において、ユーザが、インスタンス３５４．５（この中から“Measure Line Line-3-2-2”ノードが除かれた）中に残っている“Measure Circle Circle-5-2-2”ノードの実行中に適用される照明設定の変更を希望する。よって、ユーザは、親ノード“Measure Circle Circle-5-2-2”の下の“Set Up For Measurement”子ノード３５４．５Ｌを選択する。図３Ｇに示すように、命令の集まりの表示されているインスタンス３５４．３、３５４．４、３５４．５および３５４．６のそれぞれは、初期ステージ位置および照明設定を定義する子ノード“Set Up For Measurement”を有する親ノード“Measure Circle Circle-5-x-x”の真下でスタートする。一実施形態では、ステップ・アンド・リピート命令の基本セットを展開して複数の独立編集可能命令セットの複数インスタンスを生成したとき、各インスタンスは、“Set Up For Measurement”命令表現およびステップ・アンド・リピート命令の基本セットについて構成されたその対応コードのコピーを含むように構成される。したがって、この場合、図４Ａの照明光制御ウィンドウ４５０に示されているように、照明は透過照明光（図２Ａにおける２２０）を２７％の照度レベルで使用するように最初に設定されているので、インスタンス３５４．５の“Set Up For Measurement”命令表現３５４．５Ｌも当初は２７％の照度レベルにおける透過照明光の使用が定義される。
【００６７】
一実施形態では、親ノードの“Measure Circle Circle-5-2-2”の下の“Set Up For Measurement”ノード３５４．５Ｌのユーザ選択は、警告ウィンドウ３２５の表示によりマシンビジョン検査システム１００のワークピースステージ２１０を移動する必要があることをユーザに警告することがある。この警告は、位置変更が衝突を引き起こす場合に、ウィンドウ３２５において“OK”をクリックする前に、ユーザにステージを調整するよう促すために定義される。具体的には、“Set Up For Measurement”ノードがワークステージ位置および照明設定を定義するので、種々の実装形態において、ワークステージ位置または照明設定の変更／編集は、正しい「ハードウェア」コンテキスト（正しい初期ステージ位置、照明レベル、倍率等）および正しい「ソフトウェア」コンテキスト（先行測定がすでに行われていること、座標系が利用されること等）の下で行われる必要がある。換言すると、パートプログラムがビジョン装置の動作を正しいコンテキストの下で制御しなければならないというこのプログラムの性質そのもののために、パートプログラムの編集も種々の実施形態において正しいコンテキストの下で行われなければならない。図示した例では、ビジョン装置すなわちより具体的には、ワークステージは、位置［２，２］に置かれているワークピース要素に適用される“Set Up For Measurement”ノード３５４．５Ｌのユーザによる編集を許容する正しいコンテキストを生成するために、警告ウィンドウ３２５に示されているように、物理的に移動しなければならないことがある。
【００６８】
ユーザが図３Ｇの警告ウィンドウ３２５上で“OK”をクリックした後、図３Ｈに示されているように、ユーザは、「ステージ、レンズおよび照明光を調整し、次に‘Done’をクリックする」よう“Set Up Measurement”ウィンドウ３２６により促され得る。この時点において、パラメータ・ウィンドウ３２７も編集インタフェース３００に現れてステージのＸ−Ｙ−Ｚ位置、照明および倍率に関する現在のパラメータ値が表示され得る。一実施形態では、ユーザは、パラメータ・ウィンドウ３２７においてパラメータ値を直接変更して所望の変更を行うこともできる。他の実施形態では、ユーザは、たとえば適切な制御パネルインタフェース経由でマシンビジョンシステムのワークステージの位置および倍率を手動で変更することができる。図４Ｅの図示例では、ユーザは、照明光制御ウィンドウ４５０のスライディング・バーを制御して照明光について所望の変更を行うことができる。図４Ｅは、ユーザが透過照明光照度レベルを２７％から０％に、かつ、落射照明光（図２Ａの２３０）照度レベルを０％から１５％に変更したことを示している。したがって、位置［２，２］のワークピースについて実行される命令のインスタンス３５４．５中の“Set Up For Measurement”ノード３５４．５Ｌ（図３Ｈ）における照明光設定は、いまや、２７％の透過照明光から１５％の落射照明光に変更される。種々の実施形態において、パラメータ・ウィンドウ３２７および照明光制御ウィンドウ４５０等の種々のウィンドウおよびコントロール・パネルにおいて行われた変更および修正は、いったん記録されると、対応する命令表現（図示例中の“Set Up For Measurement”ノード３５４．５Ｌ）および対応するコンピュータ実行可能コード命令を含む編集インタフェース３００の対応するエリアに自動的に反映される。
【００６９】
一部の実施形態では、図３Ｈに示されているように、矢印および／または下線のような目印２９９を編集インタフェース３００中に含めることにより、編集される命令表現（またはノード）を示すことができる。図３Ｈの例では、目印２９９は、インスタンス３５４．５の“Set Up for Measurement”ノード３５４．５Ｌがこれから編集されるか、またはすでに編集されたことを示している。
【００７０】
次に、変換される命令の１つのインスタンスを他のインスタンスと関係なく編集するさらなる例として、ユーザがここでインスタンス３５４．５の“Measure Circle Circle-5-2-2”ノード中の設定を変更するためにビデオツールを追加したいと仮定する。一実装形態では、編集インタフェース３００中の“Measure Circle Circle-5-2-2”ノードのユーザ選択により、図３Ｂおよび３Ｃに関連して上述したステップアンドリピート命令の基本セットの当初の定義において見られたようなビデオツール表す種々のアイコンを含むツールバー３３０が現れる。具体的には、図３Ｉに示されているように、ユーザが編集インタフェース３００において編集されるべき“Measure Circle Circle-5-2-2”ノードの上にカーソルを置いたときにビデオツールバー３３０が現れ得るか、またはユーザがツールバー３３０を呼び出すラジオ・ボタンを明示的に選択したときに、それが現れ得る。ツールバー３３０から、ユーザはそこに含まれているいずれかのビデオツールを選択する（図示の例では、ユーザは、すでに表面焦点ツール３３０Ｄを選択している）。簡単に説明すると、表面焦点ツールは、関心領域により正確に焦点を合わせるために関心領域表面に自動的に焦点を合わせるように構成されている。表面焦点ツールの動作および使用方法は先行技術において既知である。図４Ｅは、表面焦点ツール３３０Ｄのユーザによる選択および画像インタフェース４００の視野ウィンドウ４１０におけるワークピース４１５に対するその適用を示している。図示の例では、ユーザは、位置［２，２］におけるワークピース要素に適用される命令のインスタンス３５４．５の“Circle Tool”ノード３５５Ｂ．５の設定に関連して実行される表面焦点ツール３３０Ｄをすでに選択している。したがって、図３Ｉに示されているように、ユーザが編集インタフェース３００中の“Circle Tool”ノード３５５Ｂ．５の上にカーソルを置き、次に追加する表面焦点ツール３３０Ｄをビデオツールバー３３０から選択したとき、“Surface Focus Tool”ノード３５４．５Ｘがインスタンス３５４．５中の“Circle Tool”ノード３５５Ｂ．５の上に挿入される。図示の実施形態では、新しい“Set Up For Measurement”ノード３５４．５Ｙも新しい“Surface Focus Tool”ノード３５４．５Ｘとともにデフォルトにより追加される。これは、一部の実施形態では、“Measurement Circle Circle-5-2-2”親ノードの“Setup for Measurement”ノード３５４．５Ｌのコピーである。なぜならば、ビデオツールの適切な動作は、適切なSet Up For Measurementを必要とするからである。換言すると、新しい“Set Up For Measurement”ノード３５４．５Ｙは、追加する必要がない。なぜならば、“Measurement Circle Circle-5-2-2”親ノードの“Set Up For Measurement”ノード３５４．５Ｌが、この例ではすでに存在しているからである。
【００７１】
位置［２，２］のワークピース要素のためのインスタンス３５４．５中の“Surface Focus Tool”ノード３５４．５Ｘを追加した後に、ユーザは、表面焦点ツールの次に実行される後続の“Circle Tool”ノード３５５Ｂ．５の編集を開始できる。そのために、ユーザは、編集インタフェース３００において“Circle Tool”ノード３５５Ｂ．５を選択することができる。それにより“Modify Circle Tool”ウィンドウ３２６および“Circle Tool”３５５Ｂ．５について現在定義されているパラメータ値を示すパラメータ・ウィンドウ３２７が現れ得る。パラメータ・ウィンドウ３２７中に含まれているパラメータの１つは、“Edge Slope”パラメータ３２７Ａである。それは、デフォルトにより“Rising”に設定されて、図４Ｅに示されているようにビジョンシステムが第１の円Ｒ１から第２の円Ｒ２へ矢印３３５の方向に画像を走査するときに、上り傾斜のエッジを検出することにより円が決定されるべきことを指示している。したがって、“Circle Tool”ノード３５５Ｂ．５は、表面上の浮き出し模様つきの円形領域を検出するように定義されている。一実施形態では、ユーザは、“Modify Circle Tool”ウィンドウ３２６中の“Edit”オプションを選択し、続いてパラメータ・ウィンドウ３２７中に一覧表示されているパラメータを変更・編集することができる。
【００７２】
ある実施形態では、ユーザは、パラメータ・ウィンドウ３２７中のパラメータを直接編集／変更できる。他の実施形態では、 “Modify Circle Tool”ウィンドウ３２６中の“Edit”オプションをユーザが選択すると、図５Ｅ−５Ｈに示すような“Circle Tool”パラメータ編集ウィンドウ３２８および３２９が編集インタフェース３００中に生成される。図５Ｅを参照すると、第１パラメータ編集ウィンドウ３２８Ａは、円ツールについて現在設定されているパラメータ値を示している。図５Ｆは、同じ第１パラメータ編集ウィンドウ３２８Ｂを示しているが、ここではユーザは、すでに、走査の方向を変更するために“Ｒ１”および“Ｒ２”（図４Ｅ及び図４Ｆ参照）の値を図５Ｅの値から変更している。具体的には、図４Ｆに示すように、円を決定する走査の方向は、現在、Ｒ１の小さい円からＲ２の大きい円へ矢印３３５’の方向に行うように設定されている。この方向は、図４Ｅにおいて使用された走査方向と反対である。一実施形態では、ユーザが第１パラメータ編集ウィンドウ３２８Ｂ中の“OK”を選択して編集の結果を受け入れたとき、図５Ｇに示す第２パラメータ編集ウィンドウ３２９Ａが現れる。これは、円ツールについて設定されている現在のパラメータ値の別の集まりを含んでいる。図５Ｈは、同じ第２パラメータ編集ウィンドウ３２９Ｂを示しているが、ここではユーザがすでに“Slope”パラメータ（３４０Ｂ参照）を“Rising”から“Falling”に変更している。その結果、円ツールは、ビジョンシステムがＲ１の第１（小さい）円からＲ２の第２（大きい）円へ画像を走査するとき下り傾斜のエッジを検出するように構成される。走査の方向も切り換えられているので、検出対象エッジ傾斜の“Rising”から“Falling”への変更により、変更された円ツールも変更前の元の円ツールと同様に浮き出し模様付きの円形領域を検出・測定するように構成されていることになる。編集が完了した後、ユーザが第２パラメータ編集ウィンドウ３２９Ｂの“OK”を選択すると、変更の結果が編集インタフェース３００中の“Circle Tool”ノード３５５Ｂ．５の中、および実行されるコード命令の中に反映される。
【００７３】
図５Ｉは、上述のように追加された“Surface Focus Tool”ノード３５４．５Ｘおよび変更された“Circle Tool”ノード３５５Ｂ．５に基づいて行われた位置［２，２］のワークピース要素４１５の測定結果を示す。ラベル（名前）ウィンドウ５１０において、測定された円は“Circle-5-2-2”と表示されており、測定された円が位置［２，２］において識別されたCircle-5であることを示している。一部の実施形態では、変更された命令表現のセット（対応する修正されたコード命令セットを備える）により測定されたワークピース要素のラベル（名前）は、自動的または半自動的または手動により変更され、変更されていない命令表現の集まりにより測定されたワークピース要素のラベル（名前）から区別することができる。図５Ｊは、測定されたワークピース要素のラベル（名前）が“Circle-5-2-2”からラベル（名前）ウィンドウ５１０’中に示すように“Circle-5 SPECIAL”にユーザにより変更された実装形態例を示す。
【００７４】
インスタンス３５４．５中の“Circle Tool”ノード３５５Ｂ．５の変更を完了した後、ユーザは、編集インタフェース３００中において、本出願において例として上述した種々の編集動作と同様に、各インスタンス中の命令表現の編集（たとえば、削除、追加、および変更）を他のインスタンスと関係なく続けることができる。種々の実施形態に従って、命令表現のユーザ編集（たとえば、削除、追加、変更等）は、編集インタフェース３００において、編集プロセスを通じて適時に現れてユーザを導く多数のウィンドウ、ドロップダウンメニュー、ツールバー等による視覚的支援の下で直感的、弾力的かつ強固に行うことができる。種々の実施形態において、編集の結果は、編集インタフェース３００中のこれらの種々のウィンドウ、メニュー等のすべてに同時にリアルタイムで反映され、編集プロセス中のユーザをさらに支援する。種々の実施形態において、編集インタフェース３００において行われた命令表現に対する変更は、対応する実行対象コード命令に対する同じ変更を自動的または半自動的に行うこともできる。種々の実施形態において、編集プロセス全体を通じて、ステップ・アンド・リピート命令の基本セットの各インスタンスが相互に独立して維持されるので、各インスタンスは独立編集可能であり、１つのインスタンスにおいて行われた編集は他のインスタンスに反映されない。
【００７５】
種々の典型的実施形態において、すでに概説したように、ステップ・アンド・リピート命令および／またはステップ・アンド・リピート・ループ・コンバータ１７３により生成される命令を含むパートプログラムは、拡張マークアップ言語（ＸＭＬ）または同様なカスタマイズされたマークアップ言語等のマークアップ型言語により書かれる。すなわち、編集インタフェース３００に表示される編集可能命令表現は、マークアップ型言語で作成された対応するコード命令（マシン実行可能命令）を指し示す。
【００７６】
図６Ａは、カスタマイズされたマークアップ言語で書かれたコードの見本であり、これは、変換される（または展開される）前の図３Ｂおよび３Ｃの“Array Step and Repeat Loop MyLoop”ノード３５４に対応している。図６Ａでは、編集インタフェース３００上の各命令表現（またはノード）に対応するコードが添え字Ｍ付きの同じ参照番号で示されている。たとえば、“Array Step and Repeat Loop MyLoop”ノード３５４に対応するコードは、３５４Ｍにより示されている。これは、反復動作ブロック中の“Measure Circle Circle-5”ノード３５５に対応する３５５Ｍおよび反復動作ブロック中の“Measure Line Line-3”ノード３５６に対応するコード３５６Ｍを含んでいる。“Array Step and Repeat Loop MyLoop”ノード３５４、“Measure Circle Circle-5”ノード３５５および“Measure Line Line-3”ノード３５６に対応するコード３５４Ｍ、３５５Ｍおよび３５６Ｍは、隣接して置かれている“−”記号（３５４Ｘ、３５５Ｘおよび３５６Ｘにより示されている）で示すように展開されており、それによりそこに含まれている内容全体を示している。編集可能命令表現の残りの部分に対応するその他のコードは、それらに隣接しておかれている“＋”記号により示されているように、すべて畳み込まれている。当然のことながら、一実施形態では、図３Ａ〜３Ｅの命令表現３５１〜３５６は、図６ＡのＨＴＭＬのようなまたはＸＭＬのようなコード命令から導かれたアイコンおよびラベルを含んでいる。編集インタフェース３００に表示されている命令表現３５１〜３５６は、それ自体は実行されず、その代わりに、実行される図６Ａの関連コード命令を指し示す。
【００７７】
引き続き図６Ａに示されているように、ＸＭＬに準じたコード命令は、ノードＩ．Ｄ．番号３９０を含んでいる。それらは、一実施形態では、それぞれ、図３Ａ〜３Ｅの編集インタフェース３００に表示される命令表現（ノード）に対応することができる。
【００７８】
図６Ｂは、カスタマイズされたマークアップ言語で書かれたコードの見本である。これは、変換された“Array Step and Repeat Loop MyLoop”ノード３５４の置換コードに対応する。以下においてさらに詳しく説明するように、この時点において、図３Ｅにおける「展開」コマンドを実行することにより置換コードは変換され、不要なものが除かれ、かつ、それが編集されて図３Ｉに示す編集された表現の状態に対応している。図６Ａに示したStepArrayコード要素３５４Ｍおよび対応する“EndLoop”および</StepArray>要素３５７は、図６Ｂでは取り除かれていることに留意されたい。図６Ｂは、図３Ｉに示した表現３５４．１〜３５４．６に対応するコードの種々の独立編集可能コードブロックを示す。たとえば、３５５［１，３］Ｍおよび３５６［１，３］Ｍは、それぞれ、３５４．３中のCircle要素およびLine要素に対応する。同様に、３５５［２，２］Ｍは３５４．５中のCircle要素に対応するが、これは、すでに編集されているので、その編集されたインスタンスにLine要素（たとえば、要素３５６）は含まれない。同様に、３５５［２，３］Ｍおよび３５６［２，３］Ｍは、それぞれ、３５４．６中のCircle要素およびLine要素に対応する。以下同様である。
【００７９】
図６Ｃは、図６Ｂに示した命令の編集されたコードインスタンス３５５［２，２］Ｍに対応する、展開後のカスタマイズされたマークアップ言語コード命令の一部であり、図３Ｉの要素３５４．５に対応している。図６Ｃに示されているように、展開されたコードは、６１０Ａ中の変更された照明光設定により変更された“Set Up For Measurement”ノード３５４．５Ｌが１５％照度レベルの「落射(coax)」照明を使用することを明確に示している（図３Ｇおよび３Ｈ参照）。図６Ｃは、位置［２，２］の変更されたインスタンス３５４．５に追加された（図３Ｉ参照）“Surface Focus Tool”ノード３５４．５Ｘに対応するコード（６１１Ａ）を含むコード命令の部分も示している。図６Ｃは、さらに、図３Ｉにおいて変更された“Circle Tool”ノード３５５Ｂ．５に対応するコードが、６１２Ａに示されているように“RISING”エッジ傾斜の代わりに“FALLING”エッジ傾斜を使用する変更を反映していることを示している。図６Ｃは、さらに、測定結果、すなわち、いまではラベル“Circle-5-SPECIAL”が付されている（図５Ｊ参照）位置［２，２］の円を測定するために位置［２，２］のワークピース要素について、変更された命令インスタンス３５４．５を実行することにより得られた実際データ６１４Ａを含んでいることを示している。図５Ｊのラベル（名前）ウィンドウ５１０’中において名前になされた変更（“Circle-5-SPECIAL”）がコード命令中の実際のデータ６１４Ａの要素ラベル６１３Ａに反映されていることに留意されたい。
【００８０】
図２Ａおよび２Ｂを参照しつつ上述したように、展開されたステップ・アンド・リピート命令を含むパートプログラムのどの部分の実行も、実行モードのみならず（この場合、パートプログラムは始めから実行される）、学習モードにおいても行うことができる。学習モードの場合、ユーザは、マシンビジョン検査システムを訓練し、画像を取得する方法および取得した画像中のワークピース要素を解析／測定する方法を学習させる。上記で詳述したように、種々の実施形態において、作成または編集されるパートプログラムのどの部分も、学習モードにおいて実行可能であり、実行モードでの実行ではなく編集モードでの実行に従う。実行モードでの実行とは異なり、編集モードでの実行は、一般的にパートプログラムの実行から以前に取得した実際のデータである「代理データ」を使用することによりパートプログラムの任意の中間点からスタートできる。種々の実施形態において、パートプログラム中の以前に実行された命令からの代理データを、後でそれらの命令を実際に実行する代わりに代理データとして使用し、それにより、たとえばプログラムの後続部分の実行を続けてプログラムの後続部分において実際のデータを取得することができる。したがって、位置［２，２］のワークピース要素についてステップ・アンド・リピート命令の変更されたインスタンス３５４．５を実行することにより取得された実際のデータ６１４Ａの一部または全部をかかる代理データとして使用し、それによりパートプログラムの任意の後続部分を編集モードでの実行に従って編集および実行するための正しいコンテキストを生成することができる。逆に言うと、パートプログラムの変換された命令の編集対象インスタンスよりも前にある先行部分の代理データを使用することにより、変換された命令のブロック内のインスタンスを編集するための正しいコンテキストを生成することもできる。すなわち、編集／変更を行うためにユーザが編集インタフェース３００において変換された命令の独立編集可能インスタンスのいずれかを選択したとき、パートプログラムの先行部分については以前に取得されたデータまたは互換性のために変更または初期化されたデータを代理データとして利用して選択した編集のための有効なコンテキストを確立することができる。
【００８１】
図６Ｄは、展開後のカスタマイズされたマークアップ言語の別の一部であり、図３Ｉの要素３５４．６に対応する図６Ｂの未編集コードインスタンス３５５［２，３］Ｍに対応している。図６Ｄの展開されたコードは、６１０Ｂに示されているように、２７％の照度レベルの「ステージ（stage）」照明光の使用を定義しており、未変更インスタンス３５４．６の未変更“Set Up For Measurement”ノードに対応するコードを明確に示している（比較参照：図６Ｃの６１０Ａにより指示されている１５％レベルの「落射(coax)」照明光）。図６Ｄは、未変更インスタンスＤ３５４．６の未変更“Circle Tool”ノードに対応するコード命令が、６１２Ｂに示されているように、デフォルト“ＲＩＳＩＮＧ”エッジ傾斜の使用を反映していることも示している（比較参照：図６Ｃの６１２Ａにより指示されている“FALLING”エッジ傾斜）。図６Ｄは、さらに、未変更インスタンス３５４．６に対応するコード命令の部分が、位置［２，３］のワークピース要素について未変更命令インスタンス３５４．６を実行した測定結果として入手された実際のデータ６１４Ｂを含んでいることを示している。位置［２，３］において測定される円の要素ラベル６１３Ｂは、未変更であり、“Circle-5-2-3”となっている（比較参照：図６Ｃの６１３Ａにより指示されている“Circle-5-SPECIAL”）。
【００８２】
図６Ｃと６Ｄの比較により、図６Ｃの変更されたインスタンスのコード命令が図６Ｄの未変更インスタンスのコード命令と全く異なっていることが分かる。それにも関わらず、これらの２つのインスタンスは、元は、ステップ・アンド・リピート配列内の位置［２，２］および［２，３］におけるステップ・アンド・リピート・ループの同一の反復動作ブロックから複製されたのである。この比較は、さらに、本発明の種々の実施形態によれば、本出願において開示される原理に従ってステップ・アンド・リピート・プログラム要素を変換することにより入手される多数の命令インスタンスが如何に独立編集可能であるか、また、その結果として１つのインスタンスに行われた編集がそれに対応するコードには反映されるが、他のインスタンスに対応するコードには反映されないことを示している。図２Ａを参照して上述したように、一部の実施形態では、編集インタフェース３００において作成される命令表現とマシン実行可能コード命令間の変換は、コントローラ１２５に結合されるレコーダトランスレータ１５５により行うことができる。
【００８３】
図７は、本出願において開示される原理に従って、定義されたステップ・アンド・リピート・プログラミング要素を変換してステップ・アンド・リピート・プログラミング要素の反復動作ブロックにおいて定義される検査命令の独立に編集可能な実質的な複製を含む独立編集可能コードブロックを作成するためにコンピュータにより行われ得るルーチンまたは方法の一例を示すフローチャートである。
【００８４】
この方法の図示実施形態は、一般的に６つのステップを含む。ステップ７００は、定義されたステップ・アンド・リピート・プログラミング要素の作成を含む。この要素に関連して、検査命令の反復動作ブロックがマシンビジョン検査システム中のワークピースの配列中のＮ個の定義された位置においてＮ回実行されることになる。ただし、Ｎは１より大きい整数であり、また、マシンビジョン検査システムは、撮像部、撮像部の視野内に１つまたは複数のワークピースを保持するステージ、制御部、グラフィック・ユーザインタフェース（ＧＵＩ）を含む。ステップ７０２は、ＧＵＩの編集インタフェース部に定義されたステップ・アンド・リピート・プログラミング要素の表現を表示することを含む（たとえば、図３Ｃ参照）。ステップ７０４は、定義されたステップ・アンド・リピート・プログラミング要素を対象とする変換コマンドを実行するために編集インタフェース部を動作させることを含む（たとえば、図３Ｄ参照）。ステップ７０６は、変換コマンドを実行してステップ・アンド・リピート／プログラミング要素中に定義された反復動作ブロックを自動的に複製することにより、Ｎ個の独立編集可能コードブロックに含まれる反復動作ブロックのＮ個の独立編集可能複製インスタンスを作成することを含む。ただし、独立編集可能コードブロックのそれぞれは、Ｎ個の定義された位置の１つに対応するそれぞれの位置で実行されるものとする（たとえば、図３Ｅ〜３Ｆ参照）。ステップ７０８は、変換コマンドを実行してＧＵＩの編集インタフェース部にＮ個の独立編集可能コードブロックの表現を自動的に作成することを含む。ただし、Ｎ個のコードブロック表現のそれぞれは、反復動作ブロックのその複製インスタンスに含まれている動作の編集可能表現を含むものとする（たとえば、図３Ｅ〜３Ｉ参照）。ステップ７１０は、変換コマンドを実行してＧＵＩの編集インタフェース部における編集可能要素としての定義されたステップ・アンド・リピート・プログラミング要素を除去することを含む（たとえば、図３Ｅ〜３Ｉ参照）。
【００８５】
当然のことであるが、上述したステップ・アンド・リピート・ループ例はＸＹ格子上に配列されたが、ステップ・アンド・リピート・ループは、円形格子上にも配列できる。したがって、当然のことながら、本出願における位置に対する言及は、ＸＹ位置に限定されず、半径上の位置および角の位置または場所ならびにステップ・アンド・リピート・ループにおいて使用され得るその他の形式の位置言及に適用される。
【００８６】
上述した種々の実施形態を組み合わせて別の実施形態を作成することができる。この明細書において参照された米国特許および米国特許出願のすべては、参照により本明細書にその全体が含まれている。これらの実施形態の諸特徴を変更し、必要に応じてこれらの種々の特許および出願のコンセプトを取り入れることにより、さらに別の実施形態を作成することができる。
【００８７】
これらおよびその他の変更形態は、上記の詳細説明を踏まえて実施形態とすることができる。一般に、以下のクレームにおいて、使用される表現は、請求項を明細書および請求項において開示された特定の実施形態に限定するものと解するべきではなく、かかる請求項が受ける資格を有する均等物の全範囲とともに、すべての可能な実施形態を含めるものと解するべきである。
【符号の説明】
【００８８】
１０、１００  マシンビジョン検査システム
１２  画像測定機
１４  制御コンピュータシステム
１６  ディスプレイ
１８  プリンタ
２０、４１５、５０４、５０５  ワークピース
２２  ジョイスティック
２４  キーボード
２６  マウス
３２  可動ワークピースステージ
３４  光学撮像システム
１２０  制御システム部
１２５  コントローラ
１２８  電源部
１３０  入出力インタフェース
１３１  撮像制御インタフェース
１３２  運動制御インタフェース
１３２ａ  位置制御要素
１３２ｂ  速度／加速度制御要素
１３３  照明制御インタフェース
１３４  レンズ制御インタフェース
１３６  表示装置
１３８  入力装置
１４０  メモリ部
１４１  画像ファイル・メモリ部
１４２  ワークピース・プログラム・メモリ部
１４２ＰＰ  パートプログラム
１４３  ビデオツール部
１４３ａ  ビデオツール
１４３ｘ  ＲＯＩジェネレータ
１４４  代理データ・メモリ部
１４４ＳＤ  代理データ
１５０  ワークピース・プログラム・ジェネレータ／エグゼキュータ
１５５  レコーダトランスレータ
１５６  学習モードエグゼキュータ
１５７  実行モードエグゼキュータ
１６０  編集部
１７２  ステップ・アンド・リピート・ループ・ジェネレータ
１７３  ステップ・アンド・リピート・ループ・コンバータ
１７４  編集動作コントローラ
１７６  編集ユーザインタフェース部
１７６ｎ  ノード・ユーザ・インタフェース機能
１７６ｐｉ  プログラム命令表示ウィンドウ
１７６ｒ  表示ユーザインタフェース機能
１７７  エディタコマンド
１７７ａ  実行セグメント部
１７７ｂ  変更部
１７７ｃ  挿入／添付部
１７７ｄ  ステップ・アンド・リピート・ループ変換コマンド
１７８  編集実行部
１８０  代理データマネージャ
１８１  ノードアナライザ
１８１ａ  代理データ動作
１８１ｂ  マシン動作
１８５  プログラム・ステータス・マネージャ
１９０  ノードマネージャ
１９１  実モード部
１９１ａ  マシン動作
１９１ｂ  データ動作
１９２  編集実行ユーザインタフェース機能部
１９５  自動スクロールマネージャ
２００  ビジョン構成要素部
２０５  光学アセンブリ部
２１０  ワークピースステージ
２１２  中央透明部
２２０  透過照明光
２２１、２３１、２４１、２８１  バス
２２２、２３２、２４２  光源光
２３０  落射照明光
２４０  斜め照明光
２５０  交換可能対物レンズ
２５５  ワークピース光
２６０  カメラシステム
２６２、２９６  信号ライン
２８０  ターレット・レンズ・アセンブリ
２８４  軸
２８６、２８８  レンズ
２９４  制御可能モータ
２９９  目印
３００  編集インタフェース
３１０  パートプログラム
３２０、４２０  選択バー
３２４Ａ  オプション
３２４Ｂ  ステップ・ループ昇格
３２４Ｃ  コピー
３２４Ｄ  カット
３２４Ｅ  実行選択
３２４Ｆ  選択実行
３２４Ｇ  初期セットアップ・ブロック・マーカー消去
３２５〜３２７、３３２、３３３  ウィンドウ
３２７Ａ  パラメータ
３２８、３２９  パラメータ編集ウィンドウ
３３０  ツールバー
３３０Ａ  点ツール
３３０Ｂ  ボックスツール
３３０Ａ  点ツール
３３０Ｂ  ボックスツール
３３０Ｃ  円ツール
３３０Ｄ  表面焦点ツール
３３２Ａ、３３３Ａ  オプション
３５１〜３５３  命令表現
３５４、３５６  ノード
３５５Ａ〜３５５Ｃ、３５６Ａ〜３５６Ｄ  ノード
３６０  メニューウィンドウ
３６０Ａ  コマンドオプション
４００  画像インタフェース
４１０  視野ウィンドウ
４１１  オプション
４１２、４１４  プルダウンメニュー
４１３、４１６  オプション
４３０  座標ウィンドウ
４５０  照明光制御ウィンドウ
５００  ウィンドウ
５０１  ネームボックス
５０２Ａ  第１反復ボックス
５０３Ａ  第２反復ボックス
５０４、５０６  ワークピース
５０７  ＯＫボタン
５１０、５１２  ウィンドウ
６１３Ａ，６１３Ｂ  要素ラベル
６１４Ａ、６１４Ｂ  実際データ
【図１】
2014219415.tif 000003
【図２Ａ】
2014219415.tif 000004
【図２Ｂ】
2014219415.tif 000005
【図３Ａ】
2014219415.tif 000006
【図３Ｂ】
2014219415.tif 000007
【図３Ｃ】
2014219415.tif 000008
【図３Ｄ】
2014219415.tif 000009
【図３Ｅ】
2014219415.tif 000010
【図３Ｆ】
2014219415.tif 000011
【図３Ｇ】
2014219415.tif 000012
【図３Ｈ】
2014219415.tif 000013
【図３Ｉ】
2014219415.tif 000014
【図４Ａ】
2014219415.tif 000015
【図４Ｂ】
2014219415.tif 000016
【図４Ｃ】
2014219415.tif 000017
【図４Ｄ】
2014219415.tif 000018
【図４Ｅ】
2014219415.tif 000019
【図４Ｆ】
2014219415.tif 000020
【図５Ａ】
2014219415.tif 000021
【図５Ｂ】
2014219415.tif 000022
【図５Ｃ】
2014219415.tif 000023
【図５Ｄ】
2014219415.tif 000024
【図５Ｅ】
2014219415.tif 000025
【図５Ｆ】
2014219415.tif 000026
【図５Ｇ】
2014219415.tif 000027
【図５Ｈ】
2014219415.tif 000028
【図５Ｉ】
2014219415.tif 000029
【図５Ｊ】
2014219415.tif 000030
【図６Ａ−１】
2014219415.tif 000031
【図６Ａ−２】
2014219415.tif 000032
【図６Ｂ】
2014219415.tif 000033
【図６Ｃ−１】
2014219415.tif 000034
【図６Ｃ−２】
2014219415.tif 000035
【図６Ｄ−１】
2014219415.tif 000036
【図６Ｄ−２】
2014219415.tif 000037
【図７】
2014219415.tif 000038